summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2019-07-31 16:59:49 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2019-07-31 16:59:49 +0200
commit1687222e1b9e74c89cafbb5910e72d8ec7bfd40f (patch)
treed78102ce30207c63e7608eeba743efd680c888dc
parent58912f68c2489bcee787599837447e0d64dfd61a (diff)
New upstream version 1.0.28upstream/1.0.28
-rw-r--r--.editorconfig14
-rw-r--r--.gitignore59
-rw-r--r--.gitlab-ci.yml125
-rw-r--r--ABOUT-NLS1282
-rw-r--r--AUTHORS17
-rw-r--r--ChangeLog4115
-rw-r--r--ChangeLogs/ChangeLog-1.0.04309
-rw-r--r--ChangeLogs/ChangeLog-1.0.1448
-rw-r--r--ChangeLogs/ChangeLog-1.0.10890
-rw-r--r--ChangeLogs/ChangeLog-1.0.12960
-rw-r--r--ChangeLogs/ChangeLog-1.0.131349
-rw-r--r--ChangeLogs/ChangeLog-1.0.14899
-rw-r--r--ChangeLogs/ChangeLog-1.0.151027
-rw-r--r--ChangeLogs/ChangeLog-1.0.16944
-rw-r--r--ChangeLogs/ChangeLog-1.0.171011
-rw-r--r--ChangeLogs/ChangeLog-1.0.18973
-rw-r--r--ChangeLogs/ChangeLog-1.0.191159
-rw-r--r--ChangeLogs/ChangeLog-1.0.2562
-rw-r--r--ChangeLogs/ChangeLog-1.0.202087
-rw-r--r--ChangeLogs/ChangeLog-1.0.21887
-rw-r--r--ChangeLogs/ChangeLog-1.0.22536
-rw-r--r--ChangeLogs/ChangeLog-1.0.23694
-rw-r--r--ChangeLogs/ChangeLog-1.0.24602
-rw-r--r--ChangeLogs/ChangeLog-1.0.25507
-rw-r--r--ChangeLogs/ChangeLog-1.0.274128
-rw-r--r--ChangeLogs/ChangeLog-1.0.3790
-rw-r--r--ChangeLogs/ChangeLog-1.0.4728
-rw-r--r--ChangeLogs/ChangeLog-1.0.51193
-rw-r--r--ChangeLogs/ChangeLog-1.0.6667
-rw-r--r--ChangeLogs/ChangeLog-1.0.7856
-rw-r--r--ChangeLogs/ChangeLog-1.0.81060
-rw-r--r--ChangeLogs/ChangeLog-1.0.91148
-rw-r--r--INSTALL370
-rw-r--r--INSTALL.linux153
-rw-r--r--Makefile.am20
-rw-r--r--Makefile.in1023
-rw-r--r--NEWS135
-rw-r--r--README23
-rw-r--r--README.aix3
-rw-r--r--README.beos2
-rw-r--r--README.djpeg2
-rw-r--r--README.freebsd4
-rw-r--r--README.hp-ux10
-rw-r--r--README.linux20
-rw-r--r--README.netbsd4
-rw-r--r--README.openbsd4
-rw-r--r--README.os235
-rw-r--r--README.solaris4
-rw-r--r--README.unixware798
-rw-r--r--README.zeta6
-rw-r--r--Rules-quot.patch27
-rw-r--r--acinclude.m4122
-rw-r--r--aclocal.m41491
-rwxr-xr-xar-lib270
-rwxr-xr-xautogen.sh39
-rw-r--r--backend/.gitignore5
-rw-r--r--backend/Makefile.am110
-rw-r--r--backend/Makefile.in5644
-rw-r--r--backend/abaton.c42
-rw-r--r--backend/abaton.h8
-rw-r--r--backend/agfafocus.c128
-rw-r--r--backend/agfafocus.conf.in1
-rw-r--r--backend/agfafocus.h4
-rw-r--r--backend/apple.c26
-rw-r--r--backend/apple.h8
-rw-r--r--backend/artec.c2
-rw-r--r--backend/artec.conf.in1
-rw-r--r--backend/artec_eplus48u.c4
-rw-r--r--backend/artec_eplus48u.conf.in1
-rw-r--r--backend/as6e.c30
-rw-r--r--backend/avision.c2110
-rw-r--r--backend/avision.conf.in1
-rw-r--r--backend/avision.h130
-rw-r--r--backend/bh.c333
-rw-r--r--backend/bh.h50
-rw-r--r--backend/canon-sane.c2
-rw-r--r--backend/canon-scsi.c2
-rw-r--r--backend/canon.c9
-rw-r--r--backend/canon630u-common.c42
-rw-r--r--backend/canon630u.c4
-rw-r--r--backend/canon_dr-cmd.h16
-rw-r--r--backend/canon_dr.c743
-rw-r--r--backend/canon_dr.conf.in2
-rw-r--r--backend/canon_dr.h15
-rw-r--r--backend/canon_pp-dev.c302
-rw-r--r--backend/canon_pp-dev.h12
-rw-r--r--backend/canon_pp-io.c90
-rw-r--r--backend/canon_pp-io.h8
-rw-r--r--backend/canon_pp.c288
-rw-r--r--backend/canon_pp.conf.in4
-rw-r--r--backend/canon_pp.h5
-rw-r--r--backend/cardscan.c334
-rw-r--r--backend/cardscan.h12
-rw-r--r--backend/coolscan-scsidef.h16
-rw-r--r--backend/coolscan.c390
-rw-r--r--backend/coolscan.h20
-rw-r--r--backend/coolscan2.c4
-rw-r--r--backend/coolscan3.c2
-rw-r--r--backend/dc210.c20
-rw-r--r--backend/dc210.conf.in2
-rw-r--r--backend/dc210.h8
-rw-r--r--backend/dc240.c38
-rw-r--r--backend/dc240.conf.in2
-rw-r--r--backend/dc240.h16
-rw-r--r--backend/dc25.c62
-rw-r--r--backend/dc25.conf.in2
-rw-r--r--backend/dc25.h14
-rw-r--r--backend/dell1600n_net.c50
-rw-r--r--backend/dell1600n_net.conf.in2
-rw-r--r--backend/dll.c41
-rw-r--r--backend/dll.conf.in1
-rw-r--r--backend/dmc.c22
-rw-r--r--backend/epjitsu-cmd.h1
-rw-r--r--backend/epjitsu.c429
-rw-r--r--backend/epjitsu.conf.in3
-rw-r--r--backend/epjitsu.h6
-rw-r--r--backend/epson.c362
-rw-r--r--backend/epson.conf.in2
-rw-r--r--backend/epson2-commands.c8
-rw-r--r--backend/epson2-ops.c8
-rw-r--r--backend/epson2.c35
-rw-r--r--backend/epson2.conf.in3
-rw-r--r--backend/epson2_net.c4
-rw-r--r--backend/epson2_usb.c7
-rw-r--r--backend/epson_usb.c2
-rw-r--r--backend/epsonds-cmd.h1
-rw-r--r--backend/epsonds-io.c2
-rw-r--r--backend/epsonds-io.h1
-rw-r--r--backend/epsonds-jpeg.c2
-rw-r--r--backend/epsonds-ops.c2
-rw-r--r--backend/epsonds-ops.h1
-rw-r--r--backend/epsonds.c6
-rw-r--r--backend/fujitsu-scsi.h27
-rw-r--r--backend/fujitsu.c1316
-rw-r--r--backend/fujitsu.conf.in16
-rw-r--r--backend/fujitsu.h24
-rw-r--r--backend/genesys.cc (renamed from backend/genesys.c)4149
-rw-r--r--backend/genesys.conf.in3
-rw-r--r--backend/genesys.h125
-rw-r--r--backend/genesys_conv.cc (renamed from backend/genesys_conv.c)50
-rw-r--r--backend/genesys_conv_hlp.cc (renamed from backend/genesys_conv_hlp.c)0
-rw-r--r--backend/genesys_devices.cc (renamed from backend/genesys_devices.c)3055
-rw-r--r--backend/genesys_error.cc115
-rw-r--r--backend/genesys_error.h202
-rw-r--r--backend/genesys_gl124.cc (renamed from backend/genesys_gl124.c)2031
-rw-r--r--backend/genesys_gl124.h289
-rw-r--r--backend/genesys_gl646.c5799
-rw-r--r--backend/genesys_gl646.cc4911
-rw-r--r--backend/genesys_gl646.h428
-rw-r--r--backend/genesys_gl841.cc (renamed from backend/genesys_gl841.c)3337
-rw-r--r--backend/genesys_gl841.h199
-rw-r--r--backend/genesys_gl843.c4477
-rw-r--r--backend/genesys_gl843.cc4415
-rw-r--r--backend/genesys_gl843.h288
-rw-r--r--backend/genesys_gl846.cc (renamed from backend/genesys_gl846.c)2294
-rw-r--r--backend/genesys_gl846.h231
-rw-r--r--backend/genesys_gl847.cc (renamed from backend/genesys_gl847.c)1927
-rw-r--r--backend/genesys_gl847.h201
-rw-r--r--backend/genesys_low.cc (renamed from backend/genesys_low.c)1255
-rw-r--r--backend/genesys_low.h1901
-rw-r--r--backend/genesys_sanei.cc140
-rw-r--r--backend/genesys_sanei.h97
-rw-r--r--backend/genesys_serialize.cc0
-rw-r--r--backend/genesys_serialize.h144
-rw-r--r--backend/gphoto2.c94
-rw-r--r--backend/gphoto2.conf.in16
-rw-r--r--backend/gphoto2.h4
-rw-r--r--backend/gt68xx.c43
-rw-r--r--backend/gt68xx.conf.in21
-rw-r--r--backend/gt68xx.h20
-rw-r--r--backend/gt68xx_devices.c71
-rw-r--r--backend/gt68xx_generic.c30
-rw-r--r--backend/gt68xx_generic.h20
-rw-r--r--backend/gt68xx_gt6801.c22
-rw-r--r--backend/gt68xx_gt6801.h20
-rw-r--r--backend/gt68xx_gt6816.c20
-rw-r--r--backend/gt68xx_gt6816.h20
-rw-r--r--backend/gt68xx_high.c43
-rw-r--r--backend/gt68xx_high.h24
-rw-r--r--backend/gt68xx_low.c22
-rw-r--r--backend/gt68xx_low.h39
-rw-r--r--backend/gt68xx_mid.c20
-rw-r--r--backend/gt68xx_mid.h20
-rw-r--r--backend/gt68xx_shm_channel.c20
-rw-r--r--backend/gt68xx_shm_channel.h20
-rw-r--r--backend/hp-device.c1
-rw-r--r--backend/hp-handle.c18
-rw-r--r--backend/hp-option.c21
-rw-r--r--backend/hp-scl.c2
-rw-r--r--backend/hp.README2
-rw-r--r--backend/hp.c2
-rw-r--r--backend/hp3500.c48
-rw-r--r--backend/hp3900.conf.in1
-rw-r--r--backend/hp3900_config.c4
-rw-r--r--backend/hp3900_debug.c2
-rw-r--r--backend/hp3900_rts8822.c24
-rw-r--r--backend/hp4200.c18
-rw-r--r--backend/hp4200.h6
-rw-r--r--backend/hp5400.c10
-rw-r--r--backend/hp5400_debug.c2
-rw-r--r--backend/hp5400_internal.c10
-rw-r--r--backend/hp5400_sanei.c5
-rw-r--r--backend/hp5400_xfer.h2
-rw-r--r--backend/hp5590.c2150
-rw-r--r--backend/hp5590_cmds.c1286
-rw-r--r--backend/hp5590_cmds.h132
-rw-r--r--backend/hp5590_low.c656
-rw-r--r--backend/hp5590_low.h50
-rw-r--r--backend/hpljm1005.c19
-rw-r--r--backend/hpsj5s.c18
-rw-r--r--backend/hpsj5s.conf.in2
-rw-r--r--backend/hs2p-saneopts.h4
-rw-r--r--backend/hs2p-scsi.c20
-rw-r--r--backend/hs2p-scsi.h106
-rw-r--r--backend/hs2p.c50
-rw-r--r--backend/hs2p.h8
-rw-r--r--backend/ibm-scsi.c12
-rw-r--r--backend/ibm.c66
-rw-r--r--backend/ibm.h10
-rw-r--r--backend/kodak-cmd.h20
-rw-r--r--backend/kodak.c210
-rw-r--r--backend/kodak.h4
-rw-r--r--backend/kodakaio.c150
-rw-r--r--backend/kodakaio.conf.in3
-rw-r--r--backend/kvs1025_low.c18
-rw-r--r--backend/kvs1025_opt.c1
-rw-r--r--backend/kvs1025_usb.c2
-rw-r--r--backend/kvs20xx_opt.c2
-rw-r--r--backend/kvs40xx_opt.c2
-rw-r--r--backend/leo.c28
-rw-r--r--backend/leo.conf.in1
-rw-r--r--backend/leo.h10
-rw-r--r--backend/lexmark.c16
-rw-r--r--backend/lexmark.h2
-rw-r--r--backend/lexmark_low.c72
-rw-r--r--backend/lexmark_models.c2
-rw-r--r--backend/lexmark_sensors.c2
-rw-r--r--backend/magicolor.c9
-rw-r--r--backend/magicolor.conf.in1
-rw-r--r--backend/matsushita.c40
-rw-r--r--backend/matsushita.conf.in2
-rw-r--r--backend/matsushita.h8
-rw-r--r--backend/microtek.c494
-rw-r--r--backend/microtek.h39
-rw-r--r--backend/microtek2.c108
-rw-r--r--backend/microtek2.h20
-rw-r--r--backend/mustek.c56
-rw-r--r--backend/mustek.conf.in6
-rw-r--r--backend/mustek.h6
-rw-r--r--backend/mustek_pp.c120
-rw-r--r--backend/mustek_pp.conf.in12
-rw-r--r--backend/mustek_pp.h24
-rw-r--r--backend/mustek_pp_ccd300.c6
-rw-r--r--backend/mustek_pp_ccd300.h4
-rw-r--r--backend/mustek_pp_cis.c742
-rw-r--r--backend/mustek_pp_cis.h76
-rw-r--r--backend/mustek_pp_decl.h32
-rw-r--r--backend/mustek_pp_null.c14
-rw-r--r--backend/mustek_scsi_pp.c2
-rw-r--r--backend/mustek_scsi_pp.h6
-rw-r--r--backend/mustek_usb.c8
-rw-r--r--backend/mustek_usb.conf.in1
-rw-r--r--backend/mustek_usb.h2
-rw-r--r--backend/mustek_usb2.c64
-rw-r--r--backend/mustek_usb2.h2
-rw-r--r--backend/mustek_usb2_asic.c24
-rw-r--r--backend/mustek_usb2_asic.h6
-rw-r--r--backend/mustek_usb2_high.c112
-rw-r--r--backend/mustek_usb2_high.h2
-rw-r--r--backend/mustek_usb2_reflective.c34
-rw-r--r--backend/mustek_usb2_transparent.c32
-rw-r--r--backend/mustek_usb_high.c2
-rw-r--r--backend/mustek_usb_high.h4
-rw-r--r--backend/mustek_usb_low.c4
-rw-r--r--backend/mustek_usb_low.h2
-rw-r--r--backend/mustek_usb_mid.c2
-rw-r--r--backend/mustek_usb_mid.h2
-rw-r--r--backend/nec.c282
-rw-r--r--backend/nec.h24
-rw-r--r--backend/net.c72
-rw-r--r--backend/niash_core.c2
-rw-r--r--backend/niash_core.h2
-rw-r--r--backend/p5.c64
-rw-r--r--backend/p5.h18
-rw-r--r--backend/p5_device.c14
-rw-r--r--backend/p5_device.h18
-rw-r--r--backend/pie-scsidef.h6
-rw-r--r--backend/pie.c2
-rw-r--r--backend/pieusb_usb.c14
-rw-r--r--backend/pixma.c356
-rw-r--r--backend/pixma.h16
-rw-r--r--backend/pixma_bjnp.c244
-rw-r--r--backend/pixma_bjnp.h18
-rw-r--r--backend/pixma_bjnp_private.h27
-rw-r--r--backend/pixma_common.c6
-rw-r--r--backend/pixma_common.h2
-rw-r--r--backend/pixma_imageclass.c50
-rw-r--r--backend/pixma_io.h2
-rw-r--r--backend/pixma_io_sanei.c18
-rw-r--r--backend/pixma_mp150.c314
-rw-r--r--backend/pixma_mp730.c8
-rw-r--r--backend/pixma_mp750.c20
-rw-r--r--backend/pixma_mp810.c10
-rw-r--r--backend/pixma_sane_options.c11
-rw-r--r--backend/pixma_sane_options.h1
-rw-r--r--backend/plustek-pp.h8
-rw-r--r--backend/plustek-pp_dac.c26
-rw-r--r--backend/plustek-pp_detect.c10
-rw-r--r--backend/plustek-pp_image.c30
-rw-r--r--backend/plustek-pp_io.c32
-rw-r--r--backend/plustek-pp_map.c42
-rw-r--r--backend/plustek-pp_misc.c12
-rw-r--r--backend/plustek-pp_models.c8
-rw-r--r--backend/plustek-pp_motor.c10
-rw-r--r--backend/plustek-pp_p12.c10
-rw-r--r--backend/plustek-pp_p12ccd.c2
-rw-r--r--backend/plustek-pp_p48xx.c2
-rw-r--r--backend/plustek-pp_p9636.c4
-rw-r--r--backend/plustek-pp_procfs.c10
-rw-r--r--backend/plustek-pp_procs.h2
-rw-r--r--backend/plustek-pp_ptdrv.c74
-rw-r--r--backend/plustek-pp_scale.c4
-rw-r--r--backend/plustek-pp_scan.h6
-rw-r--r--backend/plustek-pp_scandata.h12
-rw-r--r--backend/plustek-pp_sysdep.h2
-rw-r--r--backend/plustek-pp_tpa.c6
-rw-r--r--backend/plustek-pp_wrapper.c26
-rw-r--r--backend/plustek-usb.c76
-rw-r--r--backend/plustek-usb.h31
-rw-r--r--backend/plustek-usbcal.c38
-rw-r--r--backend/plustek-usbcalfile.c30
-rw-r--r--backend/plustek-usbdevs.c50
-rw-r--r--backend/plustek-usbhw.c100
-rw-r--r--backend/plustek-usbimg.c58
-rw-r--r--backend/plustek-usbio.c8
-rw-r--r--backend/plustek-usbmap.c24
-rw-r--r--backend/plustek-usbscan.c52
-rw-r--r--backend/plustek-usbshading.c120
-rw-r--r--backend/plustek.c76
-rw-r--r--backend/plustek.conf.in4
-rw-r--r--backend/plustek.h4
-rw-r--r--backend/plustek_pp.c198
-rw-r--r--backend/plustek_pp.conf.in2
-rw-r--r--backend/pnm.c8
-rw-r--r--backend/qcam.c36
-rw-r--r--backend/ricoh-scsi.c8
-rw-r--r--backend/ricoh.c30
-rw-r--r--backend/ricoh.h4
-rw-r--r--backend/ricoh2.c971
-rw-r--r--backend/ricoh2_buffer.c229
-rw-r--r--backend/rts8891.c153
-rw-r--r--backend/rts8891.h24
-rw-r--r--backend/rts8891_devices.c20
-rw-r--r--backend/rts8891_low.c44
-rw-r--r--backend/rts8891_low.h24
-rw-r--r--backend/rts88xx_lib.c14
-rw-r--r--backend/rts88xx_lib.h14
-rw-r--r--backend/s9036.c20
-rw-r--r--backend/sceptre.c56
-rw-r--r--backend/sceptre.h10
-rwxr-xr-xbackend/scripts/pixma_gen_options.py389
-rw-r--r--backend/sharp.c382
-rw-r--r--backend/sharp.conf.in6
-rw-r--r--backend/sharp.h28
-rw-r--r--backend/sm3600-color.c7
-rw-r--r--backend/sm3600-gray.c7
-rw-r--r--backend/sm3600-homerun.c9
-rw-r--r--backend/sm3600-scanusb.c9
-rw-r--r--backend/sm3600-scanutil.c4
-rw-r--r--backend/sm3600.c20
-rw-r--r--backend/snapscan-data.c4
-rw-r--r--backend/snapscan-mutex.c12
-rw-r--r--backend/snapscan-options.c18
-rw-r--r--backend/snapscan-scsi.c6
-rw-r--r--backend/snapscan-sources.c32
-rw-r--r--backend/snapscan-sources.h22
-rw-r--r--backend/snapscan-usb.c33
-rw-r--r--backend/snapscan.c8
-rw-r--r--backend/sp15c-scsi.h1
-rw-r--r--backend/sp15c.c23
-rw-r--r--backend/sp15c.h1
-rw-r--r--backend/st400.c2
-rw-r--r--backend/stubs.c8
-rw-r--r--backend/stv680.c24
-rw-r--r--backend/stv680.h16
-rw-r--r--backend/tamarack.c83
-rw-r--r--backend/tamarack.conf.in1
-rw-r--r--backend/tamarack.h10
-rw-r--r--backend/teco1.c46
-rw-r--r--backend/teco1.h10
-rw-r--r--backend/teco2.c104
-rw-r--r--backend/teco2.conf.in4
-rw-r--r--backend/teco2.h10
-rw-r--r--backend/teco3.c46
-rw-r--r--backend/teco3.h10
-rw-r--r--backend/test-picture.c2
-rw-r--r--backend/test.c6
-rw-r--r--backend/u12-ccd.c6
-rw-r--r--backend/u12-hw.c12
-rw-r--r--backend/u12-hwdef.h8
-rw-r--r--backend/u12-if.c24
-rw-r--r--backend/u12-image.c16
-rw-r--r--backend/u12-io.c12
-rw-r--r--backend/u12-motor.c10
-rw-r--r--backend/u12-scanner.h2
-rw-r--r--backend/u12-shading.c4
-rw-r--r--backend/u12.c146
-rw-r--r--backend/u12.conf.in2
-rw-r--r--backend/u12.h8
-rw-r--r--backend/umax-scanner.c15
-rw-r--r--backend/umax-scanner.h5
-rw-r--r--backend/umax-scsidef.h20
-rw-r--r--backend/umax-uc1200s.c10
-rw-r--r--backend/umax-uc1200se.c10
-rw-r--r--backend/umax-uc1260.c12
-rw-r--r--backend/umax-uc630.c11
-rw-r--r--backend/umax-uc840.c13
-rw-r--r--backend/umax-ug630.c9
-rw-r--r--backend/umax-ug80.c11
-rw-r--r--backend/umax-usb.c38
-rw-r--r--backend/umax.c254
-rw-r--r--backend/umax.conf.in13
-rw-r--r--backend/umax.h8
-rw-r--r--backend/umax1220u-common.c4
-rw-r--r--backend/umax1220u.c2
-rw-r--r--backend/umax_pp.c10
-rw-r--r--backend/umax_pp.conf.in6
-rw-r--r--backend/umax_pp.h2
-rw-r--r--backend/umax_pp_low.c142
-rw-r--r--backend/umax_pp_low.h2
-rw-r--r--backend/umax_pp_mid.c4
-rw-r--r--backend/umax_pp_mid.h12
-rw-r--r--backend/v4l-frequencies.h4
-rw-r--r--backend/v4l.c2
-rw-r--r--backend/v4l.h6
-rw-r--r--backend/xerox_mfp.c8
-rw-r--r--backend/xerox_mfp.conf.in10
-rwxr-xr-xcompile347
-rwxr-xr-xconfig.guess1466
-rwxr-xr-xconfig.rpath672
-rwxr-xr-xconfig.sub1836
-rwxr-xr-xconfigure24492
-rw-r--r--configure.ac57
-rwxr-xr-xdepcomp791
-rw-r--r--doc/.gitignore25
-rw-r--r--doc/Makefile.am10
-rw-r--r--doc/Makefile.in1062
-rw-r--r--doc/backend-writing.txt79
-rw-r--r--doc/canon/canon.changes3
-rw-r--r--doc/canon/canon.install2700F.txt42
-rw-r--r--doc/descriptions-external/brother-mfc4600.desc5
-rw-r--r--doc/descriptions-external/brother.desc3
-rw-r--r--doc/descriptions-external/brother2.desc2
-rw-r--r--doc/descriptions-external/canon_mfp.desc73
-rw-r--r--doc/descriptions-external/cs3200f.desc2
-rw-r--r--doc/descriptions-external/hp3770.desc2
-rw-r--r--doc/descriptions-external/hp8200.desc3
-rw-r--r--doc/descriptions-external/hpaio.desc1
-rw-r--r--doc/descriptions-external/kodak-twain.desc1
-rw-r--r--doc/descriptions-external/lhii.desc4
-rw-r--r--doc/descriptions-external/mustek_a3p1.desc4
-rw-r--r--doc/descriptions-external/panamfs.desc3
-rw-r--r--doc/descriptions-external/primascan.desc2
-rw-r--r--doc/descriptions-external/primax.desc4
-rw-r--r--doc/descriptions-external/template.desc.4
-rw-r--r--doc/descriptions-external/utsushi.desc524
-rw-r--r--doc/descriptions.txt4
-rw-r--r--doc/descriptions/agfafocus.desc2
-rw-r--r--doc/descriptions/apple.desc4
-rw-r--r--doc/descriptions/avision.desc3
-rw-r--r--doc/descriptions/bh.desc1
-rw-r--r--doc/descriptions/canon.desc3
-rw-r--r--doc/descriptions/canon_dr.desc11
-rw-r--r--doc/descriptions/canon_pp.desc1
-rw-r--r--doc/descriptions/cardscan.desc3
-rw-r--r--doc/descriptions/coolscan.desc4
-rw-r--r--doc/descriptions/coolscan2.desc6
-rw-r--r--doc/descriptions/coolscan3.desc6
-rw-r--r--doc/descriptions/dc210.desc2
-rw-r--r--doc/descriptions/dc240.desc2
-rw-r--r--doc/descriptions/dell1600n_net.desc1
-rw-r--r--doc/descriptions/dmc.desc1
-rw-r--r--doc/descriptions/epson.desc9
-rw-r--r--doc/descriptions/epson2.desc46
-rw-r--r--doc/descriptions/epsonds.desc1
-rw-r--r--doc/descriptions/fujitsu.desc37
-rw-r--r--doc/descriptions/genesys.desc7
-rw-r--r--doc/descriptions/gphoto2.desc2
-rw-r--r--doc/descriptions/gt68xx.desc10
-rw-r--r--doc/descriptions/hp.desc1
-rw-r--r--doc/descriptions/hp3500.desc5
-rw-r--r--doc/descriptions/hp3900.desc1
-rw-r--r--doc/descriptions/hp4200.desc2
-rw-r--r--doc/descriptions/hp5400.desc3
-rw-r--r--doc/descriptions/hp5590.desc1
-rw-r--r--doc/descriptions/hpsj5s.desc1
-rw-r--r--doc/descriptions/hs2p.desc2
-rw-r--r--doc/descriptions/kodak.desc3
-rw-r--r--doc/descriptions/kodakaio.desc5
-rw-r--r--doc/descriptions/kvs20xx.desc1
-rw-r--r--doc/descriptions/kvs40xx.desc1
-rw-r--r--doc/descriptions/leo.desc4
-rw-r--r--doc/descriptions/lexmark.desc2
-rw-r--r--doc/descriptions/ma1509.desc3
-rw-r--r--doc/descriptions/magicolor.desc1
-rw-r--r--doc/descriptions/matsushita.desc3
-rw-r--r--doc/descriptions/microtek.desc2
-rw-r--r--doc/descriptions/microtek2.desc3
-rw-r--r--doc/descriptions/niash.desc4
-rw-r--r--doc/descriptions/p5.desc2
-rw-r--r--doc/descriptions/pixma.desc430
-rw-r--r--doc/descriptions/plustek.desc34
-rw-r--r--doc/descriptions/plustek_pp.desc3
-rw-r--r--doc/descriptions/ricoh.desc1
-rw-r--r--doc/descriptions/ricoh2.desc40
-rw-r--r--doc/descriptions/rts8891.desc4
-rw-r--r--doc/descriptions/sceptre.desc4
-rw-r--r--doc/descriptions/sharp.desc2
-rw-r--r--doc/descriptions/sm3840.desc4
-rw-r--r--doc/descriptions/tamarack.desc1
-rw-r--r--doc/descriptions/teco1.desc3
-rw-r--r--doc/descriptions/teco3.desc3
-rw-r--r--doc/descriptions/template.desc.4
-rw-r--r--doc/descriptions/test.desc1
-rw-r--r--doc/descriptions/u12.desc2
-rw-r--r--doc/descriptions/umax_pp.desc16
-rw-r--r--doc/descriptions/unsupported.desc537
-rw-r--r--doc/descriptions/xerox_mfp.desc31
-rw-r--r--doc/doxygen-genesys.conf.in1562
-rw-r--r--doc/doxygen-sanei.conf.in1411
-rw-r--r--doc/gamma4scanimage.man6
-rw-r--r--doc/gt68xx/gt68xx.CHANGES16
-rw-r--r--doc/leo/leo.txt22
-rw-r--r--doc/matsushita/matsushita.txt24
-rw-r--r--doc/mustek/mustek.CHANGES82
-rw-r--r--doc/mustek_usb/mustek_usb.CHANGES28
-rw-r--r--doc/mustek_usb2/mustek_usb2.CHANGES10
-rw-r--r--doc/net.tex6
-rw-r--r--doc/plustek/FAQ5
-rw-r--r--doc/plustek/Makefile.kernel243
-rw-r--r--doc/plustek/Plustek-PARPORT-TODO.txt2
-rw-r--r--doc/plustek/Plustek-PARPORT.changes6
-rw-r--r--doc/plustek/Plustek-PARPORT.txt5
-rw-r--r--doc/plustek/Plustek-USB-TODO.txt1
-rw-r--r--doc/plustek/Plustek-USB.changes4
-rw-r--r--doc/plustek/Plustek-USB.txt29
-rw-r--r--doc/releases.txt97
-rw-r--r--doc/sane-abaton.man4
-rw-r--r--doc/sane-agfafocus.man9
-rw-r--r--doc/sane-apple.man4
-rw-r--r--doc/sane-artec.man8
-rw-r--r--doc/sane-artec_eplus48u.man3
-rw-r--r--doc/sane-as6e.man14
-rw-r--r--doc/sane-avision.man14
-rw-r--r--doc/sane-bh.man138
-rw-r--r--doc/sane-canon.man10
-rw-r--r--doc/sane-canon630u.man13
-rw-r--r--doc/sane-canon_dr.man63
-rw-r--r--doc/sane-canon_pp.man133
-rw-r--r--doc/sane-cardscan.man15
-rw-r--r--doc/sane-config.man2
-rw-r--r--doc/sane-coolscan.man14
-rw-r--r--doc/sane-coolscan2.man10
-rw-r--r--doc/sane-coolscan3.man27
-rw-r--r--doc/sane-dc210.man14
-rw-r--r--doc/sane-dc240.man17
-rw-r--r--doc/sane-dc25.man12
-rw-r--r--doc/sane-dll.man14
-rw-r--r--doc/sane-epjitsu.man15
-rw-r--r--doc/sane-epson.man84
-rw-r--r--doc/sane-epson2.man82
-rw-r--r--doc/sane-epsonds.man18
-rw-r--r--doc/sane-find-scanner.man29
-rw-r--r--doc/sane-fujitsu.man45
-rw-r--r--doc/sane-genesys.man76
-rw-r--r--doc/sane-gphoto2.man21
-rw-r--r--doc/sane-gt68xx.man20
-rw-r--r--doc/sane-hp.man12
-rw-r--r--doc/sane-hp3500.man5
-rw-r--r--doc/sane-hp3900.man7
-rw-r--r--doc/sane-hp4200.man10
-rw-r--r--doc/sane-hp5400.man7
-rw-r--r--doc/sane-hp5590.man349
-rw-r--r--doc/sane-hs2p.man34
-rw-r--r--doc/sane-ibm.man8
-rw-r--r--doc/sane-kodak.man42
-rw-r--r--doc/sane-kodakaio.man12
-rw-r--r--doc/sane-kvs1025.man3
-rw-r--r--doc/sane-kvs20xx.man3
-rw-r--r--doc/sane-kvs40xx.man3
-rw-r--r--doc/sane-leo.man20
-rw-r--r--doc/sane-lexmark.man62
-rw-r--r--doc/sane-ma1509.man12
-rw-r--r--doc/sane-magicolor.man32
-rw-r--r--doc/sane-matsushita.man8
-rw-r--r--doc/sane-microtek.man10
-rw-r--r--doc/sane-microtek2.man5
-rw-r--r--doc/sane-mustek.man34
-rw-r--r--doc/sane-mustek_pp.man76
-rw-r--r--doc/sane-mustek_usb.man18
-rw-r--r--doc/sane-mustek_usb2.man6
-rw-r--r--doc/sane-nec.man2
-rw-r--r--doc/sane-p5.man73
-rw-r--r--doc/sane-pint.man2
-rw-r--r--doc/sane-pixma.man134
-rw-r--r--doc/sane-plustek.man24
-rw-r--r--doc/sane-plustek_pp.man20
-rw-r--r--doc/sane-ricoh.man9
-rw-r--r--doc/sane-ricoh2.man57
-rw-r--r--doc/sane-rts8891.man68
-rw-r--r--doc/sane-s9036.man8
-rw-r--r--doc/sane-sceptre.man24
-rw-r--r--doc/sane-scsi.man20
-rw-r--r--doc/sane-sharp.man162
-rw-r--r--doc/sane-sm3600.man3
-rw-r--r--doc/sane-sm3840.man3
-rw-r--r--doc/sane-snapscan.man6
-rw-r--r--doc/sane-st400.man4
-rw-r--r--doc/sane-stv680.man9
-rw-r--r--doc/sane-tamarack.man8
-rw-r--r--doc/sane-teco1.man44
-rw-r--r--doc/sane-teco2.man38
-rw-r--r--doc/sane-teco3.man20
-rw-r--r--doc/sane-test.man20
-rw-r--r--doc/sane-u12.man8
-rw-r--r--doc/sane-umax.man24
-rw-r--r--doc/sane-umax1220u.man10
-rw-r--r--doc/sane-umax_pp.man152
-rw-r--r--doc/sane-usb.man15
-rw-r--r--doc/sane-v4l.man2
-rw-r--r--doc/sane-xerox_mfp.man9
-rw-r--r--doc/sane.man89
-rw-r--r--doc/sane.tex68
-rw-r--r--doc/saned.man162
-rw-r--r--doc/scanimage.man43
-rw-r--r--doc/sceptre/s1200.txt16
-rw-r--r--doc/teco/teco1.txt46
-rw-r--r--doc/teco/teco2.txt65
-rw-r--r--doc/teco/teco3.txt15
-rw-r--r--doc/umax/negative-types.txt1
-rw-r--r--doc/umax/sane-umax-advanced-options-doc.html2
-rw-r--r--doc/umax/sane-umax-config-doc.html4
-rw-r--r--doc/umax/sane-umax-mirage-doc.html1
-rw-r--r--doc/umax/sane-umax-standard-options-doc.html3
-rw-r--r--doc/umax/umax.BUGS1
-rw-r--r--doc/umax/umax.CHANGES33
-rw-r--r--doc/umax/umax.FAQ4
-rw-r--r--doc/umax/umax.TODO1
-rw-r--r--frontend/.gitignore2
-rw-r--r--frontend/Makefile.in804
-rw-r--r--frontend/saned.c530
-rw-r--r--frontend/scanimage.c130
-rw-r--r--frontend/test.c6
-rw-r--r--frontend/tstbackend.c299
-rw-r--r--include/.gitignore2
-rw-r--r--include/Makefile.in642
-rw-r--r--include/lalloca.h4
-rw-r--r--include/lassert.h2
-rw-r--r--include/md5.h2
-rw-r--r--include/sane/.gitignore3
-rw-r--r--include/sane/config.h.in711
-rw-r--r--include/sane/sane.h2
-rw-r--r--include/sane/sanei.h31
-rw-r--r--include/sane/sanei_access.h6
-rw-r--r--include/sane/sanei_auth.h8
-rw-r--r--include/sane/sanei_backend.h10
-rw-r--r--include/sane/sanei_config.h14
-rw-r--r--include/sane/sanei_debug.h34
-rw-r--r--include/sane/sanei_ir.h4
-rw-r--r--include/sane/sanei_lm983x.h5
-rw-r--r--include/sane/sanei_magic.h12
-rw-r--r--include/sane/sanei_pa4s2.h26
-rw-r--r--include/sane/sanei_pio.h1
-rw-r--r--include/sane/sanei_pp.h6
-rw-r--r--include/sane/sanei_pv8630.h2
-rw-r--r--include/sane/sanei_scsi.h20
-rw-r--r--include/sane/sanei_tcp.h2
-rw-r--r--include/sane/sanei_thread.h38
-rw-r--r--include/sane/sanei_udp.h2
-rw-r--r--include/sane/sanei_usb.h8
-rwxr-xr-xinstall-sh534
-rw-r--r--japi/Jscanimage.java28
-rw-r--r--japi/Makefile.am3
-rw-r--r--japi/Makefile.in767
-rw-r--r--japi/Sane.c22
-rw-r--r--japi/Sane.java4
-rw-r--r--japi/SaneDevice.java10
-rw-r--r--japi/SaneOption.java25
-rw-r--r--japi/SaneParameters.java12
-rw-r--r--japi/SaneRange.java1
-rw-r--r--japi/ScanIt.java16
-rw-r--r--japi/Test.java12
-rw-r--r--lib/Makefile.in688
-rw-r--r--lib/inet_pton.c2
-rw-r--r--lib/isfdtype.c25
-rw-r--r--lib/md5.c9
-rw-r--r--lib/strcasestr.c2
-rw-r--r--ltmain.sh9684
-rw-r--r--ltmain.sh.patch44
-rw-r--r--m4/byteorder.m42
-rw-r--r--m4/gettext.m4383
-rw-r--r--m4/iconv.m4214
-rw-r--r--m4/intlmacosx.m451
-rw-r--r--m4/lib-ld.m4110
-rw-r--r--m4/lib-link.m4774
-rw-r--r--m4/lib-prefix.m4224
-rw-r--r--m4/libtool.m47997
-rw-r--r--m4/ltoptions.m4384
-rw-r--r--m4/ltsugar.m4123
-rw-r--r--m4/ltversion.m423
-rw-r--r--m4/lt~obsolete.m498
-rw-r--r--m4/nls.m432
-rw-r--r--m4/po.m4449
-rw-r--r--m4/progtest.m492
-rw-r--r--m4/stdint.m4695
-rwxr-xr-xmissing215
-rwxr-xr-xmkinstalldirs162
-rw-r--r--po/LINGUAS5
-rw-r--r--po/Makefile.in.in444
-rw-r--r--po/Makevars18
-rw-r--r--po/POTFILES.in3
-rw-r--r--po/README65
-rw-r--r--po/Rules-quot47
-rw-r--r--po/bg.gmobin74825 -> 0 bytes
-rw-r--r--po/bg.po1108
-rw-r--r--po/boldquot.sed10
-rw-r--r--po/ca.po (renamed from po/en@quot.po)3829
-rw-r--r--po/ca@valencia.po (renamed from po/en@boldquot.po)3820
-rw-r--r--po/cs.gmobin55568 -> 0 bytes
-rw-r--r--po/cs.po1108
-rw-r--r--po/da.gmobin61999 -> 0 bytes
-rw-r--r--po/da.po1108
-rw-r--r--po/de.gmobin81438 -> 0 bytes
-rw-r--r--po/de.po2746
-rw-r--r--po/en@boldquot.gmobin97905 -> 0 bytes
-rw-r--r--po/en@boldquot.header25
-rw-r--r--po/en@quot.gmobin97677 -> 0 bytes
-rw-r--r--po/en@quot.header22
-rw-r--r--po/en_GB.gmobin70495 -> 0 bytes
-rw-r--r--po/en_GB.po2181
-rw-r--r--po/eo.gmobin72419 -> 0 bytes
-rw-r--r--po/eo.po1108
-rw-r--r--po/es.gmobin80626 -> 0 bytes
-rw-r--r--po/es.po1110
-rw-r--r--po/fi.gmobin55741 -> 0 bytes
-rw-r--r--po/fi.po1108
-rw-r--r--po/fr.gmobin82409 -> 0 bytes
-rw-r--r--po/fr.po1108
-rw-r--r--po/gl.gmobin79773 -> 0 bytes
-rw-r--r--po/gl.po1110
-rw-r--r--po/he.po (renamed from po/sane-backends.pot)3772
-rw-r--r--po/hu.gmobin9630 -> 0 bytes
-rw-r--r--po/hu.po1108
-rw-r--r--po/insert-header.sin23
-rw-r--r--po/it.gmobin74285 -> 0 bytes
-rw-r--r--po/it.po1108
-rw-r--r--po/ja.gmobin53885 -> 0 bytes
-rw-r--r--po/ja.po1108
-rw-r--r--po/nb.gmobin12554 -> 0 bytes
-rw-r--r--po/nb.po1108
-rw-r--r--po/nl.gmobin103988 -> 0 bytes
-rw-r--r--po/nl.po1154
-rw-r--r--po/pl.gmobin80101 -> 0 bytes
-rw-r--r--po/pl.po1108
-rw-r--r--po/pt.gmobin19033 -> 0 bytes
-rw-r--r--po/pt.po1108
-rw-r--r--po/quot.sed6
-rw-r--r--po/remove-potcdate.sin19
-rw-r--r--po/ru.gmobin71734 -> 0 bytes
-rw-r--r--po/ru.po1108
-rw-r--r--po/stamp-po1
-rw-r--r--po/sv.gmobin87940 -> 0 bytes
-rw-r--r--po/sv.po1108
-rw-r--r--po/uk.gmobin143725 -> 0 bytes
-rw-r--r--po/uk.po1134
-rw-r--r--sane-backends.lsm27
-rw-r--r--sanei/Makefile.in704
-rw-r--r--sanei/sanei_DomainOS.c2
-rw-r--r--sanei/sanei_DomainOS.h1
-rw-r--r--sanei/sanei_ab306.c4
-rw-r--r--sanei/sanei_access.c18
-rw-r--r--sanei/sanei_auth.c2
-rw-r--r--sanei/sanei_config.c10
-rw-r--r--sanei/sanei_config2.c2
-rw-r--r--sanei/sanei_init_debug.c24
-rw-r--r--sanei/sanei_lm983x.c14
-rw-r--r--sanei/sanei_magic.c103
-rw-r--r--sanei/sanei_pa4s2.c22
-rw-r--r--sanei/sanei_pio.c46
-rw-r--r--sanei/sanei_pp.c70
-rw-r--r--sanei/sanei_pv8630.c2
-rw-r--r--sanei/sanei_scsi.c76
-rw-r--r--sanei/sanei_thread.c25
-rw-r--r--sanei/sanei_udp.c1
-rw-r--r--sanei/sanei_usb.c427
-rw-r--r--sanei/sanei_wire.c26
-rwxr-xr-xtest-driver139
-rw-r--r--testsuite/Makefile.am12
-rw-r--r--testsuite/Makefile.in725
-rw-r--r--testsuite/README2
-rw-r--r--testsuite/backend/Makefile.am7
-rw-r--r--testsuite/backend/genesys/Makefile.am23
-rw-r--r--testsuite/backend/genesys/minigtest.cc35
-rw-r--r--testsuite/backend/genesys/minigtest.h77
-rw-r--r--testsuite/backend/genesys/tests.cc30
-rw-r--r--testsuite/backend/genesys/tests.h28
-rw-r--r--testsuite/backend/genesys/tests_calibration.cc130
-rw-r--r--testsuite/sanei/Makefile.am2
-rw-r--r--testsuite/sanei/Makefile.in1138
-rw-r--r--testsuite/sanei/README2
-rw-r--r--testsuite/sanei/data/umax_pp.conf6
-rw-r--r--testsuite/sanei/sanei_check_test.c2
-rw-r--r--testsuite/sanei/sanei_config_test.c4
-rw-r--r--testsuite/sanei/sanei_constrain_test.c6
-rw-r--r--testsuite/tools/Makefile.am6
-rw-r--r--testsuite/tools/Makefile.in548
-rw-r--r--testsuite/tools/README2
-rw-r--r--testsuite/tools/data/ascii.ref524
-rw-r--r--testsuite/tools/data/db.ref1338
-rw-r--r--testsuite/tools/data/html-backends-split.ref1044
-rw-r--r--testsuite/tools/data/html-mfgs.ref5002
-rw-r--r--testsuite/tools/data/hwdb.ref3
-rw-r--r--testsuite/tools/data/testfile.desc617
-rw-r--r--testsuite/tools/data/udev+acl.ref2
-rw-r--r--testsuite/tools/data/udev+hwdb.ref2
-rw-r--r--testsuite/tools/data/udev.ref2
-rw-r--r--testsuite/tools/data/usermap.ref2
-rw-r--r--testsuite/tools/data/xml.ref700
-rw-r--r--tools/.gitignore8
-rw-r--r--tools/Makefile.am3
-rw-r--r--tools/Makefile.in913
-rw-r--r--tools/README7
-rw-r--r--tools/RenSaneDlls.cmd2
-rwxr-xr-xtools/check-po.awk6
-rw-r--r--tools/check-usb-chip.c34
-rwxr-xr-xtools/create-changelog.sh16
-rwxr-xr-xtools/create-release.sh61
-rwxr-xr-xtools/epson2usb.pl61
-rw-r--r--tools/hotplug-ng/.gitignore1
-rw-r--r--tools/hotplug/.gitignore1
-rwxr-xr-xtools/hotplug/libusbscanner1
-rw-r--r--tools/sane-config.in3
-rw-r--r--tools/sane-desc.c60
-rw-r--r--tools/sane-find-scanner.c59
-rwxr-xr-xtools/style-check.sh99
-rw-r--r--tools/umax_pp.c6
-rwxr-xr-xtools/update-upstreams.sh21
-rwxr-xr-xtools/xerox4
848 files changed, 94339 insertions, 134849 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..0faa31d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+# .editorconfig -- settings for consistent coding style conventions
+# Copyright (C) 2017 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+# Your editor may need a plugin for this configuration to take effect.
+# See http://editorconfig.org/#download for details.
+
+root = true ; look no further
+
+[*]
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aed89bd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,59 @@
+# files generated by building the project
+*.a
+*.la
+*.lo
+*.o
+*.po~
+.deps/
+.libs/
+
+# files generated during the configure step
+Makefile
+autom4te.cache/
+config.cache
+libtool
+
+# files generated during autogen.sh step
+Makefile.in
+/INSTALL
+/aclocal.m4
+/ar-lib
+/compile
+/config.guess
+/config.log
+/config.rpath
+/config.sub
+/config.status
+/configure
+/depcomp
+/install-sh
+/ltmain.sh
+/ltmain.sh.orig
+/m4/
+!/m4/byteorder.m4
+/missing
+/mkinstalldirs
+/test-driver
+
+# Gettext stuff
+/ABOUT-NLS
+/po/*
+!/po/*.po
+/po/en@*quot.po
+!/po/LINGUAS
+!/po/Makevars
+!/po/POTFILES.in
+
+# `make check` artifacts
+test-suite.log
+/testsuite/sanei/sanei_*_test
+/testsuite/sanei/sanei_*_test.log
+/testsuite/sanei/sanei_*_test.trs
+/testsuite/sanei/test_wire
+/testsuite/sanei/test_wire.log
+/testsuite/sanei/test_wire.out
+/testsuite/sanei/test_wire.trs
+/testsuite/tools/*.res
+
+# `make dist` artifacts
+/sane-backends-*.tar.gz
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..f35992f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,125 @@
+# .gitlab-ci.yml -- to test some source code build scenarios
+# Copyright (C) 2016-2019 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+variables:
+ REGISTRY_HUB: "registry.gitlab.com/sane-project/ci-envs"
+ CONFIGURE_MINI: "--enable-silent-rules"
+ CONFIGURE_FULL: "--with-usb --enable-avahi --enable-pnm-backend"
+
+stages:
+ - prepare
+ - compile
+ - archive
+ - release
+
+prepare:
+ image: $REGISTRY_HUB:debian-stretch-mini
+ stage: prepare
+ script:
+ - git ls-files | xargs ./tools/style-check.sh
+ - ./autogen.sh
+ - ./tools/create-changelog.sh
+ - ./tools/update-upstreams.sh
+ - ./configure
+ - make dist
+ artifacts:
+ paths:
+ - sane-backends-*.tar.gz
+ expire_in: 1 day
+
+.compile_template: &compile_definition
+ stage: compile
+ script:
+ - mkdir build
+ - cd build
+ - tar xzf ../sane-backends-*.tar.gz --strip-components=1
+ - ./configure $CONFIGURE_OPTS
+ - make -j2 -k $MAKE_FLAGS
+
+compile:debian-9-mini:
+ image: $REGISTRY_HUB:debian-stretch-mini
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI"
+ MAKE_FLAGS: "CFLAGS=-Werror"
+ <<: *compile_definition
+
+compile:debian-9-full:
+ image: $REGISTRY_HUB:debian-stretch-full
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
+ <<: *compile_definition
+ after_script:
+ - make -C build/doc html-pages
+ - rm -rf lists && mkdir lists && mv build/doc/*.html lists/
+ - cd build/doc && doxygen doxygen-sanei.conf && mv sanei-html ../../doc
+ artifacts:
+ paths:
+ - sane-backends-*.tar.gz
+ - lists
+ - doc/sanei-html
+ expire_in: 1 day
+
+compile:debian-10-mini:
+ image: $REGISTRY_HUB:debian-buster-mini
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI"
+ #MAKE_FLAGS: "CFLAGS=-Werror"
+ <<: *compile_definition
+
+compile:debian-10-full:
+ image: $REGISTRY_HUB:debian-buster-full
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ #MAKE_FLAGS: "CFLAGS=-Werror"
+ <<: *compile_definition
+
+compile:fedora-29-clang:
+ image: $REGISTRY_HUB:fedora-29-clang
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ <<: *compile_definition
+
+compile:fedora-30-clang:
+ image: $REGISTRY_HUB:fedora-30-clang
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ <<: *compile_definition
+
+compile:alpine-3.10-musl:
+ image: $REGISTRY_HUB:alpine-3.10-musl
+ variables:
+ CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ <<: *compile_definition
+
+archive:
+ image: $REGISTRY_HUB:debian-stretch-full
+ stage: archive
+ dependencies:
+ - compile:debian-9-full
+ script:
+ - tar xzf sane-backends-*.tar.gz --strip-components=1
+ - rm sane-backends-*.tar.gz
+ - ./configure
+ - make distcheck
+ artifacts:
+ paths:
+ - sane-backends-*.tar.gz
+ - lists
+ - doc/sanei-html
+
+release:
+ image: alpine
+ stage: release
+ before_script:
+ - apk --no-cache add curl git jq
+ script:
+ - ./tools/create-release.sh
+ only:
+ - tags
+ when: manual
+ variables:
+ GIT_DEPTH: "3"
+ allow_failure: false
diff --git a/ABOUT-NLS b/ABOUT-NLS
deleted file mode 100644
index b1de1b6..0000000
--- a/ABOUT-NLS
+++ /dev/null
@@ -1,1282 +0,0 @@
-1 Notes on the Free Translation Project
-***************************************
-
-Free software is going international! The Free Translation Project is
-a way to get maintainers of free software, translators, and users all
-together, so that free software will gradually become able to speak many
-languages. A few packages already provide translations for their
-messages.
-
- If you found this `ABOUT-NLS' file inside a distribution, you may
-assume that the distributed package does use GNU `gettext' internally,
-itself available at your nearest GNU archive site. But you do _not_
-need to install GNU `gettext' prior to configuring, installing or using
-this package with messages translated.
-
- Installers will find here some useful hints. These notes also
-explain how users should proceed for getting the programs to use the
-available translations. They tell how people wanting to contribute and
-work on translations can contact the appropriate team.
-
-1.1 INSTALL Matters
-===================
-
-Some packages are "localizable" when properly installed; the programs
-they contain can be made to speak your own native language. Most such
-packages use GNU `gettext'. Other packages have their own ways to
-internationalization, predating GNU `gettext'.
-
- By default, this package will be installed to allow translation of
-messages. It will automatically detect whether the system already
-provides the GNU `gettext' functions. Installers may use special
-options at configuration time for changing the default behaviour. The
-command:
-
- ./configure --disable-nls
-
-will _totally_ disable translation of messages.
-
- When you already have GNU `gettext' installed on your system and run
-configure without an option for your new package, `configure' will
-probably detect the previously built and installed `libintl' library
-and will decide to use it. If not, you may have to to use the
-`--with-libintl-prefix' option to tell `configure' where to look for it.
-
- Internationalized packages usually have many `po/LL.po' files, where
-LL gives an ISO 639 two-letter code identifying the language. Unless
-translations have been forbidden at `configure' time by using the
-`--disable-nls' switch, all available translations are installed
-together with the package. However, the environment variable `LINGUAS'
-may be set, prior to configuration, to limit the installed set.
-`LINGUAS' should then contain a space separated list of two-letter
-codes, stating which languages are allowed.
-
-1.2 Using This Package
-======================
-
-As a user, if your language has been installed for this package, you
-only have to set the `LANG' environment variable to the appropriate
-`LL_CC' combination. If you happen to have the `LC_ALL' or some other
-`LC_xxx' environment variables set, you should unset them before
-setting `LANG', otherwise the setting of `LANG' will not have the
-desired effect. Here `LL' is an ISO 639 two-letter language code, and
-`CC' is an ISO 3166 two-letter country code. For example, let's
-suppose that you speak German and live in Germany. At the shell
-prompt, merely execute `setenv LANG de_DE' (in `csh'),
-`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
-This can be done from your `.login' or `.profile' file, once and for
-all.
-
- You might think that the country code specification is redundant.
-But in fact, some languages have dialects in different countries. For
-example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
-country code serves to distinguish the dialects.
-
- The locale naming convention of `LL_CC', with `LL' denoting the
-language and `CC' denoting the country, is the one use on systems based
-on GNU libc. On other systems, some variations of this scheme are
-used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
-locales supported by your system for your language by running the
-command `locale -a | grep '^LL''.
-
- Not all programs have translations for all languages. By default, an
-English message is shown in place of a nonexistent translation. If you
-understand other languages, you can set up a priority list of languages.
-This is done through a different environment variable, called
-`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
-for the purpose of message handling, but you still need to have `LANG'
-set to the primary language; this is required by other parts of the
-system libraries. For example, some Swedish users who would rather
-read translations in German than English for when Swedish is not
-available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
-
- Special advice for Norwegian users: The language code for Norwegian
-bokma*l changed from `no' to `nb' recently (in 2003). During the
-transition period, while some message catalogs for this language are
-installed under `nb' and some older ones under `no', it's recommended
-for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
-older translations are used.
-
- In the `LANGUAGE' environment variable, but not in the `LANG'
-environment variable, `LL_CC' combinations can be abbreviated as `LL'
-to denote the language's main dialect. For example, `de' is equivalent
-to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
-(Portuguese as spoken in Portugal) in this context.
-
-1.3 Translating Teams
-=====================
-
-For the Free Translation Project to be a success, we need interested
-people who like their own language and write it well, and who are also
-able to synergize with other translators speaking the same language.
-Each translation team has its own mailing list. The up-to-date list of
-teams can be found at the Free Translation Project's homepage,
-`http://translationproject.org/', in the "Teams" area.
-
- If you'd like to volunteer to _work_ at translating messages, you
-should become a member of the translating team for your own language.
-The subscribing address is _not_ the same as the list itself, it has
-`-request' appended. For example, speakers of Swedish can send a
-message to `sv-request@li.org', having this message body:
-
- subscribe
-
- Keep in mind that team members are expected to participate
-_actively_ in translations, or at solving translational difficulties,
-rather than merely lurking around. If your team does not exist yet and
-you want to start one, or if you are unsure about what to do or how to
-get started, please write to `coordinator@translationproject.org' to
-reach the coordinator for all translator teams.
-
- The English team is special. It works at improving and uniformizing
-the terminology in use. Proven linguistic skills are praised more than
-programming skills, here.
-
-1.4 Available Packages
-======================
-
-Languages are not equally supported in all packages. The following
-matrix shows the current state of internationalization, as of June
-2010. The matrix shows, in regard of each package, for which languages
-PO files have been submitted to translation coordination, with a
-translation percentage of at least 50%.
-
- Ready PO files af am an ar as ast az be be@latin bg bn_IN bs ca
- +--------------------------------------------------+
- a2ps | [] [] |
- aegis | |
- ant-phone | |
- anubis | |
- aspell | [] [] |
- bash | |
- bfd | |
- bibshelf | [] |
- binutils | |
- bison | |
- bison-runtime | [] |
- bluez-pin | [] [] |
- bombono-dvd | |
- buzztard | |
- cflow | |
- clisp | |
- coreutils | [] [] |
- cpio | |
- cppi | |
- cpplib | [] |
- cryptsetup | |
- dfarc | |
- dialog | [] [] |
- dico | |
- diffutils | [] |
- dink | |
- doodle | |
- e2fsprogs | [] |
- enscript | [] |
- exif | |
- fetchmail | [] |
- findutils | [] |
- flex | [] |
- freedink | |
- gas | |
- gawk | [] [] |
- gcal | [] |
- gcc | |
- gettext-examples | [] [] [] [] |
- gettext-runtime | [] [] |
- gettext-tools | [] [] |
- gip | [] |
- gjay | |
- gliv | [] |
- glunarclock | [] [] |
- gnubiff | |
- gnucash | [] |
- gnuedu | |
- gnulib | |
- gnunet | |
- gnunet-gtk | |
- gnutls | |
- gold | |
- gpe-aerial | |
- gpe-beam | |
- gpe-bluetooth | |
- gpe-calendar | |
- gpe-clock | [] |
- gpe-conf | |
- gpe-contacts | |
- gpe-edit | |
- gpe-filemanager | |
- gpe-go | |
- gpe-login | |
- gpe-ownerinfo | [] |
- gpe-package | |
- gpe-sketchbook | |
- gpe-su | [] |
- gpe-taskmanager | [] |
- gpe-timesheet | [] |
- gpe-today | [] |
- gpe-todo | |
- gphoto2 | |
- gprof | [] |
- gpsdrive | |
- gramadoir | |
- grep | |
- grub | [] [] |
- gsasl | |
- gss | |
- gst-plugins-bad | [] |
- gst-plugins-base | [] |
- gst-plugins-good | [] |
- gst-plugins-ugly | [] |
- gstreamer | [] [] [] |
- gtick | |
- gtkam | [] |
- gtkorphan | [] |
- gtkspell | [] [] [] |
- gutenprint | |
- hello | [] |
- help2man | |
- hylafax | |
- idutils | |
- indent | [] [] |
- iso_15924 | |
- iso_3166 | [] [] [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | |
- iso_639 | [] [] [] [] |
- iso_639_3 | |
- jwhois | |
- kbd | |
- keytouch | [] |
- keytouch-editor | |
- keytouch-keyboa... | [] |
- klavaro | [] |
- latrine | |
- ld | [] |
- leafpad | [] [] |
- libc | [] [] |
- libexif | () |
- libextractor | |
- libgnutls | |
- libgpewidget | |
- libgpg-error | |
- libgphoto2 | |
- libgphoto2_port | |
- libgsasl | |
- libiconv | [] |
- libidn | |
- lifelines | |
- liferea | [] [] |
- lilypond | |
- linkdr | [] |
- lordsawar | |
- lprng | |
- lynx | [] |
- m4 | |
- mailfromd | |
- mailutils | |
- make | |
- man-db | |
- man-db-manpages | |
- minicom | |
- mkisofs | |
- myserver | |
- nano | [] [] |
- opcodes | |
- parted | |
- pies | |
- popt | |
- psmisc | |
- pspp | [] |
- pwdutils | |
- radius | [] |
- recode | [] [] |
- rosegarden | |
- rpm | |
- rush | |
- sarg | |
- screem | |
- scrollkeeper | [] [] [] |
- sed | [] [] |
- sharutils | [] [] |
- shishi | |
- skencil | |
- solfege | |
- solfege-manual | |
- soundtracker | |
- sp | |
- sysstat | |
- tar | [] |
- texinfo | |
- tin | |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux-ng | [] |
- vice | |
- vmm | |
- vorbis-tools | |
- wastesedge | |
- wdiff | |
- wget | [] [] |
- wyslij-po | |
- xchat | [] [] [] [] |
- xdg-user-dirs | [] [] [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] |
- +--------------------------------------------------+
- af am an ar as ast az be be@latin bg bn_IN bs ca
- 6 0 1 2 3 19 1 10 3 28 3 1 38
-
- crh cs da de el en en_GB en_ZA eo es et eu fa
- +-------------------------------------------------+
- a2ps | [] [] [] [] [] [] [] |
- aegis | [] [] [] |
- ant-phone | [] () |
- anubis | [] [] |
- aspell | [] [] [] [] [] |
- bash | [] [] [] |
- bfd | [] |
- bibshelf | [] [] [] |
- binutils | [] |
- bison | [] [] |
- bison-runtime | [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] |
- bombono-dvd | [] |
- buzztard | [] [] [] |
- cflow | [] [] |
- clisp | [] [] [] [] |
- coreutils | [] [] [] [] |
- cpio | |
- cppi | |
- cpplib | [] [] [] |
- cryptsetup | [] |
- dfarc | [] [] [] |
- dialog | [] [] [] [] [] |
- dico | |
- diffutils | [] [] [] [] [] [] |
- dink | [] [] [] |
- doodle | [] |
- e2fsprogs | [] [] [] |
- enscript | [] [] [] |
- exif | () [] [] |
- fetchmail | [] [] () [] [] [] |
- findutils | [] [] [] |
- flex | [] [] |
- freedink | [] [] [] |
- gas | [] |
- gawk | [] [] [] |
- gcal | [] |
- gcc | [] [] |
- gettext-examples | [] [] [] [] |
- gettext-runtime | [] [] [] [] |
- gettext-tools | [] [] [] |
- gip | [] [] [] [] |
- gjay | [] |
- gliv | [] [] [] |
- glunarclock | [] [] |
- gnubiff | () |
- gnucash | [] () () () () |
- gnuedu | [] [] |
- gnulib | [] [] |
- gnunet | |
- gnunet-gtk | [] |
- gnutls | [] [] |
- gold | [] |
- gpe-aerial | [] [] [] [] |
- gpe-beam | [] [] [] [] |
- gpe-bluetooth | [] [] |
- gpe-calendar | [] |
- gpe-clock | [] [] [] [] |
- gpe-conf | [] [] [] |
- gpe-contacts | [] [] [] |
- gpe-edit | [] [] |
- gpe-filemanager | [] [] [] |
- gpe-go | [] [] [] [] |
- gpe-login | [] [] |
- gpe-ownerinfo | [] [] [] [] |
- gpe-package | [] [] [] |
- gpe-sketchbook | [] [] [] [] |
- gpe-su | [] [] [] [] |
- gpe-taskmanager | [] [] [] [] |
- gpe-timesheet | [] [] [] [] |
- gpe-today | [] [] [] [] |
- gpe-todo | [] [] [] |
- gphoto2 | [] [] () [] [] [] |
- gprof | [] [] [] |
- gpsdrive | [] [] [] |
- gramadoir | [] [] [] |
- grep | [] |
- grub | [] [] |
- gsasl | [] |
- gss | |
- gst-plugins-bad | [] [] [] [] [] |
- gst-plugins-base | [] [] [] [] [] |
- gst-plugins-good | [] [] [] [] [] [] |
- gst-plugins-ugly | [] [] [] [] [] [] |
- gstreamer | [] [] [] [] [] |
- gtick | [] () [] |
- gtkam | [] [] () [] [] |
- gtkorphan | [] [] [] [] |
- gtkspell | [] [] [] [] [] [] [] |
- gutenprint | [] [] [] |
- hello | [] [] [] [] |
- help2man | [] |
- hylafax | [] [] |
- idutils | [] [] |
- indent | [] [] [] [] [] [] [] |
- iso_15924 | [] () [] [] |
- iso_3166 | [] [] [] [] () [] [] [] () |
- iso_3166_2 | () |
- iso_4217 | [] [] [] () [] [] |
- iso_639 | [] [] [] [] () [] [] |
- iso_639_3 | [] |
- jwhois | [] |
- kbd | [] [] [] [] [] |
- keytouch | [] [] |
- keytouch-editor | [] [] |
- keytouch-keyboa... | [] |
- klavaro | [] [] [] [] |
- latrine | [] () |
- ld | [] [] |
- leafpad | [] [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] [] () |
- libextractor | |
- libgnutls | [] |
- libgpewidget | [] [] |
- libgpg-error | [] [] |
- libgphoto2 | [] () |
- libgphoto2_port | [] () [] |
- libgsasl | |
- libiconv | [] [] [] [] [] |
- libidn | [] [] [] |
- lifelines | [] () |
- liferea | [] [] [] [] [] |
- lilypond | [] [] [] |
- linkdr | [] [] [] |
- lordsawar | [] |
- lprng | |
- lynx | [] [] [] [] |
- m4 | [] [] [] [] |
- mailfromd | |
- mailutils | [] |
- make | [] [] [] |
- man-db | |
- man-db-manpages | |
- minicom | [] [] [] [] |
- mkisofs | |
- myserver | |
- nano | [] [] [] |
- opcodes | [] [] |
- parted | [] [] |
- pies | |
- popt | [] [] [] [] [] |
- psmisc | [] [] [] |
- pspp | [] |
- pwdutils | [] |
- radius | [] |
- recode | [] [] [] [] [] [] |
- rosegarden | () () () |
- rpm | [] [] [] |
- rush | |
- sarg | |
- screem | |
- scrollkeeper | [] [] [] [] [] |
- sed | [] [] [] [] [] [] |
- sharutils | [] [] [] [] |
- shishi | |
- skencil | [] () [] |
- solfege | [] [] [] |
- solfege-manual | [] [] |
- soundtracker | [] [] [] |
- sp | [] |
- sysstat | [] [] [] |
- tar | [] [] [] [] |
- texinfo | [] [] [] |
- tin | [] [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux-ng | [] [] [] [] |
- vice | () () |
- vmm | [] |
- vorbis-tools | [] [] |
- wastesedge | [] |
- wdiff | [] [] |
- wget | [] [] [] |
- wyslij-po | |
- xchat | [] [] [] [] [] |
- xdg-user-dirs | [] [] [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] [] [] [] |
- +-------------------------------------------------+
- crh cs da de el en en_GB en_ZA eo es et eu fa
- 5 64 105 117 18 1 8 0 28 89 18 19 0
-
- fi fr ga gl gu he hi hr hu hy id is it ja ka kn
- +----------------------------------------------------+
- a2ps | [] [] [] [] |
- aegis | [] [] |
- ant-phone | [] [] |
- anubis | [] [] [] [] |
- aspell | [] [] [] [] |
- bash | [] [] [] [] |
- bfd | [] [] [] |
- bibshelf | [] [] [] [] [] |
- binutils | [] [] [] |
- bison | [] [] [] [] |
- bison-runtime | [] [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] [] [] |
- bombono-dvd | [] |
- buzztard | [] |
- cflow | [] [] [] |
- clisp | [] |
- coreutils | [] [] [] [] [] |
- cpio | [] [] [] [] |
- cppi | [] [] |
- cpplib | [] [] [] |
- cryptsetup | [] [] [] |
- dfarc | [] [] [] |
- dialog | [] [] [] [] [] [] [] |
- dico | |
- diffutils | [] [] [] [] [] [] [] [] [] |
- dink | [] |
- doodle | [] [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] |
- exif | [] [] [] [] [] [] |
- fetchmail | [] [] [] [] |
- findutils | [] [] [] [] [] [] |
- flex | [] [] [] |
- freedink | [] [] [] |
- gas | [] [] |
- gawk | [] [] [] [] () [] |
- gcal | [] |
- gcc | [] |
- gettext-examples | [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] |
- gip | [] [] [] [] [] [] |
- gjay | [] |
- gliv | [] () |
- glunarclock | [] [] [] [] |
- gnubiff | () [] () |
- gnucash | () () () () () [] |
- gnuedu | [] [] |
- gnulib | [] [] [] [] [] [] |
- gnunet | |
- gnunet-gtk | [] |
- gnutls | [] [] |
- gold | [] [] |
- gpe-aerial | [] [] [] |
- gpe-beam | [] [] [] [] |
- gpe-bluetooth | [] [] [] [] |
- gpe-calendar | [] [] |
- gpe-clock | [] [] [] [] [] |
- gpe-conf | [] [] [] [] |
- gpe-contacts | [] [] [] [] |
- gpe-edit | [] [] [] |
- gpe-filemanager | [] [] [] [] |
- gpe-go | [] [] [] [] [] |
- gpe-login | [] [] [] |
- gpe-ownerinfo | [] [] [] [] [] |
- gpe-package | [] [] [] |
- gpe-sketchbook | [] [] [] [] |
- gpe-su | [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] |
- gpe-timesheet | [] [] [] [] [] |
- gpe-today | [] [] [] [] [] [] [] |
- gpe-todo | [] [] [] |
- gphoto2 | [] [] [] [] [] [] |
- gprof | [] [] [] [] |
- gpsdrive | [] [] [] |
- gramadoir | [] [] [] |
- grep | [] [] |
- grub | [] [] [] [] |
- gsasl | [] [] [] [] [] |
- gss | [] [] [] [] [] |
- gst-plugins-bad | [] [] [] [] [] [] |
- gst-plugins-base | [] [] [] [] [] [] |
- gst-plugins-good | [] [] [] [] [] [] |
- gst-plugins-ugly | [] [] [] [] [] [] |
- gstreamer | [] [] [] [] [] |
- gtick | [] [] [] [] [] |
- gtkam | [] [] [] [] [] |
- gtkorphan | [] [] [] |
- gtkspell | [] [] [] [] [] [] [] [] [] |
- gutenprint | [] [] [] [] |
- hello | [] [] [] |
- help2man | [] [] |
- hylafax | [] |
- idutils | [] [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] [] |
- iso_15924 | [] () [] [] |
- iso_3166 | [] () [] [] [] [] [] [] [] [] [] [] |
- iso_3166_2 | () [] [] [] |
- iso_4217 | [] () [] [] [] [] |
- iso_639 | [] () [] [] [] [] [] [] [] |
- iso_639_3 | () [] [] |
- jwhois | [] [] [] [] [] |
- kbd | [] [] |
- keytouch | [] [] [] [] [] [] |
- keytouch-editor | [] [] [] [] [] |
- keytouch-keyboa... | [] [] [] [] [] |
- klavaro | [] [] |
- latrine | [] [] [] |
- ld | [] [] [] [] |
- leafpad | [] [] [] [] [] [] [] () |
- libc | [] [] [] [] [] |
- libexif | [] |
- libextractor | |
- libgnutls | [] [] |
- libgpewidget | [] [] [] [] |
- libgpg-error | [] [] |
- libgphoto2 | [] [] [] |
- libgphoto2_port | [] [] [] |
- libgsasl | [] [] [] [] [] |
- libiconv | [] [] [] [] [] [] |
- libidn | [] [] [] [] |
- lifelines | () |
- liferea | [] [] [] [] |
- lilypond | [] [] |
- linkdr | [] [] [] [] [] |
- lordsawar | |
- lprng | [] |
- lynx | [] [] [] [] [] |
- m4 | [] [] [] [] [] [] |
- mailfromd | |
- mailutils | [] [] |
- make | [] [] [] [] [] [] [] [] [] |
- man-db | [] [] |
- man-db-manpages | [] |
- minicom | [] [] [] [] [] |
- mkisofs | [] [] [] [] |
- myserver | |
- nano | [] [] [] [] [] [] |
- opcodes | [] [] [] [] |
- parted | [] [] [] [] |
- pies | |
- popt | [] [] [] [] [] [] [] [] [] |
- psmisc | [] [] [] |
- pspp | |
- pwdutils | [] [] |
- radius | [] [] |
- recode | [] [] [] [] [] [] [] [] |
- rosegarden | () () () () () |
- rpm | [] [] |
- rush | |
- sarg | [] |
- screem | [] [] |
- scrollkeeper | [] [] [] [] |
- sed | [] [] [] [] [] [] [] [] |
- sharutils | [] [] [] [] [] [] [] |
- shishi | [] |
- skencil | [] |
- solfege | [] [] [] [] |
- solfege-manual | [] [] |
- soundtracker | [] [] |
- sp | [] () |
- sysstat | [] [] [] [] [] |
- tar | [] [] [] [] [] [] [] |
- texinfo | [] [] [] [] |
- tin | [] |
- unicode-han-tra... | |
- unicode-transla... | [] [] |
- util-linux-ng | [] [] [] [] [] [] |
- vice | () () () |
- vmm | [] |
- vorbis-tools | [] |
- wastesedge | () () |
- wdiff | [] |
- wget | [] [] [] [] [] [] [] [] |
- wyslij-po | [] [] [] |
- xchat | [] [] [] [] [] [] [] [] [] |
- xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] [] [] |
- +----------------------------------------------------+
- fi fr ga gl gu he hi hr hu hy id is it ja ka kn
- 105 121 53 20 4 8 3 5 53 2 120 5 84 67 0 4
-
- ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
- +-----------------------------------------------+
- a2ps | [] |
- aegis | |
- ant-phone | |
- anubis | [] [] |
- aspell | [] |
- bash | |
- bfd | |
- bibshelf | [] [] |
- binutils | |
- bison | [] |
- bison-runtime | [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] |
- bombono-dvd | |
- buzztard | |
- cflow | |
- clisp | |
- coreutils | [] |
- cpio | |
- cppi | |
- cpplib | |
- cryptsetup | |
- dfarc | [] |
- dialog | [] [] [] [] [] |
- dico | |
- diffutils | [] [] |
- dink | |
- doodle | |
- e2fsprogs | |
- enscript | |
- exif | [] |
- fetchmail | |
- findutils | |
- flex | |
- freedink | [] |
- gas | |
- gawk | |
- gcal | |
- gcc | |
- gettext-examples | [] [] [] [] |
- gettext-runtime | [] |
- gettext-tools | [] |
- gip | [] [] |
- gjay | |
- gliv | |
- glunarclock | [] |
- gnubiff | |
- gnucash | () () () () |
- gnuedu | |
- gnulib | |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] |
- gold | |
- gpe-aerial | [] |
- gpe-beam | [] |
- gpe-bluetooth | [] [] |
- gpe-calendar | [] |
- gpe-clock | [] [] [] [] [] |
- gpe-conf | [] [] |
- gpe-contacts | [] [] |
- gpe-edit | [] |
- gpe-filemanager | [] [] |
- gpe-go | [] [] [] |
- gpe-login | [] |
- gpe-ownerinfo | [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] |
- gpe-su | [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] [] |
- gpe-timesheet | [] [] |
- gpe-today | [] [] [] [] |
- gpe-todo | [] [] |
- gphoto2 | |
- gprof | [] |
- gpsdrive | |
- gramadoir | |
- grep | |
- grub | |
- gsasl | |
- gss | |
- gst-plugins-bad | [] [] [] [] |
- gst-plugins-base | [] [] |
- gst-plugins-good | [] [] |
- gst-plugins-ugly | [] [] [] [] [] |
- gstreamer | |
- gtick | |
- gtkam | [] |
- gtkorphan | [] [] |
- gtkspell | [] [] [] [] [] [] [] |
- gutenprint | |
- hello | [] [] [] |
- help2man | |
- hylafax | |
- idutils | |
- indent | |
- iso_15924 | [] [] |
- iso_3166 | [] [] () [] [] [] [] [] |
- iso_3166_2 | |
- iso_4217 | [] [] |
- iso_639 | [] [] |
- iso_639_3 | [] |
- jwhois | [] |
- kbd | |
- keytouch | [] |
- keytouch-editor | [] |
- keytouch-keyboa... | [] |
- klavaro | [] |
- latrine | [] |
- ld | |
- leafpad | [] [] [] |
- libc | [] |
- libexif | |
- libextractor | |
- libgnutls | [] |
- libgpewidget | [] [] |
- libgpg-error | |
- libgphoto2 | |
- libgphoto2_port | |
- libgsasl | |
- libiconv | |
- libidn | |
- lifelines | |
- liferea | |
- lilypond | |
- linkdr | |
- lordsawar | |
- lprng | |
- lynx | |
- m4 | |
- mailfromd | |
- mailutils | |
- make | [] |
- man-db | |
- man-db-manpages | |
- minicom | [] |
- mkisofs | |
- myserver | |
- nano | [] [] |
- opcodes | |
- parted | |
- pies | |
- popt | [] [] [] |
- psmisc | |
- pspp | |
- pwdutils | |
- radius | |
- recode | |
- rosegarden | |
- rpm | |
- rush | |
- sarg | |
- screem | |
- scrollkeeper | [] [] |
- sed | |
- sharutils | |
- shishi | |
- skencil | |
- solfege | [] |
- solfege-manual | |
- soundtracker | |
- sp | |
- sysstat | [] |
- tar | [] |
- texinfo | [] |
- tin | |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux-ng | |
- vice | |
- vmm | |
- vorbis-tools | |
- wastesedge | |
- wdiff | |
- wget | [] |
- wyslij-po | |
- xchat | [] [] [] |
- xdg-user-dirs | [] [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] |
- +-----------------------------------------------+
- ko ku ky lg lt lv mk ml mn mr ms mt nb nds ne
- 20 5 10 1 13 48 4 2 2 4 24 10 20 3 1
-
- nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr
- +---------------------------------------------------+
- a2ps | [] [] [] [] [] [] [] [] |
- aegis | [] [] [] |
- ant-phone | [] [] |
- anubis | [] [] [] |
- aspell | [] [] [] [] [] |
- bash | [] [] |
- bfd | [] |
- bibshelf | [] [] |
- binutils | [] [] |
- bison | [] [] [] |
- bison-runtime | [] [] [] [] [] [] [] |
- bluez-pin | [] [] [] [] [] [] [] [] |
- bombono-dvd | [] () |
- buzztard | [] [] |
- cflow | [] |
- clisp | [] [] |
- coreutils | [] [] [] [] [] [] |
- cpio | [] [] [] |
- cppi | [] |
- cpplib | [] |
- cryptsetup | [] |
- dfarc | [] |
- dialog | [] [] [] [] |
- dico | [] |
- diffutils | [] [] [] [] [] [] |
- dink | () |
- doodle | [] [] |
- e2fsprogs | [] [] |
- enscript | [] [] [] [] [] |
- exif | [] [] [] () [] |
- fetchmail | [] [] [] [] |
- findutils | [] [] [] [] [] |
- flex | [] [] [] [] [] |
- freedink | [] [] |
- gas | |
- gawk | [] [] [] [] |
- gcal | |
- gcc | [] |
- gettext-examples | [] [] [] [] [] [] [] [] |
- gettext-runtime | [] [] [] [] [] [] [] [] [] |
- gettext-tools | [] [] [] [] [] [] |
- gip | [] [] [] [] [] |
- gjay | |
- gliv | [] [] [] [] [] [] |
- glunarclock | [] [] [] [] [] |
- gnubiff | [] () |
- gnucash | [] () () () |
- gnuedu | [] |
- gnulib | [] [] [] [] |
- gnunet | |
- gnunet-gtk | |
- gnutls | [] [] |
- gold | |
- gpe-aerial | [] [] [] [] [] [] [] |
- gpe-beam | [] [] [] [] [] [] [] |
- gpe-bluetooth | [] [] |
- gpe-calendar | [] [] [] [] |
- gpe-clock | [] [] [] [] [] [] [] [] |
- gpe-conf | [] [] [] [] [] [] [] |
- gpe-contacts | [] [] [] [] [] |
- gpe-edit | [] [] [] |
- gpe-filemanager | [] [] [] |
- gpe-go | [] [] [] [] [] [] [] [] |
- gpe-login | [] [] |
- gpe-ownerinfo | [] [] [] [] [] [] [] [] |
- gpe-package | [] [] |
- gpe-sketchbook | [] [] [] [] [] [] [] |
- gpe-su | [] [] [] [] [] [] [] [] |
- gpe-taskmanager | [] [] [] [] [] [] [] [] |
- gpe-timesheet | [] [] [] [] [] [] [] [] |
- gpe-today | [] [] [] [] [] [] [] [] |
- gpe-todo | [] [] [] [] [] |
- gphoto2 | [] [] [] [] [] [] [] [] |
- gprof | [] [] [] |
- gpsdrive | [] [] |
- gramadoir | [] [] |
- grep | [] [] [] [] |
- grub | [] [] [] |
- gsasl | [] [] [] [] |
- gss | [] [] [] |
- gst-plugins-bad | [] [] [] [] [] [] |
- gst-plugins-base | [] [] [] [] [] |
- gst-plugins-good | [] [] [] [] [] |
- gst-plugins-ugly | [] [] [] [] [] [] |
- gstreamer | [] [] [] [] [] |
- gtick | [] [] [] |
- gtkam | [] [] [] [] [] [] |
- gtkorphan | [] |
- gtkspell | [] [] [] [] [] [] [] [] [] [] |
- gutenprint | [] [] |
- hello | [] [] [] [] |
- help2man | [] [] |
- hylafax | [] |
- idutils | [] [] [] [] [] |
- indent | [] [] [] [] [] [] [] |
- iso_15924 | [] [] [] [] |
- iso_3166 | [] [] [] [] [] () [] [] [] [] [] [] [] [] |
- iso_3166_2 | [] [] [] |
- iso_4217 | [] [] [] [] [] [] [] [] |
- iso_639 | [] [] [] [] [] [] [] [] [] |
- iso_639_3 | [] [] |
- jwhois | [] [] [] [] |
- kbd | [] [] [] |
- keytouch | [] [] [] |
- keytouch-editor | [] [] [] |
- keytouch-keyboa... | [] [] [] |
- klavaro | [] [] |
- latrine | [] [] |
- ld | |
- leafpad | [] [] [] [] [] [] [] [] [] |
- libc | [] [] [] [] |
- libexif | [] [] () [] |
- libextractor | |
- libgnutls | [] [] |
- libgpewidget | [] [] [] |
- libgpg-error | [] [] |
- libgphoto2 | [] [] |
- libgphoto2_port | [] [] [] [] [] |
- libgsasl | [] [] [] [] [] |
- libiconv | [] [] [] [] [] |
- libidn | [] [] |
- lifelines | [] [] |
- liferea | [] [] [] [] [] () () [] |
- lilypond | [] |
- linkdr | [] [] [] |
- lordsawar | |
- lprng | [] |
- lynx | [] [] [] |
- m4 | [] [] [] [] [] |
- mailfromd | [] |
- mailutils | [] |
- make | [] [] [] [] |
- man-db | [] [] [] |
- man-db-manpages | [] [] [] |
- minicom | [] [] [] [] |
- mkisofs | [] [] [] |
- myserver | |
- nano | [] [] [] [] |
- opcodes | [] [] |
- parted | [] [] [] [] |
- pies | [] |
- popt | [] [] [] [] |
- psmisc | [] [] [] |
- pspp | [] [] |
- pwdutils | [] |
- radius | [] [] [] |
- recode | [] [] [] [] [] [] [] [] |
- rosegarden | () () |
- rpm | [] [] [] |
- rush | [] [] |
- sarg | |
- screem | |
- scrollkeeper | [] [] [] [] [] [] [] [] |
- sed | [] [] [] [] [] [] [] [] [] |
- sharutils | [] [] [] [] |
- shishi | [] |
- skencil | [] [] |
- solfege | [] [] [] [] |
- solfege-manual | [] [] [] |
- soundtracker | [] |
- sp | |
- sysstat | [] [] [] [] |
- tar | [] [] [] [] |
- texinfo | [] [] [] [] |
- tin | [] |
- unicode-han-tra... | |
- unicode-transla... | |
- util-linux-ng | [] [] [] [] [] |
- vice | [] |
- vmm | [] |
- vorbis-tools | [] [] |
- wastesedge | [] |
- wdiff | [] [] |
- wget | [] [] [] [] [] [] [] |
- wyslij-po | [] [] [] |
- xchat | [] [] [] [] [] [] [] [] [] |
- xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] |
- xkeyboard-config | [] [] [] |
- +---------------------------------------------------+
- nl nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr
- 135 10 4 7 105 1 29 62 47 91 3 54 46 9 37
-
- sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW
- +---------------------------------------------------+
- a2ps | [] [] [] [] [] | 27
- aegis | [] | 9
- ant-phone | [] [] [] [] | 9
- anubis | [] [] [] [] | 15
- aspell | [] [] [] | 20
- bash | [] [] [] | 12
- bfd | [] | 6
- bibshelf | [] [] [] | 16
- binutils | [] [] | 8
- bison | [] [] | 12
- bison-runtime | [] [] [] [] [] [] | 29
- bluez-pin | [] [] [] [] [] [] [] [] | 37
- bombono-dvd | [] | 4
- buzztard | [] | 7
- cflow | [] [] [] | 9
- clisp | | 10
- coreutils | [] [] [] [] | 22
- cpio | [] [] [] [] [] [] | 13
- cppi | [] [] | 5
- cpplib | [] [] [] [] [] [] | 14
- cryptsetup | [] [] | 7
- dfarc | [] | 9
- dialog | [] [] [] [] [] [] [] | 30
- dico | [] | 2
- diffutils | [] [] [] [] [] [] | 30
- dink | | 4
- doodle | [] [] | 7
- e2fsprogs | [] [] [] | 11
- enscript | [] [] [] [] | 17
- exif | [] [] [] | 16
- fetchmail | [] [] [] | 17
- findutils | [] [] [] [] [] | 20
- flex | [] [] [] [] | 15
- freedink | [] | 10
- gas | [] | 4
- gawk | [] [] [] [] | 18
- gcal | [] [] | 5
- gcc | [] [] [] | 7
- gettext-examples | [] [] [] [] [] [] [] | 34
- gettext-runtime | [] [] [] [] [] [] [] | 29
- gettext-tools | [] [] [] [] [] [] | 22
- gip | [] [] [] [] | 22
- gjay | [] | 3
- gliv | [] [] [] | 14
- glunarclock | [] [] [] [] [] | 19
- gnubiff | [] [] | 4
- gnucash | () [] () [] () | 10
- gnuedu | [] [] | 7
- gnulib | [] [] [] [] | 16
- gnunet | [] | 1
- gnunet-gtk | [] [] [] | 5
- gnutls | [] [] [] | 10
- gold | [] | 4
- gpe-aerial | [] [] [] | 18
- gpe-beam | [] [] [] | 19
- gpe-bluetooth | [] [] [] | 13
- gpe-calendar | [] [] [] [] | 12
- gpe-clock | [] [] [] [] [] | 28
- gpe-conf | [] [] [] [] | 20
- gpe-contacts | [] [] [] | 17
- gpe-edit | [] [] [] | 12
- gpe-filemanager | [] [] [] [] | 16
- gpe-go | [] [] [] [] [] | 25
- gpe-login | [] [] [] | 11
- gpe-ownerinfo | [] [] [] [] [] | 25
- gpe-package | [] [] [] | 13
- gpe-sketchbook | [] [] [] | 20
- gpe-su | [] [] [] [] [] | 30
- gpe-taskmanager | [] [] [] [] [] | 29
- gpe-timesheet | [] [] [] [] [] | 25
- gpe-today | [] [] [] [] [] [] | 30
- gpe-todo | [] [] [] [] | 17
- gphoto2 | [] [] [] [] [] | 24
- gprof | [] [] [] | 15
- gpsdrive | [] [] [] | 11
- gramadoir | [] [] [] | 11
- grep | [] [] [] | 10
- grub | [] [] [] | 14
- gsasl | [] [] [] [] | 14
- gss | [] [] [] | 11
- gst-plugins-bad | [] [] [] [] | 26
- gst-plugins-base | [] [] [] [] [] | 24
- gst-plugins-good | [] [] [] [] | 24
- gst-plugins-ugly | [] [] [] [] [] | 29
- gstreamer | [] [] [] [] | 22
- gtick | [] [] [] | 13
- gtkam | [] [] [] | 20
- gtkorphan | [] [] [] | 14
- gtkspell | [] [] [] [] [] [] [] [] [] | 45
- gutenprint | [] | 10
- hello | [] [] [] [] [] [] | 21
- help2man | [] [] | 7
- hylafax | [] | 5
- idutils | [] [] [] [] | 17
- indent | [] [] [] [] [] [] | 30
- iso_15924 | () [] () [] [] | 16
- iso_3166 | [] [] () [] [] () [] [] [] () | 53
- iso_3166_2 | () [] () [] | 9
- iso_4217 | [] () [] [] () [] [] | 26
- iso_639 | [] [] [] () [] () [] [] [] [] | 38
- iso_639_3 | [] () | 8
- jwhois | [] [] [] [] [] | 16
- kbd | [] [] [] [] [] | 15
- keytouch | [] [] [] | 16
- keytouch-editor | [] [] [] | 14
- keytouch-keyboa... | [] [] [] | 14
- klavaro | [] | 11
- latrine | [] [] [] | 10
- ld | [] [] [] [] | 11
- leafpad | [] [] [] [] [] [] | 33
- libc | [] [] [] [] [] | 21
- libexif | [] () | 7
- libextractor | [] | 1
- libgnutls | [] [] [] | 9
- libgpewidget | [] [] [] | 14
- libgpg-error | [] [] [] | 9
- libgphoto2 | [] [] | 8
- libgphoto2_port | [] [] [] [] | 14
- libgsasl | [] [] [] | 13
- libiconv | [] [] [] [] | 21
- libidn | () [] [] | 11
- lifelines | [] | 4
- liferea | [] [] [] | 21
- lilypond | [] | 7
- linkdr | [] [] [] [] [] | 17
- lordsawar | | 1
- lprng | [] | 3
- lynx | [] [] [] [] | 17
- m4 | [] [] [] [] | 19
- mailfromd | [] [] | 3
- mailutils | [] | 5
- make | [] [] [] [] | 21
- man-db | [] [] [] | 8
- man-db-manpages | | 4
- minicom | [] [] | 16
- mkisofs | [] [] | 9
- myserver | | 0
- nano | [] [] [] [] | 21
- opcodes | [] [] [] | 11
- parted | [] [] [] [] [] | 15
- pies | [] [] | 3
- popt | [] [] [] [] [] [] | 27
- psmisc | [] [] | 11
- pspp | | 4
- pwdutils | [] [] | 6
- radius | [] [] | 9
- recode | [] [] [] [] | 28
- rosegarden | () | 0
- rpm | [] [] [] | 11
- rush | [] [] | 4
- sarg | | 1
- screem | [] | 3
- scrollkeeper | [] [] [] [] [] | 27
- sed | [] [] [] [] [] | 30
- sharutils | [] [] [] [] [] | 22
- shishi | [] | 3
- skencil | [] [] | 7
- solfege | [] [] [] [] | 16
- solfege-manual | [] | 8
- soundtracker | [] [] [] | 9
- sp | [] | 3
- sysstat | [] [] | 15
- tar | [] [] [] [] [] [] | 23
- texinfo | [] [] [] [] [] | 17
- tin | | 4
- unicode-han-tra... | | 0
- unicode-transla... | | 2
- util-linux-ng | [] [] [] [] | 20
- vice | () () | 1
- vmm | [] | 4
- vorbis-tools | [] | 6
- wastesedge | | 2
- wdiff | [] [] | 7
- wget | [] [] [] [] [] | 26
- wyslij-po | [] [] | 8
- xchat | [] [] [] [] [] [] | 36
- xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | 63
- xkeyboard-config | [] [] [] | 22
- +---------------------------------------------------+
- 85 teams sv sw ta te tg th tr uk vi wa zh_CN zh_HK zh_TW
- 178 domains 119 1 3 3 0 10 65 51 155 17 98 7 41 2618
-
- Some counters in the preceding matrix are higher than the number of
-visible blocks let us expect. This is because a few extra PO files are
-used for implementing regional variants of languages, or language
-dialects.
-
- For a PO file in the matrix above to be effective, the package to
-which it applies should also have been internationalized and
-distributed as such by its maintainer. There might be an observable
-lag between the mere existence a PO file and its wide availability in a
-distribution.
-
- If June 2010 seems to be old, you may fetch a more recent copy of
-this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
-matrix with full percentage details can be found at
-`http://translationproject.org/extra/matrix.html'.
-
-1.5 Using `gettext' in new packages
-===================================
-
-If you are writing a freely available program and want to
-internationalize it you are welcome to use GNU `gettext' in your
-package. Of course you have to respect the GNU Library General Public
-License which covers the use of the GNU `gettext' library. This means
-in particular that even non-free programs can use `libintl' as a shared
-library, whereas only free software can use `libintl' as a static
-library or use modified versions of `libintl'.
-
- Once the sources are changed appropriately and the setup can handle
-the use of `gettext' the only thing missing are the translations. The
-Free Translation Project is also available for packages which are not
-developed inside the GNU project. Therefore the information given above
-applies also for every other Free Software Project. Contact
-`coordinator@translationproject.org' to make the `.pot' files available
-to the translation teams.
-
diff --git a/AUTHORS b/AUTHORS
index 8e041b1..783c881 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,10 +11,10 @@ Backends:
artec_eplus48u:Sergey Vlasov, Andreas Nowack, David Stevenson, and
Michael Herder
as6e: Eugene S. Weiss
- avision: Meino Christian Cramer, René Rebe (*)
+ avision: Meino Christian Cramer, René Rebe
bh: Tom Martone
canon: Helmut Koeberle, Manuel Panea, and Markus Mertinat
- Mitsuru Okaniwa, Ulrich Deiters (*)
+ Mitsuru Okaniwa, Ulrich Deiters
canon630u: Nathan Rutman
canon_dr: m. allan noah (*)
canon_pp: Matthew Duggan, Simon Krix
@@ -35,13 +35,13 @@ Backends:
fujitsu: Randolph Bentson, Frederik Ramm, Oliver Schirrmeister,
m. allan noah (*)
genesys: Henning Geinitz, Gerhard Jaeger (*), Stéphane Voltz,
- Pierre Willenbrock
+ Pierre Willenbrock, Povilas Kanapickas (*)
gphoto2: Peter Fales
gt68xx: Sergey Vlasov, Andreas Nowack, David Stevenson, and
Henning Geinitz
- hp: Peter Kirchgessner (*)
+ hp: Peter Kirchgessner
Geoffrey Dairiki
- hp3500: Troy Rollo (*)
+ hp3500: Troy Rollo
hp3900: Jonathan Bravo Lopez
hp4200: Adrian Perez Jorge, Andrew John Lewis, Arnar Mar Hrafnkelsson,
Frank Zago, Henning Geinitz
@@ -49,7 +49,7 @@ Backends:
hp5590: Ilia Sotnikov (*)
hpljm1005: Philippe Rétornaz
hpsj5s: Max Vorobiev
- hs2p: Jeremy Johnson (*)
+ hs2p: Jeremy Johnson
ibm: M.F., Henning Geinitz
kodak: m. allan noah (*)
kodakaio: Paul Newall (*)
@@ -73,7 +73,7 @@ Backends:
niash: Ullrich Sigwanz, Bertrik Sikken
p5: Stéphane Voltz
pie: Simon Munton
- pieusb: Jan Vleeshouwers, Michael Rickmann, Klaus Kämpf
+ pieusb: Jan Vleeshouwers, Michael Rickmann, Klaus Kämpf (*)
pint: Gordon Matzigkeit
pixma: Wittawat Yamwong
Nicolas Martin
@@ -85,9 +85,10 @@ Backends:
pnm: Andreas Beck, Gordon Matzigkeit, David Mosberger, Michael
Herder, and Henning Geinitz
qcam: Scott Laird (original driver), David Mosberger (SANE backend),
- despeckling filter by Patrick Reynolds,
+ despeckling filter by Patrick Reynolds,
B&W fixes by Andrew Kuchling
ricoh: Feico W. Dillema
+ ricoh2: Stanislav Yuzvinsky (*)
rts8891: Stéphane Voltz
s9036: Ingo Schneider
sceptre: Frank Zago
diff --git a/ChangeLog b/ChangeLog
index 5197a3f..7c1d105 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4111 +1,4 @@
-commit 16f3060061a17cbc54f3415a7e2abc1c35f3fcd2
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Sat May 20 14:13:19 2017 +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
-
- 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
-
- po/*.po: sync with source code
-
-commit 05553c679fd02648fc5b6dd3a4abf75fe67e1d27
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sun May 14 21:34:36 2017 -0400
-
- updated uk.po translation
-
- Update from Yuri Chornoivan
-
-commit 479ccaedddcb0a491b351e20cac22595196df02a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun May 14 19:48:41 2017 +0900
-
- autotools: Sync derived files
-
- This was done by running
-
- autoreconf --force --install
-
- on Debian GNU/Linux 8.8 and reverting the removal of SANE specific
- tweaks to ltmain.sh.
-
-commit 02037adb134a2b533bb3201833444aed7bedc8f6
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun May 14 19:47:31 2017 +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
-
- 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
-
- Replace the startup gamma with the same from the standalone version
-
- Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629470
-
-commit 5c0812c51b6d48516acb9dd9efcfbe2b34f04a79
-Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Date: Sat May 13 18:05:43 2017 +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
-
- Source code string typo fixes
-
-commit 09cf70563a1129116ab6888e944bfcb44fec8dd0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 13 16:33:23 2017 +0900
-
- configure.ac: Fix condition
-
-commit 9230e0c251f2351ce1c7b8d7fca08dc39c320925
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 13 13:12:06 2017 +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
-
- Add a header to dll.conf
-
- Document dll.conf in a header, point to the dll.d directory for external
- backends and document the net backend w/ pointers to the manpages.
-
- Based on a patch by Julien BLACHE <jblache@debian.org>
-
-commit 77dcf26860b239dafb3094c863691aaef304805a
-Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
-Date: Sat May 13 13:07:01 2017 +0900
-
- Fix potential assert in avahi backend
-
- avahi_browser contains a reference to an AvahiClient, which may be
- avahi_client. If it does, then freeing avahi_browser references avahi_client,
- resulting in an assert() in Avahi's linked list macro.
-
- Fix this by freeing avahi_browser before avahi_client.
- See https://bugs.launchpad.net/bugs/831867
-
-commit e6711c377f266d33a3d8bc28d7a508e3c4c29c79
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed May 10 19:10:26 2017 +0200
-
- remove unused entry from ChangeLog
-
-commit 0cf531e44528a541d76c3571bca72f395b7892ae
-Author: Klaus Kämpf <kkaempf@suse.de>
-Date: Tue May 9 10:52:12 2017 +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
-
- pixma.desc: fix version of backend
-
-commit 5b10b0b635157cdb9766197a5f2ea7f1d24a402a
-Author: René Rebe <rebe@exactcode.de>
-Date: Fri May 5 07:05:30 2017 +0200
-
- epson2: fixed network transport for new scanners
-
- increased command buffer due memory overrun, and always read receive
- status, even for zero length on network scanenrs, should fix #315552
-
-commit 6ffeb9097386268e425ae2390ed2835853dbd439
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 6 20:40:25 2017 +0900
-
- Fix test for API specification generation
-
- If none of the formats can be generated but API specs are requested,
- bomb. The original test aimed to do so but was testing against "no",
- a value that was never assigned.
-
-commit f3f8afb08c2098d9659757a8e7b8c212a09ddf79
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 6 12:24:13 2017 +0900
-
- kvs20xx.c: don't assume sane_get_devices() has been called
-
- Nor that that function is called with a non-NULL argument.
- This aligns the implementation with that of kvs40xx.c.
-
- Fixes 315625.
-
-commit 8995b1fc81e4378d2b5b0b6b0d354735403210ed
-Author: Martin Husemann <martin@NetBSD.org>
-Date: Tue Mar 15 18:07:00 2016 +0900
-
- sanei_usb: fix number of bytes read for 64bit big-endian systems
-
- Fixes 315337.
-
-commit b1a2c6105443c5279684f0c6827c268594aa234d
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri May 5 19:46:28 2017 +0200
-
- pixma: backend version 0.17.37
-
-commit 09c467deab5ca4301ab7da37241c3fc072b94399
-Author: Klaus Kaempf <kkaempf@suse.de>
-Date: Wed May 3 17:52:15 2017 +0200
-
- pieusb: Support ProScan 10T and Reflecta CrystalScan 3600
-
- Neither of these scanner have an automated slide transport and fail on
- respective SCSI commands.
-
- - Add flags parameter to control if automatic slide transport is available
- - Reflect flags in pieusb.conf.in
- - rename SLIDE_LAMP_ON to SLIDE_INIT
- it fails on scanners without automatic slide transport, so it has
- nothing to do with the lamp.
- - run SLIDE_INIT only FLAG_SLIDE_TRANSPORT is set
- - pieusb.conf.in: Add Reflecta CrystalScan 3600
-
-commit 801558f959a03b5042d6df288cb1fd2c87035798
-Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon May 1 20:15:23 2017 +0000
-
- Write density (resolution) JFIF header information with JPEG files.
-
-commit b219bc2c73113fd9d8f7c5795bd662f03a8610ea
-Merge: f624a9f 92e5979
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu May 4 18:26:55 2017 +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
-
- Fix [-Werror=implicit-function-declaration] compiler error
-
- The fileno() is only available if its feature test macro passes. The
- various symbols are defined appropriately in ../include/sane/config.h
- during configuration of the build.
-
-commit adebd37b5cb3ec0cab3025300db5cdd03c2173cc
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Apr 30 20:00:28 2017 +0900
-
- Fix [-Wpointer-arith] compiler warnings
-
-commit c3903cc476909884ace9fedbea5f69b3a4085b70
-Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon Apr 17 12:07:40 2017 +0000
-
- Avoid attaching grayscale ICC profiles to rgb images, or vice-versa.
-
- If the ICC profile added does not match the colour format of the
- image, libpng will abort. This can leave the scanner motors in an
- incorrect state and possibly cause permanent damage.
-
-commit a907b61bd58f00fd6b1d8468d9d28d6d39232c79
-Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon Apr 17 12:07:39 2017 +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
-
- Separate ICC profile loading into a separate file.
-
- This cuts out some duplicate code, and enables us to reuse this
- logic for PNG, JPEG, and any other future output format.
- sanei_load_icc_profile also allows us to know that an ICC profile
- file is not long enough before we start to write it to the output;
- this should prevent poorly-written software from overflowing into
- image data when they read the bad profile based on its length.
-
-commit 611388db1d56b0ffd74af05c4a51fe518269c90d
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Apr 27 21:59:24 2017 +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
-
- utsushi.desc: PID 0156 is a ES-400
-
- See Alioth issue 315695.
-
-commit a0321d2a92286afbc9557fa44e2de4f706cf2407
-Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Sun Apr 16 09:06:48 2017 +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
-
- Only swap 16-bit PNG bytes on machines that are not big-endian
-
- The SANE API specifies that image bytes are in machine native order.
-
-commit 28eb09eec4c64d9070b5747c93c25134395cab53
-Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Sun Apr 16 00:27:54 2017 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- utsushi.desc: sync with upstream
-
-commit dcddb9505c88485bda6cdcf77927d14008b449ee
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Apr 11 21:22:05 2017 -0400
-
- epjitsu backend v31
-
- - hardware gray support for fi-60F/65F (disabled pending calibration)
- - merge fi-60F/65F settings
- - improve desc, conf and man files
-
-commit 34e4dbf6c35946ca52678f6a7a61ef002fddb1c2
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Apr 10 20:23:03 2017 +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
-
- fujitsu backend v133 2017-04-08, MAN
-
- - initial support for fi-7600/7700
- - autodetect various double feed capabilities using VPD
- - call send_lut if we are using a downloaded gamma table
-
-commit 5edb87f9ac950473f8c3a57b4071c970887d8440
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Apr 8 21:08:12 2017 +0900
-
- genesys: Trigger reallocation of gamma tables on next sane_open()
-
- Fixes 315491.
-
-commit 6eb4a1f164ef116a3ed10ee42883a15c268ea01e
-Author: Robert Ancell <robert.ancell@canonical.com>
-Date: Tue Apr 4 11:36:05 2017 +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
-
- Add missing double quote
-
- Accidently removed in 38ce7fc086a6ecbee94ef31901a6eb874fb611b1.
- Thanks to Jon Nelson for pointing this out.
-
-commit 38ce7fc086a6ecbee94ef31901a6eb874fb611b1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Apr 5 18:29:41 2017 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- pixma: new option adf-wait
-
-commit 3ef45ec3c3d56bfc60b339dac8a2f19543387ef3
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:16:20 2017 +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
-
- epjitsu backend v30 again
-
- - typo in previous commit broke low resolution scans on fi-65F
-
-commit a7fde11e15e5604c7b37bc9553cbd08086c08e53
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Mar 21 21:35:59 2017 -0400
-
- epjitsu backend v30
-
- - bump build number
-
-commit 891e3984d0410fa8c698d99d79948df3237e258d
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Mar 21 20:39:47 2017 -0400
-
- epjitsu v30
-
- - fix image truncation when using 150 DPI in Y direction
- - add 200 and 400 DPI Y direction support for fi-60F/65F
-
-commit 42896939822b44f44ecd1b6d35afdfa4473ed35d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Feb 19 16:45:45 2017 +0900
-
- Address memory corruption and information leakage.
-
- Addresses CVE-2017-6318, Alioth#315576 and Debian's BTS#854804.
-
-commit eaa4d4407d96585b7cdbe194d8ac295eee3e6299
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Mar 18 19:15:03 2017 -0400
-
- epjitsu backend v29
-
- - fix infinite loop when scaling in Y direction
-
-commit 2f9ea038b157fc6d08ce882a1d9984d37b46d809
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Mar 11 10:48:35 2017 +0900
-
- Fix typo
-
- See http://lists.alioth.debian.org/pipermail/sane-devel/2017-March/035099.html
-
-commit 1e028b72cae0f4caaf48868504bd2cd1667d6da7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Mar 6 20:54:59 2017 +0900
-
- pixma: updated status for MG5400 Series
-
- See http://lists.alioth.debian.org/pipermail/sane-devel/2017-March/035072.html
- and http://lists.alioth.debian.org/pipermail/sane-devel/2017-March/035082.html
-
-commit 928b803ef1f1bc1007ca3fa83418f103c6a7bdd7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Mar 5 15:35:06 2017 +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
-
- utsushi.desc: sync with upstream
-
-commit e3ed043500e786724cc77fdd0565993e878a51fc
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Dec 26 08:13:33 2016 +0900
-
- Update backend maintenance status
-
- Following the project member list cleanup, only backends that list
- a project member with git write access in the AUTHORS file are now
- considered maintained.
-
-commit 7a0e1126b3eebd38944b8b281e6a481b95a35bbd
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:30:31 2017 +0100
-
- Revert "pixma_mp150.c: Fix scanbutton detection for MB5000 series"
-
- This reverts commit 53aa78df3a6980791ce250c471d019c5c59b83ec.
-
-commit 306f8f16e78b52948a6e09fa0957b3e364e0189f
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:29:59 2017 +0100
-
- Revert "pixma_mp150.c: fix 1200 dpi scanning for MB5000 series"
-
- This reverts commit dfc5487571ed2915bda7bdedbd4c79015004361b.
-
-commit 9bc734042f6a2af159772eef412efe7c65ebb02f
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:56 2017 +0100
-
- Revert "pixma_mp150.c: scan param 0x26-0x29 should contain localtime HHMM, also for MB5000 series"
-
- This reverts commit eb712c6bd8ca6a42a1d3941583fa18b9981b8712.
-
-commit 6c439bce791522aa9cd3fc04cf62087bdd6c6875
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:31 2017 +0100
-
- Revert "pixma_mp150.c: replace multiple if statements with case statement in handle_interrupt"
-
- This reverts commit 28dcd0aef4ac91b87527c17c8aa89e879f39f20d.
-
-commit 06b4b27ecfad1aa30c772fa0fac15d1c144c1e7a
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:09 2017 +0100
-
- Revert "pixma_mp150.c: fix parameter settings for MB5000 in send_scan_param"
-
- This reverts commit 1d2a40ec96aea0ba183415efea570301159d4159.
-
-commit 589e011992a21ae1edb4684eb89582350c47333f
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 22:15:24 2017 +0100
-
- Update the sane-pixma man-page for the new timout setting option.
-
-commit 1b442ce1ea7068bda1129c061071dc94bfd6a8d2
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 21:37:52 2017 +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
-
- 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
-
- Remove incorrect comment left from old version
-
-commit 526f642f6487cd348b39a6e138c2bffa9a88d0f6
-Merge: 32be261 68cd274
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Dec 30 20:04:53 2016 +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
-
- 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
-
- 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
-
- Fix typo
-
-commit 755e829caa23b9781863e4b1e1d24c3cfee9e8bf
-Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 23:12:07 2016 -0800
-
- avision.c: abort "wait for light" loop if interrupted
-
- Adds a "cancelled" flag to the Avision device structure, cleared
- in sane_start() and set in sane_cancel(). Test this flag in
- wait_4_light() and bail out of the 90-second "wait for the
- light to warm up" loop if the scan is cancelled.
-
-commit 28963459a4ac43100b8e377d65332d81a2660c0d
-Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 23:02:42 2016 -0800
-
- avision.c: Recognize "backlight on" status
-
- Avision scanners can return an additional light-status value meaning
- "Transparent Media Adapter back-light is on". Accept this as
- equivalent to "on" during the lamp-warmup check prior to starting a
- scan. Re-check the light status after sending the window command, as
- the light selection might have been changed and a further warm-up
- may be required.
-
-commit 6585b6f60d07a196e42c99b935e2754bbc80b3c8
-Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 22:29:16 2016 -0800
-
- avision.c: Add "skip-adf" option
-
- The code which tries aggressively to reset/initialize HP 82xx/83xx
- Automatic Document Feeders doesn't work well if there's no ADF attached,
- because the scanner reports a non-zero ADF model type in this case.
- The retry code makes several attempts to initialize the ADF, and then
- bails out with an "Operation not supported" error.
-
- Add a new "option skip-adf" which will cause the backend to believe
- the "ADF not present" status if that's what the scanner reports.
-
- Fixes #313751
-
-commit f58ce8f9201364bd0fe28ef736d4b1345f3f71b2
-Author: Troy Rollo <troy@kawseq.com>
-Date: Fri Dec 2 01:37:23 2016 +1100
-
- HP3500: Always enable the second set of CCDs. This
- prevents ghosting that occurs when only enabling the
- first set of CCDs, even though at some resolutions
- we will not get any data from the second set.
-
-commit 77986b1d14db5ba285d595ab7630748b3c6d9284
-Author: Troy Rollo <troy@kawseq.com>
-Date: Fri Dec 2 01:20:43 2016 +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
-
- 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
-
- HP3500 backend: fix #314811, greatly improve
- calibration, support harware calibration
- in 120DPI and 400DPI, and add support for
- hardware gamma correction.
-
-commit 6484ff8fc368db24b567e1d2fbb44cd86e0f9e43
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 23:03:23 2016 +0300
-
- Forgoten comma in backends man pages list.
-
-commit 69a008830b84437701022cbd96a8863ac61d3ddf
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 22:28:03 2016 +0300
-
- Pre-create temporary file for Jpeg scanning.
-
- Jpeg mode (as submitted by Samsung developer) uses temporary file with
- fixed name. This opens attacks on reading its content or overwriting any
- other user-writable file (with symlink). This change pre-creates
- temporary file with O_CREAT|O_EXCL and mode 0600. Assuming usual +t
- permissions for tmp this should mitigate issue.
-
-commit 226c2b9deb2f4f4b1d7c51ad4bb83d181e5e31b5
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:50:06 2016 +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
-
- Indent of xerox_mfp-tcp.c and xerox_mfp-usb.c
-
- This is purely indent commit without any code changes, in
- follow-up to 83bbcfe7d546b4d0cd28269b647fb558c6a1e00a.
-
- Indent command used:
- astyle -A8 -U -H -k3 -W3 -o xerox_mfp-{usb,tcp}.c
-
- Proof that code is not changed:
- git log -w -p xerox_mfp-{usb,tcp}.c
-
-commit 610533a9a66d7232a8a0ecd360871e3a6fa67980
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:24:38 2016 +0300
-
- Update xerox_mfp man page.
-
-commit ba6a5710b508e73f4cb7152d034adc865f5201d7
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:00:58 2016 +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
-
- Run indent: astyle -A8 -U -H -k3 -W3 -o xerox_mfp.[ch]
-
- This is purely indent commit w/o any code changes.
- To prove run `git diff -w`.
-
-commit e4aed53a1e46b9d46a76f814d414ef8d2c2276e3
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Oct 8 19:32:43 2016 -0400
-
- fujitsu backend v132
-
- - remove ipc_mode option and variables
- - set ipc mode based on other options
- - cleanup inverted logic DTC options
- - fixes threshold option reported in #315069
-
-commit cfa98fd0d1271dd426ff2d6c565790d87cf3986d
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Sat Oct 8 14:25:33 2016 +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
-
- pixma: new scanner Canon PIXMA MG3000 Series
-
- see bug report #315521
-
-commit 3b63fdab2b94f14765f8ba165546f6d69fc23ea9
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 5 20:05:37 2016 +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
-
- fix ADF scanning for Canon MF57x0 devices
-
- - ignore result from calibrate(): don't interrupt @ PIXMA_STATUS_BUSY
- - MF57x0 devices don't require abort_session() after the last page
- - reported by Dmitry Deshevoy
-
-commit a9806de08ea65acb8a1109b480147a4a7ec76cb5
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 17:06:15 2016 +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
-
- Sync autofoo
-
-commit da49686efe16bc5f7b4ddef18ea0dcb5f7c18d77
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 17:00:54 2016 +0900
-
- sane-find-scanner: disable USB if not supported
-
- This fixes a [-Wpedantic] compiler warning about ISO C forbidding empty
- translation units. The check-usb-chip.c file reduces to such a file in
- the case USB support was explicitly disabled or no usable library found.
-
-commit 471e8ac0c1b565e5aea92f35ae173e167f3b61c7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 16:28:11 2016 +0900
-
- sanei_pp: fix [-Wcpp] compiler warning
-
- The `#warning` directive is turned into an error by `-Werror`. The
- directive triggers is guaranteed to trigger with __GNUC__ when no
- parallel support is available. This would prevent strict CI builds.
-
- Output a message with all compilers that understand the pragma. Those
- that don't should ignore it, according to C99.
-
-commit 7d7030a40986d97d3cf7a5313bf889bce4af8131
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 15:53:46 2016 +0900
-
- sanei_usb: : fix [-Wunused-parameter] compiler warnings
-
- These were issued in the absence of libusb.
-
-commit e6faafcdc94e253f7f4fe793fec6110ce37e8014
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 15:44:36 2016 +0900
-
- xerox_mfp: fix [-Wunused-parameter] compiler warnings
-
- These are issued when libjpeg was not found during configuration.
-
-commit 32be261254a78d1f314b3ee86fd5e5b40ab91a86
-Merge: ec8bf64 97d2a3d
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Sep 21 22:35:10 2016 +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
-
- AWARE: Treat compiler warnings as errors on debian-8-full
-
- This build became compiler warning free in ee550e5d. Let's keep it
- that way!
-
-commit 4119f05d5f400803a9c952896125e9feabb07393
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 21 21:54:39 2016 +0900
-
- Fix USB ID typo
-
-commit ee550e5de8e636642b9895d54f6740aa38ee6ff8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 12:52:31 2016 +0900
-
- pieusb: fix [-Wunused-parameter] compiler warnings
-
- The functions that trigger these warnings were not used.
-
-commit bf088a6ed15733237df446a84d6659c4e0145c9a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 17:45:35 2016 +0900
-
- Merge comments
-
- This gets rid of a missing :usbid warning.
-
-commit e01f574b19be74081650e9be9bcb16a3420068ef
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 17:44:48 2016 +0900
-
- Merge duplicate entry
-
-commit 1a328e412fb7bf3872de20fe6e57b00ab913a75d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 15:26:14 2016 +0900
-
- Add missing USB IDs
-
- Taken from http://www.linux-usb.org/usb.ids
-
-commit dd940a1f612f56d2acb929afd54614ebc6dfb309
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Sep 17 20:43:44 2016 +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
-
- niash: fix [-Wunused-but-set-variable] compiler warning
-
- This makes explicit what the compiler has effectively been doing all
- along anyway since at least 727dd4ab (2004-08-03).
-
-commit 6f4b88b6173745f09e4ce1fa465db534eca85751
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 12 20:05:42 2016 +0900
-
- epson2: fix [-Wunused-but-set-variable] compiler warning
-
- This makes explicit what the compiler has effectively been doing all
- along anyway since at least 728e032a (2009-06-01).
-
-commit 4dce101c05515200a6cd337451da664c1978f115
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 10:04:35 2016 +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
-
- Sync autofoo
-
-commit 2b973d75fed73771664958ea6cb5b4b8fd7b1307
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 18 21:21:35 2016 +0900
-
- Add fig2dev as prerequisite for API HTML docs
-
- The target for sane-html depends on sane.dvi which requires fig2dev.
-
- Thanks to:
- - https://lists.debian.org/debian-user/2016/08/msg00484.html
- - http://superuser.com/questions/1101439/error-building-sane-backend-on-debian
-
-commit db22a031d130d533f5fd41710ddabdc61280d313
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 18 21:19:12 2016 +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
-
- canon_dr v56
-
- - add initial support for P-150M (and probably P-150)
-
-commit 39ceeae616a2e1638c2760d4364adcaa210a413b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 7 21:03:30 2016 +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
-
- Prefer *our* `include/` files
-
- This fixes discrepancies in build results for VPATH builds.
-
-commit 737977199ccd2419a51e120c472981b1a1263ab0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 5 23:40:39 2016 +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
-
- gphoto2: fix libgphoto2 logging integration
-
- In libgphoto2-2.5.0 (tagged for release on 2012-07-10) the GPLogFunc no
- longer takes a va_list. Instead, it passes a formatted message.
-
-commit 23f052113b5567033da0d9c4679451d97c484220
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:50:19 2016 +0900
-
- saned: fix [-Wunused-parameter] compiler warning
-
- The `__sane_unused__` attribute has been moved from sanei_backend.h to
- sanei.h to make it generally useful instead of limited to backends.
-
-commit 0d527f6659e06175d855aaa1a70fc2be52aad1a7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:13:16 2016 +0900
-
- Drop build environments
-
- Adding them did not quite have the effect I thought it would. I had
- thought it would allow for easy linking to build logs by environment
- name. Alas, no such luck.
-
- This reverts commits:
- - 9c44317289f1be0a72089ffd030be84caf75b58c
- - 6209fecf3a11e90e2e5efc057cf650f4ab792b50
-
-commit 74b4a34e82124621616c699ac0d5ba0d5e93b6a1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:12:14 2016 +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
-
- utsushi.desc: sync with upstream
-
-commit a65e74fe83ae96d5d00af6a05c751086cdae8d38
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 15:49:44 2016 +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
-
- magicolor: fix [-Werror] compiler warning
-
- This casts away const-ness in the hope that libsnmp doesn't change
- the session.peername.
-
-commit 31ac0db73672347732dc80cf8f2afe8e6f3d466b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 15:25:43 2016 +0900
-
- magicolor: fix [-Werror=pointer-sign] compiler warnings
-
- The libsnmp API requires a u_char *session.community :-(
-
-commit c32d48ef5fd4a47a93933e6ffba5c8a93d26e43f
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 14:18:48 2016 +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
-
- 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
-
- hp5400: fix [-Werror=overflow] compiler warning
-
- This explicitly implements what gcc and clang assign.
-
-commit 9c44317289f1be0a72089ffd030be84caf75b58c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 13:24:17 2016 +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
-
- 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
-
- 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
-
- Make referencing builds easier
-
-commit 235de98784897edb63d1ed1a32609b7786d799d0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 11:58:16 2016 +0900
-
- md5: fix [-Wpointer-arith] compiler warnings
-
- This reverts commits 9aecb00947e6bf7ef1cf412aff2ab41202617b30 and
- cdad5961f3888f0a3c0c525d0efab33174c11a24 which fixed a different
- compiler warning that seems to have disappeared (at least on the
- debian-8-full builds).
-
-commit bf53c714348dbf4654de887ae7e649fbad6b2288
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Aug 4 22:47:01 2016 +0900
-
- Sync with upstream
-
-commit ffd93a9fad10ced31de037f2c6180f328a38b547
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:43:06 2016 +0900
-
- Sync autofoo
-
-commit cb3090cb5472b63d5cdfb5110652f568bd9477ad
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:16:26 2016 +0900
-
- pixma: Fix include guard typo
-
- This was introduced in f573865 on 2008-10-18.
-
-commit 23cc2e1ba043ea8309923f5f1dcc5acaeee38a95
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:08:49 2016 +0900
-
- Fix include guard typo
-
- This seems to have been present since the beginning of sanei/sanei_scsi.c.
-
-commit 63b55e2b591ba977a285a4c91fde0118c25246e7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:05:03 2016 +0900
-
- Drop check for sys/bitypes.h
-
- It was obsoleted in 70f3fdf on 2009-02-26.
-
-commit d263f25911a0b359b7edec0faa9320d5d13928da
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 21:48:54 2016 +0900
-
- Fix typo
-
- Appears to have been introduced in 0330a4d on 2009-02-02. There is no
- evidence that a scdds.h file has ever existed.
-
-commit 970464f7332a1995bfd825de285425f0c957b1da
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 20:53:06 2016 +0900
-
- Drop unused CPP define
-
- The last reference to it was removed in 5dcf165 on 2007-06-21.
-
-commit 5389808029f0f81d204630f6e78abe11dfd61122
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Aug 2 21:56:09 2016 +0900
-
- Fix memory leak
-
-commit 1006445982877970d376c0f657e04fc1481e2459
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Aug 2 21:38:43 2016 +0900
-
- Use DIR_SEP instead of hard-coding ":"
-
- Fixes 313540
-
-commit b021c3bee8e9edc7854050a3975cef003586b2e5
-Author: Troy Rollo <troy@kawseq.com>
-Date: Sun Jul 31 22:47:25 2016 +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
-
- 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
-
- kvs40xx: fix [-Wunused-function] compiler warning
-
- This rather unceremoniously removed the function. Note that a near copy
- can be found in the kvs20xx backend code.
-
-commit effc26e4028f2d21a5bd9fec0458a78c0f6dc330
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 20:53:51 2016 +0900
-
- kvs20xx: fix [-Wunused-function] compiler warning
-
- This rather unceremoniously removed the function. Note that a near copy
- can be found in the kvs40xx backend code.
-
-commit 2d468852288b5d80e9e8b6831467081fe3ec874e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 17:32:21 2016 +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
-
- 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
-
- 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
-
- Use a single symbol to flag unused parameters
-
- The __sane_unused__ symbol was used slightly more often then UNUSEDARG
- and, more importantly, defined in include/sane/sanei_backend.h. That
- makes it readily available to virtually all backends.
-
-commit b73a6e5017f6d4d2d0ef7a61bf6e2113f848be94
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 16:14:20 2016 +0900
-
- niash: fix [-Wunused-parameter] compiler warning
-
- The attribute needs to go before the pointer designation for it to have
- any effect.
-
-commit 61719e0a131a6f0d4bf53aa98ecf510ce7081ca7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 16:11:39 2016 +0900
-
- dc240: fix [-Wunused-parameter] compiler warning
-
- The attribute needs to go before the pointer designation for it to have
- any effect.
-
-commit ef8e258165526175c9ac2d262448f16b551d19e9
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jul 14 21:12:38 2016 +0900
-
- Sync autofoo
-
-commit 57350969f6f46195c5fd5e255b3d1906df401d19
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jul 14 20:51:42 2016 +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
-
- doc/sane.tex: drop html.sty in favour of url.sty
-
- The latter is part of the core TeX Live distribution which is readily
- available on all major operating systems.
-
-commit bfd1626c4b119404429a847aaa92df77ca3fbb40
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:44:26 2016 +0900
-
- Sync autofoo
-
-commit 8598f81d0b9542b6f4928b8b870a26b50f440379
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:43:35 2016 +0900
-
- Fix figure orientation
-
-commit 00bc3e9b451f8dfb89553305cce89172be520bb1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:40:19 2016 +0900
-
- Generate EPS figures too
-
- It's good to know how this is done so that we can modify any original
- figure if need be.
-
-commit cc8f99b900d5ae44248677f6881f1b74d7885bfb
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:24:29 2016 +0900
-
- Generate PDF figures explicitly with fig2dev
-
- This utility has less dependencies and supports conversion to a pile of
- other formats that may come in handy as well.
-
- Clean up of generated PDF figures has been moved to the clean target as
- well.
-
-commit d7e1995d001b0d16b9920e751be923f6a8393bf1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 22:37:44 2016 +0900
-
- doc/sane.tex: Replace epsfig with graphicx
-
- The graphicx package allows for file specification without a hardcoded
- extension. This provides more freedom in chosing how to prepare images
- in *.eps and *.pdf formats.
-
- Moreover, epsfig is considered mostly obsolete in the TeX community and
- graphicx is the "current 'preferred' solution" to embed figures.
- See https://www.ctan.org/pkg/epsfig.
-
-commit 0aab12b934a9f9620fb1236e13dd2b71a7426000
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 11 20:41:54 2016 +0900
-
- Bump standard minor version
-
- This is to acknowledge the SANE_STATUS_GOOD fixes in net.tex that were
- committed in 4daf488 and 1100883.
-
-commit 1ed3b9fa86e6bc6875a72a9b347164a5879ffe8b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 11 20:37:08 2016 +0900
-
- Reclassify doc/html.sty
-
- It is a package used by doc/sane.tex.
-
-commit 2481e1e98b02e927cdb9c2e6e404252ef9e49041
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 15:43:42 2016 +0900
-
- Sync autofoo
-
-commit fa41b18001f74e8941813709f15a15cc9ea299e1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 20:35:04 2016 +0900
-
- Refactor API spec conversion support
-
- Unless explicitly asked to do without, all formats for which required
- tools are found will be built. Checks cover PostScript, PDF and HTML.
-
- All logic and files involved are now collected in a single "section"
- and grouped in such a way that their function should be clearer.
-
- fixup! Refactor API spec conversion support
-
-commit d7c69d141ffb4f456d659b443aa4c3d3be82793e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 19:40:04 2016 +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
-
- Refactor TEXINPUTS handling
-
-commit f322cbc7f950b087e969ac115a5b4e14735881e4
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 15:41:08 2016 +0900
-
- Add support for PDF API spec output
-
- Note that pdflatex internally uses epstopdf which in turn requires a
- working ghostscript.
-
-commit 5a73fb24d1e7a5dcdd287ce7654050b1703cc9c6
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 14:48:43 2016 +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
-
- 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
-
- Add GitLab CI musl build job
-
-commit be7af6835741c18ea93babd421c083c377b1f88d
-Author: Ruslan Nabioullin <rnabioullin@gmail.com>
-Date: Sat Oct 29 20:27:47 2011 -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
-
- check-po.awk: fix awk invocation
-
- The awk utility has been moved to /usr/bin and the script relies on
- features present in gawk but not in mawk.
-
-commit ddbdfd6206e30e513509720dd5137c26c9efc248
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 3 21:11:04 2016 +0900
-
- Fix configure time test
-
-commit c17821e3609080309bcb8a3173cb071e1493a62c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jul 2 19:23:01 2016 +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
-
- Sync autofoo
-
-commit a9c813944e9aa0ceb6c153d06dff286ba855b90e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Jul 1 23:37:49 2016 +0900
-
- Make libusb-1.0 the default for USB support
-
- When libusb-1.0 is not found, libusb-0.1 will be tried. On BeOS and
- OS2, nothing should have changed in terms of detection of USB support.
-
- On all systems the --enable-libusb* flags are now ignored. Instead, the
- --with-usb and --without-usb flags now control support. When neither is
- given USB support will be enable if possible and disabled otherwise. If
- --with-usb is requested but not possible, ./configure will fail. There
- is no support to prefer libusb-0.1 over libusb-1.0.
-
-commit 418fbb987d731ed2468f48a6fb162f47ea7da55e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:50:33 2016 +0900
-
- Sync autofoo, once again ...
-
-commit 602182931dceeedddcc6be3b144cbc1423bd9b4a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:49:25 2016 +0900
-
- Improve test shell builtin invocation portability
-
- Looks like I missed this when committing 309a8140.
-
-commit 828cd013e9a4411158af8816a63b133b6da19ed5
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:38:04 2016 +0900
-
- Compile getopt replacement functions only if needed
-
- This ought to get rid of the last empty compilation unit warnings. This
- merges libfelib.la with liblib.la. The former was always used together
- with the latter. The latter was only ever used without the former when
- linking backends and tools.
-
- Tools might want to use the getopt functions, backends might just want
- to use MD5.
-
-commit 89dc05006ec93e8fd8a103504701db720814669a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:21:10 2016 +0900
-
- Sync autofoo
-
- Looks like the sorting of the DIST_COMMON file list is not stable.
-
-commit a298bfe5a8c65236ac13130e891a93bf3cf58976
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:20:51 2016 +0900
-
- Fix AS_IF condition
-
-commit f03f1f66d4a7704c20d221897665509d7f1a626a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:15:06 2016 +0900
-
- Sync autofoo files
-
-commit 1c946f7c194869966f6d3af9df499184d3035c20
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 28 22:42:09 2016 +0900
-
- Compile replacement functions only if needed
-
- This ought to get rid of most empty compilation warnings.
-
-commit 0c2b86ac0b56ee7cb8b962102c54855f05887b08
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:33:28 2016 +0900
-
- Fix distcheck issues in tools/
-
- Automake is smart enough these days to compile the *.lo files that are
- used when linking.
-
- The umax_pp_CPPFLAGS are useless because backend/umax_pp_low.c undefines
- BACKEND_NAME unconditionally and sets it to what was passed here ;-)
-
-commit 81f9557966ad335a76deff57a112607d9813ba7a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:08:20 2016 +0900
-
- Clean up .gitignore file content
-
- Removes empty lines and duplicates (note that .gitignore patterns are
- recursive unless anchored with a leading /).
-
-commit 61f3fec68e14944be7ecf219ec604e599141cbdf
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:05:50 2016 +0900
-
- Remove references to SANE CVS
-
- The references in in-file changelogs and the ChangeLog files have not
- been modified. Only those references that refer to current practices
- or locations.
-
-commit c23791cbd71d58b2627cfc65bbf2cb20aeb51bba
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 21:51:43 2016 +0900
-
- Sync AUTHORS content with current status
-
- We've been using git for a while ;-). Also updates the write access
- info and fixes encoding issues.
-
-commit cb4924f210bf758558b583220a14ed5a62f178dc
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:22:35 2016 +0900
-
- Stop distclean from removing files willy-nilly
-
- The distclean target should only remove files that make creates. If
- there are any that need taking care of, they should be added in on a
- per file basis in the Makefile.am that creates it.
-
-commit 0065aaa1c8cb823d20b1e0ff32b3f6197e73db3f
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:11:42 2016 +0900
-
- Remove overly zealous ignore patterns
-
- Text editor backup and temporary files like *~ are a per developer
- issue, add them to your global .gitignore. Other dot-files should
- be ignored on a case-by-case basis.
-
-commit 8274a52eec3c20becf9901acaab4837b6b61c2f7
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:07:26 2016 +0900
-
- Sort .gitignore files
-
-commit b25ef62c2bb163fffea56000ef25544a236d2096
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:05:12 2016 +0900
-
- Fix sorting of ignore files
-
- We haven't been using CVS since ... 2009-05-04 :-|
-
-commit 0bc7b6aed7e3ac8ee78190f0e795ce9c62c3f36e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 09:16:54 2016 +0900
-
- Sync *.po files with previous changes
-
- This changes the file/line references in all files (and picks up any
- new messages as a side effect).
-
-commit bdade6bb07a0ec27e3930c0b3b86c28a5c2a5bd9
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 09:15:24 2016 +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
-
- 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
-
- Switch to using the gettext build machinery
-
- This adds two automatically maintained English variants that handle
- quote substitution in onrder to provide smart quotes.
-
-commit 0286bf46fc2992dfd2e9539fb939c243db13e91f
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 08:30:45 2016 +0900
-
- Add gettext build machinery files for I18N/L10N support
-
- These are courtesy of autopoint and target gettext-0.18.1 because that
- is the version in Debian 7 (which is what Alioth is running). The one
- warning this produces on autoreconf is fixed in gettext-0.18.2, BTW.
-
-commit eecee6d1014537cabe427d44168fce9ac9894301
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jun 25 15:23:05 2016 +0900
-
- Fix VPATH build issue
-
- The source *.po files weren't found when you configured outside of the
- top source directory.
-
-commit 00984cd1119bb9bb5b794bfc0f1ef77369978d68
-Author: Yurii Kolesnykov <yurikoles@gmail.com>
-Date: Sat Jun 25 03:34:12 2016 +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
-
- epsonds: remove unused var
-
-commit 1dbabdce5d34e686608bb997245c49a823e19fb5
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Jun 21 00:49:08 2016 +0200
-
- epsonds: fix compilation
-
-commit 9b389a61c5e698e8bffb186bdbc005739128b427
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Jun 21 00:43:39 2016 +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
-
- 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
-
- 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
-
- Silence overly verbose targets
-
- This only takes effect with silent rules enabled.
-
-commit 43cdc1056af899520797b09f3f78ba64703ed74d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 15 20:18:25 2016 +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
-
- GitLab-CI: fix configure option
-
-commit f75e271853f40c6cb00ce59cbb4e9d62d083a1b2
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 21:24:53 2016 +0900
-
- Tweak GitLab CI builds
-
- The idea is to build as much as possible for the *-full flavour build,
- make compiler warnings stand out and muddle on after errors so that we
- get all the problems in a single log.
-
-commit ef7deff36c759efa8d371251febef6d37d4eb94b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 21:20:48 2016 +0900
-
- Add missing autofoo file
-
- This should have gone in with d853463e.
-
-commit d853463ef1b97082d657a0be32d1b27a04940ea2
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 06:30:48 2016 +0900
-
- Sync derived files
-
- This was done with
-
- AUTOMAKE="automake --add-missing --copy" autoreconf --force
-
- on Debian GNU/Linux 8.5.
-
-commit 17d78ab7c326069c3a596f17ded6418ef42930bc
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Feb 12 21:09:32 2016 +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
-
- Fix libtoolize warning
-
-commit 7675cb7c3eb5b6e97fb87adc464b6bcc67cfd7dd
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Feb 11 17:43:14 2016 +0900
-
- Drop Makefile.in from EXTRA_DIST
-
- Automake is smart enough to include this on its own.
-
-commit 7bfa818c57485310994650528124a7036894eb36
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jan 14 21:22:00 2016 +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
-
- 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
-
- 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
-
- Use autoconf provided --docdir
-
-commit f1f4180e5b6f71bf3a674bbfcbf7932b401d7a96
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 18:24:20 2016 +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
-
- 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
-
- 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
-
- Fix variable name typo
-
-commit 79c623628a28b6c28321cad6518bf98cf7a705a4
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:48:03 2016 +0900
-
- Fix new automake warnings
-
-commit 97fed76717367289a8e160dab4341d79586c1079
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:22:31 2016 +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
-
- Remove commented out code
-
-commit 4894b1513d829957e109e5c49b812dc688fe78b3
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:11:19 2016 +0900
-
- Drop a pile of unnecessary macro invocations
-
- These are already taken care of by other macros.
-
-commit ae89c8f98362a4e50d4b1a0ce8f3586b77a81989
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 15:59:35 2016 +0900
-
- Update to automake-1.11.6
-
- This turns on additional warnings and adds support for silent make
- rules (so compiler warning really stand out ;-).
-
-commit 87e12bbf2e4312bf0bd18656afe579919c8788e1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 13 22:24:21 2016 +0900
-
- Sync derived files with autoreconf --force
-
- For the record, this was done on Debian GNU/Linux 8.5.
-
-commit 309a8140e7285f87d5fc5ee24b942f1713e80be8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 28 21:59:42 2015 +0900
-
- Improve test shell builtin invocation portability
-
- POSIX 2008 obsoletes the -a and -o operands (according to the autoconf
- documentation).
-
-commit d9e2f441139c0514c3d388976d1f8fc78a04de95
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 28 20:59:22 2015 +0900
-
- Double quote code passed to AC_LANG_PROGRAM
-
- Upon re-reading the autoconf documentation, this seemed the right thing
- to do. The AC_LANG_PROGRAM macro does not quote its arguments so any
- occurence of [ and ] will get stripped out if not double quoted.
-
- Current code snippets passed do not use them but it is better to use a
- consistent quoting approach for such snippets. In other places in the
- configure.ac file double quoting is used already.
-
-commit d3d5dc3da04cce842f7fa8d941676f2f5abc3bbd
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Oct 22 22:18:19 2015 +0900
-
- Update to autoconf-2.69
-
- This gets rid of a number of obsoleted macros and replaces RETSIGTYPE
- with a void literal which can be assumed for C89 and later.
-
- This changeset was prepared using autoupdate and modified to get rid of
- whitespace and doubled [] changes. Changes to acinclude.m4 were added
- by hand.
-
-commit 2d6fad58b4c61d59bec3879dab9ccf0c1b88dd11
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Oct 22 20:15:45 2015 +0900
-
- Respect GNU Standards user variables
-
- Several variables are considered "user variables" by the GNU Standards.
- This means that the user can pass these to their ./configure and make
- invocations as they see fit. These variables include CPPFLAGS, CFLAGS
- and LDFLAGS.
-
- This changeset pushes our use of these variables to the automake shadow
- variables, AM_CPPFLAGS, AM_CFLAGS and AM_LDFLAGS, so that user variables
- will no longer clobber flags required in order to build.
-
-commit 7a2b112d20e08337528128745bf7cc1d6096a1d8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 21 22:33:53 2015 +0900
-
- Prefer make variables over literal substitutions
-
- The AC_SUBST and PKG_CHECK_MODULE invocations in configure.ac as well as
- acinclude.m4 are sufficient to trigger automake to insert initialization
- logic for the variables these introduce. There is no need to do this by
- hand. Wherever these values are needed, it is better to use a variable.
- This allows for one-off overrides on the make command-line (without the
- need to run ./configure) for one thing.
-
-commit 2745528b60617d737a7a597c4ee5397359a6ddfd
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:52:47 2015 +0900
-
- Fix non-POSIX automake file variable warning
-
- This addresses warnings about the use of the $(wildcard) function.
- It has been replaced by a plain shell glob. There is one case where
- this will result in an error, when there are no matches, but that is
- when the targets that use it make no sense. It is probably good to
- get an error in that case.
-
-commit d81836bd2332e42136a15a72961c0b9295d94b58
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:04:53 2015 +0900
-
- Add automake subdir-objects option
-
- This addresses autoreconf output such as:
-
- tools/Makefile.am:37: warning: source file '../backend/sane_strstatus.c' is in a subdirectory,
- tools/Makefile.am:37: but option 'subdir-objects' is disabled
-
- The option was introduced in automake version 1.9 and is slated for
- unconditional activation with automake-2.0.
-
-commit d38a098ec6fce0aa18dd757677c5a07ff1a44163
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 20:20:56 2015 +0900
-
- Rename configure.in to configure.ac
-
- This name has been preferred since autoconf-2.52 and automake-1.5.
- Both were released in the summer of 2001. Support for configure.in
- is slated for removal in automake-2.0.
-
- The configure.ac file itself requires autoconf-2.54 or later (and
- does not care about the automake version).
-
-commit c9027378a12a6f67b22ee5fe203df1739486e3ad
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 13 20:35:34 2016 +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
-
- 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
-
- fujitsu backend v131
-
- - hide compression-arg option when jpeg disabled
- - add Send/SC/GHS macros for recent scanners
- - add initial support for fi-74x0
- - add initial support for fi-7030
- - set has_MS_lamp=0 for fi-71x0
- - add I18N macros to all option titles and descriptions
- - add usb ids for many newer scanners
-
-commit ec8bf64396b394c4d483b811f9948871f12882b4
-Merge: 1d2a40e 1e01365
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat May 21 22:06:57 2016 +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
-
- pieusb: mkostemp -> mkstemp
-
-commit 926bfade544de4a4fd5f1a8082b85a97e2443770
-Author: Alex Belkin <abc@telekom.ru>
-Date: Sat May 7 22:33:03 2016 +0300
-
- Color scanning for Samsung models, which support JPEG Lossy compression.
-
- Patch is submitted by Laxmeesh Onkar Markod <m.laxmeesh@samsung.com>
-
- Patch to code is applied almost verbatim, except, insignificant
- formatting fixes and making new functions static.
-
- Also, new USB ids added and scanner support is changed as reported.
-
-commit 1d2a40ec96aea0ba183415efea570301159d4159
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat Apr 30 15:32:55 2016 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- canon_dr backend v55
-
- fixed-width scanners were calculating left-side offset incorrectly in color
- initial support for DR-F120
- rename all DUPLEX_INTERLACE_* to indicate start and end of line
-
-commit 41a416e4afcf6cada69193dc408ef184d0e5f678
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Mon Mar 21 18:59:47 2016 +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
-
- 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
-
- 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
-
- 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
-
- pixma_imageclass: software lineart for all imageCLASS, imageRUNNER, i-SENSYS and laserBase scanners,
- supported by this sub-backend
-
- imageCLASS scanners:
- D420, D480, D530, MF810/820, MF3240, MF4010, MF4150, MF4270, MF4320, MF4360,
- MF4410, MF4570dw, MF4690, MF5630, MF6500, MF8030, MF8170c
-
- i-SENSYS scanners:
- MF210, MF220, MF3010, MF4500, MF4700, MF4800, MF5880dn, MF5900, MF6100,
- MF6680dn, MF8200C, MF8300, MF8500C
-
- imageRUNNER scanners:
- iR1133
-
- laserBase scanners:
- MF5650
-
-commit 38d6f1ba6dd48d8139b3ef504b4c7920d0e4736b
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Mar 4 13:08:31 2016 +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
-
- raise build number
-
-commit 8ad2c60d82797cc3495f63f8230bdf6f999067a1
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:58:55 2016 +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
-
- 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
-
- use rewind instead of slow_back_home
-
- - if required by flags, do a rewind instead a slow_back_home that pollutes
- shading settings
-
-commit 3dee0f8d48e26e3aceb0243d03199af5870f30e2
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:31:01 2016 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- pixma: new global parameter to set duration of receive timeout loop
-
- The default value for receive timeout loop duration has not been changed.
- The loop still takes 8 seconds if a timeout occurs.
-
-commit 9897357727b65d13167b89cd1d1fe816f4d72563
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 21:26:27 2016 +0100
-
- enable pixel averaging whne bleow 600 for all models
-
-commit d784dec60b096b8e8fe18f5f7b5c1921249d6ed2
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 12:26:12 2016 +0100
-
- motor table fixes
-
- - add target speed for 600 dpi gray
- - add slope table for 4800/2400 dpi, gray and color
-
-commit 759729331cc60a86d884518064b2dc92736f7abd
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 12:18:56 2016 +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
-
- fix expiration time option reading
-
-commit 61d6f5c2140e6e659db20916937cc95c5c7256f3
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 25 21:37:55 2016 +0100
-
- mode set fixes
-
-commit fa2c9dc9b216fa7b7f1baf013b7cbe8eb3df8597
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 25 21:37:00 2016 +0100
-
- fix GPIO during scan
-
-commit c5117ed0f1b522eab10fd2248f140b2acad2a708
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 21:43:29 2016 +0100
-
- doc and version update
-
-commit 747275a00f03e4ab643461448985ce20879e1d12
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 21:15:26 2016 +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
-
- 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
-
- make 600 dpi mode work for LiDE 120
-
- - add override for registers 0x16 and 0x70 since 120's sensor
- is set differently according to resolution
-
-commit 15e203de89abe53f732aa431548645c5c9838237
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 21:11:00 2016 -0500
-
- Various copyright comment updates
-
-commit 1465543cc0dd9e4fb4b3706ca6793e90a35ce389
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 21:07:06 2016 -0500
-
- fujitsu backend v130
-
- run init_model before init_ms so some scanners can override
- set all M309x and M409x scanners s->broken_diag_serial = 1
-
-commit 963de58dfc4498693aeeec35a9ff23363af6ac67
-Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 20:42:52 2016 -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
-
- Support SANE_USB_WORKAROUND env var
-
- Here, we add a new env var (SANE_USB_WORKAROUND) to sanei_usb.c.
- This allows end users to conditionally enable the workaround added
- in commit 014b45d920f1fb630e1a31bb01f1da02ea2a6a87. The default is
- to not enable the workaround, because more recent Linux kernels no
- longer seem to need it. Some users have even reported failure with
- the workaround enabled.
-
-commit 219198838be069d7e3d48b53762727f1bbfb93e5
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Feb 23 21:39:22 2016 +0100
-
- LiDE 120 working [75-300] dpi
-
- - fix sensor pixel number
- - enable calibration
- - default to 16 pixel DUMMY
-
-commit 4fd1d10228047a740f28b1cd25579b7c40c93b1f
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Mon Feb 22 21:45:02 2016 +0100
-
- tune scanarea geometry
-
-commit a74ebe551daf8750821b1ab57324e54141a84461
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 21 22:14:48 2016 +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
-
- 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
-
- doxygne fix
-
-commit 2e1102dc3ab1ee4d7bfec3e7cbf6e3a1527f5264
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 18 21:41:38 2016 +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
-
- use dedicated LiDE120 GPIO
-
-commit 387cea7d6ce75af9441c5841221267bef7b7924c
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 17 21:04:55 2016 +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
-
- latin1 -> utf8
-
-commit d74d3bcd887d2a3d59ee96e04eb68f15c0a3b882
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Feb 18 22:34:16 2016 +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
-
- pixma: fix scanner names
-
-commit 235dc80b5f3faaf195eef1e177a1f38284ca3bee
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:10:44 2016 +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
-
- 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
-
- 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
-
- 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
-
- pixma_imageclass: fix for failed first usb command (timeout)
-
- Sometimes the first usb command to the scanner fails after a previous scan.
- A workaround was to reconnect the usb cable. This fix simply resends the
- failed command.
-
-commit 8f1202d6537568e56b4886ebe5d41d0210ffacd9
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:55:49 2016 +0100
-
- pixma_imageclass: fixes for MF6100 Series
-
- - special ADF settings
- - the MF6100 Series is a Generation 2+ scanner, but uses the old read image command
-
-commit 02855737ee84e3c72bceff9ba06fddc5a5d99860
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:32:00 2016 +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
-
- 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
-
- 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
-
- Move #include <pthread.h> to sanei_thread.h
-
- The sanei header file may need pthread_t. If it does, make sure it
- is available.
-
-commit af35e9ba749cce6e735d685ec4495e8c8d85778c
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Feb 11 12:06:34 2016 +0100
-
- pixma: Canon Pixma MG3600 Series is working
-
- Reported by Rajib Bandopadhyay
-
-commit 7bd773ade5ff1bc4170d2a1773428efe759aaa75
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Feb 9 09:55:26 2016 +0100
-
- LiDE 120 support wip
-
-commit 056f590f2d147099554d97a89dd5e0ddfa8d6dda
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Sat Jan 23 00:55:31 2016 +0100
-
- epsonds: fixed comment
-
-commit cf2dfea0008d16cb70f8baeaae5a414e9bdafda3
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Fri Jan 22 20:44:36 2016 +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
-
- 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
-
- 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
-
- 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
-
- pixma: Canon PIXMA MG5700 Series is working
-
- Reported by Andrew Reginato, bug #315244
-
-commit 0f47b47b759908e7b11800404d269087d60d87ad
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 17:32:36 2016 +0100
-
- pixma_mp[150|810]: disable send_time()
-
- The function send_time() makes trouble with a lot of scanners.
- We send a warning to the debug output instead of sending the time.
-
- fix for [#315248] Canon MP250 with pixma backend is not working
-
-commit b040b150a08b0b5394ad3bc91a45966d97f58152
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 16:54:30 2016 +0100
-
- pixma: fix for [#315244] Add support for Canon PIXMA MG5700, MG6800, MG6900 and MG7700
-
- These scanners are new and need further testing!
-
-commit 81c429082c3c139f8616de4a73733953cd5aa33f
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 16:43:46 2016 +0100
-
- pixma: update copyright
-
-commit 9aecb00947e6bf7ef1cf412aff2ab41202617b30
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Jan 8 21:26:31 2016 +0900
-
- md5: Avoid the need for casting
-
- This also modifies the code slightly to follow the original array
- access more closely.
-
-commit cdad5961f3888f0a3c0c525d0efab33174c11a24
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 01:23:51 2015 +0100
-
- Introduce md5_set_uint32
-
- This fixes the following GCC warning:
-
- warning: dereferencing type-punned pointer will break strict-aliasing rules
-
-commit f3471c2ca6ea22846dd6619aff7913610722a6c0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 17:50:34 2016 +0900
-
- saned: Use system header IPv6 test macros if available
-
- This should fix [-Wstrict-aliasing] compiler warnings on those systems
- where the IN6_IS_ADDR_LOOPBACK and IN6_IS_ADDR_V4MAPPED macros exist.
- POSIX.1-2001 states that they shall be defined in netinit/in.h so most
- systems will probably have them.
-
-commit 0de5416a9bafa1ade52722c509817276bbf87d8a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 16:06:34 2016 +0900
-
- umax_pp: fix memory leak
-
- Found courtesy of [-Wunused-but-set-variable] compiler warning.
-
-commit 9d78ace3b7e60afa2b3cb829ac23e5f8b4ccdc07
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 16:06:00 2016 +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
-
- 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
-
- 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
-
- kodakaio: fix [-Wformat=] compiler warnings
-
- This uses the ANSI C approach that is used in a lot of existing code
- rather than what ISO C99 allows for consistency.
-
-commit cadb4b0fff00540159625320416e5601c4704627
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:45:56 2015 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- microtek2: fix another [-Wunused-but-set-variable] compiler warning
-
- This allows for the fact that the backend may be compiled with and
- without support for authorization.
-
-commit c1458770955b5476eedc89755bb424744b05b055
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:11:31 2015 +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
-
- magicolor: fix [-Wunused-function] compiler warning
-
- This function is only used when SNMP support is activated.
-
-commit 292dd42bb6585e2801623d1f33497581626d9d72
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:50:42 2015 +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
-
- 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
-
- lexmark: fix [-Wmaybe-uninitialized] compiler warning
-
- This adds a default handler to switch statement so low_get_start_loc()
- bails before the start_600 variable is used.
-
-commit 068c3bb75d3972dd2218caa84a6de761c5ca0db8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:28:34 2015 +0900
-
- kodakaio: fix [-Wunused-function] compiler warning
-
- The function is only used when Avahi support is enabled and has been
- put in a suitable compilation scope.
-
-commit 610dc9ceb4d9eb061209d935e2b1966dfca5a74c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:38:08 2015 +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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- avision: fix [-Wunused-but-set-variable] compiler warning
-
- The variable seems to have been superseded by conv_out_size in the
- else branch of set_calib_data().
-
-commit 5b8fdd317f1bb4076b8fe661db78c230af21004b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:27:20 2015 +0900
-
- artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
-
- This leaves the sane_close() implementation just as broken as it has
- been from the initial commit sometime in 2002.
-
-commit ec1936713e67b192d057b2f552a25622f88844a1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:26:21 2015 +0900
-
- artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
-
- The variable was only used to silence a [-Wunused-parameter] warning.
-
-commit 5b21a24312f2cf2ced5d5c70b0f7d2c1f0c58f35
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 19:57:13 2015 +0900
-
- artec: fix [-Wunused-but-set-variable] compiler warning
-
- The variable is used to assign return values but is not referenced by
- anything itself.
-
-commit 57ae115eafa5b52b84b8e2878982cdad7c1a9f13
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:12:41 2015 +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
-
- sanei_usb: const_cast data buffer
-
- The libusb_bulk_transfer() API caters to both reads and writes and
- as a result of that will not take a const pointer.
-
-commit be084e0d7bb7933e1826e6e48b42f43bc3cb077a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:05:17 2015 +0900
-
- sanei_usb: Move variable declarations to scope of usage
-
- Fixes an [-Wunused-variable] when compiling without libusb.
-
-commit 0d7882e34b5f5625261258a3a341a58a04beb304
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 16:51:44 2015 +0900
-
- Change compile time warning policy
-
- The -Wall flag is now always enabled (when using gcc). The -Wextra
- flag (previously known as -W) and -pedantic flags are, by default,
- enabled during development but disabled for releases.
-
- All other flags have been removed.
-
-commit 5136e664b8608604f54a2cc1d466019922b311e6
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Dec 20 21:58:45 2015 +0900
-
- Document ChangeLog policy change
-
-commit 674b75fc913187415b4f151a52e4bc7004c5d5b0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Dec 20 17:33:55 2015 +0900
-
- Improve readability of condition
-
- This also fixes the following GCC warning:
-
- warning: logical not is only applied to the left hand side of comparison
-
-commit 58052a7ce6b205e25a2fc85f31158595cad00258
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 21:33:48 2015 +0100
-
- Change GCC mode from ISO C90 to ISO C99
-
- Add GCC flag "-std=c99". Also remove GCC flag "-ansi" which is an
- alias for "-std=c90" and would make the flag "-std=c99" ineffective.
- This fixes all occurrences of the following GCC warning:
-
- warning: ISO C90 does not support '__func__' predefined identifier
-
-commit baec5e039504de390cae41557b0b8323343721c3
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 10:48:59 2015 +0100
-
- Use consistently __func__ instead of __FUNCTION__
-
- Some parts of SANE used __FUNCTION__ while other parts used __func__.
- Now, __func__ is used consistently throughout the SANE sources. This
- fixes all occurrences of the following GCC warning:
-
- warning: ISO C does not support '__FUNCTION__' predefined identifier
-
-commit 93298674d02b1127efdf4e726e92e797a0081c9e
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 20:44:14 2015 +0100
-
- Merge all compatibility macros around __func__ and __FUNCTION__
-
- Various parts of SANE introduced their own compatibility macros for
- old compilers that don't support __func__. Most of these definitions
- are identical or have minor differences. This patch replaces them
- with a single instance in the central header file for backends.
-
-commit 7c8c8e29beed2c4e6f96db08031c12c9001ca784
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 03:32:51 2015 +0100
-
- Remove dead code due to unused variables
-
- This fixes some occurrences of the following GCC warning:
-
- warning: variable '...' set but not used
-
-commit aba87a4582d594cf953b4bda5b5d42e37e13f21c
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 01:30:30 2015 +0100
-
- Mark internal function toupper_ascii as static
-
- This fixes the following GCC warning:
-
- warning: no previous prototype for 'toupper_ascii'
-
-commit 13b6faee2a0696eb02a61f22121b7f4854987f2e
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 03:03:06 2015 +0100
-
- Fix interface of helper function write_many
-
- This fixes two occurrences of the following GCC warning:
-
- warning: cast discards 'const' qualifier from pointer target type
-
-commit badd7025b21b2207cfb95001aeb324597e24b301
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 02:37:10 2015 +0100
-
- Bugfix: On error, return the actual error code in sanei_magic_rotate
-
- Up to now, on failure the sanei_magic_rotate function returned a
- success status. This fixes the following GCC warning:
-
- warning: variable 'ret' set but not used
-
-commit 6aced758f4a95fd858906f3e898ee967a9718641
-Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Nov 29 16:02:01 2015 +0100
-
- Fix typos in comments
-
- While reading through the SANE sources I noticed some annoying typos
- in the comments. This patch is my contribution to make the SANE
- sources slightly more pleasant to read.
-
-commit 6d8b8d5aa6e8da2b24e1caa42b9ea75e9624b45d
-Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Dec 15 16:17:53 2015 +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
-
- Add note about changelogs
-
-commit 06d876f74e5d07cb82d02ca1222926a61a3e458b
-Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Dec 15 06:05:07 2015 +0100
-
- fix for #315050
-
- - handle case where linesel is rounded to 0 when scan y resolution is
- below minimal scan resolution but higher than half of the minimum
-
-commit 753d123f36d08cdb8047adac7c89a9fe015c4b25
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Nov 28 08:34:58 2015 -0500
-
- canon_dr desc update
-
- add note about mode switch on P-208
-
-commit f1593204c72124f3077b0b29f3c128d30be415b5
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 27 21:26:46 2015 +0900
-
- Drop execute permission
-
- Source code, description files and configuration templates should never
- need to be executed.
-
-commit e094c5b43b6d8d8bec84bd5b1ab2c6009f38e14b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 13 22:06:30 2015 +0900
-
- Invert sense of sanei_thread validity check
-
- Double negatives suck.
-
-commit fe12d31e6873f5c3de330f1de4c4fbc851df1e9f
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 13 21:41:56 2015 +0900
-
- Fix SANE_Pid related -Wsign-compare warnings
-
- This may fix threading related issues on WIN32 platforms, BTW.
-
-commit ed59056d40a143b3cf9243ea0068448a88ce3108
-Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Nov 23 21:26:09 2015 -0500
-
- canon_dr backend v54
-
- - br_x and br_y locked to page_width/height until changed
-
-commit d0ea697ab83360bf0ccddcd02565f85ea0f96b50
-Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Nov 23 21:08:30 2015 -0500
-
- fujitsu backend v129
-
- - br_x and br_y locked to page_width/height until changed
- - add USB ID's for fi-6xxxLA and fi-6xxxZLA scanners
- - add USB ID's for unsupported SP11xx scanners (genesys based)
-
-commit e6a249e0424f6854b7ed12f8272633a0edecfa90
-Author: m. allan noah <kitno455@gmail.com>
-Date: Thu Nov 12 21:10:49 2015 -0500
-
- revert mustek_usb2 backend upgrade
-
- Instead of 100+ revert commits, I've lumped everything into a
- single commit. This removes all of dedf0ac30 through db7f038f1,
- plus the parts of 497d59180 which were specific to mustek_usb2
-
-commit 21c5f4d814f93a363377798635c7f1cbc1c79342
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:38:56 2015 +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
-
- Remove unnecessary cast
-
-commit fff1c5962a94ab410dba4fed541312554c8edf8d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:35:34 2015 +0900
-
- Fix "discards 'const' qualifier from pointer target type" warnings
-
- The line variable is not (and cannot be) declared 'const'. The string
- variable points to a location in line, hence it is safe to cast away
- 'const'ness of the sanei_config_skip_whitespace() return value.
-
-commit 38153b33e1657137e6956e63a9fcb76d665f86f2
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:33:34 2015 +0900
-
- Fix "discards 'const' qualifier from pointer target type" warning
-
- The device2 variable is not modified so let's make that clear.
-
-commit d2576bbb948dd9d8e06f66dc4cede774c5518751
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:30:10 2015 +0900
-
- Fix "discards 'const' qualifier from pointer target type" warnings
-
- The cs3_xfree() functions is really just a checked call to free() so its
- signature has been changed to match that. The warnings that causes have
- been fixed in the same way and on the same grounds as the previous commit.
-
-commit e65fd1b4cb5e9463d16a6fb4cd8eeb129ba58e63
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:28:17 2015 +0900
-
- Fix "discards 'const' qualifier from pointer target type" warnings
-
- The resources pointed to have been acquired by the backend. It is safe
- to cast away the 'const' qualifier when releasing these resources.
-
-commit 497d59180649a831691220aefcc8ec81d5f90960
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Nov 8 17:17:37 2015 -0500
-
- automake for recent changes
-
- updates to mustek_usb2, canon_dr and umax_pp require automake run
-
-commit db7f038f108ca12966b947dd80f3772e2133495e
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jul 14 23:15:02 2012 +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
-
- 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
-
- properly add new handle to linked list
-
-commit 3b48a6d10560e855cef815ca5c1ecbb50fd02d00
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jun 30 00:04:06 2012 +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
-
- 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
-
- 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
-
- Simplify SetMotorStepTable*.
-
-commit 27b636d294876c7aac0b53922bacac627ba873c9
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 19:58:09 2011 +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
-
- 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
-
- Detect USB controller type.
-
-commit d8a203a69373bb6f207de9ddc9c30a60da4a2cc9
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 14:35:06 2011 +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
-
- Fix some misuse of SENSOR_DPI constant.
-
-commit 30e39071560412b362e03a105e20996093074d81
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 8 16:44:15 2011 +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
-
- 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
-
- Simplify SimpleMotorMove.
-
-commit 0a1125895b3f1ed0058729fcc29d6858ac6d5e56
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat May 7 13:58:24 2011 +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
-
- Remove restriction to 8-bit color in negative mode.
-
- The only reason for that restriction was that the histogram stretching code, which has been removed earlier, could only handle 8-bit color.
-
-commit 4ced7a900a6463c460121eaed7583f4249ef74c2
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat May 7 12:45:50 2011 +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
-
- 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
-
- Register related fixes.
-
-commit 5d556cd5e65ba9d1df30e3a3beb0322549d040ff
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Apr 25 19:26:32 2011 +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
-
- Fix bug in device list handling.
-
-commit 877f250b5c32f8403ab321d14fd76afd7e2c2d1d
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 20:54:19 2011 +0200
-
- Resolve issue with debug logging.
-
-commit 272c1d6fdeb8af9d6d4b61f85b4a77ca2ebbb645
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 20:30:19 2011 +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
-
- Introduce support for multiple scanners.
-
- Keep all state local and ensure that all resources are freed by sane_exit. Ensure that each function returns only those error codes that are valid according to the SANE standard.
-
-commit 6865eaf6edef0cc5ea30bcc0d72b52189132f4d6
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 14:49:06 2011 +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
-
- Minor fixes to image processing.
-
-commit bc203e8aa125f276ce84498091185482a22d3527
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 13:55:35 2011 +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
-
- Use standard macros for byte swapping.
-
-commit 281f53aa1829a61286232efed7a9d6253cec32d4
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 00:39:59 2011 +0200
-
- Remaining endian safety fixes.
-
-commit 80b7249ebf9c57b60cbc0a25288cc04ba2302b56
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 22:42:45 2011 +0200
-
- Resolve minor thread safety problem.
-
-commit de84f51270f05ead6758d2811a2d36160c412cb1
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 19:31:50 2011 +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
-
- Remove Scanner_ScanSuggest.
-
-commit 3f5592ef8e7eedc0a9ff52b8091f9b41b9c2d56f
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 19:04:31 2011 +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
-
- 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
-
- 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
-
- 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
-
- Fix indentation of debug macros.
-
-commit c0e44738a41c2cd772125d0774772a541dbac7c5
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 23:23:18 2011 +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
-
- 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
-
- 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
-
- 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
-
- Extensive changes to reduce the amount of global variables in mustek_usb2_high.c.
-
- Might have made MustScanner_SetupScan less readable, though.
-
-commit 9444bf1156f0ab52937d101ba6120ae8685b645b
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 22:54:14 2011 +0200
-
- Reorganize some MustScanner_* functions.
-
-commit bd7107ca057b1f45313d96114c6376bb5ee7c200
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 22:29:32 2011 +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
-
- 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
-
- Fix indentation.
-
-commit df045634cb6a9667c625fb88ecb36bcb58310cda
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 19:14:53 2011 +0200
-
- Misc fixes.
-
-commit 86f399bd21d7794ba07265b503fea39baa1bb859
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 19:00:30 2011 +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
-
- Remove histogram stretching for negative images.
-
-commit 4962b35abd7426b7b51a00d907a538a2a38dc859
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 15:56:40 2011 +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
-
- 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
-
- 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
-
- Fix remaining comments.
-
-commit 9226162537706c982405a7469e7003c4d61808e0
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 14:23:46 2011 +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
-
- Remove USB host type enum.
-
-commit 41ac627e5f4dbd84c082d1756414ef9922c294e7
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 13:45:42 2011 +0200
-
- Get rid of unnecessary forward declarations.
-
-commit da64a1fc1efd8a2e8b8245d6101deb103eea1dc4
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 16 21:37:20 2011 +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
-
- 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
-
- Remove MustScanner_GetScannerState.
-
-commit c9516d53656ed5a7e45dc63b1f2202c96269a7ef
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Apr 13 00:22:06 2011 +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
-
- Further cleanup of mustek_usb2.c.
-
-commit ccce2d4a9a9e2762f8802af051db3f9ed2922ac8
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 10 18:42:05 2011 +0200
-
- Further cleanup of mustek_usb2.c.
-
-commit 39141a4c0265d97fe4d77084a5a63eaaafd8b8c4
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 30 20:57:54 2011 +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
-
- Remove vestigial support for custom gamma tables.
-
-commit acf84e0c9474382d78ae85120c2671b5525bd079
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 29 18:25:19 2011 +0200
-
- Clean up function StopScan.
-
-commit 9158d10df92b7d96bda66d9e601f248c5474259f
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 19 14:55:33 2011 +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
-
- 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
-
- Break remaining long lines.
-
-commit 25242ff9c85f06275ca190896fe37b6d8902e122
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Mar 14 00:21:44 2011 +0100
-
- Clean up mustek_usb2_high.c.
-
-commit c8982a99392cb7c982f12201a978fb4ae5e9e15a
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 21:13:26 2011 +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
-
- 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
-
- 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
-
- Further refactoring of Asic_SetWindow.
-
-commit 82a40d5dca84990f41c15998ae89425eaa576ff6
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 19:24:17 2011 +0100
-
- Refactoring of Asic_SetWindow.
-
-commit 93a79af5d3322fd06369c59a7e72f6773f9bed52
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 15:54:02 2011 +0100
-
- Fix indentation.
-
-commit b43f0688dbb309b7841e89074aab00d4aa61c3a2
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 15:15:47 2011 +0100
-
- Use symbolic constants in more places.
-
-commit 3c87b646b5831b24e6d9d13f26f2a08ec83b6cff
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 14:48:40 2011 +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
-
- 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
-
- Cleaned up firmware state handling.
-
-commit c1f22ef9a9a3be1db26fc03721156a72156870b5
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 12 14:18:48 2011 +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
-
- Refactoring the smaller high level ASIC functions.
-
-commit de5b647c4a47938f186b4661615dfbbd3315636d
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 23:48:21 2011 +0100
-
- Refactored medium level ASIC functions.
-
-commit 693da258ce3bbcaf5c8ea31b9a08b77af615c0f2
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 18:36:07 2011 +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
-
- Simplify LLFSetMotorCurrentAndPhase.
-
-commit dea59ee824157d33c64df719869ee937749f5428
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 17:44:11 2011 +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
-
- 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
-
- 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
-
- 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
-
- Simplyfied Asic_SetShadingTable.
-
-commit 6d5a5123ea3c41ada76e984670b988f847de2145
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 13:12:31 2011 +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
-
- Some motor table related fixes.
-
-commit 3d1b409a1b526025c52c314f143cedd4d2d5d05f
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 02:28:14 2011 +0100
-
- Fix a few comments.
-
-commit 88cac5b4ade1ad4ace0da5be843c879e9256c71c
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 02:25:43 2011 +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
-
- 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
-
- 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
-
- 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
-
- Remove DISABLE bit flag constants.
-
-commit 073fe96611477986de970ab0c444f73024ecea33
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 01:26:09 2011 +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
-
- 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
-
- Remove redundant typecasts.
-
-commit cf6c88bfd1debd288ca563b54120e8ff3903f634
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 00:41:21 2011 +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
-
- 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
-
- 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
-
- Remove unused enum FS_NULL.
-
-commit ccde6b063555892ae55ac6c7bfeb8a7d44e02a4e
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:29:13 2011 +0100
-
- Remove unused fields of struct GETPARAMETERS.
-
-commit 2be2be76aec39dbef8bbe0501eabaaf0838b3cbc
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:26:32 2011 +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
-
- 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
-
- 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
-
- Cleanup of Asic_SetWindow
-
-commit 16485d47da8b2d0a829e378afa1443c1ef4839f8
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 19:37:25 2011 +0100
-
- Optimize motor table calculation.
-
-commit 8821c2882f51d309a7832b362407c46ff11ccd4a
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 19:16:16 2011 +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
-
- Avoid some unorthodox language constructs.
-
-commit 030c7fa122dccca2f47c949ca46a5972efca20b8
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 16:55:39 2011 +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
-
- 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
-
- Simplify DRAM test.
-
-commit bc9252c09464b7ed460bf726dcca3d67f97cd74d
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 15:27:19 2011 +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
-
- Remove redundant code from mustek_usb2.c.
-
-commit 694a69dcab0dddf2ab12eebba49c66c7ac20fdad
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 14:48:40 2011 +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
-
- 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
-
- 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
-
- 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
-
- Remove pointless indirection.
-
-commit dedf0ac30d341b9bcbab7fb32050ff953cc73eff
-Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 01:03:14 2011 +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
-
- fujitsu backend v128
-
- do not ask fi-4340 for serial number
-
-commit 72ecee97ce9db13f148aedf52eb46911212d58e4
-Author: Thomas Klausner <wiz-guest@users.alioth.debian.org>
-Date: Tue Oct 27 20:06:00 2015 +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
-
- 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
-
- Add missing include (fixes 315207)
-
- Both Linux and NetBSD mention this header for use of setsocketopt().
- DragonFly BSD needs it for the SOL_SOCKET symbol.
-
-commit b0a99cb48938cae5a88c5f37a9a91b60589bad4e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Nov 8 18:36:57 2015 +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
-
- Fix sane-desc testsuite logic
-
- This fixes test failures for release tarballs (pointed out by Mike
- Frysinger), clamps down on wildcards and prints a failure message
- when a test does not succeed.
-
-commit 358cbd7f319c64055cd76fedf62a92500b0c5cf5
-Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 21:39:35 2015 -0500
-
- canon_dr v53 continued
-
- reorder geometry group options
- use bg_color to fill missing image data
-
-commit 398610336b6aadf1a0c37390a0a5e2bd926bdfdf
-Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 12:19:20 2015 -0500
-
- canon_dr backend v53
-
- add swskip option
-
-commit b4bc0eb518ce74ffbfdbe0ce1a14bb404804cd57
-Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 11:46:17 2015 -0500
-
- canon_dr backend v53
-
- replace image processing methods with sanei_magic
-
-commit 666c9a74ff26fd530b40db28f03b447209cf419e
-Author: m. allan noah <kitno455@gmail.com>
-Date: Thu Nov 5 21:42:29 2015 -0500
-
- canon_dr backend v52
-
- improve dropout option handling
- add software dropout implementation for downsampled modes
-
-commit 9dc79245291f6d4312c5656fff4232b07f70b673
-Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:49:02 2015 -0500
-
- canon_dr backend v52
-
- add must_downsample and must_fully_buffer
-
-commit 01063a769d5431ca83069a9cf240894f893d01f0
-Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:05:05 2015 -0500
-
- canon_dr backend v52
-
- set can_color=1 by default (recent models dont have 'C' in name)
- enable jpeg for DR-6080
-
-commit 0b822359b3e1798294e30a7ea9cfd6fd9a1e3e85
-Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:00:10 2015 -0500
-
- cardscan backend v3
-
- add USB IDs for newer model 800c
-
-commit 33495ef9b42a783c8f5f2c056ac5699481d3cc7e
-Author: Luiz Angelo Daros de Luca <luizluca@gmail.com>
-Date: Thu Oct 15 12:35:00 2015 +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
-
- Escape [] for configure help strings
-
-commit 471453d2b825a569d467d60160b0eaaf6746bf67
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 20:51:04 2015 +0900
-
- Drop unused INCLUDES substitution variable
-
- This addresses the following autoreconf output:
-
- configure.ac:85: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
-
- The INCLUDES variable is not referenced anywhere in configure.ac or
- configure. In addition, none of the Makefile.am files use it.
-
-commit 32c25b8b8235762d9feb5dbd0e81496a56e15569
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:11:53 2015 +0900
-
- Fix duplicate automake file variable initialization issue
-
- This was introduced in 74c00494.
-
-commit f8d35b8d2fdcacc9b664594d141102c2c80ac076
-Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Oct 26 08:34:17 2015 -0400
-
- Update canon_dr.desc
-
- We had a few scanners that were reported by email or in tracker
- tickets, which had not been updated in the desc file.
-
-commit 716340e7320e7f946329ad7a3cd911d676c92f6d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Oct 17 13:55:17 2015 +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
-
- 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
-
- changelog for recent work
-
-commit 4a83d9c8a4f4c396f5261d62bf7d2f9b8684eba9
-Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 14 19:04:27 2015 +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
-
- 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
-
- 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
-
- Revert "Prevent use of uninitialized variable"
-
- This change introduces a variable that shadows the file scope one.
-
- This reverts commit 45e66aee952dcdada88293901580a111262fc1e9.
-
-commit 36876a83663832cf89fa945737d004ce9b46fb01
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:55:19 2015 +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
-
- fix: declaration-after-statement warning
-
-commit 42aa01e4e558e0019df00702579c928f9fd126e6
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:42:01 2015 +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
-
- Follow getopt_long usage in scanimage.c
-
- This is on the off chance that getopt_long is not in the system's
- standard library.
-
-commit 45e66aee952dcdada88293901580a111262fc1e9
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:47:43 2015 +0900
-
- Prevent use of uninitialized variable
-
-commit eab8fd457d2b8f38f9425f87258cf4fe42dac15c
-Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Oct 11 19:50:04 2015 +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
-
- saned: use getopt_long() for option parsing
-
- The help message has been adjusted to match getopt_long conventions.
-
-commit 418d1ecea7571d10acd08df2edc7967a91e14b0d
-Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Sep 20 19:55:37 2015 +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
-
- saned: parse inetd args in main()
-
- move argument parsing logic from run_inetd() to main()
-
-commit 2c3cb206ce55a7ac9ff9b479de452a332ba2aa1a
-Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Sep 20 19:55:35 2015 +0200
-
- saned: parse standalone args in main()
-
- move argument parsing logic from run_standalone() to main()
-
-commit 2239d2aaff16964a5d67293f5e4220d235e2c84d
-Author: Alexander Hofmann <alexander.hofmann@new-h.de>
-Date: Tue Oct 6 17:42:05 2015 +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
-
- 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
-
- minor release doc update
-
-commit 5e1d45cad7d7933b7120646ae5174ccdc8a9b49f
-Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Oct 4 21:13:39 2015 -0400
-
- reopen sane-backends 1.0.26git
+This file is automatically created at build time using the git commit
+messages and included in our source tarballs. When you see this text
+you're using a `git checkout` and should use the `git log` command to
+see what has changed.
diff --git a/ChangeLogs/ChangeLog-1.0.0 b/ChangeLogs/ChangeLog-1.0.0
new file mode 100644
index 0000000..b263396
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.0
@@ -0,0 +1,4309 @@
+1998-11-21 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 1.0 released
+
+ * From Brian J. Murrell:
+
+ * backend/dll.conf: Mention dc210.
+
+ * backend/cderror.h: New file.
+ * backend/jinclude.h: Ditto.
+ * backend/djpeg.c: Ditto.
+ * backend/dc210.desc: Ditto.
+ * backend/dc210.h: Ditto.
+ * backend/dc210.c: Ditto.
+ * backend/cdjpeg.h: Ditto.
+
+ * doc/Makefile.in (SECT5): Mention sane-abaton.5.
+ * doc/sane-abaton.man: New file.
+ * backend/abaton.c: Ditto.
+ (wait_ready): Explicitly cost tv_sec member to (long) in order
+ to print it (avoids warning on platforms where tv_sec is not a long).
+
+ * backend/abaton.h: Ditto.
+ * backend/abaton.conf: Ditto.
+ * backend/abaton.desc: Ditto.
+ * backend/dll.conf: Mention abaton.
+
+ * Apollo/DomainOS fixes by Paul Walker:
+ * sanei/sanei_DomainOS.h: Add this missing file.
+ * sanei/sanei_config2.c: Include <sane/config.h> to get
+ u_char defined if necessary.
+ * sanei/sanei_DomainOS.c (upper_string): Delete.
+ (do_help): Ditto.
+ * include/sane/config.h.in: Add #undef HAVE_SYS_TIME_H.
+
+ * lib/usleep.c [HAVE_SYS_TIME_H]: Include <sys/time.h> only if
+ we have it.
+
+ * configure.in (CPPFLAGS): Check for sys/time.h.
+
+ * frontend/gtkglue.c: Move include of <sys/types.h> in front
+ of include of <sys/stat.h>.
+
+ * config.sub: Apply patch to recognize -sys5.3.
+
+ * backend/microtek.c: Applied Matto's latest patch to upgrade
+ backend from v0.9 to v0.10.
+
+1998-11-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/microtek2.desc: Mention ScanMaker X6 and Phantom 636.
+
+ * backend/microtek2.c (check_inquiry): Mention Phantom 636 in
+ model string.
+
+1998-11-03 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/microtek2.c (check_inquiry): Added patch by Sebastian
+ Erdmann <serdmann@cs.tu-berlin.de> to recognize ScanMaker X6.
+
+1998-11-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/artec.c: Print size_t as recommended in backend/GUIDE.
+
+1998-11-02 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: changes to correct bugs when using AT12.
+ (sense_handler): New function (by Dick Bruijn).
+ (wait_ready): Ditto (by Dick Bruijn).
+ (abort_scan): Ditto (by Dick Bruijn).
+ Support added to read capability data from scanner if the model.
+ Supports this command (by Dick Bruijn).
+ Added call to sanei_scsi_close() if detected scanner is not
+ a Artec/Ultima model (by Francois Ouellet).
+ Added Negative option. Added Halftone Pattern option.
+ Added Filter Type option for mono scans.
+ Added Quality Calibration option.
+ Moved test_unit_ready command till AFTER we check for ULTIMA scanner.
+
+1998-11-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * config.guess: Upgrade to libtool v1.2.
+ * config.sub: Ditto.
+ * ltconfig: Ditto.
+ * ltmain.sh: Ditto.
+
+1998-10-29 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.c (encode_resolution): If MUSTEK_FLAG_DOUBLE_RES
+ is set, use resultion encoding reported by
+ <Heiko_Schroeder@t-online.de>
+ (attach): Set MUSTEK_FLAG_DOUBLE_RES for MSF-06000CZ. Do other
+ models need this, too?
+ (calibration): Declare NUM as size_t, not int. #ifdef out this
+ unused routine.
+ (reader_process): Print size_t values as %lu with explicit cast
+ to u_long.
+
+ * backend/mustek.h (MUSTEK_FLAG_DOUBLE_RES): New flag.
+
+ * backend/mustek.c (init_options): Initialize resolution with 18
+ dpi, not 100dpi so that "scanimage" without options gives a
+ preview-quality image that doesn't take much space or time.
+
+ * backend/mustek.c: Updated with Andreas Bolsch's version (adds
+ support for SE models).
+ * backend/mustek.h: Ditto.
+ * backend/mustek.spec: Ditto.
+
+ * backend/pnm.c (sane_read): Replace C++ comment with C comment.
+
+ * backend/microtek2.c: Updated with Bernd's v0.5.
+ * backend/microtek2.h: Ditto.
+ * backend/microtek2.conf: Ditto.
+
+ * backend/umax.c: Updated with Oliver's latest version.
+ * backend/umax.h: Ditto.
+ * backend/umax-scsidef.h: Ditto.
+ * backend/umax-scanner.h: Ditto.
+ * backend/umax-uc630.h: Ditto.
+ * backend/umax-uc840.h: Ditto.
+ * backend/umax-ug630.h: Ditto.
+ * backend/umax-ug80.h: Ditto.
+ * backend/umax-uc1200s.h: Ditto.
+ * backend/umax-uc1200se.h: Ditto.
+ * backend/umax-uc1260.h: Ditto.
+ * backend/umax.conf: Ditto.
+ * include/sane/saneopts.h: Ditto.
+ * doc/sane-umax-doc.html: Ditto.
+ * doc/sane-umax-doc.tex: Ditto.
+ * doc/sane-umax.man: Ditto.
+
+1998-10-28 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane.tex (subsection{sane_control_option}): Clarify that
+ paramter "v" is ignored for SET_AUTO calls.
+
+ * frontend/saned.c (init): Initialize w->version.
+
+ * backend/net.c (connect_dev): Accept version code 2 and
+ set peer's version code in dev->wire.version.
+
+ * include/sane/sanei_wire.h: New member "version".
+
+ * sanei/sanei_net.c (sanei_w_control_option_req): Encode
+ option value only if peer_version is < 3 or if action is
+ not SANE_ACTION_SET_AUTO.
+
+ * include/sane/sanei_net.h (SANEI_NET_PROTOCOL_VERSION): Up
+ protocol version to version 3.
+
+ * sanei/sanei_net.c (sanei_w_control_option_req): Transcode
+ value_type, value_size, and value only if req->action !=
+ SANE_ACTION_SET_AUTO. Reported by Petter Reinholdtsen.
+
+ Patches by Petter Reinholdtsen <pere@hungry.com>:
+
+ * backend/dmc.c (attach_one): Don't use C++-style comments.
+
+ * backend/dc25.h (DEFAULT_TTY_BAUD): New macro. Move SPEEDS macro
+ to dc25.c.
+
+ * backend/dc25.c: Initialize tty_baud to DEFAULT_TTY_BAUD. Use
+ B57600 and B115200 only if defined.
+
+ * doc/saned.man: Mention that hostname matching no longer is case
+ significant.
+
+ * configure.in
+ (lib/Makefile.in,lib/strcasecmp.c,frontend/saned.c): Use
+ strcasecmp() instead of strcmp to compare DNS hostnames. Case is
+ irrelevant when using DNS.
+
+ * backend/dll.c: Add support for HP-UX 10.xx style shared
+ libs.
+
+ * configure.in include/sane/config.h.in backends/dll.c:
+ Use dhl_load() family for DLL support on HP/UX.
+
+ * backend/snapscan.c (sane_snapscan_open): Don't cast lvalue
+ (illegal according to ANSI C, I think).
+
+ * backend/apple.c (init_options): Add explicit "break" after
+ "default:" to make HP-UX compiler happy (?).
+ (sane_read): Make stuff after #endif a comment.
+
+ * backend/agfafocus.c: New file (by Karl Anders Oygard
+ <karlo@opera.no>).
+ * backend/agfafocus.h: Ditto.
+ * doc/sane-agfafocus.man: Ditto.
+
+ * doc/sane-net.man: Fix typo: network service is called "sane",
+ not "saned" (by Andreas Dilger <adilger@enel.ucalgary.ca>).
+
+ * backend/hp-scl.c (sanei_hp_scsi_pipeout): Use SIGPWR only if its
+ defined (by Peter Kirchgessner).
+
+ * frontend/Makefile.in (INCLUDES): Mention @GTK_CFLAGS@ as part of
+ INCLUDES macro instead of CFLAGS. Despite its name, @GTK_CFLAGS@
+ is guaranteed to contain CPP include directives only. (Reported
+ by Kevin Dalley <kevind@rahul.net>.)
+
+1998-10-27 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_scsi.c (sanei_scsi_open): Return
+ SANE_STATUS_ACCESS_DENIED if open() fails with errno==EACCES.
+
+ * backend/ricoh-scsi.c: #ifdef out unused code and print values of
+ type size_t as prescribed in the file backend/GUIDE.
+
+ * backend/dll.conf: Mention Ricoh backend.
+
+ * backend/ricoh.c: New file (by Ricoh Dillema).
+ * backend/ricoh.h: Ditto..
+ * backend/ricoh-scsi.c: Ditto..
+
+ * backend/microtek.c: Apply Aug 7 patch by Matto Marjanovic.
+
+ * backend/dc25.c: Apply patch by Peter Fales (v1.1).
+ * backend/dc25.desc: Ditto.
+ * doc/sane-dc25.man: Ditto.
+
+ * backend/pnm.c: Applied patch by Goran Thyni <goran@bildbasen.se>
+ that allows scanning parts of a PNM image.
+
+ * backend/GUIDE: Add Matto's comment on .desc files.
+
+ * backend/hp.c: New file from Peter Kirch (formerly known as xhp).
+ * backend/hp.h: Ditto.
+ * backend/hp-accessor.h: Ditto.
+ * backend/hp-device.h: Ditto.
+ * backend/hp-handle.h: Ditto.
+ * backend/hp-option.h: Ditto.
+ * backend/hp-scl.h: Ditto.
+ * backend/hp-scsi.h: Ditto.
+ * backend/hp-accessor.c: Ditto.
+ * backend/hp-device.c: Ditto.
+ * backend/hp-handle.c: Ditto.
+ * backend/hp-hpmem.c: Ditto.
+ * backend/hp-option.c: Ditto.
+ * backend/hp-scl.c: Ditto.
+ * backend/Makefile.in (libsane-hp.la): Make libsane-hp.la
+ dependent upon hp-accessor.lo, hp-device.lo, hp-handle.lo,
+ hp-hpmem.lo, hp-option.lo, and hp-scl.lo.
+
+1998-10-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-hp.man (Model): Mention HP6200 as per report by Tom
+ Martone <tommartone@erols.com>.
+
+1998-07-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * include/sane/config.h.in: Apply Cory Kempf's
+ <ckempf@enigami.com> FreeBSD CAM support patch.
+ * sanei/sanei_scsi.c: Ditto.
+ * tools/find-scanner.c: Ditto.
+ * configure.in: Ditto.
+
+1998-07-27 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.74 released.
+
+ * configure.in (CPPFLAGS): Save old CPPFLAGS in saved_CPPFLAGS and
+ then set CPPFLAGS (not saved_CPPFLAGS!) to include GTK_CFLAGS.
+ This should get GIMP detected again.
+
+ * frontend/xscanimage.c (init): Add missing newline.
+
+ * backend/net.c (sane_init): Look for service "sane", not "saned".
+
+ * configure.in (V_MINOR): Make it 74.
+
+ * tools/sane-desc.el: Hack a bit so sane-backends.html can be
+ generated some place other than the working directory
+ (which may not be writable).
+
+ * tools/sane-desc.el: New file by Matto.
+
+ * doc/Makefile.in (sane-backends-html): New rule to generate
+ sane-backends.html.
+
+ * backend/apple.desc: List sane-apple man page.
+
+ * backend/umax.c: Updated with Oliver's latest version (with Irix
+ 4MB workaround).
+
+ * backend/microtek.c: Updated with Matto's v0.9.
+ * backend/microtek.h: Ditto.
+ * backend/microtek.conf: Ditto.
+ * backend/microtek.desc: Ditto.
+ * doc/sane-microtek.man: Ditto.
+
+ * backend/apple.h: Updated with Milon's v0.3.
+ * backend/apple.c: Ditto.
+
+ * doc/sane-apple.man: New file (contributed by Milon Firirkis).
+
+1998-07-23 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/canon-scsi.c (reserve_unit): Don't compile unused
+ reserve_unit().
+
+ * sanei/sanei_scsi.c: Apply Yuri's patch to add
+ sanei_scsi_find_devices() support to OS/2.
+
+ * sanei/sanei_pio.c: Include <sane/sanei_backend.h> instead of
+ just <sanei/sanei_debug.h> so we pick up #define's for inb and
+ out.
+
+ * include/sane/config.h.in: Mention HAVE_OS2_H and
+ HAVE_SYS_TYPES_H.
+
+ * configure.in (AC_CHECK_HEADERS): Mention sys/hw.h and
+ sys/types.h.
+ (AC_CHECK_LIB): Check for syslog.
+ (AC_CHECK_FUNCS): Check for _portaccess.
+ (CPPFLAGS): Don't disable qcam backend if we have _portaccess.
+ These patches contributed by Yuri for the benefit of OS/2.
+
+ * backend/qcam.c (qc_unlock) [!F_SETLK]: Fall back to convention
+ UNIX-style locking using O_EXCL (not ideal, but better than
+ nothing at all).
+ (qc_lock_wait): Ditto.
+
+ * sanei/sanei_scsi.c (KillDomainServer): Add missing paren.
+
+ * lib/usleep.c [HAVE_SYS_SELECT_H]: Include <sys/select.h>.
+
+ * include/sane/sanei_backend.h: Define i/o-port access
+ compatibility macros (by Yuri Dario).
+
+ * backend/Makefile.in (CONFIGS): Mention dummy saned.conf
+ (this really ought to go in frontend/Makefile, but I'm too lazy to
+ add a configuration-install rule there...).
+
+ * backend/coolscan.c: Update with Didier's latest version.
+ (send_one_LUT): Merge in alloca() fix from 1998-04-04.
+
+1998-07-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/dll.conf: Mention artec backend.
+
+ * backend/mustek.c (sane_start): Remove duplicate status test.
+
+1998-07-21 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/saned.c (main): Look for service name "sane", not
+ "saned".
+
+1998-07-20 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/epson.c (epson_cmd): Add patch by Holger Frahm
+ <frahm@itp.uni-hannover.de> to support GT9500.
+
+ * backend/microtek.c: Update with latest version (v0.8).
+
+ * backend/artec.c (PREFER_PIXEL_MODE): Apply Chris Pinkham's
+ 6/4/98 patch to add preliminary support for AT6 and AT12 scanner
+ models.
+
+ * backend/epson.c: Apply Christian Bucher's patch.
+
+ * backend/dc25.h: New file (by Peter Fales <psfales@earthling.net>)
+ * backend/dc25.c: Ditto.
+ * backend/dc25.conf: Ditto.
+ * doc/sane-dc25.man: Ditto.
+
+ * backend/microtek2.c: Replace dynamically sized array with
+ alloca() to be ANSI C compliant.
+
+ * backend/epson.c: Replace zero-sized byte arrays with 1 byte
+ arrays to be ANSI C compliant.
+
+ * doc/sane-hp.man: Mention ScanJet 3P (reported by Patrick Debois
+ <Patrick.Debois@lin.vlaanderen.be>).
+
+ * backend/umax.c: Updated with Oliver's 5/7/98 patch.
+
+1998-07-20 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Added code to default to using millimeters
+ instead of pixels for measurements, can revert to pixels by
+ defining PREFER_PIXEL_MODE at compilation time.
+
+ Added code to cause sane_read to block until data available to return,
+ also buffers as much data as possible before returning.
+
+ Added code to cause sane_read to read as much data from scanner as
+ possible for each call, previously would read 1 line max from
+ scanner.
+
+ Added code to attempt to detect scanner capabilities from scanner
+ if scanner supports this command, it not program has defaults
+ coded in for certain scanner models.
+
+ Separated horizontal and vertical resolution settings with ability
+ to bind them together. This still has a bug, so the option is is
+ disabled by default until I can get it working correctly.
+
+ Bug-fixes to get backend working properly with xscanimage.
+ Added preview mode option.
+ Added threshold option.
+
+ * backend/artec.h: Added options codes to go along with options
+ added in artec.c file.
+
+1998-07-20 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/epson.c (scsi_write): Apply patch by Thomas Bogendoerfer
+ <tsbogend@alpha.franken.de> to get Epson backend to work for SCSI
+ scanners again.
+
+1998-06-05 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.c (attach): Move dev_wait_ready() after the check
+ for a Mustek scanner. This is to make sure we don't issue any
+ command other than INQUIRY to SCSI devices that are not known to
+ be Mustek scanners.
+
+1998-05-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/dmc.c: Updated with David Skoll's latest patch.
+
+ * sanei/sanei_scsi.c (sanei_scsi_find_devices): Declare missing
+ findtype arg for dummy sanei_scsi_find_devices().
+
+1998-05-16 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/hp.c (attach): Return right after INQUIRY if the device
+ doesn't look like an HP scanner.
+
+1998-05-15 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.73 released.
+
+ * backend/mustek.c (attach): Initialize *devp to 0.
+
+ * configure.in: Use AM_PATH_GTK to figure out if/how to compile
+ with gtk libs.
+
+ * aclocal.m4: Include gtk.m4 from gtk-1.0.1 distribution.
+
+ * backend/Makefile.in (install): Change install rule so there is
+ guaranteed to be a (symlink) of the form
+ libsane-$(BACKEND).so.$(V_MAJOR) pointing to the right version
+ of a dll.
+
+ * backend/dll.c (load): Get rid of .la parsing non-sense. Instead,
+ always attempt to open libsane-$(BACKEND).so.$(V_MAJOR).
+
+ * backend/mustek.c (sane_init): Make sure empty lines really
+ are ignored.
+
+1998-05-13 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/microtek2.conf: Add line "scsi * * Scanner".
+ * backend/microtek.conf: Ditto.
+
+ * sanei/sanei_scsi.c (get_devicename): New function.
+
+ * sanei/sanei_config2.c: New file.
+
+ * sanei/Makefile.in (LIBSANEI_OBJS): Mention sanei_config2.
+ (LIBSANEI_LTOBJS): Ditto.
+
+ * sanei/sanei_scsi.c (sanei_scsi_find_devices): New function
+ (comes in two flavors: one for Linux, one for the remaining
+ platforms).
+
+ * include/sane/sanei_scsi.h: New function.
+
+ * doc/sane-dll.man: Fix to make it work with man2html (use
+ \- instead of -).
+ * doc/sane-dmc.man: Ditto.
+ * doc/sane-epson.man: Ditto.
+ * doc/sane-hp.man: Ditto.
+ * doc/sane-microtek.man: Ditto.
+ * doc/sane-microtek2.man: Ditto.
+ * doc/sane-mustek.man: Ditto.
+ * doc/sane-pint.man: Ditto.
+ * doc/sane-scsi.man: Ditto.
+ * doc/sane-umax.man: Ditto.
+ * doc/saned.man: Ditto.
+ * doc/scanimage.man: Ditto.
+ * doc/xscanimage.man: Ditto.
+
+ * doc/Makefile.in (MAN2HTML): New macro.
+ (html-man): New rule to generate HTML version of man-pages.
+
+ * configure.in (V_MINOR): Up to 73.
+
+ * backend/umax.conf: Add lines "scsi UMAX" and "scsi LinoHell
+ Office".
+
+ * backend/microtek2.h: New file (by Bernd Schroeder
+ <bernd@aquila.muc.de>).
+ * backend/microtek2.c: Ditto.
+ * backend/microtek2.conf: Ditto.
+
+ * backend/dll.conf: Mention "microtek2".
+
+ * backend/apple.conf: Add line "scsi APPLE".
+ * backend/mustek.conf: Add lines for "scsi MUSTEK" and "scsi
+ SCANNER".
+
+ * backend/apple.c (attach_one): New function.
+ (sane_init): Use sanei_config_attach_matching_devices().
+ * backend/artec.c: Like for apple.c.
+ * backend/canon.c: Ditto.
+ * backend/coolscan.c: Ditto.
+ * backend/dmc.c: Ditto.
+ * backend/epson.c: Ditto.
+ * backend/hp.c: Ditto.
+ * backend/microtek.c: Ditto.
+ * backend/mustek.c: Ditto.
+ * backend/s9036.c: Ditto.
+ * backend/snapscan.c: Ditto.
+ * backend/tamarack.c: Ditto.
+
+1998-05-11 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/snapscan.c (sane_snapscan_get_parameters): Always set
+ depth of 8.
+
+ * configure.in: Check for gtk_tooltips_set_tips _after_ gtk
+ libraries have been located. (Patch by Jake E. Hamby
+ <jehamby@lightside.com>).
+
+1998-05-09 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/Makefile.in (.c.o): Patch by Kaz Sasayama
+ <Kaz.Sasayama@hypercore.co.jp>: invoke $(COMPILE) if libtool
+ doesn't give us a regular .o file.
+ * lib/Makefile.in (.c.o): Ditto.
+
+ * frontend/preview.c (preview_update): Call update_selection() so
+ selection is updated when scanwindow geometry changes. The patch
+ from 1998/4/2 never worked satisfactorily (and indeed was never
+ enabled in any of the SANE releases).
+
+1998-05-06 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.c (sane_init): Use sanei_config_skip_whitespace()
+ to skip whitespace.
+
+1998-05-05 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xscanimage.c (init): Allow -g as an option.
+
+ * sanei/sanei_config.c (sanei_config_get_string): New function.
+ (sanei_config_skip_whitespace): Ditto.
+
+ * backend/umax.c: Updated with Oliver's latest patch.
+
+ * Makefile.in (INSTALLED_INCLUDES): Mention sanei_readproc.h.
+
+ * backend/microtek.h: Updated with Matto's 0.7 patch.
+ * doc/sane-microtek.man: Ditto.
+ * backend/microtek.c: Ditto.
+ Added precalibration code: tries to intelligently have scanner
+ run a calibration only once when necessary --- this shaves a solid
+ six seconds off every scan!
+ Added model code/vendor name for ScanMaker 600ZS.
+ Added model codes/vendor name for Agfa Arcus II, StudioScan,
+ StudioScan II.
+ Patched up 3-pass scanning (forgot to switch color planes).
+ Corrected IIHR to 600dpi base resolution.
+ Check so that 0x0 regions are recognized as invalid.
+ Fixed subtle buffering bug in color scans.
+ Fixed-up active/inactive dependencies among options.
+ Make sure shadow <= midtone <= highlight.
+ Let shadow/midtone/hightlight be active during LineArt and Halftone.
+ "Halftoning" option moved into Scan Mode Group (from Enhancement).
+ Removed some illegal "TEST_UNIT_READY" commands (during scan).
+ Removed "MODE_SENSE_1", since it didn't quite work anyway.
+
+1998-05-03 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xscanimage.c (scan_preview): Don't register
+ preview_window_destroyed as a delete_event handler.
+
+1998-05-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/Makefile.in: Remove unused LIBLIB macro.
+
+1998-04-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ Patches by Matto Marjanovic:
+
+ * frontend/gtkglue.c (gsg_close_dialog_callback): Remove
+ client_data pointer arg.
+
+ * frontend/xscanimage.c (scan_win_delete): Remove GdkEvent arg.
+ (preview_window_destroyed): Ditto.
+ (input_available): Include bad_depth handling code only if
+ HAVE_LIBGIMP_GIMP_H is defined.
+ (scan_dialog): Remove client_data pointer arg.
+
+1998-04-29 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.c (gsg_get_filename): Use gtk_events_pending()
+ instead of gdk_events_pending().
+ * frontend/preview.c (input_available): Ditto.
+ * frontend/xscanimage.c (quit_xscan): Ditto.
+ (input_available): Ditto.
+
+1998-04-08 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_pio.c (sanei_pio_open): Fix prototype.
+
+1998-04-07 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.72 released.
+
+ * backend/epson.c (sane_init): Fix up config file reading
+ to be more like that of other backends.
+ (PATH_MAX): Use PATH_MAX instead of FILENAME_MAX.
+
+ * backend/canon.c (sane_init): Read & process canon.conf (patch by
+ Yuri Dario <mc6530@mclink.it>).
+
+1998-04-06 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_init_debug.c (sanei_init_debug): Move up #endif
+ so NULL-test works for OS/2, too.
+
+ * frontend/saned.c: Include <sys/types.h>.
+
+ * backend/snapscan.c: Don't include non-ANSI <values.h>.
+ (sane_snapscan_start): Use INT_MAX instead of MAXINT.
+ (PATH_MAX): Define PATH_MAX as 1024 if not defined otherwise.
+
+1998-04-05 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/umax.c: Updated with Oliver's latest version
+ (0.72pre-a).
+
+1998-04-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/coolscan.c: Do lalloca.h spiel instead of including
+ alloca.h.
+
+ * configure.in: Look for glib/include directory in /usr/local/lib
+ and /usr/lib. Add $C_SWITCH_X_SITE to CPPFLAGS, not DEFS.
+
+ * doc/sane-mustek.man: Mention MFS-1200SP v1.07 as working as
+ reported by ehramm@dk3uz.hh.provi.de (Edmund H. Ramm).
+
+1998-04-03 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/canon-scsi.c (request_sense): ifdef out to quiet down
+ gcc.
+
+ * backend/artec.c (read_data): Print size_t as (u_long) to make it
+ work right and without compiler warning both on 32 and 64 bit
+ platforms.
+ (artec_get_status): Ditto.
+ (init_and_start_scan): Ditto.
+ (sane_start): Ditto.
+ (sane_read): Ditto.
+ (artec_buffer_line_offset): Declare LEN as size_t.
+ * backend/epson.c (sane_read): Ditto.
+
+ * sanei/sanei_pio.c (pio_wait): Initialize STAT with 0 to quiet
+ down gcc.
+
+ * backend/Makefile.in (libsane-epson.la): Mention sanei_pio.lo.
+ (libsane-dll.la libsane.la): Ditto.
+
+ * sanei/Makefile.in (LIBSANEI_OBJS): Mention sanei_pio.o.
+ (LIBSANEI_LTOBJS): Mention sanei_pio.lo.
+
+ * frontend/xcam.c (input_available): Undo braindamage regarding
+ break out of scan loop (the SANE docs _do_ specify that in
+ blocking mode, *len==0 implies end of scan).
+ * frontend/xscanimage.c: Ditto.
+
+ * doc/sane-dmc.man: New file by David Skoll.
+
+ * sanei/sanei_DomainOS.c: New file by Paul Walker.
+
+ * backend/snapscan.c (DL_INFO, DL_MAJOR_ERROR): Up error code to 1
+ to avoid printing anything unless the user specifically asked
+ for this.
+
+ * include/sane/sanei_debug.h (DBG_LEVEL): Define debug level
+ variable as macro DBG_LEVEL.
+
+ * README.solaris (NOTE): Emphasize that generic scsi driver
+ needs to be installed before running configure.
+
+ * backend/s9036.c: Don't depend on GNU C dynamically sized arrays.
+
+ * backend/coolscan.c (send_one_LUT): Use alloca() instead of
+ depending on GNU C dynamically sized arrays.
+ Include <alloca.h>.
+
+ * frontend/xscanimage.c (input_available): Break out of the
+ loop only if LEN==0 _and_ we have a non-negative input tag.
+ * frontend/xcam.c (input_available): Ditto.
+
+ * backend/microtek.c (parse_inquiry): Handle for ScanMaker 35t+.
+ (id_microtek): Ditto.
+
+1998-04-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * configure.in (CPPFLAGS): Check for libXi.
+
+ * frontend/gtkglue.c (panel_destroy): Clear dialog elements
+ after destroying the panel.
+
+ Patches by Christian Bucher <cbucher@vernetzt.at>:
+
+ * include/sane/sanei_pio.h: New file.
+ * sanei/sanei_pio.c: Ditto.
+ * backend/epson.c, backend/epson.h, backend/epson.conf: Updated
+ with Christian's version adds support for parallel port interface.
+
+ * sanei/sanei_scsi.c (sanei_scsi_req_wait): Patch by Matto to let
+ sense-handler decide whether a non-zero sense_buffer[0] really
+ should be considered an error (needed for Microtek backend).
+
+ * doc/sane.tex (\subsubsection{Option Value Unit}): Document new
+ unit SANE_UNIT_MICROSECOND.
+
+ Patches by Oliver Rauch:
+
+ * frontend/gtkglue.c (unit_string): Handle SANE_UNIT_MICROSECOND.
+ * frontend/scanimage.c (print_unit): Ditto.
+ (parse_scalar): Ditto.
+
+ * include/sane/sane.h: Add SANE_UNIT_MICROSECOND.
+
+ * Upgrade to Kevin's latest SnapScan backend (0.4).
+
+ * doc/sane-hp.man: Mention ScanJet IIp C1790A as working (reported
+ by Ronald.Vogelaar@nl.origin-it.com).
+
+ * frontend/xscanimage.c (init): Issue an error message when we see
+ option -g as this is most likely due to someone invoking
+ xscanimage through GIMP when GIMP support is missing.
+ (scan_done): Add sanity check.
+ (scan_start): Ditto.
+
+ * Upgraded to Matto's latest Microtek backend (0.6).
+
+ * Upgraded to Oliver's latest UMAX backend (0.71h).
+
+ * frontend/preview.c (draw_selection): Fix so that selection is
+ updated when sliders are moved. Patch by Mikko Tyo"la"ja"rvi.
+
+ * backend/snapscan.c (DL_INFO): Increase from 0 to 1.
+ (DL_MAJOR_ERROR): Ditto. This avoids printing error messages
+ unless the user specifically requests them.
+
+ * frontend/gtkglue.c: Include <sys/types.h>.
+
+ * include/sane/config.h.in: Ignore HAVE_USLEEP under Apollo
+ Domain.
+
+ Patches by Paul Walker:
+
+ * sanei/sanei_scsi.c: New Domain OS code.
+
+ * tools/find-scanner.c: Include <sane/config.h>.
+
+ * lib/usleep.c (usleep): Use time_$wait() to avoid broken usleep()
+ implementation in Domain Sys5.3 environment.
+
+ * config.sub: Translate sys5.3 into sysv3 for the benefit
+ of Apollo Domain/OS.
+
+ * sanei/sanei_init_debug.c (sanei_init_debug): Use DosScanEnv()
+ instead of getenv() under OS/2. (Patch by Yuri Dario
+ <mc6530@mclink.it>)
+
+1998-03-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xcam.c (main): Remove obsolete call to
+ gdk_set_debug_level (0).
+
+ * backend/mustek.c (attach): Print debug message when discovering
+ unknown model.
+
+ * doc/sane-scsi.man: Mention Adaptec 1505.
+
+ * tools/find-scanner.c (main): List FreeBSD specific device names.
+
+ * tools/Makefile.in (LIBS): Define.
+ (find-scanner): Mention $(LIBS).
+
+ * backend/epson.conf: New file.
+
+ Patches by Yuri Dario <mc6530@mclink.it>:
+
+ * backend/epson.c (sane_init): Support config file.
+
+ * sanei/sanei_ab306.c (outb): Add missing parens.
+
+ * backend/snapscan.c: Don't include <values.h>
+
+ * backend/net.c: Include netdb.h after in.h to appease OS/2.
+ Include <sys/types.h>.
+
+ * sane-0.71.spec (%files): Mention sane-dmc.5.
+ * doc/Makefile.in (SECT5): Ditto.
+
+ * backend/dmc.c, backend/dmc.h: Update with Feb 26 patch from
+ David Skoll.
+ * doc/dmc.man: New file by David Skoll.
+
+1998-02-25 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/dmc.c (DMCSetMode): Add missing field name (patch by
+ Martin Huber).
+
+ * tools/find-scanner.c (main) [__sun]: Add missing command (patch
+ by Martin Huber.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Fix typo: fd_Info->fd_info
+ (patch by Jeff Freedman).
+
+ * configure.os2: Update with patch by Jeff Freedman.
+
+ * backend/snapscan.c (sane_snapscan_start): Replace non-standard
+ MAXINT by INT_MAX from <limits.h>.
+ (PATH_MAX): Define PATH_MAX as 1024 if not defined by headers.
+
+1998-02-23 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.71 released.
+
+ * backend/dmc.c (DMCAttach): Close scsi fd before returning.
+
+ * backend/microtek.c: Default to no_dump.
+ (sane_init): Change "nodump" into "dump" option.
+ * doc/sane-microtek.man: Document this change.
+
+ * backend/snapscan.c: Include <sane/sanei_config.h>.
+ (sane_snapscan_init): Use sanei_config_open() instead of fopen().
+
+ * backend/snapscan.c: Upgrade to latest version (0.3 patch 7).
+ * backend/snapscan.h: Ditto.
+
+ * configure.in (V_MINOR): Up version to 0.71.
+
+ * sanei/sanei_scsi.c (scsi_cmd) [USE == SOLARIS_INTERFACE]: "or"
+ in lun instead of overwriting cdb[1] (patch by Martin Huber
+ <hu@garfield.m.isar.de>).
+
+ * backend/snapscan.c: Replace <posix1_lim.h> with <limits.h>.
+
+ * backend/mustek.c (fix_line_distance_mfs): Add back missing
+ multiplication by bpl (patch by Stefano Garavaglia
+ <alter.ego@iol.it>).
+
+ * backend/coolscan.c: Updated with Didier's latest version.
+ (COOLSCAN_CONFIG_FILE): Rename from PATH_COOLSCAN_CONFIG and
+ define as "coolscan.conf". Include <sane/sanei_config.h>.
+ (sanei_init): Use sanei_config_open() instead of fopen().
+
+ * backend/coolscan-scsidef.h: Ditto.
+ * backend/coolscan.h: Ditto.
+
+ * backend/hp.c (sane_close): Change s to s->next (patch by David
+ Skoll <dskoll@chipworks.com>).
+
+1998-02-17 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/Makefile.in (PRELOADABLE_BACKENDS): Mention apple &
+ coolscan.
+
+ * backend/coolscan.c: New file (by Didier Carlier
+ <didier@sema.be>)..
+ * backend/coolscan.h: Ditto.
+ * backend/coolscan-scsidef.h: Ditto.
+
+ * backend/apple.c: Include <sane/sanei_config.h>
+ (APPLE_CONFIG_FILE): Rename from PATH_APPLE_CONFIG.
+ (sane_init): Use sanei_config_open().
+
+ * backend/apple.conf: New file.
+
+ * backend/dll.conf: Mention apple & coolscan backends.
+
+ * backend/apple.c: New file (by Milon Firikis
+ <milonf@isosun.ariadne-t.gr>).
+ * backend/apple.h: Ditto.
+
+ * sane-0.70.spec: Make symlink for libsane.so.0.
+
+ * doc/sane-epson.man: Mention GT-5500 scanner as working (as
+ reported by Umberto Zanatta <uzanatta@foscolo.org>).
+
+1998-02-12 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_scsi.c (DOMAINOS_INTERFACE): Define. Add
+ Apollo Domain/OS support contributed by Paul Walker.
+
+ * configure.in (AC_CHECK_HEADERS): Mention apollo/scsi.h.
+ Add #undef of HAVE_APOLLO_SCSI_H. Add type checks for u_char,
+ u_int, u_long (DomainOS reportedly needs these).
+
+ * sanei/sanei_scsi.c (sanei_scsi_req_wait) [USE ==
+ LINUX_INTERFACE]: Always check for a non-zero error code in the
+ sense-buffer. The Linux sg driver guarantees that the sense
+ buffer is clear to zero when no sense code has been requested, so
+ this is safe.
+
+1998-01-28 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.7 released.
+
+1998-01-27 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xscanimage.c (quit_xscan): Exit with status 0, not 1.
+
+ * tools/xerox (scale): Added improvements contributed by Joachim
+ Woll <woll@physik.uni-kassel.de>.
+
+ * Upgrade to Oliver's latest UMAX backend.
+
+ * include/Makefile.in (distclean): Add empty all rule. Add
+ distclean rule to delete Makefile.
+
+ * Makefile.in (distclean): Delete japi/Makefile as well (this
+ command should be removed once japi gets added to SUBDIRS).
+
+ * backend/Makefile.in (EXTRA): Remove ../lib/usleep.lo and
+ ../lib/strndup.lo.
+ (libsane.la): Make dependent on $(LIBOBJS).
+
+ * frontend/xscanimage.c (preview_window_destroyed): Declare second
+ arg (added in some version of gtk?).
+
+ * tools/find-scanner.c (main): Change __sgi__ to __sgi.
+
+1998-01-26 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/microtek.c: Don't declare strdup()---you're bound to get
+ it wrong for some platforms!
+
+ * doc/sane-scsi.man: Say explicity that generic SCSI support needs
+ to be enabled.
+
+ * doc/sane-hp.man (Problems): Document PhotoSmart problems
+ as reported Peter Kirchgessner <Pkirchg@aol.com>.
+
+ * backend/snapscan.c: Upgrade to v0.3 from
+ http://www.cs.ualberta.ca/~charter/snapscan.html.
+ * backend/snapscan.h: Ditto.
+
+1998-01-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ SnapScan backend by Franck Schnefra, Michel Roelofs and
+ Kevin Charter:
+
+ * backend/snapscan.c: New file.
+ * backend/snapscan.h: Ditto.
+ * backend/snapscan.conf: Ditto.
+
+ * backend/umax-scanner.h (scanner_str): Add missing comma.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Pass sense_handler_arg to
+ sense handler for BSD_INTERFACE, HPUX_INTERFACE,
+ OPENSTEP_INTERFACE, DECUNIX_INTERFACE, SCO_OS5_INTERFACE,
+ OS2_INTERFACE, IRIX_INTERFACE, AIX_GSC_INTERFACE, and
+ SOLARIS_INTERFACE.
+
+ * include/sane/config.h.in: Add missing #undef of
+ HAVE_SYS_SCSI_TARGETS_SCGIO_H.
+ Ditto for HAVE_SYS_SCSI_SGDEFS_H.
+
+1998-01-20 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.69 released.
+
+ * doc/sane-scsi.man: Limit ncr810 patch to kernel versions <
+ 2.0.33.
+
+ * tools/xerox (HEIGHT): Add A4 paper size as comment.
+
+1998-01-19 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/preview.c (make_preview_image_path): New function.
+ (preview_destroy): Save scan surface parameters as a comment
+ in the preview image.
+ (restore_preview_image): Read scan surface parameters from
+ preview image file and restore only if the parameters match
+ the currently selected surface.
+ (paint_image): Gracefully handle NULL image_data.
+ (event_handler): Don't call restore_preview_image().
+ (preview_update): Detect if the scan surface changed. If so,
+ establish a new preview widget size, preview area size, and
+ restore a preview image, if available.
+
+ * backend/mustek.c (sense_handler): Declare closure argument.
+
+ * sanei/sanei_scsi.c (sanei_scsi_open): Fix typos.
+
+ * backend/umax-scsi.c (umax_open_scanner): Pass us as sense_arg.
+ (umax_open_scanner): Ditto.
+ (umax_open_scanner): Ditto.
+ * backend/umax.c (sane_start): Ditto.
+
+ * backend/canon.c (attach): Pass 0 as sense_arg to sanei_scsi_open().
+ (sane_start): Ditto.
+ * backend/epson.c (attach): Ditto.
+ (sane_start): Ditto.
+ * backend/tamarack.c (sense_handler): Ditto.
+ * backend/s9036.c (sane_start): Ditto.
+ * backend/mustek.c (dev_open): Ditto.
+ * backend/hp.c (attach): Ditto.
+ (sane_start): Ditto.
+ * backend/mustek.c (dev_open): Ditto.
+ * tools/find-scanner.c (main): Ditto.
+
+ * include/sane/sanei_scsi.h (SANEI_SCSI_Sense_Handler): Declare
+ closure arg.
+ (sanei_scsi_open): Ditto.
+
+ * doc/sane-hp.man (Model): Remove obsolete comment regardign 5P.
+
+1998-01-17 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.c (dev_open): Fix debug message.
+
+ * Solaris related patches by Martin Huber:
+
+ * backend/umax-scsi.c (umax_wait_scanner): Sleep for 1 second
+ instead of 100ms on Sun platforms---the SCHILYscg driver prints a
+ warning message each time a device is busy. Duh.
+ (umax_get_data_buffer_status): Don't do
+ umax_get_data_buffer_status() on Sun's. This should be fixed...
+
+ * sanei/sanei_scsi.c (sanei_scsi_open): Call unit_ready() towards
+ the end of this function.
+ (CCS_SENSE_LEN): Define as 18 if not defined
+ by any header files.
+ (sanei_scsi_cmd): Use sensebuffer to collect sense info.
+ (scsi_cmd): Better error handling when using SCHILYscg driver.
+
+1998-01-14 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xscanimage.c (scan_start): Turn off dialog sensitivity.
+ (scan_done): Restore dialog sensitivity.
+
+ * backend/qcam.c (init_options): Turn on SANE_CAP_ALWAYS_SETTABLE.
+
+ * frontend/preview.c (scan_done): Enable dialog sensitivity.
+ (scan_start): Disable dialog sensitivity.
+
+ * include/sane/sane.h (SANE_CAP_ACTIVE_WHILE_SCANNING): New
+ manifest constant.
+
+1998-01-12 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.c (panel_destroy): Call gtk_tooltips_unref()
+ instead of gtk_tooltips_destroy() as suggested by Ben Gertzfield
+ <che@debian.org>.
+
+1997-12-25 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/canon.c: New file by Helmut Koeberle
+ <helmut.koeberle@bytec.de>.
+ (sane_start): Print variables of type size_t as %lu and cast to
+ (u_long), to make it compile without warning on all platforms.
+ (attach): Remove extraneous semicolon.
+
+ * backend/canon.h (canon_h): Ditto
+ * backend/canon-scsi.c: Ditto.
+
+1997-12-24 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_ab306.c (sanei_ab306_cmd): Write the first
+ 6 bytes of a SCSI command only (suggested by Andreas, but
+ is this really correct??).
+
+ * backend/mustek.c (gamma_correction): Add patch by Andreas
+ Czechanowski <andreas@inspc44c.ins.uni-stuttgart.de> to
+ fix lineart scanning for Paragon II 600 N scanner.
+
+1997-12-23 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * tools/find-scanner.c (scanner_identify_scanner): Print info on
+ all SCSI devices when --verbose is in effect.
+ (main): Add Sun device names.
+
+ * include/sane/config.h.in: Define _POSIX_SOURCE and
+ __EXTENSIONS__ when compiling on a Sun with GCC.
+
+ * configure.in (AC_CHECK_HEADERS): Mention sys/scsi/sgdefs.h and
+ sys/scsi/targets/scgio.h.
+
+1997-12-17 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xscanimage.c (device_dialog): Suggestion by Matt: set
+ window auto-shrink by calling gtk_window_set_policy().
+
+ * japi/ImageCanvas.java: Updated with Jeff's latest patch.
+ * japi/Jscanimage.java: Ditto.
+ * japi/Makefile.in: Ditto.
+ * japi/README.JAVA: Ditto.
+ * japi/ScanIt.java: Ditto.
+ * japi/ImageCanvasClient.java: New file.
+
+1997-12-16 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.c (panel_build): Patch by Matt: a) For all
+ individual options flagged as "advanced", panel_build will only
+ display the option if the "Show advanced" button is toggled.
+ Group identifiers flagged as "advanced" are handled the same as
+ before. b) panel_rebuild is called whenever the "Show advanced"
+ button is toggled on or off.
+
+ * doc/sane-scsi.man: Mention sane-epson(5) and sane-microtek(5).
+ * doc/scanimage.man: Ditto.
+ * doc/xscanimage.man: Ditto.
+
+ * doc/sane-microtek.man: New file by Matt.
+
+ * backend/microtek.c: Updated with Matt's version 0.4.
+ * backend/microtek.h: Ditto.
+ * backend/microtek.conf: Ditto.
+
+ * doc/Makefile.in (SECT5): Mention sane-microtek.5.
+
+1997-12-15 Fred Hucht & Michael Staats <{fred|michael}@thp.Uni-Duisburg.DE>
+
+ * Added support for generic SCSI under AIX 4.1.x using the device
+ driver gsc written by Matthew Jacob <mjacob@feral.com> (nice piece
+ of work!).
+ Find this driver under
+ ftp://ftp.feral.com/pub/aix/gsc.tar.gz or
+ ftp://ftp.thp.Uni-Duisburg.DE/pub/source/gsc.tar.gz.
+ Changed files: sanei/sanei_scsi.c, include/sane/config.h.in,
+ configure.in.
+
+ * Moved '#include <lalloca.h>' to very beginning in all source
+ files as AIX needs it there.
+
+ * Added define OUTFILENAME to frontend/xscanimage.c.
+
+ * Fixed wrong environment reference in /doc/sane-scsi.man.
+
+ * Several changes in tools/find-scanner.c to run using
+ above mentioned driver.
+ Fixed wrong IN_periph_devtype_cpu (was 1, should be 3).
+
+1997-12-14 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-hp.man: Mention ScanJet 4P (reported to work by
+ Adam Sjoegren <asjo@diku.dk>).
+
+1997-12-09 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/saned.c (check_host): Change len from size_t to int to
+ match getpeername() as per Single Unix Spec (as opposed to POSIX
+ drafts...).
+ (start_scan): Ditto for getsockname().
+ * backend/net.c (sane_start): Ditto.
+
+ * backend/tamarack.c (TAMARACK_CONFIG_FILE): Delete.
+ (TAMARACK_CONFIG_FILE): New macro.
+ Include <sane/sanei_config.h>.
+ (sane_init): Use sanei_config_open() instead of fopen().
+ (read_data): Declare nbytes as size_t---makes a difference
+ on 64-bit platforms.
+
+1997-12-07 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/s9036.c (sane_init): Run through "indent -gnu". Use
+ sanei_config_open() instead of fopen(). Include
+ <sane/sanei_config.h>.
+ (read_more_data): Print size_t variables by casting them to
+ (u_long) and using %lu format (some platforms have size_t as
+ u_long, others as u_int, which does make a difference if
+ sizeof(long) > sizeof(int).
+ (sane_start): Ditto.
+ Add English translation for comments that were in German only.
+
+ * backend/s9306.c: New file by Ingo Schneider.
+ * backend/s9306.h: New file by Ingo Schneider.
+
+1997-12-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.c (sane_cancel): Collect child process status
+ after killing it (avoids accumulating zombie processes). Reported
+ by Mike Sweet.
+ * backend/umax.c (sane_cancel): Ditto.
+ * backend/qcam.c (sane_close): Ditto.
+ (sane_cancel): Ditto.
+
+1997-12-03 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.68 released.
+
+1997-12-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/scanimage.c (window_val_user): New variable.
+ (fetch_options): Don't overwrite window_val[i] if it's
+ user-specified.
+ (main): Set window_val_user[i] as necessary.
+
+ * backend/mustek.c (send_gamma_table): New function.
+ (sane_start): Send gamma table both before and after start_scan().
+ The MFS-06000CX is reported to need the gamma-table before
+ start_scan() and the Mustek docs do indeed indicate downloading
+ the gamma-table twice.
+ (init_options): Make --custom-gamma option active by default (since
+ gray-scale mode is the default mode).
+
+1997-11-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-mustek.man: Mention MFC-08000CZ.
+
+ * backend/mustek.c (attach): Reduce y_range.max for MFC-08000CZ
+ from 300 to 292mm as reported by Jeroen Steenblik
+ <jeroens@esrac.ele.tue.nl>. Ditto for MFC-06000CZ.
+
+1997-11-28 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/umax-scanner.h (scanner_str): Add "Astra 610S".
+ (known_scanners): Increment from 13 to 14.
+
+ PP fixes by Andreas Czechanowski:
+ * backend/mustek.c (EXTRA_SAVE_LINES): New macro.
+ (fix_line_distance_pp): Use EXTRA_SAVE_LINES instead of hardcoded
+ constant. Various fixes to make it actually work.
+ (reader_process): Initialize s->ld_ld_line to zero.
+
+ * backend/mustek.h (struct Mustek_Scanner): Add member ld_line.
+
+1997-11-26 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * tools/Makefile.in (.c.o): Add this rule.
+
+ * tools/find-scanner.c: Include sanei_scsi.h and sanei_debug.h
+ via <> quotes (note "").
+
+1997-11-25 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_ab306.c (sanei_ab306_exit): Fix by Andreas
+ Czechanowski: output 0x00 at port[i].base + 1 instead.
+
+1997-11-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-mustek.man (Model): Clarify that paralell port != printer
+ port.
+
+ * backend/mustek.c (fix_line_distance_mfs): Add missing SANE_UNFIX()
+ calls for x_range.max and dpi_range.max.
+ (fix_line_distance_pp): Correct based on Andreas' feedback.
+
+1997-11-18 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * configure.in (CFLAGS): Don't specify -ansi---with older libcs,
+ it's causing more problems than it's worth.
+
+ * Patch by Jeff Freedman:
+
+ * japi/Sane.c: Limit string length to option size.
+
+ * japi/SaneOption.java: Fix indentation.
+ (unitString): New function.
+
+ * japi/ImageCanvas.java: New file.
+ * japi/Jscanimage.java: Ditto.
+ * japi/ScanIt.java: Ditto.
+
+ * japi/Makefile.in (CLASSES): Mention ScanIt.class and
+ ImageCanvas.class.
+ (all): Mention Jscanimage.class.
+ * japi/Scan.c: Include <string.h>.
+ (String_length): New function.
+
+1997-11-16 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.c (scale_update): In recent versions of GTK,
+ "value_changed" callbacks no longer return a value. Change this
+ function to type "void" accordingly.
+
+ * sanei/sanei_scsi.c: Declare cam_fd only if USE ==
+ DECUNIX_INTERFACE.
+
+ * sanei/sanei_load_values.c (sanei_load_values): Detect errors
+ while reading the option name (first call to sanei_w_string()).
+ Reported by Geoffrey T. Dairiki.
+
+ * sanei/sanei_ab306.c [HAVE_UNISTD_H]: Include <unistd.h>. Fix by
+ Geoffrey T. Dairiki.
+
+ * lib/alloca.c: Enclose in #ifndef HAVE_ALLOCA bracket. Fix by
+ Geoffrey T. Dairiki.
+
+ * include/lalloca.h: Declare alloca() as returning void* when
+ __STDC__ is in effect so declaration matches definition in
+ lib/alloca.c. Reported by Geoffrey T. Dairiki.
+
+ * frontend/preview.c (update_selection): Set coord[] values to
+ rounded-to-nearest-int of float values. This avoids the jumping
+ selection box effect. Fix by Geoffrey T. Dairiki.
+
+ * frontend/gtkglue.c (scale_update): Patch by Geoffrey T. Dairiki
+ <dairiki@apl.washington.edu>: emit value_changed signal if the
+ backend changed the value.
+
+ * backend/umax.c: Upgraded to Oliver's latest UMAX version.
+
+ * backend/mustek.c (sane_init): Ignore white space in front of an
+ option/device-name.
+
+1997-11-12 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_ab306.c (sanei_ab306_get_io_privilege):
+ (struct port): Remove member HAVE_IO_PRIVS.
+ (sanei_ab306_get_io_privilege): Get ioperm()issions independent of
+ HAVE_IO_PRIVS.
+
+ * backend/mustek.c (do_stop): Always send STOP command before
+ closing the device.
+ (dev_read_req_enter): For parallel-port scanner, set *idp to 0.
+
+1997-11-10 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ Bug reported by Matto Marjanovic <maddog@mir.com>:
+
+ * frontend/gtkglue.c (panel_build): Create button only after we
+ know the option's value.
+ (button_new): Add VAL argument and initialize button state to
+
+ correct value before connecting the toggled callback.
+
+ Bugs reported by Petter Reinholdtsen <pere@link.no>:
+
+ * sanei/sanei_config.c (sanei_config_open): Add missing cast to
+ (char *).
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd) [USE == IRIX_INTERFACE]: Fix
+ (u_char) cast to (u_char *).
+
+1997-11-06 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/qcam.c (init_options): Set the type of OPT_NUM_OPTS to
+ SANE_TYPE_INT (suggested by Guido Muesch
+ <odiug@faho.rwth-aachen.de>).
+ * backend/mustek.c (init_options): Ditto.
+
+1997-11-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/xcam.c (xcam_exit): Protect against recursive
+ invocation.
+ (main): Turn on preferences.advanced as no graphical geometry
+ selection exists right now.
+ Include <preferences.h>.
+ preferences: New variable.
+ (pref_toggle_advanced): New function.
+ (pref_toggle_tooltips): Ditto.
+ (build_preferences_menu): Add button to control advanced & tooltips
+ preferences.
+
+ * doc/sane.tex (subsection{sanecontrol_option}): Make it illegal
+ for SANE_INFO_RELOAD_OPTIONS to be set needlessly.
+
+ * backend/hp.c (sane_control_option): Only turn on RELOAD_PARAMS
+ when value changed.
+
+ * backend/qcam.c (sane_control_option): Only turn on
+ RELOAD_PARAMS when value changed.
+
+ * backend/mustek.c (sane_control_option): Only turn on
+ RELOAD_OPTIONS and/or RELOAD_PARAMS when value changes.
+
+ * Integrate b&w quickcam fixes by Guido Muesch
+ <odiug@faho.rwth-aachen.de>:
+
+ * backend/qcam.c (bw_x_range, odd_bw_x_range, bw_y_range,
+ odd_bw_y_range): New constants.
+ (sane_open): Disable despeckle, black-level, hue, saturation,
+ resolution & test options for b&w camera (either not useful or not
+ supported at this point).
+ (sane_start): Use QC_MONO_SET_CONTRAST instead of
+ QC_BW_SET_CONTRAST.
+ (sane_start): Call qc_reset() for b&w camera to avoid hangs (color
+ camera doesn't need this and is faster that way).
+ (sane_start): Multiply undecimated_width by s->val[OPT_DEPTH].w,
+ not 4.
+
+ * backend/qcam.h: Remove obsolete QC_BW_SET_CONTRAST,
+ QC_BW_AUTO_ADJUST_OFFSET, QC_BW_GET_OFFSET, and QC_SET_CONTRAST
+ macros.
+
+1997-11-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-hp.man (Model): Mention ScanJet IIcx. Johannes Geiger
+ <J_Geiger@fleury.de> reported it to work fine under OS/2 with
+ sane-0.66
+
+ * backend/umax.c: Apply patch by Oliver Rauch that avoid
+ umax hangs.
+
+1997-11-01 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.67 released.
+
+ * sanei/sanei_ab306.c: New file.
+
+ * backend/mustek.h (MUSTEK_FLAG_PP): New macro.
+ (struct Mustek_Scanner): Add members ld.index and ld.lmod3
+ for parallel-port scanner line-distance correction.
+
+ * backend/mustek.c (color_seq): Move to global level from
+ fix_line_distance_normal().
+ (fix_line_distance_pp): New function.
+ (scsi_wait_ready): Renamed from wait_ready().
+ (pp_wait_ready): New function.
+ (dev_wait_ready): Ditto.
+ (dev_open): Ditto.
+ (dev_cmd): Ditto.
+ (dev_req_wait): Ditto.
+ (dev_read_start): Ditto.
+ (dev_read_req_enter): Ditto.
+ (dev_close): Ditto.
+ (attach): Modify to use dev_open(). Set minimum scan resolution
+ to 51 dpi for parallel-port scanners.
+ (scan_area_and_windows): Call dev_cmd() instead of
+ sanei_scsi_cmd().
+ (mode_select): Ditto.
+ (gamma_correction): Ditto.
+ (start_scan): Ditto.
+ (stop_scan): Ditto.
+ (line_distance): Ditto.
+ (get_image_status): Ditto.
+ (backtrack_and_adf): Ditto.
+ (gamma_correction): Return immediately if custom-gamma is turned
+ off or if not doing a multibit scan. Add support for sending all
+ three gamma tables with a single command.
+ (line_distance): Initialize additional line-distance correction
+ state needed by parallel-port scanner.
+ (read_req_enter): Remove.
+ (send_data): Modify to support parallel-port scanner line-distance
+ correction.
+ (reader_process): Require I/O-privilege if dealing with parallel
+ port scanner and call dev_read_start(). Use dev_read_req_enter()
+ instead of read_req_enter(), dev_req_wait() instead of
+ sanei_scsi_req_wait().
+ (sane_start): For parallel-port scanner, send gamma table with
+ a single gamma_correction() call.
+
+ * doc/sane-mustek.man: Update with info regarding parallel port
+ scanner.
+
+ * backend/dll.c (add_backend): When a backend is present already,
+ move it to the head of the backend list, so pre-loaded backends
+ appear in the same order as if they had been loaded dynamically
+
+ * backend/mustek.c (pp_mode_list): New constant.
+
+ * backend/mustek.c (init_options): Use pp_mode_list for parallel
+ port type scanners (no color lineart/halftone modes).
+
+ * sanei/sanei_codec_ascii.c (ascii_w_string): free(*s) only if *s
+ is non-NULL (reported by Geoffrey T. Dairiki
+ <dairiki@apl.washington.edu>).
+
+ * backend/mustek.c (attach): Turn on MUSTEK_FLAG_LD_NONE for
+ MFS-12000SP with firmware 1.02 or newer. Reported by Henning
+ Busacker <henning.busacker@Duesseldorf.netsurf.de>.
+
+1997-10-25 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane.tex (chapter{Contact Information}): Update mailing list
+ and home page address.
+
+ * backend/dll.c: Include <sane/sanei_config.h>. Call
+ sanei_config_open() instead of fopen().
+ * backend/hp.c: Ditto.
+ * backend/mustek.c: Ditto.
+ * backend/net.c: Ditto.
+ * backend/pint.c: Ditto.
+ * backend/qcam.c: Ditto.
+ * backend/umax.c: Ditto.
+
+ * backend/Makefile.in (EXTRA): Mention ../sanei/sanei_config.lo.
+
+ * doc/sane-dll.man: Document SANE_CONFIG_DIR.
+ * doc/sane-hp.man: Ditto.
+ * doc/sane-mustek.man: Ditto.
+ * doc/sane-net.man: Ditto.
+ * doc/sane-pint.man: Ditto.
+ * doc/sane-qcam.man: Ditto.
+ * doc/sane-scsi.man: Ditto.
+ * doc/sane-umax.man: Ditto.
+ * doc/saned.man: Ditto.
+
+ * backend/microtek.c: Updated with v0.3 from Matt.
+ Include <sane/sanei_config.h>
+ (MICROTEK_CONFIG_FILE): Define as "microtek.conf".
+ (PATH_MICROTEK_CONFIG): Delete.
+ (sane_init): Replace fopen() with sanei_config_open().
+
+ * backend/microtek.h: Ditto.
+
+1997-10-24 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_config.c (sanei_config_open): Add multiple-directory
+ support for SANE_CONFIG_DIR.
+
+ * sanei/sanei_config.c: New file by Jeff Freedman.
+ * include/sane/sanei_config.h: Ditto.
+
+1997-10-23 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Fixes for OS/2 by Jeff Freedman:
+ * frontend/Makefile.in (SBINPROGS): Set to @SANED@.
+ * configure.os2 (LN_S): Add --sysconfdir=.
+ * configure.in: Set up SANED depending on <sys/socket.h>.
+ * backend/Makefile.in (EXTRA): Mention usleep.lo and strndup.lo.
+ * backend/pnm.c (rgblength, rgbbuf, rgbleftover): Declare as
+ static.
+ * ltconfig: Upgrade to 1.0d.
+ * ltmain.sh: Ditto.
+ * sanei/sanei_constrain_value.c: Include <sane/config.h>.
+
+1997-10-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.h (struct GSGDialog): Remove idle_id member.
+
+ * frontend/gtkglue.c (idle_handler): Remove. GTK's reference
+ counting appears to have been fixed (?).
+
+ * backend/umax_scanner.h: Update with Oliver's latest version.
+ * backend/umax-scsi.c: Ditto.
+ * backend/umax-scsidef.h: Ditto.
+ * backend/umax-struct.h: Ditto.
+ * backend/umax.c: Ditto.
+ * backend/umax.h: Ditto.
+
+1997-10-18 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_scsi.c (sanei_scsi_req_enter): Set cdb.hdr.pack_id
+ to unique id number.
+
+1997-10-17 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * japi/Makefile.in: New file (by Jeff Freedman <jsf@hevanet.com>).
+ * japi/README.JAVA: Ditto.
+ * japi/Sane.c: Ditto.
+ * japi/Sane.java: Ditto.
+ * japi/SaneDevice.java: Ditto.
+ * japi/SaneOption.java: Ditto.
+ * japi/SaneParameters.java: Ditto.
+ * japi/SaneRange.java: Ditto.
+ * japi/Test.java: Ditto.
+
+ * configure.in (AC_OUTPUT): Mention japi/Makefile.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd) [USE == IRIX_INTERFACE]:
+ Add data buffer alignment fix by Michael Sweet.
+
+1997-10-24 Jeff Freedman <jsf@hevanet.com>
+
+ * sanei_open_config() added. Backends call it to open .conf files.
+
+1997-10-14 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.66 released.
+
+ * README: Update with new URLs and latest GIMP/GTK info.
+
+1997-10-11 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * include/sane/saneopts.h: Add #defines for TEN_BIT_MODE, WARMUP,
+ RGB_PREVIEW_PATCH, and START_SCAN_PATCH.
+
+ * README: Remove umax-specific configure options (they're now
+ runtime options).
+ * configure.in (CPPFLAGS): Ditto.
+ * include/sane/config.h.in: Ditto.
+
+ * backend/epson.c: Updated
+
+1997-10-09 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/umax.c (sane_exit): Remove bogus call to free()
+ (reported by Peter).
+
+Thu Oct 9 20:20:32 1997 Kazuhiro Sasayama <kaz@hypercore.co.jp>
+
+ * epson.c (sane_start): Fix lcount computation.
+
+Thu Oct 9 11:44:03 1997 Kazuhiro Sasayama <kaz@hypercore.co.jp>
+ * epson.c (sane_start): Use byte-interleaved mode if available.
+ (sane_start): Set line counter for byte-interleaved mode.
+ (sane_read): Handle byte-interleaved mode.
+ (sane_init) [PACKAGE && VERSION]: Debug out PACKAGE and VERSION.
+
+Tue Oct 7 18:44:36 1997 Kazuhiro Sasayama <kaz@hypercore.co.jp>
+
+ * epson.c (set_lcount): New function.
+ (sane_start): Use block mode for monochrome if available.
+ (sane_read): Handle block mode.
+
+ * epson.h (struct Epson_Scanner): Add block.
+
+Tue Oct 7 15:48:11 1997 Kazuhiro Sasayama <kaz@hypercore.co.jp>
+
+ * epson.c (set_speed): New function.
+ (sane_start): Use set_speed.
+
+Tue Oct 7 15:44:33 1997 Kazuhiro Sasayama <kaz@hypercore.co.jp>
+
+ * README: Add info about a mailing list.
+
+ * Makefile.am (libsane_epsonx_la_LDFLAGS): Increment the revision.
+
+ * epson.c (identify): Debug output the command level.
+
+1997-10-08 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/mustek.conf: Turn on linedistance-fix and lineart-fix by
+ default.
+
+ * include/sane/config.h.in: Remove
+ NEED_MUSTEK_LINE_DISTANCE_WORKAROUND.
+
+ * doc/sane-mustek.man (CONFIGURATION): Document option
+ linedistance-fix and lineart-fix.
+
+ * configure.in: Remove test for --enable-ld-fix.
+
+ * backend/mustek.h (MUSTEK_FLAG_LD_FIX): New flag.
+ (MUSTEK_FLAG_LINEART_FIX): Ditto.
+
+ * backend/mustek.c (line_distance): Replace
+ NEED_MUSTEK_LINE_DISTANCE_WORKAROUND with runtime test for same.
+ (reader_process): If MUSTEK_FLAG_LINEART_FIX is on, delay 200ms
+ when scanning in lineart mode.
+ (sane_init): New variable. Add linedistance-fix and lineart-fix
+ support.
+
+ * backend/Makefile.in (install): Fix install rule so all symlinks
+ necessary for libsane.so are installed.
+
+ * backend/dll.c (load): Change from LIBNAME to LIBPATH (as per
+ libtool-1.0c documention).
+
+ * sanei/sanei_scsi.c (issue): Declare `static'.
+
+ * aclocal.m4: Update with contents of libtool.m4.
+
+ * configure.in (AC_PROG_RANLIB): Remove (once again!).
+
+ * config.guess: Update from libtool-1.0c.
+ * config.sub: Ditto.
+ * ltconfig: Ditto.
+ * ltmain.sh: Ditto.
+
+ * backend/epson.c: Update with Kazuhiro's latest epson version
+ (1.1.6).
+
+1997-10-07 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/gtkglue.c (panel_destroy): Clear elem->menu after
+ freeing it (reported by Kazuhiro Sasayama <kaz@hypercore.co.jp>).
+
+1997-10-06 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/epson.c: Updated with Kazuhiro Sasayama
+ <kaz@hypercore.co.jp> latest version (1.1.5).
+
+1997-10-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.65 released.
+
+ * sanei/sanei_scsi.c (close_aspi): Rename from sanei_close_aspi (static
+ functions don't need ugly sanei_ prefix...).
+ (open_aspi): Ditto.
+
+ * configure.os2: New file (from Jeff's config.os2).
+
+ * backend/umax-scsi.c: Mmove include of <scsi/scsi.h> and
+ <scsi/sg.h> into !def UMAX_TO_SANE bracket.
+
+ * backend/pnm.c (getparmfromfile): Open with mode "rb" to get
+ binary file on platforms where this is meaningful.
+
+1997-10-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-epson.man: Mention that backend is known to work with
+ GT-5000.
+
+1997-10-01 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-epson.man: New file (based on Kzuhiro's README file).
+
+ * backend/Makefile.in (PRELOADABLE_BACKENDS): Mention epson.
+ (libsane-epson.la): Add dependencies for Epson backend.
+
+ * backend/epson.c: New file by Kazuhiro Sasayama
+ <kaz@hypercore.co.jp>.
+ * backend/epson.h: Ditto.
+
+ * backend/microtek.c: Updated with latest version from
+ http://www.mir.com/mtek/ by Matt Marjanovic <maddog@mir.com>.
+ * backend/microtek.h: Ditto.
+
+1997-10-3 Jeff Freedman <jsf@hevanet.com>
+
+ * sanei/sanei_scsi.c: Minor fixes for OS/2 support.
+
+ * configure.in: Check for presence of sys/socket.h to set @NET@.
+
+ * backend/Makefile.in: net -> @NET@
+
+1997-09-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_scsi.c: Integrate OS/2 support by Jeff Freedman:
+ (OS2_INTERFACE) Define.
+ (open_aspi,close_aspi): New OS/2-specific functions.
+ (sanei_scsi_open): Add OS/2 support.
+ [USE = OS2_INTERFACE]: OS/2 version of sanei_scsi_cmd().
+ (sanei_scsi_cmd, sanei_scsi_req_wait) [STUBBED_INTERFACE]:
+ Return proper value.
+
+ * include/sane/config.h.in (HAVE_STRNCASECMP, HAVE_OS2_H): Add
+ #undef. If !HAVE_STRNCASECMP, define strncasecmp macro as
+ alias for strnicmp.
+
+ * configure.in (AC_CHECK_FUNCS): Check for strncasecmp().
+ (AC_CHECK_HEADERS): Check for os2.h.
+
+1997-09-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sanei/sanei_scsi.c: Integrate OS/2 support by Jeff Freedman:
+ (OS2_INTERFACE) Define.
+ (open_aspi,close_aspi): New OS/2-specific functions.
+ (sanei_scsi_open): Add OS/2 support.
+ [USE = OS2_INTERFACE]: OS/2 version of sanei_scsi_cmd().
+ (sanei_scsi_cmd, sanei_scsi_req_wait) [STUBBED_INTERFACE]:
+ Return proper value.
+
+ * include/sane/config.h.in (HAVE_STRNCASECMP, HAVE_OS2_H): Add
+ #undef. If !HAVE_STRNCASECMP, define strncasecmp macro as
+ alias for strnicmp.
+
+ * configure.in (AC_CHECK_FUNCS): Check for strncasecmp().
+ (AC_CHECK_HEADERS): Check for os2.h.
+
+1997-09-24 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.64 released.
+
+ * PROJECTS (Backend): Update microtek entry.
+ Add entry for sgivl.
+
+ * backend/microtek.conf: New file.
+
+ * backend/dll.conf: Mention microtek.
+
+ * backend/Makefile.in (PRELOADABLE_BACKENDS): Mention microtek.
+ (libsane-microtek.la): Mention microtek dependencies.
+
+ * backend/microtek.c: New file by Matthew Marjanovic.
+ * backend/microtek.h: Ditto.
+
+1997-09-23 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Integrate Michael Sweet's
+ latest Irix implementation of sanei_scsi_cmd().
+
+Sat Sep 6 08:59:24 1997 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 0.63 released.
+
+ * configure.in (V_MINOR): Bump up to 63.
+
+ * configure.in (AM_PROG_RANLIB): Go back to AC_PROG_RANLIB. The
+ former causes a bad configure script.
+
+Fri Aug 29 16:08:05 1997 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-umax.man: Change status of "Astra 1200S" to "all modes ok"
+ as Oliver tells me that this has been tested and is working now.
+
+Wed Aug 20 17:23:04 1997 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * sane-0.63.lsm: Update email addresses etc.
+
+ Integrate Oliver Rauch's UMAX improvements:
+
+ * README: Document --enable-umax-preview-fix,
+ --enable-umax-start-scan-fix.
+
+ * configure.in (UMAX_RGB_PREVIEW, UMAX_START_SCAN_PATCH): Define if
+ necessary.
+
+ * include/sane/config.h.in (UMAX_RGB_PREVIEW, UMAX_START_SCAN_PATCH):
+ Add #undef.
+
+ * include/sane/saneopts.h: Add manifest constants for options
+ resolution-bind, negative, quality-cal, threshold, analog-gamma,
+ analog-gamma-r, analog-gamma-g, analog-gamma-b, analog-gamma-bind,
+ smear, white-bind, black-bind.
+
+ * AUTHORS (Frontends): Update email addresses of Oliver Rauch and
+ myself.
+
+1997-08-07 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (attach): Print Mustek scanner info at
+ debug level 2, not 3.
+
+1997-08-06 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/preview.c (XSERVER_WITH_BUGGY_VISUALS): Make conditional
+ on #ifdef __alpha__ (Michael Sweet reports that the old code broke
+ SGI IRIX 6.3).
+
+1998-08-01 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * include/sane/config.h.in (HAVE_SYS_SCSICMD_H, HAVE_SYS_DSREQ_H):
+ Undefine.
+
+ * configure.in (AC_CHECK_HEADERS): Mention sys/scsicmd.h and
+ sys/dsreq.h.
+
+ * sanei/sanei_scsi.c (SCO_OS55_INTERFACE, IRIX_INTERFACE,
+ SOLARIS_INTERFACE): Define.
+
+1997-07-27 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscanimage.c (quit_xscan) [HAVE_LIBGIMP_GIMP_H]: When
+ running as a GIMP extension, call gimp_quit().
+ (init) [HAVE_LIBGIMP_GIMP_H]: Set GDK's xshm flag based on GIMP's
+ flag.
+
+ * doc/sane-mustek.man (SCSI ADAPTER TIPS): Try to make complete
+ sentences.
+
+1997-07-25 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.62 released.
+
+ * configure.in (CPPFLAGS): Test for gtk_gamma_curve_new() to
+ see whether appropriate version of gtk is installed.
+
+ * backend/mustek.c (sane_init): Add parsing support for option
+ `strip-height'.
+ (strip_height): New variable to limit scan strip height.
+ (reader_process): If strip_height is greater than 0.0, limit
+ lines_per_buffer so that no more than strip_height inches are
+ scanned with a single SCSI read command.
+
+ * doc/sane-mustek.man (CONFIGURATION): Describe strip-height
+ option.
+
+1997-07-23 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane-hp.man (Model): Added ScanJet 3c info.
+
+1997-07-22 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/scanimage.README: Remove file.
+
+ * doc/sane-scsi.man: Add info on generic AM53C974 driver.
+
+1997-07-19 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c [USE == LINUX_INTERFACE]: Include
+ <sys/time.h>.
+
+1997-07-18 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_req_flush_all)
+ [WE_HAVE_ASYNC_SCSI]: Implement stub.
+
+ * scripts/xerox: New file (simple xeroxing script).
+
+ * frontend/scanimage.c (main): When opening a device fails, also
+ print reason for failure.
+
+ * frontend/preview.c (preview_new): Register expose_event handler.
+ (preview_destroy): Call scan_done() if called when preview
+ scanning in progress.
+
+ * backend/mustek.c (attach): Add argument MAY_WAIT. If it's TRUE,
+ wait for scanner to become ready before sending inquiry command.
+ (do_cancel): Rename to do_stop. Ignore child's exist status
+ when we're really cancelling a scan. Issue stop_scan() command
+ only if the scan got cancelled and do a wait_ready() before
+ issueing the stop_scan().
+ (read_data): Delete.
+ (sane_init): Call attach() with MAY_WAIT set to SANE_FALSE.
+ (sane_open): Call attach() with MAY_WAIT set to SANE_TRUE.
+
+ * frontend/preview.c (display_partial_image): Use gtk_preview_put()
+ to update the preview window. Much faster than hiding/showing the
+ widget.
+ (expose_handler): New function.
+
+ * frontend/progress.c (progress_new): Make "Cancel" button a
+ toggle-button so user can see when it was pressed down while
+ the backend cancels its operation.
+
+ * backend/mustek.c (do_cancel): Call wait_ready() before
+ attempting to stop scanner.
+ (read_req_enter): New function.
+ (send_data): Ditto.
+ (sigterm_handler): New function.
+ (reader_process): Reimplement using asynchronous SCSI command
+ interface.
+ (wait_ready): Use gettimeofday() to implement timeout. The
+ scsi command itself may take a considerable amount of time
+ (1 second or more) so we can't just loop for a fixed number
+ of times.
+
+ * include/sane/sanei_scsi.h: Declre sanei_scsi_req_enter,
+ sanei_scsi_req_wait, and sanei_scsi_req_flush_all.
+
+ * sanei/sanei_scsi.c [WE_HAVE_ASYNC_SCSI]: Define.
+ (issue): New function.
+ (sanei_scsi_req_flush_all): New function.
+ (sanei_scsi_req_enter): Ditto.
+ (sanei_scsi_req_wait): Ditto.
+ (sanei_scsi_cmd): Reimplement in terms of enter/wait.
+ (sanei_scsi_req_enter) [!WE_HAVE_ASYNC_SCSI]: Stub that
+ simply calls sanei_scsi_cmd().
+ (sanei_scsi_req_wait): Empty stub.
+
+1997-07-16 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane-scsi.man: Add Tekram DC390 info (contributed by
+ kawk@Home.Yo.COM (Kolja Waschk))
+
+1997-07-15 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd) [USE==LINUX_INTERFACE]:
+ Return SANE_STATUS_NO_MEM if write() of SCSI command fails.
+
+ * backend/mustek.c (do_cancel): If reader_process exited, use
+ exit status as return value.
+ (reader_process): Return SANE_STATUS_IO_ERROR instead of 1.
+ Return SANE_STATUS_NO_MEM instead of 2. Return STATUS instead
+ of 3. Return SANE_STATUS_GOOD instead of 0.
+ (sane_read): If do_cancel() returns anything but
+ SANE_STATUS_CANCELLED or SANE_STATUS_GOOD, something bad has
+ happened and the return status should be returned.
+
+ * doc/sane-scsi.man: Fix typo: sg.h is in /usr/include/scsi, not
+ /usr/include.
+
+ * PROBLEMS: Add warning about updating Linux kernel after increasing
+ SG_BIG_BUFF.
+
+1997-07-14 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscanimage.c (quit_xscan): Destroy preview window before
+ quitting, so preview image gets saved if necessary.
+
+ * frontend/Makefile.in (LIBX11): New macro.
+ (LIBGTK): Ditto.
+ (xscanimage): Use $(LIBGTK) instead of $(LIBS).
+ (xcam): Use $(LIBGTK) instead of $(LIBS).
+
+ * configure.in (LIBX11): Define as all libraries necessary when
+ using X11.
+ (LIBGTK): Define as all libraries necessary when using GTK+.
+
+ * backend/mustek.c (sane_start): Don't send gamma in lineart and
+ halftone mode!
+
+ * doc/sane-scsi.man: Add info on how to setup BT958 card (contributed
+ by Jeremy <jeremy@xxedgexx.com>).
+
+1997-07-13 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane-scsi.man: Add info on FreeBSD.
+
+1997-07-12 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * ltmain.sh: Installed libtool-1.0-nomode patch.
+
+ * configure.in (AC_PROG_RANLIB): Change to AM_PROG_RANLIB.
+
+1997-07-11 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * ltmain.sh: Upgrade to libtool-1.0.
+ * ltconfig: Ditto.
+ * config.guess: Ditto.
+ * config.sub: Ditto.
+ * aclocal.m4: Ditto.
+
+1997-07-08 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.61 released.
+
+ * backend/Makefile.in (LIBLIB_FUNCS): Mention snprintf.
+
+ * backend/umax-struct.h (LINEART, HALFTONE, GREYSCALE, RGB): Move
+ the pound sign to the beginning of the line.
+ * backend/umax-scsidef.h: Ditto for all indendent #defines in this
+ file.
+ * backend/umax-scsi.c: Ditto for all # directives in here.
+
+ * frontend/saned.c [HAVE_LIBC_H]: Include <libc.h>.
+
+1997-07-07 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/net.c [HAVE_LIBC_H]: Include <libc.h>.
+
+ * lib/usleep.c: New file (adapted from glibc).
+
+ * lib/strndup.c: Move #ifndef HAVE_STRNDUP up so nothing
+ except <config.h> gets included unless really needed.
+ Include <sys/types.h> to get size_t defined.
+
+ * lib/snprintf.c (vsnprintf): Rename from vplp_snprintf.
+ (snprintf): Rename from plp_snprintf.
+
+ * include/sane/config.h.in: Add #undef HAVE_USLEEP. Add #undef
+ HAVE_IO_CAM_CAM_H.
+
+ * configure.in: Test ${ac_cv_prog_gcc} instead of $CC to find out
+ whether we're dealing with gcc. Test for io/cam/cam.h header.
+ (AC_C_INLINE): Add.
+ (AC_CHECK_FUNCS): Mention usleep.
+ Check for Xext after checking for X11 since on some platforms,
+ linking against Xext requires functions from X11.
+
+ * backend/umax.c (PATH_MAX): Define as 1024 if undefined.
+
+ * backend/Makefile.in (CONFIGS): Don't add $(srcdir) prefix.
+ (LIBLIB_FUNCS): Mention usleep.
+ (install): Invoke $(LIBTOOL) $(MINST) --finish $(libdir) in
+ a final step. Correct installation rule for config files.
+
+1997-07-06 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): New variable RESULT.
+
+1997-07-05 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Improve BSD version based
+ on patch by Amancio Hasty <hasty@rah.star-gate.com>.
+ (BSD_INTERFACE): Rename from NETBSD_INTERFACE (FreeBSD uses the
+ same interface).
+
+ * configure.in (CPPFLAGS): Check for scsireq_enter in libscsi.a.
+
+ * doc/Makefile.in (SECT5): Mention sane-scsi.5.
+ * doc/sane-scsi.man: New file.
+
+ * doc/sane-umax.man: Add SEE ALSO section mentioning sane-scsi(5).
+ * doc/sane-mustek.man: Ditto.
+
+ * doc/scanimage.man: Mention sane-umax(5).
+ * doc/xscanimage.man: Ditto.
+ * doc/saned.man: Ditto.
+
+ * configure.in (AC_TYPE_PID_T): Add.
+ * include/sane/config.h.in: Add undef of pid_t.
+
+1997-07-04 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * lib/sigprocmask.c (sigprocmask): Use hardcoded values instead
+ of SIG_BLOCK, SIG_UNBLOCK, and SIG_SETPROCMASK.
+
+1997-07-03 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * configure.in (CPPFLAGS): Remove -D_POSIX_SOURCE. We can't define
+ it safely since it causes select() related typedefs and defines
+ to go away under FreeBSD, for example.
+
+1997-07-02 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * configure.in (CPPFLAGS): Put -D_GNU_SOURCE and -D_POSIX_SOURCE
+ in CPPFLAGS, not CFLAGS.
+
+ * doc/sane-umax.man: Change SG_BIG_BUFF example from 128KB to
+ 127.5KB.
+ * doc/sane-mustek.man: Ditto. Mention DTC3181E together with
+ DTCT436.
+
+ * frontend/gtkglue.c (gsg_create_dialog): Initialize dialog->advanced
+ to TRUE so "dumb" frontends will show all options.
+
+ * frontend/xscanimage.c (device_dialog): Turn off advanced options
+ by default.
+
+ * configure.in (AC_CHECK_TYPE): Check for u_long and u_int.
+ Check for scsireq_t.
+ * sanei/sanei_scsi.c: Don't define scsireq_t here.
+
+ * include/sane/config.h.in: Add undef of u_long, u_int, and
+ scsireq_t.
+
+1997-07-01 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscanimage.c (quit_xscan): No longer call
+ preview_destroy() since that now gets called as part of
+ the "destroy" callback.
+
+ * backend/hp.c (attach) [PREFER_DEVICEPIXEL]: Use device-pixel
+ unit commands instead of decipoint commands so things work on a 5p
+ as well (contributed by NOGAYA Shigeki
+ <nogaya@mbox.kyoto-inet.or.jp>).
+ (sane_start) [PREFER_DEVICEPIXEL]: Convert from mm to pixels.
+
+ * frontend/preview.c (input_available): Break out of per-bit loop
+ when done with one line (fix contributed by NOGAYA Shigeki
+ <nogaya@mbox.kyoto-inet.or.jp>).
+ * frontend/xscanimage.c (input_available): Ditto.
+
+ * doc/sane-umax.man: Rename SCSI id to Product id to reduce
+ confusion.
+ * doc/sane-hp.man: Ditto.
+ * doc/sane-mustek.man: Ditto.
+
+ * backend/mustek.c (wait_ready): Ignore errors during wait_ready().
+ With 3-pass scanners, ncr810 driver returns EIO while the scanner
+ is getting ready for pass 2 or 3.
+
+1997-06-30 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sense_handler): Print debug info if we
+ find unknown sense result.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Consider sense_buffer[]
+ only when result != 0.
+
+ * frontend/scanimage.c (sighandler): Change return value type
+ from void to RETSIGTYPE (from <sane/config.h>).
+
+ * doc/sane-mustek.man: Mention problems with MSFS-12000SP.
+
+ * backend/umax.c (sane_start): Don't use C++ style line comments.
+
+ * backend/umax-scsi.c (umax_do_scsi_cmd): Use sigemptyset() to clear
+ out signal set. Include <sane/config.h>.
+
+ * frontend/saned.c [HAVE_SYS_SELECT_H]: Include <sys/select.h>.
+ * include/sane/config.h.in: Mention HAVE_SYS_SELECT_H.
+
+Thu Jun 26 10:19:50 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * README: Mention permissions on generic SCSI device.
+
+Tue Jun 24 17:35:52 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/xscanimage.man: Fix spacing.
+
+ * doc/sane-dll.man: Mention how list of pre-loaded backends
+ can be changed.
+
+Sun Jun 22 08:29:47 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * PROBLEMS: Add note on SCSI device names under OpenStep.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Fix various minor bugs.
+ (sanei_scsi_open): Add support for OpenStep.
+
+ * backend/Makefile.in (install): Replace 'ln -f -s' with `rm -f',
+ `ln -s' sequence. OpenStep doesn't support the -f option at all.
+
+Fri Jun 20 07:30:18 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane-qcam.man: Updated B&W status.
+
+ * sanei/sanei_save_values.c [HAVE_LIBC_H]: Include <libc.h>.
+ * sanei/sanei_load_values.c: Ditto.
+
+ * lib/sigprocmask.c: New file.
+ * lib/strdup.c: Ditto.
+
+ * lib/Makefile.in (LIBLIB_OBJS): Mention strdup.o and sigprocmask.o.
+ (LIBLIB_LTOBJS): Mention strdup.lo and sigprocmask.lo.
+ (liblib.a): Use $(RANLIB) instead of -ranlib.
+
+ * include/sane/sanei_backend.h [!HAVE_SIGPROCMASK]: Define
+ compatibility macros sigset_t, sigemptyset(), sigfillset(),
+ sigaddset(), sigdelset(), and sigaction().
+ Define macro SIGACTION.
+
+ * frontend/saned.c (HAVE_VARARG_MACROS): Don't define unless we
+ have at least gcc 2.6.
+ * include/sane/sanei_debug.h Ditto. Use HAVE_VARARG_MACROS
+ instead of __GNUC__.
+ * sanei/sanei_init_debug.c: Ditto.
+
+ * configure.in (AC_PROG_RANLIB): Mention.
+ (CFLAGS): Move up near the beginning and add -D_POSIX_SOURCE.
+ (AC_CHECK_HEADERS): Test for libc.h.
+ (AC_TYPE_SIGNAL): Mention.
+ (AC_CHECK_FUNCS): Check for sigprocmask.
+
+ * backend/net.c (sane_init): Honor SANE_NET_HOSTS even if
+ net.conf does not exist.
+
+ * backend/mustek.c (sane_start): Use "struct SIGACTION" so it's
+ easier to make code work on platforms that don't support
+ sigprocmask().
+ * backend/umax.c (sane_start): Ditto.
+
+ * ltmain.sh: Upgrade to libtool-0.9h.
+ * ltconfig: Ditto.
+ * config.guess: Ditto.
+ * config.sub: Ditto.
+ * aclocal.m4: Ditto.
+
+Thu Jun 19 08:26:33 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * configure.in (V_MINOR): Update forgotten version number...
+
+ * backend/qcam.c (reader_process): Scale 4 and 6 bpp to 8 bpp.
+
+ * backend/mustek.h (MUSTEK_FLAG_LD_NONE): New flag.
+ * backend/mustek.c (attach): Turn on MUSTEK_FLAG_LD_NONE for
+ MSF-06000SP (this fixes the problems for Andreas Gaumann
+ <gg261@appl2.hrz.uni-siegen.de>).
+ (attach): Print debug message when MUSTEK_FLAG_LD_NONE is on.
+ (line_distance): Fix up ld correction only if MUSTEK_FLAG_LD_NONE
+ is not on.
+
+Wed Jun 18 15:42:25 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (section{Image Data Format}}): Clarify
+ what valid bit-depths are.
+
+Tue Jun 17 07:47:51 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (sane_get_parameters): Test for != QC_COLOR
+ instead of == QC_MONO. Apparently, there are several versions
+ of the monochrome camera.
+ (qc_setscanmode): Ditto.
+
+ * lib/snprintf.c: Update with latest version (also includes
+ license information now).
+
+ * sane-0.6.lsm (Author): Update Tristan Tarrant's email address.
+ * AUTHORS: Ditto.
+ * frontend/xscanimage.c: Ditto.
+
+Sun Jun 15 10:08:44 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/xscanimage.man: Add section on how to run xscanimage under
+ the GIMP.
+
+ * frontend/xscanimage.c (init) [HAVE_LIBGIMP_GIMP_H]: Call
+ gtk_rc_parse() with gimp_gtk_rc() to get space-saving layout of
+ The GIMP. (Suggested by Sven Neumann.)
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Add NeXTStep/OpenStep
+ implementation.
+ (sanei_scsi_cmd): Adjust NetBSD version to make it more like
+ NeXTStep/OpenStep version.
+
+ * configure.in (AC_CHECK_HEADERS): Mention bsd/dev/scsireg.h.
+
+Thu Jun 19 15:19:38 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * backend/umax-scsi.c: Parameterize slightly more so that the
+ build succeeds on non-Linux platforms.
+
+ * Makefile.in, backend/Makefile.in, doc/Makefile.in,
+ frontend/Makefile.in (install): Fail immediately if any
+ installation fails. Use mkinstalldirs to create all installation
+ directories.
+
+Sat Jun 14 11:07:13 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.6 released.
+
+ * frontend/preview.c (preview_new): Connect "destroy" signal
+ so we notice if window manager closes our window.
+ (top_destroyed): New function.
+
+ * frontend/xscanimage.c (scan_preview): Make it robust against
+ preview_new() returning NULL and connect "destroy" signal so we
+ notice when the window manager closes the preview window.
+ (preview_window_destroyed): New function.
+
+ * LICENSE: New file.
+
+ * backend/dll.c: Change license from GPL to relaxed GPL.
+ * backend/hp.c: Ditto.
+ * backend/hp.h: Ditto.
+ * backend/mustek.c: Ditto.
+ * backend/mustek.h: Ditto.
+ * backend/net.c: Ditto.
+ * backend/net.h: Ditto.
+ * backend/pint.c: Ditto.
+ * backend/pint.h: Ditto.
+ * backend/pnm.c: Ditto.
+ * backend/pnm.h: Ditto.
+ * backend/qcam.c: Ditto.
+ * backend/qcam.h: Ditto.
+ * sanei/sanei_codec_ascii.c: Ditto.
+ * sanei/sanei_codec_bin.c: Ditto.
+ * sanei/sanei_constrain_value.c: Ditto.
+ * sanei/sanei_init_debug.c: Ditto.
+ * sanei/sanei_load_values.c: Ditto.
+ * sanei/sanei_net.c: Ditto.
+ * sanei/sanei_save_valus.c: Ditto.
+ * sanei/sanei_scsi.c: Ditto.
+ * sanei/sanei_wire.c: Ditto.
+
+Fri Jun 13 18:35:47 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * lib/snprintf.c: New file (Patrick Powell).
+
+ * frontend/xcam.c: Use guint32 and guint32 instead of u_int16_t
+ and u_int32_t (Tristan Tarrant).
+
+ * doc/Makefile.in (SECT5): Mention sane-umax.5.
+
+ * configure.in (PACKAGE_VERSION): Check for snprintf (Tristan
+ Tarrant).
+
+ * backend/dll.conf: Mention umax.
+
+ * backend/umax-scanner.h: New file (from umax-0.5.5).
+ * backend/umax-scsi.c: Ditto.
+ * backend/umax-scsidef.h: Ditto.
+ * backend/umax-struct.h: Ditto.
+ * backend/umax-uc630.h: Ditto.
+ * backend/umax-ug630.h: Ditto.
+ * backend/umax-umax.c: Ditto.
+ * backend/umax.conf: Ditto.
+ * backend/umax.h: Ditto.
+ * doc/sane-umax.5: Ditto.
+
+ * backend/Makefile.in (PRELOADABLE_BACKENDS): Mention umax.
+ (libsane-umax.la): List dependencies for umax library.
+
+ * COPYING: New file.
+
+ * include/sane/config.h.in: Add #undef HAVE_SNPRINTF.
+
+Tue Jun 10 21:00:34 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * ltmain.sh: Upgrade to libtool-0.9g.
+
+Sun Jun 8 21:24:27 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/dll.c (load): Also check SHLIB_PATH (HP-UX) and LIBPATH
+ (AIX).
+
+ * include/sane/config.h.in: Remove HAVE_GTK_GTKCURVE_H.
+
+Sat Jun 7 11:19:57 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscanimage.c (pref_device_save): Call gsg_sync() before
+ saving the values.
+
+ * backend/Makefile.in (libsane-%.la): Add -export-dynamic flag.
+
+ * frontend/xscanimage.c (query): Rename "/Extensions/" to "/Xtns/"
+ to reflect gimp-0.99.10 changes.
+ (query): Don't put in separator---it confuses gimp.
+ (main): Temporarily install a null print handler so gimp_main()
+ doesn't produce any ugly messages when program gets invoked in
+ stand-alone mode.
+
+ * ltconfig: Upgrade libtool to version 0.9f.
+ * ltmain.sh: Ditto.
+ * config.guess: Ditto.
+ * config.sub: Ditto.
+
+ * frontend/Makefile.in (install): Define MKDIR as
+ $(top_srcdir)/mkinstallldirs.
+ Use $(MKDIR) instead of mkdir.
+ * backend/Makefile.in (install): Ditto.
+ * doc/Makefile.in (install): Ditto.
+
+ * mkinstalldirs: New file (from maint-0.1g).
+
+Tue Jun 3 10:29:17 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * LEVEL2: New file.
+
+Sun Jun 1 13:26:40 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/Makefile.in (LATEX, DLH): New macros.
+ (sane.ind): Prefix source filename with $(srcdir).
+ (ps): Ditto.
+ (html): Ditto.
+
+ * doc/net.tex (subsection{SANE_NET_START}): Document member
+ byte_order.
+
+ * sanei/sanei_net.c (sanei_w_start_reply): (De-)code BYTE_ORDER
+ member.
+
+ * frontend/saned.c (byte_order): New union.
+ (process_request): Initialize byte_order member.
+
+ * include/sane/sanei_net.h (SANE_Net_Byte_Order): New enum type.
+ (SANE_Start_Reply): New member BYTE_ORDER.
+
+Wed May 28 17:13:43 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/Makefile.in (install): Create $(mandir)/man1 and
+ $(mandir)/man5 if necessary.
+
+Tue May 27 09:31:39 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/hp.c: Remove s7_range and s1_range.
+ (attach): Add inquiry of min/max brightness/contrast and fill in
+ dev->brightness_range and dev->contrast_range accordingly.
+ (init_options): Use s->hw->brightness_range instead of s7_range.
+ Use s->hw->contrast_range instead of s7_range. Disable contrast
+ option if min value is same as max value.
+
+ * backend/hp.h (struct HP_Device): Add members BRIGHTNESS_RANGE
+ and CONTRAST_RANGE.
+
+ * sanei/sanei_scsi.c (sanei_scsi_open): Add more debug info.
+
+Mon May 26 10:43:51 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/Makefile.in: Add definitions for VPATH, srcdir, top_srcdir,
+ and top_builddir.
+ (INCLUDES): Move -I directives from CPPFLAGS to this macro. Also
+ search in $(srcdir), $(top_builddir)/include, and
+ $(top_srcdir)/include.
+
+ * lib/Makefile.in: Add definitions for VPATH, srcdir, top_srcdir,
+ and top_builddir.
+ (INCLUDES): Move -I directives from CPPFLAGS to this macro. Also
+ search in $(srcdir), $(top_builddir)/include, and
+ $(top_srcdir)/include.
+
+ * include/Makefile.in: New file.
+
+ * frontend/Makefile.in: Add definitions for VPATH, srcdir, top_srcdir,
+ and top_builddir.
+ (INCLUDES): Also search in $(srcdir), $(top_builddir)/include, and
+ $(top_srcdir)/include.
+ (install): Add $(srcdir) prefix to sane-style.rc.
+
+ * doc/Makefile.in: Add definitions for VPATH, srcdir, top_srcdir,
+ and top_builddir.
+ (%.1 %.5): Use $^ instead of $* so source file can be found even
+ when in a different directory.
+
+ * configure.in (AC_OUTPUT): Create (dummy) include/Makefile to
+ ensure include directory exists in build tree.
+
+ * backend/Makefile.in: Add definitions for VPATH, srcdir,
+ top_srcdir, and top_builddir.
+ (INCLUDES): Also search in $(srcdir), $(top_builddir)/include, and
+ $(top_srcdir)/include.
+ (CONFIGS): Add $(srcdir) prefix.
+ (%-s.c): Ditto.
+
+ * Makefile.in (INSTALLED_INCLUDES): Mention include/sane/config.h.
+ Add definitions for VPATH, srcdir, top_srcdir, and top_builddir.
+ (INSTALLED_INCLUDES): Change include/sane to $(top_srcdir)/include/sane
+ and use "addprefix" function to add prefix.
+
+Thu May 15 07:26:06 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane-mustek.man (Model): Add entry for MFC-600CD.
+ (Model): Mention AHA-2940.
+
+ * frontend/xscanimage.c (scan_dialog): Move gsg_sync() to here
+ (from scan_start()).
+
+ * backend/mustek.c (init_options): Disable brightness/contrast for
+ 1-pass scanners only (in color mode).
+
+Wed May 14 09:17:02 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c: Add ax_brightness_range, ax_contrast_range.
+ (init_options): Use ax_brightness_range/ax_contrast_range for
+ brightness/contrast option when using a 3-pass scanner.
+ (encode_percentage): Remove extraneous division by 100.0.
+
+ * doc/sane-mustek.man (Model): Add MFS-12000CX entry.
+
+Mon May 12 07:58:34 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/scanimage.c (main): Shorten help string so it fits in
+ 80 characters.
+
+ * frontend/preview.c (paint_image): Only increment height if
+ height < p->image_height.
+
+Sat May 10 14:43:05 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.57 released.
+
+ * backend/mustek.c (attach): Fix range to 220x300mm.
+ (init_options): Initialize OPT_PREVIEW and OPT_GRAY_PREVIEW.
+ (sane_control_option): Handle OPT_PREVIEW and OPT_GRAY_PREVIEW.
+ Do not allow OPT_NUM_OPTS to be set.
+ (sane_get_parameters): Except for s->params.format and
+ s->params.last_frame, do not change any parameters when scanning
+ is in progress.
+ (sane_start): Handle mono-chrome previewing.
+
+ * backend/mustek.h (Mustek_Option): Add OPT_PREVIEW and
+ OPT_GRAY_PREVIEW.
+
+ * frontend/progress.c (progress_new): Fix position of progress bar
+ window to (progress_x,progress_y).
+
+ * frontend/gtkglue.c (panel_build): Skip Preview option.
+
+Thu May 8 19:39:48 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/scanimage.man: New file.
+
+ * doc/Makefile.in (SECT1): Mention scanimage.1.
+
+ * backend/dll.conf: Add hp to dll.conf.
+
+Wed May 7 07:28:18 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * include/sane/sanei_scsi.h (SANEI_SCSI_Sense_Handler): New type.
+ (sanei_scsi_close): Add SENSE_HANDLER argument (NULL means no
+ special handler needed).
+
+ * backend/hp.c (sane_start): Pass 0 as SENSE_HANDLER argument.
+ (attach): Ditto.
+
+ * backend/mustek.c (sense_handler): Rename from request_sense and
+ simplify.
+ Remove all explicit request-sense calls.
+
+ * sanei/sanei_scsi.c: Include <stdlib.h>.
+ (num_handlers_alloced): New variable.
+ (sense_handler): Ditto.
+ (sanei_scsi_open): Add SENSE_HANDLER argument. Stash it away in
+ SENSE_HANDLER array if non-NULL.
+ (sanei_scsi_cmd) [HAVE_SYS_SG]: Invoke SENSE_HANDLER[FD] if it
+ exists and is non-NULL and we have a valid sense-buffer.
+ (sanei_scsi_cmd) [HAVE_SYS_SCSI]: Ditto.
+ (sanei_scsi_close): Reset SENSE_HANDLER[FD] to NULL if it exists.
+
+ * frontend/xcam.c: Include <sane/config.h>.
+
+ * configure.in: Add a big fat warning that PROBLEMS should be
+ read before running any programs.
+
+ * PROBLEMS: Add info on how to avoid damaging Mustek scanners.
+
+Mon May 5 07:06:54 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (chapter{Contact Information}): Fix URL.
+
+ * doc/net.tex: Add missing sections. Make into chapter.
+
+ * backend/pint.README: Remove.
+
+ * backend/dll.c (ASSERT_SPACE): Call malloc() when devlist is
+ NULL. SunOS realloc() returns NULL otherwise.
+ * backend/net.c (ASSERT_SPACE): Ditto.
+
+Sun May 4 09:21:48 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/saned.c (EXIT_SUCCESS): Define as 0 if not defined by
+ stdlib.h.
+
+ * frontend/scanimage.c: Include <sys/types.h>.
+
+ * backend/qcam.c: Define PATH_MAX as 1024 if limits.h doesn't
+ define it.
+ * backend/dll.c: Ditto.
+ * backend/hp.c: Ditto.
+ * backend/mustek.c: Ditto.
+ * backend/net.c: Ditto.
+ * backend/pint.c: Ditto.
+ * backend/qcam.c: Ditto.
+ * frontend/xscanimage.c: Ditto.
+ * frontend/xcam.c: Ditto.
+ * frontend/preview.c: Ditto.
+
+ * sanei/sanei_wire.c: Include <sane/config.h>.
+ * sanei/sanei_net.c: Ditto.
+ * sanei/sanei_codec_ascii.c: Ditto.
+ * sanei/sanei_codec_bin.c: Ditto.
+ * sanei/sanei_save_values.c: Ditto.
+ * backend/net.c: Ditto.
+ * frontend/saned.c: Ditto.
+
+ * configure.in (AC_CHECK_HEADERS): Mention
+ /usr/src/linux/include/scsi/sg.h.
+
+ * include/sane/config.h.in: Add
+ #undef HAVE__USR_SRC_LINUX_INCLUDE_SCSI_SG_H.
+
+ * sanei/sanei_scsi.c [HAVE__USR_SRC_LINUX_INCLUDE_SCSI_SG_H]:
+ Include "/usr/src/linux/include/scsi/sg.
+ (sanei_scsi_cmd): Use Linux version if either HAVE_SCSI_SG_H or
+ HAVE__USR_SRC_LINUX_INCLUDE_SCSI_SG_H are defined.
+
+ * doc/xscanimage.man: Rename --no-shm to --no-xshm.
+
+Mon Apr 28 09:55:02 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.56 released.
+
+ * backend/qcam.c (sane_open): Move disabling of despeckle-filter
+ for b&w cameras to here (from init_options()).
+
+ * frontend/preferences.c: Add missing default value for FILENAME.
+
+ * backend/qcam.h: Add QC_BW_SET_CONTRAST,
+ QC_BW_AUTO_ADJUST_OFFSET, and QC_BW_GET_OFFSET. * backend/qcam.c
+ (sane_start): Use QC_BW_SET_CONTRAST when dealing with B&W camera.
+ Fix computation of QC_SET_NUM_H value. [Based on Guido Muensch's
+ patches.]
+
+ * frontend/scanimage.c (advance): Move out-of-memory error message
+ from scan_it() to here.
+ (scan_it): When height is known a priori, allocate one extra line
+ to avoid realloc() when image has been filled.
+
+ * backend/hp.c (BACKEND_NAME): Define as hp (reported by Henryk
+ Paluch).
+
+ * backend/mustek.c (request_sense): Increase result size from 4 to
+ 16 bytes to shut up aha1542 driver (reported by Mathias Lautner).
+
+ * frontend/scanimage.c (advance): Fix memory allocation logic
+ (bug reported by Matthias Lautner).
+
+ * doc/sane-dll.man: Clarify that pre-loaded backends are not
+ affected by dll.conf.
+
+ * doc/sane-pint.man: New file (contributed by Gordon Matzigkeit).
+
+ * backend/dll.c (RTLD_NOW): Define as 0 if dlfcn.h doesn't define
+ it.
+
+Wed Apr 23 23:03:47 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * backend/Makefile.in, frontend/Makefile.in: Specify full
+ filenames, rather than just the directory name for INSTALL
+ destinations. This Automakeism helps debugging when the target
+ directory doesn't exist.
+
+ * include/sane/config.h.in (HAVE_SYS_SCANIO_H): Define, for PINT's
+ sake.
+
+ * backend/pint.c: Prefix sane includes with <sane/...>.
+
+ * backend/dll.c (RTLD_NOW): Paramaterize, so that RTLD_LAZY is
+ used if RTLD_NOW is not defined.
+ (load): Try looking up the symbol with a leading underscore, if we
+ can't find it the first time.
+
+ Make dynamic loading conditional on HAVE_DLOPEN rather than the
+ library and header file.
+
+ * configure.in (enable_dynamic): Disable dynamic loading if the
+ system doesn't have dlopen.
+
+Tue Apr 22 00:17:41 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.55 released.
+
+ * frontend/xscanimage.c (browse_filename_callback): Initialize
+ FILENAME before calling gsg_get_filename().
+
+ * doc/sane.tex: Change obsolete \driver{DVIps} into DVIps document
+ style option.
+
+ * frontend/xscanimage.c (query): Update to new command name
+ length.
+
+Mon Apr 21 08:27:28 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/Makefile.in (install): Add rule to install man-pages.
+ (%.1 %.5): Add rule to generate man-pages (by substituting
+ actual paths).
+ (SECT1): New variable.
+ (SECT5): Ditto.
+ (MANPAGES): Ditto.
+
+ * doc/sane-pnm.man: New file.
+ * backend/pnm.README: Deleted.
+
+ * doc/sane-hp.man: New file.
+ * backend/hp.README: Deleted.
+
+ * doc/saned.man: New file.
+ * frontend/saned.README: Deleted.
+
+ * doc/sane-qcam.man: New file.
+ * backend/qcam.README: Deleted.
+
+ * doc/sane-mustek.man: New file.
+ * backend/mustek.README: Deleted.
+
+ * doc/sane-net.man: New file.
+ * backend/net.README: Deleted.
+
+ * doc/sane-dll.man: New file.
+ * backend/dll.README: Deleted.
+
+ * doc/xscanimage.man: New file.
+ * frontend/xscanimage.README: Deleted.
+
+ * frontend/preview.c (event_handler): Restore preview image only
+ if preferences.preserve_preview is TRUE.
+
+ * frontend/xscanimage.c (preview_options_dialog): Add an option
+ to control whether the preview image should be preserved.
+
+ * sanei/sanei_load_values.c (sanei_load_values): Copy string value
+ into temporary buffer that is opt->size bytes long. Then pass copy
+ to sane_control_option().
+
+ * AUTHORS (Backends): Updated according to recent changes.
+
+ * doc/sane.tex (The SANE Application Programmer Interface (API)):
+ Fix typo: replace () by {}.
+
+ * PROJECTS (Backend): Update PINT entry.
+
+ * frontend/xscanimage.c (prog_name): New variable.
+ (input_available): Use prog_name instead of hardcoding "xscan".
+ (preview_options_ok_callback): Ditto.
+ (preview_options_dialog): Ditto.
+ (usage): Ditto.
+ (interface): Ditto.
+ (main): Initialize prog_name.
+
+ * frontend/scanimage.c: Update for new name (scanimage instead of
+ scan).
+
+ * frontend/Makefile.in (SCAN_OBJS): Rename sources to xscanimage.c
+ and scanimage.c as well.
+
+Sun Apr 20 09:09:06 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.54 released.
+
+ * sanei/Makefile.in (LIBSANEI_LTOBJS): Remove @LTALLOCA@.
+ (LIBSANEI_OBJS): Remove @ALLOCA@.
+
+ * lib/Makefile.in: Invoke $(LIBTOOL) with --mode arg to avoid
+ depending on command names. Prefix $(LIBTOOL) invocation with
+ @-sign to reduce verbosity.
+ * frontend/Makefile.in: Ditto.
+ * backend/Makefile.in: Ditto.
+ * sanei/Makefile.in: Ditto.
+
+ * frontend/saned.c (_PATH_HEQUIV): Define if not defined yet..
+
+ * configure.in: Check for libgimp/gimp.h instead of -lgimp since
+ -lgimp cannot be linked by itself (it has an unresolved reference
+ to PLUG_IN_INFO).
+
+ * lib/strndup.c (strndup): Include <stdlib.h>.
+
+ * frontend/xscanimage.README: Update.
+
+ * sanei/sanei_scsi.c: Add missing "int" type in front of
+ sanei_scsi_max_request_size.
+
+ * configure.in: Check for -lintl, -lsocket, and -lnsl for
+ braindamaged SVR4 systems.
+
+ * frontend/scan.c (scan_it): Initialize min with 0xff, not ~0
+ (Sun CC complains otherwise).
+
+ * backend/Makefile.in: Use "ln -f -s", not "ln -sf", Solaris doesn't
+ like the former. Grrr...
+
+ * lib/alloca.c: Don't use xmalloc().
+
+ * frontend/saned.c (store_reclen): Declare BUF as a pointer to
+ SANE_Byte (not char).
+ (do_scan): Ditto.
+
+ * frontend/scan.c (fetch_options): Cast opt->name to (char *)
+ to suppress (spurious) warning.
+
+ * backend/dll.c (sane_init): Skip preloaded backends with no name.
+
+ * backend/hp.c (inquire): Cast BUF to (char *) to avoid warning.
+ (sane_read): Change type of NREAD to size_t (from ssize_t).
+
+ * include/sane/sanei_backend.h (u_int16_t): Define u_int8_t,
+ u_int16_t, and u_int32_t if necessary.
+
+ * include/sane/sane.h (sane_strstatus): Remove non-ANSI "const".
+ * backend/sane_strstatus.c (sane_strstatus): Ditto
+
+ * include/sane/sanei_debug.h (DBG): Define alternate version for
+ non-GNU C compilers.
+
+ * sanei/sanei_init_debug.c (sanei_debug) [!__GNUC__]: New function.
+ (max_level) [!__GNUC__]: New variable.
+
+ * include/sane/sanei_wire.h: Fix typo in prototype for
+ sanei_w_value_type.
+
+ * configure.in: Test for gtk_check_button_new() in libgtk.
+
+ * lib/Makefile.in (CPPFLAGS): Add -I../include/sane.
+
+ * frontend/scan.c (STRIP_HEIGHT): New macro.
+ (advance): Use above macro instead of hard-coding value.
+ (scan_it): Ditto.
+ (scan_it): Print error when out of memory.
+
+ * frontend/sane-style.rc: Make the curve in the graph red.
+
+ * frontend/preview.c (XSERVER_WITH_BUGGY_VISUALS): Define for now.
+ (preview_new): Avoid push_visual()/get_visual() since it seems to
+ cause problems with some XFree86 servers (and may be others as
+ well).
+
+ * frontend/preferences.h: Add member ADVANCED.
+ * frontend/preferences.c: Initialize member ADVANCED and add
+ an option descriptor for it.
+
+ * frontend/gtkglue.c (panel_build): Layout panel different: all
+ options are now in one column (advanced options are at the
+ bottom). The graph widget (if any), will be shown in a separate
+ column to the right of the options. Display a group only when
+ there is at least one option in it. Create graph widget if there
+ is at least one vector-valued option.
+ (gsg_sync): New function.
+ (gsg_set_advanced): Ditto.
+ (gsg_message_dialog_active): Rename from SHOWING_MESSAGE and make
+ global.
+
+ * frontend/gtkglue.h (GSGDialog): Rename member NOTEBOOK to
+ MAIN_HBOX. Add members ADVANCED_VBOX and ADVANCED.
+
+ * frontend/gtkglue.c (group_new): New function.
+ (curve_new): Ditto.
+ (vector_new): Ditto.
+
+ * backend/mustek.c (init_options): Initialize OPT_CUSTOM_GAMMA.
+ (sane_control_option): Handle OPT_CUSTOM_GAMMA.
+
+ * backend/mustek.h (OPT_CUSTOM_GAMMA): New option.
+
+ * configure.in (AC_CONFIG_HEADER): Update for new location.
+
+ * include/sane/config.h.in: Move to here from include/config.h.
+ * *.[ch]: Replace <config.h> with <sane/config.h> (except for
+ files in lib.
+
+ * frontend/saned.README: saned moved from bin/saned to sbin/saned.
+
+ * configure.in (AC_CHECK_HEADERS): Check for gtk/gtkcurve.h.
+
+ * backend/mustek.c (init_options): Undo changes of April 18th.
+
+ * frontend/Makefile.in (install): Install $(BINPROGS) in $(bindir)
+ and $(SBINPROGS) in $(sbindir).
+ (SBINPROGS): New variable.
+ (BINPROGS): Ditto.
+ (PROGRAMS): Define as concatenation of the two vars above.
+ (install): Create $(bindir) and $(sbindir) if necessary.
+
+Sat Apr 19 18:21:02 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/Makefile.in (scanimage): Rename "scan" binary to
+ "scanimage" to avoid name-collision with MH's scan command.
+
+ * backend/mustek.c (gamma_correction): Update according to new
+ gamma-table handling.
+
+ * backend/mustek.h: Declare gamma_table as 4 arrays of 256 words
+ each.
+
+ * backend/mustek.c (sane_control_option): Add missing return after
+ setting OPT_GAMMA_VECTOR.
+
+ * frontend/progress.h: Protect against multiple inclusion using
+ macro progress_h, not __PROGRESS_H__ (names starting with
+ underscores are reserved for libc/system).
+
+ * frontend/gtkglue.c: Remove include of <gtk.h>.
+ * frontend/xcam.c: Ditto.
+ * frontend/xscan.c: Ditto.
+
+ * frontend/gtkglue.h: Include <gtk/gtk.h> instead of <gtk.h>.
+ * frontend/progress.c: Ditto.
+
+ * Makefile.in (install): Install headerfiles.
+ (INSTALLED_INCLUDES): List of header files that need to be
+ installed.
+
+Sat Apr 19 18:15:03 1997 Michael K. Johnson <johnsonm@redhat.com>
+
+ * */*.[ch]: Prefix sane-includes with <sane/...>.
+ include/sane*: Move to include/sane subdirectory.
+
+Sat Apr 19 08:25:36 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/gtkglue.c (set_option): Add missing return and use
+ snprintf instead of sprintf.
+
+ * frontend/xscan.c (update_param): Multiply size by 3 if we're
+ dealing with a frame from a 3-pass image.
+
+Fri Apr 18 07:28:46 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (init_options): Mark all vector options as
+ SANE_CAP_ADVANCED.
+
+ * frontend/scan.c (scan_it): Fail if advance() fails.
+
+Thu Apr 17 08:59:00 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_read): Add debug statement.
+ (reader_process): Remove extraneous if-statement that had the
+ effect of not passing along any data in 3-pass mode.
+
+Wed Apr 16 09:16:01 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/preview.h: Add member CANCEL.
+ * frontend/preview.c (scan_start): Make p->cancel sensitive.
+ (scan_done): Make p->cancel insensitive.
+ (preview_new): Set p->cancel insensitive.
+
+ * frontend/preferences.h (Preferences): Add member "filename".
+ * frontend/preferences.c: Initialize new member "filename".
+ Declare member "filename" as a string.
+
+ * frontend/xscan.c (device_dialog): Rename "Files" to "File".
+ (quit_xscan): Call pref_xscan_save() before exiting. Replace
+ global variable filename by preferences.filename.
+
+ * frontend/xcam.c (main): Ditto.
+
+ * PROBLEMS: New file.
+
+ * frontend/gtkglue.c (scale_new): Set the adjustment page size to
+ 0.0. Make horizontal scale 200 pixels wide.
+
+ * frontend/xscan.c (device_dialog): Move gtk_widget_show
+ (ScanWin.shell) after pref_device_restore (0, 0).
+ (pref_device_restore): Make arg-less since callback arguments must
+ not be used.
+ (device_dialog): Remove dummy args from call to pref_device_restore().
+
+ * include/saneopts.h (SANE_TITLE_SCAN_TL_X, SANE_TITLE_SCAN_TL_Y,
+ SANE_TITLE_SCAN_BR_X, SANE_TITLE_SCAN_BR_Y): Shorten titles.
+
+ * frontend/xcam.c (main): Move gtk_widget_show(win.shell) to end
+ of function.
+
+ * backend/mustek.c (attach): Turn on MUSTEK_FLAG_USE_EIGHTS for
+ MFS-12000CX.
+ (sane_get_parameters): Must not depend on s->mode in this routine,
+ since s->mode is valid only once scanning has begun.
+
+Tue Apr 15 23:06:17 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_start): Issue SCAN_AREA and BACKTRACK
+ commands even during second and third pass.
+ (sane_get_parameters): Be sure to properly update the
+ params.format member during second and third pass.
+
+Sat Apr 12 11:40:52 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/scan.c (STRIP_HEIGHT): New macro.
+ (scan_it): Fix typo: test parm.lines instead of image.height.
+
+ * backend/pnm.c (hand_scanner): New variable.
+ (sane_control_option): Handle setting/reading of HAND_SCANNER
+ option.
+ (getparmfromfile): Set parms.lines to -1 when simulating
+ hand-scanner.
+ (sod): Add hand-scanner option descriptor.
+
+ * frontend/gtkglue.c (panel_build): Move gtk_widget_show
+ (notebook) to the very of this function. This works around the
+ notebook redrawing problems. Define WORKING_NOTEBOOK.
+
+ * frontend/xscan.c (interface): Call quit_xscan() if
+ device_dialog() did not end up with a non-NULL dialog.
+ (quit_xscan): Add missing exit() call.
+
+ * backend/mustek.c (attach): Print more debug info on detected
+ scanner (1 vs 3-pass, ADF & TA support).
+ (start_scan): Fix typo in code selecting the three-pass color filter.
+
+Sun Apr 13 23:53:02 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * backend/pint.c, backend/pint.h, backend/pint.README: Added to
+ distribution.
+
+Fri Apr 11 22:04:17 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.53 released.
+
+ * frontend/xscan.c: Default to "out.pnm" instead of "out.ppm".
+
+ * backend/mustek.c (get_image_status): Add debug message.
+ (sane_start): Only divide pixels_per_line by three if we're doing
+ a one-pass color scan.
+ (do_eof): New function.
+ (sane_read): Call do_eof() when done with a frame.
+ (do_cancel): Call do_eof().
+
+ * frontend/scan.c (write_pnm_header): New function.
+ (advance): Ditto.
+ (scan_it): Modify to support three-pass scanning and scanning of
+ images whose height is not known a priori (hand-held scanners).
+
+Wed Apr 9 14:39:59 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (ok_choose_dialog_callback): Make
+ argument-free.
+ (select_device_callback): Declare event as second argument and
+ call ok_choose_dialog_callback() if the callback was invoked
+ through a double-click.
+ (choose_device): Register select_device_callback() as
+ "button_press_event" handler instead of as "clicked" so we can
+ catch double-clicks.
+
+Tue Apr 8 10:31:47 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (init): Enable gtk_rc_parse() code (GTK-0.99.7
+ requires patch for gtkstyle.c).
+
+ * backend/hp.c (attach): Fix parenthization to shut up gcc.
+
+Mon Apr 7 13:08:45 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (preview_options_dialog): Rename "changed_text"
+ to "changed" to reflect latest GTK version.
+ (device_dialog): Ditto.
+ * frontend/gtkglue.c (text_entry_new): Ditto.
+
+ * Version 0.52 released.
+
+ * AUTHORS: Various updates.
+
+ * backend/mustek.README: Add Adaptec info.
+
+ * backend/mustek.c (sane_start): Call wait_ready() before any
+ other scanner command.
+ (wait_ready): New function.
+ (attach): Call wait_ready() instead of open-coding it.
+
+ * doc/sane.tex (subsection{\code{sane\_strstatus}}): Include
+ net.tex.
+ * doc/net.tex: New file.
+
+Thu Apr 3 08:51:13 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (update_param): Change type of SIZE to u_long
+ (from long) since under NetBSD there seem to be some odd sign
+ problems otherwise (compiler bug?).
+
+Wed Apr 2 07:15:41 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_read): Always deliver EOF after reading
+ 0 bytes.
+
+ * backend/qcam.c (reader_process): Fine-tune pixel interpolation.
+ (despeckle32): Ignore last red pixel in every line (it's always
+ black). Switch red and blue pixel location (the Connectix docs
+ are wrong).
+
+ * backend/mustek.c (start_scan): Fix typo that caused start[4] to
+ be set incorrectly.
+
+ * frontend/preview.c: Include <sys/param.h> to get PATH_MAX.
+
+Tue Apr 1 18:45:14 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (despeckle): New function.
+ (despeckle32): Ditto.
+ (init_options): Initialize OPT_DESPECKLE.
+ (reader_process): Add despeckling support.
+ (sane_control_option): Ditto.
+ (sane_start): Initialize req.despeckle.
+
+ * backend/qcam.h: New member DESPECKLE.
+
+ * frontend/preview.c (restore_option): Fix typo: it should be
+ SANE_ACTION_SET_VALUE (not _get_).
+
+ * backend/mustek.c (attach): Turn on MUSTEK_FLAG_USE_EIGHTS for
+ MFS-06000CX.
+
+ * backend/hp.c (attach): Allow both TYPE_PROCESSOR (0x03) and
+ TYPE_SCANNER (0x06) as the first inquiry byte---some scanners use
+ the former, others the latter.
+
+ * Version 0.51 released.
+
+ * configure.in: Check for gtk_tooltips_new in libgtk.
+
+Mon Mar 31 14:42:56 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * frontend/scan.c (main): Added full_optstring, to allow getopt to
+ do full parsing of the option arguments.
+
+ * backend/pnm.c (getparmfromfile): Need to round up the number of
+ bytes per line when scanning bitmaps.
+
+Mon Mar 31 07:48:50 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (attach): Send a dummy black-level command. The
+ first black-level command aftera camera reset doesn't appear to
+ "take."
+
+ * lib/strndup.c: Correct typo: HAVE_STRDUP -> HAVE_STRNDUP.
+
+ * frontend/xscan.c (pref_set_tooltips): New function.
+ (pref_build_menu): Build tooltip submenu.
+
+ * frontend/preferences.h: New member TOOLTIPS_ENABLED.
+ * frontend/preferences.c: Add entry for TOOLTIPS_ENABLED.
+
+ * frontend/gtkglue.h: Add members TOOLTIPS, TOOLTIPS_FG, and
+ TOOLTIPS_BG.
+
+ * frontend/gtkglue.c (set_tooltip): New function.
+ (autobutton_new): Add argument TOOLTIPS and add button-description
+ via set_tooltip().
+ (button_new): New args TOOLTIPS & DESC. Set DESC as tooltip help
+ string.
+ (scale_new): Ditto.
+ (option_menu_new): Ditto.
+ (text_entry_new): Ditto.
+ (panel_destroy): Destroy dialog tooltips as well.
+ (panel_build): Create tooltips and allocate colors for it; pass
+ new args to above functions.
+ (gsg_set_tooltips): New function.
+
+ * Version 0.5 released.
+
+ * backend/Makefile.in (install): Add missing double-quotes to
+ $(LIBS) and $(CONFIGS). Also create a symlink for libsane.a.
+
+ * ltconfig: Revert back to version 0.9.
+ * ltmain.sh: Ditto.
+
+ * frontend/scan.c (print_option): Substitute our own help string
+ for -x and -y options.
+ (main): Remove BROKEN_GETOPT code.
+
+ * frontend/Makefile.in (CPPFLAGS): Undo yesterday's change.
+ * lib/getopt1.c: Ditto.
+ * lib/getopt.c: Ditto.
+
+ * frontend/scan.c (main): Add some clever getopt () hackery to
+ work around multi-scan getopt () bug (patch by Gord Matzigkeit).
+
+ * backend/qcam.README: Correct path of configuration file.
+
+Sun Mar 30 21:42:12 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/Makefile.in (CPPFLAGS): Add back -DBROKEN_GETOPT.
+
+ * frontend/scan.c (main): Reinstantiate BROKEN_GETOPT code.
+ getopt_long() is _STILL_ broken. ;-(
+
+ * lib/getopt.c: Use this code if __GNU_LIBRARY__ <= 6. Early
+ versions of glibc had a buggy getopt().
+ * lib/getopt1.c: Ditto.
+
+ * frontend/Makefile.in (xscan): Mention $(LIBSANEI).
+
+ * frontend/xscan.c: Include <libgimp/gimp.h>, not <gimp.h>.
+
+ * Makefile.in (distclean): Mention libtool.
+ * configure.in (AC_CHECK_FUNCS): Ditto.
+
+ * include/config.h.in: Add undef of STRSEP.
+
+ * sanei/sane_strstatus.c: Move to backend directory to minimize
+ chance of confusing this with a SANE-internal routine.
+
+ * sanei/Makefile.in (LIBSANEI_OBJS): Remove sane_strstatus.o.
+ (LIBSANEI_LTOBJS): Remove sane_strstatus.lo.
+
+ * backend/Makefile.in (libsane-%.la): Mention sane_strstatus.lo
+ explicitly (every SANE backend library MUST define this function
+ so we can switch backends at will).
+
+ * frontend/Makefile.in (SCAN_OBJS): Remove getopt.o, getopt1.o.
+
+ * Makefile.in (SUBDIRS): Mention lib as first directory.
+
+ * configure.in (AC_OUTPUT): Mention lib/Makefile.
+
+ * lib/strsep.c: New file.
+ * lib/strndup.c: Ditto.
+ * lib/Makefile.in: Ditto.
+
+ * sanei/test_wire.c (main): Initialize codecs through
+ sanei_w_init().
+
+ * sanei/sanei_codec_bin.c (sanei_codec_bin_init): Ditto.
+
+ * sanei/sanei_codec_ascii.c (sanei_codec_ascii_init): Remove
+ w->buffer initalization---this function should be called through
+ sanei_w_init () only.
+
+ * sanei/sanei_scsi.c: Rename _sanei_scsi_max_request_size to
+ sanei_scsi_max_request_size.
+
+ * backend/mustek.c (reader_process): Rename macro
+ SANEI_SCSI_MAX_REQUEST_SIZE to variable
+ sanei_scsi_max_request_size.
+
+ * include/sanei_scsi.h: Rename _sanei_scsi_max_request_size to
+ sanei_scsi_max_request_size (names with a leading underscore are
+ reserved for libc/system).
+ (SANEI_SCSI_MAX_REQUEST_SIZE): Remove macro.
+
+ * frontend/scan.c (main): Add a brief description of the program.
+
+ * frontend/getopt.c: Move to lib.
+ * frontend/getopt1.c: Ditto.
+
+ * backend/pnm.c (enum ppm_type): Remove non-ANSI trailing comma.
+ Correct struct indentation.
+
+ * include/lalloca.h: Isolate alloca cruft in this file.
+ * frontend/gtkglue.c: Include lalloca.h in place of alloca hack.
+ * frontend/dll.c: Ditto.
+ * frontend/scan.c: Ditto.
+ * sanei/sanei_load_values.c: Ditto.
+ * sanei/sanei_scsi.c: Ditto.
+
+Sat Mar 29 00:14:37 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * backend/pnm.c (sane_read): Slurp in RGB files all at once,
+ rather than limping along three bytes at a time.
+
+ * frontend/xscan.c (advance): Only define if HAVE_LIBGIMP.
+
+ * backend/pnm.c (sane_read, sane_start, getparmfromfile): Handle
+ grayscale and monochrome bitmapped PNM files.
+
+ * frontend/scan.c (main): Remove BROKEN_GETOPT workaround---the
+ new getopt() works properly when making multiple passes over the
+ argument list.
+
+Fri Mar 28 21:33:36 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * configure.in: Make the QuickCam device conditional on whether or
+ not the ioperm function exists.
+
+ * sanei/sanei_scsi.c: created a stubbed version of sanei_scsi_cmd.
+
+ * frontend/scan.c (main): Only print error messages to stderr.
+ Use fputs or fputc when it is possible to avoid printf.
+
+ * sanei/sanei_wire.c (sanei_w_array, sanei_w_ptr, sanei_w_init),
+ sanei/sanei_save_values.c (sanei_save_values),
+ sanei/sanei_codec_ascii.c (ascii_w_string): Return an error if
+ malloc fails.
+
+ * sanei/test_wire.c (main): Added --readonly flag to help test
+ wire robustness.
+
+ * backend/Makefile.in (LIBSANEI): Deleted the `EXTRA' variable,
+ and used the convenience library, ../sanei/libsanei.a.
+
+Sat Mar 29 10:19:58 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex: Change version from 0.42 to 0.5.
+
+ * README: Add pointer to frontend & backend specific README files.
+
+ * backend/net.c (connect_dev): Ensure dev->ctl gets closed and
+ reset to -1 in case of failure.
+
+ * configure.in: Look for gtk_preview_new() in libgtk so we can
+ ignore old GTK versions against which we can't build.
+
+ * (config.sub): Replace with version that comes with
+ autoconf-2.12. The version that came with libtool-0.9
+ doesn't like i686-unknown-linux.
+
+Fri Mar 28 13:12:17 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (subsection{sane_get_select_fd}): Remove extraneous
+ backslash.
+
+ * backend/stubs.c (sane_cancel): Don't return anything.
+
+ * include/sane.h: Remove trailing comma (for -pedantic).
+
+ * frontend/xscan.c (interface): Complain when trying to call
+ a device that's unavailable.
+ (select_device_callback): Correct prototype.
+
+ * frontend/xcam.c (main): Remove unused variable `label.'
+
+ * backend/net.c (sane_cancel): Call SANE_NET_CANCEL.
+ (sane_start): Handle failure of SANE_NET_START.
+
+ * frontend/saned.c (process_request): Implement SANE_NET_CANCEL.
+
+ * frontend/gtkglue.h (GSGDialogElement): Remove member "label".
+ * frontend/gtkglue.c: Update accordingly.
+ (button_new): Use gtk_check_button_new_with_label () to simplify
+ this function.
+
+ * frontend/gtkglue.c (unit_string): New function.
+ (panel_build): Append unit_string () to option's title if
+ the unit is not SANE_UNIT_NONE. Use "title" instead of opt->title
+ when creating widgets.
+
+ * frontend/preview.c (preview_update): Compute width/height as
+ (max - min + eps) where eps is 1 for integer coordinates and
+ SANE_UNFIX(1) for fixed-point coordinates.
+ (display_partial_image): Support different scaling in x/y
+ direction. In the case where surface_unit == SANE_UNIT_PIXEL,
+ compute xscale/yscale based on the ratio between the _expected_
+ width/height and the actual width/height. If they're not equal,
+ the backend must be doing some scaling (e.g., transfer-scale in
+ the qcam backend).
+
+ * frontend/xscan.c (init): Disable gtk_rc_parse () calls for now
+ since gtk styles seem to be a bit buggy right now.
+ (scan_done): Remove input_tag if it is >= 0.
+
+ * frontend/gtkglue.c: Include <preferences.h>.
+ (panel_build): For fixed-point range-constraints scale min/max/quant
+ based on the preferred metric.
+ (scale_update): Ditto.
+ (gsg_update_scan_window): Ditto.
+
+ * backend/mustek.c (sane_control_option): For OPT_GAMMA_VECTOR_*
+ options, fail with SANE_STATUS_INVAL if the vector has zero length
+ (i.e., hasn't been set yet).
+
+ * frontend/progress.c (progress_new): Don't make Cancel the
+ default-button---it's too easy to cancel by mistake otherwise.
+
+ * frontend/sane-style.rc: New file.
+
+ * frontend/xscan.c (init): New function. Parse gtk_rc_parse ()
+ on /usr/local/share/sane-style.rc and ~/.sane/sane-style.rc if
+ those files exist.
+
+ * configure.in (CPPFLAGS): Add PATH_SANE_DATA_DIR.
+
+ * frontend/gtkglue.c (gsg_warning): New function.
+ (gsg_message): New function.
+ (gsg_error): Implement in terms of gsg_message ().
+
+Thu Mar 27 16:52:27 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/gtkglue.c (gsg_make_path): Terminate buffer with '\0'
+ before attempting mkdir().
+
+ * frontend/xcam.c (main): Use gtk_menu_item_new_label () instead
+ of gtk_label_new ()/gtk_menu_item_new ().
+
+ * frontend/preview.c (establish_selection): Invoke
+ param_change_callback only if non-NULL.
+ (preview_update): Convert scale range to inches if that's user's
+ preference.
+
+ * frontend/xcam.c (delayed_switch): New function.
+ (device_activate_callback): Call delayed_switch() rather than
+ executing that code directly. Pete tells me GTK is not designed
+ to have a widget rebuilt while a submenu is active.
+
+ * frontend/gtkglue.c (panel_build): Avoid using notebook widget
+ until GTK+ has been fixed.
+ (idle_handler): New function: rebuild dialog if dialog->rebuild is
+ set.
+ (set_option): Set dialog->rebuild to TRUE and schedule
+ idle_handler() rather than directly calling panel_rebuild(). Pete
+ tells me GTK is not designed to have a widget rebuilt while a
+ submenu is active.
+ (gsg_refresh_dialog): Ditto.
+
+Thu Mar 27 14:54:23 1997 Gordon Matzigkeit <gord@gnu.ai.mit.edu>
+
+ * backend/Makefile.in: Converted all for statements that might be
+ empty to use a temporary list variable.
+
+ * frontend/Makefile.in (scan): Added getopt.o, getopt1.o to scan
+ dependencies.
+
+ * frontend/getopt.c, frontend/getopt1.c, include/getopt.h: Added
+ to the distribution.
+
+ * backend/net.c (connect_dev), frontend/saned.c (main): Don't use
+ TCP_NODELAY if it has not been defined. Look up tcp protocol
+ number if SOL_TCP is not defined.
+
+ * sanei/test_wire.c (main): lseek after changing direction, or the
+ direction change ends up at the end of the output file.
+ Added option parsing, a usage message, and other cleanups.
+
+ * sanei/sanei_codec_ascii.c (sanei_codec_ascii_init),
+ sanei/sanei_codec_bin.c (sanei_codec_bin_init): Initialize the
+ wire if it has a 0-length buffer.
+
+ * sanei/sanei_wire.c (sanei_w_init): Only call the codec_init_func
+ if it is not NULL.
+
+ * sanei/sanei_scsi.c: Parameterize inclusion of generic SCSI
+ headers based on HAVE_SCSI_SG_H, HAVE_SYS_SCSI_H, or
+ HAVE_SYS_SCSIIO_H.
+
+ * configure.in (AC_CHECK_HEADERS): Check for scsi/sg.h,
+ sys/scsi.h, and sys/scsiio.h.
+
+ * sanei/sanei_load_values.c, sanei/sanei_scsi.c, backend/dll.c:
+ Replaced unconditional alloca.h include with the cruft suggested
+ by the Autoconf manual.
+
+ * sanei/alloca.c: Add to distribution.
+
+ * sanei/Makefile.in: Eliminate GNU make dependencies, and use
+ @ALLOCA@ and @LTALLOCA@ as appropriate.
+
+ * configure.in (AM_FUNC_ALLOCA): Use it.
+
+ * aclocal.m4 (AM_FUNC_ALLOCA): Define it.
+
+Wed Mar 26 17:25:49 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_wire.c (sanei_w_status): Update *v only when decoding.
+ (sanei_w_bool): Ditto.
+ (sanei_w_constraint_type): Ditto.
+ (sanei_w_value_type): Ditto.
+ (sanei_w_unit): Ditto.
+ (sanei_w_action): Ditto.
+ (sanei_w_frame): Ditto.
+
+ * frontend/xscan.c (quit_xscan): Always invoke gtk_main_quit()
+ (not just in standalone mode).
+ (quit_callback): Correct prototype.
+
+ * backend/pnm.c (sod): Fix doc-string for option "three-pass".
+
+ * frontend/xscan.c (advance): New function.
+ (input_available): Support 1 bpp frames. Call advance() instead
+ of open-coding it. Add RED/GREEN/BLUE frame support in GIMP mode.
+ Complain when encountering unknown depth.
+ (ScanWin): add member first_frame.
+ (scan_start): Initialize first_frame and frame_offset in
+ GIMP mode.
+
+ * Integrate force unidirectional mode patch by Guido Muesch
+ <odiug@faho.rwth-aachen.de>:
+ * backend/qcam.c (attach): Force uni-directional mode if port
+ address starts with `u'.
+ (attach): Add debug statement to print QCam version.
+
+ * Integrate 3-pass patches by Heiko
+ <Heiko.Schroeder@Post.RWTH-Aachen.de>:
+ * backend/mustek.cb
+ (scan_area_and_windows): Use 1/8" mode when MUSTEK_FLAG_USE_EIGHTS
+ is on (instead of pixel unit).
+ (mode_select): Set bit 3 in mode byte only if
+ MUSTEK_FLAG_USE_EIGHTS is off.
+ (encode_resolution): Don't do funky encoding for 3-pass scanners
+ in 10% resolution mode. It seems the docs are wrong and the
+ actual scanners require a much simpler setup.
+
+ * frontend/preview.h: Add include of <sys/types.h>.
+
+Sat Mar 22 16:37:34 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (input_available): Reset ScanWin.x to zero at
+ the end of each line.
+ (input_available): Reset tile_offset to zero after updating a
+ tile.
+ (scan_done): Call gimp_display_new() to display the newly acquired
+ image. Draw final few lines of image if image height is not a multiple
+ of the tile-height.
+
+ * frontend/saned.c (process_request): quit when receiving
+ unexpected procedure number---ignoring is dangerous.
+
+ * backend/dll.c (load): Fix off-by-one bug in allocation of
+ libname.
+
+ * frontend/xcam.c (prompt_for_device_name): Move grab-default
+ call behind signal_connect since otherwise the default action
+ won't work.
+
+ * frontend/xscan.c (choose_device): Let "Ok" button be the one
+ that gets activated by default (by hitting the Return key).
+
+ * frontend/preview.c (preview_destroy): Rename save_preview_image
+ to preserve_preview_image.
+ * frontend/preview.h: Ditto.
+
+ * frontend/preview.c (restore_preview_image): New function.
+ (preview_destroy): Save preview image if it exists.
+ (preview_scan): New parameter SELECTION_ONLY. If true,
+ preview-scanning is limited to the selected area.
+
+ * frontend/xscan.c (scan_done): Call quit_xscan() to exit.
+ (quit_xscan): Destroy preview if ScanWin.preview is non-NULL.
+
+ * frontend/preview.c (draw_selection): Don't draw if p->gc is
+ NULL (i.e., if windows aren't mapped yet).
+
+ * frontend/xscan.c: Move HAVE_LIBGIMP-specific code further
+ down (past the type & global variable decls).
+
+ * configure.in (CPPFLAGS): Make --disable-shared impy
+ --enable-preload.
+
+ * include/config.h.in: Add HAVE_STRNDUP.
+
+Fri Mar 21 00:01:00 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Implemented FreeBSD
+ version (untested).
+
+ * sanei/sanei_load_values.c: Include <alloca.h>
+
+ * frontend/preview.c (update_selection): New function to set
+ selection based on current scan-area option values.
+ (preview_update): Call update_selection ().
+
+ * sanei/sanei_save_values.c: Add copyright notice.
+ * sanei/sanei_load_values.c: Add copyright notice and explanation
+ of algorithm.
+ (BITS_PER_LONG): New macro.
+ (SET): Ditto.
+ (IS_SET): Ditto.
+ (sanei_load_values): Add variables caused_reload and keep_going to
+ keep track of what options caused a reload_option and whether
+ the whole option-value setting process should be repeated.
+
+ * include/config.h.in: Add #undef HAVE_LIBGIMP.
+ * frontend/xscan.c: Put all GIMP-dependencies inside
+ #ifdef HAVE_LIBGIMP.
+ Include <config.h>.
+
+ * sanei/sanei_wire.c (sanei_w_init): Initialize status to 0.
+ (sanei_w_free): Preserve existing direction and do not flush i/o.
+ (sanei_w_space): Return EINVAL if reading 0 bytes.
+
+Thu Mar 20 09:11:21 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/gtkglue.h (dev_name): New member.
+ * frontend/gtkglue.c (gsg_destroy_dialog): free dialog->dev_name.
+ (gsg_create_dialog): Keep copy of device name in dev_name member.
+
+ * include/sanei_backend.h: Move stubs into backend/stubs.c and
+ define redirection macros only if STUBS is not defined.
+ * backend/stubs.c: New file.
+
+ * configure.in (AC_PROG_RANLIB): Removed. No longer needed with
+ libtool.
+ * (frontend/Makefile.in): Adapt to libtool.
+ * (backend/Makefile.in): Ditto.
+ * (sanei/Makefile.in): Ditto.
+
+ * backend/mustek.c (attach): Check result[0] == 0x06 to find out
+ whether we're dealing with a scanner (rather than attemting to
+ find the string "SCANNER" ).
+
+ * backend/hp.c (sane_read): Initialize nread with max_len, not
+ *len.
+ (sane_get_parameters): Add missing `== 0' comparison for strcmp()
+ calls.
+ (inquire): Generalize so we can inquire any quantity and improve
+ parsing.
+ (attach): Use reasonable default value if inquiry of a quantity
+ fails.
+ (sane_start): Report error if inquiry of a scan parameter fails.
+
+Wed Mar 19 18:03:38 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xcam.c (prompt_for_device_name): grab default for OK
+ button (doesn't seem to work, though).
+
+ * frontend/progress.c (progress_new): Connect progress_cancel()
+ via signal_connect(), not signal_connect_object() and pass P, not
+ P->SHELL.
+ (progress_cancel): Don't free progress structure (must be done by
+ app).
+
+ * frontend/xscan.c (input_available): New function.
+ (scan_done): Ditto.
+ (scan_start): Ditto.
+ (progress_cancel): Simply call sane_cancel().
+ (scan_dialog): Moved most of the code to above functions.
+
+ * frontend/gtkglue.c (get_filename_button_clicked): New function.
+ (gsg_get_filename): Ditto.
+
+ * frontend/xscan.c (scan_dialog): Do not quit xscan when in
+ standalone mode.
+ (scan_dialog): Prompt for output filename in standalone mode.
+ (filename): New variable.
+
+ * backend/pnm.c (sane_control_option): Remove "pnm." prefix
+ in debug messages.
+
+ * backend/qcam.c (sane_cancel): Remove "qcam." prefix in debug
+ messages.
+
+ * backend/mustek.c: Remove "mustek." prefix in debug messages.
+
+Tue Mar 18 17:30:29 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_close): Remove superfluous "[mustek]" in
+ debug string.
+
+ * sanei/sanei_scsi.c (sanei_scsi_cmd): Implement HP-UX version
+ of this function (untested).
+
+ * backend/qcam.c (reader_process): Enable code to handle 4 bpp
+ and 6 bpp cases.
+
+Thu Mar 13 13:15:21 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (subsection{Scan Area Options}): Attempt to
+ clarify the meaning of "top-left" corner.
+
+Tue Mar 11 07:12:53 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/gtkglue.c (panel_build): Fix typo in matching of
+ "resolution" option (missing == 0).
+
+Mon Mar 10 20:19:06 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Announced pre0.5 snapshot.
+
+ * backend/qcam.h: Make transfer-scale part of the "mode" group.
+
+ * backend/qcam.c (sane_read): Moved return of SANE_STATUS_EOF
+ behind test for delivering EOF.
+
+ * frontend/xscan.c (device_dialog): Relabel "Cancel" button to
+ "Quit".
+
+ * backend/qcam.c (init_options): Set SANE_CAP_ADVANCED for geometry
+ group.
+ * backend/mustek.c (init_options): Ditto.
+
+ * backend/pnm.c (pass, three_pass): New variables.
+ (sod): Add option "three-pass" to simulate a three-pass scanner.
+ (sane_control_option): Add support for three_pass option.
+ (getparmfromfile): In three-pass mode, set format and last_frame
+ based on `pass'.
+ (sane_start): If input file is open already, fail unless we're
+ scanning the next frame of a three-pass image.
+ (sane_read): Handle three-pass case.
+
+Sun Mar 9 13:20:19 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/gtkglue.c (text_entry_callback): Only call
+ gtk_entry_set_text() if the backend modified the string. Otherwise,
+ infinite recursion occurs on any change (since the change results
+ in a change...).
+
+ * frontend/xcam.c (next_frame): Reset win.remaining to zero.
+
+ * backend/qcam.c (init_options): Set size of "resolution" option
+ to sizeof("High").
+
+ * doc/sane.tex (subsection{Scan Area Options}): Allow word-list
+ as a constraint.
+
+ * configure.in (CFLAGS): Add -D_GNU_SOURCE to CFLAGS since we
+ now depend on snprintf ().
+
+ * frontend/xscan.c (device_dialog): Fix typo: PixelHeight should
+ be > 0, not == 0 in order for us to create the preview window.
+ (device_dialog): Ditto.
+ (device_dialog): Add ScanWin.preview to frame container.
+
+Sat Mar 8 10:19:41 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (subsection{sane_get_select_fd}): Clarify what
+ must happen when the end of a frame has been reached.
+
+ * frontend/xcam.c (input_available): Stop when sane_read() returns
+ 0 bytes. Fix typo: win.data needs to be set to dst, not src, on
+ exit.
+
+ * backend/qcam.h (read_fd): New member.
+ * backend/qcam.c (sane_get_select_fd): Return read_fd instead of
+ from_child.
+ (sane_open): Initialize s->read_fd to -1.
+ (sane_close): Close s->select_fd if >= 0.
+ (sane_start): Make read_fd dup() of s->from_child.
+ (sane_cancel): Close s->read_fd if >= 0.
+ (sane_set_io_mode): Modify s->read_fd instead of s->from_child.
+
+ * frontend/scan.c: Include <sanei.h> for NELEMS macro.
+ * frontend/xcam.c: Ditto.
+
+ * configure.in (CPPFLAGS): Add defines for V_MAJOR and V_MINOR.
+ (V_MAJOR, V_MINOR): New variables.
+
+ * sanei/Makefile.in (SANEI_OBJS): Mention sanei_net.o.
+
+ * include/sanei_net.h: New file (split from sanei_wire.h).
+ * sanei/sanei_net.c: New file (split from sanei_wire.c).
+
+ * configure.in: Add -Wall to CFLAGS when using gcc.
+
+ * frontend/Makefile.in (saned): List -lsanei before -lsane
+ so saned never depends on sanei_*-routines that may be present
+ in -lsane (the only dependencies for that library must be
+ on sane_* names).
+
+ * backend/Makefile.in (LIBS): Remove -ldl (configure will add
+ it if available).
+ (SHLDFLAGS): Use -usanei_init instead of --whole-archive option.
+ (SHLDPOSTFLAGS): Remove --no-whole-archive.
+
+ * backend/dll.c: Add include of <config.h>.
+ (DYNAMIC): New macro. Defined it dynamic loading support is
+ available and enabled.
+ Include <dlfcn.h> only when DYNAMIC is defined.
+ (load): Make no-op when DYNAMIC is not defined.
+ (sane_exit): Never call dlclose() if DYNAMIC is not defined.
+
+ * include/sanei_scsi.h: Rename from genscsi.h and rename prefix
+ from `genscsi_' to `sanei_scsi_'.
+ * sanei/sanei_scsi.c: Ditto.
+ * backend/mustek.c: Rename `genscsi_' to `sanei_scsi_'.
+
+ * configure.in: Check for availability of -ldl and <dlfcn.h>.
+
+Fri Mar 7 15:21:38 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * sanei/sanei_wire.c: New file.
+ * sanei/sanei_codec_bin.c: Ditto.
+ * sanei/sanei_codec_ascii.c: Ditto.
+
+ * backend/dll.c (sane_exit): Call dlclose() only if handle is
+ non-NULL.
+ (sane_init): Chain together preloaded backends.
+
+ * backend/qcam.c (attach): Make static.
+ (sighandler): Ditto.
+ (qc_getstatus): Ditto.
+ * backend/mustek.c (attach): Ditto.
+
+ * backend/dll.c (op_name): Remove `sane_' prefix.
+
+ * sanei/sanei_init_debug.c (sanei_init_debug): Upcase backend
+ name when building environment variable name.
+
+ * backend/genscsi.c: Make use of sanei_debug.h.
+
+ * backend/mustek.c: Adapt to use sanei_backend.h.
+ * backend/net.c: Ditto.
+ * backend/pnm.c: Ditto.
+ * backend/qcam.c: Ditto.
+
+ * backend/dll.c (sane_exit): Fix typo that resulted in the
+ last backend not being exited.
+
+Thu Mar 6 21:25:27 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (subsection{\code{sane\_init}}): Allow
+ authorization callbacks during sane_start() but not during
+ sane_read().
+
+Tue Mar 4 21:04:16 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_close): Print debug message when trying
+ to close an unknown handle.
+
+Thu Feb 27 18:10:20 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (chapter{Contact Information}\label{chap:contact}):
+ Add `listserv.' to mailing list address---seems to be needed for
+ subscriptions etc.
+
+Sun Feb 9 12:54:20 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.README: Add pointer to Ingmar's 53c400 patch.
+
+Sat Feb 8 11:49:24 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (line_distance): Add more debug output.
+
+Fri Feb 7 19:21:36 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (line_distance): Remove erroneous #ifdef
+ around FACTOR and COLOR.
+
+ * doc/sane.tex (subsection{sane_init}): Make username/password
+ fixed length arrays so no malloc/free magic is needed.
+ (subsection{Preview Mode Option}): New section.
+
+ * include/sane.h: Ditto.
+
+ * include/sane.h (SANE_Char): New type.
+
+Tue Feb 4 18:47:52 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_get_parameters): Correct typo: replace
+ s->pass with s->params.format.
+
+Fri Jan 31 16:16:26 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (attach): Print debug message when using
+ special line-distance algorithm.
+ Enable special line-distance algorithm only for firmware
+ revisions < 1.02.
+ Determine fw revision based on INQUIRY result.
+
+Thu Jan 30 21:22:38 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (section{Attaching to a SANE backend}): Rename
+ metanet -> net, netproxy -> saned, metadl -> dll and update
+ hierarchy figure as well. Added autolum meta backend as a
+ filter example.
+
+ * TODO: Rename metanet -> net, metadl -> dll.
+
+ * AUTHORS (Frontends): Rename metanet -> net, metadl -> dll,
+ mention saned and xcam and sort entries alphabetically.
+
+ * backend/net.c (sane_control_option): Replace all occurances of
+ metanet with net.
+ * backend/net.README: Ditto.
+ Rename env var METANETHOST to SANE_NET_HOST.
+
+ * backend/dll.README: Replace all occurances of metadl with dll.
+ * backend/dll.c: Ditto.
+
+ * backend/dll.conf: Comment out metanet since it's a bit of a
+ security risk (no authentication just yet).
+
+ * backend/Makefile.in (CONFIGS): New macro (list of config files)
+ (install): Change install rule so existing configuration files
+ are not overwritten.
+ Replace all occurances of metanet with net.
+
+ (V_MINOR): Bump up to 43.
+
+Tue Jan 28 08:17:18 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/Makefile (saned): Mention -lsanei before -lsane so
+ saned does not incorrectly depend on sanei_printf/sanei_scanf in
+ -lsane (if it happens to define those symbols).
+
+ * backend/metanet.c (sane_init): Rename SANE_Authorization_Callback
+ to SANE_Auth_Callback.
+ * backend/mustek.c (sane_init): Ditto.
+ * backend/pnm.c (sane_init): Ditto.
+ * backend/metadl.c (sane_init): Ditto.
+
+ * frontend/saned.c (main): Put output socket in TCP_NODELAY mode.
+ Include of <sys/socket.h>
+
+ * backend/metanet.c (openit): Ditto.
+
+Mon Jan 27 19:32:29 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+
+ * doc/sane.tex (subsection{Device Descriptor Type}): Change vendor
+ name "None" to "Noname".
+ * backend/pnm.c (dev): Change vendor name from "noname" to "Noname".
+
+ * include/sane.h (SANE_STATUS_ACCESS_DENIED): New status value.
+ * sanei/sane_strstatus.c (sane_strstatus): Return appropriate
+ status string.
+
+ * frontend/xscan.c (scan_dialog): Don't depend on first_frame
+ when creating image---the old code didn't work for R/G/B-only
+ frames anyhow, so there is no point pretending.
+
+ * include/sane.h (SANE_Parameters): Rename first_frame to
+ last_frame.
+ * backend/metanet.c (sane_get_parameters): Update accordingly.
+ * backend/qcam.c (sane_get_parameters): Ditto.
+ * frontend/saned.c (readcmd): Ditto.
+ * frontend/test.c (testsane): Ditto.
+ * backend/mustek.c (sane_get_parameters): Set last_frame unless
+ the current pass is acquiring a red- or green-only frame.
+
+ * doc/sane.tex (subsection{sane_get_parameters)): Change
+ FIRST_FRAME into LAST_FRAME.
+
+ * backend/metanet.c: Initialize PEER with -1.
+ (sane_get_select_fd): Return PEER and succeed if not negative.
+
+ * include/netsane.h (ns_printf, ns_scanf, netfd_wr, netfd_rd):
+ Remove (obsolete).
+
+ * frontend/saned.c: Increase STRBUF size to 32KB to get better
+ scan_read() throughput.
+
+ * include/sane.h (SANE_Athorization_Callback): Return void
+ (instead of int) and make USERNAME and PASSWORD (pointers to)
+ return values.
+
+ * frontend/saned.c (netsane_auth_callback): Update prototype.
+
+ * backend/metanet.c (sane_init): Move assignments out of
+ if-conditional for clarity (and to avoid gcc warning).
+
+ * sanei/sanei_printf.c: Include <memory.h>, <string.h>.
+
+ * backend/Makefile.in (libsane-mustek.a): Replace
+ ../sanei/sane_strstatus.o with appropriately defined EXTRA
+ macro.
+
+ * backend/mustek.c (attach): Initialize ld.mode to MLD_NORMAL for
+ all scanners but MFS-12000SP.
+ (line_distance): In MD_MFS correction mode, do not issue LD
+ command.
+ (sane_close): Free s->ld.red_buf if non-NULL.
+ (fix_line_distance_mfs): New function.
+ (fix_line_distance_normal): Rename from fix_line_distance().
+ (reader_process): In MLD_MFS line-distance mode, call the
+ mfs-specific routine, not the normal one.
+
+ * backend/mustek.h (Mustek_Scanner): New members ld.red_buf,
+ ld.green_buf.
+ (MUSTEK_FLAG_LD_MFS): New flag to indicate when MFS-specific
+ line-distance correction is needed.
+
+ * backend/metanet.c: Fix up some minor formatting problems due
+ to indent.
+
+ * Merge in Andy's netsane diffs.
+
+Sun Jan 26 00:04:22 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (zoom_in_preview): Ignore selections of zero
+ or negative width/height.
+ (set_max_selection): Use SANE_UNFIX() instead of open coding.
+ Adapted to use gtkglue.
+
+ * backend/metadl.c (sane_init): Grab authorization callback.
+ (authorization_callback): New variable.
+ (load): Pass authorization callback to init function.
+
+ * frontend/gtkglue.h (gsg_destroy_dialog): Add param_callback.
+
+Sat Jan 25 17:35:52 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/Makefile.in (distclean): Mention $(TESTPROGRAMS).
+
+ * backend/metanet.c (copy_opt): Fix constraint-length computation.
+
+ * backend/metadl.c (sane_get_devices): Pass along LOCA_ONLY arg
+ to backend.
+
+ * frontend/xcam.c (main): Remove extraneous calls to gtk_exit()
+ and sane_exit().
+
+ * frontend/scan.c (main): Install sane_exit() as atexit handler.
+
+ * backend/metadl.c (sane_get_devices): Ignore NULL BE_LIST.
+
+ * frontend/saned.c (quit): New function.
+ (main): catch SIGALRM, and SIGPIPE.
+
+ * backend/metanet.c (sane_get_devices): Return empty list of
+ LOCAL_ONLY is TRUE.
+
+ * frontend/saned.c (readcmd): Don't take LOCAL arg from
+ request---always pass SANE_TRUE!
+
+ * doc/netprotocol.doc (sane_get_devices): Don't need LOCAL arg.
+
+ * include/sanei.h: Include <sane.h>.
+
+ * frontend/test.c (testsane): Print status message instead of
+ status code and make robust against failed calls. Use fprintf(stderr
+ instead of printf.
+
+ * backend/qcam.c (reader_process): Remove extraneous arg.
+ (reader_process): Declare `static' to make setjmp() safe.
+
+ * frontend/saned.c (readcmd): Delete unused variable schr_hlp.
+ (peerfp): New variable.
+ Rename ns_printf() to sanei_printf() and pass peerfp arg.
+ Rename ns_scanf() to sanei_scanf() and pass peerfp arg.
+ (say_helo): Make peerfp refer to fd 0.
+
+ * backend/metanet.c (openit): Return FILE*, not socket.
+ (openit): Return 0, not -1 in case of failure.
+ (peerfp): New variable.
+ Rename ns_printf() to sanei_printf() and pass peerfp arg.
+ Rename ns_scanf() to sanei_scanf() and pass peerfp arg.
+
+ * sanei/sane_strstatus.c: New file (in lieu of backend/sane.c)
+ * sanei/sanei_constrain_value.c: Ditto.
+ * sanei/sanei_init_debug.c: Ditto.
+
+ * sanei/sanei_scanf.c (ns_scanf): New file (based on Andy's
+ ns_scanf).
+ Use int8_t for 'c', int32_t for 'd'.
+ Include <sys/types.h>.
+
+ * sanei/sanei_printf.c (sanei_printf): New file (based on Andy's
+ ns_printf).
+ Use int8_t for 'c', int32_t for 'd'.
+ Include <sys/types.h>.
+
+ * include/netsane.h (CMD_SANE_STRS): Remove.
+
+ * backend/metanet.c: Include <errno.h>
+ (sane_strstatus): Remove.
+
+ * backend/Makefile.in (BACKENDS): Mention libsane-metanet.
+
+ * backend/metanet.c (openit): Use memcpy instead of bcopy. Use
+ inet_aton() instead of inet_addr(), don't prototype.
+ (sane_get_devices): Use strdup() instead of opencoding it.
+ (sane_get_devices): Don't append " (NS)" to modelname! Metanet
+ already prefixes the devicename with netsane, which is good
+ enough.
+
+ * backend/sanei.h (IF_DBG): New macro.
+
+ * PROJECTS (Backend): Mention saned, metanet, and autoadj.
+ (Frontend): New info.
+
+ * AUTHORS: Update to reflect sanescan -> xscan namechange.
+ Credit Andy for netsane.
+
+Fri Jan 24 00:01:45 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * doc/sane.tex (subsection{\code{sane\_get\_option\_descriptor}}):
+ Define how long the returned option descriptor must remain valid.
+
+ * frontend/gtkglue.c (autobutton_update): Check for
+ SANE_INFO_RELOAD_OPTIONS.
+ (button_update): Ditto.
+
+ * frontend/xcam.c (main): Add device info label.
+
+ * backend/mustek.c (init_options): Make OPT_BRIGHTNESS and
+ OPT_CONTRAST inactive by default.
+
+ * frontend/xcam.c (exit_callback): Only call gsg_destroy_dialog()
+ if dialog is non-null.
+
+Thu Jan 23 00:17:46 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (sane_control_option): Return
+ SANE_STATUS_DEVICE_BUSY when attempting to set option during
+ scanning.
+ (sane_close): Call do_cancel(), not sane_cancel().
+ (sane_start): Ditto.
+
+ * backend/pnm.c (sod): Rename "File" group to "Source Selection".
+
+ * frontend/xcam.c (device_name_dialog_cancel): New function.
+ (device_name_dialog_ok): Ditto.
+ (prompt_for_device_name): Ditto.
+ (build_device_menu): Move "Rescan devices..." from build_files_menu()
+ to here. Add "Specify device name..." entry that invokes
+ prompt_for_device_name.
+ (play_stop_button): Ignore call if there is no device_dialog yet.
+ (main): Don't attempt to set preview size if there is no device
+ dialog yet.
+
+ * frontend/gtkglue.c (text_entry_callback): Don't ignore tab
+ key---it's used to switch focus!
+
+ * backend/qcam.c (qc_wait): Return read value so optimizer won't
+ be able to get rid of it easily.
+ (qc_lock_wait): Use same lockname as qcam-0.7d for
+ interoperability.
+ (reader_process): Explicitly do an enable_ports() in the reader
+ process. Linux/x86 doesn't inherit i/o port access rights.
+
+ * frontend/xcam.c (stop_camera): New function.
+ (input_available): Use stop_camera().
+ (next_frame): Ditto.
+
+ * backend/genscsi.c (genscsi_open): Add missing DBG_INIT(GENSCSI).
+ (genscsi_cmd): Return SANE_STATUS_DEVICE_BUSY if EBUSY is
+ returned.
+
+ * frontend/xcam.c (input_available): Fix line wrap for
+ SANE_FRAME_GRAY.
+
+ * include/sane.h: Remove old SANE_STATUS_AGAIN.
+ * backend/sane.c (sane_strstatus): Ditto.
+ * backend/mustek.c (sane_read): Return SANE_STATUS_GOOD, not AGAIN
+ when no data available.
+ (sane_start): Add debug printing.
+ (sane_set_io_mode): Fix typo: return SANE_STATUS_GOOD on success.
+
+ * backend/mustek.c (sane_control_option): Add support for
+ OPT_BACKTRACK.
+ (attach): Add lots of debug printing.
+
+ * backend/qcam.README: New file.
+
+ * backend/qcam.c (sane_control_option): Allow changing resolution
+ while scan is in progress, but set RELOAD_OPTIONS only if not
+ scanning already.
+
+ * frontend/xcam.c (canvas_events): Get rid of old debug messages.
+
+ * backend/qcam.c (sane_get_parameters): Update parameters only if
+ not scanning. This makes it possible to change certain options
+ (such as width/height while a scan is in progress).
+ (sane_control_option): Allow changing of image corners,
+ transfer-scale, and depth while scan is in progress. Set
+ RELOAD_PARAMS only if scan is not in progress.
+ (sane_start): Return DEVICE_BUSY if scan is in progress.
+
+ * configure.in (PACKAGE_VERSION): Version 0.41 released.
+
+ * backend/qcam.c (brightness_range): New variable.
+ (init_options): Use brightness_range instead of u8_range to
+ avoid going into bulb-mode accidentally.
+
+Wed Jan 22 09:16:21 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (reader_process): Correct typo: it's buf, not
+ buffer that we want to write out in high-res mode.
+ (qc_reset): New function.
+ (reader_process): Send at least one byte of data after receiving a
+ signal.
+ (sighandler): New function.
+ (sane_cancel): If a read request is outstanding, cancel request by
+ (a) sending SIGINT to reader process, (b) reading one byte of data
+ in blocking mode, and then (c) reading whatever is left in the
+ pipe in non-blocking mode.
+ (sane_read): Return SANE_STATUS_CANCELLED if SCANNING is not set.
+
+ * backend/qcam.h (QC_Scanner): Remove unused x/y fields.
+
+ * backend/qcam.c (sane_close): Call disable_ports().
+ (sane_init): Replace isblank() with isspace() (former is a GNU
+ extension).
+ (sane_control_option): Scale corner coordinates when switching
+ resolution and ensure they're always legal values.
+ (sane_close): Check for reader_pid >= 0 not != 0!
+ (sane_exit): Move disable_ports () from sane_close to here.
+ (sane_start): Keep track of when we're holding lock.
+ (sane_read): Release lock if s->holding_lock is TRUE and we
+ read a few bytes.
+ (sane_cancel): Release lock if it's being held.
+
+ * backend/qcam.c: Clean up unused variables.
+
+Tue Jan 21 13:49:00 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (sane_control_option): Keep track of changes to
+ option values.
+ (sane_get_select_fd): Implemented.
+ (sane_set_io_mode): Ditto.
+ (reader_process): New function.
+ (sane_start): Modify to use reader_process().
+
+ * backend/qcam.h: (struct QC_Scanner): New field value_changed.
+
+Mon Jan 20 22:11:11 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/metadl.c (sane_open): Correctly handle case where
+ backend name is empty.
+
+Sun Jan 19 10:29:43 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/qcam.c (attach): Add qc_wait() calls after each
+ write_lpcontrol() call to ensure reliable communication.
+ (attach): Add debug output in case of failure.
+
+ * Version 0.4 released.
+
+Sat Jan 18 10:12:40 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/xscan.c (get_scan_size): Handle case where scan
+ width/height is of type SANE_TYPE_INT.
+ (get_scan_size): If width/height unit is pixels and the height is
+ less than 500 pixels, use a ratio of 1.
+ (device_dialog): Call update_complete_dialog() to ensure inactive
+ options do not show (there probably is a better solution to this).
+
+ * frontend/scan.c (main): Compute bottom-right position as
+ top-left + width/height - 1 (the - 1 is new and necessary and
+ works both for fixed and integer values).
+ (print_option): Insert line-break when column >= 79 (not 80) to
+ leave last column blank (better when running inside Emacs, for
+ example).
+ (main): Fix typos: case 't': window[2] -> window[3], switch short
+ option names for top/left.
+ (print_option): Print current option values (except for vectors).
+ (fetch_options): Another off by one bug: width is br_x|y-tl_x|y+1.
+
+Thu Jan 16 20:26:29 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/sane.c (sanei_constrain_value): Fix so it properly
+ handles strings that are longer than any of the strings in a
+ string list.
+
+ * frontend/scan.c (main): Subtract value of top-left-x/top-left-y
+ from width/height, respectively after all options have been
+ read in.
+ (main): Print help message _after_ options have been processed.
+ (fetch_options): New function.
+ (set_option): Call fetch_options() if SANE_INFO_RELOAD_OPTIONS is
+ set.
+ (main): Call fetch_options() instead of open-coding same.
+
+ * doc/sane.tex (subsection{Device Descriptor Type}): Add index
+ entry for device-name.
+
+Wed Jan 15 19:55:03 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/metadl.c (sane_init): Call DBG_INIT() and declare
+ debug level variable with DBG_DECL. Added various debug
+ statements.
+
+ * backend/pnm.c (sane_init): Ditto.
+ * backend/mustek.c (sane_init): Ditto.
+
+ * frontend/scan.c (parse_scalar): Default to mm again (instead of
+ cm). Using `mm' as the default is counter-intuitive since the
+ help info is printed with `mm' as the unit.
+
+ * frontend/xscan.c (main): Pass local_only==SANE_FALSE as second
+ argument to sane_get_devices().
+
+Sun Jan 12 13:12:45 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/sane.c (sanei_constrain_value): For string-lists, ignore
+ case and allow prefixes as long as they remain unique.
+
+ * frontend/scan.c (print_option): Print "auto" as a legal option
+ value if the option has capability SANE_CAP_AUTOMATIC set.
+ (process_backend_option): If option has SANE_CAP_AUTOMATIC set,
+ let option value of "auto" turn on automatic mode.
+
+Wed Jan 8 19:55:31 1997 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/Makefile.in (install): Modify install rule so that
+ $(libdir) gets added to /etc/ld.so.conf if it isn't there
+ already.
+ (COMPILE): Use $(SHCFLAGS) instead of $(CFLAGS).
+ (LINK): Remove (unused).
+
+Wed Dec 25 20:21:39 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.README: Add section "SCSI Adapter Tips".
+
+Fri Dec 13 20:02:03 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (line_distance): Rename
+ LINE_DISTANCE_WORKAROUND to NEED_MUSTEK_LINE_DISTANCE_WORKAROUND.
+ Include <config.h>.
+
+Thu Dec 12 20:19:26 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.h (next): New member. Forms linked list of open
+ handles. * backend/mustek.c (first_handle): New variable. Root
+ of list of open handles.
+ (sane_open): Insert handle into list of open handles.
+ (sane_close): Remove handle from list of open handles.
+
+Wed Dec 4 18:37:45 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (attach): Added back MFS-12000SP, MFS-08000SP,
+ and MFS-06000SP. At least the first one really does exist. I
+ don't know how the differ from the other scanners, but it looks as
+ if line-distance correction might be different.
+
+Tue Dec 3 21:22:54 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/sane.c (sane_strstatus): Remove trailing dot from error
+ message.
+
+Mon Dec 2 19:12:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * backend/mustek.c (max_string_size): New function to determine
+ maximum size of a string constraint list.
+ (init_options): Use max_string_size () to initialize size of
+ string-valued options.
+
+Sun Dec 1 15:44:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * Version 0.1 released.
+
+ * backend/mustek.c (attach): Fix mispelled/bad model names:
+ MFS-12000SP -> MSF-12000SP
+ MFS-08000SP -> MSF-08000SP
+ MFS-06000SP -> MSF-06000SP
+ MFS-08000CZ -> <removed>
+ MFS-06000CZ -> <removed>
+
+Tue Nov 26 19:11:18 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/scan.c (print_option): Separate option name from option
+ values by blank, not equal so the syntax is correct even for short
+ options.
+ (parse_scalar): Added missing newline to error message.
+
+Sat Nov 16 17:26:19 1996 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * frontend/scan.c (main): Created (by Andy).
+
+ * backend/pnm.c: Adapted from Andy's pnm.c (just minor updates).
+
+ * backend/mustek.c: Created.
+ * backend/metadl.c: Ditto.
diff --git a/ChangeLogs/ChangeLog-1.0.1 b/ChangeLogs/ChangeLog-1.0.1
new file mode 100644
index 0000000..c83de5d
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.1
@@ -0,0 +1,448 @@
+1999-04-19 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Version 1.0.1 released.
+
+ * backend/artec.c (attach): Applied patch by Petter to fix URL in
+ debug output.
+
+ * backend/microtek2.c (chunky_proc_data): Apply Bernd's latest
+ patch to fix some color problems.
+
+1999-04-17 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * Patch by Mikko Työläjärvi:
+ * sanei/sanei_scsi.c: Check for cam_devices[fd]==NULL, not !=NULL.
+
+ * Patch from Petter:
+ * config.guess: Update to latest version.
+ * config.sub: Update to latest version.
+ * config.install-sh: Update to latest version.
+ * mkinstalldirs: Update to latest version.
+
+1999-04-12 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane-dc25.man: Apply fixes by Peter Fales
+ <psfales@lucent.com>.
+ * backend/dc25.c: Apply patch by Peter Fales.
+
+1999-04-11 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * include/sane/config.h.in: Declare return type of strdup(),
+ strndup(), and strsep() if these functions are not part of the
+ standard libc. This breaks the GNU convention of not declaring
+ standard C library functions but is required in these cases
+ because the functions return pointers. On a 64 bit platform, bad
+ code is generated if a function is (implicitly) declared to return
+ an "int" and then returns a pointer. To minimize the risk of
+ compile errors due to conflicting prototypes, we don't specify a
+ prototype though (just the return type).
+
+ * backend/dll.conf: Comment out dc25 and dc210 backends as those
+ are VERY slow to initialize when no camera is attached.
+
+ * backend/epson.desc: Add Epson GT-7000.
+
+1999-04-06 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/sharp.c (sane_read_shuffled): Declare as "static".
+ (sane_read_direct): Ditto.
+ Applied latest patch by Kazuya and Abel.
+
+ * sanei/sanei_scsi.c [USE == FREEBSD_CAM_INTERFACE]: Fix bugs
+ (patch by Mikko Tyo"la"ja"rvi <mikko@securitydynamics.com>).
+
+ * backend/snapscan.c (start_reader): Don't redirect scanner file
+ descriptor to fd 0 (needlessly breaks FreeBSD and other platforms
+ that don't use real file descriptors for the scanner.
+
+ * backend/microtek2.c: Apply Bernd's patch to fix "green-ness"
+ bug.
+
+ * backend/umax.BUGS: Applied Oliver's latest patch.
+ * backend/umax.CHANGES: Ditto.
+ * backend/umax.FAQ: Ditto.
+ * backend/umax.TODO: Ditto.
+ * backend/umax.c: Ditto.
+ * backend/umax.desc: Ditto.
+ * doc/sane-umax-doc.html: Ditto.
+ * doc/sane-umax-doc.tex: Ditto.
+ * doc/sane-umax-doc.man: Ditto.
+
+1999-04-06 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/snapscan.c (sane_exit sane_get_devices): Removed memory
+ leak.
+ (sane_open): Give more sensible error message when unable to open
+ temp file. Open temp file in /var/tmp, not in current directory.
+ (mini_inquiry add_device): Make sure to only match listed models.
+ Earlier, substrings would also match.
+
+ * backend/snapscan.c (sane_snapscan_*): Changed API entries from
+ sane_snapscan_* to sane_*.
+
+ * backend/snapscan.c (add_device init_options inquiry
+ sane_snapscan_get_parameters sane_snapscan_start
+ sane_snapscan_set_io_mode sane_snapscan_read) backend/snapscan.h
+ backend/snapscan.desc: Rewrote scanner detection code to loop over
+ array of supported SCSI names. Added AGFA SnapScan 1236s support.
+ It seems to be compatible with SnapScan 600.
+ Make sure to not add the same device more then once to the device
+ list. Bugfix in sane_snapscan_read() triggered on EOF.
+
+1999-04-04 David Mosberger-Tang <David.Mosberger@acm.org>
+ * PROBLEMS: Note that /proc/sys/kernel/sg-big-buff is available
+ since Linux kernel v2.2.
+
+ * backend/agfafocus.desc: Changed status from "new" to "alpha".
+ * backend/hp.desc: Ditto.
+
+ * backend/microtek2.desc: Increase version number to 0.6.
+
+1999-04-04 Petter Reinholdtsen <pere@td.org.uit.no>
+ * PROBLEMS: Updated note on SG_BIG_BUF.
+ * tools/README: Corrected typo. Added some notes on
+ mustek600iin-off.
+ * tools/mustek600iin-off.c: Remove hardcoded path to mustek.conf.
+
+1999-04-03 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * include/sane/sanei_debug.h: Define sanei_debug_BACKEND_NAME only
+ if STUBS is not defined.
+
+ * backend/microtek2.h: #ifdef out do_dummy_scan.
+
+ * backend/Makefile.in (V_REV): New variable.
+
+ * configure.in (V_REV): New variable.
+ (VERSION): Include ${V_REV} in vesion number.
+ Substitute V_REV.
+
+ * backend/umax.c (umax_do_request_sense): Make "static".
+
+ * backend/canon.h: Move array "option_name"...
+ * backend/canon-sane.c: ...to here and make "static".
+
+ * backend/pnm.c: Rolled back to version that shipped with
+ sane-0.74. The scan area options were not well implemented. If
+ someone wants to fix that code, the previous (unreliable) version
+ of the PNM backend is in backend/pnm.c-bad.
+
+ * doc/sane.tex (subsection{Resolution Option}: Remove section
+ 4.5.5---it was a duplicate of section 4.5.2 (Scan Resolution
+ Option)!
+
+ * backend/microtek2.c (chunky_proc_data): Merge in latest changes
+ from Bernd.
+
+1999-04-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/net.c (sane_control_option): Ignore the option size
+ of BUTTONs and GROUPs as required by section 4.2.9. (Bug
+ reported by Nick Lamb).
+
+ * frontend/xscanimage.c (null_print_func): Declare MSG param
+ as "const" to match declaration of glib-1.2.1.
+
+ * backend/ricoh.c (attach_one): return SANE_STATUS_GOOD.
+
+ * backend/microtek2.c (do_dummy_scan): #ifdef out since it
+ seems to be used for debugging only.
+
+ * backend/hp-option.c (_probe_int): Needed only if HP_EXPERIMENTAL
+ is defined.
+
+ * backend/coolscan.c: Updated with Didier's latest patch.
+
+ * backend/mustek.c: Applied Andreas's latest patch.
+
+ * doc/sane.tex (subsection{Device Descriptor Type}): Add AGFA.
+
+ * doc/net.tex (subsection{Primitive Data Types}): Clarify that
+ SANE_Char is encoded as ISO LATIN-1 and describe SANE_String
+ encoding (patch by Petter).
+
+ * frontend/saned.c (DBG): Remove extraneous parens around "msg".
+
+ * AUTHORS (Frontends): Update David Skoll's email address.
+
+ * frontend/saned.c (get_free_handle): Check for out of memory
+ situations and initialize newly allocated memory.
+ (auth_callback): Fail when we can _not_ authorize (i.e.,
+ !can_authorize), not the other way round.
+ (quit): Make sure quit() gets executed only once.
+
+ * backend/microtek2.c: Updated with Bernd's latest version.
+ * backend/microtek2.h: Ditto.
+
+ * backend/st400.desc: New file.
+
+ * backend/epson.c (sane_open): Check for NULL or empty
+ dummy_dev.sane.name to avoid segfaults. (Suggested by Yuri
+ Dario).
+
+ * sanei/sanei_scsi.c [USE = LINUX_INTERFACE]: Make "cdb" last
+ member in "struct req" and change size of "data" to 1 byte to
+ allow dynamic sizing of data buffer based on the value of
+ sanei_scsi_max_request_size.
+ (sanei_scsi_req_enter): Calculate size of request based on
+ sanei_scsi_max_request_size. A similar patch was proposed
+ by Petter Reinholdtsen.
+
+1999-03-13 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * doc/saned.man: More info on how to use tcp_wrapper for access
+ control.
+
+1999-03-08 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/microtek2.c (sane_get_select_fd): Remove bogus cast.
+ Reported by Petter Reinholdtsen.
+
+ * sanei/sanei_config.c: Include <sane/config.h>.
+
+ * frontend/saned.c: Include <sys/types.h>.
+ (MAXHOSTNAMELEN): Define MAXHOSTNAMELEN if necessary.
+
+ * configure.os2 (LN_S): Updated with Yuri's latest version.
+
+ * backend/Makefile.in (install): Use $(LN_S) instead of ln -s.
+ (libsane-dll.la): Make dependent on $(DLL_PRELOAD_EXTRAS).
+ (libsane-hp.la): Make dependent on sanei_pio.lo.
+
+ * backend/hp.c (PATH_MAX): Define PATH_MAX if necessary.
+
+ * backend/hp-scl.c (sanei_hp_scsi_pipeout): Add SIGXCPU, SIGXFSZ,
+ and SIGVTALRM only if defined.
+
+ * backend/dc25.c (PATH_MAX): Define PATH_MAX if necessary.
+ (sane_init): Move up fclose(fp) to avoid segfault when fp==NULL.
+ * backend/dc210.c (sane_init): Ditto.
+
+ * backend/pnm.c: Apply Oliver's 4-liner to make TLX, TLY, BRX, and
+ BRY advanced options.
+
+ * backend/umax.c: Updated with Oliver's latest version.
+
+ * doc/sane-sharp.man: New file (by Kazuya Fukuda).
+ * backend/sharp.c: Updated with Kazuya's latest version.
+ * backend/sharp.h: Ditto.
+ * backend/sharp.desc: Ditto.
+
+1999-03-04 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/canon.c (adjust_hilo_points): Print values of type
+ size_t as described in backend/GUIDE..
+
+ * backend/canon-scsi.c: Comment out unused code.
+
+ * backend/canon.c: Updated with Manuel Panea latest version.
+
+ * Irix patches from Michael Sweet:
+
+ * sanei/sanei_scsi.c (sanei_scsi_find_devices): Update with
+ Michael's latest version.
+ * configure.in (CPPFLAGS): Don't check for libnsl or libsocket on
+ Irix.
+ (CPPFLAGS): Check for cfmakeraw.
+ * backend/sharp.h (mode_select_param): Remove double semicolon
+ (some compiler's don't grok those in structure declarations).
+ * backend/Makefile.in (libsane-abaton.la): Make dependent on
+ sanei_config2.lo.
+ * backend/dll.conf: Enable net backend, disable pnm backend by
+ default to lessen risk of confusing novice users.
+ * backend/abaton.c (sane_read): Change type of "size" from ssize_t
+ to size_t.
+ * backend/apple.c (sane_read): Ditto.
+
+1999-03-02 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/Makefile.in (EXTRA_dc210): New macro.
+
+ * sanei/sanei_ab306.c: Apply usleep() patch by Andreas
+ Czechanowski.
+
+ * backend/hp.c: Updated with Peter's latest version (v.082).
+
+1999-03-01 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * include/sane/sanei_net.h: Changed copyright on this file (and
+ this file only!) to be public domain (same as sane.h). This helps
+ ensuring that independent network implementations remain
+ compatible.
+
+1999-02-28 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/sharp.c: New file by FUKUDA Kazuya
+ <fukuda@avm.nhe.nec.co.jp>.
+ * backend/sharp.h: Ditto
+ * backend/sharp.conf: Ditto.
+ * backend/sharp.desc: Ditto.
+
+ * include/sane/sanei_debug.h: Define sanei_debug_BACKEND_NAME
+ only if BACKEND_NAME is defined.
+
+ * tools/find-scanner.c (main): Add NetBSD device names (patch by
+ Taniguchi Shinya <Taniguchi.Shinya@exc.epson.co.jp>).
+
+ * backend/epson.c (attach): Recognize Perfection636 scanner.
+ Suggested by Svend Daugaard Pedersen <sdp@vip.cybercity.dk>.
+
+ * backend/abaton.c (attach_one): Move past attach() to avoid
+ forward-reference.
+
+ * backend/umax.c (umax_do_request_sense): Make static.
+
+ * backend/snapscan-310.c (rgb_buf_can_get_line): Make static.
+ (rgb_buf_init): Ditto.
+ (rgb_buf_clean): Ditto.
+ (rgb_buf_push_line): Ditto.
+ (rgb_buf_get_line): Ditto.
+ (rgb_buf_set_diff): Ditto.
+ (transfer_data_diff): Ditto.
+
+ * backend/snapscan.c (gamma_8): Make static.
+ (start_reader): Ditto.
+
+ * backend/microtek.c (do_precalibrate): Make static.
+ (finagle_precal): Ditto.
+ (pack_flat_data): Ditto.
+ (pack_goofyrgb_data): Ditto.
+ (pack_into_ring): Ditto.
+ (pack_into_dest): Ditto.
+ (pack_seqrgb_data): Ditto.
+ (ring_alloc): Ditto.
+ (ring_expand): Ditto.
+ (ring_free): Ditto.
+ (set_pass_parameters): Ditto.
+
+ * backend/epson.c (epson_cmd): Make static.
+
+ * backend/dc25.c (pp): Make static.
+ (tmpname): Ditto.
+ (tmpnamebuf): Ditto.
+ (tty_baud): Ditto.
+
+ * backend/artec.c (artec_get_status): Make static.
+ (attach_one): Ditto.
+ (cap_data): Ditto.
+
+ * backend/abaton.c (mode_update): Make mode_update() static.
+ * backend/apple.c (mode_update): Ditto.
+ (gamma_update): Make static.
+ (xquant): Ditto.
+ (yquant): Ditto.
+
+ * backend/microtek2.c: Updated with Bernd's v0.6.
+ Add missing include of <errno.h>.
+
+ * backend/microtek2.h: Ditto.
+ * backend/microtek2.conf: Ditto.
+
+1999-02-27 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * frontend/preview.c (preview_scan): Fix dpi calculation by
+ replacing gwidth by gheight. Reported by Manuel Panea.
+
+ * doc/sane-net.man: Change service name from "saned" to "sane".
+
+ * sanei/sanei_scsi.c (MAX_DATA) [FREEDBSD_CAM_INTERFACE]: Change
+ MAX_DATA from MAXPHYS to (DFLTPHYS - PAGE_SIZE). Patch by
+ Parag Patel <parag@cgt.com>.
+
+ * AUTHORS (Backends): Updated Peter's email address.
+
+ * PROJECTS: Updated Peter's home page URL.
+
+ * backend/snapscan.c (EXPECTED_MAJOR): Update EXPECTED_MAJOR to 1.
+
+ * include/sane/sane.h (SANE_CURRENT_MAJOR): SANE_CURRENT_MAJOR and
+ V_MAJOR HAVE to be in sync, so I'm forced to fix SANE_CURRENT_MAJOR
+ now. Embarassing, but fortunately only the snapscan backend seems
+ affected by this change.
+
+ * backend/dll.c (load): Use SANE_CURRENT_MAJOR, not V_MAJOR (the
+ latter is used for shared lib versioning).
+
+ * tools/find-scanner.c (main): Make verbose output a bit
+ friendlier (patch by Petter).
+
+ * backend/umax.c: Updated with Oliver's latest version (v1.0c).
+
+ * Patch by Mike Sweet: * backend/Makefile.in (libsane-ricoh.la):
+ Make dependent on sanei_config2.lo. * sanei/sanei_scsi.c
+ (sanei_scsi_find_devices): New function.
+ (WE_HAVE_FIND_DEVICES): Define. * frontend/saned.c (check_host):
+ A "+" in saned.conf now matches any remote host (may be a bit
+ dangerous, so use this judiciously). * frontend/gtkglue.c:
+ Include <string.h>. * backend/hp-accessor.c (hp_data_alloc):
+ Round size up to a multiple of sizeof(long) to avoid alignment
+ problems. * backend/abaton.h: Remove extraneous comma in enums.
+ * backend/artec.conf: Add "scsi ULTIMA" line. *
+ backend/abaton.conf: Add "scsi ABATON" line. *
+ backend/epson.conf: Add "scsi EPSON" line. * backend/ricoh.conf:
+ Add "scsi RICOH IS60" line. * backend/snapscan.conf: Add "scsi
+ AGFA" and "scsi COLOR" line. * backend/tamarack.conf: Add "scsi
+ TAMARACK" line. * backend/abaton.c (sane_init): Fix fall back
+ code to attach /dev/scanner when ABATON_CONFIG_FILE doesn't exist.
+ (sane_init): Use sanei_config_attach_matching_devices().
+ (attach_one): New function.
+ * backend/hp-device.c (sanei_hp_device_probe): Mention model
+ 6250C.
+
+ * backend/saned.conf: Remove the stale comments about hostname
+ matching being case-sensitive.
+
+ * backend/microtek.h: Updated with Matto's v0.10.1.
+
+ * backend/mustek.c (send_gamma_se): Apply patch by Wilco Oelen
+ <woelen@noord.bart.nl> to clip gamma values to range 0..255.
+
+ * backend/artec.desc: Updated with Chris Pinkham's latest version.
+
+ * backend/umax.c (PATH_MAX): Do conditional define of PATH_MAX
+ _after_ including all the headers to avoid "duplicate define"
+ warning message.
+
+ * backend/ricoh.h: Include <sane/config.h> to get #define for
+ "inline" if necessary.
+
+ * backend/dc210.c (init_dc210): To send break, use tcsendbreak()
+ if available or TCSBKRP or TCKSBRK ioctl() if available or fall
+ back to doing nothing if none of these are supported. This may
+ cause the backend to work incorrectly on platforms that do not
+ support one of the above methods for sending a break, but at least
+ it will compile that way.
+
+1998-12-12 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/hp.desc: Updated with Peter's latest version.
+
+1998-11-30 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * LICENSE (terms): Add a pointer to backend/djpeg.README.gz.
+
+ * backend/djpeg.README.gz: New file (required to comply with JPG
+ licensing restriction).
+
+ * backend/snapscan.c (sane_snapscan_start): Use INT_MAX instead
+ of non-portable MAXINT.
+ Don't include Linux-specific <values.h>.
+
+1998-11-26 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * doc/sane.tex (subsection{Device Descriptor Type}): Consistently
+ use "Noname" (instead of None/Noname) to indicate the absence of
+ a vendor.
+ (subsection{sane_strstatus}): Define how long the returned string
+ is valid.
+ (section{Code Flow}): Clarify that sane_cancel() has to be called
+ even if read returns SANE_STATUS_EOF.
+
+1998-11-22 David Mosberger-Tang <David.Mosberger@acm.org>
+
+ * backend/ricoh.h (_4btol): Replace "__inline" by "inline".
+
+ * backend/abaton.c (sane_control_option): Assign word values to
+ s->val[foo].w not s->val[foo]. The latter compiles on gcc-2.7.2.3
+ without warning but causes an error on other compilers (e.g.,
+ egcs).
diff --git a/ChangeLogs/ChangeLog-1.0.10 b/ChangeLogs/ChangeLog-1.0.10
new file mode 100644
index 0000000..a4325a3
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.10
@@ -0,0 +1,890 @@
+****** Release of sane-backends 1.0.10. End of code freeze ******
+
+2003-02-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Artec AM12e+.
+
+2003-01-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: New version: 1.0.10. Disabled warnings for
+ release.
+ * doc/Makefile.in: Added plustek to list of directories.
+
+2003-01-31 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/plustek/Plustek-USB.txt: Added comment about scanner.o
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-usb.h
+ backend/plustek-usbshading.c: Fixed major bug, that avoid proper
+ shading on CCD-devices like HP 2200C. Fixed also CanoScan 1220
+ settings, as the current ones didn't work
+
+2003-01-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon, Fijitsu and Prolink
+ scanners.
+
+2003-01-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Fixed severe bug in saned that allowed a
+ remote frontend to crash saned (null pointer derefence) if no
+ scanners are connected.
+
+---- CODE FREEZE FOR SANE 1.0.10 ---
+-- snapshot 1.0.10-pre3
+
+2003-01-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.de.po po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.pt.po po/sane-backends.ru.po po/sane-backends.sv.po:
+ Minor updates due to backend changes.
+ * TODO: Added icc problem.
+ * NEWS: Updated.
+
+2003-01-25 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * sanei/sanei_pa4s2.c: added some #ifdefs to make it compile with
+ the Intel C++ Compiler (icc).
+ * backend/mustek_pp.c: fixed some character encoding issues in
+ debug messages
+ * README.linux: added a note about the Intel C++ Compiler
+
+2003-01-24 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/mustek_pp_ccd300.c: continued on the CCD low-level driver.
+ There is still some bug in it, that keeps it from actually scanning
+ something...
+
+2003-01-24 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * doc/descriptions/mustek_pp.desc: added supported scanners
+
+2003-01-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/bh.c backend/coolscan.c: Minor conversion fixes (from
+ Andrea Suatoni <a.suatoni@telefonica.net>).
+ * backend/test.c: Use "Color pattern" consistantly.
+ * acinclude.m4 aclocal.m4 configure configure.in
+ include/sane/config.h.in: Declare prototypes for all functions that
+ may miss on some platforms.
+ * doc/descriptions/unsupported.desc: Added Mustek parport scanners.
+ Added more information for Primascan Colorado 2600u.
+ * TODO: Updated Irix patches and desc section.
+
+2003-01-24 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/plustek/Plustek-USB-TODO.txt
+ doc/plustek/Plustek-USB.txt
+ Documentation update
+ * doc/descriptions/plustek.desc: status updates
+ * backend/plustek.conf fixed options
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-usb.c
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek.h backend/plustek-usb.h
+ Minor fixes and prototype description updates, code cleanup
+
+2003-01-23 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added Perfection 3200/GT-9800
+
+2003-01-23 Andras Major <andras@users.sourceforge.net>
+
+ * backend/doc/sane-coolscan2.man: added a .TP that mysteriously
+ vanished
+
+2003-01-23 Andras Major <andras@users.sourceforge.net>
+
+ * backend/coolscan2.c: hack for IR readout with LS-4000.
+
+2003-01-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Primax/Visioneer Primascan
+ Colorado 2600u and UMAX Astra 4500.
+
+2003-01-22 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Corrected syntax for GT-6000 entry
+
+2003-01-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/Makefile.in: Fixed regeneration of libsanei.a when the object
+ files were changed.
+ * sanei/sanei_usb.c: Scanning for devices is now done in
+ sanei_usb_init instead of every time when sanei_usb_find_devices is
+ called. Also only devices that really exist are opened. These
+ changes fixe the slow detection of devices on systems using devfs or
+ old scanner drivers.
+
+2003-01-21 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added "SCSI" to GT-6000 entry
+
+2003-01-21 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c: compile warning fix and minor debug
+ message fixes.
+ * doc/sane-mustek_pp.man: updated supported scanner list and
+ typo fixes.
+
+2003-01-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Adjusted test for sparc64 to disable
+ SCSI generic v3.
+
+2003-01-20 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Replace :new with :alpha
+
+2003-01-19 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Added USB product IDs for MFDs.
+ * doc/descriptions/epson.desc: Updated version number, added
+ entries for MFDs.
+ * doc/sane-epson.man: Added MFDs.
+
+-- snapshot 1.0.10-pre2
+
+2003-01-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Removed
+ wrong "untested" flag from Mustek AE USB and Lexmark X70/X73
+ scanners.
+ * po/sane-backends.de.po po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.pt.po po/sane-backends.ru.po po/sane-backends.sv.po:
+ Regenerated.
+
+2003-01-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in sanei/sanei_scsi.c:
+ Disable the new Linux SG interface for sparc64 to work-around 32 bit
+ userland / 64 bit kernel problems.
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 3500c, 3530c,
+ 3570c, 3570cxi, 5500C and Microtek ScanMaker 3800. Updated link for
+ ScanJet 4470C.
+ * TODO: Added links to hp4200 backend. Removed libusb entry, parport
+ compilation problems, SCSI on sparc64 issue, USB on BSD problems.
+
+2003-01-16 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/leo.c doc/descriptions/leo.desc doc/leo/leo.txt: Added
+ another scsi string for the fs-1130.
+
+2003-01-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.c backend/microtek2.h: Bugfix for the X12USL
+ (solved problems >600dpi), one for lineart mode with a 6400XL
+ and one for Scanmaker 5 (crashes at sendgamma). From Karsten Festag
+ <karsten.festag@gmx.de>.
+
+2003-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Don't call usb_clearhalt and usb_set_altinterface
+ to avoid errors on Mac OS X.
+ * doc/descriptions/unsupported.desc: Added HP 5490c.
+
+2003-01-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated list of backends.
+ * doc/sane-usb.man: Added remark about old name of usbfs.
+ * doc/descriptions/unsupported.desc: Added Artec Ultima 2000 (0x4001
+ model), Canon CanoScan D660U, Compaq S200, Epson Perfection 660,
+ HP ScanJet 4570C, Microtek ScanMaker 3630. Updated ScanJet 5400C and
+ 5470C URLs, Canon FB1210 information.
+
+2003-01-13 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/mustek_pp*, backend/Makefile: merged all mustek_pp
+ related files into one compile unit and removed illegal symbols
+
+2003-01-13 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 2300C and various chipset
+ information for the unsupported Plustek devices
+ * doc/descriptions/plustek.desc: cleanup
+
+
+---- FEATURE FREEZE FOR SANE 1.0.10 ---
+-- snapshot 1.0.10-pre1
+
+2003-01-12 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * doc/sane-mustek_pp.man, doc/descriptions/mustek_pp.desc,
+ backend/mustek_pp*: replaced the old mustek_pp backend with
+ version 12-alpha. This version fully supports CIS scanners but
+ removes support for 600dpi CCD scanners and the 300dpi CCD
+ support isn't yet working. In contrary to the old backend, this
+ version is based on information provided by Mustek. For now,
+ the backend exports lots of illegal symbols, this will be fixed
+ before code freeze. Also the .desc file is empty and will be updated
+ soon.
+ * AUTHORS: added Eddy De Greef who wrote the CIS hardware driver part
+
+2003-01-12 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.*: fixed a segfault, when the SCAN command returned
+ an error; optional "relaxed" handling of transparency unit errors.
+
+2003-01-12 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Removed the unsupported stuff
+ * doc/descriptions/unsupported.desc: Removed OpticPro 16B.
+
+2003-01-12 Michael Herder <crapsite@gmx.net>
+
+ * doc/descriptions/artec_eplus48u.desc: Added new
+ models.
+
+2002-01-11 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * sanei/sanei_pa4s2.h: prepared sanei for use with fork()ing
+ backends
+
+2003-01-11 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Update to reflect the currently
+ supported decvices.
+ * doc/descriptions/unsupported.desc: Added some Plustek devices.
+ CanoScan N1220U is now supported by the Plustek backend.
+ * doc/plustek: Added this directory to store various Plustek
+ information files.
+
+2003-01-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/primax.desc: Some Primax scanners (and
+ clones) are now supported by the primax backend.
+ * backend/microtek.c backend/microtek2.conf backend/microtek2.h:
+ OPT_THRESHOLD fix. Avoid using "_" in option names. Set more
+ options in microtek2.conf to on by default. From Karsten Festag
+ <karsten.festag@gmx.de>.
+ * tools/sane-desc.c: Fixed overwrite warnings. Minor DBG message fixes.
+ Fixed priority handling (backend and manpage were overwritten even if
+ a model had a lower priority).
+ * tools/README: Updated sane-find-scanner and sane-desc.el entries.
+ * doc/sane-gt68xx.man doc/sane-mustek_usb.man: Updated status for the
+ BSDs.
+
+2003-01-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.pt.po: Even more Portuguese translations from
+ Pedro Morais <morais@inocam.com>.
+ * sanei/sanei_usb.c: Comment out resetep at sane_close. This
+ function sets th USB data toggle only on the host side.
+ * TODO: Removed microtek2 problem, updated Irix patch section and
+ Linux/Sparc section.
+ * NEWS: Updated for 1.0.10.
+ * backend/mustek.c: Removed hardcoded option size.
+
+2003-01-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * TODO: Plustek backend now supports libusb, moved appropriate line
+ to done section.
+
+2003-01-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-plustek.man: update to reflect version change
+ * doc/descriptions/plustek.desc: Added some Canon entries, status updates
+ * backend/plustek.conf updated options
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-usb.c
+ backend/plustek-usbhw.c backend/plustek-pp.c
+ backend/plustek-usbmap.c backend/plustek-usbimg.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek.h backend/plustek-share.h backend/plustek-usb.h
+ New version + support for libusb
+
+2003-01-09 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc210.c, backend/dc240.c: Fix compile failure
+ on OS/2.
+
+2003-01-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Updated manpage and .desc concerning Lexmark X70. Updated manpage
+ concerning kernel 2.4.21-pre3 containing the 1-endpoint fix. Fixed
+ A3 USB resolution setting. Updated A3 USB margins (Pedro Morais
+ <morais@inocam.com>). Added detection of Genius Colorpage Vivid3x.
+ It's unknown if it works. Updated .desc file. Don't print calib line
+ warnings by default.
+ * doc/descriptions/microtek2.desc: Updated (From Karsten Festag
+ <karsten.festag@gmx.de>).
+ * po/Makefile.in po/sane-backends.pt.po: Added Portuguese translation
+ for the gt68xx backend (from Pedro Morais <morais@inocam.com>).
+ * po/sane-backends.de.po: Added some missing translations. Removed some
+ (wrong) fuzzy translations.
+
+2003-01-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc:
+ Added entries for Acer/Benq 310U, 320U, 340U and
+ Mitsubishi Diamondview 650U
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-scsi.c
+ backend/snapscan.conf: Backend version 1.4.18, added support for
+ Acer/Benq310U, fixed color correction for Agfa SnapScan 300
+
+2003-01-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/hpsj5s.desc doc/descriptions-external/hp4200.desc:
+ Use uniform model names for HP scanners.
+ * doc/descriptions/unsupported.desc: Added Canon CanoScan D1250U2
+ and HP ScanJet 4400C.
+ * po/artec_eplus48u.de.po po/epson.de.po po/epson.ru.po
+ po/epson.sv.po po/gt68xx.de.po po/matsushita.fr.po
+ po/matsushita.ru.po po/mustek.de.po po/mustek.ru.po
+ po/mustek_usb.de.po po/mustek_usb.ru.po po/plustek.de.po
+ po/plustek.es.po po/plustek.ru.po po/pnm.de.po po/pnm.ru.po
+ po/sceptre.fr.po po/sceptre.ru.po po/snapscan.de.po
+ po/snapscan.ru.po po/teco1.fr.po po/teco1.ru.po po/umax.de.po
+ po/umax.fr.po po/umax_pp.de.po po/umax_pp.fr.po po/umax_pp.ru.po
+ po/umax.ru.po: Remove per-backend translations. The translations
+ are now in the per-language sane-backends.??.po files.
+ * po/saneopts.de.po po/saneopts.es.po po/saneopts.fr.po po/saneopts.ru.po
+ po/saneopts.sv.po: Remove global saneopts translations. The translations
+ are now in the per-language sane-backends.??.po files.
+ * TODO: Updated .desc file, mapages, sanei_usb and OS/2 entries. Removed
+ entry about po files.
+ * po/Makefile.in: Remove sane-backends.pot from list of distributed
+ files. Add microtek2 files.
+ * backend/microtek2.c backend/microtek2.h: Improved support for
+ Scanmaker X12USL. Alpha support for Scanmaker 9800XL. Some bugfixes.
+ (From Karsten Festag <karsten.festag@gmx.de>).
+ * po/sane-backends.de.po: Added translation for microtek2 backend.
+ (From Karsten Festag <karsten.festag@gmx.de>).
+
+2003-01-07 Peter Fales <peter@fales-lorenz.net>
+
+ * TODO: Marked dc210/dc240 items as "done"
+
+2003-01-07 Oliver Rauch <Oliver.Rauch@Rauch-Domain.DE>
+ * backend/umax.c: update to build 39
+
+2003-01-07 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc210.c, backend/dc240.c: Use a more portable way
+ of sending "break" on serial ports.
+
+2003-01-07 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/descriptions/hp.desc: Change HP ScanJet to ScanJet
+
+2003-01-07 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/sane-umax_pp.man: updates and fixes
+ * doc/descriptions/umax_pp.desc: change model form HP3200C to
+ Scanjet 3200C
+
+2003-01-07 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp-dev.c: Improve/fix detection logic.
+ * doc/descriptions/canon_pp.desc: Bump version number.
+
+2003-01-06 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/descriptions/dc25.desc, doc/descriptions/dc210.desc,
+ doc/descriptions/dc240.desc, doc/descriptions/gphoto2.desc:
+ Update author information
+
+ * backend/dc25.c: Fix compiler warning
+
+ * backend/dc210.c, backend/dc240.c, backend/dc210.conf,
+ backend/dc240.conf, backend/gphoto2.conf, backend/dc25.conf:
+ Irix fixes from mailing list
+
+2003-01-05 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc25.c: Mailing list fix. Change = to ==
+ dc25/dc20 tests.
+
+2003-01-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added link to Irix patches. Updated .desc section.
+
+2003-01-05 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: small image quality improvement
+ * backend/umax_pp.conf: ppdev device is now default option
+
+2003-01-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Print version number.
+ * doc/descriptions/unsupported.desc: Added Genius HR7X Slim,
+ Visioneer 6200 and Onetouch 8920.
+
+2002-12-31 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Removed one '//' comment.
+
+2002-12-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/onetouch8600.desc: Added (from PROJECTS).
+ * doc/descriptions/unsupported.desc: Added list of (known) scanners
+ that are not supported by a SANE backend. There may be information
+ about them or even a standaalone program to which the entries point.
+ * PROJECTS: Removed projects that are now in the .desc files.
+
+2002-12-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: Removed configure.os2.
+ * PROJECTS: Removed HP 2200c project (now supported by plustek
+ backend). Added "NIASH" keyword to hp3300backend.
+ * README.darwin: Removed comment about dynamic loading. Added
+ sm3600 and fork problems.
+ * acinclude.m4 aclocal.m4 config.guess config.sub configure
+ configure.in ltmain.sh: Update to latest libtool (1.4.3), config.sub
+ and config.gues. This should fix the build problems on MacOS X
+ concerning dynamic loading.
+ * backend/Makefile.in: Backends shouldn't be linked to sanei_config2 if
+ they aren't also linked to sanei_scsi. sanei_config2 needs
+ sanei_scsi.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_gt6801.c
+ backend/gt68xx_gt6816.c backend/gt68xx_high.c backend/gt68xx_high.h
+ backend/gt68xx_low.h doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Updated ScanExpress 2400 USB values. Added
+ implementation of gt6801 lamp control for CCD scanners. Added flag for
+ SE 2400 USB, added some quirks in gt68xx_gt6801.c. Fixed gt68xx_gt6801
+ -> lamp control. Adjusted Plustek 1248U geometry and afe values. CCD
+ gross calibration changed: start with the default value from module
+ struct. Is faster now for most cases. Only 2.5 mm of calibration for
+ GT-6801 scanners. Added "afe" option for gt68xx.conf for selecting
+ default afe values. Removed AFE and exposure SANE options. Added
+ documentation for afe option in gt68xx.conf. New version: 1.0-35.
+ * doc/descriptions-external/hp4200.desc
+ doc/descriptions-external/hpoj.desc: Use Hewlett-Packard consitantly
+ (instead of HP).
+ * doc/descriptions-external/scanwit.desc
+ doc/descriptions-external/viceo.desc: Added description files for
+ scanwit and viceo backends.
+ * doc/descriptions-external/tevion9693usb.desc: Removed (now included).
+ * backend/test.c doc/descriptions/test.desc: Make sure that frontend bugs
+ concerning the select fd are detected.
+ * doc/sane-scsi.man: Minor formatting change.
+ * sanei/sanei_usb.c: Explicitely set first configuration. When claiming
+ the interface, use the interface number from bInterfaceNumber.
+ Explicitely set the alternative setting. When closing, call clear_halt,
+ and reset_ep, and release_interface explicitley. On errors in
+ write/read, call clear_halt.
+ * TODO: Added sm3600 issue, htmla manpage issue, sanei_scsi stuff.
+ Updated desc file, sanei_usb, and MacOSX entries. Deleted sane.tex
+ stuff (now TODO for SANE2).
+
+2002-12-28 Karl Heinz Kremer <khk@khk.net>
+
+ * Added option to display short resolution list to.
+
+2002-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-scsi.man: The "scsi ..." way of specifying devices is not
+ Linux-only. Some minor formatting updates.
+ * TODO: Added entries for "missing" scanners in desc files: snapscan
+ and epson. Added sanei_usb issues. Updated MacOS X and OS/2 porting
+ issues.
+ * README.darwin: Updated.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c backend/gt68xx_high.h backend/gt68xx_low.c
+ backend/gt68xx_low.h doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES:
+ Coarse calibration for first scan only" is off by default now. Added gamma
+ table factor option (SANE_CAP_EMULATED). Setup gamma to 2.0 by default.
+ Fixed (hopefully) sigpipe when cancelling. No geometry quantization anymore
+ (not necessary). Plustek 1248U: do linemode for every resolution, fix color
+ correction. Added comments for every Model member in gt68xx_devices.
+ Added Plustek UT16B and Genius Vivid3x to .desc. Added implementation for
+ inverted offset for CCD scanners. Added Mustek ScanExpress 2400 USB. Well,
+ at least it's detected. Added NEW marker to .desc.
+ * doc/descriptions/artec_eplus48u.desc doc/descriptions/hpsj5s.desc
+ doc/descriptions/teco2.desc doc/descriptions/teco3.desc:
+ Updated NEW! markers.
+
+2002-12-07 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: improved error handling
+
+2002-12-07 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed problem with dropout color
+
+2002-12-06 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.h backend/hp.c backend/hp-scl.c backend/hp.conf
+ * doc/sane-hp.man doc/descriptions/hp.desc
+ Add option dumb-read to work
+ around problem with Buslogic SCSI driver
+
+2002-12-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure aclocal.m4 acinclude.m4: Fixed MacOS X LD_FLAGS bug.
+ * doc/sane-scsi.man: Removed link to ACard problem.
+ * doc/sane.tex: Updated contact information.
+ * LEVEL2: Removed. Contents is either in the SANE2 standard or in
+ the SANE2 API TODO.
+ * Makefile.in doc/Makefile.in: Removed LEVEL2.
+
+2002-12-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-mustek.man doc/sane-mustek_usb.man
+ doc/descriptions/mustek.desc doc/descriptions/mustek_usb.desc:
+ Updated links.
+ * backend/test.c po/sane-backends.de.po: Minor spelling and translation
+ fixes.
+
+2002-12-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/epson_scsi.c backend/sm3600.c: Move config.h include to the
+ top of the include list to avoid compilation errors on platforms
+ not defining u_char. Added AIX lalloca check.
+ * aclocal.m4 acinclude.m4 configure configure.in
+ include/sane/config.h.in: Cleanup. Added some missing quotes. Better
+ structure and comments. Tried to keep similar tests in one group.
+ Moved more complicated tests to acinclude.m4. Added explicit test for
+ build and host system type. When checking for programs, used $EXEEXT
+ (hopefully fixes OS/2 gettext misdetection). Removed obsolete
+ macros. Removed PTAL check. Used autoconf for asm/io.h check.
+ Shortened --enable-foo output and formatted it correctly. Trans-
+ lations were installed even if --disable-translations was set. Don't
+ test for msgcat anymore. Tell why translations aren't installed. Used
+ autoconf 2.5 syntax for AC_OUTPUT and AC_CONFIG_FILES. Make
+ sane-config executable. Print flags and installation directories
+ near the end of configure output.
+ * po/Makefile.in: Added autoconf comment, removed MSGCAT variable.
+ * backend/dll.c doc/sane-dll.man doc/descriptions/dll.desc: Ignore
+ comments that are in the same line as the backend entries. Minor
+ manpage fixes. Intented according GNU coding standards.
+ * configure.os2: Removed. No longer necessary.
+
+2002-12-04 Matthew Duggan <stauff1@users.sourceforge.net>
+ * backend/canon_pp-dev.c: Don't compare firmware version numbers -
+ multiple versions do actually exist.
+ * doc/descriptions/canon_pp.desc: Bump version number.
+
+2002-12-03 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/gphoto2.c: Don't display the "low resolution" option when
+ taking a picture, because it doesn't actually do anything.
+
+2002-12-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/README sane-backends.de.po sane-backends.es.po
+ sane-backends.fr.po sane-backends.ru.po sane-backends.sv.po:
+ Use only one file of translated messages per language. Merged
+ all backend files. Uses UTF-8 everywhere. Updated all files
+ from the marked source code.
+
+2002-12-01 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: unmarked from SANE_I18N 2 options names
+
+2002-12-01 Rene Rebe <rene.rebe@gmx.net>
+ * backend/avision.h backend/avision.c backend/avision.conf
+ doc/descriptions/avision.desc: updated the Avision backend -
+ including auto-generated .desc file listing all devices
+ also present in the avision.c device-list.
+ * doc/descriptions/avision.desc: syntax fix
+ * doc/sane-avision.man: updated to reflect the current backend
+ development.
+
+2002-12-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in backend/dll.c: Add dynamic loading support
+ for MacOS X/Darwin (from Peter O'Gorman <peter@pogma.com>).
+ * TODO: Added sp15c inclusion and low-level buffer prints. Removed
+ avision warning, hpsj5s freeze, hp/libusb, and manpages issues.
+ Updated MacOS X list.
+ * configure configure.in backend/Makefile.in: Use libtool -module
+ when linking shared libs that will be loaded dynamically.
+
+2002-11-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/epson.sv.po po/saneopts.sv.po: Added Swedish
+ translation (from Dennis Björklund <db@zigo.dhs.org>).
+
+2002-11-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in backend/canon630u.c backend/dll.c
+ backend/gt68xx.c backend/mustek_usb.c backend/net.c backend/pnm.c
+ backend/test.c backend/umax1220u.c backend/v4l.c doc/Makefile.in
+ include/sane/config.h.in tools/sane-desc.c: Fixed PACKAGE_VERSION
+ breakage. PACKAGE_VERSION was redefined by autoconf 2.5 with a
+ different meaning. Use PACKAGE_STRING instead.
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: PACKAGE_VERSION fix. Fixed debug message
+ in do_stop: really print exit status of reader process.
+ * doc/sane-usb.man: PACKAGEVERSION fix. Removed HP exception. Added
+ MacOS X.
+ * doc/gamma4scanimage.man doc/sane-artec_eplus48u.man
+ doc/sane-config.man doc/sane-find-scanner.man doc/sane-gt68xx.man
+ doc/sane-mustek.man doc/sane-mustek_usb.man doc/sane.man
+ doc/saned.man doc/scanimage.man: Added missing quotes around
+ PACKAGEVERSION
+ * doc/sane-abaton.man doc/sane-agfafocus.man doc/sane-apple.man
+ doc/sane-artec.man doc/sane-as6e.man doc/sane-avision.man
+ doc/sane-bh.man doc/sane-canon.man doc/sane-canon630u.man
+ doc/sane-canon_pp.man doc/sane-coolscan.man doc/sane-coolscan2.man
+ doc/sane-dc210.man doc/sane-dc240.man doc/sane-dc25.man
+ doc/sane-dll.man doc/sane-dmc.man doc/sane-epson.man
+ doc/sane-fujitsu.man doc/sane-gphoto2.man doc/sane-hp.man
+ doc/sane-hpsj5s.man doc/sane-leo.man doc/sane-matsushita.man
+ doc/sane-microtek.man doc/sane-microtek2.man doc/sane-mustek_pp.man
+ doc/sane-nec.man doc/sane-net.man doc/sane-pie.man doc/sane-pint.man
+ doc/sane-plustek.man doc/sane-pnm.man doc/sane-qcam.man
+ doc/sane-ricoh.man doc/sane-s9036.man doc/sane-sceptre.man
+ doc/sane-scsi.man doc/sane-sharp.man doc/sane-sm3600.man
+ doc/sane-snapscan.man doc/sane-sp15c.man doc/sane-st400.man
+ doc/sane-tamarack.man doc/sane-teco1.man doc/sane-teco2.man
+ doc/sane-teco3.man doc/sane-test.man doc/sane-umax.man
+ doc/sane-umax1220u.man doc/sane-umax_pp.man doc/sane-v4l.man:
+ Changed "-" to "\-" in .SH NAME section (required by man 7 man).
+ Added PACKAGEVERSION and "SANE Scanner Access Now Easy" to header.
+
+2002-11-29 Oliver Rauch <Oliver.Rauch@Rauch-Domain.DE>
+
+ * frontend/stiff.c: added fclose(icc_file)
+
+2002-11-25 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-device.h backend/hp-accessor.c backend/hp-scl.c
+ backend/hp.c backend/hp-device.c backend/hp-option.c
+ backend/hp.h backend/hp.conf backend/Makefile.in
+ doc/sane-hp.man doc/descriptions/hp.desc
+ Added libusb support for hp-backend
+
+2002-11-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Removed projects for scanners that are now supported
+ by the plustek backend. Removed lhii backend (dead?). Added more
+ details for other projects. Added 5400C / 5470C project.
+
+2002-11-23 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.h backend/avision.c backend/avision.conf
+ doc/sane-avision.man: updated the Avisin backend to my todays
+ snapshot. It know handles more scanners as well as ADF and A3
+ size devices.
+
+2002-11-23 Max Vorobiev <pcwizard@yandex.ru>
+ * backend/hpsj5s.c: Removed default port probing.
+
+2002-11-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.man: Formatting fixes. Updates some backend entries and
+ sane-find-scanner. Some clarifications.
+ * doc/scanimage.man: Use "--option arg" format for all options.
+ Other formatting fixes.
+ * doc/gamma4scanimage.man doc/sane-config.man doc/sane-find-scanner.man
+ doc/saned.man: Formatting updates.
+
+2002-11-22 Michael Herder <crapsite at gmx.net>
+
+ Fixed header in artec_eplus48u.de.po.
+ *po/artec_eplus48u.de.po
+
+2002-11-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek_usb.desc doc/sane-mustek_usb.man
+ doc/mustek_usb/mustek_usb.CHANGES doc/mustek_usb/mustek_usb.TODO:
+ Minor manpage fixes. Added links to similar backends. More
+ information about non-Linux OS.
+ * doc/sane-mustek.man: Minor fixes. Added links to ther backends
+ providing support for Mustek scanners.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_gt6816.c
+ backend/gt68xx_low.c backend/gt68xx_low.h doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Changed 150 to 200 dpi for Mustek BearPaw 2400 TA. Fixed warnings
+ in gt68xx_low.c. Used DBG instead of XDBG ing gt68xx_low.c.
+ Minor manpage fixes. Added man page links to other backends.
+ gt68xx_low.h: Fixed __FUNCTION__ bug on non-gcc compilers.
+ Added more details about the BSDs in the manpage. Fixed color order
+ for ScanExpress A3 USB.
+ * TODO: Removed tevion9693usb and umax1220u warnings entries. Added
+ avsion warnings. Little bit of restructuring.
+
+2002-11-21 Michael Herder <crapsite at gmx.net>
+
+ Added german translation for artec_eplus48u backend.
+ *po/artec_eplus48u.de.po
+ *po/Makefile.in
+
+2002-11-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/Makefile.in: Don't generate symlinks for libsane.so/.a, the files
+ are installed anyway. Fix symlink creation when only static libraries
+ are created.
+
+2002-11-20 Michael Herder <crapsite at gmx.net>
+
+ Added artec_eplus48u backend for the scanner Artec E+ 48U and
+ re-badged models like Tevion/Medion MD 9693, Medion MD 9705 and
+ Trust Easy Webscan 19200.
+ * backend/Makefile.in backend/dll.conf backend/artec_eplus48u.c
+ backend/artec_eplus48u.conf backend/artec_eplus48u.h
+ * doc/.cvsignore doc/Makefile.in doc/sane-artec_eplus48u.man doc/sane.man
+ doc/descriptions/artec_eplus48u.desc
+ * AUTHORS: Updated concerning artec_eplus48u.
+
+2002-11-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-usb.man: Added quick start section. New structure/order.
+ Added list of backends that don't use sanei_usb. Added headers
+ and fixed \- bug.
+ * doc/sane-find-scanner.man: Minor adjustments, added headers, fixed
+ \- bug.
+
+2002-11-18 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/umax-usb.c: the usb support for the umax 2200 wasn't
+ using the correct sanei USB API, which broke the support for that
+ scanner. Also fixed a couple warnings and a typo.
+ * backend/sceptre.c backend/teco1.c backend/teco3.c
+ backend/matsushita.c backend/leo.c: fixed hexdump() declaration.
+ * backend/dll.c: fixed some warnings.
+
+2002-11-07 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: disable test facility
+
+2002-11-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added manpage issues and hpsj5s freeze problem. Removed canon.c
+ model problem.
+ * doc/Makefile.in: Added variable @PACKAGEVERSION@ for usage in
+ manpages.
+
+2002-11-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-mustek_usb.man doc/sane-usb.man: Fixed wrong .TH headers.
+
+2002-11-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in acinclude.m4 aclocal.m4
+ include/sane/config.h.in: Fix compilation on Tru64 by readding
+ the sys/bitypes.h work-around. Minimum autoconf version is 2.50 now.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6801.h doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES po/gt68xx.de.po:
+ Added basic support for Plustek OpticPro 1248U (from Gerhard Jaeger
+ <gerhard@gjaeger.de>). Removed 50 and 1200 dpi from Lexmark X73.
+ Backend status is BETA now.
+
+2002-11-13 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * modified the Canon SCSI backend (now version 1.10):
+ * backend/canon.c, canon-scsi.c: Added support of focus control for
+ the FS2710 film scanner.
+ backend/canon-sane.c: Set handler_arg in sanei_scsi_open() calls
+ to zero to avoid crashes with Mandrake Linux 9.0
+
+2002-11-12 Oliver Rauch <Oliver.Rauch@Rauch-Domain.DE>
+
+ * added several russion translations to directory po.
+ The translations have been created by
+ Vitaly Lipatov <LAV@VL3143.spb.edu>
+
+2002-11-07 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: revert a experimental change that went into
+ cvs by mistake.
+ * po/umax_pp.de.po: switch to iso-8858-1
+
+2002-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.h
+ backend/gt68xx_low.h doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES po/Makefile.in po/gt68xx.de.po: Changed
+ option titles and descriptions to make them better readable. Added
+ translation markers for all options. Added German translation for
+ backend options. Updated manpage and .desc file concerning scanner
+ status. Added untested flag for Mustek ScanEpress A3 USB and Lexmark
+ X73.
+ * backend/mustek.c doc/sane-mustek.man doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Upload linear gamma table for Pro models
+ if custom gamma is off instead of uploading the composed gamma table.
+ That avoids applying gamm twice. Minor man page update.
+
+2002-11-05 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp_mid.c : OS/2 compile fix, indent
+ correction
+
+2002-11-03 Karl Heinz Kremer <khk@khk.net>
+
+ * sanei/sanei_usb.c: Use endpoint address with direction information
+ instead of the pipe reference. This caused problems with Darwin
+ systems.
+
+2002-11-03 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Full support for libusb
+
+2002-11-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README configure.in configure po/Makefile.in po/README:
+ Translations are now enabled by default if the gettext tools are
+ found. Use msgcat if available. Don't update the .po files
+ automatically.
+ * TODO: Added entries about canon.c model extraction bug, and sanei_usb
+ issue. Updated entries about MAcOS X support. Removed po files entry.
+
+2002-10-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Print installation directories.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.c
+ backend/gt68xx_low.c backend/gt68xx_low.h doc/gt68xx/gt68xx.CHANGES:
+ Faster AFE calibration. Minor fixes. New version: 1.0-28.
+
+2002-10-31 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp.h backend/umax_pp_low.h
+ backend/umax_pp_low.c tools/umax_pp.c: add UTA detection,
+ version number updates
+
+
+2002-10-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.conf: Removed commented out gt68xx entry.
+ * PROJECTS: Updated viceo entry.
+
+2002-10-27 Peter Fales <peter@fales-lorenz.net>
+
+ * configure, acinclude.m4, aclocal.m4 - Remove checks for
+ specific version numbers of gphoto2 - that's not good for long
+ term maintenance, and the API has settled down enough that all
+ recent versions (both releases and CVS) are workable for SANE.
+ It is still necessary to specify --with-gphoto2 if you want to
+ use the gphoto2 backend.
+
+2002-10-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Added a warning if sysconfdir is set to
+ /usr/etc.
+ * backend/test.c: Explicitely close the pipe and wait until
+ reader_process is killed.
+
+2002-10-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in backend/dll.conf backend/gt68xx.c
+ backend/gt68xx.conf backend/gt68xx.h backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_generic.h
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6801.h
+ backend/gt68xx_gt6816.c backend/gt68xx_gt6816.h backend/gt68xx_high.c
+ backend/gt68xx_high.h backend/gt68xx_low.c backend/gt68xx_low.h
+ backend/gt68xx_mid.c backend/gt68xx_mid.h
+ backend/gt68xx_shm_channel.c backend/gt68xx_shm_channel.h:
+ Added gt68xx backend for scanners based on the Grandtech GT-6801
+ and GT-8616 chips like The Mustek BearPaw CU, and TA scanners
+ and some Artec Ultima 2000 clones.
+ * doc/.cvsignore doc/Makefile.in doc/sane-gt68xx.man doc/sane.man
+ doc/descriptions/gt68xx.desc doc/descriptions-external/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added documentation for gt68xx backend.
+ * AUTHORS PROJECTS TODO: Updated concerning gt68xx.
+ * Makefile.in backend/Makefile.in doc/Makefile.in: Added some missing
+ files to DISTFILES.
+
+2002-10-24 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/gphoto2.c: Improve checks for values specified in config
+ file and generate errors when invalid values are specified.
+
+2002-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled again. Used extra version
+ -cvs.
+
+Older entries can be found in ChangeLog-1.0.9.
diff --git a/ChangeLogs/ChangeLog-1.0.12 b/ChangeLogs/ChangeLog-1.0.12
new file mode 100644
index 0000000..f0eb34a
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.12
@@ -0,0 +1,960 @@
+****** Release of sane-backends 1.0.12. End of code freeze ******
+
+2003-05-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added DigitDia 3600.
+ * configure configure.in: New version: 1.0.12.
+
+2003-05-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek.desc: Primax Compact 4800 SCSI is
+ reported to work.
+ * doc/descriptions/unsupported.desc: Added more information for
+ Artec and Visioneer/Primax scanners.
+ * TODO: Added saned + configure issue.
+
+2003-05-21 Stéphane Voltz <svoltz@wanadoo.fr>
+ * backend/umax_pp_low.c: backed out clearing epp timeout. It prevented most
+ common settings to use the umax_pp backend.
+
+2003-05-18 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/sane-plustek.man: Update.
+ * backend/plustek-devs.c backend/plustek-usbshading.c
+ backend/plustek-usb.h:
+ Fixed critical bug in CIS device calibration and settings which causes
+ the CanoScan 650, 1220 and 1240 not to work anymore
+ * TODO: removed line "check status of Umax 3450...".
+
+---- CODE FREEZE FOR SANE 1.0.12 ---
+-- snapshot 1.0.12-pre2
+
+2003-05-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated.
+ * doc/descriptions/unsupported.desc: Added Mustek ScanMagic 9636P.
+ * TODO: Added epson/saned/xsane problem.
+ * configure configure.in: Disabled compilation warnings.
+ * tools/Makefile.in: Added sane-po.awk to DISTFILES.
+
+2003-05-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Minor fix for Spot scanners.
+
+2003-05-15 Gerhard Jaeger <gerhard@gjaeger.de>
+ * TODO: status of UMAX 3450 is fixed now in .desc
+ * descriptions/plustek.desc: update
+ * doc/plustek/Plustek-USB-TODO.txt doc/plustek/Plustek-USB.txt
+ doc/plustek/Plustek.changes: update
+ * backend/plustek-devs.c backend/plustek-pp.c backend/plustek-usb.c
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbio.c backend/plustek-usbmap.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek.c backend/plustek.h backend/plustek-share.h
+ backend/plustek-usb.h:
+ Major bugfix release, cancel should work now, calibration for
+ CIS devices is now fully functional
+
+2003-05-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Updates for Canon
+ scanners. Added Spot scanners.
+ * aclocal.m4 acinclude.m4 configure: Fixed MacOS X build (patch
+ from Mattias Ellert <mattias.ellert@tsl.uu.se>).
+ * doc/sane-gt68xx.man: Fixed wrong example.
+
+2003-05-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: Added missing $(DESTDIR).
+ * TODO: Minor updates.
+
+2003-05-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.fr.po: Updated french translation (from Yann
+ E. MORIN <yann dot morin dot 1998 at anciens dot enib dot fr>).
+ * frontends/saned.c: Replaces a strncmp() call by a macro detecting
+ V4-mapped address. This is a lot safer than the strncmp, and doesn't
+ break anything. Patch from Julien BLACHE <jb@jblache.org>.
+
+2003-05-11 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp.[ch]: Offset correction for Mustek 600CP and
+ added some debugging code.
+
+2003-05-09 Rene Rebe <rene.rebe@gmx.net>
+
+ * doc/sane-avision.man: fix tiny typo
+
+2003-05-08 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.c doc/sane-avision.man
+ doc/descriptions/avision.desc: update to the latest avision
+ backend including the fix for segmentation fault when no config
+ file is present.
+
+2003-05-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure include/sane/config.h.in:
+ Added missing HAVE_LIBIEEE1284 macro. The test was there, but
+ the macro wasn't set.
+ * po/sane-backends.de.po: Added some missing translations.
+ * po/sane-backends.es.po po/sane-backends.fr.po po/sane-backends.nl.po
+ po/sane-backends.no.po po/sane-backends.pt.po po/sane-backends.ru.po
+ po/sane-backends.sv.po: Updated for latest backend changes.
+ * backend/hp5400.c backend/hp5400.h backend/hp5400_internal.c
+ backend/hp5400_sanei.c backend/hp5400_xfer.h: Changed license to
+ GPL + SANE exception.
+
+2003-05-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.no.po: Added Norwegian
+ translation (from Sigurd Stordal <sigurd.stordal@stud.ibg.uit.no>).
+
+2003-05-06 Michael Herder <crapsite@gmx.net>
+
+ * doc/descriptions/artec_eplus48u.desc:
+ Added comment about different product ID of MEM 48U
+ * backend/artec_eplus48u.conf:
+ Added new model Memorex MEM 48U
+
+2003-05-05 Oliver Rauch <Oliver.Rauch@XSane.org>
+ * backend/umax.c: solved bug that broke compilation for OS2
+
+2003-05-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.fr.po: Updates for the French translation from
+ Yann E. MORIN <yann dot morin dot 1998 at anciens dot enib dot fr>.
+ * tools/check-po.awk: Added script to check the translations for
+ completeness (from Yann E. MORIN).
+ * tools/README: Added description of check-po.awk. Minor reordering.
+
+---- FEATURE FREEZE FOR SANE 1.0.12 ---
+-- snapshot 1.0.12-pre1
+
+2003-05-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Added implementation of poll() for systems
+ that don't provide it (patch from Julien BLACHE
+ <jb@jblache.org>).
+ * TODO: Removed obsololete entries.
+ * NEWS: Updated for 1.0.12.
+ * backend/ibm.c backend/ibm-scsi.c: Only disable object position
+ command for Ricoh IS-420.
+
+2003-05-04 Oliver Rauch <Oliver.Rauch@XSane.org>
+
+ * backend/umax.c umax.h
+ applied changes that replace fork() by thread for OS2
+
+2003-05-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/md5.h: Set fixed alignment because otherwise the MacOS X
+ gcc doesn't like it.
+ * backend/ibm.c backend/ibm-scsi.c doc/descriptions/ibm.desc:
+ Disabled object_position. That should fix the Ricoh IS-420.
+ * frontend/saned.c: Try to get the correct port number when
+ /etc/services doesn't list "sane" by asking for "6566". Check
+ result of socket(). Print ip faimily and port.
+ * configure configure.in frontend/Makefile.in tools/Makefile.in:
+ Remove -all_load again and try to use the correct link order for
+ libraries.
+
+2003-05-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in frontend/saned.c
+ include/sane/config.h.in: Test for poll() and disable IPV6 if
+ not found.
+ * include/lalloca.h: Remove test for MacOS X. That one breaks some
+ MacOS X systems.
+ * configure configure.in frontend/Makefile.in tools/Makefile.in:
+ Add -all_load to linker flags on MacOS X to avoid linker errors.
+ * backend/Makefile.in: Create directory for gt68xx firmware.
+
+2003-05-01 Oliver Rauch <Oliver.Rauch@XSane.org>
+
+ * backend/
+ umax-scanner.c umax-scsidef.h umax-uc1200se.c umax-uc630.c
+ umax-ug630.c umax-usb.c umax.conf umax.h
+ umax-scanner.h umax-uc1200s.c umax-uc1260.c umax-uc840.c
+ umax-ug80.c umax.c umax.desc
+ doc/sane-umax.man doc/umax/*
+
+ update of sane-umax backend
+
+
+2003-04-30 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-options.c
+ backend/snapscan-scsi.c doc/descriptions/snapscan.desc: SnapScan
+ backend 1.4.26, added support for Agfa Arcus 1200, better support
+ for Benq 5000.
+
+2003-04-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * lib/getopt.c: Removed #include again, breaks compilation on
+ OS/2.
+ * config.guess config.sub: New upstream versions.
+ * acinclude.m4 aclocal.m4 configure ltmain.sh: New libtool
+ upstream realease: 1.5.
+ * acinclude.m4 aclocal.m4 configure configure.in: Added support
+ for -framework option and check for IOKit for MacOS X. Check for
+ latex tools. Minimum autoconf version is 2.54.
+ * ltmain.sh: Add support for -framework option for MacOS X (from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+ * sanei/sanei_scsi.c: Added SCSI support for MacOS X (from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+ * include/sane/config.h.in: Added test for IOKit.
+ * README.darwin: Updated concerning SCSI support.
+ * backend/Makefile.in: Disable manual links for shared libraries.
+ This breaks MacOS X and doesn't seem to be necessary on other
+ platforms any more.
+ * include/lalloca.h: Don't use builtin alloca on MacOS X.
+ * tools/Makefile.in: Build sane-desc by default.
+ * tools/sane-desc.c: Fixed segfault.
+ * doc/Makefile.in: Only use latex if available.
+ * doc/descriptions/unsupported.desc: Updated info on Artec, Canon
+ and HP scanners.
+
+2003-04-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/hp5400_internal.c backend/canon630u-common.c
+ backend/epson_scsi.c: Minor compilation fixes for MacOS X and
+ OS/2.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added Genius 3x as working scanner,
+ removed testing flag. Added Artec 2000 e+ to manpage. Added
+ detection for the Plustek OpticPro U16B.
+ * doc/descriptions/unsupported.desc: Added more information for
+ the HP Scanjet 2300c.
+ * lib/getopt.c: Add missing includes.
+ * po/Makefile.in po/sane-backends.de.po po/sane-backends.es.po
+ po/sane-backends.fr.po po/sane-backends.nl.po
+ po/sane-backends.pt.po po/sane-backends.ru.po
+ po/sane-backends.sv.po: Added hp5400 backend. Updated po files.
+ * TODO: Added entry about MacOS X SCSI patches.
+
+2003-04-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.netbsd: Some additions concerning uscanner driver.
+ * TODO: Removed hp4200 link. Added hp5400 GPL/SANE issue. Added
+ avision hpusbscsi documentation issue. Removed scanimage/OS/2
+ problem.
+ * doc/sane-mustek.man: Added some more details for SCSI adapters.
+ * doc/descriptions/ibm.desc: Ricoh IS-420 doesn't seem to work
+ out-of-the-box.
+ * doc/descriptions/unsupported.desc: Added Visioneer OneTouch 4800
+ USB. Added more information for the Genius ColorPage HR7X Slim
+ and Microtek Scanport 3000.
+
+2003-04-23 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco2.c backend/teco2.h doc/sane-teco2.man
+ doc/teco/teco2.txt descriptions/teco2.desc: new calibration
+ algorithm.
+
+2003-04-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README: Removed link to (non-working) anonymous CVS. Mention CVS
+ snapshots and beta releases instead. Rewrite the paragraph about
+ frontends. Mention that libusb is necessary for some backends.
+ Mention more operating systems. Added contact section (mostly
+ copying from sane(7)). Minor formatting updates.
+ * README.freebsd: Automatic SCSI detection does work, so this part
+ was removed. libusb is necessary for some backends. Some parport
+ scanners seem to work.
+ * README.linux: Minor updates.
+ * README.openbsd: libusb is necessary for some backends.
+ * Makefile.in doc/Makefile.in doc/sane.man: The lists of supported
+ devices are now generated and installed by default.
+ * NEWS: Updated for 1.0-12.
+ * doc/descriptions/unsupported.desc: Removed Epson Perfection 660
+ (now supported by snapscan backend), Primax Jewel 4800 (teco2).
+ Added Enhans/E-Lux j-6121 and Visioneer OneTouch 5300 USB.
+ * sanei/sanei_usb.c: Removed Frank's memleak fix. The memory is
+ allocated only once in sanei_usb_init, not in sanei_usb_open.
+ So releasing it in sanei_usb_close breaks backends that open
+ devices more than once.
+ * po/sane-backends.nl.po: Updated Dutch translation (from Martin
+ Kho <mkho@xs4all.nl> and Bertrik Sikken <bertrik@zonnet.nl>).
+
+2003-04-18 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco2.c backend/teco2.conf backend/teco2.h
+ doc/sane-teco2.man doc/descriptions/teco2.desc: added support for
+ Relisys AVEC II S3 (VM3564) and Primax Jewel 4800 (VM356A). Patch
+ from Gerard Klaver.
+ * sanei/sanei_usb.c: fixed a memleak.
+ * sanei/sanei_pv8630.c: added some debug traces.
+
+2003-04-18 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * configure configure.in include/sane/config.h.in:
+ added detection of dev/ppbus/ppi.h
+
+2003-04-18 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp.conf:
+ added support for /dev/ppi0 on *BSD, and a
+ * backend/umax_pp.c: configuration parsing fix
+
+2003-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS backend/Makefile.in backend/dll.conf backend/hp5400.c
+ backend/hp5400.conf backend/hp5400.h backend/hp5400_internal.c
+ backend/hp5400_sanei.c backend/hp5400_xfer.h doc/.cvsignore
+ doc/Makefile.in doc/sane-hp5400.man doc/sane.man:
+ Added hp5400 backend from Martijn van Oosterhout
+ <kleptog@svana.org> and Thomas Soumarmon
+ <soumarmt@nerim.net>. Changed to use sanei_usb instead of direct
+ /dev/usb/scanner access. Added manual page. Fixed some
+ portablility issues and some warnings. Added SANE headers.
+ * doc/descriptions/hp5400.desc doc/descriptions-external/hp5400.desc:
+ Moved file as the backend is included now. Added new marker.
+ * doc/descriptions-external/lhii.desc: Removed. Website has been
+ dead for years. No response from author.
+ * doc/descriptions-external/onetouch8600.desc: Removed. Website is
+ dead. No response from author.
+ * doc/descriptions-external/hp4200.desc
+ doc/descriptions-external/hpoj.desc
+ doc/descriptions-external/niash.desc
+ doc/descriptions-external/primax.desc
+ doc/descriptions-external/scanwit.desc
+ doc/descriptions-external/v4l2.desc
+ doc/descriptions-external/viceo.desc: Added comments to explain
+ the reasons for not including these backends into SANE.
+
+2003-04-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/scanimage.man: Added EXAMPLES section.
+ * doc/descriptions/unsupported.desc: Added information about
+ Hewlett-Packard and Mustek scanners.
+
+2003-04-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS backend/Makefile.in backend/dll.conf backend/ibm-scsi.c
+ backend/ibm.c backend/ibm.conf backend/ibm.h doc/Makefile.in
+ doc/sane.man doc/sane-ibm.man doc/.cvsignore
+ doc/descriptions/ibm.desc: Added IBM backend for the
+ IBM 2456, the Ricoh IS-420 and maybe the IS-410 and IS-430 from
+ mf <massifr@tiscalinet.it>. Added manual page, fixed some
+ warnings, Added detection for IS-410 and IS-430.
+ * doc/descriptions-external/ibm.desc: Removed, now included in
+ SANE distribution.
+ * include/md5.h: Don't use __attribute__ for compilers that don't
+ support it.
+ * doc/sane-ibm.man doc/descriptions/ibm.desc: Mention alpha
+ quality. Add maintainer address.
+
+2003-04-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Fixed some HTML bugs.
+ * doc/desccriptions/unsupported.desc: Updated HP Scanjet 35XX,
+ Medion MD 6228, and Umax Astra 4700 entries. Added some Mustek
+ and Primax scanners.
+
+2003-04-14 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, hp-option.c: Check pointers received in
+ sane_control_option(). Caused saned to crash on
+ scanimage --help -d net:localhost:hp:...
+
+2003-04-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.man: Added SEE ALSO section.
+ * backend/Makefile.in: Fixed warning for dll-preload.c.
+ * bakend/dll.c: Add casts to function calls. Without this fix, the
+ dll backend didn't work on the m68k paltform because data and
+ addresses are stored in differnt registers so the return values
+ of the sane api functions were wrong. Patch from Dave Huang
+ <khym@azeotrope.org>. Fixed some compilation warnings.
+
+2003-04-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Updated
+ Mustek BearPaw 1200 CU Plus white strip value. Set Mustek
+ ScanExpress A3 USB to CCD. Black mark may be still wrong. Minor
+ formatting changes in the manpage. Decreased ScanExpress A3 USB
+ status to alpha because of CIS/CCD change.
+ * backend/ma1509.c: Remove test for multi-pass.
+ * doc/sane.man: Added information about #sane IRC
+ channel. Formatting changes.
+ * doc/descriptions/unsupported.desc: Added Mustek P 3600 A3 Pro.
+ * TODO: Removed license issue. Updated desc files and global
+ variables entries. Updated v4l entry.
+ * doc/scanimage.man: --batch format doesn't work, only --batch=format.
+
+2003-04-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c backend/test.h doc/descriptions/test.desc: Added
+ support for OS/2 (from Franz Bakan <fbakan@gmx.net>).
+
+2003-04-05 Nathan Rutman <nthn1@yahoo.com>
+
+ * backend/canon630u-common.c: Removed last change in offset/gain
+ calculation, which croaked for some cases. Give up early if we
+ can't talk on the USB.
+ * backend/canon630u.c: Added option to force scanner recalibration.
+
+2003-04-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c: Added some missing debug messages. Fixed a warning.
+
+2003-04-03 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * TODO: removed mustek_pp entry (Check that global variables are
+ initialized propperly
+
+2003-04-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * lib/Makefile.in: Recompile all targets if necessary.
+ * sanei/sanei_scsi.c: Fixed some warnings.
+ * include/md5.h: Declare md5_buffer.
+ * sanei/sanei_constrain_value.c: Removed unnecessary variable.
+ * backend/agfafocus.c: Fixed some warnings.
+ * backend/as6e.c: Fixed some warnings.
+ * backend/coolscan.c backend/coolscan-scsi.h: Fixed a bunch of
+ compilation warnings.
+ * backend/djpeg.c: Fixed some warnings.
+ * backend/dmc.c: Fixed some warnings.
+
+2003-04-03 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp.c: Fixed a potential crash bug that could be
+ triggered when calling sane_init/sane_get_devices/sane_exit
+ multiple times, and fixed some minor bugs to pass the
+ frontend/tstbackend.c tests.
+
+2003-04-03 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-scsi.c
+ backend/snapscan-options.c backend/snapscan.conf
+ doc/descriptions/snapscan.desc:
+ SnapScan backend 1.4.25 - added support for Epson Perfection 660,
+ enhanced support for Acer 5000
+
+2003-04-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-as6e.man: Added info about $PATH. Minor formatting fixes.
+ * doc/sane.man: Reorganization. Updated DEVELOPER'S DOCUMENTATION.
+ Rewrote PROBLEMS in a more user-centric way. Added "HOW CAN YOU
+ HELP" section. Added paragraph about SANE device lists. Updated
+ CONTACT section. Minor additions to the gt68xx and plustek
+ entries. Minor spelling fixes.
+ * backend/sm3600-color.c backend/sm3600-gray.c backend/sm3600-homerun.c
+ backend/sm3600-scanmtek.c backend/sm3600-scantool.h backend/sm3600-scanusb.c
+ backend/sm3600-scanutil.c backend/sm3600.c backend/sm3600.h:
+ Fixed comment headers. They were copied verbatim from the dll backend.
+ * AUTHORS backend/artec.c doc/sane-artec.man: Remove Chris Pinkham
+ as active maintainer because his primary email address bounces,
+ and he doesn't respond to mails to other addresses. Marked email
+ addresses and website as dead. Fixed AT3 misdectection that was
+ on the TODO list for some time. Initialize global variables in
+ sane_init.
+ * acinclude.m4 aclocal.m4 configure configure.in
+ include/sane/config.h.in frontend/saned.c: Added a switch to
+ disable libusb. Removed switch to enable ipv6 uncondinionally.
+ Check for sys/poll.h.
+ * sanei/sanei_usb.c: Added a function to print the buffer contents
+ for the read and write functions. Fixed some DBGs. Fixed a wrong
+ return value.
+ * TODO: Removed sm3600, artec and libusb configure switch entries.
+ Updated v4l, sanei buffer print and html manpages entries.
+ Added OS/2 crash entry.
+ * include/getopt.h lib/getopt.c lib/getopt1.c: Update to glibc
+ 2.3.1 version. This fixes a compilation warning. Further more,
+ the code is now LGPLed.
+ * include/md5.h lib/md5.c: Update to glibc 2.3.1 version. The code
+ is now LGPLed. Changed the K&R style and added prototypes to
+ avoid warnings.
+
+2003-03-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Include poll.h only if new saned code is
+ used. Fixes compilation on OS/2. Patch from Julien BLACHE
+ <jb@jblache.org>.
+
+2003-03-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Medion MD 6228, Microtek
+ ScanPort 3000, and PIE Primefilm 1800u.
+ * acinclude.m4 aclocal.m4 configure configure.in backend/net.c
+ backend/net.h doc/sane-net.man doc/saned.man frontend/saned.c
+ include/sane/config.h.in: Added support for IPv6. Updated
+ manpages. Patch from Julien BLACHE <jb@jblache.org>.
+ * TODO: Updated net sections. Removed Irix pacht entry. Added
+ entry about libusb switch.
+
+2003-03-28 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c backend/fujitsu-scsi.h:
+ now really supports the fi-4120C
+
+2003-03-26 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Added workaround for GT-8000 scanners,
+ fixed two warnings reported by der Mouse.
+
+2003-03-24 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/Makefile.in backend/avision.c backend/avision.conf
+ backend/avision.h doc/descriptions/avision.desc: updated
+ avision backend to latest build. This includes user-space
+ USB support and OS/2 thread handling.
+
+2003-03-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon CanoScan FB620U.
+ Added more info for HP ScanJet 3500c.
+
+2003-03-24 Rene Rebe <rene.rebe@gmx.net>
+
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: support for
+ interrupt endpoint reads
+
+2003-03-23 Rene Rebe <rene.rebe@gmx.net>
+
+ * doc/sane-usb.man fix typo
+
+2003-03-22 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * backend/canon.c: Modified the option "eject after each scan" -
+ Eject is suppressed for film scanners after preview scans.
+
+2003-03-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon LIDE 50, IBM
+ ADF Color Scanner, Plustek Spectra ADF.
+
+2003-03-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/as6e.c: Fixed segmentation fault when $PATH is not set.
+
+2003-03-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: OS/2 specific changes: memory for SRB now is
+ allocated using _tcalloc() instead of allocating on stack to avoid
+ crossing 64k borders due to restrictions of 16-bit device-driver.
+ Cosmetic changes and some casts to reduce compiler-warnings. Patch
+ from Franz Bakan <fbakan@gmx.net>.
+ * sanei/sanei_thread.c: Increased stacksize for thread. Patch from
+ Franz Bakan <fbakan@gmx.net>.
+
+2003-03-10 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c backund/fujitsu-scsi.h backend/fujitsu.h
+ * patch from Ron Cemer <ron@roncemer.com>
+ fixes the broken "ADF empty" detection on the Fujitsu scanners
+ when connected via USB. It also fixes a sense-request issues,
+ which were required in order to determine whether the ADF is
+ empty. It also eliminates some duplicate code blocks.
+ * renamed some functions
+
+2003-03-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_low.h
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added Packard Bell Diamond 1200 Plus to
+ .desc and manpage. New flag to avoid running stop_scan before doing
+ a scan. The Windows firmware of the BearPaw 1200 CU Plus doesn't
+ seem to like that.
+ * doc/descriptions/unsupported.desc: Added some Boeder, Brother, HP and
+ Trust scanners.
+ * TODO: Removed fujitsu and ma1509 entries. Updated .desc files and
+ global variables entry.
+
+2003-03-10 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c backund/fujitsu-scsi.h
+ displays the offending byte when something is wrong in the
+ window descriptor block.
+
+2003-03-09 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c backend/mustek_pp_cis.h: Fixed two
+ calibration bugs: one occasionally caused overexposed images at
+ all resolutions; the other one occasionally caused color inbalances
+ when scanning narrow areas at high resolutions.
+
+2003-03-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: Wait for the completion of all SCSI commands in
+ sanei_scsi_flush_all_extended (Linux). Without this fix, especially
+ long running commands and command queuing would cause memory
+ corruption if the buffer was invalid after the flush command.
+ * doc/descriptions/abaton.desc: Removed link to everex (timeout).
+
+2003-03-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Minor debug message updates. Fixed a
+ little bug in sane_control_option (gamma control). Removed the
+ signal blocking again. That only hides the segfault in sanei_scsi.
+ Check if there are documents in ADF for Paragon 2. Otherwise return
+ error. Fix some minor issues in reading the config file.
+
+2003-03-07 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/descriptions/dc210.desc, doc/descriptions/dc240.desc:
+ Fix broken URLs to the Kodak web pages
+
+2003-03-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_gt6801.c backend/gt68xx_gt6816.c
+ backend/gt68xx_low.c doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Small requests are done with a response
+ buffer of 8 bytes (instead of 64) now. Looks like GT-6816 based
+ scanners return 8 bytes if the firmware is loaded and 64 bytes if
+ it's not loaded. Changed GT-6816 firmware check to ignore errors
+ from above change. GT-6816 scanners work with the BSDs now (at least
+ once). Updated manpage concerning the BSDs.
+
+2003-03-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/apple.c: Added missing option size (avoids crash on network
+ scanning). Patch from Milon Firikis <milonf@hotpop.com>.
+
+2003-03-05 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c, backend/fujitsu.h: renamed some variables
+ * backend/fujitsu.c: gray duplex scanning now works with the 4097D
+ when disconnect is enabled in the scsi-controller
+ * doc/descriptions/unsupported.desc: remove fujitsu fi4120C
+ * doc/descriptions/fujitsu.desc added fi4120C, ScanParter 93GX
+
+2003-03-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei.h sanei/sanei_constrain_value.c: Added function
+ sanei_check_value in addition to the existing sanei_constrain_value.
+ It checks if the value of a sane option fits into the constraint but
+ doesn't try to do any fixing/rounding.
+ * doc/sane-scsi.man: Changed the example to use /dev/sg0 instead of
+ /dev/sge.
+ * doc/descriptions/unsupported.desc: Removed Umax AstraSlim (now
+ supported by artec_eplus48u backend).
+
+2003-03-03 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/plustek/Plustek-USB-TODO.txt: update
+ * backend/plustek-devs.c backend/plustek-usb.c backend/plustek-usbhw.c
+ backend/plustek-usbimg.c backend/plustek-usbscan.c backend/plustek.c:
+ Fixed some bugs, that avoid proper function of Genius devices and
+ the HP2100c. Fixed also a problem, that causes permanent warmup cylces
+ on EPSON Photo devices.
+
+2003-03-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_gt6801.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Make sure that the firmware for
+ plustek-like scanners is loaded. Didn't work for Genius vivid3xe.
+ Added both Genius scanners to man page. Removed warning from Genius
+ Vivid3xe.
+
+2003-03-02 Michael Herder <crapsite@gmx.net>
+
+ * doc/descriptions/artec_eplus48u.desc:
+ * backend/artec_eplus48u.conf:
+ Added new model Umax AstraSlim SE
+
+2003-03-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/ibm.desc: Added Ricoh IS-430.
+ * doc/descriptions/unsupported.desc: Updated Microtek scanners. Added
+ Umax AstraSlim SE.
+
+2003-02-28 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * backend/canon-sane.c: Adjusted to use the new sanei_constrain_value
+ function; made some cosmetic changes to reduce the number of compiler
+ warnings
+
+2003-02-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_low.c backend/gt68xx_low.h doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added Genius Colorpage Vivid3xe. Added
+ request_type and request fields to the command set. Request is 0x01
+ or 0x04.
+ * doc/descriptions/unsupported.desc: Added Compaq S4 100 and Microtek
+ Scanmaker 4800.
+
+2003-02-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/hp5400.desc: Added description for hp5400
+ backend. It supports the Hewlett-Packard 5400, 5470 and (maybe) 5490
+ scanners.
+ * doc/descriptions-external/viceo.desc: Added Visioneer OneTouch 8600.
+ * doc/descriptions/unsupported.desc: Removed hp5400 series (now in
+ hp5400.conf). Added Lexmark, Medion and Primax scanners.
+ * doc/descriptions/ma1509.desc: Added :new token.
+ * sanei/sanei_constrain_value.c: Round a word list value to the nearest
+ entry (if necessary). Code was taken from canon backend.
+
+2003-02-26 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * modified the Canon SCSI backend (now version 1.12):
+ * backend/canon.c, canon-sane.c, canon.h: Added support for
+ the FB1200S flatbed scanner.
+ * backend/canon.c: Made the sense handler generate meaningful
+ status information for new scanner models (solved the Mandrake
+ crash problem).
+ * backend/canon.c, canon-sane.c, canon.h: Moved model-dependent
+ declarations and decisions to a common location.
+ * backend/canon-sane.c: Fixed the out-of-memory problem of
+ xscanimage when doing previews with scanners using hardware
+ scan resolutions only.
+
+2003-02-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.fr.po: Updated French translation (from Yann E.
+ MORIN <yann dot morin dot 1998 at anciens dot enib dot fr>).
+
+2003-02-23 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
+ backend/umax_pp_mid.h backend/umax_pp.c backend/umax_pp.h
+ backend/umax_pp.conf tools/umax_pp.c doc/sane-umax_pp.man: changed
+ highlight option to contrast, and gain to brightness.
+
+2003-02-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in backend/dll.conf backend/ma1509.c
+ backend/ma1509.conf backend/ma1509.h: Added new backend ma1509 for
+ Mustek BearPaw 1200F scanners.
+ * doc/Makefile.in doc/descriptions/ma1509.desc doc/sane-ma1509.man
+ doc/sane.man doc/.cvsignore: Added documentation for ma1509 backend.
+ * doc/descriptions-external/ma1509.desc: Removed.
+ * AUTHORS: Added ma1509.
+ * po/Makefile.in po/sane-backends.de.po po/sane-backends.es.po
+ po/sane-backends.fr.po po/sane-backends.nl.po po/sane-backends.pt.po
+ po/sane-backends.ru.po po/sane-backends.sv.po: Updated for ma1509.
+ * doc/backend-writing.txt: Some parts concerning PRJECTS/.desc files
+ are rewritten. Added information about initializing global variables
+ and sizeof (void *) != sizeof (int) (from Martijn van Oosterhout
+ <kleptog@svana.org>).
+
+2003-02-23 Simon Munton <simon@munton.demon.co.uk>
+ * backend/pie.c: increment BUILD (was missed in last change)
+
+2003-02-23 Simon Munton <simon@munton.demon.co.uk>
+ * backend/pie.c: fixed segmentation faults when sane_init/sane_exit is
+ run more than once.
+
+2003-02-23 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.c: Added global vars reset.
+ Fixed a segmentation bug when using "" as opened device name.
+
+2003-02-22 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/sane.tex: added Relisys and Mitsubishi to the list of
+ vendors. Bumped the revision date.
+
+ * frontend/tstbackend: added more sane_init/sane_exit tests. Added
+ Fujistu and Relisys to the list of valid vendor names.
+
+2003-02-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Added vid/pid 0x07b3/0x0400 to gt68xx.conf also. Added indormation
+ about Medion 4394. Mention ma1509 backend. Fix segfault when calling
+ sane_open with an empty device name. Explicitely initialize global
+ variables to avoid segfaults when calling sane_init/sane_exit more
+ than once.
+ * backend/net.c doc/descriptions/net.desc: Initialize global variables
+ in sane_init to avoid segmentation faults when sane_init/sane_exit is
+ run more than once.
+ * doc/descriptions-external/ibm.desc: Add Ricoh IS-420.
+ * sanei/sanei_usb.c: Call sanei_usb_init only once.
+ * backend/mustek_usb.c doc/descriptions/mustek_usb.desc
+ doc/mustek_usb/mustek_usb.CHANGES doc/sane-mustek_usb.man: Iniatialize
+ global variables explicitely. Mention ma1509.
+ * backend/mustek.c doc/mustek/mustek.CHANGES: Initialize global
+ variables in sane_init.
+ * TODO: Add ma1509 backend. Add segfault when running sane_init more
+ than once. Removed sanei_usb interface issue.
+
+2003-02-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Fujitsu fi-4220C (now
+ supported by fujitsu backend). Added Syscan Travelscan 464. Updated
+ HP scanners.
+
+2003-02-20 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c: make option RIF available for 3091 and 3092, bugfix
+ * backend/fujitsu.c: set availability of options THRESHOLD und VARIANCE
+
+2003-02-20 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c, backend/fujitsu.h: patch from <ron@roncemer.com>:
+ fi4220 support
+ USB support for scanners which send SCSI commands over usb
+
+2003-02-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/ma1509.desc: Added description of the
+ ma1509 backend for Mustek BearPaw 1200F scanners.
+ * doc/descriptions/unsupported.desc: Added Avision, Brother, and Umax
+ scanners. Removed Mustek BearPaw 1200F.
+ * sanei/sanei_usb.c: Check all acceptable interfaces instead of using
+ the first one.
+ * tools/sane-find-scanner.c: Check all interfaces. Print a more
+ definite message when a scanner was found to avoid confusion.
+
+2003-02-18 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: icc compile fixes, and
+ EPP mode setting fix for direct hardware access
+
+2003-02-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.fr.po: Added more French translations (from Yann E.
+ MORIN <yann dot morin dot 1998 at anciens dot enib dot fr>).
+ * sanei/sanei_usb.c: usb_clear_halt should only be called in libusb
+ mode.
+
+2003-02-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Make sure that the result of the
+ reader_process is interpreted correctly. Block signals when waiting
+ for a SCSI request to finish. Otherwise we may get a segfault if the
+ reader_process is terminated while waiting.
+
+2003-02-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/doxygen-sanei.conf: Updated version.
+ * include/sane/sanei_usb.h: Fixed link to USB spec.
+ * doc/descriptions/unsupported.desc: Added Artec scanners.
+ * TODO: Updated desc file entry.
+ * backend/gt68xx.c backend/gt68xx_devices.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ List BearPaw 2400 CS Plus as supported. Make fast preview the default
+ (otherwise BP 2400 TA Plus wouldn't work with 12/16 bits). Added
+ vid/pid 0x07b3/0x0400, that's another Plustek OpticPro 1248U.
+
+2003-02-16 René Rebe <rene@rocklinux.org>
+
+ * backend/avision.h backend/avision.c doc/sane.man
+ doc/descriptions/avision.desc: update to the latest Avision
+ backend release. It includes feature and stability improvements
+ and bug fixes. The sane man-page now mentions that the avision
+ backend supports more than the AV 630 CS ...
+
+2003-02-15 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c backend/epson_usb.[ch]: Fix problem with
+ "usb <vendor> <product> syntax in config file
+
+ * backend/epson.c: Move sanei_init_usb() to sane_init(). Thanks
+ to Ron Cemer for the patch.
+
+2003-02-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Updated Canon, Fujitsu, and
+ Plustek entries.
+ * TODO: Added entries about v4l, fujitsu, snapscan.
+
+2003-02-11 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dll.conf, doc/sane-gphoto2.man: Added a commented out
+ gphoto2 entry in dll.conf, and mentioned it in the man page.
+
+ * backend/gphoto2.c: Bug fixes. Don't coredump if the
+ gphoto2.conf file is missing, and don't require a speed to
+ be set if the usb port is used.
+
+2003-02-11 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-handle.c: Fix problem with ifdef/ifndef for threads
+
+2003-02-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * aclocal.m4 acinclude.m4 configure configure.in: Check for MacOS X
+ native dynamic loading first before lookinf for libdl.
+
+2003-02-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c sanei/sanei_codec_bin.c sanei/sanei_wire.c: Check
+ the IP address of the remote host before any communication occurs.
+ Check for a errors before trsuting values that came from remote.
+ Make sure that strings are 0-terminated.
+ * po/Makefile.in po/sane-backends.nl.po: Added dutch (nl) translations
+ for sane-backends (from Bertrik Sikken <bertrik@zonnet.nl>).
+ * doc/saned.man: More warnings about security issues. Make more clear
+ that -s and -d can't be used in inetd mode.
+ * PROBLEMS: Moved "memory exhausted" and missing scsi headers problems
+ to README.linux. Removed SG_BIG_BUF problem. Rewrote Mustek "exceed
+ the physical scan area" problem as it applies to most flatbed
+ scanners. Added info about test backend. Added info about saned
+ security issues.
+ * README.linux: Moved "memory exhausted" and missing scsi headers
+ problems from PROBLEMS.
+ * TODO: Added saned info. Added artec at3 misdetection.
+ * configure configure.in NEWS: Updated version number.
+
+2003-02-09 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: fixed big bug related to color plane
+ synchronization, which gave blur effect at > 75 dpi
+ * tools/umax_pp.c: change version number
+
+2003-02-08 Peter Fales <peter@fales-lorenz.net>
+ * backend/dc210.c, backend/dc240.c: Fixes for Irix from
+ Andrea Suatoni.
+
+2003-02-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: Added ChangeLog-1.0.10 to DISTFILES.
+ * po/Makefile.in po/template.desc po/README: Don't generate po files
+ with every make. That avoids recreation just because of date changes.
+ Automatically create new languages on make update. Automatically
+ generate list of DISTFILES. Added template for header used in new
+ po files. Updated documentation.
+ * doc/descriptions/unsupported.desc: Added Genius Colorpage Vivid III.
+ Added more info for Plustek OpticPro 1212U and U12/UT12.
+
+2003-02-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.c
+ backend/gt68xx_high.h doc/descriptions/gt68xx.desc
+ doc/descriptions/unsupported.desc doc/gt68xx/gt68xx.CHANGES:
+ Fixed resolutions for BearPaw 1200 TA. Increase the lowest black
+ for CCD coarse calibration. Adjusted internal gamma correction.
+ CCD scanners use color mode for coarse+quality cal now. Preview isn't
+ always in 8 bit mode now (can be selected by option). Upper and lower
+ limits for coarse calibration are unified now. Added options for
+ adjusting gain and offset.
+ * po/sane-backends.de.po po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.pt.po po/sane-backends.ru.po po/sane-backends.sv.po:
+ Adjusted for new gt68xx options. Updated German translation for
+ gt68xx.
+
+2003-02-04 Michael Herder <crapsite@gmx.net>
+
+ * doc/descriptions/artec_eplus48u.desc:
+ Unified manufacturer names according to Hennings suggestion.
+
+2003-02-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-backends.pt.po: Fixed UTF character.
+
+2003-02-02 Peter Kirchgessner <peter@kirchgessner.de>
+
+ * backend/hp.c backend/hp-handle.c: Add support for OS/2
+ doc/descriptions/hp.desc: Version number changed
+
+2003-02-02 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * doc/descriptions/mustek_pp.desc: cleaned up the file a little
+
+2003-02-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/gt68xx.desc doc/descriptions/unsupported.desc:
+ Unified manufacturer names. Minor bugfixes.
+
+2003-02-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled again. Used extra version
+ -cvs.
+
+Older entries can be found in ChangeLog-1.0.10.
diff --git a/ChangeLogs/ChangeLog-1.0.13 b/ChangeLogs/ChangeLog-1.0.13
new file mode 100644
index 0000000..a179c54
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.13
@@ -0,0 +1,1349 @@
+****** Release of sane-backends 1.0.13. End of code freeze ******
+
+2003-11-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: New version: 1.0.13.
+
+2003-11-20 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc: Added model "SnapScan"
+ (Bugtrack #300286)
+
+2003-11-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.sv.po: Updated Swedish translation (from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+
+2003-11-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in acinclude.m4 aclocal.m4: Changed check for
+ linux/videodev.h. If that file is not compilable, we don't build
+ the v4l backend. That's to avoid compilation errors if videov.h
+ from Linux kernel 2.6.* is used. Include all the headers we also
+ include in backend/v4l.c to make sure we find all problems.
+ * backend/v4l.c: Try to not include linux/videodev2.h to avoid
+ compilation errors.
+
+-- snapshot 1.0.13-pre3
+---- CODE FREEZE FOR SANE 1.0.13 ---
+2003-11-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated.
+ * configure configure.in: Disabled warnings for release.
+
+2003-11-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Brother DCP 8020 and
+ UMAX Astra 3600.
+
+2003-11-14 Eddy De Greef <eddy_de_greef at tiscali dot be>
+ * doc/sane-mustek_pp.man: added the new libieee1284 style parport
+ names.
+
+2003-11-14 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek.c backend/plustek-usb.cal backend/plustek-usbshading.c
+ backend/plustek-usbhw.c: Endianess fixes.
+
+2003-11-13 Eddy De Greef <eddy_de_greef at tiscali dot be>
+ * backend/mustek_pp_cis.c: accept old style parport names to
+ ensure backward compatibility with existing mustek_pp.conf files.
+
+2003-11-13 Peter Fales <peter@fales-lorenz.net>
+ * backend/gphoto2.h: Line beginning with "static static" was breaking
+ compiles on some platforms.
+
+2003-11-10 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/Makefile.in: Linking pie backend now against sanei_thread lib.
+ * backend/pie.c: Switched backend over to sanei_thread usage, to make it
+ also work with OS/2.
+
+2003-11-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c backend/snapscan.c
+ Disabled quality calibration for Epson Perfection 1670 since it does
+ not work reliably yet
+
+2003-11-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/lhii.desc: Added (back) the links to
+ the external lhii backend that supports old handscanners.
+
+-- snapshot 1.0.13-pre2
+
+2003-11-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Epson Perfection
+ 1670. It's now supported by the snapscan backend.
+
+2003-11-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c backend/snapscan-usb.c
+ Fix TPO range for Epson 1670, fix compiler warnings on gcc 3.3
+
+2003-11-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan.c doc/descriptions/snapscan.desc:
+ Final bugfixes for Epson 1670
+
+2003-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.openbsd: Added info about setting permissions (Bug #300311).
+ * doc/descriptions/unsupported.desc: Added Genius and Lexmark scanners.
+
+2003-11-07 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c: Bugfix. If a scanner returned a color image
+ in format rr...r gg.g bb...b the reader process crashed.
+ * backend/fujitsu.[ch] Bugfix. The option gamma was enabled for
+ the fi-4120. The result was an 'invalid field in parm list'-error.
+ * doc/descriptions/fujitsu.desc: added model "fi-4530C"
+
+2003-11-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Microtek and Visioneer
+ scanners.
+
+2003-11-04 m. allan noah <anoah at pfeiffer dot edu>
+
+ * doc/descriptions/fujitsu.desc: added model "fi-4110EOX2"
+
+2003-11-04 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/Makefile.in: Linking coolscan now against sanei_thread lib.
+ * backend/coolscan.c backend/coolscan.h: Switched backend over to
+ sanei_thread usage, to make it work at least with OS/2.
+ * backend/plustek-pp_misc.c backend/plustek-pp_hwdefs.h: Fixed bug
+ in parport setup routine.
+ * sanei/sanei_pp.c: Fixed problem in sanei_pp_setmode().
+ Fixed parport mode setting in direct mode.
+
+2003-11-02 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: fixed endianness issues in
+ check_v{4,6}_in_range(), also fixed portability issues to other
+ UNIX platforms due to different representations of IPv6 addresses.
+
+2003-11-02 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/descriptions/unsupported.desc: Added Plustek OpticSlim 2400.
+ * include/sanei/sanei_thread.h: Removed OS/2 porting section.
+ * sanei/sanei_pp.c include/sanei/sanei_pp.h:
+ Fixed udelay stuff, documentation update.
+
+2003-11-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: sanei_pp must be linked if we preload
+ backends.
+
+---- FEATURE FREEZE FOR SANE 1.0.13 ---
+-- snapshot 1.0.13-pre1
+
+2003-11-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added PIE Powerslide 3600.
+ * NEWS: Updated for 1.0.13.
+
+2003-10-30 Gerhard Jaeger <gerhard@gjaeger.de>
+ * sanei/lib/sanei_pp.c: Made sanei_pp_set_datadir work in no ieee1284 mode.
+ Fixed a minor bug in delay calculation.
+ * include/sanei/sanei_pp.h: Added some control-port definitions.
+ * backend/plustek_pp.c backend/plustek-pp*:
+ Made PS/2 bidirectional mode work.
+ * doc/plustek/PLUSTEK-PARPORT.txt: Update.
+
+2003-10-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in backend/mustek.c backend/mustek.h
+ doc/descriptions/mustek.desc doc/mustek/mustek.CHANGES:
+ Added support for sanei_thread. Removed OS/2 specific code.
+ Added more debug messages.
+ * doc/saned.man: Added more info about firewall trouble.
+
+2003-10-29 Gerhard Jaeger <gerhard@gjaeger.de>
+ * sanei/lib/sanei_pp.c include/sanei/sanei_pp.h:
+ Added functions sanei_pp_set_datadir() and sanei_pp_uses_directio().
+ Added some documentation.
+ * doc/plustek/PLUSTEK-PARPORT.txt doc/plustek/PLUSTEK-PARPORT-TODO.txt
+ doc/plustek/PLUSTEK-USB-TODO.txt: Updates.
+ * backend/plustek_pp.c backend/plustek-pp_*: Made usage of the new
+ sanei_pp functions, made EPP modes work with libieee1284. Also some
+ cleanup work.
+
+2003-10-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-scsi.man: Added hint for setting device permissions for
+ /dev/xpt0 for FreeBSD users.
+ * AUTHORS backend/artec.c backend/artec.h doc/sane-artec.man:
+ Fixed Chris Pinkham's email address.
+ * doc/descriptions/unsupported.desc: Added Microtek ScanMaker 4900.
+
+2003-10-28 Rene Rebe <rene@rocklinux.org>
+ * backend/avision.h backend/avision.c doc/descriptions/avision.desc
+ backend/avision.conf AUTHORS: merge of the current Subversion
+ revision of SANE/Avision. The fixes include: endianess fixes,
+ calibration code, ADF detection, correct lamp warmup, gamma table
+ for new ASICs, some workarounds for ASIC variations and the
+ convertion to use OPT_SOURCE instead of seperate OPT_ADF and
+ OPT_TRANS. Also fixed Bugs #300288 and #300196 and removed
+ the conflicting Option_Valu now present in sanei_backend.h
+ * doc/sane-avision.man: made requested clarifications (Bugs #300290,
+ #300291)
+
+2003-10-28 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/sane-plustek.man backend/plustek.conf backend/plustek.c:
+ Changed configuration file back to remain compatible with the old format.
+
+2003-10-27 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.c: Replaced all DBG(0, statements with
+ DBG(1, ... to avoid logging messages the user should
+ not see anyways.
+
+2003-10-27 Gerhard Jaeger <gerhard@gjaeger.de>
+ * sanei/lib/sanei_pp.c: Fixed OS/2 compilation problems.
+ * doc/descriptions/plustek_pp.desc:
+ Updated status of Primax Compact 4800 Direct 30bit.
+
+2003-10-26 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * configure.in configure include/sanei/config.in.h:
+ Added check for limits.h - HAVE_LIMITS_H.
+ * sanei/lib/sanei_pp.c include /sanei/sanei_pp.h:
+ Added sanei_pp_init() and sanei_pp_udelay().
+ * backend/plustek_pp.c backend/plustek-pp_misc.c backend/plustek-pp_scan.h:
+ Fixed compiler warnings, using now sanei_pp_udelay() and
+ made the backend work with libieee1284.
+
+---- BACKEND FREEZE FOR SANE 1.0.13 ---
+
+2003-10-24 Peter Kirchgessner <peter@kirchgessner.net>
+ * backend/hp.c, backend/hp-handle.c, backend/Makefile.in:
+ second check-in: use new sanei_thread-interface for hp-backend
+
+2003-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/hp_rts88xx.desc: Added description
+ file of new hp_rts88xx backend for HP 44x0 scanners (from
+ Johannes Hub <johanneshub@foni.net>).
+ * doc/descriptions/unsupported.desc: Added Minolta DiMAGE Scan
+ Elite 5400. Removed HP 44x0 (now supported by hp_rts88xx
+ backend). Updated Epson Perfection 3170. Updated Plustek
+ S24/ST24.
+ * doc/descriptions/avision.desc doc/descriptions/canon.desc
+ doc/descriptions/sharp.desc: Updated to new status values.
+ Bugs: #300146, #300147, #300154.
+ * include/sane/sanei_thread.h: Updated doxygen documentation
+ for new sanei_thread interface.
+
+2003-10-23 Frank Zago <fzago at austin dot rr dot com>
+
+ * README.windows: added note about libusb port for cygwin.
+
+2003-10-23 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c backend/plustek-usb.c:
+ fixed bug, that causes CanoScan devices to use the wrong calibration
+ functions, sanei_usb_get_vendor_product() fails.
+ * sanei/sanei_pp.c:
+ Added sanei_pp_getmode, fixed conditional compilation stuff.
+ * include/sanei/sanei_pp.h:
+ Added sanei_pp_getmode and SANEI_PP_MODE definitions.
+ * backend/plustek_pp.c backend/plustek-pp.h backend/plustek-pp_misc.c:
+ Added parport-mode detection.
+
+2003-10-22 Peter Kirchgessner <peter@kirchgessner.net>
+ * backend/hp.c, backend/hp-handle.c, backend/Makefile.in:
+ use new sanei_thread-interface for hp-backend
+
+2003-10-22 Gerard Klaver <gerard at gkall dot hobby dot nl>
+ * doc/descriptions/teco2.desc backend/teco2.conf doc/sane-teco2.man:
+ Mustek ScanMagic 4830S added.
+ * doc/sane-teco2.man: maintainer Gerard Klaver added, text update.
+ * doc/teco/teco2.txt: data VM3564 Relisys AVEC II S3 added.
+
+2003-10-22 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: replaced in_addr_t mask; by u_int32_t mask; in
+ check_v4_in_range(). in_addr_t doesn't seem to exist on OS/2, and
+ it's nothing more than an unsigned 32 bits integer.
+
+2003-10-22 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * configure configure.in include/sane/config.in.h: added checks for iopl.
+ * sanei/sanei_pp.c sanei/Makefile.in
+ include/sanei/sanei_pp.h include/sanei/Makefile.in: added generic
+ parallel-port function lib.
+ * backend/plustek-pp* backend/plustek_pp.c: major update, sanei_pp
+ integration, compilation fixes.
+ * backend/plustek.c: fixed, the "generic disable" switch
+
+2003-10-21 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.c backend/snapscan-option.c
+ backend/snapscan-scsi.c backend/snapscan.conf: Bugfixes,
+ hopefully better support for Epson 1670.
+
+2003-10-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Added Perfection 1670 as
+ "unsupported". Changes status of 1260 PHOTO to :basic because of
+ broken TPU support. Fixed missing quotation mark in Perfection
+ 1200S entry.
+ * AUTHORS: Oliver Schirrmeister has a CVS account now.
+ * doc/sane-mustek_usb.man: Added workaround for hardware bug.
+
+2003-10-21 Stéphane Voltz <svoltz@wanadoo.fr>
+ * doc/sane-umax_pp.man: added help for new configuration option
+ * tools/umax_pp.c: uppded version number
+
+2003-10-20 Frank Zago <fzago at austin dot rr dot com>
+ * README.aix doc/sane-leo.man doc/sane-matsushita.man
+ doc/sane-sceptre.man doc/sane-teco1.man doc/sane-teco2.man
+ doc/sane-teco3.man doc/descriptions/leo.desc
+ doc/descriptions/matsushita.desc doc/descriptions/sceptre.desc
+ doc/descriptions/teco1.desc doc/descriptions/teco2.desc
+ doc/descriptions/teco3.desc doc/descriptions-external/hp4200.desc:
+ fixed urls.
+
+2003-10-19 m. allan noah <anoah at pfeiffer dot edu>
+
+ * backend/fujitsu.c: reverse previous patch. Dont blindly trust
+ code from the backend maintainer :)
+
+2003-10-19 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: added subnet support to saned ; added
+ check_v4_in_range and check_v6_in_range functions.
+ * backend/saned.conf: updated the config file.
+ * doc/saned.man: updated the manpage for saned.
+
+2003-10-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 3670.
+ * doc/descriptions-external/epkowa.desc: Added description file
+ for the external Epson Kowa backend.
+
+2003-10-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Reflecta iScan
+ 1800. Updated information for Epson Perfection 1670.
+ * README.linux: Added information about compilation problems when
+ Linux 2.6 is installed.
+ * tools/sane-desc.c: In error and warning messages print the name
+ of the description file. Print warning if the status is not set
+ for a device.
+ * backend/test.c: Reindented.
+ * AUTHORS: Nathan Ruthman has CVS access now.
+
+2003-10-17 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Fixed bug #30149 (added :status information for all scanners)
+
+2003-10-17 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * acinclude.m4 aclocal.m4 configure: Added -D_REENTRANT to compiler
+ flags, when using pthread support.
+ * sanei/sanei_thread.c: Added SIGPIPE handling,
+ when compiled for pthread support.
+ * backend/test.c: Removed blocking SIGPIPE, as this is now handled
+ in sanei_thread library.
+ * backend/plustek.h backend/plustek.c backend/plustek-usbhw.c:
+ Added checks for intervaltimer, to make it compile on OS/2.
+
+2003-10-16 m. allan noah <anoah at pfeiffer dot edu>
+
+ * backend/fujitsu.c: memset the device struct and the scsi buff
+ when a new device is attached. Submitted by
+ Chris Chesney <cchesney at go-integral dot com>.
+ Initialized a couple vars in the 3091 init routines.
+
+2003-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Marked maintainers that have CVS access with a
+ (*). Added m. allan noah to fujitsu backend. Added Julien Blache
+ and Petter Reinholdtsen to "Miscellaneous coding". Removed
+ Petter Reinholdtsen from "CVS repository maintainer".
+ * doc/sane-usb.man: sane-find-scanner is in section 1, not 5.
+
+2003-10-15 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * include/sanei/config.h.in configure.in configure:
+ Added test for setitimer.
+
+2003-10-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Pentax, Sicos, Syscan,
+ and UMAX scanners.
+
+2003-10-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx_low.c: Fixed compilation bug when debugging is
+ disabled.
+ * backend/test.c doc/descriptions/test.desc: Fixed cancelling when
+ threads are used. Only SIGPIPE is blocked now. Sleep indefinetly
+ after the reader_process has finished. Minor fixes of debug
+ messages.
+
+2003-10-13 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_thread.c include/sane/sanei_thread.h: Fixed OS/2 compilation
+ * sanei/sanei_lm983x.c include/sane/sanei_lm983x.h: Copyright update
+
+2003-10-12 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_thread.[ch]: Improved OS/2 support
+ * backend/test.c: removed OS/2 section
+
+2003-10-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Memorex, TCE and Optrox
+ scanners.
+
+2003-10-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon DR-2080C. Updated
+ some links.
+ * backend/mustek_pp_ccd.conf doc/sane-mustek_pp_ccd.man: Explained
+ that libieee1284 device names like "parport0" can also be used.
+
+2003-10-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_thread.c: Fixed some compilation errors on Darwin and OS/2
+ Fixed segfault condition in sanei_thread_waitpid
+
+2003-10-09 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c backend/hp-option.c backend/hp-scl.c:
+ Bug #300241: fix invers image on 3c/4c/6100C at 10 bit depth
+ Redo when TEST UNIT READY failed
+ Redo when read returns with 0 bytes (non-SCSI only)
+ * doc/sane-hp.man: Add environment SANE_HP_RDREDO, SANE_HOME_HP
+
+2003-10-09 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp_low.h backend/umax_pp.h
+ backend/umax_pp_mid.c backend/umax_pp_low.c backend/umax_pp_mid.h
+ backend/umax_pp.conf: added automatic parallel port detection,
+ and special keyword in configuration file to use it.
+
+2003-10-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/Makefile.in : linking plustek_pp- and test-backend against
+ sanei_thread
+ * backend/test.[ch]: added sanei_thread support
+ * backend/test-picture.ch: fixed compiler warnings
+ * backend/plustek.[ch] backend/plustek_pp.c backend/plustek-pp.h:
+ changes due to the sanei_thread-lib work
+ * sanei/sanei_thread.c include/sane/sanei_thread.h: improved
+ support of pthreads, changed behaviour of sanei_thread_kill(),
+ added functions sanei_thread_sendsig() and sanei_thread_get_status()
+ changed behaviour of sanei_thread_waitpid(), changed parameters
+ of sanei_thread_begin()
+
+2003-10-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/canon630u.c: Workaround for bug in canon630u backend:
+ The backend assumes that the id it gets back from sanei_usb_open
+ is a file descriptor. It isn't. So sane_get_select_fd returns
+ just a random number. That breaks at least saned, other
+ frontends may not work either. This is a workaround for bug
+ #300257.
+
+2003-10-07 m. allan noah <anoah at pfeiffer dot edu>
+
+ * backend/fujitsu.c: removed ~25 '_' from option names (#300139)
+ * backend/fujitsu.conf: added lines for known usb scanners
+
+2003-10-07 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+ * backend/snapscan.h backend/snapscan-scsi.c
+ Updates for Epson Perfection 1670
+
+2003-10-07 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+ * backend/snapscan.h backend/snapscan.c backend/snapscan-option.c
+ Initial support for Epson Perfection 1670, minor bugfix
+ (#300247)
+
+2003-10-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure.in configure
+ include/sane/config.h.in sanei/sanei_thread.c: More verbose help
+ messages for --enable-fork-process. Print message about pthread
+ support after all the tests. If libpthread isn't available, try if
+ libc supports pthreead_*. Use macro USE_PTHREAD to check if
+ threads are used in the code.
+ * backend/Makefile.in: Added sanei_pthread.lo to list of object
+ files needed for preloading.
+
+2003-10-07 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * aclocal.m4 acinlcude.m4 configure configure.in: modified checks for
+ pthread support, added switch --enable-fork-process which toggles
+ between the usage of fork and pthread, set the default behaviour to
+ pthread usage on Darwin
+ * include/sane/config.h: added the HAVE_LIBPTHRAD stuff
+ * sanei/sanei_thread.c include/sane/sanei_thread.h: fixed compilation issue
+ on OS/2, added support for fork too, so that we can use sanei_thread
+ functions in any case.
+ * backend/plustek.[ch]: changes due to the sanei_thread-lib work
+
+2003-10-06 m. allan noah <anoah at pfeiffer dot edu>
+
+ * backend/fujitsu.[ch]: Added support for color modes of fi-4x20C and
+ fi-4340C, maybe others as well.
+
+2003-10-06 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, backend/hp-option.h: Bug #300248 fixed
+ (correct "Negatives" in option description to "Negative")
+
+2003-10-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/Makefile.in: Remove doxygen-sanei.conf in clean target.
+ * sanei/sanei_pa4s2.c: Made some internal functions static.
+
+2003-10-06 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+
+ * backend/hp5400_*: fixed bug #300252 : added static to all non
+ SANE specific functions + changed #include <sane/..> into
+ #include "../include/sane/..." as mentioned in the
+ backend-writing.txt file
+
+2003-10-05 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * aclocal.m4 configure configure.in: added checks for pthread.h and
+ added linker option -lpthread if pthread.h is found
+ * include/sane/config.in.h: added HAVE_PTHREAD_H
+ * sanei/sanei_thread.c include/sane/sanei_thread.h: added pthread_
+ functions to library, so every backend is able to use either fork or
+ pthread for its reader-process - see plustek backend for example
+ * backend/plustek.h backend/plustek.c: added sanei_thread stuff to support
+ threading on MacOS X
+ * backend/plustek_pp*: some cleanup
+
+2003-10-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.h backend/test.c include/sane/saneopts.h:
+ Fixed some missing or duplicated spaces in option descriptions.
+ * backend/canon630u.c: Option names shouldn't be translated.
+ * backend/mustek.c: Use the same title for brightness as in other
+ backends.
+ * po/sane-backends.de.po: Fixed minor bugs.
+ * po/sane-backends.sv.po: Updated (from Mattias Ellert
+ <mattias.ellert@tsl.uu.se>).
+ * po/sane-backends.bg.po po/sane-backends.cs.po
+ po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.it.po po/sane-backends.nl.po
+ po/sane-backends.no.po po/sane-backends.pt.po
+ po/sane-backends.ru.po: Regenerated.
+ * doc/descriptions/unsupported.desc: Added Epson Perfection 3170,
+ Packard Bell Diamond 1200, and Visioneer PaperPort
+ 3100b. Updated Epson Perfection 1670.
+
+2003-10-04 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Fixed bug 300246 - Use SANE_TITLE_SCAN_SPEED
+ (and DESC and NAME) from saneopts.h instead of my own strings.
+ Fixed typo in gamma correction description.
+ Start two descriptions with a capital character.
+
+2003-10-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS configure configure.in backend/Makefile.in backend/dll.conf
+ backend/mustek_pp_ccd.c backend/mustek_pp_ccd.conf backend/mustek_pp_ccd.h
+ doc/Makefile.in doc/sane.man doc/sane-mustek_pp_ccd.man
+ doc/descriptions/mustek_pp_ccd.desc: Added back old mustek_pp
+ backend. That backend supports Mustek CCD scanners. The backend
+ was renamed to mustek_pp_ccd to avoid conflicts with the new
+ mustek_pp backend for CIS scanners. The code was taken from
+ sane-backends 1.0.9. This is only a temporary solution. The goal
+ is to incooperate CCD and CIS support into mustek_pp.
+ * doc/sane-mustek_pp.man doc/descriptions/mustek_pp.desc: Added
+ links to the mustek_pp_ccd backend. Removed scanners supported by
+ mustek_pp_ccd.
+
+2003-10-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Microtek ScanMaker
+ 5900.
+ * doc/descriptions/umax1220u.desc: Converted to new
+ format (bug #300155). Commented out unsupported UMAX Astra 2200U
+ to avoid confusion.
+ * doc/Makefile.in: Cleanup. Removed install target for
+ mostang.com.
+ * doc/descriptions/microtek2.desc: Converted to new
+ format (bug #300153). Commented out ScanMaker 9600XL (was
+ mentioned twice?).
+ * doc/descriptions/hpsj5s.desc: Converted to new format (bug
+ #300151). Added comment about only gray mode.
+ * doc/descriptions/fujitsu.desc: Converted to new format (bug
+ #300150).
+ * doc/descriptions/canon630u.desc: Converted to new format (bug
+ #300148).
+
+2003-10-03 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Changed "status" information
+
+2003-10-02 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek_pp* backend/plustek-usb*: fixed some OS/2 compiling issues
+ * doc/plustek: fixed module compilation stuff and increase version number
+
+2003-10-02 Peter Fales <peter@fales-lorenz.net>
+ * backend/gphoto2.c backend/gphoto2.h: Try to handle the case where
+ the camera has a corrupt file that can't be decoded as a JPEG
+ image.
+
+2003-10-01 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * doc/sane-mustek_pp.man, doc/descriptions/mustek_pp.desc:
+ Added Mustek 96 CP to list of supported scanners.
+
+2003-09-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Fixed links to messages in
+ the mailing list archive.
+ * configure configure.in doc/Makefile.in doc/doxygen-sanei.conf
+ doc/doxygen-sanei.conf.in: Automatically update the version
+ number of SANE in the doxygen documentation.
+ * doc/backend-writing.txt doc/sane.man: Updated links to sanei
+ documentation.
+ * doc/.cvsignore include/sane/sanei.h include/sane/sanei_scsi.h:
+ Minor fixes for sanei documentation.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added detection of Genius Vivid 4x.
+ It won't work out-of-the-box, however. CCD coarse calib
+ shouldn't run into an endless loop anymore. Plustek 1248U
+ is much faster now.
+
+2003-09-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: removed OpticSlim entry
+ * doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES
+ doc/sane-gt68xx.man backend/gt68xx.conf: added Plustek OpticSlim entry
+ * backend/gt68xx_devices.c: added settings for Plustek OpticSlim 1200
+
+2003-09-29 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-plustek.man: minor update
+ * backend/plustek.c: changed version number, cleanup
+ * backend/plustek-usb*.c: cleanup
+ * backend/plustek-pp.*: cleanup
+ * backend/plustek-share.h: removed, no longer needed
+ * backend/Makefile.in: removed reference to plustek-share.h
+
+2003-09-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Enhans, Genius and UMAX
+ scanners.
+ * backend/test.c doc/descriptions/test.desc: Some options had
+ wrong constraints or didn't match their descriptions (bug
+ #300235).
+
+2003-09-25 Frank Zago <fzago at austin dot rr dot com>
+
+ * README.windows: updated status of xscanimage and XSane.
+
+2003-09-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in: Added plustek_pp.c.
+ * po/sane-backends.nl.po: Updated Dutch translation (from Martin
+ Kho <mkho@xs4all.nl>).
+ * po/sane-backends.bg.po po/sane-backends.cs.po po/sane-backends.de.po
+ po/sane-backends.es.po po/sane-backends.fr.po po/sane-backends.it.po
+ po/sane-backends.no.po po/sane-backends.pt.po po/sane-backends.ru.po
+ po/sane-backends.sv.po: Regenerated.
+ * doc/Makefile.in: Fixed link to image in HTML manpages.
+
+2003-09-24 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backends/snapscan.c: check second argument of sanei_config_get_string
+ (Bug #300198)
+
+2003-09-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Changed links to point to
+ sane-project.org.
+ * TODO: Removed. Please use the bug tracking system at
+ http://www.sane-project.org/bugs.html instead.
+ * README README:os2 configure configure.in: Updated contact
+ information (website, mailing lists, bug tracker). Minor fixes.
+ * backend/mustek.c: Fixed sane-devel address.
+ * doc/backend-writing.txt doc/releases.txt: Updated contact
+ information. Spelling fixes. Minor updates.
+ * doc/sane.man: Updated contact information. Removed contributing
+ section (now on homepage). Spelling fixes, general updates.
+ * sane-abaton.man sane-agfafocus.man sane-apple.man sane-bh.man
+ sane-dc210.man sane-dc240.man sane-dc25.man sane-gphoto2.man
+ sane-hp.man sane-microtek2.man sane-microtek.man
+ sane-mustek.man sane-mustek_pp.man sane-pint.man
+ sane-st400.man sane-usb.man sane-v4l.man: Updated links to
+ sane-devel and SANE homepage.
+ * sane.tex: Changed homepage and sane-devel-request address.
+ * doc/Makefile.in: Added README.windows.
+ * doc/canon/canon.install2700F.txt: Updated links.
+ * include/sane/sanei.h include/sane/sanei_usb.h: Updated links.
+ * tools/sane-desc.c: Changed links to sane-project.org. Mentioned bug
+ tracker. Added contact link. Removed link to special USB and
+ Parport lists (now on static web pages).
+ * tools/sane-config.in: Updated links.
+
+2003-09-24 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane.man, AUTHORS: added plustek_pp information
+ * doc/backend-writing.txt: Updated CHECKLIST information
+ * doc/sane-plustek.man: removed parport sections
+ * doc/sane-plustek_pp.man: removed usb sections
+ * backend/plustek.c: changed version number
+ * backend/plustek-usb*.c: minor fixes, esp. CanoScan LiDE30 gray/color bug
+ * backend/plustek-pp.*: changed file headers and copyright info
+ applied some minor fixes
+ * doc/unsupported.desc: Added Plustek OpticPro S28 and S48
+ * Makefile.in doc/Makefile.in:
+ removed TODO, as this file does no longer exist
+ * doc/plustek/*: changed links to www.sane-project.org (Bug #300215)
+
+2003-09-23 Frank Zago <fzago at austin dot rr dot com>
+
+ * Makefile.in NEWS configure configure.in backend/Makefile.in
+ backend/dll.c include/sane/config.h.in sanei/sanei_scsi.c
+ tools/sane-find-scanner.c: cygwin port.
+
+2003-09-23 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * configure.in: added new backend plustek_pp
+ * doc/descriptions/plustek_pp.desc : added
+ * doc/plustek/*: added/updated various doc-files
+ * doc/sane-plustek_pp.man doc/Makefile.in : added new man page
+ * backend/dll.conf : added plustek_pp
+ * backend/Makefile.in : added plustek_pp files, updated plustek files
+ * backend/plustek-devs.c backend/pustek-pp.c : removed
+ * backend/plustek-usbcalfile.c backend/plustek-usbcal.c
+ backend/plustek-usbdevs.c: new files for the plustek usb backend
+ * backend/plustek_pp.c backend/plustek_pp.conf
+ * backend/plustek-pp.h backend/plustek-pp_dac.c backend/plustek-pp_dbg.h
+ backend/plustek-pp_detect.c backend/plustek-pp_genericio.c
+ backend/plustek-pp_hwdefs.h backend/plustek-pp_image.c
+ backend/plustek-pp_io.c backend/plustek-pp_map.c backend/plustek-pp_misc.c
+ backend/plustek-pp_models.c backend/plustek-pp_motor.c
+ backend/plustek-pp_p12.c backend/plustek-pp_p12ccd.c
+ backend/plustek-pp_p48xx.c backend/plustek-pp_p9636.c
+ backend/plustek-pp_procfs.c backend/plustek-pp_procs.h
+ backend/plustek-pp_ptdrv.c backend/plustek-pp_scale.c
+ backend/plustek-pp_scan.h backend/plustek-pp_scandata.h
+ backend/plustek-pp_sysdep.h backend/plustek-pp_tpa.c
+ backend/plustek-pp_types.h backend/plustek-pp_wrapper.c :
+ new added, contains all the code necessary for controlling various Plustek
+ ASIC 9600x/9800x based parallelport scanner
+
+2003-09-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: PATH_MAX is too small for long comments on
+ win32. Actually return 0 if there is no second quotation mark.
+ Patch from Frank Zago <fzago at austin dot rr dot com>. Check
+ for !word everywhere to avoid segfaults when a quotation mark is
+ missing.
+ * sanei/sanei_config.c: Actually return 0 if there is no second
+ quotation mark.
+ * backend/ma1509.c backend/mustek.c backend/mustek_usb.c
+ backend/test.c doc/descriptions/ma1509.desc
+ doc/descriptions/mustek.desc doc/descriptions/mustek_usb.desc
+ doc/descriptions/test.desc doc/mustek/mustek.CHANGES
+ doc/mustek_usb/mustek_usb.CHANGES: Check if
+ sanei_config_get_string fails because of a single quotation mark
+ in the configuration file. Update version numbers.
+
+2003-09-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/microtek.desc: Used new :status scheme. Added
+ Vobis Highscreen Realscan and Genius Colorpage-SP2.
+ * doc/descriptions/unsupported.desc: Added HP, Microtek and UMAX
+ scanners.
+
+2003-09-18 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/sane-umax_pp.c: fix default port address handling
+ (patch from Malcolm Parsons <malcolm.parsons@virgin.net>)
+ * configure.in configure include/sane/config.h.in: added detection of
+ machine/cpufunc.h and i386_set_ioperm() for FreeBSD support.
+
+
+2003-09-16 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/sane-umax_pp_low.man: updated man page
+
+2003-09-15 Simon Munton <simon@munton.demon.co.uk>
+
+ * doc/sane-pie.man doc/descriptions/pie.desc: Updated status of ScanAce
+ III to 'good' based on feedback from Brian Wood.
+
+2003-09-14 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: put Henning's #include change back in.
+
+2003-09-14 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: reworked inb/out functions. The backend now
+ works on FreeBSD.
+
+2003-09-12 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Increment only once in loop to find USB scanners,
+ fix rounding error when calculating number of lines to scan.
+
+2003-09-12 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * AUTHORS, backend/mustek_pp_cis.c, backend/mustek_pp_cis.h,
+ doc/sane-mustek_pp.man: Updated e-mail address.
+
+2003-09-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/.cvsignore sanei/.cvsignore: Added .libs. Sorted.
+ * doc/descriptions/unsupported.desc: Updated HP ScanJet 2300c
+ and 2400c.
+ * backend/abaton.c backend/abaton.h backend/agfafocus.c
+ backend/agfafocus.h backend/apple.c backend/apple.h
+ backend/artec.h backend/artec_eplus48u.h backend/as6e.c
+ backend/as6e.h backend/avision.h backend/bh.c backend/bh.h
+ backend/canon.c backend/canon.h backend/coolscan.h backend/dmc.c
+ backend/dmc.h backend/epson.c backend/epson.h backend/fujitsu.h
+ backend/gt68xx.c backend/gt68xx_high.h backend/ibm.c backend/ibm.h
+ backend/leo.h backend/ma1509.c backend/ma1509.h
+ backend/matsushita.h backend/microtek.c backend/microtek.h
+ backend/microtek2.c backend/microtek2.h backend/mustek.c
+ backend/mustek.h backend/mustek_pp.c backend/mustek_pp.h
+ backend/mustek_usb.c backend/mustek_usb_high.h backend/nec.c
+ backend/nec.h backend/pie.c backend/pint.c backend/pint.h
+ backend/plustek.h backend/qcam.c backend/qcam.h backend/ricoh.c
+ backend/ricoh.h backend/sceptre.h backend/sharp.c backend/sharp.h
+ backend/sm3600.c backend/sm3600.h backend/snapscan.c
+ backend/snapscan.h backend/tamarack.c backend/tamarack.h
+ backend/teco1.h backend/teco2.h backend/teco3.h backend/test.h
+ backend/umax.c backend/umax.h backend/umax_pp.c backend/umax_pp.h
+ backend/v4l.c backend/v4l.h include/sane/sanei_backend.h:
+ Moved union Option_Value from backend header files to
+ sanei_backend.h. No need to copy it over and over again.
+ Changed header inclusion order in backend files to include
+ backend.h after sanei_backend.h. Based on a patch from stef
+ <stef-listes@wanadoo.fr>.
+
+2003-09-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon Lide 80, updated
+ Canon and HP information.
+
+2003-08-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Added Mustek ScanMagic 1200 UB Plus. Minor bugfix.
+ * doc/descriptions/unsupported.desc: Added UMAX Astra 4450 and
+ Mustek BearPaw 2448 TA Pro. Updated Canon CanoScan 5000F.
+
+2003-08-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.it.po: Added Italien translation
+ (from Luca Clemente <luca.clem@zerobase.it>).
+
+2003-08-22 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson*.[ch]: Fixed compile problem on Linux
+ Code cleanup to get rid of compiler warnings
+
+2003-08-21 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Removed '//' comments - again ...
+ Added EPSON KOWA copyright
+
+2003-08-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.darwin sanei/sanei_scsi.c: Added support for the
+ MacOS X IOKit SCSI Architecture Model API. Added support for
+ Firewire scanners. Patch from Guy Brooker <guy_brooker@mac.com>.
+ * TODO: Added entries for mustek patch, sanei_usb devfs trouble,
+ and moving of Option_Value. Updated .desc file section.
+ * doc/descriptions/unsupported.desc: Updated sections about
+ Canon, Epson, HP, Medion, Microtek, Mustek, and Xerox scanners.
+
+2003-07-22 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-scsi.c
+ backend/snapscan-options.c backend/snapscan.conf: Backend version
+ 1.4.27 (ID cleanup, fix for firmware download of Acer 310/320,
+ new USB ID for Acer 310)
+
+2003-08-17 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp.h: revert change for UTA
+
+2003-08-15 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Added support for GT-30000, with support for the
+ ADF in simplex mode (used some code from the EPSON Kowa IScan version
+ of the backend)
+ * backend/epson_scsi.c: Use sanei_scsi_cmd2() to send commands to fix a problem
+ with SBP-2 under FreeBSD
+
+2003-08-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp.h: added a check of values passed
+ in gamma table. Fixed a bug which prevented custom gamm and UTA to be
+ active
+
+2003-08-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-plustek.man: Added debug description
+ * backend/plustek.c backend/plustek-usbhw.c backend/plustek-usbshading.c
+ backend/plustek-usbscan.c backend/plustek-devs.c
+ Fixed warmup bug
+ Fixed EPSON12x0 and CanoScan hangs during init step
+ Some fine-tuning for the CanoScan devices
+
+2003-08-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Update to new keywords,
+ added Genius Colorpage HR6X EPP
+ * TODO: moved Plustek topics to done section
+
+2003-08-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Plustek OpticSlim 1200.
+ Updated Mustek Paragon 600 II ED/EP information.
+
+2003-07-31 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/descriptions/hp.desc: Add status by model
+
+2003-07-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: All the unsupported entries
+ that pointed to .txt files have links to HTML pages now.
+
+2003-07-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Minolta and Visioneer
+ scanners. Updated Avision, Medion, and UMAX scanners.
+ * tools/check-usb-chip.c: Added test for Genesys Logig GL660 +
+ GL646 combination. Added some more messages about what's going
+ on.
+ * TODO: Added frontend linking issue and color management
+ discussion. Removed sanei_jpeg move and avision patch entries.
+ Updated global init issue and desc file entry.
+ * po/sane-backends.bg.po: Updated Bulgarian translation (from
+ Pavel Constantinov <pavelconstantinov@bigfoot.com>).
+
+2003-07-29 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Reset globals in sane_exit.
+
+2003-07-28 Andras Major <andras@users.sourceforge.net>
+
+ * doc/descriptions/coolscan2.desc: changed IEEE1394
+ to IEEE-1394 and changed to new status keyword scheme.
+
+2003-07-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.bg.po: Added Bulgarian
+ translation (from Pavel Constantinov
+ <pavelconstantinov@bigfoot.com>).
+
+2003-07-28 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+ * doc/descriptions/hp5400.desc : changed status to basic
+
+2003-07-28 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+ * backend/hp5400_* : moved constant initialization to sane_init
+ and sane_exit + removed some compilation warnings.
+
+2003-07-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in backend/Makefile.in doc/Makefile.in
+ frontend/Makefile.in include/Makefile.in sanei/Makefile.in: Minor
+ cleanup from the jpeg move. Reverted frontend link order.
+
+2003-07-26 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-usb.c backend/snapscan-usb.h:
+ Changed license to GPL + SANE exception.
+
+2003-07-26 Peter Fales <peter@fales-lorenz.net>
+ * sanei/Makefile.in, backend/cderror.h, backend/jinclude.h,
+ backend/dc210.c, backend/dc240.c, backend/ gphoto2.c,
+ backend/djpeg.c, backend/cdjpeg.h, backend/Makefile.in, configure
+ configure.in, frontend/Makefile.in: Move jpeg support file
+ to sanei directofiles to include/sane, and associated
+ configure changes
+
+2003-07-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei.h include/sane/sanei_codec_ascii.h
+ include/sane/sanei_codec_bin.h include/sane/saneopts.h: Changed
+ license to GPL + SANE exception.
+ * AUTHORS frontend/scanimage.c: Updated email address of Andreas
+ Beck.
+ * include/lalloca.h include/lassert.h: Changed
+ license to GPL + SANE exception.
+ * LICENSE: Clarify that not all backends us GPL + SANE exception.
+ Fixed pointer to README.djpeg.
+ * sanei/linux_sg3_err.h: Added GPL + SANE exception license.
+
+2003-07-25 Peter Fales <peter@fales-lorenz.net>
+ * include/sane/sanei_cderror.h, include/sane/sanei_jinclude.h
+ include/sane/sanei_jpeg.h sanei/sanei_jpeg.c: Install these
+ files as copies of the ones currently in backend. (The old
+ files will be deleted later)
+ * Moved backend/djpeg.README to README.djpeg and added usage info
+
+2003-07-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Added
+ Fujitsu 1200CUS to man page, .conf and .desc. Changed .conf file
+ to be more readable. Added RevScan 19200i to .conf file. Added
+ Plustek U16B to .desc and .conf, updated UT16B.
+ * po/sane-backends.de.po: Added some translations for the HP
+ backend. Minor header updates.
+ * po/sane-backends.cs.po po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.nl.po po/sane-backends.no.po po/sane-backends.pt.po
+ po/sane-backends.ru.po po/sane-backends.sv.po: Regenerated to include
+ recent changes in the backends.
+ * include/sane/sanei_scsi.h include/sane/sanei_wire.h: Changed
+ license to GPL + SANE exception.
+ * TODO: Added canon630u SANE_I18N and include file license
+ problem. Updated .desc file section.
+
+2003-07-24 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, backend/hp-option.h, backend/hp-option.c
+ po/Makefile.in: Add support for Internationalization for hp-backend.
+
+2003-07-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-chip.c: Added support for detecting Genesys
+ Logic GL646. Fixed indentation.
+
+2003-07-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei_thread.h include/sane/sanei_usb.h: Changed
+ license to GPL + SANE exception.
+
+2003-07-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek_pp.desc: Tag CCD scanners as unsupported
+ and mention that they work in 1.0.9 or earlier.
+
+2003-07-22 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc: Updated to use new status values.
+
+2003-07-22 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * doc/descriptions/canon_pp.desc: Updated to use new status values.
+
+2003-07-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added mustek_pp CCD support and avision patch
+ entry. Updated .desc file section.
+ * doc/descriptions/unsupported.desc: Added more information for
+ Canon 9900F.
+
+2003-07-21 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/descriptions/umax_pp.desc: removed unwanted status line for
+ backend
+
+2003-07-20 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/descriptions/umax_pp.desc: updated forgotten status to use new
+ keyword.
+
+2003-07-20 Oliver Rauch <oliver.rauch@rauch-domain.de>
+
+ * backend/umax.c: changes for Umax UC630 3pass color scan
+ * doc/descriptopns/umax.desc: changed status
+
+2003-07-19 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco2.c backend/teco2.h backend/teco2.conf: (from gerard
+ Klaver and Michael Holler) Better detection of the
+ scanner. Added white level. More work on some color resolutions.
+ * updated several backend descriptions file.
+
+2003-07-19 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/descriptions/gphoto2.c: Remove "status" (not used for
+ APIs) and correct typo in comment.
+
+2003-07-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/as6e.desc doc/descriptions/bh.desc
+ doc/descriptions/coolscan.desc doc/descriptions/nec.desc
+ doc/descriptions/sm3600.desc doc/descriptions/st400.desc:
+ Converted to use new :status values.
+ * doc/descriptions/unsupported.desc: Sorted (more or less)
+ alphabetically. Added some Canon and Hewlett-Packard scanners.
+ * frontends/scanimage.c: When parsing string options whose
+ arguments are too short, don't overwrite the remaining command
+ line arguments. Print "[inactive]" after every inactive option.
+ * TODO: Added fujitsu patch, description file updates,
+ close_on_exec problem. Removed scanimage bugs.
+
+2003-07-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-find-scanner.man tools/Makefile.in
+ tools/check-usb-chip.c tools/sane-find-scanner.c: Added support
+ for detecting USB chipsets to sane-find-scanner.
+
+2003-07-17 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * sanei/sanei_scsi.c: improved SCSI error handling in
+ sanei_scsi_cmd2 for FREEBSD_CAM_INTERFACE
+
+2003-07-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Enable close_on_exec in sanei_usb_open.
+
+2003-07-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added fujitsu option and libtool problem. Updated desc
+ file entries.
+
+2003-07-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/descriptions/umax_pp.desc: updated to use new :status
+ keyword.
+
+2003-07-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Corex and Relisys
+ scanners. Updated Canon and HP scanners.
+ * doc/descriptions-external/primax.desc: Fixed typo.
+
+2003-07-02 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+
+ * backend/hp5400_internal.c: Added version string for v0.87
+ which has been reported to work ok. Use of a list of versions
+ instead of several constants.
+
+2003-07-02 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/gphoto2.c: Suppress the "bad parameter" message printed
+ when a camera is not connected, by using Debug level 1
+
+2003-07-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Memorex, Visioneer and
+ Xerox scanners. Updated information for Visioneer scanners.
+
+2003-06-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Visioneer OneTouch 5800
+ USB.
+ * doc/doxygen-sanei.conf: Update version.
+
+2003-06-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.darwin: Mention some more working scanners.
+ * doc/descriptions/unsupported.desc: Added Brother and Microtek
+ scanners.
+
+2003-06-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Mention backend name in warnings and errors.
+
+2003-06-20 Michael Herder <crapsite@gmx.net>
+
+ * doc/descriptions/artec_eplus48u.desc: Updated status fields
+
+2003-06-19 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/descriptions/dc25.desc, dc240.desc: Updated status fields
+
+2003-06-19 Simon Munton <simon@munton.demon.co.uk>
+
+ * doc/descriptions/pie.desc: Updated status fields
+
+2003-06-19 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * doc/descriptions/mustek_pp.desc: Updated status fields of CIS type
+ scanners.
+
+2003-06-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions.txt: Changed unmaintained tag to lowercase.
+ * doc/descriptions/template.desc.
+ doc/descriptions-external/template.desc.: Updated according to
+ descriptions.txt.
+ * doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added RevScan 19200i. Updated
+ device status entries.
+ * doc/descriptions/abaton.desc doc/descriptions/agfafocus.desc
+ doc/descriptions/apple.desc doc/descriptions/artec.desc
+ doc/descriptions/dc210.desc doc/descriptions/dll.desc
+ doc/descriptions/dmc.desc doc/descriptions/ibm.desc
+ doc/descriptions/ma1509.desc doc/descriptions/mustek.desc
+ doc/descriptions/mustek_usb.desc doc/descriptions/net.desc
+ doc/descriptions/pint.desc doc/descriptions/pnm.desc
+ doc/descriptions/qcam.desc doc/descriptions/ricoh.desc
+ doc/descriptions/s9036.desc doc/descriptions/sp15c.desc
+ doc/descriptions/tamarack.desc doc/descriptions/test.desc
+ doc/descriptions/v4l.desc: Updated to new status system.
+ Added "unmaintained" where appropriate. The status values are
+ sometimes guessed from the documentation.
+ * doc/descriptions/unsupported.desc: Added Benq parport scanners.
+ * doc/descriptions-external/hp4200.desc
+ doc/descriptions-external/hpoj.desc
+ doc/descriptions-external/niash.desc
+ doc/descriptions-external/primax.desc
+ doc/descriptions-external/scanwit.desc
+ doc/descriptions-external/v4l2.desc
+ doc/descriptions-external/viceo.desc: Updated to new status
+ system. The status values are sometimes guessed from the
+ documentation.
+
+2003-06-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Changed to use the new status system for
+ devices: unsupported, untested, minimal, basic, good, complete.
+ The old backend and device statuses are translated. Removed
+ the option to generate one big table of backends (wasn't used
+ anyway).
+ * doc/descriptions.txt: Explained the new status values. Removed
+ reference to emacs-lisp code for generation of HTML
+ files. Explained unsupported.desc.
+ * tools/sane-desc.el.in tools/sane-desc-ext.el: Removed because
+ these emacs-lisp scripts haven't been used for some time now.
+ Use sane-desc.c instead.
+ * configure configure.in tools/.cvsignore tools/Makefile.in
+ tools/README: Removed references to sane-desc.el.
+ * Makefile.in: Added ChangeLog-1.0.12 to DISTFILES.
+
+2003-06-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.darwin: Minor updates.
+ * TODO: Added v4l2 problem, desc file issues. Removed sm3600
+ MacOS X problem + printing backends in configure.
+ * doc/descriptions/unsupported.desc: Added Canon D2400UF
+ and IS 12.
+
+2003-06-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added link for HP 5550c.
+ * doc/descriptions/hp5400.desc doc/descriptions/ma1509.desc:
+ Removed :new marker.
+ * doc/descriptions/tamarack.desc: Removed link to
+ www.tamarack.net. Hostname is no longer in DNS.
+
+2003-06-11 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c: fixed bug in that code when a scanner is
+ disconnected (anoah at pfeiffer dot edu)
+
+2003-06-10 Michael Herder <crapsite@gmx.net>
+
+ * po/Makefile.in: Added Czech translation
+ * po/sane-backends.cs.po: Added Czech translation provided
+ by Josef <joeprusa at volny dot cz>
+
+2003-06-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon 8000F. More info
+ for Avision/Umax scanners.
+
+2003-05-27 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco2.c: fixed a bug regarding color shifting above X
+ max resolution. Added more working resolutions for the VM3575.
+
+2003-06-05 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+ * hp5400 backend : synchronized sourceforge CVS with SANE CVS,
+ details below
+ added :
+ backend/hp5400_debug.c
+ backend/hp5400_debug.h
+ backend/hp5400_sane.c
+ backend/hp5400_sanei.h
+ backend/hp5400_internal.h
+ modified :
+ backend/hp5400.c
+ backend/hp5400.h
+ backend/hp5400_internal.c
+ backend/hp5400_sanei.c
+ backend/hp5400_xfer.h
+ to compile and run (on linux 2.4.21) as SANE backend and
+ in the corresponding hp5400backend sourceforge project
+
+2003-06-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed saned issues.
+ * doc/descriptions/unsupported.desc: Added Microtek 336 CX.
+ * configure configure.in backend/Makefile.in: The list of backends
+ that are built is now in configure.in. Print backends that are
+ built. Allow manually setting the backends.
+
+2003-06-05 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * include/sane/sanei_pa4s2.h, sanei/sanei_pa4s2.c: New sanei_pa4s2
+ version supporting both raw IO and libieee1284. If you don't
+ have libieee1284 installed, you need to enable raw IO when
+ running configure
+
+2003-06-06 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.h backend/fujitsu.c doc/descriptions/fujitsu.desc:
+ remove SP15 code
+ sane_open actually opens the device you request
+ from (anoah at pfeiffer dot edu)
+
+2003-06-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Don't check if the firmware is
+ loaded. The check seems to confuse the USB system on some UHCI
+ chips.
+
+2003-06-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: Fixed C++-like code for MacOS X (patch from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+ * acinclude.m4 aclocal.m4 configure frontend/saned.c
+ include/sane/config.h.in: Check if ss_family or __ss_family is
+ in struct sockaddr_storage. Otherwise diasbale ipv6. Patch from
+ Julien BLACHE <jb@jblache.org>.
+
+2003-06-03 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c, backend/fujitsu.h: separated the 4x20
+ into another model and color support for the 4x20
+
+2003-06-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: hp5400 doesn't need sanei_config2.
+
+2003-05-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.fr.po: Fixed two wrong codings of accented
+ characters.
+ * backend/net.c: Fixed bug concerning hosts that have both IPv6
+ and IPv4 addresses but only accept connections on IPv4. Patch
+ from Julien BLACHE <jb@jblache.org>.
+ * doc/descriptions/net.desc: Mention IPv6. Bump version number.
+
+2003-05-27 Frank Zago <fzago at austin dot rr dot com>
+
+ * PROJECTS: Changed entry for win32 SANE project.
+
+2003-05-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.html: Added link for Umax astra 4700.
+
+2003-05-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Don't disable IPv6 if poll is not
+ found.
+ * frontend/saned.c: Use u_int_* instead of uint_*. That fixes
+ compilation for MacOS X (hopefully).
+ * doc/Makefile.in: Add option -nodepage to man2html to avoid
+ missing lines in the html output.
+ * doc/descriptions/unsupported.html: Added link for Spot scanners.
+
+2003-05-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled again. Added -cvs to
+ version.
+
+Older entries can be found in ChangeLog-1.0.12.
diff --git a/ChangeLogs/ChangeLog-1.0.14 b/ChangeLogs/ChangeLog-1.0.14
new file mode 100644
index 0000000..75a5fcb
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.14
@@ -0,0 +1,899 @@
+****** Release of sane-backends 1.0.14. End of code freeze ******
+
+2004-04-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added link to more info about
+ Microtek ScanMaker 3630.
+ * NEWS: Updated for release.
+ * backend/sm3600.h: Added last minute fix to avoid compilation
+ trouble with gcc 3.4.
+ * configure configure.in: New version: 1.0.14.
+
+2004-04-29 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.conf doc/descriptions/snapscan.desc
+ Added Benq 640BT, changed status of Epson 1670 to "good"
+
+2004-04-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.sv.po: Updated Swedish translation (from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+
+---- CODE FREEZE FOR SANE 1.0.14 ---
+-- snapshot 1.0.14-pre3
+
+2004-04-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Lexmark X5130, UMAX
+ Astra 4000 and 4600.
+ * doc/descriptions-external/genesys.desc: Removed comments from
+ some scanners as the chipset is known now.
+ * configure configure.in: Disabled compilation warnings.
+
+2004-04-24 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/sane-usb.man: added comment about devmode not working
+ with current (2.6.3-2.6.5) 2.6 kernels
+
+2004-04-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c: Fixed dynamic loading of backend libraries
+ on OS/2. Patch from Franz Bakan <fbakan@gmx.net>.
+
+2004-04-23 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-u12.man doc/plustek/Plustek-USB.changes: updates.
+
+2004-04-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Minor fixes for Mustek BearPaw 2448 TA Plus.
+ * doc/descriptions/unsupported.desc: Added Canon IS-32.
+
+2004-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure: Don't use -ansi on MacOS X.
+
+2004-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure: If the test for gphoto2-config
+ fails, don't call it later.
+
+-- snapshot 1.0.14-pre2
+
+2004-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Added some more updated backends and danish translation.
+ * tools/hotplug/libsane.usermap: Added Epson Stylus CX5400 and
+ Nikon Coolscan 5000 ED. Minor documentation updates.
+
+2004-04-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-mutex.c: Fixed compilation problem on OS/2
+ (Thanks to Franz Bakan).
+ * configure.in configure: SnapScan backend now compiled in by
+ default on OS/2
+
+2004-04-15 Marian Eichholz <eichholz@computer.org>
+
+ * backend/sm3600.h backend/sm3600-scanmtek.c
+ backend/sm3600-color.c backend/sm3600-gray.c
+ backend/sm3600-homerun.c: Many fixes for MacOS-X problems pointed
+ out by Mattias Ellert, thanks: Waiting longer for DoJog() command
+ completion, new function for transmitting the line gain correction
+ data with correct endianess, Chassis-Gray-Level lowered.
+ * backend/sm3600.c : Fixed off-by-one-error in p->lines
+ backend/sm3600-scanmtek: Fixed just broken UploadGainCorrection()
+
+2004-04-14 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.conf: Added "usb" entry for libusb
+
+2004-04-14 Rene Rebe <rene@rocklinux.org>
+
+ * backend/avision.h, backend/avision.c: the current development state,
+ including cleanups, code refactoring, dynamic color and scan source
+ list creation, implemented ADF mirroring needed for some ASICs ,
+ some scan window scaliing fixes for some ASICs, added 16bit gray
+ and color support, fixed a tiny big-endian issue, fixed command
+ error reporting for some ASICs, improved inquiry logging and some
+ tiny fixes for film-scanners.
+
+2004-04-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek_pp.c backend/plustek-pp_sysdep.h
+ backend/plustek-pp_scan.h backend/plustek-pp_ptdrv.c
+ backend/plustek-pp_misc.c: Fixed Kernel 2.6 compilation problems.
+ * doc/plustek/Makefile.kernel24 doc/plustek/Makefile.kernel26
+ doc/plustek/MakeModule.sh: added to make kernel-module
+ compilation easier.
+ * doc/plustek/BUILD doc/plustek/VERSION0
+ doc/plustek/Plustek-PARPORT.txt doc/sane-plustek.man: update.
+ * backend/u12.c backend/u12-hw.c backend/u12-if.c: minor fixes.
+ * doc/u12/U12.changes doc/u12/U12.todo: update.
+ * doc/descriptions/u12.desc: added RevScan Orange R48Ti.
+ * sanei/sanei_thread.c: fixed some warning conditions.
+
+2004-04-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.da.po: Added Danish translation
+ (from Mogens Jaeger <mogensjaeger@get2net.dk>).
+
+2004-04-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.windows: Mentioned C++ misdetection trouble.
+ * tools/Makefile.in: In make distclean also clean subdirectories.
+
+2004-04-11 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Added missing device IDs for current MFDs
+
+---- FEATURE FREEZE FOR SANE 1.0.14 ---
+-- snapshot 1.0.14-pre1
+
+2004-04-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * japi/.cvsignore: Updated.
+ * japi/Jscanimage.java japi/Sane.c: Fixes from David Neary
+ <David@phenix.fr> to make japi work with current jdks. More
+ work and documentation is still needed.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Minor fixes for Mustek A3 USB,
+ Genius ColorPage Vivid4 and Mustek BearPaw 2448 CS/TA Plus.
+ * Makefile.in tools/Makefile.in: Added some missing files to
+ DISTFILES.
+
+2004-04-10 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * tools/sane-find-scanner.c, doc/sane-mustek_pp.man,
+ doc/sane-find-scanner.man: added support for detecting
+ mustek parallel port scanners.
+
+2004-04-09 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek.c: Fixes bug #300620.
+ * sanei_thread.c: Fixes bug-reports #300617 & #300618,
+ all reports and patches or patch-ideas by Mattias Ellert.
+
+2004-04-09 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-usb.c backend/snapscan-mutex.c
+ backend/Makefile.in: Use own file for mutex implementation
+ to allow for easier porting to other platforms
+ backend/snapscan-sources.c backend/snapscan.c:
+ Bugfixes for pthread implementation
+
+2004-04-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-sources.c
+ backend/snapscan.h backend/Makefile.in:
+ Use sanei_thread functions instead of forking
+ * backend/snapscan-options.c: Change title and description
+ for OPT_HIGHQUALITY to use existing i18n translations
+ * backend/snapscan-usb.c: Use urb counting
+ (thanks to Jose Alberto Reguero)
+
+2004-04-06 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * backend/test.c changed some option group headers to advanced option
+ menu.
+
+2004-04-06 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * sanei/sanei_pa4s2.c include/sane/sanei_pa4s2.h, backend/mustek_pp.c:
+ fixed compiler warnings
+
+2004-04-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_mid.c doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES:
+ Added BGR color order for pixel mode. Plustek OpticPro U16B works
+ in color mode now. Made 600 dpi mode for Mustek BearPaw 2400 TA
+ Plus a bit faster. Changed Mustek ScanExpress A3 linedistance
+ correction. Added detection of Visioneer Onetouch 7300.
+ * doc/descriptions/unsupported.desc: Removed Canon D660. Now
+ supported by plustek backend.
+
+2004-04-04 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/descriptions/plustek.desc: added Canon D660U.
+ * doc/plustek/Plustek-USB.changes doc/plustek/Plustek-USB-TODO.txt
+ doc/plustek/Plustek-USB.txt: update
+ * po/sane-backends.*.po: new strings, as the plustek backend has changed.
+ * backend/plustek.[ch], plustek-usb.[ch], plustek-usb.cal.c,
+ plustek-usbdevs.c, plustek-usbhw.c, plustek-usbimg.c,
+ plustek-usbshading.c: added Canon D660U support, cleanup, bug-fixing.
+ * backend/plustek.conf: added red_lampoff, green_lampoff and blue_lampoff
+ parameters.
+
+2004-04-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-options.c
+ backend/snapscan-scsi.c:
+ Various bugfixes for gamma correction (Thanks to Robert Tsien)
+ * po/sane-backends.de.po: Fix translation for "gamma table"
+
+2004-04-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated for sane-backends 1.0.14.
+ * README.linux: Added some hints about setting permissions with
+ libusb on Linux 2.6. Removed some obsolete paragraphs.
+ * config.guess config.sub: Updated from stable libtool.
+ * doc/descriptions/unsupported.desc: Added Relisys Episode scanner.
+
+2004-03-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: Increased SCSI buffer size on MacOS X.
+ Patch from Mattias Ellert, bug #300601.
+
+2004-03-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6816.c
+ backend/gt68xx_high.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Plustek U16B: Added
+ GT68XX_FLAG_SE_2400. Fixed color order.Increased debug
+ level for setup_scan. Fixed CCD ocarse calibration.
+ * doc/descriptions/microtek.desc: Added Agfa Studiostar.
+ * doc/descriptions/unsupported.desc: Added Avigramm Minidoc,
+ Medion MD 41260, and Nikon LS 50 ED. Removed Genius Colorpage
+ Vivid III as it may work with the u12 backend.
+
+2004-03-27 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, hp-scl.c, hp.h, doc/sane-hp.man,
+ doc-descriptions/hp.desc: Fix problem with USB-connections
+ on Linux 2.6.x. Add environment SANE_HP_KEPPOPEN... and
+ don't close connections for USB.
+
+2004-03-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Tevion MD 40420. Moved
+ Plustek OpticPro S(T)28 to genesys.desc.
+ * doc/descriptions-external/genesys.desc: Moved Plustek OpticPro
+ S(T)28 to genesys.desc.
+
+2004-03-22 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h Added detection for Epson 660 by USB ID
+ since new models use new ID strings.
+
+2004-03-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Added detection of Mustek ScanExpress
+ 1200 FS.
+ * doc/descriptions/unsupported.desc: Added some Microtek and Agfa
+ scanners.
+
+2004-03-19 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added Perfection 4870 and CX-6400
+ * doc/descriptions/unsupported.desc: Removed CX-6400
+
+2004-03-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c backend/gt68xx_low.h doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Genius
+ Vivid 4xe now has color order RGB. Removed 50 dpi for Mustek
+ BearPaw 2448 as that resolution doesn't work. Make sure that the
+ lamp of the Mustek A3 USB gets warmed up. It's a CIS scanner with
+ a lamp. That code is untested. Full scan starts scanning from the
+ start position of the white strip now. Added detection for Genius
+ Vivid 1200 EX. Fixed product id of Mustek BearPaw 2448 TA
+ Plus. Other minor updates.
+
+2004-03-15 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * backend/umax: bugfix for sense_handler and do_calibration
+
+2004-03-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
+ backend/umax_pp.c tools/umax_pp.c: Added ppdev support for 610P
+ detection. Fixed scan area overflow at >= 600 dpi. Fixed ppdev
+ data direction setting. Fixed direct hardware ECP mode for 1220P.
+
+2004-03-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/README tools/hotplug/README tools/hotplug/libsane.usermap
+ tools/hotplug/libusbscanner: Added scanner ids (from Marcel
+ Pol). Added more documentation. Added "chmod a+rw" alternative.
+ * doc/descriptions-external/genesys.desc: Added Plustek OpticPro
+ ST48.
+ * doc/descriptions/unsupported.desc: Added Mustek A3 EP. Removed
+ Plustek OpticPro ST48.
+
+2004-03-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Vantas 3000. Added some
+ links.
+
+2004-03-09 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
+ doc/sane-umax_pp.man doc/descriptions/umax_pp.desc tools/umax_pp.c:
+ finished ECP support for 1220P/2000P. Added scanner detection and
+ low-level communication for 610P.
+
+2004-03-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-scanner.c: GL841 max packet size can be 512
+ bytes on USB 2.0.
+ * doc/sane-usb.man: The Linux scanner module was removed. The
+ devmode trick in fstab doesn't work anymore. We now have a
+ hotplug script.
+ * doc/descriptions/unsupported.desc: Moved all scanners that may
+ be supported by the genesys backend to genesys.desc. Added Agfa
+ 1212 P.
+ * doc/descriptions-external/genesys.desc: Moved all scanners that may
+ be supported by the genesys backend to genesys.desc. Added links
+ to scanner pages.
+
+2004-03-04 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c
+ enabled dropoutcolor for fi4x20C
+2004-03-04 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c
+ enabled dropoutcolor for fi4530C
+
+2004-03-03 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/descriptions/unsupported.desc: Updated Plustek section.
+ * doc/descriptions-external/genesys.desc: updated list of scanners
+ that should be supported by the genesys backend.
+
+2004-03-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Added checks for bad handles for
+ SANE_NET_CLOSE and SANE_NET_CANCEL. This is intended to stop
+ saned from segfaulting when a bad handle is used.
+
+2004-03-02 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Added D8 function level for RX-500
+
+2004-03-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb_low.c
+ backend/mustek_usb_low.h doc/sane-mustek_usb.man
+ doc/mustek_usb/mustek_usb.CHANGES doc/mustek_usb/mustek_usb.TODO:
+ Added workaround for toggle = data0 chipset bug.
+ Fixes bug #300323.
+ * doc/descriptions/unsupported.desc: Added link for HP ScanJet
+ 8290. Added Logitec PageScan Color.
+
+2004-03-01 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/descriptions-external/genesys.desc: created list of scanners
+ that should be supported by the genesys backend.
+ * doc/leo/leo.txt: doc update.
+
+2004-03-01 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Corrected default function level from B5 to B3
+
+2004-02-28 Frank Zago <fzago at austin dot rr dot com>
+
+ * tools/check-usb-chip.c: Added test for GL646 used in HP scanners.
+
+2004-02-28 Julien Blache <jb@jblache.org>
+ * tools/hotplug: added the hotplug script used by the Debian
+ package, with a quick README.
+ * tools/README: updated to mention the hotplug/ directory.
+
+2004-02-27 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Add more debug output to help resolve bug #300524
+
+2004-02-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/scanimage.man frontend/scanimage.c: Added support for asking
+ for pressing a key before scanning a page in a batch scan. Patch
+ from Dominik Fischer <dom_fischer@web.de>.
+
+2004-02-20 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c backend/fujitsu.h backend/fujitsu-scsi.h:
+ merged the 3092 and the 3091 functions
+ inverted the image in mode color and grayscale
+ jpg hardware compression support (fi-4530C)
+
+
+2004-02-20 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.h backend/umax_pp_low.c backend/umax_pp.conf
+ backend/umax_pp.c tools/umax_pp.c: added initial ECP support for
+ scanner, laid groundwork for 610P support.
+
+2004-02-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 4670 and
+ Tamarack Artiscan 9600 pro 36. Removed Plustek OpticSlim 2400.
+ * doc/descriptions/umax1220u.desc: Added UMAX Astra 1600U as this
+ scanner is reported to work as "well" as the 2000U.
+
+2004-02-11 Frank Zago <fzago at austin dot rr dot com>
+ * backend/matsushita.c backend/matsushita.conf
+ doc/sane-matsushita.man doc/descriptions/matsushita.desc: added
+ partial support for models KV-SS55EX, KV-S2025C, KV-S2045C and
+ KV-S2065L.
+
+2004-02-08 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson*.[ch]: Reformat source code to get rid of different coding styles
+ used over the years (and by different authors).
+
+2004-02-08 Frank Zago <fzago at austin dot rr dot com>
+ * README.windows: added info about USB scanners.
+
+ * backend/teco1.c backend/teco1.conf backend/teco1.h
+ doc/sane-teco1.man doc/descriptions/teco1.desc: added new
+ scanner Relisys RELI 4816, marked Relisys AVEC 2412 as tested.
+
+2004-02-08 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * backend/umax: bugfix for DOR mode, sane-umax-build-43
+ * doc/umax/umax.CHANGES updated
+
+2004-02-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc: Added basic support for Plustek
+ OpticSlim 2400. Fixed calibration debug output.
+
+2004-02-07 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.h, backend/epson_usb.h: Increase timeout for lamp warmup
+ from 60 to 120 seconds
+
+2004-02-07 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c: cleaned up debug code
+ * backend/mustek_pp_decl.h, backend/mustek_pp_drivers.h: bumped
+ version number.
+ * backend/mustek_pp.conf: fixed mistakes in examples
+
+2004-02-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Genius Colorpage Vivid
+ 1200EX and Mustek Paragon 800 II EP.
+
+2004-02-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Fixed inconsistent error message (patch from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+
+2004-02-01 Gerhard Jaeger <gerhard@gjaeger.de>
+ * sanei/sanei_thread.c: added Mattias Ellerts' patch to make
+ sanei_thread_kill work on MacOSX.
+
+2004-02-01 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Added D7 function level as copy of D1 for CX-6400
+ * backend/epson_usb.c: Added IDs for CX-6400 and Perfection 4870
+
+2004-02-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c: Remove non-working resolutions
+ for Epson Perfection 1670
+ * doc/descriptions/snapscan.desc: Add Guillemot Maxi A4 36 bit
+
+2004-01-31 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Remove more compile warnings.
+
+2004-01-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Mustek BearPaw 4800TA Pro II.
+
+2004-01-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_scsi_pp.c: Use gettimeofday() instead of
+ ftime(). Bug #300482.
+
+2004-01-21 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/test.c: reader_process terminates now, when running as
+ thread.
+ * backend/u12.c backend/u12-hw.c backend/u12-if.c backend/u12-io.c
+ backend/u12-map.c backend/u12-motor.c backend/u12-shading.c
+ backend/u12-tpa.c backend/u12.h backend/u12.conf: major update, compilation
+ fixes.
+
+2004-01-19 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/u12/U12.changes: update.
+ * doc/u12/U12.todo: initial checkin.
+ * backend/plustek-usb.c: cleanup.
+ * backend/u12.c backend/u12-ccd.c backend/u12-hw.c backend/u12-if.c
+ backend/u12-image.c backend/u12-io.c: activated cancel function,
+ added lamp off timer function, cleanup, stability fixes.
+
+2004-01-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Debug options are only enabled if the
+ debug level is 1 and higher. Added product id 0x0402 for Plustek U16B.
+
+2004-01-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/gamma4scanimage.man: scanimage is in section 1.
+ * doc/descriptions/unsupported.desc: Added Lexmark X74.
+
+2004-01-15 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp.c, backend/mustek_pp_cis.c: Bug fix: make sure
+ that the child process releases the parallel port under all
+ circumstances. Otherwise, the parent process may no longer be
+ able to control the scanner and the lamp stays on and doesn't
+ return home.
+
+2004-01-15 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * include/sane/saneopts.h: Added options WHITE_LEVEL_R, WHITE_LEVEL_G,
+ and WHITE_LEVEL_B.
+ * doc/sane-teco2.man: changed --white-level to white-level-r, -g, -b
+ update text
+ * backend/teco2.c: changed WHITE_LEVEL to WHITE_LEVEL_R, _G and _B,
+ changed calibration part for the VM3564, VM356A and
+ VM3575 (subtract highest and lowest value and then
+ divide).
+ * backend/teco2.h: changed WHITE_LEVEL to WHITE_LEVEL_R, _G, _B.
+
+2004-01-14 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/u12.c: Fixed preview bug.
+
+2004-01-14 Gerhard Jaeger <gerhard@gjaeger.de>
+ * descriptions/u12.desc: fixed wrong man-page reference, status updates.
+ * backend/u12.c backend/u12.h backend/u12-hwdef.h backend/u12-scanner.h
+ backend/u12-*.c: bump up version, fixed device autodetection and corrupted
+ pictures, improved model-detection.
+
+2004-01-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added several Canon, HP,
+ Plustek, and UMAX scanners.
+ * doc/descriptions-external/epkowa.desc: Epson 1670 is supported
+ by SnapScan backend now.
+ * doc/descriptions/gt68xx.desc doc/sane-gt68xx.man: Added Packard
+ Bell Diamond 2450.
+
+2004-01-13 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson-usb.c: Added product ID for RX-500
+
+2004-01-13 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/sane-plustek_pp.man: added missing explanation. Bug #300441.
+ * include/sane/sanei_thread.h: updated copyright info.
+ * sanei/sanei_thread.c: fixed return value handling for sanei_wait_pid().
+
+2004-01-12 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed bug # 300444 - Changed OPT_CCT_( desc. string.
+
+2004-01-12 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * backend/umax backend/Makefile.in: repleaced fork routines by sanei_thread
+ * doc/umax/umax.CHANGES updated
+
+2004-01-12 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp-dev.c backend/canon_pp-io.c backend/canon_pp.c
+ backend/canon_pp.h: Fix various compile warnings (Bug #300407).
+ Also fix bug in parsing config file.
+ * doc/descriptions/canon_pp.desc: Bump version number.
+
+2004-01-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: When generating HTML anchor names, make sure
+ they are unique. Bug #300439.
+ * doc/descriptions/qcam.desc doc/descriptions/unsupported.desc:
+ Fixed some broken links.
+
+2004-01-10 Julien BLACHE <jb@jblache.org>
+ * sanei/sanei_pa4s2.c: libieee1284 support for scsi_pp functions.
+ This is untested but should work.
+
+2004-01-10 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * doc/umax: corrected links in umax documentations
+
+2004-01-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-config.man: Only one option can be used at the same
+ time.
+ * doc/descriptions/unsupported.desc: Added HP Scanjet 4600 and
+ Quato scanners. Updated Epson 1270.
+
+2004-01-09 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/u12/U12.changes: initial checkin.
+ * doc/sane-u12.man doc/sane-plustek.man doc/sane-plustek_pp: added
+ ENVIRONMENT information and did some minor updates.
+ * descriptions/plustek_pp.desc descriptions/u12.desc: status updates.
+ * po/sane-backends.de.po: fixed wrong translation.
+ * doc/plustek/Plustek-USB.changes: update.
+ * doc/plustek/Plustek-PARPORT-TODO.txt: update.
+ * doc/Makefile.in: added u12 subdirectory.
+ * backend/plustek.[ch] backend/plustek-usb*.[ch]: copyright updates
+ and some changes concerning the CanoScan lamp calibration.
+ * backend/u12.[ch] backend/u12-*.[ch]: copyright updates.
+ * backend/plustek_pp.[ch] backend/plustek-pp*.[ch]: copyright updates
+ and minor fixes.
+
+2004-01-08 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * backend/umax.c: changed order of includes because of compilation error
+
+2004-01-07 Oliver Rauch <oliver.rauch@rauch-domain.de>
+ * backend/umax.c: disabled quality calibration for Astra 2200 SU via USB
+
+2004-01-05 Gerhard Jaeger <gerhard@gjaeger.de>
+ * configure configure.in: added new u12 backend.
+ * AUTHORS: added myself as u12 backend author.
+ * backend/Makefile.in: added new backend u12.
+ * backend/u12.c backend/u12.h backend/u12-scanner.h backend/u12-hwdef.h
+ backend/u12.conf backend/u12-shading.c backend/u12-tpa.c
+ backend/u12-ccd.c backend/u12-hw.c backend/u12-if.c backend/u12-image.c
+ backend/u12-io.c backend/u12-map.c backend/u12-motor.c:
+ initial checkin.
+ * backend/dll.conf: added u12 backend.
+ * doc/sane-u12.man: initial checkin.
+ * doc/sane.man doc/Makefile.in: added man-page for u12 backend.
+ * doc/descriptions/u12.desc: added descitpion for u12 backend.
+ * doc/descriptions/unsupported.desc: removed Plustek OpticPro U12, UT12,
+ 1212U, Genius Colorpage Vivid III, as they should be supported now.
+
+2004-01-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_gt6801.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Fixed a
+ bug in the stop scan function for Plustek U16b. Added support
+ for Genius Vivid4xe.
+ * doc/descriptions/unsupported.desc: Added Visioneer 8820 and TCE S450.
+
+2003-12-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP and Epson scanners.
+
+2003-12-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-chip.c: Added test for Genesys Logic GL841.
+
+2003-12-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Updated/added several Medion
+ scanners.
+ * backend/as6e.c backend/coolscan.c backend/dll.c backend/ibm.c
+ backend/microtek2.c backend/mustek_scsi_pp.c
+ backend/mustek_usb_high.c backend/mustek_usb_low.c
+ backend/mustek_usb_mid.c backend/nec.c backend/net.c
+ backend/qcam.c backend/ricoh-scsi.c backend/s9036.c
+ backend/sp15c-scsi.h backend/sp15c.c backend/sp15c.h
+ backend/st400.c backend/tamarack.c backend/tamarack.h
+ sanei/sanei_scsi.c tools/check-usb-chip.c: Silenced some
+ compilation warnings.
+
+2003-12-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.darwin: Mentioned libusb problems. Updated fork section.
+
+2003-12-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/niash.desc: Added information that
+ this backend will be included soon. Fixed "Snapscan" to
+ "SnapScan" (bug #300394).
+ * backend/mustek_scsi_pp.c backend/mustek_scsi_pp.h
+ backend/Makefile.in backend/mustek.c
+ backend/mustek.conf backend/mustek.h doc/sane-mustek.man
+ doc/sane.man doc/descriptions/mustek.desc
+ include/sane/sanei_pa4s2.h sanei/sanei_pa4s2.c: Added support
+ for Mustek Paragon 600 II EP (SCSI-over-parallel port). This is
+ based on a patch from James Perry. Support for libiee1284 is
+ missing until now. Closes bug #300143.
+ * AUTHORS: Added James Perry.
+ * doc/descriptions/unsupported.desc: Removed Mustek Paragon 600 II
+ EP/ED. Added Genius Colorpage-EP.
+ * README: Updated concerning libieee1284.
+
+2003-12-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added more information about
+ the Benq Scanprisa 640P, Boder SmartSCan Office, and Trust
+ CombiScan 19200.
+
+2003-12-22 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * tools/check-usb-chip.c: Added patch for test ICM532B.
+
+2003-12-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c doc/descriptions/test.desc: Fixed initial value
+ for --fixed-constraint-range (bug #300388).
+ * include/sane/sanei_usb.h: Include stdlib.h for size_t.
+ * sanei/sanei_constrain_value.c: Fixed overflow (bug #300389).
+ * acinclude.m4 aclocal.m4 configure configure.in backend/v4l.c
+ backend/v4l.h doc/descriptions/v4l.desc: Don't include
+ linux/videodev.h kernel header anymore. Use own defines
+ instead. Fixes bug #300324.
+
+2003-12-18 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/sane-plustek.man: new version, minor fixes
+ * doc/descriptions/plustek.desc: new backend version
+ * backend/plustek-pp*: cleanup work
+ * backend/plustek-usb*: new version 0.47, added support for model overide
+ when one manufacturer uses the same model-id for various devices.
+
+2003-12-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon 3200F.
+ * backend/gt68xx_gt6801.h: Made internal function static.
+
+2003-12-15 Oliver Schirrmeister <oschirr@abm.de>
+ * backends/fujitsu.[hc]: Bugfix: The options pagewidth and
+ pageheight were disabled for the fi4530
+
+2003-12-15 Eugene Weiss <eweiss@sbcglobal.net>
+ * backend/as6e.c: fixed bugs 300123 and 300133.
+
+2003-12-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added some scanners.
+ * doc/sane-mustek_pp_ccd.man: Removed (now again in mustek_pp backend).
+
+2003-12-15 Oliver Schirrmeister <oschirr@abm.de>
+ * backends/fujitsu.[hc]:
+ - Bugfix: set default threshold range to 0..255 There is a problem
+ with the M3093 when you are not allows to set the threshold to 0.
+ - Bugfix: set the allowable x- and y-DPI values from VPD. Scanning
+ with x=100 and y=100 dpi with an fi4120 resulted in an image
+ with 100,75 dpi.
+ - Bugfix: Set the default value of gamma to 0x80 for all scanners
+ that don't have build in gamma patterns.
+ - Bugfix: fi-4530 and fi-4210 don't support standard paper size
+ spezification. Disabled this option for these scanners.
+
+2003-12-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Eugene S. Weiss has CVS write access now.
+ * doc/descriptions/unsupported.desc: Added and updated some
+ scanners.
+ * tools/sane-find-scanner.c: Actually use the number of the alt
+ setting when printing descriptors. Fixes bug #300383 found by
+ Gerard Klaver.
+ * backend/gt68xx.c backend/gt68xx_devices.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Updated code for Genius Vivid 4x and Mustek ScanExpress A3 USB.
+ Added Genius Colorpage Vivid3 V2 and Googlegear 2000 as
+ supported devices.
+ * backend/artec.c: Check for NULL before accessing a pointer. This
+ may fix a segmentation fault mentioned in bug #300339. Also a
+ compilation warning was fixed.
+
+2003-12-13 Julien BLACHE <jb@jblache.org>
+ * fronted/saned.c: use strcasecmp() instead of strcmp() when
+ matching IPv6 addresses.
+
+2003-12-12 Michael Herder <crapsite at gmx.net>
+ * backend/artec_eplus48u.c backend/artec_eplus48u.h
+ backend/artec_eplus48u.conf: added experimental
+ support for the Artec E+ Pro
+ fixed sane-Bugs-300261 (doesn't compile when
+ NDEBUG is defined)
+
+2003-12-09 Allan Noah <anoah at pfeiffer dot edu>
+ * doc/desc/{fujitsu|ma1509}.desc: move fujitsu fi-4110eox2 section
+
+2003-12-09 Allan Noah <anoah at pfeiffer dot edu>
+ * backend/fujitsu.c: count USB packets to prevent timeouts, perhaps
+ due to DATA0/1 toggle problems in certain scanners
+
+2003-12-07 Peter Fales <peter@fales-lorenz.net>
+ * acinclude.m4, aclocal.m4, configure: remove "enabling GPHOTO2"
+ messages printed by configure
+
+2003-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added some scanners.
+
+2003-12-06 Peter Fales <peter@fales-lorenz.net>
+ * acinclude.m4, aclocal.m4, configure: gphoto2 backend is now
+ enabled by default if gphoto2-config is found. Use
+ "--with-gphoto2=no" to disable it.
+
+2003-12-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in
+ sanei/sanei_scsi.c: sanei_scsi.c should now compile with the new
+ and old SCSI API of MacOS X. Patch from Mattias Ellert
+ <mattias.ellert@tsl.uu.se>.
+ * doc/descriptions/unsupported.desc: Added several scanners.
+ * AUTHORS: Matthew Marjanovic and Marian Eichholz both have CVS
+ access now.
+ * sanei/sanei_usb.c: Check for /dev/uscanner* for NetBSD and
+ OpenBSD. Patch from bug tracker #300373.
+
+2003-12-01 Nathan Rutman <nthn1@yahoo.com>
+
+ * backend/canon630u.c: Change default scan size to full platen,
+ removed compiler warnings, made HMG's fix for bug #300257
+ permament.
+ * doc/sane-canon630u.man: cleanup
+
+2003-12-01 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * backend/mustek_pp_ccd300.c: Fixed horizontal offset of scan area
+ and scaling for color scans
+
+2003-11-27 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Changed status for CX3200 and
+ CX5200 from untested to good
+
+2003-11-28 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c: Download gamma table twice for
+ Epson Perfection 1670
+
+2003-11-27 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek.changes: moved to Plustek-USB.changes
+ * doc/plustek/Plustek-PARPORT.changes: added
+ * doc/plustek/Plustek-USB.txt doc/sane-plustek.man
+ doc/sane-plustek_pp.man: Update
+
+2003-11-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Epson CX6400. Removed
+ Packard Bell Diamond 1200. Updated HP ScanJet 8200.
+ * Makefile.in doc/descriptions/releases.txt: Generate md5 hash
+ when making the a release.
+
+2003-11-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Michael Herder has CVS access now.
+ * doc/descriptions/unsupported.desc: Added Biolux 654. Updated HP
+ Photosmart entries. Removed Mustek BearPaw 2448 TA Plus (now
+ listed by gt68xx.desc).
+
+2003-11-23 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * backend/mustek_pp_ccd300.c: forgot parameters to wait_bank_change
+ * include/sane/sanei_pa4s2.h: fixed function prototype
+
+2003-11-23 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/descriptions/mustek_pp.desc: changed :beta to :good
+
+2003-11-23 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * backend/mustek_pp.c, sanei/sanei_pa4s2.c: added support for auto
+ probing of the port
+ * configure{.in}, backend/mustek_pp_ccd.*, backend/Makefile.in,
+ backend/dll.conf, doc/sane-mustek_pp_ccd.man, doc/sane.man,
+ doc/Makefile.in, doc/descriptions/mustek_pp_ccd.desc: mustek_pp_ccd
+ backend removed
+ * backend/mustek_pp.conf, mustek_pp_ccd300.[ch],
+ doc/sane-mustek_pp.man, doc/descriptions/mustek_pp.desc: fixed CCD
+ support for mustek_pp backend
+ * backend/mustek_pp_null.c: beautified debug scanner name
+
+2003-11-23 René Rebe <rene@rocklinux.org>
+
+ * backend/avision.c backend/avision.h: the current development state,
+ including cleanups, code refactoring and nearly complete HP
+ 53xx/75xx ADF support
+
+2003-11-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled again. Added -cvs to
+ version.
+ * doc/releases.txt: Updated information about diffs.
+ * doc/descriptions/unsupported.desc: Added HP and Mustek scanners.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6801.h backend/gt68xx_low.c
+ backend/gt68xx_low.h doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Added Mustek BearPaw 2448 TA
+ Plus. Added special command set for Plustek U16B. Added
+ Plug-n-Scan 2400 M(T) to list of devices. No positive report yet.
+ Used request for memory writes and reads instead of a fixed
+ value of 0x04. Set Genius Vivid4x to GT6816. Untested. All
+ changes have not been tested on their respective scanners yet.
+ New version: 1.0.50.
+
+Older entries can be found in ChangeLog-1.0.13.
diff --git a/ChangeLogs/ChangeLog-1.0.15 b/ChangeLogs/ChangeLog-1.0.15
new file mode 100644
index 0000000..5ee7665
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.15
@@ -0,0 +1,1027 @@
+****** Release of sane-backends 1.0.15. End of code freeze ******
+
+2004-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother.desc: One more report about a
+ working scanner. Added link.
+ * doc/descriptions/unsupported.desc: Added some scanners.
+ * configure configure.in: New version: 1.0.15.
+
+2004-11-07 Giuseppe Sacco <eppesuig@debian.org>
+
+ * New italian translation update
+
+2004-11-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc: Status update for Epson scanners
+
+---- CODE FREEZE FOR SANE 1.0.15 ---
+-- snapshot 1.0.15-pre2
+
+2004-10-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_high.h doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Removed unused gain and offset
+ options.
+ * NEWS: Added (planned) release date.
+ * configure configure.in: Disabled compilation warnings.
+
+2004-10-31 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Additional debug output.
+ * backend/plustek-usbscan.c: Fixed a warning condition.
+
+2004-10-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Bumped release number.
+ * backend/plustek-usbscan.c: Fixed a bug in buffer calculation
+ for CIS devices.
+ * doc/plustek/Plustek-USB.changes: Update.
+
+2004-10-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/hp_rts88xx.desc: Moved HP 35xx
+ scanners to hp_rts88x backend. Updated status settings and URL
+ (from johanneshub@foni.net). Updated link to Tamarack 9600 project.
+ * doc/descriptions-external/brother.desc: Seems to work in version
+ 0.0.12 at least for one scanner.
+
+2004-10-27 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_core.c backend/niash.c: moving critical timing
+ for backward movement to niash_core
+
+2004-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Moved Plustek OpticFilm
+ 7200 to genesys.desc (GL841 chipset). Added UMAX Astra 3400
+ (0x50 model). Added Xerox WorkCentre M15i.
+
+2004-10-23 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Updated italian translation.
+
+2004-10-21 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/gt68xx.c backend/mustek.c: Remove an extra "in".
+ * po/*.po: Fixing fuzzy translations (and some others).
+
+2004-10-21 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.h backend/avision.c: update of the scanner ID table,
+ wait_4_light bugfixes, fixed color packing, fixed 16bit modes
+ (especially for big-endian systems), avoid 16bit modes for default
+ modes, fixed gamma-table for some models as well as spelling on the
+ way
+
+2004-10-20 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.c doc/descriptions/avision.desc doc/sane-avision.man:
+ substituted my mail address and web-site to a new one - due to
+ leaving the rocklinux project
+
+2004-10-19 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Using now the same strings for gain and offset
+ like the umax_pp backend (bug #300962).
+ * doc/plustek/Plustek-USB.changes: Update.
+ * po/*.po: Update due to changes in the Plustek backend.
+ * po/sane-backends.de.po: Fixed gain translation.
+
+2004-10-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: When getting string descriptors, ask
+ for the length of the descriptor first (bug #301001).
+
+2004-10-18 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_core.c:
+ * backend/niash.c: correcting vertical scanning start
+ point for changed max. page height
+
+2004-10-17 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_core.c: using exact number of lines for a scan
+
+---- FEATURE FREEZE FOR SANE 1.0.15 ---
+-- snapshot 1.0.15-pre1
+
+2004-10-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Olivetti Job-Jet M400.
+
+2004-10-17 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added Epson Perfection 2480.
+
+2004-10-16 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Added USB ID for Expression 10000XL
+
+2004-10-16 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * ltmain.sh: backport -framework support from libtool 2.0
+ * README.darwin: sane-find-scanner now works for SCSI, so removed
+ statement that said it didn't. More libusb info, and link to libusb
+ patch
+
+2004-10-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: Fixed NULL string crash.
+ * README.linux: Added some more details about hotplug and Gentoo
+ problems.
+ * NEWS: Updated for 1.0.15.
+
+2004-10-17 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_core.c: rewrote buffer portioning
+ * backend/niash_core.c (2): updated debug info
+ * backend/niash.c: Enabling support of full DIN A4 size
+
+2004-10-16 Oliver Rauch <Oliver.Rauch@Rauch-DOmain.DE>
+
+ * backend/umax.c: added default options for Linotype OPAL2
+
+2004-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added various scanners.
+ * po/sane-backends.da.po: Updated Danish translation (from Mogens
+ Jaeger <mogensjaeger@get2net.dk>).
+
+2004-10-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei_wire.h sanei/sanei_wire.c: Limit the total
+ amount of memory used for arrays and pointers while decoding the
+ wire to 1 MB (bug #300158). Run "make clean" before "make"!
+
+2004-10-14 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash.c: removing a non-ANSI conform comma.
+ adapting the gammma conversion.
+
+2004-10-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_thread.c: Added missing pthread_detach() so the
+ thread resources could be reused again.
+
+2004-10-13 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash.c: Proper resource handling in sane_cancel.
+
+2004-10-12 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Fixed warning condition.
+ * backend/plustek-usbhw.c: Cleanup.
+
+2004-10-12 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Updated italian translation.
+ * Added a "translators" section in AUTHORS
+
+2004-10-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 config.guess config.sub configure ltmain.sh: Update
+ to libtool 1.5.10.
+ * doc/descriptions/unsupported.desc: Added link to
+ Microtek Filmscan 35.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_high.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES:
+ Fixed typos. Added Packard Bell Diamond 2450 to .conf and
+ changed status to "good". Avoid error message when closing
+ scanner. Don't print max_white warning when debugging is not
+ enabled.
+ * po/sane-backends.bg.po po/sane-backends.cs.po po/sane-backends.da.po
+ po/sane-backends.de.po po/sane-backends.es.po po/sane-backends.fi.po
+ po/sane-backends.fr.po po/sane-backends.it.po po/sane-backends.nl.po
+ po/sane-backends.no.po po/sane-backends.pt.po po/sane-backends.ru.po
+ po/sane-backends.sv.po: Recreated. Fixed
+ some fuzzy texts and added some translations to .de.po.
+ * tools/check-usb-chip.c: Workaround for GT6816 detection problem
+ on BSDs.
+
+2004-10-11 Oliver Schirrmeister (oschirr@abm.de)
+
+ * backend/fujitsu.c: bugfix: 3091 did not work (15.12.2003)
+ M4099 supported (bw only)
+ enables brightness
+
+2004-10-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c: Fixed typo.
+ * README.solaris: Added details on building SANE on Solaris/x86
+ (from Tomasz Orlinski <tomasz.orlinski@wp.pl>).
+
+2004-10-10 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/Makefile.in: fix niash dependencies
+
+2004-10-08 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp_low.c: 610P shading
+ calibration improvements. 1220P offset and gain fixes.
+ Code cleanups.
+
+2004-10-08 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash.c: Added grayscale and lineart support
+ * backend/niash_core.c: corrected bug in line-weight in
+ function _UnScrambleLine
+ * doc/descriptions/niash.desc: changed status to complete
+ removed the color only comment
+
+2004-10-06 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c backend/u12.c backend/plustek_pp.c:
+ Using now the well known MODE definitions.
+ * backend/plustek.h backend/plustek-usb.h: Cleanup.
+ * doc/plustek/Plustek-USB.changes
+ doc/plustek/Plustek-Parport.changes doc/u12/U12.changes:
+ Update.
+ * po/*.po: Update.
+
+2004-10-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.h doc/descriptions/microtek2.desc: New
+ version: 0.96. Added Genius ColorPage-EP (from Karsten Festag
+ <karsten.festag@gmx.de>).
+ * doc/descriptions/unsupported.desc: Added link to artiscan 9600
+ project. Removed Genius ColorPage-EP.
+ * configure.in include/sane/config.h.in: Removed dangling
+ quotation mark.
+ * backend/sp15c.c: Don't eject medium twice after each page.
+
+2004-10-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: Fixed compilation problem when
+ compiled without libusb support. Print sane-backends version
+ number. Print if built without libusb.
+
+ * backend/microtek2.c backend/microtek2.h: Added backend version
+ 200410042220 from Karsten Festag <karsten.festag@gmx.de>. While
+ attaching devices only read attributes from source 0 (=
+ MD_SOURCE_FLATBED), others give wrong results. Better handling of
+ different shading depths. Including model ColorPage-EP. Workaround
+ for firmware bug for V300 (FW < 2.70). Workaround for firmware bug
+ with odd pixel numbers. Bugfix for lamp switching when using
+ LightLid35 Transparency Adaptor.
+
+ * tools/check-usb-chip.c: Added test for interface 1 and
+ altsetting 2 for GT-8911. Unified ouitput. Formatting updates.
+
+2004-10-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-find-scanner.man tools/check-usb-chip.c
+ tools/sane-find-scanner.c: sane-find-scanner can now load USB
+ descriptors from /proc/bus/usb/devices dumps (e.g. from the
+ unsupported scanner web pages). Minor modifications to some of
+ the chipset tests.
+
+2004-10-04 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.h backend/hp.c backend/hp-scl.c:
+ Fixed bug #300973 (renamed global function hp_init_openfd
+ to sanei_hp_init_openfd
+
+2004-10-04 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Fixed bug #300963.
+ * doc/plustek/Plustek-USB.changes: Update.
+ * po/*.po: Update.
+
+2004-10-03 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+
+ * backend/hp5400_debug.c backend/hp5400_debug.h
+ backend/hp5400_internal.c backend/hp5400_sane.c:
+ removing more hp5400 compilation warnings
+
+2004-10-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Nikon LS-5000 ED (bug
+ #300972).
+ * include/sane/saneopts.h: Added option for turning off the
+ scanner's lamp on exit (bug #300963).
+ * backend/gt68xx.c backend/gt68xx_high.h: Used new lamp option
+ from saneopts.h (bug #300963).
+ * backend/net.c doc/descriptions/net.desc: Check for (size_t) -1
+ doesn't work on 64 bit platforms as size_t is 64 bits there
+ while the length of a data block is defined as 32 bits in the
+ SANE network standard (bug #300837).
+ * backend/microtek2.c backend/microtek2.h: Fixed some warnings
+ (bug #300823). Fixed Microtek Phantom C6 scanning on big endian
+ platforms. Based on patch from Matijs van Zuijlen in Debian bug
+ tracking system (#274523).
+ * sanei/sanei_auth.c sanei/sanei_lm983x.c sanei/sanei_wire.c
+ backend/artec.c backend/artec_eplus48u.c backend/as6e.c
+ backend/avision.c backend/canon-sane.c backend/canon-scsi.c
+ backend/canon.c backend/canon630u-common.c backend/dc25.c
+ backend/epson.c backend/fujitsu.c backend/gt68xx_low.c
+ backend/hp5400_internal.c backend/hp5400_sanei.c
+ backend/ma1509.c backend/microtek.c backend/microtek2.c
+ backend/mustek.c backend/mustek_scsi_pp.c backend/nec.c
+ backend/net.c backend/pie.c backend/sharp.c
+ backend/snapscan-scsi.c backend/snapscan-sources.c
+ backend/snapscan-usb.c backend/snapscan.c backend/teco3.c
+ backend/test.c backend/umax-usb.c backend/umax1220u-common.c:
+ 64 bit platform fixes (bug #300799).
+ * backend/Makefile.in tools/Makefile.in: Fixed DESTFILES.
+
+2004-10-02 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+
+ * backend/hp5400_internal.c backend/hp5400_internal.h
+ backend/hp5400_sanei.c backend/hp5400_sanei.h
+ backend/hp5400_sane.c:
+ removing some compilation warnings
+
+2004-10-02 Thomas Soumarmon <thomas.soumarmon@cogitae.net>
+
+ * backend/hp5400_internal.c: hp5400 version mathing test
+ has been removed by default.
+ To enable it :
+ CFLAGS="-DSTRING_VERSION_MATCH" ./configure
+
+2004-10-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added several
+ scanners. Removed Genius Vivid 1200 XE (actually supported by
+ gt68xx backend).
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Updates of supported scanners.
+
+2004-10-01 Oliver Rauch <Oliver.Rauch@Rauch-DOmain.DE>
+
+ * backend/umax-scanner.c, umax.conf and umax.desc:
+ added "LinoHell", "OPAL2 " as supported device
+
+2004-09-28 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.sv.po: Updated Swedish translation file
+
+2004-09-27 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/unsupported.desc doc/descriptions/snapscan.desc:
+ Changed entry for Epson 2580 (should work with SnapScan backend).
+
+2004-09-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: fixed Plustek entries.
+
+2004-09-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Compeye Simplex 1236C.
+
+2004-09-14 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: add USB device ID for CX6400 back in
+ * backend/epson.c: disable "feed" command for Perfection 1640 w/ ADF
+
+2004-09-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * doc/descriptions/unsupported.desc: Added Microtek Scanmaker 5700,
+ ArtixScan 4000tf and Medion MD41985.
+
+2004-09-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure: Regenerated.
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Moved HP 35xx series to
+ unsupported.desc because these scanners use a RTS8801 chip (no
+ Genesys chipset).
+
+2004-09-06 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * backend/mustek_pp.c: clarify error message
+ * configure.in: only build the mustek_pp backend, if parallel
+ port support of any kind is present
+
+2004-09-06 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c: Fixed bug #300913.
+
+2004-09-05 Julien Blache <jb@jblache.org>
+
+ * More auth_callback() fixes, although they're not critical.
+
+>>>>>>> 1.2283
+2004-09-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Lexmark X1130, Dell
+ 1600n. Removed Canon LiDE 35 (now in genesys.desc) and Epson
+ Perfection 2480 (now in snapscan.desc).
+ * doc/descriptions-external/genesys.desc: Added Canon LiDE 35.
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_low.h backend/gt68xx_low.h
+ backend/gt68xx_shm_channel.c
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Fixed firmware name for Mustek 1248
+ UB. Changed status to basic. Removed "unsupported" warning.
+ Added workaround for shared memory compilation problem on
+ Windows. It's now possible to add a new vendor/product id line
+ to gt68xx.conf to test yet unsupported scanners without changing
+ the source code.
+ * frontend/.cvsignore: Added tstbackend.
+
+2004-09-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan-options.c
+ backend/snapscan.h backend/snapscan.conf doc/descriptions/snapscan.desc:
+ Added support for Epson 2480
+
+2004-09-01 Julien Blache <jb@jblache.org>
+
+ * frontend/saned.c: auth_callback(): arrays are passed as
+ pointers, declaring parameters as arrays of fixed size is
+ useless. memset() the correct length, not sizeof(pointer).
+ Caught while testing splint on the SANE sources.
+
+2004-08-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon LiDE35.
+ * sanei/sanei_usb.c: Fixed memory leak.
+
+2004-08-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Epson 2580 and Nikon
+ LS-50.
+ * doc/descriptions-external/brother.desc: Added more clear comments.
+
+2004-08-28 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c:
+ option parsing fix
+ * backend/umax_pp_low.c:
+ minor 1220P calibration fixes
+
+2004-08-25 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * tools/umax_pp.c backend/umax_pp.c backend/umax_pp.conf
+ backend/umax_pp.h backend/umax_pp_low.c backend/umax_pp_low.h
+ backend/umax_pp_mid.c backend/umax_pp_mid.h doc/sane-umax_pp.man:
+ rename 'contrast' to 'offset' and 'highlight' to 'gain'. Translations
+ will need to be updated. Beginning of 610/1220P codepath merge.
+
+2004-08-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Epson 2480 and Microtek
+ Filmscan 35.
+
+2004-08-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: Worked around a cygwin libusb
+ compatibility problem (patch from Giuseppe Sacco eppesuig
+ at users.alioth.debian.org).
+
+2004-08-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/gt68xx.desc doc/descriptions/unsupported.desc:
+ Updated.
+
+2004-08-18 Julien Blache <jb at jblache dot org>
+ * tools/hotplug/libsane.usermap: committed patch from Aurélien
+ Jarno adding USB IDs for Epson Stylus CX6400 (and doing
+ s/EPSON/Epson/ on one entry to maintain consistency).
+
+2004-08-14 Frank Zago <fzago at austin dot rr dot com>
+
+ * frontend/tstbackend: fixed a couple bugs.
+
+2004-08-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.fi.po: Added Finnish translation
+ (from Harri Järvi <harri.jarvi@ajatus.org>).
+
+2004-08-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES tools/hotplug/libsane.usermap:
+ Added Mustek ScanExpress 1248 UB and new version of Mustek
+ BearPaw 1200 CU Plus.
+ * doc/descriptions/unsupported.desc: Added Lexmark and Xerox scanners.
+
+2004-08-05 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * backend/teco2.c backend/teco2.h: changed to SANE_VALUE_SCAN_MODE_LINEART, _GRAY, and _COLOR,
+ * backend/teco2.c: changed use of %d to %ld (when bytes values are displayed)
+
+2004-08-04 Julien Blache <jb at jblache dot org>
+ * tools/hotplug/libsane.usermap: added HP ScanJet 5300C.
+
+2004-08-04 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * AUTHORS: corrrection for teco2
+ * doc/descriptions/teco2.desc: url and status change
+ * doc/sane-teco2.man: update info
+ * backend/teco2.c: - added for the VM6575 a WHITE_LEVEL_R, _G an _B
+ slider opion
+ -changed for the VM656A and VM6575 and VM6586 the calibration part
+ (subtract highest and lowest value and then divide).
+ -default SANE_TECO_CAL_ALGO value is now 1 for the VM3564 and
+ VM6575.
+ - preview value is now 75 dpi for the VM6575
+
+2004-08-04 Oliver Rauch <Oliver.Rauch@Rauch-DOmain.DE>
+ * doc/umax/umax.FAQ: corrected bug about dtc3181e scsi controller
+
+2004-08-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * aclocal.m4 configure include/sane/config.h.in: Regenerated to
+ include updates from niash and resource manager inclusion.
+ * doc/sane.man doc/sane-niash.man: Minor documentation updates.
+ * doc/descriptions-external/niash.desc: Removed (backend now included).
+
+2004-08-03 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * AUTHORS: Added niash backend maintainer and author.
+ * configure.in: Added niash backend.
+ * backend/dll.conf: Added niash backend.
+ * backend/Makefile.in: Added niash backend files and target.
+ * backend/niash.c backend/niash_core.c backend/niash_core.h
+ backend/niash-xfer.c backend/niash-xfer.h backend/niash-types.h:
+ Niash backend files, initial checkin.
+ * doc/sane-niash.man, doc/descriptions/niash.desc, doc/niash/niash.TODO:
+ Initial checkin.
+ * doc/Makefile.in: Added niash documentation stuff.
+ * doc/sane-man: Added niash manpage.
+ * po/Makefile.in: Added niash source file.
+ * po/sane-backends.de.po: Updated and completed niash backend translation.
+ * po/sane-backends.*.po: Added niash strings.
+ * backend/plustek.c: Small cleanup.
+
+2004-07-31 Julien Blache <jb at jblache dot org>
+
+ * frontend/scanimage.c: Added the possibility to cleanly stop a
+ batch by pressing Ctrl+D when using --batch-prompt.
+
+2004-07-28 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/descriptions/unsupported.desc: Added Logitech PageScan USB and
+ Grandtek Scopecam
+
+2004-07-26 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_usb.c sanei/sanei configure configure.in: Added
+ resource manager library support.
+ * backend/plustek.[ch] backend/plustek-usbdevs.c backend/plustek-usbhw.c
+ backend/plustek-usbshading.c backend/plustek.conf: Added speedup
+ parameters and TPA autodetection for UMAX3400/3450, added
+ disableSpeedup option.
+ * doc/plustek/Plustek-USB-TODO.txt doc/plustek/Plustek-USB.changes
+ doc/descriptions/plustek.desc: Updated.
+
+2004-07-21 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.c tools/umax_pp.c:
+ fixed a 610P initialization bug that shown up when changing from color
+ to grey mode. Changed version numbers.
+
+2004-07-18 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added CX-5400, RX-500 and RX-600; updated version
+ * doc/descriptions/unsupported.desc: Removed RX-500
+
+2004-07-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Added Epson Perfection
+ 3170 Photo as it's reported to work with that backend.
+ * doc/descriptions/unsupported.desc: Added some scanners. Removed
+ Epson Perfection 3170 (now in epkowa).
+
+2004-07-16 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Makefile.module doc/plustek/BUILD
+ doc/plustek/VERSION0 doc/plustek/VERSION1: Removed, no longer needed.
+ * doc/plustek/Makefile.kernel2x doc/plustek/MakeModule.sh:
+ Getting version information now out of the backends main file.
+ * doc/plustek/Plustek_PARPORT.changes: Updated.
+ * doc/descriptions/plustek_pp.desc: Updated.
+ * doc/sane-plustek.man: Fixed typo.
+ * backend/plustek-pp.[ch], backend/plustek-pp_*.[ch]:
+ Added DevFS support for kernel 2.6, removed floating point
+ operations (Thanx to Rafal Rzepecki), bumped up build number,
+ cleanup work.
+ * doc/plustek/Plustek_USB.changes: Updated.
+ * backend/plustek.c: Bumped up build number
+ * backend/plustek-usbshading.c: Improved autowarmup, cleanup work.
+ * backend/plustek-usb.h backend/plustek-usbdevs.c
+ backend/plustek-usbhw.c backend/plustek-usnscan.c: Improved
+ fastforward stuff, cleanup work.
+ * sanei/sanei_lm983x.c: Cleanup work.
+
+2004-07-15 Rene Rebe <rene@rocklinux.org>
+
+ * include/sane/sane.h: added extern "C" for compilation with a C++
+ compiler
+
+2004-07-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-coolscan2.man doc/sane-microtek2.man: Fixed
+ manual page problems.
+
+2004-07-10 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * tools/check-usb-chip.c: Added check for the GT-8911.
+
+2004-07-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-chip.c: Also check the number of interfaces for
+ the GT-6816 to avoid conflicts with other GT chips.
+
+2004-07-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother.desc: New file. Added the
+ scanners listed on the brother backend page. Used "untested"
+ status as we don't have confirmation that the backend actually
+ works.
+ * tools/hotplug/libsane.usermap: Added Mustek ScanExpress 1248UB.
+ * tools/sane-desc.c: XML mode updates (patch from Jose Gato
+ <jgato@gsyc.escet.urjc.es>).
+ * doc/descriptions/ma1509.desc: Removed dead link.
+
+2004-07-05 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Changed status of CanoScan D660U.
+ * doc/plustek/Plustek-USB*: Update.
+ * backend/plustek.c: Bumped up build number.
+ * backend/plustek-usb.[ch] backend/plustek-usbdevs.c
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbmap.c backend/plustek-usbscan.c: Added support
+ for binary scanning for the CanoScan D660U, cleanup work.
+
+2004-07-03 Peter Fales <peter@fales-lorenz.net>
+
+ * acinclude.m4, aclocal.m4, configure, tools/sane-config.in:
+ When using pkg-config to get library flags for gphoto2, any
+ extra flags (such as -L) must be passed to sane-config.in so
+ that it can find the libraries in a non-standard location.
+ (Bug #300686)
+
+2004-07-02 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/*.po: Updated according to changes in the plustek backend.
+ * backend/plustek.c backend/plustek-usb*: Major update, see
+ doc/plustek/Plustek-USB.changes.
+ * doc/sane-plustek.man: Update.
+ * doc/plustek/Plustek-USB.changes: Update.
+ * doc/descriptions/plustek.desc: Removed unsupported devices,
+ updated some states.
+ * doc/descriptions/plustek_pp.desc: URL update.
+ * doc/descriptions/u12.desc: URL update, changed state of backend.
+ * doc/sane-plustek_pp.man: URL update.
+ * doc/sane-u12.man: URL update.
+
+2004-06-30 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/leo.c doc/descriptions/leo.desc: added support for
+ Genius FS-1130 Colorpage Scanner.
+
+2004-06-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Makefile.kernel26: fixed floating point issues
+ for SuSE kernels.
+
+2004-06-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Microtek and Xerox
+ scanners.
+ * tools/sane-desc.c: Added xml output (patch from
+ jose <jgato@lambdaux.com>). Other minor fixes.
+
+2004-06-28 m. allan noah <anoah at pfeiffer dot edu>
+
+ * backend/fujitsu.c: use model code instead of string compare
+ submitted by: stan at saticed.me.uk
+
+2004-06-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: removed Compac S4 100
+ (supported by the Plustek backend), added various Plustek
+ devices, changed OpticPro m12 to OpticSlim M12
+
+2004-06-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.c: Fixed some (but not all) MIN related
+ compilation warnings (bug #300823).
+ * tools/sane-find-scanner.c: Look for NetBSD uscanner devices (bug
+ #300815).
+
+2004-06-22 Rene Rebe <rene@rocklinux.org>
+
+ * backend/avision.c, backend/avision.h, doc/sane-avision.man:
+ Fixed compilation warning (Bug #300399) and added a force-a3
+ option, needed for A3 scanner returning bogus scan area definitions
+
+2004-06-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/*.po: Updated according to upcomming changes in the plustek backend.
+
+2004-06-20 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * aclocal.m4, configure, sane/config.h.in, backend/Makefile.in,
+ backend/agfafocus.c, backend/artec_eplus48u.c, backend/avision.c,
+ backend/coolscan.c, backend/fujitsu.c, backend/pie.c,
+ backend/plustek.c, backend/plustek_pp.c, backend/sp15c.c,
+ backend/tamarack.c, backend/u12.c
+ * Fixing bug #300602 for the following backends: agfafocus,
+ artec_eplus48u, avision, coolscan, fujitsu, pie, plustek,
+ plustek_pp, sp15c, tamarack and u12
+ * Migrating the avision backend to sanei_threads (bug #300631)
+
+2004-06-19 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/gt68xx.c po/sane-backends.bg.po po/sane-backends.cs.po
+ po/sane-backends.da.po po/sane-backends.de.po
+ po/sane-backends.es.po po/sane-backends.fr.po
+ po/sane-backends.it.po po/sane-backends.nl.po
+ po/sane-backends.no.po po/sane-backends.pt.po
+ po/sane-backends.ru.po po/sane-backends.sv.po
+ * Option names should not be tagged for localization
+ * Fixing some typos
+ * New localizable strings from the gt68xx backend (pofiles regenerated)
+ * Swedish translation updated
+
+2004-06-19 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * sanei/sanei_scsi.c, tools/sane-find-scanner.c
+ * SCSI scanners can now be selected by LUN on MacOS X
+ * sane-find-scanner now finds SCSI scanners on MacOS X
+ * making some sanei_scsi internal functions static
+
+2004-05-30 Peter Fales <peter@fales-lorenz.net>
+
+ * acinclude.m4, aclocal.m4, configure.in, configure
+ In addition to using pkg-config to find the gphoto2 library flags,
+ we should check to see whether it's actually possible to link
+ a program using those flags.
+
+2004-06-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/gt68xx/gt68xx.TODO: New file. Lots of bugs and missing
+ features for the gt68xx backend.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_generic.c
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6801.h backend/gt68xx_gt6816.c
+ backend/gt68xx_high.c backend/gt68xx_high.h backend/gt68xx_low.c
+ backend/gt68xx_low.h backend/gt68xx_mid.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Updated to backend version 61. Lots
+ of fixes for coarse calibration, scanning speed and several
+ scanners. For details, see gt68xx.CHANGES.
+
+2004-06-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/.cvsignore: Added *.8.
+
+2004-06-17 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c doc/descriptions/umax_pp.desc
+ doc/sane-umax_pp.man:
+ fixed overflows in 610P shading calibration coefficients,
+ minor man update, 610P status change from minimal to good
+
+2004-06-16 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.c backend/snapscan-usb.c:
+ Don't enforce even number of URB packages on 1212u_2 since
+ it causes problems. See bug #300753.
+
+2004-06-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/snapscan.c: Only use __attribute__ if gcc is used for
+ compilation. Some other compilers don't know __attribute__ and
+ therefore can't compile sane-backends without this fix. See
+ bug #300803.
+
+2004-06-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.h backend/umax_pp_low.c backend/umax_pp_mid.c:
+ 610P gray level shading calibration fix. Added timer to let 610P
+ ASIC to settle down after probing.
+
+2004-06-13 Julien Blache <jb@jblache.org>
+
+ * doc/Makefile.in: saned is in /usr/sbin, its manpage should go to
+ section 8. Fixed everything referring to saned(1) to refer to saned(8).
+
+2004-06-13 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * doc/descriptions/unsupported.desc: Added NEC Petiscan as unsupported
+
+2004-06-13 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/sane_usb.c: Added Perfection 1650 back in that was removed by
+ mistake and finally removed Perfection 1250.
+
+2004-06-12 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c tools/umax_pp.c: final fixes for 610P color
+ scanning, parallel port autodetection for the umax_pp tool.
+
+2004-06-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek_usb.desc: Fixed version number.
+
+2004-06-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-pp_misc.c: fixed multiple parport problem for kernel 2.6.x.
+ * backend/plustek_pp.c: bumped up version number.
+ * doc/plustek/BUID: bumped up build number.
+
+2004-06-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/RenSaneDlls.cmd: Fixed newlines.
+ * README.netbsd: Mention SCSI buffer size problems and uk/ss files
+ issue.
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Reduced scan area of Mustek Paragon
+ 1200 A3 Pro. Removed warning message. Increased support level to
+ complete.
+ * tools/hotplug/libsane.usermap: Added another variant of a
+ Plustek OpticPro 1248U.
+ * doc/descriptions/unsupported.desc: Added Syscan TravelScan FS-531.
+
+2004-06-06 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: remove product IDs for Perfection 1250 and 1260
+
+2004-06-06 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-usb.c: Don't use shared memory on OS/2 and
+ when using pthreads.
+
+2004-06-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug/libsane.usermap: Added Mustek BearPaw 2448 Plus
+ and Plustek OpticPro U16B.
+
+2004-06-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/README tools/RenSaneDlls.cmd: Added REXX script to convert
+ backend-DLL-filenames according to 8.3 naming convention
+ necessary for DLLs on OS/2 (from Franz Bakan).
+
+2004-06-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/net.c doc/sane-net.man doc/saned.man frontend/saned.c:
+ Changed service name from "sane" to "sane-port". This is the
+ IANA registered service name for port 6566 (bug #300758).
+
+2004-06-02 Oliver Schirrmeister <oschirr@abm.de>
+
+ * fujitsu.c
+ bugfix: It is possible to read duplex color now.
+
+2004-05-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Mattias Ellert has CVS write access now.
+
+2004-05-30 Peter Fales <peter@fales-lorenz.net>
+ * acinclude.m4, aclocal.m4, configure.in, configure
+ Use pkg-config rather than gphoto2-config to get gphoto
+ build parameters (bug #300686)
+
+2004-05-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/v4l.c: Used SANE_VALUE_SCAN_MODE_* constants.
+ * doc/descriptions-external/viceo.desc: Mention special kernel patch.
+
+2004-05-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/sp15c.c: Fixed the fix of the sanei_thread fix
+ (from Mattias Ellert).
+
+2004-05-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.hp-ux: Mention trouble with higher optimization levels
+ (from Ulrich Deiters <ukd@xenon.pc.Uni-Koeln.DE>).
+ * doc/descriptions/unsupported.desc: Added Dell A920, Microtek
+ 1850S and Plustek OpticPro m12. Removed HP,Scanjet 2300 (already
+ in genesys.desc).
+ * backend/sp15c.c: Fixed sanei_thread fix (bug #300634, by Mattias
+ Ellert).
+
+2004-05-27 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-usb.c: Use shared
+ memory for urb counters
+
+2004-05-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c doc/descriptions/dll.desc: Work around 8 char
+ limit for dynamic loading on OS/2 (patch from Franz Bakan
+ <fbakan@gmx.net>).
+
+2004-05-24 m. allan noah <anoah at pfeiffer dot edu>
+ * backend/fujitsu.[ch]: apply Mattias Ellert's thread patch
+ split packet counter into r and w
+
+2004-05-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-scanner.c: Detect GL660+GL646 on USB2 also.
+ Fixed Mustek MA1017 scanner freeze problem.
+ * backend/Makefile.in backend/agfafocus.c backend/agfafocus.h
+ backend/microtek2.c backend/microtek2.h backend/sp15c.c
+ backend/sp15c.h backend/tamarack.c backend/tamarack.h:
+ Use sanei_thread instead of fork() in the unmaintained backends.
+ Patches from Mattias Ellert (bugs: 300635, 300634, 300633, 300629).
+
+2004-05-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_pp.c: fixed compilation problem on HP-UX.
+
+2004-05-21 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * backend/canon.c, canon-sane.c, canon.h: removed an option
+ (OPT_PAGE) that conflicted with some frontends
+
+2004-05-18 Ulrich Deiters <ukd@xenon.pc.uni-koeln.de>
+
+ * backend/canon.c, canon-sane.c: memory leak and bug fixed
+ in slide scanner code
+
+2004-05-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added more Canon cartridge
+ scanners. Updated Visioneer Paperport 3100b.
+
+2004-05-18 Michael Herder <crapmail@nurfuerspam.de>
+
+ * backend/Makefile.in:
+ adjusted for use with sanei_thread and artec_eplus48u backend
+ (thanks Mattias Ellert)
+
+2004-05-16 Oliver Rauch <Oliver.Rauch@Rauch-DOmain.DE>
+
+ * sanei/sanei_config.c: added DIR_SEP=";" and PATH_SEP="\\"
+ for windows (when windows.h) is available
+
+ * backend/dll.c: added DIR_SEP definitions from sanei_config.c
+ and replaced relevant ":" by DIR_SEP
+
+2004-05-15 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/BUID: bumped up build number.
+ * doc/plustek/Plustek-PARPORT.changes: update
+ * backend/plustek-pp_misc.c: fixed kernel 2.6 issue.
+ fixed also Bug #300698.
+
+2004-05-15 Michael Herder <crapmail@nurfuerspam.de>
+
+ * backend/artec_eplus48u.c backend/artec_eplus48u.h:
+ applied patch from Mattias Ellert (thanks), which adds support
+ for sanei_thread
+
+2004-05-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.c tools/umax_pp.c: fixed
+ origin shift bug for 610P. Added on guard against configuration
+ that can put several 'port' option in conf file.
+
+2004-05-13 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.c tools/umax_pp.c: fixed
+ data lines reordering for 610P
+
+2004-05-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sane-backends.lsm: Updated FTP server link to ftp.sane-project.org.
+
+2004-05-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: Remove autoconf temp files and some japi stuff in
+ distclean target.
+
+2004-05-10 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c : fixed 300x600 dpi scans, direct
+ hardware access and timing issues for 610P
+
+2004-05-06 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * tools/hotplug/libusbscanner: latest hotplug doesn't set
+ DEVICE on 2.6.x kernels. Added a workaround
+
+2004-05-05 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * include/sane/saneopts.h: Added SANE_VALUE_SCAN_MODE_* strings.
+ * backend/canon_pp.c: Used them.
+
+2004-05-01 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * tools/hotplug/libsane.usbmap: removed empty lines, latest
+ hotplug cannot cope with them
+
+2004-03-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
+ backend/umax_pp_mid.h backend/umax_pp.c backend/umax_pp.h
+ tools/umax_pp.c: added support for 610P
+
+2004-05-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled again. Added -cvs to
+ version.
+ * Makefile.in: Added Changelog-1.0.14 to DISTFILES.
+
+Older entries can be found in ChangeLog-1.0.14.
diff --git a/ChangeLogs/ChangeLog-1.0.16 b/ChangeLogs/ChangeLog-1.0.16
new file mode 100644
index 0000000..f96e19e
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.16
@@ -0,0 +1,944 @@
+****** Release of sane-backends 1.0.16. End of code freeze ******
+
+2005-08-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: New version 1.0.16.
+
+2005-08-05 St�hane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys.c: Fixed endianess issue in slope table
+ generation. Tested ok on x86 architecture.
+
+2005-08-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.da.po: Updated Danish translation (from
+ Mogens Jaeger <mogensjaeger@get2net.dk).
+
+2005-08-02 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.sv.po: Update Swedish translation
+
+2005-08-01 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * doc/sane-mustek_pp.man: updated URL for additional CIS driver info.
+
+2005-07-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated.
+
+---- CODE FREEZE FOR SANE 1.0.16 ---
+
+2005-07-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Disabled compilation warnings.
+
+2005-07-30 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Applied Olaf Meuwissen's patch to add
+ new device IDs.
+
+2005-07-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Xerox Workcentre
+ 470cx. Added link for Canon DR-2080C.
+ * backend/Makefile.in: libsane and documentation is installed
+ correctly again.
+ * acinclude.m4 configure configure.in: Avoid error messages in
+ locking test. Make sure that io/cam/cam.h header file will be
+ detected correctly.
+
+2005-07-29 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/sane-teco2.man: text update
+ doc/descriptions/teco2.desc: update status VM3564
+ doc/teco/teco2.txt: text added
+ backend/teco2.c: removed teco_request_sens command for VM3564 (bug)
+ backend/teco2.h: text update
+
+2005-07-29 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added various Epson IDs from Olaf
+ Meeuwissen; reodered some misplaced Epson entries.
+
+2005-07-29 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added Visioneer OneTouch 7300
+ (0x0444,0x0211), from Derek J Frye.
+
+2005-07-25 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions-external/epkowa.desc: Updated according to
+ the info provided by Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>
+
+2005-07-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother2.desc: Brother DCP 7025 is
+ reported to work (bug #301960).
+ * doc/descriptions-external/hp_rts88xx.desc: Moved unsupported
+ devices to unsupported.desc.
+ * doc/descriptions-external/hp3770.desc
+ doc/descriptions-external/hp8200.desc: Added external hp3770 and
+ hp8200 backends.
+ * doc/descriptions/unsupported.desc: Added unsupported scanners
+ from hp_rts88xx.desc. Removed HP ScanJet 3770 (now in hp3770
+ backend). Added Lexmark X75 PrinTrio.
+
+2005-07-22 Giuseppe Sacco <eppesuig@debian.org>
+
+ * italian translation update
+
+2005-07-22 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added HP ScanJet 7400C (0x03f0,
+ 0x0801), from Thomas Nadolny.
+
+2005-07-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbcal.c: Fixed lampsettings for CIS devices.
+
+2005-07-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c: Change TPO range for Epson 2480/2580 to
+ 55x80mm^2 which is the working range for the 2580. Reenabled
+ 2400 DPI for 2480/2580.
+
+2005-07-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-mutex.c backend/snapscan-usb.c: Changes to support
+ SANE on ZETA.
+ * backend/snapscan-scsi.c: Fix compiler warnings.
+
+---- FEATURE FREEZE FOR SANE 1.0.16 ---
+
+2005-07-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in backend/Makefile.in tools/Makefile.in: Make sure
+ that all the necessary files will be in the distribution .tar.gz
+ file.
+ * sanei/sanei_scsi.c: Removed "const" to make gcc on OS/2 happy.
+ * NEWS: Updated.
+
+2005-07-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/sp15c.c: Better 4->8 bit depth expansion algorithm (from
+ Mattias Ellert <mattias.ellert@tsl.uu.se>).
+ * sanei/sanei_usb.c: Fixed comment (we still use 30 seconds USB
+ timeout by default).
+ * README.zeta configure configure.in Makefile.in backend/Makefile.in
+ backend/artec_eplus48u.h backend/dll.c backend/plustek-pp_scan.h
+ doc/Makefile.in frontend/saned.c include/sane/config.h.in
+ po/Makefile.in sanei/sanei_config.c sanei/sanei_config2.c
+ sanei/sanei_init_debug.c sanei/sanei_pio.c sanei/sanei_thread.c
+ sanei/sanei_usb.c: Changes to support SANE on ZETA. Not all
+ patches have been applied yet, but it's a start. The backends
+ are not installed as shared libs but as add-ons, which are shared libs
+ but in a specific folder in [/system|~]/config/add-ons/ named SANE/.
+ The install target has been changed to account for this,
+ Some files don't exist in BeOS/ZETA (ipc.h, ...).
+ Backend function names get a prefix, I suppose to avoid namespace clashes.
+ Though we do have a libdl to implement dl_open, the native way is prefered.
+ Added a --with-docdir= configure arg.
+ BeOS has a broken get[name|addr]info() from bind. This is fixed in ZETA R1.
+ libtool needs -no-undefined. Various VPATH fixes.
+ Check for <be/drivers/USB_scanner.h>, but not used yet.
+ No S_IFSOCK (sockets are fds to /dev/net/api). Stub pio code, untested.
+ Patch from Fran�is Revol <revol@free.fr>.
+
+2005-07-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc:
+ updated comments for Epson 1670, 2480 and 2580
+
+2005-07-15 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.h, backend/avision.c, doc/sane-avision.man,
+ doc/descriptions/avision.desc: updated the Avision backend with the
+ latest off-site maintained version: fixed segmentation faults for
+ some modes, many many new devices, two different duplex modes
+ are supported, vast speedup of multi page batch scans, buttons as well
+ a 7-segment LED readout and some quirks for old scanners not filling
+ all fields
+
+2005-07-15 Rene Rebe <rene@exactcode.de>
+
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Added support to set
+ the USB timeout.
+
+2005-07-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_high.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES
+ doc/gt68xx/gt68xx.TODO: Changed resolution from 75 to 100 dpi
+ and changed 16 bit/color to 12 based on a user report for the
+ Visioneer OneTouch 7300. Updated .desc. Moved check for stable
+ lamp to its own function. Mustek ScanExpress A3 USB: Use CIS
+ calibration. Use lamp warmup. Fixed CCD on GT6801 scanning (color
+ scanning was broken due to a change in motormode_2.
+
+2005-07-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/sane-backends.bg.po po/sane-backends.cs.po
+ po/sane-backends.da.po po/sane-backends.de.po
+ po/sane-backends.es.po po/sane-backends.fi.po
+ po/sane-backends.fr.po po/sane-backends.it.po
+ po/sane-backends.nl.po po/sane-backends.no.po
+ po/sane-backends.pl.po po/sane-backends.pt.po
+ po/sane-backends.ru.po po/sane-backends.sv.po: Updated Danish
+ translation (from Mogens Jaeger <mogensjaeger@get2net.dk>). Made
+ sure that no errors occur because xgettext/xmsgfmt think that
+ "%" is a C format string. Regenerated all po files.
+
+ * configure configure.in include/sane/config.h.in: Make sure that
+ getopt is not built on OS/2 (from Franz Bakan <fbakan@gmx.net>).
+
+2005-07-07 Frank Zago
+
+ * AUTHORS backend/leo.c backend/leo.h backend/matsushita.c
+ backend/matsushita.h backend/sceptre.c backend/sceptre.h
+ backend/teco1.c backend/teco1.h backend/teco2.c backend/teco2.h
+ backend/teco3.c backend/teco3.h frontend/tstbackend.c: new
+ email address.
+
+2005-07-07 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Fixed scanarea calculation.
+ * backend/plustek-usbshading.c: Fixed fine-white calibration.
+
+2005-07-05 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions-external/epkowa.desc: Updated according to
+ the info provided by Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>
+
+2005-07-04 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.[ch] backend/plustek-usbscan.c
+ backend/plustek-usbshading.c backend/plustek-usbdevs.c
+ backend/plustek-usbdevs.c backend/plustek-usbimg.c
+ backend/plustek-usbmap.c backend/plustek-usbhw.c
+ backend/plustek-usbcal.c backend/plustek-usb.[ch]:
+ Added button support, did some cleanup, added IPC between
+ reader- and parent-process.
+
+2005-07-04 ULrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * inserted a definition for SSIZE_MAX in backend/canon.h
+
+2005-07-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/sm3600.c: Don't check the result of
+ usb_find_busses(). Based on patch from Julien BLACHE
+ <jb@jblache.org>.
+ * doc/descriptions/genesys.desc: Used
+ "Medion/Lifetec/Tevion/Cytron" as manufacturer as in the other
+ backends. Used "ScanJet 2300C" as model name as in other
+ backends.
+ * doc/descriptions/unsupported.desc: Added links to scanners with
+ GL646 and GL841 chipsets. Moved all unsupported scanners from
+ doc/descriptions-external/genesys.desc to unsupported.desc. Minor
+ fixes for other scanners.
+ * doc/descriptions-external/genesys.desc: Removed. Scanners have
+ been moved to doc/descriptions/genesys.desc and
+ doc/descriptions/unsupported.desc.
+ * doc/sane-genesys.man: Typo/formatting fixes.
+ * NEWS: Updated for sane-backends 1.0.16.
+
+2005-07-01 Ulrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * restored the actual version of the Canon-SCSI backend
+ (backend/canon.c, canon-sane.c canon-scsi.c canon.h)
+
+2005-06-30 St�hane Voltz <stefdev@modulonet.fr>
+
+ * configure.in AUTHORS backend/dll.conf doc/sane.man doc/Makefile.in
+ po/Makefile.in : Fixed forgotten modifications when adding the
+ genesys backend
+
+2005-06-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * tools/RenSaneDlls.cmd backend/dll.c: Fixed OS/2 restriction for
+ dlopening DLLs on OS/2, as it only works for 7.3 filenames for
+ some reason (patches by Franz Bakan <fbakan@gmx.net>.
+
+2005-06-27 St�hane Voltz <stefdev@modulonet.fr>
+
+ * configure doc/sane-genesys.man doc/sane-genesys.man doc/Makefile.in
+ doc/descriptions/genesys.desc doc/descriptions/unsupported.desc
+ backend/genesys_low.h backend/genesys_devices.c
+ backend/genesys_gl841.c backend/genesys_gl646.c backend/genesys.h
+ backend/genesys.conf backend/genesys.c backend/Makefile.in
+
+2005-06-27 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Fixed "double free" problem in sane_exit.
+ * doc/plustek/Plustek-USB.changes: Update.
+
+2005-06-26 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.sv.po: Update Swedish translation
+ * tools/Makefile.in: link sane-desc to $(LIBLIB)
+
+2005-06-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Samsung SCX-4216F
+ (supported by samsung backend). Dell 1600n has also network
+ connection.
+ * doc/descriptions-external/brother.desc: Removed misleading
+ comment.
+ * doc/descriptions-external/samsung.desc: Added several models,
+ updated others.
+ * doc/descriptions.txt: Added "Ethernet" to list of possible
+ interfaces.
+
+2005-06-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon CanoScan LiDE
+ 500F.
+
+2005-06-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Genius ColorPage-SF600.
+ * doc/descriptions-external/brother2.desc: New. Listed scanners
+ supported by the new external brother2 backend.
+ * doc/descriptions-external/brother.desc: Fixed comments.
+
+2005-05-30 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added CX-4600
+
+2005-05-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/samsung.desc: Status of Samsung
+ SCX-4100 is "good" asit's reported to work.
+ * doc/sane-usb.man doc/sane.man: Updated, mostly concerning kernel
+ scanner driver (deprecated). Minor fixes.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.c
+ backend/gt68xx_low.h doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES
+ doc/gt68xx/gt68xx.TODO:
+ Start exposure with the settings from the scanner entry. CIS
+ Calibration and exposure uses a broader spectrum now. Expsoure
+ limit is increased to 50 loops. Genius Vivid 4x is reported to
+ work so the UNTESTED label is removed now. Visioneer 7300 is
+ reported to work so the UNTESTED label is removed now. Genius
+ ColorPage Vivid 1200XE: Removed UNTESTED label. Fixed
+ resolutions. Adjusted margins. Fixed color order. Fixed
+ linedistance. Adjusted AFE. Mustek ScanExpress 1248 UB: Fixed
+ margins. Adjusted AFE. Adjusted exposure. Adjusted
+ gamma. Changed status to "complete". Mustek BearPaw 2400 CU
+ Plus: Adsusted exposure and AFE parameters. Hopefully stripes
+ and similar trouble are gone now. Mustek BearPaw 1200 CU:
+ Increased exposure to avoid vertical lines. Updated manual page.
+
+2005-05-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Avision DS310F. Added link
+ for the UMAX Astra 4000. Fixed missing link for Genius
+ ColorPage-Slim 1200 USB2.
+
+2005-05-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/net.tex doc/sane.tex: Mention RPC codes explicitely and
+ explain what request and reply means. based on patch from
+ Johannes Berg <johannes@sipsolutions.net>.
+
+2005-05-25 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/descriptions/mustek_pp.desc: added scanner
+
+2005-05-23 Julien Blache <jb@jblache.org>
+ * doc/sane-find-scanner.man, doc/gamma4scanimage.man: spelling
+ fixes from A Costa.
+
+2005-05-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Konica Minolta Dimage
+ 5400 2. Fixed bus type for Mustek 800 II EP.
+ * doc/descriptions-external/genesys.desc: Changed status of Medion
+ MD 6471 to "basic".
+
+2005-05-22 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c:
+ Disabled 2400 DPI for Epson 2480 due to user report of
+ broken scanner
+
+2005-05-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_generic.h
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6801.h
+ backend/gt68xx_gt6816.c backend/gt68xx_gt6816.h
+ backend/gt68xx_high.c backend/gt68xx_high.h backend/gt68xx_low.c
+ backend/gt68xx_low.h backend/gt68xx_mid.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES
+ doc/gt68xx/gt68xx.TODO:
+ Mustek BearPaw 1200 CU Plus model 0x21b works now. Fixed
+ firmware and offset settings. Calibration is not completely ok
+ yet, however. Code cleanup for setup_scan (only one function
+ for all chipsets). Simplified line mode/pixel mode setting
+ Updated TODO. Mustek BearPaw 2448 TA Plus is now only
+ "basic". Too much trouble for "good". Removed option "fast
+ preview". By default for preview mode 8 bits/pixel are used.
+ Fixed indentation. Full scan really scans from y=0 on gt6816
+ scanners now.
+ * po/sane-backends.bg.po po/sane-backends.cs.po
+ po/sane-backends.da.po po/sane-backends.de.po
+ po/sane-backends.es.po po/sane-backends.fi.po
+ po/sane-backends.fr.po po/sane-backends.it.po
+ po/sane-backends.nl.po po/sane-backends.no.po
+ po/sane-backends.pl.po po/sane-backends.pt.po
+ po/sane-backends.ru.po po/sane-backends.sv.po: Regenerated
+ translation files. Updated German translation.
+
+2005-05-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/backend-writing.txt: Minor updates and line-wrap fixes.
+ * doc/descriptions/unsupported.desc: Added Kodak i30 and Minolta
+ Dual Scan IV. Updated link to Konica Minolta website.
+
+2005-05-15 frank <sane at zago net>
+
+ * tools/Makefile.in: remove superflous libraries for sane-desc
+ * doc/descriptions/matsushita.desc: changed some scanner status from
+ good to minimal
+ * doc/descriptions/unsupported.desc: added a few Panasonic scanners.
+
+2005-05-13 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added Epson Stylus RX620
+ (04b8/0811). From Mike Talbot.
+
+2005-05-11 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-pp_misc.c: Applied patch (see bug #301605).
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+ * backend/plustek-pp.c: Bumped build number.
+
+2005-05-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_access.c: Added PATH_MAX, in case it's not defined
+ by any header (i.e. OS/2).
+
+2005-05-07 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * README.darwin: updated the section about libusb, since all known
+ bugs have now been fixed in the libusb CVS.
+
+2005-05-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES
+ doc/gt68xx/gt68xx.TODO: Plustek OpticSlim 2400: Fixed list of
+ resolutions. That fixed the preview. Removed "untested"
+ warning. Adjusted scan area. Updated gt68xx.TODO. Find firmwares
+ independent of capitalization (bug #301580).
+
+2005-05-07 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug/libsane.usermap: Added Microtek ScanMaker 3700
+ (05da/40cb). From Ian Beckwith.
+
+2005-05-06 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * backend/qcam.c -indent -gnu, bugreport 300128 free (devlist) added,
+ DEBUG output added and some small fixes.
+
+2005-05-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Dell 922.
+ * backend/mustek.c backend/mustek.h doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Added options to set the time after
+ which the lamp of the A3 Pro is shut off and to shut it off
+ immediately.
+
+2005-05-02 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/gphoto2.c: Fix core dump when no port is specified in
+ the gphoto2 config file. (bug #301552)
+
+2005-04-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/sp15c.desc: Added ScanPartner 600C (bug
+ #301528).
+ * doc/descriptions/unsupported.desc: Removed several Brother
+ scanner which are supported by the brother backend now.
+ * doc/descriptions-external/brother.desc: Fixed link.
+
+2005-04-28 Julien Blache <jb@jblache.org>
+
+ * backend/v4l.c: duplicate capability.name in attach() so that
+ each device is listed with its actual name, not with the name of
+ the last discovered device. Reported by Andreas Hartmann.
+
+2005-04-28 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * frontend/scanimage.c: Added missing braces
+
+2005-04-27 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Added UMAX Astranet ia101.
+
+2005-04-26 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug/libsane.usermap: Added Epson Stylus CX3650
+ (04b8/080e), from Daniel Sobe.
+
+2005-04-25 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * include/sane/sanei_pp.h, sanei/sanei_pp.c: Added outb_eppdata
+ functionality (thanks to Anderson Lizardo).
+ * backend/plustek-pp_procs.h, backend/plustek-pp_io.c,
+ backend/plustek-pp_misc.c: Fixed compilation problem for kernel
+ module with gcc-3.4 compiler.
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+ * backend/plustek-pp.c: Bumped build number.
+
+2005-04-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug/libsane.usermap: Fixed Minolta Scan Dual III entry
+ (bug #301512).
+ * doc/descriptions/mustek.desc: Added Mustek TwainScan II SP (bug
+ #301217).
+ * doc/descriptions-external/viceo.desc: Added Primax Colorado 2200
+ USB.
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA MP110.
+ * AUTHORS: Marked Kazuya Fukuda as active.
+
+2005-04-23 Julien Blache <jb@jblache.org>
+
+ * LICENSE: Add an FAQ section.
+ * tools/hotplug/libsane.usermap: Added Genius ColorPage Vivid3xe
+ (0458/2017), from Ramiro Aceves through Debian BTS.
+
+2005-04-18 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-usbhw.c, backend/plustek-usbscan.c: Fixed
+ problem, that has been reported in conjunction with backtracking
+ and sensor-speedup option.
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+
+2005-04-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Added and updated
+ several scanners.
+
+2005-04-15 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * sanei/sanei_usb.c More debug info for control and isochronous mode
+ Detection added for endpoints for configurations, interface and
+ altsetting numbers > 0
+ Routine added for changing configuration, interface or altsetting
+ number
+ sanei_usb_set_configuration
+ sanei_usb_claim_interface
+ sanei_usb_release_interface
+ sanei_usb_set_altinterface
+ * include/sane/sanei_usb.h headers and text added for
+ sanei_usb_set_configuration
+ sanei_usb_claim_interface
+ sanei_usb_release_interface
+ sanei_usb_set_altinterface
+ * frontend/scanimage.c added -B option buf size
+ split up printf command to remove warning ISO C89
+ patch for bugreport 300160, ranges for width and height are wrong
+ * doc/scanimage.man added text -B option buf size
+
+2005-04-13 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/hp-option.c: Add missing SANE_I18N
+ * po/sane-backends.*.po: Regenerate .po files accordingly
+ * po/sane-backends.sv.po: Update Swedish translations
+
+2005-04-12 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * Various man page fixes: sane-agfafocus.man, sane-apple.man,
+ sane-artec.man, sane-artec_eplus48u.man, sane-avision.man,
+ sane-bh.man, sane-canon_pp.man, sane-coolscan.man,
+ sane-coolscan2.man, sane-dll.man, sane-epson.man, sane-fujitsu.man,
+ sane-hp.man, sane-leo.man, sane-matsushita.man, sane-microtek2.man,
+ sane-mustek.man, sane-mustek_pp.man, sane-mustek_usb.man,
+ sane-nec.man, sane-niash.man, sane-pie.man, sane-plustek.man,
+ sane-plustek_pp.man, sane-sceptre.man, sane-scsi.man, sane-sharp.man,
+ sane-sm3600.man, sane-sm3840.man, sane-sp15c.man, sane-teco1.man,
+ sane-teco2.man, sane-teco3.man, sane-test.man, sane-u12.man,
+ sane-umax.man, sane-umax1220u.man, sane-umax_pp.man, sane.man,
+ saned.man
+
+2005-04-11 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * acinclude.m4, configure.in, configure: the locking feature will
+ now be disabled, when the selected group could not be set.
+ The configuration script should not fail any longer.
+
+2005-04-10 Julien Blache <jb@jblache.org>
+
+ * backend/hp5400_xfer.h, backend/hp5400_sanei.c, backend/hp5400.c:
+ make non-SANE-standard functions static.
+
+2005-04-10 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * backend/mustek_pp.c, backend/mustek_pp.conf, sanei/sanei_pa4s2.c,
+ include/sane/sanei_pa4s2.h, doc/sane-mustek_pp.man: added global
+ option "no_epp" to work around a known bug in the linux parport
+ code.
+
+2005-04-02 Julien Blache <jb@jblache.org>
+
+ * doc/sane.man: typo fix from A Costa.
+
+2005-04-01 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * README: Added some info about the --enable-locking switch.
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Moved some Plustek
+ devices over to the genesys descriptions.
+ * tools/hotplug/libsane.usermap: Added some Plustek devices.
+ * mkinstalldirs: Added -o and -g options for changing the
+ owner and group of an installed directory.
+ * acinclude.m4, configure.in, configure: Added --enable-locking
+ and --with-group to enable device locking via sanei_access-lib
+ and to specify the group of the locking directory.
+ * include/sane/config.h.in: ENABLE_LOCKING has been added
+ by automake/autoconf.
+ * backend/Makefile.in: Added installation of
+ $(localstatesanedir)/lock/sane, were the lockfile should go to.
+ Also added linking of sanei_access to the plustek backend.
+ * include/Makefile.in: Added sane/sanei_access.h.
+ * sanei/Makefile.in: Added sanei_access.c.
+ * include/sane/sanei_access.h sanei/sanei_access.c: Initial checkin.
+
+2005-03-31 Julien Blache <jb@jblache.org>
+
+ * doc/scanimage.man: fix typos, patch from A Costa.
+
+2005-03-20 Earle F. Philhower III <earle@ziplabel.com>
+
+ * backend/sm3840_scan.c: Big-endian graymode fix
+
+2005-03-17 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/descriptions-external/samsung.desc added
+
+2005-03-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Microtek ScanMaker
+ 4800 (supported by sm3840 now).
+
+2005-03-16 Earle F. Philhower III <earle@ziplabel.com>
+ * backend/sm3840.c backend/sm3840_scan.c backend/sm3840.conf
+ backend/Makefile.in doc/descriptions/sm3840.desc
+ doc/sane-sm3840.man: Added ScanMaker 4800 USB ID and
+ documentation, fixed PPC endianness problems, fixed
+ Makefile dependencies for sm3840 driver
+
+2005-03-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Added and updated
+ various scanners.
+
+2005-03-04 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/sane-teco2.man: text update
+ backends/teco2: use of __unused__
+
+2005-03-03 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug-ng/libsane.hotplug: add missing quote in the grep line.
+
+2005-03-02 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug-ng/libsane.hotplug: allow for several spaces
+ between fields in the db file.
+
+2005-02-28 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug-ng/libsane.hotplug: replace \t by [[:space:]] when
+ grepping for the device in the db file.
+
+2005-02-21 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug-ng: added new hotplug/hotplug-ng hook, with
+ scripts and documentation.
+
+2005-02-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Genius
+ ColorPage-Vivid Pro II, now in external backend. Added Visioneer
+ 9000.
+ * AUTHORS configure configure.in backend/Makefile.in
+ backend/dll.conf backend/sm3840.c backend/sm3840.conf
+ backend/sm3840.h backend/sm3840_lib.c backend/sm3840_lib.h
+ backend/sm3840_params.h backend/sm3840_scan.c doc/Makefile.in
+ doc/sane-sm3840.man doc/sane.man doc/descriptions/sm3840.desc:
+ Added sm3840 backend (from "Earle F. Philhower, III"
+ <earlephilhower@yahoo.com>).
+ * doc/descriptions-external/sm3840.desc: Removed (backend included
+ in SANE).
+ * NEWS: Updated.
+
+2005-02-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+* doc/descriptions-external: Added new external backend geniusvp2.
+
+2005-02-10 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added CX-3600 and 3650
+ doc/sane-epson.man, backend/epson.conf: Added information about
+ GT-6500 (bug #301100)
+
+2005-02-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.conf
+ Added IDs for Benq 5250C and 5000S
+
+2005-02-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_pp.c: Cleanup, uses now static array for parport
+ management instead of dynamically allocated. Fixes at least a
+ potential memory leak.
+
+2005-02-06 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/unsupported.desc doc/descriptions/snapscan.desc:
+ Renamed "Benq" to "Benq (Acer)" for better access through the
+ scanner search engine. Fixes bug #301158
+
+2005-02-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added several scanners. Minor
+ fixes.
+ * doc/descriptions-external/sm3840.desc: Added new external
+ backend sm3840.
+ * doc/descriptions-external/brother.desc: Updated status.
+ * po/Makefile.in po/sane-backends.pl.po: Added Polish translation
+ (from Jerzy Szczudlowski
+ <jerzy-guest@users.alioth.debian.org>). See bug #301054.
+
+2005-02-04 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * tools/hotplug/libsane.usermap: Added Epson CX6600 based on patch
+ submitted by Aurelien Jarno <lists@aurel32.net>.
+
+2005-02-03 Ulrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_xfer.c:
+ * tools/hotplug/libsane.usermap:
+ added ID for Silitek-HP-ScanJet-3400c-Clone
+
+2005-01-19 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/coolscan.c: added initilization of dev->scanning = SANE_FALSE
+
+2005-01-18 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h: Added ID for Benq 5250C
+
+2005-01-16 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Added IDs for RX-425 (from bug report #301114)
+ * doc/descriptsions/epson.desc: Added RX-425
+
+2005-01-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added UMAX Astraslim
+ 6000. Added Trust SCSI Scan 19200 -Excellence Series-. Added
+ ColorPage-Vivid Pro II.
+ * tools/hotplug/libsane.usermap: Added Epson Stylus RX425 based on
+ bug report #301114.
+ * doc/sane-agfafocus.man doc/sane-artec.man: Fixed some macros
+ (patch from esr@thyrsus.com).
+
+2005-01-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Genius ColorPage-Slim
+ 1200 USB2.
+ * doc/descriptions-external/genesys.desc: Added Canon Lide 40.
+ * doc/descriptions-external/brother.desc: Added several scanners
+ and updated the status of others based on user comments.
+
+2005-01-12 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug/libusbscanner: use sysfs to get the device number,
+ instead of guessing (it ended up being wrong in a number of
+ cases...). Fix from Ubuntu, transmitted by Martin Pitt.
+
+2005-01-12 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number. Copyright Update.
+ * backend/plustek-usbscan.c backend/plustek-usbshading.c:
+ Using now PhyDpi.y as selector for the motor MCLK setting.
+ Copyright Update.
+ * backend/plustek-usbdevs.c:
+ Tweaked motor settings for EPSON and CANON1200. Copyright Update.
+ * backend/plustek-*.[ch]: Copyright Update.
+
+2005-01-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Guillemot scanner.
+
+2005-01-09 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: "flaming hack to get USB scanners working without timeouts
+ under linux" submitted by "Steve" (in comment to bug #300830)
+ * doc/descriptions/epson.desc, doc/sane-epson.man:
+ Added SCSI version of GT-5000 to supported list.
+
+2004-12-29 Julien Blache <jb@jblache.org>
+ * tools/sane-find-scanner.c: Added a hint about switching the
+ scanner on and connecting it to the computer before doing
+ anything.
+
+2004-12-26 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/descriptions-external/hpaio.desc join two lines so html
+ conversion possible
+ doc/descriptions-external/stv680.desc added two webcams with
+ different usb vid and pid
+
+2004-12-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added several scanners.
+
+2004-12-18 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c backend/epson_usb.c: Added USB IDs for
+ CX-3650 and CX-4600 and updated version number.
+
+2004-12-15 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/descriptions-external/hpaio.desc stv680.desc
+ Info new external backends
+
+2004-12-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan-options.c:
+ Added quality calibration for Epson 2480 (implementd by Simon Munton)
+
+2004-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx_devices.c: Disabled stop_scan command for Mustek
+ BearPaw 2448 TA Plus.
+
+2004-12-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-gphoto2.man doc/sane-microtek2.man: Fixed minor
+ glitches based on patch from Eric S. Raymond <esr@thyrsus.com>.
+ * doc/descriptions/unsupported.desc: Added Benq 320p.
+
+2004-12-04 Julien Blache <jb@jblache.org>
+ * tools/hotplug/libsane.usermap: Added Epson Perfection 4870
+ Photo, vendor 0x04b8 product 0x0128.
+
+2004-12-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c: Applied fix for allocation of gamma tables
+ (thanks to Simon Munton)
+
+2004-12-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/unsupported.desc: removed Epson Perfection 1270
+
+2004-12-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.c backend/snapscan-scsi.c
+ backend/snapscan-options.c doc/descriptions/snapscan.desc:
+ Added support for Epson Perfection 1270
+
+2004-12-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/umax1220u.desc doc/descriptions/unsupported.desc
+ doc/descriptions-external/genesys.desc: Added several scanners. Moved
+ UMAX 2100U to umax1220u.desc. Moved Plustek S(T)12 to unsupported.desc.
+
+2004-11-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother.desc. Updated comments. 9160 works.
+
+2004-11-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Updated/added several scanners.
+
+2004-11-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-usb.c: Fixed problem, when builing supported
+ and connected device list.
+
+2004-11-19 Rene Rebe <rene@exactcode.de>
+
+ * sanei/sanei_usb.c configure.in: use usb_interrupt_read instead of
+ usb_bulk_read for sanei_usb_read_int. Fixes bug #300878. Added a
+ missing DBG output in sanei_usb_read_int. Check for
+ usb_interrupt_read to make sure, we have at least version 0.1.8.
+
+2004-11-19 Rene Rebe <rene@exactcode.de>
+
+ * backend/avison.c doc/descriptions/avision.desc
+ doc/descriptions/unsupported.desc: just added new IDs including
+ moving the HP 82xx to the avision backend
+
+2004-11-19 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c backend/plustek-usb*: Major update, see
+ doc/plustek/Plustek-USB.changes. Esp. improved support for multiple
+ devices and autodetection.
+ * doc/plustek/Plustek-USB.changes: Update.
+ * doc/descriptions/plustek.desc: Updated release number.
+
+2004-04-15 St�hane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: non i386 linux compilation fix,
+ 1220P gray levels scan hang fix, 1220P color calibration tuning.
+
+2004-11-14 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * snapscan-sources.c: Applied patch by Julien Blache to change
+ ch_past_init from SANE_Int to SANE_Bool
+
+2004-11-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ backend/gt68xx_gt6801.c backend/gt68xx_gt6816.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Fixed test
+ to move home sensor at the start of scan. Fixed gray mode
+ linemode test. That stopped e.g. the Plustek OpticPro U 16 B from
+ working in gray mode.
+
+2004-11-13 Frank Zago <fzago at austin dot rr dot com>
+
+ * include/sane/sanei_backend.h: Added compiler attribute __unused__
+ for unused variables/functions.
+
+ * backend/leo.c backend/teco3.c backend/matsushita.c
+ backend/sceptre.c backend/teco1.c: use __unused__
+ * sanei/sanei_wire.c sanei/sanei_pa4s2.c sanei/sanei_scsi.c:
+ fixes for 64 bits platforms.
+ * backend/sp15c-scsi.h backend/sp15c.h backend/dc210.c backend/dc210.h:
+ fixes some warnings.
+
+2004-11-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/v4l.c: 64 bit fix from Frank Zago <fzago at austin dot
+ rr dot com>.
+
+2004-11-13 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug/libsane.usermap: Added Epson Stylus Photo RX500,
+ Epson Stylus Photo RX600 and Minolta Scan Dual II.
+
+2004-11-10 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * snapscan-sources.c: First implementation of deinterlacer for epson
+ scanners at high resolutions (thanks to Brad Johnson)
+
+2004-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Updated version. Enabled compilation
+ warnings.
+ * doc/releases.txt: Updated according to current practice.
+
+Older entries can be found in ChangeLog-1.0.15.
diff --git a/ChangeLogs/ChangeLog-1.0.17 b/ChangeLogs/ChangeLog-1.0.17
new file mode 100644
index 0000000..1e4e33c
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.17
@@ -0,0 +1,1011 @@
+****** Release of sane-backends 1.0.17. End of code freeze ******
+
+2005-12-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added link to Lexmark X6170.
+ * doc/descriptions/gt68xx.desc: Added Trust Direct WebScan 19200
+ (reported on sane-devel).
+ * backend/Makefile.in: Added missing genesys_conv.c and
+ genesys_conv_hlp.c to DISTFILES. Without this change the files
+ wouldn't be part of the archive.
+ * configure configure.in: Disabled compilation warnings. Increased
+ version number.
+
+2005-12-17 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added a few new scanners based on
+ messages to the sane-devel mailing list.
+
+2005-12-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated for release.
+
+---- CODE FREEZE FOR SANE 1.0.17 ---
+
+2005-12-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/hp3500.desc: Added .desc file for new
+ external backend hp3500 which provides support for the HP ScanJet
+ 3500 series (from Troy Rollo <sane@troy.rollo.name>).
+ * doc/descriptions/unsupported.desc: Removed HP 3500, 3530, and
+ 3570 (now in hp3500.desc).
+
+2005-12-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother-mfc4600.desc: Added .desc file
+ for (older) external backend for Brother MFC 4600 (USB version).
+ * doc/descriptions/unsupported.desc: Added Lexmark X6170. Removed
+ Brother MFC 4600 USB.
+ * backend/gt68xx.c backend/gt68xx_devices.c backend/gt68xx_high.c
+ backend/gt68xx_low.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO: Silenced
+ non-fatal warnings/error messages. Several fixes for avoiding
+ freezes/timeouts after cancelling a scan. Several fixes for
+ warming up of lamp. Decreased scan width of Plustek OpticPro
+ 1248U.
+
+2005-12-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-pp_tpa.c backend/u12-tpa.c: Fixed nasty
+ compiler warnings.
+
+2005-12-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Brother
+ MFC-7300c. Removed Primax Colorado 2400U (now in
+ primascan.desc).
+ * doc/descriptions-external/primascan.desc: New external backend
+ for Primax Colorado 2400U.
+
+2005-12-07 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_acces.c: Fixed problem, when the device name contains
+ one or more path-separators. These characters are now converted.
+ The problem occurs on 2.4 based installations as well as on OpenBSD.
+
+2005-12-06 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: removed forgotten left-over of
+ an experiment .
+
+2005-12-06 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: added AF init in powersave, fixed
+ long-standing bug related to a data read timeout between
+ distinct scanning sessions
+
+2005-12-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/genesys.conf: Enabled Canon LiDE 60 which was disabled
+ for safety reasons. Bugs are fixed now.
+ * doc/descriptions/genesys.desc: Changed status of Canon LiDE 50
+ and 60 to "good". Added comment for untested LiDE 40 to report any
+ success/failure.
+ * AUTHORS: Marked Fred Odendaal as active maintainer.
+ * tools/hotplug/libsane.usermap: Added Epson Perfection 3490.
+
+2005-12-05 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.c backend/avision.conf doc/sane-avision.man:
+ fixed more typos in comments and debug output, removed obsolete
+ options from the parser, example avision.conf and manual page.
+ Fixed 12 Bit gray and color modes to actually work as well as
+ software CCD line-difference correction. Minimal scan resolutions
+ have been slightly adapted for some ASICs.
+
+2005-12-05 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys.c: removed usage of current_setup in functions
+ where it is not necessarily initialized. Modified shading
+ calibration to not use fixed stripe sizes. Fixed memory
+ corruption while calculating shading data. Fixed read sizes to
+ be multiples of 256. Fixed stagger/line distance
+ correction. Fixed line shrinking to correctly update data
+ buffers. Bumped BUILD number.
+ * backend/genesys.c backend/genesys_conv.c: Added gray to lineart
+ conversion.
+ * backend/genesys.c backend/genesys_conv_hlp.c: Modified calling
+ parameters to stagger/line distance correction filter to better
+ describe its inner working.
+ * backend/genesys_devices.c: Slowed down motor timings for
+ LiDE 35/40/50/60. Removed untested message for LiDE 35/40/50/60.
+ * backend/genesys_gl646.c: Fixed bug for odd pixel count. Added
+ support for gray to lineart conversion.
+ * backend/genesys_gl841.c: Fixed words_per_line calculation. Added
+ support for gray to lineart conversion(not used). Fixed problem
+ with scanners not backtracking while scanning calibration area
+ leading to scanning part of document area.
+
+2005-12-05 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c: small bugfix for Benq5150
+
+2005-12-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA MP170.
+
+2005-12-04 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.c backend/avision.h: updated the Avision backend
+ from BUILD 167 to 179, including support for HP 5370, AV600U,
+ AV210C2, AV220C2, et. al. The USB i/o paths got hardened, and a
+ lot of fixes as well es enhancements and optimizations where added
+ and a lot of typos, mostly in debug output and comments, got fixed.
+ The "Line Art" mode was renamed to "Lineart" to match the other
+ backends.
+
+2005-12-03 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Added id for CX4200
+
+2005-12-04 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.c backend/snapscan-scsi.c
+ backend/snapscan-options.c: Some fixes for Benq 5150
+
+2005-12-03 Peter Fales <peter@fales-lorenz.net>
+ * backend/gphoto2.c: Cosmetic changes to debug messages
+
+2005-12-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-sources.c: Another fix for lineart mode for the
+ Epson 3490 @ 3200 DPI - this time tested
+ * backend/snapscan.c: Change version number to 1.4.50
+
+2005-12-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added link for Corex Cardscan
+ 500.
+
+2005-11-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added UMAX Astra 4100.
+ * tools/hotplug/libsane.usermap: Added Epson Stylus CX4200.
+
+2005-11-28 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * sanei/sanei_pa4s2.c: incorrect test of a bit mask.
+
+2005-11-28 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/umax_pp_low.c: ifdef'ed forgottent debug statements
+
+2005-11-28 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/umax_pp_low.c: fixed 'blue tint' on scanning area border
+ by increasing shading coefficient on dark areas
+
+2005-11-26 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-sources.c: Fix lineart mode for Epson 3490
+ * doc/descriptions/snapscan.desc: Update status for Benq 5000
+
+2005-11-26 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c: Fix for Benq 5000
+ * backend/snapscan.conf: Replace esfw52.bin with dummy filename entry
+
+2005-11-25 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/artec_eplus48u.conf, backend/snapscan.conf: Use default
+ firmware dirs in config files
+ * doc/sane-artec_eplus48u.man, doc/sane-snapscan.man: Use default
+ firmare dirs in man pages
+
+2005-11-25 Ulrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * backend/canon-sane: fixed usage of an uninitialized variable
+
+2005-11-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.da.po: Updated Danish translation (from Mogens
+ Jaeger <mogensjaeger@get2net.dk>).
+
+2005-11-25 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-sources.c: Fix for grayscale / linart for Epson 3490
+ at 3200 DPI
+
+2005-11-25 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.ru.po: Fixing some fuzzies
+
+2005-11-24 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * doc/gamma4scanimage.man, doc/sane-abaton.man, doc/sane-agfafocus.man,
+ doc/sane-apple.man, doc/sane-artec.man, doc/sane-avision.man,
+ doc/sane-bh.man, doc/sane-canon.man, doc/sane-canon630u.man,
+ doc/sane-config.man, doc/sane-coolscan.man, doc/sane-coolscan2.man,
+ doc/sane-dc210.man, doc/sane-dc240.man, doc/sane-dc25.man,
+ doc/sane-dmc.man, doc/sane-epson.man, doc/sane-find-scanner.man,
+ doc/sane-fujitsu.man, doc/sane-genesys.man, doc/sane-gphoto2.man,
+ doc/sane-gt68xx.man, doc/sane-hp.man, doc/sane-hp4200.man,
+ doc/sane-hp5400.man, doc/sane-ibm.man, doc/sane-leo.man,
+ doc/sane-lexmark.man, doc/sane-ma1509.man, doc/sane-matsushita.man,
+ doc/sane-microtek.man, doc/sane-microtek2.man, doc/sane-mustek.man,
+ doc/sane-mustek_pp.man, doc/sane-mustek_usb2.man, doc/sane-nec.man,
+ doc/sane-net.man, doc/sane-niash.man, doc/sane-pint.man,
+ doc/sane-plustek.man, doc/sane-plustek_pp.man, doc/sane-ricoh.man,
+ doc/sane-s9036.man, doc/sane-sceptre.man, doc/sane-sharp.man,
+ doc/sane-snapscan.man, doc/sane-sp15c.man, doc/sane-st400.man,
+ doc/sane-tamarack.man, doc/sane-teco1.man, doc/sane-teco2.man,
+ doc/sane-teco3.man, doc/sane-u12.man, doc/sane-umax1220u.man,
+ doc/sane-umax_pp.man, doc/sane-usb.man, doc/sane-v4l.man,
+ doc/sane.man, doc/saned.man, doc/scanimage.man: man page fixes
+
+2005-11-23 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c: Disable bilevel colour / halftoning
+ for Epson 3490
+
+2005-11-23 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/Makefile.in: added "artec_eplus48u" to FIRMWARE_DIRS
+
+2005-11-22 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.sv.po: Updated Swedish translation
+ * sanei/sanei_scsi.c: Added some debugging. Fixed some varnings
+
+---- FEATURE FREEZE FOR SANE 1.0.17 ---
+
+2005-11-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/genesys.c backend/genesys_devices.c
+ backend/genesys.conf: Bumped build number. Changed scanner's
+ name to Canon LiDE 35/40/50. Added Canon LiDE LiDE 60. This scanner
+ is still commented out in genesys.conf. Removed comment sign for
+ Canon LiDE 35/40/50 in genesys.conf.
+ * doc/descriptions/genesys.desc: Added Canon LiDE 35, 40, 50, 60.
+ * doc/sane-genesys.man: Updated concerning gl841 scanners.
+ * doc/descriptions/unsupported.desc: Moved Canon LiDE 35/40/50/60
+ to genesys.desc. Added Canon Pixma MP150, Tevion MD 90070 and
+ Primax Colorado 1200p.
+ * tools/hotplug/libsane.usermap: Added Plustek Opticslim 2400 ids
+ (from Jan Matousek).
+ * NEWS: Updated.
+
+2005-11-19 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_gl841.c backend/genesys_devices.c:
+ Added support for Canon LiDE 35/40/50
+ * backend/genesys.c backend/genesys_low.h
+ backend/genesys_gl646.c: Reworked data conversion
+ process to convert CIS data, added new slope
+ generation variant
+ * backend/genesys_conv.c backend/genesys_conv_hlp.c:
+ Moved conversion filter functions out of
+ backend/genesys.c
+
+2005-11-18 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c: Disable 2400 DPI for
+ Epson 3490, use 1600 DPI instead
+
+2005-11-17 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+ * backend/plustek_pp.c backend/plustek-pp.h
+ backend/plustek-pp_ptdrv.c backend/plustek-pp_wrapper.c:
+ Fixed sizeof(long) issue for 64bit platforms, see
+ bugreport #302195.
+ * backend/plustek_pp.conf: Default config now only tries to
+ access parport using libieee1284.
+
+2005-11-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-options.c
+ backend/snapscan-scsi.c: Enabled quality calibration for the
+ Epson 3490
+ * doc/descriptions/snapscan.desc: Changed status for Epson Perfection
+ 3490 (good) and 3590 (basic)
+
+2005-11-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP Scanjet 4890. Added
+ several Optrox scanners.
+ * doc/descriptions-external/brother.desc: Marked status of
+ MFC-9880 as "unsupported" based on a user's report.
+
+2005-11-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added IOmagic MobileScan
+ USB. Mentioned chips used in the Artec AM12E+.
+ * doc/descriptions-external/hp3770.desc
+ doc/descriptions-external/hp8200.desc: Added clarification
+ concerning status of these backends.
+
+2005-11-10 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+ * backend/snapscan.c backend/snapscan-sources.c: Added
+ deinterlacing for Epson 3490
+ * backend/Makefile.in: added "snapscan" to FIRMWARE_DIRS
+
+2005-11-07 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: M3091/2 lie about gamma dl capability
+
+2005-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/microtek2.desc: Fixed "unmaintained"
+ marker. Added Microtek Scanmaker V6UPL (bug #302464).
+ * tools/check-usb-chip.c: Added detection of rts8822l-01h chipset
+ (patch from Jonathan Bravo Lopez <JKD@JKDSoft.cjb.net>).
+
+2005-11-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Disabled man page link
+ (points to nowhere). Bug #302463.
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA MP130.
+ * doc/sane-hp.man doc/sane-microtek2.man: Fixed links to ppscsi.
+
+2005-11-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * sanei/sanei_usb.c: Fixed output of transfer buffer for
+ usb_read_bulk in OS/2.
+ * backend/snapscan.c backend/snapscan-scsi.c: Fixes for Benq 5000
+ * backend/snapscan-usb.c: Avoid recursive calls of usb_sense_handler
+
+2005-11-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Added support for detecting vendor and
+ product id with FreeBSD kernel scanner driver (based on patch in
+ FreeBSD ports).
+ * README.freebsd: Updated information about USB scanners.
+
+2005-10-31 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan.h
+ backend/snapscan-options.c doc/descriptions/snapscan.desc:
+ Distinguish between 5000/5000E/5000U
+ * backend/snapscan-sources.c: Enable deinterlacer for 5000E/5000U
+ for 1200 DPI
+ * backend/snapscan.conf: Fix names for 5000/5000E/5000U
+
+2005-10-30 Giuseppe Sacco <eppesuig@debian.org>
+
+ * po/*it.po: Updated italian translation
+
+2005-10-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/artec_eplus48u.conf
+ doc/descriptions/artec_eplus48u.desc: Added support for Trust
+ 240H Easy Webscan Gold to artec_eplus48u backend.
+ * Makefile.in acinclude.m4 configure configure.in
+ backend/Makefile.in frontend/Makefile.in lib/Makefile.in
+ sanei/Makefile.in tools/Makefile.in:
+ Run "makedepend" if it's available. This way "make" builds
+ backends correctly even if only included files (e.g. headers) are
+ changed. Don't be too verbose when running makedepend.
+ Create links libsane-*.so.1 to the real library files if the
+ links are not there. This fixes dynamic loading on OpenBSD. The
+ links are not created for MacOS X as they don't work there.
+ Remove any libsane.* links in /usr/local/lib/sane. Such links
+ are created by libtool. As they point to libsane-v4l.so,
+ scanimage -L doesn't find any scanner in case of ld.so
+ misconfigurations.
+ The install target is much quiter now and prints the libtool
+ message only once now.
+ * README.openbsd: Removed comment about broken library links.
+
+2005-10-28 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/*.po: Updated po files, corrected/updated german translation.
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c backend/plustek.h: Added OPTION_SPEEDUP.
+ * backend/plustek-usbdevs.c: Changed high-speed setting for
+ UMAX 3400, due to bugreport #302317.
+ Fixed CanoScan N650U settings (bugreport #302433).
+
+2005-10-25 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c: Tweaked LiDE25 settings.
+ * backend/plustek-usb.c: Let CIS devices use green-channel
+ for gray scans.
+ * backend/plustek-usbcal.c: Fixed segfault condition in fine
+ calibration for gray scanmodes.
+
+2005-10-24 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan.h
+ backend/snapscan-options.c: Fix transparency range for Epson
+ 2480/2580, fix preview for Epson 2580.
+
+2005-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/umax1220u.desc: Marked backend as
+ unmaintained. Used non-broken link.
+
+2005-10-23 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c: Fixes for buffer
+ size in high-res modes by Simon Munton, small changes to delay
+ code.
+
+2005-10-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug/libsane.usermap: Added Epson Stylus DX3850 (from
+ niels_kalle <niels_kalle@web.de>).
+
+2005-10-22 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c: Decreased the maximum number of pixels
+ on a line for CIS scanners a bit to avoid border artifacts.
+
+2005-10-22 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c backend/mustek_pp_cis.h
+ doc/sane-mustek_pp.man: Added an optional engine_delay parameter
+ to work around potential engine instability problems for CIS models.
+
+2005-10-21 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c: Fixed high-speed feature of
+ Canoscan D660U.
+
+2005-10-20 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c: Fixes for 16 bit
+ quality calibration by Simon Munton
+
+2005-10-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 7650 and
+ UMAX Astra 2500.
+ * doc/descriptions-external/brother2.desc: MFC-210C is reported to
+ work.
+ * NEWS: Created entry for sane-backends 1.0.17.
+
+2005-10-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 configure: Fixed check for libpthread functions.
+ * tools/hotplug/libsane.usermap: Added Brother MFC 210C (from
+ Benjamin Mirza <bm1607@yahoo.de>).
+ * doc/descriptions-external/epkowa.desc: Updated for iscan 1.17.0
+ (patch from Olaf Meeuwissen <olaf@member.fsf.org>). Bug #302183.
+
+2005-10-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Marked Michael Herder as not active. No activity since
+ some time, most email addresses bounce, no response to
+ pings. Changed contact address to the only one that doesn't
+ directly bounce.
+ * backend/artec_eplus48u.conf: Added support for UMAX AstraSlim
+ 1200 SE (from Harq al-Ada <nadaban.bogdan at gmail.com>).
+ * doc/descriptions/artec_eplus48u.desc: UMAX AstraSlim
+ 1200 SE is supported. Backend is unmaintained.
+ * doc/descriptions/unsupported.desc: Added HP ScanJet
+ 4850C. Removed UMAX AstraSlim 1200 SE.
+ * backend/gt68xx.c backend/gt68xx_generic.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Minor
+ modifications to sheet-fed scanner support.
+ * backend/mustek_usb2.c backend/mustek_usb2.h
+ backend/mustek_usb2_asic.c backend/mustek_usb2_asic.h
+ backend/mustek_usb2_high.c backend/mustek_usb2_high.h
+ backend/mustek_usb2_reflective.c backend/mustek_usb2_transparent.c
+ doc/descriptions/mustek_usb2.desc
+ doc/mustek_usb2/mustek_usb2.CHANGES:
+ Removed typedefs for DWORD, WORD and so on. Used int, unsigned
+ short, ... directly in the code.
+ * AUTHORS configure configure.in backend/Makefile.in
+ backend/dll.conf backend/lexmark-x1100.c backend/lexmark.c
+ backend/lexmark.conf backend/lexmark.h doc/Makefile.in
+ doc/sane-lexmark.man tools/hotplug/libsane.usermap: Added lexmark
+ backend (from Fred Odendaal <freshshelf@rogers.com>).
+ * frontend/tstbackend.c: Added vendor "Lexmark".
+ * doc/sane.tex: Added vendor "Lexmark". Used current date.
+ * doc/descriptions-external/lexmark.desc
+ doc/descriptions/lexmark.desc: Moved to doc/descriptions. Added
+ "new" marker. Added manpage link. Updated version. Marked X1180
+ as "basic" according to man page.
+ * doc/sane.man: Added lexmark backend.
+ * backend/Makefile.in doc/Makefile.in tools/Makefile.in: Make
+ "make dist" work again.
+ * acinclude.m4 configure include/sane/config.h.in: Check for
+ pthread_cancel() and pthread_testcancel().
+
+2005-10-15 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/descriptions/mustek_pp.desc: add Medion MD9806 scanner as
+ supported
+
+2005-10-14 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c backend/snapscan-scsi.c
+ backend/snapscan.c backend/snapscan-sources.c:
+ Fixes for 16 bit scan mode from Simon Munton
+
+2005-10-11 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c backend/snapscan-scsi.c
+ backend/snapscan.c backend/snapscan-sources.c:
+ Fixes for Epson 3490/3590 and 16 bit scan mode
+
+2005-10-11 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/umax_pp.c: change sane_start semantic to allow for batch
+ scanning
+
+2005-10-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/mustek_a3p1.desc: Downgraded status to
+ minimal.
+ * doc/descriptions/mustek_usb2.desc: Added "new" marker.
+
+2005-10-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP ScanJet 3800c.
+ * frontend/scanimage.c: Use correct size for fgets. Patch from
+ Antoine Jacoutot <ajacoutot@lphp.org>.
+
+2005-10-05 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/microtek2.c: Off-by-one error
+
+2005-10-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS acinclude.m4 configure configure.in backend/Makefile.in
+ backend/dll.conf backend/mustek_usb2.c backend/mustek_usb2.h
+ backend/mustek_usb2_asic.c backend/mustek_usb2_asic.h
+ backend/mustek_usb2_high.c backend/mustek_usb2_high.h
+ backend/mustek_usb2_reflective.c backend/mustek_usb2_transparent.c
+ doc/Makefile.in doc/sane-mustek_usb2.man
+ doc/mustek_usb2/mustek_usb2.CHANGES
+ doc/mustek_usb2/mustek_usb2.TODO:
+ Added mustek_usb backend which supports the Mustek BearPaw 2448
+ TA Pro. Changes of the code before inclusion to CVS can be found
+ in doc/mustek_usb2/mustek_usb2.CHANGES.
+ * doc/sane.man: Added mustek_usb2. Added description for u12
+ backend. Added missing links to other backends.
+ * doc/descriptions/mustek_usb2.desc: Moved from
+ descriptions-external. Updated.
+ * PROJECTS: Removed link to BeOS (link goes to nowhere, SANE
+ website has links to projects). Removed link to wi32 port
+ (included in SANE). Removed link to SaneTwain (listed on SANE
+ website).
+ * doc/doxygen-sanei.conf.in: Updated to current doxygen
+ version. Output more C-friendly format.
+ * include/sane/sanei.h include/sane/sanei_backend.h
+ include/sane/sanei_debug.h include/sane/sanei_pp.h
+ include/sane/sanei_usb.h: Fixed some bugs in doxygen
+ documentation. Added some comments.
+
+2005-10-02 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c backend/plustek-usb.h: Updated motor
+ settings for Canoscan LiDE25, thanks to Stephan February
+ <stephanf@singnet.com.sg> for providing these values.
+
+2005-10-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/as6e.desc: Added Trust Easy Scan 9600 Plus (bug
+ #301000).
+ * backend/sharp.c: Fixed some compilation warnings (bug #300404).
+ * AUTHORS: Fixed Rene Rebe's email address.
+ * doc/descriptions/unsupported.desc: Removed Epson Perfection 4180
+ (supported by epkowa backend).
+
+2005-10-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/mustek_a3p1.desc
+ doc/descriptions/unsupported.desc: Added external mustek_a3p1
+ backend that supports Mustek P 3600 A3 Pro.
+ * tools/Makefile.in: Added udev to list of directories that are
+ part of the distribution.
+ * doc/descriptions.txt: Yet another "itsself".
+ * backend/sp15c.c: Fixed some warnings (bug #302290).
+
+2005-10-01 Julien Blache <jb@jblache.org>
+ * doc/sane-find-scanner.man: Typo fix, s/itsself/itself/ from
+ Alfie Costa.
+
+2005-09-29 Eddy De Greef <eddy_de_greef at tiscali dot be>
+
+ * backend/mustek_pp_cis.c: Minor bug fix: wrong model name was
+ reported for 1200CP+ driver.
+
+2005-09-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_generic.h
+ backend/gt68xx_high.c backend/gt68xx_low.c backend/gt68xx_low.h
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO:
+ Added support for Plustek OpticSlim M12 (untested). Based on patch
+ from Gerhard Jaeger <gerhard@gjaeger.de>. Fixed gt68xx homepage
+ links in man page. Changed minimum version of libusb to 0.1.8.
+ * doc/descriptions/unsupported.desc: Removed Plustek OpticSlim M12.
+
+2005-09-28 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-options.c backend/snapscan-scsi.c
+ backend/snapscan.c backend/snapscan.h:
+ Added 16 bit option for Epson scanners, untested.
+ Reenabled enhanced inquiry command for epson scanners.
+
+2005-09-28 Julien Blache <jb@jblache.org>
+ * tools/udev/convert-usermap.sh: Don't print 0x when matching VID
+ and PID.
+
+2005-09-28 Julien Blache <jb@jblache.org>
+ * tools/udev/convert-usermap.sh: Added script to convert
+ hotplug/libsane.usermap to a udev rules file. udev 070 + linux
+ 2.6.14 will deprecate hotplug.
+ * tools/README: updated.
+
+2005-09-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother.desc: Removed duplicate entry.
+ * doc/descriptions/genesys.desc: Added link to genesys homepage.
+
+2005-09-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: Print more clear output if no USB
+ scanners are found. Point to manual page. Warn if libusb support
+ hasn't been built.
+
+2005-09-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/lexmark.desc
+ doc/descriptions/unsupported.desc: Added external lexmark
+ backend. Moved Lexmark X11?? devices to lexmark.desc. Based on
+ patch from Fred Odendaal <freshshelf@rogers.com>.
+
+2005-09-25 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c: Removed debugging code for
+ Epson scanners until a working solution has been found.
+
+2005-09-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README: Mention in addition to the listed libraries, their
+ header files are also neccessary. A missing usb.h is a common
+ problem when building SANE (--> no USB support).
+ * configure configure.in: Added warning message that's printed
+ when libusb or its header file is not available.
+ * frontend/scanimage.c doc/scanimage.man: Added progress indicator
+ to scanimage (based on patch from Mario Goppold
+ <mgoppold@tbz-pariv.de>). Updated copyright information, added
+ links to sane-devel mailing list.
+ * sanei/sanei_usb.c: Ignore EBUSY from usb_set_configuration. This
+ function fails, if a different interface of the same device is
+ claimed (e.g. by usblp).
+
+2005-09-22 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/hp4200.c backend/umax.c backend/umax1220u.c
+ include/sane/sanei_pv8630.h sanei/sanei_pv8630.c:
+ Fix SANE_DEBUG_SANEI_PV8630
+
+2005-09-19 Frank Zago <sane at zago.net>
+
+ * backend/dc210.c backend/leo.c backend/matsushita.c
+ backend/sceptre.c backend/sp15c-scsi.h backend/sp15c.h
+ backend/teco1.c backend/teco2.c backend/teco3.c
+ include/sane/sanei_backend.h: Replaced __unused__ with
+ __sane_unused__ to avoid a namespace conflict.
+
+2005-09-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_high.c
+ doc/descriptions/gt68xx.descdoc/gt68xx/gt68xx.CHANGES
+ doc/gt68xx/gt68xx.TODO: Fixed segfault that may happen with
+ Mustek ScanExpress A3 USB.
+ * doc/backend-writing.txt: Added some hints about number of
+ files.
+ * backend/mustek.conf doc/sane-mustek.man
+ doc/descriptions/mustek.desc: Mustek Paragon 600 II EP
+ works. Mentioned "parport0".
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA MP750.
+
+2005-09-17 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * README.darwin: New date for good libusb from CVS
+
+2005-09-07 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * acinclude.m4, configure: fix disabling of locking when the
+ locking user group does not exist
+
+2005-09-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Genius ColorPage Slim
+ 1200.
+
+2005-09-07 Oliver Schirrmeister <oschirr@abm.de>
+
+ * backend/fujitsu.c: enabled dropoutcolor for all fi-* scanners.
+ Applied patch from Mario Goppold: Bugfixes for the M3092DCd
+
+2005-09-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.ru.po: Updated Russian translation (from Vitaly
+ Lipatov <LAV@vl3143.spb.edu>).
+
+2005-09-03 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan-scsi.c: (Hopefully) fixed
+ some debugging code for Epson scanners that only works after
+ firmware upload.
+
+2005-09-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Epson Perfection 4490
+ Photo.
+ * tools/hotplug/libsane.usermap: Added HP PSC 750.
+
+2005-09-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_high.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Genius
+ ColorPage Vivid 1200 X is reported to work. Genius ColorPage Vivid
+ 4 XE seems to be the same as 4 X, it just doesn't have
+ buttons. Cleanup of .desc file. Fixed gain setting. Mustek
+ ScanExpress A3 USB 600 dpi color scanning works now.
+ * tools/check-usb-chip.c: Added detection for SQ113 chip
+ (e.g. Mustek BearPaw 2448 TA Pro).
+
+2005-08-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Mustek 1800 A3 Pro
+ (this is actually a P3600 A3 Pro).
+ * doc/descriptions-external/mustek_usb2.desc: Mustek BearPaw 2448
+ TA Pro has status "good" now.
+
+2005-08-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Mustek BearPaw 2448
+ TA Pro (now supported by external Mustek USB2 backend). Added
+ comments about that backend to some other scanners that may be
+ supported later.
+ * doc/descriptions-external/mustek_usb2.desc: New external Backend
+ for Mustek BearPaw 2448 TA Pro.
+
+2005-08-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Canon LiDE 60 is GL841 based.
+
+2005-08-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/canon630u.desc: Changed status of Canon 636u
+ too "good".
+
+2005-08-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother2.desc: Brother MFC-5440CN is
+ reported to work (bug #302105).
+
+2005-08-24 St~hane Voltz <stefdev@modulonet.fr>
+
+ * backend/umax_pp.c backend/umax_pp_low.c tools/umax_pp.c: Added EPP
+ support for 610P, revision number changes
+
+2005-08-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon LiDE 60. Reflecta
+ Digitdia 3600 is not GL841-based.
+
+2005-08-22 St~hane Voltz <stefdev@modulonet.fr>
+
+ * tools/check-usb-chip.c: Added rts8858c detection (Lexmark
+ X1100 series, Dell A920).
+
+2005-08-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug/libsane.usermap: Added some Genius scanners. Fixed
+ Visioneer Onetouch 7300 USB. Added Plustek OpticSlim 2400.
+ * README.openbsd: Mention problems with library names.
+
+2005-08-22 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usb.c backend/plustek-usbscan.c: Fixed problem,
+ when trying to scan at resolutions beyond the optical one
+ (sensor stops too early).
+ * tools/hotplug/libsane.usermap: Added USB ID for LiDE25.
+
+2005-08-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/microtek2.desc
+ doc/descriptions/unsupported.desc: Marked microtek2 backend as
+ unsupported. Changed link to point to old website directly. Listed
+ Microtek ScanMaker 9800XL as supported (bug #301515).
+
+2005-08-21 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * ltmain.sh acinclude.am configure: Updated from libtool 1.5.18.
+
+2005-08-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_low.h doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO:
+ Increased number limit of scanners that can work with this
+ backend to 50. Added support for Genius ColorPage Vivid 1200 X
+ (untested).
+
+2005-08-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Fixed check for usbcalls.h on OS/2
+ (patch from Paul Smedley <paul@smedley.info>).
+ * backend/gt68xx.c backend/gt68xx_devices.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES: Enabled GT68XX_FLAG_NO_STOP for
+ Mustek BearPaw 2400 CU Plus. Some of these scanners don't seem
+ to like that command.
+ * doc/descriptions/artec_eplus48u.desc: Disabled link to backend
+ homepage which doesn't seem to contain anything sane-related.
+
+2005-08-19 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek-usb.h backend/plustek-usbdevs.c: Removed obsolete
+ _WAF_BLACKFINE. LiDE20 does not seem to have a reliable black
+ calibration area, so the devices now will switch off the lamp
+ for dark calibration.
+ * backend/plustek-usbcal.c backend/plustek-usbscan.c: Cleanup.
+ * backend/plustek-usbshading.c: Fixed line statistics and added
+ calibration data output.
+ * backend/plustek.c: Bumped build number.
+
+2005-08-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_low.c backend/gt68xx_low.h
+ doc/sane-gt68xx.man doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO:
+ Fixed the problem concerning scanning on *BSD. Scanning only
+ worked once (bug #300597). Fixed compilation warnings.
+
+2005-08-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README: Min. libusb version is 0.1.8.
+
+2005-08-17 Julien Blache <jb@jblache.org>
+
+ * tools/hotplug/libsane.usermap: Added USB IDs for the
+ sm3600-supported scanners. If you know the exact model name
+ corresponding to the above IDs, please mail sane-devel:
+ 0x05da/0x40b3, 0x05da/0x40b8,
+ 0x05da/0x40ca, 0x05da/0x40dd, 0x05da/0x40ff
+
+2005-08-16 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c: Make compileable ;-)
+ * backend/snapscan-options.c: Removed //-style comment
+
+2005-08-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA MP780 and
+ Lexmark P6250.
+ * tools/sane-find-scanner.c: Don't print anything else but the
+ found messages in "-q" mode.
+ * tools/check-usb-chip.c: Added check for combination of a
+ PowerVision PV8630 (USB->parport bridge) and National
+ Semiconductor LM9830 as used in the HP 4200. Fixed compilation
+ warning. Added check for Toshiba M011 chips as used in Microtek
+ ScanMaker 3600, 3700, and 3750.
+ * configure configure.in backend/Makefile.in backend/sm3600-scanusb.c
+ backend/sm3600-scanutil.c backend/sm3600.c backend/sm3600.h
+ doc/sane-sm3600.man doc/sane-usb.man:
+ Removed direct dependence of sm3600 on libusb. Used sanei_usb
+ instead. Based on patch from Fran~is Revol <revol@free.fr>.
+ Updated documentation accordingly. Fixed compilation warnings.
+
+2005-08-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c: Bumped version number
+ * backend/snapscan-scsi.c: Added temporary debug code for 2480/2580
+ distinction
+
+2005-08-15 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-options.c backend/snapscan-scsi.c
+ backend/snapscan.h doc/descriptions/snapscan.desc
+ backend/snapscan.conf: Added support for Epson Perfection 3490/3590
+ (thanks to Matt Judge).
+
+2005-08-15 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * doc/descriptions/plustek.desc: Updated version number.
+ * backend/plustek.h. backend/plustek-usb.h backend/plustek-usbcalfile.c
+ backend/plustek-usbimg.c backend/plustek-usbmap.c
+ backend/plustek-usbdevs.c backend/plustek-usbscan.c: Cleanup.
+ * backend/plustek.c: Bumped version and build number.
+ Activated IPC between reader-process and parent.
+ * backend/plustek-usbio.c: usbio_DetectLM983x() now returns error if
+ register could not be red, usbio_ResetLM983x() checks for reg7
+ value before writing.
+ * backend/plustek-usbhw.c: Added button support for Plustek/Genius
+ devices. Changed behaviour of usb_IsScannerReady().
+ Added special misc I/O setup for CIS devices (usb_ResetRegisters).
+ * backend/plustek-usb.c: Minor fix for startup reset.
+ Removed unnecessary calls to usbio_ResetLM983x().
+ * backend/plustek-usbshading.c: Readded kCIS670 to add 5% extra to
+ LiDE20 fine calibration.
+ * backend/plustek-usbcal.c: Tried to use the settings from SANE-1.0.13.
+ Added _TWEAK_GAIN to allow increasing GAIN during lamp coarse
+ calibration. Added call to speedtest function.
+
+2005-08-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: Added Changelog-1.0.16 to DISTFILES.
+ * backend/hp4200.c doc/sane-hp4200.man
+ doc/descriptions/hp4200.desc: Enabled backtracking by
+ default. This is slower but avois bumping the scan head at the end
+ of the scan area and also missing parts of the scanned
+ image. Increased safety margin for backtracking. This fixes the
+ "garbled image" bug. Set default gamma value to 2. Manpage
+ update. Status set to "basic".
+ * frontend/scanimage.c: Don't exit with error when trying to set
+ inactive options. This especially happens in connection with
+ geometry options and the v4l backend (bugs #300321, #301977).
+
+2005-08-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/niash.desc doc/descriptions/sm3840.desc:
+ Removed ":new".
+ * AUTHORS configure configure.in backend/Makefile.in
+ backend/dll.conf backend/hp4200.c backend/hp4200.conf
+ backend/hp4200.h backend/hp4200_lm9830.c
+ backend/hp4200_lm9830.h doc/Makefile.in
+ doc/sane-hp4200.man doc/sane.man
+ doc/descriptions/hp4200.desc: Added hp4200 backend. Code from
+ Julien BLACHE's sane-backends-extras debian package, based on
+ Frank Zago's patches based on Adrian Perez Jorge's code. Fixed
+ compilation warnings. Fixed bug when no sane device was
+ given. Code indented by indent -gnu. Added man page.
+ * doc/descriptions-external/hp4200.desc: Removed (backend is now
+ included).
+ * configure configure.in: Moved CPPFLAGS definition down to avoid
+ problems with libtool tests for -fPIC.
+
+2005-08-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek_pp.c: Bumped build number.
+ * backend/plustek_pp-genericio.c: Fixed bug, that causes ASIC96003/1
+ based devices to move their sensors too fast in lineart mode at
+ 200 and 300dpi.
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+
+2005-08-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Minor fixes for usbcalls interface (patch
+ from Paul Smedley <paul@smedley.info>).
+ * doc/descriptions/unsupported.desc: Added Hewlett-Packard Scanjet
+ 4370.
+
+2005-08-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * acinclude.m4 configure: Locking feature will be disabled on OS/2
+ per default (according to Paul Smedley <paul@smedley.info>).
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * doc/plustek/Plustek-USB.txt doc/descriptions/plustek.desc
+ doc/sane-plustek.man backend/plustek-usb.c backend/plustek-usbdevs.c:
+ Added support for CanoScan LiDE25.
+
+2005-08-07 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c: Use first known device if no explicit device name
+ is specified
+
+2005-08-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Updated version. Enabled compilation
+ warnings.
+ * doc/releases.txt: Typo fix.
+ * config.guess config.sub: Updated from libtool 1.5.18.
+ * configure configure.in include/sane/config.h.in
+ sanei/sanei_usb.c: Added support for usb functionality on OS/2
+ using the usbcalls interface (patch from Paul Smedley
+ <paul@smedley.info>).
+ * sanei/sanei_usb.c: Fixed some compilation warnings.
+
+Older entries can be found in ChangeLog-1.0.16.
diff --git a/ChangeLogs/ChangeLog-1.0.18 b/ChangeLogs/ChangeLog-1.0.18
new file mode 100644
index 0000000..d6cf379
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.18
@@ -0,0 +1,973 @@
+****** Release of sane-backends 1.0.18. End of code freeze ******
+
+2006-07-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Increased version number.
+
+2006-07-02 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: Fixed the fix (problem when trying to
+ select bit-depth).
+
+2006-07-01 Wittawat Yamwong <wittawat@web.de>
+
+ * doc/sane-pixma.man doc/descriptions/pixma.desc:
+ Updated status of MP760 and MP780
+
+2006-06-30 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update
+ * backend/plustek.c: Fixed problem when trying to select bit-depth.
+
+2006-06-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Added dell1600n_net backend.
+ * doc/releases.txt: Typo fix.
+ * aclocal.m4 configure configure.in include/sane/config.h.in:
+ Disabled compilation warnings for release.
+
+---- CODE FREEZE FOR SANE-BACKENDS 1.0.18 ---
+
+2006-06-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated for 1.0.18.
+
+2006-06-24 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: update to v1.0.33, add 5900 usb id
+ * doc/descriptions/fujitsu.desc: usb id and version update
+
+2006-06-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/epson.desc: Fixed USB id of CX6600 (patch from
+ Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>).
+ * doc/descriptions-external/epkowa.desc: Updated (patch from
+ Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>).
+ * doc/descriptions/unsupported.desc: Added Xerox WorkCentre
+ PE120i.
+
+2006-06-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-usb.man: Fixed typo (bug #303571).
+
+2006-06-19 Giuseppe Sacco <eppesuig@debian.org>
+
+ * corrected sane-usb manual page.
+
+2006-06-15 Ulrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * backend/canon.c, canon.h, canon-scsi.c, canon-sane.c:
+ got rid of some compiler warnings
+
+2006-06-14 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: update to v1.0.32, add 4220c2 usb id
+ * doc/descriptions/fujitsu.desc: usb id and version update
+
+2006-06-14 Jon Chambers <jon@jon.demon.co.uk>
+ * backend/dell1600n_net.c: working backend added
+
+2006-06-13 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch]: update to v1.0.31, add 5220c usb id,
+ dont show ink level buttons if no imprinter, gather button
+ presses more frequently
+ * doc/descriptions/fujitsu.desc: usb id and version update
+
+2006-06-12 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/descriptions/mustek_pp.desc: Added Micromaxx MM-0851
+
+---- FEATURE FREEZE FOR SANE 1.0.18 ---
+
+2006-06-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/coolscan2.c doc/descriptions/coolscan2.desc: Added
+ (minimal) support for Nikon LS 50 ED, Coolscan V ED and
+ (probably) Super Coolscan LS-5000 ED (patch from Giuseppe Sacco
+ <giuseppe@eppesuigoccas.homedns.org>).
+ * backend/pixma.h: Fixed compilation problem on *BSD (ENODATA not
+ defined).
+ * doc/descriptions/unsupported.desc: Added Canon 9950. Removed
+ Epson 4490 (supported by epkowa). Removed Nikon scanners
+ (supported by coolscan2 backend). Updated PLANon DocuPen R700.
+
+2006-06-11 Eddy De Greef <eddy_de_greef at scarlet dot be>
+
+ * AUTHORS backend/mustek_pp_cis.c backend/mustek_pp_cis.h
+ doc/sane-mustek_pp.man: e-mail address update.
+
+2006-06-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+ (patch applied by Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc: Added CX-4800. Added Perfection
+ 4990 (bug #301795).
+ * backend/epson_usb.c: Added CX-4800 (bug #303341).
+ * backend/epson.c: Fixed segfault when a scanner isn't
+ recognized. Added "Flatbed" as the only possible source option for
+ MOD_SOURCE in this case (bug #303340).
+ Epson CX4800 and CX6400 were detected as "unknown model". This
+ changes request_identity2 to 0 in the EpsonCmdRec for the "D7"
+ level, which skips the call to get_identity2_information(). The
+ second bug was that the return status of
+ get_identity2_information() was not checked in attach(). This
+ actually allowed the scanner to be used but with inaccurate
+ parameters (e.g. "Unknown model", default color depth, etc)
+ because the scanner was already closed before probing for the rest
+ of the parameters (bug #301478, #303342).
+ The Epson Perfection 4990 photo/GT-X800 wrongly return 3200 dpi as
+ their maximum resolution. This workaround enables teh full 4800
+ dpi (bug #302090, patch from Claus Boje <claus@egehuset.dk>).
+ * backend/epson.conf.in: Detect some more epson SCSI scanners
+ (GT-6000, GT-9000) which report "EPSON SC" instead of "EPSON" as
+ SCSI manufacturer ID (bug #303269).
+ * sanei/sanei_pio.c: Don't do a busy loop when looking for
+ scanners. This froze the backend when the scanner was switched
+ off. Also CPU time is much reduced (bug #301926).
+
+2006-06-11 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * include/Makefile.in font_6x11.h added
+
+2006-06-10 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma_mp750.c doc/sane-pixma.man
+ /doc/descriptions/pixma.desc:
+ Removed experimental flag from MP750, MP760 and MP780.
+
+2006-06-09 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/sane-stv680.man update text
+
+2006-06-09 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * frontend/scanimage.c: move sane_cancel() out of scan_it().
+ more like scanadf. fixes issues with duplex adf scanning.
+
+2006-06-08 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma.h: Upgraded to version 0.11.3
+ * backend/pixma_common.c backend/pixma_common.h:
+ Added a work-around for the buffer underrun problem.
+ * backend/pixma_io_sanei.c: Set minimum timeout to 10ms.
+ * backend/pixma_mp150.c: Added 2 commands for MP800.
+ * backend/pixma_mp730.c: Added debug info.
+ * backend/pixma_mp750.c: Added support for buttons and a work-around
+ for the lockup problem.
+ * backend/pixma.c: Removed SANE_I18N from backend type string.
+ * doc/sane-pixma.man: Updated
+ * doc/descriptions/pixma.desc: Updated status of MP750.
+
+2006-06-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update
+ * backend/plustek.c backend/plustek-usbcal.c
+ backend/plustek-usbcalfile.c backend/plustek-usbhw.c:
+ Fixed calibration cache issues (coarse calibration for all modes,
+ correct fine calibration for sheetfed devices).
+
+2006-06-08 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/sane-backends.*.po: updated with new translation keys from
+ genesys backend.
+
+2006-06-07 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys.c backend/genesys.h backend/genesys_low.h: added
+ options for enabling/disabling horizontal interpolation at high
+ resolutions and selection of color filter in grayscale and
+ lineart modes.
+ * backend/genesys_gl841.c: implemented color filter selection.
+
+2006-06-07 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * configure, configure.in, backend/Makefile.in
+ include/sane/sanei_access.h sanei/Makefile.in
+ sanei/sanei_access.c: Added patch created by
+ Vitaly Lipatov <LAV AT vl3143.spb.edu>:
+ Add --with-lockdir to configure for set path to lock dir
+ Set PATH_SANE_LOCK_DIR really to lock dir (instead localstatedir)
+ * po/sane-backends.de.po: Update.
+
+2006-06-06 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch]: update to v1.0.30, init more models,
+ M3091/2 duplex support, flatbed bug fixes, minor refactoring
+ * doc/descriptions/fujitsu.desc: status and version update
+ * doc/sane-fujitsu.man: remove note about broken M3091/2 duplex
+
+2006-06-06 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.c backend/avision.h backend/avision.conf.in
+ doc/descriptions/avision.desc doc/sane-avision.man: updated the
+ Avision backend (Build 182 -> 201), including a lot fixes,
+ some new features and support for a bunch of new devices and updates
+ to the status marks, including: control of the lamp power-save time,
+ retrieval of NVRAM data such as the scan counts and serial number,
+ correction of the quality vs. preview scan bit (was inverted),
+ fixes for the logic deciding whether the cached window parameters
+ are valid, yet another deinterlacing method (for new scanner
+ models), rewritten main loop to be able to read with larger
+ USB buffers for enhanced scan speed, fixes of BGR -> RGB mirroring
+ (was off-by-one), attaching without a config by probing all
+ known SCSI vendor/product IDs and some fixed typos on the way
+
+2006-06-06 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/Makefile.in, po/sane-backends.*.po: updated with translation
+ keys from stv680 backend
+ * backend/Makefile.in: Fix stv680 dependencies
+
+2006-06-05 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * backend/stv680.c backend/stv680.h backend/stv680.conf.in added
+ * doc/sane-stv680.man doc/descriptions/stv680.desc added
+ * AUTHORS: added stv680 Gerard Klaver
+ * configure configure.in doc/Makefile.in doc/sane.man
+ backend/Makefile.in backend/dll.conf.in: added stv680 backend
+ * doc/descriptions-external/stv680.desc: removed because the backend
+ is now a part of sane-backends.
+
+2006-06-04 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch]: update to v 1.0.29, option cleanups,
+ M3091/2 color mode support, sloppy buffer supports saned/scanimage -T
+ * backend/fujitsu-scsi.c: proper casting in macro
+ * doc/descriptions/fujitsu.desc: status and version update
+ * doc/sane-fujitsu.man: remove note about broken M3091/2 color
+
+2006-06-03 Wittawat Yamwong <wittawat@web.de>
+ * backend/pixma_sane_options.c: Added SANE_I18N for "Flatbed" and "Color"
+ * backend/pixma_common.[ch]
+ backend/pixma_mp150.c backend/pixma_mp730.c
+ backend/pixma_mp750.c backend/pixma_rename.h
+ backend/pixma.h: Added pixma_get_device_status()
+ * backend/pixma.c: Fixed a bug in sane_open(). State wasn't initiallized
+ properly.
+ * doc/sane-pixma.man doc/descriptions/pixma.desc: Updated device status.
+
+2006-06-01 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch]: update to v 1.0.28
+ * doc/descriptions/fujitsu.desc: status and version update
+
+2006-05-30 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: DBG speedup from abel deuring,
+ duplex bugfix, split scsi/usb data into new DBG level,
+ stop including or calling sanei_thread
+ * doc/descriptions/fujitsu.desc: minor update
+ * doc/sane-fujitsu.man: minor text changes, note DBG levels
+
+2006-05-28 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-plustek_pp.man: Fixed typo.
+ * doc/sane-plustek.man: Update.
+ * doc/descriptions/plustek.desc: Update.
+ * backend/plustek.c backend/plustek.h backend/plustek-usb.c
+ backend/plustek-usbcal.c backend/plustek-usbcalfile.c
+ backend/plustek-usbdevs.c backend/plustek-usb.h
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbio.c backend/plustek-usbmap.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c:
+ Added support for CIS-based sheetfed scanners, namely TravelScan662.
+ Added support for saving calibration data for CIS
+ devices - should speedup CanoScan devices.
+
+2006-05-28 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma.h: Added #define ENODATA and EPROTO to let the
+ backend compiles under OS/2 with gcc 3.3.5.
+
+2006-05-27 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Updated italian translation
+
+2006-05-27 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * tools/sane-desc.c: Added plist output
+
+2006-05-26 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/Makefile.in, po/sane-backends.*.po: updated with translation
+ keys from pixma backend
+
+2006-05-26 Wittawat Yamwong <wittawat@web.de>
+
+ * AUTHORS: added Wittawat Yamwong
+ * configure configure.in doc/Makefile.in doc/sane.man
+ doc/descriptions/pixma.desc backend/Makefile.in
+ backend/dll.conf.in backend/pixma*.[ch]: added pixma backend
+ * doc/descriptions-external/pixma.desc: removed because the backend
+ is now a part of sane-backends.
+ * sanei/sanei_usb.c: Modified sanei_read_int(): call
+ usb_clear_halt() if and only if the endpoint is halted.
+
+2006-05-24 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * Updated Swedish translation
+
+2006-05-23 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: dont send scsi cmd F1 if unsupported.
+ * doc/descriptions/fujitsu.desc: update version number.
+
+2006-05-23 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Makefile.kernel26: Fixed extraction of version string.
+
+2006-05-21 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c backend/fujitsu.conf.in
+ doc/descriptions/fujitsu.desc: added usb ids for fi-5110EOX
+
+2006-05-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.linux: Updated concerning USB permissions (really, this
+ time).
+ * doc/descriptions/unsupported.desc: Removed models that are now
+ in pixma.desc. Updated comment for Plustek OpticPro S24.
+ * doc/descriptions-external/hp_rts88xx.desc: Added reason for not
+ including the backend.
+ * backend/gt68xx.c backend/gt68xx_devices.c doc/gt68xx/gt68xx.CHANGES
+ doc/descriptions/gt68xx.desc: Added support for Plustek OpticPro
+ S24 (some models). Added .conf entry for Plustek OpticPro S12.
+
+2006-05-19 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu*: use sanei_scsi_open_extended()
+ change config file var to "buffer-size", increase default
+ * doc/sane-fujitsu.man: buffer-size mentioned
+
+2006-05-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/pixma.desc: Added some models (from
+ Wittawat Yamwong <wy-sane-devel@arcor.de>).
+
+2006-05-14 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: sane_read() - only send EOF with len=0
+ do_cmd() - simplify timeout handling
+ * backend/fujitsu-scsi.h: increase default timeoutes
+
+2006-05-15 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_devices.c backend/genesys_gl646.c: tuned HP 2300
+ geometry description and added a safeguard against failed origin
+ detection
+
+2006-05-14 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu*: rewritten backend, supports many more scanners
+ with much better usb support and less model-specific code.
+ * doc/sane-fujitsu.man: updated to match new backend.
+
+2006-05-12 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * doc/descriptions/fujitsu.desc: updated with all known scanners
+ by fujitsu. Most now supported as 'basic'.
+
+2006-05-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug-ng/convert-usermap.sh
+ tools/udev/convert-usermap.sh: Removed. No longer needed as
+ hotplug-ng and udev files are generated by sane-desc now.
+ * tools/README tools/hotplug/README tools/hotplug-ng/README
+ doc/sane-usb.man: Updated documentation concerning udev.
+ * doc/descriptions/unsupported.desc: Added Epson Stylus CX-5800
+ and some PLANon scanners.
+
+2006-05-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/lexmark.desc: X1150 is reported to work.
+ * doc/descriptions-external/brother.desc: MFC-3820CN is reported
+ to work.
+
+2006-04-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother.desc
+ doc/descriptions-external/brother2.desc: Network models are now
+ supported (bug #303386).
+
+2006-04-23 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_devices.c: Increase length of acceleration
+ slopes for Canon LiDE 35/40/50/60
+
+2006-04-21 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys.c: add workraound with issue related
+ to asic reset and data scan amount
+
+2006-04-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/artec_eplus48u.conf.in: Made config file more
+ readable. Instead of commenting every single line, the
+ explanations are given once at the top. Don't repeat options
+ that aren't changed anyway.
+ * doc/descriptions/unsupported.desc: Added Microtek Scanmaker
+ 3880.
+
+2006-04-18 Giuseppe Sacco <eppesuig@debian.org>
+ * Updated italian translation
+
+2006-04-18 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_gl841.c backend/genesys_gl646.c: Actually use
+ the endian converted slope table.
+ * backend/genesys_conv_hlp.c: Fix interpolation code to emit all
+ pixels of a line.
+ * doc/descriptions/unsupported.desc: Added missing scanners from
+ libsane.usermap.
+
+2006-04-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/epson.desc doc/descriptions/fujitsu.desc
+ doc/descriptions/hp.desc doc/descriptions/u12.desc
+ doc/descriptions/umax.desc: Added most USB vendor and product
+ ids. Minor cleanup.
+ * doc/descriptions/avision.desc: Used avision-desc.sh to update
+ the .desc file to current SANE CVS avision.c code. Added USB
+ ids.
+ * doc/descriptions/plustek.desc: Added USB ids. Splitted some
+ entries which have two different USB ids. Clarified comment about
+ UMAX 3400.
+ * tools/hotplug/libsane.usermap: Removed. Will be created
+ automatically by sane-desc.
+ * tools/Makefile.in: Create libsane.usermap (for hotplug),
+ libsane.db (for hotplug-ng) and libsane.rules (for udev)
+ automatically with sane-desc based on the :usbid tokens in the
+ description files.
+ * doc/Makefile.in: Don't print warnings when creating the HTML
+ scanner tables. The warnings are already printed in the tools
+ directory.
+ * doc/descriptions-external/brother.desc
+ doc/descriptions-external/brother2.desc: Point to current lists
+ on Brother website.
+ * tools/hotplug/.cvsignore tools/hotplug-ng/.cvsignore
+ tools/udev/.cvsignore: Added.
+
+2006-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/umax1220u-common.c backend/umax1220u.c
+ doc/descriptions/umax1220u.desc doc/sane-umax1220u.man: Make
+ UMAX 2100U (and probably 1600U and 2000U) work. Code from Patrick
+ Lessard <palessar@cgocable.ca>. Updated manual page and .desc
+ file.
+ * AUTHORS: Added Patrick Lessard and Pierre Willenbrock.
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/pixma.desc: Moved scanners supported
+ by the external pixma backend to pixma.desc. Added Canon PIXMA
+ MP730.
+ * doc/sane-mustek_usb2.man: Removed description of non-existing
+ configuration file.
+
+2006-04-12 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: Fix/optimize udev rules; tests on the same
+ line are ANDed together, not ORed together, causing the rules to
+ trigger more often than necessary.
+
+2006-04-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/saned.c: If saned does not find any config file, it
+ calls fclose with a NULL FILE*. The code may also leak open file
+ descriptors and FILE's if multiple config files are found. (bug
+ #303339). Fixed possible segfault on close_handle() (bug
+ #303338).
+ * doc/descriptions/umax1220u.desc: Added links to Patrick
+ Lessard's patch.
+ * backend/qcam.c: Fixed undefined symbols in the qcam backend on
+ GNU/kFreeBSD (patch from Aurelien Jarno <aurelien@aurel32.net>).
+ * doc/descriptions/unsupported.desc: Added Lexmark X5150.
+
+2006-04-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother2.desc: Added several scanners
+ from Brother website.
+ * doc/descriptions/unsupported.desc: Added C-Channel scanners.
+ * tools/hotplug/libsane.usermap: Added some scanners.
+
+2006-03-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/sp15c.c: Fixed ADF support. Patch from Andreas Degert
+ <ad@papyrus-gmbh.de>.
+ * doc/descriptions-external/cs3200f.desc: Listed new cs3200f
+ backend for Canon 3200F.
+ * doc/descriptions/unsupported.desc: Added Canon PIXMA760, Tevion
+ MD 90090, Microtek ScanMaker 4600, and Visioneer Onetouch
+ 9320. Removed Canon CanoScan 3200F (now in external backends).
+
+2006-03-27 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys.c backend/genesys.h backend/genesys_low.h
+ backend/genesys_conv.c backend/genesys_gl841.c: Added extended
+ option "Threshold" for lineart mode(Thanks to Laurent Charpentier).
+
+2006-03-24 Julien Blache <jb@jblache.org>
+ * doc/*: Another batch of spelling fixes from A. Costa.
+
+2006-03-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Iris Iriscan and Xerox
+ Documate 510.
+
+2006-03-21 Julien Blache <jb@jblache.org>
+
+ * doc/*.man: More spelling fixes from A. Costa (through Debian).
+
+2006-02-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c: Limit inquiry length to 120 bytes if
+ firmware is not yet loaded
+
+2006-03-18 Julien Blache <jb@jblache.org>
+
+ * doc/sane-apple.man: Applied patch from A Costa (through Debian);
+ english/spelling fixes for sane-apple(5).
+
+2006-03-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Microtek ScanMaker 4850
+ II and Plustek OpticPro ST 64+.
+
+2006-03-12 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: removed now unneeded #ifdef in
+ gl646_send_gamma_table.
+
+2006-03-12 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_gl646.c: fixed silly thinko in
+ gl646_send_gamma_table.
+
+2006-03-12 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: fixed gl646_send_gamma_table after
+ endianess changes. Put again a little fix for power saving
+
+2006-03-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c tools/sane-find-scanner.c: Added USB support
+ for DragonFlyBSD (bug #303183).
+
+2006-03-09 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys.c backend/genesys_low.h: Removed little endian
+ conversions in slope table creation functions
+ * backend/genesys_gl646.c backend/genesys_gl841.c: Added little
+ endian conversions to gl*_send_slope_table functions
+
+2006-03-09 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys.c: Some annotations about endianess of scanned
+ data
+ * backend/genesys_gl646.c: Convert gamma tables to little endian
+
+2006-03-06 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: power saving fixes
+
+2006-03-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/samsung.desc: Added USB ids for
+ SCX-4100 (bug #303166).
+ * doc/descriptions/unsupported.desc: Added Brother MFC 9600, Canon
+ PIXMA MP450, and Plustek ScanCopy 115.
+
+2006-02-16 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+ * backend/plustek_pp.c: Bumped build number.
+ * backend/plustek-pp_ptdrv.c backend/plustek-pp_detec.c:
+ Fixed bug, that prevents backend from working, when the device
+ is another parport than parport0 - spotted by Christoph Steinbruchel.
+
+2006-02-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/u12/U12.changes: Update.
+ * backend/u12.c: Bumped build number.
+ * backend/u12-hw.c: SoftwareReset is now disabled in
+ cancelSequence when the device is a Genius scanner.
+
+2006-02-13 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: disabled power saving for gl646.
+
+2006-02-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.solaris: Added link to installation report.
+ * doc/descriptions/unsupported.desc: Removed HP ScanJet 8200
+ (supported by Avision backend). Minor updates.
+
+2006-02-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Removed Trust Office Scan USB
+ 19200 (now in niash.desc), added Xerox 4800 One Touch.
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Workaround for
+ compilation problem on Windows/cygwin.
+ * backend/dll.c: With cygwin, use ":" as DIR_SEP (patch from
+ Philip Aston <paston@bea.com>).
+
+2006-02-04 Ullrich Sigwanz <usigwanz@freesurf.ch>
+
+ * backend/niash_xfer.c: Added Trust OfficeScan 19200
+ * doc/descriptions/niash.desc: Added Trust OfficeScan 19200
+ * backend/niash.c: Removed Reload on X,Y settings
+
+2006-02-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h: Corrected USB ID for Benq 310
+
+2006-01-31 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c: Fixed CanoScan N1220U settings.
+
+2006-01-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/brother2.desc: Changed status of
+ Brother MFC-410CN to "basic" (bug #302961).
+ * doc/descriptions/unsupported.desc: Added Benq 7400UT and Genius
+ Colorpage CS.
+
+2006-01-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/snapscan-usb.c: Added #defines for SHM_R/W for cygwin
+ (patch from Philip Aston <philipa@mail.com>).
+ * AUTHORS: Troy Rollo is now active.
+
+2006-01-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Updated to match
+ iscan-1.18.0. Added usb ids (patch from Olaf Meeuwissen
+ <olaf@member.fsf.org>).
+ * doc/descriptions/unsupported.desc: Added Scanshell 800N and
+ Canon Smartbase MP360.
+ * sanei/sanei_usb.c tools/sane-find-scanner.c: Added checks for
+ altsetting =! 0.
+
+2006-01-22 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/dll.c, backend/plustek-usbhw.c, backend/plustek-usbscan.c,
+ sanei/sanei_pio.c: Fixed warnings about C++ style comments.
+ * backend/hp5400_xfer.h: Fixed compilation warnings.
+
+2006-01-21 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/canon-sane.c: Fixed variable redeclaration.
+
+2006-01-05 Stephane Voltz <stefdev@modulonet.fr>
+
+ * tools/hotplug/libsane.usermap: Added Dell A920 (rebranded X1100)
+
+2006-01-19 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number. Fixed constraint_type for
+ OPT_BUTTON.
+ * backend/plustek-usbdevs.c: Added high-speed setting for HP2200.
+ Cleanup.
+
+2006-01-18 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usbdevs.c: Fixed CanoScan N670U settings,
+ see (bugreport #302738).
+
+2006-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/canon630u.desc doc/descriptions/coolscan2.desc
+ doc/descriptions/hp5400.desc doc/descriptions/niash.desc
+ doc/descriptions/unsupported.desc: Added USB vendor and product
+ ids. Minor cleanup.
+ * backend/artec_eplus48u.conf.in doc/sane-artec_eplus48u.man
+ doc/descriptions/artec_eplus48u.desc: Added Yakumo Scan50. Minor
+ cleanup.
+ * doc/descriptions/gt68xx.desc: Added Mustek BearPaw 1248 CU.
+ * doc/descriptions/lexmark.desc: Added USB vendor and product
+ ids. Changed status of X1150 and X1170 according to reports on
+ sane-devel.
+
+2006-01-15 Ulrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * backend/canon-sane.c: fixed byte-swapping problem for little-endian
+ platforms (affects raw-mode scanning with FS2710 slide scanner)
+
+2006-01-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/check-usb-chip.c: Improved rts8822l-01h chipset
+ detection by adding check for descriptor.bcdUSB == 0x110 reported
+ by some scanners and accepting any value diferent to 0, read
+ from 0xfe11 register. Patch from Jonathan Bravo Lopez
+ <JKD@JKDSoft.cjb.net>.
+ * tools/sane-desc.c: Added "ignore" parameter to :usbid
+ token. Print warning if a backend defines USB models without
+ defining usbid. Print warning if a model doesn't have an
+ interface.
+ * doc/descriptions.txt: Added "ignore" parameter to :usbid
+ token.
+ * doc/descriptions-external/hpaio.desc doc/descriptions-external/hpoj.desc
+ doc/descriptions-external/samsung.desc: Updated comments. Added
+ usb ids or "ignore".
+
+2006-01-10 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc: Changed entries for duplicate USB IDs,
+ added Epson Stylus CX-1500
+ * backend/snapscan.c backend/snapscan-scsi.c: Added support for 12 bit
+ gamma tables for Epson CX-1500
+ * backend/snapscan.conf.in: Added Epson Stylus CX-1500
+
+2006-01-10 Gerard Klaver <gerard at gkall dot hobby dot nl>
+
+ * doc/descriptions-external/stv680.desc: Added USB id.
+ added Creative webcam to list
+
+2006-01-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Film area guide mode of
+ 4990 not supported (bug #302728).
+ * doc/descriptions-external/brother-mfc4600.desc
+ doc/descriptions-external/brother.desc
+ doc/descriptions-external/brother2.desc
+ doc/descriptions-external/hp3770.desc
+ doc/descriptions-external/hp3900.desc
+ doc/descriptions-external/hp8200.desc
+ doc/descriptions-external/hp_rts88xx.desc
+ doc/descriptions-external/mustek_a3p1.desc
+ doc/descriptions-external/primascan.desc
+ doc/descriptions-external/template.desc.
+ doc/descriptions-external/viceo.desc:
+ Added several USB ids. Added some more scanners. General cleanup.
+
+2006-01-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/gt68xx.desc: Added USB id.
+ * doc/descriptions/unsupported.desc: Added interfaces to Panasonic
+ scanners.
+
+2006-01-08 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/descriptions/snapscan.desc: Added USB IDs
+
+2006-01-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Xerox 4800.
+ * doc/descriptions.txt tools/sane-desc.c: Added support for
+ keyword :usbid. All output modes now print the usb vendor and
+ product modes. Added usermap, db, and udev output modes for
+ generating USB vendor/product lists for hotplug (ng) and Linux
+ udev. Added version information to html modes.
+ * doc/descriptions/gt68xx.desc: Added vendor and product ids for
+ all scanners.
+ * doc/descriptions/artec_eplus48u.desc
+ doc/descriptions/genesys.desc doc/descriptions/hp3500.desc
+ doc/descriptions/hp4200.desc doc/descriptions/ma1509.desc
+ doc/descriptions/microtek2.desc doc/descriptions/mustek_usb.desc
+ doc/descriptions/mustek_usb2.desc doc/descriptions/sm3600.desc
+ doc/descriptions/sm3840.desc doc/descriptions/template.desc.
+ doc/descriptions/umax1220u.desc doc/descriptions/unsupported.desc
+ doc/descriptions-external/template.desc.:
+ Added USB vendor and product ids. Minor cleanups.
+
+2006-01-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Medion MD 85264 finger
+ print sensor and Trust Office Scan USB 19200.
+ * doc/descriptions-external/brother2.desc
+ tools/hotplug/libsane.usermap: Brother DCP-7010 is reported to
+ work (bug #302862).
+ * tools/check-usb-chip.c: Print version information when detecting
+ chip sets.
+ * sanei/sanei_usb.c: Added warning if libusb support is not built
+ in and some more debug messages.
+ * doc/descriptions-external/hp3900.desc: Status of HP ScanJet 4070
+ Photosmart is now minimal.
+ * tools/sane-desc.c: Added new output mode: statistics. This mode
+ prints overal statistics about known devices. Added support for
+ more than one search directory. Removed support for deprecated
+ backend status ("alpha", "beta" ...). Ran indent -gnu. HTML
+ output (backends and mfgs) prints statitics now. Unify status
+ and device type strings. Simplified status and device type
+ string printing. Removed any remaining links of backend status.
+
+2006-01-06 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan-options.c backend/snapscan.c:
+ Some fixes for the Epson Stylus CX1500
+
+2006-01-05 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/umax_pp_low.c: removed unused local variable
+
+2006-01-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in backend/abaton.conf backend/abaton.conf.in
+ backend/agfafocus.conf backend/agfafocus.conf.in
+ backend/apple.conf backend/apple.conf.in backend/artec.conf
+ backend/artec.conf.in backend/artec_eplus48u.conf
+ backend/artec_eplus48u.conf.in backend/avision.conf
+ backend/avision.conf.in backend/bh.conf backend/bh.conf.in
+ backend/canon.conf backend/canon.conf.in backend/canon630u.conf
+ backend/canon630u.conf.in backend/canon_pp.conf
+ backend/canon_pp.conf.in backend/coolscan.conf
+ backend/coolscan.conf.in backend/coolscan2.conf
+ backend/coolscan2.conf.in backend/dc210.conf
+ backend/dc210.conf.in backend/dc240.conf backend/dc240.conf.in
+ backend/dc25.conf backend/dc25.conf.in backend/dll.conf
+ backend/dll.conf.in backend/dmc.conf backend/dmc.conf.in
+ backend/epson.conf backend/epson.conf.in backend/fujitsu.conf
+ backend/fujitsu.conf.in backend/genesys.conf
+ backend/genesys.conf.in backend/gphoto2.conf
+ backend/gphoto2.conf.in backend/gt68xx.conf
+ backend/gt68xx.conf.in backend/hp.conf backend/hp.conf.in
+ backend/hp4200.conf backend/hp4200.conf.in backend/hp5400.conf
+ backend/hp5400.conf.in backend/hpsj5s.conf
+ backend/hpsj5s.conf.in backend/ibm.conf backend/ibm.conf.in
+ backend/leo.conf backend/leo.conf.in backend/lexmark.conf
+ backend/lexmark.conf.in backend/ma1509.conf
+ backend/ma1509.conf.in backend/matsushita.conf
+ backend/matsushita.conf.in backend/microtek.conf
+ backend/microtek.conf.in backend/microtek2.conf
+ backend/microtek2.conf.in backend/mustek.conf
+ backend/mustek.conf.in backend/mustek_pp.conf
+ backend/mustek_pp.conf.in backend/mustek_usb.conf
+ backend/mustek_usb.conf.in backend/nec.conf backend/nec.conf.in
+ backend/net.conf backend/net.conf.in backend/pie.conf
+ backend/pie.conf.in backend/plustek.conf backend/plustek.conf.in
+ backend/plustek_pp.conf backend/plustek_pp.conf.in
+ backend/qcam.conf backend/qcam.conf.in backend/ricoh.conf
+ backend/ricoh.conf.in backend/s9036.conf backend/s9036.conf.in
+ backend/saned.conf backend/saned.conf.in backend/sceptre.conf
+ backend/sceptre.conf.in backend/sharp.conf backend/sharp.conf.in
+ backend/sm3840.conf backend/sm3840.conf.in backend/snapscan.conf
+ backend/snapscan.conf.in backend/sp15c.conf
+ backend/sp15c.conf.in backend/st400.conf backend/st400.conf.in
+ backend/tamarack.conf backend/tamarack.conf.in
+ backend/teco1.conf backend/teco1.conf.in backend/teco2.conf
+ backend/teco2.conf.in backend/teco3.conf backend/teco3.conf.in
+ backend/test.conf backend/test.conf.in backend/u12.conf
+ backend/u12.conf.in backend/umax.conf backend/umax.conf.in
+ backend/umax1220u.conf backend/umax1220u.conf.in
+ backend/umax_pp.conf backend/umax_pp.conf.in backend/v4l.conf
+ backend/v4l.conf.in:
+ Renamed backend configuration files from *.conf to
+ *.conf.in. The configuration files are preprocessed by
+ backend/Makefile now and variables like @DATADIR@ are substituted
+ by the appropriate directories. This is especially useful for
+ firmware locations. For the firmware paths for the artec_eplus48u,
+ gt68xx, and snapscan backends variables were used. Bug #302590.
+ Regenerate .conf files only if .conf.in were changed.
+ * backend/.cvsignore: Added *.conf.
+ * README.linux: Mentioned udev.
+ * doc/backend-writing.txt: New chapters about the build system and
+ the files and directories of sane-backends. Fixed building
+ instructions for tstbackend. Mentioned that sane_* symbols
+ should be only used for API symbols.
+ * testsuite/Makefile.in testsuite/README testsuite/testfile.pnm:
+ Changed testsuite to use the test backend instead of the pnm
+ backend. This actually works with current sane-backends.
+ * PROBLEMS: Removed pnm problem description. It's not relevant for
+ normal users and explained in the sane-pnm man page anyway.
+ * backend/genesys.c: Fixed some compilation warnings.
+ * tools/hotplug/libsane.usermap: Added Hewlett-Packard PSC 1210.
+
+2006-01-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.tex: Corrected formula for calculation of
+ bytes_per_line in chapter 4.3.8 sane_get_parameters.
+ New version: 1.04.
+
+2006-01-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.c backend/microtek2.h: Fixed problem with
+ option "resolution" which exists twice at the same time. Bug
+ #302466.
+ * tools/hotplug/libsane.usermap: Added Canon LiDE 60 (bug
+ #302830).
+ * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c
+ backend/gt68xx_high.c doc/descriptions/gt68xx.desc
+ doc/gt68xx/gt68xx.CHANGES doc/gt68xx/gt68xx.TODO: Added Plustek
+ OpticPro S(T)12 (product id 0x040b). Mostly untested. Print
+ warmup message 5 seconds after starting the warm-up.
+ * doc/descriptions/unsupported.desc: Added Visioneer 9450
+ USB. Updated comments for Plustek S(T)12.
+ * backend/test.c backend/test.conf backend/test.h
+ doc/sane-test.man doc/descriptions/test.desc:
+ Added option "source" which can be used to simulate an Automatic
+ Document Feeder (ADF). Added copyright header to test.h.
+ * frontend/scanimage.c: Don't create and delete a file in batch
+ mode if the document feeder is empty or if CTRL-D is pressed in
+ prompt mode. This change avoids deleting existing files. For an
+ explanation, see bug #302797.
+
+2006-01-01 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-data.c backend/snapscan-options.c backend/snapscan.c
+ doc/descriptions/snascan.desc:
+ Added (static) calibration data for Benq 5150 / 5250
+ * backend/snapscan.h backend/snapscan.conf:
+ Added preliminary support for Epson Stylus CX 1500
+ * backend/Makefile.in: Added snapscan-data.c
+
+2005-12-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/scanwit.desc: Added "(Acer)" to
+ manufacturer name (bug #302801).
+ * doc/descriptions/unsupported.desc: Added/updated several old
+ Acer (Benq) and Agfa parport scanners.
+
+2005-12-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/hotplug/libsane.usermap: Added Brother MFC 8440.
+ * Makefile.in: make libcheck now also checks for non standard sane
+ symbols (sane_*).
+ * doc/descriptions/unsupported.desc: HP Scanjet 3690 uses GL646_HP
+ chipset.
+
+2005-12-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.linux: Mention ld.so.conf issue.
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/hp3900.desc: Added external hp3900
+ backend. Moved (possibly) supported scanners from
+ unsupported.desc.
+ * doc/backend-writing.txt: Added some hints about what to do to add
+ a new backend to the existing sane-backends code.
+
+2005-12-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Lexmark X2330.
+
+2005-12-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added Canon Pixma MP500.
+ * README.openbsd: Added hint about CPPFLAGS.
+ * doc/descriptions/artec.desc: Changed status of Artec AT6 to
+ "good" as reported in bug #302749.
+ * tools/hotplug/libsane.usermap: Added Brother MFC-7420.
+
+2005-12-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c doc/descriptions/dll.desc: Fixed dynamic loading
+ on current HP/UX systems (bug #302732).
+ * AUTHORS ChangeLog configure configure.in backend/Makefile.in
+ backend/dll.conf backend/hp3500.c doc/Makefile.in
+ doc/sane-hp3500.man doc/sane.man doc/descriptions/hp3500.desc:
+ Added hp3500 backend which supports the HP ScanJet 3500 series,
+ including the 3500C, 3530C and 3570C (patch from Troy Rollo
+ <sane@troy.rollo.name>) (bug #302687).
+ * doc/descriptions-external/hp3500.desc: Deleted.
+ * doc/descriptions/hp4200.desc doc/descriptions/lexmark.desc
+ doc/descriptions/mustek_usb2.desc: Removed "NEW!" markers.
+
+2005-12-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: List ChangeLog-1.0.17 in DISTFILES.
+ * configure configure.in: Changed version to 1.0.17-cvs. Enabled
+ compilation warnings.
+ * doc/descriptions-external/brother2.desc: Added Brother MFC-215C.
+
+Older entries can be found in ChangeLog-1.0.17.
diff --git a/ChangeLogs/ChangeLog-1.0.19 b/ChangeLogs/ChangeLog-1.0.19
new file mode 100644
index 0000000..f0f827b
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.19
@@ -0,0 +1,1159 @@
+****** Release of sane-backends 1.0.19. End of code freeze ******
+
+2008-02-10 m. allan noah <kitno455 a t gmail d o t com>
+ * Makefile.in: correct DISTFILES
+ * configure.in, configure: alpha sort backend names
+ * backend/Makefile.in: correct/sort DISTFILES and .la: targets
+ * include/Makefile.in: correct/sort SANE_INCLUDES
+ * doc/releases.txt: minor updates
+
+2008-02-10 m. allan noah <kitno455 a t gmail d o t com>
+ * config.guess, config.sub: updated to latest versions
+ * configure.in, configure: updated sane version number
+ * doc/releases.txt: minor updates
+ * sane-backends.lsm: updated maintainer and keyword info
+ * NEWS: added last 18+ months of updates to 1.0.19 section
+
+2008-02-09 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c, doc/descriptions/hpljm1005.desc:
+ add usb ID for LaserJet M1120
+
+2008-02-09 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.ch: fixed device list matching for entries
+ with partial matches on USB ID, but vendor / product string
+ matches as mostly only the HP5300 vs. HP5370, fixed non-color
+ calibration for devices not filling all RGB fields of calibration
+ format information, do not send 3x3 color matrix to older devices
+ (ASIC versions) as some HP53xx does not correctly handle it,
+ improved calibration accuracy and fixed transparency adapter
+ detection to not use non-zero as present, but just 1 (some
+ devices now set 0xff as (-1) - not present ...
+
+2008-02-07 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c, doc/descriptions/hpljm1005.desc:
+ add usb ID for LaserJet M1120n
+ * doc/descriptions-external/brother2.desc: add usb ID for DCP-120C
+
+2008-02-03 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c: better sane_cancel handling
+ * backend/agfafocus.c backend/coolscan.c, backend/coolscan2.c,
+ backend/hpljm1005.c, backend/ibm.c, backend/lexmark_low.c,
+ backend/microtek.c, backend/microtek2.c, backend/nec.c, backend/pie.c,
+ backend/ricoh.c, backend/s9036.c, backend/st400.c, backend/umax.c:
+ reduce gcc pedantic/ansi warnings from 690 to 280 lines, mostly
+ via casts in str*() calls.
+
+2008-02-03 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * Makefile.in, */Makefile.in, tools/sane-config.in:
+ Fix warnings about ignored --datarootdir
+ * backend/hp5590_low.c: Fix incompatible pointer type warning
+ * backend/genesys_gl646.c: Fix incompatible pointer type warning
+ * backend/dc25.c, backend/coolscan2.c, backend/epson2.c,
+ backend/epson2-commands.c, backend/epson2-io.c, backend/epson2_net.c,
+ backend/genesys.c, backend/genesys_gl841.c, backend/hp3900_usb.c,
+ backend/lexmark_low.c, backend/plustek-usbhw.c, backend/sm3840.c:
+ Fix format warnings
+ * backend/pixma.c: Add missing #include
+
+2008-02-02 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * configure, configure.in, include/sane/config.h.in,
+ backend/hp3900_debug.c: make tiffio.h optional
+ * backend/Makefile.in: remove sanei_config2 from epjitsu deps
+ * backend/epson2.c, backend/hpljm1005.c: add missing #includes
+
+2008-02-01 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/sane-backends.no.po: renamed to sane-backends.nb.po
+ * po/Makefile.in: norwegian bokmål locale is nb and not no
+
+2008-01-30 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/pixma.c: Fix initialization of the reader taskid
+
+2008-01-30 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c: call sane_get_devices if required
+
+2008-01-29 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/snapscan.c: fix bug #310538
+ * doc/descriptions/unsupported.desc: add Canon LiDE 600F
+
+2008-01-23 Alessandro Zummo <a.zummo@towertech.it>
+ * doc/descriptions/epson2.desc: cloned from epson.desc with
+ minor modifications.
+
+2008-01-22 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c, doc/descriptions-external/hpljm1005.desc:
+ Update backend with DBG macro calls, remove external .desc file,
+ from author- couriousous at mandriva dot org
+ * backend/fujitsu.c: disable compression option arg until sane 1.1.0
+ * doc/descriptions/dell1600n_net|hp3500|pixma.desc: remove 'new' flag
+
+2008-01-17 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c, doc/descriptions/hpljm1005.desc,
+ doc/sane-hpljm1005.man, AUTHORS, configure, configure.in,
+ backend/Makefile.in, backend/dll.conf.in, doc/Makefile.in,
+ doc/sane.man: add hpljm1005 backend, couriousous at mandriva dot org
+
+ * tools/check-po.awk, po/sane-backends.fr.po: updates from
+ Yann E. MORIN
+
+2008-01-16 m. allan noah <kitno455 a t gmail d o t com>
+ * po/sane-backends.fr.po: updated translation from Yann E. MORIN
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc: add usb id for S500M
+
+2008-01-16 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_usb.c: fixed compilation warning related
+ to an argument type in Read_Bulk function.
+
+2008-01-14 m. allan noah <kitno455 a t gmail d o t com>
+ * tools/check-po.awk: support different use of 'fuzzy'
+ * po/sane-backends.fr.po: updated translation
+ both updates from Yann E. MORIN
+
+2008-01-09 Gerard Klaver <gerard at gkall dot hobby dot nl>
+ * backend/teco2.c changed routine teco_request_sens
+ add init value to size (bugreport
+ https://bugzilla.novell.com/show_bug.cgi?id=205451)
+
+2008-01-09 Alessandro Zummo <a.zummo@towertech.it>
+ * changed functions prefix (esci_ for device commands,
+ e2_ for driver's functions), better handling of tpu area,
+ fixed tpu detection, changed freeing of line buffers,
+ fixed some XXXs.
+
+2008-01-09 Alessandro Zummo <a.zummo@towertech.it>
+ * sanei_tcp.c, fix compilation with cygwin.
+
+2008-01-02 m. allan noah <kitno455 a t gmail d o t com>
+ * AUTHORS, configure, configure.in, backend/Makefile.in,
+ backend/dll.conf.in, backend/hs2p-saneopts.h,
+ backend/hs2p-scsi.c, backend/hs2p-scsi.h, backend/hs2p.c
+ backend/hs2p.conf.in, backend/hs2p.h doc/Makefile.in,
+ doc/sane-hs2p.man, doc/sane.man, doc/descriptions/hs2p.desc:
+ add hs2p backend for jazz_johnson a t verizon d o t net
+
+2007-12-29 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.c: let io_error fall thru usb command function
+ * backend/epjitsu.conf.in: use @DATADIR@ for holding firmware
+ * backend/Makefile.in: add epjitsu to FIRMWARE_DIRS
+
+2007-12-29 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/sane.h, frontend/scanimage.c, backend/fujitsu.[ch]:
+ commented/removed/deactivated all new SANE_FRAME code
+
+2007-12-26 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: added network scanner autodiscovery
+
+2007-12-26 Alessandro Zummo <a.zummo@towertech.it>
+ * sanei/sanei_udp.c: added udp support functions
+
+2007-12-24 Julien Blache <jb@jblache.org>
+ * configure.in, configure: Do not build plustek_pp on Hurd. Patch
+ from Samuel Thibault <samuel.thibault@ens-lyon.org>. Add missing
+ closing paren to error message.
+
+2007-12-21 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+
+ * backend/hp3900.c, backend/hp3900_rts8822.c: Fixed bug which made
+ slide/negative scans unusable.
+ * backend/hp3900_config.c: Changed area constrains of slide/negative scans.
+
+2007-12-19 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.c: backend v1.0.10, fix missing function
+
+2007-12-19 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+
+ * po/sane-backends.es.po: Updated translation.
+ * tools/check-usb-chip.c: fixed compilation warning and "RTS8822L-01H"
+ strings renamed to "RTS8822"
+
+2007-12-19 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/Makefile.in, po/sane-backends.*.po: New translation keys for
+ hp3900 backend. Updated Swedish translation.
+
+2007-12-17 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu*, backend/Makefile.in, backend/dll.conf.in,
+ doc/sane-epjitsu.man, doc/Makefile.in, doc/sane.man,
+ doc/descriptions/epjitsu.desc, configure, configure.in, AUTHORS:
+ add backend for Epson-based Fujitsu scanners (fi-60F and S300)
+
+2007-12-17 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-usb.[ch] backend/plustek-usbcal.c backend/plustek-usbimg.c
+ backend/plustek-usbio.c backend/plustek-usbshading.c: Fixed ARM/Xscale
+ issues.
+ * backend/plustek.c: Bumped build number
+ * doc/plustek/Plustek-USB-TODO.txt doc/plustek/Plustek-USB.changes: Update
+
+2007-12-15 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: fixed model detection,
+ depth detection and removed some unused
+ variables.
+
+2007-12-13 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * Added files for 'hp3900' backend which supports
+ HP Scanjet 3800/3970/4070/4370/G3010
+ * doc/descriptions-external/hp3900.desc: moved to doc/descriptions
+
+2007-12-10 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: use epson2_model where possible,
+ fixed segmentation fault.
+
+2007-12-08 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Added esperanto translation, per Antonio Codazzi.
+
+2007-11-23 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/sane-backends.*.po: Update
+ * backend/plustek-usb.[ch] backend/plustek-usbcal.c
+ backend/plustek-usbdevs.c backend/plustek.[ch]:
+ Tweaked TravelScan464 settings. Improved AFE gain calculation
+ for CIS devices. This should avoid stripes in the scanned images.
+ * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update
+
+2007-11-22 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys_devices.c,
+ backend/genesys_low.h, backend/genesys_gl646.c,
+ backend/genesys_gl841.c: add infrastructure for multiple motor
+ power modes
+
+2007-11-21 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: add internal flag for disabling lamp
+ during scan(useful for black level calibration)
+
+2007-11-18 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/mustek.c: Add protection for a double free (#306775)
+ * backend/agfafocus.c, backend/artec_eplus48u.c, backend/avision.c,
+ backend/coolscan.c, backend/hp3500.c, backend/microtek2.c,
+ backend/mustek.c, backend/pie.c, backend/pixma.c, backend/plustek.c,
+ backend/plustek_pp.c, backend/snapscan.c, backend/sp15c.c,
+ backend/tamarack.c, backend/test.c, backend/u12.c, backend/umax.c:
+ Fix handling of valid "negative" PIDs.
+
+2007-11-18 Alessandro Zummo <a.zummo@towertech.it>
+
+ * backend/epson2.c: removed quick-format option. it's
+ the job of a frontend to provide such a commodity.
+ removed confusing parameters (preview-speed, speed).
+ when a preview is requested, the scanner will be
+ set to high speed (if possible).
+ removed references to the never implemented zoom function.
+ the function that shortened the list was actually
+ missing the first entry.
+ more resolutions addedd for networked scanners.
+ added support for Perfection 4990 (Claus Boje).
+
+2007-11-17 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc: add usb id for S510
+
+2007-11-17 Rene Rebe <rene@exactcode.de>
+
+ * backend/avision.[ch]:
+ Implemented support for latest Avision ASICs and features,
+ including overscan, background raster, software scaling for
+ cheaper ASICs used in HP scanners. Changed types used to
+ more portable uint* ones, without underscore (_), removed
+ in-file ChangeLog history, as the files became big enough.
+ Implemented early calibration for easier handling of
+ Avision-based film scanners and implemented support for
+ 2-pass duplex scanners.
+
+2007-11-16 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * include/sane/sanei_thread.h, include/sane/sanei_usb.h:
+ Fixing doxygen warnings.
+
+2007-11-16 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-usb.[ch] backend/plustek-usbcal.c
+ backend/plustek-usbdevs.c backend/plustek-usbshading.c
+ backend/plustek.[ch] backend/plustek.conf.in:
+ Tweaked TravelScan464 settings. Added possibility to disable
+ dark-calibration with lamp on (touches devices like CanoScan1220 etc.)
+ Use attribute packed for data access structs
+
+ * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update
+
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Added function
+ sanei_usb_get_descriptor() to retrieve some infos about a connected
+ device
+
+2007-11-16 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/artec_eplus48u.c, backend/coolscan.c, backend/mustek.c,
+ backend/pie.c, backend/plustek.c, backend/plustek_pp.c,
+ backend/snapscan.c, backend/test.c, backend/u12.c, backend/umax.c:
+ Correct the test of the return value from sanei_thread_begin.
+
+2007-11-12 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: Update epkowa.desc for
+ iScan! 2.10.0. Patch provided by Olaf Meeuwissen.
+
+2007-11-11 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: add check for low brightness
+
+2007-11-11 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: change
+ bulk_write_register to take number of registers instead of
+ byte size of register set
+
+2007-05-08 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * acinclude.m4: NSLinkModule is deprecated in favour of dlopen -
+ only look for NSLinkModule if dlopen is not available
+ * acinclude.m4, m4/libtool.m4: include libtool.m4 using m4_include
+ * ltmain.sh, m4/libtool.m4: newer versions.
+ * configure.in: move the byteorder test to after AC_GNU_SOURCE et al.
+ to avoid warnings when running autoconf,
+ add AC_SUBST(CROSS_COMPILING),
+ add a check for IOKit/scsi/SCSICommandOperationCodes.h,
+ add a check for SCSITaskSGElement (for darwin 64 bit support)
+ * doc/Makefile.in, tools/Makefile.in: disable things that need the
+ built binaries to run when doing cross-compilations
+ * sanei/sanei_scsi.c: IOKit/scsi-commands has moved to IOKit/scsi -
+ support both locations of headers, use SCSITaskSGElement if available
+ * aclocal.m4, config.guess, config.sub, configure,
+ include/sane/config.h.in: update autogenerated files
+ * backends/Makefile.in: remove sanei_config2 from cardscan deps
+ * backends/dll.c: add MacOS X naming convention for dlopen
+ * tools/sane-find-scanner.c: IOKit/scsi-commands has moved to
+ IOKit/scsi - support both locations of headers, fix some warnings
+
+2007-11-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes doc/sane-plustek.man: Update
+ * backend/plustek.c: Bumped build number
+ * doc/descriptions/unsupported.desc: Updated some entries
+ * backend/plustek-usb.c backend/plustek-usbimg.c backend/plustek-usbmap.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c: Fixed copyright
+ * backend/plustek-usb.h backend/plustek-usbdevs.c
+ doc/descriptions/plustek.desc: Added support for TravelScan464
+
+2007-10-28 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: Added the Epson DX-6000 (04b8:082e)
+ based on user report.
+
+2007-10-27 Julien Blache <jb@jblache.org>
+ * backend/net.c: Fix IPv4 legacy code after last changes to the
+ net backend on 2007-10-24.
+
+2007-10-26 Julien Blache <jb@jblache.org>
+ * backend/abaton.c, backend/agfafocus.c, backend/apple.c,
+ backend/artec.c, backend/canon.c, backend/cardscan.c,
+ backend/coolscan.c, backend/epson.c, backend/epson2.c,
+ backend/fujitsu.c, backend/hp3500.c, backend/ibm.c,
+ backend/pint.c, backend/ricoh.c, backend/s9036.c,
+ backend/sm3600.c, backend/sp15c.c, backend/tamarack.c:
+ OPT_NUM_OPTS must be of type SANE_TYPE_INT.
+
+2007-10-25 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c: Removed some more hardcoded
+ sizeof(Genesys_Register_Set)
+
+2007-10-25 Julien Blache <jb@jblache.org>
+ * sanei/sanei_ab306.c: Fix boundary checking after the for() loop
+ in sanei_ab306_open(). From Johannes Meixner at SuSE.
+ * backend/as6e.c: Fix strncpy()/strncat() usage in
+ check_for_driver(). From Johannes Meixner at SuSE.
+
+2007-10-25 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Hopefully removed the remaining hardcoded
+ sizeof(Genesys_Register_Set)
+
+2007-10-25 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: One more instance of
+ sizeof(Genesys_Register_Set) vs 2
+ * backend/genesys.c: Add check for small register set in
+ sanei_genesys_get_address
+
+2007-10-24 Julien Blache <jb@jblache.org>
+ * backends/net.c: Add an optional connection timeout for the
+ initial connection to saned. Based on a patch from Ryan Duryea
+ <rduryea@avanta.com>. Bump net backend version to 1.0.14.
+ * backends/net.conf.in: Add the new connect_timeout option and
+ adjust comments accordingly.
+ * doc/sane-net.man: Document the connect_timeout option and the
+ SANE_NET_TIMEOUT environment variable.
+
+2007-10-19 Stephane Voltz <stef.dev@free.fr>
+
+ * tools/check-usb-chip.c: added detection of rts8801 and
+ rts8891 ASICs
+
+2007-10-13 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_gl841.c backend/genesys_gl646.c: use
+ sizeof(Genesys_Register_Set) instead of 2
+
+2007-10-07 Bertrik Sikken <bertrik@sikken.nl>
+ * doc/descriptions/unsupported.desc: updated with info from
+ 'FormularDaten' e-mails up to 2007/9/29
+
+2007-10-02 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/brother2.desc: add DCP-117C USB IDs
+ and mark support as good, based on user report.
+
+2007-10-01 Stephane Voltz <stef.dev@free.fr>
+
+ * backend/lexmark.c backend/lexmark_low.c:
+ fixed compilation warnings
+
+2007-10-01 Stephane Voltz <stef.dev@free.fr>
+
+ * doc/sane-lexmark.man doc/descriptions/lexmark.desc
+ backend/Makefile.in backend/lexmark.c backend/lexmark_low.c
+ backend/lexmark_sensors.c backend/lexmark_models.c
+ backend/lexmark.conf.in:
+ moved experimental version to current tree
+
+2007-10-01 Stephane Voltz <stef.dev@free.fr>
+
+ * doc/sane-umax_pp.man doc/descriptions/umax_pp.desc:
+ added Genius ColorPage-Life Pro as supported scanner
+ by the umax_pp backend
+
+2007-09-28 Bertrik Sikken <bertrik@sikken.nl>
+ * doc/descriptions/unsupported.desc: updated with info from
+ 'FormularDaten' e-mails from 2007/7/3 to 2007/7/30
+
+2007-09-27 Julien Blache <jb@jblache.org>
+ * doc/backend-writing.txt: fix typos, patch from
+ <jazz_johnson@verizon.net>.
+
+2007-09-26 Julien Blache <jb@jblache.org>
+ * doc/descriptions/unsupported.desc: Added pointer to
+ http://code.google.com/p/kvss905c/ for the Panasonic KV-SS905C and
+ Panasonic KV-S3105C scanners (note that the non-SANE driver at
+ that URL supports other scanners of the KV-SS905C family).
+
+2007-09-25 Bertrik Sikken <bertrik@sikken.nl>
+ * doc/descriptions/unsupported.desc: updated with info from
+ 'FormularDaten' e-mails from 2007/5/1 to 2007/6/24
+
+2007-09-23 Bertrik Sikken <bertrik@sikken.nl>
+
+ * doc/descriptions/unsupported.desc: updated with info from
+ 'FormularDaten' e-mails from 2007/2/11 to 2007/4/30
+
+2007-09-17 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/unsupported.desc: #305009 removed UMAX3400, as it is
+ supported by the Plustek backend
+
+2007-08-28 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Italian translation update
+ * Corrected a typo in backend/canon.c
+
+2007-08-27 Stephane Voltz <stef.dev@free.fr>
+
+ * backend/genesys.h backend/genesys_gl841.c backend/genesys_low.h
+ backend/umax_pp.c backend/umax_pp.h backend/umax_pp_mid.c
+ backend/umax_pp.h AUTHORS doc/sane-umax_pp.man doc/sane-genesys.man:
+ mail address update, minor man update
+
+2007-08-26 Stephane Voltz <stef.dev@free.fr>
+
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c:
+ HP2400 warmup fix by Luke
+
+2007-08-19 Henning Geinitz <sane@geinitz.org>
+
+ * backend/gt68xx.c backend/gt68xx.conf.in backend/gt68xx_devices.c
+ backend/gt68xx_generic.c backend/gt68xx_gt6801.c
+ backend/gt68xx_gt6816.c backend/gt68xx_high.c
+ backend/gt68xx_high.h backend/gt68xx_low.c backend/gt68xx_low.h
+ backend/gt68xx_mid.c doc/sane-gt68xx.man
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Added
+ Artec Ultima 2000 e+, Nortek Myscan 1200, NeatReceipts Scanalizer
+ Professional, Genius Colorpage Slim-1200. Name and email
+ address changes.
+ * AUTHORS: Name and email address change.
+
+2007-08-18 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: Added Stylus CX-5000 (04b8:082b).
+ * backend/epson_usb.c: Added various USB IDs for CX-6000, DX-5050,
+ DX-5000, CX-5000, DX-4050.
+
+2007-08-12 Henning Geinitz <sane@geinitz.org>
+ * doc/descriptions-external/hpljm1005.desc: Added.
+
+2007-08-08 m. allan noah <kitno455 a t gmail d o t com>
+ * frontend/scanimage.c: bugfix: dont round up negative user values
+ * doc/descriptions/fujitsu.desc: add/consolidate new models
+
+2007-08-03 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: add the Epson Stylus Photo RX-700
+ (04b8:0810), based on user report. Add the Epson Stylus CX-6600
+ (04b8:0813), based on user report.
+
+2007-07-26 m. allan noah <kitno455 a t gmail d o t com>
+ * frontend/scanimage.c: add default: blocks to FRAME switch code
+ * backend/fujitsu.[ch]: update to version 1.0.52:
+ - remove unused jpeg function
+ - reactivate look-up-table based brightness and contrast options
+ - change range of hardware brightness/contrast to match LUT versions
+ - call send_lut() from sane_control_option instead of sane_start
+
+2007-07-31 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: add the Epson Stylys DX-5050
+ (04b8:082b).
+
+2007-07-30 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: add the Epson Stylus DX-4050
+ (04b8:082f), based on several reports. Add the Epson Stylus
+ DX-5000 (04b8:082b) on the same grounds.
+ * backend/canon.c: apply patch from Nils Philippsen, turning
+ 3 logical AND into bitwise AND (SANE bug #304363).
+
+2007-07-29 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: Add a RUN rule to the udev rules to
+ automatically disable USB suspend for all known scanners.
+ Works only with kernels >= 2.6.22 where
+ /sys/bus/usb/devices/*/power/level exists.
+
+2007-07-26 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.c: update to version 1.0.51, fix bug in jpeg code
+
+2007-07-26 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: revert my last commit and rework the one
+ before to produce a backward compatible udev rules file. Yay.
+
+2007-07-26 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update
+ * backend/plustek.c: Bumped build number
+ * backend/plustek-usbhw.c: Force output bit set on misc I/O,
+ when lamp is switched
+ * doc/descriptions/unsupported.desc: Updated some Plustek entries
+
+2007-07-25 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: Update udev rules for use with Linux >=
+ 2.6.22 and CONFIG_USB_DEVICE_CLASS=n.
+
+2007-07-20 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma.c backend/pixma.h backend/pixma_mp150.c
+ doc/sane-pixma.man doc/descriptions/pixma.desc:
+ upgraded to version 0.13.1
+ added PIXMA MP960
+
+2007-07-15 m. allan noah <kitno455 a t gmail d o t com>
+
+ * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man:
+ update website and fi-60F status
+ * Authors, backend/dll.conf.in: added cardscan backend
+
+2007-07-14 m. allan noah <kitno455 a t gmail d o t com>
+
+ * doc/sane-cardscan.man,doc/Makefile.in,doc/descriptions/cardscan.desc,
+ backend/cardscan.*,backend/Makefile.in,configure.in:
+ add new v1.0.0 backend for Corex CardScan 800c
+
+2007-07-14 m. allan noah <kitno455 a t gmail d o t com>
+
+ * doc/sane-fujitsu.man: add more known models, fix bug #304450
+ * backend/Makefile.in: libsane-fujitsu.la does not use sanei_thread.lo
+
+2007-07-11 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * tools/check-usb-chip.c: Try to distinguish the various
+ GenesysLogic GeneScan ASICS - GL841, GL842 and GL843
+
+2007-07-10 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: update to v1.0.50,
+ add JPEG support, usb command sending and scan params cleanups
+ * include/sane/sane.h: add SANE_FRAME_JPEG
+ * frontend/scanimage.c: dont crash on unknown frame types
+
+2007-07-10 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Fixed web entries
+ * backend/plustek-usb.h backend/plustek-usbdevs.c backend/plustek.c:
+ Added flag to allow only 1- and 8-bit scanmodes. The Q-Scan does
+ not seem to support 14-bit modes.
+
+2007-06-29 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek-usb*.[ch] backend/plustek.[ch]:
+ Added sheetfed device Q-Scan USB001 from Portable Peripherals
+ Fixed Mustek Bearpaw and made some speedup (bugreports #304343 and
+ #301763)
+ Fixed calibration for senororders other that RGB
+ * doc/descriptions/plustek.desc: Bumped version and added Q-Scan
+ * doc/descriptions/unsupported.desc: Removed Q-Scan
+ * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update
+
+2007-06-28 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.c: update to v1.0.49, fi-5750C usb ID and color mode
+ * backend/fujitsu.conf.in: add fi-5750C
+ * doc/descriptions/fujitsu.desc: bump version, add fi-5750C and S510
+
+2007-06-21 Julien Blache <jb@jblache.org>
+ * sanei/sanei_scsi.c: Switch sanei_scsi to the SG_IO ioctl
+ interface, instead of the asynchronous SG3 read/write interface.
+
+ Makes it possible to use SCSI scanners in 32/64bit mixed
+ environments, thanks to the ioctl 32bit compatibility layer, which
+ is NOT possible using the SG3 interface.
+
+2007-06-18 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-PARPORT.changes: Update.
+ * backend/plustek_pp.c: Bumped build number.
+ * backend/plustek-pp_drv.c backend/plustek_pp_sysdep.h:
+ Make the Kernelmodule work with Kernels > 2.6.15 w/o DEVFS
+
+2007-06-12 Ilia Sotnikov <hostcc@gmail.com>
+
+ * Use libtool instead of ar/ranlib, which correctly handles dependencies
+ (eg. for parallel makes)
+
+2007-05-08 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * po/Makefile.in, po/sane-backends.*.po: New translation keys for
+ hp3500 and hp5590 backends. Updated Swedish translation.
+ * backend/hp5590.c: Do not localize option names
+
+2007-04-29 Ilia Sotnikov <hostcc@gmail.com>
+
+ * backend/hp5590_low.c: don't use libusb structs directly, define
+ necessary of them by ourselves ('struct usb_ctrl_setup' -> 'struct
+ usb_in_usb_ctrl_setup')
+ * backend/hp5590_low.c: renamed 'struct usb_bulk_setup' to 'struct
+ usb_in_usb_bulk_setup' to show its internal usage
+
+2007-04-24 Ilia Sotnikov <hostcc@gmail.com>
+
+ + configure: added check for <netinet/in.h> header
+ + Added files for 'hp5590' backend which supports
+ HP ScanJet 5550/5590/7650 scanners
+ + tools/check-usb-chip.c: added HP ScanJet 5550/5590/7650 detection
+ routine
+
+2007-04-21 Troy Rollo <sane@troy.rollo.name>
+
+ * backend/hp3500.c: Improve speed and reduce noise of most
+ resolutions; deal with an escape code discovered in the scanner's
+ protocol; use hardware detailed calibrations for resolutions up to
+ 300; use improved software detailed calibration for other
+ resolutions; ddd more debug information; drop the 25dpi
+ resolution; make 200dpi the default (the same as the Windows
+ frontend; Add code (not used yet) to deal partially with grayscale
+ and lineart scanning; use I18N strings where appropriate.
+
+2007-04-21 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * doc/descriptions-external/hp5590.desc,
+ doc/descriptions/unsupported.desc:
+ Added description for new external backend hp5590
+ See: http://alioth-lists.debian.net/pipermail/sane-devel/2007-April/018977.html
+
+2007-04-21 Julien Blache <jb@jblache.org>
+ * backend/epson.c: remove bogus check in
+ get_identity2_information(), causing the identification of various
+ Stylus CX5xxx models (among others) to fail. Olaf Meeuwissen from
+ Epson confirmed the check was bogus.
+
+2007-04-17 Julien Blache <jb@jblache.org>
+
+ * backend/microtek.c: add missing braces.
+ * tools/sane-desc.c: use mode 0664 for usbfs device nodes; allows
+ lsusb to still work for everybody on the system.
+
+2007-04-13 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.c: update to v1.0.48, re-enable
+ brightness/contrast for models with built-in support
+
+2007-04-15 Wittawat Yamwong <wittawat@web.de>
+
+ * doc/descriptions/unsupported.desc: Remove Canon PIXMA MP160 and
+ Canon PIXMA MP600 (now supported by pixma backend)
+
+2007-04-13 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * doc/descriptions-external/hp3900.desc,
+ doc/descriptions/unsupported.desc:
+ Moved 3 scanners from unsupported to hp3900
+ See: http://alioth-lists.debian.net/pipermail/sane-devel/2007-April/018980.html
+
+2007-04-13 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.[ch]|fujitsu.conf.in: update to v1.0.47,
+ change gamma determination, add support/usbid for fi-5650C
+ * doc/descriptions/fujitsu.desc: version number update
+ * tools/hal/.cvsignore: ignore .fdi file
+
+2007-04-09 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma*.[ch] doc/sane-pixma.man doc/descriptions/pixma.desc:
+ Updated to version 0.13.0
+ Added MP160, MP180, MP460, MP510 and MP600
+ Fixed a buffer-overflow bug in sane_read()
+
+2007-04-5 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * README.openbsd, tools/README, tools/openbsd/attach,
+ tools/openbsd/detach: add notes about device permissions on
+ OpenBSD and provide some example scripts for hotplugd(8).
+
+2007-03-02 m. allan noah <kitno455 a t gmail d o t com>
+
+ * doc/sane.tex: update to 1.05, fix description of SANE_Parameters,
+ from <dtlinker a t comcast d o t net>
+
+2007-03-21 Julien Blache <jb@jblache.org>
+ * tools/Makefile.in: Remove leftovers from a previous experiment.
+
+2007-03-18 Julien Blache <jb@jblache.org>
+ * tools/hal: New directory.
+ * tools/Makefile.in: Add rules to build hal/10-libsane.fdi.
+ * tools/sane-desc.c: Add output mode 'hal', from David Zeuthen <davidz@redhat.com>.
+
+2007-03-17 Oliver Rauch <oliver.rauch@xsane.org>
+ * Bug #303752: Maybe faulty icc-profile-file length detection:
+ corrected icc profile length calculation
+
+2007-03-08 Earle F. Philhower, III <earlephilhower@yahoo.com>
+
+ * backend/sm3840*.[ch]: Add 1-bpp modes (lineart, halftone)
+ * doc/sane-sm3840.man: Add 1-bpp mode options
+
+2007-03-05 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: Update.
+ * backend/plustek.c: Bumped build number.
+ * backend/plustek-usb.c: Fixed typo.
+ * backend/plustek-usbdevs.c: Added CanoScan to all Canon
+ device strings, identified one more Plustek device as U24.
+ * backend/plustek-usbhw.c: Fixed button handling for Plustek/
+ KYE devices and added some more debug messages.
+
+2007-02-24 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Italian translation update
+ * Second Italian translation update
+
+2007-02-11 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/sane-mustek_pp.man: clean up markup, bug #304392
+
+2007-02-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.pl.po: Polish translation fix (from Jakub
+ Bogusz <qboosh at pld-linux.org>, bug #304410).
+
+2007-02-07 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_scsi.c: Fixed retrieval of HZ.
+
+2007-01-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Added
+ .conf entry for Pluste OpticPro S12 and S24. Updated .desc
+ file.
+ * doc/descriptions/unsupported.desc: Added UMAX Astra 2850. Added
+ Canon Imagerunner series.
+
+2007-01-28 m. allan noah <kitno455 a t gmail d o t com>
+
+ * backend/fujitsu.[ch]: update to v1.0.45,
+ update overscan code to extend max scan area
+ * doc/descriptions/fujitsu.desc: version number update
+
+2007-01-27 oliver rauch <oliver.rauch@rauch-domain.de>
+
+ * backend/umax.c
+ removed bug in highlight blue using green value
+ * doc/umax/umax.CHANGES
+
+2007-01-26 m. allan noah <kitno455 a t gmail d o t com>
+
+ * AUTHORS, doc/sane-fujitsu.man, backend/fujitsu.conf.in,
+ backend/fujitsu.c: updated email address
+ * backend/fujitsu-scsi.h, backend/fujitsu.[ch]: update to v1.0.44,
+ set SANE_CAP_HARD_SELECT on all buttons/sensors.
+ disable sending gamma LUT, quality errors reported.
+ support MS overscan.
+ clamp the scan area to the pagesize on ADF.
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-01-21 Jochen Eisinger <jochen@penguin-breeder.org>
+
+ * doc/descriptions/mustek_pp.desc: Cybercom is a CIS scanner
+
+2007-01-20 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * backend/canon.c, backend/canon-sane.c:
+ Fixed the "three-valued boolean" bug
+
+2007-01-20 Alessandro Zummo <a.zummo@towertech.it>
+
+ * sanei/sanei_tcp.c: added a missing include
+ * backend/epson2.c: fixed a bug while moving scanner data,
+ removed support for line mode (block or ext modes will be used).
+
+2007-01-20 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * acinclude.m4, aclocal.m4, configure, include/sane/config.h.in:
+ Fix autogenerated files
+ * backend/canon.c, backend/epson.c, backend/epson2.c:
+ String harmonization
+ * po/Makefile.in, po/sane-backends.*.po:
+ New translation keys from canon and epson2 backends
+ Updated Swedish translation
+ * backend/dll.c, backend/microtek.c, backend/umax1220.c,
+ sanei/sanei_wire.c: Fixing compiler warnings
+
+2007-01-19 Mattias Ellert <mattias.ellert@tsl.uu.se>
+
+ * doc/descriptions/unsupported.desc: Added Visioneer Strobe Pro USB
+
+2007-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added and updated several
+ scanners.
+
+2007-01-08 Julien Blache <jb@jblache.org>
+ * doc: fix man warnings.
+ * backend/microtek2.c: add missing return status check in
+ sane_start(), preventing an ugly segfault later on.
+
+2006-12-18 Alessandro Zummo <a.zummo@towertech.it>
+
+ * epson2: restructured code once more, splitted
+ in multiple files, added networking
+ support, added FS G extended handshaking mode,
+ make proper use of extended commands when possible
+ * sanei/sanei_tcp.c: read now wait until all
+ the requested data is available.
+
+2006-12-13 Alessandro Zummo <a.zummo@towertech.it>
+
+ * coolscan2: fixed coolscan2 infrared to work
+ as advertised in the man page. RGBA format
+ will come soon.
+
+2006-12-12 Alessandro Zummo <a.zummo@towertech.it>
+
+ * epson2: removed calls to alloca(), code reorganization
+ fixed a bug with request_extended_status (reply
+ length is 33 on older scanners).
+ * include/.cvsignore: added two more entries
+
+2006-12-10 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_devices.c: reduced height of calibration area
+ * backend/genesys_gl841.c: fixed bug in offset calibration(offset
+ values were not clamped to 0..255)
+
+2006-12-10 Ulrich Deiters <ulrich.deiters@uni-koeln.de>
+
+ * canon: disentangled some pointer arithmetics in canon-sane.c
+
+2006-12-07 Alessandro Zummo <a.zummo@towertech.it>
+
+ * epson2: reordered includes, replaced __FUNCTION__,
+ use the new byteorder macros
+ * moved acbyteorder.m4 to m4/byteorder.m4,
+ added m4/stdint.m4
+
+2006-12-06 Alessandro Zummo <a.zummo@towertech.it>
+
+ * Added acbyteorder.m4 macro for endianness conversion
+
+2006-12-02 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_devices.c: fixed gamma settings(1.0 now)
+ * backend/genesys.c backend/genesys_gl841.c: improved calibration
+ for dark shades
+
+2006-12-02 Alessandro Zummo <a.zummo@towertech.it>
+
+ * Added missing bits for epson2 driver.
+
+2006-12-01 Alessandro Zummo <a.zummo@towertech.it>
+
+ * Added (experimental) epson2 driver.
+
+2006-12-01 Alessandro Zummo <a.zummo@towertech.it>
+
+ * Added sanei_tcp interface.
+
+2006-11-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/samsung.desc: SCX-4200 is reported to work.
+
+2006-11-22 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: update.
+ * backend/plustek.c: bumped build number, fixed option
+ descriptors, see bug #303786.
+
+2006-11-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added several scanners, fixed
+ the USB id for Microtek 4850 (bug #304151).
+ * doc/descriptions/umax1220u.desc: Updated status of UMAX 2000.
+ * doc/descriptions-external/brother2.desc: Updated status of
+ Brother MFC-7420.
+
+2006-11-06 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * doc/descriptions-external/epkowa.desc: backend v2.3.0
+
+2006-10-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc: Added HP Photosmart C5100 and
+ ScanJet 8390.
+ * doc/descriptions-external/hpoj.desc: Project is unmaintained.
+
+2006-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/sane-backends.pl.po: Major bugfix and few small changes
+ (noticed by Jaroslaw Gorny) (bug #303962).
+ * po/sane-backends.es.po: Updated (from Jonathan Bravo Lopez
+ <jkdsoft at gmail.com>).
+ * doc/descriptions-external/hp3900.desc
+ doc/descriptions-external/samsung.desc: Updated based on
+ sane-devel information.
+ * doc/descriptions/unsupported.desc: Added Canon Canoscan 4400F,
+ LiDE 70, Corex Cardscan 700 C, Umax Astra 4900, Visioneer
+ Onetouch 7700. Updated other scanners.
+
+2006-10-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/hp3900.desc: Changed status of HP
+ Scanjet 4370 to "minimal" (bug #303839).
+ * doc/scanimage.man frontend/scanimage.c: Added examples on how to
+ set the scan area in the manual page (bug #303802). Mention how
+ to separate parameters from options in --help and manpage (bug
+ #303819).
+ * doc/descriptions/unsupported.desc: Added EDT BizCardReader
+ 900C. Moved Genius ColorPage-SF600 to gt68xx.desc. Minor
+ updates.
+ * backend/gt68xx.c backend/gt68xx_devices.c
+ doc/descriptions/gt68xx.desc doc/gt68xx/gt68xx.CHANGES: Added
+ Support for Genius Colorpage SF600.
+
+2006-09-24 Giuseppe Sacco <eppesuig@debian.org>
+
+ * Updated italian translation
+
+2006-09-18 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: update to v1.0.43,
+ add model-specific code to init_vpd for M3099, clean some noise
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-09-18 Stephane Voltz <stef.dev@free.fr>
+
+ * backend/umax_pp.c backend/umax_pp_mid.c backend/umax_pp.c_low:
+ color calibration fix. Mail address update.
+
+2006-09-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/unsupported.desc
+ doc/descriptions-external/samsung.desc
+ doc/descriptions-external/hpaio.desc: Added several scanners.
+ * po/sane-backends.pl.po: Updated Polish translation (from Jakub
+ Bogusz, bug #303769).
+
+2006-08-31 Oliver Schwartz <oliverschwartz@users.sf.net>
+
+ * backend/snapscan-scsi.c: Bugfix for firmware download
+ from Paul Smedley
+
+2006-08-31 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: update to v1.0.42,
+ fix bug in get_hardware_status (#303798)
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-08-29 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-PARPORT.changes: update.
+ * backend/plustek-pp.h backend/plustek-pp_ptdrv.c backend/plustek_pp.c:
+ fixed "not homing" problem, the sensor did not return when
+ the driver gets the _IOCTL_STOP command
+ fixed compilation issue for kernels > 2.6.15
+ fixed compiler warning conditions
+
+2006-08-28 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c backend/fujitsu-scsi.h: update to v1.0.41,
+ do_usb_cmd() returns io error on cmd/out/status/rs EOF,
+ fix bug in MS buffer/prepick scsi data block
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-08-28 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: changes in gl646_init_regs_for_warmup
+ to add support for HP2400 model.
+
+2006-08-27 Wittawat Yamwong <wittawat@web.de>
+
+ * backend/pixma*.[ch]: update to 0.12.2,
+ use own error codes e.g. PIXMA_EPROTO instead of EPROTO,
+ add MP530, MP800R and MP360,
+ add grayscale mode for MP700 and MP730,
+ add work-around for lock-up ("hang") problem of MP760 and MP780,
+ fix line correction (color alignment) for MP760
+ * doc/sane-pixma.man: update
+ * doc/descriptions/pixma.desc: add MP360,MP530 and MP800R product ID
+ * doc/descriptions/unsupported.desc: remove Smartbase MP360 (supported
+ by pixma backend)
+
+2006-08-26 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch] backend/fujitsu-scsi.h: update to v1.0.40,
+ add 5530C usb id, rewrite brightness/contrast/gamma functions,
+ do_*_cmd functions handle short reads, updated init functions,
+ add MS buffer and prepick support for newer scanners
+ * doc/descriptions/fujitsu.desc backend/fujitsu.conf.in:
+ add 5530C usb id, version number update
+ * doc/descriptions/sane-fujitsu.man:
+ note support for newer scanner models
+
+2006-08-22 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson_usb.c: Add product ID for CX3800/3810, V700/V750
+
+2006-06-11 Eddy De Greef <eddy_de_greef at scarlet dot be>
+
+ * doc/sane-mustek_pp.man: URL update.
+
+2006-08-21 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fix buffer overflow error (submitted by Johannes Meixner)
+
+2006-08-21 Jon Chambers <jon@jon.demon.co.uk>
+ * TIFF tweaks for pickier libtiff under cygwin
+ * backend/Makefile.in: remove explicit $(srcdir) path from .conf
+ source paths to allow support for kdevelop-style build dirs.
+ * backend/dell1600n_net.c: fix compile warnings
+
+2006-08-12 Jon Chambers <jon@jon.demon.co.uk>
+
+ * backend/dell1600n_net.c: update for dell1600n_net.conf + reduce memory footprint
+ * backend/dell1600n_net.conf.in: added
+ * backend/dell1600n_net.c: update for dell1600n_net.conf.in
+
+2006-08-11 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-USB.changes: update.
+ * backend/plustek.c: bumped build number.
+ * backend/plustek-usbdevs.c: lowered speed for LiDE20/30 when
+ using low resolutions.
+ * backend/plustek-usb.c: fixed warning condition.
+
+2006-08-09 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c backend/genesys.c backend/genesys_devices.c:
+ improved sanei_genesys_search_reference_point to get more reliable
+ detection for HP2300 and MD6345. Slight tune up for HP2400 model.
+
+2006-08-09 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/plustek/Plustek-PARPORT.changes doc/plustek/Plustek-USB.changes
+ doc/u12/U12.changes: update.
+ * backend/artec_eplus48u.c backend/plustek.c backend/plustek_pp.c
+ backend/u12.c: changed sane.type to "flatbed scanner" only.
+ * backend/plustek-usbdevs.c: fixed LiDE20/30 motor settings
+
+2006-08-06 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c backend/genesys.c: fix y scan area offset
+ detection for HP2300, one more fixe related to bug #303681.
+
+2006-08-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/epkowa.desc: Updated info about
+ plugins and other comments (patch from Olaf Meeuwissen
+ <olaf.meeuwissen@avasys.jp>).
+
+2006-07-30 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+
+ * backend/genesys_gl841.c: use an intermediate u_int8_t buffer
+ for register write (bug #303681).
+
+2006-07-30 Stephane Voltz <stefdev@modulonet.fr>
+
+ * backend/genesys_gl646.c: use an intermediate char buffer
+ for register bulk write (bug #303681).
+
+2006-07-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/libtool-get-dll-ext: Fixed compilation problem with newer
+ tail programs which don't understand "-1" (bug #303630).
+
+2006-07-17 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: backend v1.0.39, rewrite contrast slope
+ code for readability, portability to other table widths
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-07-16 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: split very long comment lines in the
+ generated udev rules file. Some comment lines very overly long,
+ and udev produced warning messages while loading the rules file.
+
+2006-07-15 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.c: backend v1.0.38, add 'useless noise'
+ debug level (35), for mode sense errors
+ * doc/sane-fujitsu.man: minor text changes, add new debug level
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-07-14 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch] backend/fujitsu-scsi.h: backend v1.0.37,
+ add support for mode sense command, use it to detect various
+ page codes instead of hardcoding. add support for send cmd,
+ use it to enable 8 or 10 bit LUT for brightness/contrast.
+ minor global variable and option description cleanups.
+ * doc/descriptions/fujitsu.desc: version number/status update
+
+2006-07-06 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch]: backend v1.0.36, less verbose debugging,
+ fi-5900 needs even number of bytes per scanline
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-07-05 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch] backend/fujitsu-scsi.h: backend v1.0.35,
+ allow double feed detection, minor cleanups
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-07-04 m. allan noah <anoah AT pfeiffer DOT edu>
+
+ * backend/fujitsu.[ch] backend/fujitsu-scsi.h:
+ update to v1.0.34, add S500 usb id, get more inq and vpd data,
+ allow background color setting for some scanners
+ * doc/descriptions/fujitsu.desc: version number update
+
+2006-07-03 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: Fix a typo in the udev header.
+
+2006-07-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Changed version to 1.0.18-cvs. Enabled
+ compilation warnings.
+ * Makefile.in: Added ChangeLog-1.0.18 to DISTFILES.
+
+Older entries can be found in ChangeLog-1.0.18.
diff --git a/ChangeLogs/ChangeLog-1.0.2 b/ChangeLogs/ChangeLog-1.0.2
new file mode 100644
index 0000000..fbce098
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.2
@@ -0,0 +1,562 @@
+2000-03-06 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in configure: New version is 1.0.2.
+
+2000-03-01 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * doc/sane-scsi.man: fixed an ambiguity and a typo.
+
+2000-02-27 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/v4l*.desc: Changed description from v4l to Video For
+ Linux.
+
+ * backend/lhii.desc: Updated with URL to LHII drivers home page.
+
+ * README.unixware7: Added compile information for SCO UnixWare 7
+ from Jens Scheithauer.
+
+2000-02-26 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Updated documentation for EPSON
+ backend.
+
+2000-02-26 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.desc: updated statuses, added link to a webpage for
+ AS6E parallel models, added manpage info.
+
+2000-02-26 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * Sharp man page updated; man page added to doc/Makefile.in
+
+2000-02-26 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in: Don't use -ansi and -pedantic unless
+ --enable-warnings is used. Warnings are now disabled by default
+ to prepare for the next release.
+
+2000-02-24 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * tools/sane-desc.el: In backend web page, packends not included
+ in the distribution have the version number in parentheses.
+
+2000-02-20 Karl Heinz Kremer <khk@khk.net
+
+ * backend/epson.c: Added some OS/2 compatibility fixes.
+
+2000-02-20 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_scsi.c: Make sure the file is valid ANSI C.
+
+ * configure: Regenerated based on current configure.in.
+
+ * include/sane/sanei_backend.h: Typedef u_int{8,16,32}_t.
+ Defining them gave bogus code in <sys/types.h> on Irix 6.5.
+
+ * backend/lhii.desc backend/musteka4s2.desc backend/nec.desc
+ backend/plustek.desc backend/sagitta.desc backend/st400.desc
+ backend/v4l.desc backend/v4l2.desc: Added info on existing
+ backends. Placed version number in () to indicate that these
+ backend are distributed separately.
+
+ * backend/sharp.desc backend/pint.desc backend/canon.desc
+ backend/s9036.desc: Fixed typo and updated with more information.
+
+ * AUTHORS: Marked active maintainers with '(*)'.
+
+ * sanei/sanei_pio.c: Removed some warnings.
+
+ * configure.in: New flag --enable-warnings to turn on or off more
+ GCC warnings. Default should be 'on' for development snapshots,
+ and 'off' for releases.
+
+2000-02-19 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.*: Updated desc file with new version number and
+ some more supported scanners.
+ Removed OPT_PREVIEW_RESOLUTION so that the frontend can handle
+ the preview resolution.
+ Changed the OPT_RESOLUTION data from a range to a word list, so
+ that the frontends can display the correct list of available
+ resolutions.
+
+2000-02-19 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Updated backend version to v0.5.13. Corrected
+ matrix of which features/enhancements should be active for each
+ scan mode. Fixed bug which causing Contrast to be INactive at
+ startup instead of Threshold.
+ * backend/artec.desc: updated backend version information.
+
+2000-02-19 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_thread.c include/sane/sanei_thread.h: These files
+ declares a _proposed_ internal SANE interface. It was proposed by
+ Yuri Dario to wrap UNIX functions fork(), kill(), waitpid() and
+ wait(), which are missing or not working on OS/2.
+
+ * frontend/saned.c: OS/2 send socket on param list. Patch from
+ Yuri Dario.
+
+ * sanei/os2_srb.h sanei/sanei_scsi.c: Include OS/2 SCSI header file.
+
+ * include/sane/sanei_config.h sanei/sanei_config.c: New function
+ sanei_config_read(). Use this instead of fgets() when reading
+ config files to remove line ending chars on all known platforms.
+ Patch from Yuri Dario.
+
+ * configure.os2: Updated configure param list from Yuri Dario.
+
+2000-02-19 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * updated umax backend to version 1.0 build 18
+ for details read backend/umax.CHANGES
+
+2000-02-19 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * corrected spelling error in umax,c (devive -> device)
+
+2000-02-18 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sharp.c / sharp.h: Options for resolution now conform to
+ the Sane API; fixed and initialisation bug. Updated backend
+ version number in sharp.desc.
+
+2000-02-18 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * updated umax backend to 1.0 build 17
+ (added support for sanei_scsi_open_extended)
+ for details take a look at backend/umax.CHANGES
+
+2000-02-15 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/tamarack.desc: Updated info on request from Rogier
+ Wolff.
+
+2000-02-14 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/m3096g-scsi.h backend/sp15c-scsi.h: Make lint_catcher
+ static to avoid link problems with duplicate symbols.
+
+2000-02-13 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * README.unixware2: Information from Wolfgang Rapp on how to build
+ SANE on UnixWare 2.
+
+ * ltconfig ltmain.sh: Upgraded to libtool 1.3.4 and added Oliver
+ Rauch's soname patch.
+
+ * backend/hp-accessor.c backend/hp-device.c backend/hp-handle.c
+ backend/hp-hpmem.c backend/hp-option.c backend/hp-option.h
+ backend/hp-scl.c backend/hp-scsi.h backend/hp.c backend/hp.desc
+ backend/hp.h doc/sane-hp.man: Updated HP backend to v0.86 from
+ Peter Kirchgessner. Enable scan depths > 8 and add option
+ enable-image-buffering to config file.
+
+ * AUTHORS: Added author for backend s9036.
+ * backend/qcam.desc: Updated with more information.
+
+2000-02-11 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c backend/artec.h: Updated backend to version 0.5.11.
+ Removed mono_adjust function which handled bit offset in 1bpp modes,
+ this is now handled by forcing all scans to be wide enough to fill a
+ full byte. Reinserted code to set brightness on A6000C model as this
+ appears to be the only model that accepts that setting. Bug-fixes
+ for ADF & Transparency option settings.
+ * backend/artec.desc: updated backend version information.
+
+2000-02-11 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.c - Fixed default scan source when option equipment
+ is installed. The default is now always "Flatbed".
+
+2000-02-08 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * Added (again) missing file: doc/sane-logo2.jpg
+
+2000-02-08 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * Added missing umax doc files:
+ - doc/sane-umax-old-scanners-doc.html
+ - doc/sane-umax-not-listed-doc.html
+ - doc/sane-umax-speed-doc.html
+ * Updated:
+ - doc/sane-umax-doc.html
+ - doc/sane-umax-scanners-doc.html
+
+2000-02-08 Matto Marjanovic <maddog@mir.com>
+
+ * backend/microtek.c backend/microtek.h backend/microtek.conf
+ backend/microtek.desc doc/sane-microtek.man: Updated microtek
+ backend to v0.12.0. Changes:
+ - LUT entry size should match bit depth of scan.
+ - Free LUT's in sane_close().
+ - Fixed really dumb type typos in microtek.h.
+ - Added all "mystery" model codes (and an auto-warning).
+ - Added all additional document size codes.
+ - Made function (description) of "scan speed" more obvious.
+ - Added entries for Color PageWiz.
+ - Added entries for Agfa DuoScan.
+ - A few miscellaneous cleanups to quiet gcc warnings.
+
+2000-02-07 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * frontend/saned.c sanei/sanei_pio.c sanei/sanei_scsi.c: Some OS/2
+ patches from Yuri Dario.
+
+ * frontend/scanimage.c: Avoid sprintf("%s", NULL). Bugreport and
+ fix from Yuri Dario.
+
+2000-02-06 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure: Regenerated based on current configure.in.
+
+ doc/Makefile.in doc/sane-logo.gif doc/sane-logo.png doc/sane.gif
+ doc/sane.png: Convert .gif to .png.
+
+ * backend/canon.c backend/snapscan-sources.c: Port to HP/UX. Stop
+ using GCC specific features.
+
+2000-02-05 Rene Rebe <rene.rebe@myokay.net>
+ * backedn/avision.? only minor updates and the new home-page
+ url ...
+
+2000-02-05 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * fixed wrong buffer size handling for old Linux SG drivers
+ in sanei_scsi.c
+ * updated sane-scsi.man: How to change the buffer size,
+ if the new Linux SG driver is being used.
+ * fixed a type on sharp.c
+
+2000-02-03 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.[ch] Reworked the gamma correction stuff
+
+2000-02-02 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.[ch] Finally put the USB fix into the CVS
+ version. Removed version number from epson.h so that this
+ file does not need to be updated everytime epson.c changes.
+
+2000-02-01 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.[ch] More changes in the attach function to
+ recognize USB scanners again.
+ * doc/sane-epson.man More updates to the man page.
+
+2000-01-29 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * updated umax backend to version 1.0-build-16
+ for details take a look at backend/umax.CHANGES
+
+2000-01-31 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/hp-accessor.c backend/hp-accessor.h backend/hp-device.c
+ backend/hp-device.h backend/hp-handle.c backend/hp-hpmem.c
+ backend/hp-option.c backend/hp-option.h backend/hp-scl.c
+ backend/hp-scl.h backend/hp-scsi.h backend/hp.TODO backend/hp.c
+ backend/hp.desc doc/sane-hp.man: Updated to v0.85 from Peter
+ Kirchgessner.
+
+2000-01-30 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c backend/artec.h: (v0.5.9) changes to get lineart
+ and halftone modes working on AT12 and AM12S models. bugfixes to
+ eliminate hanging on some AT12 models.
+ * backend/artec.desc: version and model status updates
+
+2000-01-30 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * corrected missing "/" in include/sane/config.h.in line 251
+
+2000-01-30 Rene Rebe <rene.rebe@myokay.net>
+
+ * backend/avision.c fixed to compile on HP/UX
+ * backend/avision.desc fixed typo
+ * AUTHORS changed my eMail address
+
+2000-01-30 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/dll.c backend/dll.aliases doc/sane-dll.man: Aliased and
+ hidden backend patch from Ingo Wilken.
+
+ * config.sub configure.in include/sane/config.h.in sanei/sanei_scsi.c:
+ UnixWare 2.x and UnixWare 7 port by Wolfgang Rapp.
+
+2000-01-29 Karl Heinz Kremer <khk@Kk.net>
+
+ * backend/epson.[ch] Moved gamma "stuff" from advanced to standard
+ options section to fix core dump in xscanimage
+ Removed pragma pack() to make it easier to compile on non-gcc
+ systems
+
+2000-01-29 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * preview (xscanimage): added GDK_INPUT_EXCEPTION to gdk_input_add
+ * updated umax-backend to build 15 (for more see umax.CHANGES
+ * xscanimage: added GDK_INPUT_EXCEPTION to gdk_input_add
+
+2000-01-26 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch] Bugfix for resolution selection via menu
+ Fixed coredump when no scanner found
+ merged Christian Bucher's newest version
+
+ * AUTHORS ChangeLog
+
+2000-01-26 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/m3096g-scsi.h backend/m3096g.c backend/m3096g.desc
+ backend/m3096g.h backend/sp15c-scsi.h backend/sp15c.c
+ backend/sp15c.desc backend/sp15c.h: Updated backends sp15c
+ (v1.12) and m3096g (v1.11) from Randolph Bentson.
+
+2000-01-25 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.h backend/artec.c backend/artec.desc
+ installed new version (0.5.6) of artec backend with support
+ for Artec AM12S and Plustek 19200S models and numerous bugfixes.
+ * doc/sane-artec.man
+ updated manpage to reflect new list of supported models and
+ backend status.
+
+
+2000-01-25 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * frontend/scanimage.c: minor modifications to the new batch mode
+ If an error occurs in batch mode, the corresponding output file
+ is now deleted. (Should make post-processing easier, because
+ otherwise we would have an empty output file every time the
+ ADF is empty or paper is jammed.)
+
+2000-01-25 Kazuya Fukuda <fukuda@avm.nhe.nec.co.jp> and
+ Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c: Fix of possible segfault in sane_init
+ * backend/sharp.conf: contains now a complete sample configuration
+
+2000-01-25 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * frontend/scanimage.c: Return SANE_STATUS_NO_MEM if advance()
+ failes. Add return value to test_it().
+
+ * include/sane/sanei_debug.h: Add fflush() after fprintf() in
+ DBG macro.
+
+ * AUTHORS backend/Makefile.in backend/m3096g.h backend/m3096g.c
+ backend/m3096g-scsi.h backend/m3096g.desc backend/m3096g.conf
+ backend/sp15c.h backend/sp15c.c backend/sp15c-scsi.h
+ backend/sp15c.conf backend/sp15c.desc backend/dll.conf
+ doc/Makefile.in doc/sane-fujitsu.man: Added backends sp15c (v1.11)
+ and m3096g (v1.10).
+
+ All patches from Randolph Bentson.
+
+2000-01-24 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * backend/sharp.c, backend/sharp.h: update to version 0.30
+ (sorry, forgot to make this note some days earlier)
+
+2000-01-24 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * Added test for libcam to configure.in
+ it is needed by FreeBSD 3+
+
+2000-01-21 Rene Rebe: <rene.rebe@okay.net>
+
+ * ChangeLog: updated (oversaw last time, sorry)
+ * backend/avision.c: fixed some compiling warnings
+
+2000-01-21 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_scsi.c: Bugfix: Added return type for dummy
+ sanei_scsi_open_extended() call. Bugreport for Solaris from
+ Martin Spott.
+
+2000-01-20 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_ab306.c: Removed compiler warnings.
+
+ * frontend/scanimage.c: Adds a "batch mode" to the software, that
+ can be used in conjunction with an ADF device, so that one can
+ e.g. scan a complete document consting of multiple pages with just
+ one call to scanimage. This modification was created by Christian
+ Bucher so that his Epson scanner could use the ADF. Patch from
+ Karl Heinz Kremer.
+
+2000-01-19 Rene Rebe <rene.rebe@okay.net>
+
+ * backend/avision.*: added - the (very) basic avision backend
+ * backend/Makefile.in: updated for the avision backend
+ * AUTHORS: updated
+
+2000-01-18 Karl Heinz Kremer <khk@khk.net>
+ * fixed typo in epson.desc and fixed the dates for
+ two of my earlier submissions in ChangeLog file
+
+2000-01-16 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc updated with URL
+ * backend/epson.c added support for Expression family
+ of scanners
+ * doc/sane-epson.man updated
+
+2000-01-10 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc fixed/updated. Now shows a link to
+ the alternative FilmScan 200 backend.
+
+2000-01-09 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.* updated. This is a new backend still based
+ on the origial Sane 1.0.1 version, but with lots of work
+ done: Support for ADF/TPU, more function levels (up to B9
+ and initial work for F5), parallel scanner support and initial
+ support for USB scanners (don't use this yet, it still needs
+ a lot of work to be functional and usable).
+
+2000-01-05 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * backend/umax* updated to backend version 1.0 build 14
+ for detailled info take a look at umax.CHANGES
+
+2000-01-05 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_scsi.c include/sane/sanei_scsi.h configure.in
+ linux_sg3_err.h: Updated Linux SCSI Generic (SG) driver as
+ follows:
+ - new handling of sanei_scsi_max_request_size, if an SG
+ driver >= 2 is installed;
+ - SCSI command queueing on SG level for SG drivers >= 2.1.35;
+ - usage of the new interface in SG version 3, if available
+ - new configure option --enable-scsibuffersize=N
+ Patch from Abel Deuring <a.deuring@satzbau-gmbh.de>.
+
+2000-01-02 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in tools/Makefile.in tools/sane-config.in: New script
+ sane-config to help frontend developers find the sane libraries.
+
+1999-12-29 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in: Add gcc options '-W -Wall -Wpointer-arith
+ -Wcast-qual' to at least get warnings on illegal C code which
+ would fail to compile on HP/UX native compiler.
+
+1999-12-20 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * include/sane/config.h.in backend/dc25.desc backend/dc25.c:
+ Updated DC-25 backend to v1.2 from Peter Fales
+ <psfales@lucent.com>.
+ - Updated dc25.desc
+ - Retry capability for missing data or bad checksums in the data
+ from the camera. This has resulted in a dramatic reduction in
+ download failures.
+ - Include HAVE_CFMAKERAW in config.h.in and dc25.c.
+
+ * backend/dc210.c: Corrected HAVE_cfmakeraw to HAVE_CFMAKERAW.
+
+ * frontend/xscanimage.c: Change GIMP_EXTENSION to
+ SANE_GIMP_EXTENSION to avoid name conflict with gimp. Patch from
+ Stanislav Brabec <utx@k332.feld.cvut.cz>.
+
+1999-12-12 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/ricoh.h backend/ricoh.c: Add support for Ricoh IS50
+ scanner. Limit IS50 resolution to 400 dpi. Reverse IS50 contrast
+ direction. Patch from Dick Streefland
+ <Dick.Streefland@inter.NL.net>.
+
+ * backend/microtek.c backend/microtek.h backend/microtek.conf
+ backend/microtek.desc doc/sane-microtek.man: Updated Microtek
+ backend to v0.11.0 from Matthew Marjanovic <maddog@mir.com>.
+
+ * backend/microtek2.c backend/microtek2.h: Updated Microtek2
+ backend to v0.8 from Bernd Schroeder <bernd@aquila.muc.de>.
+
+1999-11-20 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * ltmain.sh:
+ changed variable soname from "libsane-backendname.*"
+ to "libsane.*" by sed command.
+ * ltmain.sh:
+ changed again the sed command, forgot to remove "0-9"
+
+1999-11-14 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/artec.c backend/artec.h backend/artec.desc
+ doc/sane-artec.5 doc/Makefile.in: Updated Artec backend to v0.5
+ from Chris Pinkham <cpinkham@infi.net>.
+
+1999-11-11 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/microtek2.c backend/microtek2.h backend/microtek2.desc:
+ Updated Microtek2 backend to vpre0.8.161099 from Bernd Schroeder
+ <bernd@aquila.muc.de>
+
+ * backend/canon-* NEWS doc/canon.*: Updated Canon backend to
+ v991108 from Manuel Panea <mpd@rzg.mpg.de>.
+
+1999-09-14 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * removed sane-umax-*.gif and umaxlogo.gif,
+ the files were replaced by jpg format.
+
+1999-09-13 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * backend/umax* and doc/sane-umax* updated to version 1.0-build-12
+ for detailled info take a look at umax.CHANGES
+
+1999-09-12 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * include/sane/config.h.in: Add missing HAVE_SYS_SOCKET_H.
+
+ * backend/hp-handle.c backend/hp-option.c backend/hp-option.h
+ backend/hp-scl.c backend/hp-scl.h backend/hp-scsi.h backend/hp.c
+ backend/hp.desc backend/hp.h doc/sane-hp.man: Updated backend to
+ v0.83 from Peter Kirchgessner <peter@kirchgessner.net>. News:
+ - Reset scanner before downloading parameters (fixes problem with
+ sleep mode of scanner)
+ - Fix problem with coredump if non-scanner HP SCSI devices are
+ connected (CDR)
+ - Option scan-from-adf replaced by scantype
+ normal/adf/xpa. Transparency adapter scans (XPA) allow scanning
+ with internal light source switched off.
+ - PhotoScanner: Allow scanning of slides/negatives only at
+ multiple of 300 dpi. This fixes problem with preview which
+ scanned at arbitrary resolutions.
+ - (by Marian Szebenyi): close pipe (coredump on Digital UNIX)
+
+ * backend/Makefile.in: Correct install target to also work on
+ platforms where dll endings isn't .so (like HP/UX). Extract
+ endings from libsane-dll.la.
+
+1999-09-07 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * tools/find-scanner.c: Checks (Linux only so far) for SCSI
+ Generic support in the OS kernel. If NOT present it tells the user
+ they may need SG drivers. Patch from Nick Lamb
+ <njl98r@ecs.soton.ac.uk>.
+
+ * sanei/sanei_scsi.c [sanei_scsi_cmd sanei_scsi_open]: Digital
+ UNIX 4.0D patches from Marian Szebenyi <dms35@cornell.edu>.
+
+1999-08-16 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in: Turn on more gcc warnings.
+
+ * acinclude.m4 configure.in: Separate GTK_LIBS into LIBS and
+ LDFLAGS to get the X programs to link on HP/UX.
+
+1999-08-12 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * aclocal.m4 configure.in configure: Generate configure and
+ aclocal.m4 with autoconf 2.13. Adding AC_PROG_LD, trying to get
+ this compiling on CygWin32. Add AM_PROG_CC_STDC to get it to
+ compile out of the box on HP/UX.
+
+ * lib/dll.c: Use calloc() instead of malloc() and memset(). Use
+ dlerror() instead of strerror() when dlopen fails
+ (bugfix from Ingo Wilkens).
+
+1999-08-11 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * config.guess config.sub: Updated to latest versions from FSF.
+ Better support for BeOS, WinNT and others.
+
+1999-08-09 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * Started CVS branch DEVEL_1_9.
+
+ * install-sh ltconfig ltmain.sh mkinstalldirs: Updated from
+ automake 1.4 and libtool 1.3.3.
diff --git a/ChangeLogs/ChangeLog-1.0.20 b/ChangeLogs/ChangeLog-1.0.20
new file mode 100644
index 0000000..9089bc2
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.20
@@ -0,0 +1,2087 @@
+2009-05-03 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * Makefile.in, aclocal.m4, configure, */Makefile.in: Regenerated
+ with newer automake.
+ * backend/Makefile.am, tools/sane-config.in: Add missing
+ $GPHOTO2_LDFLAGS so library can be found.
+ * tools/Makefile.am: Add mising $SCSI_LIBS to sane-find-scanner.
+
+****** Release of sane-backends 1.0.20. End of code freeze ******
+
+2009-05-03 m. allan noah <kitno455 a t gmail d o t com>
+ * config.guess, config.sub: updated to latest versions
+ * NEWS, configure.in, configure: updated for 1.0.20
+ * sane-backends.lsm, doc/releases.txt: minor tweaks
+ * doc/descriptions/coolscan3.desc, doc/descriptions/rts8891.desc:
+ add :new marker, correct manpage link
+
+2009-05-01 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: copy_buffer() needs to count lines, or M309[12]
+ cannot scan in duplex
+
+2009-04-30 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: ignore errors in scanner_control(),
+ M3091 has not worked since sane 1.0.19, due to this.
+
+2009-04-30 m. allan noah <kitno455 a t gmail d o t com>
+ * acinclude.m4, backend/gphoto2.c, configure, include/sane/config.h.in:
+ deal with upcoming gphoto2 interface change (patch by Chris Bagwell)
+ * po/sane-backends.nl.po: updates from Martin Kho
+
+2009-04-29 m. allan noah <kitno455 a t gmail d o t com>
+ * po/sane-backends.nl.po: updates from Martin Kho
+ * po/sane-backends.de.po: updates from Burkhard Luck
+ * po/Makefile.am, po/Makefile.in, po/sane-backends.en_GB.po: new
+ translation from Andrew Coles
+ * po/*.po: rebuilt with new strings
+
+2009-04-29 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man doc/sane-rts8891.man: documentation updates and
+ cleanups
+
+2009-04-28 Julien Blache <jb@jblache.org>
+ * sanei/sanei_scsi.c: /proc/scsi is being deprecated in the Linux
+ kernel; use sysfs for SCSI device enumeration in
+ sanei_scsi_find_devices() by default, keep
+ sanei_proc_scsi_find_devices() as a fallback option.
+
+2009-04-27 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek-usbdevs.c:
+ Tweaked highspeed settings for Epson 1260
+
+2009-04-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891.h backend/rts8891_devices.c
+ backend/rts8891_low.c backend/rts8891_low.h backend/rts88xx_lib.c
+ backend/rts88xx_lib.h: turn off scanner sharing option to off by default
+ to keep on the safe side, copyright and internal version updates.
+
+2009-04-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c:
+ shading calibration fixes for HP2300
+
+2009-04-25 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: fixed TPU warmup retry
+
+2009-04-23 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c:
+ y scan position and shading calibration fixes for MD5345/MD6471
+
+2009-04-23 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc: update S1500 status to complete
+
+2009-04-22 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/sane.h: convert new frame and status to #define
+
+2009-04-21 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc,
+ backand/pixma_mp150.c:
+ Updated documentation for Pixma MP240, reported to work fine by Nik.
+
+2009-04-21 Alex Belkin <abc@telekom.ru>
+ * backend/xerox_mfp.c: update version number.
+
+2009-04-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc: add S1500 usb ids and status
+ * backend/canon_dr.c: update credits
+ * doc/sane-fujitsu.man, doc/sane-canon_dr.man: update version numbers,
+ dates, credits and known issues
+ * doc/saned.man: remove section about uncontrolled data port range
+
+2009-04-20 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/coolscan3.c: temporarily disable infrared.
+
+2009-04-17 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Updated documentation for Pixma MP540, reported to work fine by Rogge.
+
+2009-04-17 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: Always do shading
+ calibration in color mode on gl841.
+ * backend/genesys.c, backend/genesys_gl841.c: Fix bugs introduced above.
+
+2009-04-16 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.h backend/genesys.c backend/genesys_gl646.c
+ backend/genesys_devices.c: y scan position fixes
+ - added a 'clear calibration cache button'
+
+2009-04-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl646.c: calibration cache
+ activation for gl646 based scanners
+
+2009-04-15 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, doc/descriptions/fujitsu.desc: backend v93
+ - return cmd status for reads of sensor options
+ * backend/canon_dr.c, doc/descriptions/canon_dr.desc: backend v26
+ - return cmd status for reads of sensor options
+ - allow rs to adjust read length for all bad status responses
+
+2009-04-14 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c:
+ shading calibration rework for GL646 based scanners
+
+2009-04-13 m. allan noah <kitno455 a t gmail d o t com>
+ * tools/sane-desc.c: fix double summing of untested column
+
+2009-04-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: minor version change to test commit scripts
+
+2009-04-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/pnm.c: conditional handling of STATUS_HW_LOCKED
+ and STATUS_WARMING_UP
+
+2009-04-12 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/doxygen-sanei.conf.in: update to recent version of doxygen
+
+2009-04-12 m. allan noah <kitno455 a t gmail d o t com>
+ * configure.in: change version to 1.0.20cvs
+ * configure: rebuild from configure.in
+ * include/sane/sane.h: hide API changes (minor, frame and status)
+ * backend/canon_dr.c, backend/fujitsu.c: SANE_FRAME_JPEG
+ * backend/coolscan3.c: SANE_FRAME_RGBI
+ * backend/genesys_gl646.c, backend/genesys_gl841.c: STATUS_HW_LOCKED
+ * backend/rts8891.c, frontend/scanimage.c: STATUS_WARMING_UP
+ * backend/pixma_io_sanei.c, backend/xerox_mfp.c,
+ backend/sane_strstatus.c: STATUS_HW_LOCKED & STATUS_WARMING_UP
+ * doc/releases.txt: minor updates for new build system
+
+2009-04-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Updated documentation for i-SENSYS MF4018 support.
+
+2009-04-07 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: update for iScan 2.19.0,
+ from Olaf Meeuwissen.
+
+2009-04-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_io.h, backend/pixma_io_sanei.c, doc/sane-pixma.man:
+ Increased timeouts for read bulk and write bulk operations to 10s
+ Changed minimum timeout for interrupt read to 100ms
+ For MAC OS X : added a wrapper to sanei_usb_read_int as darwin libusb
+ does not handle timeouts in interrupt reads. This disables button scan
+ for MAC OS X, updated man page with this info.
+ * backend/pixma_mp150.c:
+ Added 2 new Canon Pixma models but usb pid/vid yet unknown.
+
+2009-04-05 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr.conf.in: backend v24
+ - fix DR-2510C duplex deinterlacing code
+ - rewrite sane_read helpers to read until EOF
+ - update sane_start for scanners that dont use object_position
+ - dont call sanei_usb_clear_halt() if device is not open
+ - increase default buffer size to 4 megs
+ - set buffermode on by default
+ - hide modes and resolutions that DR-2510C lies about
+ - read_panel() logs front-end access to sensors instead of timing
+ - rewrite do_usb_cmd() to use remainder from RS info
+ * doc/desciptions/canon_dr.desc: backend v24, update DR-2510C comment
+
+2009-03-31 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c:
+ - silenced some debug statements during scanner detections
+ - increased timeouts to 20 seconds as 10 seconds is apparently
+ - not enough for the combination of a Mac and an MX850.
+
+2009-03-21 Alex Belkin <abc@telekom.ru>
+ * backend/xerox_mfp.conf.in: add Xerox Phaser 6110MFP
+ * backend/xerox_mfp.c: compatibility with scanners w/o feeder.
+
+2009-03-28 Julien Blache <jb@jblache.org>
+ * backend/avision.c: fix typos in error messages in
+ sense_handler().
+
+2009-03-27 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v23
+ - rewrite all image data processing code
+ - handle more image interlacing formats
+ - re-enable binary mode on some scanners
+ - limit some machines to full-width scanning
+ * doc/desciptions/canon_dr.desc: v23, improved comments
+
+2009-03-25 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch]: backend v22
+ - add deinterlacing code for DR-2510C in duplex and color
+
+2009-03-25 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: Add calibration cache
+
+2009-03-24 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v21
+ - correct rgb padding macro
+ - skip send_panel and ssm_df commands for DR-20xx scanners
+ * doc/desciptions/microtek2.desc: add ScanMaker 6400XL
+
+2009-03-24 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * doc/Makefile.am: Don't include any template.desc. into
+ generated HTML files.
+
+2009-03-23 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v20
+ - improved macros for inquiry and set window
+ - shorten inquiry vpd length to match windows driver
+ - remove status-length config option
+ - add padded-read config option
+ - rewrite do_usb_cmd to pad reads and calloc/copy buffers
+ * backend/canon_dr.conf.in: s/status-length/padded-read/g
+
+2009-03-22 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch]: backend v19
+ - pad gray deinterlacing area for DR-2510C
+ - override tl_x and br_x for fixed width scanners
+ * doc/descriptions/canon_dr.desc: backend v19, update comments
+
+2009-03-21 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v15 thru v18
+ - add byte-oriented duplex interlace code
+ - add RRGGBB color interlace code
+ - add basic support for DR-2580C, DR-2050C, DR-2080C, DR-2510C
+ - add more unknown setwindow bits
+ - add support for 16 byte status packets
+ - clean do_usb_cmd error handling (call reset more often)
+ - set status packet size from config file
+ - rewrite config file parsing to reset options after each scanner
+ - add config options for vendor, model, version
+ - dont call inquiry if those 3 options are set
+ - remove default config file from code
+ - add initial gray deinterlacing code for DR-2510C
+ - rename do_usb_reset to do_usb_clear
+ * doc/descriptions/canon_dr.desc: backend v18, update model status
+ * backend/canon_dr.conf.in: added better comments and new options
+
+2009-03-21 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_devices.c: Enable Motor again for combined
+ dark/bright calibration, fix calculation of pixel number used in
+ calibration
+ * backend/genesys_devices.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: Remove park_head
+ * backend/genesys_devices.c, backend/genesys_gl841.c: Calculate
+ shading coefficients using maximum input resolution available
+
+2009-03-21 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v91
+ - remove unused temp file code
+
+2009-03-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hpljm1005.c: use private function instead of round()
+
+2009-03-19 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_devices.c, backend/genesys.conf.in:
+ Add basic support for Visioneer XP100 rev 3 and USB IDs for
+ Syscan DocketPort 465
+
+2009-03-06 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c backend/pixma_bjnp.h
+ backend/pixma_bjnp_private.h backend/pixma_io_sanei.c:
+ Make bjnp protocol more resilient against packet loss and corruption
+ Changed timeout for all responses to be at least 10 seconds
+ Send all broadcasts for scanner detection 5 times
+ Made sure scanners are added to device list only once
+ Changed device-id for bjnp so it uses scanner hostname/ip-address
+ instead of mac address as this is more human friendly.
+ To make room, use scanner model instead of USB-id (which is bogus
+ for network scanners
+
+2009-03-17 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/desc/gt68xx.desc, backend/gt68xx.conf.in: add NeatReceipts
+ Mobile Scanner (from Kelly Price)
+
+2009-03-13 m. allan noah <kitno455 a t gmail d o t com>
+ * frontend/scanimage.c, doc/scanimage.man: make -B (buffer-size)
+ selectable, and make long name consistent. (#309672 by Johannes Berg)
+
+2009-03-13 m. allan noah <kitno455 a t gmail d o t com>
+ * tools/sane-desc.c: remove 8859-1 chars from string cleaner,
+ enforce only printable ASCII on output
+
+2009-03-13 Ilia Sotnikov <hostcc@gmail.com>
+ * frontend/saned.c:
+ - Remove unnecessary 'res' variable assignment in check_host()
+ (AF-indep version)
+
+2009-03-13 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: update for iScan 2.18.0,
+ from Olaf Meeuwissen.
+ * frontend/saned.c: rework Ilia's changes in
+ check_host(). Explicitly bind IPv6 addresses first, introduce
+ do_bindings_family() split off of do_bindings().
+
+2009-03-12 Ilia Sotnikov <hostcc@gmail.com>
+ * frontend/saned.c:
+ - Allow host checking to proceed if no local name was found
+
+2009-03-12 Ilia Sotnikov <hostcc@gmail.com>
+ * frontend/saned.c:
+ - Use hstrerror (h_errno) instead of strerror(errno) on gethostbyname()
+ errors
+
+2009-03-12 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Added ImageClass MF4010 support in pixma backend docs.
+ * backend/pixma_imageclass.c:
+ Removed ADF capability to ImageClass models without ADF
+ * backend/pixma.h, backend/pixma_common.c, backend/pixma_io_sanei.c:
+ Added a PIXMA_EOF error return code
+
+2009-03-09 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_devices.c
+ backend/genesys_gl646.c doc/descriptions/lexmark.desc: cleanups
+ for genesys backend. Change in document detection for gl646
+ sheetfed scanners.
+ - lexmark backend description update
+
+2009-03-09 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c:
+ 1200 dpi scan fix and head positionning fixes
+
+
+2009-03-07 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.c, backend/canon_dr.conf.in: backend version 14
+ - remove HARD_SELECT from counter (Legitimate, but API violation)
+ - attach to CR-series scanners as well
+
+2009-03-06 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp_private.h: disabled experimental/incomplete
+ button handling for bjnp protocol as it seems to cause problems
+ with xsane preview
+
+2009-03-06 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.c, backend/canon_dr.conf.in,
+ doc/descriptions/canon_dr.desc: backend version 13
+ - new vendor ID for recent machines
+ - add usb ids for several new machines
+ - DR-4010C reported good
+
+2009-03-05 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/umax1220u.c: set initial scan area dimensions to maximum
+
+2009-03-05 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in: Allow user to disable latex support; original
+ patch from Johnson Earls.
+
+2009-03-05 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions-external/epkowa.desc: update all broken urls
+
+2009-03-04 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/coolscan3.desc, doc/sane-coolscan3.man,
+ doc/Makefile.in|am: add missing coolscan3 docs
+ * backend/dll.conf.in: # out epson and coolscan2, remove hpoj text
+ * doc/descriptions/epson2.desc: add Epson RX-620
+
+2009-03-03 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Fix the generated generic gamma table.
+
+2009-02-28 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * tools/sane-config.in: Add space mistakenly removed during
+ last update.
+
+2009-03-03 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: add Epson RX-620 (0x04b8 0x0811),
+ reported by Heikki Kantola.
+
+2009-02-28 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * acinclude.m4, tools/sane-config.in: Add in missing libraries
+ to sane-config missed during fix to stop using LIBS to link everything.
+ Add back in code to move LDFLAGS out of $GPHOTO2_LIBS and into
+ GPHOTO2_LDFLAGS.
+
+2009-03-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c, backend/genesys_gl646.c: fix 400, 1200
+ and 2400 dpi scan modes for MD5345/MD6471
+
+2009-03-02 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: work around backends that can't keep their
+ dirty fingers off stdin/stdout/stderr when run through inetd,
+ breaking the network dialog and crashing the remote net backend.
+
+2009-02-28 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * m4/byteorder.m4: Delete temporary file in all cases.
+ * backend/Makefile.am, japi/Makefile.am: Use BUILT_SOURCES
+ instead of dependency so that files are not compiled
+ during "dist" target.
+
+2009-02-28 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.conf.in, backend/genesys_devices.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: Add support for
+ Ambir/Syscan DocketPORT 665
+ * backend/genesys.conf.in, backend/genesys_devices.c,
+ backend/genesys_low.h: Add support for Visioneer Roadwarrior
+ * backend/genesys_gl841.c: Adjust gl841 part to recent changes
+
+2009-02-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys.h
+ backend/genesys_devices.c backend/genesys_gl646.c backend/genesys_gl841.c
+ backend/genesys_low.h: rewrite of gl646 internals to enable easy
+ scanner addition and better calibration process. Untested support for
+ hp3670. Use of id in genesys_devices structures to have more robust
+ descriptions.
+
+2009-02-25 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * acinclude.m4, backend/*.[ch], tools/*.[ch], frontend/*.[ch]:
+ Global replace of u_int??_t with C9x standard based uintxx_t
+ in order to remove some tricky and overlapping portability logic
+ from acinclude.m4 and leave it in only m4/stdint.m4.
+
+2009-02-24 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, m4/stdint.m4: Update to latest version to
+ get latest fixes and use logic to not recreate _stdint.h if
+ no changes (to prevent unneeded recompiles).
+ * m4/byteorder.m4: Added support to reuse existing byteorder.h if
+ no changes to prevent timestamp causing a recompile.
+
+2009-02-24 m. allan noah <kitno455 a t gmail d o t com>
+ * frontend/scanimage.c: improved comments, simplified x/y option code,
+ removed buggy -1/+1 x/y code (#311172), expose non-settable options,
+ check for invalid caps on options, handle option descs with \n
+ * doc/releases.txt: add note about cvs checkout on alioth.
+
+2009-02-24 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/*.[ch]: more consistent #include "../include/sane/config.h"
+
+2009-02-24 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/Makefile.am/in, backend/xerox_mfp.conf.in: should use conf.in
+
+2009-02-23 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * backend/Makefile.am: Add back in deletion of $(sanelibdir)/libsane.*
+ for buggy libtools. Add some minor documentation.
+ * doc/backend-writing.txt: Add minor document updates to reflect
+ conversions to automake.
+
+2009-02-23 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v90,
+ add S510M usb ID's, add fi-6010N to .desc
+ * backend/epjitsu.conf.in, doc/descriptions/epjitsu.desc,
+ doc/sane-epjitsu.man: add S300M usb ID's
+
+2009-02-23 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_devices.c, backend/genesys_gl841.c,
+ backend/genesys_low.h: Add post_scan and eject_feed to struct
+ Genesys_Model
+ * backend/genesys.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c: Move sanei_genesys_{start,stop}_motor into
+ chip specific sources
+ backend/genesys_gl841.c: Make start/stop_(motor, now)action
+ actually work, various warning cleanups
+
+2009-02-23 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ backend/hp3900_config.c: Fix area of negative/slide scans for
+ HP ScanJet G3110.
+
+2009-02-22 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * japi/Makefile.am: Add back -version-number to java library but
+ also add V_REV.
+ * backend/Makefile.am: Use variables to add libraries to backends
+ instead of direct substitution. Easier to touch up variables on
+ problem platforms then substitution. Also, add back in creating
+ dll.d directory; missed during conversion.
+ * backend/genesys_gl841.c: Portablity fixes for strict
+ C compilers.
+
+2009-02-21 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * po/Makefile.am, configure.in: convert remaining directory,
+ po, to use automake.
+ * doc/Makefile.am: Get rid of unneeded gnu extensions to quieten
+ down autotools warnings.
+ * lib/getopt.c, lib/getopt1.c: Fix disabling getopt compile again.
+
+2009-02-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/avision.c: backend v290, fix reader_pid and NVRAM option
+ issues, by Mattias Ellert.
+ * backend/fujitsu.c: backend v89, fi-4750 has no serial number support
+ * doc/descriptions/fujitsu.desc: backend v89, remove 'MAC/TWAIN' text
+ * doc/sane-fujitsu.man: backend v89
+ * backend/.cvsignore: ignore *.loT
+
+2009-02-01 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * tools/Makefile.am: Add missing liblib dependencies
+ * frontend/scanimage.c: Restore alloca include order
+
+2009-02-19 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, Makefile.am, backend/Makefile.am: Have
+ configure define configdir so all makefiles can use
+ it (fixes bug introduce with sanei converted to automake).
+ Enable running testsuite during distcheck.
+ * japa/Makefile.am: Convert japi to automake.
+
+2009-02-19 Julien Blache <jb@jblache.org>
+ * configure.in: add --enable-libusb_1_0 and check for libusb-1.0
+ using pkg-config.
+ * sanei/sanei_usb.c: add support for libusb-1.0.
+ * tools/sane-find-scanner.c: add support for libusb-1.0.
+ * tools/check-usb-chip.c: compile as an empty file if libusb-1.0
+ is used.
+
+2009-02-18 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, tools/Makefile.am: convert tools to automake.
+ Add tools/openbsd to distribution package.
+ * include/Makefile.am: include files should have been installed
+ under sane/ directory when converted to automake.
+ * doc/Makefile.am: Cleanup. Use automake's built in support to
+ install docs within subdirectories.
+ * Makefile.am, testsuite: Convert testsuite to automake. Waiting
+ for test backend bugfix before enabling this to run during "distcheck".
+
+2009-02-18 Julien Blache <jb@jblache.org>
+ * configure.in, configure: raise avahi-client dependency to
+ 0.6.24, following a needed bugfix in this release.
+ * backend/net.c: do not lock the Avahi thread before stopping
+ it. It looks like it's no longer necessary to do so.
+ * frontend/saned.c: fix handling of Avahi server restart so it
+ actually works.
+
+2009-02-14 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, doc/Makefile.am, frontend/Makefile.am,
+ include/Makefile.am, sanei/Makefile.am, tools/Makefile.am:
+ convert frontend, include, and sanei directories to use
+ automake. Only reference libsanei.la now. Use am_conditional
+ to compile sanei_jpeg.lo. distcheck now runs sanei/wire_test.
+
+2009-02-13 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * Makefile.am, configure.in, doc/Makefile.am: Convert
+ doc/Makefile to use automake. Main difference is that
+ no longer installs man pages for backends that are not
+ compiled. Moved install ownership of $top_srcdir docs
+ to $top_srcdir's Makefile.
+
+2009-02-06 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, backend/Makefile.am: Add back change to
+ use -version-number even though its known not to work on
+ some platforms (OS/2). -version-info results in a variety of
+ version numbers in soname based on platform and would not
+ be easily mappable back to values currently return by
+ each backend's sane_init(). ltmain.sh will need to be
+ hand patched for any known issues.
+
+2009-02-08 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Remove "init device" usb request.
+ * backend/genesys_gl841.c, backend/genesys_devices.c,
+ backend/genesys_low.h: Add support for uncalibrated scans in all
+ modes for Visioneer Strobe XP300. Front- and backside are
+ side-by-side, backside mirrored horizontally.
+ * doc/descriptions/genesys.desc: Added XP300 to the genesys
+ desc file.
+
+2009-02-06 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, backend/Makefile.am: Add back in support for
+ optionally linking in sanei_jpeg.lo under backend directory;
+ but using configure and not with GNU make extensions.
+ Move back to libtool's -version-info instead of -version-number
+ because the later has known bugs on platforms such as OS/2.
+
+2009-02-04 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in, acinclude.ac: Cleanup autoconf 2.63 warnings.
+ add cv_ prefix to cached variable. Remove AC_ARG_PROGRAM as
+ automake already invokes this. When prefered AC_USE_SYSTEM_EXTENSIONS
+ exists, use that instead of AC_GNU_SOURCE/AC_AIX/AC_MINUX.
+ Cleanup socket detection more by creating only a single
+ SOCKET_LIBS that contains list of all optional libraries
+ for any socket related funciton. Make sure that checks
+ for socket related functions use SOCKET_LIBS when searching.
+ Check for getopt_long() and getopt.h. Make OS/2 use
+ -no-undefined (same as windows).
+ * ltmain.sh, m4/libtool.m4: Upgrade to libtool 1.5.26.
+ * Makefile.am: Cleanups to match configure updates.
+ * frontend/scanimage.c, include/Makefile.in, lib/getopt.c
+ lib/getopt1.c, toosl/sane-desc.c, include/lgetopt.h:
+ Rename internal getopt.h to lgetopt.h to allow using
+ external getopt.h when it exists. This allows to go
+ back to optionally compiling getopt()/getopt_long() and its
+ prototypes and not have conflicts with external headers/symbols.
+
+2009-02-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man doc/descriptions/pixma.desc:
+ Added ImageClass MF4120 support in pixma backend docs.
+
+2009-02-03 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: filter out unsupported/unknown models from
+ output (udev/hal).
+
+2009-02-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_common.c backend/pixma_common.h /backend/pixma_imageclass.c
+ backend/pixma_mp150.c backend/pixma_mp730.c backend/pixma_mp750.c:
+ Change ALIGN macro name to ALIGN_SUP for PPC compatibility.
+ Some cosmetic changes to source code alignment.
+
+2009-02-01 Alex Belkin <abc@telekom.ru>
+ * backend/xerox_mfp.c backend/xerox_mfp.h:
+ Proper handling of parameters (to fix xsane crash).
+ * backend/xerox_mfp.conf doc/descriptions/xerox_mfp.desc:
+ Added Dell MFP 1815dn.
+
+2009-02-01 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * aclocalm4: fix prototype of internal strcasestr and usleep.
+ * configure.in: Group all USB logic together and all SCSI
+ logic together to aid understanding of whats no longer
+ valid. Allow sharing enable/disable options between all
+ USB drivers on multiple platforms. Combined CAM_LIBS and
+ SCSI_LIBS since they are mutually exclusive.
+ Skip some USB/SCSI checks when previous tests show it will always fail.
+ * backend/Makefile.am, tools/Makefile.in: Combine CAM_LIBS and
+ SCSI_LIBS. Add missing SOCKET_LIBS to epson2. Add USB_LIB.
+ * saned.c: Add limits.h for PATH_MAX.
+
+2009-02-01 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * acinclude.m4, backend/Makefile.am: Restore the removed
+ DYNAMIC_FLAG configuration.
+ * acinclude.m4, sanei/sanei_jpeg.c: Don't compile sanei_jpeg
+ if libjpeg is unavailable.
+ * backend/canon_dr.c, backend/hs2p-scsi.c, backend/xerox_mfp.c:
+ format fixes.
+ * backend/hs2p.c: fix missing return.
+ * backend/canon630u-common.c: avoid redefinition warning.
+
+2009-01-31 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * backend/Makefil.am: Add missing math library to coolscan2
+ and coolscan3.
+ * acinclude.m4, configure.in: Define JPEG objects based on
+ existence of JPEG library and not on the dc* backends alone
+ since more backends then that use JPEG support.
+
+2009-01-30 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * frontend/saned.c: Replace usage of getgrouplist() with
+ getgrent() and friends. getgrouplist is not posix and not
+ on several platforms including cygwin.
+ * acinclude.m4, configure.in: Put all libraries into their
+ own *_LIB variables instead of $LIB so that we do not have to
+ link in the world to all executables. Modified SANE_CHECK_U_TYPES
+ to be a little more portable to platforms that use #define
+ for u_* types. Create SANE_CHECK_BACKENDS macro so that
+ PRELOADABLE_BACKENDS can also be valided. Auto-populated
+ PRELAODABLE_BACKENDS when detect dlopen() won't work.
+ Various protability cleanups.
+ * backend/dll.c: Make dll-preload.c a .h since its an include and
+ not compilable byitself.
+ * frontend/Makefile.in, frontend/scanimage.c, include/laaloca.h,
+ lib/Makefile.am, lib/alloca.c, strcasestr.c, tools/Makefile.in,
+ tools/sane-desc.c: Convert lib/ to automake. Create a liblib.la
+ for everyone to use and a libfelib.la for only frontend programs.
+ Make all internal programs be prefixed with sanei_ as not to conflict
+ with other programs libsane is linked in with that will also most
+ likely create similar internal utils on problem platforms.
+ * include/getopt.h, lib/getopt.c, lib/getopt1.c: Always compile
+ and link in getopt_long() but prefix it with sanei_. Its
+ easier to always use internal version then try to figure out what
+ platforms support getopt_long() and what header files to use.
+ * backend/Makefile.am: Convert backend makefile to automake.
+ Initial version that is feature parity with original but uses
+ specific rules instead of wildcards and only links in libraries/objs
+ really required. Room for more cleanup of whats linked in once
+ all makefiles have been converted to automake.
+
+2009-01-29 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * backend/epson2.c backend/pixma_bjnp.c, include/sane/sanei_backend.h,
+ sanei/sanei_tcp.c, sanie/sanei_udp.c: Improve portablity by
+ removing usage of MSG_WAITALL since not all platforms support
+ that (cygwin). Default is to be blocking anyways. Changed
+ usage of MSG_NOTWAIT to use fcntl() function as needed as well.
+ * configure.in, lib/Makefile.in, lib/strcasestr.c: Add internal
+ strcasestr() for platforms missing it (cygwin).
+ * pixma_common.c: Make source match header prototype for picky
+ compilers (cygwin).
+ * backend/umax_pp_mid.c: Allow BACKEND_NAME to be filename
+ yet debug to be SANE_DEBUG_UMAX_PP to match man page.
+
+2009-01-28 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: added :scsi data for the GT-7000
+ and Perfection1200S. Patch from Dieter Jurzitza.
+
+2009-01-27 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c: fixed bug that caused scanner discovery to
+ fail when it encountered a point to point link (check data returned
+ by getifaddrs()
+
+2009-01-26 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * configure.in: Add AM_MAINTAINER_MODE to disable regenerating
+ configure files. This was behavior of Makefiles before automake
+ and works around various timestamp issues.
+
+2009-01-25 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Change status code for locked head to
+ SANE_STATUS_HW_LOCKED
+
+2009-01-21 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/canon_dr.desc: correct version, status = new
+ * doc/descriptions/epjitsu.desc, doc/descriptions/fujitsu.desc: version
+ * doc/descriptions/umax1220u.desc: correct status of 1600U
+ * doc/descriptions/xerox_mfp.desc: status = new
+
+2009-01-23 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: Update for iScan 2.16.0,
+ from Olaf Meeuwissen.
+
+2009-01-22 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * Makefile.in: Submit Makefile.in from Makefile.am submitted
+ previously.
+ * backend/epson.c, backend/epson_scsi.c, backend/epson2_net.c,
+ backend/epson2_scsi.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/lexmark_low.c, backend/rts88xx_lib.c,
+ backend/umax_pp.c, backend/umax_pp_low.c, backend/umax_pp_mid.c,
+ doc/Makefile.in, doc/sane-epson.man, doc/sane-epson2.man:
+ Updated backends with EXTRA_* files to allow Makefile's
+ to always pass in BACKEND_NAME to be fixed to backend name
+ instead of filename; while still making sure that
+ SANE_DEBUG_${BACKEND}* exist as documented in man pages.
+ Add references to epson and epson2 man pages about
+ SANE_DEBUG_EPSONx_SCSI and _NET options.
+ Created an epson2 man page; based mostly on epson page.
+ * backend/stubs.c: Currently, compiling stubs.c requires its
+ own compile rule simply to pass in -DSTUBS. Since its always
+ required, just define it in stubs.c
+
+2009-01-22 Stéphane Voltz <stef.dev@free.fr>
+ * doc/Makefile.in doc/descriptions/genesys.desc : added the rts8891
+ man page to the generation and install . added XP200 to the genesys
+ desc file.
+
+2009-01-21 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * Makefile.am, lib/Makefile.in: Run all libcheck tests before
+ failure and look for both static and shared libraries.
+ Fixed $srcdir typo in lib/Makefile.in.
+
+2009-01-21 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/epjitsu.[ch], backend/fujitsu.[ch]:
+ - dont export private symbols
+
+2009-01-19 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions-external/brother2.desc: add MFC-7840W
+
+2009-01-19 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * pixma_imageclass.c:
+ Fixed select_source message length, and typo bug in last update.
+ Set MP4600 series for inverted checksumming.
+
+2009-01-19 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys.h
+ backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl841.c backend/genesys_low.h: add support for
+ uncalibrated scans in all modes for Visioneer Strobe XP200. Add
+ support for buttons for MD5345/HP2300 and XP200
+
+2009-01-18 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/unsupported.desc: everything reported from
+ 2008-07 to 2009-01
+
+2009-01-18 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_low.h: Fix prototype of update_hardware_sensors.
+ Make half-ccd mode optional.
+ * backend/genesys_gl841.c: Make dpihw depend on sensor pixel count
+ instead of sensor resolution. Make some Canon LiDE 35 specific
+ gpio handling conditional, add missing SCANMOD shift. Make
+ half-ccd mode optional. Reenable clock register setup from sensor
+ struct, set SCANMOD.
+ * backend/genesys_devices.c: Make half-ccd mode optional.
+ Reenable clock register setup from sensor struct, set SCANMOD.
+
+2009-01-17 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * pixma_mp150.c:
+ Fixed "Busy mode" exit processing.
+
+2009-01-17 Julien Blache <jb@jblache.org>
+ * doc/descriptions/hp.desc: add SCSI identifiers for the ScanJet
+ IIc, from Daniel Golle (sane-devel, 20061105).
+ * frontend/scanimage.c: make batch mode create output files
+ atomically. Patch by Simon Matter <simon.matter@invoca.ch>.
+
+2009-01-16 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * .cvsignore, Makefile.in, aclocal.m4, config.sub, configure,
+ configure.in, backend/cvsignore, include/Makefile.in,
+ include/sane/config.h.in, INSTALL, Makefile.am, missing:
+ Convert top-level Makefile to be generated by automake.
+ "dist" target now includes m4 directory. Updated "libcheck"
+ target to look at dynamic libraries instead of static.
+
+2009-01-16 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * doc/Makefile.in, frontend/Makefile.in, include/Makefile.in,
+ japi/Makefile.in, lib/Makefile.in, po/Makefile.in,
+ sanei/Makefile.in, testsuite/Makefile.in, tools/Makefile.in,
+ backend/Makefile.in:
+ Updates to Makefiles to prepare for transition to automake.
+ Fix a few bugs with "all" and "uninstall" targets to work when
+ $(builddir) != $(srcdir). Added $(DESTDIR) to uninstall target.
+ Made $(distdir) related to current directory to match automake.
+
+2009-01-16 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys.h, backend/genesys_devices.c,
+ backend/genesys_gl646.c, backend/genesys_gl841.c,
+ backend/genesys_low.h: Add support for buttons on
+ Canon LiDE 35/40/50.
+
+2009-01-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc,
+ pixma_mp150.c, AUTHORS:
+ Updated docs and comments in pixma backend.
+ Added Dennis Lou to pixma backend authors
+
+2009-01-13 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * AUTHORS: added myself as co-responsible for pixma backend
+
+2009-01-15 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: do not use request_identity2 with
+ networked scanners, fixed generation of resolution
+ list.
+
+2009-01-13 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c: send broadcasts from bjnp port to make
+ firewalling easier
+
+2009-01-13 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: replace opencoded device permissions and
+ ownership by proper definitions. Group USB devices by vendor in
+ the HAL FDI output. Replace obsolete SYSFS{} key by the newer
+ ATTR{} key in the udev output. Add a new :scsi keyword for SCSI
+ devices, add support for SCSI devices in the udev and HAL FDI
+ outputs.
+ * doc/descriptions/hp.desc, doc/descriptions/epson.desc: add :scsi
+ keyword to a handful of SCSI scanners known to advertise
+ themselves as type "Processor".
+
+ All of the above based on a patch contributed by Dieter Jurzitza.
+
+2009-01-10 m. allan noah <kitno455 a t gmail d o t com>
+ * sanei/sanei_usb.c: rescan usb every time sanei_usb_init() is called
+ - remove missing devices, add new devices to global lists
+ - based on code from stef.dev@free.fr
+
+2009-01-10 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v11
+ - send_panel() can disable too
+ - add cancel() to send d8 command
+ - call cancel() only after final read from scanner
+ - stop button reqests cancel
+
+2009-01-10 Jeremy Johnson <jeremy a t acjlaw dot net>
+ * backend/hs2p.c: replaced ulong with u_long,
+ added static keyword for SANE_Status update_hs2p_data()
+
+2009-01-06 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_sane.c, backend/hp3900_config.c,
+ backend/hp3900_types.c, backend/hp3900.conf.in, doc/sane-hp3900.man,
+ doc/descriptions/hp3900.desc:
+ Added support for HP Scanjet G3110 scanner.
+
+2009-01-05 Jeremy Johnson <jeremy a t acjlaw dot net>
+ Added code to read_data() to pad image data to
+ requested length and to zero out any garbage using
+ information from sense data command. Added new
+ MAINTENANCE_DATA struct and options to display
+ scanner's maintenance/callibration statistics.
+ *backend/hs2p.h
+ - added enum CONNECTION_TYPES
+ - added HS2P_DATA struct
+ - added SENSE_DATA struct to struct HS2P_Device
+ - added SANE_String_Const orientation_list[]
+ - added macros isset_ILI() and isset_EOM()
+ *backend/hs2p-scsi.h
+ - replaced request_sense struct with SENSE_DATA struct
+ - added #define DATA_TYPE_EOL (va_list sentinel)
+ - added MAINTENANCE_DATA struct
+ *backend/hs2p-saneopts.h
+ - added OPT_ORIENTATION
+ - added MAINTENANCE_DATA options
+ *backend/hs2p.c
+ - added MAINTENANCE_DATA options
+ - added unused connType to attach()
+ - added update_hs2p_data() to fill in options
+ - added hs2p_open() and hs2p_close()
+ - added get_hs2p_data() to read scanner data
+ - added print_maintenance_data()
+ - modified sane_control_options() to
+ accomodate new maintenance options and to
+ handle Portrait/Landscape option
+ replaced adf_status macro with s->data.adf_status
+ - modified sane_read() to correctly zero out the
+ missing bytes on an incomplete read and to pad
+ to the requested length
+ *backend/hs2p-scsi.c
+ - replaced request_sense() with get_sense_data()
+ - added print_sense_data()
+ - added SENSE_DATA *sdp to sense_handler()
+ - modified read_data() to handler other data type codes/qualifiers
+ - read_adf_status() now is replaced with call to
+ read_data(fd,*buf,*bufsize,dtc,dtq)
+
+2009-01-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Updated doc for pixma backend (ImageClass)
+
+2008-12-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: restored warming up broken by a previuos commit
+
+2008-12-28 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c:
+ Change to include different checksumming for MF41xx and MF42xx series
+
+2008-12-26 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: changed version code,
+ added protection from wrong settings.
+
+2008-12-21 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v87
+ - accept null pointer as empty device name
+ - track frontend reading sensor/button values to reload
+ - deactivate double feed options if df-action == default
+
+2008-12-21 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man,
+ backend/pixma_mp150.c:
+ MP800/MP800R: Fixed bug and color planes shift issues, added TPU support
+ for 48 bits images depth up to 1200 dpi.
+ MP980: following a user feedback, declared as working.
+ Doc and man pages updated.
+
+2008-12-18 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v86
+ - get_pixelsize() sets back window ID for back side scans
+ * doc/sane-fujitsu.man, doc/descriptions/fujitsu.desc: backend v86
+
+2008-12-17 Julien Blache <jb@jblache.org>
+ * backend/v4l.c: unmap mapped buffer in sane_cancel(). Use libv4l1
+ for v4l device access, buys us some support for v4l2 devices for
+ free thanks to libv4l1, libv4l2 and libv4lconvert.
+ * configure.in, configure: check for libv4l1 availability.
+
+2008-12-15 Alex Belkin <abc@telekom.ru>
+ * AUTHORS, configure, configure.in, backend/Makefile.in,
+ backend/xerox_mfp.c, backend/xerox_mfp.h, doc/Makefile.in,
+ doc/descriptions/xerox_mfp.desc, doc/sane-xerox_mfp.man:
+ Initial commit ot xerox_mfp backed.
+
+2008-12-12 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: add a data_portrange config file option to
+ saned to specify a port range for the data connection. Based on a
+ patch contributed by Oren Held.
+ * backend/saned.conf.in: add the data_portrange option to the
+ config file and rework the comments.
+ * doc/saned.man: document the data_portrange option.
+
+2008-12-11 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c doc/sane-rts8891.man doc/descriptions/rts8891.desc:
+ scan register setting fix, documentation update
+
+2008-12-10 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v85
+ - round pixels_per_line down to arbitrary limits for fi-4990 & fi-4860
+ - fi-4860 returns random garbage to serial number queries
+ - initialize *info to 0 in sane_control_option()
+ * doc/descriptions/fujitsu.desc: backend v85, improve status/comments
+ * frontend/scanimage.c: initialize *info, fix buffer overwalk
+
+2008-12-10 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.c: backend v10
+ - add all documented request sense codes to sense_handler()
+ - fix color jpeg (remove unneeded BGR to RGB swapping code)
+ - add macros for LUT data
+ * backend/canon_dr.conf.in: add DR-2080C usb ID
+ * doc/descriptions/canon_dr.desc: backend v10, add DR 3020
+
+2008-12-08 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v9
+ - add rollerdeskew and stapledetect options
+ - add rollerdeskew and stapledetect bits to ssm_df()
+ * doc/descriptions/canon_dr.desc: backend v9
+
+2008-12-08 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/avision.c: backend v289
+ - fix sending SIGTERM when reader_pid == 0
+
+2008-12-07 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v8
+ - rename read/send_counter to read/send_panel
+ - enable control panel during init
+ - add options for all buttons
+ - call TUR twice in wait_scanner(), even if first succeeds
+ - disable rif
+ - enable brightness/contrast/threshold options
+ * doc/descriptions/canon_dr.desc, doc/sane-canon_dr.man: backend v8
+
+2008-12-06 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c pixma_bjnp_private.h:
+ replaced getlogin/getenv by getpwuid(geteuid)
+
+2008-12-06 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c pixma_bjnp_private.h:
+ On Ubuntu getlogin() returns NULL. So we now first try getlogin()
+ and if that fails, we try getenv("USER") and if that fails we use
+ a default user string
+
+2008-12-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c: possible fix for
+ failed scan at 300 and 1200 dpi for HP4400, sensor type 2.
+
+2008-12-01 Julien Blache <jb@jblache.org>
+ * sanei/sanei_usb.c: fix assignment in if clause, reported on
+ sane-devel.
+
+2008-11-30 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ MP620 supported by pixma backend confirmed, doc and man pages updated.
+
+2008-11-29 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch]: backend v7
+ - jpeg support (size rounding and header overwrite)
+ - call object_position(load) between pages even if buffering is on
+ - use request sense info bytes on short scsi reads
+ - byte swap color BGR to RGB
+ - round image width down, not up
+ - round image height down to even # of lines
+ - always transfer even # of lines per block
+ - scsi and jpeg don't require reading extra lines to reach EOF
+ - rename buffer option to buffermode to avoid conflict with scanimage
+ - send ssm_do and ssm_df during sane_start
+ - improve sense_handler output
+ * doc/descriptions/canon_dr.desc: backend v7
+
+2008-11-29 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.c: backend v6
+ - fix adf simplex
+ - rename ssm_duplex to ssm_buffer
+ - add --buffer option
+ - reduce inter-page commands when buffering is enabled
+ - improve sense_handler output
+ - enable counter option
+ - drop unused code
+ * doc/descriptions/canon_dr.desc: backend v6
+
+2008-11-26 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/*.[ch]: nearly every backend used V_MAJOR
+ instead of SANE_CURRENT_MAJOR in sane_init()
+ * backend/snapscan.c: remove EXPECTED_VERSION check
+ since new SANE standard is forward compatible
+
+2008-11-25 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.c,
+ doc/descriptions/canon_dr.desc: backend v5
+ - remove EOF ejection code
+ - add SSM and GSM commands
+ - add dropout, doublefeed, and jpeg compression options
+ - disable adf backside
+ - fix adf duplex
+ - read two extra lines (ignore errors) at end of image
+ - only send scan command at beginning of batch
+ - fix bug in hexdump with 0 length string
+ - DR-7580 support
+
+2008-11-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c:
+ Fixed regression bug at end of scan for all PIXMA, noticeable
+ in multipage ADF scan.
+
+2008-11-23 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, sane-backends/po/sane-backends.fr.po,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Support for MP630 in pixma backend.
+ Updated docs for MP630, and network interface to various PIXMA models
+ in pixma.desc.
+ Fixed some typos in French translations.
+
+2008-11-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: fixes 'commit scan value' for HP4400.
+
+2008-11-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: calibration fixes for HP4400 sensor type 3.
+
+2008-11-18 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: fixed bug when an extended command
+ was used with D8 level scanners. bug reported
+ by Kare Sars <kare.sars@kolumbus.fi>
+
+2008-11-17 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/descriptions-external/epkowa.desc:
+ iscan 2.14.0 updates on behalf of olaf.meeuwissen@avasys.jp
+
+2008-11-12 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: sensor detection fix. Lamp setting
+ change for HP4400 sensor type 3.
+
+2008-11-11 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.c: backend v4
+ - eject document when sane_read() returns EOF
+
+2008-11-09 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h, doc/sane-canon_dr.man,
+ backend/canon_dr.conf.in, doc/descriptions/canon_dr.desc:
+ - New Canon DR-series backend v3
+ - support all modes and resolutions of DR-9080C
+ - advanced options (MF detection, compression) not yet supported
+ - other larger models believed similar, smaller ones unknown
+ * doc/descriptions/unsupported.desc: remove Canon DR-series machines
+
+2008-11-07 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: backend v84
+ - round lines down to even number to get even # of total bytes
+ - round binary bpl and Bpl down to byte boundary
+
+2008-11-06 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: backend v83
+ - round binary bpl and Bpl up to byte boundary
+ - use s->params instead of user data in set_window()
+ - read_from_scanner() only grabs an even number of lines
+
+2008-10-31 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * Pixma backend (pixma.c/pixma_common.c/pixma_io_sanei.c/pixma_bjnp.c):
+ bjnp tcp connection is now de-activated after initialization and
+ re-activated at start of scanning. If we do not do this, the scanner
+ closes its side of the connection after 30 secods of inactivity.
+ Added a maximum to the retry of slect calls when signals are
+ received
+ Added blocksize detection for tcp read_bulk call
+
+2008-11-04 m. allan noah <kitno455 a t gmail d o t com>
+ * sanei/sanei_usb.c, include/sane/sanei_usb.h:
+ - shorten debug lines to fit in 80 chars
+ - add sanei_usb_clear_halt() required by upcoming canon_dr backend
+
+2008-10-31 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h,
+ backend/fujitsu.conf.in, doc/descriptions/fujitsu.desc: backend v82
+ - improved front-side endorser vpd detection
+ - send scanner_control_ric during sane_read of each side
+ - add fi-6770A and fi-6670A USB ID's
+
+2008-10-31 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c: corrected small typo
+
+2008-10-31 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c:
+ Added retry to select() calls when they get interrupted by a
+ signal. This solves problems in xsane after a first scan completed.
+ There is still an issue that scanner closes tcp connection after
+ 30 seconds of inactivity
+ backend/pixma_bjnp.c backend/bjnp_private.h
+ Marked local functions as static and removed them from ..private.h
+
+2008-10-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h:
+ added 600 and 1200 dpi scan for HP4400 and HP4470 with 'xpa'
+ sensor.
+
+2008-10-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/sane-pixma.man doc/descriptions/pixma.desc:
+ Tweaks for TPU scan at 4800 dpi, and MP810 at 2400 dpi (now works).
+ Updated docs around that.
+
+2008-10-25 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * Added configuration file support for pixma backend
+ Currently used only for configuration of network scanners.
+
+2008-10-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma_io_sanei.c, backend/pixma_mp150.c:
+ TPU scanning in 48 bits mode now works fine on MP970, with Xsane or
+ scanimage.
+ Changed also minimum to 300 dpi for TPU scan, so that preview now works
+ in Xsane.
+ Added Legal paper dimensions (14") to ADF scan for MX850 and MX7600.
+ The rest is cosmetic only.
+
+2008-10-21 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
+ * Added #ifdef around defintions of MIN and MAX in pixma_common.h
+ - Re-enable includes in pixma_bjnp.c as they are needed on Freebsd
+ - Replaced getaddrinfo by gethostbyname in pixma_bjnp.c as this is
+ supported on OS/2 as well
+
+2008-10-21 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc: backend v81, fix fi-6240 usb id
+
+2008-10-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v81
+ - increase USB timeouts
+ - enable get_pixelsize() to update scan params after set_window()
+ - remove even_scan_line hack
+
+2008-10-19 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * configure.in, configure, backend/pixma_bjnp.c,
+ backend/pixma_bjnp.h, backend/pixma_bjnp_private.h,
+ pixma.h, doc/descriptions/pixma.desc:
+ From Louis Lagendijk for bjnp protocol on pixma backend, add a header
+ check for ifaddrs.h (necessary on different platforms BeOS, OS/2, ...)
+ Increment pixma backend version number.
+
+2008-10-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: added 300 dpi scan for HP4400
+
+2008-10-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: fixed HP4400 sensor detection, added 150
+ dpi scan mode for HP4400
+
+2008-10-14 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma*.c, backend/pixma*.h (all pixma backend files),
+ doc/sane-pixma.man, doc/description/pixma.desc,
+ backend/Makefile.in
+ Added 3 new files backend/pixma_bjnp.c, backend/pixma_bjnp.h,
+ backend/pixma_bjnp_private.h:
+ - Thanks to Louis Lagendijk, added an implementation of Canon's BJNP
+ network protocol to the pixma backend, for scanning with PIXMA devices
+ over a LAN network.
+ - Fix for ADF scan reset session when ADF is loaded with more pages
+ to scan than the frontend requests.
+ - Updated pixma backend documentation and file headers.
+
+2008-10-09 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v80
+
+2008-10-08 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: backend v80
+ - front-side endorser uses data ID 0x80
+
+2008-10-06 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891.h: fixed configuration option
+ bug
+
+2008-10-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma.h, backend/pixma_common.c,
+ backend/pixma_io_sanei.c, backend/pixma_mp150.c,
+ doc/sane-pixma.man, doc/description/pixma.desc:
+ MP970 scanning improvements, up to 4800 dpi. On the way soon,
+ network BJNP protocol designed by Louis Lagendijk to be added to CVS.
+ MX7600 reported to work fine with the backend.
+ ADF scanning:
+ - improved for latest PIXMAs like MX850, MX310.
+ - bug fix in Sane_start, when scanning several pages with ADF.
+ ADF DUPLEX scanning:
+ - new code for ADF Duplex, (to be tested) based on a MX850 Snoop. Changes
+ might fit also MP830 (To be confirmed).
+ TPU scanning:
+ - MP970 TPU scanning: Protocol works, get scanned TPU images with 48 bits
+ to 24 bits conversion, full 48 bit version yet to be debugged.
+
+2008-10-03 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.[ch]: backend v17:
+ - increase scan height ~1/2 inch due to head offset
+ - change page length autodetection condition
+
+2008-10-03 Stéphane Voltz <stef.dev@free.fr>
+ * include/sane/sane.h: added a SANE_CURRENT_MINOR define
+
+2008-10-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891.h backend/rts8891_low.h:
+ add a 'sensornumber' option to override detected sensor model
+
+2008-10-02 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions-external/epkowa.desc:
+ - iscan 2.12.0 updates from olaf.meeuwissen@avasys.jp
+
+2008-10-01 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in,
+ backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v79
+ - add usb ids for several models
+ - print additional hardware capability bits
+ - detect front-side endorser
+ - disable endorser-side controls if only one side installed
+ - add quirks for fi-6x70
+
+2008-10-01 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.[ch]: backend v16:
+ - split fill_frontback_buffers_S300 into 3 functions
+ - enable threshold-curve option
+ - add 1-D dynamic binary thresholding code
+ - remove y-resolution option
+ - pad 225x200 data to 225x225
+
+2008-10-01 Gerhard Jaeger <gerhard@gjaeger.de>
+ * doc/descriptions/plustek.desc: Added entry for UT12 devid 0x0013
+ * doc/descriptions/unsupported.desc: Removed entry for UT12 devid 0x0013
+ * doc/descriptions/gt68xx.desc: Added entry for OpticSlim 2400plus
+ * backends/gt68xx.conf.in: Added entry for OpticSlim 2400plus
+
+2008-09-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891_low.c: fix HP4400 head parking
+
+2008-09-25 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.[ch], backend/epjitsu-cmd.h: backend v 13, 14 and 15:
+ - add working page-height control
+ - add working brightness, contrast and threshold controls
+ - add disabled threshold curve and geometry controls
+ - move initialization code to sane_get_devices, for hotplugging
+ - support S300 on USB power
+ - support S300 225x200 and 600x600 scans
+ - support for automatic paper length detection (parm.lines = -1)
+ - expose hardware buttons/sensors as options for S300
+ * doc/descriptions/epjitsu.desc: change S300 status to good
+
+2008-09-25 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/saneopts.h: underscore not allowed in option names
+ * frontend/scanimage.c: fix broken unknown length (-1) binary scans,
+ fix invalid tiff height with unknown length scans, fix compiler warn
+
+2008-09-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: fix typo in HP4400 variant detection
+
+2008-09-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h: more
+ fix for HP4400 head parking, 75 dpi support for another HP4400 sensor
+ variant, better variant detector and initial setting
+
+2008-09-13 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/sane-pixma.man, doc/description/pixma.desc:
+ Changes in pixma backend for PIXMA MP970 at 4800 dpi (to be continued).
+ Declare MX7600 but yet untested.
+
+2008-09-11 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h: fix
+ parking for HP4400, tune dark calibration for HP4400
+
+2008-09-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c backend/pixma_imageclass.c backend/pixma_common.h
+ doc/sane-pixma.man doc/descriptions/pixma.desc:
+ - Updated doc for MF4140, MF4150 and MP810
+ - Remove white lines previously padded to image bottom for CCD sensors
+ - Modified scan area adjustments to enhance frontend area selection fit
+ but to be confirmed that it does not bring backward compatibility issues.
+
+2008-09-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c backend/rts8891_low.h
+ backend/rts88xx_lib.c: minor changes for hp4400 support
+
+2008-09-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Some tweaks to have PIXMA MP810 supported by the pixma backend.
+
+2008-08-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c:
+ - move to configuration framework
+ - fix GL646 GPO value usage
+ - HP2400/G2410 tidbits
+ - don't reset ASIC anymore
+
+2008-08-27 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc: mark fi-6230 and fi-6240 complete
+
+2008-08-26 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, doc/descriptions/fujitsu.desc: backend v78
+ - recent model names (fi-6xxx) dont end in 'C'
+ - simplify flatbed area overrides
+ - call scanner_control to change source during sane_start
+
+2008-08-26 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu-scsi.h: backend v77
+ - override flatbed maximum area for fi-6230C and fi-6240C
+ - set PF bit in all mode_select(6) CDB's
+ - set SANE_CAP_INACTIVE on all disabled options
+ - fix bug in mode_select page for sleep timer
+
+2008-08-25 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek-usb.c backend/plustek-usbdevs.c:
+ Added preliminary support for Visioneer XP100
+ Tweaked entry for LM9831 version of Plustek UT12
+ * backend/plustek.c: Bumped build number
+ * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update
+ * doc/descriptions/plustek.desc: Added entry for Strobe XP100
+ * doc/descriptions/unsupported.desc: Removed entry for Strobe XP100
+
+2008-08-21 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: calibration updating and 75 dpi scan for hp400
+
+2008-08-23 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/fujitsu.desc: set lots of scanners to complete :)
+
+2008-08-21 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_devices.c backend/rts8891_low.c
+ backend/rts88xx_lib.c: add sensor type field and use it in geometry
+ detection.
+
+2008-08-14 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts88xx_lib.c: fix for hp4400 init
+
+2008-08-13 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v76
+ - add independent maximum area values for flatbed
+ - override said values for fi-4220C, fi-4220C2 and fi-5220C
+ * doc/descriptions/fujitsu.desc: bump version, add 2 untested scanners
+
+2008-08-07 Rene Rebe <rene@exactcode.de>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc: backend v75
+ - added fi-6230 ID, updated fi-6130, fi-6230 status
+
+2008-08-05 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: initialize runas_{u,g}id to 0 instead of -1;
+ initialize ngroups to 0.
+
+2008-08-04 Julien Blache <jb@jblache.org>
+ * frontend/scanimage.c: fetch_options(), actually get option
+ descriptor 0 before attempting to get the value of option 0.
+
+2008-08-04 Stéphane Voltz <stef.dev@free.fr>
+ * backend/umax_pp.c backend/umaxp_pp.h backend/umax_pp.conf.in:
+ use configuration framework
+
+2008-08-02 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu-scsi.h: backend v74
+ - replace global scsi blocks with local ones in each function
+
+2008-07-31 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: set supplemental group list in addition to
+ setting euid and egid. Reported by Cameron Hutchison.
+
+2008-07-28 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: call setegid() before seteuid(), aka while
+ we're still root. Patch from Nick Andrew <nick@nick-andrew.net>.
+
+2008-07-27 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc: backend v73
+ - add fi-6130 usb ID
+ - correct overscan dimension calculation
+ - provide correct overscan size overrides for fi-5110C and fi-4x20C2
+ - fi-5750C can't handle 10 bit LUT via USB
+
+2008-07-25 m. allan noah <kitno455 a t gmail d o t com>
+ * AUTHORS: Earle has commit perms
+ * doc/descriptions/unsupported.desc: add Lexmark X7170
+ * include/sane/sanei_config.h: remove typedef so doxygen will shutup
+
+2008-07-25 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/saneopts.h: separate x-resolution from resolution
+ * backend/abaton.c, backend/artec.c, backend/canon-sane.c,
+ backend/epjitsu.c, backend/fujitsu.c, backend/microtek2.c,
+ backend/sp15c.c, backend/umax.c: use SANE_NAME_SCAN_RESOLUTION
+ instead of SANE_NAME_SCAN_X_RESOLUTION, to avoid ui change
+
+2008-07-20 Julien Blache <jb@jblache.org>
+ * backend/net.c: sane_control_option: when the frontend doesn't
+ care (info == NULL) and the remote backend asks for a reload,
+ perform the reload. Hopefully this brings the behaviour back in
+ line with standard backends.
+
+2008-07-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Changed page scan end condition to handle correctly PIXMA ADF.
+
+2008-07-14 Julien Blache <jb@jblache.org>
+ * doc/*.man: Fix hyphen vs. minus sign issues in the manpages,
+ breaking copy/paste of command-lines and options in UTF-8
+ environments.
+
+2008-07-13 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v72,
+ - use mode_sense to determine background color support
+ - remove fi-5900 background color override
+
+2008-07-13 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v71,
+ - disable overscan option if vpd does not tell overscan size
+ - fi-5110EOX crops scan area based on absolute maximum, not paper
+ - fi-5330C and fi-5650C can't handle 10 bit LUT via USB
+ - fi-5900 has background color, though it reports otherwise
+
+2008-07-10 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/sanei_config.c: handle cases where config or callback
+ function is NULL
+ * backend/rts8891.c: use new configuration parsing framework
+
+2008-07-10 Stéphane Voltz <stef.dev@free.fr>
+ * include/sane/sanei_config.h: doxygen fix for new function
+
+2008-07-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/sanei_constrain_value.c: add support for SANE_Bool
+ in sanei_check_value
+ * backend/Makefile.in: add sanei_constrain_value.lo to libsane
+2008-07-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/sanei_constrain_value.c: add support for SANE_Bool
+ in sanei_check_value
+ * backend/Makefile.in: add sanei_constrain_value.lo to libsane
+ dependencies
+ * sanei/Makefile.in: add makedepend for .lo files
+ * include/sane/sanei_config.h sanei/sanei_config.c: add configuration
+ parsing framework
+
+2008-07-05 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v70,
+ - fix bug in sane_get_parameters (failed to copy values)
+ - autodetect jpeg duplex interlacing mode by inspecting scan width
+
+2008-07-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c:
+ Fix in sane_control_option () for PIXMA ADF scan.
+ Change malformed test conditions for ADF/Duplex scan source.
+ Updated PIXMA MX850 description.
+
+2008-07-03 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch]: backend v69, support hot-unplugging scanners
+
+2008-07-02 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v68,
+ - add halftone type and pattern options
+ - support M3097G with IPC and CMP options via modified VPD response
+ * doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man: backend v68,
+ - manpage cleanup
+
+2008-07-01 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v67,
+ - add IPC/DTC/SDTC options
+ - call check_for_cancel() in sane_cancel, unless reading flag is set
+
+2008-06-28 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Removed "experimental" flag for PIXMA MX850.
+
+2008-06-26 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v66,
+ - restructure double feed detection options for finer-grained control
+ - add endorser side option
+ - prevent init_interlace() from overriding init_model()
+ - simplify sane_start() and fix interlaced duplex jpeg support
+ - simplify sane_read() and add non-interlaced duplex jpeg support
+ - removed unused code
+
+2008-06-26 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/test.[ch]: check for options being controlled before loading
+
+2008-06-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c:
+ Patch from Sam Varshavchik to deal with libusb 64 read issue,
+ for ImageClass MFPs.
+
+2008-06-24 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h,
+ doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man:
+ backend version 65, add endorser support, add quirks for fi-4990
+
+2008-06-24 Julien Blache <jb@jblache.org>
+ * backend/net.c: do not reload options behind the frontend's back
+ in sane_control_option; rather return SANE_STATUS_INVAL and warn
+ that the frontend is buggy. Fetch option descriptors in
+ sane_open() so a GET_VALUE on option 0 can still work without
+ having to get option descriptor 0 beforehand.
+ * frontend/saned.c: rework error/exit path in process_request()
+ to properly terminate the Avahi thread when in debug mode.
+
+2008-06-22 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: terminate child processes before exiting in
+ debug mode.
+
+2008-06-19 Ilia Sotnikov <hostcc@gmail.com>
+ * backend/hp5590.c:
+ Fixed segmentation fault on invalid option passed to
+ sane_get_option_descriptor(), sane_control_option()
+ (thanks to Albert Cervera i Areny)
+
+2008-06-19 Ilia Sotnikov <hostcc@gmail.com>
+ * backend/hp5590.c, backend/hp5590_cmds.c, backend/hp5590_cmds.h
+ * backend/hp5590_low.c, backend/hp5590_low.h
+ * doc/descriptions/hp5590.desc, doc/sane-hp5590.man:
+ Added support for HP ScanJet 4570c (thanks to Markham Thomas)
+
+2008-06-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man,
+ * backend/pixma.c, backend/pixma_mp150.c, backend/pixma_sane_options.c
+ * sane-backends/po/sane-backends.??.po:
+ Remove "experimental" in pixma buttons options and text.
+ Fix some French translation typos, and update man page.
+
+2008-06-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/sanei_constrain_value.c: add support for arrays of SANE_Word
+ in sanei_constrain_value
+ * backend/umax_pp.c: remove now unneede 'hand made' constrain on
+ gamma tables
+
+2008-06-09 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c: fix for model with 'XPA' sensor
+
+2008-06-06 Julien Blache <jb@jblache.org>
+ * backend/net.c: lock the Avahi thread before stopping it and
+ tearing down the Avahi objects.
+
+2008-06-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c: fixed wrong offset for start
+ of scanarea for MD6471 scanner.
+
+2008-05-30 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h,
+ doc/descriptions/fujitsu.desc: backend version 64,
+ use model and serial to build sane.name (idea from Ryan Duryea),
+ allow both serial_name and device_name to sane_open scanner,
+ simulate missing VPD data for M3097G, probe scanner for color
+ interlacing mode instead of hardcoding, other minor cleanups
+
+2008-05-29 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man: man update.
+ * backend/pixma_io_sanei.c: update status types, and take into
+ account new ones.
+
+2008-05-15 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * backend/hp3900_sane.c: Correct typos.
+ * po/Makefile.in: add backend/rts8891.c to localization.
+ * po/sane-backends.sv.po: update Swedish localization.
+
+2008-05-27 m. allan noah <kitno455 a t gmail d o t com>
+ * frontend/scanimage.c: add %n for newline to -f option
+
+2008-05-26 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * po/sane-backends.es.po: added spanish translation about status strings
+ * po/Makefile.in: added backend/sane_strstatus.c to SRC_FILES section.
+
+2008-05-26 Rene Rebe <rene@exactcode.de>
+ * backend/avision.{c,h}: merged latest upstream SVN changes, bug fixes
+ and device ID updates, including fixing uninitialized variables due
+ former defect merge and exposure control for film / dia scanners
+
+2008-05-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/sane_strstatus.c: added new status and internationalization
+ support
+ * frontend/scanimage.c, frontend/tstbackend.c: added handling of status
+ SANE_STATUS_WARMING_UP
+ * backend/pnm.c: added 2 more virtual devices, one that is hardware
+ locked, and another that always do warming before scan.
+
+2008-05-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.[ch], backend/rts8891_low.[ch],
+ backend/rts88xx_lib.[ch]: renamed per frontend struct, made use of
+ new well-known option groups. Added warming-up handling in
+ sane_start().
+
+2008-05-22 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c:
+ changed top of scan area detection for MD6228/MD6471 models
+
+2008-05-23 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_sane.c: setting appropiate capabilities to some options.
+
+2008-05-22 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_sane.c: use 1.1.0 well-known option group strings.
+ * backend/hp3900_config.c, backend/hp3900_debug.c,
+ backend/hp3900_rts8822.c, backend/hp3900_types.c,
+ backend/hp3900_usb.c: Fixed reference position detection for
+ HP3800/HPG2710 scanners. Code clean up.
+
+2008-05-22 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c:
+ minor tweak for scanjet 4470cx
+
+2008-05-21 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/saneopts.h: add sane 1.1.0 well-known button options
+ * backend/fujitsu.c: v1.0.63, use sane 1.1.0 well-known option
+ names for some buttons, remove 'button-' from others
+
+2008-05-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: v1.0.62,
+ check for all supported scsi commands, use well-known option
+ group strings from saneopts.h, rename pagewidth to page-width
+ to meet sane 1.1.0 spec, same for height, add unused get_window()
+ * doc/descriptions/fujitsu.desc: increase version to 1.0.62.
+
+2008-05-20 m. allan noah <kitno455 a t gmail d o t com>
+ * include/sane/sane.h: add SANE_STATUS_WARMING_UP and
+ SANE_STATUS_HW_LOCKED, remove SANE_CAP_ALWAYS_SETTABLE,
+ add SANE_FRAME_XML, improve comments on other new frame types.
+ * include/sane/saneopts.h: add common option groups, add new
+ page-width and page-height well-known options
+
+2008-05-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/qcam.c, backend/v4l.c, frontend/tstbackend.c:
+ remove undocumented and otherwise unused SANE_CAP_ALWAYS_SETTABLE
+
+2008-05-19 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c:
+ 150/300 dpi shading calibration fixes for 'XPA' sensor HP4470 models
+
+2008-05-16 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c: inspect correct bool to enable prepick mode
+
+2008-05-15 m. allan noah <kitno455 a t gmail d o t com>
+ * doc/descriptions/cardscan.desc, doc/descriptions/epjitsu.desc,
+ doc/descriptions/hp3900.desc, doc/descriptions/hp5590.desc,
+ doc/descriptions/hpljm1005.desc, doc/descriptions/hs2p.desc:
+ remove 'new' tag from sane 1.0.19 backends
+ * doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in:
+ add fi-5530C2 usb ID
+ * backend/cardscan.c: correct version number
+ * backend/epjitsu.conf.in: improved firmware directions
+ * backend/fujitsu.[ch]: update to backend v 1.0.61
+
+2008-05-15 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * doc/sane-genesys.man, doc/sane-lexmark.man, doc/sane-microtek2.man,
+ doc/sane-mustek_pp.man, doc/sane-pixma.man, doc/sane-rts8891.man,
+ doc/sane-umax_pp.man: Man page fixes
+ * doc/descriptions-external/hp_rts88xx.desc: removed since its
+ successor rts8891 is now included in the SANE distribution
+
+2008-05-15 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * backend/agfafocus.h, backend/artec_eplus48u.c,
+ backend/artec_eplus48u.h, backend/avision.h, backend/coolscan.h,
+ backend/hp-handle.c, backend/hp3500.c, backend/microtek2.h,
+ backend/mustek.c, backend/mustek.h, backend/pie.c, backend/pixma.c,
+ backend/plustek-pp.h, backend/plustek.c, backend/plustek.h,
+ backend/plustek_pp.c, backend/snapscan.c, backend/snapscan.h,
+ backend/sp15c.h, backend/tamarack.h, backend/test.c, backend/test.h,
+ backend/u12.c, backend/u12.h, backend/umax.c, backend/umax.h,
+ include/sane/sanei_thread.h, sanei/sanei_thread.c:
+ Fix for bug #306751: sanei-thread with pthreads on 64 bit
+
+2008-05-12 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c
+ 150/300 dpi mode fixes for 'XPA' sensor HP4470 models
+
+2008-05-08 Alessandro Zummo <a.zummo@towertech.it>
+ * AUTHORS: added myself :)
+
+2008-05-07 Julien Blache <jb@jblache.org>
+ * doc/sane-config.man: Fix man warning.
+ * backend/dll.c: look for dll.conf snippets in
+ $configdir/dll.d; this is a facility for external backends
+ to automatically add their backends to the dll backend
+ configuration without mucking with dll.conf.
+ * backend/Makefile.in: create $configdir/dll.d.
+
+2008-05-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc:
+ USB IDs updates in imageClass backend (pixma), by Dennis Lou.
+
+2008-05-07 Jochen Eisinger <jochen@penguin-breeder.org>
+ * doc/sane-mustek_pp.man: fix catman warning. Reported by
+ Raymond Chen.
+
+2008-05-05 Earle Philhower <earlephilhower@yahoo.com>
+ * doc/sane-sm3840.man: Add lineart and halftone options to page
+ * backend/sm3840*: Remove 64-bit compile warnings
+
+2008-04-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts8891_low.c
+ doc/descriptions/rts8891.desc:
+ 150 dpi mode fix for 'XPA' sensor HP4470 models, description
+ update
+
+2008-05-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Description and man updates for PIXMA MX300.
+
+2008-05-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc:
+ Code cleanup patch to imageClass backend (pixma) by Dennis Lou.
+
+2008-05-03 Julien Blache <jb@jblache.org>
+ * backend/epson2.c: initialize s->fd to -1 once the struct
+ Epson_Scanner is allocated and zeroed out in attach(). Otherwise
+ the backend sends inquiry data to fd 0, which it obviously
+ shouldn't do; this breaks scanning over saned.
+ * doc/net.tex: replace occurrences of SANE_STATUS_SUCCESS with
+ SANE_STATUS_GOOD, as SANE_STATUS_SUCCESS doesn't exist.
+
+2008-04-28 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/epjitsu.[ch]: backend v1.0.12, fix double free bug
+
+2008-04-27 m. allan noah <kitno455 a t gmail d o t com>
+ * sanei/sanei_usb.c: allow sanei_usb_init() to run once per second
+ * backend/fujitsu.c: backend v1.0.60, relocate call to sanei_usb_init(),
+ free sane_devArray before calloc'ing a new one
+
+2008-04-22 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in: backend v1.0.59,
+ add fi-6140 PID, and fi-6x40 color mode
+ * doc/descriptions/fujitsu.desc: add fi-6140 PID, mark as 'good'
+ * doc/descriptions/epjitsu.desc: add S300M, mark as 'untested'
+
+2008-04-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Updated pixma backend to have MP970 (tested), and probably other
+ CCD sensor MPs, working for Grayscale scan.
+
+2008-04-21 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma_common.c, backend/pixma_rename.h
+ doc/sane-pixma.man, doc/descriptions/pixma.desc
+ (new) backend/pixma_imageclass.c, backend/Makefile.in:
+ Thanks to Dennis Lou, who adapted the pixma backend to add support
+ for Canon ImageCLASS series, fully tested for MF4270, and includes
+ PIDs declarations for other ImageCLASS devices, yet to be tested.
+ Fixes also a bug for ADF and ADF Duplex scan source selection.
+
+2008-04-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.h: remove #define SANE_FRAME_JPEG
+
+2008-04-19 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v1.0.58,
+ rename page code 32 to 'unknown', compile if NDEBUG is set,
+ proper async sane_cancel support, re-enable JPEG support
+ various functions rewritten (shorter, more clear)
+ * doc/descriptions/fujitsu.desc: add new fi-6xxx machines
+
+2008-04-18 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: fixed attach() error path.
+
+2008-04-14 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma.h, backend/pixma_mp150.c
+ doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ With feedback from MP970 owner, updated pixma backend for MP970
+ CCD sensor support (yet in color only), and more generally,
+ support for other CCD sensor PIXMA: MP800, MP810, MP830, MP960,
+ but yet untested, which produce shifted color planes
+ scanned images. Current trim based on sample images provided
+ in bug reports and other web pages, but might require some
+ few and simple final tweaks.
+ Also fixed a bug for MP220 at 1200 dpi, MP220 is now reported
+ to work fine.
+
+2008-04-13 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: fix typo.
+ * backend/net.c: plug an information leak in the net backend. When
+ sending out a SANE_NET_CONTROL_OPTION RPC for the
+ SANE_ACTION_GET_VALUE action (and SANE_ACTION_SET_AUTO for the
+ network protocol versions < 3), the backend was not clearing the
+ memory area for the value argument before sending it over the
+ network, resulting in an information leak for the
+ SANE_ACTION_GET_VALUE case.
+
+2008-04-12 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * backend/rts8891.c, backend/rts88xx_lib.c: fix format warning
+ * doc/sane-rts8891.man: man page fixes
+ * AUTHORS: e-mail update
+
+2008-04-11 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: announce the _sane-port._tcp service via mDNS
+ (Avahi) when running in standalone or debug mode. A separate
+ process is responsible for the announcement through Avahi.
+ * backend/net.c: look for _sane-port._tcp service announcements
+ via mDNS (Avahi). A separate thread listens to announcements
+ through Avahi. Start the thread as early as possible in
+ sane_init() so as to get as much data as possible until
+ sane_get_devices() is called.
+ * aclocal.m4, configure, configure.in, include/sane/config.h.in:
+ add autofoo stuff for Avahi support, disabled by default.
+
+2008-04-10 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: do not use daemon(), as it's a 4.4BSD/glibc
+ function; OS/2 for instance does not have it. Use an open-coded
+ equivalent. Add a PID file. saned -a username now drops privileges
+2008-04-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma_common.c, backend/pixma_rename.h
+ doc/sane-pixma.man, doc/descriptions/pixma.desc
+ (new) backend/pixma_imageclass.c, backend/Makefile.in:
+ Thanks to Dennis Lou, who adapted the pixma backend to add support
+ for Canon ImageCLASS series, fully tested for MF4270, and includes
+ PIDs declarations for other ImageCLASS devices, yet to be tested.
+ Fixes also a bug for ADF and ADF Duplex scan source selection.
+
+2008-04-20 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.h: remove #define SANE_FRAME_JPEG
+
+2008-04-19 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v1.0.58,
+ rename page code 32 to 'unknown', compile if NDEBUG is set,
+ proper async sane_cancel support, re-enable JPEG support
+ various functions rewritten (shorter, more clear)
+ * doc/descriptions/fujitsu.desc: add new fi-6xxx machines
+
+2008-04-18 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/epson2.c: fixed attach() error path.
+
+2008-04-14 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma.h, backend/pixma_mp150.c
+ doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ With feedback from MP970 owner, updated pixma backend for MP970
+ CCD sensor support (yet in color only), and more generally,
+ support for other CCD sensor PIXMA: MP800, MP810, MP830, MP960,
+ but yet untested, which produce shifted color planes
+ scanned images. Current trim based on sample images provided
+ in bug reports and other web pages, but might require some
+ few and simple final tweaks.
+ Also fixed a bug for MP220 at 1200 dpi, MP220 is now reported
+ to work fine.
+
+2008-04-13 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: fix typo.
+ * backend/net.c: plug an information leak in the net backend. When
+ sending out a SANE_NET_CONTROL_OPTION RPC for the
+ SANE_ACTION_GET_VALUE action (and SANE_ACTION_SET_AUTO for the
+ network protocol versions < 3), the backend was not clearing the
+ memory area for the value argument before sending it over the
+ network, resulting in an information leak for the
+ SANE_ACTION_GET_VALUE case.
+
+2008-04-12 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * backend/rts8891.c, backend/rts88xx_lib.c: fix format warning
+ * doc/sane-rts8891.man: man page fixes
+ * AUTHORS: e-mail update
+
+2008-04-11 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: announce the _sane-port._tcp service via mDNS
+ (Avahi) when running in standalone or debug mode. A separate
+ process is responsible for the announcement through Avahi.
+ * backend/net.c: look for _sane-port._tcp service announcements
+ via mDNS (Avahi). A separate thread listens to announcements
+ through Avahi. Start the thread as early as possible in
+ sane_init() so as to get as much data as possible until
+ sane_get_devices() is called.
+ * aclocal.m4, configure, configure.in, include/sane/config.h.in:
+ add autofoo stuff for Avahi support, disabled by default.
+
+2008-04-10 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: do not use daemon(), as it's a 4.4BSD/glibc
+ function; OS/2 for instance does not have it. Use an open-coded
+ equivalent. Add a PID file. saned -a username now drops privileges
+ and runs as the given user (and group).
+ * doc/saned.man: document -a username.
+
+2008-04-06 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Modifications for PIXMA MP970, to manage the CCD sensor
+ with PIXMA generation 3 protocol. To be tested.
+
+2008-04-06 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: add standalone daemon mode, building upon the
+ AF-indep/IPv6 debug mode. Reorganize code by splitting the main()
+ function into a series of functions. Factorize common code between
+ the old network code and the AF-indep code. There's now only one
+ version of main().
+ * doc/saned.man: document new -a flag, reorganize manpage
+ sections (separate inetd configuration under the INETD
+ CONFIGURATION section).
+
+2008-04-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_devices.c
+ backend/genesys_gl646.c backend/genesys_low.h:
+ Fixed double free problems, made OPT_COLOR_FILTER work for
+ GL646 scanners, added OPT_CUSTOM_GAMMA and OPT_GAMMA_VECTOR*
+ options, split sane_control_options to make it more readable,
+ fixed 'reset stream' problem for MD6471.
+
+2008-04-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c:
+ split sane_control_option() to make it more readable
+
+2008-04-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma.c, doc/sane-pixma.man,
+ doc/descriptions/pixma.desc:
+ Added a 10s tempo before "NO PAPER" fail message appears in ADF scan,
+ declared PIXMA MX850, moved MP970 to Generation 3 protocol, but yet
+ untested.
+
+2008-03-28 Julien Blache <jb@jblache.org>
+ * sanei/sanei_usb.c, include/sane/sanei_usb.h: add
+ sanei_usb_get_vendor_product_byname().
+ * backend/snapscan-mutex.c: do not use ftok() in
+ snapscani_mutex_open(); ftok() will fail with anything for which
+ the devicename is not a filename. Construct an IPC key based on
+ the product ID, bus number and device number for libusb devices,
+ otherwise fallback to ftok() and check its return value.
+ * tools/sane-desc.c: HAL 0.5.11-rc2 does not support the info.bus
+ property anymore; superseded by info.subsystem. Unfortunately,
+ this is not backward-compatible, so add a new "hal-new" mode to
+ sane-desc.
+
+2008-03-28 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/hp-scl.c: add usleep to improve usb performance, from
+ jim a t meyering d o t net
+
+2008-03-28 m. allan noah <kitno455 a t gmail d o t com>
+ * sanei/sanei_usb.c: add usb class 6 (imaging) to detected devices
+ * sanei/sanei_scsi.c: fix bug in sanei_scsi_find_devices() which
+ caused early return if attach callback returned error.
+
+2008-03-22 Stéphane Voltz <stef.dev@free.fr>
+ * AUTHORS configure configure.in backend/dll.conf.in
+ backend/Makefile.in backend/rts8891.c backend/rts8891.conf.in
+ backend/rts8891_devices.c backend/rts8891.h backend/rts8891_low.c
+ backend/rts8891_low.h backend/rts88xx_lib.c backend/rts88xx_lib.h
+ doc/descriptions/rts8891.desc doc/descriptions/unsupported.desc
+ doc/sane-rts8891.man:
+ rts8891 backend inclusion
+
+2008-03-20 Julien Blache <jb@jblache.org>
+ * include/Makefile.in: remove _stdint.h and byteorder.h in
+ distclean target, autogenerated cruft.
+ * frontend/saned.c: fix debug messages around the getservbyname()
+ call in the IPv4 code as it still referred to the "sane" port
+ instead of "sane-port".
+
+2008-03-16 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma.h, doc/sane-pixma.man,
+ doc/descriptions/pixma.desc:
+ Changes to have new Canon PIXMA MX700 working with pixma backend
+ Flatbed and ADF scan are supported.
+
+2008-03-15 Julien Blache <jb@jblache.org>
+ * include/sane/sanei_usb.h: typo fix.
+
+2008-03-02 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/lexmark.desc: added X1195
+ * doc/descriptions/unsupported.desc: removed X11xx, X12xx and
+ Dell A920 which are to be handled by the lexmark backend
+ * backend/umax_pp.h backend/umax_pp.c backend/umax_pp_mid.h
+ backend/umax_pp_mid.c backend/umax_pp_low.h backend/umax_pp_low.c:
+ copyright notice update
+
+2008-03-01 Gerard klaver <gerard at gkall dot hobby dot nl>
+ * doc/descriptions/as6e.desc added Dexxa 4800
+
+2008-02-26 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_sane.c: Fixed optional grayscale emulation
+ * backend/hp3900_debug.c: Silence gcc warnings when tiffio.h
+ is not used
+
+2008-02-25 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h:
+ add mode sense for page code 32 (color interlacing?)
+ and more debug output in init_ms(), for fi-5900
+
+2008-02-24 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/sane-pixma.man,
+ doc/descriptions/pixma.desc:
+ Changes to have Canon PIXMA MP140 now working with pixma backend
+
+2008-02-23 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Make LEDs go really dark when "lamp" is off
+
+2008-02-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_mp730.c,
+ doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Changed MP140 to experimental cause not working yet
+ Changed MP710 to non-ADF scanner
+
+2008-02-22 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Fix debugging output of
+ gl841_bulk_write_register
+
+2008-02-21 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys.c, backend/genesys_gl646.c,
+ backend/genesys_gl841.c, backend/genesys_low.h: Add LED exposure
+ control to gl841_set_lamp_power
+
+2008-02-20 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Send 32 registers at once instead of 1
+
+2008-02-20 Mattias Ellert <mattias.ellert@tsl.uu.se>
+ * backend/Makefile.in, ltmain.sh: Library version definition fixes
+ * backend/coolscan3.c: Fix format warnings
+
+2008-02-18 Alessandro Zummo <a.zummo@towertech.it>
+ * backend/coolscan3.c: added new coolscan3 backend
+ with improved stability and infrared support.
+ * configure.in, include/sanei.h: bumped version
+ number to 1.1.0 and enabled 1.1 frame types.
+
+ doc/sane-pixma.man, doc/descriptions/pixma.desc,
+ doc/descriptions-external/canon_mfp.desc:
+ > New models changes:
+ - added: Pixma MP210, MP470, MP520, MP610, MP710
+ - declared but untested: Pixma MP140, MP220, MP740
+ - declared experimental and untested: MP970
+ > Bugs and fixes
+ - multipage documents scan no more fails in non-ADF scan
+ - IO Fail bug when scanning large pages e.g. with Xsane
+ - implement send_time message form MP710, MP730 family
+ - run indent -gnu on all pixma_* source files.
+
+2008-02-14 m. allan noah <kitno455 a t gmail d o t com>
+ * backend/cardscan.c, backend/epjitsu.c, backend/fujitsu.c:
+ sanei_read_config has already cleaned string, fix bug #310597
+
+2008-02-13 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ Patch by Stefan Lucke <stefan@lucke.in-berlin.de>
+ * backend/genesys_gl841.c: Fixes 3 possibilities for infinite
+ loops and adjusts loop threshold to given comments
+
+2008-02-13 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900.c, backend/hp3900_debug.c, backend/hp3900_rts8822.c,
+ backend/hp3900_usb.c, backend/hp3900_sane.c, backend/hp3900_types.c,
+ backend/hp3900_config.c, backend/hp3900.conf.in, /doc/sane-hp3900.man,
+ doc/descriptions/hp3900.desc: Minor changes and added support for
+ HP ScanJet G2710 scanner.
+
+2008-02-10 m. allan noah <kitno455 a t gmail d o t com>
+
+ * configure, configure.in: Changed version to 1.0.19-cvs. Enabled
+ compilation warnings.
+ * Makefile.in: Added ChangeLog-1.0.19 to DISTFILES.
+
+Older entries can be found in ChangeLog-1.0.19.
diff --git a/ChangeLogs/ChangeLog-1.0.21 b/ChangeLogs/ChangeLog-1.0.21
new file mode 100644
index 0000000..f8cbc3a
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.21
@@ -0,0 +1,887 @@
+****** Release of sane-backends 1.0.21. End of code freeze ******
+
+2010-04-25 Chris Bagwell <chris at cnpbagwell do com>
+ * tools/sane-config.in: Fix typo: REGMGR=RESMGR.
+
+2010-04-21 m. allan noah <kitno455 at gmail dot com>
+ * tools/.gitignore: add sane-backends.pc
+ * po/uk.po: updated translation from Yuri Chornoivan
+ * po/nl.po: updated translation from Martin Kho
+
+2010-04-20 Chris Bagwell <chris at cnpbagwell do com>
+ * doc/descriptions-external/epkowa.desc: Updated based
+ on values that will be in next release of iscan.
+ Updated 4 pre-existing SCSI models with commonly used
+ model names. This allows wider range of Epson SCSI scanners
+ to be correctly detected using auto-generated hal and udev
+ files. This benefits epkowa, epson2, and epson backends.
+
+2010-04-18 m. allan noah <kitno455 at gmail dot com>
+ * tools/sane-desc.c: Update the sane-devel contact suggestion
+
+2010-04-16 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs1025*, kvs1025.desc, sane-kvs1025.man: backend v3
+ - invert usb status, add 0x to usbids, add missing KV-S1045 usbid
+
+2010-04-12 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_io_sanei.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: added changes from Gernot Hassenpflug to fully support
+ Canoscan 8800F.
+ debug code clean-up in pixma_mp150.c
+
+2010-04-12 Chris Bagwell <chris at cnpbagwell dot com>
+ * backend/p5.c, backend/p5_device.c, backend/p5.h:
+ Remove references to libc.h in p5.h. On OSX, it was including
+ socket.h and causing compile fail with conflicting connect()
+ functions. Since backend doesn't support network
+ connects, should be fine to use name connect.
+
+2010-04-07 Chris Bagwell <chris at cnpbagwell dot com>
+ * acinclude.m4: cygwin and mingw is now hiding M_PI_2
+ defines with -ansi flag. Remove to fix cygwin compile.
+ Mingw doesn't support fork() so default to pthreads.
+ Add u_short to complete definition of u_* types which
+ helps out ming when we define _BSDTYPES_DEFINED.
+
+2010-03-25 Stéphane Voltz <stef.dev at free.fr>
+ * backend/p5.c backend/p5_device.[ch] backend/genesys_gl646.c:
+ replace u_int8_t and u_int16_t by uint8_t and uint16_t
+
+2010-04-06 Chris Bagwell <chris at cnpbagwell dot com>
+ * configure.in, tools/sane-backends.pc.in: Add stub for future
+ pkg-config support to configure. This allows distributes
+ that are patching in pkg-config support to not rerun
+ autoconf and wipe out our custom libtool.
+ * tools/sane-config.in: Fix LDFLAGS bug related to GPHOTO2
+ support.
+
+2010-04-02 Chris Bagwell <chris at cnpbagwell dot com>
+ * acinclude.m4: Add --enable-rpath option to configure.
+ Ported from Fedora patches.
+
+2010-04-02 Chris Bagwell <chris at cnpbagwell dot com>
+ * backend/kvs1024*: Remove includes of usb.h
+ directly into backend. Complete prototype
+ for sane_exit().
+
+2010-04-02 Chris Bagwell <chris at cnpbagwell dot com>
+ * po/Makefile.am: Remove unneeded distclean-local target.
+
+2010-03-25 Stéphane Voltz <stef.dev at free.fr>
+ * backend/kvs1025.c: compile fix
+
+2010-03-25 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs1025*: convert backend from libusb to sanei_usb
+ * doc/descriptions/kvs1025.desc, doc/sane-kvs1025.man: update docs
+ * backend/dll.conf.in, configure, configure.in: enable kvs1025 backend
+
+2010-03-16 Stéphane Voltz <stef.dev at free.fr>
+ * backend/rts8891.c: change register 0x11 settings for sensor type 1
+
+2010-03-15 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc:
+ pixma: fix color shifts for MP990 up to 2400 dpi
+ updated and reorderd descs for several models.
+
+2010-03-15 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.[ch] backend/genesys_devices.c backend/genesys_low.h
+ backend/genesys_gl646.[ch] backend/genesys_gl841.c: full transparency
+ adaptor support for gl646 based scanners
+
+2010-03-11 Stéphane Voltz <stef.dev at free.fr>
+ * backend/rts8891.c: further register tweaking for 600 dpi scans
+
+2010-03-11 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark.c: minor bugfix when assigning possible dpi list
+
+2010-03-07 Stéphane Voltz <stef.dev at free.fr>
+ * backend/rts8891.c: tweak register settings at 600 dpi for HP4470
+
+2010-03-05 Stéphane Voltz <stef.dev at free.fr>
+ * backend/rts8891.c: fix HP4470 sensor detection
+
+2010-03-04 Stéphane Voltz <stef.dev at free.fr>
+ * backend/rts8891.c backend/rts8891.h: add debug traces for sensor
+ type handling
+
+2010-03-04 Stéphane Voltz <stef.dev at free.fr>
+ * doc/desc/genesys.desc: fix HP2400/G2410 USB id, update HP3670
+ status
+
+2010-03-01 Stéphane Voltz <stef.dev at free.fr>
+ * doc/sane-p5.man doc/sane-umax_pp.man doc/sane-rts8891.man
+ doc/sane-lexmark.man: fix author name accentuation and capitalization
+
+2010-03-01 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl646.c
+ backend/genesys_devices.h: enable warming up and calibration cache
+ for HP3670
+
+2010-02-28 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h: tune HP2400/G2410 settings
+
+2010-02-27 Chris Bagwell <chris at cnpbagwell dot com>
+ * Rerun autoconf/automake to align files to single version
+ of tools.
+
+2010-02-27 m. allan noah <kitno455 at gmail dot com>
+ * */Makefile.in: update with (unfortunately) slightly older automake
+ * po/*: standard gettext layout by Adi Roiban <adi at roiban dot ro>
+ * doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in:
+ add S1500M entry by Harald Weis
+ * tools/sane-desc.c: Condense warnings about half-baked .desc files
+
+2010-02-27 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h: final work for HP3670 full support
+
+2010-02-25 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.c: fix regression for gl646 CCD scanners due
+ to incorrect color filter setting.
+
+2010-02-23 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h: XP200 calibration rework. Some HP3670
+ improvements.
+
+2010-02-22 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c: force enable flatbed for M3092, by Jochen Hepp
+ * doc/Makefile.*, doc/descriptions-external/kodak-twain: new backend
+
+2010-02-22 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: Updated for iscan 2.24.0.
+
+2010-02-16 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h backend/genesys_low.h: buttons and basic XPA
+ support for HP3670.
+
+2010-02-15 Stéphane Voltz <stef.dev at free.fr>
+ * backend/p5.c backend/p5.h backend/p5_device.c backend/p5_device.h
+ backend/p5.conf.in doc/descriptions/p5.desc doc/sane-p5.man: add new p5 backend for
+ Primax PagePartner
+ * backend/dll.conf.in backend/Makefile.* configure* doc/Makefile.*
+ doc/sane.man: p5 backend integration changes
+
+2010-02-13 m. allan noah <kitno455 at gmail dot com>
+ * backend/avision.[ch]: updated settings for Visioneer 9450,
+ based on code from Andyz Smith
+ * doc/descriptions/avision.desc: added AV220-G and 6080E
+
+2010-02-12 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs1025*: add new backend from Panasonic Russia, Ltd.
+ * backend/Makefile.*, configure*, doc/Makefile.*, doc/sane.man:
+ backend integration changes
+ * doc/desciptions/kvs1025.desc, doc/sane-kvs1025.man:
+ the parts Panasonic forgot
+
+2010-02-12 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c: disable bg_color for S1500
+
+2010-02-12 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.c: fixed MD5345 calibration
+
+2010-02-12 Stéphane Voltz <stef.dev at free.fr>
+ * doc/descriptions/genesys.desc backend/genesys.c
+ backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h: added support for hp3670, uncalibrated scans
+ only
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * include/sane/saneopts.h: add three new SANE_VALUE macros
+ * backend/*.[ch]: use mode name macros from saneopts.h by Robert Ancell
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * doc/descriptions/hpaio.desc: updated from hplip v3.9.12
+ * po/sane-backends.nl.po: updates from Armijn Hemel
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.c, backend/cardscan.c, backend/epjitsu.c,
+ backend/fujitsu.c, backend/kodak.c, po/Makefile.*:
+ - enable translations of all static strings via SANE_I18N macro
+ - don't fail if sanei_scsi_open gives smaller buffer than asked for
+ * doc/descriptions/kodak.desc, doc/sane-canon_dr.man,
+ doc/sane-fujitsu.man, doc/sane-kodak.man:
+ - minor version number and text updates
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * acinclude.m4, configure: missing $ in variable expansion
+ * frontend/scanimage.c: exit with error if stdout isatty()
+ * doc/descriptions/unsupported.desc, doc/descriptions/lexmark.desc:
+ - add Dell A940 and correct manpage name
+ * backend/gt68xx_high.c: maximum exposure 245 not 248, see bug #312113
+ * po/Makefile.*, po/sane-backends.ja.po:
+ - New Japanese translation from Hiroshi Miura
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/cardscan.[ch], backend/cardscan.conf.in,
+ doc/descriptions/cardscan.desc, doc/sane-cardscan.man:
+ - add lines_per_block config option
+ - add has_cal_buffer config option
+ - basic support for 600C
+ - clean #include lines
+ * doc/sane.man: add missing backends
+
+2010-02-10 Stéphane Voltz <stef.dev ar free.fr>
+ * doc/descriptions/genesys.desc: added G2410
+
+2010-02-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/gt68xx_devices.c: add GT68XX_FLAG_NO_STOP to SF600
+ * doc/.gitignore, doc/Makefile.am, doc/Makefile.in:
+ - added new targets for scanner search engine db
+ * doc/releases.txt: improved doc
+ * doc/saned.man: clean typos
+ * tools/sane-desc.c: removed NAME= from udev rules (deprecated)
+
+2010-02-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c, doc/descriptions/fujitsu.desc,
+ backend/canon_dr.c, doc/descriptions/canon_dr.desc,
+ backend/epjitsu.c, doc/descriptions/epjitsu.desc,
+ doc/sane-fujitsu.man, doc/sane-canon_dr.man, doc/sane-epjitsu.man,
+ backend/epjitsu.conf.in:
+ - cleanup #include lines, copyrights, manual, and supported scanners.
+
+2010-02-08 Stéphane Voltz <stef.dev ar free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_conv.c
+ backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h: working uncalibrated 150/300 dpi modes for
+ HP3670. Enable custom gamma for gl841 based scanners. Turned dynamic
+ line-art to be default.
+
+2010-02-03 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_conv.c: add safeguards when doing gray normalization
+
+2010-02-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ pixma: updated docs for supported model ImageCLASS MF4350d.
+
+2010-01-31 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_conv.c: normalize gray data when doing dynamic
+ lineart.
+
+2010-01-30 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.conf.in backend/genesys_devices.c
+ doc/descriptions/genesys.desc doc/sane-genesys.man: add Xerox Travel
+ Scanner 100, work by Andrey Loginov <avloginov@gmail.com>
+
+2010-01-29 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_io.h, backend/pixma_imageclass.c,
+ doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ pixma: changed usb timeouts to 20 sec to support ImageClass MF3240.
+ updated source code comments and documentation.
+
+2010-01-28 Oliver Schwartz <oliverschwartz at users.sourceforge.net>
+ * backend/snapscan-usb.c: Use hash of device string instead of parsing
+ it to create a semaphore id. The new code is less platform dependent
+ and should also work on FreeBSD 8.0.
+
+2010-01-27 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_conv.c
+ backend/genesys_low.h backend/genesys_gl841.c: add dynamic lineart
+ scanning based on epjitsu code by m. allan noah.
+
+2010-01-19 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.h, backend/pixma_mp150.c:
+ pixma: changes for cropped area enhancement, supplied by Christian Scholtz
+ for generation 3+ devices.
+
+2010-01-19 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys.h
+ backend/genesys_conv.c backend/genesys_devices.c
+ backend/genesys_gl646.c backend/genesys_gl841.c backend/genesys_low.h
+ doc/descriptions/genesys.desc doc/sane-genesys.man: add Visioneer
+ OneTouch 7100 (patch by Jack McGill). Add software lineart option.
+
+2010-01-17 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl646.c: gray shading calibration
+ fix for CCD GL646 based scanners.
+
+2010-01-17 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * po/sane-backends.sv.po: Updated Swedish translations.
+
+2010-01-16 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl646.c: re-enable threshold
+ option, fix wpl computing for HP2400
+
+2010-01-13 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_low.c backend/genesys_gl646.c
+ backend/genesys_gl841.c doc/sane-genesys.man : add true gray scanning
+ for CIS based scanners
+
+2010-01-08 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ pixma: updated documentation for MP490 and MP550 (supported models).
+
+2009-12-30 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark_low.c: improve init time debug messages
+
+2009-12-26 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, backend/pixma.c, backend/pixma_mp150.c:
+ pixma: some routine maintenance updates to backend and documentation.
+
+2009-12-24 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: fix a bug in the standalone polling code.
+
+2009-12-05 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl841.c backend/genesys_low.h:
+ fixed amount of bytes left to read at document end for gl841 based
+ sheetfed scanners
+
+2009-12-09 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man,
+ backend/pixma_imageclass.c, backend/pixma_mp150.c:
+ pixma: updated backend, docs and desc for support to MP560 and MF4330d/ADF
+
+2009-12-06 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man,
+ backend/pixma.h, backend/pixma.c, backend/pixma_mp150.c:
+ pixma: bumped version, added compilation type debug message.
+ updated doc and desc (support for MX330)
+
+2009-12-05 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl841.c backend/genesys_devices.c
+ backend/genesys_low.h backend/genesys.conf.in
+ document/descriptions/genesys.desc: add full support for
+ Ambir/Syscan DS685. Use maximum height to handle the case when document
+ height isn't known before scan for sheetfed scanners
+
+2009-12-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ pixma: fix pixma backend bug for compilation with USE_PTHREAD/-lpthread
+
+2009-12-01 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl841.c: take amount of data in scanner's buffer
+ into account when detecting end of document
+
+2009-11-30 Stéphane Voltz <stef.dev at free.fr>
+ * backend/gt68xx.c backend/gt68xx_high.c backend/gt68xx_high.h
+ backend/gt68xx_low.h backend/gt68xx_gt6816.h backend/gt68xx_gt6816.c:
+ implement request '0x59' which detects document presence for 6816. Add
+ a sensor option to reports document presence, and test for document
+ before scan for 6816 sheetfed scanners.
+
+2009-11-29 Stéphane Voltz <stef.dev at free.fr>
+ * backend/gt68xx.c backend/gt68xx_high.c backend/gt68xx_high.h:
+ added 'clear calibration' button option and 'need calibration'
+ sensor option.
+
+2009-11-28 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma_mp1580.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: fix pixma backend (end of scan), when compiled with USE_PTHREAD/-lpthread
+ set support to complete for MP990 in documentation, as reported by Jean-Michel Poure.
+
+2009-11-28 Stéphane Voltz <stef.dev at free.fr>
+ * backend/gt68xx_generic.h backend/gt68xx_generic.c
+ backend/gt68xx_low.h backend/gt68xx_high.c backend/gt68xx_high.h
+ backend/gt68xx_devices.c backend/gt68xx.c
+ doc/descriptions/gt68xx.desc: added sheetfed calibration
+
+2009-11-25 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl841.c: use only signed vars in
+ gl841_detect_document_end with a few more debug traces
+
+2009-11-25 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.conf.in backend/genesys_gl841.c
+ backend/genesys_devices.c: added docketport 467 model and add
+ debug traces in gl841_detect_document_end
+
+2009-11-23 Stéphane Voltz <stef.dev at free.fr>
+ * backend/gt68xx_generic.h backend/gt68xx_generic.c
+ backend/gt68xx.conf.in backend/gt68xx_low.h backend/gt68xx_high.c
+ backend/gt68xx_devices.c backend/gt68xx.c: fixed gt6816 based sheetfed
+ scanners positionning by implementing and using a move paper request.
+ Added Iriscan Express 2 model based on reports seen in sane-devel
+ list.
+
+2009-11-19 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: updated Pixma MP250 status to supported. Changed desc status
+ from good to complete for well supported models.
+
+2009-11-16 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.conf.in backend/genesys_gl841.c
+ doc/descriptions/genesys.desc : applied fixes and status update from
+ Jack McGill.
+
+2009-11-16 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl841.c: add needed flags for DP485/487 and XP100
+ scanners. Use different thresholds in strip detection function. Do
+ led, coarse and gain calibration at sensor's max resolution when doing
+ sheetfed calibration.
+
+2009-11-14 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc: add the Perfection636 SCSI scanner, from
+ Frédéric Brière <fbriere@fbriere.net>.
+
+2009-11-06 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_devices.c
+ backend/genesys_gl646.c backend/genesys_gl646.h backend/genesys_gl841.c
+ backend/genesys_low.h doc/descriptions/genesys.desc
+ doc/sane-genesys.man:
+ sheetfed calibration work merge. All genesys supported sheetfed
+ scanners can now be calibrated with a special sheet.
+
+2009-10-28 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: declared Pixma MP550 (yet untested), updated docs.
+
+2009-10-22 Louis Lagendijk <llagendijk at users.alioth.debian.org>
+ * doc/sane-pixma.man:
+ Added networking details to doc/sane-pixma.man
+
+2009-10-21 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, doc/sane-pixma.man:
+ pixma: added I-SENSYS MF4320d and updated doc, for this model and MP390.
+
+2009-10-20 Louis Lagendijk <louis@lagendijk.xs4all.nl>
+ * backend/pixma_io_sanei.c:
+ Allow for ranges in model returned from device (allow -)
+
+2009-10-18 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: updated doc to include support for MP270 and ImageClass MF3110
+
+2009-10-18 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_imageclass.c, backend/pixma.h,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma:
+ - bumped backend version to 0.16.1
+ - Some error condition fixes to Generation 4 (MP640, ...) XML code
+ - Added ImageClass MF4360dn-MF4390dn
+
+2009-10-18 Troy Rollo <trollo-guest at users.alioth.debian.org>
+ * backend/hp3500.c: Stop backed from calling exit(), which is not
+ helpful when using threads instead of processes.
+
+2009-10-16 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: Changes to include new XML dialog for new 2009 PIXMA models,
+ like MP270 or MP640.
+
+2009-10-03 Ilia Sotnikov <hostcc@gmail.com>
+ * backend/epjitsu.c: use own private function instead of roundf()
+
+2009-10-02 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.c: honor GENESYS_NO_CALIBRATION device
+ flag when setting registers for final scan
+
+2009-10-01 Jonathan Bravo Lopez <jkdsoft at gmail dot com>
+ * backend/hp3900_sane.c:
+ fix bug 311991: "Bad option sizes let frontend (e.g. xsane) crash"
+
+2009-10-01 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark_low.c: fix a memleak in find_start_line(),
+ check success of memory allocation after calloc()
+
+2009-09-29 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * backend/Makefile.am, backend/Makefile.in:
+ Add missing sanei_pio to qcam backend. Fixes compile
+ error on embedded Linux boxes. Added new genesys_gl646.h
+ to backend's SOURCES so its included in tar file.
+ * doc/Makefile.am, doc/Makefile.in:
+ Remove manual deletion of $docdir. Modern automake cleans
+ up fine after itself and this fix is required for distcheck
+ target to pass on automake-1.11.
+
+2009-09-27 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_bjnp.c, backend/pixma_mp730.c:
+ Print size_t values as %lu with cast to unsigned long
+ as prescribed in the file doc/backend_writing.txt, to avoid
+ compile warnings.
+ Removed unused debug code.
+
+2009-09-26 Julien Blache <jb@jblache.org>
+ * backend/genesys.c: add missing check when logging raw data,
+ patch by Tollef Fog Heen <tfheen@err.no>.
+
+2009-09-16 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man:
+ pixma backend: Updated documentation for:
+ - Pixma MP260 support
+ - descriptions for recently added new models
+
+2009-09-14 m. allan noah <kitno455 at gmail dot com>
+ * sanei/sanei_usb.c: reset the libusb device handle after bus scan.
+ patch from Hans Petter Selasky
+ * backend/fujitsu.*, backend/Makefile.*: backend v97,
+ use sanei_magic to provide software deskew, autocrop and despeckle
+ * sanei/sanei_magic.c, include/sane/sanei_magic.h, Makefile.*:
+ new image processing lib for deskew, despeckle, autocrop.
+
+2009-09-13 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_mp730.c:
+ pixma backend: Declared new Pixma models MP250, MP490, MP560, MP640,
+ and MP990, all yet untested, and modified some debug code.
+
+2009-09-11 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * tools/sane-find-scanner.c: Fix false warning about USB not
+ supported when linking with libusb-1.0.
+ * po/sane-backends.sv.po: Updated Swedish translations.
+
+2009-09-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp730.c:
+ pixma backend: added debug info for MF3110 and changed default params.
+
+2009-09-06 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp730.c, backend/pixma_imageclass.c, backend/pixma_mp150.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma backend:
+ - Fix usb interrupt messages handling for MF3110
+ - New support for ImageClass MF4660
+ - Documentation updates
+
+2009-09-03 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp730.c:
+ pixma backend: change for MF3110 image encoding.
+
+2009-08-29 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, backend/pixma_mp730.c:
+ pixma backend: moved MF3110 declaration to mp730 part of backend.
+
+2009-08-27 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, backend/pixma_mp150.c:
+ - pixma backend: Updated description for MP830 reported to be fully supported.
+
+2009-08-13 m. allan noah <kitno455 at gmail dot com>
+ * tools/sane-desc.c: add closedir call to fix bug #311880, patch
+ from Johannes Meixner
+
+2009-08-08 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: run_standalone(), explicitely check for errors
+ on fds.
+
+2009-08-07 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: Backend v96
+ - split sane_get_parameters into two functions
+ - remove unused code from get_pixelsize
+ - support hardware based auto length detection
+ * doc/descriptions/fujitsu.desc: various status and comment updates
+
+2009-08-07 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.c backend/genesys_devices.c:
+ - small fixes for hp3670 support
+
+2009-08-05 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c:
+ - fixed shading calibration for hp2300 when dpi <= 300
+
+2009-08-04 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_devices.c:
+ - fixed document end detection for gl646 cis scanners
+ - disable color filter fro gray mode for gl646 cis scanners
+
+2009-08-03 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - pixma backend: few cosmetic documentation updates.
+
+2009-08-02 Stéphane Voltz <stef.dev at free.fr>
+ * frontend/tstbackend.c: remove WARMING_UP_STATUS usage
+
+2009-07-30 Jonathan Bravo Lopez <jkdsoft at gmail dot com>
+ * backend/hp3900_config.c:
+ - Fixed bug [#311856] possible for loop overflow
+
+2009-07-29 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch]: Backend v34
+ - add simplified Hough transform based deskewing code
+ - add extremity detecting cropping code
+ - use per-model background color to fill corners after deskew
+ - request and chop extra scanlines instead of rounding down
+ - remove padding dumb scanners add to top of front side
+ - sane_get_params uses intermediate struct instead of user struct
+ - if scanner stops, clone the last line until the end of buffer
+ - reset some intermediate params between duplex sides
+
+2009-07-28 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc:
+ - Updated pixma backend desc for Pixma MX860
+
+2009-07-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Fix in declarations for Pixma MX320, MX330 and MX860,
+ - Updated docs for MX860, confirmed to be supported.
+
+2009-06-23 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch]: Backend v33
+ - add software brightness/contrast for dumb scanners
+ - add blocking mode to allow full-page manipulation options to run
+ - add swdespeck option and support code
+ - add swdeskew and swcrop options (disabled)
+
+2009-06-22 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch]: Backend v32
+ - crop/resample image data before buffering, not after
+ - shink image buffers to size of output image, not input
+ - correct some debug message
+ - better handling of EOF
+ - add intermediate param struct to existing user and scan versions
+
+2009-07-17 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.c: more sanity checking for debug mode.
+
+2009-07-15 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark.h: disable deep debugging
+
+2009-07-10 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys.c backend/genesys_gl646.c backend/genesys_low.h
+ backend/genesys_gl646.h backend/genesys_gl841.c
+ backend/genesys_devices.c backend/genesys.h:
+ - add shading calibration for sheetfed scanners
+ - shading calibration fix for all gl646 based scanners
+
+2009-07-06 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark.c backend/lexmark.h backend/lexmark_low.h:
+ do not use resolution higher than sensor resolution when doing
+ calibation.
+
+2009-07-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.h, backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Declared new models (yet untested) Pixma MX330 and MX860, updated docs.
+ - Bump backend minor version number.
+
+2009-07-01 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in: usbid for Samsung SCX-4500W
+
+2009-06-29 m. allan noah <kitno455 at gmail dot com>
+ * po/Makefile.am, po/Makefile.in, po/sane-backends.uk.po:
+ - Ukrainian translation from yurchor@ukr.net
+ * backend/avision.c: set flag for Fujitsu SP620C
+ * doc/desciptions/unsupported.desc: minor updates to Canon scanners
+ * doc/descriptions/canon_dr.desc: set status complete on 5 machines
+ * backend/canon_dr.c: reduce default buffer size to 2 megs
+
+2009-06-26 Julien Blache <jb@jblache.org>
+ * po/Makefile.am, po/Makefile.in, po/sane-backends.gl.po: added
+ new gl (galician/galego) translation.
+ * po/sane-backends.es.po: update es translation.
+ Both translations courtesy of Miguel Bouzada <mbouzada(at)gmail(dot)com>
+ * po/README: update instructions for po file addition.
+
+2009-06-22 m. allan noah <kitno455 at gmail dot com>
+ * backend/kodak.*: new backend for big Kodak SCSI/Firewire scanners
+ * doc/desciptions/kodak.desc, doc/sane-kodak.man: docs for same
+
+2009-06-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, backend/pixma_mp730.c, doc/descriptions/pixma.desc:
+ - Added duplex ADF scan for Canon ImageCLASS D480.
+ - Fixed ImageCLASS MF5770 grayscale scanning.
+ - Moved ImageCLASS MF5730 and MF5750 to pixma_mp730.c (similarity with MF5770).
+ - Updated documentation.
+
+2009-06-20 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * po/sane-backends.sv.po: Updated Swedish translations.
+ * backend/hp5400_internal.h, backend/hp5590_cmds.c,
+ backend/hp5590_low.c, backend/net.c: Add missing includes.
+
+2009-06-20 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Added Canon imageCLASS D480 support to the pixma backend.
+
+2009-06-17 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark_low.c: f3/f4 registers assignement cleanup
+
+2009-06-18 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Fixed typo in pixma backend for MX320 declaration.
+
+2009-06-17 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch], backend/canon_dr-cmd.h: backend v30
+ - add fine cal support for machines with internal buffer (2050/2080)
+ - support fixed-width machines that require even bytes per scanline
+ - pad end of scan with gray if scanner stops prematurely
+ - better handling of errors during calibration
+ - cleanup canceling debug messages
+ - remove old cancel() prototype
+ - small sleep before clearing usb halt condition
+
+2009-06-17 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark_low.c: cleanups, better logging in is_home_line()
+ and possible fix for bug #311862 by using f4 & f5 registers instead of
+ f3 & f4
+
+2009-06-16 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Declared Pixma MX320 in the pixma backend. Yet untested.
+
+2009-06-16 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: fix strict aliasing issues, now problematic
+ with gcc 4.4.
+
+2009-06-14 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Thanks to Vladimir Andreev patch, fix network scan for MP800R.
+ Documentation updates for latest MF5770 changes.
+
+2009-06-13 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in, doc/descriptions/xerox_mfp.desc: usbids
+ for some Samsung devices.
+ * backend/xerox_mfp.c: backend version increment.
+
+2009-06-09 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * sanei/sanie_tcp.c, backend/epson2_net.c: Update
+ sanei_tcp_read() to better simulate old behavior of
+ MSG_WAITALL. recv() tends to return MTU sized chunks
+ of data without that option. And at least cygwin doesn't
+ support MSG_WAITALL. Re-enable epson2 using that function
+ for big recieves.
+ * libgetopt.c, libgetopt1.c: Revert some logic meant to be used
+ only when we were always compiling internal getopt() functions.
+ Fix header filename.
+
+2009-06-09 Stéphane Voltz <stef.dev at free.fr>
+ * backend/lexmark.h backend/lexmark.c backend/lexmark_low.c:
+ cleanups, better 'fake usb' and possible fix for bug #311862
+
+2009-06-08 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.c: backend v29
+ - split coarse and fine cal to run independently
+ - add side option
+ - reset scan params to user request if calibration fails
+ - better handling of sane_cancel
+ - better handling of errors during sane_start and sane_read
+
+2009-06-08 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp730.c, backend/pixma_imageclass.c:
+ Modifications to support Canon ImageClass MF5770
+
+2009-06-04 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_gl841.c: Make calibration steps always send
+ registers before trying to acquire a line.
+
+2009-05-29 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * doc/descriptions/genesys.desc:
+ Added description for Visioneer XP100r3, Visioneer Roadwarrior,
+ demoted DocketPort 465 to "untested"
+
+2009-05-28 m. allan noah <kitno455 at gmail dot com>
+ * backend/pnm.c: hide 'warming up' and 'hw locked' 'devices'
+
+2009-05-26 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon.c: clamp film type to allowed range (bug #311685)
+
+2009-05-25 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch]: backend v94
+ - add side option to show which duplex image is being transferred
+ - convert front and simplex buffers to use much less ram
+ - add lowmemory option which makes duplex back buffer small too
+ - refactor image handling code to track eof's instead of lengths
+ - do color deinterlacing after reading from scanner, before buffering
+
+2009-05-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * sanei/sanei_usb.c:
+ Adds debug verbosity to last sanei_usb.c patch.
+
+2009-05-23 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man, doc/descriptions/pixma.desc:
+ Updated documentation for Pixma MultiPass MP730.
+
+2009-05-22 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.c:
+ - additional error check to (stop scanadf) + fix of it.
+
+2009-05-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c, backend/pixma_mp730.c, sanei/sanei_usb.c:
+ - pixma_imageclass.c: supported devices list cleanup.
+ - pixma_mp730.c: fixed scan area width adjust and end of scan protocol for MP730.
+ - sanei/sanei_usb.c: in sanei_usb_open(), changed "endpoints seek loop" to
+ take into account only interfaces detected by sanei_usb_init()
+ Fixes Pixma MP730 usb wrong endpoints selection.
+
+2009-05-19 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * backend/genesys_devices.c, backend/genesys_low.h:
+ Add Pentax DSmobile 600, Syscan 485, DCT 487
+
+2009-05-18 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.h: fixed missing part of the include
+
+2009-05-13 Stéphane Voltz <stef.dev at free.fr>
+ * backend/genesys_gl646.c backend/genesys_gl646.h: created a
+ genesys_gl646.h header file, moved all declarations from
+ genesys_gl646.c to this file.
+
+2009-05-13 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c:
+ Fixed Pixma MP600R for network scan. Changes apply to MP600R _and_ MP600,
+ to use now a strict clone of Canon's driver protocol.
+
+2009-05-09 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * */*.c: standardize including local sane include files.
+
+2009-05-09 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc:
+ Fixed Pixma MP600 and MP600R for 2400 dpi scan, updated their descriptions.
+
+2009-05-08 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr*: backend v27
+ - bug fix in read_panel()
+ - initialize vars in do_usb_cmd()
+ - set buffermode off by default
+ - clear page counter during init and sane_start()
+ - eject previous page during init and sane_start()
+ - improved SSM_BUFF macros
+ - moved set_window() to after ssm-*()
+ - add coarse calibration (AFE offset/gain & per-channel exposure)
+ - add fine calibration (per-cell offset/gain)
+ - free image and fine cal buffers in sane_close()
+ - compare page counter of small scanners only in non-buffered mode
+ - add back-side gray mirroring code for DR-2580C
+
+2009-05-06 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc:
+ Updated descriptions in pixma backend for ImageClass MF4010 and MF4018.
+
+2009-05-06 Ilia Sotnikov <hostcc@gmail.com>
+
+ * doc/descriptions/unsupported.desc:
+ HP ScanJet 4500C/4570C/5500C is supported by the 'hp5590' backend.
+ * doc/descriptions/hp5590.desc:
+ Updated backend version, added HP ScanJet 4500C as completely supported,
+ added HP ScanJet 5500C as untested, HP ScanJet 4570C/5550C/5590/7650
+ marked as completely supported
+ * tools/check-usb-chip.c:
+ Updated HP ScanJet model names displayed during the check_hp5590().
+ * backend/hp5590.c, backend/hp5590_cmds.c, backend/hp5590_cmds.h,
+ backend/hp5590_low.c, backend/hp5590_low.h, doc/sane-hp5590.man:
+ Updated the list of supported devices (added HP 5500C which is similar
+ to 4570C, 5500C which is similar to 4500C) - only strings/comments, no
+ code was changed. Updated backend version. Updated man page.
+
+2009-05-06 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: unbreak udev rules, use ATTRS instead of ATTR
+ for USB devices.
+ * frontend/saned.c: pass the network fds to saned_avahi() so the
+ Avahi process can close them. Fixes a hang possible hang of the
+ net backend when saned is run in debug mode.
+
+2009-05-05 Julien Blache <jb@jblache.org>
+ * doc/backend-writing.txt, doc/releases.txt: update for the switch
+ to git.
+
+2009-05-04 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * acinclude.m4: Rename --enable-fork-process to --enable-pthreads
+ to match internal usage. Stop linking in pthread when disabled.
+ * backend/Makefile.am: Add $PTHREAD_LIBS to all backends that
+ include sanei_thread.
+ * Makefile.am: Add new ChangeLog-1.0.20 to distribution list.
+
+2009-05-03 m. allan noah <kitno455 at gmail dot com>
+ * ChangeLog-1.0.20, Makefile.in: ChangeLog from 1.0.20 release
+ * configure, configure.in: version 1.0.21cvs
+ * doc/releases.txt: minor updates for new build system
+ * doc/descriptions/canon_dr.desc, doc/descriptions/coolscan3.desc,
+ doc/descriptions/rts8891.desc, doc/descriptions/xerox_mfp.desc:
+ remove :new tag
+
+2009-05-03 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
+ * Makefile.in, aclocal.m4, configure, */Makefile.in: Regenerated
+ with newer automake.
+ * backend/Makefile.am, tools/sane-config.in: Add missing
+ $GPHOTO2_LDFLAGS so library can be found.
+ * tools/Makefile.am: Add mising $SCSI_LIBS to sane-find-scanner.
+
+Older entries can be found in ChangeLog-1.0.20.
diff --git a/ChangeLogs/ChangeLog-1.0.22 b/ChangeLogs/ChangeLog-1.0.22
new file mode 100644
index 0000000..aa62c14
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.22
@@ -0,0 +1,536 @@
+****** Release of sane-backends 1.0.22. End of code freeze ******
+
+2011-02-10 m. allan noah <kitno455 at gmail dot com>
+ * po/nl.po: updates from Martin Kho
+ * po/uk.po: updates from Yuri Chornoivan
+
+2011-02-04 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: disable image processing options at 16 bits since
+ they can't handle it.
+
+2011-02-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.c backend/genesys_gl843.c:
+ more asynchronous parking issues
+
+2011-01-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.[ch]: don't return EOF too
+ early when applying image processing functions, handle writing of
+ lineart data, improve asynchronous head parking
+
+2011-01-31 m. allan noah <kitno455 at gmail dot com>
+ * backend/epjitsu.c, doc/descriptions/epjitsu.desc:
+ - comment changes
+ - added new models
+ * backend/fujitsu.c, doc/descriptions/fujitsu.desc,
+ doc/sane-fujitsu.man: fujitsu backend v106,
+ - added new models
+ - dont call mode_select with a page code the scanner does not support
+
+2011-01-28 Mike Kelly <mike@piratehaven.org>
+ * backends/avision.[ch]:
+ - Bumped build number to 294.
+ - Various minor code cleanups.
+ - Fixed initialization and duplexing for AV220-G
+ - Added ADF support for HP8200 series scanner (flipping duplexers).
+ - Return copied values in sane_get_parameters()
+ - Added paper-length option to prevent double feeds
+ - Added a Misc option group to hold misc features
+
+2011-01-26 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch], doc/descriptions/canon_dr.desc,
+ backend/canon_dr.conf.in, doc/sane-canon_dr.man:
+ canon_dr backend v37:
+ - don't center window when using flatbed
+ - improve request sense error messages
+ - enable flatbed for all known models
+ - ad usb ids for DR-6030C, CR-135i & CR-190i
+ * doc/descriptions/unsupported.desc: moved DR-2020U from canon_dr.desc
+
+2011-01-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl646.h: tune resolution
+ list and add internal values matching them
+
+2011-01-18 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch], doc/desc/canon_dr.desc, doc/sane-canon_dr.man:
+ canon_dr backend v36:
+ - initial support for DR-3080 and DR-5060
+ - add code to clamp scan width to an arbitrary byte width boundary
+ - add code to prevent setting of brightness/threshold/contrast
+ - don't send dropout color command on non-color scanners
+ - initial support for DR-7090C
+ - update credits
+ * po/pl.po: updated translation from Jakub Bogusz
+ * po/de.po: updated translation from Matthias Mailander
+ * backend/canon.conf.in: improved detection of scsi scanners
+
+2011-01-17 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc: add DSmobile variant
+
+2011-01-15 Reinhold Kainhofer <reinhold@kainhofer.com>
+ * sanei/sanei_usb.c: Add function sanei_usb_set_endpoint to change the
+ endpoints for usb communications.
+ * backend/magicolor.c: Add new "magicolor" backend for KONICA MINOLTA
+ magicolor 1690MF devices
+
+2011-01-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl124.c backend/genesys_gl124.h
+ doc/descriptions/genesys.desc: add 2400 dpi mode for LiDE 110 and 210
+
+2011-01-12 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl124.c
+ backend/genesys_gl124.h backend/genesys_low.c backend/genesys_low.h :
+ prepare 2400 dpi modes for LiDE 210/110, add a wait for head to park
+ function and use it in sane_start().
+
+2011-01-06 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c
+ backend/genesys_gl847.c: fix lineart issue when yres is higher than
+ xres and dynamic lineart is enabled, make gl847 wait for head to
+ park between scans, wait for head ot park in sane_close()
+
+2011-01-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp730.c:
+ pixma: Added patch proposed by Klaus Stengel for Canon imageRunner 1020/1024/1025 support.
+
+2011-01-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma.c, backend/pixma.h
+ backend/pixma_common.c, backend/pixma_common.h:
+ pixma: several updates for MP830, MP990, memmove bug fix, and 64 bits image size.
+
+2011-01-04 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c
+ backend/genesys_gl124.c: fix 1200 dpi lineart issues for gl124,
+ reenable low resolutions for lineart for gl124, and geometry fine
+ tuning for LiDE 110/210
+
+2011-01-03 Stéphane Voltz <stef.dev@free.fr>
+ * backends/lexmark_low.c: fix compilation issue due to incorrect
+ place for a DBG statement.
+
+2011-01-03 Chris Bagwell <chris at cnpbagwell.com>
+ * backends/Makefile.am: Add SOCKET_LIBS to xerox_mfp
+ for platforms such as solaris since it uses sanei_tcp.k
+ * doc/sane.tex: removed reference to changelog package
+ since its not used and not installed by Macports (#312596)
+ * doc/Makefile.am: put quotes around TEXINPUTS in case
+ paths have spaces in name. This is so latex can find
+ html.sty package that is referenced by sane.tex.
+
+2011-01-01 Chris Bagwell <chris at cnpbagwell.com>
+ * */Makefile.in, configure, aclocal.m4: Generate from latest
+ autoconf (2.63 to 2.66).
+ * m4/*: Added new libtool helper files.
+ * ltmain.sh: updated to latest libtool and added back special
+ sane soname work around.
+ * po/Makefile.am: Allow "make dist" to work when translations
+ disabled.
+ * sanei/Makefile.am: allow "make check" to work on cygwin.
+
+2010-12-28 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.conf.in backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl847.c backend/genesys_gl847.h:
+ fix HP2300 warming up problem, add LiDE 700F and 5600F to gl847
+ devices, smooth DSmobile 600 moves.
+
+2010-12-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys_devices.c
+ backend/genesys_gl841.c backend/genesys_low.h
+ doc/descriptions/genesys.desc doc/descriptions/unsupported.desc
+ doc/sane-genesys.man: add Plustek OpticBook 3600 support
+ by Chris Berry <s0457957@sms.ed.ac.uk> and Michael Rickmann <mrickma@gwdg.de>
+
+2010-12-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl124.c backend/genesys.c
+ doc/descriptions/genesys.desc doc/sane-genesys.man: enable 16 bit gamma
+ for gl124 scanners, models and credits update.
+
+2010-12-24 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl124.c backend/genesys.c
+ doc/descriptions/genesys.desc: GL847 shading area size fix, GL124
+ shading area tuning, descriptions update.
+
+2010-12-24 Stéphane Voltz <stef.dev@free.fr>
+ * backend/lexmark*.[ch]: applied X74 support patch by Torsten Houwaart
+ <ToHo@gmx.de>
+
+2010-12-23 Mike Kelly <mike@piratehaven.org>
+ * backends/avision.[ch]:
+ - Bumped build number to 293.
+ - Removed "regularly tested" from various scanners.
+ - Fixed USB id for Avision FB2080E.
+ - Added support for the Avision AV210D2+ scanner.
+ - Moved device init code to sane_get_devices().
+ - Rewrote indirect "adf_mode" code to be more direct.
+ - Fixed indentation.
+ - Changed AVISION_FILTER_* defines to use final values.
+ - Wrap duplicate USB id entries with ifdefs.
+ - Removed a duplicate entry for Avision AV210C2.
+ - Print out USB ids as four digit hex numbers.
+ - Enhanced sane_get_option_descriptor() debug message.
+ * doc/descriptions/avision.desc:
+ - (Re)generated from avision.c.
+
+2010-12-19 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl124.h: LiDE 210 GPIO fix
+
+2010-12-16 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys_devices.c
+ backend/genesys_gl124.h:
+ LiDE 210 support (GL124 based)
+
+2010-12-14 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.[ch] backend/genesys.conf.in backend/Makefile.am
+ backend/Makefile.in tools/check-usb-chip.c doc/desc/genesys.desc:
+ LiDE 110 support (GL124 based)
+
+2010-12-08 Mike Kelly <mike@piratehaven.org>
+ * doc/descriptions/avision.desc:
+ - (Re)generated from avision.c.
+ * doc/sane-avision.man:
+ - Added myself as maintainer.
+ * backends/avision.desc:
+ - Removed this obsolete file (again).
+ * backends/avision.c:
+ - Bumped version to 292.
+ - Added myself as maintainer.
+ - Added support for DocuMate262i.
+ - Added support entries for HP 8300 series.
+ * backends/avision.conf.in:
+ - Added myself as maintainer.
+
+2010-12-06 Julien Blache <jb@jblache.org>
+ * doc/descriptions/espon.desc, doc/descriptions/epson2.desc: add SCSI IDs
+ for the Perfection 3200 (GT-9800) connected through FireWire. Report
+ from Colin Kincaid Williams <discord@uw.edu>. Update Perfection 2450
+ interface list.
+
+2010-12-02 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h:
+ Fujitsu backend version 105
+ - backup and restore image params around image processing code
+ - cache software crop/deskew parameters for use on backside of duplex
+ - fi-6110 does not support bgcolor or prepick
+
+2010-11-29 Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>
+ * backend/epson2-ops.c: fix list of supported commands for levels D1
+ and D2.
+
+2010-11-24 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c, backend/fujitsu.conf.in,
+ doc/descriptions/fujitsu.desc, doc/sane-fujitsu.man:
+ Fujitsu backend versions 103 and 104
+ - remove compiled-in default config file
+ - initial support for new fi-6xxx machines
+ - never request more than s->buffer_size from scanner
+ - silence noisy set_window() calls from init_interlace()
+
+2010-11-19 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: update for iScan 2.26.1,
+ from Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>.
+
+2010-11-17 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: don't write scan data unless specified by debug
+ level.
+
+2010-11-08 Marc Deslauriers <marc.deslauriers@ubuntu.com>
+ * backend/v4l.c: convert v4l1 BGR data to RGB; v4l1 always returns
+ BGR for RGB due to a coding error way back.
+
+2010-11-07 Marc Deslauriers <marc.deslauriers@ubuntu.com>
+ * backend/v4l.c: loop through the read buffers in the v4l backend so
+ we don't get stale frames.
+
+2010-11-06 Stéphane Voltz <stef.dev@free.fr>
+ * frontend/scanimage.c doc/scanimage.man: add -A/--all-options to list
+ all control options exposed by a backend.
+
+2010-11-01 Stéphane Voltz <stef.dev@free.fr>
+ * frontend/scanimage.c: don't print readonly device options since
+ they can't be set on command line
+
+2010-11-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl843.c
+ backend/genesys_gl843.h backend/genesys_gl847.c: up build number to 41,
+ rework head parking,
+ fixed clear-calibration option reading,
+ make calibration cache expire for non sheetfed gl847 scanners,
+ tuned KV-SS080 timings to improve image quality,
+ raised LiDE 100/200 defaukt gamma to 1.7
+
+2010-10-31 Julien Blache <jb@jblache.org>
+ * doc/descriptions/hp.desc: add SCSI IDs for ScanJet 4c.
+
+2010-10-30 Julien Blache <jb@jblache.org>
+ * backend/xerox_mfp.conf.in, doc/descriptions/xerox_mfp.desc: add
+ Samsung SCX 4824 & 4825FN (Debian #601748). Resync desc file with
+ config file.
+
+2010-10-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl843.c
+ backend/genesys_gl843.h: added 100, 150, 400 and 600 dpi modes for
+ G4050 and G4010. Added 500 and 400 dpi modes for KV-SS080
+
+2010-09-30 Alex Belkin <abc@telekom.ru>
+ * Makefile.in backend/Makefile.am backend/Makefile.in backend/xerox_mfp-tcp.c
+ backend/xerox_mfp-usb.c backend/xerox_mfp.c backend/xerox_mfp.conf.in backend/xerox_mfp.h
+ doc/Makefile.in doc/descriptions/xerox_mfp.desc doc/sane-xerox_mfp.man frontend/Makefile.in
+ include/Makefile.in japi/Makefile.in lib/Makefile.in po/Makefile.in sanei/Makefile.in
+ testsuite/Makefile.in tools/Makefile.in: Added Samsung SCX-4500W scan over network support
+ for xerox_mfp backend (by Alexander Kuznetsov). autoconf and automake reconfigure
+ to support new files.
+
+2010-09-28 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys_devices.c
+ backend/genesys_gl843.c backend/genesys_gl843.h: add minimal support
+ (200 and 300 dpi) for HP G4050. Add a device entry for G4010.
+
+2010-09-18 Reinhold Kainhofer <reinhold@kainhofer.com>
+ * include/sane/sanei_config.h sanei/sanei_config.c: Add
+ function sanei_config_get_paths to obtain all configuration pathes
+ (from env var SANE_CONFIG_DIR and default paths); fix pointers to
+ invalid/freed strings when SANE_CONFIG_DIR is set.
+ * backend/dll.c: When searching for the dll.d/ directory,
+ also use the SANE_CONFIG_DIR env variable.
+
+2010-07-12 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: update for iScan 2.26.0,
+ from Alesh Slovak <alesh.slovak@avasys.jp>.
+
+2010-09-17 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.h sanei/sanei_magic.c
+ backend/genesys_devices.c backend/genesys_gl843.c: do asynchronous head
+ parking for flatbed scanners to save scan time. Fix a couple of
+ memory overwrites detected by valgrind. Optimize shading data
+ writing and fine tune scaneara for gl843.
+
+2010-09-16 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: exit Avahi process on error and when the poll
+ loop terminates.
+
+2010-09-13 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/unsupported.desc: update status of scanners
+ now supported by the genesys backend.
+
+2010-09-13 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man doc/descriptions/genesys.desc
+ backend/genesys.con.in: update HP3690 status to supported
+
+2010-09-12 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_conv.c backend/genesys.c doc/sane-genesys.man
+ sanei/sanei_magic.c backend/genesys.h backend/genesys_low.h
+ backend/Makefile.in backend/Makefile.am: add software deskep, crop
+ and despeckle for the genesys backend.
+
+2010-09-08 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_mp730.c
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: several updates for MP375R, MP390, MP460 and docs by Gernot Hassenpflug.
+
+2010-09-07 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp750.c:
+ pixma: fix for 2400 dpi striping on MP760/770/780/790 by Gernot Hassenpflug.
+
+2010-09-05 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/sane-pixma.man:
+ pixma: man page update for devices as reported by Gernot Hassenpflug.
+
+2010-09-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl841.c: end of document detection rework for
+ sheetfed scanners.
+
+2010-09-04 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys.c backend/genesys_gl843.c:
+ 1200 dpi resolution support for KV-SS080.
+
+2010-09-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys.c backend/genesys_gl843.c:
+ support for scan button, faster move to scan area and calibration fine
+ tuning.
+
+2010-09-01 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma_mp730.c, backend/pixma_mp150.c
+ doc/descriptions/pixma.desc:
+ pixma: changes supplied by Gernot Hassenpflug for Lineart support
+ to some Pixma devices, and desc updates.
+
+2010-08-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys.conf.in backend/genesys.c
+ backend/genesys_gl843.[ch] backend/Makefile.am backend/Makefile.in:
+ support for gl843 based scanners, starting with KV-SS080.
+ disable true gray for LIDE35/50 since it breaks scanning
+
+2010-08-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys.conf.in: add a device
+ entry for the Canoscan 5600f.
+
+2010-07-25 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma.c, backend/pixma.h, backend/pixma_common.c,
+ backend/pixma_imageclass.c:
+ pixma: changes for future Lineart scan mode support.
+ some MF8030 settings, but device not yet supported.
+
+2010-07-22 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, backend/pixma_imageclass.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: add support for PIXMA MX870.
+ declared PIXMA MF8030, but not yet working.
+
+2010-07-14 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson.desc, doc/descriptions/epson2.desc: add :scsi
+ keyword for the Perfection 2450 connected through FireWire. Courtesy
+ of Brian Denheyer <briand@aracnet.com>.
+
+2010-07-12 Julien Blache <jb@jblache.org>
+ * doc/descriptions-external/epkowa.desc: update for iScan 2.25.0,
+ from Alesh Slovak <alesh.slovak@avasys.jp>.
+
+2010-07-09 Julien Blache <jb@jblache.org>
+ * backend/dll.c: allow symlinks under SANE_CONFIG_DIR/dll.d.
+
+2010-07-04 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: changes for PIXMA MX350 support, usb and ethernet.
+
+2010-07-03 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, backend/pixma.c:
+ pixma: fix ImageClass MF6550 description.
+ fix end of line crop buffer size.
+
+2010-07-02 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: update doc to include ImageClass MF6550 support.
+
+2010-07-02 m. allan noah <kitno455 at gmail dot com>
+ * backend/avision.c: patch for AV122-C2 from Ori Koren
+
+2010-07-01 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ pixma: thanks to Dan McGee patch, add support for PIXMA MX340.
+
+2010-06-23 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c: Fix compilation bug when jpeg support is enabled.
+
+2010-06-23 Julien Blache <jb@jblache.org>
+ * various: corrected initialization, printing, etc. in many backends
+
+2010-06-21 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: udev rules: set libsane_matched=yes for SCSI
+ devices too. Used by udev-acl later on.
+
+2010-06-21 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
+ backend/genesys_low.h: improve scan quality by using double x
+ resolution internally at low resolution. Scan area geometry fine
+ tuning.
+
+2010-06-18 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
+ add 400, 200 and 100 dpi resolution to LiDE 100 and LiDE 200 . Disable
+ true gray until it really works.
+
+2010-06-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
+ backend/genesys_gl847.h:
+ Canon LiDE 200 support up to 1200 DPI
+
+2010-06-15 m. allan noah <kitno455 at gmail dot com>
+ * doc/descriptions/xerox_mfp.desc, backend/xerox_mfp.conf.in:
+ Add Samsung SCX-4600 USB IDs
+ * backend/kvs20xx.h: use sys/param.h instead of endian.h
+
+2010-06-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c:
+ calibration file name double free fix
+
+2010-06-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/niash.c: patch for HP3300 from Yves Jeanrenaud
+ * po/fr.po: updates from Yann E. MORIN
+
+2010-06-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl847.c:
+ LiDE 100 motor settings rework
+
+2010-06-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs20xx*, Makefiles, confs and docs:
+ - Add new kvs20xx backend from Panasonic, for KV-S202xC and KV-S204xC
+
+2010-06-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch]: backend v100:
+ - store more Request Sense data in scanner struct
+ - clear Request Sense data at start of every do_cmd() call
+ - track per-side ILI and global EOM flags
+ - set per-side EOF flag if ILI and EOM are set
+
+2010-06-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/Makefile.{am|in}: add genesys_gl847 files
+ * po/Makefile.{am|in}: add LINGUAS POTFILES to EXTRA_DIST
+ * Makefile.am: add Changelog-1.0.21 to EXTRA_DIST
+
+2010-06-08 Nicolas Martin <nicols-guest at users.alioth.debian.org>
+ * backend/pixma_imageclass.c:
+ pixma: set #1 of modifiations for ImageClass MF65xx series.
+
+2010-06-07 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
+ LiDE 100 motor fine tuning
+
+2010-06-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
+ doc/descriptions/genesys.desc:
+ final bits for full LiDE 100 support
+
+2010-05-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
+ shading calibration is working and led calibration has been tuned
+
+2010-05-30 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
+ backend/genesys_low.h: Canon LiDE 100 working without shading
+ calibration which is the final bit to fix
+
+2010-05-24 m. allan noah <kitno455 at gmail dot com>
+ * backend/avision.c, doc/descriptions/avision.desc: add Fujitsu fi-5015C
+
+2010-05-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
+ make led and shading calibration work for LiDE 100
+
+2010-05-16 Chris Bagwell <chris at cnpbagwell dot com>
+ * README.freebsd: Add suggested hint that configure needs
+ to be told location of external libraries installed through
+ Ports.
+
+2010-05-16 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.[ch] backend/genesys_devices.c
+ backend/genesys.conf.in backend/genesys_gl847.[ch]
+ backend/Makefile.in: start of LiDE 100 and LIDE 200 support
+
+2010-05-16 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/sanei_usb.c include/sane/sanei_usb.h: add a sanei_usb_reset()
+ function.
+
+2010-05-15 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c: backend v99
+ - sense_handler(): collect rs_info for any ILI, not just EOM
+ - do_usb_cmd(): use rs_info whenever set, not just EOF
+ - read_from_*(): better handling of EOF from lower level functions
+ - sane_read(): improve duplexing logic
+
+2010-05-03 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ * Change status of CanoScan LiDE 40 from untested to good
+
+2010-04-27 m. allan noah <kitno455 at gmail dot com>
+ * po/Makefile.in: include POTFILES and LINGUAS in DIST
+ * doc/releases.txt: more git notes
+
+2010-04-25 Julien Blache <jb@jblache.org>
+ * tools/sane-backends.pc.in: syntax fixes.
+
+2010-04-25 m. allan noah <kitno455 at gmail dot com>
+ * ChangeLog-1.0.21, Makefile.in: ChangeLog for 1.0.21 release
+ * configure, configure.in: version 1.0.22git
+ * doc/descriptions/kodak.desc, doc/descriptions/kvs1025.desc,
+ doc/descriptions/p5.desc: remove :new tag
+ * doc/releases.txt: minor updates due to new git hooks
+
+Older entries can be found in ChangeLog-1.0.21.
diff --git a/ChangeLogs/ChangeLog-1.0.23 b/ChangeLogs/ChangeLog-1.0.23
new file mode 100644
index 0000000..39f9130
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.23
@@ -0,0 +1,694 @@
+****** Release of sane-backends 1.0.23. End of code freeze ******
+
+2012-08-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * po/nl.po: Updated Dutch translation from Martin Kho.
+
+2012-08-17 Chris Bagwell <chris at cnpbagwell dot com>
+ * backend/kvs40xx*: Fix scan() symbol name that
+ was still conflicting the epjistu and snapscan backends.
+
+2012-08-16 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.[ch],
+ backend/pixma_imageclass.c, backend/pixma_mp*.c:
+ Copyright updated.
+
+2012-08-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c, backend/pixma_mp150.c, backend/pixma_mp810.c:
+ Lineart fix for generation 1+2 scanners.
+
+2012-08-09 Paul Newall <quandry at ntlworld dot com>
+ * /backend/kodakaio.c:
+ calling of poll tidied up, may fix problems with repeated scans.
+
+2012-07-30 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man backend/genesys_low.h backend/genesys*.c:
+ rewrite lineart emulation du to bugs exhibited by the use of the
+ genesys backend through saned. Fixed an option delcartion that led
+ to saned crash and fixed batch scanning with sheet-fed scanners.
+
+2012-08-07 Chris Bagwell <chris at cnpbagwell dot com>
+ * backend/kvs20xx*, backend/kvs40xx*: Fix duplicate symbols
+ caused by copy&pasting between related backends. This
+ allows prelinking of backends to work.
+ * backend/hp5590_low.c: Fix unresolved symbols error by
+ including byteorder.h header.
+ * backend/dll.c: Use correct function prototype for prelink
+ version of DLL backend. Helps some 64-bit compilers.
+
+2012-07-31 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ doc updates for all PIXMA scanners
+ * backend/pixma.h, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Pixma backend version 0.17.0
+ - date updated in Pixma man page
+
+2012-07-30 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs1025.h: Increase max paper size (Matthew Wild)
+ * doc/*.man, doc/*.html: Typo fixes (Yuri Chornoivan)
+
+2012-07-30 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl843.c backend/genesys_gl646.c:
+ fix batch scanning for gl646 scanners
+
+2012-07-29 Paul Newall <quandry at ntlworld dot com>
+ * /doc/descriptions/kodakaio.desc:
+ advent AW10 added.
+
+2012-07-28 Paul Newall <quandry at ntlworld dot com>
+ * /doc/descriptions/kodakaio.desc:
+ usbids added and version.
+
+2012-07-28 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc: scanners resorted by name
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: new scanners reported by DMoeller
+ - Canon PIXMA MX410 as untested
+ - Canon PIXMA MX420 as complete
+ - Canon PIXMA E500, E600, MX370 Series, MX430 Series, MX710 Series
+ as untested and experimental
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc: capabilities updated
+ for Canon PIXMA MX510 and MX890
+ * backend/pixma_mp150.c, doc/sane-pixma.man: all 2012 untested new devices
+ marked as experimental
+
+2012-07-26 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux:
+ New detailled description for the installation of SANE backend.
+
+2012-07-24 m. allan noah <kitno455 at gmail dot com>
+ * backend/kvs40xx_opt.c: Oops- it is new
+ * doc/descriptions/kvs40xx.desc: Fix typo (Yuri Chornoivan)
+ * po/uk.po: Updated (Yuri Chornoivan)
+ * tools/Makefile.am, tools/Makefile.in, tools/sane-config.in:
+ sane-config fixes (Ruediger Meier)
+
+2012-07-15 Ilia Sotnikov <hostcc@gmail.com>
+ * backend/hp5590.c, backend/hp5590_low.c:
+ Fix hp5590 backend on big-endian platforms provided by Nhan Ngo Dinh
+ <nngodinh@tiscali.it>
+
+2012-07-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl124.c
+ backend/genesys_gl646.c backend/p5.c backend/p5.h backend/p5_device.h
+ backend/rts8891.c backend/rts8891.h backend/rts8891_devices.c backend/rts8891_low.c
+ backend/rts8891_low.h backend/rts88xx_lib.c backend/rts88xx_lib.h
+ backend/umax_pp.c backend/umax_pp.h backend/umax_pp_low.c
+ backend/umax_pp_low.h backend/umax_pp_mid.c backend/umax_pp_mid.h
+ doc/sane-genesys.man sanei/sanei_magic.c :
+ misc cleanups and doc updates to prepare release
+
+2012-06-28 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c backend/kodakaio.conf.in backend/kodakaio.h
+ doc/sane-kodakaio.man doc/descriptions/kodakaio.desc
+ configure.in makefile.am dllconf.in doc/makefile.am: Added new backend kodakaio for
+ kodak ESP nnnn, Cnnn, hero AiOs, detection of cups added to configure
+ since cups is used for network auto detection.
+
+2012-06-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_sane_options.c,
+ doc/descriptions/pixma.desc:
+ - Pixma backend version 0.16.4
+ - new scan modes for 48 bit flatbed scanners:
+ PIXMA_SCAN_MODE_COLOR_48, PIXMA_SCAN_MODE_GRAY_16,
+ enabled by capability PIXMA_CAP_48BIT
+ * backend/pixma_mp150.c: unused capability PIXMA_CAP_48BIT removed
+ * backend/pixma_mp810.c:
+ - new capability for CS9000F: PIXMA_CAP_48BIT
+ - functions for scan mode detection improved
+ - lowest resolution for 48 bit flatbed scan modes is 150 dpi
+ * po/de.po: German translations for new scan modes
+
+2012-06-04 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_low.h
+ backend/genesys_devices.c backend/genesys_gl124.[ch] : LiDE 110/210
+ led calibration improvements, add a 'lamp off during scan' option,
+ add 2400x4800 mode to LiDE 100, 110 and 210, improve remove/add
+ scanner detection.
+
+2012-06-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl841.c: apply led calibration fix
+
+2012-06-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: fix get_device to handle scanner plugging and
+ unplugging
+
+2012-05-31 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc doc/sane-genesys.man
+ doc/descriptions/unsupported.desc: updated Xerox onetouch 2400 status
+ to supported
+
+2012-05-30 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl124.c backend/genesys_gl124.h:
+ align gl124 code on latest gl847 improvements
+
+2012-05-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
+ backend/genesys_gl847.h doc/descriptions/genesys.desc: add 4800 dpi
+ for LiDE 700F
+ - improve fedd/move to scan area for gl847 based scanners
+ - remove non working 400 dpi mode
+
+2012-05-28 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_devices.c backend/genesys_gl124.c
+ backend/genesys_gl847.c backend/genesys_gl847.h backend/genesys_low.h
+ doc/descriptions/genesys.desc doc/sane-genesys.man:
+ add support for LiDE 700F up to 2400 dpi
+
+2012-05-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.c: backend v111
+ - call send_* and mode_select_* from sane_start
+ - split read payloads into new debug level
+ - add paper-protect, staple-detect and df-recovery options
+
+2012-05-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v110
+ - correct max_y_fb for fi-62x0 series
+ - add must_fully_buffer helper routine
+ - add hwdeskewcrop option, with fallback to software versions
+ - add 'actual' param to get_pixelsize for post-scan
+ - add recent model VPD params
+ - only set params->lines = -1 when using ald without buffering
+ - fix bugs in background color when using software deskew
+ * sanei/sanei_magic.c: Update deskew algo
+ - allow paper to be +/- 1 inch from top of image
+ - correct integer overflow
+ - improve (disabled) debug logs
+
+2012-05-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_io_sanei.c, backend/pixma_mp150.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Patch for Canon Pixma MP280 from Daniel Beer.
+ - PIXMA_EOF mapped to PIXMA_ETIMEDOUT.
+ - Maximum resolution reduced to 600dpi.
+ - Scanner added to doc files.
+
+2012-04-23 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * AUTHORS: Pixma backend and email addresses updates.
+
+2012-04-20 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * tools/sane-desc.c: tools/udev/libsane.rules supports scanner group
+ access to any scanner, with and without acl support.
+
+2012-04-17 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c, backend/pixma_sane_options.c, po/de.po:
+ New description for device specific option "source".
+
+2012-04-17 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c: select first entries of dynamic dpi list
+ and dynamic mode list as default values after changing the scan source
+
+2012-04-04 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon Pixma MX510 and Canon Pixma MX890. Both are untested.
+
+2012-04-04 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_mp810.c, po/de.po: color and grayscale
+ negatives scan in TPU mode, for CS8800F and CS9000F.
+
+2012-04-04 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: cropping y and h to scanable area in TPU mode,
+ for CS8800F and CS9000F.
+
+2012-03-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl124.c backend/genesys_devices.c: use feed earlier
+ at high resolution. Tune LiDE 110/210 geometry.
+
+2012-03-26 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/unsupported.desc: removed G4010/G4050,
+ patch by Martin Michlmayr <tbm@cyrius.com>.
+
+2012-03-25 Mike Kelly <mike@piratehaven.org>
+ * backends/avision.[ch]:
+ - Added Xerox Documate 632.
+ - Added firmware checking for HP5370c scanners.
+ - Reverted AV610 USB IDs and removed AV_INT_STATUS.
+ - Fixed warning about printf and size_t.
+ - Fixed bug using wrong enum in x/y range check.
+
+2012-03-22 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * po/de.po: New German translations for pixma backend.
+
+2012-03-21 Mike Kelly <mike@piratehaven.org>
+ * backends/avision.[ch]:
+ - Added Gray mode support for Kodak i30 and i40.
+ - Skip post-processing when caching flipping duplex.
+ - Moved a comment nearer its code.
+ - Added sane_reload_devices() to sane_init().
+ - Corrected the logic to set lines = -1 for ADF mode.
+ - Fix calculations when flipping back of duplex page.
+ - Track the number of lines to flip as a negative number.
+
+2012-03-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_*.[ch]: gl841 sheetfed scanners calibration
+ improvement, fix document end detection when doing dynamic lineart.
+ Copyrights updates.
+
+2012-03-19 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek.c: Fix batch scanning with Plustek backend
+ Patch submitted and tested by Elias Oltmanns <eo@nebensachen.de>
+
+2012-03-19 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl843.c: update HP4850
+ geometry and fix initial state
+
+2012-03-06 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_bjnp.c: Replace index() with strchr(). Bug #313563.
+
+2012-02-29 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.c,
+ backend/pixma_sane_options.[ch]: New device specific option
+ 'threshold-curve'. Can be used to optimize 1 bit B/W lineart scans.
+
+2012-02-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanner Canon imageCLASS MF4410 from
+ Vasiliy Olekhov.
+
+2012-02-16 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c, backend/pixma_sane_options.[ch]:
+ New device specific option 'gamma'.
+
+2012-02-09 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.[ch],
+ backend/pixma_sane_options.[ch], backend/pixma_mp{150,810}.c:
+ 1 bit B/W lineart for pixma_mp150 and pixma_810 subdrivers.
+
+2012-02-06 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon PIXMA MX360.
+
+2012-02-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.h: set PIXMA_VERSION_{MAJOR,MINOR,BUILD} to 0.16.3.
+
+2012-02-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/scripts/pixma_gen_options.py: script to generate
+ backend/pixma_sane_options.c and backend/pixma_sane_options.h
+ from pixma.c. Found in old pixma project archive file
+ http://home.arcor.de/wittawat/pixma/mp150-0.13.1.tar.bz2.
+
+2012-01-31 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_imageclass.c, backend/pixma_mp[17]50.c,
+ backend/pixma_mp730.c, backend/pixma_mp810.c: modify dpi_list dependent on
+ different scanner capabilities for normal (flatbed) and ADF/TPU modes.
+
+2012-01-23 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner PIXMA MX880 Series.
+
+2012-01-21 Ruediger Meier <sweet_f_a@gmx.de>
+ * backend/canon_dr.h, backend/cardscan.h, backend/dll.c,
+ backend/epjitsu.h, backend/fujitsu.h, backend/gt68xx.c,
+ backend/kodak.h, backend/microtek2.h, sanei/sanei_access.[hc]: fix and
+ cleanup portable PATH_SEP and DIR_PATH defines
+ * sanei/sanei_scsi.c, tools/sane-find-scanner.c, configure.in,
+ sane/config.h.in: use the right scsi header on win32.
+
+2012-01-17 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: Flatbed mode supports max. 4800 dpi.
+
+2012-01-14 m. allan noah <kitno455 at gmail dot com>
+ * backend/Makefile.{am,in}, backend/pixma.[ch],
+ backend/pixma_common.c, backend/pixma_mp[17]50.c,
+ backend/pixma_mp810.c, backend/pixma_rename.h,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Updated Pixma backend from Gernot Hassenpflug.
+
+2012-01-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c backend/genesys_gl847.c
+ backend/genesys_gl43.[ch]: fixd scan line number for gl646 CCD
+ scanners, improved led calbration for gl847 CIS scanners and G4050 XPA
+ work progress.
+
+2011-12-30 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung SCX-3205W, reported by sane tester.
+
+2011-12-27 Chris Bagwell <chris at cnpbagwell dot com>
+ * configure.in, configure, config.h.in, sanei_usb.c,
+ check-usb-chip.c, sane-find-scanner.c: Add check for
+ libusb-win32 which is API compatible with libusb-0.1
+ but has different header file name to prevent conflicts
+ with Windows own usb.h. Since libusb-1.0 is scheduled to
+ support Windows (not a forked version), it will probably
+ work as-is if user has pkg-config installed under mingw.
+
+2011-12-20 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu*, doc/descriptions/fujitsu.desc: backend v109
+ - added some MS and INQ information
+ - increased default buffer size for later machines in config file
+ - renamed new fi-6xx0Z models
+
+2011-12-18 Chris Bagwell <chris at cnpbagwell dot com>
+ * doc/descriptions-external/epkowa.desc: update for new iScan
+ 2.28.1 release from Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>.
+
+2011-11-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.h backend/genesys_devices.c
+ backend/genesys_gl847.c: genesys backend build 67, gl847 led and
+ shadingcalibration improvements.
+
+2011-11-21 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu.[ch]: backend v107 and v108
+ - M3091 does not support scanner_control(adf)
+ - Correct buffer overflow in read_from_3091duplex()
+ - sane_read() now always calls read_from_*()
+ - read_from_*() are callable when there is no data, and read to eof
+ - sane_read() will keep alternate duplex reads to similar length
+ - Added debugging statements
+ - Corrected comments
+ - Updated Copyright
+ - merged x/y resolution options
+ - moved page width/height to start of geometry group
+ - use mode to pick resolution list v/s range
+ - improved M3091 resolution choices
+
+2011-11-20 Chris Bagwell <chris at cnpbagwell dot com>
+ * epson2-commands.c: Include <sys/types.h> to resolve u_long.
+ * epson2.c, magicolor.c, xerox_mfp-tcp.c: Include <sys/types.h>
+ and to <sys/socket.h> for anyone using setsockopt().
+ * sanei_tcp.h: Include <sys/types.h> since ssize_t is referenced.
+ * sanei_usb.c: FreeBSD version checks. All changes in this
+ batch come from FreeBSD ports patches. Bug #312503.
+
+2011-11-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_*.[ch] doc/descriptions/genesys.desc: build
+ 66. Add hp N6310 and 4850C devices. Fix gl847 calibration.
+ GL843 XPA support groundwork.
+
+2011-11-14 Chris Bagwell <chris at cnpbagwell dot com>
+ * doc/descriptions-external/epkowa.desc: update for new iScan
+ release from Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>.
+
+2011-11-10 Chris Bagwell <chris at cnpbagwell dot com>
+ * include/sane/sanei_thread.h, sanei/sanei_thread.c:
+ Make SANE_Pid map to pthread_t to be compilable
+ on platforms where pthread_t is not a integer;
+ namely mingw.
+ * configure, configure.in, include/sane/config.h.in,
+ lib/Makefile.am, lib/Makefile.in, lib/sleep.c: Add
+ a sleep() replacement function; mostly for mingw.
+ * backend/epson2-ops.c, backend/epson2.c, umax_pp_low.c:
+ Revert some broken sleep()->usleep() conversions.
+
+2011-11-09 Chris Bagwell <chris at cnpbagwell dot com>
+ * configure, configure.in, acinclude.m4:
+ Convert enable_dynamic to "auto" behavior. Previous
+ attempt was resulting in it always defaulting to
+ "yes" and user had to use --disable-dynamic on
+ platforms that couldn't support it.
+ * backend/epson2-ops.c, backend/epson2.c, backend/epson2.h:
+ minor portability changes to epson2. #ifdef some optional
+ headers and use usleep() instead of sleep(). Switch to
+ sanei_udb_set_noblock().
+
+2011-11-08 Chris Bagwell <chris at cnpbagwell dot com>
+ * backend/Makefile.*: Finish preload linking fix.
+ dll.c was being linked in with convienence library.
+ If it needs to have two behaviors then we need to
+ create two libraries. Now preloading is working in
+ libsane.so again and disabled in libsane-dll.so.
+ * configure.in, configure, README, */Makefile.*:
+ Update README to describe use of BACKENDS and
+ PRELOADABLE_BACKENDS to limit backend compiles.
+ Also, mark those in configure.in as variables so
+ they show up in "configure --help".
+ Add back the useful --disable-dynamic and
+ --disable-preload that appear to have been removed
+ at some point but are documented in README.
+ * README.windows: Update info to include mingw
+ references.
+
+2011-11-07 Chris Bagwell <chris at cnpbagwell dot com>
+ * ltmain.sh: Disable sane's soname libtool hack for
+ mingw platform so that DLL's will be created for
+ each backin built; just like on unix platforms.
+ * backend/Makefile.*: Add missing sanei_magic.lo to
+ libsane backend.
+ * sanei/sanei_tcp.c sanei/sanei_udp.c include/sane/sanei_udp.h:
+ Add WSAStartup()/WSACleanup() calls on mingw to get ws2_32
+ working. Make util function to set sockets to nonblocking
+ and make work in unix and mingw platforms.
+
+2011-11-06 Chris Bagwell <chris at cnpbagwell dot com>
+ * INSTALL, Makefile.am, */Makefile.in, compile, config.guess,
+ config.sub, configure, depcomp, include/sane/config.h.in,
+ install-sh, ltmain.sh, libtool.m4, ltversion.m4, missing,
+ mkinstalldirs: Update files using autoconf 2.68 and libtool 2.4.
+ * configure.in, frontend/scanimage.c, include/sane/sanei_tcp.h,
+ include/sane/sanei_udp.h, lib/inet_ntop.c, lib/inet_pton.c,
+ sanei/sanei_tcp.c, sanei/sanei_udp.c, tools/sane-find-scanner.c:
+ Add check for winsock2. Add ws2_32 library when found. Look
+ for getuid and getpass since not on mingw.
+ * lib/sigprocmask.c: Comment out logic on windows for now since
+ it doesn't work. At least it will compile.
+ * lib/syslog.c: Add a replacement syslog for at least mingw.
+ * testsuite/Makefile.*: Use $(EXEEXT) so that scanimage can
+ be ran on windows.
+ * backend/Makefile.*, backend/dll.c: Modify dll backend
+ so that libsane-dll does not reference preloaded backends
+ symbols since its not linking them in. Only libsane
+ references preloaded backend symbols and also links them
+ in now.
+
+2011-11-05 Chris Bagwell <chris at cnpbagwell dot com>
+ * lib/vsyslog.c, frontend/scanimage.c, include/sane/sanei_tcp.h
+ include/sane/sanei_udp.h, lib/inet_ntop.c, lib/inet_pton.c,
+ sanei/sanie_init_debug.c, sanei/sanei_scsi.c, sanei/sanei_tcp.c,
+ sanei_udp.c, sanei_usb.c: mingw32 compile fixes. Mostly its
+ not including header files that windows doesn't have and
+ add winsock.h as needed. Also, do not use signals windows
+ doesn't have as well.
+
+2011-11-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_*.[ch] backend/Makefile.am backend/Makefile.in:
+ genesys_gl841.h creation and genesys backend code cleanup
+
+2011-11-01 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch]: backend v39
+ - DR-2580C pads the backside of duplex scans
+
+2011-11-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl124.c backend/genesys_gl646.c
+ backend/genesys_gl841.c backend/genesys_gl843.c backend/genesys_gl847.c
+ backend/genesys_low.c backend/genesys_low.h: do <sys/types.h> include
+ in a clean way
+
+2011-10-30 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * backend/kvs40xx.h: Use portable endian macro from config.h
+ * backend/kodak.c: Use more precise path to internal headers
+ * backend/canon630u.c, backend/genesys_gl124.c,
+ backend/genesys_gl646.c, backend/genesys_gl841.c,
+ backend/genesys_gl843.c, backend/genesys_gl847.c,
+ backend/genesys_low.c, backend/hp3900_rts8822.c,
+ backend/rts88xx_lib.c, backend/xerox_mfp.c, sanei/sanei_pio.c:
+ Include <sys/types.h> for definition of u_long on MacOS X
+ * po/sv.po: Update Swedish translation
+
+2011-10-21 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_devices.c
+ backend/genesys_gl*.c backend/genesys_gl843.h
+ backend/genesys_low.[ch], doc/sane.man doc/sane-genesys.man
+ doc/descriptions/genesys.desc:
+ 1200 and 2400 dpi support for G4010/G4050
+
+2011-10-19 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung CLX 3185, reported by John Dignum.
+
+2011-10-01 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung SCX-4828FN or SCX-4x28 Series, reported by Patrice
+ Levesque.
+
+2011-09-16 Nils Philippsen <nils@redhat.com>
+ * doc/sane-hpljm1005.man doc/sane-p5.man: use groff escape sequences in
+ man pages
+ * AUTHORS NEWS doc/descriptions.txt doc/*/*.CHANGES
+ doc/plustek/Plustek-*.txt doc/u12/U12.*
+ doc/umax/sane-umax-parport-doc.html: encode to UTF-8
+ * tools/sane-config.in: use pkg-config
+ * doc/descriptions/epson2.desc backend/epson_usb.c: add USB id for Epson
+ Stylus SX125
+
+2011-09-07 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_low.h
+ backend/genesys_gl124.c: fix button mapping for LiDE 210
+
+2011-08-25 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c backend/genesys_low.c backend/genesys_low.h
+ backend/genesys.c: add a no move during shading calibratiob flag, and
+ use it for MD5345
+
+2011-08-23 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl847.c backend/genesys_low.c backend/genesys_low.h
+ backend/genesys.c backend/genesys_gl124.c backend/genesys_gl843.c:
+ make sure to use the fatest speed when parking, use lowest sensor dpi
+ as default resolution
+
+2011-08-22 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.[ch]: enable calibration for G4050/G4010 and
+ minor code refactors
+
+2011-08-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.c backend/genesys_conv.c:
+ fixed generic calibration cache for CCD case and when yres is higher
+ than sensor's maximum one. Fixed lineart data enlarging when yres is
+ higher than xres.
+
+2011-07-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c backend/genesys_gl841.c
+ backend/genesys_gl843.c backend/genesys_gl847.c backend/genesys_gl124.c
+ backend/genesys_low.[ch]: is_compatible cache refactor for gl843,
+ gl847 and gl124
+
+2011-07-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl124.[ch] backend/genesys_gl843.[ch]:
+ use sanei_genesys_compute_dpihw instead of specific function.
+
+2011-07-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl847.c: re-tune scan area of MD5345/MD6228.
+ parking function clean up.
+
+2011-07-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/lexmark.c backend/lexmark_low.c: increase tolerance when
+ detecting the 'home' dot.
+
+2011-07-07 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: fixed incorrect image height for sheetfed
+ scanners
+
+2011-07-07 m. allan noah <kitno455 at gmail dot com>
+ * po/pt.po: updated translation from cncsolutions.com.br
+
+2011-07-06 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr.[ch]: backend version 38
+ - initial support for DR-5020
+ - use ppl_mod instead of Bpl_mod, apply to all modes
+ - invert logic of read_panel tracking
+ - add ability to disable read_panel()
+ - automatically disable read/send_panel if unsupported
+ * doc/descriptions/canon_dr.desc: status of DR-5020
+
+2011-07-06 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.h backend/genesys_gl847.c backend/genesys.c
+ backend/genesys_gl124.c backend/genesys_gl843.c backend/genesys_gl646.c
+ backend/genesys_gl841.c: improve 4800 dpi quality for LiDE 200 by
+ increasing the number of lines scan for shading
+
+2011-07-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.h backend/genesys_gl847.c backend/genesys_devices.c
+ backend/genesys.c backend/genesys_gl124.c backend/genesys_gl843.c
+ backend/genesys_gl646.c backend/genesys_gl841.c: make 4800 pdi work
+ for Lide200. Calibration cache file leak fix.
+
+2011-06-30 Olaf Meeuwissen <olaf.meeuwissen@avasys.jp>
+ * frontend/scanimage.c: plug a memory leak in batch mode.
+
+2011-06-24 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: add a wildcard rule for Epson SCSI scanners
+ with a model string beginning with "SCANNER". Idea from Olaf
+ Meeuwissen.
+
+2011-06-21 Julien Blache <jb@jblache.org>
+ * doc/descriptions/epson2.desc: added SCSI IDs for the GT-10000+,
+ reported by Simon Becherer.
+
+2011-06-16 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung CLX-216x Series, tested with CLX-2160, reported by Malte
+ Starostik <malte@malte.homeip.net>
+
+2011-06-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl847.c: lineart fix
+
+2011-06-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys_gl646.c
+ backend/genesys_gl646.h doc/descriptions/genesys.desc
+ doc/sane-genesys.man: add full HP2400 support thanks a patch from
+ Alexey Osipov <simba@lerlan.ru>
+
+2011-06-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.[ch] : rework of gl847 to reach 2400 dpi for
+ LiDE 100 and 4800 dpi for LiDE 200
+
+2011-06-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/lexmark_models.c: fix missing motor initialization
+
+2011-06-07 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.h backend/genesys_conv.c:
+ add blank page skipping and rotation detection options
+
+2011-06-06 m. allan noah <kitno455 at gmail dot com>
+ * docs/*kvs40xx*, backend/kvs40xx*: New Panasonic KV-S40xx/70xx
+ backend, originally by Panasonic Russia.
+ * acinclude.m4, */Makefile.am, configure*: build new kvs40xx backend
+ * po/POTFILES: add kvs* backends
+ * po/.gitignore: ignore sane-backends.pot
+ * include/sane/sanei_magic.h, sanei/sanei_magic.c:
+ add new blank detection and rotation detection routines
+ * backend/kvs1025*, backend/Makefile*: add support for sanei_magic
+
+2011-06-02 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: add udev+acl output mode, udev rules using ACLs
+ for the scanner group instead of making the device root:scanner 0664.
+ This is designed to help with MFPs and play nice with ConsoleKit.
+
+2011-04-20 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.c backend/genesys_devices.c
+ backend/genesys.conf.in: add Xerox 2400 onetouch model and improve
+ big endian handling
+
+2011-03-19 Julien Blache <jb@jblache.org>
+ * tools/sane-desc.c: move away from using power/level for disabling
+ USB autosuspend/power management and use power/control if available.
+
+2011-03-18 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.c backend/genesys.c : rewrite big endian fixes
+ for gl847/gl124 based scanners. Improve calibration cache file handling.
+
+2011-03-17 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.c: big endian fixes for gl847/gl124 based
+ scanners. Patch by Olaf Zimmermann <oez@pt.lu> .
+
+2011-03-15 Stéphane Voltz <stef.dev@free.fr>
+ * backend/Makefile.in backend/canon_dr.[ch]: fixes to allow full
+ static build under cygwin
+
+2011-03-12 Troy Rollo <sane@troy.rollo.name>
+ * backend/hp3500.c: Remove interdependency between contrast and
+ brightness.
+
+2011-03-12 Julien Blache <jb@jblache.org>
+ * doc/scanimage.man: batch-start defaults to 1 if not specified,
+ not 0. Reported by Jakub Wilk <jwilk@debian.org>.
+
+2011-03-12 Troy Rollo <sane@troy.rollo.name>
+ * backend/hp3500.c: Add grayscale and line art scanning. Add contrast
+ and brightness controls which influence the calibration data provided
+ to the scanner.
+
+2011-03-06 Ilia Sotnikov <hostcc@gmail.com>
+ * backend/hp5590.c, backend/hp5590_cmds.{c,h}: in ADF modes the device can
+ scan up to 14", which is usually bigger than what scanner reports back
+ during initialization
+ * backend/hp5590.c, backend/hp5590_cmds.{c,h}, backend/hp5590_low.{c,h}:
+ fixed detection of HP4500 devices (tested) and HP5550 (untested) - these
+ devices need no reading USB-in-USB acknowledgement after each command. To
+ achieve that, proto_flags are passed down to low-level functions. These
+ flags are taken from device descriptions
+ * backend/hp5590_low.{c,h}: fixed up get_status command - index should
+ be 0x00, not 0x20
+ * backend/hp5590.c: bump up the backend version
+
+2011-03-04 Julien Blache <jb@jblache.org>
+ * frontend/saned.c: define PATH_MAX if needed, fixes build on
+ HURD. Patch from Pino Toscano <toscano.pino@tiscali.it>.
+
+2011-02-16 Julien Blache <jb@jblache.org>
+ * backend/v4l.c, backend/v4l.h: fix build with libv4l 0.8.3+.
+
+2011-02-13 m. allan noah <kitno455 at gmail dot com>
+ * doc/releases.txt: minor updates
+
+Older entries can be found in ChangeLog-1.0.22.
diff --git a/ChangeLogs/ChangeLog-1.0.24 b/ChangeLogs/ChangeLog-1.0.24
new file mode 100644
index 0000000..145f4be
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.24
@@ -0,0 +1,602 @@
+****** Release of sane-backends 1.0.24. End of code freeze ******
+
+2013-09-30 m. allan noah <kitno455 at gmail dot com>
+ * po/nl.po: updated translation from Martin Kho.
+
+2013-09-30 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: fix button support for Canon CS8800F.
+
+2013-09-24 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanner Canon imageCLASS MF4770n
+ reported by Ralph Little.
+
+2013-09-18 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for dell 1235cn, reported by Jean-Francois Labrousse.
+
+2013-09-17 m. allan noah <kitno455 at gmail dot com>
+ * sanei/sanei_init_debug.c: do our own upcasing to allow backend
+ debugging in Turkish. Revert prior set_locale() patch.
+ * po/uk.po: updated by Yuri Chornoivan
+ * backend/microtek.c: add missing break (#314408)
+
+2013-09-16 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek-usbdevs.c: Tweaked motor settings for CanoScan N650U
+ * backend/plustek.c: Bumped build number
+
+2013-09-13 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon Pixma MG2400, MG2500, MG3500, MG5500, MG64000, MG6500
+ and MG7100. All scanners need further testing.
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanners Canon imageCLASS MF4570dw and
+ imageRUNNER 1133. All scanners need further testing.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.4
+
+2013-09-08 paul newall
+ * kodakaio.desc: Added hero 4.1 model, marked some scanners as staus basic
+
+2013-08-27 m. allan noah <kitno455 at gmail dot com>
+ * acinclude.m4, configure: enable pthread on Linux by default
+ * sanei/sanei_init_debug.c: use C locale when building debug
+ env vars, to allow backend debugging in Turkish. Patch from
+ Olaf Meeuwissen.
+
+2013-08-26 Chris Bagwell <chris@cnpbagwell.com>
+ * sanei/sanei_usb.c: Treat errno of EACCES as access denied.
+ This is what libusb is return on my Linux box. This will help
+ give more helpful error messages to user during debugging.
+ * testsuite/sanie/sanie_usb_test.c: Do not treat open failures
+ because of permission errors or already opened by other processes
+ as test failures since this is expected in some cases (such as
+ network devices that use vendor specific class).
+
+2013-08-16 Chris Bagwell <chris@cnpbagwell.com>
+ * testsuite/sanei/Makefile.am: Add missing data files to distribution.
+ Pass in $srcdir to sanei_config_test so it knows were data files are
+ regardless of were ran from.
+ * testsuite/sanei/sanei_config_test.c: Use full path for config
+ file. This allows "make distcheck" to work for this testcase
+ since it uses a different build directory then source directory
+ and also runs it from build directory.
+ * testsuite/sanei/sanei_usb_test.c: add a fake name string
+ when creating MAX_DEVICE fake devices so that strcmp() won't
+ crash.
+ * testsuite/tools/Makefile.am: Add missing data files to distribution.
+ Make use of $srcdir so test case can base when build directory
+ is not same as source directory.
+
+2013-08-15 Chris Bagwell <chris@cnpbagwell.com>
+ * sanei/sanei_thread.c: Add support for winpthreads used by
+ mingw64 in addition to preexisting support for pthread-win32 used
+ by mingw32. Based on work from Michael Cronenworth for
+ Fedora's mingw64 sane-backends package.
+
+2013-08-15 Chris Bagwell <chris@cnpbagwell.com>
+ * configure.in: Make snmp detection work better when cross conmpiling;
+ such as mingw builds on Fedora host. Most likely, net-snmp-config
+ values are for local host so ignore them if matching library isn't
+ also found. Required updated all autofoo's generated files to newer
+ version by running 'autoreconf -i -f' and repatching ltmain.sh.
+ * test-driver: Added missing test-driver that automake installs.
+ Its expected to exist by the Makefile.in that we also checkin.
+
+2013-08-11 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.[ch] backend/genesys_conv.c backend/genesys.c
+ backend/genesys_gl841.c backend/genesys_gl646.c: make use of hardware
+ gamma tables to implement constrast and brightness correction.
+
+2013-08-07 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.[ch] backend/genesys_conv.c doc/sane-genesys.man
+ po/fr.po: add digital brightness and contrast options.
+ Add an option to set calibration cache file name.
+
+2013-08-07 Stéphane Voltz <stef.dev@free.fr>
+ * frontend/tstbackend.c: add argument to get verbose messages during
+ checks.
+
+2013-08-04 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/sanei_constrain_value.c
+ testsuite/sanei/sanei_constrain_test.c: fixed the case where the
+ rounding in sanei_constrain_value computes a value higher than the
+ range maximum, spotted and proposed by viresh_shirol@yahoo.co.uk .
+ Added testcase for the bug in testsuite.
+
+2013-08-02 Stéphane Voltz <stef.dev@free.fr>
+ * configure configure.in testsuite/Makefile.* testsuite/tools/*: add
+ a testsuite for sane-desc, then merge hwdb support for sane-desc by
+ Tom Gundersen <teg@jklm.no> .
+
+2013-07-31 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr*: backend version 41
+ - initial P-208 and P-215 support
+ - bug fix for calibration of scanners with duplex_offset
+ - allow duplex_offset to be controlled from config file
+
+2013-07-30 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: fixed typo when defining OPT_SWDEROTATE cap
+ (#314339).
+
+2013-07-19 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: Canon Pixma MX920 has duplex ADF and supports
+ max. 600 dpi @ ADF.
+
+2013-07-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG8200 is working now.
+ * backend/pixma.[ch], backend/pixma_mp150.c, backend/pixma_mp810.c,
+ backend/pixma_sane_options.[ch], doc/sane-pixma.man, po/de.po:
+ - New button option --scan-resolution. Scan resolution is provided from
+ some multi function devices.
+ - Add some detailed button option description to the pixma man page.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.3
+
+2013-06-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.[ch] backend/genesys_devices.c backend/genesys_gl124.[ch]
+ backend/genesys_low.[ch]: improve scanning speed and quality for GL124
+ based scanner by implementing half ccd mode below 600 dpi,
+ thanks for an hardware donation from Dany Qumsiyeh.
+
+2013-07-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG5200 Series support reported by Dimitri Fellous.
+ * .gitignore: ignore all .* files
+
+2013-06-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c: fix mode list for infrared scans
+
+2013-06-27 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu*: backend v117
+ - default buffer-mode to off
+ - improved error handling in sane_start
+ - image width must be multiple of 8 when swcrop is used before binarization (iX500)
+ - check hopper sensor before calling object_position(load) on iX500
+ * .gitignore: ignore .deps directories
+
+2013-06-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys.conf.in backend/genesys_devices.c
+ backend/genesys_gl846.c backend/genesys_gl846.h backend/genesys_low.c
+ backend/genesys_low.h: add experimental description and code for the
+ GL845 based Opticbook 3800.
+
+2013-06-22 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: multiple
+ usb ids for Samsung models, reported by Mikhail Elhimov.
+
+2013-06-21 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc: Canon PIXMA MG3100 Series WLAN support
+ reported by Torben Nielsen.
+
+2013-06-19 Stéphane Voltz <stef.dev@free.fr>
+ * frontend/scanimage.c: protect for group option with incorrect
+ capabilites.
+ * frontend/tstbackend.c: add test to check is group option are
+ settable. Fix test_getdevices() function.
+
+2013-06-18 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: add missing cap to 2 option group tp fix long
+ argument option bug in scanimage.
+
+2013-06-15 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: fix test mode
+
+2013-06-10 Stéphane Voltz <stef.dev@free.fr>
+ * tools/check-usb-chip.c: add genesys GL128, GT-68xx usb chip
+ detection.
+
+2013-06-10 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon CanoScan 9000F Mark II.
+ * backend/pixma_mp810.c: Disable TPU negatives scan for CS8800F and CS9000F.
+ Negatives scan has no benefit for the user and disabling avoids confusion.
+
+2013-06-03 Stéphane Voltz <stef.dev@free.fr>
+ * tools/sane-find-scanner.c tools/check-usb-chip.c: add genesys usb
+ chip detection when compiled for libusb-1.0 .
+
+2013-06-03 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c: #314293 fix
+
+2013-05-29 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/sane-pixma.man:
+ - HTML parseable name section (bug #314283)
+ - typo in device names
+
+2013-05-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c: #314261 fix
+
+2013-05-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: some distros need libusb-1_0-devel.
+
+2013-05-11 Jonathan Bravo Lopez <jkdsoft@gmail.com>
+ * backend/hp3900_rts8822.c: fix compilation warnings.
+
+2013-04-26 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.[ch], backend/pixma_imageclass.c,
+ backend/pixma_io_sanei.c, backend/pixma_mp150.c, backend/pixma_mp7[35]0.c,
+ backend/pixma_mp810.c: update copyright.
+
+2013-04-24 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon Pixma E510, E610 and MX720. All scanners need further
+ testing.
+
+2013-04-19 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanner Canon i-SENSYS MF3010 reported by
+ Nathan Stewart.
+
+2013-04-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon Pixma MG2200, MG3200, MG5400, MX390, MX450, MX520 and
+ MX920. All scanners need further testing.
+
+2012-04-03 Alex Belkin <abc at telekom.ru>
+ * doc/descriptions/xerox_mfp.desc: add Samsung SCX-4835FD networked
+ support, reported by Dave Lewis. USB mode doesn't work.
+
+2013-04-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/lexmark.c backend/lexmark.h: fix device detection to
+ handle hotplugging and unplugging of USB devices. USe
+ sanei_usb_exit().
+
+2013-03-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/gt68xx.c backend/gt68xx_low.h: fix device detection to
+ handle hotplugging and unplugging of USB devices.
+ * frontend/tstbackend.c: a test to loop over snae_get_devices to
+ check if a backend handle hotplugging correctly
+
+2013-03-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_low.h backend/genesys_gl846.c:
+ warning fixes, SANE option correctness fixes.
+
+2013-03-25 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: fix button support for Canon Pixma MG6300.
+
+2013-03-24 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/test_wire.c, testsuite/sanei/sanei_*test.c: move test program
+ to testsuite/sanei. Add unit test programs for sanei_check_*,
+ sanei_constrain_*, sanei_config_* and sanei_usb_* functions.
+
+2013-03-24 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c: make use of the new sanei_usb_scan_devices function
+ in sane_get_devices.
+
+2013-03-24 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/sanei_usb.c include/sane/sanei_usb.h:
+ separate device search logic from usb init by creating a
+ sanei_usb_scan_devices. Add a sanei_usb_exit function to free
+ allocated resources by sanei_usb_init.
+
+2013-03-21 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon Pixma MP230 reported by Petar Dodev.
+
+2013-03-18 Stéphane Voltz <stef.dev@free.fr>
+ * backend/hp5590.c backend/nec.c backend/sharp.c backend/stv680:
+ apply use after free fixes, bugs #314035, #314036, #314037 and
+ #314038
+ * backend/hp4200.c: fix a potential division by O, bug #314042
+ All five patches for these bugs were provided by Nickolai Zeldovich
+ <nickolai@csail.mit.edu>
+
+2013-03-15 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon Pixma MG6300 reported by Theo van Rijn.
+
+2013-02-28 Stéphane Voltz <stef.dev@free.fr>
+ * configure.in configure: restored HAVE_USBCALLS like initially
+ committed for OS/2 support
+
+2013-03-04 Oliver Schwartz <oliverschwartz@users.sf.net>
+ * backend/snapscan-options.c backend/snapscan-scsi.c backend/snapscan.c
+ backend/snapscan-sources.c backend/snapscan.h
+ doc/descriptions/snapscan.desc: Added support for Acer Scanwit 2720S
+ implemented by Andrew Goddbody.
+
+2013-02-28 Stéphane Voltz <stef.dev@free.fr>
+ * sanei/sanei_usb.c: only free devanme when reusing a device slot in
+ device list
+
+2013-02-28 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: ease installation procedure.
+
+2013-02-27 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc: update G2410 status to basic
+
+2013-02-27 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts8891.c backend/rts88xx_lib.c backend/lexmark.c
+ backend/lexmark_low.c backend/rts8891_low.c: cppcheck errors and
+ warnings fixes
+
+2013-02-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: fix installation path for libsane.la.
+
+2013-02-22 Gerhard Jaeger <gerhard@gjaeger.de>
+ * tools/sane-find-scanner.c: Fix another bug in the libusb1
+ part of function check_libusb_device() that prevents sanner
+ detection for certain devices.
+
+2013-02-20 Gerhard Jaeger <gerhard@gjaeger.de>
+ * tools/sane-find-scanner.c: Setup libusb1 debugging after
+ initialization otherwise a segfault appears in triple -v mode
+ * sanei/sanei_usb.c: Free heap memory, acquired via strdup for
+ devname, in sanei_usb_close()
+ * po/de.po: Fixed typo
+
+2013-02-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.[ch], backend/pixma_imageclass.c,
+ backend/pixma_mp150.c, backend/pixma_mp7[35]0.c, backend/pixma_mp810.c,
+ doc/descriptions/pixma.desc, doc/sane-pixma.man, po/de.po:
+ - add infrared scan support for Canon Canoscan 9000F
+ - Pixma backend version 0.17.2
+
+2013-02-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.[ch]: cppcheck errors fixes
+
+2013-02-13 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek_pp.c: Bumped build number
+ * backend/plustek-pp*: Fixed kernel module build for recent kernels
+ Defined internal "ULong" types to be in fact 32 bit wide,
+ this should fix issues on 64 bit machines.
+ * doc/plustek/Plustek-PARPORT.changes: Update
+
+2013-02-13 Gerhard Jaeger <gerhard@gjaeger.de>
+ * backend/plustek.c: Bumped build number
+ * backend/plustek-usbscan.c backend/plustek-usbshading.c: Cleanup
+ * backend/plustek-usb.h backend/plustek-usbdevs.c backend/plustek-usbhw.c:
+ Added support for Q-Scan A6 portable scanner
+ * doc/descriptions/plustek.desc: Added entry for Q-Scan A6
+ Q-Scan A6 Patch submitted and tested by Hiroshi Miura. Bug #312073.
+ * doc/sane-plustek.man doc/plustek/Plustek-USB.changes: Update
+
+2013-02-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_common.c, backend/pixma_imageclass.c,
+ doc/descriptions/pixma.desc: fixed adf paper empty for Canon i-SENSYS
+ MF4550d. Bug #313674.
+
+2013-02-11 Stéphane Voltz <stef.dev@free.fr>
+ * tools/sane-desc.c: fix minor memleaks and whitespace at end of line.
+
+2013-02-09 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c, backend/pixma_mp750.c, backend/pixma_mp810.c,
+ backend/pixma_sane_options.c: fixed compiler warnings.
+ * backend/pixma.c, backend/pixma_io_sanei.c, backend/pixma_mp150.c,
+ backend/pixma_mp7[35]0.c, backend/pixma_mp810.c: fixed cppcheck warnings.
+
+2013-02-06 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: fixed button support for Canon Pixma MG6200
+ by Matthias Thon.
+
+2013-02-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.c backend/genesys_gl843.c
+ backend/genesys_gl846.c: minor usb firmware setup changes
+
+2013-01-31 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.[ch] backend/genesys_devices.c
+ backend/genesys_gl124.c backend/genesys_low.h: add support for LIDE
+ 210 fifth button.
+
+2013-01-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.[ch] : ASIC init refactor. Groundwork for GL846
+ support.
+
+2013-01-24 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: fixed 1200 dpi scan for Canon Pixma MG2100.
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon Pixma MG2100 support reported by David Durgee.
+ * backend/pixma_imageclass.c: fixed usb checksums for MF4100.
+
+2013-01-19 Paul Newall <quandry@ntlworld.com>
+ * backends/kodakaio.c:
+ Hero 4.1 added.
+
+2013-01-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.c, backend/pixma_mp810.c: fixed button support for Canon
+ Canoscan CS9000F.
+ * doc/sane-pixma-man: additional description for button support.
+
+2013-01-16 Paul Newall <quandry@ntlworld.com>
+ * doc/descriptions/kodakaio.desc:
+ Desc file updated.
+
+2013-01-14 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man:
+ - new scanner Canon i-SENSYS MF4550d. Bug #313674.
+ - new scanner Canon i-SENSYS MF5880dn. Bug #313613.
+ - new scanner Canon i-SENSYS MF6680dn. Bug #313922.
+
+2013-01-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c:
+ - formatted white space
+ - Canon Pixma MP970 & MP990: fix for broken post_process_image_data.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon Pixma MG5100 support reported by Patrick Viola.
+
+2013-01-10 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * Changed the pixma_bjnp.c implementation to use its own debug environment
+ variable (SANE_DEBUG_BJNP) so debugging for the bjnp protocol and the
+ backend proper can be controlled independently.
+ Updated manpage for sane-pixma to document the above changes as well
+ as the changed scannner buttjn options and the fact the bjnp protocol
+ has added support for IPv6
+
+2013-01-10 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * Added optional support in sanedi.c for systemd socket activation. This
+ will allow for using backend debugging using SANE_DEBUG_xxx to be used
+ for saned controlled scanning when using socket activation. When only the
+ socket is received we use the existing code path.
+
+2013-01-08 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: fix for broken tpu scan.
+
+2013-01-03 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c kodakaio.h:
+ Detecting end of paper when using adf is now an option.
+ Alternatively the image is padded with the background colour to make up
+ the specified image size.
+
+2012-12-31 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c kodakaio.h kodakaio.conf kodakaio.conf.in:
+ better fix for bug where adf could not scan more than 1 page with net connection
+ end of paper now detected with adf, if it is less than the selected size
+ ESP 2170 and Hero 9.1 can now do 1200dpi
+
+2012-12-31 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon Pixma MG4200 reported by nuxer.
+
+2012-12-28 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung CLX-3300 Series, reported by Jarkko A-L.
+
+2012-12-23 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c:
+ fix bug where adf could not scan more than 1 page with net connection
+
+2012-12-13 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: Installation description moved to top and some editing.
+
+2012-12-09 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c:
+ add adf to ESP2170. Reduce the default adf y length to 11.3 inch
+
+2012-12-09 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys*.c backend/genesys_low.h: reworked gamma table
+ handling. Compute gamma table outside send_gamma_table so default
+ gamma table use device specific gamma values defined in device
+ description.
+
+2012-12-07 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.h: Pixma backend version 0.17.1
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Canon Pixma MG3100 support reported by Madis Lõhmus.
+ - Canon Pixma MG6200 support reported by Matthias Thon.
+ - Canon Pixma MX890 support reported by Henry Ptasinski.
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man:
+ - Canon imageCLASS MF4430 support reported by Michael Mik. This device is
+ a MF4410 with ADF.
+
+2012-12-05 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl124.c: add binary data logging
+ for gl124 based scanners. Issue park command as early as possible to
+ speed up batch scans
+
+2012-11-28 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c backend/kodakaio.h backend/kodakaio.conf.in
+ backend/Makefile.am backend/Makefile.in docs/descriptions/kodakaio.desc:
+ Use avahi instead of cups for network autodetection
+
+2012-11-24 Stéphane Voltz <stef.dev@free.fr>
+ * backend/rts9918.c backend/rts8891_low.c backend/rts8891_low.h:
+ fix batch scan by adding asynchronous head parking. Fix 600 and 1200
+ dpi scan mode for sensor type 1
+
+2012-11-11 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl124.c: improve calibration for
+ gl124 based scanners. Fix head parking issue at 1200 dpi.
+
+2012-11-02 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/unsupported.desc: add USB ID 0x07b3, 0x0802
+
+2012-11-02 Stéphane Voltz <stef.dev@free.fr>
+ * configure configure.in doc/Makefile.am doc/Makefile.in: add optional
+ doxygen documentation generation for genesys backend.
+
+2012-10-31 Louis Lagendijk <louis.lagendijk at gmail dot com>
+ * backend/scripts/pixma_gen_options.py
+ Updated formatting of produced files to match pixma.c formatting
+ without need for manual editing
+ * pixma.[ch] pixma_mp810.c pixma_mp150.c
+ Rewrite of button option handling. Button options can now be read
+ without triggering through the button-update option. Buton-update
+ options is left for ease of use with xsane
+ Options are cached so that only when an option is read again all
+ options are re-read.
+
+2012-10-29 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung SCX-4833FD, reported by Frank Pennycook; description for
+ SCX-3405W working in networking mode, reported by Patrick Mackinlay.
+
+2012-10-24 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_*.[ch]: Lide 35 improvements, doxygen fixes,
+ experimental 100 dpi support for Canoscan 4400F and 8400F
+
+2012-10-24 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * configure.in, configure: Unset VERSION during the SCSI header check
+ (Check fails on MacOS X if VERSION is defined)
+
+2012-10-22 Mattias Ellert <mattias.ellert@fysast.uu.se>
+ * po/sv.po: Updated Swedish translation
+ * backend/pixma_bjnp.c: Fix arguments to IPv6 macros
+
+2012-10-18 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon*: IX-4015 support by Ondrej Zary
+
+2012-10-17 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung SCX-4100, reported by Antonello Lobianco.
+
+2012-09-18 Alex Belkin <abc at telekom.ru>
+ * backend/xerox_mfp.conf.in doc/descriptions/xerox_mfp.desc: usb id
+ for Samsung SCX-4729FD, reported by wom balton.
+
+2012-09-12 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon imageCLASS MF5730 support reported by Ondrej Zary.
+
+2012-09-10 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/unsupported.desc: Removed Canon Multipass 390 from
+ unsupported device list.
+
+2012-09-08 Louis Lagendijk <louis.lagendijk at gmail dot com>
+ * backend/pixma_bjnp.c, backend/pixma_bjnp_private.h
+ bulk reading rewritten and solved the case where the scanner returns
+ a 0 length payload.
+ Use MDL string instead of DES as it is mre fool proof when matching
+ the model string from the backend
+
+2012-09-06 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c backend/genesys.c: enable hardware lineart
+ for Strobe XP200
+
+2012-09-05 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanner reported by Eric Schwartz. Bug #313761.
+ * backend/pixma_mp150.c: 14" (ADF) / A4 (Flatbed) exception for Pixma MX420
+ reported by D.Möller. Same exception also added for Pixma MX410.
+
+2012-09-04 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Pixma MG5300 support reported by Gernot Hassenpflug.
+
+2012-09-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: Installation description updated for sane-backends
+ 1.0.24git.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon imageRunner 1020/1024/1025 support reported by Yuri Kirin.
+ Bug #313203.
+ * backend/pixma_mp150.c: Use xdpi to check for 14" / A4 scan.
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Pixma MX370 support reported by Daniel Lehmann. Bug #313750.
+ * backend/pixma_mp150.c: PIXMA_CAP_EXPERIMENT removed from new scanners.
+
+2012-08-27 Louis Lagendijk <louis.lagendijk at gmail dot com>
+ * pixma_bjnp.c pixma_bjnp_private.h
+ Added working scan-button support
+ Added IPv6 support
+ Some clean up and refactoring
+
+2012-08-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Pixma MG6100 support reported by Yann Bonnamy. Bug #313471.
+
+2012-08-26 m. allan noah <kitno455 at gmail dot com>
+ * ChangeLog*, configure*, Makefile.in, doc/desc/{kodakaio,kvs40xx}.desc:
+ Various updates related to starting 1.0.24git
+
+Older entries can be found in ChangeLog-1.0.23.
diff --git a/ChangeLogs/ChangeLog-1.0.25 b/ChangeLogs/ChangeLog-1.0.25
new file mode 100644
index 0000000..4863d50
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.25
@@ -0,0 +1,507 @@
+****** Release of sane-backends 1.0.25. End of code freeze ******
+
+2015-09-30 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG5600 Series is working, reported by Gavin Falconer.
+
+2015-09-26 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.23
+
+2015-06-22 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * doc/saned.man: updated to clarify systemd integration and
+ configuration for thecase where saned is compiled with systemd
+ glue.
+
+2015-09-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c: for all adf scanners restrict maximum page
+ height at flatbed scans
+
+2015-09-16 Stéphane Voltz <stef.dev@free.fr>
+ * backend/niash.c: merged pu/protect-niash-option-access-315132 and
+ ifdef'ed unused code
+
+2015-09-16 Stéphane Voltz <stef.dev@free.fr>
+ * backend/pieusb.c: include sane/config.h first
+
+2015-09-14 Stéphane Voltz <stef.dev@free.fr>
+ * backend/bh.c: replace mktemp by mkstemp #300134
+
+2015-09-13 Paul Newall <p dot newalls at ntlworld dot com>
+ * backend/kodakaio.c:
+ redundant variable bitposn and redundant function kodakaio_rxflush
+ commented out.
+
+2015-09-09 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man, doc/descriptions/genesys.desc: No LiDE 120
+ support.
+
+2015-09-08 m. allan noah <kitno455 at gmail dot com>
+ * backend/artec_eplus48u.c: fix HOME env bug #315071 (from Jörg Frings-Fürst)
+
+2015-09-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: Canon Pixma MP990 needs specific reordering pixels
+ for 4800 dpi, patch from Guillaume Courtois.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.22
+
+2015-08-20 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: add mandatory and optional development environment to
+ install description
+ * frontend/scanimage.c: remove atexit() function. In some cases atexit()
+ doesn't work with libusb-compat.
+
+2015-08-10 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_io_sanei.c: EOF is a bjnp timeout error.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.21
+
+2015-08-10 Stéphane Voltz <stef.dev@free.fr>
+ * backend/abaton.c, backend/agfafocus.c, backend/apple.c,
+ backend/bh.c, backend/coolscan.c, backend/dmc.c, backend/ricoh.c,
+ backend/s9036.c, backend/sp15c.[ch], backend/tamarack.c:
+ fix for memleak in sane_get_devices (bugs #300132 #300131 #300130 #300129
+ #300127 #300126 #300124 #300122 #300121 #300120)
+
+2015-08-10 Klaus Kämpf <kkaempf@suse.com>
+ * backend/pieusb.c, doc/descriptions/pieusb.desc, doc/sane-pieusb.man,
+ backend/pieusb_buffer.c, backend/pieusb_scancmd.c, backend/pieusb_specific.c,
+ backend/pieusb_usb.c:
+ New scanners PIE PowerSlide 3600,3650,4000,5000 / Reflecta DigitDia 3600,
+ 4000, 5000, 6000; ProScan 7200; CrystalScan 7200. These scanners need
+ further testing.
+
+2015-08-08 Stéphane Voltz <stef.dev@free.fr>
+ * backend/test.c: fix memleaks (#313553)
+ * configure.in, configure: don not harcode -I/usr/local/include
+ (#315060)
+
+ open/close tests.
+2015-08-07 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: update development packages list. OpenSuse needs
+ libusb-compat-devel. Sane doesn't support libusb 1.0.
+ * backend/pixma_io_sanei.c: EOF isn't an usb timeout error; this fixes usb
+ communication problems, e.g. with OpenSuse.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.20
+
+2015-08-06 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c, backend/genesys_gl841.c, backend/genesys_low.c:
+ fix GPIO setup for LiDE 33/40/50, add more usleep() for GL847
+ scanning issues. Some GL841 LEDADD improvements.
+
+2015-07-31 Stéphane Voltz <stef.dev@free.fr>
+ * frontend/tstbackend.c: add an option to do tests scans during
+ open/close tests.
+ * backend/genesys.c, backend/genesys_low.c: fixes for
+ - #315104
+ - #315105
+ And a timing issue on USB3 hardware debugged and tracked by John S.
+ Weber <jweber53@gmail.com>
+
+2015-07-29 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon PIXMA MG3600 Series. This scanner needs further testing.
+ * backend/pixma_mp150.c: Canon PIXMA MG7500 Series doesn't need special
+ image format post processing.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG7500 Series is working, reported by Jonathan Anderson.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.19
+
+2015-07-24 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MX470 Series is working, bug #314894.
+
+2015-06-27 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * backend/pixma_bjnp.c: added missing return in case of no error
+
+2015-06-27 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * backend/pixma_bjnp.c Added backend version in bjnp debug output
+
+2015-06-11 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c backend/genesys_gl124.h: LiDE 120 support
+ improvement.
+
+2015-05-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanner Canon i-SENSYS MF8300 Series, reported by Florian Nierhaus.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.18
+
+2015-04-12 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man backend/genesys.[ch] backend/genesys_low.c:
+ fix calibration cleared when calibration file loaded,
+ add expiration time option for cache.
+
+2015-04-07 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp810.c: Canon Pixma MP990 TPU scan patch from Guillaume
+ Courtois.
+ * doc/descriptions/pixma.desc: remove unmaintained websites
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.17
+
+2015-04-03 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New Canon scanners i-SENSYS MF210 Series, MF220 Series,
+ MF5900 Series, MF6100 Series and imageCLASS MF810/820. All scanners need
+ further testing.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.16
+ * backend/pixma.[ch], backend/pixma_common.[ch], backend/pixma_imageclass.c,
+ backend/pixma_io_sanei.c, backend/pixma_mp150.c, backend/pixma_mp7[35]0.c,
+ backend/pixma_mp810.c: update copyright.
+
+2015-03-17 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c, backend/genesys.conf.in,
+ backend/genesys_devices.c, backend/genesys_gl124.c,
+ backend/genesys_gl124.h, backend/genesys_low.h,
+ doc/descriptions/genesys.desc, doc/sane-genesys.man: add support for
+ Canon LiDE 120
+
+2015-03-14 René Rebe <rene@exactcode.de>
+ * backend/avision.h backend/avision.c:
+ fixed 32-bit build regression due new feature_type and
+ reverted 4d38523bdacd18186857ee8a93daaa0f8721c89b
+
+2015-03-13 René Rebe <rene@exactcode.de>
+ * doc/sane-avision.man, backend/avision.h, backend/avision.c:
+ fixed newer avision scanner duplex scanning, and removed unnecessary
+ feature_type2 clutter by using a uint64_t to share all bits
+
+2015-03-12 René Rebe <rene@exactcode.de>
+ * doc/descriptions/avision.desc, backend/avision.c:
+ fixed multiple regressions (range initilaizer, clobbering
+ paper-length window bits, ...) introduced over the past years, added
+ support for newer ASIC gamma table size, added AV220D2+ ID
+2015-03-04 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc: mark LiDE 120 as unsupported.
+
+2015-03-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_low.c, backend/genesys_gl124.[ch]:
+ improve parking reliability for LiDE 210
+
+2015-03-01 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c, backend/genesys_gl124.c:
+ final tuning for Canon LiDE 220
+
+2015-02-26 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys.c, backend/genesys.conf.in,
+ backend/genesys_devices.c, backend/genesys_gl124.c,
+ backend/genesys_gl124.h, backend/genesys_low.h,
+ doc/descriptions/genesys.desc, doc/sane-genesys.man: add support for
+ Canon LiDE 220
+
+2015-02-21 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: Canon PIXMA MG6400 Series doesn't need special
+ image format post processing.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG6400 Series is working, reported by Christian Spielberger.
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon PIXMA MX490 Series and E480 Series. All scanners need
+ further testing.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.15
+
+2015-02-09 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc: Canon PIXMA MX920 Series supports Ethernet
+ and WiFi interfaces.
+
+2015-02-06 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG2500 Series is working, reported by Brenda Ruch.
+
+2015-01-20 Ilia Sotnikov <hostcc at gmail dot com>
+ * backend/hp5590.c:
+ Invert pixels in case of TMA Negatives source has been selected.
+ Thanks for Will Kranz who reported this.
+
+2015-01-17 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG2200 Series is working (bug #314944).
+
+2014-12-31 Paul Newall <p dot newalls at ntlworld dot com>
+ * backend/kodakaio.c:
+ connection to device moved from sane_open to sane_start
+ disconnection move from sane_close to sane_cancel
+ in order to fix bug where scanner disconnected after 30s idle.
+
+2014-12-19 Paul Newall <p dot newalls at ntlworld dot com>
+ * backend/kodakaio.c:
+ param.depth corrected for lineart mode, was 8 now 1
+ sequence of modes changed to make the color mode the default.
+
+2014-12-16 m. allan noah <kitno455 at gmail dot com>
+ * sanei/sanei_usb.c: add calls to sanei_usb_set_altinterface in
+ sanei_usb_close and sanei_usb_clear_halt- hopefully work around
+ USB3/xhci problems in Linux.
+
+2014-11-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c:
+ - Canon i-SENSYS MF8200C and MF8500C use generation 2 protocols.
+ - Also use has_paper() for generation 2 scanners.
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc: Canon i-SENSYS
+ MF8200C: ADF supports max. 300DPI.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.14
+
+2014-11-15 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/avision.c:
+ - Remove firmware checking for HP5370c scanners. Launchpad bug #1080787,
+ reported by Night Train.
+ - Build version 297.
+
+2014-10-29 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New Canon scanners MAXIFY MB5000, MB5300, MB2000 and MB2300;
+ PIXMA MG7500, MG6600, MG5600, MG2900 and E460. All scanners need further
+ testing.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.13
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG2900 Series is working, reported by Yannick Dirou.
+
+2014-10-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: Canon PIXMA MG3500 Series doesn't need special
+ image post processing.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MG3500 Series is working.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.12
+
+2014-10-20 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New Scanner Canon imageCLASS D530.
+ * backend/pixma_mp150.c:
+ - increase calibration timeout
+ - calibration can finish with 0x01 or 0x02
+
+2014-09-18 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon Pixma MG5500 Series is working, bug #314819.
+
+2014-09-16 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man: Canon Pixma MG2400 Series
+ is working, reported by Marcus Wellnitz.
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon Pixma MX530 Series is working, reported by Stephen Weston.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.11
+
+2014-09-13 Paul Newall <p dot newalls at ntlworld dot com>
+ * backend/kodakaio.c, backend/kodakaio.h:
+ * Added lineart mode with threshold option.
+
+2014-09-07 Paul Newall <p dot newalls at ntlworld dot com>
+ * backend/kodakaio.c:
+ * Fixed error where the colour compensation curves did not have enough
+ elements and this caused speckles in areas of very low or high colour.
+
+2014-08-23 Louis Lagendijk <louis dot lagendijk at gmail dot com>
+ * backend/pixma_bjnp.c:
+ * Keep TCP-connection closed untill we really need it. This avoids
+ the scanner closing the TCP-connection when idle
+ * Add an explicit error message when we detect that the scanner
+ closed the TCP-connection
+
+2014-08-16 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon i-SENSYS MF8200C Series and MF8500C Series. MF8500C
+ Series need further testing.
+ * doc/sane-pixma.man: add up to now undocumented verbose debug-level
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.10
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ Canon PIXMA MX720 Series scanner is working (bug #314787).
+
+2014-07-25 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ New scanners Canon Pixma E400, E560, MX470 and MX530. All scanners need
+ further testing.
+
+2014-07-14 m. allan noah <kitno455 at gmail dot com>
+ * frontend/scanimage.c: batch-print option and exit value changes
+ from Jeff Breidenbach jeff@jab.org
+
+2014-07-01 Stéphane Voltz <stef.dev@free.fr>
+ * testsuite/sanei/sanei_config_test.c: fix #314694 by exporting a
+ specific SANE_CONFIG_DIR env dir for tests
+
+2014-06-29 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.c: fix regression in coarse gain calibration
+
+2014-06-05 Tom Callaway <spot@fedoraproject.org>
+ * lib/snprintf.c: update to newer version from LPRng. The old version is
+ licensed under the Artistic License 1.0 which isn't compatible with the
+ GPL and arguably non-free.
+
+2014-06-02 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_*.[ch]: add internal ini_scan_regs_api. Add proper
+ target speed for LiDE 110/210 grey mode motor tables.
+
+2014-05-29 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c: change to comment on ./configure parameters
+
+2014-05-26 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: fix ADF paper empty @ start scanning for Canon
+ Pixma MP150 based ADF scanners
+ * backend/pixma_common.c: remove unused variable
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.9
+
+2014-05-08 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c: fix MG7100 image data post processing @ high
+ resolutions > 600dpi.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man: Canon Pixma MG7100
+ Series scanner is working, reported by Gert Cauwenberg.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.8
+
+2014-05-13 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_gl646.[ch] backend/genesys.c backend/genesys_low.c:
+ fix bug #314663. Set gamma for gl646 devices only at scan time. Reset
+ endpoint each time before leaving.
+
+2014-05-08 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.7
+ * backend/pixma_mp150.c:
+ - all Canon Pixma MP150 based ADF scanners support 14" legal paper size
+ - fix ADF paper empty bug for Canon Pixma MP150 based ADF scanners
+ * doc/descriptions/pixma.desc: remove comments for Canon Pixma MP150 based
+ ADF scanners: adf empty buggy
+ * doc/sane-pixma.man: Canon Pixma MX360 shouldn't hang anymore (@ ADF paper
+ empty)
+
+2014-04-07 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man: Canon Pixma MX410
+ is working, reported from Javier Gorostiza.
+
+2014-03-21 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man: Canon Pixma MG3200
+ is working, reported in ubuntuforums.org/showthread.php?t=2072162.
+ * doc/descriptions/pixma.desc: rename WLAN to WiFi
+ * backend/pixma_mp150.c:
+ - Canon Pixma MX520 Series supports 14" legal paper size in ADF mode.
+ - MX520 has button support.
+ * backend/pixma_common.c: Clamp minimum image size to 16 px x 16 px. Some
+ new scanners need minimum 16 px height.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man: Canon Pixma MX520 Series
+ is working, reported by Trygve Flathen.
+
+2014-02-28 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: Rename Canon i-SENSYS MF4550d to Canon i-SENSYS MF4500
+ Series. This fixes ethernet problems. Patch from chrysn.
+
+2014-02-24 Stéphane Voltz <stef.dev@free.fr>
+ * doc/sane-genesys.man backend/genesys.[ch]:
+ avoid calibration file name collision in case of several identical
+ scanners
+
+2014-02-10 Louis Lagendijk <louis.lagendijk at gmail.com>
+ * backend/pixma_bjnp.c backend/pixma_bjnp.h backend/pixma_bjnp_private.h:
+ - Added support for Canon laser multi-functionals using the MFNP protocol over port 8610
+ - Improved debug-logging to be more readable
+
+2014-02-08 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_mp150.c:
+ - Canon Pixma MX510 Series supports 14" legal paper size in ADF mode.
+ * doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Canon Pixma MX510 Series is working, reported by sebastien_gd.
+
+2014-01-29 m. allan noah <kitno455 at gmail dot com>
+ * backend/umax-uc630.c: updates from Ondrej Zary
+
+2014-01-21 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/unsupported.desc doc/descriptions/genesys.desc:
+ update status of the HP Scanjet 4850C
+
+2014-01-17 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc: Update specification file for
+ Canon i-SENSYS MF4800 Series:
+ - Ethernet is buggy.
+ - ADF is working.
+
+2014-01-09 Gerhard Jaeger <gerhard@gjaeger.de>
+ * tools/sane-find-scanner.c tools/check-usb-chip.c: Add LM983x usb
+ chip detection when compiled for libusb-1.0.
+
+2014-01-02 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * doc/descriptions/pixma.desc: ADF is working for Canon i-SENSYS MF4800
+ Series, reported by Yvan L. Gélinas.
+
+2014-01-02 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma.[ch], backend/pixma_common.[ch], backend/pixma_imageclass.c,
+ backend/pixma_io_sanei.c, backend/pixma_mp150.c, backend/pixma_mp7[35]0.c,
+ backend/pixma_mp810.c: update copyright.
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: bug #314411, Canon imageCLASS MF4570dw is working.
+
+2013-12-27 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man:
+ - Canon i-SENSYS MF4800 Series has ADF and supports 14" legal paper size
+ in ADF mode.
+ - Canon i-SENSYS MF4800 Series is working, reported by Yvan L. Gélinas.
+
+2013-12-23 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_common.c: fix usb cmd transaction timeout
+
+2013-12-23 Stéphane Voltz <stef.dev@free.fr>
+ * backend/genesys_devices.c backend/genesys.c backend/genesys_low.h
+ backend/genesys_gl841.[ch]: color calibration improvement for LiDE80,
+ working LEDADD for gl841 CIS scanners
+
+2013-12-16 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man:
+ - rename Canon imageCLASS MF4770n to i-SENSYS MF4700 Series
+ - rename Canon i-SENSYS MF4890dw to MF4800 Series
+ * backend/pixma_mp150.c, doc/descriptions/pixma.desc, doc/sane-pixma.man:
+ - Canon MX920 reported as working; ADF is still buggy
+ - MX920 has 14" ADF paper length
+ - MX920 has button support
+ - fix vertical stripe shifting for MX920
+ - tidy function calc_shifting()
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.6
+
+2013-12-16 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc: update LiDE 80
+ * backend/genesys_devices.c backend/genesys.c backend/genesys_low.h
+ backend/genesys_gl841.[ch]: basic support for LiDE 80
+
+2013-12-10 m. allan noah <kitno455 at gmail dot com>
+ * backend/fujitsu*: fujitsu backend v118
+ - support fi-7160, fi-7260, fi-7180 and fi-7280
+ - remove unused var from do_scsi_cmd()
+ - added more request_sense options
+ - add adv_paper_protect option
+ - enable paper protection by default
+ - increase max_x_fb for fi-6240 and fi-6230
+
+2013-12-09 m. allan noah <kitno455 at gmail dot com>
+ * backend/canon_dr*: canon_dr backend v42
+ - initial DR-G1100 support
+ - add support for paper sensors (P-215 & P-208)
+ - add initial support for card reader (P-215)
+ - removed unused var from do_scsi_cmd()
+
+2013-11-21 Stéphane Voltz <stef.dev@free.fr>
+ * testsuite/tools/Makefile.*: handle sane git version change in tests.
+
+2013-10-19 Stéphane Voltz <stef.dev@free.fr>
+ * doc/descriptions/genesys.desc doc/Descriptions/unsupported.desc:
+ update LiDE 80 and HP2400 information
+ * backend/genesys_devices.c backend/genesys.conf.in backend/genesys.c
+ backend/genesys_low.h backend/genesys_gl841.[ch]: add first element of
+ LiDE 80 support.
+
+2013-10-15 Paul Newall <quandry@ntlworld.com>
+ * configure.in: detection of cups was commented out. Avahi is now used
+ for autodetection in kodakaio so the detection of cups is no longer required.
+
+2013-10-14 Paul Newall <quandry@ntlworld.com>
+ * backend/kodakaio.c: fix bug #314301,
+ Segfault when unexpected data returned by avahi auto discovery.
+
+2013-10-11 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * backend/pixma_imageclass.c: Use generation variable instead of single
+ defines of scanner pid's. Now new scanners should work without extensive
+ code editing.
+ * backend/pixma_imageclass.c, doc/descriptions/pixma.desc,
+ doc/sane-pixma.man: New scanner Canon i-SENSYS MF4890dw. This scanner needs
+ further testing.
+ * backend/pixma.h, doc/descriptions/pixma.desc: Pixma backend version 0.17.5
+
+2013-10-02 Rolf Bensch <rolf at bensch hyphen online dot de>
+ * README.linux: Update Installation description for 1.0.25git.
+
+2013-09-30 m. allan noah <kitno455 at gmail dot com>
+ * ChangeLog*, configure*, doc/releases.txt:
+ Various updates related to starting 1.0.25git
+
+Older entries can be found in ChangeLog-1.0.24.
diff --git a/ChangeLogs/ChangeLog-1.0.27 b/ChangeLogs/ChangeLog-1.0.27
new file mode 100644
index 0000000..63d3d57
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.27
@@ -0,0 +1,4128 @@
+commit 82cd8f245cf26879b3f94348d4069dcec8d49f21 (tag: RELEASE_1_0_27, tag: 1.0.27)
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2017-05-22 11:16:40 -0400
+
+ SANE-backends release 1.0.27
+
+ Moved old changelogs to new directory, and excluded them from
+ release tarball.
+
+ Improved release docs.
+
+ Updated config.* files
+
+ Bumped version numbers.
+
+ Wrote release notes.
+
+commit 16f3060061a17cbc54f3415a7e2abc1c35f3fcd2
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Sat May 20 14:13:19 2017 +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
+
+ 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
+
+ po/*.po: sync with source code
+
+commit 05553c679fd02648fc5b6dd3a4abf75fe67e1d27
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sun May 14 21:34:36 2017 -0400
+
+ updated uk.po translation
+
+ Update from Yuri Chornoivan
+
+commit 479ccaedddcb0a491b351e20cac22595196df02a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun May 14 19:48:41 2017 +0900
+
+ autotools: Sync derived files
+
+ This was done by running
+
+ autoreconf --force --install
+
+ on Debian GNU/Linux 8.8 and reverting the removal of SANE specific
+ tweaks to ltmain.sh.
+
+commit 02037adb134a2b533bb3201833444aed7bedc8f6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun May 14 19:47:31 2017 +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
+
+ 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
+
+ Replace the startup gamma with the same from the standalone version
+
+ Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629470
+
+commit 5c0812c51b6d48516acb9dd9efcfbe2b34f04a79
+Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
+Date: Sat May 13 18:05:43 2017 +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
+
+ Source code string typo fixes
+
+commit 09cf70563a1129116ab6888e944bfcb44fec8dd0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat May 13 16:33:23 2017 +0900
+
+ configure.ac: Fix condition
+
+commit 9230e0c251f2351ce1c7b8d7fca08dc39c320925
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat May 13 13:12:06 2017 +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
+
+ Add a header to dll.conf
+
+ Document dll.conf in a header, point to the dll.d directory for external
+ backends and document the net backend w/ pointers to the manpages.
+
+ Based on a patch by Julien BLACHE <jblache@debian.org>
+
+commit 77dcf26860b239dafb3094c863691aaef304805a
+Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
+Date: Sat May 13 13:07:01 2017 +0900
+
+ Fix potential assert in avahi backend
+
+ avahi_browser contains a reference to an AvahiClient, which may be
+ avahi_client. If it does, then freeing avahi_browser references avahi_client,
+ resulting in an assert() in Avahi's linked list macro.
+
+ Fix this by freeing avahi_browser before avahi_client.
+ See https://bugs.launchpad.net/bugs/831867
+
+commit e6711c377f266d33a3d8bc28d7a508e3c4c29c79
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed May 10 19:10:26 2017 +0200
+
+ remove unused entry from ChangeLog
+
+commit 0cf531e44528a541d76c3571bca72f395b7892ae
+Author: Klaus Kämpf <kkaempf@suse.de>
+Date: Tue May 9 10:52:12 2017 +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
+
+ pixma.desc: fix version of backend
+
+commit 5b10b0b635157cdb9766197a5f2ea7f1d24a402a
+Author: René Rebe <rebe@exactcode.de>
+Date: Fri May 5 07:05:30 2017 +0200
+
+ epson2: fixed network transport for new scanners
+
+ increased command buffer due memory overrun, and always read receive
+ status, even for zero length on network scanenrs, should fix #315552
+
+commit 6ffeb9097386268e425ae2390ed2835853dbd439
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat May 6 20:40:25 2017 +0900
+
+ Fix test for API specification generation
+
+ If none of the formats can be generated but API specs are requested,
+ bomb. The original test aimed to do so but was testing against "no",
+ a value that was never assigned.
+
+commit f3f8afb08c2098d9659757a8e7b8c212a09ddf79
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat May 6 12:24:13 2017 +0900
+
+ kvs20xx.c: don't assume sane_get_devices() has been called
+
+ Nor that that function is called with a non-NULL argument.
+ This aligns the implementation with that of kvs40xx.c.
+
+ Fixes 315625.
+
+commit 8995b1fc81e4378d2b5b0b6b0d354735403210ed
+Author: Martin Husemann <martin@NetBSD.org>
+Date: Tue Mar 15 18:07:00 2016 +0900
+
+ sanei_usb: fix number of bytes read for 64bit big-endian systems
+
+ Fixes 315337.
+
+commit b1a2c6105443c5279684f0c6827c268594aa234d
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri May 5 19:46:28 2017 +0200
+
+ pixma: backend version 0.17.37
+
+commit 09c467deab5ca4301ab7da37241c3fc072b94399
+Author: Klaus Kaempf <kkaempf@suse.de>
+Date: Wed May 3 17:52:15 2017 +0200
+
+ pieusb: Support ProScan 10T and Reflecta CrystalScan 3600
+
+ Neither of these scanner have an automated slide transport and fail on
+ respective SCSI commands.
+
+ - Add flags parameter to control if automatic slide transport is available
+ - Reflect flags in pieusb.conf.in
+ - rename SLIDE_LAMP_ON to SLIDE_INIT
+ it fails on scanners without automatic slide transport, so it has
+ nothing to do with the lamp.
+ - run SLIDE_INIT only FLAG_SLIDE_TRANSPORT is set
+ - pieusb.conf.in: Add Reflecta CrystalScan 3600
+
+commit 801558f959a03b5042d6df288cb1fd2c87035798
+Author: Aaron Muir Hamilton <aaron@correspondwith.me>
+Date: Mon May 1 20:15:23 2017 +0000
+
+ Write density (resolution) JFIF header information with JPEG files.
+
+commit b219bc2c73113fd9d8f7c5795bd662f03a8610ea
+Merge: f624a9f 92e5979
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu May 4 18:26:55 2017 +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
+
+ Fix [-Werror=implicit-function-declaration] compiler error
+
+ The fileno() is only available if its feature test macro passes. The
+ various symbols are defined appropriately in ../include/sane/config.h
+ during configuration of the build.
+
+commit adebd37b5cb3ec0cab3025300db5cdd03c2173cc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Apr 30 20:00:28 2017 +0900
+
+ Fix [-Wpointer-arith] compiler warnings
+
+commit c3903cc476909884ace9fedbea5f69b3a4085b70
+Author: Aaron Muir Hamilton <aaron@correspondwith.me>
+Date: Mon Apr 17 12:07:40 2017 +0000
+
+ Avoid attaching grayscale ICC profiles to rgb images, or vice-versa.
+
+ If the ICC profile added does not match the colour format of the
+ image, libpng will abort. This can leave the scanner motors in an
+ incorrect state and possibly cause permanent damage.
+
+commit a907b61bd58f00fd6b1d8468d9d28d6d39232c79
+Author: Aaron Muir Hamilton <aaron@correspondwith.me>
+Date: Mon Apr 17 12:07:39 2017 +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
+
+ Separate ICC profile loading into a separate file.
+
+ This cuts out some duplicate code, and enables us to reuse this
+ logic for PNG, JPEG, and any other future output format.
+ sanei_load_icc_profile also allows us to know that an ICC profile
+ file is not long enough before we start to write it to the output;
+ this should prevent poorly-written software from overflowing into
+ image data when they read the bad profile based on its length.
+
+commit 611388db1d56b0ffd74af05c4a51fe518269c90d
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Thu Apr 27 21:59:24 2017 +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
+
+ utsushi.desc: PID 0156 is a ES-400
+
+ See Alioth issue 315695.
+
+commit a0321d2a92286afbc9557fa44e2de4f706cf2407
+Author: Aaron Muir Hamilton <aaron@correspondwith.me>
+Date: Sun Apr 16 09:06:48 2017 +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
+
+ Only swap 16-bit PNG bytes on machines that are not big-endian
+
+ The SANE API specifies that image bytes are in machine native order.
+
+commit 28eb09eec4c64d9070b5747c93c25134395cab53
+Author: Aaron Muir Hamilton <aaron@correspondwith.me>
+Date: Sun Apr 16 00:27:54 2017 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ utsushi.desc: sync with upstream
+
+commit dcddb9505c88485bda6cdcf77927d14008b449ee
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Apr 11 21:22:05 2017 -0400
+
+ epjitsu backend v31
+
+ - hardware gray support for fi-60F/65F (disabled pending calibration)
+ - merge fi-60F/65F settings
+ - improve desc, conf and man files
+
+commit 34e4dbf6c35946ca52678f6a7a61ef002fddb1c2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Apr 10 20:23:03 2017 +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
+
+ fujitsu backend v133 2017-04-08, MAN
+
+ - initial support for fi-7600/7700
+ - autodetect various double feed capabilities using VPD
+ - call send_lut if we are using a downloaded gamma table
+
+commit 5edb87f9ac950473f8c3a57b4071c970887d8440
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Apr 8 21:08:12 2017 +0900
+
+ genesys: Trigger reallocation of gamma tables on next sane_open()
+
+ Fixes 315491.
+
+commit 6eb4a1f164ef116a3ed10ee42883a15c268ea01e
+Author: Robert Ancell <robert.ancell@canonical.com>
+Date: Tue Apr 4 11:36:05 2017 +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
+
+ Add missing double quote
+
+ Accidently removed in 38ce7fc086a6ecbee94ef31901a6eb874fb611b1.
+ Thanks to Jon Nelson for pointing this out.
+
+commit 38ce7fc086a6ecbee94ef31901a6eb874fb611b1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Apr 5 18:29:41 2017 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ pixma: new option adf-wait
+
+commit 3ef45ec3c3d56bfc60b339dac8a2f19543387ef3
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Tue Apr 4 11:16:20 2017 +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
+
+ epjitsu backend v30 again
+
+ - typo in previous commit broke low resolution scans on fi-65F
+
+commit a7fde11e15e5604c7b37bc9553cbd08086c08e53
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Mar 21 21:35:59 2017 -0400
+
+ epjitsu backend v30
+
+ - bump build number
+
+commit 891e3984d0410fa8c698d99d79948df3237e258d
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Mar 21 20:39:47 2017 -0400
+
+ epjitsu v30
+
+ - fix image truncation when using 150 DPI in Y direction
+ - add 200 and 400 DPI Y direction support for fi-60F/65F
+
+commit 42896939822b44f44ecd1b6d35afdfa4473ed35d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Feb 19 16:45:45 2017 +0900
+
+ Address memory corruption and information leakage.
+
+ Addresses CVE-2017-6318, Alioth#315576 and Debian's BTS#854804.
+
+commit eaa4d4407d96585b7cdbe194d8ac295eee3e6299
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sat Mar 18 19:15:03 2017 -0400
+
+ epjitsu backend v29
+
+ - fix infinite loop when scaling in Y direction
+
+commit 2f9ea038b157fc6d08ce882a1d9984d37b46d809
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Mar 11 10:48:35 2017 +0900
+
+ Fix typo
+
+ See http://alioth-lists.debian.net/pipermail/sane-devel/2017-March/035099.html
+
+commit 1e028b72cae0f4caaf48868504bd2cd1667d6da7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Mar 6 20:54:59 2017 +0900
+
+ pixma: updated status for MG5400 Series
+
+ See http://alioth-lists.debian.net/pipermail/sane-devel/2017-March/035072.html
+ and http://alioth-lists.debian.net/pipermail/sane-devel/2017-March/035082.html
+
+commit 928b803ef1f1bc1007ca3fa83418f103c6a7bdd7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Mar 5 15:35:06 2017 +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
+
+ utsushi.desc: sync with upstream
+
+commit e3ed043500e786724cc77fdd0565993e878a51fc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Dec 26 08:13:33 2016 +0900
+
+ Update backend maintenance status
+
+ Following the project member list cleanup, only backends that list
+ a project member with git write access in the AUTHORS file are now
+ considered maintained.
+
+commit 7a0e1126b3eebd38944b8b281e6a481b95a35bbd
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 23:30:31 2017 +0100
+
+ Revert "pixma_mp150.c: Fix scanbutton detection for MB5000 series"
+
+ This reverts commit 53aa78df3a6980791ce250c471d019c5c59b83ec.
+
+commit 306f8f16e78b52948a6e09fa0957b3e364e0189f
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 23:29:59 2017 +0100
+
+ Revert "pixma_mp150.c: fix 1200 dpi scanning for MB5000 series"
+
+ This reverts commit dfc5487571ed2915bda7bdedbd4c79015004361b.
+
+commit 9bc734042f6a2af159772eef412efe7c65ebb02f
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 23:28:56 2017 +0100
+
+ Revert "pixma_mp150.c: scan param 0x26-0x29 should contain localtime HHMM, also for MB5000 series"
+
+ This reverts commit eb712c6bd8ca6a42a1d3941583fa18b9981b8712.
+
+commit 6c439bce791522aa9cd3fc04cf62087bdd6c6875
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 23:28:31 2017 +0100
+
+ Revert "pixma_mp150.c: replace multiple if statements with case statement in handle_interrupt"
+
+ This reverts commit 28dcd0aef4ac91b87527c17c8aa89e879f39f20d.
+
+commit 06b4b27ecfad1aa30c772fa0fac15d1c144c1e7a
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 23:28:09 2017 +0100
+
+ Revert "pixma_mp150.c: fix parameter settings for MB5000 in send_scan_param"
+
+ This reverts commit 1d2a40ec96aea0ba183415efea570301159d4159.
+
+commit 589e011992a21ae1edb4684eb89582350c47333f
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 22:15:24 2017 +0100
+
+ Update the sane-pixma man-page for the new timout setting option.
+
+commit 1b442ce1ea7068bda1129c061071dc94bfd6a8d2
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Jan 6 21:37:52 2017 +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
+
+ 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
+
+ Remove incorrect comment left from old version
+
+commit 526f642f6487cd348b39a6e138c2bffa9a88d0f6
+Merge: 32be261 68cd274
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Fri Dec 30 20:04:53 2016 +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
+
+ 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
+
+ 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
+
+ Fix typo
+
+commit 755e829caa23b9781863e4b1e1d24c3cfee9e8bf
+Author: Dave Platt <dplatt@radagast.org>
+Date: Thu Dec 15 23:12:07 2016 -0800
+
+ avision.c: abort "wait for light" loop if interrupted
+
+ Adds a "cancelled" flag to the Avision device structure, cleared
+ in sane_start() and set in sane_cancel(). Test this flag in
+ wait_4_light() and bail out of the 90-second "wait for the
+ light to warm up" loop if the scan is cancelled.
+
+commit 28963459a4ac43100b8e377d65332d81a2660c0d
+Author: Dave Platt <dplatt@radagast.org>
+Date: Thu Dec 15 23:02:42 2016 -0800
+
+ avision.c: Recognize "backlight on" status
+
+ Avision scanners can return an additional light-status value meaning
+ "Transparent Media Adapter back-light is on". Accept this as
+ equivalent to "on" during the lamp-warmup check prior to starting a
+ scan. Re-check the light status after sending the window command, as
+ the light selection might have been changed and a further warm-up
+ may be required.
+
+commit 6585b6f60d07a196e42c99b935e2754bbc80b3c8
+Author: Dave Platt <dplatt@radagast.org>
+Date: Thu Dec 15 22:29:16 2016 -0800
+
+ avision.c: Add "skip-adf" option
+
+ The code which tries aggressively to reset/initialize HP 82xx/83xx
+ Automatic Document Feeders doesn't work well if there's no ADF attached,
+ because the scanner reports a non-zero ADF model type in this case.
+ The retry code makes several attempts to initialize the ADF, and then
+ bails out with an "Operation not supported" error.
+
+ Add a new "option skip-adf" which will cause the backend to believe
+ the "ADF not present" status if that's what the scanner reports.
+
+ Fixes #313751
+
+commit f58ce8f9201364bd0fe28ef736d4b1345f3f71b2
+Author: Troy Rollo <troy@kawseq.com>
+Date: Fri Dec 2 01:37:23 2016 +1100
+
+ HP3500: Always enable the second set of CCDs. This
+ prevents ghosting that occurs when only enabling the
+ first set of CCDs, even though at some resolutions
+ we will not get any data from the second set.
+
+commit 77986b1d14db5ba285d595ab7630748b3c6d9284
+Author: Troy Rollo <troy@kawseq.com>
+Date: Fri Dec 2 01:20:43 2016 +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
+
+ 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
+
+ HP3500 backend: fix #314811, greatly improve
+ calibration, support harware calibration
+ in 120DPI and 400DPI, and add support for
+ hardware gamma correction.
+
+commit 6484ff8fc368db24b567e1d2fbb44cd86e0f9e43
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sun Nov 6 23:03:23 2016 +0300
+
+ Forgoten comma in backends man pages list.
+
+commit 69a008830b84437701022cbd96a8863ac61d3ddf
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sun Nov 6 22:28:03 2016 +0300
+
+ Pre-create temporary file for Jpeg scanning.
+
+ Jpeg mode (as submitted by Samsung developer) uses temporary file with
+ fixed name. This opens attacks on reading its content or overwriting any
+ other user-writable file (with symlink). This change pre-creates
+ temporary file with O_CREAT|O_EXCL and mode 0600. Assuming usual +t
+ permissions for tmp this should mitigate issue.
+
+commit 226c2b9deb2f4f4b1d7c51ad4bb83d181e5e31b5
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sun Nov 6 21:50:06 2016 +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
+
+ Indent of xerox_mfp-tcp.c and xerox_mfp-usb.c
+
+ This is purely indent commit without any code changes, in
+ follow-up to 83bbcfe7d546b4d0cd28269b647fb558c6a1e00a.
+
+ Indent command used:
+ astyle -A8 -U -H -k3 -W3 -o xerox_mfp-{usb,tcp}.c
+
+ Proof that code is not changed:
+ git log -w -p xerox_mfp-{usb,tcp}.c
+
+commit 610533a9a66d7232a8a0ecd360871e3a6fa67980
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sun Nov 6 21:24:38 2016 +0300
+
+ Update xerox_mfp man page.
+
+commit ba6a5710b508e73f4cb7152d034adc865f5201d7
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sun Nov 6 21:00:58 2016 +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
+
+ Run indent: astyle -A8 -U -H -k3 -W3 -o xerox_mfp.[ch]
+
+ This is purely indent commit w/o any code changes.
+ To prove run `git diff -w`.
+
+commit e4aed53a1e46b9d46a76f814d414ef8d2c2276e3
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sat Oct 8 19:32:43 2016 -0400
+
+ fujitsu backend v132
+
+ - remove ipc_mode option and variables
+ - set ipc mode based on other options
+ - cleanup inverted logic DTC options
+ - fixes threshold option reported in #315069
+
+commit cfa98fd0d1271dd426ff2d6c565790d87cf3986d
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Sat Oct 8 14:25:33 2016 +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
+
+ pixma: new scanner Canon PIXMA MG3000 Series
+
+ see bug report #315521
+
+commit 3b63fdab2b94f14765f8ba165546f6d69fc23ea9
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed Oct 5 20:05:37 2016 +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
+
+ fix ADF scanning for Canon MF57x0 devices
+
+ - ignore result from calibrate(): don't interrupt @ PIXMA_STATUS_BUSY
+ - MF57x0 devices don't require abort_session() after the last page
+ - reported by Dmitry Deshevoy
+
+commit a9806de08ea65acb8a1109b480147a4a7ec76cb5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 25 17:06:15 2016 +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
+
+ Sync autofoo
+
+commit da49686efe16bc5f7b4ddef18ea0dcb5f7c18d77
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 25 17:00:54 2016 +0900
+
+ sane-find-scanner: disable USB if not supported
+
+ This fixes a [-Wpedantic] compiler warning about ISO C forbidding empty
+ translation units. The check-usb-chip.c file reduces to such a file in
+ the case USB support was explicitly disabled or no usable library found.
+
+commit 471e8ac0c1b565e5aea92f35ae173e167f3b61c7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 25 16:28:11 2016 +0900
+
+ sanei_pp: fix [-Wcpp] compiler warning
+
+ The `#warning` directive is turned into an error by `-Werror`. The
+ directive triggers is guaranteed to trigger with __GNUC__ when no
+ parallel support is available. This would prevent strict CI builds.
+
+ Output a message with all compilers that understand the pragma. Those
+ that don't should ignore it, according to C99.
+
+commit 7d7030a40986d97d3cf7a5313bf889bce4af8131
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 25 15:53:46 2016 +0900
+
+ sanei_usb: : fix [-Wunused-parameter] compiler warnings
+
+ These were issued in the absence of libusb.
+
+commit e6faafcdc94e253f7f4fe793fec6110ce37e8014
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 25 15:44:36 2016 +0900
+
+ xerox_mfp: fix [-Wunused-parameter] compiler warnings
+
+ These are issued when libjpeg was not found during configuration.
+
+commit 32be261254a78d1f314b3ee86fd5e5b40ab91a86
+Merge: ec8bf64 97d2a3d
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Wed Sep 21 22:35:10 2016 +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
+
+ AWARE: Treat compiler warnings as errors on debian-8-full
+
+ This build became compiler warning free in ee550e5d. Let's keep it
+ that way!
+
+commit 4119f05d5f400803a9c952896125e9feabb07393
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Sep 21 21:54:39 2016 +0900
+
+ Fix USB ID typo
+
+commit ee550e5de8e636642b9895d54f6740aa38ee6ff8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 19 12:52:31 2016 +0900
+
+ pieusb: fix [-Wunused-parameter] compiler warnings
+
+ The functions that trigger these warnings were not used.
+
+commit bf088a6ed15733237df446a84d6659c4e0145c9a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 19 17:45:35 2016 +0900
+
+ Merge comments
+
+ This gets rid of a missing :usbid warning.
+
+commit e01f574b19be74081650e9be9bcb16a3420068ef
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 19 17:44:48 2016 +0900
+
+ Merge duplicate entry
+
+commit 1a328e412fb7bf3872de20fe6e57b00ab913a75d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 19 15:26:14 2016 +0900
+
+ Add missing USB IDs
+
+ Taken from http://www.linux-usb.org/usb.ids
+
+commit dd940a1f612f56d2acb929afd54614ebc6dfb309
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Sep 17 20:43:44 2016 +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
+
+ niash: fix [-Wunused-but-set-variable] compiler warning
+
+ This makes explicit what the compiler has effectively been doing all
+ along anyway since at least 727dd4ab (2004-08-03).
+
+commit 6f4b88b6173745f09e4ce1fa465db534eca85751
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 12 20:05:42 2016 +0900
+
+ epson2: fix [-Wunused-but-set-variable] compiler warning
+
+ This makes explicit what the compiler has effectively been doing all
+ along anyway since at least 728e032a (2009-06-01).
+
+commit 4dce101c05515200a6cd337451da664c1978f115
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 19 10:04:35 2016 +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
+
+ Sync autofoo
+
+commit 2b973d75fed73771664958ea6cb5b4b8fd7b1307
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 18 21:21:35 2016 +0900
+
+ Add fig2dev as prerequisite for API HTML docs
+
+ The target for sane-html depends on sane.dvi which requires fig2dev.
+
+ Thanks to:
+ - https://lists.debian.org/debian-user/2016/08/msg00484.html
+ - http://superuser.com/questions/1101439/error-building-sane-backend-on-debian
+
+commit db22a031d130d533f5fd41710ddabdc61280d313
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 18 21:19:12 2016 +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
+
+ canon_dr v56
+
+ - add initial support for P-150M (and probably P-150)
+
+commit 39ceeae616a2e1638c2760d4364adcaa210a413b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Sep 7 21:03:30 2016 +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
+
+ Prefer *our* `include/` files
+
+ This fixes discrepancies in build results for VPATH builds.
+
+commit 737977199ccd2419a51e120c472981b1a1263ab0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Sep 5 23:40:39 2016 +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
+
+ gphoto2: fix libgphoto2 logging integration
+
+ In libgphoto2-2.5.0 (tagged for release on 2012-07-10) the GPLogFunc no
+ longer takes a va_list. Instead, it passes a formatted message.
+
+commit 23f052113b5567033da0d9c4679451d97c484220
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 4 12:50:19 2016 +0900
+
+ saned: fix [-Wunused-parameter] compiler warning
+
+ The `__sane_unused__` attribute has been moved from sanei_backend.h to
+ sanei.h to make it generally useful instead of limited to backends.
+
+commit 0d527f6659e06175d855aaa1a70fc2be52aad1a7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 4 12:13:16 2016 +0900
+
+ Drop build environments
+
+ Adding them did not quite have the effect I thought it would. I had
+ thought it would allow for easy linking to build logs by environment
+ name. Alas, no such luck.
+
+ This reverts commits:
+ - 9c44317289f1be0a72089ffd030be84caf75b58c
+ - 6209fecf3a11e90e2e5efc057cf650f4ab792b50
+
+commit 74b4a34e82124621616c699ac0d5ba0d5e93b6a1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Sep 4 12:12:14 2016 +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
+
+ utsushi.desc: sync with upstream
+
+commit a65e74fe83ae96d5d00af6a05c751086cdae8d38
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Aug 28 15:49:44 2016 +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
+
+ magicolor: fix [-Werror] compiler warning
+
+ This casts away const-ness in the hope that libsnmp doesn't change
+ the session.peername.
+
+commit 31ac0db73672347732dc80cf8f2afe8e6f3d466b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Aug 28 15:25:43 2016 +0900
+
+ magicolor: fix [-Werror=pointer-sign] compiler warnings
+
+ The libsnmp API requires a u_char *session.community :-(
+
+commit c32d48ef5fd4a47a93933e6ffba5c8a93d26e43f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Aug 28 14:18:48 2016 +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
+
+ 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
+
+ hp5400: fix [-Werror=overflow] compiler warning
+
+ This explicitly implements what gcc and clang assign.
+
+commit 9c44317289f1be0a72089ffd030be84caf75b58c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Aug 28 13:24:17 2016 +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
+
+ 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
+
+ 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
+
+ Make referencing builds easier
+
+commit 235de98784897edb63d1ed1a32609b7786d799d0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Aug 28 11:58:16 2016 +0900
+
+ md5: fix [-Wpointer-arith] compiler warnings
+
+ This reverts commits 9aecb00947e6bf7ef1cf412aff2ab41202617b30 and
+ cdad5961f3888f0a3c0c525d0efab33174c11a24 which fixed a different
+ compiler warning that seems to have disappeared (at least on the
+ debian-8-full builds).
+
+commit bf53c714348dbf4654de887ae7e649fbad6b2288
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Aug 4 22:47:01 2016 +0900
+
+ Sync with upstream
+
+commit ffd93a9fad10ced31de037f2c6180f328a38b547
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 22:43:06 2016 +0900
+
+ Sync autofoo
+
+commit cb3090cb5472b63d5cdfb5110652f568bd9477ad
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 22:16:26 2016 +0900
+
+ pixma: Fix include guard typo
+
+ This was introduced in f573865 on 2008-10-18.
+
+commit 23cc2e1ba043ea8309923f5f1dcc5acaeee38a95
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 22:08:49 2016 +0900
+
+ Fix include guard typo
+
+ This seems to have been present since the beginning of sanei/sanei_scsi.c.
+
+commit 63b55e2b591ba977a285a4c91fde0118c25246e7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 22:05:03 2016 +0900
+
+ Drop check for sys/bitypes.h
+
+ It was obsoleted in 70f3fdf on 2009-02-26.
+
+commit d263f25911a0b359b7edec0faa9320d5d13928da
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 21:48:54 2016 +0900
+
+ Fix typo
+
+ Appears to have been introduced in 0330a4d on 2009-02-02. There is no
+ evidence that a scdds.h file has ever existed.
+
+commit 970464f7332a1995bfd825de285425f0c957b1da
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Aug 3 20:53:06 2016 +0900
+
+ Drop unused CPP define
+
+ The last reference to it was removed in 5dcf165 on 2007-06-21.
+
+commit 5389808029f0f81d204630f6e78abe11dfd61122
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Aug 2 21:56:09 2016 +0900
+
+ Fix memory leak
+
+commit 1006445982877970d376c0f657e04fc1481e2459
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Aug 2 21:38:43 2016 +0900
+
+ Use DIR_SEP instead of hard-coding ":"
+
+ Fixes 313540
+
+commit b021c3bee8e9edc7854050a3975cef003586b2e5
+Author: Troy Rollo <troy@kawseq.com>
+Date: Sun Jul 31 22:47:25 2016 +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
+
+ 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
+
+ kvs40xx: fix [-Wunused-function] compiler warning
+
+ This rather unceremoniously removed the function. Note that a near copy
+ can be found in the kvs20xx backend code.
+
+commit effc26e4028f2d21a5bd9fec0458a78c0f6dc330
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 18 20:53:51 2016 +0900
+
+ kvs20xx: fix [-Wunused-function] compiler warning
+
+ This rather unceremoniously removed the function. Note that a near copy
+ can be found in the kvs40xx backend code.
+
+commit 2d468852288b5d80e9e8b6831467081fe3ec874e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 18 17:32:21 2016 +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
+
+ 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
+
+ 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
+
+ Use a single symbol to flag unused parameters
+
+ The __sane_unused__ symbol was used slightly more often then UNUSEDARG
+ and, more importantly, defined in include/sane/sanei_backend.h. That
+ makes it readily available to virtually all backends.
+
+commit b73a6e5017f6d4d2d0ef7a61bf6e2113f848be94
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 18 16:14:20 2016 +0900
+
+ niash: fix [-Wunused-parameter] compiler warning
+
+ The attribute needs to go before the pointer designation for it to have
+ any effect.
+
+commit 61719e0a131a6f0d4bf53aa98ecf510ce7081ca7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 18 16:11:39 2016 +0900
+
+ dc240: fix [-Wunused-parameter] compiler warning
+
+ The attribute needs to go before the pointer designation for it to have
+ any effect.
+
+commit ef8e258165526175c9ac2d262448f16b551d19e9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jul 14 21:12:38 2016 +0900
+
+ Sync autofoo
+
+commit 57350969f6f46195c5fd5e255b3d1906df401d19
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jul 14 20:51:42 2016 +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
+
+ doc/sane.tex: drop html.sty in favour of url.sty
+
+ The latter is part of the core TeX Live distribution which is readily
+ available on all major operating systems.
+
+commit bfd1626c4b119404429a847aaa92df77ca3fbb40
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jul 13 23:44:26 2016 +0900
+
+ Sync autofoo
+
+commit 8598f81d0b9542b6f4928b8b870a26b50f440379
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jul 13 23:43:35 2016 +0900
+
+ Fix figure orientation
+
+commit 00bc3e9b451f8dfb89553305cce89172be520bb1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jul 13 23:40:19 2016 +0900
+
+ Generate EPS figures too
+
+ It's good to know how this is done so that we can modify any original
+ figure if need be.
+
+commit cc8f99b900d5ae44248677f6881f1b74d7885bfb
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jul 13 23:24:29 2016 +0900
+
+ Generate PDF figures explicitly with fig2dev
+
+ This utility has less dependencies and supports conversion to a pile of
+ other formats that may come in handy as well.
+
+ Clean up of generated PDF figures has been moved to the clean target as
+ well.
+
+commit d7e1995d001b0d16b9920e751be923f6a8393bf1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jul 13 22:37:44 2016 +0900
+
+ doc/sane.tex: Replace epsfig with graphicx
+
+ The graphicx package allows for file specification without a hardcoded
+ extension. This provides more freedom in chosing how to prepare images
+ in *.eps and *.pdf formats.
+
+ Moreover, epsfig is considered mostly obsolete in the TeX community and
+ graphicx is the "current 'preferred' solution" to embed figures.
+ See https://www.ctan.org/pkg/epsfig.
+
+commit 0aab12b934a9f9620fb1236e13dd2b71a7426000
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 11 20:41:54 2016 +0900
+
+ Bump standard minor version
+
+ This is to acknowledge the SANE_STATUS_GOOD fixes in net.tex that were
+ committed in 4daf488 and 1100883.
+
+commit 1ed3b9fa86e6bc6875a72a9b347164a5879ffe8b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jul 11 20:37:08 2016 +0900
+
+ Reclassify doc/html.sty
+
+ It is a package used by doc/sane.tex.
+
+commit 2481e1e98b02e927cdb9c2e6e404252ef9e49041
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 10 15:43:42 2016 +0900
+
+ Sync autofoo
+
+commit fa41b18001f74e8941813709f15a15cc9ea299e1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 10 20:35:04 2016 +0900
+
+ Refactor API spec conversion support
+
+ Unless explicitly asked to do without, all formats for which required
+ tools are found will be built. Checks cover PostScript, PDF and HTML.
+
+ All logic and files involved are now collected in a single "section"
+ and grouped in such a way that their function should be clearer.
+
+ fixup! Refactor API spec conversion support
+
+commit d7c69d141ffb4f456d659b443aa4c3d3be82793e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 10 19:40:04 2016 +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
+
+ Refactor TEXINPUTS handling
+
+commit f322cbc7f950b087e969ac115a5b4e14735881e4
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 10 15:41:08 2016 +0900
+
+ Add support for PDF API spec output
+
+ Note that pdflatex internally uses epstopdf which in turn requires a
+ working ghostscript.
+
+commit 5a73fb24d1e7a5dcdd287ce7654050b1703cc9c6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 10 14:48:43 2016 +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
+
+ 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
+
+ Add GitLab CI musl build job
+
+commit be7af6835741c18ea93babd421c083c377b1f88d
+Author: Ruslan Nabioullin <rnabioullin@gmail.com>
+Date: Sat Oct 29 20:27:47 2011 -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
+
+ check-po.awk: fix awk invocation
+
+ The awk utility has been moved to /usr/bin and the script relies on
+ features present in gawk but not in mawk.
+
+commit ddbdfd6206e30e513509720dd5137c26c9efc248
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jul 3 21:11:04 2016 +0900
+
+ Fix configure time test
+
+commit c17821e3609080309bcb8a3173cb071e1493a62c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jul 2 19:23:01 2016 +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
+
+ Sync autofoo
+
+commit a9c813944e9aa0ceb6c153d06dff286ba855b90e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Jul 1 23:37:49 2016 +0900
+
+ Make libusb-1.0 the default for USB support
+
+ When libusb-1.0 is not found, libusb-0.1 will be tried. On BeOS and
+ OS2, nothing should have changed in terms of detection of USB support.
+
+ On all systems the --enable-libusb* flags are now ignored. Instead, the
+ --with-usb and --without-usb flags now control support. When neither is
+ given USB support will be enable if possible and disabled otherwise. If
+ --with-usb is requested but not possible, ./configure will fail. There
+ is no support to prefer libusb-0.1 over libusb-1.0.
+
+commit 418fbb987d731ed2468f48a6fb162f47ea7da55e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jun 30 21:50:33 2016 +0900
+
+ Sync autofoo, once again ...
+
+commit 602182931dceeedddcc6be3b144cbc1423bd9b4a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jun 30 21:49:25 2016 +0900
+
+ Improve test shell builtin invocation portability
+
+ Looks like I missed this when committing 309a8140.
+
+commit 828cd013e9a4411158af8816a63b133b6da19ed5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jun 30 21:38:04 2016 +0900
+
+ Compile getopt replacement functions only if needed
+
+ This ought to get rid of the last empty compilation unit warnings. This
+ merges libfelib.la with liblib.la. The former was always used together
+ with the latter. The latter was only ever used without the former when
+ linking backends and tools.
+
+ Tools might want to use the getopt functions, backends might just want
+ to use MD5.
+
+commit 89dc05006ec93e8fd8a103504701db720814669a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jun 29 22:21:10 2016 +0900
+
+ Sync autofoo
+
+ Looks like the sorting of the DIST_COMMON file list is not stable.
+
+commit a298bfe5a8c65236ac13130e891a93bf3cf58976
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jun 29 22:20:51 2016 +0900
+
+ Fix AS_IF condition
+
+commit f03f1f66d4a7704c20d221897665509d7f1a626a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jun 29 22:15:06 2016 +0900
+
+ Sync autofoo files
+
+commit 1c946f7c194869966f6d3af9df499184d3035c20
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Jun 28 22:42:09 2016 +0900
+
+ Compile replacement functions only if needed
+
+ This ought to get rid of most empty compilation warnings.
+
+commit 0c2b86ac0b56ee7cb8b962102c54855f05887b08
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 27 22:33:28 2016 +0900
+
+ Fix distcheck issues in tools/
+
+ Automake is smart enough these days to compile the *.lo files that are
+ used when linking.
+
+ The umax_pp_CPPFLAGS are useless because backend/umax_pp_low.c undefines
+ BACKEND_NAME unconditionally and sets it to what was passed here ;-)
+
+commit 81f9557966ad335a76deff57a112607d9813ba7a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 27 22:08:20 2016 +0900
+
+ Clean up .gitignore file content
+
+ Removes empty lines and duplicates (note that .gitignore patterns are
+ recursive unless anchored with a leading /).
+
+commit 61f3fec68e14944be7ecf219ec604e599141cbdf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 27 22:05:50 2016 +0900
+
+ Remove references to SANE CVS
+
+ The references in in-file changelogs and the ChangeLog files have not
+ been modified. Only those references that refer to current practices
+ or locations.
+
+commit c23791cbd71d58b2627cfc65bbf2cb20aeb51bba
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 27 21:51:43 2016 +0900
+
+ Sync AUTHORS content with current status
+
+ We've been using git for a while ;-). Also updates the write access
+ info and fixes encoding issues.
+
+commit cb4924f210bf758558b583220a14ed5a62f178dc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 10:22:35 2016 +0900
+
+ Stop distclean from removing files willy-nilly
+
+ The distclean target should only remove files that make creates. If
+ there are any that need taking care of, they should be added in on a
+ per file basis in the Makefile.am that creates it.
+
+commit 0065aaa1c8cb823d20b1e0ff32b3f6197e73db3f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 10:11:42 2016 +0900
+
+ Remove overly zealous ignore patterns
+
+ Text editor backup and temporary files like *~ are a per developer
+ issue, add them to your global .gitignore. Other dot-files should
+ be ignored on a case-by-case basis.
+
+commit 8274a52eec3c20becf9901acaab4837b6b61c2f7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 10:07:26 2016 +0900
+
+ Sort .gitignore files
+
+commit b25ef62c2bb163fffea56000ef25544a236d2096
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 10:05:12 2016 +0900
+
+ Fix sorting of ignore files
+
+ We haven't been using CVS since ... 2009-05-04 :-|
+
+commit 0bc7b6aed7e3ac8ee78190f0e795ce9c62c3f36e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 09:16:54 2016 +0900
+
+ Sync *.po files with previous changes
+
+ This changes the file/line references in all files (and picks up any
+ new messages as a side effect).
+
+commit bdade6bb07a0ec27e3930c0b3b86c28a5c2a5bd9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 09:15:24 2016 +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
+
+ 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
+
+ Switch to using the gettext build machinery
+
+ This adds two automatically maintained English variants that handle
+ quote substitution in onrder to provide smart quotes.
+
+commit 0286bf46fc2992dfd2e9539fb939c243db13e91f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Jun 26 08:30:45 2016 +0900
+
+ Add gettext build machinery files for I18N/L10N support
+
+ These are courtesy of autopoint and target gettext-0.18.1 because that
+ is the version in Debian 7 (which is what Alioth is running). The one
+ warning this produces on autoreconf is fixed in gettext-0.18.2, BTW.
+
+commit eecee6d1014537cabe427d44168fce9ac9894301
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jun 25 15:23:05 2016 +0900
+
+ Fix VPATH build issue
+
+ The source *.po files weren't found when you configured outside of the
+ top source directory.
+
+commit 00984cd1119bb9bb5b794bfc0f1ef77369978d68
+Author: Yurii Kolesnykov <yurikoles@gmail.com>
+Date: Sat Jun 25 03:34:12 2016 +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
+
+ epsonds: remove unused var
+
+commit 1dbabdce5d34e686608bb997245c49a823e19fb5
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Tue Jun 21 00:49:08 2016 +0200
+
+ epsonds: fix compilation
+
+commit 9b389a61c5e698e8bffb186bdbc005739128b427
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Tue Jun 21 00:43:39 2016 +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
+
+ 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
+
+ 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
+
+ Silence overly verbose targets
+
+ This only takes effect with silent rules enabled.
+
+commit 43cdc1056af899520797b09f3f78ba64703ed74d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Jun 15 20:18:25 2016 +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
+
+ GitLab-CI: fix configure option
+
+commit f75e271853f40c6cb00ce59cbb4e9d62d083a1b2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Jun 14 21:24:53 2016 +0900
+
+ Tweak GitLab CI builds
+
+ The idea is to build as much as possible for the *-full flavour build,
+ make compiler warnings stand out and muddle on after errors so that we
+ get all the problems in a single log.
+
+commit ef7deff36c759efa8d371251febef6d37d4eb94b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Jun 14 21:20:48 2016 +0900
+
+ Add missing autofoo file
+
+ This should have gone in with d853463e.
+
+commit d853463ef1b97082d657a0be32d1b27a04940ea2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Tue Jun 14 06:30:48 2016 +0900
+
+ Sync derived files
+
+ This was done with
+
+ AUTOMAKE="automake --add-missing --copy" autoreconf --force
+
+ on Debian GNU/Linux 8.5.
+
+commit 17d78ab7c326069c3a596f17ded6418ef42930bc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Feb 12 21:09:32 2016 +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
+
+ Fix libtoolize warning
+
+commit 7675cb7c3eb5b6e97fb87adc464b6bcc67cfd7dd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Feb 11 17:43:14 2016 +0900
+
+ Drop Makefile.in from EXTRA_DIST
+
+ Automake is smart enough to include this on its own.
+
+commit 7bfa818c57485310994650528124a7036894eb36
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Jan 14 21:22:00 2016 +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
+
+ 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
+
+ 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
+
+ Use autoconf provided --docdir
+
+commit f1f4180e5b6f71bf3a674bbfcbf7932b401d7a96
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 9 18:24:20 2016 +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
+
+ 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
+
+ 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
+
+ Fix variable name typo
+
+commit 79c623628a28b6c28321cad6518bf98cf7a705a4
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 9 17:48:03 2016 +0900
+
+ Fix new automake warnings
+
+commit 97fed76717367289a8e160dab4341d79586c1079
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 9 17:22:31 2016 +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
+
+ Remove commented out code
+
+commit 4894b1513d829957e109e5c49b812dc688fe78b3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 9 17:11:19 2016 +0900
+
+ Drop a pile of unnecessary macro invocations
+
+ These are already taken care of by other macros.
+
+commit ae89c8f98362a4e50d4b1a0ce8f3586b77a81989
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 9 15:59:35 2016 +0900
+
+ Update to automake-1.11.6
+
+ This turns on additional warnings and adds support for silent make
+ rules (so compiler warning really stand out ;-).
+
+commit 87e12bbf2e4312bf0bd18656afe579919c8788e1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 13 22:24:21 2016 +0900
+
+ Sync derived files with autoreconf --force
+
+ For the record, this was done on Debian GNU/Linux 8.5.
+
+commit 309a8140e7285f87d5fc5ee24b942f1713e80be8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Oct 28 21:59:42 2015 +0900
+
+ Improve test shell builtin invocation portability
+
+ POSIX 2008 obsoletes the -a and -o operands (according to the autoconf
+ documentation).
+
+commit d9e2f441139c0514c3d388976d1f8fc78a04de95
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Oct 28 20:59:22 2015 +0900
+
+ Double quote code passed to AC_LANG_PROGRAM
+
+ Upon re-reading the autoconf documentation, this seemed the right thing
+ to do. The AC_LANG_PROGRAM macro does not quote its arguments so any
+ occurence of [ and ] will get stripped out if not double quoted.
+
+ Current code snippets passed do not use them but it is better to use a
+ consistent quoting approach for such snippets. In other places in the
+ configure.ac file double quoting is used already.
+
+commit d3d5dc3da04cce842f7fa8d941676f2f5abc3bbd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Oct 22 22:18:19 2015 +0900
+
+ Update to autoconf-2.69
+
+ This gets rid of a number of obsoleted macros and replaces RETSIGTYPE
+ with a void literal which can be assumed for C89 and later.
+
+ This changeset was prepared using autoupdate and modified to get rid of
+ whitespace and doubled [] changes. Changes to acinclude.m4 were added
+ by hand.
+
+commit 2d6fad58b4c61d59bec3879dab9ccf0c1b88dd11
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Thu Oct 22 20:15:45 2015 +0900
+
+ Respect GNU Standards user variables
+
+ Several variables are considered "user variables" by the GNU Standards.
+ This means that the user can pass these to their ./configure and make
+ invocations as they see fit. These variables include CPPFLAGS, CFLAGS
+ and LDFLAGS.
+
+ This changeset pushes our use of these variables to the automake shadow
+ variables, AM_CPPFLAGS, AM_CFLAGS and AM_LDFLAGS, so that user variables
+ will no longer clobber flags required in order to build.
+
+commit 7a2b112d20e08337528128745bf7cc1d6096a1d8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Oct 21 22:33:53 2015 +0900
+
+ Prefer make variables over literal substitutions
+
+ The AC_SUBST and PKG_CHECK_MODULE invocations in configure.ac as well as
+ acinclude.m4 are sufficient to trigger automake to insert initialization
+ logic for the variables these introduce. There is no need to do this by
+ hand. Wherever these values are needed, it is better to use a variable.
+ This allows for one-off overrides on the make command-line (without the
+ need to run ./configure) for one thing.
+
+commit 2745528b60617d737a7a597c4ee5397359a6ddfd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 19 21:52:47 2015 +0900
+
+ Fix non-POSIX automake file variable warning
+
+ This addresses warnings about the use of the $(wildcard) function.
+ It has been replaced by a plain shell glob. There is one case where
+ this will result in an error, when there are no matches, but that is
+ when the targets that use it make no sense. It is probably good to
+ get an error in that case.
+
+commit d81836bd2332e42136a15a72961c0b9295d94b58
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 19 21:04:53 2015 +0900
+
+ Add automake subdir-objects option
+
+ This addresses autoreconf output such as:
+
+ tools/Makefile.am:37: warning: source file '../backend/sane_strstatus.c' is in a subdirectory,
+ tools/Makefile.am:37: but option 'subdir-objects' is disabled
+
+ The option was introduced in automake version 1.9 and is slated for
+ unconditional activation with automake-2.0.
+
+commit d38a098ec6fce0aa18dd757677c5a07ff1a44163
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 19 20:20:56 2015 +0900
+
+ Rename configure.in to configure.ac
+
+ This name has been preferred since autoconf-2.52 and automake-1.5.
+ Both were released in the summer of 2001. Support for configure.in
+ is slated for removal in automake-2.0.
+
+ The configure.ac file itself requires autoconf-2.54 or later (and
+ does not care about the automake version).
+
+commit c9027378a12a6f67b22ee5fe203df1739486e3ad
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Jun 13 20:35:34 2016 +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
+
+ 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
+
+ fujitsu backend v131
+
+ - hide compression-arg option when jpeg disabled
+ - add Send/SC/GHS macros for recent scanners
+ - add initial support for fi-74x0
+ - add initial support for fi-7030
+ - set has_MS_lamp=0 for fi-71x0
+ - add I18N macros to all option titles and descriptions
+ - add usb ids for many newer scanners
+
+commit ec8bf64396b394c4d483b811f9948871f12882b4
+Merge: 1d2a40e 1e01365
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Sat May 21 22:06:57 2016 +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
+
+ pieusb: mkostemp -> mkstemp
+
+commit 926bfade544de4a4fd5f1a8082b85a97e2443770
+Author: Alex Belkin <abc@telekom.ru>
+Date: Sat May 7 22:33:03 2016 +0300
+
+ Color scanning for Samsung models, which support JPEG Lossy compression.
+
+ Patch is submitted by Laxmeesh Onkar Markod <m.laxmeesh@samsung.com>
+
+ Patch to code is applied almost verbatim, except, insignificant
+ formatting fixes and making new functions static.
+
+ Also, new USB ids added and scanner support is changed as reported.
+
+commit 1d2a40ec96aea0ba183415efea570301159d4159
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: Sat Apr 30 15:32:55 2016 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ canon_dr backend v55
+
+ fixed-width scanners were calculating left-side offset incorrectly in color
+ initial support for DR-F120
+ rename all DUPLEX_INTERLACE_* to indicate start and end of line
+
+commit 41a416e4afcf6cada69193dc408ef184d0e5f678
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Mon Mar 21 18:59:47 2016 +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
+
+ 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
+
+ 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
+
+ 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
+
+ pixma_imageclass: software lineart for all imageCLASS, imageRUNNER, i-SENSYS and laserBase scanners,
+ supported by this sub-backend
+
+ imageCLASS scanners:
+ D420, D480, D530, MF810/820, MF3240, MF4010, MF4150, MF4270, MF4320, MF4360,
+ MF4410, MF4570dw, MF4690, MF5630, MF6500, MF8030, MF8170c
+
+ i-SENSYS scanners:
+ MF210, MF220, MF3010, MF4500, MF4700, MF4800, MF5880dn, MF5900, MF6100,
+ MF6680dn, MF8200C, MF8300, MF8500C
+
+ imageRUNNER scanners:
+ iR1133
+
+ laserBase scanners:
+ MF5650
+
+commit 38d6f1ba6dd48d8139b3ef504b4c7920d0e4736b
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Fri Mar 4 13:08:31 2016 +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
+
+ raise build number
+
+commit 8ad2c60d82797cc3495f63f8230bdf6f999067a1
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Thu Mar 3 21:58:55 2016 +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
+
+ 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
+
+ use rewind instead of slow_back_home
+
+ - if required by flags, do a rewind instead a slow_back_home that pollutes
+ shading settings
+
+commit 3dee0f8d48e26e3aceb0243d03199af5870f30e2
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Thu Mar 3 21:31:01 2016 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ pixma: new global parameter to set duration of receive timeout loop
+
+ The default value for receive timeout loop duration has not been changed.
+ The loop still takes 8 seconds if a timeout occurs.
+
+commit 9897357727b65d13167b89cd1d1fe816f4d72563
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Sun Feb 28 21:26:27 2016 +0100
+
+ enable pixel averaging whne bleow 600 for all models
+
+commit d784dec60b096b8e8fe18f5f7b5c1921249d6ed2
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Sun Feb 28 12:26:12 2016 +0100
+
+ motor table fixes
+
+ - add target speed for 600 dpi gray
+ - add slope table for 4800/2400 dpi, gray and color
+
+commit 759729331cc60a86d884518064b2dc92736f7abd
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Sun Feb 28 12:18:56 2016 +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
+
+ fix expiration time option reading
+
+commit 61d6f5c2140e6e659db20916937cc95c5c7256f3
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Thu Feb 25 21:37:55 2016 +0100
+
+ mode set fixes
+
+commit fa2c9dc9b216fa7b7f1baf013b7cbe8eb3df8597
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Thu Feb 25 21:37:00 2016 +0100
+
+ fix GPIO during scan
+
+commit c5117ed0f1b522eab10fd2248f140b2acad2a708
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Wed Feb 24 21:43:29 2016 +0100
+
+ doc and version update
+
+commit 747275a00f03e4ab643461448985ce20879e1d12
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Wed Feb 24 21:15:26 2016 +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
+
+ 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
+
+ make 600 dpi mode work for LiDE 120
+
+ - add override for registers 0x16 and 0x70 since 120's sensor
+ is set differently according to resolution
+
+commit 15e203de89abe53f732aa431548645c5c9838237
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Feb 23 21:11:00 2016 -0500
+
+ Various copyright comment updates
+
+commit 1465543cc0dd9e4fb4b3706ca6793e90a35ce389
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Feb 23 21:07:06 2016 -0500
+
+ fujitsu backend v130
+
+ run init_model before init_ms so some scanners can override
+ set all M309x and M409x scanners s->broken_diag_serial = 1
+
+commit 963de58dfc4498693aeeec35a9ff23363af6ac67
+Author: m. allan noah <kitno455@gmail.com>
+Date: Tue Feb 23 20:42:52 2016 -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
+
+ Support SANE_USB_WORKAROUND env var
+
+ Here, we add a new env var (SANE_USB_WORKAROUND) to sanei_usb.c.
+ This allows end users to conditionally enable the workaround added
+ in commit 014b45d920f1fb630e1a31bb01f1da02ea2a6a87. The default is
+ to not enable the workaround, because more recent Linux kernels no
+ longer seem to need it. Some users have even reported failure with
+ the workaround enabled.
+
+commit 219198838be069d7e3d48b53762727f1bbfb93e5
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Tue Feb 23 21:39:22 2016 +0100
+
+ LiDE 120 working [75-300] dpi
+
+ - fix sensor pixel number
+ - enable calibration
+ - default to 16 pixel DUMMY
+
+commit 4fd1d10228047a740f28b1cd25579b7c40c93b1f
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Mon Feb 22 21:45:02 2016 +0100
+
+ tune scanarea geometry
+
+commit a74ebe551daf8750821b1ab57324e54141a84461
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Sun Feb 21 22:14:48 2016 +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
+
+ 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
+
+ doxygne fix
+
+commit 2e1102dc3ab1ee4d7bfec3e7cbf6e3a1527f5264
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Thu Feb 18 21:41:38 2016 +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
+
+ use dedicated LiDE120 GPIO
+
+commit 387cea7d6ce75af9441c5841221267bef7b7924c
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Wed Feb 17 21:04:55 2016 +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
+
+ latin1 -> utf8
+
+commit d74d3bcd887d2a3d59ee96e04eb68f15c0a3b882
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Thu Feb 18 22:34:16 2016 +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
+
+ pixma: fix scanner names
+
+commit 235dc80b5f3faaf195eef1e177a1f38284ca3bee
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed Feb 17 21:10:44 2016 +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
+
+ 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
+
+ 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
+
+ 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
+
+ pixma_imageclass: fix for failed first usb command (timeout)
+
+ Sometimes the first usb command to the scanner fails after a previous scan.
+ A workaround was to reconnect the usb cable. This fix simply resends the
+ failed command.
+
+commit 8f1202d6537568e56b4886ebe5d41d0210ffacd9
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed Feb 17 20:55:49 2016 +0100
+
+ pixma_imageclass: fixes for MF6100 Series
+
+ - special ADF settings
+ - the MF6100 Series is a Generation 2+ scanner, but uses the old read image command
+
+commit 02855737ee84e3c72bceff9ba06fddc5a5d99860
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed Feb 17 20:32:00 2016 +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
+
+ 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
+
+ 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
+
+ Move #include <pthread.h> to sanei_thread.h
+
+ The sanei header file may need pthread_t. If it does, make sure it
+ is available.
+
+commit af35e9ba749cce6e735d685ec4495e8c8d85778c
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Thu Feb 11 12:06:34 2016 +0100
+
+ pixma: Canon Pixma MG3600 Series is working
+
+ Reported by Rajib Bandopadhyay
+
+commit 7bd773ade5ff1bc4170d2a1773428efe759aaa75
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Tue Feb 9 09:55:26 2016 +0100
+
+ LiDE 120 support wip
+
+commit 056f590f2d147099554d97a89dd5e0ddfa8d6dda
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Sat Jan 23 00:55:31 2016 +0100
+
+ epsonds: fixed comment
+
+commit cf2dfea0008d16cb70f8baeaae5a414e9bdafda3
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Fri Jan 22 20:44:36 2016 +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
+
+ 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
+
+ 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
+
+ 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
+
+ pixma: Canon PIXMA MG5700 Series is working
+
+ Reported by Andrew Reginato, bug #315244
+
+commit 0f47b47b759908e7b11800404d269087d60d87ad
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Fri Jan 8 17:32:36 2016 +0100
+
+ pixma_mp[150|810]: disable send_time()
+
+ The function send_time() makes trouble with a lot of scanners.
+ We send a warning to the debug output instead of sending the time.
+
+ fix for [#315248] Canon MP250 with pixma backend is not working
+
+commit b040b150a08b0b5394ad3bc91a45966d97f58152
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Fri Jan 8 16:54:30 2016 +0100
+
+ pixma: fix for [#315244] Add support for Canon PIXMA MG5700, MG6800, MG6900 and MG7700
+
+ These scanners are new and need further testing!
+
+commit 81c429082c3c139f8616de4a73733953cd5aa33f
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Fri Jan 8 16:43:46 2016 +0100
+
+ pixma: update copyright
+
+commit 9aecb00947e6bf7ef1cf412aff2ab41202617b30
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Jan 8 21:26:31 2016 +0900
+
+ md5: Avoid the need for casting
+
+ This also modifies the code slightly to follow the original array
+ access more closely.
+
+commit cdad5961f3888f0a3c0c525d0efab33174c11a24
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Dec 6 01:23:51 2015 +0100
+
+ Introduce md5_set_uint32
+
+ This fixes the following GCC warning:
+
+ warning: dereferencing type-punned pointer will break strict-aliasing rules
+
+commit f3471c2ca6ea22846dd6619aff7913610722a6c0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 2 17:50:34 2016 +0900
+
+ saned: Use system header IPv6 test macros if available
+
+ This should fix [-Wstrict-aliasing] compiler warnings on those systems
+ where the IN6_IS_ADDR_LOOPBACK and IN6_IS_ADDR_V4MAPPED macros exist.
+ POSIX.1-2001 states that they shall be defined in netinit/in.h so most
+ systems will probably have them.
+
+commit 0de5416a9bafa1ade52722c509817276bbf87d8a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 2 16:06:34 2016 +0900
+
+ umax_pp: fix memory leak
+
+ Found courtesy of [-Wunused-but-set-variable] compiler warning.
+
+commit 9d78ace3b7e60afa2b3cb829ac23e5f8b4ccdc07
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Jan 2 16:06:00 2016 +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
+
+ 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
+
+ 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
+
+ kodakaio: fix [-Wformat=] compiler warnings
+
+ This uses the ANSI C approach that is used in a lot of existing code
+ rather than what ISO C99 allows for consistency.
+
+commit cadb4b0fff00540159625320416e5601c4704627
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Dec 26 17:45:56 2015 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ microtek2: fix another [-Wunused-but-set-variable] compiler warning
+
+ This allows for the fact that the backend may be compiled with and
+ without support for authorization.
+
+commit c1458770955b5476eedc89755bb424744b05b055
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 22:11:31 2015 +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
+
+ magicolor: fix [-Wunused-function] compiler warning
+
+ This function is only used when SNMP support is activated.
+
+commit 292dd42bb6585e2801623d1f33497581626d9d72
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 21:50:42 2015 +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
+
+ 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
+
+ lexmark: fix [-Wmaybe-uninitialized] compiler warning
+
+ This adds a default handler to switch statement so low_get_start_loc()
+ bails before the start_600 variable is used.
+
+commit 068c3bb75d3972dd2218caa84a6de761c5ca0db8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Dec 26 17:28:34 2015 +0900
+
+ kodakaio: fix [-Wunused-function] compiler warning
+
+ The function is only used when Avahi support is enabled and has been
+ put in a suitable compilation scope.
+
+commit 610dc9ceb4d9eb061209d935e2b1966dfca5a74c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 21:38:08 2015 +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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ 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
+
+ avision: fix [-Wunused-but-set-variable] compiler warning
+
+ The variable seems to have been superseded by conv_out_size in the
+ else branch of set_calib_data().
+
+commit 5b8fdd317f1bb4076b8fe661db78c230af21004b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 20:27:20 2015 +0900
+
+ artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
+
+ This leaves the sane_close() implementation just as broken as it has
+ been from the initial commit sometime in 2002.
+
+commit ec1936713e67b192d057b2f552a25622f88844a1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 20:26:21 2015 +0900
+
+ artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
+
+ The variable was only used to silence a [-Wunused-parameter] warning.
+
+commit 5b21a24312f2cf2ced5d5c70b0f7d2c1f0c58f35
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Dec 23 19:57:13 2015 +0900
+
+ artec: fix [-Wunused-but-set-variable] compiler warning
+
+ The variable is used to assign return values but is not referenced by
+ anything itself.
+
+commit 57ae115eafa5b52b84b8e2878982cdad7c1a9f13
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Dec 26 17:12:41 2015 +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
+
+ sanei_usb: const_cast data buffer
+
+ The libusb_bulk_transfer() API caters to both reads and writes and
+ as a result of that will not take a const pointer.
+
+commit be084e0d7bb7933e1826e6e48b42f43bc3cb077a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Dec 26 17:05:17 2015 +0900
+
+ sanei_usb: Move variable declarations to scope of usage
+
+ Fixes an [-Wunused-variable] when compiling without libusb.
+
+commit 0d7882e34b5f5625261258a3a341a58a04beb304
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Dec 26 16:51:44 2015 +0900
+
+ Change compile time warning policy
+
+ The -Wall flag is now always enabled (when using gcc). The -Wextra
+ flag (previously known as -W) and -pedantic flags are, by default,
+ enabled during development but disabled for releases.
+
+ All other flags have been removed.
+
+commit 5136e664b8608604f54a2cc1d466019922b311e6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Dec 20 21:58:45 2015 +0900
+
+ Document ChangeLog policy change
+
+commit 674b75fc913187415b4f151a52e4bc7004c5d5b0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Dec 20 17:33:55 2015 +0900
+
+ Improve readability of condition
+
+ This also fixes the following GCC warning:
+
+ warning: logical not is only applied to the left hand side of comparison
+
+commit 58052a7ce6b205e25a2fc85f31158595cad00258
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sat Dec 5 21:33:48 2015 +0100
+
+ Change GCC mode from ISO C90 to ISO C99
+
+ Add GCC flag "-std=c99". Also remove GCC flag "-ansi" which is an
+ alias for "-std=c90" and would make the flag "-std=c99" ineffective.
+ This fixes all occurrences of the following GCC warning:
+
+ warning: ISO C90 does not support '__func__' predefined identifier
+
+commit baec5e039504de390cae41557b0b8323343721c3
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sat Dec 5 10:48:59 2015 +0100
+
+ Use consistently __func__ instead of __FUNCTION__
+
+ Some parts of SANE used __FUNCTION__ while other parts used __func__.
+ Now, __func__ is used consistently throughout the SANE sources. This
+ fixes all occurrences of the following GCC warning:
+
+ warning: ISO C does not support '__FUNCTION__' predefined identifier
+
+commit 93298674d02b1127efdf4e726e92e797a0081c9e
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sat Dec 5 20:44:14 2015 +0100
+
+ Merge all compatibility macros around __func__ and __FUNCTION__
+
+ Various parts of SANE introduced their own compatibility macros for
+ old compilers that don't support __func__. Most of these definitions
+ are identical or have minor differences. This patch replaces them
+ with a single instance in the central header file for backends.
+
+commit 7c8c8e29beed2c4e6f96db08031c12c9001ca784
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Dec 6 03:32:51 2015 +0100
+
+ Remove dead code due to unused variables
+
+ This fixes some occurrences of the following GCC warning:
+
+ warning: variable '...' set but not used
+
+commit aba87a4582d594cf953b4bda5b5d42e37e13f21c
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Dec 6 01:30:30 2015 +0100
+
+ Mark internal function toupper_ascii as static
+
+ This fixes the following GCC warning:
+
+ warning: no previous prototype for 'toupper_ascii'
+
+commit 13b6faee2a0696eb02a61f22121b7f4854987f2e
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Dec 6 03:03:06 2015 +0100
+
+ Fix interface of helper function write_many
+
+ This fixes two occurrences of the following GCC warning:
+
+ warning: cast discards 'const' qualifier from pointer target type
+
+commit badd7025b21b2207cfb95001aeb324597e24b301
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Dec 6 02:37:10 2015 +0100
+
+ Bugfix: On error, return the actual error code in sanei_magic_rotate
+
+ Up to now, on failure the sanei_magic_rotate function returned a
+ success status. This fixes the following GCC warning:
+
+ warning: variable 'ret' set but not used
+
+commit 6aced758f4a95fd858906f3e898ee967a9718641
+Author: Volker Diels-Grabsch <v@njh.eu>
+Date: Sun Nov 29 16:02:01 2015 +0100
+
+ Fix typos in comments
+
+ While reading through the SANE sources I noticed some annoying typos
+ in the comments. This patch is my contribution to make the SANE
+ sources slightly more pleasant to read.
+
+commit 6d8b8d5aa6e8da2b24e1caa42b9ea75e9624b45d
+Author: Alessandro Zummo <a.zummo@towertech.it>
+Date: Tue Dec 15 16:17:53 2015 +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
+
+ Add note about changelogs
+
+commit 06d876f74e5d07cb82d02ca1222926a61a3e458b
+Author: Stéphane Voltz <stef.dev@free.fr>
+Date: Tue Dec 15 06:05:07 2015 +0100
+
+ fix for #315050
+
+ - handle case where linesel is rounded to 0 when scan y resolution is
+ below minimal scan resolution but higher than half of the minimum
+
+commit 753d123f36d08cdb8047adac7c89a9fe015c4b25
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sat Nov 28 08:34:58 2015 -0500
+
+ canon_dr desc update
+
+ add note about mode switch on P-208
+
+commit f1593204c72124f3077b0b29f3c128d30be415b5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Nov 27 21:26:46 2015 +0900
+
+ Drop execute permission
+
+ Source code, description files and configuration templates should never
+ need to be executed.
+
+commit e094c5b43b6d8d8bec84bd5b1ab2c6009f38e14b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Nov 13 22:06:30 2015 +0900
+
+ Invert sense of sanei_thread validity check
+
+ Double negatives suck.
+
+commit fe12d31e6873f5c3de330f1de4c4fbc851df1e9f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Fri Nov 13 21:41:56 2015 +0900
+
+ Fix SANE_Pid related -Wsign-compare warnings
+
+ This may fix threading related issues on WIN32 platforms, BTW.
+
+commit ed59056d40a143b3cf9243ea0068448a88ce3108
+Author: m. allan noah <kitno455@gmail.com>
+Date: Mon Nov 23 21:26:09 2015 -0500
+
+ canon_dr backend v54
+
+ - br_x and br_y locked to page_width/height until changed
+
+commit d0ea697ab83360bf0ccddcd02565f85ea0f96b50
+Author: m. allan noah <kitno455@gmail.com>
+Date: Mon Nov 23 21:08:30 2015 -0500
+
+ fujitsu backend v129
+
+ - br_x and br_y locked to page_width/height until changed
+ - add USB ID's for fi-6xxxLA and fi-6xxxZLA scanners
+ - add USB ID's for unsupported SP11xx scanners (genesys based)
+
+commit e6a249e0424f6854b7ed12f8272633a0edecfa90
+Author: m. allan noah <kitno455@gmail.com>
+Date: Thu Nov 12 21:10:49 2015 -0500
+
+ revert mustek_usb2 backend upgrade
+
+ Instead of 100+ revert commits, I've lumped everything into a
+ single commit. This removes all of dedf0ac30 through db7f038f1,
+ plus the parts of 497d59180 which were specific to mustek_usb2
+
+commit 21c5f4d814f93a363377798635c7f1cbc1c79342
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Nov 11 22:38:56 2015 +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
+
+ Remove unnecessary cast
+
+commit fff1c5962a94ab410dba4fed541312554c8edf8d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Nov 11 22:35:34 2015 +0900
+
+ Fix "discards 'const' qualifier from pointer target type" warnings
+
+ The line variable is not (and cannot be) declared 'const'. The string
+ variable points to a location in line, hence it is safe to cast away
+ 'const'ness of the sanei_config_skip_whitespace() return value.
+
+commit 38153b33e1657137e6956e63a9fcb76d665f86f2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Nov 11 22:33:34 2015 +0900
+
+ Fix "discards 'const' qualifier from pointer target type" warning
+
+ The device2 variable is not modified so let's make that clear.
+
+commit d2576bbb948dd9d8e06f66dc4cede774c5518751
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Nov 11 22:30:10 2015 +0900
+
+ Fix "discards 'const' qualifier from pointer target type" warnings
+
+ The cs3_xfree() functions is really just a checked call to free() so its
+ signature has been changed to match that. The warnings that causes have
+ been fixed in the same way and on the same grounds as the previous commit.
+
+commit e65fd1b4cb5e9463d16a6fb4cd8eeb129ba58e63
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Wed Nov 11 22:28:17 2015 +0900
+
+ Fix "discards 'const' qualifier from pointer target type" warnings
+
+ The resources pointed to have been acquired by the backend. It is safe
+ to cast away the 'const' qualifier when releasing these resources.
+
+commit 497d59180649a831691220aefcc8ec81d5f90960
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sun Nov 8 17:17:37 2015 -0500
+
+ automake for recent changes
+
+ updates to mustek_usb2, canon_dr and umax_pp require automake run
+
+commit db7f038f108ca12966b947dd80f3772e2133495e
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Jul 14 23:15:02 2012 +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
+
+ 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
+
+ properly add new handle to linked list
+
+commit 3b48a6d10560e855cef815ca5c1ecbb50fd02d00
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Jun 30 00:04:06 2012 +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
+
+ 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
+
+ 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
+
+ Simplify SetMotorStepTable*.
+
+commit 27b636d294876c7aac0b53922bacac627ba873c9
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun May 15 19:58:09 2011 +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
+
+ 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
+
+ Detect USB controller type.
+
+commit d8a203a69373bb6f207de9ddc9c30a60da4a2cc9
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun May 15 14:35:06 2011 +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
+
+ Fix some misuse of SENSOR_DPI constant.
+
+commit 30e39071560412b362e03a105e20996093074d81
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun May 8 16:44:15 2011 +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
+
+ 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
+
+ Simplify SimpleMotorMove.
+
+commit 0a1125895b3f1ed0058729fcc29d6858ac6d5e56
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat May 7 13:58:24 2011 +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
+
+ Remove restriction to 8-bit color in negative mode.
+
+ The only reason for that restriction was that the histogram stretching code, which has been removed earlier, could only handle 8-bit color.
+
+commit 4ced7a900a6463c460121eaed7583f4249ef74c2
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat May 7 12:45:50 2011 +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
+
+ 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
+
+ Register related fixes.
+
+commit 5d556cd5e65ba9d1df30e3a3beb0322549d040ff
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Mon Apr 25 19:26:32 2011 +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
+
+ Fix bug in device list handling.
+
+commit 877f250b5c32f8403ab321d14fd76afd7e2c2d1d
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 24 20:54:19 2011 +0200
+
+ Resolve issue with debug logging.
+
+commit 272c1d6fdeb8af9d6d4b61f85b4a77ca2ebbb645
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 24 20:30:19 2011 +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
+
+ Introduce support for multiple scanners.
+
+ Keep all state local and ensure that all resources are freed by sane_exit. Ensure that each function returns only those error codes that are valid according to the SANE standard.
+
+commit 6865eaf6edef0cc5ea30bcc0d72b52189132f4d6
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 24 14:49:06 2011 +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
+
+ Minor fixes to image processing.
+
+commit bc203e8aa125f276ce84498091185482a22d3527
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 24 13:55:35 2011 +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
+
+ Use standard macros for byte swapping.
+
+commit 281f53aa1829a61286232efed7a9d6253cec32d4
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 24 00:39:59 2011 +0200
+
+ Remaining endian safety fixes.
+
+commit 80b7249ebf9c57b60cbc0a25288cc04ba2302b56
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Apr 23 22:42:45 2011 +0200
+
+ Resolve minor thread safety problem.
+
+commit de84f51270f05ead6758d2811a2d36160c412cb1
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Apr 23 19:31:50 2011 +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
+
+ Remove Scanner_ScanSuggest.
+
+commit 3f5592ef8e7eedc0a9ff52b8091f9b41b9c2d56f
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Apr 23 19:04:31 2011 +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
+
+ 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
+
+ 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
+
+ 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
+
+ Fix indentation of debug macros.
+
+commit c0e44738a41c2cd772125d0774772a541dbac7c5
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Thu Apr 21 23:23:18 2011 +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
+
+ 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
+
+ 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
+
+ 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
+
+ Extensive changes to reduce the amount of global variables in mustek_usb2_high.c.
+
+ Might have made MustScanner_SetupScan less readable, though.
+
+commit 9444bf1156f0ab52937d101ba6120ae8685b645b
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 22:54:14 2011 +0200
+
+ Reorganize some MustScanner_* functions.
+
+commit bd7107ca057b1f45313d96114c6376bb5ee7c200
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 22:29:32 2011 +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
+
+ 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
+
+ Fix indentation.
+
+commit df045634cb6a9667c625fb88ecb36bcb58310cda
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 19:14:53 2011 +0200
+
+ Misc fixes.
+
+commit 86f399bd21d7794ba07265b503fea39baa1bb859
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 19:00:30 2011 +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
+
+ Remove histogram stretching for negative images.
+
+commit 4962b35abd7426b7b51a00d907a538a2a38dc859
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 15:56:40 2011 +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
+
+ 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
+
+ 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
+
+ Fix remaining comments.
+
+commit 9226162537706c982405a7469e7003c4d61808e0
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 14:23:46 2011 +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
+
+ Remove USB host type enum.
+
+commit 41ac627e5f4dbd84c082d1756414ef9922c294e7
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 17 13:45:42 2011 +0200
+
+ Get rid of unnecessary forward declarations.
+
+commit da64a1fc1efd8a2e8b8245d6101deb103eea1dc4
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Apr 16 21:37:20 2011 +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
+
+ 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
+
+ Remove MustScanner_GetScannerState.
+
+commit c9516d53656ed5a7e45dc63b1f2202c96269a7ef
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Wed Apr 13 00:22:06 2011 +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
+
+ Further cleanup of mustek_usb2.c.
+
+commit ccce2d4a9a9e2762f8802af051db3f9ed2922ac8
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Apr 10 18:42:05 2011 +0200
+
+ Further cleanup of mustek_usb2.c.
+
+commit 39141a4c0265d97fe4d77084a5a63eaaafd8b8c4
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Wed Mar 30 20:57:54 2011 +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
+
+ Remove vestigial support for custom gamma tables.
+
+commit acf84e0c9474382d78ae85120c2671b5525bd079
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Tue Mar 29 18:25:19 2011 +0200
+
+ Clean up function StopScan.
+
+commit 9158d10df92b7d96bda66d9e601f248c5474259f
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Mar 19 14:55:33 2011 +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
+
+ 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
+
+ Break remaining long lines.
+
+commit 25242ff9c85f06275ca190896fe37b6d8902e122
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Mon Mar 14 00:21:44 2011 +0100
+
+ Clean up mustek_usb2_high.c.
+
+commit c8982a99392cb7c982f12201a978fb4ae5e9e15a
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 13 21:13:26 2011 +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
+
+ 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
+
+ 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
+
+ Further refactoring of Asic_SetWindow.
+
+commit 82a40d5dca84990f41c15998ae89425eaa576ff6
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 13 19:24:17 2011 +0100
+
+ Refactoring of Asic_SetWindow.
+
+commit 93a79af5d3322fd06369c59a7e72f6773f9bed52
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 13 15:54:02 2011 +0100
+
+ Fix indentation.
+
+commit b43f0688dbb309b7841e89074aab00d4aa61c3a2
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 13 15:15:47 2011 +0100
+
+ Use symbolic constants in more places.
+
+commit 3c87b646b5831b24e6d9d13f26f2a08ec83b6cff
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 13 14:48:40 2011 +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
+
+ 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
+
+ Cleaned up firmware state handling.
+
+commit c1f22ef9a9a3be1db26fc03721156a72156870b5
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sat Mar 12 14:18:48 2011 +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
+
+ Refactoring the smaller high level ASIC functions.
+
+commit de5b647c4a47938f186b4661615dfbbd3315636d
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 23:48:21 2011 +0100
+
+ Refactored medium level ASIC functions.
+
+commit 693da258ce3bbcaf5c8ea31b9a08b77af615c0f2
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 18:36:07 2011 +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
+
+ Simplify LLFSetMotorCurrentAndPhase.
+
+commit dea59ee824157d33c64df719869ee937749f5428
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 17:44:11 2011 +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
+
+ 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
+
+ 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
+
+ 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
+
+ Simplyfied Asic_SetShadingTable.
+
+commit 6d5a5123ea3c41ada76e984670b988f847de2145
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 13:12:31 2011 +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
+
+ Some motor table related fixes.
+
+commit 3d1b409a1b526025c52c314f143cedd4d2d5d05f
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 02:28:14 2011 +0100
+
+ Fix a few comments.
+
+commit 88cac5b4ade1ad4ace0da5be843c879e9256c71c
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Fri Mar 11 02:25:43 2011 +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
+
+ 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
+
+ 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
+
+ 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
+
+ Remove DISABLE bit flag constants.
+
+commit 073fe96611477986de970ab0c444f73024ecea33
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Wed Mar 9 01:26:09 2011 +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
+
+ 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
+
+ Remove redundant typecasts.
+
+commit cf6c88bfd1debd288ca563b54120e8ff3903f634
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Wed Mar 9 00:41:21 2011 +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
+
+ 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
+
+ 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
+
+ Remove unused enum FS_NULL.
+
+commit ccde6b063555892ae55ac6c7bfeb8a7d44e02a4e
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Tue Mar 8 18:29:13 2011 +0100
+
+ Remove unused fields of struct GETPARAMETERS.
+
+commit 2be2be76aec39dbef8bbe0501eabaaf0838b3cbc
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Tue Mar 8 18:26:32 2011 +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
+
+ 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
+
+ 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
+
+ Cleanup of Asic_SetWindow
+
+commit 16485d47da8b2d0a829e378afa1443c1ef4839f8
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 19:37:25 2011 +0100
+
+ Optimize motor table calculation.
+
+commit 8821c2882f51d309a7832b362407c46ff11ccd4a
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 19:16:16 2011 +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
+
+ Avoid some unorthodox language constructs.
+
+commit 030c7fa122dccca2f47c949ca46a5972efca20b8
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 16:55:39 2011 +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
+
+ 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
+
+ Simplify DRAM test.
+
+commit bc9252c09464b7ed460bf726dcca3d67f97cd74d
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 15:27:19 2011 +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
+
+ Remove redundant code from mustek_usb2.c.
+
+commit 694a69dcab0dddf2ab12eebba49c66c7ac20fdad
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 14:48:40 2011 +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
+
+ 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
+
+ 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
+
+ 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
+
+ Remove pointless indirection.
+
+commit dedf0ac30d341b9bcbab7fb32050ff953cc73eff
+Author: Jan Hauffa <jhauffa@gmail.com>
+Date: Sun Mar 6 01:03:14 2011 +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
+
+ fujitsu backend v128
+
+ do not ask fi-4340 for serial number
+
+commit 72ecee97ce9db13f148aedf52eb46911212d58e4
+Author: Thomas Klausner <wiz-guest@users.alioth.debian.org>
+Date: Tue Oct 27 20:06:00 2015 +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
+
+ 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
+
+ Add missing include (fixes 315207)
+
+ Both Linux and NetBSD mention this header for use of setsocketopt().
+ DragonFly BSD needs it for the SOL_SOCKET symbol.
+
+commit b0a99cb48938cae5a88c5f37a9a91b60589bad4e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sun Nov 8 18:36:57 2015 +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
+
+ Fix sane-desc testsuite logic
+
+ This fixes test failures for release tarballs (pointed out by Mike
+ Frysinger), clamps down on wildcards and prints a failure message
+ when a test does not succeed.
+
+commit 358cbd7f319c64055cd76fedf62a92500b0c5cf5
+Author: m. allan noah <kitno455@gmail.com>
+Date: Fri Nov 6 21:39:35 2015 -0500
+
+ canon_dr v53 continued
+
+ reorder geometry group options
+ use bg_color to fill missing image data
+
+commit 398610336b6aadf1a0c37390a0a5e2bd926bdfdf
+Author: m. allan noah <kitno455@gmail.com>
+Date: Fri Nov 6 12:19:20 2015 -0500
+
+ canon_dr backend v53
+
+ add swskip option
+
+commit b4bc0eb518ce74ffbfdbe0ce1a14bb404804cd57
+Author: m. allan noah <kitno455@gmail.com>
+Date: Fri Nov 6 11:46:17 2015 -0500
+
+ canon_dr backend v53
+
+ replace image processing methods with sanei_magic
+
+commit 666c9a74ff26fd530b40db28f03b447209cf419e
+Author: m. allan noah <kitno455@gmail.com>
+Date: Thu Nov 5 21:42:29 2015 -0500
+
+ canon_dr backend v52
+
+ improve dropout option handling
+ add software dropout implementation for downsampled modes
+
+commit 9dc79245291f6d4312c5656fff4232b07f70b673
+Author: m. allan noah <kitno455@gmail.com>
+Date: Wed Nov 4 13:49:02 2015 -0500
+
+ canon_dr backend v52
+
+ add must_downsample and must_fully_buffer
+
+commit 01063a769d5431ca83069a9cf240894f893d01f0
+Author: m. allan noah <kitno455@gmail.com>
+Date: Wed Nov 4 13:05:05 2015 -0500
+
+ canon_dr backend v52
+
+ set can_color=1 by default (recent models dont have 'C' in name)
+ enable jpeg for DR-6080
+
+commit 0b822359b3e1798294e30a7ea9cfd6fd9a1e3e85
+Author: m. allan noah <kitno455@gmail.com>
+Date: Wed Nov 4 13:00:10 2015 -0500
+
+ cardscan backend v3
+
+ add USB IDs for newer model 800c
+
+commit 33495ef9b42a783c8f5f2c056ac5699481d3cc7e
+Author: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+Date: Thu Oct 15 12:35:00 2015 +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
+
+ Escape [] for configure help strings
+
+commit 471453d2b825a569d467d60160b0eaaf6746bf67
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 19 20:51:04 2015 +0900
+
+ Drop unused INCLUDES substitution variable
+
+ This addresses the following autoreconf output:
+
+ configure.ac:85: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
+
+ The INCLUDES variable is not referenced anywhere in configure.ac or
+ configure. In addition, none of the Makefile.am files use it.
+
+commit 32c25b8b8235762d9feb5dbd0e81496a56e15569
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 19 21:11:53 2015 +0900
+
+ Fix duplicate automake file variable initialization issue
+
+ This was introduced in 74c00494.
+
+commit f8d35b8d2fdcacc9b664594d141102c2c80ac076
+Author: m. allan noah <kitno455@gmail.com>
+Date: Mon Oct 26 08:34:17 2015 -0400
+
+ Update canon_dr.desc
+
+ We had a few scanners that were reported by email or in tracker
+ tickets, which had not been updated in the desc file.
+
+commit 716340e7320e7f946329ad7a3cd911d676c92f6d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Sat Oct 17 13:55:17 2015 +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
+
+ 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
+
+ changelog for recent work
+
+commit 4a83d9c8a4f4c396f5261d62bf7d2f9b8684eba9
+Author: Rolf Bensch <roben-guest@alioth.debian.org>
+Date: Wed Oct 14 19:04:27 2015 +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
+
+ 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
+
+ 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
+
+ Revert "Prevent use of uninitialized variable"
+
+ This change introduces a variable that shadows the file scope one.
+
+ This reverts commit 45e66aee952dcdada88293901580a111262fc1e9.
+
+commit 36876a83663832cf89fa945737d004ce9b46fb01
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 12 20:55:19 2015 +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
+
+ fix: declaration-after-statement warning
+
+commit 42aa01e4e558e0019df00702579c928f9fd126e6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 12 20:42:01 2015 +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
+
+ Follow getopt_long usage in scanimage.c
+
+ This is on the off chance that getopt_long is not in the system's
+ standard library.
+
+commit 45e66aee952dcdada88293901580a111262fc1e9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: Mon Oct 12 20:47:43 2015 +0900
+
+ Prevent use of uninitialized variable
+
+commit eab8fd457d2b8f38f9425f87258cf4fe42dac15c
+Author: Matteo Croce <matteo@openwrt.org>
+Date: Sun Oct 11 19:50:04 2015 +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
+
+ saned: use getopt_long() for option parsing
+
+ The help message has been adjusted to match getopt_long conventions.
+
+commit 418d1ecea7571d10acd08df2edc7967a91e14b0d
+Author: Matteo Croce <matteo@openwrt.org>
+Date: Sun Sep 20 19:55:37 2015 +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
+
+ saned: parse inetd args in main()
+
+ move argument parsing logic from run_inetd() to main()
+
+commit 2c3cb206ce55a7ac9ff9b479de452a332ba2aa1a
+Author: Matteo Croce <matteo@openwrt.org>
+Date: Sun Sep 20 19:55:35 2015 +0200
+
+ saned: parse standalone args in main()
+
+ move argument parsing logic from run_standalone() to main()
+
+commit 2239d2aaff16964a5d67293f5e4220d235e2c84d
+Author: Alexander Hofmann <alexander.hofmann@new-h.de>
+Date: Tue Oct 6 17:42:05 2015 +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
+
+ 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
+
+ minor release doc update
+
+commit 5e1d45cad7d7933b7120646ae5174ccdc8a9b49f
+Author: m. allan noah <kitno455@gmail.com>
+Date: Sun Oct 4 21:13:39 2015 -0400
+
+ reopen sane-backends 1.0.26git
diff --git a/ChangeLogs/ChangeLog-1.0.3 b/ChangeLogs/ChangeLog-1.0.3
new file mode 100644
index 0000000..c6a6b4d
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.3
@@ -0,0 +1,790 @@
+2000-08-12 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in aclocal.m4 configure NEWS: New version 1.0.3.
+ Updated release date and removed freeze markers.
+
+2000-08-12 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * changed tools/sane-desc.el sane.gif->sane.png
+
+2000-08-10 Henning Meier-Geinitz <hmg@gmx.de>
+ * backend/avision.c: Changed // comment to /* */. This broke
+ compilation on AIX cc, Irix cc and Sun cc.
+
+2000-08-10 Rene Rebe <rene.rebe@myokay.net>
+ * backend/avision.h: some updates + cleanups
+ * backend/avision.c: use of DB () and sane_config_read ()
+ general cleanups (sorry for the big commit - I used Emacs auto-ident
+ for some regions ...)
+
+2000-08-07 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * README.irix: Removed text about library version problems.
+ * README.linux: Added comment about idescsi problems.
+ * ltmain.sh: Changed Irix library version system (from Oliver Rauch).
+ This should fix the library version problems under Irix.
+ * backend/Makefile.in: Added all files in lib/ to LIBLIB. This fixes
+ a bug concerning linking with external frontends.
+
+2000-08-06 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/plustek.c: Removed "const" from function header. This fixes
+ a compilation problem on aix/cc.
+ * configure configure.in: Additional warnings are now disabled by
+ default for the 1.0.3 realease.
+
+2000-08-06 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/hp4200.desc: Added description file for HP 4200 USB
+ scanner.
+
+2000-08-05 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Added link to PROJECTS.
+ * PROJECTS: Removed frontends that are included in the SANE
+ distribution. Added frontends: sanecgi, scanadf. Removed backends
+ Kodak DS-20 (old camera, no specs available, not interested anymore),
+ Logitech (old handscanner, author not interested anymore). Added
+ backends as6e (Artec AS6E), bh (Bell and Howell Copiscan), lhii
+ (handheld scanner support), Mustek USB, nec (NEC PC-IN500/4C),
+ v4l2 (Video for Linux 2). Added/updated information about SANE
+ ports: BeOS, OS/2, win32. Added Information about WinSANE and
+ TWAIN interface for xsane-win32. Added link to AUTHORS and README.
+ Changed format. Added explanation for statuses.
+ * README: Added link to PROJECTS.
+ * README.irix: New file. Information about the library version and
+ jpeg library problems.
+ * backend/as6e.desc: New description file for the Artec AS6E.
+ * backend/bh.desc: New description file for Bell and Howell Copiscan
+ scanners.
+
+2000-08-03 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS: Removed backends that are included in SANE. Updated
+ info for Primax. Added HP 4200.
+
+2000-08-02 Henning Meier-Geinitz <hmg@gmx.de>
+ * NEWS: Updated backend versions.
+ * backend/hp*.c: Changed include statements from #include <sane/...>
+ to #include "sane/...".
+
+2000-08-02 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/v4l.c: Check return value of ioctl() calls. Use DBG()
+ instead of syslog() report progress. Removed redundant check for
+ trailing newline in config file as we are now using
+ sanei_config_read(). Remove ioctl(VIDIOCSYNC), as it hangs on my
+ v4l2 device.
+
+2000-07-31 Henning Meier-Geinitz <hmg@gmx.de>
+ * backend/mustek.*: Update to Mustek backend 1.0-96. Fixed Problem
+ with detecting some three-pass scanners.
+
+2000-07-31 Henning Meier-Geinitz <hmg@gmx.de>
+ * doc/sane.tex: Chapter 4 said, that this was standard version
+ 0 (draft). Changed to 1 and removed "(draft)".
+
+2000-07-31 Henning Meier-Geinitz <hmg@gmx.de>
+ * sanei/sanei_DomainOS.c sanei/sanei_ab306.c sanei/sanei_codec_ascii.c
+ sanei/sanei_codec_bin.c sanei/sanei_config.c sanei/sanei_config2.c
+ sanei/sanei_constrain_value.c sanei/sanei_init_debug.c
+ sanei/sanei_load_values.c sanei/sanei_net.c sanei/sanei_pa4s2.c
+ sanei/sanei_pio.c sanei/sanei_save_values.c sanei/sanei_scsi.c
+ sanei/sanei_thread.c sanei/sanei_wire.c sanei/test_wire.c: Changed
+ include statements from #include <sane/...> to #include "sane...".
+ * PROBLEMS: Updated Mustek entry.
+ * TODO: Updated some entries that are done.
+ * backend/avision.c backend/plustek.c: Changed include statements from
+ #include <sane/...> to #include "sane...".
+
+2000-07-30 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.desc: Change Parallel to Parport in description
+
+2000-07-30 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * changed all <config.h> to "config.h" in lib/*.c
+
+2000-07-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.*: Update to Mustek backend 1.0-95. Changed from
+ wait() to waitpid() and removed unused code.
+ * configure configure.in backend/m3096g.c backend/sp15c.c: Reverted
+ the V_REV patch. V_REV should not be used in backends.
+
+2000-07-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure configure.in: Add V_REV to CPPFLAGS (only V_MAJOR and
+ V_MINOR were defined until now).
+ * doc/.cvsignore: Added sane-coolscan.5.
+
+2000-07-29 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/sp15c.c backend/m3096g.c: Replace fgets with
+ sanei_config_read, return V_REV as part of version_code string
+ (patch from Randolph Bentson).
+
+2000-07-29 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Changed include statements from #include <sane/...>
+ to #include "sane...".
+
+2000-07-29 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/GUIDE: Added some comments about portability and
+ documentation.
+ * backend/abaton.c backend/agfafocus.c backend/apple.c
+ backend/canon.c backend/coolscan.c backend/dc210.c backend/dc25.c
+ backend/dll.c backend/dmc.c backend/microtek.c backend/microtek2.c
+ backend/microtek2.c backend/mustek_pp.c backend/net.c backend/pint.c
+ backend/pnm.c backend/qcam.c backend/ricoh.c backend/s9036.c
+ backend/sane_strstatus.c backend/sharp.c backend/snapscan.c
+ backend/st400.c backend/stubs.c backend/tamarack.c backend/v4l.c:
+ Changed include statements from #include <sane/...> to
+ #include "sane...".
+ * backend/avision.c backend/dc25.c: Use DBG(0, ...) instead of
+ fprintf (stderr, ...)
+ * backend/avision.c backend/canon-sane.c backend/coolscan.c
+ backend/dc25.c backend/microtek.c backend/microtek2.c
+ backend/st400.c: Use sanei_config_read() instead of fgets().
+ * backend/coolscan.desc backend/microtek.desc backend/microtek2.desc
+ backend/st400.desc: Added :interface and :manpage entries.
+ * backend/nec.desc: Status is beta now (was: new). Fixed typo.
+ * doc/canon.README: Removed, because the information is included in
+ the manpage now.
+ * doc/Makefile.in: Added sane-coolscan to list of mapages to install.
+ * README: Added Link to coolscan manpage.
+ * backend/mustek.*: Update to Mustek backend 1.0-94. Fixed the
+ #include <sane/...> bug.
+
+2000-07-29 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Changed the include statements for SANE includes
+ from #include <...> to #include "..."
+
+2000-07-28 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/aretc.c: Corrected sane_close() bug. Converted to use
+ sanei_config_read() instead of fgets().
+ * backend/artec.desc: Changed interface entry to "Parport" vs "Parallel"
+
+2000-07-28 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * ltmain.sh: Added underscore to sed expression for removing
+ backendname from soname (needed for libsane-mustek_pp).
+ * sane.lsm: Added keywords for new backends.
+ * lib/isfdtype.c: Added implementation for platforms that lack
+ isfdtype() (mostly from Olly Betts).
+ * backend/v4l.desc: Activated man page entry.
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-93. Fixed color scanning for Paragon 600 II N firmware 1.02.
+ Fixed possible segfault in sane_control_option() when info is 0.
+ Removed some compiler warnings.
+ * NEWS: Updated Mustek backend version, added Artec, fixed typo
+ * doc/Makefile.in doc/sane-snapscan.man doc/sane-canon.man README
+ backend/snapscan.desc backend/canon.desc backend/.cvsignore:
+ Added manpage for canon and snapscan backends. Added :interface
+ entry for canon.
+ * backend/canon-sane.c: Fixed possible segfault in
+ sane_control_option() when info is 0.
+
+2000-07-22 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/v4l.c: Bugfix: Avoid crashing in
+ sane_control_option() when last param is NULL.
+
+2000-07-25 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Updated to v0.5.14. Added "Negative" mode as option
+ even when in color/greyscale modes. Fix sane_close() bug. Fixed bug
+ in sane_get_option_descriptor that allowed invalid option number.
+ Changed numerous int variables to size_t to eliminate warnings.
+ Changed various elements in ARTEC_Scanner structure to SANE_Int
+ instead of int. Replaced all fprintf() statements with DBG().
+ * backend/artec.desc Added interface entries.
+
+2000-07-26 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed problem with Perfection610 scanner.
+ The variable s->color_shuffle_line was not correctly initialized.
+ * backend/epson.desc: Updated version number
+
+2000-07-26 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * added info about variable scsi buffer sizes defined by backends
+ umax, mustek, sharp (via sanei_scsi_open_extended()) to
+ man sane-scsi
+
+2000-07-25 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/snapscan.c: Use DBG(0, ...) instead of fprintf (stderr, ...)
+ * backend/abaton.c backend/agfafocus.c backend/apple.c backend/dc210.c
+ backend/dll.c backend/dmc.c backend/microtek2.c backend/pint.c
+ backend/qcam.c backend/ricoh.c backend/s9036.c backend/snapscan.c
+ backend/tamarack.c: Use sanei_config_read instead of fgets.
+ * backend/dc210.c backend/microtek.c backend/pnm.c: Added
+ #include <sane/config.h>.
+ * backend/dc25.c backend/m3096.c backend/m3096g.c backend/sp15.c
+ backend/st400.c: Moved #include <sane/config.h> to the beginning.
+ * AUTHORS: Changed agfa to agfafocus.
+
+2000-07-25 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c hp-scl.c hp-option.c hp-handle.c hp-accessor.c
+ remove inline stuff
+
+2000-07-25 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure.in configure include/sane/config.h.in
+ include/sane/sanei_backend.h: Moved test for u_int* to configure.
+ * include/sane/sanei_debug.h: Remove #warning (Irix compiler doesn't
+ like this)
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-92. Changed linedistance correction for MFS-8000SP. Fixed
+ margin positions and removed warning for MFS 6000CX. Warning is
+ printed in debug level 0 again. Removed test for gamma length.
+ Fixed (partly) ADF handling. Man page update. More details in
+ mustek.CHANGES.
+ * NEWS: updated for new Mustek backend version.
+
+2000-07-20 Peter Kirchgessner <peter@kirchgessner.net>
+ * backend/hp.c: use sanei_config_read() instead of fgets
+ * backend/hp-scl.c: Dont write chars < 32 to DBG
+
+2000-07-20 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c: removed fgets-call + minor bugfix
+ * backend/sharp.desc: added entry ":manpage"
+ * sanei/sanei_scsi.c: added missing dummy function
+ sanei_scsi_req_flush_all_extended
+
+2000-07-18 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure.in configure: Fixed --enable-warnings to work as
+ advertised.
+
+2000-07-18 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure.in configure include/sane/config.h.in lib/Makefile.in
+ lib/getenv.c lib/isfdtype.c lib/vsyslog.c
+ sanei/sanei_init_debug.c: OS/2's getenv() is useless, OS/2,
+ Solaris and AIX is missing isfdtype() and AIX is missing
+ vsyslog(). Implement replacement functions.
+
+2000-07-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c: Replace C++ comment
+ with C comment.
+
+2000-07-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * include/sane/sanei_backend.h: Replace C++ comment with C comment.
+
+2000-07-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/musteka4s2.desc: Removed. Now that the mustek_pp
+ backend is part of SANE musteka4s2 is no longer neccessary.
+ If somebody really wants to use the old musteka4s2 sources
+ he will find a link on the mustek_pp WWW page.
+
+2000-07-16 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * backend/mustek_pp.c: Replaced fgets() with sanei_config_read()
+
+2000-07-16 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * include/sane/sanei_debug.h: Fix typo.
+
+2000-07-15 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Replaced fprintf() with DBG()
+
+ * backend/epson.desc: updated version number
+
+2000-07-15 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/dc210.c: Replaced fprintf (stderr, ...) by DBG ().
+
+2000-07-15 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * doc/Makefile.in doc/sane-dc210.man doc/sane-v4l.man
+ doc/.cvsignore: Added manpages for dc210 and v4l. These
+ are just standard manpages. Please check and update them.
+
+ * README: Added dc210, v4l and mustek_pp entries.
+
+2000-07-15 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-90. Fixed linedistance-handling for Paragon 8000SP. Fixed
+ mustek.conf port entry. Updated man page (parallel port
+ scanners and 600 II N).
+
+ * NEWS: Updated (mustek backend version 1.0-90)
+
+ * backend/dll.conf: Commented out mustek_pp on behalf of the
+ maintainer
+
+ * doc/.cvsignore: added sane-mustek_pp.5, sane-plustek.5 and
+ sane-st400.5
+
+2000-07-15 Andreas Rick <andreas.rick@free.fr>
+
+ * backend/coolscan.c: added missing initialization in
+ coolscan_read_data_block()
+
+2000-07-13 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * AUTHORS backend/dll.conf backend/Makefile.in backend/mustek_pp.c
+ backend/mustek_pp.desc backend/mustek_pp.h backend/mustek_pp.conf
+ doc/Makefile.in doc/sane-mustek_pp.man: New backend for
+ ScanExpress 6000 P, ScanMagic 4800 P, 600 III EP Plus, ScanExpress
+ 600 SEP and MD9848 from Jochen Eisinger.
+
+ * backend/snapscan-310.c backend/snapscan-scsi.c
+ backend/snapscan-sources.c backend/snapscan-sources.h
+ backend/snapscan-utils.c backend/snapscan.c backend/snapscan.desc
+ backend/snapscan.h: New snapscan backend version dated 20000514
+ from Steve Underwood.
+
+ * backend/microtek2.h backend/microtek2.c backend/microtek2.desc:
+ Add support for ScanMaker X6USB. Patch from Oliver Neukum.
+
+ * README.os2 configure.os2 include/sane/sanei_backend.h
+ sanei/os2_srb.h sanei/sanei_init_debug.c backend/dll.c
+ backend/net.c frontend/saned.c : Some of the OS/2 patches from
+ Yuri Dario.
+
+ * frontend/saned.c: Correct cancel handling in saned. Patch from
+ Jochen Eisinger.
+
+2000-07-12 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
+
+ * frontend/scanimage.c, doc/scanimage.man: Support for
+ environment variable SANE_DEFAULT_DEVICE.
+
+2000-07-11 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
+
+ * backend/st400.c, backend/st400.conf, backend/st400.h,
+ doc/sane-st400.man: new files
+ * backend/st400.desc: updated information
+ * README, backend/Makefile.in, doc/Makefile.in: added st400 backend
+ * AUTHORS: added myself as maintainer of st400 backend
+
+2000-07-09 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/sane-hp.man: Updated manual page (scantype --> scan source)
+
+2000-07-09 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-handle.c, hp-scl.c, hp-scl.h, hp.c, hp.h, hp-option.c
+ hp-option.h: Add wait for front panel button
+
+ * backend/hp.desc: Changed version to 0.88
+
+2000-07-09 Andreas Rick <andreas.rick@free.fr>
+
+ * AUTHORS: added myself as maintainer of the coolscan backend
+
+ * README: added Coolscan page link
+
+ * doc/sane-coolscan.man: first version of Coolscan manpage
+
+2000-07-09 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * AUTHORS: added myself as maintainer of the Plustek backend
+
+ * README: added Plustek manpage entry
+
+ * backend/plustek.desc: updated description
+
+ * backend/plustek.c backend/plustek.h backend/plustek-share.h
+ backend/plustek.conf: added Plustek backend code
+
+ * backend/Makefile.in doc/Makefile.in backend/dll.conf:
+ added plustek entries
+
+ * doc/sane-plustek.man: added manpage for Plustek backend
+
+2000-07-09 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_thread.c: Add required include files to get this to
+ compile almost without warnings on Unix.
+
+ * frontend/Makefile.in frontend/scanimage.c frontend/stiff.h
+ frontend/stiff.c doc/scanimage.man: Add 16 bit support and new
+ option --format to change file format. Makes it possible to save
+ uncompressed TIFF images. Patch from Peter Kirchgessner.
+
+ * backend/microtek2.c: Add ScanMaker X6USB identifier. Patch from
+ Oliver Neukum.
+
+2000-07-07 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * acinclude.m4 configure.in aclocal.m4 configure: New autoconf
+ test SANE_V4L_VERSION.
+
+ * AUTHORS: Added myself as CVS repository maintainer.
+
+ * include/sane/sanei_debug.h sanei/sanei_init_debug.c: Send debug
+ messages to syslog if stderr is a socket.
+
+2000-07-06 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * configure configure.in: Change "you're" to "you are" to avoid
+ confusing emacs font-lock mode. Regenerated configure.
+
+ * backend/v4l.c: Fix sane_close() bug.
+
+2000-07-02 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.desc added interface entries
+
+ * backend/hp.c, backend/hp-handle.c
+ ADF-support for ScanJet IIp
+ Return error SANE_STATUS_NO_DOCS if no paper in ADF
+
+2000-06-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* Update to Mustek backend 1.0-89. Fixed "scan
+ slider doesn't return to start" bug. Details in
+ backend/mustek.CHANGES.
+
+ * backend/nec.desc backend/dc25.desc backend/m3096g.desc: Added
+ :interface entries. Updated email adderess.
+
+2000-06-28 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c Fixed sane_close() - when the scanner still had
+ data to deliver at the time the scanner was closed, it was impossible
+ to restart any frontend software. This also caused scanimge -T to
+ work just once.
+
+2000-06-28 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* Update to Mustek backend 1.0-88. Small bugfixes.
+ Details in backend/mustek.CHANGES.
+
+ * backend/sp15.desc backend/dc25.desc backend/m3096g.desc: Added
+ :interface entries.
+
+2000-06-28 Oliver Rauch
+ * Updated umax backend to version 1.0.21
+ take a look at backend/umax.CHANGES for details
+ - updated umax.desc, umax manpage
+
+2000-06-28 Abel Deuring
+ * backend/sharp.esc: added "interface" entries
+
+2000-06-28 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/pint.c: fixed sane_close bug
+
+ * backend/microtek.c: fixed compilation problem with NDEBUG
+ defined
+
+2000-06-27 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/lhii.desc: added :interface
+ * README.linux: added reference to Linux SCSI documentation (from
+ Abel Deuring)
+
+2000-06-26 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/musteka4s2.desc: Added all more scanners and
+ :interface entries
+ * backend/sagitta.desc: Removed on behalf of the author. Nobody
+ has showed interest in this very old (and rare) scanner over
+ the years. It's difficult to keep it up-to-date because a kernel
+ module is neccessary. Nobody volunteered to take over
+ maintainership.
+ * backend/tamarack.c: Changed all fprintf to DBG calls.
+
+2000-06-26 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c and include/sanei/sanei_scsi.h:
+ new functions sanei_scsi_cmd2 and sanei_scsi_req_enter2
+ for proper handling of "unusual" SCSI commands lengths
+ * backend/canon-scsi.c: call sanei_scsi_cmd2, where necessary
+
+2000-06-25 René Rebe <rene.rebe@myokay.net>
+ * backend/avision.c: fixed sane_close () bug
+ * backend/avision.desc: added some more scanners
+
+2000-06-25 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-87. Fixed gamma correction for 1200 A3 Pro. Fixed dependancy
+ of mustek.h on sane-backends.h. Fixed debug output bug in
+ fix_linedistance_se. Updated documentation and mustek.conf.
+
+ * README: Added v4l and fixed typo.
+
+2000-06-25 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc - Changed Parallel to Parport
+
+2000-06-25 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * doc/Makefile.in doc/sane-s9036.man doc/sane-tamarack.man
+ doc/sane-ricoh.man doc/sane-avision.man doc/xcam.man .cvsignore:
+ Added manpages for these backends and xcam.
+
+ * frontend/xcam.README: removed because manpage now exists.
+
+ * backend/plustek.desc backend/qcam.desc backend/ricoh.desc
+ backend/s9036.desc backend/tamarack.desc backend/avision.desc
+ backend/st400.desc: Updated :interface and :manpage information.
+
+ * README: Updated information regarding documentation.
+
+ * backend/tamarack.c: Changed printf(...) to fprintf(stderr,...)
+ on behalf of the maintainer.
+
+2000-06-25 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/Makefile.in backend/v4l.desc backend/v4l.c: V4L backend
+ corrections. Corrected dependencies. Removed () in version
+ number, as this backend is now included in the distribution. More
+ debug info and use sanei_config_read() instead of fgets() in
+ backend.
+
+2000-06-23 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc - added :interface information
+
+2000-06-23 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * AUTHORS: Added Juergen G. Schimmer as author of the v4l backend.
+
+ * configure.in backend/Makefile.in backend/dll.conf
+ backend/v4l-frequencies.h backend/v4l-grab.h backend/v4l.c
+ backend/v4l.conf backend/v4l.desc backend/v4l.h: Added Video4Linux
+ backend from Juergen G. Schimmer.
+
+2000-06-22 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * include/sane/sanei_pa4s2.h sanei/sanei_pa4s2.c Makefile.in
+ backend/Makefile.in sanei/Makefile.in: Added interface for
+ Mustek parallel port scanners (from Jochen Eisinger
+ <jochen.eisinger@gmx.net>). This will be used by the Mustek
+ parallel port backend mustek_pp (coming soon).
+
+ * tools/sane-desc.el backend/template.desc.: Added support for
+ "interface" column in sane-desc.el. The new keyword is
+ ":interface", examples in "template.desc.". All maintainers
+ should update their *.desc files.
+
+ * backend/mustek.desc abaton.desc agfafocus.desc apple.desc
+ dc210.desc dmc.desc qcam.desc ricoh.desc s9036.desc snapscan.desc
+ tamarack.desc: added interface entry for the Mustek and
+ unmaintained backends.
+
+ * backend/abaton.c apple.c qcam.c tamarack.c: fixed sane_close ()
+ bug for the unmaintained backends.
+
+2000-06-18 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-86. Added support for Mustek Paragon 1200 A3 pro (1, 8, and 24
+ bit/pixel; calibration doesn't work yet). Removed some remainings
+ of color lineart and halftone support. More debugging
+ output. Fixed bug in sane_control_option (option was not checked
+ for negative values). Fixed bug in sane_close. General code
+ cleanup. Details in backend/mustek.CHANGES.
+
+2000-06-13 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.*: Invert image when scanning negative off the TPU.
+ Initialize optial_res to 0. Fix sane_close() bug. Make threshold
+ only active when halftoning is off and scan depth is 1. Make
+ film type only active when TPU is selected. Scanner based
+ color correction. More constraints for GUI. Cleanup in option
+ handling.
+
+2000-05-21 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.*: Update to Mustek backend 1.0-85. Added double
+ buffering. This may improve scan performance a bit. Removed
+ dead code (in dev_read_start). Changed linedistance correction
+ handling. Paragon 12000 SP color mode might work now with all
+ firmware versions. Details in backend/mustek.CHANGES.
+
+2000-05-27 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.[ch] Support for multiple EPSON scanners added
+ Fixed Perfection 610 color problem
+
+2000-05-26 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: Fixed a bug in the Linux queue handling,
+ as suggested by Simon Munton
+
+2000-05-22 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * ltconfig: Added option "-X" to ldconfig for linux-gnu
+ this solves the problem with link /usr/local/libs/sane/libsane.so.1 => libsane-umax.so.1
+
+2000-05-21 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * README: Added quick install. Removed list of supported platforms
+ because it is unknown how accurate it is at the moment. Added
+ description for --enable-scsibuffersize (partly from Abel
+ Deuring). Removed operating system specific information. See
+ README.* files instead. Added comment to read the PROBLEMS file.
+ Added/changed list of available documentation. Added comment on
+ possible causes for the frontends not detecting scanners. Added
+ comment on tools directory. Headings should be easier to find now.
+
+ * README.aix: New file. Extracted from README.
+
+ * README.hp-ux: New file. Extracted from README.
+
+ * README.linux: New file. What is needed to get SCSI scanners to
+ work under Linux. Workaround for Adaptec 1542 users (from Abel
+ Deuring)
+
+2000-05-18 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-82. Added shrinked image fix to ScanExpress 12000SP models
+ <= v2.0. Fixed remaining sane_cancel problems (in non_blocking
+ mode). Fixed color stripes and segmentation fault for Paragon
+ MFS-12000SP 1.00 (at least for me). Some minor debug output
+ additions and changes. Look at backend/mustek.CHANGES for more
+ details.
+
+ * doc/.cvsignore: Added missing sane-sharp.5
+
+2000-05-07 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-81. Added transparency adapter (TA) support for all Mustek
+ scanners. Fixed shrinked image bug for the ScanExpress 6000SP.
+ Removed unused options (3-pass scanners and 600 II N). Scan
+ source selection now shows only the options currently available.
+ Fixed a bug concerning the ADF handling. sane_init () now uses
+ sanei_config_read () and sanei_config_get_string () instead of
+ its own functions. Man page and .desc update. Look at
+ backend/mustek.CHANGES for more details.
+
+2000-04-27 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.* Some code cleanup, added support for GRB
+ images and did some Gamma correction fixes for the Perfection
+ 610.
+
+2000-04-27 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * include/sane/sanei_debug.h: Bugfix. Make sure the source
+ compiles even if NDEBUG is defined.
+
+2000-04-23 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-80. Adjusted scan areas for most scanners. Added transparency
+ adapter support for all Paragon legal size scanners. Fixed color
+ mode for the Paragon MFS-8000SP (gamma problems). New system to
+ set buffersize using sanei_scsi_open_extended. Removed (maybe
+ temporarily) support for SCSI queue. Fixed shrinked image bug with
+ the ScanExpress 12000SP. Fixed positional options detection
+ (from mustek.conf). Added option "buffersize". Adjusted
+ mustek.conf template to more reasonable defaults. Lots of
+ small fixes and more complete debugging output. Look at
+ backend/mustek.CHANGES for more details.
+
+2000-04-15 Andreas Rick <andreas.rick@free.fr>
+
+ * backend/coolscan.* Update coolscan backend to version 0.4.3.
+ This version includes support for the newer Nikon Coolscan
+ models LS-30 and LS-2000. Dustremoval is not yet included.
+
+2000-04-09 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-79. Changed version system. Linedistance correction for
+ the 600 II N is fixed. Added output of scanning time. Rewrite
+ of the resolution encoding for the 3-pass scanners. Look at
+ backend/mustek.CHANGES for details.
+
+2000-04-05 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * Updated umax backend to version 1.0.2-build-20
+ take a look at backend/umax.CHANGES for details
+
+2000-04-05 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * frontend/xscanimage.c, frontend/preview.c: Fixed a small bug
+ concerning 3-pass scanners. gdk_input_add() was called three times
+ without a preceding gdk_input_remove().
+
+ * frontend/scanimage.c: Fixed a bug where the scan was cancelled
+ after a test for low mem even if enough memory is available. This
+ probably only affected 3-pass scanners.
+
+2000-04-02 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.*: Update to Mustek backend 0.78. Fixed several
+ small bugs and spelling errors. Adjusted scanner names to Mustek
+ style. Inquiry is even more verbose now. Look at
+ backend/mustek.CHANGES for details.
+
+2000-03-27 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.c backend/epson.desc: Removed
+ status request for push button. This caused an
+ error on older scanners. Fixed a few typos in
+ the .desc file and added GT-9000 scanner.
+
+2000-03-23 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+ * updated umax backend to version 1.0 build 19
+ for details read backend/umax.CHANGES
+
+2000-03-22 Karl Heinz Kremer <khk@khk.net>
+ * backend/epson.*: Several fixes for minor problems.
+ Fixed function level A4 scanners (line mode instead
+ of byte mode). Removed unnecessary free() calls.
+ Use extended status for recognize warm up. This fixes
+ problems with TPU and occasional crashes during startup.
+ Added D1 level for Perfection 610.
+ Added first version of support for set threshold and set
+ zoom.
+
+2000-03-19 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.c: Updated backend to new version 0.76. Fixes for
+ 600 II N (color stripes, cancel handling), ScanExpress ("XC06" is
+ now recognized), MFS-1200SP (linedistance correction in high
+ resolutions, patch from Andreas Beck), STORE makros (patch from
+ Norbert Mueller), ADF (patch from Joerg Anders), firmware
+ identification (patch from Marco G. Salvagno), sane_cancel (scan
+ will now be cancelled immediately, no new sane_read necessary),
+ sane_get_option_descriptor (test for option < 0). Added a more
+ verbose inquiry output. Adjusted debug levels. Changed the model
+ names (sane.model) to reflect the real scanner names. Removed some
+ compiler warnings. Added new maintainer.
+
+ * backend/mustek.desc: Added link to backend homepage. Added all
+ the different scanner names used for the same model. Added Trust
+ scanners known to work. Removed firmware versions and scanner ids.
+
+ * backend/mustek.CHANGES: New file. More detailed changes for the
+ Mustek backend.
+
+ * doc/sane-mustek.man: Documentation for the 600 II N linedistance
+ options. Added warning from PROBLEMS. Added link to backend homepage.
+ Changed supported scanners list (see mustek.desc). Added more bug
+ entries.
+
+ * AUTHORS: Added new maintainer and email address
+
+2000-03-18 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/Makefile.in tools/libtool-get-dll-ext: New script to
+ detect shared library endings without using 'rev' which is missing
+ on some platforms.
+
+2000-03-14 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_scsi.c: Test for 'USE == LINUX_INTERFACE' instead of
+ defined(__linux__).
+
+2000-03-14 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * new version of ths Sharp backend (0.31): added support for the
+ JX350 (Thanks to Shuhei Tomita for providing the patch)
+
+2000-03-07 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * Makefile.in (lsm) sane.lsm sane-1.0.1.lsm: New target to
+ generate Linux Software Map (LSM) entry from template. Remove old
+ file.
diff --git a/ChangeLogs/ChangeLog-1.0.4 b/ChangeLogs/ChangeLog-1.0.4
new file mode 100644
index 0000000..924bc86
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.4
@@ -0,0 +1,728 @@
+************************ Release of sane-backends 1.0.4 **********************
+
+2000-12-22 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure configure.in: Changed version to 1.0.4 and package to
+ sane-backends (from Oliver Rauch <Oliver.Rauch@Wolfsburg.DE).
+ * sane.lsm Removed (renamed to sane-backends.lsm).
+ * sane-backends.lsm New file. Package name is sane-backends instead
+ of sane and added additional maintainer: Oliver Rauch (from
+ Oliver Rauch <Oliver.Rauch@Wolfsburg.DE).
+
+2000-12-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Some points about OS/2 compilation problems.
+
+2000-12-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: More details for net/saned problems.
+
+2000-12-16 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * TODO: removed entry about net.c seg-faulting when saned isn't
+ loaded or timed-out
+
+2000-12-16 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure configure.in: Disable warnings by default for release.
+ * sanei/sanei_wire.c: Fixed typo.
+
+2000-12-16 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * sanei/sanei_wire.c: added test for negative parameter to memcpy()
+
+2000-12-15 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * fixed wrong options in sane-plustek.man
+
+2000-12-12 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * corrected backend version in umax.desc
+
+************************** Code freeze for SANE 1.0.4 ** *********************
+
+2000-12-12 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * NEWS: Updated/corrected version numbers of backends.
+
+2000-12-10 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * doc/sane-scsi.man: Small changes/updates concerning Linux
+ 2.2. Updated entries about Adaptec cards, NCR53c400/Domex 3181
+ cards, NCR 810 cards. Removed direct links to some backends.
+ * doc/sane-snapscan.man: Added link to new snapscan website.
+
+2000-12-10 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.c backend/mustek.desc backend/mustek.CHANGES:
+ Fixed wrong comment in encode_resolution. Added missing test for
+ return status in sane_start. Fixed wrong calculation of tlx and
+ tly for Pro series scanners. Increased version number.
+
+2000-12-09 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed user defined gamma curve for
+ inverted images. When scanning negatives the gamma curve
+ was applied incorrectly. Fixed debug output for user defined
+ gamma curves - no [epson] in between values anymore.
+
+2000-12-09 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/sane-hp.man, backend/hp.desc
+ Add HP ScanJet 6390C to list of supported scanners
+
+2000-12-07 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated. Removed entries about plustek comment problembelm
+ and libsane.la. Added entry about disabling local scanning.
+
+2000-12-07 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek-share.h backend/plustek.h backend/plustek.c
+ removed warning conditions
+ fixed a bug that causes wrong frontend displays
+ fixed problem when driver returns error during read
+
+2000-12-05 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * NEWS: Updated backend versions. Added point about compilation fixes
+ on Irix and FreeBSD.
+ * backend/mustek.c backend/mustek.desc backend/mustek.CHANGES:
+ Fixed problem with lamp control of SE scanners and reduced
+ length of scan area for Paragon 1200 SP PRO. Removed warning for
+ this scanner. Increased version number.
+
+2000-12-05 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated. Added point about plustek-share.h using c++ comment
+ and reminder to check config.in.h. Removed entriy about as6e.c stat
+ result check.
+ * backend/as6e.c backend/as63.h: Comitted patch from Eugene Weiss
+ <eweiss@sas.upenn.edu>. Fixes: Use only DBG (no printfs). Check result
+ of stat. Add GPL header.
+
+2000-12-05 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek-share.h
+ cleanup
+
+2000-12-05 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-handle.c
+ - Change SCL_UNLOAD to SCL_CHANGE_DOC (bug from copying code)
+
+2000-12-04 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated. Added entries about as6e stat problems and addition to
+ sanei_scsi.c from FreeBSD ports.
+
+************************* snapshot-2000-12-04 *******************************
+
+2000-12-04 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, hp-handle.c, hp.desc
+ - fix problem with ADF support on 6350C (and maybe others)
+
+2000-12-04 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * removed usage of gettext, problem with -lintl should be solved:
+ - removed usage of gettext from lib/getopt.c
+ - removed test for libintl/gettext in configure[.in]
+ - removed intllib from frontend/Makfile.in
+ * updated umax.desc
+
+2000-12-03 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.*: Version 0.1.38
+ Removed changes regarding 12/14 bit support because of SANE
+ feature freeze for 1.0.4.
+ The following fixes are in the software compared to the version
+ prior to the feature freeze:
+ - refresh UI after a change in the scan mode setting (was not updated
+ when going from Binary to Gray or vice versa)
+ - Read values for "line distance" from the scanner instead of using
+ hardcoded values. This makes sure the backend always uses the correct
+ values regardless of firmware version.
+ - Fixed an "off-by-one" error in the color reordering routine that
+ caused weird artifacts in some instances.
+
+2000-12-03 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed off-by-one in color reordering
+
+2000-12-02 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.*: Read information about optical resolution
+ and line distance from scanner instead of hardcoded values.
+ Add support for color depth > 8 bits per channel.
+ (can use 12, 14 and 16 bits per channel)
+ EPSON backend is now version 0.36
+
+2000-11-30 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * changed backend/Makefile.in:
+ wrong old installation of libsane.la
+ $(INSTALL_PROGRAM) libsane.la $(libdir)/libsane.la
+ to this:
+ $(LIBTOOL) $(MINST) $(INSTALL_PROGRAM) libsane.la $(libdir)/libsane.la
+
+2000-11-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * README.irix: Removed. Problem with libjpeg is solved.
+ * TODO: Updated. Removed hpoj addition. Added snapscan link. Added
+ entry about net backend segfaulting if using net:localhost. Removed
+ artec O_SYNC problem. Removed Irix jpeg problem. Removed PTAL
+ addition.
+ * doc/saned.man: Added paragraph about xinetd (from Matt Mozur
+ <matt.mozur@sourwood.net>). Removed links to backends, added
+ sane-"backendname" instead.
+ * doc/sane-net.man: Added comment about segfaults if scanning
+ on localhost.
+ * sanei/sanei_scsi.c: Added missing DBG_INIT (from FreeBSD ports).
+
+2000-11-30 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c backend/plustek.desc backend/plustek-share.h
+ backend/plustek.h doc/sane-plustek.man:
+ changed to version 0.38 - document update, minor bugfixes
+
+2000-11-30 Chris Pinkham <cpinkham@infi.net>
+
+ * artec.c: removed O_SYNC for posix compatibility, converted variable
+ to unsigned char to get rid of overflow error. Changed version
+ to 0.5.15.
+
+2000-11-30 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * changed sane-config.in again:
+ sane-config --libs has to print all libs
+ that the sane libs depend on.
+ This is not needed for shared libs and that
+ was the reason why I removed all libs but "-lsane".
+ But when linking against static sane libs we need
+ to know about all necessary libs.
+
+************************* snapshot-2000-11-28 *******************************
+
+2000-11-28 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * added SANE_CHECK_JPEG to aclocal.m4 and configure.in
+ (test routine by henning Meier Geinitz)
+
+************************* Feature freeze for SANE 1.0.4 *********************
+
+2000-11-27 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * NEWS: hp-backend version is 0.92
+
+2000-11-27 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * backend/umax.c: corrected wrong BUILD (25->24)
+
+2000-11-26 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Added Karsten Festag as maintainer of microtek2.
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-100. Added option fast-preview that tries to use the fastest
+ mode available for preview. This is supported for the 3-pass
+ scanners (was option "preview in gray") and some of the
+ ScanExpress scanners (6000 SP, 12000 SP Plus). Use #include
+ "../include/sane/...". Put option force-wait into mustek.conf
+ (disabled). Removed block mode for Paragon 6000 SP and 8000 SP.
+ Code cleanup. More debug output. Details in backend/mustek.CHANGES.
+ * doc/.cvsignore: Added sane-as6e.5 and sane-nec.5.
+
+2000-11-26 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.desc, doc/sane-hp.man
+ Add descriptions for PTAL support
+
+ * backend/hp.c
+ If PTAL-support requested, write warning about unsupported PTAL
+ with DBG(0,... instead of DBG(1,...
+
+2000-11-25 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure configure.in acinclude.m4 aclocal.m4
+ include/sane/config.h.in: Added test for PTAL library and headers
+ (patch from David Paschal <paschal@rcsis.com>). Some reformating of
+ the output of configure --help.
+
+ * backend/GUIDE: Updated entry about #include.
+
+2000-11-24 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Removed authors of xscanimage and xcam (now in
+ sane-frontends).
+ * README.unixware2, README.unixware7: X-frontends are no longer
+ included. Removed comments and sourcecode of "rev" (not supported/used
+ in backends/Makefile anymore).
+ * sane.lsm: X-frontends are no longer included. Used blanks instead of
+ tabs.
+ * doc/scanimage.man: Removed links to backends, added generic link
+ instead.
+ * doc/.cvsignore frontend/.cvsignore: X-frontends are no longer included.
+
+2000-11-24 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * changed configure.in, configure frontend/Makefile.in
+ and backend/Makfile.in:
+ The shared libraries required by the backends are linked to
+ the backends (they have been linked to the frontends before).
+ Only libintl is linked to the frontend.
+ * changed tool/sane-config.in, sane-config --libs => "-lsane",
+ all other libraries are linked to the backend libs now
+
+2000-11-24 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * doc/scanimage.man doc/saned.man: updated description of password
+ file
+ * sanei/sanei_auth.c frontend/saned.c frontend/scanimage.c: replaced
+ index() by strchr(). Changed style of password file
+ * backend/net.c: the net backend now prepends net:host: to the
+ resource before calling the auth_callback function
+
+2000-11-23 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * removed doc/xcam.man, doc/xscanimage.man and
+ updated doc/Makefile.in
+ * changed configure.in and frontend/Makefile.in,
+ "-lintl" is not added to @LIBS@ any more, @INTLLIBS@
+ is defined instead now, this is necessary because "-lintl"
+ has to be added to the frontends and not to a backend and
+ sane-config --libs must not list it.
+ * Added "Introduction" to README that tells about
+ the new X-frontend package
+ * removed gimp and gtk parts from include/sane/config.h.in
+ * removed gtk test from aclocal.m4
+ * removed xcam.c xscanimage.c sane-style.rc progress.c progress.h
+ preview.c preview.h preferences.c preferences.h gtkglue.c gtkglue.h
+ from frontend/
+ * removed parts for xcam and xscanimage from frontend/Makefile.in,
+ configure.in and updated confiugre
+
+2000-11-23 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * NEWS: Updated for SANE 1.0.4. Please check.
+ * README.aix: Removed paragraph about shared libs not working.
+ * README.linux: Added paragraph about excessive warnings due to glibc
+ bug (from Peter Kirchgessner).
+ * TODO: Removed entry about shared libs not working on AIX. Added entry
+ about PTAL checks. Removed entry about DBG and microtek2. Added entry
+ about dc210 and jpeg functions. Added entry about using strchr()
+ instead of index().
+ * sane.lsm: Added NEC.
+ * backend/microtek2.c: (from karsten.festag@t-online.de (Karsten
+ Festag)) Use DBG instead of printf/fprintf. Use
+ #include "../sane/include/..." instead of #include "sane/...". Fixed
+ warnings.
+
+2000-11-23 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Display "Set Focus" control only for scanners that
+ can actually handle the command.
+
+2000-11-22 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * changed configure and configure.in, removed test for sting.h/strings.h
+ this is not needed because we use strchr instead (always in string.h)
+ of index (sometimes in string.h, sometimes in strings.h)
+
+ * changed ltconfig for aix4*, repleace -o $objdir/$soname by -o $lib,
+ the shared libraries are handled correct now
+
+2000-11-21 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c, backend/sharp.desc, doc/sharp.man: Support
+ for JX320 added
+
+2000-11-21 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Added FUKUDA Kazuya for the nec Backend. Used spaces instead
+ of tabs.
+ * PROJECTS: Removed entry about NEC. Added/updated entries about Mustek
+ USB scanners.
+ * README: Added link to sane-nec(5).
+ * TODO: Removed entries about sanei_authorize and plain text passwords.
+ * backend/Makefile.in backend/dll.conf backend/nec.conf backend/nec.c
+ backend/nec.desc backend/nec.h doc/Makefile.in doc/sane-nec.man:
+ Added nec backend for the NEC scanners PC-IN500/4C (from Kazuya Fukuda
+ <fukuda@pjs.nevt.nec.co.jp>)
+
+2000-11-20 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Added Eugene S. Weiss.
+ * PROJECTS: Removed Artec as6e backend.
+ * README: Added link to man sane-as6e.5.
+ * TODO: Removed as6e.
+ * doc/Makefile.in: Added generation of as6e manpage.
+ * backend/Makefile.in: Added entries for as6e.
+ * backend/dll.conf: Added as6e.
+ * backend/as6e.c backend/as6e.h backend/as6e.desc doc/sane-as6e.man:
+ Added backend for Artec AS6E parallel port scanner (from Eugene S.
+ Weiss <yossarian@users.sourceforge.net>).
+
+2000-11-20 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * configure configure.in: Added test for /dev/urandom and
+ index() in string.h or strings.h
+ * backend/net.c: Fixed SANE_NET_AUTHORIZE call handling
+ * doc/net.tex: Clarified definition of SANE_NET_AUTHORIZE, added
+ definition of MD5 authorization
+ * doc/sane.tex: Upgraded to version 1.0.2, changed definition of
+ SANE_MAX_USERNAME_LEN & SANE_MAX_PASSWORD_LEN to 128 chars
+ * doc/saned.man: added description of SANE_CONFIG_DIR/saned.users
+ * doc/scanimage.man: added description of ~/.sane/pass and
+ --accept-md5-only
+ * frontend/saned.c: implemented user authorization on a per backend
+ basis
+ * frontend/scanimage.c: fixed bug (option -b wasn't present)
+ implemented auth_callback
+ * lib/md5.c include/md5.h: added md5 functions from GNU textutils
+ * include/sane/sane.h: changed definition of SANE_MAX_USERNAME_LEN &
+ SANE_MAX_PASSWORD_LEN to 128 chars
+ * include/sane/sanei_auth.h sanei/sanei_auth.c: implemented new
+ SANE interface for user authorization using MD5 digest
+ * lib/Makefile.in sanei/Makefile.in: updated Makefiles
+
+2000-11-19 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Removed one debug output statement.
+
+2000-11-19 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Added support for "set focus position" command. This
+ command is necessary to scan via the TPU with the Expression1600.
+2000-11-19 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Removed entry about stiff.*. Updated entry about testing
+ saned.
+
+2000-11-19 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * backend/mustek_pp.[ch]: replaced #include "sane/.." by
+ #include "../include/sane/.."
+
+2000-11-19 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * frontend/stiff.c: Fix problem with writing Tag bits per sample
+ for color tiff files.
+
+2000-11-18 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * doc/sane-mustek_pp.man backend/mustek_pp.*: updated mustek_pp
+ backend to version 0.9-devel
+
+2000-11-15 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS: Added entry about Visioneer OneTouch 8600.
+ * TODO: Added entries about net backend crashing after timeout, stiff.c
+ problems, and more details about Irix cc jpeg problems.
+
+2000-11-15 Rene Rebe <rene.rebe@gmx.net>
+ * backend/avision.[c,h]: some fixes for brightness and contrast via
+ the gamma-table. New config-option to force the backend to use DIN A4
+ ("option force-a4"). Clean up.
+
+2000-11-14 Rene Rebe <rene.rebe@gmx.net>
+ * backend/avision.[h,c]: Added gamma table support in hardware.
+ Brightness and contrast emulation via the hardware gamma table.
+ Code cleanup.
+ * AUTHORS: Changed my e-mail address.
+
+2000-11-13 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * Makefile.in: Install sane.h and saneopts.h only.
+ * PROJECTS: Removed sane-pie.
+ * TODO: Removed sane-pie. Added possible portability problem for
+ artec. Removed entry about installed headers. Added entry about
+ gettext and libdl.
+ * doc/.cvsignore: Added sane-pie.5.
+
+2000-11-13 Simon Munton <simon@munton.demon.co.uk>
+
+ * backend/pie.c backend/pie-scsidef.c backend/pie.conf backend/pie.desc
+ doc/sane-pie.man: Added Pacific Image Electronics backend for ScanAce
+ range of scanners (also supports DevCom BlackWidow scanners and ADLIB
+ JetScan scanners).
+ * README backend/Makefile.in backend/dll.conf doc/Makefile.in: Added pie
+ backend.
+ * sane.lsm: Added keywords for pie backend.
+ * AUTHORS: Added myself as maintainer of pie backend.
+
+2000-11-12 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * doc/sane.tex: Fixed a typo.
+ * doc/.cvsignore: Added the files produced by make ps.
+ * README: Removed X-frontends. Point to sane-frontends and website.
+ Some reformatting.
+ * TODO: Updated concerning frontends split.
+ * PROJECTS: Removed entries about frontends (now in
+ sane-frontends/README)
+ * PROBLEMS: Removed entries about frontends (now in
+ sane-frontends/PROBLEMS)
+
+2000-11-10 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * sanei/sanei_constrain_value.c: If constraint_type is
+ SANE_CONSTRAINT_RANGE and quantization is used, the results may
+ be outside the limits of the range because quantization uses the
+ orginal value. Fixed by doing quantization with the already
+ checked value.
+
+2000-11-10 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c backend/plustek.desc backend/plustek-share.h
+ backend/plustek.h doc/sane-plustek.man:
+ updated to version 0.37 - support for xsane, new models
+ document update, minor bugfixes
+
+2000-11-08 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated. Added entries for viceo backend and addition to hp
+ backend. Updated entries about the include issue. Added point about
+ additional options for pnm backend, install problem of libsane.la,
+ and some build problems and the --without-x problem. Some more
+ details for detecting older SANE versions.
+
+ * LEVEL2: Added entry about sending messages from backend to frontend.
+ Removed entry about image polarity.
+
+ * backend/mustek.c backend/mustek.h backend/mustek.CHANGES
+ backend/mustek.desc: Update to Mustek backend 1.0-99. Better
+ transparency adapter support for ScanExpress scanners. Changed
+ color support for ScanExpress scanners (faster at some resolutions
+ now). Paragon 1200 SP color mode should work now without garbage at
+ the end of an image. Some bugfixes. Details in
+ backend/mustek.CHANGES.
+
+2000-11-08 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * include/sane/sanei_debug.h: fixed typo
+
+2000-10-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated. Added points about --without-x and the
+ #include <sane...> stuff. Added xcam problem. Changed entry for
+ Relisys scanner.
+
+2000-10-30 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * frontend/xscanimage.c: Define GIMP_ENABLE_COMPAT_CRUFT when
+ including gimp.h to use the old API. Eventually we should convert
+ the frontends to use the new Gimp API. Patch from Kevin Dalley.
+
+2000-10-29 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Updated.
+
+2000-10-23 Peter Kirchgessner <peter@kirchgessner.net>
+
+ *backend/hp-accessor.c hp-device.c hp-handle.c hp-hpmem.c hp.h hp.c
+ hp-option.c hp-scl.c: Change sanei_debug-interface
+ Allocate accessors once (for fixed size accessors)
+ Close connection in some error conditions
+
+2000-10-23 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * backend/dll.c: added test for ``dll'' in dll.conf
+
+2000-10-23 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * sanei/sanei_init_debug.c include/sane/sanei_debug.h
+ frontend/saned.c: removed vararg macros
+
+2000-10-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * doc/sane.tex: Added paragraph about image polarity as discussed
+ on sane-devel. This is the version from Nick Lamb.
+
+2000-10-15 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * include/sane/sanei_debug.h: sanei_debug_init was only declared
+ if VARARG macros are supported. Fixed this.
+
+2000-10-08 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * sanei/sanei_pa4s2.c: fixed all but one compiler warning
+
+2000-10-03 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * tools/find-scanner.c: Explicitly state that find-scanner won't
+ find non-SCSI scanners.
+ * doc/scanimage.man: Add examples for SANE device names.
+ * frontend/scanimage.c: Output message when no devices are found.
+ Add example for devicename to --help message. Print warning
+ when a Unix devicename is used instead of a SANE device. Removed
+ compiler warning.
+ * TODO: Removed entries about the fgets and include issues in
+ umax. Removed entries about scanimage device name
+ documentation. Added a point about xscanimage problems with the
+ new GIMP API.
+ * backend/mustek.* doc/sane-mustek.man: Update to Mustek backend
+ 1.0-98. Fixed segmentation fault in sane_init. Enabled double
+ buffering. Clear inquiry buffer before using. Paragon 1200 SP now
+ uses LD_BLOCK color correction. Removed LD MFS (wasn't used
+ anymore). Fix sane_cancel for Paragon series II scanners. Fix
+ halftone and grain for Paragon series II scanners. Backtracking is
+ used automaticly by all scanners now. Some safety checks, code
+ cleanup and more debug output. Details are in
+ backend/mustek.CHANGES.
+
+2000-10-02 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * Updated umax backend to sane-umax-1.0.3-build-24
+ take a look at backend/umax.CHANGES for details
+
+2000-10-02 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * sanei/sanei_constrain_value.c:
+ if checked option is a range and the value is out of
+ range the value is now corrected to the minimum or maximum
+ allowed value and SANE_INFO_INEXACT is set.
+ The old version returned with an error. This caused problems
+ when the value was a little bit out of range because of rounding
+ errors.
+
+2000-09-30 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/pnm.c: Fixed three segfaults due to buffer overruns:
+ maximum length of filename wasn't checked; maximum length in
+ sane_read wasn't always checked; ppm_type wasn't always set in
+ getparmfromfile. Added some checks for safety and removal of
+ warnings. Added DBG lines for every SANE API call.
+ * TODO: Added entries about the backend:devicename issue. Add a
+ comment about fronends not to crash when length is -1. Added entry
+ about sane-pie. Added point about fronends not checking if too
+ much data is delivered with sane_read.
+ * PROJECTS: Added entry about sane-pie.
+
+2000-09-24 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.*: Update to Mustek backend 1.0-97. This is a
+ development version and is only tested for three-pass scanners.
+ Added support for Paragon 1200 SP Pro and ScanExpress A3 SP.
+ Removed detection of " C04" and " C12" (don't seem to exist).
+ Changed SCSI request scheme. Sane_read can read more than 4096
+ bytes from pipe. Minimum dpi is 30 now. Fixed LD correction for
+ Paragon 1200SP 1.06 and 1.11. Read SCSI buffer into big block and
+ do LD after that for Paragon one-pass scanners. New option
+ "blocksize" in mustek.conf. Better detection of the scanner type
+ (three-pass, Paragon I, ...). Fixed possible segmentation faults
+ in Paragon 600 II N LD code, scsi_sense_wait_ready and
+ sense_handler. Decreased maximum scan size of Paragon 800 II
+ SP. For three-pass scanners: fixed stop_scan and speed code, scan
+ area is in pixels now, added RGB brightness and contrast, use
+ +-100% for brightness and contrast. Return SANE_STATUS_CANCELLED
+ when scan was cancelled. Option "force backtracking" is enabled by
+ default, "scan speed" is set to "fastest". Added option
+ "force-warn" for mustek.conf. Rewrote halftone mode. Better error
+ handling and more debug output.
+ * TODO: Clarified point about image data polarity. Moved point about
+ xscanimage not updating the progress bar for 3pass scanners to
+ frontend section. Removed umax entry in "frontends". Removed entry
+ about alpha channel (was added to LEVEL2 file).
+ * LEVEL2: Add point about image data polarity.
+ * frontend/scanimage.c: Removed some warnings.
+
+2000-09-19 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.desc doc/sane-plustek.man:
+ updated information about supported scanners
+
+2000-09-18 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * README: Removed comment about xscanimage error message. Added
+ comment about find-scanner (may find scanners not supported by
+ SANE).
+ * tools/README: Added comment about find-scanner and some lines
+ about sane-desc.el and sane-config.
+ * tools/find-scanner.c: Added comment about scanners not supported
+ by SANE. Removed some warnings.
+ * TODO LEVEL2: Removed xscanimage error comment from TODO and moved
+ ideas for SANE 2.0 from TODO to LEVEL2.
+
+2000-09-18 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/v4l.c: Remove X11 dependency.
+
+2000-09-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * frontend/xscanimage.c: Fixed gtk_main_quit bug (based on patch
+ from <moloch@nikocity.de>). An error message was printed when
+ no sane device was found.
+
+2000-09-17 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * config.guess config.sub : Upgraded to latest version from
+ <URL:ftp://ftp.gnu.org/pub/gnu/config/>.
+
+ * doc/Makefile.in: New target 'install-docs' to install
+ documentation in $(prefix)/doc/sane-<version>/.
+
+ * japi/Makefile.in: Move javac and javah to make variables.
+
+2000-09-16 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Added xscanimage bug and information about versioning
+ problems. Some other minor changes.
+
+2000-09-15 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c
+ added some code to support timing measurement in debug sessions
+
+2000-09-10 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-handle.c
+ Special handling of sane_cancel for OfficeJet K series
+
+2000-09-09 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.h hp-scsi.h hp-scl.h hp-option.h hp-option.c
+ hp-device.h hp-scl.c hp.c hp-device.c hp-handle.c
+
+ David Paschal (paschal@rcsis.com)
+ Added support for flatbed HP OfficeJets.
+ fix problem with cancel preview
+ fix timing problem between killing child and writing to pipe
+ change fprintf(stderr,...) to DBG
+ change include <sane..> to "sane.." in hp.h
+ change handling of options that have global effects.
+ i.e. if option scanmode is received (has global effect),
+ all options that "may change" are send to the scanner again.
+ This fixes a problem that --resolution specified infront of
+ --mode on command line of scanimage was ignored.
+ NOTE: This change does not allow to specify --depth 12 infront of
+ --mode color, because --depth is only enabled with --mode color.
+ add depth greater 8 bits for mode grayscale
+ add option for 8 bit output but 10/12 bit scanning
+
+2000-08-24 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * Updated plustek backend to support multiple devices and 12bit color-depth
+ affected files: backend/plustek.c backend/plustek.h
+ backend/plustek-share.h backend/plustek.conf
+ * backend/plustek.desc: updated information about supported scanner
+ * doc/sane-plustek.man: updated manpage according to the changes
+
+2000-08-23 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: Second attempt to fix the errno bug
+ in the Linux command queue handling.
+
+2000-08-19 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Included TODO file for 1.0.4.
+ * sanei/sanei_ab306.c: Removed some comiler warnings.
+ * doc/sane.tex: Set \date to the date of the last change (not
+ the date of running latex (\today))
+ * frontend/xscanimage.c: Fixed image size overrun (>ca. 400 MB).
+ Removed some compiler warnings.
+
+2000-08-15 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * configure configure.in: Default to --enable-warnings again.
+
+2000-08-15 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * backend/mustek_pp.c: fixed bug in config_ccd_1013 that prevents
+ ASIC 1013 scanners from working
diff --git a/ChangeLogs/ChangeLog-1.0.5 b/ChangeLogs/ChangeLog-1.0.5
new file mode 100644
index 0000000..49e72c5
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.5
@@ -0,0 +1,1193 @@
+2001-07-01 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+************************ end of code freeze ***********************************
+************************ Release of sane-backends 1.0.5 **********************
+
+
+2001-06-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Disabled warnings by default.
+ * NEWS: Updated version numbers, added dc25.
+
+2001-06-25 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * configure.in/configure: changed version to 1.0.5
+
+2001-06-25 ********** CODE FREEZE FOR SANE-1.0.5
+ snapshot sane-backends-pre1-1.0.5
+ planned release on 2001-07-01
+
+
+2001-06-24 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax*: bugfixes:
+ * bugfix for DOR:
+ - bottom-right edge keeps in position if possible when DOR is switched on
+
+ * bugfix for Astra 610S color mode:
+ - scale_y is set to 0.5 if y_resolutions is smaller than optical_res/2
+ this does fix the color scan problems for Astra 610S.
+ Not tested for Astra 600S.
+
+2001-06-20 Peter Fales <peter@fales.com>
+
+ * backend/dc25.c - Backed out the previously added mkdtemp()
+ patch, as mkdtemp is not available on all platforms.
+ * TODO: Removed entry about dc25 bug
+
+2001-06-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated documentation entries. Added compilation bug in dc25.c.
+
+2001-06-20 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/sane-umax_pp.man: corrections according to the TODO list
+
+--- cvs snapshot-2001-06-17 ---
+
+2001-06-17 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax*: bugfixes:
+ - removed "#include <assert.h>" from umax.c: assert() is never called
+ - bugfix for 3 pass scanning:
+ reposition_scanner is called in sane_start for 2nd and 3rd pass of 3 pass scan
+ - bugfix for UTA and DOR geometry offsets
+
+2001-06-14 Peter Fales <peter@fales.com>
+
+ * backend/dc25.c - Added a patch from Tim Waugh to use mkdtemp()
+ instead of mktemp(). Also cleaned up some compiler warnings.
+
+2001-06-14 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Removed reference to sane-devel list
+
+2001-06-14 Simon Munton <simon@munton.demon.co.uk>
+ * doc/sane-pie.man: Fixed formatting problems
+
+2001-06-14 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * doc/sane-plustek.man:
+ Corrected URL to Plustek mailing list
+
+2001-06-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added link to libieee1284.
+
+2001-06-13 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc: Added GT-9500 (same scanner as Expression 636)
+ * backend/epson.c: Finally updated version #
+
+2001-06-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated the entries about documentation.
+
+2001-06-13 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * sanei/sanei-scsi.c: Corrected bug in sanei_scsi_cmd2 for IRIX:
+ - scsi_req.ds_senselen has been set to sizeof pointer, is set
+ to 128 bytes now (1024 bytes does not work)
+ - sensebuf is cleared before scsi command is executed
+ - sensehandle always called when it exists and an error occurs
+
+2001-06-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/umax_pp.c: Also use sanei_umax_pp_SetLamp() (patch from
+ Tim Waugh <twaugh@redhat.com>).
+
+2001-06-11 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c:
+ make use of PPGETMODES only when available in ppdev.h. Corrected OS/2
+ typo in Outb() and rename sanei_umax_pp_Lamp() to
+ sanei_umax_pp_SetLamp().
+
+
+2001-06-05 Peter Fales <peter@fales.com>
+
+ * backend/doc/sane-dc25.man, sane-dc210.man, sane-dc240.man -
+ Added reference to web page for information about sane
+ mailing list
+
+2001-06-10 Jochen Eisinger <jochen.eisinger@gmx.net>
+ * doc/sane-mustek_pp.man: added pointer and note to list
+ subscription page
+
+--- cvs snapshot-2001-06-10 ---
+
+2001-06-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-artec.man doc/sane-coolscan.man doc/sane-umax.man:
+ Fixed whatis/apropos output (don't put an empty line after
+ the NAME section). Added SEE ALSO entry to sane(7).
+ * doc/sane-dll.man: Fixed output bug and added SEE ALSO entry.
+ * doc/sane-scsi.man: Rephrased the paragraphs about Linux sg
+ buffer to make it clear, that kernel changes are really only
+ necessary with older kernels. Fixed torque.net URL. Added comment,
+ that usually every SCSI adapter should work. Added paragraph about
+ problems with Acard adapters. Rephrased NCR810 entry.
+ * doc/sane-net.man: Updated BUGS section. Added SEE ALSO.
+ * doc/saned.man doc/sane-abaton.man doc/sane-agfafocus.man
+ doc/sane-apple.man doc/sane-as6e.man doc/sane-avision.man
+ doc/sane-bh.man doc/sane-dc210.man doc/sane-dc240.man
+ doc/sane-dc25.man doc/sane-dmc.man doc/sane-epson.man
+ doc/sane-fujitsu.man doc/sane-hp.man doc/sane-microtek.man
+ doc/sane-mustek_pp.man doc/sane-nec.man doc/sane-pie.man
+ doc/sane-pint.man doc/sane-plustek.man doc/sane-pnm.man
+ doc/sane-qcam.man doc/sane-ricoh.man doc/sane-s9036.man
+ doc/sane-sharp.man doc/sane-sm3600.man doc/sane-st400.man
+ doc/sane-tamarack.man doc/sane-umax_pp.man doc/sane-v4l.man:
+ Added SEE ALSO entry for sane(7).
+ * doc/sane-coolscan.man: Used @@ macros instead of fixed paths.
+ * doc/sane-dc210.man doc/sane-dc240.man doc/sane-dc25.man:
+ Used @@ macros instead of fixed paths. Fixed library paths.
+ * doc/Makefile.in doc/sane-coolscan.man doc/sane-dc210.man
+ doc/sane-dc240.man doc/sane-dc25.man: Set the correct library
+ path for all backends by changing @LIBDIR@ to $(libdir)/sane.
+ * doc/sane-as6e.man doc/sane-canon.man doc/sane-microtek.man
+ doc/sane-microtek2.man: Some minor formatting issues.
+ * doc/sane-mustek.man doc/sane-v4l.man: Added link to mostang mail
+ page. Fixed some formatting issues.
+ * doc/backend-writing.txt: Added paragraph about @LIBDIR@ and friends
+ in manual pages.
+ * TODO: Added several entries about manual pages. Removed entry about
+ sane(7).
+
+2001-06-09 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * sanei/sanei_scsi.c:
+ applied patch by Douglas Gilbert <dgilbert@interlog.com>
+ that solves compilation problem about:
+ storage size of `ssid' isn't known
+
+2001-06-09 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Changed debug level for for an informational
+ message in the sense_handler from 0 to 2.
+
+2001-06-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.os2: Added link to Franz Bakan's web page.
+ * configure configure.in backend/Makefile.in include/sane/config.h.in:
+ Check for sys/sem.h and disable snapscan if it isn't available.
+ Removed "//" (C++-style comment) from config.h.in. Link to djpeg
+ only once.
+ * TODO: Added comment on command line option for timeout in saned.
+
+2001-06-09 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * acinclude.m4 include/sane/config.h.in: Fix configure/compile
+ problem on Alpha/Tru64 Unix.
+
+2001-06-07 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: make use of PPGETMODES to get ppdev
+ capabilites.
+
+2001-06-05 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Fixed bug where attempting to change the
+ "image number" in an empty camera causes a core dump.
+
+2001-06-06 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: OS/2 compile fixes (again). Backend
+ successfully built on Warp with EMX 0.9d.
+
+2001-06-06 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: OS/2 compile fixes
+
+2001-06-05 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * changed my email address in sane-backends.lsm
+
+
+--- feature freeze for sane-1.0.5 is active ---
+--- cvs snapshot-2001-06-05 ---
+
+2001-06-04 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * update of umax backend to version 1.0 buid 27
+
+2001-06-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated the entries concerning net+saned. Removed the
+ exporting symbols entry. Added entry about lassert.h.
+ * include/lassert.h sanei/sanei_scsi.c: Use local assert.h file to
+ fix problems with AIX and shared libraries.
+ * frontend/test.c: Changed order of headers to get test.c compiling
+ on OS/2.
+ * frontend/.cvsignore: Added test.
+ * frontend/saned.c: Increase timeout to one hour.
+ * backend/coolscan.c: Declared all internal functions static.
+ * tools/Makefile.in: Fixed typo that prevented make from removing
+ mustek600iin-off.
+ * sanei/sanei_scsi.c: Fixed some small bugs concerning error reporting.
+ * frontend/scanimage.c: Fixed small bug in output for batch mode.
+
+2001-06-03 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Batch scanning of multiple images with scanimage
+ was failing if subsequent images have a different size than
+ from the first image.
+
+2001-06-03 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Updated documentation
+
+2001-06-03 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: Fixed compile problem on archs that
+ have inb/outb and not insb/outsb. Cleaned up and simplified probing
+ code.
+
+2001-06-03 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Add "auto increment" option to allow all
+ images to be downloaded with the --batch option to scanimage.
+
+2001-06-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c: Added some debug messages.
+ * backend/net.c: Fixed yet another segfault. Added debug messages.
+ * frontend/scanimage.c doc/scanimage.man: Added more options for
+ batch-scanning (patch from Caskey Dickson
+ <caskey-lists-sane-devel@technocage.com>).
+
+2001-06-02 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.desc: updated version number to match artec.c.
+
+2001-06-02 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * corrected umax version numver in umax.desc (1.0.24->1.0.26)
+
+2001-06-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated concerning backend versions.
+ * TODO: Removed nec entries. Added entry about ADF extension to
+ scanimage.
+ * backend/qcam.c: Another occurence where struct flock must be defined
+ for OS/2.
+ * AUTHORS: Fixed Kazuya Fukuda's name and email address.
+ * backend/nec.c backend/nec.h backend/nec.desc: Update to backend
+ version 0.12 (from Kazuya Fukuda <kazuya@pjs.nevt.nec.co.jp>).
+ Removed references to sharp backend (grep for "JX"). Check for
+ HAVE_SYS_SHM_H before including sys/shm.h and disable shared
+ memory support if necessary. Free devlist allocated in
+ sane_get_devices() in sane_exit() resolution setting bug fixed
+ (PC-IN500/4C 10dpi step). Removed resolution list.
+
+2001-06-02 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * changed minimum scsi buffer size from 64KB to 32KB
+
+
+2001-06-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/umax_pp_low.c: Fixed the FreeBSD problems by checking
+ /dev/io before accessing io ports (patch from Stéphane Voltz
+ <svoltz@wanadoo.fr>).
+ * backend/snapscan.c: Fixed two bugs: pss->devname must be checked
+ for 0. Return total number of lines in sane_get_parameters (patch
+ from Ben Stanley <bds02@uow.edu.au>).
+
+2001-05-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c: Updated some comments.
+ * TODO: Removed the entry about the config_line[len-1] bug.
+ * configure configure.in include/sane/config.h.in backend/qcam.c:
+ Check for struct flock and define it if necessary.
+ * tools/Makefile.in: Make sure that backend/umax_pp_low.o exists
+ when umax_pp.o is linked.
+ * backend/bh.c backend/m3096g.c backend/sp15c.c: Fixed
+ config_line[len-1] bug which could generate an access violation
+ if len==0.
+ * lib/alloca.c lib/getnev.c lib/getopt.c lib/getopt1.c
+ lib/isfdtype.c lib/md5.c lib sigprocmask.c lib/snprintf.c lib
+ strdup.c lib/strndup.c lib/strsep.c lib/usleep.c lib/vsyslog.c:
+ Used #include "../include/sane/config.h".
+ * sanei/sanei_scsi.c: Fixed compilation issue for OS/2 in
+ sanei_scsi_find_devices.
+
+--- cvs snapshot-2001-05-30 ---
+
+2001-05-30 Marian Eichholz <marian@freenet-ag.de>
+
+ * backend sm3600 with better gain calibration incorporated.
+ fixed a superfluceous export.
+
+2001-05-30 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * Problem with SOLARIS_INTERFACE (change from 2001-05-27)
+ had an other reason than the scsi buffer size (MAX_DATA).
+ Changed scsi buffer size for solaris sg driver
+ (USE == SOLARIS_INTERFACE in sanei_scsi.c) again from 32 KB
+ to 128KB.
+
+2001-05-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/Makefile.in: Fixed umax_pp compilation problem with Solaris
+ and other operating systems.
+
+2001-05-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/canon.conf doc/sane-canon.man: Added config file and some
+ documentation for it.
+ * AUTHORS: Added Chris Bagwell and Oliver Schwartz for snapscan.
+ * TODO: Added entry about possible sanei_usb.*.
+
+2001-05-29 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Fixed a fairly obscure problem that can result in
+ core dump. (Deleting pictures with gphoto, then launching
+ xscanimage without power cycling the camera left bad data in the
+ camera status table.)
+
+2001-05-29 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * added entry about sanei_parport in TODO
+
+2001-05-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/releases.txt: Removed comment about net.* and dll.* version
+ updating. Added info about make install-mostang.
+ * TODO: Updated concerning backend bugs (export and config_line).
+ * backend/umax_pp_low.c: Fixed bus error with FreeBSD.
+
+2001-05-27 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * changed scsi buffer size for solaris sg driver
+ (USE == SOLARIS_INTERFACE in sanei_scsi.c) to 32 KB
+ again because it does not work for at least one system
+ with 64KB.
+
+2001-05-27 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * doc/releases.txt: Added points on tagging the source and
+ generating a diff from the last release.
+
+--- cvs snapshot-2001-05-27 ---
+
+2001-05-27 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * sanei/sanei_scsi.c: changed scsi buffer size (MAX_DATA)
+ to 128KB for: SOLARIS_INTERFACE, SOLARIS_SG_INTERFACE,
+ SOLARIS_USCSI_INTERFACE and IRIX_INTERFACE
+ (some scanners have problems with the predefined 32KB
+ buffer size, these systems should work with 128KB
+ but we need to test if no problems do occur).
+
+2001-05-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-microtek2.man: Include updates from backend version 0.9
+ (from karsten.festag@t-online.de (Karsten Festag)).
+ * backend/sm3600.c: setResolutions has only 5 instead of 6 resolutions.
+
+2001-05-26 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * backend/mustek_pp.c: declared function comp() static
+ * TODO: removed entry regarding this problem
+
+2001-05-26 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Added code in sane_exit() to free memory
+ malloced in sane_get_devices(). Declared several functions
+ 'static' so they are not exported.
+ * TODO: removed 'artec' backend from list mentioned in describing
+ above problems.
+
+2001-05-26 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * TODO: Updated entry on library search path, sanei API
+ documentation and sane_init() return value.
+
+ * Makefile.in:New target 'libcheck' making sure libraries export
+ only sane_* and sanei_* symbols.
+
+2001-05-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed snapscan and microtek2 updates. Removed status change of
+ as6e. Removed True64 Unix and HP/UX compilation problems. Added entry
+ about exporting symbols. Reformatted some entries.
+ * backend/microtek2.c backend/microtek2.desc backend/microtek2.h:
+ Updated to version 0.9 (from Karsten Festag
+ <karsten.festag@t-online.de>).
+ * doc/sane-snapscan.man: Added new scanners and authors.
+ * AUTHORS: Added Sebastien Sable and Henrik Johansson.
+ * backend/snapscan-scsi.c backend/snapscan-sources.c
+ backend/snapscan-sources.h backend/snapscan-usb.c
+ backend/snapscan-usb.h backend/snapscan.c backend/snapscan.conf
+ backend/snapscan.desc backend/snapscan.h: Updated snapscan backend to
+ version 1.2 (from Sebastien Sable <Sebastien.Sable@snv.jussieu.fr>).
+ * doc/backend-writing.txt: Added "make libcheck" info.
+ * backend/sm3600-color.c backend/sm3600-gray.c backend/sm3600-homerun.c
+ backend/sm3600-scanmtek.c backend/sm3600-scanusb.c
+ backend/sm3600-scanutil.c backend/sm3600.c backend/sm3600.h:
+ Made all non-sane-api functions static. Fixed some warnings.
+ * backend/sm3600.desc: Changed status to new.
+ * backend/as6e.desc: Changed status to alpha because backend
+ isn't new any more.
+ * acinclude.m4 aclocal.m4 configure configure.in
+ include/sane/config.h.in: Fixed u_int* bug for Tru64 by
+ including sys/bitypes.h.
+ * PROJECTS: Added hpoj project.
+
+2001-05-25 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * doc/sane-mustek_pp.man, backend/mustek_pp.desc: Changed URL
+ of the homepage to home.nexgo.de/jochen.eisinger/sane/
+
+2001-05-25 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Allow more than 8 bit color depth even for
+ preview mode since Xsane can handle this. Some code cleanup.
+ Removed ancient code that was used to determine the resolution
+ back when the backend still had a slider for the resolution
+ selection.
+ * backend/epson.desc: Updated version number, added new scanners.
+
+2001-05-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sane-mustek.man: Removed some bug descriptions and addded
+ sane(7) to SEE ALSO.
+ * sane-find-scanner.man sane-scsi.man scanimage.man: Added
+ sane(7) to SEE ALSO.
+ * PROJECTS: Removed entry about Polaroid SprintScan 35LE (now in
+ microtek).
+ * TODO: Removed umax from lists of backends with sane_get_devices
+ and config_line bug. Removed entry about make uninstall and
+ sanei_wire.c bug. Removed entry about microtek update. Added point
+ about adding sane(7) to any manual page.
+
+2001-05-23 Matto Marjanovic <maddog@yoo-hoo.ai.mit.edu>
+
+ * backend/microtek.c backend/microtek.h:
+ o Added support for Agfa StudioStar (weird pixel packing)
+ o A couple of small fixes (missing 'static' declarations)
+ o Upped version to 0.12.3
+
+2001-05-23 Matto Marjanovic <maddog@yoo-hoo.ai.mit.edu>
+
+ * backend/microtek.c backend/microtek.h: Small fixes:
+ o Use 'expanded contrast/exposure settings' inquiry data to
+ dynamically set ranges for those options.
+ o Patches for Polaroid SprintScan 35LE (from Dick Bruijn)
+ - added "Polaroid" vendor string
+ - screwed around with 'brightness' setting
+ - attached 'negative scan' button
+ o sane_exit() now frees the devlist allocated by sane_get_devices()
+ o upped version to 0.12.2
+
+2001-05-23 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: changed option names to use lower case characters
+ and dashes instead of spaces.
+
+ * backend/umax_pp_low.c: commented out a useless command sequence.
+ Added 55 AA pattern escaping in data block sending.
+
+2001-05-22 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Added sense handler to support the GT-8000 scanner.
+ Also added experimental (and #ifdef protected) USB scanner probing
+ code - requires patch to USB scanner driver.
+
+2001-05-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README: Added "man sane" to quick install. Added paragraph about
+ old versions. Added paragraph about "make clean" and "make
+ distclean". Added section about removing SANE.
+ * Makefile.in backend/Makefile.in doc/Makefile.in lib/Makefile.in
+ sanei/Makefile.in tools/Makefile.in: Added target "uninstall".
+
+2001-05-20 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * removed a bug in saned (patch by Matthias Trute <mtrute@topmail.de>)
+ calculation of the reader buffer index was not correct:
+ if (reader >= sizeof (buf))
+ - reader = 0;
+ + reader -= sizeof(buf);
+
+2001-05-19 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: fixed dates in change log entries
+ and finally fixed the TPU bug with older scanners
+
+2001-05-17 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * removed bug in umax backend sane_exit
+
+2001-05-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/lalloca.h: Used a more suitable comment.
+ * doc/backend-writing.txt: Reformated. Added point about headers
+ and libraries that are not available on every system and inclusion
+ of backends into CVS. Some minor fixes and clarifications.
+ * NEWS: Updated concerning sane man page and new backends.
+
+2001-05-17 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * updated umax backend to version 1.0 build 26
+
+2001-05-15 Peter Fales <peter@fales.com>
+
+ * backend/dc25.c, backend/dc240.c - Added DBG(1,..) to print
+ version string
+
+2001-05-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/.cvsignore: Added sane-sm3600.5.
+
+ * PROJECTS: Removed sm3600.
+
+ * TODO: Updates concerning memory leaks and access violations.
+
+ * AUTHORS doc/Makefile.in: doc/sane-sm3600.man doc/sane.man: Updated
+ documentation concerning sm3600 backend and added man page (from
+ from Marian Eichholz <eichholz@computer.org>).
+
+ * configure configure.in include/sane/config.h.in: Detect presence
+ of libusb and enable sm3600 backend.
+
+ * backend/Makefile.in backend/dll.c backend/sm3600-color.c
+ backend/sm3600-homerun.c backend/sm3600-scantool.h
+ backend/sm3600-scanutil.c backend/sm3600.desc
+ backend/sm3600-gray.c backend/sm3600-scanmtek.c
+ backend/sm3600-scanusb.c backend/sm3600.c backend/sm3600.h:
+ Added sm3600 backend (from Marian Eichholz <eichholz@computer.org>).
+
+2001-05-16 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: changed #include to use "../include/sane/config.h"
+ instead of "sane/config.h".
+
+2001-05-16 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: fix memory leak in sane_exit
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h : added /proc parsing
+ when available to get I/O addr. Added pauses in 610P probe
+ sequence.
+
+2001-05-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/scanimage.c: scanimage_exit: use the handle (not its
+ address) for sane_close. Fixed yet another warning.
+
+2001-05-14 Gerhard Jaeger <g.jaeger@earthling.net>
+ * backend/plustek.c:
+ Free memory malloced in sane_get_devices() in sane_exit()
+
+2001-05-14 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/lhii.desc: Updated with current version and contact
+ information.
+
+ * frontend/scanimage.c tools/sane-find-scanner.c: Remove some
+ compiler warnings.
+
+2001-05-13 Peter Fales <peter@fales.com>
+ * backend/dc25.c: Remove DBG(0,...) line that was getting printed
+ for non-dc25 users.
+
+2001-05-13 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Removed check for '\n' before end of line
+ Free memory malloced in sane_get_devices() in sane_exit() again
+ Check first if the scanner does support the set film type
+ and set focus position before the GUI elements are displayed.
+ This caused problems with older (B4 level) scanners when a TPU
+ was connected.
+
+2001-05-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.man: Added path to sane.ps. Added comments about
+ how somebody can help the SANE project. Added comments about
+ possible problems with old installaitions of SANE and
+ /etc/ld.so.conf. Added section "REPORTING BUGS".
+ * tools/Makefile.in tools/.cvsignore: Added mustek600iin-off.
+ * sanei/sanei_codec_ascii.c tools/mustek600iin-off.c
+ tools/sane-find-scanner.c frontend/stiff.c: Used #include
+ "../include/sane/...".
+ * backend/net.c backend/net.h backend/net.desc: Fixed some memory
+ leaks. A bit of reformating. Added more debug output. Used
+ #include "../include/sane/...".
+ * sanei_codec_bin.c sanei/sanei_net.c sanei/sanei_wire.c: Fixed
+ some memory leaks. Used #include "../include/sane/...".
+ * frontend/scanimage.c: Added exit handler to call sane_close
+ and sane_exit in any case and to free alloced memory. A bit of
+ reformating. Used #include "../include/sane/...". Fixed some
+ warnings.
+ * frontend/saned.c: Fixed some memory leaks. Fixed some warnings.
+ Some reformating. Used #include "../include/sane/...".
+ * README.hp-ux: Use gmake if make doesn't work.
+ * LEVEL2: Added point about sane_init results != SANE_STATUS_GOOD.
+ * TODO: Added entries about memory leaks, sane_init return values, and
+ HP-UX problems in isfdtype.c.
+
+2001-05-11 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * TODO, backend/mustek_pp.c: fixed line-end handling, removed entry
+ from TODO list
+
+2001-05-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed pie from lists of bugs. Removed sane manual page.
+ Added some context to the Tru64 problems.
+
+2001-05-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/.cvsignore: Added sane.7.
+ * README: Removed content that's now in the sane maual page.
+ Added reference to man sane.
+ * doc/Makefile.in doc/sane.man: Added SANE manual page.
+ * doc/sane.tex: Clarified the paragraph concerning sane_read. If
+ *len != 0 the status must be SANE_STATUS_GOOD.
+
+2001-05-08 Simon Munton <simon@munton.demon.co.uk>
+ * backend/pie.c: Free devlist in sane_exit. Removed redundant check for
+ trailing newline in config file.
+
+2001-05-07 Peter Fales <peter@fales.com>
+ * backend/dc25.[ch]: Cleaned up compiler warnings and fixed (very
+ minor) memory leak.
+
+2001-05-07 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+ * applied a patch by Douglas Gilbert to sanei_scsi.c
+ it solves the Problem that the scanner is not
+ found on linux systems when the order of the
+ scsi devices is not coverd by the order of
+ devices listed by /proc/scsi/scsi, it prefers
+ new kernel 2.4 methods when available
+
+2001-05-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/mustek/mustek.CHANGES: Free devlist
+ in sane_exit.
+ * TODO: Updated concerning config_line[len - 1] stuff. Added
+ some (most) backends to list of sane_get_devices leak.
+ * backend/dll.c backend/dll.desc: Removed access to uninitialized
+ memory. Increased version number.
+ * backend/net.c backend/net.desc: Removed access to uninitialized
+ memory. Changed htons to ntohs in DBG statement. Free devlist
+ in sane_exit. Use "../include/sane/...". Increased version number.
+
+2001-05-04 Gerhard Jaeger <g.jaeger@earthling.net>
+ * backend/plustek.c: Applied Petters' patch to avoid an
+ illegal memory access
+
+2001-05-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated.
+ * PROJECTS: Removed umax_pp. Added Canon FB620S and FS2710 backend.
+ * TODO: Removed entry about umax_pp and comment about testing
+ for existing sane installations and plustek memory access violation.
+ Added Canon FB620S and FS2710 backend and entries about Tru64
+ compilation problems and installation procedure for translations.
+ * doc/backend-writing.txt: Added entries about SANE_I18N() and
+ documentation directories.
+
+2001-05-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS README: Updated concerning umax_pp.
+
+ * doc/Makefile.in doc/sane-umax_pp.man .cvsignore: Added manpage for
+ umax_pp (patch from Stéphane Voltz <svoltz@wanadoo.fr>).
+
+ * tools/README tools/Makefile.in tools/umax_pp.c tools/.cvsignore:
+ Added umax_pp test program (patch from Stéphane Voltz
+ <svoltz@wanadoo.fr>).
+
+ * configure configure.in include/sane/config.h.in: Test for
+ linux/ppdev.h (for umax_pp backend).
+
+ * backend/umax_pp.c backend/umax_pp.h backend/umax_pp_low.c
+ backend/umax_pp_low.h backend/umax_pp_mid.c backend/umax_pp_mid.h
+ backend/umax_pp.conf backend/umax_pp.desc backend/Makefile.in
+ dll.conf: Added umax_pp backend (patch from Stéphane Voltz
+ <svoltz@wanadoo.fr>).
+
+2001-05-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Don't use -ansi for Solaris. On some
+ Solaris installations compilation breaks with -ansi.
+
+ * doc/Makefile.in tools/sane-desc.el doc/.cvsignore: Install
+ sane.ps and sane.dvi if latex/makeindex/dvips is available.
+ Generate sane-backends.html in doc/. New target:
+ install-mostang. Installs the sane standard
+ (.ps, .ps.gz and html), the html manpages, and sane-backends.html
+ on www.mostang.com.
+
+2001-05-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in README.solaris
+ sanei/sanei_scsi.c: Added support for Solaris sgen SCSI driver
+ (patch from Juergen Keil <jk@tools.de>).
+ * acinclude.m4 aclocal.m4 configure: Added Irix to the list
+ of operating systems that can use -Wl,-rpath.
+ * doc/Makefile.in: Install all the READMEs and other available
+ documentation in $docdir. Print which manpage is generated.
+ Don't remove files/dirs that doesn't exist. Remove the html
+ manpages in distclean. Fixed spelling mistake in .PHONY.
+ * TODO: Added entries about possible segfaults and memory leaks.
+ Added entry about AIX problems. Removed entry about installing
+ documentation.
+ * PROJECTS: Added Canon FB330P, FP630P.
+
+2001-04-30 Jochen Eisinger <jochen.eisinger@informatik.uni-freiburg.de>
+
+ * doc/sane-mustek_pp.man: Added information about CIS patches
+ by Eddy De Greef
+
+2001-04-29 Chris Pinkham <cpinkham@infi.net>
+
+ * backend/artec.c: Fixed bug causing possible dereference of a NULL
+ pointer.
+ * backend/artec.desc: Modified Parport entry to say AS6E scanner
+ supported by SANE AS6E backend.
+
+2001-04-29 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_config.c sanei/sanei_codec_bin.c: Avoid reading
+ uninitialized memory.
+ * sanei/sanei_config.c: Fix memleak when using env
+ SANE_CONFIG_DIR.
+ * backend/net.c sanei/sanei_wire.c include/sane/sanei_wire.h: Make
+ sure net backend release all memory when finished.
+ * README: Added info about the CVS repository.
+
+2001-04-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_wire.c: Don't free memory that's not alocced.
+ * sanei/sanei_config.c: Avoid reading uninitialized memory when
+ checking SANE_CONFIG_DIR.
+ * backend/mustek.c: Fixed several memory leaks.
+ * frontend/scanimage.c: Fixed memory leak.
+ * sanei/sanei_config2.c: Fixed memory leak: vendor wasn't freed.
+ * PROJECTS: Added entry for the Fujitsu M3091DCd. Updated my email
+ address.
+ * TODO: Added entry for the Fujitsu M3091DCd and a combined Fujitsu
+ backend. Clarified that "printf" also shouldn't be used.
+ * backend/dll.desc: Added my email as contact address.
+ * backend/m3091.desc: New file for the Fujitsu M3091DCd.
+ * doc/sane-mustek.man: Updated URL.
+
+2001-04-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.CHANGES backend/umax.CHANGES backend/umax.FAQ
+ backend/umax.TODO: Moved to doc/mustek respectively doc/umax.
+ * doc/canon.CHANGES doc/canon.install2700F.txt doc/canon:
+ Moved canon-specific documentation to doc/canon.
+ * doc/mustek: New subdirectory for mustek-specific documentation.
+ * doc/sane-umax*.html doc/sane-umax*.jpg doc/sane-umax-doc.tex
+ doc/sane-umax-doc.dvi doc/umax: Moved all the umax-specific
+ documentation to new subdirectory umax.
+
+2001-04-28 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.desc, doc/sane-hp.man: Add support for new models
+ through PTAL-library
+
+2001-04-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/agfafogus.c: Moved PATH_MAX after sanei_backend.h include
+ to avoid warning. Changed printf to DBG.
+ * backend/mustek.c backend/mustek.CHANGES backend/mustek.desc: Added
+ support for translating options. Used only PACKAGE_VERSION for
+ output. Updated email address. New version: 1.0-107.
+ * include/sane/sanei_backend.h include/sane/saneopts.h: Added macro
+ SANE_I18N. It's used to mark strings that can be translated and
+ used by a frontend. Usually these are option titles and descriptions
+ as well as the contents of string lists. Used this macro to mark
+ the translatable strings in saneopts.h. More translation support
+ will follow.
+
+2001-04-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROBLEMS: Point to pnm/saned security risks.
+ * TODO: Removed the entries about epson usb mis-detection and check
+ for installed sane versions.
+ * configure configure.in backend/Makefile.in: Added detection of older
+ versions of SANE. The pnm backend is now disabled by default.
+ * backend/dll.c backend/dll.desc: Fixed file descriptor leak (found by
+ Douglas Gilbert). New version: 1.0.2.
+ * backend/net.desc: Added Jochen Eisinger's email address as contact
+ for the net backend.
+ * doc/sane-pnm.man: Point to pnm/saned security risks.
+
+2001-04-21 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.conf: Commented out the usb config entry, this can
+ block other USB scanners from being recognized.
+
+2001-04-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Added Michael Herder and me for pnm. Updated my email
+ address.
+ * TODO: Removed pnm entry about adding more options. Added entry about
+ epson backend freezing when trying to detect non-epson USB scanner.
+ Added entry about adding contact adresses to .desc files. Added
+ comment about me working on a sane man page. Removed entry about OS/2
+ problems in sanei_scsi.c.
+ * configure configure.in: Removed a newline in --help message.
+ * backend/pnm.c: Added several options: gamma tables
+ (-> arrays), resolution option (word list), read only test option
+ (SANE_CAP_SOFT_DETECT), several options for returning status codes
+ in sane_read (all of this is from Michael Herder <crapsite@gmx.net>).
+ Added build version info, print version information in sane_init.
+ Use ../include/sane/ for includes. Version is 1.0.1.
+ * backend/pnm.desc: Updated contact info and version.
+
+2001-04-19 Gerhard Jaeger <g.jaeger@earthling.net>
+ * backend/plustek.c: removed again that old fgets() call - sorry
+
+2001-04-19 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * tools/sane-config.in: Fix typo in previous commit.
+
+2001-04-17 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Fixed types, some reformatting and got rid
+ of a duplicate paragraph.
+
+2001-04-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/dc210.desc backend/dc240.desc backend/microtek2.desc:
+ Update contact information for backends. dc240 status is :NEW.
+ * TODO: added entries about as6e status shouldn't be :new, and
+ installing all documentation files.
+
+2001-04-16 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * Makefile.in: New target 'sort-cvsignore' to keep all .cvsignore
+ files sorted.
+
+ * acinclude.m4 configure.in tools/sane-config.in: Try to guess how
+ to set runtime link path, and make it easier to extend.
+
+ * acinclude.m4 configure.in: Clean up warning flag handling.
+
+2001-04-16 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * README: Updated xsane link.
+ * configure configure.in backend/dll.c backend/dll.desc
+ backend/net.c backend/net.desc include/sane/config.h.in
+ Yet another change in the version system for dll and net.
+ For sane_init return the version of the package but use
+ own internal version number in the source (printed with
+ debugging enabled) and in *.desc. The internal versions
+ of both net and dll are set to 1.0.1. Please increase the
+ build number with every change on the source files.
+ * doc/realeases.txt -> doc/releases.txt. Fixed spelling error.
+ Added entries about sane-backends.html, sane.ps, man pages,
+ platforms page.
+
+2001-04-14 Gerhard Jaeger <g.jaeger@earthling.net>
+ * backend/plustek.c backend/plustek.desc backend/plustek.h
+ backend/plustek-share.h
+ minor fixes and additional scanner models
+ * doc/sane-plustek.man added info about slowIO switch
+
+2001-04-13 Oliver Rauch <Oliver.Rauch@Rauch-domain.de>
+ * changed my email address in AUTHORS
+
+2001-04-13 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS TODO: Added entry about E3 USB chipset.
+ * backend/dll.c backend/dll.desc: New version is 1.0.5. Version and
+ PACKAGE_VERSION is printed with debug level set to 1 or higher.
+ The version numbers of all backends that are loaded are printed
+ at debug level 3 or higher. Print error if backend with wrong
+ major version number is loaded. Some standardization changes
+ concerning the DBG messages.
+ * backend/net.c backend/net.desc: New version is 1.0.5. Version and
+ PACKAGE_VERSION is printed with debug level set to 1 or higher.
+ Some standardization changes concerning the DBG messages.
+ * backend/pnm.c: Return SANE_INFO_RELOAD_PARAMS even if the pnm
+ file doesn't exist or can't be loaded (from mh <crapsite@gmx.net>).
+ * doc/backend-writing.txt: Added AUTHORS to the list of things that
+ should be updated when including a new backend. Added points about
+ avoiding printf and exit in backends.
+ * doc/releases.txt: New file. This text summarizes some points to
+ pay attention to when a new release of sane-backends is made.
+ Additions and corrections are appreciated.
+ * doc/scanimage.man: Add some more information about the -V option.
+ * frontend/scanimage.c: The option -V now also prints the version of
+ the backend (ususally dll).
+
+2001-04-11 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: fixed a bug in error handling for the
+ Linux SG driver verison 3.x
+ * sanei/sanei_scsi.c, configure.in, configure: Usage of direct IO
+ disabled by default.
+ * README.linux: Added a note, how to enable direct IO
+
+2001-04-08 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.c backend/mustek.desc backend/mustek.CHANGES
+ Added detection of the TA for the Paragon 1200 SP Pro. Added
+ warning about not supported Trust scanners. Changed description
+ of contrast and brightness settings. Backend status is "stable"
+ now. New version: 1.0-106.
+ * acinclude.m4 aclocal.m4: Fixed comment concerning dc240.
+ * configure configure.in include/sane/config.h.in: Added test for
+ socklen_t in sys/socket.h. This fixes the compilation problem on
+ Irix.
+ * doc/sane-avision.man doc/sane-ricoh.man doc/sane-s9036.man
+ doc/sane-tamarack.man: find-scanner is now called
+ sane-find-scanner and installed on the system so it's not
+ necessary to point to the tools directory.
+ * frontend/scanimage.c: Fixed too long line in output.
+ * sane-config.in: Name is sane-config again (was sane-backends-config
+ due to the renaming of the package).
+ * TODO: Removed entry about net.c not compiling on Irix and
+ references to find-scanner in the man pages. Updated numbers of
+ the compilation warnings. Still too many, however.
+
+2001-04-07 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/sc240.c backend/dc240.h backend/dc240.conf
+ backend/dc240.desc backend/dll.conf doc/sane-dc240.man:
+ Added dc240 backend for the Kodak DC240 Digital camera (from
+ Peter Fales <peter@fales.com>).
+ * doc/Makefile.in: Added sane-dc240 in section 5.
+ * backend/Makefile.in: Added dc240.
+ * configure configure.in: If the jpeg libs are not available,
+ dc240 is also disabled.
+ * AUTHORS: Added entry for dc240 and updated email address of
+ Peter Fales.
+ * NEWS: First version of the news entry for 1.0.5.
+ * PROJECTS: Removed dc240. Added Microrec ScanMaker 3600.
+ * README: Added dc240.
+ * TODO: Removed dc240. Added entry about keep-alive mechanism in saned.
+ * sane-backends.lsm: Added dc240.
+ * testsuite/.cvsignore: New file. Added entry for Makefile.
+
+2001-03-31 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.*: Next attempt to get the reported number of
+ lines correct for the "color shuffling" part.
+ Added more comments.
+
+2001-03-31 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.c backend/mustek.desc backend/mustek.h
+ backend/mustek.CHANGES: Fixed grascale gamma for the 600 II N.
+ Fixed ADF problems when selecting windows smaller than the
+ whole scan area. Fixed linedistcnace corrections issues concerning
+ ADF and concerning 1200SP V 1.00. New version: 1.0-105.
+
+2001-03-31 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS: Updated entry about Canon 1220U and Umax 1220P / HP3200C.
+ Added entry about Kodak DC-240.
+ * TODO: Added Umax 1200P/2000P & HP 320C + Kodak DC-240 as backends
+ to be included. Added net.c compilation problem.
+
+2001-03-10 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * frontend/saned.c: fixed bug that allowed access to a scanner
+ without being prompted for a password
+
+2001-03-04 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * umack backend updated to version 1.0-build-25
+
+2001-02-26 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * sanei/sanei_scsi.c: removed a possible null pointer
+ dereference in the Solaris/Schilling driver part. (Bug was
+ found and fixed by William L. Sebok)
+
+ * backend/tamarack.c: inconsistent call to sanei_scsi_cmd fixed
+
+2001-02-22 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * TODO: Add comment on how link problems should really be fixed.
+ * TODO: List memleak problem for sane_get_devices().
+
+ * configure.in include/sane/config.h.in: Really move definition of
+ SCSIBUFFERSIZE from CFLAGS to config.h.
+
+ * configure.in testsuite/*: Started on runtime test suite.
+ Currently only tests if PNM test scanning works.
+
+ * sanei/sanei_constrain_value.c sanei/sanei_load_values.c
+ sanei/sanei_save_values.c: Include "sane/sanei.h" to make sure the
+ prototype match the function.
+
+ * backend/pnm.c: Write more sensible error message when failing to
+ open PNM file.
+
+ * include/sane/sanei_backend.h: Include <fcntl.h> before testing
+ for O_NONBLOCK and <limits.h> before testing for PATH_MAX to
+ increase the chances of getting the real value.
+
+2001-02-12 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/dll.c backend/v4l.c: Get rid of small memory leak when
+ using 'scanimage -L'.
+
+2001-02-10 Tom Martone <tom@martoneconsulting.com>
+
+ * backend/bh.c backend/bh.h doc/sane-bh.man
+ added support for Copiscan 8000 series by Mark Temple
+ added options deskew and rotation
+ inquiry compares product to COPISCAN rather than COPISCAN II
+
+2001-02-04 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * hp-backend V0.94, backend/hp.c hp-handle.c hp-scl.h:
+ Switch off lamp after scan
+
+2001-01-31 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * sanei/linux_sg3_err.h: New version provided by Douglas Gilbert.
+ Does not longer #include <linux/../scsi/scsi.h> and
+ #include <linux/../scsi/sg.h>
+ * sanei/sanei_scsi.c (Linux part): fixed some format errors in
+ debug output; added debug: system("cat /proc/scsi/sg/debug 1>&2"),
+ if debug level >= 255. (Suggestion by Douglas Gilbert)
+
+2001-01-23 Oliver Rauch <Oliver.Rauch@Wolfsburg.DE>
+
+ * TODO: sane-config changes
+
+2001-01-21 Tom Martone <tom@martoneconsulting.com>
+
+ * backend/dll.conf: Added bh
+
+2001-01-21 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * AUTHORS: Added Tom Martone.
+ * PROJECTS: Removed bh (now included in sane).
+ * README: Added entry for sane-bh(5).
+ * TODO: Removed bh. Updated BearPaw entry. Added entry about v4l
+ problem.
+ * backend/v4l.c: Changed comment as v4l is part of the sane package.
+
+2001-01-20 Tom Martone <tom@martoneconsulting.com>
+
+ * doc/.cvsignore: Added sane-bh.5.
+
+2001-01-20 Tom Martone <tom@martoneconsulting.com>
+
+ * backend/bh.c backend/bh.conf backend/bh.h doc/sane-bh.man
+ Added new backend Bell and Howell Copiscan scanners
+ * backend/bh.desc
+ Updated version from (0.1) to 1.0-4
+ Referenced manpage
+ * backend/Makefile.in
+ Added bh to PRELOADABLE_BACKENDS
+ Added libsane-bh.la dependencies
+ * doc/Makefile.in
+ Added sane-bh.5 to SECT5
+
+2001-01-17 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.c backend/mustek.desc backend/mustek.h
+ backend/mustek.CHANGES doc/sane-mustek.man:
+ Added 36 bit mode for Pro models. Removed support for "special"
+ modes, used options instead. Code cleanup. Updated manpage
+ concerning sane-find-scanner. New version: 1.0-104.
+ * configure: regenerated from configure.in.
+
+2001-01-14 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_scsi.c: Make sure to initialize uninitialized
+ variable 'defined' to zero.
+
+ * include/sane/sanei_wire.h: Add missing prototype for
+ sanei_w_ptr() and sanei_w_bool().
+
+ * configure.in include/sane/config.h.in: Move definition of
+ HAVE_DEV_URANDOM and SCSIBUFFERSIZE from CFLAGS to config.h.
+
+2001-01-07 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * sanei/sanei_scsi-c: (Linux part) timeout for SCSI commands
+ sent with the SG driver version increased; debug output of
+ device status, host status, driver status and sense buffer
+ added.
+
+2001-01-09 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS TODO: Added/updated entries about backends for Mustek
+ BearPaw and 1200 UB scanners.
+
+2001-01-07 Abel Deuring <a.deuring@satzbau-gmbh.de>
+
+ * sanei/sanei_scsi-c: (Linux part) improved detection of
+ sanei_scsi_max_request_size. Setting SANE_SG_BUFFERSIZE for
+ low drivers which don't support scatter-gather should
+ no longer be necessary.
+ * sanei/sanei_scsi-c: (Linux part) Added support for the new
+ devfs in sanei_scsi_find_devices-
+ * backend/sharp.c: Test for existence of shm.h added.
+ * TODO: Removed entry about missing detection of shm.h in sharp
+ backend.
+
+2001-01-03 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * PROJECTS: Added Umax 1220P / HP3200C.
+
+2000-12-31 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * tools/find-scanner.c: Removed. Now called sane-find-scanner.
+ * tools/sane-find-scanner: New file (was find-scanner).
+ * tools/.cvsignore tools/Makefile.in tools/README: Updated because
+ of name change. sane-find-scanner is installed now.
+ * README README.linux: Updated because of sane-find-scanner.
+ * frontend/scanimage.man: Updated because of sane-find-scanner.
+ * doc/sane-find-scanner.man: New file.
+ * doc/.cvsignore doc/Makefile.in: Added sane-find-scanner(1).
+ * TODO: Updated concerning sane-find-scanner. Added entry about
+ qcam /tmp file handling. Some spelling corrections.
+
+2000-12-31 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * backend/mustek.CHANGES backend/mustek.c backend/mustek.desc
+ backend/mustek.h doc/sane-mustek.man: Added calibration for Pro
+ scanners and the SE 12000 SP Plus. Added option to use the full
+ legal size of the Paragon 1200 LS scanner. Added fast preview for
+ Pro scanners. Bug fixes. New version: 1.0-103.
+
+2000-12-25 Karl Heinz Kremer <khk@khk.net
+
+ * backend/epson.*: Version 0.2.01
+ Added bit-depth selection again.
+ Fixed problem with bilevel scanning with Perfection610: The
+ line count has to be an even number with this scanner.
+ Several initialization fixes regarding bit depth selection.
+ This version goes back into the CVS repository, the 1.0.4
+ release is out and therefore the code freeze is over.
+ Some general cleanup, added more comments.
+
+2000-12-23 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * TODO: Removed entry about net/saned crashes.
+ * backend/net.c: Fixed segfault when using SANE_TYPE_STRING options
+ (e.g. scanimage on localhost). Added checks to prevent other
+ segfaults. Fixed some warnings.
+ * backend/snapscan.desc: Changed to use new homepage.
+
+2000-12-23 Henning Meier-Geinitz <hmg@gmx.de>
+
+ * NEWS: Added date of release.
+ * TODO: Removed entries about PATH_MAX, sanei_scsi_find_devices, and
+ shm.h. Added entry about the necessity to check HAVE_SYS_SHM_H.
+ * configure configure.in include/sane/config.h.in: Default to
+ --enable-warnings again. Don't set "-ansi" for OS/2. Test for
+ sys/shm.h.
+ * backend/GUIDE: Moved to doc/backend-writing.txt.
+ * doc/backend-writing.txt: New file (moved from backend/GUIDE).
+ Added comments about sanei-backend.h and PATH_MAX.
+ * include/sane/sanei_backend.h: Added define for PATH_MAX (if
+ necessary).
+ * sanei/sanei_scsi.c: Implemented sanei_scsi_find_devices for FreeBSD
+ (from ports@FreeBSD.org).
+ * tools/Makefile.in: Use INSTALL_SCRIPT instead of INSTALL_PROGRAM for
+ sane-config (from ports@FreeBSD.org).
diff --git a/ChangeLogs/ChangeLog-1.0.6 b/ChangeLogs/ChangeLog-1.0.6
new file mode 100644
index 0000000..a732a23
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.6
@@ -0,0 +1,667 @@
+****** Release of sane-backends 1.0.6. End of code freeze ******
+
+2001-11-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sane-backends.lsm: Added keyword gphoto.
+
+2001-10-31 Peter Fales <peter@fales.com>
+
+ * acinclude.m4, aclocal.m4, configure - Fix build failure due to
+ renaming of gphoto2 header files
+
+2001-10-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/apple.desc: Updated URL.
+ * backend/canon_pp.desc: Fixed two wrong scanner names (from
+ "Matthew Duggan" <stauff@guarana.org>).
+ * backend/m3091.desc backend/m3096.desc backend/sp15c.desc:
+ Updated URL.
+
+2001-10-29 Peter Fales <peter@fales.com>
+
+ * backend/dc25.desc - Update URLs
+
+2001-10-19 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * set correct backend version number in backend/umax.desc
+
+
+****** code freeze sane-1.0.6 / sane-pre1-1.0.6 *****
+
+
+2001-10-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.desc: Added missing scanner descriptions (from
+ karsten.festag@t-online.de (Karsten Festag)).
+ * NEWS: Updated version numbers. Added release date.
+ * configure configure.in: New version: 1.0.6. Disabled warnings by
+ default.
+
+2001-10-28 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/gphoto2.conf: the ghoto2 people
+ made some pretty radical changes to the API and broke
+ the gphoto2 backend. Made the changes to allow the
+ gphoto2 backend to work with the latest changes from the
+ gphoto2 library CVS.
+
+2001-10-28 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed bug in recognition of faulty Perfection 1650
+
+2001-10-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed entry about @LIBDIR@ and @CONFIGDIR@ in man pages.
+ Added Entry about sanei_scsi return values and timeout.
+ * backend/microtek2.desc backend/microtek2.h doc/sane-microtek2.man:
+ Increased version number to 0.95. Updated man page. Patch from
+ karsten.festag@t-online.de (Karsten Festag).
+
+2001-10-27 Peter Kirchgessner <peter@kirchgessner.net>
+
+ *backend/hp-accessor.c hp-device.c hp-handle.c hp-hpmem.c hp-option.c
+ hp-scl.c:
+ Use ../include/lassert.h
+
+2001-10-17 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * umax backend bugfixes (new version number: 1.0 build 31):
+ man page uses @LIBDIR@ and @CONFIGDIR@,
+ calibration fix for Supervista S-12 and compatible scanners
+ directory backend:
+ umax.c umax-scanner.c umax-scsidef.h
+ directory doc:
+ sane-umax.man /umax/sane-umax-advanced-options-doc.html
+ umax/sane-umax-standard-options-doc.html umax/umax.CHANGES
+
+2001-10-27 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/Makefile.in backend/snapscan-usb.c
+ backend/snapscan-usb.h backend/snapscan.c
+ backend/snapscan.h
+ Check USB vendor ID to avoid USB hangup
+ Fix dither matrix computation bug
+
+****** snapshot 2001-10-27 *****
+
+2001-10-26 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.conf
+ Make /dev/sga the default device to avoid USB hangup
+
+2001-10-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed net/saned cancel problem. Added entry about
+ clarifying sane_get_select_fd/sane_cancel in sane.tex.
+ Added entry about sanei_usb and control messages.
+ * sanei/sanei_usb.c: Fixed vendor/device detection for Linux
+ versions >= 2.4.13.
+
+2001-10-25 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * NEWS backend/snapscan.c backend/snapscan.desc
+ Change snapscan backend version number to 1.4.0
+
+2001-10-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek2.c backend/microtek2.desc backend/microtek2.h
+ doc/sane-microtek2.man: Updated microtek2 backend to build
+ 20011023 (from karsten.festag@t-online.de (Karsten Festag)).
+ Bugfix for scsi_read_image_status - supports now the old and the
+ new method. Improved backend-calibration supports brightness and
+ contrast settings and color balancing. Enable 12 bit per color
+ scanning with Scanmaker 9600XL (and other types that use the segreg
+ pixel transfer format and support 12 bit, untested). 10 bit does not
+ work yet. Make C6 USB work.
+
+2001-10-24 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/sane-snapscan.man
+ Documentation update.
+
+2001-10-23 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c
+ Limit number of scan lines for quality calibration to fit in
+ SCSI buffer.
+
+2001-10-21 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.desc, doc/sane-hp.man
+ Add support for OfficeJet PSC 900 series
+
+2001-10-20 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Fix for older Perfection 1650 scanners -
+ their firmware only reports half of the vertical scanning
+ area and they need to swap two color channels.
+
+2001-10-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added Coolscan2 backend.
+
+2001-10-15 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/gphoto2.h: Cosmetic cleanup
+
+****** Feature freeze for sane-1.0.6 is active *****
+****** snapshot 2001-10-15 *****
+
+2001-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed some entries about net/saned.
+ * doc/saned.man: Clear up that a FQDN must be used in
+ saned.conf and that localhost is allways granted acces.
+ * NEWS: Updated.
+
+2001-10-14 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/mustek_pp.conf: added comment about changes in
+ the naming of ports in 2.4.x
+
+2001-10-13 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax.c, bachend/umax-scanner.c, backend/umax.desc,
+ doc/umax/sane-umax-config-doc.html, doc/umax/umax.CHANGES,
+ doc/sane-umax.man:
+ update to sane-umax-1.0 build 30:
+ - added EDGE KTX-9600US as supported scanner
+ - Changing scansource does not change lower left selection
+ edge if not necessary
+
+2001-10-12 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan.h
+ backend/snapscan.c
+ Update to snapscan-20011012
+
+2001-10-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_wire.c: Added debug output (based on patch
+ from Jochen Eisinger <jochen.eisinger@gmx.de>).
+ * backend/net.c backend/net.desc: Better and more debug output
+ (based on patch from Jochen Eisinger <jochen.eisinger@gmx.de>).
+ Fixed some debug output and formatting issues of the byte order
+ patch. Increased version number to 1.0.5.
+ * frontend/saned.c: More debug output. Used DBG instead of
+ fprintf/perror. Fixed some formatting issues.
+
+2001-10-10 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * sanei/sanei_wire.c: replaced memcpy with memmove
+
+2001-10-10 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * PROJECTS: added URL to HP ScanJet 2200c project
+
+2001-10-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/m3096g-scsi.h backend/m3096g.c backend/m3096g.h
+ doc/sane-fujitsu.man: Update (from Oliver Schirrmeister
+ <oschirr@abm.de>). Added: Support for ipc2/3 and cmp2 options;
+ support for duplex-scanners m3093DG, m4097DG; constraint checking
+ for m3093; support EVPD (virtual product data); support ADF paper
+ size spezification.
+ * AUTHORS: Added Oliver Schirrmeister for m3096g, removed the active
+ sign (*) from Randolph Bentson.
+
+2001-10-09 Peter Fales <peter@fales.com>
+
+ * backend/dc210.c, backend/dc210.h: Fix compiler warnings
+
+2001-10-09 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan-usb.c
+ backend/snapscan.c
+ Fix compiler warnings
+
+2001-10-09 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.desc: Yet another try at getting a format that
+ generates the right web page.
+
+2001-10-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/ibm.desc: Removed old entry.
+ * backend/sm3600.desc: Changed status to :alpha.
+ * doc/sane-agfafocus.man: Fixed some small mistakes.
+ * doc/sane-apple.man: Fixed some small mistakes. Added link
+ to mostang.com mailing list archive.
+ * doc/sane-artec.man: Fixed spelling mistake and formatting issues.
+ * doc/sane-nec.man: Fixed problem with table.
+ * doc/sane-sharp.man: Fixed problem with table.
+ * backend/sharp.desc: Added link to sane-sharp manual page.
+ * doc/sane_mustek_pp.man: Removed link to sane-musteka4s2 (doesn't
+ exist).
+ * doc/sane-abaton.man doc/sane-agfafocus.man doc/sane-apple.man
+ doc/sane-bh.man doc/sane-microtek.man doc/sane-pint.man
+ doc/sane-st400.man: Added link to mostang.com mailing list page.
+ * backend/net.c backend/net.desc: Fixed byte order problems for 16
+ bits per color image data (from mh <crapsite@gmx.net>).
+ * TODO: Removed entries about .desc files, man pages and net.c
+ byte-order problem.
+
+2001-10-09 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan-sources.c
+ backend/snapscan-sources.h backend/snapscan-usb.c
+ backend/snapscan-usb.h backend/snapscan.c
+ backend/snapscan.conf backend/snapscan.desc
+ backend/snapscan.h
+ Update to snapscan-20011008
+
+2001-10-08 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.desc: Another try at getting a format that
+ generates the right web page.
+
+2001-10-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/ibm.desc: New file. Backend for the IBM 2456 and the
+ Ricoh IS-410.
+ * PROJECTS: Added IBM backend. Removed gphoto2 (now included in
+ distribution).
+
+2001-10-07 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.desc: Cleaned up syntax errors
+ doc/sane.man: Added gphoto2 backend to digital camera section
+ AUTHORS: Added gphoto2 backend/author
+
+2001-10-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb.conf backend/mustek_usb.desc
+ backend/mustek_usb_high.c backend/mustek_usb_high.h
+ backend/mustek_usb_low.c backend/mustek_usb_low.h
+ backend/mustek_usb_mid.c backend/mustek_usb_mid.h
+ doc/mustek_usb/mustek_usb.CHANGES: Fixed problem with 1200UB
+ sensor detection. Started work on 1200 USB. New version:
+ 1.0-7.
+
+2001-10-07 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * created directory "po"
+ added files po/epson.de.po and po/umax.de.po
+
+ we have to define how we will handle (include+install)
+ translations, in the moments the files are only added
+ to the directory structure without any function
+
+
+2001-10-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/canon_pp.desc: New file (from Matthew Duggan
+ <stauff@guarana.org>.
+
+2001-10-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed entries about hp and plustek backends.
+ * backend/microtek2.c backend/microtek2.h doc/sane-microtek2.man:
+ Updated Microtek2 backend to version 0.9 build 20010828 (from
+ Karsten Festag <karsten.festag@t-online.de>).
+ * NEWS: Updated.
+
+2001-10-04 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-accessor.c hp-device.c hp-handle.c hp-hpmem.c
+ hp-option.c hp-scl.c
+ Use include "../include/assert.h"
+ doc/sane-hp.man
+ Tell about subscribing to sane-devel
+
+2001-10-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.hp-ux: Lots of new and updated information (from
+ Michael Piotrowski <mxp@dynalabs.de>).
+
+2001-10-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c backend/dll.desc: HP/UX uses .sl for shared libs.
+ Changed status to "stable". Increased version number.
+ * tools/sane-find-scanner.c: Check for __hpux instead of __hpux__.
+
+2001-10-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added possible saned problem with (not) fully qualified
+ domain names.
+
+2001-09-29 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/gphoto2.h, backend/gphoto2.desc:
+ Cosmetic cleanup and minor fixes. Added list of gphoto2
+ supported cameras to gphoto2.desc, even though most of them
+ are not tested and probably not working yet.
+
+2001-09-24 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/gphoto2.h, backend/gphoto2.conf:
+ Cosmetic cleanup and changes to reflect changes to the gphoto2
+ API.
+
+2001-09-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added SCSI problem with Linux/Sparc.
+
+2001-09-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: Fixed detection of SCSI devices that return
+ device strings (vendor, product) consisting of spaces.
+ sanei_scsi_req_enter2 was changed to copy the CDB and data before
+ sending it to the device. Both patches are from Abel Deuring.
+ * sanei/sanei_config2.c: Removed some remainings of the USB merge.
+
+2001-09-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/umax1220u.desc: New file (from Marcio Luis Teixeira
+ <marciot@holly.colostate.edu>).
+ * PROJECTS: Updated Winsane address.
+ * TODO: Added net/saned and .desc file entries. Removed scanimage/adf
+ extention entry.
+ * backend/pnm.c backend/pnm.desc: Make sure that *length=0 in
+ sane_read(). Added more debug output.
+
+2001-09-18 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.desc:
+ corrected compile problem when no ppdev available,
+ changed status from :new to :beta.
+
+2001-09-17 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c: Converted from test code using pipes to
+ the command line program to using the camera API. Currently
+ only supportes cameras that natively generate jpeg files.
+
+2001-09-17 Tom Martone <tom@martoneconsulting.com>
+ * backend/bh.desc
+ changed status from :new to :beta
+
+2001-09-17 Simon Munton <simon@munton.demon.co.uk>
+ * backend/pie.c backend/pie.conf: Changed ADLIB to AdLib as this is
+ what the scanner returns and the comparison is case sensitive
+
+ * doc/sane-pie.man: Update the status of the AdLib JetScan 630
+
+2001-09-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Removed (very) old entries. Removed backends which
+ are included in the distribution now. Updated bearpaw and OS/2
+ entries.
+ * NEWS: Created preliminary entry for 1.0.6.
+
+2001-09-16 Peter Fales <peter@fales.com>
+
+ * backend/dc240.desc: Change status from new to alpha
+
+ acinclude.m4, aclocal.m4, configure: Cosmetic changes to
+ help text and change function used in gphoto2 lib check due
+ to API change
+
+2001-09-16 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_mid.c
+ tools/umax_pp.c:
+ change ppdev support to compile and run on linux kernel
+ prior to 2.4.5
+
+2001-09-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb.desc
+ backend/mustek_usb_high.c backend/mustek_usb_high.h
+ backend/mustek_usb_mid.c backend/mustek_usb_mid.h
+ doc/sane-mustek_usb.man doc/mustek_usb/mustek_usb.CHANGES
+ doc/mustek_usb/mustek_usb.TODO: Update to mustek_usb backend
+ 1.0-6. Increased resolution to the maximum hardware supports.
+ No fixed resolution any more. Gamma table support. Bugfixes.
+
+2001-09-12 Peter Fales <peter@fales.com>
+
+ * acinclude.m4 aclocal.m4 configure configure.in: Changes to
+ start using gphoto2 libraries in gphoto2 backend
+
+ backend/gphoto2.c backend/gphoto2.h: Use gphoto2 headers and
+ library functions for list management
+
+2001-09-12 Peter Fales <peter@fales.com>
+
+ * backend/doc/.cvsignore: Added gphoto2 man page to .cvsignore
+
+2001-09-11 Peter Fales <peter@fales.com>
+
+ * backend/doc/Makefile.in: Added man page for gphoto2 backend
+
+2001-09-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: Added mustek_usb again.
+
+2001-09-10 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/Makefile.in, configure.in, configure,
+ acinclude.m4, aclocal.m4: Add gphoto2 backend to Makefiles.
+ It's disable if the gphoto2 program is not present.
+
+2001-09-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc doc/mustek/mustek.CHANGES:
+ Fixed problem with gamma correction. New version: 1.0-113.
+ * backend/mustek_usb.c backend/mustek_usb.desc
+ backend/mustek_usb_high.c backend/mustek_usb_low.c
+ backend/mustek_usb_low.h backend/mustek_usb_mid.c
+ backend/mustek_usb_mid.h doc/mustek_usb/mustek_usb.CHANGES:
+ 200 dpi support for 600 CU. Some internal reorganizations.
+ New version: 1.0-5.
+
+2001-09-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb.conf
+ backend/mustek_usb.desc backend/mustek_usb.h
+ backend/mustek_usb_high.c backend/mustek_usb_high.h
+ backend/mustek_usb_low.c backend/mustek_usb_low.h
+ backend/mustek_usb_mid.c backend/mustek_usb_mid.h:
+ Added backend mustek_usb for Mustek USB scanners. Currently the
+ 600 CU, 1200 CU, 1200 CU Plus and 1200 UB are supported.
+ * backend/Makefile.in dll.conf: Added entries for mustek_usb.
+ * doc/Makefile.in doc/mustek_usb/mustek_usb.CHANGES
+ doc/mustek_usb/mustek_usb.TODO doc/sane-mustek_usb.man:
+ Added mustek_usb documentation.
+ * doc/sane.man: Updated concerning mustek_usb.
+ * PROJECTS TODO: Updated concerning mustek_usb.
+ * doc/.cvsignore: Added sane-mustek_usb.5.
+ * AUTHORS: Added mustek_usb authors.
+ * backend/pnm.c: Fixed SANE-standard compliancy bug in sane_read:
+ length must be set to 0 if status != SANE_STATUS_GOOD.
+
+2001-09-08 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * added information for device filesystem permissions
+ in doc/sane-scsi.man
+
+2001-09-06 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, backend/gphoto2.h, backend/gphoto2.conf,
+ backend/gphoto2.desc, doc/sane-gphoto2.man: Initial files
+ for gphoto2 backend (interface to cameras supported by the
+ gphoto2 commands/libraries). Makefile changes coming soon.
+
+2001-09-06 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: made CmdSetDataBuffer static
+ * backend/Makefile.in: removed sanei_config2 from
+ umax_pp depencies
+
+2001-09-05 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/net.c: ignoring size of parameter value for
+ SANE_ACTION_SET_AUTO (as described in the SANE standard)
+
+2001-09-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_ab306.c: Added FreeBSD support.
+ * include/sane/sanei_usb.h sanei/sanei_config2.c sanei/sanei_usb.c:
+ Moved the function to check the "usb VENDOR PRODUCT" config
+ lines to sanei_usb to avoid linking problems.
+ * backend/Makefile.in: Fixed spelling mistakes concerning st400.
+ * Makefile.in: make libcheck now also prints the name(s) of the
+ `illegal' functions.
+
+2001-09-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added m3096g updates and website. Added 600CU to list
+ of supported Mustek USB scanners.
+
+2001-09-04 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/net.desc doc/saned.man doc/sane-net.man: added
+ pointer to new saned homepage
+ (http://home.nexgo.de/jochen.eisinger/saned/)
+
+2001-09-04 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp-device.[hc] hp-handle.c hp-scl.[hc]
+ hp-option.[hc] hp.[hc] hp.desc
+ doc/sane-hp.man:
+ Add support for active XPA
+ Check if paper in ADF for ADF scan
+ Add option lamp off
+ Remove some really unused parameters
+
+2001-09-04 Peter Fales <peter@fales.com>
+
+ * backend/PROJECTS: Added gphoto2 project to provide support
+ for some or all of the cameras supported by gphoto2. (See
+ http://www.gphoto.org)
+
+2001-09-03 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_mid.c
+ backend/umax_pp_mid.h backend/umax_pp.c tools/umax_pp.c:
+ Make use of ppdev char device when available, so that
+ the backend does not require root priviledges anymore.
+
+2001-08-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: Added sanei_usb dependency.
+
+2001-08-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c doc/sane.man frontend/scanimage.c sanei/sanei_usb.c
+ tools/sane-find-scanner.c : Fixed minor bugs in debug output and
+ documentation.
+ * backend/mustek.c backend/mustek.desc doc/sane-mustek.man
+ doc/mustek/mustek.CHANGES: Update to backend version 1.0-112.
+ Some minor fixes for returning the scan slider and OS/2.
+
+2001-08-26 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax.c backend/umax.desc doc/umax/umax.CHANGES:
+ umax scsi backend update to version 1.0 build 29
+
+2001-08-19 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c tools/umax_pp.c:
+ Finished probe code cleaning, increased version number
+
+2001-08-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Fixed bug concerning libusb that
+ broke compilation on NetBSD.
+ * doc/sane-find-scanner.man doc/sane-usb.man sanei/sanei_usb.c
+ tools/sane-find-scanner.c: Added (limited) support for FreeBSD.
+
+2001-08-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei_thread.h sanei/sanei_thread.c: Updated
+ sanei_thread functions (from Yuri Dario) and made clear that
+ they shouldn't be used directly.
+ * include/sane/sanei_usb.h sanei/Makefile.in sanei/sanei_usb.c
+ doc/Makefile.in doc/sane-usb.man: Added sane USB interface.
+ * include/sane/sanei_config.h sanei/sanei_config2.c: Added support
+ for searching USB devices ("usb vendor product").
+ * doc/sane-find-scanner.man tools/Makefile.in
+ tools/sane-find-scanner.c: Added USB support.
+ * doc/sane.man: Added information for USB scanners.
+ * TODO: Removed USB entries. Removed entry about checking for
+ /etc/ld.so.conf, this shouldn't be necessary any longer. Removed
+ entry about saned freezing, no bug reports about this for a long
+ time. Removed entry about moving .desc files, this doesn't seem to
+ be necessary. Added proposal to include libieeee1284.
+ * doc/.cvsignore: Updated concerning sane-usb.5.
+
+2001-08-05 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Previously, the backend always assumed that
+ the images were stored in the 100DC240 directory in the
+ camera. It now determines the directory automatically. If
+ multiple directories are present, it will eventually let you
+ pick the directory, but that feature hasn't been completed
+ yet.
+
+2001-08-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.desc: New file. This backend supports
+ the Mustek 1200UB, 1200CU and 1200CU Plus.
+
+ * PROJECTS TODO: Updated concerning mustek_usb backend.
+
+2001-08-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS TODO: Added UMAX Astra 1220U backend.
+
+2001-08-01 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/sane-umax_pp.man backend/umax_pp_low.c:
+ One more step toward cleaner scanner probing. Added
+ message about EPP mode not being available. Slight man
+ update to emphasize EPP mode setting.
+
+2001-07-24 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c backend/umax_pp_low.c:
+ Fixed higlight parsing bug in conf file. Fixed 'greenish'
+ looking scans bug. Started probe sequence rewrite/cleanup.
+
+2001-07-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_init_debug.c: Use syslog.h instead of sys/syslog.h.
+
+2001-07-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc doc/mustek/mustek.CHANGES:
+ Call stop_scan only when scan was cancelled. Some more debug
+ messages. New version: 1.0-111.
+
+2001-07-11 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Using scanimage with the "thumbnails" option
+ and attempting to connect to a powered off camera was causing
+ a core dump.
+
+2001-07-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc backend/mustek.h
+ doc/mustek/mustek.CHANGES: Fixed bug in fix_line_distance_block
+ that resulted in too much data transfered to the frontend.
+ New version: 1.0-110.
+
+2001-07-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.conf backend/mustek.desc
+ backend/mustek.h doc/sane-mustek.man doc/mustek/mustek.CHANGES:
+ Fixed problem with SCSI command queuing. Fixed problem that
+ resulted in black images on some Paragon 6000SP scanners. Added
+ option to disable backtracking. New version: 1.0-109.
+
+2001-07-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/Makefile.in: Use 6 lines as top/bottom margin for man2html
+ to avoid losing 2 lines at every page break.
+ * backend/mustek.c backend/mustek.conf backend/mustek.desc
+ doc/sane-mustek.man doc/mustek/mustek.CHANGES: Added option
+ for disabling double-buffering. Updated man page. New version:
+ 1.0-108.
+
+2001-07-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Enabled warnings by default.
+
+Older entries can be found in ChangeLog-1.0.5.
diff --git a/ChangeLogs/ChangeLog-1.0.7 b/ChangeLogs/ChangeLog-1.0.7
new file mode 100644
index 0000000..492ad68
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.7
@@ -0,0 +1,856 @@
+****** Release of sane-backends 1.0.7. End of code freeze ******
+
+2002-02-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure: Added a missing "test" command
+ in check for gphoto2. This fixes error messages while testing for
+ gphoto2 and a false positive result.
+ * TODO: Added entries about config.h, sane-backends.html, device file
+ types, the HPUX -ansi problem, and make distclean.
+ * backend/Makefile.in backend/coolscan2.desc: Added description file
+ for coolscan2 backend (from Major Andras
+ <andras@users.sourceforge.net>).
+ * backend/gphoto2.desc: gphoto2 is no longer "NEW".
+
+2002-02-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added info about Canon N670U project. Added info about
+ Sceptre S1200 project.
+ * backend/sceptre.desc backend/Makefile.in: New file (from Frank Zago
+ <fzago@greshamstorage.com>).
+ * backend/microtek2.desc doc/sane-microtek2.man: Updated microtek2
+ documentation (from karsten.festag@t-online.de (Karsten Festag)).
+ * Makefile.in README.netbsd: New file. Information about problems
+ with shared libs.
+ * configure configure.in: Include <sys/types.h> and <sys/ipc.h> also
+ when checking for struct semun in <sys/sem.h>. This fixes a
+ compilation problem on FreeBSD.
+
+2002-01-31 Peter Fales <peter@fales.com>
+
+ * configure, acinclude.m4, aclocal.m4 - Latest gphoto2 updates
+ changed the version number, breaking the gphoto2 backend. This
+ is a one line change to correct that.
+
+2002-01-31 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added info about GT-68xx backend.
+
+2002-01-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: New version: 1.0.7. Disabled extra version.
+ Disabled warnings by default.
+ * TODO: Added entry about adding well known types and manufacturers
+ to sane.tex.
+
+---- CODE FREEZE FOR SANE 1.0.7 ---
+---- sane-backends-1.0.7-beta2 ----
+
+2002-01-27 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek-usbhw.c: Fixed LM9831 problem...
+
+2002-01-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/microtek.c backend/microtek2.h: Fixed undefined behaviour
+ problem and Scanmaker X12 problems. New version: 20020127. Code from
+ karsten.festag@t-online.de (Karsten Festag).
+ * lib/inet_ntop.c: Fixed problem with header include order on Irix.
+ * configure configure.in backend/snapscan-usb.c
+ include/sane/config.h.in: Only define union semun if not already
+ defined in <sys/sem.h>. Fixes compilation bugs on Irix and FreeBSD.
+
+2002-01-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * NEWS: Updated for sane-backends 1.0.7.
+ * TODO: Added point about sane-find-scanner. Added details about
+ NetBSD linking problem.
+
+2002-01-25 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.desc, doc/sane-epson.man: Added Perfection
+ 1650 and 2450 scanners to supported scanners list.
+
+2002-01-25 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * frontend/scanimage.c: illegal placeholders in the -f format
+ string are now replaced by "%%". (Bug found by Peter Fales)
+
+2002-01-25 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek-usb.h: changed according to avoid
+ some gcc-3 warnings
+ * docb/sane-plustek.man: Update
+
+2002-01-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in: Added SHELL variable. Fixes po generation on OS/2.
+ * po/README: Added some comments on what the Makefile actually does.
+ * doc/backend-writing.txt doc/sane.man: Added note about doxygen
+ configuration for sanei.
+
+2002-01-24 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: corrected 2000P mis-detection by adding
+ pauses in epat wake-up.
+
+2002-01-23 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan.h
+ Fix recognition of Acer 320U, Fix for spaces in model ID strings,
+ Change snapscan version to 1.4.7
+
+2002-01-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek_usb.c doc/mustek/mustek.CHANGES
+ doc/mustek_usb/mustek_usb.CHANGES: Fixed undefined operation
+ warnings.
+
+2002-01-22 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c:
+ Do not use quantization for scan areas
+ * backend/snapscan-scsi.c:
+ Add sense handling for sense code 0x0b to avoid infinite loops,
+ Change snapscan version to 1.4.6
+ * backend/snapscan.conf
+ Use /dev/sg0 as default instead of the more uncommon /dev/sga
+
+---- sane-backends-1.0.7-beta1 ----
+
+2002-01-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Made entry about TL_X < BR_X, jpeg->sanei, and sanei_scsi
+ more exact. Added entry about new version of libtool. Removed entry
+ about exit().
+ * backend/Makefile.in po/Makefile.in: Added missing files to DISTFILES.
+ Fixed incompatibilities with older versions of gmake.
+
+2002-01-21 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * doc/sane-umax.man, backend/umax.conf:
+ added new umax.conf options and explaination
+
+2002-01-20 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c: change the options names to match SANE standard
+ * backend/plustek-usbhw.c backend/plustek-usbio.c
+ backend/plustek-usbscan.c:
+ Minor fixes, according to the National Sources
+
+2002-01-20 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: set timeout value for all operating
+ systems to 1 minute. The timeout value is now derived from
+ the macro SANE_SCSICMD_TIMEOUT.
+
+2002-01-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc doc/mustek/mustek.CHANGES:
+ Fixed calibration bug for the 1200 Pro. New version: 1.0-118.
+ * include/sane/sanei_thread.h: Removed */.
+ * backend/tamarack.c: Used return SANE_STATUS_INVAL instead of exit.
+
+2002-01-19 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c - Fixed a bug that can cause driver errors
+ following image capture, and bug that was incorrectly disabling
+ thumbail previews.
+
+2002-01-19 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * updated umax.de.po
+
+2002-01-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Removed entries about kill(-1,...), wrong .desc links,
+ sanei documentation, added entries about exit(), and sanei
+ doxygen documentation.
+ * backend/mustek.c doc/mustek/mustek.CHANGES: Fixed some option
+ name issues.
+ * doc/sane-mustek-usb.man: Fixed typo.
+ * po/Makefile.in po/README po/epson.de.po po/mustek.de.po
+ po/mustek_usb.de.po po/plustek.de.po po/pnm.de.po po/saneopts.de.po
+ po/umax.de.po: Moved the options contained in saneopts.h into a
+ seperate file. So the backend po files are much smaller and easier to
+ read and the saneopts translations are consistent through backends.
+ * backend/microtek2.c backend/microtek2.h: Update to backend
+ 0.95-20020112 (from karsten.festag@t-online.de (Karsten Festag)).
+ * include/sane/sanei.h include/sane/sanei_config.h
+ include/sane/sanei_thread.h sanei/sanei_config.c: Made documentation
+ doxygen-compatible. Move comments from sanei_config.c to
+ sanei_config.h.
+
+2002-01-18 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Also recognize the GT-xxxx scanners when connected via
+ SCSI or IEEE-1394 interface
+
+2002-01-17 Peter Fales <peter@fales.com>
+
+ * configure, acinclude.m4, aclocal.m4 - Update gphoto2 version check
+ * backend/gphoto2.c - Improved support for options not
+ supported by camera. Cosmetic cleanup.
+
+2002-01-18 Rene Rebe <rene.rebe@gmx.net>
+
+ * docs/sane-avision.man: added the new disable-gamma-table option
+ to the sane-avision man-page.
+
+2002-01-18 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.h, backend/avision.c, backend/avision.conf:
+ many cleanups, fixed sane_cancel to not hang - but perform the
+ cancel, added a disable-gamma-table option and added the possible
+ options into the avision.conf file
+
+2002-01-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/Makefile.in: Added doxygen-sanei.conf to DIST_FILES.
+
+2002-01-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sanei/sanei_usb.h: Made documentation doxygen compatible.
+
+2002-01-17 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c, doc/sane-gphoto2.man
+ Remove calls to exit()
+ Support cameras which store all files in top-level directory
+
+2002-01-17 Peter Fales <peter@fales.com>
+
+ * configure, acinclude.m4, aclocal.m4 - (Really) disable
+ gphoto2 backend unless specifically requested by the user (using
+ --with-gphoto2) and the right CVS version of gphoto2 is found
+
+2002-01-17 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.c removed to call exit in a debug case
+
+2002-01-17 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c backend/plustek.h
+ Fixed conditional compilation problem
+ Updated localization strings
+ * doc/sane-plustek.man: Updated
+ * po/plustek.de.po: Updated
+ * doc/doxygen-sanei.conf: Added doxygen configuration file for
+ the sane libs
+ * include/sane/sanei.h include/sane/sanei_ab306.h
+ include/sane/sanei_lm983x.h sanei/sanei_lm983x.c:
+ Updated to support doxygen comments
+
+2002-01-17 Peter Fales <peter@fales.com>
+
+ * configure.in, configure, acinclude.m4, aclocal.m4 - Disable
+ gphoto2 backend unless specifically requested by the user (using
+ --with-gphoto2) and the right CVS version of gphoto2 is found
+
+2002-01-17 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.h backend/avision.c backend/avision.desc
+ doc/sane-avision.man: Merged the Avision v0.3.0 backend. It
+ includes overall cleanups, improved supported device detection,
+ memory-leak fixes, new config-options, initial USB device and
+ color calibration support. Also upadted the homepage-url and the
+ sane-avision man-page.
+
+2002-01-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/abaton.desc backend/dmc.desc backend/m3096g.desc
+ backend/mustek.c backend/sp15c.desc backend/v4l.desc:
+ Updated broken URLs for which I could find new ones. Commented out
+ all the others.
+
+2002-01-15 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c: Following yet another gphoto2 API change -
+ converted gp_debug_printf to gp_log
+
+ configure.in, configure, acinclude.m4, aclocal.m4 - Improvements
+ to the way gphoto2 is detected and used based on using
+ gphoto2-config.
+
+2002-01-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/pnm.c backend/pnm.desc po/pnm.de.po: Removed descripions
+ of options of type SANE_TYPE_GROUP. Fixed some translations.
+ Fixed header. New version: 1.0.4.
+ * backend/plustek.c backend/plustek.h po/Makefile.in po/plusetk.de.po:
+ Added German translation of Plustek backend options. Marked
+ translatable text in backend sources.
+
+2002-01-14 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-usb.c:
+ Added workaround for bug in semctl() on PPC;
+ backend version 1.4.5
+
+2002-01-14 Peter Fales <peter@fales.com>
+ * backend/gphoto2.c: Was requiring the device to have the
+ IMAGE_CAPTURE capability - changed this to a warning instead
+ of an error so the "Directory Browse" camera can be used.
+ Don't require a port to be specified for the "Directory
+ Browse" camera. Fixed a bug that can result in extra data
+ at the end of the iamge. Allow the returned image image to be
+ larger than the "estimate" specified in the configuration file.
+
+2002-01-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/scanimage.c: Added help message for --formatted-device-list.
+ Added va_end() and #include <stdarg.h>. Used fprintf to print errors.
+ Fixed some typos.
+
+2002-01-13 Abel Deuring <a.deuring@satzbau.gmbh.de>
+ * frontend/scanimage.c, doc/scaniamge.man: Added the option -f /
+ --formatted-device-list to allow arbirtarily formatted device
+ lists. Suggested by Klaas Freitag.
+
+2002-01-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure: Included AC_PROG_LIBTOOL into
+ acinclude.m4 to avoid trouble with newer versions of libtool.
+ * backend/niash.desc: New file for the niash backend (from Bertrik
+ Sikken <bertrik@zonnet.nl>).
+
+2002-01-12 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c - Fixed breakage due to gphoto2 API changes
+ (Added context parameter to functions calls)
+
+2002-01-12 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * doc/sane-plustek.man: Update
+ * backend/plustek-devs.c backend/plustek-usb.c backend/plustek-usbhw.c
+ backend/plustek-usbio.c backend/plustek-usbscan.c
+ backend/plustek-usbshading.c backend/plustek.c:
+ Updated to reflect the current feedback upon the code and
+ added some minor fixes
+ * backend/plustek.desc: Added Mustek and HP entry
+
+2002-01-12 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * include/sane/sanei_lm983x.h sanei/sanei_lm983x.c:
+ added sanei_lm983x_init(), updated comments and fixed the u_long
+ * AUTHORS: Added myself to the list of sanei authors.
+
+2002-01-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.man doc/scanimage.man: Added link to scanadf.
+
+2002-01-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/qcam.c: Create lockfile with O_EXCL even when using fcntl
+ locking. Remove it in any case after exiting. Log file handling
+ is still buggy but this has to be done by someone who has a qcam.
+ * sanei/sanei_lm983x.c: Added #include <sys/types.h> (OS/2 complains
+ otherwise).
+ * backend/pnm.c backend/pnm.desc po/pnm.de.po: hand_scanner and
+ three_pass options need SANE_INFO_RELOAD_PARAMETERS. All options
+ have a symbolic name now. Removed bogus translation from po. New
+ version: 1.0.3.
+ * frontend/saned.c: Check that the IP addresses of the peer are the
+ same for control and data connections. Exit, if this is not the
+ case. Changed some debug levels.
+ * PROJECTS: Updated some URLs. Removed m3096g and Mustek BearPaw
+ (both are included now in SANE). Added test backend and SaneTwain.
+ * TODO: Removed primax (not a backend), fixed viceo URL, updated
+ qcam entries, added entries about ipv6 support, removed saned
+ address validation entry. Added entry about scanimage + NLS.
+ * backend/mustek_usb.c backend/mustek_usb.desc
+ backend/mustek_usb_high.c backend/mustek_usb_high.h
+ backend/mustek_usb_mid.c backend/mustek_usb_mid.h
+ doc/mustek_usb/mustek_usb.CHANGES po/mustek_usb.de.po:
+ Removed some warnings. Fixed segfault while exiting. Using empty
+ devicename works now. New version: 1.0-10.
+
+2002-01-10 Tom Martone <tom@martoneconsulting.com>
+ * backend/bh.c
+ addressed security issue with tempfile
+
+2002-01-10 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan.desc:
+ Update to snapscan-20020110 (Version 1.4.4)
+ - add support for SnapScan e42
+
+2002-01-10 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * include/sane/sanei_lm983x.h sanei/sanei_lm983x.c sanei/Makefile.in:
+ Added to support for the National Semiconductor LM9831/2/3 chipsets
+ (read/write functions)
+ * backend/plustek.desc: Updated, added missing, now supported devices
+ * backend/plustek.c backend/plustek-share.h backend/plustek.h
+ backend/plustek.conf backend/plustek-usb.c backend/plustek-devs.c
+ backend/plustek-pp.c backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbio.c backend/plustek-usbmap.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek-usb.h:
+ Major changes to use the new sanei_lm983x functions
+ Changed the configuration file to reflect all the possible config-options
+ * backend/Makefile.in: Changed to compile the Plustek backend
+
+2002-01-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/pnm.de.po: Added German translation for pnm backend.
+ * po/mustek.de.po po/mustek_usb.de.po: Updated German translations.
+ They should be complete now.
+ * po/Makefile.in README: Made Makefile more intelligent. Targets
+ are only updated if necessary. No manual copying necessary.
+ Added pnm.de.po to DISTFILES. Added comment about DISTFILES.
+ * backend/mustek_usb.desc: New status: beta.
+ * README: Added description of --enable-translations.
+ * doc/sane.man: Added comment about translations.
+ * Makefile.in: Added Changelogs to DISTFILES. test/Makefile is
+ removed in make distclean now.
+ * doc/backend-writing.txt: Added paragraph about getting started.
+ Added comments about ANSI C, compilation warnings, testing and
+ keeping manpages up-to-date.
+ * backend/pnm.c: Added SANE_I18N() marks.
+ * TODO: Cleanup. Moved several entries to doc/backend-writing.txt.
+ Moved some entries to more appropriate paragraphs. Added entry about
+ missing or defective links in the .desc files. Removed entry about
+ translations.
+ * lib/inet_ntop.c: Changed order of includes for OS/2 compatibility.
+ * frontend/scanimage.c: Added output of bytes scanned in total.
+ Added warning that's printed if scanimage gets more data then
+ expected from the parameters.
+ * include/Makefile.in: Added sanei_lm983x.h to DISTFILES.
+ * backend/qcam.c: Actually close the lock file when unlocking.
+
+2002-01-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * ChangeLog ChangeLog-1.0.0 ChangeLog-1.0.1 ChangeLog-1.0.2
+ ChangeLog-1.0.3 ChangeLog-1.0.4 ChangeLog-1.0.5: Splitted
+ ChangeLog to limit filesize. Editing became slow on smaller systems.
+
+2002-01-08 Marcio Teixeira <marciot@users.sourceforge.net>
+
+ * backend/umax1220u.c: fixed compile warnings
+ * backend/umax1220u-common.c: fixed compile warnings
+ * backend/umax1220u.desc: added info about 2000U, 2200U, 2200US
+
+2002-01-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Added V_EXTRA version number to mark
+ CVS versions (-cvs) and snapshots/betas (e.g. -beta1).
+ V_EXTRA=-pre1 would result in "sane-backends-1.0.7-pre1(.tar.gz)".
+ For release, V_EXTRA is empty. Added NUMBER_VERSION to avoid
+ confusing sane-config and frontends that rely on numbered versions.
+ * tools/sane-config.in: Use @NUMBER_VERSION@.
+ * sane-backends.lsm: Made more compatible with LSM standard. Fixed
+ mostang.com directory. Added OpenBSD.
+ * include/Makefile.in: Added targed "dist". Moved include targets from
+ root dir to this file. Added standard variables and .PHONY.
+ * backend/Makefile.in doc/Makefile.in frontend/Makefile.in
+ japi/Makefile.in lib/Makefile.in po/Makefile.in sanei/Makefile.in
+ testsuite/Makefile.in tools/Makefile.in: Added target "dist".
+ Fixed .PHONY.
+ * Makefile.in: Added targets "dist" and "sane-backends". make dist
+ creates sane-backends-x.y.z.tar.gz and make sane-backends also
+ creates the appropriate sane-x-y-z.lsm. Moved distclean to include/.
+ Fixed .PHONY. Made sane-backands-*.lsm look nicer.
+ * doc/backend-writing.txt: Point to po/README for the I18N details.
+ * doc/releases.txt: Added "make sane-backends" procedure.
+ * po/Makefile.in: make now creates all the files, make install does
+ nothing but installation.
+ * README: Updated. Fixed minor bugs.
+ * AUTHORS: Added sanei authors.
+ * doc/saned.man: Added info about data connection.
+ * po/mustek.de.po: Updated German translation for the Mustek SCSI
+ backend.
+ * frontend/.gdbinit: Removed unnecessary file.
+
+2002-01-08 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * configure.in: added help text for --enable-parport-directio
+
+2002-01-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added link to backend for HP Scanjet 3300C / 3400C
+ and 4300C scanners. Removed umax1220u project (now included in
+ sane-backends).
+ * po/Makefile.in po/README: Added basic support for translating
+ option descriptions and titles of SANE backends. This is really
+ alpha!
+ * po/epson.de.po po/umax.de.po: Updated by make update-po.
+ * po/mustek.de.po mustek_usb.de.po: Added German translations
+ for Mustek SCSI and USB backends. Translations for well-known
+ options are missing.
+ * Makefile.in configure configure.in: Added option
+ --enable-translations to configure. I18N support is disabled by
+ default.
+ * po/.cvsignore: New file.
+ * doc/sane-mustek_usb.man doc/mustek_usb/mustek_usb.CHANGES:
+ Added info about BearPaw scanners and plustek backend.
+ * backend/mustek.c backend/mustek.desc doc/sane-mustek.man
+ doc/mustek/mustek.CHANGES:
+ Small fix for Paragon 1200 Pro. Added some test code for this
+ scanner. Added Trust Imagery 1200 to man page and .desc. New
+ version: 1.0-117.
+ * backend/Makefile.in backend/dll.conf backend/umax1220u-common.c
+ backend/umax1220u.c backend/umax1220u.conf backend/umax1220u.desc:
+ Added new backend umax1220u for UMAX Astra 1220U and 2000U
+ scanners (patch from Marcio Luis Teixeira
+ <marciot@holly.colostate.edu>).
+ * doc/Makefile.in doc/sane.man doc/sane-umax1220u.man: Added
+ documentation fo umax1220u backend (patch from from Marcio Luis
+ Teixeira <marciot@holly.colostate.edu>).
+ * AUTHORS: Added Marcio Luis Teixeira.
+ * TODO: Removed umax1220u project (now included in sane-backends).
+ Added HP Scanjet 3300C / 3400C and 4300C project. Added entry about
+ saned data port documentation. Removed saned race condition bug.
+ * doc/.cvsignore: Added sane-umax1220u.5.
+
+2002-01-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in: Added check
+ for inet_ntop().
+ * lib/inet_ntop.c lib/Makefile.in backend/Makefile.in: Added
+ implementation of inet_ntop() for platforms withouth this
+ function based on inet_ntoa.
+ * backend/saned.conf frontend/saned.c doc/saned.man: Changed access
+ control (function check host). Now IP addresses are used for
+ comparison, not host names as before. It's possible to put
+ hostnames, FQDNs and IP addresses into saned.conf. Limitations:
+ Only the first IP address in struct hostent is checked. IPv6 is
+ untested. The change is based on a patch by Petter Reinholdtsen
+ <pere@hungry.com>.
+ Return SANE_STATUS_ACCESS_DENIED if access was not granted instead
+ of SANE_STATUS_IO_ERROR.
+ Removed isfdtype to avoid compilation problems.
+ Added more debug output. Print function name in every DBG statement.
+ Updated manual pages and saned.conf.
+ * net.c: Return SANE_STATUS_ACCESS_DENIED if access was not granted
+ instead of SANE_STATUS_IO_ERROR.
+
+2001-01-06 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Undefine TEST_IOCTL again, which was enabled
+ by accident.
+
+2002-01-06 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: improved warm up and color calibration
+ of much better quality now. Manual settings now work correctly.
+ Corrected parport mode being set before being claimed.
+ * backend/umax_pp.c: changed build number.
+ * tools/umax_pp.c: changed version.
+
+
+2002-01-05 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+ * backend/umax-scanner.c, umax.c, umax.conf, umax.desc, umax.h:
+ update to backend version 1.0 build 32
+
+2002-01-05 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Check for (and set) s->fd to -1 when
+ scanner is closed. Removed black gamma table - only RGB
+ is used, even for grayscale scans. Do not call access()
+ when running on OS/2 or when using a parallel port scanner.
+
+2002-01-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/net.c backend/net.desc: Fixed race condition between saned
+ sending NET_OPEN reply and net.c flushing the wire. New version:
+ 1.0.6.
+ * doc/saned.man frontend/saned.c: Changed debug handling. All debug
+ messages use DBG now. If in inetd mode or dameon mode with "-s",
+ the messages are printed to syslog as before. If option "-d" is used,
+ the mesages are printed to stderr. Updated manual page.
+
+2002-01-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_wire.c: Added DBG message that warns if the read buffer
+ is going to be deleted (data loss).
+
+2002-01-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.os2: Updated URL of Franz Bakan's web site.
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Added support for USB
+ control messages (patch from Marcio Luis Teixeira
+ <marciot@holly.colostate.edu>).
+ * doc/sane-usb.man: Updated concerning backends supporting sanei_usb
+ and OpenBSD. Other minor fixes.
+ * include/sane/sanei_pv8630.h sanei/sanei_pv8630.h sanei/Makefile.in:
+ Added support for the PowerVision 8630 chip, a USB to parallel
+ converter used in many scanners (patch from from Marcio Luis Teixeira
+ <marciot@holly.colostate.edu>). Fixed sanei_thread Makefile.in entry.
+ * TODO: Added entries about saned/net freezes and parport-directio doc.
+ Removed entries about sanei_usb control msg, sanei_pv8630 inclusion,
+ OS/2 libsocket problem, and splitting --enable-directio.
+
+2001-12-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/scanimage.c: Fixed endless loop in sighandler.
+ * frontend/saned.c: Fixed sigpipe race in connection with
+ select_fd. Added debug output.
+
+2001-12-30 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek_usbmap.c backend/plustek-usbimg.c
+ backend/plustek_usb.c backend/plustek_usb.h:
+ Fixed bug in lineart scaling and in brightness setting
+
+2001-12-29 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.c backend/plustek-share.h backend/plustek.h
+ backend/plustek.conf:
+ Changed to support the LM983x based USB scanner
+ * backend/plustek.desc: Updated, added missing, now supported devices
+ * backend/plustek-usb.c backend/plustek-devs.c backend/plustek-pp.c
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbio.c backend/plustek-usbmap.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek-usb.h: New files - added to support the Plustek
+ USB devices (LM9831/2 based) and other devices based on this
+ chipset
+ * backend/Makefile.in: Changed to compile the Plustek backend
+ * doc/sane-plustek.man: Added some USB information
+
+2001-12-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Changed order of tests for libsocket and
+ libsyslog to avoid problems with OS/2. Small spelling and format
+ fixes.
+
+2001-12-28 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * configure.in, configure, sanei/sanei_scsi.c, umax_pp_low.c,
+ README.linux: replaced --enable-directio and ENABLE_DIRECTIO
+ with --enable-scsi-directio / --enable-parport-directio resp.
+ ENABLE_SCSI_DIRECTIO / ENABLE_PARPORT_DIRECTIO
+
+2001-12-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS TODO: Updated info about "Relisys Scorpio Super 3 SCSI II".
+
+2001-12-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.linux: Used "sane-find-scanner". Some minor changes.
+ * config.guess config.sub: Updated from
+ http://savannah.gnu.org/projects/config.
+ * TODO: New section: "platform-specific". Added some problems with
+ *BSD. Some minor fixes and additions.
+ * tools/sane-find-scanner.c: Added OpenBSD device files.
+ * README.openbsd: New file. Some information on how to get SANE
+ running on top of OpenBSD.
+
+2001-12-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb.conf backend/mustek_usb.desc
+ backend/mustek_usb_low.c backend/mustek_usb_low.h
+ doc/sane-mustek_usb.man doc/mustek_usb/mustek_usb.CHANGES:
+ Made usb_low_read_rows more robust. Limited maximum block size and
+ added option for this. New version: 1.0-9.
+
+2001-12-21 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h
+ Remove tmpfname var
+
+2001-12-20 Peter Fales <peter@fales.com>
+
+ * backend/dc25.c - Fixed a potential security problem due to a
+ race condition involving temporary file creation. Also did some
+ cosmetic cleanup and removed some un-needed code.
+
+2001-12-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.conf: Added (commented out) st400 entry.
+
+2001-12-18 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h
+ Remove temporary file
+
+2001-12-18 Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
+
+ * backend/st400.c backend/st400.conf
+ Security fix: Dump inquiry data to $HOME/st400.dump instead
+ of /tmp/st400.dump.
+
+2001-12-17 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c backend/snapscan.h
+ backend/snapscan-usb.h backend/snapscan-usb.c
+ backend/snapscan-sources.h backend/snapscan-sources.c
+ backend/snapscan.c backend/snapscan.desc
+ Update to snapscan-20011212 (snapscan backend 1.4.3):
+ - Use sense handler for USB scanners
+ - Correct color alignment for Snapscan 600
+ - Fix dither matrix computation
+ - Add support for Snapscan e26 and e52
+ - Guard for TL_X < BR_X and TL_Y < BR_Y
+
+2001-12-16 Peter Kirchgessner <peter@kirchgessner.net>
+ * frontend/stiff.c
+ Add fillorder tag for b/w-TIFF-files
+ Include stiff.h to avoid warning "no previous prototype"
+
+2001-12-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc doc/mustek/mustek.CHANGES:
+ Fixed a possible segfault in sane_control_option. Added more
+ debug output for SCSI commands. New version: 1.0-116.
+
+2001-12-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_ab306: Removed warning: `dev_io_fd' defined but not
+ used. Variable used only by FreeBSD. Added test for FreeBSD.
+ Patch from Stephen Torri <storri@ameritech.net>.
+
+2001-11-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * testsuite/Makefile.in testsuite/README: Added comment about
+ the need to enable pnm. Made output easier to read.
+
+2001-11-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.desc doc/mustek/mustek.CHANGES:
+ Added check for TL_X > BR_X or TL_Y > BR_Y. New version: 1.0-115.
+ * TODO: Added entry about TL_X < BR_X problems and semaphores for OS/2.
+ Removed entry about BearPaw scanners.
+
+2001-11-26 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c: added an additional check to prevent OS/2 from
+ define "#define USE_FORK"
+
+2001-11-24 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c: removed an unconditional "#define USE_FORK"
+
+2001-11-22 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: fixed color calibration bug. Scans are
+ of much better quality now. Manual settings now work correctly.
+ * tools/umax_pp.c: changed version.
+
+
+2001-11-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * config.guess config.sub: Fetched new versions from
+ http://savannah.gnu.org/projects/config.
+ * mkinstalldirs: Updated for OS/2 (from "Franz Bakan"
+ <fbakan@gmx.net>).
+ * backend/mustek.c backend/mustek.desc backend/mustek.h
+ doc/mustek/mustek.CHANGES: Added OS/2 compatibility fixes
+ (from "Franz Bakan" <fbakan@gmx.net>). New version: 1.0-114.
+ * sanei/sanei_scsi.c: OS/2 changes: Removed semaphore code and
+ increased MAX_DATA to 64k (from "Franz Bakan" <fbakan@gmx.net>).
+ * tools/sane-config.in: Also return -ldl (necessary fo IA64?).
+ * TODO: Added entry about .exe and similar file extentions.
+ Removed sane-config.in -ldl issue.
+
+2001-11-22 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: fixed build problem on non i386 linux when
+ there is no <sys/io.h>.
+
+2001-11-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Added entries about the fork/kill(-1,...) issue, the inb/outb
+ problems, config.guess and sane-config.in.
+ * sanei/Makefile.in: Added sanei_thread for OS/2 portability.
+
+2001-11-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/scanimage.man frontend/scanimage.c: Use out%d.tif by default if
+ --format tiff was selected. Update documentation about default
+ formats. Fixed spelling mistakes.
+ * AUTHORS: I think this was planned in alphabetical order...
+
+2001-11-18 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed Wait for Button functionality.
+ Don't call access() for par port scanners.
+
+2001-11-18 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.h: Added missing defines for USB IOCTLs
+
+2001-11-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.desc doc/sane-mustek.man doc/mustek/mustek.CHANGES:
+ Added enries for Primax Compact 4800.
+
+2001-11-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c backend/mustek_usb.conf backend/mustek_usb.desc
+ backend/mustek_usb.h backend/mustek_usb_high.c
+ backend/mustek_usb_high.h backend/mustek_usb_low.c
+ backend/mustek_usb_low.h backend/mustek_usb_mid.c
+ backend/mustek_usb_mid.h doc/sane-mustek_usb.man
+ doc/mustek_usb/mustek_usb.CHANGES doc/mustek_usb/mustek_usb.TODO:
+ FreeBSD is supported to some degree now. Started 1200 USB support.
+ Documentation updates. New version: 1.0-8.
+
+2001-11-12 Peter Fales <peter@fales.com>
+
+ * gphoto2.c - Debug message was not getting printed because DBG_INIT
+ was not called first.
+
+2001-11-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-scsi.man: More details and examples for the "scsi * ..."
+ directive for config files. Added information about debug level 255
+ printing (Linux) kernel debug messages. Added link to sane-usb(5).
+
+2001-11-10 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: correct PPC compile problem by removing
+ buggy extra ifdef
+
+2001-11-11 Peter Fales <peter@fales.com>
+
+ * gphoto2.c - Number of images was not getting updated after
+ capturing a new image
+
+2001-11-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.c backend/dll.desc doc/sane-dll.man: Added some debug
+ messages (e.g. if dll.conf isn't found). Some adjustments concerning
+ debug levels. Removed some compilation warnings. New version: 1.0.5.
+
+2001-11-11 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c (Linux part):
+ - improved handling of status codes returned by the SG driver.
+ Device status INTERMEDIATE GOOD and CONDITION MET are now mapped
+ to SANE_STATUS_GOOD; device status BUSY and a few driver status
+ codes are mapped to SANE_STATUS_DEVICE_BUSY
+ - On SCSI command completion, the (sometimes bogus) residual count
+ is no longer subtracted from *req->dstlen
+ * backend/sharp.c: if a READ command fails with SANE_STATUS_DEVICE_BUSY,
+ retry a few times.
+
+2001-11-10 Karl Heinz Kremer <khk@khk.net>
+
+ * backends/epson.[ch]: all strings tagged with I18N macro
+ Added support for scan button, scanner waits for button if the
+ option "wait-for-button" is activated.
+
+2001-11-10 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.c
+ backend/umax_pp_mid.h backend/umax_pp.c backend/umax_pp.h:
+ use ENABLE_DIRECTIO to compile in direct I/O. Corrected the long
+ standing scan area origin detection bug. Improved parport mode
+ negociation.
+
+2001-11-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Fixed debug messages.
+
+2001-11-06 Peter Fales <peter@fales.com>
+
+ * dc240.c - fix a bug that causes the backend's internal directory
+ to get out of sync with the camera directory when a file is deleted
+ * gphoto2.c - include the gphoto2 port name as part of the SANE
+ device name and improve reliability when using the gphoto2
+ serial port libs.
+
+2001-11-04 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Enabled warnings by default.
+ * sane-backends.lsm: Made more compatible with template.
+ Added myself as maintainer to avoid problems when uploading
+ to tsx-11 and sunsite in future.
+
+Older entries can be found in ChangeLog-1.0.6.
diff --git a/ChangeLogs/ChangeLog-1.0.8 b/ChangeLogs/ChangeLog-1.0.8
new file mode 100644
index 0000000..7efe7f9
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.8
@@ -0,0 +1,1060 @@
+****** Release of sane-backends 1.0.8. End of code freeze ******
+
+2002-05-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/plustek-usbscan.c: Critical bugfix to avoid bumping the
+ scan slider at the end of the scan. Commited on behalf of
+ g-jaeger@t-online.de (G. Jaeger).
+
+2002-05-26 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/descriptions/epson.desc
+ doc/sane-epson.man
+ backend/epson.conf: Updated man page, added one more
+ comment to the conf file and adjusted the version in
+ the desc file.
+
+2002-05-26 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/descriptions-external/teco2.desc
+ doc/descriptions-external/teco3.desc: new backends descriptions.
+ * AUTHORS: changed my email address
+ * doc/descriptions/teco1.desc: added the mising connection type
+ for the vm3520
+
+2002-05-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: Added workaround for GNU make 3.79. This version
+ of make insisted on at least one argument for "basename" which broke
+ compilation.
+ * doc/descriptions/leo.desc doc/descriptions/teco1.desc: Changed
+ status to ":new" for release.
+ * doc/descriptions/umax1220u.desc: Changed status from :new to :alpha
+ as the baceknd was already in SANE 1.0.7.
+
+2002-05-25 Andras Major <andras@users.sourceforge.net>
+
+ * doc/descriptions/coolscan2.desc: changed status to :new.
+
+2002-05-25 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * doc/descriptions/canon_pp.desc: Changed status to :new.
+
+2002-05-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS backend/microtek2.c doc/sane-microtek2.man
+ doc/descriptions/microtek2.desc: Updated Karsten Festag's email
+ address and website.
+ * NEWS: Added OPENSTEP to the list of portability fixes.
+ * doc/descriptions/test.desc: Changed status to :new.
+ * configure configure.in: Set version to 1.0.8. Disabled warnings
+ by default.
+
+2002-05-23 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * doc/umax/sane-umax-powerlook-doc.html
+ * doc/descriptions/umax.desc update
+
+---- CODE FREEZE FOR SANE 1.0.8 ---
+--- snapshot 1.0.8-pre1
+
+2002-05-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_scsi.c: Fixed sanei_scsi_cmd2() for OPENSTEP (from
+ Oliver Schirrmeister <oschirr@abm.de>).
+
+2002-05-21 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * include/Makefile.in (install): Make it possible to install when
+ building in a subdirectory.
+
+2002-05-14 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.conf: Added additional USB IDs for Acer 320U and
+ Acer 620U
+
+2002-05-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in frontend/scanimage.c
+ include/sane/config.h.in: Fixed 16 bit pnm output. The byte-order
+ was wrong for little-endian systems. Based on code from Roland
+ Roberts <roland@astrofoto.org>.
+ * NEWS: Minor updates.
+ * TODO: Removed entry about 16 bit scanimage problem. Added entry about
+ scanimage and width/height ranges.
+
+2002-05-07 Frank Zago <fzago@greshamstorage.com>
+
+ * doc/descriptions-external/tevion9693usb.desc: new backend,
+ from mh <crapsite@gmx.net>.
+
+2002-05-06 Andras Major <andras@users.sourceforge.net>
+
+ * doc/sane.man: coolscan2 entry updated.
+ * doc/sane-usb.man: added coolscan2 to sanei_usb users' list.
+
+2002-05-05 Frank Zago <fzago@greshamstorage.com>
+
+ * backend/umax-usb.c backend/teco1.c backend/matsushita.c
+ backend/matsushita.h backend/leo.c backend/sceptre.c: minor fixes.
+
+2002-05-05 Andras Major <andras@users.sourceforge.net>
+
+ * backend/coolscan2.c: version number replaces "CVS"
+ * doc/coolscan2.man doc/descriptions/coolscan2.desc: added
+ man page for coolscan2.
+
+2002-05-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c doc/descriptions/test.desc: Check return value
+ of waitpid. Don't evaluate status of children if waitpid wasn't
+ successful.
+ * backend/mustek.c doc/descriptions/mustek.desc: Check return value
+ of waitpid. Don't evaluate status of children if waitpid wasn't
+ successful.
+ * TODO doc/backend-writing.txt: Add an entry about the return value
+ of wait/waitpid.
+
+---- FEATURE FREEZE FOR SANE 1.0.8 ---
+
+2002-05-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/description/snapscan.desc: Fix URL
+
+2002-05-02 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan-options.c
+ backend/snapscan-scsi.c backend/snapscan-usb.c po/snapscan.de.po:
+ Snapscan backend version 1.4.13
+ - Support for ADF
+ - Fixed status handling after cancel
+ * doc/description/snapscan.desc:
+ - Add Guillemot Scan@home 1248 USB
+ - Fix vendor URLs
+
+2002-04-21 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * sane-umax: updated umax.CHANGES
+
+2002-04-30 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * doc/saned.man doc/sane-net.man doc/descriptions/net.desc:
+ Updated URL of the sane-net homepage to
+ http://www.penguin-breeder.org/?page=sane-net
+
+ * doc/sane-mustek_pp.man doc/descriptions/mustek_pp.desc:
+ Updated URL of the mustek_pp homepage to
+ http://www.penguin-breeder.org/?page=mustek_pp
+
+ * TODO:
+ Added entry to saned section:
+ - Add support for IP ranges in saned.conf (like 10.0.0.0/8)
+
+2002-04-28 Frank Zago <fzago@greshamstorage.com>
+
+ * tools/Makefile.in tools/sane-find-scanner.c: bug fixes, better
+ error reporting and display the inquiry in verbose mode.
+
+2002-04-29 Kazuya Fukuda <kaafuu@mug.biglobe.ne.jp>
+ * backend/nec.c: fixed a compile problem for Dec Unix v4
+ and probably other 64 bit platform.
+ * AUTHORS: Update email address for Kazuya Fukuda
+
+2002-04-27 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-options.c
+ backend/snapscan-scsi.c backend/snapscan-usb.c po/snapscan.de.po:
+ Snapscan backend version 1.4.12
+ - Removed SCSI debug options
+ - Fixed option handling (errors found by tstbackend)
+
+2002-04-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/scanimage.c: Fixed scanimage SANE_CAP_AUTOMATIC bug
+ (from David Paschal <paschal@rcsis.com>).
+
+2002-04-26 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc240.c backend/gphoto2.c: Various minor bug fixes for
+ problems found by tstbackend. Fix a core dump when debugging
+ is enabled.
+
+2002-04-26 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * backend/mustek_pp.c: fixed a typo, thanks to Henning for
+ pointing this one out to me
+
+2002-04-26 Andras Major <andras@users.sourceforge.net>
+
+ * backend/coolscan2.c doc/descriptions/coolscan2.desc:
+ update to release 0.1.5, various saned-related problems fixed.
+
+2002-04-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated backend list. Added entry for sanei_scsi/Mac OS X.
+
+2002-04-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c backend/mustek.h doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Print usefull DBG messages for options
+ without a name. Undef MIN and MAX macros before defining them.
+ * backend/mustek_usb.c backend/mustek_usb_low.h
+ doc/descriptions/mustek_usb.desc doc/mustek_usb/mustek_usb.CHANGES:
+ Free devlist on exit. Undef MIN and MAX macros before defining them.
+ * backend/Makefile.in frontend/Makefile.in: Added missing files to
+ DISTFILES.
+ * config.guess: Updated from ftp.gnu.org.
+
+2002-04-24 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-options.c
+ backend/snapscan-scsi.c: Snapscan backend version 1.4.11
+ - Improve scan area option setting
+ - Cleanup of DBG messages
+ - Improve config file reading
+
+---- BACKEND FREEZE FOR SANE 1.0.8 ---
+
+2002-04-23 Frank Zago <fzago@greshamstorage.com>
+
+ * backend/coolscan2.c: Fixed the version reporting problem.
+ * backend/dll.conf: added coolscan2 entry.
+
+2002-04-23 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc240.c backend/gphoto2.c: Various minor bug fixes for
+ problems found by tstbackend
+ * AUTHORS: Upate email address for Peter Fales
+
+2002-04-22 Frank Zago <fzago@greshamstorage.com>
+
+ * AUTHORS PROJECTS backend/Makefile.in backend/coolscan2.c
+ backend/coolscan2.conf doc/descriptions/coolscan2.conf
+ doc/sane.man: added coolscan2 backend
+
+2002-04-22 Abel Deuring <a.deuring@satzbau.gmbh.de>
+ * backend/sharp.c: fixed a compile problem for Dec Unix v4
+ and probably other 64 bit platform.
+
+2002-04-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/backend-writing.txt: More details for the exported symbols
+ issue. Used test.c instead of pnm.c as example. Fixed paths for
+ .desc files.
+ * doc/sane.man: Added paragraph about testing with the test backend.
+ * TODO: Removed several avision bug entries.
+ * NEWS: First version of entry for 1.0.8.
+
+2002-04-21 Frank Zago <fzago@greshamstorage.com>
+
+ * backend/teco1.c doc/descriptions/teco1.desc: updates.
+
+2002-04-21 Frank Zago <fzago@greshamstorage.com>
+
+ * backend/sceptre.c doc/descriptions/sceptre.desc: updates.
+
+2002-04-21 Frank Zago <fzago@greshamstorage.com>
+
+ * AUTHORS PROJECT backend/Makefile.in backend/leo.c backend/leo.h
+ backend/leo.conf doc/sane.man doc/sane-leo.man
+ doc/descriptions/leo.desc doc/Makefile.in: added leo backend
+
+2002-04-22 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.c next backend version, several new scsi id's,
+ and bug fixes
+
+2002-04-22 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Declare close_scanner() and open_scanner() before
+ they are used
+
+2002-04-21 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * sane-umax backend update to version 1.0 build 34
+
+2002-04-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c doc/descriptions/test.desc: Check if sane_init was
+ called before any other SANE function.
+ * backend/dll.c doc/descriptions/dll.desc: Don't call sane_exit twice.
+ Call sane_init after sane_exit. Try to load from $LD_LIBRARY_PATH
+ ($SHLIB_PATH, $LIBPATH) first and only check LIBDIR if opening
+ failed. New version: 1.0.6.
+ * backend/v4l.c: Fixed some warnings.
+ * backend/artec.c: Don't export cap_data.
+ * backend/canon.h: Don't export option_name.
+ * TODO: Updated entries about compilation warnings for various
+ backends. Removed entries about canon update and dll sane_exit
+ problems.
+ * PROJECTS: Removed canon update.
+
+2002-04-21 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/sharp.c: added a "free(devlist)" call to sane_exit
+
+2002-04-21 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * backend/canon-sane.c, backend/canon-scsi.c, backend/canon.c,
+ backend/canon.h, doc/sane-canon.man,
+ doc/descriptions/canon.desc: added support for FB620S and
+ and FS2700, by Mitsuru Okaniwa <m-okaniwa@bea.hi-ho.ne.jp>
+ and Ulrich Deiters <ukd@xenon.pc.Uni-Koeln.DE>
+
+2002-04-19 Frank Zago <fzago@greshamstorage.com>
+
+ * AUTHORS: fixed typos, formatting and added the tstbackend frontend.
+ * frontend/Makefile.in frontend/tstbackend.c: a frontend to test
+ backends
+ * doc/backend-writing.txt: added info about tstbackend
+
+2002-04-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c doc/descriptions/test.desc: Added missing include.
+
+2002-04-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/net.c doc/descriptions/net.desc: Fixed bug in sane_read that
+ cause garbled data to be sent to the frontend. Fixed some long lines.
+
+2002-04-18 Marian Eichholz <eichholz@computer.org>
+ * backend/sm3600.c : compiles without warnings now.
+ * backend/sm3600.h : FakeCalibration prototype conditionalised, too.
+
+2002-04-17 Frank Zago <fzago@greshamstorage.com>
+
+ * TODO: changed Relisys Scorpio Super 3 contact info.
+
+2002-04-17 Marian Eichholz <eichholz@computer.org>
+ * doc/descriptions/sm3600.desc : specific models listed
+ * doc/sane-sm3600.man : warning for libusb-versions.
+ * backend/sm3600-homerun.c : FakeCalibration() conditionalised.
+ * backend/sm3600.c : Improved portability, less warnings
+
+2002-04-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/fujitsu-scsi.h backend/fujitsu.c backend/fujitsu.conf
+ backend/fujitsu.h doc/sane-fujitsu.man
+ doc/descriptions/fujitsu.desc: Added new fujitsu backend (from
+ Oliver Schirrmeister <oschirr@abm.de>). This backend supersedes the
+ m3096g backend and also includes the m3091 backend.
+ * backend/m3096g.c backend/m3096g.h backend/m3096g.conf
+ backend/m3096g-scsi.h: Removed, support is now in fujitsu-backend.
+ * backend/Makefile.in backend/dll.conf: Adjusted for new fujitsu
+ backend.
+ * doc/sane-sp15c.c: Added new manpage for sp15c. Extracted from the old
+ sane-fujitsu manpage.
+ * doc/.cvsignore doc/Makefile.in doc/sane.man: Adjusted for fujitsu
+ and sp15c manpages.
+ * AUTHORS: Updated for fujitsu backend.
+ * doc/descriptions-external/m3091.desc doc/descriptions/m3096g.desc:
+ Removed, now in doc/descriptions/fujitsu.desc.
+ * PROJECTS: Removed m3091 project.
+ * TODO: Added coolscan2 backend, bh and coolscan warnings, scanimage
+ 16 bit problem. Removed fujitsu m391 entries, sm3600 non-static
+ symbol, plustek-backend OS/2 problem.
+
+2002-04-15 Marian Eichholz <eichholz@computer.org>
+ * sm3600 imported from sm3600.sf.net
+ featuring infrastructure for various models and the (new) SM 3750i.
+ backend/sm3600.h
+ backend/sm3600.c
+ backend/sm3600-color.c
+ backend/sm3600-homerun.c
+ backend/sm3600-scantool.h
+ backend/sm3600-scanutil.c
+ backend/sm3600-gray.c
+ backend/sm3600-scanmtek.c
+ backend/sm3600-scanusb.c
+ doc/sane-sm3600.man
+
+2002-04-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek_usb.desc: Commented out 1200 USB as it is not
+ really supported yet.
+
+2002-04-14 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.[ch], backend/plustek-usbhw.c, backend/plustek-usbio.c,
+ backend/plustek-usbscan.c, backend/plustek-usbshading.c
+ backend/plustek-usb.c, backend/plustek-devs.c backend/plustek-usb.h
+ backend/plustek-share.h: Code cleanup, fixed OS/2 compilation breakage
+ fixed problem that causes non LM983x based devices to crash, minor fixes
+ added CANON N650U device structure
+
+2002-04-13 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Added new product IDs for Perfection 1650 and
+ 2450. Check if scanner needs to be opened for the reset() call.
+
+2002-04-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/canon630u-common.c: Added #include <sys/types.h> to
+ fix compilation on OS/2.
+ * sanei/sanei_scsi.c: Use O_NONBLOCK when opening an sg device under
+ Linux. Return SANE_STATUS_DEVICE_BUSY if EBUSY. Check for buffer==0
+ for OS/2.
+ * doc/sane-scsi.man: Added more information about NCR/Symbios 810 and
+ Tekram DC315 controllers under Linux.
+ * backend/Makefile.in backend/test.c backend/test.conf backend/test.h
+ backend/test-picture.c: Added new test backend.
+ * doc/Makefile.in: Added sane-test man page. Added teco doc directory.
+ * doc/sane.man doc/sane-test.man doc/.cvsignore: Added sane-test
+ manual page.
+ * doc/descriptions-external/test.desc doc/descriptions/test.desc:
+ Moved test.desc to doc/descriptions and updated this file.
+ * PROJECTS: Removed test backend.
+ * AUTHORS: Added myself for test backend.
+ * TODO: Added entries about SANE_CAP_ADVANCED in groups, a wip marker
+ for sorted sane-backends.html, and saneopts.??.po problem.
+ Removed backends from list of inclusion beacuse of lack of response:
+ v4l2, lhii, viceo (they stay in PROJECTS). Removed snapscan from
+ exported symbols bug list. Updated doxygen list.
+
+2002-04-12 Frank Zago <fzago@greshamstorage.com>
+
+ * doc/descriptions-external/leo.desc PROJECTS: Added leo backend
+ info.
+
+2002-04-12 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp-io.c: Updated for new libieee1284 interface
+ (version 0.1.5)
+ * acinclude.m4 aclocal.m4 configure configure.in:
+ Added check for libieee1284 > 0.1.5
+
+2002-04-08 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.h backend/avision.c backend/avision.conf: bug-
+ fixes
+
+2002-04-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei_pa4s2.h include/sane/sanei_scsi.h: Added/adjusted
+ documentation for doxygen.
+
+2002-04-11 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: fixed 8 bits I/O support
+
+2002-04-10 Oliver Schwartz <oliver.schwartz@gmx.de>
+
+ * backend/snapscan-scsi.c
+ Removed illegal character
+ * backend/snapscan-usb.h
+ Removed declaration of bqelements
+
+2002-04-10 Oliver Schwartz <oliver.schwartz@gmx.de>
+
+ * backend/snapscan-usb.c
+ make bqelements static
+ * backend/snapscan-scsi.c
+ disable send_diagnostic() for SnapScan 1236
+
+2002-04-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek_usb.c doc/descriptions/mustek_usb.desc
+ doc/mustek_usb/mustek_usb.CHANGES: Cleanup in sane_control_option,
+ sane_set_io_mode, sane_get_select_fd and sane_exit. New version:
+ 1.0-13.
+ * backend/mustek_usb.c backend/mustek_usb_high.c
+ backend/mustek_usb_high.h backend/mustek_usb_low.c
+ backend/mustek_usb_low.h backend/mustek_usb_mid.c
+ backend/mustek_usb_mid.h: Fixed coding-style.
+ * backend/pnm.c doc/descriptins/pnm.desc: sane_set_io_mode
+ checks for !non_blocking and scanning now. Fixed coding-style.
+ New version: 1.0.8.
+ * TODO: Added dll init/exit problem. Added non-static symbol problem.
+ Added info about missing definition of 1-bit modes in sane.tex.
+ Added entry about sane-find-scanner searching directories.
+ * backend/mustek.c backend/mustek.h doc/desacriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Set freed variables to 0 in sane_exit.
+ Fixed coding style. New version: 1.0-121.
+
+2002-04-09 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * sanei/sanei_pv8630.c (sanei_pv8630_bulkwrite): Avoid warning on
+ Solaris. Correct type of second argument to sanei_usb_write_bulk()
+ from (char*) to (SANE_Byte*).
+
+2002-04-08 Frank Zago <fzago@greshamstorage.com>
+
+ * backend/teco1.c backend/teco1.conf backend/teco1.h
+ doc/sane-teco1.man doc/descriptions/teco1.desc doc/teco/teco1.txt
+ doc/.cvsignore doc/Makefile.in doc/sane.man po/Makefile.in
+ po/teco1.fr.po backend/Makefile.in backend/dll.conf
+ sane-backends/AUTHORS sane-backends/ChangeLog
+ sane-backends/PROJECTS: added teco1 backend
+
+2002-04-08 Rene Rebe <rene.rebe@gmx.net>
+i
+ * doc/descriptions/avision.desc: fixed syntax
+
+2002-04-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * Makefile.in: make libcheck now also checks for non-static variables.
+ * v4l.c: Some variables haven't been static. sane_set_io_mode must
+ return SANE_STATUS_GOOD if non_blocking == SANE_FALSE.
+
+2002-04-08 Rene Rebe <rene.rebe@gmx.net>
+ * backend/avision.c backend/avision.h doc/descriptions/avision.desc
+ doc/sane-avision.man: updated to Avision backend build 25. More
+ stable for HP usb scanners, suport for Misubishi scanners and
+ various cleanups. - And corrected the avision.desc location.
+
+2002-04-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/canon_pp.c backend/canon_pp-dev.c backend/canon_pp-io.c
+ backend/canon_pp-dev.h: Changed timeouts and added scanner sleeps
+ to improve reliability of 6x0P models. Also corrected typo which
+ caused full bed scans to fail. Disabled problematic detect for now,
+ will make detection slightly slower. Patch from Matthew Duggan
+ <stauff1@users.sourceforge.net>.
+ * doc/descriptions/canon_pp.desc: Added man page, incremented version.
+ Patch from Matthew Duggan <stauff1@users.sourceforge.net>.
+ * doc/sane-canon_pp.man: Added more hints on getting canon_pp driver
+ working. Patch from Matthew Duggan <stauff1@users.sourceforge.net>.
+ * backend/Makefile.in backend/canon630u-common.c backend/canon630u.c
+ backend/canon630u.conf backend/dll.conf backend/lm9830.h: Added
+ canon630u backend. This backend supports the CanoScan 630u and
+ CanoScan 636u (hopefully). Patch from Nathan Rutman
+ <nathan@gordian.com>.
+ * doc/.cvsignore doc/Makefile.in doc/sane-canon630u.man
+ doc/descriptions/canon630u.desc: Added documentation and description
+ of canon630u backend. Patch from Nathan Rutman
+ <nathan@gordian.com>.
+ * PROJECTS doc/sane.man: Updated for canon630u backend.
+ * AUTHORS: Updated for canon630u backend.
+ * doc/saned.man: The path in the xinetd example pinted to /usr/local
+ unconditionally.
+ * backend/canon630u-common.c: Fixed compilation on non-Linux systems.
+ * configure configure.in: Added work-around for asm/io.h problems.
+
+2002-04-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Fixed color three-pass scanning for some
+ scanners.
+ * PROJECTS: Added Hewlett-Packard ScanJet 2200c project.
+ * sanei/sabei_constrain_value.c: Check that a SANE_Bool variable
+ can only be SANE_TRUE or SANE_FALSE.
+
+2002-04-02 Peter Fales <peter@fales.com>
+
+ * configure, acinclude.m4, aclocal.m4 - Another tweak to the
+ allowed gphoto2 version numbers
+
+2002-04-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure configure.in: Added checks for
+ libieee1284. Enable canon_pp backend if found. Patch from
+ "Matthew Duggan" <stauff@guarana.org>.
+ * backend/Makefile.in backend/canon_pp-dev.c backend/canon_pp-dev.h
+ backend/canon_pp-io.c backend/canon_pp-io.h backend/canon_pp.c
+ backend/canon_pp.conf backend/canon_pp.h backend/dll.conf:
+ Added new canon_pp backend for the CanoScan FB330P, FB630P, N340P,
+ and N640P scanners. Patch from "Matthew Duggan" <stauff@guarana.org>.
+ * AUTHORS doc/Makefile.in doc/sane-canon_pp.man doc/sane.man
+ doc/descriptions/canon_pp.desc: Updated for canon_pp backend.
+ Patch from "Matthew Duggan" <stauff@guarana.org>.
+ * PROJECTS TODO: Removed canon_pp.
+ * doc/.cvsignore: Added sane-canon_pp.5.
+ * doc/descriptions-external/canon_pp.desc: Removed.
+
+2002-03-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/test.desc: Added description of the test
+ backend.
+ * PROJECTS: Added homepage of the test backend.
+
+2002-03-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/pnm.c doc/descriptions/pnm.desc: Check if option is settable
+ when automatically setting it. New version: 1.0.7.
+ * backend/Makefile.in doc/Makefile.in frontend/Makefile.in
+ include/Makefile.in po/Makefile.in tools/Makefile.in:
+ Support for variable DESTDIR. If set, all files are installed to that
+ location. Also print the filename of the installed file, not only the
+ path. Both changes are mostly for package creators/maintainers.
+ * configure configure.in: Another try to get the DISTCLEAN_FILES
+ working.
+
+2002-03-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-scsi.man: Updated info about SCSI-Howto and some SCSI
+ adapters.
+
+2002-03-27 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * removed unused definitions in include/sane/saneopts.h:
+ SMEAR, TEN_BIT_MODE, TWELVE_BIT_MODE, RGB_PREVIEW_PATCH,
+ START_SCAN_PATCH
+
+2002-03-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Updated canon_pp entry. Added Canon FB630U and Canon N650U
+ USB entries. Updated test backend entry.
+
+2002-03-26 Frank Zago <fzago@greshamstorage.com>
+
+ * PROJECTS: Updated Relisys Scorpio Super 3 infos.
+
+2002-03-26 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * AUTHORS, sanei_lm983x.[ch], entire Plustek backend:
+ Updated to new mail-address and backend URL
+
+2002-03-24 Oliver Schwartz <oliver.schwartz@gmx.de>
+
+ * backend/snapscan.c: Fix segfault in sane_exit if no devices were
+ found.
+
+2002-03-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * acinclude.m4 aclocal.m4 configure configure.in ltmain.sh:
+ Update to libtool 1.4.2. Included local changes: use soname "libsane"
+ for all os but AIX. Use "normal" shared libs (.so) instead of archives
+ on AIX. Use 1 instead of 2 as major number with Irix.
+ * Makefile.in ltconfig: Removed ltconfig as it is no longer used by
+ libtool.
+ * TODO: More status indicators for backends to include. Removed
+ entry about the grand Fujitsu reunification. Updated entry about the
+ DBG warnings. Removed entry about splitted sane-backends.html.
+ Removed entries about libtool problems. Added entry about plustek on
+ OS/2 problem.
+ * backend/pnm.c doc/descriptions/pnm.desc: If fread returns 0, check
+ for EOF and other errors and return appropriately.
+ * backend/mustek_usb_mid.h: Updated SANE header.
+ * backend/net.c doc/descriptions/net.desc: Fixed 16-bit byte-order
+ handling in sane_read() (patch from Michael Herder <crapsite@gmx.net>).
+ New version: 1.0.7.
+
+2002-03-24 Oliver Schwartz <oliver.schwartz@gmx.de>
+
+ * backend/snapscan-options.c: New file (option functions moved from
+ snapscan.c)
+ * backend/snapscan-utils.c: Removed file
+ * backend/Makefile.in: Added snapscan-options.c, removed snapscan-utils.c
+ * backend/snapscan.c backend/snapscan.h backend/snapscan-scsi.c
+ backend/snapscan-usb.c backend/snapscan.h backend/snapscan.conf:
+ Snapcan-backend ver. 1.4.9
+ - Moved option functions to snapscan-options.c
+ - Autodetect USB scanners on Linux
+ - Better error reporting
+
+2002-03-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/backend-writing.txt: Updated concerning splitted .desc
+ directories.
+ * doc/Makefile.in: Updated install-mostang concerning splitted HTML
+ pages.
+ * configure configure.in README: Use only shared libraries by default.
+ Fixed file patterns for distclean targets.
+ * doc/Makefile.in: Remove backup etc. files also in subdirs when
+ using make distclean.
+ * backend/pnm.c doc/descriptions/pnm.desc: Don't allow to set options
+ that don't have SANE_CAP_SOFT_SELECT and don't allow read and write
+ for options that are inactive. New version: 1.0.5.
+
+2002-03-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei_wire.c: Set allocated memory to 0 to avoid delivering
+ garbage to the frontend.
+ * backend/mustek.c backend/mustek.desc backend/mustek.h
+ doc/mustek/mustek.CHANGES: Fixed halftone pattern handling. The
+ buffer was way too small. Option 0 has an empty name. Better debug
+ output for dev_cmd. Set size for group options to 0. Set size of
+ halftone pattern to non 0.
+ * backend/mustek_usb.c backend/mustek_usb.desc
+ doc/mustek_usb/mustek_usb.CHANGES: Option 0 has an empty name now.
+ Group options have size 0 now. Check also for SANE_ACTION_SET_AUTO.
+ Removed buggy output in sane_control_option. Added more debug output
+ in sane_control_option.
+ * backend/net.c backend/net.desc backend/net.h: Use copies of option
+ descriptors to make sure their addresses aren't changed until
+ sane_close. New version: 1.0.7.
+ * doc/descriptions/abaton.desc doc/descriptions/agfafocus.desc
+ doc/descriptions/apple.desc doc/descriptions/artec.desc
+ doc/descriptions/as6e.desc doc/descriptions/avision.desc
+ doc/descriptions/bh.desc doc/descriptions/canon.desc
+ doc/descriptions/coolscan.desc doc/descriptions/dc210.desc
+ doc/descriptions/dc240.desc doc/descriptions/dc25.desc
+ doc/descriptions/dll.desc doc/descriptions/dmc.desc
+ doc/descriptions/epson.desc doc/descriptions/gphoto2.desc
+ doc/descriptions/hp.desc doc/descriptions/m3096g.desc
+ doc/descriptions/matsushita.desc doc/descriptions/microtek2.desc
+ doc/descriptions/microtek.desc doc/descriptions/mustek.desc
+ doc/descriptions/mustek_pp.desc doc/descriptions/mustek_usb.desc
+ doc/descriptions/nec.desc doc/descriptions/net.desc
+ doc/descriptions/pie.desc doc/descriptions/pint.desc
+ doc/descriptions/plustek.desc doc/descriptions/pnm.desc
+ doc/descriptions/qcam.desc doc/descriptions/ricoh.desc
+ doc/descriptions/s9036.desc doc/descriptions/sceptre.desc
+ doc/descriptions/sharp.desc doc/descriptions/sm3600.desc
+ doc/descriptions/snapscan.desc doc/descriptions/sp15c.desc
+ doc/descriptions/st400.desc doc/descriptions/tamarack.desc
+ doc/descriptions/template.desc. doc/descriptions/umax1220u.desc
+ doc/descriptions/umax.desc doc/descriptions/umax_pp.desc
+ doc/descriptions/v4l.desc:
+ Moved descriptions of included backends from backend/*.desc.
+ * doc/descriptions-external/canon_pp.desc
+ doc/descriptions-external/coolscan2.desc
+ doc/descriptions-external/hp4200.desc
+ doc/descriptions-external/hpoj.desc
+ doc/descriptions-external/ibm.desc
+ doc/descriptions-external/lhii.desc
+ doc/descriptions-external/m3091.desc
+ doc/descriptions-external/niash.desc
+ doc/descriptions-external/teco.desc
+ doc/descriptions-external/v4l2.desc
+ doc/descriptions-external/template.desc.:
+ Moved descriptions of external backends from backend/*.desc.
+ * doc/Makefile.in: Updated for separated lists of backends.
+ * tools/Makefile.in tools/sane-desc.el.in tools/sane-desc-ext.el:
+ Updated for separated lists of backends. Use package version in
+ internal list. Don't use version and man page in external list.
+ * tools/sane-desc.el: Removed.
+ * configure configure.in: Added tools/sane-desc.el to output files.
+ * backend/Makefile.in: Updated DISTFILES.
+ * backend/*.desc backend/template.desc.: Removed (now in doc/).
+ * tools/.cvsignore: Added sane-desc.el.
+
+2002-03-19 Frank Zago <fzago@greshamstorage.com>
+
+ * matsushita backend: updates and fixes.
+ * sceptre backend: updates and fixes.
+
+2002-03-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Marked backends that really should be included. Clearified
+ comment about sane-backends.html. Added comment about sort order
+ this list. Add comment about better linking of external libs.
+
+2002-03-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/hpoj.desc: New file (from David Paschal <paschal@rcsis.com>).
+ * backend/mustek_usb.c backend/mustek_usb.desc backend/mustek_usb.h
+ backend/mustek_usb_high.c backend/mustek_usb_high.h
+ backend/mustek_usb_low.c backend/mustek_usb_low.h
+ backend/mustek_usb_mid.c doc/mustek_usb/mustek_usb.CHANGES: Fixed
+ segfault when opening device again after closing and possible
+ segfault when name="". Type for option 0 must be set to
+ SANE_TYPE_INT explicitely. Updated GPL/SANE headers.
+ * TODO: Added entry about auto-loading SCSI drivers. Removed entry
+ about new SANE types. Moved entry about config.guess to
+ doc/releases.txt. Added more info about libtool problems.
+ * doc/releases.txt: Added info about config.guess and config.sub.
+ * config.guess config.sub: Updated from upstream.
+
+2002-03-17 Peter Fales <peter@fales.com>
+
+ * backend/gphoto2.c - Minor bug fixes for problems found by tstbackend
+
+2002-03-16 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * backend/plustek.[ch]: fixed a bug, that causes segfaulting the backend
+ when using the USB autodetection stuff
+
+2002-03-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: fixed 1200 dpi mode
+ * backend/umax_pp: changes for translations support
+ * po/Makefile.in po/umax_pp.fr.po: create french translations for
+ umax_pp backend
+
+2002-03-12 Frank Zago <fzago@greshamstorage.com>
+
+ * PROJECTS backend/teco.desc: new project
+
+2002-03-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README: Some more information on where to find the config files and
+ a hint to make a backup.
+ * doc/sane.man: Updated mustek_usb and plustek backend entries. Added
+ FILES section. Minor fixes and updates.
+
+2002-03-10 Frank Zago <fzago@greshamstorage.com>
+
+ * PROJECTS: removed matsushita project.
+ * backend/sceptre.desc backend/matsushita.desc: updated the backend
+ url.
+
+2002-03-10 Abel Deuring <a.dering@satzbau-gmbh.de>
+ * configure.in, configure: Added a second test for
+ HAVE_SG_TARGET_STATUS: check /usr/src/linux/include/scsi/sg.h;
+ added conditionals so that this test is done only for Linux
+
+2002-03-10 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * doc/sane-plustek.man: Update
+ * backend/plustek-usbhw.c backend/plustek-usbimg.c backend/plustek-usbio.c
+ backend/plustek-usbmap.c backend/plustek-usbscan.c
+ backend/plustek-usbshading.c backend/plustek.c backend/plustek-devs.c
+ backend/plustek-pp.c backend/plustek.usb
+ backend/plustek.h backend/plustek-share.h backend/plustek-usb.h:
+ Added custom gamma tables, added patches to support EPSON1250,
+ UMAX3400 and HP2100C devices, added warmup and timed lamp-off features,
+ minor bug-fixes
+ * backend/plustek.desc: Added Umax entry
+ * backend/plustek.conf: Update
+
+2002-03-10 Abel Deuring <a.dering@satzbau-gmbh.de>
+ * configure.in, configure, include/sanei/config.h.in,
+ sanei/sanei_scsi.c: Added HAVE_SG_TARGET_STATUS for compatibility
+ with old Linux sg.h versions
+
+2002-03-10 Gerhard Jaeger <g.jaeger@earthling.net>
+
+ * po/plustek.de.po: Update
+ * po/plustek.es.po, po/saneopts.es.po: Added spanish translation
+ thanks to Gustavo D. Vranjes
+
+2002-03-10 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: fast and adaptative scanner probe function.
+ Improved CCD calibration.
+ * tools/umax_pp.c: revision change
+
+2002-03-08 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/Makfile.in: added missing depenencies for
+ new umax backends
+
+2002-03-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.tex: Added "multi-function peripheral" to list of types in
+ SANE standard.
+
+2002-03-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/config.h.in: Fix comment for HAVE_USB_H.
+ * TODO: Added entry about md5/getopt license issues.
+
+2002-03-07 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scsi.c: fixed a typo (Sg_scsi_id -> SG_scsi_id)
+
+2002-03-07 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * updated umax backend to version 1.0.7-build-33
+ new file: umax-usb.c (by Frank Zago)
+
+2002-03-06 Frank Zago <fzago@greshamstorage.com>
+
+ * po/Makefile,in doc/sane.man doc/Makefile.in backend/matsushita.desc
+ backend/dll.conf backend/Makefile.in sane-backends.lsm AUTHORS
+ po/matsushita.fr.po doc/matsushita/matsushita.txt
+ doc/matsushita/matsushita10_trc.txt
+ doc/matsushita/matsushita11_trc.txt
+ doc/matsushita/matsushita12_trc.txt
+ doc/matsushita/matsushita13_trc.txt
+ doc/matsushita/matsushita14_trc.txt
+ doc/matsushita/matsushita1_trc.txt
+ doc/matsushita/matsushita2_trc.txt
+ doc/matsushita/matsushita3_trc.txt
+ doc/matsushita/matsushita4_trc.txt
+ doc/matsushita/matsushita5_trc.txt
+ doc/matsushita/matsushita6_trc.txt
+ doc/matsushita/matsushita7_trc.txt
+ doc/matsushita/matsushita8_trc.txt
+ doc/matsushita/matsushita9_trc.txt doc/sane-matsushita.man
+ backend/matsushita.h backend/matsushita.conf
+ backend/matsushita.c: Addition of the Matsushita / Panasonic backend
+ * doc/.cvsignore: added sane-matsushita.5
+
+2002-03-03 Frank Zago <fzago@greshamstorage.com>
+
+ * doc/.cvsignore: added sane-sceptre.5
+
+2002-03-03 Frank Zago <fzago@greshamstorage.com>
+
+ * doc/sane-sceptre.5: removed (auto-generated)
+
+2002-03-03 Frank Zago <fzago@greshamstorage.com>
+
+ * doc/sceptre/s1200.txt: doc updates
+ * backend/sceptre.desc: increased version
+ * backend/sceptre.c backend/sceptre.h: fixed a gamma table bug,
+ fixed some color shifting problems, some cleanups.
+ * doc/sceptre.man: doc updates
+
+2002-02-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in: Removed getopt.o getopt1.o and md5.o from
+ LIBLIB_FUNCS as they are not needed in backends.
+
+2002-02-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added matsushita backend.
+ * backend/matsushita.desc: New file. Description for the matsushita
+ backend.
+
+2002-02-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/Makefile.in backend/dll.conf backend/sceptre.c
+ backend/sceptre.conf backend/sceptre.desc backend/sceptre.h:
+ Added sceptre backend for the Sceptre VividScan 1200 (patch from
+ Frank Zago <fzago@greshamstorage.com>).
+ * doc/Makefile.in doc/sane-sceptre.5 doc/sane-sceptre.man doc/sane.man
+ doc/sceptre/preview_trace.txt doc/sceptre/s1200.txt
+ doc/sceptre/scan_trace.txt: Added documentation for sceptre backend
+ (patch from Frank Zago <fzago@greshamstorage.com>).
+ * po/Makefile.in po/sceptre.fr.po: Added french translation for
+ sceptre backend (patch from Frank Zago <fzago@greshamstorage.com>).
+ * AUTHORS PROJECTS sane-backends.lsm: Updated concerning sceptre
+ backend (patch from Frank Zago <fzago@greshamstorage.com>).
+
+2002-02-20 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.c: corrected few bugs
+ due to changing default model to 'none'.
+ * tools/umax_pp.c: fixed compile problem
+
+2002-02-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * lib/inet_pton.c: Use u_int32_t instead of in in_addr_t which isn't
+ defined at least for OS/2.
+ * TODO: Added entry about DBG warnings.
+ * doc/sane.tex: Added some vendors (Abaton, Acer, Apple, Avision,
+ CANON, Fujitsu, IBM, NEC, Nikon, Plustek, Polaroid, Ricoh, Sharp,
+ Siemens, Tamarack) and device types (film scanner, sheetfed scanner)
+ to the SANE standard. Updated date.
+ * doc/Makefile.in: Remove sanei-html in make distclean.
+ * PROJECTS: Added Acer ScanWit 2720S.
+ * backend/template.desc.: Added explanation for backend version, fixed
+ typo.
+
+2002-02-16 Abel Deuring <a.deuring@satzbau-gmbh.de>:
+ * frontend/scanimage.c / part for the "-f" command line option:
+ replaced the vprintf call with a loop of printf calls; fixed
+ a "too stingy" malloc
+
+2002-02-16 Peter Fales <peter@fales.com>
+
+ * backend/dc240.c - Fix mismatches between format and
+ parameters in debug statements
+
+2002-02-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei.h include/sane/sanei_ab306.h
+ include/sane/sanei_auth.h include/sane/sanei_backend.h
+ include/sane/sanei_codec_ascii.h include/sane/sanei_codec_bin.h
+ include/sane/sanei_config.h include/sane/sanei_debug.h
+ include/sane/sanei_lm983x.h include/sane/sanei_thread.h
+ include/sane/sanei_usb.h: Added, fixed and updated documentation
+ for sanei using doxygen.
+ * doc/.cvsignore: Added sanei-html.
+ * TODO: Updated entry about missing sanei documentation. Removed
+ entry about make distclean issues.
+
+2002-02-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.h
+ backend/umax_pp_mid.c backend/umax_pp.c backend/umax_pp.h
+ backend/umax_pp.conf: added ppdev character device name passing
+ from conf file. Allow model overide from conf option. DBG macros
+ clean-up. Fixed color inversion for 1660P models. Fixed potential
+ crash when custom dump files could not be opened for writing.
+ * doc/sane-umax_pp.man: updates to match backned new parameter and
+ behaviour
+ * tools/umax_pp.c: added device name argument
+
+2002-02-14 Jochen Eisinger <jochen.eisinger@gmx.net>
+
+ * sanei/sanei_auth.h: remove strange line-ending handling code
+
+2002-02-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in lib/Makefile.in
+ lib/inet_pton.c: Added wrapper for inet_pton(). If this function
+ is not available, try first inet_aton() and then inet_addr().
+ * frontend/saned.c: Use inet_pton() instead of inet_aton() to avoid
+ compilation errors on e.g. OS/2.
+ * include/Sane/sanei_debug.h: Added warnings for format problems
+ in DBG messages (from Frank Zago <fzago@greshamstorage.com>).
+ * include/sane/sanei.h sanei/Makefile.in sanei/load_values.c
+ sanei/save_values.c: Removed load_values and save_values as they
+ are only used in sane_frontends.
+ * backend/mustek.c backend/mustek_usb_low.c backend/mustek_usb_high.c
+ backend/net.c doc/mustek/mustek.CHANGES
+ doc/mustek_usb/mustek_usb.CHANGES sanei/sanei_usb.c: Fixed some
+ DBG format warnings.
+ * lib/inet_ntop.c: Only use inet_ntoa if it's available.
+
+2002-02-13 Peter Fales <peter@fales.com>
+
+ * configure, acinclude.m4, aclocal.m4 - Another tweak to the
+ allowed gphoto2 version numbers
+
+2002-02-13 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in Makefile.in backend/Makefile.in
+ doc/Makefile.in frontend/Makefile.in include/Makefile.in
+ japi/Makefile.in lib/Makefile.in sanei/Makefile.in
+ tools/Makefile.in testsuite/Makefile.in po/Makefile.in: Added global
+ list of file patterns for "make distclean". Some "make clean"
+ and "make distclean" cleanup and additions.
+
+2002-02-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-config.in: Avoid printing "-I/usr/include" as this
+ changes the default include order (from Tim Waugh
+ <twaugh@redhat.com>). Really check for entries in $cflags that
+ are also in $includedir.
+ * frontend/saned.c: DNS queries for remote hosts are only done if
+ necessary. It's now possible to use "+" without hosts/DNS entries
+ for the connecting host.
+ * TODO: Removed entries for config.h, OpenBSD shared libs, and -ansi
+ on HP-UX. Updated device type entry.
+
+2002-02-10 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Link to functions in lib/ only
+ if they are not available on the system. Use AC_PROG_LIBTOOL
+ instead of the deprecated AM_PROG_LIBTOOL.
+ * backend/Makefile.in lib/Makefile.in: Link to functions in lib/ only
+ if they are not available on the system. Avoid duplicating list of
+ functions.
+ * sanei/sanei_usb.c: If get_vendor_product fails, don't try again for
+ every device file.
+
+2002-02-10 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * po/Makefile.in: Added snapscan.de.po to DISTFILES
+
+2002-02-09 Abel Deuring <a.deuring@satzbau-gmbh.de>:
+ * sanei/sanei_scsi.c: Added checks to the Linux part of
+ sanei_scsi_open_extended, if an SG device file is being
+ opened
+
+2002-02-09 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * po/Makefile.in po/snapscan.de.po backend/snapscan.c:
+ Added language translation support for snapscan backend,
+ added german translations.
+
+2002-02-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in po/saneopts.fr.po po/umax.fr.po: Added french
+ translation (from Frank Zago <fzago@greshamstorage.com>).
+
+2002-02-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added info about HP Scanjet 5S.
+ * lib/inet_ntop.c: Removed OS/2 kludge: it's not necessary.
+
+2002-02-05 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp_low.h backend/umax_pp_mid.h
+ backend/umax_pp_mid.c backend/umax_pp.c backend/umax_pp.h:
+ tuned down duration of pauses in scanner ringing. Indent'ing all
+ files. Include header files according to HAVE_XXX_H defines in
+ config.h .
+ * tools/umax_pp.c: updated version and added printing of config
+ options
+
+2002-02-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Version is 1.0.7-cvs. Enable warnings by
+ default. Don't use "-ansi" for HPUX.
+ * sanei/sanei_thread.c: Make sure that waitpid returns something
+ usefull on OS/2. Avoids the "Unknown SANE status code 128" errors.
+
+Older entries can be found in ChangeLog-1.0.7.
diff --git a/ChangeLogs/ChangeLog-1.0.9 b/ChangeLogs/ChangeLog-1.0.9
new file mode 100644
index 0000000..636a482
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.9
@@ -0,0 +1,1148 @@
+****** Release of sane-backends 1.0.9. End of code freeze ******
+
+2002-10-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/gt68xx.conf: Updated status of scanners.
+ * doc/doxygen.conf: Increased version to 1.0.9.
+ * configure configure.in: New version: 1.0.9. Disabled compilation
+ warnings.
+
+2002-10-23 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: added O_NONBLOCK to flags when opening ppdev
+ character device, to get around hangs with 2.4.19 linux kernels in
+ pure EPP mode.
+
+2002-10-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.linux: Added comment about DEC cc on Linux Alpha.
+
+2002-10-19 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc25.c - Moved use of UNUSEDARG macro to fix
+ compilation failure on OS/X
+
+2002-10-19 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/tevion9693usb.desc: Added Trust
+ Easy Webscan 19200.
+
+---- CODE FREEZE FOR SANE 1.0.9 ---
+-- snapshot 1.0.9-pre2
+
+2002-10-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/dll.conf: Added commented out entries for hpoj and gt68xx.
+ * NEWS: Updated release date and backend list.
+ * TODO: Added scanimage short string-list options problem.
+
+2002-10-17 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.c: removed internationalization stuff
+ * backend/plustek-usb.c: removed obsolete definitions
+ * backend/plustek-usbhw.c: fixed typos
+ * backend/plustek-usnshading.c: fixed bug that produces
+ files > 700M in debug mode. Added some debug output.
+
+2002-10-16 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax.c, umax-scanner.c: added Power Look 2000
+ as supported device, build 38
+
+2002-10-15 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/sane-plustek.man: Major update
+ * doc/descriptions/plustek.desc: Added EPSON 1260 entry
+ * backend/plustek.conf updated options
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-usb.c
+ backend/plustek-usbhw.c backend/plustek-pp.c
+ backend/plustek-usbmap.c backend/plustek-usbimg.c
+ backend/plustek-usbscan.c backend/plustek-usbshading.c
+ backend/plustek.h backend/plustek-share.h backend/plustek-usb.h
+ Bug fixes and workarounds
+
+2002-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane.tex: Backend behaviour is undefined if sane_init
+ doesn't return SANE_STATUS_GOOD. Added SANE_STATUS_INVAL to
+ return codes for sane_start. Description of sane_set_io_mode is
+ more precise.
+ * sanei/sanei_usb.c: Really check for bulk_out ep when writing.
+ * TODO: Added microtek2 problem. Updated sane.tex and desc sections.
+ Added scanimage width/height problem. Added possible solution to po
+ file mess.
+ * doc/Makefile.in doc/sane-config.man: Added man page for sane-config.
+ * doc/.cvsignore: Added sane-config.1.
+
+2002-10-15 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.conf: Added comment for USB-scanner
+
+2002-10-14 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc240.h,backend/dc240.c: Use portable code for camera
+ structures that does not depend on gcc or little-endian byte order
+
+2002-10-14 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.h backend/snapscan.c backend/snapscan.conf
+ doc/descriptions/snapscan.desc: SnapScan backend 1.4.17 -
+ added ID string for SnapScan e10, added Mitsubishi Diamandview
+ 648UT in desc file.
+
+2002-10-11 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc240.h - Add message to #error as required by ANSI
+
+2002-10-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/mustek/mustek.CHANGES: Fixed shutting off
+ the lamp for the Paragon 1200 A3 Pro.
+ * doc/descriptions/mustek.desc: Updated version number and A3 Pro
+ information.
+
+2002-10-10 Petter Reinholdtsen <pere@td.org.uit.no>
+
+ * backend/canon630u-common.c: Change type of size parameter from
+ 'unsigned int' to 'size_t' for gl640WriteBulk() and
+ gl640ReadBulk() to avoid crash on platforms where
+ 'sizeof(size_t) > sizeof(int)'.
+
+ * backend/coolscan.c: Remove semicolon at the end of functions.
+
+2002-10-09 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco1.c backend/teco1.conf doc/descriptions/teco1.desc:
+ Added entry for AVEC color 2412.
+
+2002-10-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/microtek2.desc: Added per-scanner status (from
+ Karsten Festag <karsten.festag@gmx.de>).
+
+2002-10-09 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: disable scanner protocol debug facility
+
+2002-10-08 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: force color channel re-order for GT-2200 scanner
+
+2002-10-08 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: use macros from saneopts.h to fix translations
+ problems
+
+2002-10-08 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * po/plustek.de.po: Cleanup
+
+2002-10-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/saned.man doc/sane-net.man: Removed comment about saned port not
+ officially assigned.
+ * po/plustek.de.po po/umax_pp.fr.po: Fixed double msgids.
+
+2002-10-05 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.c: Fixed problem with incorrect response to
+ sane_get_parameters() in certain situations.
+
+2002-10-04 Jochen Eisinger <jochen.eisinger@gmx.de>
+
+ * doc/descriptions/mustek_pp.desc: add :status tags to each
+ scanner
+
+2002-10-04 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * backend/plustek.conf fixed option enableTPA
+ * po/plustek.de.po po/plustek.es.po removed "Negative"
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-usb.c
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbmap.c backend/plustek-usbscan.c
+ backend/plustek-usbshading.c
+ Minor bug fixes
+
+2002-10-04 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Added quotes around halftoning options.
+
+2002-10-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated list of backends scheduled for inclusion. Updated
+ v4l bug list. Added entry about vendor/product ids for .desc.
+ Removed TL_X > BR_X (->TODO), dll ltdl rewrite, wait return
+ value (->TODO), sane.tex comment about 1 bit color mode,
+ sane-plustek.man issue.
+
+2002-10-02 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * tools/umax_pp.c: changed version and added handling of 4 digits
+ port address
+ * po/umax_pp.de.po: removed redundant entry
+ * backend/umax_pp.conf: comment fixings
+ * backend/umax_pp_low.c backend/umax_pp.c: added handling of ppdev
+ ioctl return code, allow 4 digits port number
+
+2002-10-02 Matto Marjanovic <maddog@mir.com>
+
+ * doc/descriptions/microtek.desc: Updated version number.
+ * backend/microtek.c:
+ Fixed bug in sane_read() [had failed to set return length to zero
+ in non-STATUS_GOOD conditions].
+ Fixed bug in sane_set_io_mode() [had returned SANE_STATUS_UNSUPPORTED
+ if blocking mode was requested].
+ Bumped version up to 0.13.1.
+
+2002-10-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/gt68xx.desc: Added new scanners. Updated
+ status of supported scanners.
+ * doc/sane.tex: Added explanation of bit order for 1 bit modes. Added
+ comment about 1 bit color modes. Fixed missing \code command. New
+ version: 1.03.
+ * doc/backend-writing.txt: Added paragraph about checking geometry
+ (from TODO).
+
+2002-09-30 Peter Fales <peter@fales-lorenz.net>
+
+ * configure, acinclude.m4, aclocal.m4 - Update the
+ allowed gphoto2 version numbers
+
+2002-09-30 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * doc/descriptions/umax.desc: removed remark that Astra 2200U via USB
+ only works on linux (because need of USB control messages)
+
+2002-09-30 Matthew Duggan <stauff1@users.sourceforge.net>
+ * backend/canon_pp.c backend/canon_pp-dev.c backend/canon_pp-dev.h:
+ Finally fixed cancelling, which I broke some time ago in the quest
+ for speed. FB620P still doesn't abort nicely (firmware bug?).
+ * doc/sane-canon_pp.man: Added notes on FB620P problems.
+ * doc/descriptions/canon_pp.desc: Bumped version number.
+
+2002-09-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/test.c backend/test-picture.c doc/descriptions/test.desc:
+ Fixed bytes_per_line in 1 bit mode. Fixed 1 bit color three-pass
+ mode (grid). Changed bit order for 1 bit color to most significant
+ bit is first pixel.
+
+2002-09-29 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc25.[ch]: Fix compiler warnings, and correct
+ errors found by tstbackend.
+
+---- FEATURE FREEZE FOR SANE 1.0.9 ---
+-- snapshot 1.0.9-pre1
+
+2002-09-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/mustek_usb.desc: Added "ScanExpress" for all models
+ to avoid confusion with BearPaw models.
+ * Makefile.in: Added ChangeLog-1.0.6 ChangeLog-1.0.7 ChangeLog-1.0.8
+ to DISTFILES.
+
+2002-09-29 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Updated information, cleanup
+ * doc/descriptions/epson.desc: Added 1660 and 2400 models
+
+2002-09-28 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax.c:
+ update to build 37
+
+2002-09-28 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * sanei/sanei_lm983x.c: cleanup in reset function
+ * doc/descriptions/plustek.desc: Update according to the new
+ entry definitions
+ * doc/sane-plustek.man: Fixed format and updated info
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-pp.c
+ backend/plustek-share.h backend/plustek-usb.c backend/plustek-usb.h
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbmap.c backend/plustek-usbscan.c
+ backend/plustek-usbshading.c backend/plustek.conf:
+ Major update to support CIS based devices
+ Added register dump and raw picturue/calibration data dump
+ Added support for Canon N650U and N670U (currently 8-bit color mode only)
+
+2002-09-28 Andras Major <andras@users.sourceforge.net>
+
+ * backends/coolscan2.c doc/descriptions/coolscan2.desc
+ doc/sane-coolscan2.man: update to 0.1.8
+
+2002-09-26 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * config.sub config.guess: Updated to current versions.
+ * doc/releases.txt: Added paragraph about the different freeze types
+ and a timetable.
+
+2002-09-26 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * doc/snapscan.desc backend/snapscan.c backend/snapscan.h
+ backend/snapscan.conf backend/snapscan-scsi.c:
+ SnapScan backend 1.4.16 (added support for Acer/Benq 5000)
+
+2002-09-24 Peter Fales <peter@fales-lorenz.net>
+
+ * backend/dc25.c: Backend returning too much data for image size
+
+2002-09-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/tevion9693usb.desc: Added MD9693, updated
+ Artec E+ 48U (from Michael Herder <crapsite@gmx.net>).
+
+2002-09-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/fujitsu.desc: Changed status to beta and added
+ URLs.
+ * doc/descriptions-external/gt68xx.desc: Added some untested scanners.
+ Updated Mustek entries.
+ * TODO: Removed hpsj5s .desc file problem.
+
+2002-09-22 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/sane-dc25.man, backend/dc25.c, backend/dc25.h,
+ backend/gphoto2.c, backend/gphoto2.h, backend/dc240.c,
+ backend/dc240.h: Update authors email address
+
+2002-09-19 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/leo.c backend/leo.conf doc/sane-leo.man
+ doc/descriptions/leo.desc: added support for the leoscan S3.
+ * backend/teco2.c backend/teco2.h: added some stuff.
+
+2002-09-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/hpsj5s.desc: Used "Hewlett-Packard" instead
+ of "HP".
+
+2002-09-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions-external/gt68xx.desc: Updated Mustek
+ information. Added Plustek OpticPro 1248U.
+ * backend/mustek.c: Fixed version number.
+ * NEWS: Updated backend list.
+
+2002-09-17 Oliver Schirrmeister <oschirr@abm.de>
+ * backend/fujitsu.c fujitsu.h fujitsu-scsi.h:
+ added m3092 support
+ * doc/descriptions/fujitsu doc/sane-fujitsu
+ added description
+
+2002-09-17 Matthew Duggan <stauff1@users.sourceforge.net>
+ * backend/canon_pp.c backend/canon_pp.h backend/canon_pp.conf:
+ Added init_mode option to conf file for faster starts.
+ * doc/sane-canon_pp.man : Added description of init_mode option.
+
+2002-09-16 Matthew Duggan <stauff1@users.sourceforge.net>
+ * backend/canon_pp-dev.c backend/canon_pp-dev.h backend/canon_pp-io.c
+ backend/canon_pp-io.h backend/canon_pp.c backend/canon_pp.h:
+ Fix init problem, add changes to facilitate configurable wakeup mode
+ (for faster starts on FB320P and FB620P).
+ * doc/sane-canon_pp.man doc/descriptions/canon_pp.desc: Updates
+ regarding FB310P and FB610P (rebadged Avisions)
+
+2002-09-16 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/.cvsignore frontend/.cvsignore tools/.cvsignore: Added .libs.
+ Patch from Sylvain Petreolle <spetreolle@yahoo.fr>.
+ * TODO: Added gt68xx project and viceo.desc entry.
+ * PROJECTS doc/descriptions-external/gt68xx.desc: Added gt68xx
+ information.
+
+2002-09-15 Karl Heinz Kremer <khk@khk.net>
+
+ * doc/sane-epson.man: Fixed typo (PIP->PIO)
+
+2002-09-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: Format of output for devices
+ supported by libusb and scanner module is the same now. Minor
+ output fixes.
+ * doc/sane-find-scanner.man: Updated -v description.
+ * doc/sane-usb.man: Added info about "unable to access minor data"
+ messages.
+
+2002-09-13 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax-scanner.c, backend/umax.conf
+ doc/descriptions/umax.desc:
+ added Linotype Hell SAPHIR3 as supported scanner
+
+2002-09-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.beos Makefile.in doc/Makefile.in: Added BeOS platform
+ information. Updated Makefiles concerning READMEs.
+
+2002-09-11 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * doc/descriptions/umax.desc: corrected some urls
+
+2002-09-11 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/canon630u.desc: Added fb636u as unsupported.
+ Added status information.
+ * frontend/scanimage.c: Added option --dont-scan. Resorted usage
+ output.
+ * doc/scanimage.man: Reordered options. Added info about ICC profiles,
+ gamma4scanimage, and --dont-scan option. Fixed example.
+ * doc/gamma4scanimage.man: Formatting updates. Added default values.
+ Minor fixes.
+ * TODO: Updated backend list. Added comments for additions to sane.tex.
+ Updated .desc file bug list. Removed scanimage entries. Added
+ plustek man page issue.
+
+2002-09-10 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/sane-hp.man: Added hints about special USB device names
+
+2002-09-07 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco1.c backend/teco1.h teco1.desc: added threshold
+ option
+
+2002-09-07 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * backend/umax.c, umax.h, umax-scanner.c, umax.conf
+ doc/descriptions/umax.desc
+ Update to sane-umax build 36
+
+2002-09-07 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp-dev.c backend/canon_pp-dev.h:
+ Changes to improve calibration quality on FB620P.
+
+2002-09-06 Frank Zago <fzago at austin dot rr dot com>
+
+ * README.aix: added mention of the AIX 5.1 version of the passthru
+ driver.
+
+2002-09-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-config.in: Removed "function" keyword (bourne shell
+ compatibility).
+
+2002-09-03 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * sanei/sanei_scci.c doc/sanei-scsi.man:
+ default timeout for SCSI commmands is now 120 seconds; added
+ the environment variable SANE_SCSICMD_TIMEOUT to override
+ the default value.
+
+2002-09-01 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * doc/sane-canon_pp.man doc/descriptions/canon_pp.desc:
+ Added FB320P to supported scanners after report of successful test.
+ Added FB310P and FB610P to desc as specifically not supported yet.
+
+2002-09-01 Karl Henz Kremer <khk@khk.net>
+
+ * backend/epson_scsi.c: Fixed alloca compile problem.
+
+2002-09-01 Karl Henz Kremer <khk@khk.net>
+
+ * backend/epson.[ch] backend/epson_scsi.[ch] backend/epson_usb.[ch]
+ backend/Makefile.in: USB scanners are now using sanei_usb_ functions,
+ split out SCSI related functions to their own source/header file,
+ added source/header file for USB interface
+
+2002-09-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated desc and SANE standard sections. Removed ptal entry.
+ * doc/Makefile.in: Make sure that sane-desc is compiled when generating
+ HTML pages. Fixed typo.
+ * doc/sane-usb.man: Minor updates and fixes.
+
+2002-09-01 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * configure.in, doc/sane-hp.man, doc/descriptions/hp.desc
+ applied patch by David Paschal to remove PTAL-support from hp-backend
+
+2002-09-01 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c backend/canon_pp-dev.c backend/canon_pp-dev.h
+ backend/canon_pp-io.c: Support for FB620P.
+ * doc/sane-canon_pp.man doc/descriptions/canon_pp.desc: Added notes
+ on support of FB620P
+
+2002-08-31 Frank Zago <fzago at austin dot rr dot com>
+
+ * PROJECTS AUTHORS TODO NEWS backend/dll.conf backend/Makefile.in
+ backend/teco2.conf backend/teco2.c backend/teco2.h
+ doc/.cvsignore doc/sane.man doc/Makefile.in doc/sane-teco2.man
+ doc/teco/teco2.txt doc/descriptions-external/teco2.desc
+ doc/descriptions/teco2.desc: added teco2 backend.
+
+2002-08-30 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/teco1.c backend/teco1.h backend/teco1.conf
+ doc/descriptions/teco1.desc doc/teco/teco1.txt
+ doc/sane-teco1.man: Added support for another museum piece, the
+ Dextra DF-600P, a rebadged VM3510.
+
+2002-08-30 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.h backend/avision.c backend/avision.conf
+ doc/sane-avision.man descriptions/avision.desc: latest avision
+ backend
+
+2002-08-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/v4l.c backend/v4l.h doc/descriptions/v4l.desc:
+ Big clean up of Video for Linux backend. Removed old unused
+ stuff from qcam and others including unused options and variables
+ concerning direct port access. Removed wcam license (no
+ "substantial portions of code" are used any more). Removed
+ unuesed headers. Made lots of global variables local. Lots
+ of checks for null pointer dereferences and errors when opening
+ files or using ioctl/mmap. Added option to select grey or color
+ mode. Added support for different channels. Fixed lots of options.
+ Made sure ioctls are only used when necessary.
+ Used vendor == "Noname". Added ??? comments for suspicious code.
+ Lots of minor fixes and cleanup. Added version number: 1.0-2.
+ * backend/v4l-grab.h: Deleted (unused).
+ * backend/Makefile.in: Removed v4l-grab.h.
+ * AUTHORS: Added myself as active maintainer of v4l.
+ * doc/sane-v4l.man: Added warning about ALPHA software and bugs.
+ Minor updates.
+ * doc/descriptions/bh.desc doc/descriptions/canon630u.desc
+ doc/descriptions/dmc.desc doc/descriptions/sm3600.desc
+ doc/descriptions/umax1220u.desc: Minor fixes and updates for the new
+ .desc file format.
+ * TODO: Updated .desc and v4l section. Added entries for scanimage.
+ * NEWS: First draft for 1.0.9.
+
+2002-08-18 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * frontend/scanimage.c, frontend/stiff.h, frontend/stiff.c:
+ Added option "-i filename"/"--icc-profile filename":
+ When image is saved in tiff format then this icc-profile is
+ added to the tiff file as tiff tag
+
+2002-08-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/Makefile.in: Fixed gamma4scanimage target for OS/2.
+ * backend/v4l.c: Fixed device list. Added more verbose error output.
+ Unified DBG messages. Fixed depth option. Reordered options in
+ init_options to reflect real order. Added some markers (/* ??? */)
+ for suspicious code. Used GNU indent style.
+ * backend/v4l.h backend/v4l-frequencies.h backend/v4l-grab.h: Used GNU
+ indent style.
+
+2002-08-22 Frank Zago <fzago at austin dot rr dot com>
+
+ * backend/ricoh.c backend/ricoh.h backend/apple.c
+ backend/agfafocus.c backend/abaton.c
+ sanei/sanei_pv8630.c: Fixed some warnings.
+
+2002-08-22 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/sane-teco1.man: Added Dextra scanner to the list of
+ untested, but potentialy supported, scanners.
+ * doc/teco/teco1.txt: Added RELI 4830 inquiry string.
+ * doc/descriptions/teco3.desc: Increased version number.
+ * backend/: teco3.c, teco3.h: Added threshold option for black &
+ white.
+ * doc/descriptions/teco1.desc: Added 3 new (untested) scanners.
+ * backend/teco1.conf: Fixed the scsi inquiry string for the
+ VM4542.
+ * backend/teco1.c backend/teco1.h: Enlarged the gamma table for
+ the VM4542 (1024 entries as opposed to 256 for the previous
+ scanners).
+
+2002-08-22 Andras Major <andras@users.sourceforge.net>
+
+ * backend/coolscan2.c doc/descriptions/coolscan2.desc
+ doc/sane-coolscan2.man: updated to 0.1.7.
+
+2002-08-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/.cvsignore: Added gamma4scanimage.1
+
+2002-08-20 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * PROJECTS: Added Hewlett-Packard ScanJet 4470C project.
+ * tools/.cvsignore: Added gamma4scanimage.
+ * tools/MAkefile.in: Added gamma4scanimage.c to DISTFILES.
+
+2002-08-18 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+ * tools/gamma4scanimage.c: Bugfix (atof->atoi)
+ * tools/README: added gamma4scanimage
+ * doc/Makefile.in: added manpage for gamma4scanimage
+ * doc/gamma4scanimage.man: added manpage for gamma4scanimage
+
+2002-08-17 Karl Heinz Kremer <khk@khk.net>
+
+ * backend/epson.[ch]: Fixed typo in variable name. Fixed IEEE-1394
+ problem with Perfection-2450. Fixed problem with older B3 level
+ SCSI scanners that do not support the extended status request.
+
+2002-08-17 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+ * tools/gamma4scanimage.c: NEW: tool to create gamma table for scanimage
+ * tools/Makefile.in: changed file to compile and install gamma4scanimage
+
+2002-08-16 Gerhard Jaeger <gerhard@gjaeger.de>
+
+ * doc/descriptions/plustek.desc: Update according to the new
+ entry definitions
+ * po/saneopts.es.po: More complete spanish translation
+ (Thanks to Gustavo Vranjes)
+ * backend/plustek.c backend/plustek-devs.c backend/plustek-pp.c
+ backend/plustek-share.h backend/plustek-usb.c backend/plustek-usb.h
+ backend/plustek-usbhw.c backend/plustek-usbimg.c
+ backend/plustek-usbmap.c backend/plustek-usbscan.c
+ backend/plustek-usbshading.c backend/plustek.conf:
+ Major update to support better control of all LM983x based devices
+ HP2200C, Mustek Bearpaw 1200 and 2400 are now working correctly
+
+2002-08-15 Peter Fales <peter@fales-lorenz.net>
+
+ * configure, acinclude.m4, aclocal.m4 - Another tweak to the
+ allowed gphoto2 version numbers
+
+2002-08-15 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * tools/umax_pp.c: upped version number
+ * backend/umax_pp_low.c backend/umax_pp.c: corrected ppdev usage,
+ minor option fix
+
+2002-08-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS: Made Ulrich Deiters the active maintainer of the canon
+ backend.
+ * TODO: Updated concerning HP backend and manufacturer names.
+
+2002-08-07 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c backend/canon_pp-dev.c backend/caon_pp-io.c
+ backend/canon_pp-dev.h: Many changes: Bug fixes, less memory leaks
+ (none left now?), more reliable, faster. Biggest changes are
+ speculative reads (ask scanner to read more while data processing
+ occurs) and more reliable sending of commands. Slight performance
+ increase over previous version.
+ * doc/sane-canon_pp.man: Added discussion noting that scanning
+ greyscale in green is bad for colour.
+
+2002-08-07 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.h: Add missing structure member got_connect_type
+
+2002-08-06 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * doc/descriptions/hp.desc: Use Hewlett-Packard instead of HP
+
+2002-08-01 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp-dev.c: Misc bug fixes for fast machines, more
+ useful debug messages, more reliable file reads/writes.
+
+2002-07_31 Peter Kirchgessner <peter@kirchgessner.net>
+
+ * backend/hp.c, backend/hp-scl.c: hp-backend V0.96
+ Check device names to prevent USB-devices to be opened as SCSI.
+
+2002-07-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * po/Makefile.in: Use awk to filter out duplicate .po file headers.
+ * po/umax_pp.de.po po/umax_pp.fr.po: Avoided including duplicate
+ msgids. Made sure that header is not marked fuzzy.
+ * Makefile.in doc/Makefile.in japi/Makefile.in tools/Makefile.in:
+ Minor DISTFILES and distclean updates.
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Fixed some warnings.
+ * TODO: Removed entries about "echo -e" and po problems.
+
+2002-07-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-config.in: Avoid using "echo -e" for compatibility
+ reasons.
+
+2002-07-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * sanei/sanei_usb.c: Made libusb_timeout static.
+ * TODO: Updated .desc entries. Removed entry about scanimage i18n
+ support.
+
+2002-07-25 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Now always uses as much scanner buffer as
+ possible, then feeds data to frontend. Results in large speed
+ increase in ECP mode. Also fixed problems with saned compatibility.
+ * backend/canon_pp.h: Added bytes_sent to scanner data structure.
+ * doc/sane-canon_pp.man: Discuss hardware problems at high
+ resolutions.
+
+2002-07-25 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/sane.man doc/teco/teco3.txt doc/.cvsignore
+ doc/sane-teco3.man doc/Makefile.in
+ doc/descriptions-external/teco3.desc doc/descriptions/teco3.desc
+ backend/teco3.c backend/teco3.h backend/teco3.conf
+ backend/Makefile.in sane-backends/TODO sane-backends/AUTHORS
+ backend/dll.conf: teco3 integration
+ * sane-backends/Makefile.in: added an etags rule to create an
+ emacs tag file
+ * doc/backend-writing.txt: Enlarged the "SUBMITTING A NEW BACKEND"
+ section.
+
+
+2002-07-25 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Now uses mm instead of pixel measurements, better
+ behaved in xsane etc as a result.
+ * backend/canon_pp.h: Tweaked up max buffer size to size avaialable in
+ hardware.
+ * doc/descriptions/canon_pp.desc: increment version no.
+
+2002-07-24 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/backend-writing.txt: Added a SUBMITTING CHECKLIST section.
+
+2002-07-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/stiff.c: Fixed 16 bit tiff output.
+ * backend/test.c backend/test.conf backend/test.h
+ backend/test-picture.c doc/descriptions/test.desc doc/sane-test.man:
+ Added option invert-endianess to test 16 bit modes.
+
+2002-07-24 Kazuya Fukuda <kaafuu@mug.biglobe.ne.jp>
+
+ * doc/descriptions/nec.desc:
+ Remove unsupported scanner and update url.
+
+2002-07-24 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * src/canon_pp-io.c: Minor bugfix checking return of read
+
+2002-07-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * TODO: Updated desc file entries. Removed entries about microtek
+ fprintf issue and fujitsu mem leak.
+
+2002-07-23 Simon Munton <simon@munton.demon.co.uk>
+ * backend/pie.c: added consistency check for TL_X < BR_X and
+ TL_Y < BR_Y
+
+2002-07-23 Peter Fales <peter@fales-lorenz.net>
+
+ * doc/descriptions/gphoto2.desc: Comment out :interface line
+
+2002-07-23 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * doc/descriptions/umax_pp.desc: tagged 610P as unsupported
+
+2002-07-22 Frank Zago <fzago at austin dot rr dot com>
+
+ * TODO: scheduled teco2 and teco3 backends for 1.0.9
+
+2002-07-22 Matto Marjanovic <maddog@mir.com>
+
+ * doc/descriptions/microtek.desc:
+ Updated (status keywords, mostly).
+ * backend/microtek.c:
+ * backend/microtek.h:
+ Replaced fprintf()/printf() with various DBG() statements.
+ Removed #include <stdio.h>!
+ Eliminated a few "unused parameter" compiler warnings.
+ Updated the copyright date.
+ Bumped version up to lucky 0.13.0
+
+2002-07-23 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * doc/sane-canon_pp.man: Added N640Pex to the man page too..
+
+2002-07-22 Chris Pinkham <cpinkham@infi.net>
+
+ * doc/descriptions/artec.desc: Changed status of AT6 model to alpha.
+ Deleted entries for USB & parallel port scanners which are
+ unsupported.
+
+2002-07-23 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * doc/descriptions/canon_pp.desc: Added "N640P ex" model to supported
+ scanners after report of successful test. Also, "EPP" really should
+ have been "ECP".
+
+2002-07-22 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * frontend/scanimage.c: Fail if there are arguments without a preceding
+ option on the command line. Fixed indenting.
+ * TODO: Updated concerning .desc files. Added comment about USB
+ problems on *BSD.
+
+2002-07-21 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/template.desc.
+ doc/descriptions-external/template.desc.: Updated and added more
+ examples.
+
+2002-07-19 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * doc/descriptions/umax.desc: added per scanner status
+
+2002-07-17 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Models are sorted alphanumerically now. Added
+ support for priorities if one model is mentioned by two backends.
+ Don't print tables when no suitable backend was found.
+ More comments. Fixed some warnings. Code cleanup.
+ * doc/Makefile.in: Added support for sane-desc.c.
+ * doc/backend-writing.txt: Updated concerning sane-desc.c.
+ * backend/mustek_usb.c backend/mustek_usb_high.h
+ backend/mustek_usb_low.c doc/descriptions/mustek_usb.desc
+ doc/mustek_usb/mustek_usb.CHANGES: Added manufacturer comment in
+ mustek_usb.desc. Changed brightness to threshold. Fixed some
+ warnings. Really check the status in usb_low_open.
+ * sanei/sanei_usb.c: Check if file is already closed.
+
+2013-07-15 Frank Zago <fzago at austin dot rr dot com>
+
+ * doc/descriptions/leo.desc doc/descriptions/sceptre.desc
+ doc/descriptions/teco1.desc doc/descriptions/matsushita.desc:
+ added new per backend status, added more scanners.
+
+2002-07-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * README.darwin: New file. Added some basic information for
+ Darwin (Mac OS X) users.
+ * Makefile.in: Added the new README files to DISTFILES.
+ * tools/sane-find-scanner.c: Print USB descriptors (libusb) in
+ -v -v mode. Print vendor and product names (when available).
+ Rewrote libusb heuristics.
+ * backend/Makefile.in: Removed deleted files from DISFILES.
+
+2002-07-14 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * include/sane/sanei_usb.h: Made buffer const SANE_Byte * in
+ sanei_usb_bulk_write(). Try to call usb_find_busses only once.
+ Make sure that already opened devices aren't opened again. Exit
+ libusb scan loop if one device is found. Make error values
+ more expressive. Check for missing config descriptors before
+ using them to avoid segfaults.
+ * README.openbsd: Updated concerning USB scanners.
+ * README.openbsd README.netbsd: New files. Added some information
+ about SCSI and USB problems.
+ * tools/sane-find-scanner.c: Made verbosity option more flexible and
+ added quiet option. In quiet mode, print only the devices we have
+ found. Don't check USB devices with SCSI functions and vice versa if
+ option force is not given. Don't do the libusb scan if an explicit
+ device name was given.
+ * doc/sane-usb.man: Updated supported platforms list. Minor wording
+ improvements.
+ * doc/sane-find-scanner.man: Documentation for the new options.
+ Splitted USB and SCSI parts.
+ * doc/descriptions/hpsj5s.desc: Added missing space in ":new :yes"
+ line.
+ * TODO: Added entry about desc files. Removed entries about
+ sane-backends.html, sanei_usb.c libusb support, and the OS/2
+ strncasecmp problem. Updated entries about checking device file
+ types and OS X in sanei_scsi.c.
+
+2002-07-13 Simon Munton <simon@munton.demon.co.uk>
+ * doc/descriptions/pie.desc: removed unsupported scanner types,
+ use :status :untested for untested models, added AdLib scanners
+ that are supported
+
+2002-07-13 Oliver Schwartz <Oliver.Schwartz@gmx.de>
+
+ * backend/snapscan.c backend/snapscan.h
+ backend/snapscan-options.c backend/snapscan-usb.c
+ backend/snapscan-scsi.c backend/snapscan.conf:
+ Snapscan backend version 1.4.15
+ - Improve support for Acer / Benq 5300
+ - use usb_sanei_read_bulk() and usb_sanei_write_bulk()
+ - correct scan area for e52 with TPO
+ * doc/description/snapscan.desc:
+ - Adapted file to new syntax
+ - Mark most scanners as "stable"
+
+2002-07-12 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Added backends mode with splitted tables.
+ Fixed HTML colors. Spelling and other minor fixes.
+ * doc/descriptions-external/hp4200.desc
+ doc/descriptions-external/hpoj.desc
+ doc/descriptions-external/ibm.desc
+ doc/descriptions-external/lhii.desc
+ doc/descriptions-external/niash.desc
+ doc/descriptions-external/teco2.desc
+ doc/descriptions-external/teco3.desc
+ doc/descriptions-external/tevion9693usb.desc
+ doc/descriptions-external/v4l2.desc: Minor fixes for the new
+ sane-desc.c. Commented out version numbers and manpages. Added
+ :status :untested if the comment suggests this. Fixed double
+ and bad device types.
+ * tools/sane-find-scanner.c: Added support for libusb. Made comments
+ better readable and positioned after the output of the devices.
+ Shorter output to fit into 80 chars.
+
+2002-07-08 Karl Heinz Kremer <khk@khk.net>
+ * doc/descriptions/epson.desc: fixed typo in URL
+ added :status lines to the scanner entries
+
+2002-07-09 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * doc/descriptions/sharp.desc: Added ":status" lines
+ to the scanner entries
+
+2002-07-08 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions/sp15c.desc: Added missing slash in URL.
+ * doc/descriptions/fujitsu.desc: Changed status to :beta. Added
+ some URLs.
+ * frontend/Makefile.in: Use LIBS = @LIBS@ to make sure that
+ -lsyslog and -lsocket are linked for OS/2.
+ * doc/descriptions/abaton.desc: Added :status :untested for
+ Scan 300/S.
+ * doc/descriptions/agfafocus.desc: Added status and comments (from
+ the manpage).
+ * doc/descriptions/ricoh.desc: Removed unused version and comment
+ tokens.
+ * doc/descriptions/s9036.desc: Changed :devicetype to :scanner.
+ I guess :vidcam is not appropriate for a flatbed scanner :-)
+ * doc/descriptions/net.desc doc/descriptions/test.desc: No bugs for
+ quite some time, changed status to stable (knocking on wood).
+ Updated comments.
+ * doc/descriptions.txt doc/descriptions/template.desc.
+ doc/descriptions-external/template.desc.: Updated concerning
+ model status.
+ * tools/sane-desc.c: Added support for :status :unsupported.
+
+2002-07-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Added status per model. Added quicklist for
+ manufacturers. All manufacturer URLs are printed now. Code cleanup.
+ Added status column for non-hardware devices. Fixed legends. Minor
+ output fixes.
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Increased width and height of Paragon
+ 800 and 600.
+ * doc/descriptions/mustek_usb.desc: Changed status to stable
+ (knocking on wood...). Added more Mustek URLs, fixed the existing
+ one. Added per-model status. Added "compatible" comments.
+ * doc/descriptions/mustek.desc: Fixed Mustek URL. Added Trust comment
+ about similar names. Added comments about compatible scanners.
+ Fixed Primax URL.
+ * doc/descriptions/sp15c.desc: Fixed manpage link. Use "Fujitsu"
+ consistently. Updated manufacturer links.
+
+2002-07-06 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-desc.c: Added <br> after backend name. Colors can be
+ changed by macros now. Centered entries. Code cleanup. Manufacturer
+ page split up into seperate tables. Added links and comment display
+ on the top of each table. Manufacturers are case-insensitive.
+ OS/2 fix.
+ * configure: Regenerated from configure.in.
+ * doc/sane-usb.man: Mentioned control messages, usbfs, and more
+ methods for permission adjustment.
+ * configure configure.in include/sane/config.h.in: Added define
+ for strcasecmp on OS/2.
+
+2002-07-06 Max Vorobiev <pcwizard@yandex.ru>
+
+ * backend/hpsj5s.c: Rewrote to depend on libieee1284.
+ * backend/hpsj5s.h: Added register description defines
+ * backend/hpsj5s.conf: Default config setted for parport0
+ * backend/hpsj5s_int.h: Removed. All important stuff moved to hpsj5s.h
+ * backend/Makefile.in: hpsj5s backend build depend on libieee1284 present
+ * doc/hpsj5s.man: Comments about libieee1284 added
+ * configure.in: hpsj5s backend will be compiled if libieee1284 detected
+
+2002-07-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/.cvsignore tools/Makefile.in rools/README tools/sane-desc.c:
+ Added new file sane-desc.c. sane-desc is inended as an replacement
+ for the Emacs Lisp file sane-desc.el. It can generate ASCI and HTML
+ lists from the backends' .desc files.
+ * doc/sane.man: Added security to the list of topics that can be
+ reported to me.
+ * doc/descripions/template.desc.
+ doc/descriptions-external/template.desc.: Updated concerning ":new".
+
+2002-07-03 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in include/sane/config.h.in: Added HAVE_LIBUSB
+ #define. Check for usb_get_busses to make sure, we have at least
+ version 0.1.6. Added OS/2 substitution for strncasecmp.
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Added support for libusb.
+ * README.netbsd: Removed. Shared libraries are supported since 1.0.8.
+ * README.openbsd: Updated for libusb.
+ * README: Added section about libraries like libiee1284 and libusb.
+ * doc/doxygen-sanei.conf: Updated version number.
+ * include/sane/sanei_usb.h sanei/sanei_usb.c: Used dn (device number)
+ instead of fd (file descriptor) to avoid confusion. Updated doxygen
+ documentation.
+ * doc/sane-usb.man: Updated concerning libusb. Added tips for access
+ via the kernel scanner drivers.
+
+2002-06-29 Matthew Duggan <stauff1@users.sourceforge.net>
+
+ * backend/canon_pp.c: Workaround for ppdev bug on <= Linux 2.4.19rc1.
+ * backend/canon_pp-io.c: Fixed reading on hardware with small buffers.
+ * doc/descriptions/canon_pp.desc: Status changed from new to alpha.
+
+2002-06-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: For HP-UX, check the complete
+ /dev/rscsi/ directory for SCSI sscanners, not only the device
+ files for the first two host adapters.
+ * TODO: Added entries about sanei_usb/ibusb, config.h/OS/2, echo -e
+ in shell scrips, and japi. Updated dll entry. Removed entry about
+ sane-find-scanner.
+
+2002-06-27 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/sane-fujitsu.man doc/sane-tamarack.man: Added newline at
+ the end to keep Solaris' sed happy.
+ * sanei/sanei_scsi.c: Set buffer size to 64 kB for
+ SOLARIS_USCSI_INTERFACE (reported by Ed Randall
+ <ed.randall@ingenotech.com>).
+
+2002-06-25 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * tools/sane-find-scanner.c: Added support for scanning whole
+ directories for SCSI and USB device files. Moved SCSI and USB
+ detection routines to their own functions. Renamed functions
+ related to SCSI for clarity. Fixed indentation.
+
+2002-06-21 Max Vorobiev <pcwizard@yandex.ru>
+
+ * backend/hpsj5s.c: added fcntl.h include directive.
+
+2002-06-15 Andras Major <andras@users.sourceforge.net>
+
+ * doc/sane-coolscan2.man: corrected stupid mistake.
+
+2002-06-14 Andras Major <andras@users.sourceforge.net>
+
+ * backend/coolscan2.c doc/sane-coolscan2.man
+ doc/descriptions/coolscan2.desc: updated to 0.1.6.
+
+2002-06-11 Henning Meier-Geinitz <henning@meier-geinitz.de>q
+
+ * README.solaris: Added comment about SCSI-only support.
+ * doc/sane-usb.man: Updated list of backends that use sanei_usb.
+ Fixed some minor spelling issues. Really used decimal numbers
+ in example.
+
+2002-06-09 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/descriptions.txt: New file. Specification of the format of
+ backend description files (*.desc).
+ * configure configure.in: Added some sanity checks. Configure
+ now stops if one of the essential headers isn't found.
+ * backend/dll.conf: Added entry for test backend (commented out).
+ * doc/backend-writing.txt: Mentioned descriptions.txt.
+ * bachend/test.c backend/test.conf backend/test.h
+ backend/test-picture.c doc/descriptions/test.desc doc/sane-test.man:
+ Added support for lineart mode with pixels_per_line not divisible by
+ 8. Added support for padded image formats. Added documentation for
+ all options.
+
+2002-06-07 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Fixed problem for Paragon 6000SP (color
+ and gray modes produced solid black images). Minor cleanups.
+ New version: 1.0-125.
+ * config.guess config.sub: Updated to latest versions (from
+ ftp://ftp.gnu.org/pub/gnu/config/).
+ * configure configure.in: Print CPPFLAGS, CFLAGS, LDFLAGS and LIBS
+ for easier debugging. Moved AC_SUBST to the variable definitions
+ they belong to.
+
+2002-06-05 Abel Deuring <a.deuring@satzbau-gmbh.de>
+ * doc/descriptions/sharp.desc: added "interface" parameter
+
+2002-06-05 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp.c: reverted a change in color reordering for 1600P
+ * po/Makefile.in po/umax_pp.de.po: added german translation courtesy
+ of Heiko Schaefer <heiko@burmagroup.de>
+
+
+2002-06-04 Rene Rebe <rene.rebe@gmx.net>
+
+ * backend/avision.c backend/avision.h backend/avision.conf: next
+ backend version. Should work for the HP 5300 and HP 5370 now.
+ Serveral other minor fixes.
+
+2002-06-04 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c: relaxed scanner detection not to fail on
+ some parports.
+
+2002-06-02 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in backend/Makefile.in: Added option
+ --disable-local-backends to configure. Only net and dll will be
+ compiled if set. Also a warning is printed.
+ * TODO: Removed entries about config.h.in macros and disabling local
+ backends.
+
+2002-06-01 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * backend/pnm.c-bad: Removed because it was out-of-date and buggy.
+ The features of this modified pnm backend are now in test.c.
+
+2002-05-30 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * corrected wrong version number in umax.desc
+
+2002-05-30 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_mid.c backend/umax_pp.c: software lineart for real
+ this time.
+
+2002-05-30 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * doc/saned.man: Added explicit path to tcpd example.
+ * sanei/sanei_usb.c: Explicitely initialize vendorID and productID.
+ * sanei/sanei_config.c sanei/sanei_config2.c: Fixed possible segfault.
+
+2002-05-30 Stéphane Voltz <svoltz@wanadoo.fr>
+
+ * backend/umax_pp_low.c backend/umax_pp.c: fixed 1600P detection,
+ IRIX compile fixes, final bits of software lineart
+
+2002-05-29 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * AUTHORS backend/Makefile.in backend/dll.conf backend/hpsj5s.c
+ backend/hpsj5s.conf backend/hpsj5s.h backend/hpsj5s_int.h
+ doc/sane-hpsj5s.man doc/descriptions/hpsj5s.desc doc/.cvsignore
+ doc/Makefile.in doc/sane.man: Added hpsj5s backend for the
+ Hewlett-Packard ScanJet 5S parport scanner (from Max Vorobiev
+ <pcwizard@zelmail.ru>).
+ * PROJECTS: Removed hpsj5s.
+
+2002-05-29 Frank Zago <fzago at austin dot rr dot com>
+
+ * configure.in: Added test for long long. Fixed declaration for
+ HAVE_ASM_IO_H
+ * configure include/sane/config.h.in: regenerated
+ * frontend/tstbackend: add test for long long.
+
+2002-05-28 Frank Zago <fzago at austin dot rr dot com>
+
+ * po/matsushita.fr.po po/saneopts.fr.po po/sceptre.fr.po
+ po/teco1.fr.po po/umax.fr.po backend/leo.c backend/leo.h
+ backend/matsushita.c backend/matsushita.h backend/sceptre.c
+ backend/sceptre.h backend/teco1.c backend/teco1.h
+ frontend/tstbackend.c: new email address.
+
+2002-05-28 Henning Meier-Geinitz <henning@meier-geinitz.de>
+
+ * configure configure.in: Warnings enabled by default.
+ * sanei/sanei_scsi.c: Fixed request-sense handling for OpenStep
+ (from Oliver Schirrmeister <oschirr@abm.de>).
+ * backend/mustek.c doc/descriptions/mustek.desc
+ doc/mustek/mustek.CHANGES: Set X minimum value to 0 for Paragon
+ 6000SP.
+
+2002-05-27 Oliver Rauch <Oliver.Rauch@rauch-domain.de>
+
+ * configure.in/configure: V_EXTRA=-cvs
+
+Older entries can be found in ChangeLog-1.0.8.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 2099840..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,370 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
-Inc.
-
- Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved. This file is offered as-is,
-without warranty of any kind.
-
-Basic Installation
-==================
-
- Briefly, the shell command `./configure && make && make install'
-should configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package. Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below. The lack of an optional feature in a given package is not
-necessarily a bug. More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
- The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package, generally using the just-built uninstalled binaries.
-
- 4. Type `make install' to install the programs and any data files and
- documentation. When installing into a prefix owned by root, it is
- recommended that the package be configured and built as a regular
- user, and only the `make install' phase executed with root
- privileges.
-
- 5. Optionally, type `make installcheck' to repeat any self-tests, but
- this time using the binaries in their final installed location.
- This target does not install anything. Running this target as a
- regular user, particularly if the prior `make install' required
- root privileges, verifies that the installation completed
- correctly.
-
- 6. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
- 7. Often, you can also type `make uninstall' to remove the installed
- files again. In practice, not all packages have tested that
- uninstallation works correctly, even though it is required by the
- GNU Coding Standards.
-
- 8. Some packages, particularly those that use Automake, provide `make
- distcheck', which can by used by developers to test that all other
- targets like `make install' and `make uninstall' work correctly.
- This target is generally not run by end users.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'. This
-is known as a "VPATH" build.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
- On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor. Like
-this:
-
- ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CPP="gcc -E" CXXCPP="g++ -E"
-
- This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
-Installation Names
-==================
-
- By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them. In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
- The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
- The first method involves providing an override variable for each
-affected directory. For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'. Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated. The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
- The second method involves providing the `DESTDIR' variable. For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names. The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters. On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
- Some packages offer the ability to configure how verbose the
-execution of `make' will be. For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
- ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
- HP-UX `make' updates targets which have the same time stamps as
-their prerequisites, which makes it generally unusable when shipped
-generated files such as `configure' are involved. Use GNU `make'
-instead.
-
- On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
-a workaround. If GNU CC is not installed, it is therefore recommended
-to try
-
- ./configure CC="cc"
-
-and if that doesn't work, try
-
- ./configure CC="cc -nodtk"
-
- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
- On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'. It is recommended to use the following options:
-
- ./configure --prefix=/boot/common
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS
- KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf limitation. Until the limitation is lifted, you can use
-this workaround:
-
- CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
- Print a summary of the options unique to this package's
- `configure', and exit. The `short' variant lists options used
- only in the top level, while the `recursive' variant lists options
- also present in any nested packages.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--prefix=DIR'
- Use DIR as the installation prefix. *note Installation Names::
- for more details, including other options available for fine-tuning
- the installation locations.
-
-`--no-create'
-`-n'
- Run the configure checks, but stop before creating any output
- files.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
diff --git a/INSTALL.linux b/INSTALL.linux
new file mode 100644
index 0000000..a851852
--- /dev/null
+++ b/INSTALL.linux
@@ -0,0 +1,153 @@
+Installation Instructions
+*************************
+
+1. Quick install:
+=================
+
+$ ./autogen.sh # only if you just cloned the git repository
+$ ./configure
+$ make
+$ make install
+
+
+2. Step by step install on Linux >=2.6, with udev:
+==================================================
+
+2.1. Install with your preferred package manager:
+ (a) the development environment for your Linux distibution
+ - mandatory: gcc, make, kernel header files, autoconf, autoconf-archive
+ - optional: git
+ (b) missing development packages
+ - libusb-dev or libusb-devel or libusb-compat-devel
+ - libjpeg-dev or libjpeg8-dev or libjpeg-turbo-devel or turbojpeg-devel
+ - libpng-dev or similar
+
+2.2. Get the latest SANE backend from git:
+ You can download "daily git snapshot" from here:
+
+ http://www.sane-project.org/snapshots/
+
+ If you prefer to use git, you can fetch a read-only copy of the git tree
+ with this command:
+
+ $ git clone https://gitlab.com/sane-project/backends.git
+
+ If you already are using a self compiled SANE backend and just fetched a
+ new copy of the git tree or if you patched some source files, there is no
+ need to follow the installation procedure again. You only need to make and
+ install libsane:
+
+ $ make && sudo make install
+
+2.3. Configure, make and install latest SANE backend:
+ We install a new SANE dynamically linked shared object library in
+ /usr/local/lib beside your system's SANE library.
+
+ $ ./autogen.sh # only if you just cloned the git repository
+ $ ./configure
+ $ make && sudo make install
+
+ If you want to change some settings for your SANE installation, please
+ read the documentation on the website, the man pages and:
+
+ $ ./configure --help
+
+ Maybe you don't want to compile all scanners on your system, then you can
+ select the backends you need, e.g. epson2 and fujitsu:
+
+ $ ./configure BACKENDS="epson2 fujitsu"
+
+ You can search for your scanners backend names here:
+
+ http://sane-project.org/lists/sane-backends-cvs.html
+
+2.3.1. SANE library:
+ Register new installed SANE dynamically linked shared object library.
+
+ $ sudo ldconfig -v | grep libsane
+ libsane.so.1 -> libsane.so.1.0.25
+ libsane.so.1 -> libsane.so.1.0.23
+
+ This example shows that the system first find version 1.0.25 and then
+ 1.0.23. This is the correct order.
+
+ If your system first find the old version and then the new installed one,
+ then you must change the order for library paths in /etc/ld.so.conf or you
+ must create the new configuration file /etc/ld.so.conf.d/1-sane.conf.
+
+ $ echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf.d/1-sane.conf
+
+ Then you must repeat this step.
+
+2.3.2. Localization file:
+
+ $ cd /usr/share/locale/<language>/LC_MESSAGES
+ $ sudo ln -sf /usr/local/share/locale/<language>/LC_MESSAGES/sane-backends.mo .
+ $ cd -
+
+2.3.3. udev rules file:
+
+ $ sudo cp tools/udev/libsane.rules /etc/udev/rules.d
+
+ Reconnect your scanner to the USB bus to activate the new rules file.
+
+2.3.4. Use the scanner with normal user rights:
+
+ Your user must be a member of the group scanner.
+
+ $ cat /etc/group | grep scanner
+ scanner:x:107:<user>
+
+ Create a new group scanner, if it doesn't exist.
+
+ $ sudo addgroup scanner
+
+ Add an existing user to group scanner.
+
+ $ sudo adduser <username> scanner
+
+ After this you must logoff and login again.
+
+2.4. Test your scanner:
+
+2.4.1. Check the used backend version:
+
+ The programs must use the installed SANE backend version, e.g. 1.0.25.
+
+ $ scanimage -V
+ scanimage (sane-backends) 1.0.25git; backend version 1.0.25
+
+ This example shows that backend and scanimage are version 1.0.25.
+
+ $ /usr/bin/scanimage -V
+ scanimage (sane-backends) 1.0.23; backend version 1.0.25
+
+ This example shows that an old scanimage (1.0.23) uses the backend 1.0.25.
+
+ If you want to use xsane, start xsane and check the used version with
+ CTRL - i.
+
+2.4.2. Access scanner with normal user rights:
+
+ $ scanimage -L
+
+ If your scanner isn't recognised here, try this:
+
+ $ sudo scanimage -L
+
+ If this works, your user doesn't have the rights to access the scanner.
+
+ However, please check and redo the installation described above.
+ If this doesn't help, you can ask the mailing list
+ <sane-devel@alioth-lists.debian.net> for further support.
+
+2.4.3. Testscan:
+
+ $ cd ~
+ $ scanimage > test.pnm
+
+
+3. Advanced Installation Information
+====================================
+
+ Please read the documents INSTALL, README and README.linux.
diff --git a/Makefile.am b/Makefile.am
index ae02ee3..54d0f27 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,7 +12,9 @@ dist_doc_DATA = AUTHORS ChangeLog COPYING LICENSE NEWS PROBLEMS PROJECTS \
README.hp-ux README.linux README.netbsd README.openbsd README.os2 \
README.solaris README.unixware2 README.unixware7 README.windows \
README.zeta
-EXTRA_DIST = $(PACKAGE).lsm
+
+EXTRA_DIST = .editorconfig
+EXTRA_DIST += po/README
#
# Keep the .gitignore files sorted, and use this target to do it.
@@ -68,24 +70,13 @@ libcheck:
installcheck-local:
cd testsuite && $(MAKE) test.local
-$(distdir).lsm: dist $(PACKAGE).lsm
- ( cat $(PACKAGE).lsm | \
- sed -e "s|_DATE_|`date +%d%b%y`|g" |\
- sed -e "s|_VERSION_|$(VERSION)|g" | \
- sed -e "s|_T_S_|`find $(distdir).tar.gz -printf "%4k"`|g" |\
- sed -e "s|_L_S_|`find $(PACKAGE).lsm -printf "%4k"`|g" >\
- $(distdir).lsm \
- )
-lsm: $(distdir).lsm
-
md5: dist
md5sum $(distdir).tar.gz > $(distdir).tar.gz.md5
-sane-backends: lsm md5
+sane-backends: md5
# Clean files created by custom targets in this file.
clean-local:
- rm -f sane-backends-*.lsm
rm -f $(distdir).tar.gz.md5
# Clean files created by configure
@@ -94,3 +85,6 @@ distclean-local:
rm -f include/byteorder.h
ACLOCAL_AMFLAGS = -I m4
+
+# Make potential issues stick out when running `make distcheck`.
+DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index 204f510..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,1023 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = .
-DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
- $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/configure $(am__configure_deps) \
- $(top_srcdir)/include/sane/config.h.in mkinstalldirs ABOUT-NLS \
- $(dist_doc_DATA) COPYING ar-lib compile config.guess \
- config.rpath config.sub depcomp install-sh missing ltmain.sh
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno config.status.lineno
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
- ctags-recursive dvi-recursive html-recursive info-recursive \
- install-data-recursive install-dvi-recursive \
- install-exec-recursive install-html-recursive \
- install-info-recursive install-pdf-recursive \
- install-ps-recursive install-recursive installcheck-recursive \
- installdirs-recursive pdf-recursive ps-recursive \
- tags-recursive uninstall-recursive
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(docdir)"
-DATA = $(dist_doc_DATA)
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
- $(RECURSIVE_TARGETS) \
- $(RECURSIVE_CLEAN_TARGETS) \
- $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
- if test -d "$(distdir)"; then \
- find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -rf "$(distdir)" \
- || { sleep 5 && rm -rf "$(distdir)"; }; \
- else :; fi
-am__post_remove_distdir = $(am__remove_distdir)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
-distuninstallcheck_listfiles = find . -type f -print
-am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
- | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
-distcleancheck_listfiles = find . -type f -print
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = include lib sanei backend frontend tools doc po testsuite
-DIST_SUBDIRS = include lib sanei backend frontend tools doc po japi testsuite
-dist_doc_DATA = AUTHORS ChangeLog COPYING LICENSE NEWS PROBLEMS PROJECTS \
- README README.aix README.beos README.darwin README.djpeg README.freebsd \
- README.hp-ux README.linux README.netbsd README.openbsd README.os2 \
- README.solaris README.unixware2 README.unixware7 README.windows \
- README.zeta
-
-EXTRA_DIST = $(PACKAGE).lsm
-
-#
-# Keep the .gitignore files sorted, and use this target to do it.
-# Note that git's negated ignore patterns introduce order dependency
-# and should therefor be sorted with much more care than we do here.
-# Until that has been taken care of, such files are best left alone.
-#
-PERL = perl
-ACLOCAL_AMFLAGS = -I m4
-all: all-recursive
-
-.SUFFIXES:
-am--refresh: Makefile
- @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
- $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- echo ' $(SHELL) ./config.status'; \
- $(SHELL) ./config.status;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- $(SHELL) ./config.status --recheck
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-$(am__aclocal_m4_deps):
-
-include/sane/config.h: include/sane/stamp-h1
- @test -f $@ || rm -f include/sane/stamp-h1
- @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/sane/stamp-h1
-
-include/sane/stamp-h1: $(top_srcdir)/include/sane/config.h.in $(top_builddir)/config.status
- @rm -f include/sane/stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status include/sane/config.h
-$(top_srcdir)/include/sane/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f include/sane/stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f include/sane/config.h include/sane/stamp-h1
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool config.lt
-install-dist_docDATA: $(dist_doc_DATA)
- @$(NORMAL_INSTALL)
- @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
- done
-
-uninstall-dist_docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-# (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
- @fail=; \
- if $(am__make_keepgoing); then \
- failcom='fail=yes'; \
- else \
- failcom='exit 1'; \
- fi; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscope: cscope.files
- test ! -s cscope.files \
- || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-clean-cscope:
- -rm -f cscope.files
-cscope.files: clean-cscope cscopelist
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
- -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
-distdir: $(DISTFILES)
- $(am__remove_distdir)
- test -d "$(distdir)" || mkdir "$(distdir)"
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- $(am__make_dryrun) \
- || test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
- -test -n "$(am__skip_mode_fix)" \
- || find "$(distdir)" -type d ! -perm -755 \
- -exec chmod u+rwx,go+rx {} \; -o \
- ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
- ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
- || chmod -R a+r "$(distdir)"
-dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
- $(am__post_remove_distdir)
-
-dist-bzip2: distdir
- tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
- $(am__post_remove_distdir)
-
-dist-lzip: distdir
- tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
- $(am__post_remove_distdir)
-
-dist-xz: distdir
- tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
- $(am__post_remove_distdir)
-
-dist-tarZ: distdir
- @echo WARNING: "Support for shar distribution archives is" \
- "deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
- $(am__post_remove_distdir)
-
-dist-shar: distdir
- @echo WARNING: "Support for distribution archives compressed with" \
- "legacy program 'compress' is deprecated." >&2
- @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
- $(am__post_remove_distdir)
-
-dist-zip: distdir
- -rm -f $(distdir).zip
- zip -rq $(distdir).zip $(distdir)
- $(am__post_remove_distdir)
-
-dist dist-all:
- $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
- $(am__post_remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- case '$(DIST_ARCHIVES)' in \
- *.tar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
- *.tar.bz2*) \
- bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
- *.tar.lz*) \
- lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
- *.tar.xz*) \
- xz -dc $(distdir).tar.xz | $(am__untar) ;;\
- *.tar.Z*) \
- uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
- *.shar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
- *.zip*) \
- unzip $(distdir).zip ;;\
- esac
- chmod -R a-w $(distdir)
- chmod u+w $(distdir)
- mkdir $(distdir)/_build $(distdir)/_inst
- chmod a-w $(distdir)
- test -d $(distdir)/_build || exit 0; \
- dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
- && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
- && am__cwd=`pwd` \
- && $(am__cd) $(distdir)/_build \
- && ../configure \
- $(AM_DISTCHECK_CONFIGURE_FLAGS) \
- $(DISTCHECK_CONFIGURE_FLAGS) \
- --srcdir=.. --prefix="$$dc_install_base" \
- && $(MAKE) $(AM_MAKEFLAGS) \
- && $(MAKE) $(AM_MAKEFLAGS) dvi \
- && $(MAKE) $(AM_MAKEFLAGS) check \
- && $(MAKE) $(AM_MAKEFLAGS) install \
- && $(MAKE) $(AM_MAKEFLAGS) installcheck \
- && $(MAKE) $(AM_MAKEFLAGS) uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
- distuninstallcheck \
- && chmod -R a-w "$$dc_install_base" \
- && ({ \
- (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
- && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
- distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
- } || { rm -rf "$$dc_destdir"; exit 1; }) \
- && rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist \
- && rm -rf $(DIST_ARCHIVES) \
- && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
- && cd "$$am__cwd" \
- || exit 1
- $(am__post_remove_distdir)
- @(echo "$(distdir) archives ready for distribution: "; \
- list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
- sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
-distuninstallcheck:
- @test -n '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: trying to run $@ with an empty' \
- '$$(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- $(am__cd) '$(distuninstallcheck_dir)' || { \
- echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
- exit 1; \
- }; \
- test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left after uninstall:" ; \
- if test -n "$(DESTDIR)"; then \
- echo " (check DESTDIR support)"; \
- fi ; \
- $(distuninstallcheck_listfiles) ; \
- exit 1; } >&2
-distcleancheck: distclean
- @if test '$(srcdir)' = . ; then \
- echo "ERROR: distcleancheck can only run from a VPATH build" ; \
- exit 1 ; \
- fi
- @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
- || { echo "ERROR: files left in build directory after distclean:" ; \
- $(distcleancheck_listfiles) ; \
- exit 1; } >&2
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
- for dir in "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr \
- distclean-libtool distclean-local distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-dist_docDATA
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am: installcheck-local
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(top_srcdir)/autom4te.cache
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-dist_docDATA
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
- am--refresh check check-am clean clean-cscope clean-generic \
- clean-libtool clean-local cscope cscopelist-am ctags ctags-am \
- dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \
- dist-tarZ dist-xz dist-zip distcheck distclean \
- distclean-generic distclean-hdr distclean-libtool \
- distclean-local distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am \
- install-dist_docDATA install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installcheck-local installdirs installdirs-am \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-dist_docDATA
-
-sort-gitignore:
- for f in `find . -name .gitignore`; do \
- if test -n "`sed -n '/^\!/p' $$f`"; then \
- echo "$$f: skipping file with negated pattern" >&2; \
- fi; \
- $(PERL) -e 'print sort <>;' < $$f > $$f.tmptmp; \
- mv $$f.tmptmp $$f; \
- done
-
-#
-# Check to make sure only sane_ and sanei_ symbols are exported from
-# the libraries
-#
-libcheck:
- @echo "Libraries exporting 'illegal' symbols:"
- @for lib in backend/.libs/*.so backend/.libs/*.a; do \
- lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep -v ' _fini| _init'|egrep -v ' sane_| sanei_'`; \
- if test -n "$$lines" ; then \
- echo -e "*** $$lib:\n$$lines"; \
- found_errors="yes"; \
- fi \
- done; \
- echo; \
- echo "Libraries exporting 'non-standard sane_*' symbols:"; \
- for lib in backend/.libs/*.so backend/.libs/*.a; do \
- lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep ' sane_' | egrep -v 'sane_.*init|sane_.*exit|sane_.*get_devices|sane_.*open|sane_.*close|sane_.*get_option_descriptor|sane_.*control_option|sane_.*get_parameters|sane_.*start|sane_.*read|sane_.*cancel|sane_.*set_io_mode|sane_.*get_select_fd|sane_strstatus'` ; \
- if test -n "$$lines" ; then \
- echo -e "*** $$lib:\n$$lines"; \
- found_errors="yes"; \
- fi \
- done;
- if test ! -z $$found_errors ; then \
- exit 1; \
- fi
-
-# Verify that backends do not contain any unwanted public symbols
-# anytime check or distcheck is ran.
-# TODO: Currently this doesn't pass. Uncomment once symbols have
-# been cleaned up.
-#check-am: libcheck
-
-# Run testsuite any time installcheck or distcheck is ran.
-# Must run testsuite after install or else shared library backends
-# will not be found (including test backend).
-installcheck-local:
- cd testsuite && $(MAKE) test.local
-
-$(distdir).lsm: dist $(PACKAGE).lsm
- ( cat $(PACKAGE).lsm | \
- sed -e "s|_DATE_|`date +%d%b%y`|g" |\
- sed -e "s|_VERSION_|$(VERSION)|g" | \
- sed -e "s|_T_S_|`find $(distdir).tar.gz -printf "%4k"`|g" |\
- sed -e "s|_L_S_|`find $(PACKAGE).lsm -printf "%4k"`|g" >\
- $(distdir).lsm \
- )
-lsm: $(distdir).lsm
-
-md5: dist
- md5sum $(distdir).tar.gz > $(distdir).tar.gz.md5
-
-sane-backends: lsm md5
-
-# Clean files created by custom targets in this file.
-clean-local:
- rm -f sane-backends-*.lsm
- rm -f $(distdir).tar.gz.md5
-
-# Clean files created by configure
-distclean-local:
- rm -f include/_stdint.h
- rm -f include/byteorder.h
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/NEWS b/NEWS
index bf78d65..5a326c6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,53 @@
--*-Mode: outline-*-
+<!-- -*- Mode: markdown -*- -->
+
+## New with 1.0.28 (released 2019-07-31)
+
+### Backends
+
+- adds a `ricoh2` backend
+- adds support for 40+ new scanner models
+- significantly changes `canon_dr`, `fujitsu`, `genesys`, `gt68xx`,
+ `hp5590` and, `pixma` backends
+- fixes bugs in `as6e`, `avision`, `mustek` and `plustek` backends
+- fixes scores of compiler warnings
+
+### Frontends
+
+- adds, changes and removes options for `saned` (see `man 8 saned` for
+ details)
+ - adds: `-l` (listen), `-D` (daemonize), `-o` (once), `-e` (stderr),
+ `-u` (user)
+ - removes: `-s` (syslog).
+ Use `-a -d level -o -f` for the old behavior
+ - changes: `-d` (debug).
+ Use `-a -d level -o -f -e` for the old behavior
+- `saned` now cancels scans if the data connections appears to have
+ gone away (after 4 seconds by default, configurable in `saned.conf`)
+- adds `--output-file` option to `scanimage`
+- adds `--help` option to `scan-find-scanner`
+- changes `sane-desc` to create relative hyperlinks
+
+### Documentation
+
+- adds translations for Catalan, Hebrew and Valencian
+- updates translations for British English, Dutch, German and
+ Ukrainian
+- marks unmaintained backends as such
+- documents USB workaround in `sane-usb` manual page
+
+### Build
+
+- requires a C++11 compatible compiler for the `genesys` backend
+- requires a JPEG library when building the `pixma` backend
+- fixes unneeded linking when not using preloadable backend support
+- disables pthread support for systems with non-integral `pthread_t`
+ type
+- fixes USB support detection on BeOS and OS/2 at `./configure` time
+- normalizes trailing whitespace in source code files. If you have
+ local patches that no longer apply, have a look at the whitespace
+ ignoring options of `patch` and `git apply`.
+
+
New with 1.0.27 (see Note 1), released 2017-05-22:
* Significant enhancements to canon_dr, epjitsu, epsonds, fujitsu,
@@ -7,7 +56,7 @@ New with 1.0.27 (see Note 1), released 2017-05-22:
* 30+ new scanner models supported.
* Made libusb-1.0 the default for USB support (see Note 2).
* Switched code from C90 to C99 (Thanks to Volker Diels-Grabsch).
-* Updated Linux USB3 workaround (see Note 3).
+* Updated Linux USB3 workaround (see Note 3).
* Documentation and translation updates.
* Bugfixes (Avahi, threading, USB, ICC/PNG/JPEG, etc).
* Reduced compiler warnings, improved code (see Note 4).
@@ -17,7 +66,7 @@ skipped so that our development version numbers would more clearly be
an extension of the prior release. This should make packaging a little
easier for our downstream users.
-Note 2: On all systems, the --enable-libusb* flags are now ignored.
+Note 2: On all systems, the --enable-libusb* flags are now ignored.
Instead, the --with-usb and --without-usb flags now control support.
When neither is given, USB support will be enabled if possible and
disabled otherwise. If --with-usb is requested but not possible,
@@ -113,7 +162,7 @@ New with 1.0.21, released 2010-04-25:
New with 1.0.20, released 2009-05-03:
* New backends: canon_dr (Canon DR-series), coolscan3 (Nikon LS & Coolscan),
- rts8891 (Umax & HP 44xx), xerox_mfp (Samsung/Xerox/Dell MFPs)
+ rts8891 (Umax & HP 44xx), xerox_mfp (Samsung/Xerox/Dell MFPs)
* Many backends updated.
* 75 more scanner models supported.
* New build system (thanks Chris and Olaf).
@@ -132,7 +181,7 @@ New with 1.0.20, released 2009-05-03:
New with 1.0.19, released 2008-02-10:
-* New backends: cardscan (Corex Cardscan 800c), epjitsu (Epson-based Fujitsu),
+* New backends: cardscan (Corex Cardscan 800c), epjitsu (Epson-based Fujitsu),
epson2 (various Epson scanners), hp3900 (HP ScanJet 3970 and more),
hp5590 (HP ScanJet 5590 and more), hpljm1005 (HP LaserJet M1005 and more),
hs2p (Ricoh IS400 series)
@@ -190,7 +239,7 @@ New with 1.0.16, released 2005-08-07:
* Updated backends: avision, canon, coolscan, epson, gphoto2, gt68xx, mustek,
mustek_pp, niash, plustek, plustek_pp, qcam, sm3600, snapscan, teco2,
umax_pp, v4l.
-* More functionality/fixes for sanei_usb and sanei_pp.
+* More functionality/fixes for sanei_usb and sanei_pp.
* Added sanei_access to allow locking of SANE devices.
* Hotplug updates.
* scanimage updates.
@@ -294,7 +343,7 @@ New with 1.0.10, released 2003-02-01:
New with 1.0.9, released 2002-10-24:
-* New backends: hpsj5s (Hewlett-Packard ScanJet 5S parport scanner),
+* New backends: hpsj5s (Hewlett-Packard ScanJet 5S parport scanner),
teco2 (some Relisys/Primax SCSI flatbed scanners, models VM3575, VM6565,
VM6586 and VM6575), teco3 (some Relisys/Piotech/Trust/Plustek SCSI
flatbed scanners, model VM3552).
@@ -314,9 +363,9 @@ New with 1.0.9, released 2002-10-24:
New with 1.0.8, released 2002-05-27:
-* New backends: canon_pp (Canon parport scanners), canon630u (CanoScan 630u
+* New backends: canon_pp (Canon parport scanners), canon630u (CanoScan 630u
+ 636u), coolscan2 (Nikon Coolscan LS-30, LS-40 ED, LS-4000 ED, and
- LS-8000 ED), fujitsu (M3091, M3093, M3096 and similar scanners),
+ LS-8000 ED), fujitsu (M3091, M3093, M3096 and similar scanners),
leo (Leo/Across FS-1130 scanner), matsushita (Panasonic KV-SS scanners),
sceptre (Sceptre VividScan S1200), teco1 (some Teco/Relisys flatbed
scanners), test (test frontends and SANE installation).
@@ -341,7 +390,7 @@ New with 1.0.7, released 2002-02-04:
* Updated backends: avision (v 1.0.15), dc240 (v 0.0), dc25 (v 1.2),
dll (v 1.0.5), epson (v 1.0.219), gphoto2 (v 0.0), microtek2 (v 0.95),
mustek (1.0.118), mustek_usb (v 1.0.10), plustek (v 0.41), pnm (v 1.0.4),
- sharp (v 0.32), snapscan (v 1.4.7), st400 (v 1.6), umax (v 1.0-32),
+ sharp (v 0.32), snapscan (v 1.4.7), st400 (v 1.6), umax (v 1.0-32),
umax_pp (v 1.0.6).
* Added support for translating backend options.
* Added support for USB control messages and lm983x and pv6830 chipsets.
@@ -357,7 +406,7 @@ New with 1.0.6, released 2001-11-05:
* New backends: gphoto2 (backend for gphoto2 supported cameras), mustek_usb
(for Mustek USB scanners 600CU, 1200CU(+), 1200UB).
-* Updated backends: dc240 (v 0.0), epson (v 0.2.12), hp (0.95),
+* Updated backends: dc240 (v 0.0), epson (v 0.2.12), hp (0.95),
m3096g (v 1.11), microtek2 (v 0.95), mustek (v1.0-113), net (v 1.0.5),
pie (1.0-7), pnm (1.0-2), snapscan (v 1.4.0), umax (1.0-31), umax_pp (1).
* Added generic support for USB devices.
@@ -475,22 +524,22 @@ New with 1.01:
Scanning from the ADF therefore should work now.
* Updated Microtek backend (by Matto Marjanovic)
- o Fixed off-by-1 error in revision-number parsing.
- o dump_inquiry() now prints the "Vendor Specific String".
- o Added model code/vendor name for the other 600ZS.
+ o Fixed off-by-1 error in revision-number parsing.
+ o dump_inquiry() now prints the "Vendor Specific String".
+ o Added model code/vendor name for the other 600ZS.
o Made get_scan_status() retry delay increase with each try (will
- this help the poor 600ZS?).
- o Corrected base resolution for Agfa StudioScan II/IIsi (400dpi).
+ this help the poor 600ZS?).
+ o Corrected base resolution for Agfa StudioScan II/IIsi (400dpi).
o Disabled backend's clever aspect-ratio correction code for
expanded-mode scans with StudioScan II/IIsi (scanner handles it
- internally - smart scanner.)
+ internally - smart scanner.)
o Fixed gamma LUT code parsing stupidity: now correctly
determines maximum allowed LUT size, and uses it. (Especially
- necessary for StudioScan II/IIsi.)
+ necessary for StudioScan II/IIsi.)
o The E6 claims to only support 256-byte LUT's, but the backend
- now ignores that misinformation (and uses 1024).
+ now ignores that misinformation (and uses 1024).
o Now ignores denial of expanded-mode by older E6's (model code
- 0x63), in addition to newer E6's.
+ 0x63), in addition to newer E6's.
* Updated Microtek2 backend (by Bernd Schroeder)
o Added support for non-blocking I/O.
@@ -576,8 +625,8 @@ New with 1.00:
* Updated Microtek backend (by Matto Marjanovic).
- Fix segfault on exit due to unnecessary free() in sane_close().
- Fix to red channel shift bug (which crept in during rewrite of
- color-handling code).
- - Addition of "patch level" to version codes.
+ color-handling code).
+ - Addition of "patch level" to version codes.
* Updated Microtek2 backend
- Added support for ScanMaker 330, ScanMaker 636, ScanMaker E3plus,
@@ -606,25 +655,25 @@ New with 1.00:
- Resolutions >300dpi in color mode sometimes result in corrupted images
(parts duplicated/shifted *HORIZONTALLY*) depending on hardware
configuration. Killing all other applications and disabling swap
- (if sufficient physical memory available) may help.
- I added some code which writes to every page of the buffer prior
+ (if sufficient physical memory available) may help.
+ I added some code which writes to every page of the buffer prior
to scanning to fool the memory management and scanned a full page
color scan with 600dpi * 1200dpi. Very slow but image seemed ok
- after pnmscale.
+ after pnmscale.
- Max. scan area: 0-216mm (hor.), 2.5-294.5mm (ver.)
The scanners can't scan the first 2.5mm (ver.), so you *MUST*
specify the scan area according to this restriction!
- The scanners support only lineart (1 bpp), gray (8 bpp), color (24 bpp).
- Although the scanners have 10 bit (6000 SP) or 12 bit (12000 SP)
+ Although the scanners have 10 bit (6000 SP) or 12 bit (12000 SP)
A/D-converters, they can send only 8 bit values to the host.
The higher resolution may only be used via gamma table.
- For compatibility only 256 entry gamma tables may be specified, the
actual gamma table sent to the scanner is linearly interpolated from it.
- - In lineart mode only brightness may be adjusted.
+ - In lineart mode only brightness may be adjusted.
- Cover open/closed reported only via debug output and ignored otherwise.
- Use of SCSI card supplied with scanner is *NOT* recommended. (Don't
forget termination!)
-
+
* Updated UMAX backend (by Oliver Rauch)
- added output of umax-backend-version in sane_init
- added Linotype Hell Jade2 (Vobis ScanBoostar Premium)
@@ -696,13 +745,13 @@ New with 0.74:
but the code is now leaner and cleaner.
o fixed the bugs that the backend didn't compile with non gcc compilers.
o added an option to control exposure times.
- o rewrote the code that processes the data that is received from the
+ o rewrote the code that processes the data that is received from the
scanner and transfers it into the frontend buffer. The smallest unit of
data that can be copied into the frontend buffer is now a pixel, no
longer a complete line.
o added (a yet) undocumented option "strip-height" that allows to control
the number of lines that is read from the scanner with one "read image".
- o fixed a bug that caused scanimage to sigsegv when calling sane_exit()
+ o fixed a bug that caused scanimage to sigsegv when calling sane_exit()
without having written all data into the output file.
o added code to support scanners with more than 8 bit output per color.
Due to the lack of such a scanner this functionality is COMPLETELY UNTESTED
@@ -727,20 +776,20 @@ New with 0.74:
* Updated Nikon Coolscan backend (by Didier Carlier).
* Updated UMAX backend (by Oliver Rauch):
- o Cancelling a scan now works, cancelling a preview still makes problems!
+ o Cancelling a scan now works, cancelling a preview still makes problems!
o Preview fix is activated for Astra 600S, Astra 610S and Vista S6E
- scanners. (calibration by driver still does not work for these scanners).
- - removed button for preview patch
- o Quality calibration / calibration by driver now works for same scanners.
- - added selection for type of shading data calculation
- o Solved problem with black area at top of the image
- (happend only with some SCSI-adapters).
- o Added gamma download format type 0 and type 1 for older scanners.
- o Added Astra 1220S as supported scanner:
- - added 36 gamma input bits support for Astra 1220S
+ scanners. (calibration by driver still does not work for these scanners).
+ - removed button for preview patch
+ o Quality calibration / calibration by driver now works for same scanners.
+ - added selection for type of shading data calculation
+ o Solved problem with black area at top of the image
+ (happend only with some SCSI-adapters).
+ o Added gamma download format type 0 and type 1 for older scanners.
+ o Added Astra 1220S as supported scanner:
+ - added 36 gamma input bits support for Astra 1220S
- added 36 output bits support, but there is no frontend that can
- handle it!
- o Added inquiry for Escom Image Scanner 256 (UMAX UG80).
+ handle it!
+ o Added inquiry for Escom Image Scanner 256 (UMAX UG80).
* OS/2 (by Yuri Dario):
o Updated SCSI support so sanei_scsi_find_devices is supported now.
@@ -786,7 +835,7 @@ New with 0.73:
- scalar gamma correction.
Options that are not yet supported include:
-
+
- 3-pass scanners
- more than 8 bit per color output data. Provisions are made here
and there in the code, to support more than 8 bit, but that's
diff --git a/README b/README
index 694165a..a51683e 100644
--- a/README
+++ b/README
@@ -22,6 +22,7 @@ http://www.sane-project.org/sane-frontends.html.
Quick install:
==============
+./autogen.sh # only if you just cloned the git repository
./configure
make
make install
@@ -56,6 +57,22 @@ installed.
- libgphoto2 (>=2.0): For the gphoto2 backend.
+If you got the source straight from the git repository, as opposed to
+a source tarball, you will need a few more utilities. These utilities
+should normally *not* be needed for source archives downloaded from
+the project's website at http://www.sane-project.org/.
+
+ - autoconf (>= 2.69) as well as the autoconf-archive (for the
+ AX_CXX_COMPILE_STDCXX and AX_CXX_COMPILE_STDCXX_11 macros)
+
+ - automake (>=1.15)
+
+ - libtool (>=2.4.6)
+
+ - gettext (>=0.19.8)
+
+ - git (>= 2.1.4)
+
SANE should build on most Unix-like systems. Support for OS/2, MacOS X, BeOS,
and Microsoft Windows is also available. For more details look at the
operating system specific README.* files. For a detailed support matrix, see:
@@ -70,7 +87,7 @@ Please check that there aren't any older versions of SANE installed on your
system. Especially if SANE libraries are installed in a different prefix
directory (e.g. /usr/lib/) this may cause problems with external
frontends. Please remove these libraries (libsane.*, sane/libsane-*) by using
-your packet manager or manually before installing this version of SANE.
+your package manager or manually before installing this version of SANE.
Configuration
@@ -127,10 +144,10 @@ to the epson2 and fujitsu backends:
./configure BACKENDS="epson2 fujitsu"
To limit the backends that are preloaded into the DLL, set the variable
-PRELOADABLE_BACKENDS. The following will limit compiling to the epson2
+PRELOADABLE_BACKENDS. The following will limit compiling to the epson2
and fujitsu backends but only preloads the epson2 backend:
- ./configure BACKENDS="epson2 futjisu" PRELOADABLE_BACKENDS="epson2"
+ ./configure BACKENDS="epson2 fujitsu" PRELOADABLE_BACKENDS="epson2"
In addition to these configuration options, there are some more SANE-specific
options and many standard-options. To get a description of available options,
diff --git a/README.aix b/README.aix
index b43dc3e..f31abe4 100644
--- a/README.aix
+++ b/README.aix
@@ -1,7 +1,7 @@
Under AIX, you'll need the generic SCSI device driver gsc written by
Matthew Jacob <mjacob@feral.com> (nice piece of work!). When you
install this driver, copy the header file gscdds.h to /usr/include, as
-we look for it there.
+we look for it there.
Find this driver under:
ftp://ftp.feral.com/pub/aix/gsc.tar.gz
@@ -10,4 +10,3 @@ Find this driver under:
A version for AIX 4.3.3 and AIX 5.1 is also available.
http://www.zago.net/aix/gsc-1.1.tar.gz
-
diff --git a/README.beos b/README.beos
index e56b82c..087b514 100644
--- a/README.beos
+++ b/README.beos
@@ -25,5 +25,5 @@ Compiler: gcc 2.95.3
User-level SCSI support: yes
USB support: yes
Shared library support: yes
-Dynamic loading support: yes
+Dynamic loading support: yes
X11 clients: no
diff --git a/README.djpeg b/README.djpeg
index 8a456f9..7bc73d1 100644
--- a/README.djpeg
+++ b/README.djpeg
@@ -2,7 +2,7 @@ The JPEG decoder in SANE is taken mostly without change from The
Independent JPEG Group's JPEG software, release 6a. Their "djpeg.README"
file is included below. The only changes are to file names, e.g.
djpeg.c -> sanei_jpeg.c, and function names,
-e.g. sanei_jpeg_start_output_ppm()
+e.g. sanei_jpeg_start_output_ppm()
The Independent JPEG Group's JPEG software
diff --git a/README.freebsd b/README.freebsd
index 68cf1a8..b423b28 100644
--- a/README.freebsd
+++ b/README.freebsd
@@ -3,11 +3,11 @@ SANE and FreeBSD
Building:
---------
-Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
+Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
SANE should compile and install out-of-the-box.
If you've installed some of the optional libraries that sane-backends
-can make use of (see README for list) using Ports then you will need to
+can make use of (see README for list) using Ports then you will need to
let configure know about their locations:
MAKE=gmake CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure
diff --git a/README.hp-ux b/README.hp-ux
index 2333ef0..fb4dc18 100644
--- a/README.hp-ux
+++ b/README.hp-ux
@@ -49,17 +49,17 @@ Class I H/W Path Driver S/W State H/W Type Description
==============================================================================
[...]
ext_bus 0 8/0/19/0 c720 CLAIMED INTERFACE Ultra Wide SCSI
-target 0 8/0/19/0.6 tgt CLAIMED DEVICE
+target 0 8/0/19/0.6 tgt CLAIMED DEVICE
disk 0 8/0/19/0.6.0 sdisk CLAIMED DEVICE IBM DDYS-T09170N
-target 1 8/0/19/0.7 tgt CLAIMED DEVICE
+target 1 8/0/19/0.7 tgt CLAIMED DEVICE
ctl 0 8/0/19/0.7.0 sctl CLAIMED DEVICE Initiator
[...]
ext_bus 1 8/16/5 c720 CLAIMED INTERFACE Built-in SCSI
-target 4 8/16/5.1 tgt CLAIMED DEVICE
+target 4 8/16/5.1 tgt CLAIMED DEVICE
unknown -1 8/16/5.1.0 UNCLAIMED UNKNOWN EPSON Perfection1640
-target 2 8/16/5.2 tgt CLAIMED DEVICE
+target 2 8/16/5.2 tgt CLAIMED DEVICE
disk 1 8/16/5.2.0 sdisk CLAIMED DEVICE TOSHIBA CD-ROM XM-5401TA
-target 3 8/16/5.7 tgt CLAIMED DEVICE
+target 3 8/16/5.7 tgt CLAIMED DEVICE
ctl 1 8/16/5.7.0 sctl CLAIMED DEVICE Initiator
[...]
diff --git a/README.linux b/README.linux
index f255c3b..459e57d 100644
--- a/README.linux
+++ b/README.linux
@@ -68,7 +68,7 @@ Example:
# cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 06 Lun: 00
Vendor: SCANNER Model: Rev: 2.02
- Type: Scanner ANSI SCSI revision: 01 CCS
+ Type: Scanner ANSI SCSI revision: 01 CCS
In this case the real vendor and scanner name are not shown (Mustek
Scannexpress 12000SP) but SANE will detect it nevertheless.
@@ -76,7 +76,7 @@ Scannexpress 12000SP) but SANE will detect it nevertheless.
If your scanner is supported by SANE, scanimage -L will list it now:
# scanimage -L
-device mustek:/dev/scanner' is a Mustek ScanExpress 12000SP flatbed scanner
+device mustek:/dev/scanner' is a Mustek ScanExpress 12000SP flatbed scanner
If this doesn't work you may have to add the right SCSI generic device name
to the configuration file. This should be documented in the man page for
@@ -85,7 +85,7 @@ your backend. To find out about the right SCSI device use sane-find-scanner:
# sane-find-scanner
found SCSI scanner "SCANNER 2.02" at /dev/scanner
found SCSI scanner "SCANNER 2.02" at /dev/sg0
-found SCSI scanner "SCANNER 2.02" at /dev/sga
+found SCSI scanner "SCANNER 2.02" at /dev/sga
It may help to set a symbolic link /dev/scanner to the respective device if
automatic detection does not work.
@@ -98,10 +98,10 @@ in devfs".
Adaptec 1542 SCSI adapter:
Using buffer sizes of more than 32768 bytes with the aha1542 driver can
- lead to kernel panic with older kernels. To avoid this, run configure with
+ lead to kernel panic with older kernels. To avoid this, run configure with
the option --enable-scsibuffersize or set the environment variable
- SANE_SG_BUFFERSIZE to 32768 before running scanimage or another frontend,
- or download and install the SG driver 2.1.37 or newer from
+ SANE_SG_BUFFERSIZE to 32768 before running scanimage or another frontend,
+ or download and install the SG driver 2.1.37 or newer from
http://www.torque.net/sg.
idescsi:
@@ -110,10 +110,10 @@ idescsi:
SANE. If your scanner isn't found or you encounter segmentation faults
try to disable idescsi.
-SCSI Direct IO: Recent versions of the Linux SG driver for the 2.4 kernels
- support direct IO, i.e., the SCSI adapter's DMA chip copies data directly
- to/from user memory. Direct IO reduces memory usage, but it can lead to
- access conflicts, if a backend uses shared memory. SANE does not use
+SCSI Direct IO: Recent versions of the Linux SG driver for the 2.4 kernels
+ support direct IO, i.e., the SCSI adapter's DMA chip copies data directly
+ to/from user memory. Direct IO reduces memory usage, but it can lead to
+ access conflicts, if a backend uses shared memory. SANE does not use
direct IO by default. If you want to use it, run
configure --enable-scsi-directio=yes
diff --git a/README.netbsd b/README.netbsd
index ceab0b9..dfe52ac 100644
--- a/README.netbsd
+++ b/README.netbsd
@@ -3,7 +3,7 @@ SANE and NetBSD
Building:
---------
-Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
+Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
SANE should compile and install out-of-the-box.
SCSI-scanners:
@@ -54,6 +54,6 @@ control messages. Use libusb instead.
Parport-scanners:
-----------------
I don't have any information about these. Please contact me or the SANE mailing
-list if you succeded in using one of these.
+list if you succeeded in using one of these.
2003-04-24 Henning Meier-Geinitz <henning@meier-geinitz.de>
diff --git a/README.openbsd b/README.openbsd
index 211ab06..0fa80e3 100644
--- a/README.openbsd
+++ b/README.openbsd
@@ -3,7 +3,7 @@ SANE and OpenBSD
Building:
---------
-Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
+Don't forget to use GNU make (gmake). E.g. "MAKE=gmake ./configure".
SANE should compile and install out-of-the-box.
If some libraries and headers (like libjpeg) are installed in /usr/local/, adding
@@ -51,6 +51,6 @@ and detach scripts. See tools/openbsd for an example.
Parport-scanners:
-----------------
I don't have any information about these. Please contact me or the SANE mailing
-list if you succeded in using one of these.
+list if you succeeded in using one of these.
2005-12-23 Henning Meier-Geinitz <henning@meier-geinitz.de>
diff --git a/README.os2 b/README.os2
index 71cb8d8..ab6421d 100644
--- a/README.os2
+++ b/README.os2
@@ -21,19 +21,19 @@ SANE (actually EMX 0.9D fix 03).
SANE (Scanner Access Now Easy)
------------------------------
-For more info about the SANE Project, please visit
+For more info about the SANE Project, please visit
http://www.sane-project.org/
You should also check the main site for an updated list of supported scanners.
-Note that I can't say you if your scanner is supported; check SANE homepage
+Note that I can't say you if your scanner is supported; check SANE homepage
instead.
SUPPORT
-------
-I'm sorry to tell you that it is hard for me to help you: if your scanner
+I'm sorry to tell you that it is hard for me to help you: if your scanner
doesn't work or your problem can't be reproduced on my pc, there are high
choices that I can't fix the bug. Most problems are specific to same PC/scanner
combinations, and can't be solved without having a full developement enviroment
@@ -61,7 +61,7 @@ file, he is welcome (actually I'm using groff).
INSTALLATION
------------
-If you already didn't it, install the correct driver for your scsi adapter.
+If you already didn't it, install the correct driver for your scsi adapter.
The drivers has usually a .ADD extension and looks like
BASEDEV=AHA154X.ADD
@@ -71,7 +71,7 @@ directory, so you have only to add
BASEDEV=OS2ASPI.DMD /ALL
-The /ALL switch is required only if you need to use other devices with
+The /ALL switch is required only if you need to use other devices with
aspirout.sys, e.g. if you have a CD-RW and CDRecord/2 installed.
Last, add aspirout.sys to your config.sys
@@ -86,7 +86,7 @@ available on Hobbes or Leo as emxrt.zip.
find-scanner.exe can be used to recognize a scanner on the scsi bus. Then
you should edit your xxx.conf file and add the scanner address, a string like
-b0t4l0. This can be simplified using autodetection: with autodetection you can
+b0t4l0. This can be simplified using autodetection: with autodetection you can
use a string like
scsi EPSON
@@ -104,7 +104,7 @@ you should see your scanner following the list of internal devices:
pnm:0 pnm:1
If it is not present, check your scsi driver, the aspi driver OS2ASPI.DMD and
-aspirout.sys; on Warp4 you can use the Hardware Manager to check scanner
+aspirout.sys; on Warp4 you can use the Hardware Manager to check scanner
presence. Then look at your xxx.conf, maybe there is something wrong in the
text.
@@ -115,7 +115,7 @@ Once configured your system, create a proper .conf file (edit one of the
supplied templates) and run
scanimage -L
-
+
The output should be like
device `umax:b0t3l0' is a UMAX Vista-S8 flatbed scanner
@@ -131,8 +131,8 @@ A simple scan
will do a scan with default parameters. Run
- scanimage -d umax --help
-
+ scanimage -d umax --help
+
to get a full list of available switches.
@@ -155,7 +155,7 @@ of scanimage.exe: here you have to add a list of valid saned servers.
Run
scanimage -L
-
+
The output is like this
device `umax:b0t3l0' is a UMAX Vista-S8 flatbed scanner
@@ -174,7 +174,7 @@ Be aware that this configuration shouldn't work: I have been unable to get it
working on my PC without running saned under the debugger PMGDB.
The correct syntax for running scanimage over the net is
- scanimage -d net:HOSTNAME:umax:b0t3l0 > test.pnm
+ scanimage -d net:HOSTNAME:umax:b0t3l0 > test.pnm
where HOSTNAME is a valid DNS host name.
You can log server access using syslogd: if syslogd is running, saned will
@@ -199,10 +199,10 @@ Steps:
- unzip this file somewhere;
- copy src\* into sane-1.0.1;
- enter sane-1.0.1 directory;
-- apply patches to original distribution:
+- apply patches to original distribution:
[...\sane-1.0.1]gnupatch -p 0 < patch.os2
- run autoconf to rebuild the configure script
-- edit configure and change autoconf default optimization flags;
+- edit configure and change autoconf default optimization flags;
search for -O2 -m486 and change to your preferred settings;
- add the following line after :${LDFLAGS="...."}
: ${LIBS="-lsocket"}
@@ -211,15 +211,15 @@ Steps:
- run make (compiler warnings are ok);
- wait to complete all makes;
-Remember to install a Unix like shell in your path; I use ksh.exe
-renamed to sh.exe, and saved in d:\bin
+Remember to install a Unix like shell in your path; I use ksh.exe
+renamed to sh.exe, and saved in d:\bin
(that's because most unix scripts uses SHELL=/bin/sh)
You need also a compatible dl.a and syslog.a library; look in .\contrib
for a couple of simple sources.
Flags needed under EMX:
--Zsysv-signals enables signal management as in SystemV, otherwise emx
+-Zsysv-signals enables signal management as in SystemV, otherwise emx
convention is used (and it is different from sysv).
-Zcrtdll link dynamically with EMXLIBCM.DLL;
@@ -258,4 +258,3 @@ History:
===============================================================================
Yuri Dario <mc6530@mclink.it>
http://www.quasarbbs.com/yuri
-
diff --git a/README.solaris b/README.solaris
index 240ee6f..12dae05 100644
--- a/README.solaris
+++ b/README.solaris
@@ -92,7 +92,7 @@ can be found in
To install it on a SPARC do:
- cd /tmp
+ cd /tmp
get SCHILYscg.sparc.tar.Z
uncompress SCHILYscg.sparc.tar.Z
tar -xvf SCHILYscg.sparc.tar
@@ -105,7 +105,7 @@ NOTE: Be very careful with pkgadd as it does not check for the correct
For Solaris on an x86 do:
- cd /tmp
+ cd /tmp
get SCHILYscg.i386.tar.Z
uncompress SCHILYscg.i386.tar.Z
tar -xvf SCHILYscg.i386.tar
diff --git a/README.unixware7 b/README.unixware7
index 9e6d3cd..7a48233 100644
--- a/README.unixware7
+++ b/README.unixware7
@@ -1,79 +1,79 @@
-SANE on UnixWare 7
-==================
+SANE on UnixWare 7
+==================
-The easiest way to get SANE working on a UnixWare 7.1.X system (UW 7.0.0
-and 7.0.1 are not supported) is to download and install the SANE binary
-distribution from SCOs Skunkware web site. The URL is:
+The easiest way to get SANE working on a UnixWare 7.1.X system (UW 7.0.0
+and 7.0.1 are not supported) is to download and install the SANE binary
+distribution from SCOs Skunkware web site. The URL is:
- ftp://ftp.sco.com/skunkware/uw7/Packages
+ ftp://ftp.sco.com/skunkware/uw7/Packages
-Use the pkgadd command to install the files, e.g.:
+Use the pkgadd command to install the files, e.g.:
- # pkgadd -d `pwd`/sane-1.0.2.pkg
+ # pkgadd -d `pwd`/sane-1.0.2.pkg
-A web page with further information specific to SANE on UnixWare 7 can be
-found here:
+A web page with further information specific to SANE on UnixWare 7 can be
+found here:
- http://www.sco.com/skunkware/sane/index.html
+ http://www.sco.com/skunkware/sane/index.html
-However, please note that the SANE package that is available from the
-Skunkware server will most likely contain the latest stable version of
-SANE. Since SANE is continously being worked on, you might want to download
+However, please note that the SANE package that is available from the
+Skunkware server will most likely contain the latest stable version of
+SANE. Since SANE is continously being worked on, you might want to download
the latest source from the Git repository and build the source yourself.
-To build SANE on a UnixWare 7.1.X system the following packages are required:
+To build SANE on a UnixWare 7.1.X system the following packages are required:
- * make (GNU make)
+ * make (GNU make)
* glibs (contains gtk, glib, libjpeg, libpnm, libtiff etc.; only
necessary for frontends xscanimage, xcam, and xsane which are
- distributed separately)
+ distributed separately)
-The packages can be downloaded from the Skunkware ftp server (see URL above).
-I've used the following versions to build sane-1.0.2:
+The packages can be downloaded from the Skunkware ftp server (see URL above).
+I've used the following versions to build sane-1.0.2:
- * make-3.78.1.pkg
- * glibs-2.0.3.pkg
+ * make-3.78.1.pkg
+ * glibs-2.0.3.pkg
-If you want to include support for The Gimp (this is optional), you need to
-install the gimp package, too. This is the version I've used:
+If you want to include support for The Gimp (this is optional), you need to
+install the gimp package, too. This is the version I've used:
- * gimp-1.0.4.pkg
+ * gimp-1.0.4.pkg
-GCC is not required. SANE compiles quite happily (and faster) with UnixWares
-native C compiler.
+GCC is not required. SANE compiles quite happily (and faster) with UnixWares
+native C compiler.
-Set the LD_RUN_PATH variable to add /usr/local/lib to the list of directories
-to be searched by the dynamic linker:
+Set the LD_RUN_PATH variable to add /usr/local/lib to the list of directories
+to be searched by the dynamic linker:
- $ LD_RUN_PATH=/usr/local/lib
- $ export LD_RUN_PATH
+ $ LD_RUN_PATH=/usr/local/lib
+ $ export LD_RUN_PATH
-Run the configure script as following:
+Run the configure script as following:
- $ LIBS="-lsdi" ./configure
+ $ LIBS="-lsdi" ./configure
-(The sdi library contains the SCSI passthrough functions the UW7 port of SANE
-uses to access the scanner from user space.)
+(The sdi library contains the SCSI passthrough functions the UW7 port of SANE
+uses to access the scanner from user space.)
-Run gmake to build SANE:
+Run gmake to build SANE:
- $ gmake
+ $ gmake
-SCSI access from user space requires special privileges. If you want users
-without root perms to be able to use the scanner you can use the filepriv
-command to change the privileges that are associated with the SANE
-applications:
+SCSI access from user space requires special privileges. If you want users
+without root perms to be able to use the scanner you can use the filepriv
+command to change the privileges that are associated with the SANE
+applications:
- # /sbin/filepriv -f driver -f sysops /usr/local/bin/scanimage
- # /sbin/filepriv -f driver -f sysops /usr/local/bin/xscanimage
- # /sbin/filepriv -f sysops /usr/local/bin/xcam
+ # /sbin/filepriv -f driver -f sysops /usr/local/bin/scanimage
+ # /sbin/filepriv -f driver -f sysops /usr/local/bin/xscanimage
+ # /sbin/filepriv -f sysops /usr/local/bin/xcam
-If you have built SANE with support for The Gimp you might want to create
-a symlink from the plug-in directory to the xscanimage and xcam binaries,
-e.g.:
+If you have built SANE with support for The Gimp you might want to create
+a symlink from the plug-in directory to the xscanimage and xcam binaries,
+e.g.:
- # ln -s /usr/local/bin/xscanimage \
- /usr/local/lib/gimp/1.0/plug-ins/xscanimage
- # ln -s /usr/local/bin/xcam /usr/local/lib/gimp/1.0/plug-ins/xcam
+ # ln -s /usr/local/bin/xscanimage \
+ /usr/local/lib/gimp/1.0/plug-ins/xscanimage
+ # ln -s /usr/local/bin/xcam /usr/local/lib/gimp/1.0/plug-ins/xcam
Questions? Comments? Please send e-mail to jenss@sco.com or skunkware@sco.com!
diff --git a/README.zeta b/README.zeta
index 36f6382..9c0028e 100644
--- a/README.zeta
+++ b/README.zeta
@@ -1,8 +1,8 @@
SANE and Zeta
-------------
-The Zeta port is based on existing BeOS port, with some changes
-to accomodate yellowTAB's internal build procedure, and some new
+The Zeta port is based on existing BeOS port, with some changes
+to accomodate yellowTAB's internal build procedure, and some new
conventions brought up by Zeta.
Cf. README.beos for more historical stuff.
@@ -22,5 +22,5 @@ Compiler: gcc 2.95.3
User-level SCSI support: yes
USB support: yes
Shared library support: yes
-Dynamic loading support: yes
+Dynamic loading support: yes
X11 clients: no
diff --git a/Rules-quot.patch b/Rules-quot.patch
new file mode 100644
index 0000000..973ed86
--- /dev/null
+++ b/Rules-quot.patch
@@ -0,0 +1,27 @@
+Author: Olaf Meeuwissen
+
+ Add custom options to commands used for generate .po files. This
+ fixes word wrapping inconsistencies when using a custom width.
+
+ Do NOT put this file below po/ as all Rules-* files are included
+ in the po/Makefile *verbatim*!
+
+--- po/Rules-quot.orig 2019-06-30 13:46:34.281392263 +0900
++++ po/Rules-quot 2019-06-30 13:49:05.482142027 +0900
+@@ -22,13 +22,13 @@
+ LC_ALL=C; export LC_ALL; \
+ cd $(srcdir); \
+ if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \
+- | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \
++ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) $(MSGCONV_OPTIONS) -t UTF-8 | \
+ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \
+- $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
++ $(MSGFILTER) $(MSGFILTER_OPTIONS) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
+ ;; \
+ *) \
+- $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \
++ $(MSGFILTER) $(MSGFILTER_OPTIONS) `echo $$lang | sed -e 's/.*@//'` \
+ ;; \
+ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \
+ ; then \
diff --git a/acinclude.m4 b/acinclude.m4
index 476d536..1bc3b74 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -26,23 +26,25 @@ dnl
AC_DEFUN([SANE_SET_AM_CFLAGS],
[
if test "${ac_cv_c_compiler_gnu}" = "yes"; then
- DEFAULT_CFLAGS="\
+ DEFAULT_WARNINGS="\
-Wall"
EXTRA_WARNINGS="\
-Wextra \
-pedantic"
- for flag in $DEFAULT_CFLAGS; do
+ for flag in $DEFAULT_WARNINGS; do
JAPHAR_GREP_AM_CFLAGS($flag, [ AM_CFLAGS="$AM_CFLAGS $flag" ])
+ JAPHAR_GREP_AM_CXXFLAGS($flag, [ AM_CXXFLAGS="$AM_CXXFLAGS $flag" ])
done
AC_ARG_ENABLE(warnings,
AS_HELP_STRING([--enable-warnings],
[turn on tons of compiler warnings (GCC only)]),
[
- if eval "test x$enable_warnings = xyes"; then
+ if eval "test x$enable_warnings = xyes"; then
for flag in $EXTRA_WARNINGS; do
JAPHAR_GREP_AM_CFLAGS($flag, [ AM_CFLAGS="$AM_CFLAGS $flag" ])
+ JAPHAR_GREP_AM_CXXFLAGS($flag, [ AM_CXXFLAGS="$AM_CXXFLAGS $flag" ])
done
fi
],
@@ -50,6 +52,7 @@ if test "${ac_cv_c_compiler_gnu}" = "yes"; then
# Warnings enabled by default (development)
for flag in $EXTRA_WARNINGS; do
JAPHAR_GREP_AM_CFLAGS($flag, [ AM_CFLAGS="$AM_CFLAGS $flag" ])
+ JAPHAR_GREP_AM_CXXFLAGS($flag, [ AM_CXXFLAGS="$AM_CXXFLAGS $flag" ])
done
fi])
fi # ac_cv_c_compiler_gnu
@@ -97,7 +100,7 @@ AC_DEFUN([SANE_SET_AM_LDFLAGS],
esac
fi
AC_SUBST(STRICT_LDFLAGS)
- case "${host_os}" in
+ case "${host_os}" in
aix*) #enable .so libraries, disable archives
AM_LDFLAGS="$AM_LDFLAGS -Wl,-brtl"
;;
@@ -180,7 +183,7 @@ AC_DEFUN([SANE_CHECK_IEEE1284],
AC_CHECK_HEADER(ieee1284.h, [
AC_CACHE_CHECK([for libieee1284 >= 0.1.5], sane_cv_use_libieee1284, [
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <ieee1284.h>]], [[
- struct parport p; char *buf;
+ struct parport p; char *buf;
ieee1284_nibble_read(&p, 0, buf, 1);
]])],
[sane_cv_use_libieee1284="yes"; IEEE1284_LIBS="-lieee1284"
@@ -234,7 +237,25 @@ AC_DEFUN([SANE_CHECK_PTHREAD],
LIBS="$save_LIBS"
],[ have_pthread=no; use_pthread=no ])
fi
-
+
+ # Based on a similar test for pthread_key_t from the Python project.
+ # See https://bugs.python.org/review/25658/patch/19209/75870
+ AC_MSG_CHECKING(whether pthread_t is integer)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t k; k * 1;]])],
+ [ac_pthread_t_is_integer=yes],
+ [ac_pthread_t_is_integer=no]
+ )
+ AC_MSG_RESULT($ac_pthread_t_is_integer)
+ if test "$ac_pthread_t_is_integer" = yes ; then
+ AC_DEFINE(PTHREAD_T_IS_INTEGER, 1,
+ [Define if pthread_t is integer.])
+ else
+ # Until the sanei_thread implementation is fixed.
+ have_pthread=no
+ use_pthread=no
+ fi
+
if test $use_pthread = yes ; then
AC_DEFINE_UNQUOTED(USE_PTHREAD, "$use_pthread",
[Define if pthreads should be used instead of forked processes.])
@@ -257,9 +278,9 @@ AC_DEFUN([SANE_CHECK_PTHREAD],
# GPHOTO2 and dell1600n_net backends.
AC_DEFUN([SANE_CHECK_JPEG],
[
- AC_CHECK_LIB(jpeg,jpeg_start_decompress,
+ AC_CHECK_LIB(jpeg,jpeg_start_decompress,
[
- AC_CHECK_HEADER(jconfig.h,
+ AC_CHECK_HEADER(jconfig.h,
[
AC_MSG_CHECKING([for jpeglib - version >= 61 (6a)])
AC_EGREP_CPP(sane_correct_jpeg_lib_version_found,
@@ -268,7 +289,7 @@ AC_DEFUN([SANE_CHECK_JPEG],
#if JPEG_LIB_VERSION >= 61
sane_correct_jpeg_lib_version_found
#endif
- ], [sane_cv_use_libjpeg="yes"; JPEG_LIBS="-ljpeg";
+ ], [sane_cv_use_libjpeg="yes"; JPEG_LIBS="-ljpeg";
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
],)
],)
@@ -281,9 +302,9 @@ AC_DEFUN([SANE_CHECK_JPEG],
# Checks for tiff library dell1600n_net backend.
AC_DEFUN([SANE_CHECK_TIFF],
[
- AC_CHECK_LIB(tiff,TIFFFdOpen,
+ AC_CHECK_LIB(tiff,TIFFFdOpen,
[
- AC_CHECK_HEADER(tiffio.h,
+ AC_CHECK_HEADER(tiffio.h,
[sane_cv_use_libtiff="yes"; TIFF_LIBS="-ltiff"],)
],)
AC_SUBST(TIFF_LIBS)
@@ -345,7 +366,7 @@ AC_DEFUN([SANE_CHECK_LOCKING],
fi
if test $use_locking = yes ; then
INSTALL_LOCKPATH=install-lockpath
- AC_DEFINE([ENABLE_LOCKING], 1,
+ AC_DEFINE([ENABLE_LOCKING], 1,
[Define to 1 if device locking should be enabled.])
else
INSTALL_LOCKPATH=
@@ -376,6 +397,20 @@ esac
])
dnl
+dnl JAPHAR_GREP_AM_CXXFLAGS(flag, cmd_if_missing, cmd_if_present)
+dnl
+AC_DEFUN([JAPHAR_GREP_AM_CXXFLAGS],
+[case "$AM_CXXFLAGS" in
+"$1" | "$1 "* | *" $1" | *" $1 "* )
+ ifelse($#, 3, [$3], [:])
+ ;;
+*)
+ $2
+ ;;
+esac
+])
+
+dnl
dnl SANE_CHECK_U_TYPES
dnl
AC_DEFUN([SANE_CHECK_U_TYPES],
@@ -397,13 +432,13 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
[# If --with-gphoto2=no or --without-gphoto2, disable backend
# as "$with_gphoto2" will be set to "no"])
- # If --with-gphoto2=yes (or not supplied), first check if
+ # If --with-gphoto2=yes (or not supplied), first check if
# pkg-config exists, then use it to check if libgphoto2 is
# present. If all that works, then see if we can actually link
- # a program. And, if that works, then add the -l flags to
- # GPHOTO2_LIBS and any other flags to GPHOTO2_LDFLAGS to pass to
+ # 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.
- if test "$with_gphoto2" != "no" ; then
+ if test "$with_gphoto2" != "no" ; then
AC_CHECK_TOOL(HAVE_GPHOTO2, pkg-config, false)
if test ${HAVE_GPHOTO2} != "false" ; then
@@ -427,8 +462,8 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
HAVE_GPHOTO2=false
fi
if test "${HAVE_GPHOTO2}" = "false"; then
- GPHOTO2_CPPFLAGS=""
- GPHOTO2_LIBS=""
+ GPHOTO2_CPPFLAGS=""
+ GPHOTO2_LIBS=""
else
SANE_EXTRACT_LDFLAGS(GPHOTO2_LIBS, GPHOTO2_LDFLAGS)
if pkg-config --atleast-version=2.5.0 libgphoto2; then
@@ -448,31 +483,31 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
# Check for ss_family member in struct sockaddr_storage
AC_DEFUN([SANE_CHECK_IPV6],
[
- AC_MSG_CHECKING([whether to enable IPv6])
- AC_ARG_ENABLE(ipv6,
+ AC_MSG_CHECKING([whether to enable IPv6])
+ AC_ARG_ENABLE(ipv6,
AS_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
[ if test "$enableval" = "no" ; then
- AC_MSG_RESULT([no, manually disabled])
- ipv6=no
+ AC_MSG_RESULT([no, manually disabled])
+ ipv6=no
fi
])
if test "$ipv6" != "no" ; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- #define INET6
- #include <sys/types.h>
+ #define INET6
+ #include <sys/types.h>
#include <sys/socket.h> ]], [[
- /* AF_INET6 available check */
- if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
- exit(1);
- else
- exit(0);
+ /* AF_INET6 available check */
+ if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
+ exit(1);
+ else
+ exit(0);
]])],[
- AC_MSG_RESULT(yes)
- AC_DEFINE([ENABLE_IPV6], 1, [Define to 1 if the system supports IPv6])
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([ENABLE_IPV6], 1, [Define to 1 if the system supports IPv6])
ipv6=yes
],[
- AC_MSG_RESULT([no (couldn't compile test program)])
+ AC_MSG_RESULT([no (couldn't compile test program)])
ipv6=no
])
fi
@@ -507,7 +542,7 @@ AC_DEFUN([SANE_CHECK_IPV6],
ipv6=no
])
])
- fi
+ fi
])
#
@@ -527,14 +562,14 @@ for be in ${BACKENDS}; do
case $be in
plustek_pp)
case "$host_os" in
- gnu*)
+ gnu*)
echo "*** $be backend not supported on GNU/Hurd - $DISABLE_MSG"
backend_supported="no"
;;
esac
;;
- dc210|dc240)
+ dc210|dc240|pixma)
if test "${sane_cv_use_libjpeg}" != "yes"; then
echo "*** $be backend requires JPEG library - $DISABLE_MSG"
backend_supported="no"
@@ -548,6 +583,13 @@ for be in ${BACKENDS}; do
fi
;;
+ genesys)
+ if test "${HAVE_CXX11}" != "1"; then
+ echo "*** $be backend requires C++11 support - $DISABLE_MSG"
+ backend_supported="no"
+ fi
+ ;;
+
mustek_pp)
if test "${sane_cv_use_libieee1284}" != "yes" && test "${enable_parport_directio}" != "yes"; then
echo "*** $be backend requires libieee1284 or parport-directio libraries - $DISABLE_MSG"
@@ -555,7 +597,7 @@ for be in ${BACKENDS}; do
fi
;;
- dell1600n_net)
+ dell1600n_net)
if test "${sane_cv_use_libjpeg}" != "yes" || test "${sane_cv_use_libtiff}" != "yes"; then
echo "*** $be backend requires JPEG and TIFF library - $DISABLE_MSG"
backend_supported="no"
@@ -666,12 +708,6 @@ const char * inet_ntop (int af, const void *src, char *dst, size_t cnt);
int inet_pton (int af, const char *src, void *dst);
#endif
-/* Prototype for isfdtype */
-#ifndef HAVE_ISFDTYPE
-#define isfdtype sanei_isfdtype
-int isfdtype(int fd, int fdtype);
-#endif
-
/* Prototype for sigprocmask */
#ifndef HAVE_SIGPROCMASK
#define sigprocmask sanei_sigprocmask
@@ -724,6 +760,4 @@ void vsyslog(int priority, const char *format, va_list args);
])
])
-m4_include([m4/libtool.m4])
m4_include([m4/byteorder.m4])
-m4_include([m4/stdint.m4])
diff --git a/aclocal.m4 b/aclocal.m4
deleted file mode 100644
index e21d691..0000000
--- a/aclocal.m4
+++ /dev/null
@@ -1,1491 +0,0 @@
-# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
-You have another version of autoconf. It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-
-# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
-# serial 1 (pkg-config-0.24)
-#
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
-m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
-AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
-AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=m4_default([$1], [0.9.0])
- AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- PKG_CONFIG=""
- fi
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-#
-# Check to see whether a particular set of modules exists. Similar
-# to PKG_CHECK_MODULES(), but does not set variables or print errors.
-#
-# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-# only at the first occurence in configure.ac, so if the first place
-# it's called might be skipped (such as if it is within an "if", you
-# have to call PKG_CHECK_EXISTS manually
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_EXISTS],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-if test -n "$PKG_CONFIG" && \
- AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
- m4_default([$2], [:])
-m4_ifvaln([$3], [else
- $3])dnl
-fi])
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test -n "$$1"; then
- pkg_cv_[]$1="$$1"
- elif test -n "$PKG_CONFIG"; then
- PKG_CHECK_EXISTS([$3],
- [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes ],
- [pkg_failed=yes])
- else
- pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# _PKG_SHORT_ERRORS_SUPPORTED
-# -----------------------------
-AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi[]dnl
-])# _PKG_SHORT_ERRORS_SUPPORTED
-
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_MSG_CHECKING([for $1])
-
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
-
-m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
-and $1[]_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.])
-
-if test $pkg_failed = yes; then
- AC_MSG_RESULT([no])
- _PKG_SHORT_ERRORS_SUPPORTED
- if test $_pkg_short_errors_supported = yes; then
- $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
- else
- $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
-
- m4_default([$4], [AC_MSG_ERROR(
-[Package requirements ($2) were not met:
-
-$$1_PKG_ERRORS
-
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-_PKG_TEXT])[]dnl
- ])
-elif test $pkg_failed = untried; then
- AC_MSG_RESULT([no])
- m4_default([$4], [AC_MSG_FAILURE(
-[The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-_PKG_TEXT
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
- ])
-else
- $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
- $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
- AC_MSG_RESULT([yes])
- $3
-fi[]dnl
-])# PKG_CHECK_MODULES
-
-
-# PKG_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable pkgconfigdir as the location where a module
-# should install pkg-config .pc files. By default the directory is
-# $libdir/pkgconfig, but the default can be changed by passing
-# DIRECTORY. The user can override through the --with-pkgconfigdir
-# parameter.
-AC_DEFUN([PKG_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([pkgconfigdir],
- [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
- [with_pkgconfigdir=]pkg_default)
-AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_INSTALLDIR
-
-
-# PKG_NOARCH_INSTALLDIR(DIRECTORY)
-# -------------------------
-# Substitutes the variable noarch_pkgconfigdir as the location where a
-# module should install arch-independent pkg-config .pc files. By
-# default the directory is $datadir/pkgconfig, but the default can be
-# changed by passing DIRECTORY. The user can override through the
-# --with-noarch-pkgconfigdir parameter.
-AC_DEFUN([PKG_NOARCH_INSTALLDIR],
-[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
-m4_pushdef([pkg_description],
- [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
-AC_ARG_WITH([noarch-pkgconfigdir],
- [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
- [with_noarch_pkgconfigdir=]pkg_default)
-AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
-m4_popdef([pkg_default])
-m4_popdef([pkg_description])
-]) dnl PKG_NOARCH_INSTALLDIR
-
-# Copyright (C) 2002-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-# (This private macro should not be called outside this file.)
-AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.14'
-dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
-dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.14.1], [],
- [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
-])
-
-# _AM_AUTOCONF_VERSION(VERSION)
-# -----------------------------
-# aclocal traces this macro to find the Autoconf version.
-# This is a private macro too. Using m4_define simplifies
-# the logic in aclocal, which can simply ignore this definition.
-m4_define([_AM_AUTOCONF_VERSION], [])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
-# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.14.1])dnl
-m4_ifndef([AC_AUTOCONF_VERSION],
- [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_AR([ACT-IF-FAIL])
-# -------------------------
-# Try to determine the archiver interface, and trigger the ar-lib wrapper
-# if it is needed. If the detection of archiver interface fails, run
-# ACT-IF-FAIL (default is to abort configure with a proper error message).
-AC_DEFUN([AM_PROG_AR],
-[AC_BEFORE([$0], [LT_INIT])dnl
-AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([ar-lib])dnl
-AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
-: ${AR=ar}
-
-AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
- [AC_LANG_PUSH([C])
- am_cv_ar_interface=ar
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
- [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
- AC_TRY_EVAL([am_ar_try])
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=ar
- else
- am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
- AC_TRY_EVAL([am_ar_try])
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=lib
- else
- am_cv_ar_interface=unknown
- fi
- fi
- rm -f conftest.lib libconftest.a
- ])
- AC_LANG_POP([C])])
-
-case $am_cv_ar_interface in
-ar)
- ;;
-lib)
- # Microsoft lib, so override with the ar-lib wrapper script.
- # FIXME: It is wrong to rewrite AR.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__AR in this case,
- # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
- # similar.
- AR="$am_aux_dir/ar-lib $AR"
- ;;
-unknown)
- m4_default([$1],
- [AC_MSG_ERROR([could not determine $AR interface])])
- ;;
-esac
-AC_SUBST([AR])dnl
-])
-
-# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
-# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
-#
-# Of course, Automake must honor this variable whenever it calls a
-# tool from the auxiliary directory. The problem is that $srcdir (and
-# therefore $ac_aux_dir as well) can be either absolute or relative,
-# depending on how configure is run. This is pretty annoying, since
-# it makes $ac_aux_dir quite unusable in subdirectories: in the top
-# source directory, any form will work fine, but in subdirectories a
-# relative path needs to be adjusted first.
-#
-# $ac_aux_dir/missing
-# fails when called from a subdirectory if $ac_aux_dir is relative
-# $top_srcdir/$ac_aux_dir/missing
-# fails if $ac_aux_dir is absolute,
-# fails when called from a subdirectory in a VPATH build with
-# a relative $ac_aux_dir
-#
-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
-# are both prefixed by $srcdir. In an in-source build this is usually
-# harmless because $srcdir is '.', but things will broke when you
-# start a VPATH build or use an absolute $srcdir.
-#
-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
-# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
-# and then we would define $MISSING as
-# MISSING="\${SHELL} $am_aux_dir/missing"
-# This will work as long as MISSING is not called from configure, because
-# unfortunately $(top_srcdir) has no meaning in configure.
-# However there are other variables, like CC, which are often used in
-# configure, and could therefore not use this "fixed" $ac_aux_dir.
-#
-# Another solution, used here, is to always expand $ac_aux_dir to an
-# absolute PATH. The drawback is that using absolute paths prevent a
-# configured tree to be moved without reconfiguration.
-
-AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-])
-
-# AM_CONDITIONAL -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ([2.52])dnl
- m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])dnl
-AC_SUBST([$1_FALSE])dnl
-_AM_SUBST_NOTMAKE([$1_TRUE])dnl
-_AM_SUBST_NOTMAKE([$1_FALSE])dnl
-m4_define([_AM_COND_VALUE_$1], [$2])dnl
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
-else
- $1_TRUE='#'
- $1_FALSE=
-fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([[conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.]])
-fi])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
-# written in clear, in which case automake, when reading aclocal.m4,
-# will think it sees a *use*, and therefore will trigger all it's
-# C support machinery. Also note that it means that autoscan, seeing
-# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
-
-# _AM_DEPENDENCIES(NAME)
-# ----------------------
-# See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
-# We try a few techniques and use that to set a single cache variable.
-#
-# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
-# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
-# dependency, and given that the user is not expected to run this macro,
-# just rely on AC_PROG_CC.
-AC_DEFUN([_AM_DEPENDENCIES],
-[AC_REQUIRE([AM_SET_DEPDIR])dnl
-AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
-AC_REQUIRE([AM_MAKE_INCLUDE])dnl
-AC_REQUIRE([AM_DEP_TRACK])dnl
-
-m4_if([$1], [CC], [depcc="$CC" am_compiler_list=],
- [$1], [CXX], [depcc="$CXX" am_compiler_list=],
- [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
- [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
- [$1], [UPC], [depcc="$UPC" am_compiler_list=],
- [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
- [depcc="$$1" am_compiler_list=])
-
-AC_CACHE_CHECK([dependency style of $depcc],
- [am_cv_$1_dependencies_compiler_type],
-[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named 'D' -- because '-MD' means "put the output
- # in D".
- rm -rf conftest.dir
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_$1_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
- fi
- am__universal=false
- m4_case([$1], [CC],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac],
- [CXX],
- [case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac])
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
- # Solaris 10 /bin/sh.
- echo '/* dummy */' > sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with '-c' and '-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle '-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs.
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # After this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested.
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok '-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_$1_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_$1_dependencies_compiler_type=none
-fi
-])
-AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
-AM_CONDITIONAL([am__fastdep$1], [
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
-])
-
-
-# AM_SET_DEPDIR
-# -------------
-# Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
-AC_DEFUN([AM_SET_DEPDIR],
-[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
-])
-
-
-# AM_DEP_TRACK
-# ------------
-AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE([dependency-tracking], [dnl
-AS_HELP_STRING(
- [--enable-dependency-tracking],
- [do not reject slow dependency extractors])
-AS_HELP_STRING(
- [--disable-dependency-tracking],
- [speeds up one-time build])])
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
- am__nodep='_no'
-fi
-AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
-AC_SUBST([am__nodep])dnl
-_AM_SUBST_NOTMAKE([am__nodep])dnl
-])
-
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-
-# _AM_OUTPUT_DEPENDENCY_COMMANDS
-# ------------------------------
-AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[{
- # Older Autoconf quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
-])# _AM_OUTPUT_DEPENDENCY_COMMANDS
-
-
-# AM_OUTPUT_DEPENDENCY_COMMANDS
-# -----------------------------
-# This macro should only be invoked once -- use via AC_REQUIRE.
-#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
-AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
-[AC_CONFIG_COMMANDS([depfiles],
- [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
-
-# Do all the work for Automake. -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This macro actually does too much. Some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
-m4_define([AC_PROG_CC],
-m4_defn([AC_PROG_CC])
-[_AM_PROG_CC_C_O
-])
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.65])dnl
-dnl Autoconf wants to disallow AM_ names. We explicitly allow
-dnl the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
-AC_REQUIRE([AC_PROG_INSTALL])dnl
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[AC_DIAGNOSE([obsolete],
- [$0: two- and three-arguments forms are deprecated.])
-m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
-dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(
- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
- [ok:ok],,
- [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
- AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
-AM_MISSING_PROG([AUTOCONF], [autoconf])
-AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
-AM_MISSING_PROG([AUTOHEADER], [autoheader])
-AM_MISSING_PROG([MAKEINFO], [makeinfo])
-AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-# For better backward compatibility. To be removed once Automake 1.9.x
-# dies out for good. For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
- [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
- [_AM_PROG_TAR([v7])])])
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES([CC])],
- [m4_define([AC_PROG_CC],
- m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES([CXX])],
- [m4_define([AC_PROG_CXX],
- m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJC],
- [_AM_DEPENDENCIES([OBJC])],
- [m4_define([AC_PROG_OBJC],
- m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
- [_AM_DEPENDENCIES([OBJCXX])],
- [m4_define([AC_PROG_OBJCXX],
- m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
-])
-AC_REQUIRE([AM_SILENT_RULES])dnl
-dnl The testsuite driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
-dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
-AC_CONFIG_COMMANDS_PRE(dnl
-[m4_provide_if([_AM_COMPILER_EXEEXT],
- [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
-
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
- fi
-fi])
-
-dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
-dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
-dnl mangled by Autoconf and run in a shell conditional statement.
-m4_define([_AC_COMPILER_EXEEXT],
-m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_arg=$1
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-AC_SUBST([install_sh])])
-
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
-# From Jim Meyering
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAINTAINER_MODE([DEFAULT-MODE])
-# ----------------------------------
-# Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless 'enable' is passed literally.
-# For symmetry, 'disable' may be passed as well. Anyway, the user
-# can override the default with the --enable/--disable switch.
-AC_DEFUN([AM_MAINTAINER_MODE],
-[m4_case(m4_default([$1], [disable]),
- [enable], [m4_define([am_maintainer_other], [disable])],
- [disable], [m4_define([am_maintainer_other], [enable])],
- [m4_define([am_maintainer_other], [enable])
- m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode's default is 'disable' unless 'enable' is passed
- AC_ARG_ENABLE([maintainer-mode],
- [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
- am_maintainer_other[ make rules and dependencies not useful
- (and sometimes confusing) to the casual installer])],
- [USE_MAINTAINER_MODE=$enableval],
- [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
- AC_MSG_RESULT([$USE_MAINTAINER_MODE])
- AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
- MAINT=$MAINTAINER_MODE_TRUE
- AC_SUBST([MAINT])dnl
-]
-)
-
-# Check to see how 'make' treats includes. -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MAKE_INCLUDE()
-# -----------------
-# Check to see how make treats includes.
-AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
-
-# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-
-# Copyright (C) 1997-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it is modern enough.
-# If it is, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([missing])dnl
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
- am_missing_run="$MISSING "
-else
- am_missing_run=
- AC_MSG_WARN(['missing' script is too old or missing])
-fi
-])
-
-# Copyright (C) 2003-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for 'mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl FIXME we are no longer going to remove this! adjust warning
-dnl FIXME message accordingly.
-AC_DIAGNOSE([obsolete],
-[$0: this macro is deprecated, and will soon be removed.
-You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
-and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
- [[\\/$]]* | ?:[[\\/]]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# --------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_CC_C_O
-# ---------------
-# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
-# to automatically call this.
-AC_DEFUN([_AM_PROG_CC_C_O],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-AC_LANG_PUSH([C])dnl
-AC_CACHE_CHECK(
- [whether $CC understands -c and -o together],
- [am_cv_prog_cc_c_o],
- [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
- # Make sure it works both with $CC and with simple cc.
- # Following AC_PROG_CC_C_O, we do the test twice because some
- # compilers refuse to overwrite an existing .o file with -o,
- # though they will create one.
- am_cv_prog_cc_c_o=yes
- for am_i in 1 2; do
- if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
- && test -f conftest2.$ac_objext; then
- : OK
- else
- am_cv_prog_cc_c_o=no
- break
- fi
- done
- rm -f core conftest*
- unset am_i])
-if test "$am_cv_prog_cc_c_o" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-AC_LANG_POP([C])])
-
-# For backward compatibility.
-AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_RUN_LOG(COMMAND)
-# -------------------
-# Run COMMAND, save the exit status in ac_status, and log it.
-# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
-AC_DEFUN([AM_RUN_LOG],
-[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
- ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- (exit $ac_status); }])
-
-# Check to make sure that the build environment is sane. -*- Autoconf -*-
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[[\\\"\#\$\&\'\`$am_lf]]*)
- AC_MSG_ERROR([unsafe absolute working directory name]);;
-esac
-case $srcdir in
- *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
- AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
- alias in your environment])
- fi
- if test "$[2]" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT([yes])
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
- am_sleep_pid=$!
-fi
-AC_CONFIG_COMMANDS_PRE(
- [AC_MSG_CHECKING([that generated files are newer than configure])
- if test -n "$am_sleep_pid"; then
- # Hide warnings about reused PIDs.
- wait $am_sleep_pid 2>/dev/null
- fi
- AC_MSG_RESULT([done])])
-rm -f conftest.file
-])
-
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_SILENT_RULES([DEFAULT])
-# --------------------------
-# Enable less verbose build rules; with the default set to DEFAULT
-# ("yes" being less verbose, "no" or empty being verbose).
-AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules], [dnl
-AS_HELP_STRING(
- [--enable-silent-rules],
- [less verbose build output (undo: "make V=1")])
-AS_HELP_STRING(
- [--disable-silent-rules],
- [verbose build output (undo: "make V=0")])dnl
-])
-case $enable_silent_rules in @%:@ (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
-esac
-dnl
-dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
-dnl do not support nested variable expansions.
-dnl See automake bug#9928 and bug#10237.
-am_make=${MAKE-make}
-AC_CACHE_CHECK([whether $am_make supports nested variables],
- [am_cv_make_support_nested_variables],
- [if AS_ECHO([['TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
- @$(TRUE)
-.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
- am_cv_make_support_nested_variables=yes
-else
- am_cv_make_support_nested_variables=no
-fi])
-if test $am_cv_make_support_nested_variables = yes; then
- dnl Using '$V' instead of '$(V)' breaks IRIX make.
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AC_SUBST([AM_V])dnl
-AM_SUBST_NOTMAKE([AM_V])dnl
-AC_SUBST([AM_DEFAULT_V])dnl
-AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
-AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
-AM_BACKSLASH='\'
-AC_SUBST([AM_BACKSLASH])dnl
-_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
-])
-
-# Copyright (C) 2001-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_INSTALL_STRIP
-# ---------------------
-# One issue with vendor 'install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in "make install-strip", and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip". However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# Copyright (C) 2006-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
-# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
-# This macro is traced by Automake.
-AC_DEFUN([_AM_SUBST_NOTMAKE])
-
-# AM_SUBST_NOTMAKE(VARIABLE)
-# --------------------------
-# Public sister of _AM_SUBST_NOTMAKE.
-AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
-
-# Check how to create a tarball. -*- Autoconf -*-
-
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# _AM_PROG_TAR(FORMAT)
-# --------------------
-# Check how to create a tarball in format FORMAT.
-# FORMAT should be one of 'v7', 'ustar', or 'pax'.
-#
-# Substitute a variable $(am__tar) that is a command
-# writing to stdout a FORMAT-tarball containing the directory
-# $tardir.
-# tardir=directory && $(am__tar) > result.tar
-#
-# Substitute a variable $(am__untar) that extract such
-# a tarball read from stdin.
-# $(am__untar) < result.tar
-#
-AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility. Yes, it's still used
-# in the wild :-( We should find a proper way to deprecate it ...
-AC_SUBST([AMTAR], ['$${TAR-tar}'])
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-
-m4_if([$1], [v7],
- [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-
- [m4_case([$1],
- [ustar],
- [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
- # There is notably a 21 bits limit for the UID and the GID. In fact,
- # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
- # and bug#13588).
- am_max_uid=2097151 # 2^21 - 1
- am_max_gid=$am_max_uid
- # The $UID and $GID variables are not portable, so we need to resort
- # to the POSIX-mandated id(1) utility. Errors in the 'id' calls
- # below are definitely unexpected, so allow the users to see them
- # (that is, avoid stderr redirection).
- am_uid=`id -u || echo unknown`
- am_gid=`id -g || echo unknown`
- AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
- if test $am_uid -le $am_max_uid; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- _am_tools=none
- fi
- AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
- if test $am_gid -le $am_max_gid; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- _am_tools=none
- fi],
-
- [pax],
- [],
-
- [m4_fatal([Unknown tar format])])
-
- AC_MSG_CHECKING([how to create a $1 tar archive])
-
- # Go ahead even if we have the value already cached. We do so because we
- # need to set the values for the 'am__tar' and 'am__untar' variables.
- _am_tools=${am_cv_prog_tar_$1-$_am_tools}
-
- for _am_tool in $_am_tools; do
- case $_am_tool in
- gnutar)
- for _am_tar in tar gnutar gtar; do
- AM_RUN_LOG([$_am_tar --version]) && break
- done
- am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
- am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
- am__untar="$_am_tar -xf -"
- ;;
- plaintar)
- # Must skip GNU tar: if it does not support --format= it doesn't create
- # ustar tarball either.
- (tar --version) >/dev/null 2>&1 && continue
- am__tar='tar chf - "$$tardir"'
- am__tar_='tar chf - "$tardir"'
- am__untar='tar xf -'
- ;;
- pax)
- am__tar='pax -L -x $1 -w "$$tardir"'
- am__tar_='pax -L -x $1 -w "$tardir"'
- am__untar='pax -r'
- ;;
- cpio)
- am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
- am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
- am__untar='cpio -i -H $1 -d'
- ;;
- none)
- am__tar=false
- am__tar_=false
- am__untar=false
- ;;
- esac
-
- # If the value was cached, stop now. We just wanted to have am__tar
- # and am__untar set.
- test -n "${am_cv_prog_tar_$1}" && break
-
- # tar/untar a dummy directory, and stop if the command works.
- rm -rf conftest.dir
- mkdir conftest.dir
- echo GrepMe > conftest.dir/file
- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
- rm -rf conftest.dir
- if test -s conftest.tar; then
- AM_RUN_LOG([$am__untar <conftest.tar])
- AM_RUN_LOG([cat conftest.dir/file])
- grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
- fi
- done
- rm -rf conftest.dir
-
- AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
- AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-
-AC_SUBST([am__tar])
-AC_SUBST([am__untar])
-]) # _AM_PROG_TAR
-
-m4_include([m4/gettext.m4])
-m4_include([m4/iconv.m4])
-m4_include([m4/intlmacosx.m4])
-m4_include([m4/lib-ld.m4])
-m4_include([m4/lib-link.m4])
-m4_include([m4/lib-prefix.m4])
-m4_include([m4/ltoptions.m4])
-m4_include([m4/ltsugar.m4])
-m4_include([m4/ltversion.m4])
-m4_include([m4/lt~obsolete.m4])
-m4_include([m4/nls.m4])
-m4_include([m4/po.m4])
-m4_include([m4/progtest.m4])
-m4_include([acinclude.m4])
diff --git a/ar-lib b/ar-lib
deleted file mode 100755
index fe2301e..0000000
--- a/ar-lib
+++ /dev/null
@@ -1,270 +0,0 @@
-#! /bin/sh
-# Wrapper for Microsoft lib.exe
-
-me=ar-lib
-scriptversion=2012-03-01.08; # UTC
-
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
-# Written by Peter Rosin <peda@lysator.liu.se>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU 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 <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-
-# func_error message
-func_error ()
-{
- echo "$me: $1" 1>&2
- exit 1
-}
-
-file_conv=
-
-# func_file_conv build_file
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts.
-func_file_conv ()
-{
- file=$1
- case $file in
- / | /[!/]*) # absolute file, and not a UNC file
- if test -z "$file_conv"; then
- # lazily determine how to convert abs files
- case `uname -s` in
- MINGW*)
- file_conv=mingw
- ;;
- CYGWIN*)
- file_conv=cygwin
- ;;
- *)
- file_conv=wine
- ;;
- esac
- fi
- case $file_conv in
- mingw)
- file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
- ;;
- cygwin)
- file=`cygpath -m "$file" || echo "$file"`
- ;;
- wine)
- file=`winepath -w "$file" || echo "$file"`
- ;;
- esac
- ;;
- esac
-}
-
-# func_at_file at_file operation archive
-# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
-# for each of them.
-# When interpreting the content of the @FILE, do NOT use func_file_conv,
-# since the user would need to supply preconverted file names to
-# binutils ar, at least for MinGW.
-func_at_file ()
-{
- operation=$2
- archive=$3
- at_file_contents=`cat "$1"`
- eval set x "$at_file_contents"
- shift
-
- for member
- do
- $AR -NOLOGO $operation:"$member" "$archive" || exit $?
- done
-}
-
-case $1 in
- '')
- func_error "no command. Try '$0 --help' for more information."
- ;;
- -h | --h*)
- cat <<EOF
-Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
-
-Members may be specified in a file named with @FILE.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "$me, version $scriptversion"
- exit $?
- ;;
-esac
-
-if test $# -lt 3; then
- func_error "you must specify a program, an action and an archive"
-fi
-
-AR=$1
-shift
-while :
-do
- if test $# -lt 2; then
- func_error "you must specify a program, an action and an archive"
- fi
- case $1 in
- -lib | -LIB \
- | -ltcg | -LTCG \
- | -machine* | -MACHINE* \
- | -subsystem* | -SUBSYSTEM* \
- | -verbose | -VERBOSE \
- | -wx* | -WX* )
- AR="$AR $1"
- shift
- ;;
- *)
- action=$1
- shift
- break
- ;;
- esac
-done
-orig_archive=$1
-shift
-func_file_conv "$orig_archive"
-archive=$file
-
-# strip leading dash in $action
-action=${action#-}
-
-delete=
-extract=
-list=
-quick=
-replace=
-index=
-create=
-
-while test -n "$action"
-do
- case $action in
- d*) delete=yes ;;
- x*) extract=yes ;;
- t*) list=yes ;;
- q*) quick=yes ;;
- r*) replace=yes ;;
- s*) index=yes ;;
- S*) ;; # the index is always updated implicitly
- c*) create=yes ;;
- u*) ;; # TODO: don't ignore the update modifier
- v*) ;; # TODO: don't ignore the verbose modifier
- *)
- func_error "unknown action specified"
- ;;
- esac
- action=${action#?}
-done
-
-case $delete$extract$list$quick$replace,$index in
- yes,* | ,yes)
- ;;
- yesyes*)
- func_error "more than one action specified"
- ;;
- *)
- func_error "no action specified"
- ;;
-esac
-
-if test -n "$delete"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- for member
- do
- case $1 in
- @*)
- func_at_file "${1#@}" -REMOVE "$archive"
- ;;
- *)
- func_file_conv "$1"
- $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
- ;;
- esac
- done
-
-elif test -n "$extract"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- if test $# -gt 0; then
- for member
- do
- case $1 in
- @*)
- func_at_file "${1#@}" -EXTRACT "$archive"
- ;;
- *)
- func_file_conv "$1"
- $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
- ;;
- esac
- done
- else
- $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
- do
- $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
- done
- fi
-
-elif test -n "$quick$replace"; then
- if test ! -f "$orig_archive"; then
- if test -z "$create"; then
- echo "$me: creating $orig_archive"
- fi
- orig_archive=
- else
- orig_archive=$archive
- fi
-
- for member
- do
- case $1 in
- @*)
- func_file_conv "${1#@}"
- set x "$@" "@$file"
- ;;
- *)
- func_file_conv "$1"
- set x "$@" "$file"
- ;;
- esac
- shift
- shift
- done
-
- if test -n "$orig_archive"; then
- $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
- else
- $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
- fi
-
-elif test -n "$list"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- $AR -NOLOGO -LIST "$archive" || exit $?
-fi
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 0000000..86bc40a
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
+
+autoreconf --force --install --verbose --warnings=all "$srcdir"
+patch "$srcdir/ltmain.sh" "$srcdir/ltmain.sh.patch"
+patch "$srcdir/po/Rules-quot" "$srcdir/Rules-quot.patch"
+autoreconf "$srcdir"
+
+# Taken from https://gitlab.com/utsushi/utsushi/blob/master/bootstrap
+#
+# Sanity check the result to catch the most common errors that are
+# not diagnosed by autoreconf itself (or could use some extra help
+# explaining what to do in those cases).
+
+if grep AX_CXX_COMPILE_STDCXX "$srcdir/configure" >/dev/null 2>&1; then
+ cat <<EOF
+It seems 'aclocal' could not find the autoconf macros used to check
+for C++ standard's compliance.
+
+These macros are available in the 'autoconf-archive'. If you have
+this archive installed, it is probably installed in a location that
+is not searched by default. In that case, please note this via:
+
+ `autoconf -t AC_INIT:'$3'`
+
+If you haven't installed the 'autoconf-archive', please do so and
+rerun:
+
+ $0 $*
+
+If the 'autoconf-archive' is not packaged for your operating system,
+you can find the sources at:
+
+ http://www.gnu.org/software/autoconf-archive/
+
+EOF
+ exit 1
+fi
diff --git a/backend/.gitignore b/backend/.gitignore
new file mode 100644
index 0000000..6ebfbd5
--- /dev/null
+++ b/backend/.gitignore
@@ -0,0 +1,5 @@
+*-s.c
+*-s.cc
+*.conf
+dll-preload.c
+dll-preload.h
diff --git a/backend/Makefile.am b/backend/Makefile.am
index f7fb403..44d1e17 100644
--- a/backend/Makefile.am
+++ b/backend/Makefile.am
@@ -29,6 +29,10 @@ EXTRA_DIST += stubs.c
$(AM_V_at)rm -f $@
$(AM_V_at)$(LN_S) $(srcdir)/stubs.c $@
+%-s.cc: $(srcdir)/stubs.c
+ $(AM_V_at)rm -f $@
+ $(AM_V_at)$(LN_S) $(srcdir)/stubs.c $@
+
dll-preload.h:
$(AM_V_at)rm -f $@
$(AM_V_at)list="$(PRELOADABLE_BACKENDS)"; for be in $$list; do \
@@ -74,6 +78,10 @@ BACKEND_CONFS= abaton.conf agfafocus.conf apple.conf artec.conf \
teco1.conf teco2.conf teco3.conf test.conf \
u12.conf umax1220u.conf umax.conf umax_pp.conf v4l.conf \
xerox_mfp.conf dll.conf saned.conf
+# Although ./configure sets up BACKEND_CONFS_ENABLED it does not take
+# into account the fact that some backends don't have a configuration
+# file. The becfg should depend on BACKEND_CONFS. The install-becfg
+# target uses BACKEND_CONFS_ENABLED and silently skips missing files.
becfg: $(BACKEND_CONFS)
SUFFIXES = .conf.in .conf
@@ -92,9 +100,9 @@ install-data-hook: install-becfg install-firmware-path $(INSTALL_LOCKPATH)
# Custom install target to install config files. Do not overwrite
# files that have been previously installed so that user modifications
# are not lost.
-install-becfg:
- @# Libtool has a bug where it will sometimes symlink the last
- @# installed library in $(sanelibdir) to $(sanelibdir)/libsane.*.
+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.*
test -z "$(configdir)" || $(MKDIR_P) "$(DESTDIR)$(configdir)"
@@ -161,7 +169,7 @@ be_convenience_libs = libabaton.la libagfafocus.la \
libniash.la libp5.la \
libpie.la libpieusb.la libpint.la libpixma.la \
libplustek.la libplustek_pp.la libpnm.la \
- libqcam.la libricoh.la librts8891.la \
+ libqcam.la libricoh.la libricoh2.la librts8891.la \
libs9036.la libsceptre.la libsharp.la \
libsm3600.la libsm3840.la libsnapscan.la \
libsp15c.la libst400.la libstv680.la \
@@ -195,7 +203,7 @@ be_dlopen_libs = libsane-abaton.la libsane-agfafocus.la \
libsane-niash.la libsane-p5.la \
libsane-pie.la libsane-pieusb.la libsane-pint.la libsane-pixma.la \
libsane-plustek.la libsane-plustek_pp.la libsane-pnm.la \
- libsane-qcam.la libsane-ricoh.la libsane-rts8891.la \
+ libsane-qcam.la libsane-ricoh.la libsane-ricoh2.la libsane-rts8891.la \
libsane-s9036.la libsane-sceptre.la libsane-sharp.la \
libsane-sm3600.la libsane-sm3840.la libsane-snapscan.la \
libsane-sp15c.la libsane-st400.la libsane-stv680.la \
@@ -217,7 +225,7 @@ COMMON_LIBS = ../lib/liblib.la
# all related files within backend directory. General guideline
# is to have a ${backend}.c and ${backend}.h. Some backends also
# add a few support source files to convience library.
-# Note: automake doesn't really use header files listed here.
+# Note: automake doesn't really use header files listed here.
# They are indications that they need to be distributed only.
libabaton_la_SOURCES = abaton.c abaton.h
libabaton_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=abaton
@@ -228,7 +236,7 @@ libabaton_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=abaton
# Also, it will need to link in related convenience library as well as
# any external libraries required to resolve symbols.
#
-# All backends should include $(DIST_SANELIBS_LDFLAGS) so that
+# All backends should include $(DIST_SANELIBS_LDFLAGS) so that
# library is correctly versioned.
#
# If a backend has a config file, it must be listed here to get distributed.
@@ -239,10 +247,10 @@ libsane_abaton_la_LIBADD = $(COMMON_LIBS) libabaton.la ../sanei/sanei_init_debug
EXTRA_DIST += abaton.conf.in
libagfafocus_la_SOURCES = agfafocus.c agfafocus.h
-libagfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
+libagfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
nodist_libsane_agfafocus_la_SOURCES = agfafocus-s.c
-libsane_agfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
+libsane_agfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
libsane_agfafocus_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_agfafocus_la_LIBADD = $(COMMON_LIBS) libagfafocus.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += agfafocus.conf.in
@@ -280,12 +288,12 @@ libas6e_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=as6e
nodist_libsane_as6e_la_SOURCES = as6e-s.c
libsane_as6e_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=as6e
libsane_as6e_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_as6e_la_LIBADD = $(COMMON_LIBS) libas6e.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
+libsane_as6e_la_LIBADD = $(COMMON_LIBS) libas6e.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
libavision_la_SOURCES = avision.c avision.h
libavision_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=avision
-nodist_libsane_avision_la_SOURCES = avision-s.c
+nodist_libsane_avision_la_SOURCES = avision-s.c
libsane_avision_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=avision
libsane_avision_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_avision_la_LIBADD = $(COMMON_LIBS) libavision.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
@@ -303,7 +311,7 @@ EXTRA_DIST += bh.conf.in
libcanon_la_SOURCES = canon.c canon.h
libcanon_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon
-nodist_libsane_canon_la_SOURCES = canon-s.c
+nodist_libsane_canon_la_SOURCES = canon-s.c
libsane_canon_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon
libsane_canon_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_canon_la_LIBADD = $(COMMON_LIBS) libcanon.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(RESMGR_LIBS)
@@ -325,7 +333,7 @@ EXTRA_DIST += canon630u-common.c lm9830.h
libcanon_dr_la_SOURCES = canon_dr.c canon_dr.h canon_dr-cmd.h
libcanon_dr_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_dr
-nodist_libsane_canon_dr_la_SOURCES = canon_dr-s.c
+nodist_libsane_canon_dr_la_SOURCES = canon_dr-s.c
libsane_canon_dr_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_dr
libsane_canon_dr_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_canon_dr_la_LIBADD = $(COMMON_LIBS) libcanon_dr.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_magic.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
@@ -472,21 +480,27 @@ libsane_fujitsu_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_fujitsu_la_LIBADD = $(COMMON_LIBS) libfujitsu.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_magic.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += fujitsu.conf.in
-libgenesys_la_SOURCES = genesys.c genesys.h genesys_gl646.c genesys_gl646.h genesys_gl841.c genesys_gl841.h genesys_gl843.c genesys_gl843.h genesys_gl846.c genesys_gl846.h genesys_gl847.c genesys_gl847.h genesys_gl124.c genesys_gl124.h genesys_low.c genesys_low.h
+libgenesys_la_SOURCES = genesys.cc genesys.h genesys_sanei.h genesys_sanei.cc genesys_error.h genesys_error.cc \
+ genesys_serialize.h \
+ genesys_gl646.cc genesys_gl646.h genesys_gl841.cc genesys_gl841.h \
+ genesys_gl843.cc genesys_gl843.h genesys_gl846.cc genesys_gl846.h \
+ genesys_gl847.cc genesys_gl847.h genesys_gl124.cc genesys_gl124.h \
+ genesys_low.cc genesys_low.h
+
libgenesys_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=genesys
-nodist_libsane_genesys_la_SOURCES = genesys-s.c
+nodist_libsane_genesys_la_SOURCES = genesys-s.cc
libsane_genesys_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=genesys
libsane_genesys_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_genesys_la_LIBADD = $(COMMON_LIBS) libgenesys.la ../sanei/sanei_magic.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += genesys.conf.in
# TODO: Why are this distributed but not compiled?
-EXTRA_DIST += genesys_conv.c genesys_conv_hlp.c genesys_devices.c
+EXTRA_DIST += genesys_conv.cc genesys_conv_hlp.cc genesys_devices.cc
libgphoto2_i_la_SOURCES = gphoto2.c gphoto2.h
libgphoto2_i_la_CPPFLAGS = $(AM_CPPFLAGS) $(GPHOTO2_CPPFLAGS) -DBACKEND_NAME=gphoto2
-nodist_libsane_gphoto2_la_SOURCES = gphoto2-s.c
+nodist_libsane_gphoto2_la_SOURCES = gphoto2-s.c
libsane_gphoto2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gphoto2
libsane_gphoto2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_gphoto2_la_LIBADD = $(GPHOTO2_LDFLAGS) $(COMMON_LIBS) libgphoto2_i.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(SANEI_SANEI_JPEG_LO) $(GPHOTO2_LIBS) $(JPEG_LIBS)
@@ -495,7 +509,7 @@ EXTRA_DIST += gphoto2.conf.in
libgt68xx_la_SOURCES = gt68xx.c gt68xx.h
libgt68xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gt68xx
-nodist_libsane_gt68xx_la_SOURCES = gt68xx-s.c
+nodist_libsane_gt68xx_la_SOURCES = gt68xx-s.c
libsane_gt68xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gt68xx
libsane_gt68xx_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_gt68xx_la_LIBADD = $(COMMON_LIBS) libgt68xx.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
@@ -536,7 +550,7 @@ EXTRA_DIST += hp3900_config.c hp3900_debug.c hp3900_rts8822.c hp3900_sane.c hp39
libhp4200_la_SOURCES = hp4200.c hp4200.h
libhp4200_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp4200
-nodist_libsane_hp4200_la_SOURCES = hp4200-s.c
+nodist_libsane_hp4200_la_SOURCES = hp4200-s.c
libsane_hp4200_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp4200
libsane_hp4200_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_hp4200_la_LIBADD = $(COMMON_LIBS) libhp4200.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
@@ -576,7 +590,7 @@ libsane_hpljm1005_la_LIBADD = $(COMMON_LIBS) libhpljm1005.la ../sanei/sanei_init
libhpsj5s_la_SOURCES = hpsj5s.c hpsj5s.h
libhpsj5s_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpsj5s
-nodist_libsane_hpsj5s_la_SOURCES = hpsj5s-s.c
+nodist_libsane_hpsj5s_la_SOURCES = hpsj5s-s.c
libsane_hpsj5s_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpsj5s
libsane_hpsj5s_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_hpsj5s_la_LIBADD = $(COMMON_LIBS) libhpsj5s.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(IEEE1284_LIBS)
@@ -585,7 +599,7 @@ EXTRA_DIST += hpsj5s.conf.in
libhs2p_la_SOURCES = hs2p.c hs2p.h hs2p-saneopts.h
libhs2p_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hs2p
-nodist_libsane_hs2p_la_SOURCES = hs2p-s.c
+nodist_libsane_hs2p_la_SOURCES = hs2p-s.c
libsane_hs2p_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hs2p
libsane_hs2p_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_hs2p_la_LIBADD = $(COMMON_LIBS) libhs2p.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
@@ -633,7 +647,7 @@ libsane_kvs1025_la_LIBADD = $(COMMON_LIBS) libkvs1025.la ../sanei/sanei_init_deb
EXTRA_DIST += kvs1025.conf.in
libkvs20xx_la_SOURCES = kvs20xx.c kvs20xx_cmd.c kvs20xx_opt.c \
- kvs20xx_cmd.h kvs20xx.h
+ kvs20xx_cmd.h kvs20xx.h
libkvs20xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs20xx
nodist_libsane_kvs20xx_la_SOURCES = kvs20xx-s.c
@@ -642,7 +656,7 @@ libsane_kvs20xx_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_kvs20xx_la_LIBADD = $(COMMON_LIBS) libkvs20xx.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
libkvs40xx_la_SOURCES = kvs40xx.c kvs40xx_cmd.c kvs40xx_opt.c \
- kvs40xx.h
+ kvs40xx.h
libkvs40xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs40xx
nodist_libsane_kvs40xx_la_SOURCES = kvs40xx-s.c
@@ -662,7 +676,7 @@ EXTRA_DIST += leo.conf.in
liblexmark_la_SOURCES = lexmark.c lexmark.h lexmark_low.c
liblexmark_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=lexmark
-nodist_libsane_lexmark_la_SOURCES = lexmark-s.c
+nodist_libsane_lexmark_la_SOURCES = lexmark-s.c
libsane_lexmark_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=lexmark
libsane_lexmark_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_lexmark_la_LIBADD = $(COMMON_LIBS) liblexmark.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
@@ -735,12 +749,12 @@ libsane_mustek_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_mustek_pp_la_LIBADD = $(COMMON_LIBS) libmustek_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_pa4s2.lo $(MATH_LIB) $(IEEE1284_LIBS)
EXTRA_DIST += mustek_pp.conf.in
# TODO: Why are these distributed but not compiled?
-EXTRA_DIST += mustek_pp_ccd300.c mustek_pp_ccd300.h mustek_pp_cis.c mustek_pp_cis.h mustek_pp_null.c
+EXTRA_DIST += mustek_pp_ccd300.c mustek_pp_ccd300.h mustek_pp_cis.c mustek_pp_cis.h mustek_pp_null.c
libmustek_usb_la_SOURCES = mustek_usb.c mustek_usb.h
libmustek_usb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb
-nodist_libsane_mustek_usb_la_SOURCES = mustek_usb-s.c
+nodist_libsane_mustek_usb_la_SOURCES = mustek_usb-s.c
libsane_mustek_usb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb
libsane_mustek_usb_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_mustek_usb_la_LIBADD = $(COMMON_LIBS) libmustek_usb.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
@@ -789,7 +803,7 @@ EXTRA_DIST += niash_core.c niash_core.h niash_xfer.c niash_xfer.h
libpie_la_SOURCES = pie.c pie-scsidef.h
libpie_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pie
-nodist_libsane_pie_la_SOURCES = pie-s.c
+nodist_libsane_pie_la_SOURCES = pie-s.c
libsane_pie_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pie
libsane_pie_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_pie_la_LIBADD = $(COMMON_LIBS) libpie.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_thread.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
@@ -819,7 +833,7 @@ libpint_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pint
nodist_libsane_pint_la_SOURCES = pint-s.c
libsane_pint_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pint
libsane_pint_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pint_la_LIBADD = $(COMMON_LIBS) libpint.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
+libsane_pint_la_LIBADD = $(COMMON_LIBS) libpint.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
libpixma_la_SOURCES = pixma.c pixma.h pixma_io_sanei.c pixma_io.h pixma_common.c pixma_common.h pixma_mp150.c pixma_mp730.c pixma_mp750.c pixma_mp810.c pixma_imageclass.c pixma_bjnp.c pixma_bjnp.h pixma_bjnp_private.h pixma_rename.h
libpixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
@@ -827,7 +841,7 @@ libpixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
nodist_libsane_pixma_la_SOURCES = pixma-s.c
libsane_pixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
libsane_pixma_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pixma_la_LIBADD = $(COMMON_LIBS) libpixma.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
+libsane_pixma_la_LIBADD = $(COMMON_LIBS) libpixma.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(SANEI_SANEI_JPEG_LO) $(JPEG_LIBS) $(MATH_LIB) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += pixma.conf.in
# TODO: Why are these distributed but not compiled?
EXTRA_DIST += pixma_sane_options.c pixma_sane_options.h
@@ -856,10 +870,10 @@ EXTRA_DIST += plustek-pp_dac.c plustek-pp_dbg.h plustek-pp_detect.c plustek-pp_g
libpnm_la_SOURCES = pnm.c
libpnm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pnm
-nodist_libsane_pnm_la_SOURCES = pnm-s.c
+nodist_libsane_pnm_la_SOURCES = pnm-s.c
libsane_pnm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pnm
libsane_pnm_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pnm_la_LIBADD = $(COMMON_LIBS) libpnm.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
+libsane_pnm_la_LIBADD = $(COMMON_LIBS) libpnm.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
libqcam_la_SOURCES = qcam.c qcam.h
libqcam_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=qcam
@@ -881,6 +895,15 @@ EXTRA_DIST += ricoh.conf.in
# TODO: Why are these distributed but not compiled?
EXTRA_DIST += ricoh-scsi.c
+libricoh2_la_SOURCES = ricoh2.c
+libricoh2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ricoh2
+
+nodist_libsane_ricoh2_la_SOURCES = ricoh2-s.c
+libsane_ricoh2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ricoh2
+libsane_ricoh2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
+libsane_ricoh2_la_LIBADD = $(COMMON_LIBS) libricoh2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_usb.lo ../sanei/sanei_config.lo sane_strstatus.lo $(USB_LIBS)
+EXTRA_DIST += ricoh2_buffer.c
+
librts8891_la_SOURCES = rts8891.c rts8891.h rts88xx_lib.c rts88xx_lib.h
librts8891_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=rts8891
@@ -963,7 +986,7 @@ EXTRA_DIST += sp15c.conf.in
libst400_la_SOURCES = st400.c st400.h
libst400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=st400
-nodist_libsane_st400_la_SOURCES = st400-s.c ../sanei/sanei_scsi.lo
+nodist_libsane_st400_la_SOURCES = st400-s.c ../sanei/sanei_scsi.lo
libsane_st400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=st400
libsane_st400_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_st400_la_LIBADD = $(COMMON_LIBS) libst400.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
@@ -1050,7 +1073,7 @@ EXTRA_DIST += umax-scanner.c umax-scanner.h umax-scsidef.h umax-uc1200s.c umax-u
libumax1220u_la_SOURCES = umax1220u.c
libumax1220u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax1220u
-nodist_libsane_umax1220u_la_SOURCES = umax1220u-s.c
+nodist_libsane_umax1220u_la_SOURCES = umax1220u-s.c
libsane_umax1220u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax1220u
libsane_umax1220u_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_umax1220u_la_LIBADD = $(COMMON_LIBS) libumax1220u.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
@@ -1101,28 +1124,31 @@ EXTRA_DIST += dll.conf.in
EXTRA_DIST += dll.aliases
# libsane.la and libsane-dll.la are the same thing except for
-# the addition of backends listed by PRELOADABLE_BACKENDS that are
+# the addition of backends listed by PRELOADABLE_BACKENDS that are
# statically linked in.
# Also, libsane.la goes into $(libdir) where as all libsane-*
# (including libsane-dll.la) go into $(libdir)/sane
# FIXME: Since we are throwing in the kitchen sink, might as
# well link in ../sanei/libsanei.la instead. But currently,
-# libsanei.la is linking in sanei_auth which requires md5.
+# libsanei.la is linking in sanei_auth which requires md5.
# Shipping md5 could cause symbol conflicts with commonly used
# md5 external libraries. Either need to prefix md5 with sanei_
# (see liblib.la and snprintf), or move sanei_auth outside
# of libsanei.
#
-# FIXME: This is linking in every possible external library because there
-# is the off chance user is using PRELOADABLE_BACKENDS that may need
-# them. Since standard mode is to only have the dll backend, its a waste.
-# Need to update configure to build a list of only what needs to go into
-# LIBADD based on whats being preloaded.
+# FIXME: This is using every possibly needed library and dependency
+# when the user is using any PRELOADABLE_BACKENDS, irrespective of
+# what backends are preloaded. It should include what is needed by
+# those backends that are actually preloaded.
+if preloadable_backends_enabled
+PRELOADABLE_BACKENDS_LIBS = ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
+PRELOADABLE_BACKENDS_DEPS = ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(SANEI_SANEI_JPEG_LO)
+endif
nodist_libsane_la_SOURCES = dll-s.c
libsane_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
libsane_la_LDFLAGS = $(DIST_LIBS_LDFLAGS)
-libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
+libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo $(PRELOADABLE_BACKENDS_LIBS) $(DL_LIBS)
# WARNING: Automake is getting this wrong so have to do it ourselves.
-libsane_la_DEPENDENCIES = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(SANEI_SANEI_JPEG_LO)
+libsane_la_DEPENDENCIES = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo $(PRELOADABLE_BACKENDS_DEPS)
diff --git a/backend/Makefile.in b/backend/Makefile.in
deleted file mode 100644
index 4e070f0..0000000
--- a/backend/Makefile.in
+++ /dev/null
@@ -1,5644 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = backend
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sanelibdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES) $(sanelib_LTLIBRARIES)
-libabaton_la_LIBADD =
-am_libabaton_la_OBJECTS = libabaton_la-abaton.lo
-libabaton_la_OBJECTS = $(am_libabaton_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-libagfafocus_la_LIBADD =
-am_libagfafocus_la_OBJECTS = libagfafocus_la-agfafocus.lo
-libagfafocus_la_OBJECTS = $(am_libagfafocus_la_OBJECTS)
-libapple_la_LIBADD =
-am_libapple_la_OBJECTS = libapple_la-apple.lo
-libapple_la_OBJECTS = $(am_libapple_la_OBJECTS)
-libartec_la_LIBADD =
-am_libartec_la_OBJECTS = libartec_la-artec.lo
-libartec_la_OBJECTS = $(am_libartec_la_OBJECTS)
-libartec_eplus48u_la_LIBADD =
-am_libartec_eplus48u_la_OBJECTS = \
- libartec_eplus48u_la-artec_eplus48u.lo
-libartec_eplus48u_la_OBJECTS = $(am_libartec_eplus48u_la_OBJECTS)
-libas6e_la_LIBADD =
-am_libas6e_la_OBJECTS = libas6e_la-as6e.lo
-libas6e_la_OBJECTS = $(am_libas6e_la_OBJECTS)
-libavision_la_LIBADD =
-am_libavision_la_OBJECTS = libavision_la-avision.lo
-libavision_la_OBJECTS = $(am_libavision_la_OBJECTS)
-libbh_la_LIBADD =
-am_libbh_la_OBJECTS = libbh_la-bh.lo
-libbh_la_OBJECTS = $(am_libbh_la_OBJECTS)
-libcanon_la_LIBADD =
-am_libcanon_la_OBJECTS = libcanon_la-canon.lo
-libcanon_la_OBJECTS = $(am_libcanon_la_OBJECTS)
-libcanon630u_la_LIBADD =
-am_libcanon630u_la_OBJECTS = libcanon630u_la-canon630u.lo
-libcanon630u_la_OBJECTS = $(am_libcanon630u_la_OBJECTS)
-libcanon_dr_la_LIBADD =
-am_libcanon_dr_la_OBJECTS = libcanon_dr_la-canon_dr.lo
-libcanon_dr_la_OBJECTS = $(am_libcanon_dr_la_OBJECTS)
-libcanon_pp_la_LIBADD =
-am_libcanon_pp_la_OBJECTS = libcanon_pp_la-canon_pp.lo \
- libcanon_pp_la-canon_pp-io.lo libcanon_pp_la-canon_pp-dev.lo
-libcanon_pp_la_OBJECTS = $(am_libcanon_pp_la_OBJECTS)
-libcardscan_la_LIBADD =
-am_libcardscan_la_OBJECTS = libcardscan_la-cardscan.lo
-libcardscan_la_OBJECTS = $(am_libcardscan_la_OBJECTS)
-libcoolscan_la_LIBADD =
-am_libcoolscan_la_OBJECTS = libcoolscan_la-coolscan.lo
-libcoolscan_la_OBJECTS = $(am_libcoolscan_la_OBJECTS)
-libcoolscan2_la_LIBADD =
-am_libcoolscan2_la_OBJECTS = libcoolscan2_la-coolscan2.lo
-libcoolscan2_la_OBJECTS = $(am_libcoolscan2_la_OBJECTS)
-libcoolscan3_la_LIBADD =
-am_libcoolscan3_la_OBJECTS = libcoolscan3_la-coolscan3.lo
-libcoolscan3_la_OBJECTS = $(am_libcoolscan3_la_OBJECTS)
-libdc210_la_LIBADD =
-am_libdc210_la_OBJECTS = libdc210_la-dc210.lo
-libdc210_la_OBJECTS = $(am_libdc210_la_OBJECTS)
-libdc240_la_LIBADD =
-am_libdc240_la_OBJECTS = libdc240_la-dc240.lo
-libdc240_la_OBJECTS = $(am_libdc240_la_OBJECTS)
-libdc25_la_LIBADD =
-am_libdc25_la_OBJECTS = libdc25_la-dc25.lo
-libdc25_la_OBJECTS = $(am_libdc25_la_OBJECTS)
-libdell1600n_net_la_LIBADD =
-am_libdell1600n_net_la_OBJECTS = libdell1600n_net_la-dell1600n_net.lo
-libdell1600n_net_la_OBJECTS = $(am_libdell1600n_net_la_OBJECTS)
-libdll_la_LIBADD =
-am_libdll_la_OBJECTS = libdll_la-dll.lo
-libdll_la_OBJECTS = $(am_libdll_la_OBJECTS)
-libdll_preload_la_LIBADD =
-am_libdll_preload_la_OBJECTS = libdll_preload_la-dll.lo
-libdll_preload_la_OBJECTS = $(am_libdll_preload_la_OBJECTS)
-libdmc_la_LIBADD =
-am_libdmc_la_OBJECTS = libdmc_la-dmc.lo
-libdmc_la_OBJECTS = $(am_libdmc_la_OBJECTS)
-libepjitsu_la_LIBADD =
-am_libepjitsu_la_OBJECTS = libepjitsu_la-epjitsu.lo
-libepjitsu_la_OBJECTS = $(am_libepjitsu_la_OBJECTS)
-libepson_la_LIBADD =
-am_libepson_la_OBJECTS = libepson_la-epson.lo \
- libepson_la-epson_scsi.lo libepson_la-epson_usb.lo
-libepson_la_OBJECTS = $(am_libepson_la_OBJECTS)
-libepson2_la_LIBADD =
-am_libepson2_la_OBJECTS = libepson2_la-epson2.lo \
- libepson2_la-epson2_scsi.lo libepson2_la-epson2_usb.lo \
- libepson2_la-epson2_net.lo libepson2_la-epson2-io.lo \
- libepson2_la-epson2-commands.lo libepson2_la-epson2-ops.lo \
- libepson2_la-epson2-cct.lo
-libepson2_la_OBJECTS = $(am_libepson2_la_OBJECTS)
-libepsonds_la_LIBADD =
-am_libepsonds_la_OBJECTS = libepsonds_la-epsonds.lo \
- libepsonds_la-epsonds-usb.lo libepsonds_la-epsonds-io.lo \
- libepsonds_la-epsonds-cmd.lo libepsonds_la-epsonds-ops.lo \
- libepsonds_la-epsonds-jpeg.lo libepsonds_la-epsonds-net.lo
-libepsonds_la_OBJECTS = $(am_libepsonds_la_OBJECTS)
-libfujitsu_la_LIBADD =
-am_libfujitsu_la_OBJECTS = libfujitsu_la-fujitsu.lo
-libfujitsu_la_OBJECTS = $(am_libfujitsu_la_OBJECTS)
-libgenesys_la_LIBADD =
-am_libgenesys_la_OBJECTS = libgenesys_la-genesys.lo \
- libgenesys_la-genesys_gl646.lo libgenesys_la-genesys_gl841.lo \
- libgenesys_la-genesys_gl843.lo libgenesys_la-genesys_gl846.lo \
- libgenesys_la-genesys_gl847.lo libgenesys_la-genesys_gl124.lo \
- libgenesys_la-genesys_low.lo
-libgenesys_la_OBJECTS = $(am_libgenesys_la_OBJECTS)
-libgphoto2_i_la_LIBADD =
-am_libgphoto2_i_la_OBJECTS = libgphoto2_i_la-gphoto2.lo
-libgphoto2_i_la_OBJECTS = $(am_libgphoto2_i_la_OBJECTS)
-libgt68xx_la_LIBADD =
-am_libgt68xx_la_OBJECTS = libgt68xx_la-gt68xx.lo
-libgt68xx_la_OBJECTS = $(am_libgt68xx_la_OBJECTS)
-libhp_la_LIBADD =
-am_libhp_la_OBJECTS = libhp_la-hp.lo libhp_la-hp-accessor.lo \
- libhp_la-hp-device.lo libhp_la-hp-handle.lo \
- libhp_la-hp-hpmem.lo libhp_la-hp-option.lo libhp_la-hp-scl.lo
-libhp_la_OBJECTS = $(am_libhp_la_OBJECTS)
-libhp3500_la_LIBADD =
-am_libhp3500_la_OBJECTS = libhp3500_la-hp3500.lo
-libhp3500_la_OBJECTS = $(am_libhp3500_la_OBJECTS)
-libhp3900_la_LIBADD =
-am_libhp3900_la_OBJECTS = libhp3900_la-hp3900.lo
-libhp3900_la_OBJECTS = $(am_libhp3900_la_OBJECTS)
-libhp4200_la_LIBADD =
-am_libhp4200_la_OBJECTS = libhp4200_la-hp4200.lo
-libhp4200_la_OBJECTS = $(am_libhp4200_la_OBJECTS)
-libhp5400_la_LIBADD =
-am_libhp5400_la_OBJECTS = libhp5400_la-hp5400.lo
-libhp5400_la_OBJECTS = $(am_libhp5400_la_OBJECTS)
-libhp5590_la_LIBADD =
-am_libhp5590_la_OBJECTS = libhp5590_la-hp5590.lo
-libhp5590_la_OBJECTS = $(am_libhp5590_la_OBJECTS)
-libhpljm1005_la_LIBADD =
-am_libhpljm1005_la_OBJECTS = libhpljm1005_la-hpljm1005.lo
-libhpljm1005_la_OBJECTS = $(am_libhpljm1005_la_OBJECTS)
-libhpsj5s_la_LIBADD =
-am_libhpsj5s_la_OBJECTS = libhpsj5s_la-hpsj5s.lo
-libhpsj5s_la_OBJECTS = $(am_libhpsj5s_la_OBJECTS)
-libhs2p_la_LIBADD =
-am_libhs2p_la_OBJECTS = libhs2p_la-hs2p.lo
-libhs2p_la_OBJECTS = $(am_libhs2p_la_OBJECTS)
-libibm_la_LIBADD =
-am_libibm_la_OBJECTS = libibm_la-ibm.lo
-libibm_la_OBJECTS = $(am_libibm_la_OBJECTS)
-libkodak_la_LIBADD =
-am_libkodak_la_OBJECTS = libkodak_la-kodak.lo
-libkodak_la_OBJECTS = $(am_libkodak_la_OBJECTS)
-libkodakaio_la_LIBADD =
-am_libkodakaio_la_OBJECTS = libkodakaio_la-kodakaio.lo
-libkodakaio_la_OBJECTS = $(am_libkodakaio_la_OBJECTS)
-libkvs1025_la_LIBADD =
-am_libkvs1025_la_OBJECTS = libkvs1025_la-kvs1025.lo \
- libkvs1025_la-kvs1025_low.lo libkvs1025_la-kvs1025_opt.lo \
- libkvs1025_la-kvs1025_usb.lo
-libkvs1025_la_OBJECTS = $(am_libkvs1025_la_OBJECTS)
-libkvs20xx_la_LIBADD =
-am_libkvs20xx_la_OBJECTS = libkvs20xx_la-kvs20xx.lo \
- libkvs20xx_la-kvs20xx_cmd.lo libkvs20xx_la-kvs20xx_opt.lo
-libkvs20xx_la_OBJECTS = $(am_libkvs20xx_la_OBJECTS)
-libkvs40xx_la_LIBADD =
-am_libkvs40xx_la_OBJECTS = libkvs40xx_la-kvs40xx.lo \
- libkvs40xx_la-kvs40xx_cmd.lo libkvs40xx_la-kvs40xx_opt.lo
-libkvs40xx_la_OBJECTS = $(am_libkvs40xx_la_OBJECTS)
-libleo_la_LIBADD =
-am_libleo_la_OBJECTS = libleo_la-leo.lo
-libleo_la_OBJECTS = $(am_libleo_la_OBJECTS)
-liblexmark_la_LIBADD =
-am_liblexmark_la_OBJECTS = liblexmark_la-lexmark.lo \
- liblexmark_la-lexmark_low.lo
-liblexmark_la_OBJECTS = $(am_liblexmark_la_OBJECTS)
-libma1509_la_LIBADD =
-am_libma1509_la_OBJECTS = libma1509_la-ma1509.lo
-libma1509_la_OBJECTS = $(am_libma1509_la_OBJECTS)
-libmagicolor_la_LIBADD =
-am_libmagicolor_la_OBJECTS = libmagicolor_la-magicolor.lo
-libmagicolor_la_OBJECTS = $(am_libmagicolor_la_OBJECTS)
-libmatsushita_la_LIBADD =
-am_libmatsushita_la_OBJECTS = libmatsushita_la-matsushita.lo
-libmatsushita_la_OBJECTS = $(am_libmatsushita_la_OBJECTS)
-libmicrotek_la_LIBADD =
-am_libmicrotek_la_OBJECTS = libmicrotek_la-microtek.lo
-libmicrotek_la_OBJECTS = $(am_libmicrotek_la_OBJECTS)
-libmicrotek2_la_LIBADD =
-am_libmicrotek2_la_OBJECTS = libmicrotek2_la-microtek2.lo
-libmicrotek2_la_OBJECTS = $(am_libmicrotek2_la_OBJECTS)
-libmustek_la_LIBADD =
-am_libmustek_la_OBJECTS = libmustek_la-mustek.lo
-libmustek_la_OBJECTS = $(am_libmustek_la_OBJECTS)
-libmustek_pp_la_LIBADD =
-am_libmustek_pp_la_OBJECTS = libmustek_pp_la-mustek_pp.lo
-libmustek_pp_la_OBJECTS = $(am_libmustek_pp_la_OBJECTS)
-libmustek_usb_la_LIBADD =
-am_libmustek_usb_la_OBJECTS = libmustek_usb_la-mustek_usb.lo
-libmustek_usb_la_OBJECTS = $(am_libmustek_usb_la_OBJECTS)
-libmustek_usb2_la_LIBADD =
-am_libmustek_usb2_la_OBJECTS = libmustek_usb2_la-mustek_usb2.lo
-libmustek_usb2_la_OBJECTS = $(am_libmustek_usb2_la_OBJECTS)
-libnec_la_LIBADD =
-am_libnec_la_OBJECTS = libnec_la-nec.lo
-libnec_la_OBJECTS = $(am_libnec_la_OBJECTS)
-libnet_la_LIBADD =
-am_libnet_la_OBJECTS = libnet_la-net.lo
-libnet_la_OBJECTS = $(am_libnet_la_OBJECTS)
-libniash_la_LIBADD =
-am_libniash_la_OBJECTS = libniash_la-niash.lo
-libniash_la_OBJECTS = $(am_libniash_la_OBJECTS)
-libp5_la_LIBADD =
-am_libp5_la_OBJECTS = libp5_la-p5.lo
-libp5_la_OBJECTS = $(am_libp5_la_OBJECTS)
-libpie_la_LIBADD =
-am_libpie_la_OBJECTS = libpie_la-pie.lo
-libpie_la_OBJECTS = $(am_libpie_la_OBJECTS)
-libpieusb_la_LIBADD =
-am_libpieusb_la_OBJECTS = libpieusb_la-pieusb_buffer.lo \
- libpieusb_la-pieusb_scancmd.lo libpieusb_la-pieusb_specific.lo \
- libpieusb_la-pieusb_usb.lo libpieusb_la-pieusb.lo
-libpieusb_la_OBJECTS = $(am_libpieusb_la_OBJECTS)
-libpint_la_LIBADD =
-am_libpint_la_OBJECTS = libpint_la-pint.lo
-libpint_la_OBJECTS = $(am_libpint_la_OBJECTS)
-libpixma_la_LIBADD =
-am_libpixma_la_OBJECTS = libpixma_la-pixma.lo \
- libpixma_la-pixma_io_sanei.lo libpixma_la-pixma_common.lo \
- libpixma_la-pixma_mp150.lo libpixma_la-pixma_mp730.lo \
- libpixma_la-pixma_mp750.lo libpixma_la-pixma_mp810.lo \
- libpixma_la-pixma_imageclass.lo libpixma_la-pixma_bjnp.lo
-libpixma_la_OBJECTS = $(am_libpixma_la_OBJECTS)
-libplustek_la_LIBADD =
-am_libplustek_la_OBJECTS = libplustek_la-plustek.lo
-libplustek_la_OBJECTS = $(am_libplustek_la_OBJECTS)
-libplustek_pp_la_LIBADD =
-am_libplustek_pp_la_OBJECTS = libplustek_pp_la-plustek_pp.lo
-libplustek_pp_la_OBJECTS = $(am_libplustek_pp_la_OBJECTS)
-libpnm_la_LIBADD =
-am_libpnm_la_OBJECTS = libpnm_la-pnm.lo
-libpnm_la_OBJECTS = $(am_libpnm_la_OBJECTS)
-libqcam_la_LIBADD =
-am_libqcam_la_OBJECTS = libqcam_la-qcam.lo
-libqcam_la_OBJECTS = $(am_libqcam_la_OBJECTS)
-libricoh_la_LIBADD =
-am_libricoh_la_OBJECTS = libricoh_la-ricoh.lo
-libricoh_la_OBJECTS = $(am_libricoh_la_OBJECTS)
-librts8891_la_LIBADD =
-am_librts8891_la_OBJECTS = librts8891_la-rts8891.lo \
- librts8891_la-rts88xx_lib.lo
-librts8891_la_OBJECTS = $(am_librts8891_la_OBJECTS)
-libs9036_la_LIBADD =
-am_libs9036_la_OBJECTS = libs9036_la-s9036.lo
-libs9036_la_OBJECTS = $(am_libs9036_la_OBJECTS)
-am__DEPENDENCIES_1 =
-libsane_abaton_la_DEPENDENCIES = $(COMMON_LIBS) libabaton.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_abaton_la_OBJECTS = libsane_abaton_la-abaton-s.lo
-libsane_abaton_la_OBJECTS = $(nodist_libsane_abaton_la_OBJECTS)
-libsane_abaton_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_abaton_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_agfafocus_la_DEPENDENCIES = $(COMMON_LIBS) libagfafocus.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_thread.lo \
- ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_agfafocus_la_OBJECTS = \
- libsane_agfafocus_la-agfafocus-s.lo
-libsane_agfafocus_la_OBJECTS = $(nodist_libsane_agfafocus_la_OBJECTS)
-libsane_agfafocus_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_agfafocus_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_apple_la_DEPENDENCIES = $(COMMON_LIBS) libapple.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_apple_la_OBJECTS = libsane_apple_la-apple-s.lo
-libsane_apple_la_OBJECTS = $(nodist_libsane_apple_la_OBJECTS)
-libsane_apple_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_apple_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_artec_la_DEPENDENCIES = $(COMMON_LIBS) libartec.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_artec_la_OBJECTS = libsane_artec_la-artec-s.lo
-libsane_artec_la_OBJECTS = $(nodist_libsane_artec_la_OBJECTS)
-libsane_artec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_artec_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_artec_eplus48u_la_DEPENDENCIES = $(COMMON_LIBS) \
- libartec_eplus48u.la ../sanei/sanei_init_debug.lo \
- ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo \
- ../sanei/sanei_thread.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_artec_eplus48u_la_OBJECTS = \
- libsane_artec_eplus48u_la-artec_eplus48u-s.lo
-libsane_artec_eplus48u_la_OBJECTS = \
- $(nodist_libsane_artec_eplus48u_la_OBJECTS)
-libsane_artec_eplus48u_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_artec_eplus48u_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_as6e_la_DEPENDENCIES = $(COMMON_LIBS) libas6e.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo
-nodist_libsane_as6e_la_OBJECTS = libsane_as6e_la-as6e-s.lo
-libsane_as6e_la_OBJECTS = $(nodist_libsane_as6e_la_OBJECTS)
-libsane_as6e_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_as6e_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_avision_la_DEPENDENCIES = $(COMMON_LIBS) libavision.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo \
- ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_avision_la_OBJECTS = libsane_avision_la-avision-s.lo
-libsane_avision_la_OBJECTS = $(nodist_libsane_avision_la_OBJECTS)
-libsane_avision_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_avision_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_bh_la_DEPENDENCIES = $(COMMON_LIBS) libbh.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_bh_la_OBJECTS = libsane_bh_la-bh-s.lo
-libsane_bh_la_OBJECTS = $(nodist_libsane_bh_la_OBJECTS)
-libsane_bh_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libsane_bh_la_LDFLAGS) $(LDFLAGS) -o $@
-libsane_canon_la_DEPENDENCIES = $(COMMON_LIBS) libcanon.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_canon_la_OBJECTS = libsane_canon_la-canon-s.lo
-libsane_canon_la_OBJECTS = $(nodist_libsane_canon_la_OBJECTS)
-libsane_canon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_canon_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_canon630u_la_DEPENDENCIES = $(COMMON_LIBS) libcanon630u.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_canon630u_la_OBJECTS = \
- libsane_canon630u_la-canon630u-s.lo
-libsane_canon630u_la_OBJECTS = $(nodist_libsane_canon630u_la_OBJECTS)
-libsane_canon630u_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_canon630u_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_canon_dr_la_DEPENDENCIES = $(COMMON_LIBS) libcanon_dr.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_magic.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_canon_dr_la_OBJECTS = \
- libsane_canon_dr_la-canon_dr-s.lo
-libsane_canon_dr_la_OBJECTS = $(nodist_libsane_canon_dr_la_OBJECTS)
-libsane_canon_dr_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_canon_dr_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_canon_pp_la_DEPENDENCIES = $(COMMON_LIBS) libcanon_pp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_canon_pp_la_OBJECTS = \
- libsane_canon_pp_la-canon_pp-s.lo
-libsane_canon_pp_la_OBJECTS = $(nodist_libsane_canon_pp_la_OBJECTS)
-libsane_canon_pp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_canon_pp_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_cardscan_la_DEPENDENCIES = $(COMMON_LIBS) libcardscan.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_cardscan_la_OBJECTS = \
- libsane_cardscan_la-cardscan-s.lo
-libsane_cardscan_la_OBJECTS = $(nodist_libsane_cardscan_la_OBJECTS)
-libsane_cardscan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_cardscan_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_coolscan_la_DEPENDENCIES = $(COMMON_LIBS) libcoolscan.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_thread.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_coolscan_la_OBJECTS = \
- libsane_coolscan_la-coolscan-s.lo
-libsane_coolscan_la_OBJECTS = $(nodist_libsane_coolscan_la_OBJECTS)
-libsane_coolscan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_coolscan_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_coolscan2_la_DEPENDENCIES = $(COMMON_LIBS) libcoolscan2.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_coolscan2_la_OBJECTS = \
- libsane_coolscan2_la-coolscan2-s.lo
-libsane_coolscan2_la_OBJECTS = $(nodist_libsane_coolscan2_la_OBJECTS)
-libsane_coolscan2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_coolscan2_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_coolscan3_la_DEPENDENCIES = $(COMMON_LIBS) libcoolscan3.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_coolscan3_la_OBJECTS = \
- libsane_coolscan3_la-coolscan3-s.lo
-libsane_coolscan3_la_OBJECTS = $(nodist_libsane_coolscan3_la_OBJECTS)
-libsane_coolscan3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_coolscan3_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_dc210_la_DEPENDENCIES = $(COMMON_LIBS) libdc210.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_dc210_la_OBJECTS = libsane_dc210_la-dc210-s.lo
-libsane_dc210_la_OBJECTS = $(nodist_libsane_dc210_la_OBJECTS)
-libsane_dc210_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dc210_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_dc240_la_DEPENDENCIES = $(COMMON_LIBS) libdc240.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_dc240_la_OBJECTS = libsane_dc240_la-dc240-s.lo
-libsane_dc240_la_OBJECTS = $(nodist_libsane_dc240_la_OBJECTS)
-libsane_dc240_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dc240_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_dc25_la_DEPENDENCIES = $(COMMON_LIBS) libdc25.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_dc25_la_OBJECTS = libsane_dc25_la-dc25-s.lo
-libsane_dc25_la_OBJECTS = $(nodist_libsane_dc25_la_OBJECTS)
-libsane_dc25_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dc25_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_dell1600n_net_la_DEPENDENCIES = $(COMMON_LIBS) \
- libdell1600n_net.la ../sanei/sanei_init_debug.lo \
- ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo \
- sane_strstatus.lo $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_dell1600n_net_la_OBJECTS = \
- libsane_dell1600n_net_la-dell1600n_net-s.lo
-libsane_dell1600n_net_la_OBJECTS = \
- $(nodist_libsane_dell1600n_net_la_OBJECTS)
-libsane_dell1600n_net_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dell1600n_net_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_dll_la_DEPENDENCIES = $(COMMON_LIBS) libdll.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_dll_la_OBJECTS = libsane_dll_la-dll-s.lo
-libsane_dll_la_OBJECTS = $(nodist_libsane_dll_la_OBJECTS)
-libsane_dll_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dll_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_dmc_la_DEPENDENCIES = $(COMMON_LIBS) libdmc.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_dmc_la_OBJECTS = libsane_dmc_la-dmc-s.lo
-libsane_dmc_la_OBJECTS = $(nodist_libsane_dmc_la_OBJECTS)
-libsane_dmc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_dmc_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_epjitsu_la_DEPENDENCIES = $(COMMON_LIBS) libepjitsu.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_epjitsu_la_OBJECTS = libsane_epjitsu_la-epjitsu-s.lo
-libsane_epjitsu_la_OBJECTS = $(nodist_libsane_epjitsu_la_OBJECTS)
-libsane_epjitsu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_epjitsu_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_epson_la_DEPENDENCIES = $(COMMON_LIBS) libepson.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_pio.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_epson_la_OBJECTS = libsane_epson_la-epson-s.lo
-libsane_epson_la_OBJECTS = $(nodist_libsane_epson_la_OBJECTS)
-libsane_epson_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_epson_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_epson2_la_DEPENDENCIES = $(COMMON_LIBS) libepson2.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo \
- ../sanei/sanei_udp.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_epson2_la_OBJECTS = libsane_epson2_la-epson2-s.lo
-libsane_epson2_la_OBJECTS = $(nodist_libsane_epson2_la_OBJECTS)
-libsane_epson2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_epson2_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_epsonds_la_DEPENDENCIES = $(COMMON_LIBS) libepsonds.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_epsonds_la_OBJECTS = libsane_epsonds_la-epsonds-s.lo
-libsane_epsonds_la_OBJECTS = $(nodist_libsane_epsonds_la_OBJECTS)
-libsane_epsonds_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_epsonds_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_fujitsu_la_DEPENDENCIES = $(COMMON_LIBS) libfujitsu.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_magic.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_fujitsu_la_OBJECTS = libsane_fujitsu_la-fujitsu-s.lo
-libsane_fujitsu_la_OBJECTS = $(nodist_libsane_fujitsu_la_OBJECTS)
-libsane_fujitsu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_fujitsu_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_genesys_la_DEPENDENCIES = $(COMMON_LIBS) libgenesys.la \
- ../sanei/sanei_magic.lo ../sanei/sanei_init_debug.lo \
- ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_genesys_la_OBJECTS = libsane_genesys_la-genesys-s.lo
-libsane_genesys_la_OBJECTS = $(nodist_libsane_genesys_la_OBJECTS)
-libsane_genesys_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_genesys_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_gphoto2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(COMMON_LIBS) \
- libgphoto2_i.la ../sanei/sanei_init_debug.lo \
- ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo \
- sane_strstatus.lo $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_gphoto2_la_OBJECTS = libsane_gphoto2_la-gphoto2-s.lo
-libsane_gphoto2_la_OBJECTS = $(nodist_libsane_gphoto2_la_OBJECTS)
-libsane_gphoto2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_gphoto2_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_gt68xx_la_DEPENDENCIES = $(COMMON_LIBS) libgt68xx.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_gt68xx_la_OBJECTS = libsane_gt68xx_la-gt68xx-s.lo
-libsane_gt68xx_la_OBJECTS = $(nodist_libsane_gt68xx_la_OBJECTS)
-libsane_gt68xx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_gt68xx_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hp_la_DEPENDENCIES = $(COMMON_LIBS) libhp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_pio.lo ../sanei/sanei_thread.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_hp_la_OBJECTS = libsane_hp_la-hp-s.lo
-libsane_hp_la_OBJECTS = $(nodist_libsane_hp_la_OBJECTS)
-libsane_hp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libsane_hp_la_LDFLAGS) $(LDFLAGS) -o $@
-libsane_hp3500_la_DEPENDENCIES = $(COMMON_LIBS) libhp3500.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_hp3500_la_OBJECTS = libsane_hp3500_la-hp3500-s.lo
-libsane_hp3500_la_OBJECTS = $(nodist_libsane_hp3500_la_OBJECTS)
-libsane_hp3500_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hp3500_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hp3900_la_DEPENDENCIES = $(COMMON_LIBS) libhp3900.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hp3900_la_OBJECTS = libsane_hp3900_la-hp3900-s.lo
-libsane_hp3900_la_OBJECTS = $(nodist_libsane_hp3900_la_OBJECTS)
-libsane_hp3900_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hp3900_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hp4200_la_DEPENDENCIES = $(COMMON_LIBS) libhp4200.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hp4200_la_OBJECTS = libsane_hp4200_la-hp4200-s.lo
-libsane_hp4200_la_OBJECTS = $(nodist_libsane_hp4200_la_OBJECTS)
-libsane_hp4200_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hp4200_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hp5400_la_DEPENDENCIES = $(COMMON_LIBS) libhp5400.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hp5400_la_OBJECTS = libsane_hp5400_la-hp5400-s.lo
-libsane_hp5400_la_OBJECTS = $(nodist_libsane_hp5400_la_OBJECTS)
-libsane_hp5400_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hp5400_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hp5590_la_DEPENDENCIES = $(COMMON_LIBS) libhp5590.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hp5590_la_OBJECTS = libsane_hp5590_la-hp5590-s.lo
-libsane_hp5590_la_OBJECTS = $(nodist_libsane_hp5590_la_OBJECTS)
-libsane_hp5590_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hp5590_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hpljm1005_la_DEPENDENCIES = $(COMMON_LIBS) libhpljm1005.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_hpljm1005_la_OBJECTS = \
- libsane_hpljm1005_la-hpljm1005-s.lo
-libsane_hpljm1005_la_OBJECTS = $(nodist_libsane_hpljm1005_la_OBJECTS)
-libsane_hpljm1005_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hpljm1005_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_hpsj5s_la_DEPENDENCIES = $(COMMON_LIBS) libhpsj5s.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hpsj5s_la_OBJECTS = libsane_hpsj5s_la-hpsj5s-s.lo
-libsane_hpsj5s_la_OBJECTS = $(nodist_libsane_hpsj5s_la_OBJECTS)
-libsane_hpsj5s_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hpsj5s_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_hs2p_la_DEPENDENCIES = $(COMMON_LIBS) libhs2p.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_hs2p_la_OBJECTS = libsane_hs2p_la-hs2p-s.lo
-libsane_hs2p_la_OBJECTS = $(nodist_libsane_hs2p_la_OBJECTS)
-libsane_hs2p_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_hs2p_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_ibm_la_DEPENDENCIES = $(COMMON_LIBS) libibm.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_ibm_la_OBJECTS = libsane_ibm_la-ibm-s.lo
-libsane_ibm_la_OBJECTS = $(nodist_libsane_ibm_la_OBJECTS)
-libsane_ibm_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_ibm_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_kodak_la_DEPENDENCIES = $(COMMON_LIBS) libkodak.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_kodak_la_OBJECTS = libsane_kodak_la-kodak-s.lo
-libsane_kodak_la_OBJECTS = $(nodist_libsane_kodak_la_OBJECTS)
-libsane_kodak_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_kodak_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_kodakaio_la_DEPENDENCIES = $(COMMON_LIBS) libkodakaio.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_kodakaio_la_OBJECTS = \
- libsane_kodakaio_la-kodakaio-s.lo
-libsane_kodakaio_la_OBJECTS = $(nodist_libsane_kodakaio_la_OBJECTS)
-libsane_kodakaio_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_kodakaio_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_kvs1025_la_DEPENDENCIES = $(COMMON_LIBS) libkvs1025.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_magic.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_kvs1025_la_OBJECTS = libsane_kvs1025_la-kvs1025-s.lo
-libsane_kvs1025_la_OBJECTS = $(nodist_libsane_kvs1025_la_OBJECTS)
-libsane_kvs1025_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_kvs1025_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_kvs20xx_la_DEPENDENCIES = $(COMMON_LIBS) libkvs20xx.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_kvs20xx_la_OBJECTS = libsane_kvs20xx_la-kvs20xx-s.lo
-libsane_kvs20xx_la_OBJECTS = $(nodist_libsane_kvs20xx_la_OBJECTS)
-libsane_kvs20xx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_kvs20xx_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_kvs40xx_la_DEPENDENCIES = $(COMMON_LIBS) libkvs40xx.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_kvs40xx_la_OBJECTS = libsane_kvs40xx_la-kvs40xx-s.lo
-libsane_kvs40xx_la_OBJECTS = $(nodist_libsane_kvs40xx_la_OBJECTS)
-libsane_kvs40xx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_kvs40xx_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_leo_la_DEPENDENCIES = $(COMMON_LIBS) libleo.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_leo_la_OBJECTS = libsane_leo_la-leo-s.lo
-libsane_leo_la_OBJECTS = $(nodist_libsane_leo_la_OBJECTS)
-libsane_leo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_leo_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_lexmark_la_DEPENDENCIES = $(COMMON_LIBS) liblexmark.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_lexmark_la_OBJECTS = libsane_lexmark_la-lexmark-s.lo
-libsane_lexmark_la_OBJECTS = $(nodist_libsane_lexmark_la_OBJECTS)
-libsane_lexmark_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_lexmark_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_ma1509_la_DEPENDENCIES = $(COMMON_LIBS) libma1509.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_ma1509_la_OBJECTS = libsane_ma1509_la-ma1509-s.lo
-libsane_ma1509_la_OBJECTS = $(nodist_libsane_ma1509_la_OBJECTS)
-libsane_ma1509_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_ma1509_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_magicolor_la_DEPENDENCIES = $(COMMON_LIBS) libmagicolor.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_magicolor_la_OBJECTS = \
- libsane_magicolor_la-magicolor-s.lo
-libsane_magicolor_la_OBJECTS = $(nodist_libsane_magicolor_la_OBJECTS)
-libsane_magicolor_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_magicolor_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_matsushita_la_DEPENDENCIES = $(COMMON_LIBS) libmatsushita.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_matsushita_la_OBJECTS = \
- libsane_matsushita_la-matsushita-s.lo
-libsane_matsushita_la_OBJECTS = \
- $(nodist_libsane_matsushita_la_OBJECTS)
-libsane_matsushita_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_matsushita_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_microtek_la_DEPENDENCIES = $(COMMON_LIBS) libmicrotek.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_microtek_la_OBJECTS = \
- libsane_microtek_la-microtek-s.lo
-libsane_microtek_la_OBJECTS = $(nodist_libsane_microtek_la_OBJECTS)
-libsane_microtek_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_microtek_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_microtek2_la_DEPENDENCIES = $(COMMON_LIBS) libmicrotek2.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_thread.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_microtek2_la_OBJECTS = \
- libsane_microtek2_la-microtek2-s.lo
-libsane_microtek2_la_OBJECTS = $(nodist_libsane_microtek2_la_OBJECTS)
-libsane_microtek2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_microtek2_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_mustek_la_DEPENDENCIES = $(COMMON_LIBS) libmustek.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_thread.lo ../sanei/sanei_ab306.lo \
- ../sanei/sanei_pa4s2.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_mustek_la_OBJECTS = libsane_mustek_la-mustek-s.lo
-libsane_mustek_la_OBJECTS = $(nodist_libsane_mustek_la_OBJECTS)
-libsane_mustek_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_mustek_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_mustek_pp_la_DEPENDENCIES = $(COMMON_LIBS) libmustek_pp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_pa4s2.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_mustek_pp_la_OBJECTS = \
- libsane_mustek_pp_la-mustek_pp-s.lo
-libsane_mustek_pp_la_OBJECTS = $(nodist_libsane_mustek_pp_la_OBJECTS)
-libsane_mustek_pp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_mustek_pp_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_mustek_usb_la_DEPENDENCIES = $(COMMON_LIBS) libmustek_usb.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_mustek_usb_la_OBJECTS = \
- libsane_mustek_usb_la-mustek_usb-s.lo
-libsane_mustek_usb_la_OBJECTS = \
- $(nodist_libsane_mustek_usb_la_OBJECTS)
-libsane_mustek_usb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_mustek_usb_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_mustek_usb2_la_DEPENDENCIES = $(COMMON_LIBS) libmustek_usb2.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_mustek_usb2_la_OBJECTS = \
- libsane_mustek_usb2_la-mustek_usb2-s.lo
-libsane_mustek_usb2_la_OBJECTS = \
- $(nodist_libsane_mustek_usb2_la_OBJECTS)
-libsane_mustek_usb2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_mustek_usb2_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_nec_la_DEPENDENCIES = $(COMMON_LIBS) libnec.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_nec_la_OBJECTS = libsane_nec_la-nec-s.lo
-libsane_nec_la_OBJECTS = $(nodist_libsane_nec_la_OBJECTS)
-libsane_nec_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_nec_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_net_la_DEPENDENCIES = $(COMMON_LIBS) libnet.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_net.lo ../sanei/sanei_wire.lo \
- ../sanei/sanei_codec_bin.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_net_la_OBJECTS = libsane_net_la-net-s.lo
-libsane_net_la_OBJECTS = $(nodist_libsane_net_la_OBJECTS)
-libsane_net_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_net_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_niash_la_DEPENDENCIES = $(COMMON_LIBS) libniash.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_niash_la_OBJECTS = libsane_niash_la-niash-s.lo
-libsane_niash_la_OBJECTS = $(nodist_libsane_niash_la_OBJECTS)
-libsane_niash_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_niash_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_p5_la_DEPENDENCIES = $(COMMON_LIBS) libp5.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo
-nodist_libsane_p5_la_OBJECTS = libsane_p5_la-p5-s.lo
-libsane_p5_la_OBJECTS = $(nodist_libsane_p5_la_OBJECTS)
-libsane_p5_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libsane_p5_la_LDFLAGS) $(LDFLAGS) -o $@
-libsane_pie_la_DEPENDENCIES = $(COMMON_LIBS) libpie.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_thread.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_pie_la_OBJECTS = libsane_pie_la-pie-s.lo
-libsane_pie_la_OBJECTS = $(nodist_libsane_pie_la_OBJECTS)
-libsane_pie_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_pie_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_pieusb_la_DEPENDENCIES = $(COMMON_LIBS) libpieusb.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_thread.lo ../sanei/sanei_usb.lo \
- ../sanei/sanei_ir.lo ../sanei/sanei_magic.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_pieusb_la_OBJECTS = libsane_pieusb_la-pieusb-s.lo
-libsane_pieusb_la_OBJECTS = $(nodist_libsane_pieusb_la_OBJECTS)
-libsane_pieusb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_pieusb_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_pint_la_DEPENDENCIES = $(COMMON_LIBS) libpint.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo
-nodist_libsane_pint_la_OBJECTS = libsane_pint_la-pint-s.lo
-libsane_pint_la_OBJECTS = $(nodist_libsane_pint_la_OBJECTS)
-libsane_pint_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_pint_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_pixma_la_DEPENDENCIES = $(COMMON_LIBS) libpixma.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_pixma_la_OBJECTS = libsane_pixma_la-pixma-s.lo
-libsane_pixma_la_OBJECTS = $(nodist_libsane_pixma_la_OBJECTS)
-libsane_pixma_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_pixma_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_plustek_la_DEPENDENCIES = $(COMMON_LIBS) libplustek.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo \
- ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_plustek_la_OBJECTS = libsane_plustek_la-plustek-s.lo
-libsane_plustek_la_OBJECTS = $(nodist_libsane_plustek_la_OBJECTS)
-libsane_plustek_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_plustek_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_plustek_pp_la_DEPENDENCIES = $(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 \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_plustek_pp_la_OBJECTS = \
- libsane_plustek_pp_la-plustek_pp-s.lo
-libsane_plustek_pp_la_OBJECTS = \
- $(nodist_libsane_plustek_pp_la_OBJECTS)
-libsane_plustek_pp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_plustek_pp_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_pnm_la_DEPENDENCIES = $(COMMON_LIBS) libpnm.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo
-nodist_libsane_pnm_la_OBJECTS = libsane_pnm_la-pnm-s.lo
-libsane_pnm_la_OBJECTS = $(nodist_libsane_pnm_la_OBJECTS)
-libsane_pnm_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_pnm_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_qcam_la_DEPENDENCIES = $(COMMON_LIBS) libqcam.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_pio.lo
-nodist_libsane_qcam_la_OBJECTS = libsane_qcam_la-qcam-s.lo
-libsane_qcam_la_OBJECTS = $(nodist_libsane_qcam_la_OBJECTS)
-libsane_qcam_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_qcam_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_ricoh_la_DEPENDENCIES = $(COMMON_LIBS) libricoh.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_ricoh_la_OBJECTS = libsane_ricoh_la-ricoh-s.lo
-libsane_ricoh_la_OBJECTS = $(nodist_libsane_ricoh_la_OBJECTS)
-libsane_ricoh_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_ricoh_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_rts8891_la_DEPENDENCIES = $(COMMON_LIBS) librts8891.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_scsi.lo ../sanei/sanei_usb.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_rts8891_la_OBJECTS = libsane_rts8891_la-rts8891-s.lo
-libsane_rts8891_la_OBJECTS = $(nodist_libsane_rts8891_la_OBJECTS)
-libsane_rts8891_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_rts8891_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_s9036_la_DEPENDENCIES = $(COMMON_LIBS) libs9036.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_s9036_la_OBJECTS = libsane_s9036_la-s9036-s.lo
-libsane_s9036_la_OBJECTS = $(nodist_libsane_s9036_la_OBJECTS)
-libsane_s9036_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_s9036_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_sceptre_la_DEPENDENCIES = $(COMMON_LIBS) libsceptre.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_sceptre_la_OBJECTS = libsane_sceptre_la-sceptre-s.lo
-libsane_sceptre_la_OBJECTS = $(nodist_libsane_sceptre_la_OBJECTS)
-libsane_sceptre_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_sceptre_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_sharp_la_DEPENDENCIES = $(COMMON_LIBS) libsharp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_sharp_la_OBJECTS = libsane_sharp_la-sharp-s.lo
-libsane_sharp_la_OBJECTS = $(nodist_libsane_sharp_la_OBJECTS)
-libsane_sharp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_sharp_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_sm3600_la_DEPENDENCIES = $(COMMON_LIBS) libsm3600.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_sm3600_la_OBJECTS = libsane_sm3600_la-sm3600-s.lo
-libsane_sm3600_la_OBJECTS = $(nodist_libsane_sm3600_la_OBJECTS)
-libsane_sm3600_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_sm3600_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_sm3840_la_DEPENDENCIES = $(COMMON_LIBS) libsm3840.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_sm3840_la_OBJECTS = libsane_sm3840_la-sm3840-s.lo
-libsane_sm3840_la_OBJECTS = $(nodist_libsane_sm3840_la_OBJECTS)
-libsane_sm3840_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_sm3840_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_snapscan_la_DEPENDENCIES = $(COMMON_LIBS) libsnapscan.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo \
- ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_snapscan_la_OBJECTS = \
- libsane_snapscan_la-snapscan-s.lo
-libsane_snapscan_la_OBJECTS = $(nodist_libsane_snapscan_la_OBJECTS)
-libsane_snapscan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_snapscan_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_sp15c_la_DEPENDENCIES = $(COMMON_LIBS) libsp15c.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_thread.lo \
- ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_sp15c_la_OBJECTS = libsane_sp15c_la-sp15c-s.lo
-libsane_sp15c_la_OBJECTS = $(nodist_libsane_sp15c_la_OBJECTS)
-libsane_sp15c_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_sp15c_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_st400_la_DEPENDENCIES = $(COMMON_LIBS) libst400.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_st400_la_OBJECTS = libsane_st400_la-st400-s.lo
-libsane_st400_la_OBJECTS = $(nodist_libsane_st400_la_OBJECTS)
-libsane_st400_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_st400_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_stv680_la_DEPENDENCIES = $(COMMON_LIBS) libstv680.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_stv680_la_OBJECTS = libsane_stv680_la-stv680-s.lo
-libsane_stv680_la_OBJECTS = $(nodist_libsane_stv680_la_OBJECTS)
-libsane_stv680_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_stv680_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_tamarack_la_DEPENDENCIES = $(COMMON_LIBS) libtamarack.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_thread.lo \
- ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_tamarack_la_OBJECTS = \
- libsane_tamarack_la-tamarack-s.lo
-libsane_tamarack_la_OBJECTS = $(nodist_libsane_tamarack_la_OBJECTS)
-libsane_tamarack_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_tamarack_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_teco1_la_DEPENDENCIES = $(COMMON_LIBS) libteco1.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_teco1_la_OBJECTS = libsane_teco1_la-teco1-s.lo
-libsane_teco1_la_OBJECTS = $(nodist_libsane_teco1_la_OBJECTS)
-libsane_teco1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_teco1_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_teco2_la_DEPENDENCIES = $(COMMON_LIBS) libteco2.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_teco2_la_OBJECTS = libsane_teco2_la-teco2-s.lo
-libsane_teco2_la_OBJECTS = $(nodist_libsane_teco2_la_OBJECTS)
-libsane_teco2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_teco2_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_teco3_la_DEPENDENCIES = $(COMMON_LIBS) libteco3.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_scsi.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_teco3_la_OBJECTS = libsane_teco3_la-teco3-s.lo
-libsane_teco3_la_OBJECTS = $(nodist_libsane_teco3_la_OBJECTS)
-libsane_teco3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_teco3_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_test_la_DEPENDENCIES = $(COMMON_LIBS) libtest.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_thread.lo $(am__DEPENDENCIES_1)
-nodist_libsane_test_la_OBJECTS = libsane_test_la-test-s.lo
-libsane_test_la_OBJECTS = $(nodist_libsane_test_la_OBJECTS)
-libsane_test_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_test_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_u12_la_DEPENDENCIES = $(COMMON_LIBS) libu12.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_u12_la_OBJECTS = libsane_u12_la-u12-s.lo
-libsane_u12_la_OBJECTS = $(nodist_libsane_u12_la_OBJECTS)
-libsane_u12_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_u12_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_umax_la_DEPENDENCIES = $(COMMON_LIBS) libumax.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo \
- sane_strstatus.lo ../sanei/sanei_usb.lo \
- ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_pv8630.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-nodist_libsane_umax_la_OBJECTS = libsane_umax_la-umax-s.lo
-libsane_umax_la_OBJECTS = $(nodist_libsane_umax_la_OBJECTS)
-libsane_umax_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_umax_la_LDFLAGS) $(LDFLAGS) \
- -o $@
-libsane_umax1220u_la_DEPENDENCIES = $(COMMON_LIBS) libumax1220u.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_umax1220u_la_OBJECTS = \
- libsane_umax1220u_la-umax1220u-s.lo
-libsane_umax1220u_la_OBJECTS = $(nodist_libsane_umax1220u_la_OBJECTS)
-libsane_umax1220u_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_umax1220u_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_umax_pp_la_DEPENDENCIES = $(COMMON_LIBS) libumax_pp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_umax_pp_la_OBJECTS = libsane_umax_pp_la-umax_pp-s.lo
-libsane_umax_pp_la_OBJECTS = $(nodist_libsane_umax_pp_la_OBJECTS)
-libsane_umax_pp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_umax_pp_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-libsane_v4l_la_DEPENDENCIES = $(COMMON_LIBS) libv4l.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1)
-nodist_libsane_v4l_la_OBJECTS = libsane_v4l_la-v4l-s.lo
-libsane_v4l_la_OBJECTS = $(nodist_libsane_v4l_la_OBJECTS)
-libsane_v4l_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_v4l_la_LDFLAGS) $(LDFLAGS) -o \
- $@
-libsane_xerox_mfp_la_DEPENDENCIES = $(COMMON_LIBS) libxerox_mfp.la \
- ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo sane_strstatus.lo \
- $(am__DEPENDENCIES_1) ../sanei/sanei_usb.lo \
- ../sanei/sanei_tcp.lo $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-nodist_libsane_xerox_mfp_la_OBJECTS = \
- libsane_xerox_mfp_la-xerox_mfp-s.lo
-libsane_xerox_mfp_la_OBJECTS = $(nodist_libsane_xerox_mfp_la_OBJECTS)
-libsane_xerox_mfp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
- $(AM_CFLAGS) $(CFLAGS) $(libsane_xerox_mfp_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-nodist_libsane_la_OBJECTS = libsane_la-dll-s.lo
-libsane_la_OBJECTS = $(nodist_libsane_la_OBJECTS)
-libsane_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(libsane_la_LDFLAGS) $(LDFLAGS) -o $@
-libsceptre_la_LIBADD =
-am_libsceptre_la_OBJECTS = libsceptre_la-sceptre.lo
-libsceptre_la_OBJECTS = $(am_libsceptre_la_OBJECTS)
-libsharp_la_LIBADD =
-am_libsharp_la_OBJECTS = libsharp_la-sharp.lo
-libsharp_la_OBJECTS = $(am_libsharp_la_OBJECTS)
-libsm3600_la_LIBADD =
-am_libsm3600_la_OBJECTS = libsm3600_la-sm3600.lo
-libsm3600_la_OBJECTS = $(am_libsm3600_la_OBJECTS)
-libsm3840_la_LIBADD =
-am_libsm3840_la_OBJECTS = libsm3840_la-sm3840.lo
-libsm3840_la_OBJECTS = $(am_libsm3840_la_OBJECTS)
-libsnapscan_la_LIBADD =
-am_libsnapscan_la_OBJECTS = libsnapscan_la-snapscan.lo
-libsnapscan_la_OBJECTS = $(am_libsnapscan_la_OBJECTS)
-libsp15c_la_LIBADD =
-am_libsp15c_la_OBJECTS = libsp15c_la-sp15c.lo
-libsp15c_la_OBJECTS = $(am_libsp15c_la_OBJECTS)
-libst400_la_LIBADD =
-am_libst400_la_OBJECTS = libst400_la-st400.lo
-libst400_la_OBJECTS = $(am_libst400_la_OBJECTS)
-libstv680_la_LIBADD =
-am_libstv680_la_OBJECTS = libstv680_la-stv680.lo
-libstv680_la_OBJECTS = $(am_libstv680_la_OBJECTS)
-libtamarack_la_LIBADD =
-am_libtamarack_la_OBJECTS = libtamarack_la-tamarack.lo
-libtamarack_la_OBJECTS = $(am_libtamarack_la_OBJECTS)
-libteco1_la_LIBADD =
-am_libteco1_la_OBJECTS = libteco1_la-teco1.lo
-libteco1_la_OBJECTS = $(am_libteco1_la_OBJECTS)
-libteco2_la_LIBADD =
-am_libteco2_la_OBJECTS = libteco2_la-teco2.lo
-libteco2_la_OBJECTS = $(am_libteco2_la_OBJECTS)
-libteco3_la_LIBADD =
-am_libteco3_la_OBJECTS = libteco3_la-teco3.lo
-libteco3_la_OBJECTS = $(am_libteco3_la_OBJECTS)
-libtest_la_LIBADD =
-am_libtest_la_OBJECTS = libtest_la-test.lo
-libtest_la_OBJECTS = $(am_libtest_la_OBJECTS)
-libu12_la_LIBADD =
-am_libu12_la_OBJECTS = libu12_la-u12.lo
-libu12_la_OBJECTS = $(am_libu12_la_OBJECTS)
-libumax_la_LIBADD =
-am_libumax_la_OBJECTS = libumax_la-umax.lo
-libumax_la_OBJECTS = $(am_libumax_la_OBJECTS)
-libumax1220u_la_LIBADD =
-am_libumax1220u_la_OBJECTS = libumax1220u_la-umax1220u.lo
-libumax1220u_la_OBJECTS = $(am_libumax1220u_la_OBJECTS)
-libumax_pp_la_LIBADD =
-am_libumax_pp_la_OBJECTS = libumax_pp_la-umax_pp.lo \
- libumax_pp_la-umax_pp_low.lo libumax_pp_la-umax_pp_mid.lo
-libumax_pp_la_OBJECTS = $(am_libumax_pp_la_OBJECTS)
-libv4l_la_LIBADD =
-am_libv4l_la_OBJECTS = libv4l_la-v4l.lo
-libv4l_la_OBJECTS = $(am_libv4l_la_OBJECTS)
-libxerox_mfp_la_LIBADD =
-am_libxerox_mfp_la_OBJECTS = libxerox_mfp_la-xerox_mfp.lo \
- libxerox_mfp_la-xerox_mfp-usb.lo \
- libxerox_mfp_la-xerox_mfp-tcp.lo
-libxerox_mfp_la_OBJECTS = $(am_libxerox_mfp_la_OBJECTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libabaton_la_SOURCES) $(libagfafocus_la_SOURCES) \
- $(libapple_la_SOURCES) $(libartec_la_SOURCES) \
- $(libartec_eplus48u_la_SOURCES) $(libas6e_la_SOURCES) \
- $(libavision_la_SOURCES) $(libbh_la_SOURCES) \
- $(libcanon_la_SOURCES) $(libcanon630u_la_SOURCES) \
- $(libcanon_dr_la_SOURCES) $(libcanon_pp_la_SOURCES) \
- $(libcardscan_la_SOURCES) $(libcoolscan_la_SOURCES) \
- $(libcoolscan2_la_SOURCES) $(libcoolscan3_la_SOURCES) \
- $(libdc210_la_SOURCES) $(libdc240_la_SOURCES) \
- $(libdc25_la_SOURCES) $(libdell1600n_net_la_SOURCES) \
- $(libdll_la_SOURCES) $(libdll_preload_la_SOURCES) \
- $(libdmc_la_SOURCES) $(libepjitsu_la_SOURCES) \
- $(libepson_la_SOURCES) $(libepson2_la_SOURCES) \
- $(libepsonds_la_SOURCES) $(libfujitsu_la_SOURCES) \
- $(libgenesys_la_SOURCES) $(libgphoto2_i_la_SOURCES) \
- $(libgt68xx_la_SOURCES) $(libhp_la_SOURCES) \
- $(libhp3500_la_SOURCES) $(libhp3900_la_SOURCES) \
- $(libhp4200_la_SOURCES) $(libhp5400_la_SOURCES) \
- $(libhp5590_la_SOURCES) $(libhpljm1005_la_SOURCES) \
- $(libhpsj5s_la_SOURCES) $(libhs2p_la_SOURCES) \
- $(libibm_la_SOURCES) $(libkodak_la_SOURCES) \
- $(libkodakaio_la_SOURCES) $(libkvs1025_la_SOURCES) \
- $(libkvs20xx_la_SOURCES) $(libkvs40xx_la_SOURCES) \
- $(libleo_la_SOURCES) $(liblexmark_la_SOURCES) \
- $(libma1509_la_SOURCES) $(libmagicolor_la_SOURCES) \
- $(libmatsushita_la_SOURCES) $(libmicrotek_la_SOURCES) \
- $(libmicrotek2_la_SOURCES) $(libmustek_la_SOURCES) \
- $(libmustek_pp_la_SOURCES) $(libmustek_usb_la_SOURCES) \
- $(libmustek_usb2_la_SOURCES) $(libnec_la_SOURCES) \
- $(libnet_la_SOURCES) $(libniash_la_SOURCES) \
- $(libp5_la_SOURCES) $(libpie_la_SOURCES) \
- $(libpieusb_la_SOURCES) $(libpint_la_SOURCES) \
- $(libpixma_la_SOURCES) $(libplustek_la_SOURCES) \
- $(libplustek_pp_la_SOURCES) $(libpnm_la_SOURCES) \
- $(libqcam_la_SOURCES) $(libricoh_la_SOURCES) \
- $(librts8891_la_SOURCES) $(libs9036_la_SOURCES) \
- $(nodist_libsane_abaton_la_SOURCES) \
- $(nodist_libsane_agfafocus_la_SOURCES) \
- $(nodist_libsane_apple_la_SOURCES) \
- $(nodist_libsane_artec_la_SOURCES) \
- $(nodist_libsane_artec_eplus48u_la_SOURCES) \
- $(nodist_libsane_as6e_la_SOURCES) \
- $(nodist_libsane_avision_la_SOURCES) \
- $(nodist_libsane_bh_la_SOURCES) \
- $(nodist_libsane_canon_la_SOURCES) \
- $(nodist_libsane_canon630u_la_SOURCES) \
- $(nodist_libsane_canon_dr_la_SOURCES) \
- $(nodist_libsane_canon_pp_la_SOURCES) \
- $(nodist_libsane_cardscan_la_SOURCES) \
- $(nodist_libsane_coolscan_la_SOURCES) \
- $(nodist_libsane_coolscan2_la_SOURCES) \
- $(nodist_libsane_coolscan3_la_SOURCES) \
- $(nodist_libsane_dc210_la_SOURCES) \
- $(nodist_libsane_dc240_la_SOURCES) \
- $(nodist_libsane_dc25_la_SOURCES) \
- $(nodist_libsane_dell1600n_net_la_SOURCES) \
- $(nodist_libsane_dll_la_SOURCES) \
- $(nodist_libsane_dmc_la_SOURCES) \
- $(nodist_libsane_epjitsu_la_SOURCES) \
- $(nodist_libsane_epson_la_SOURCES) \
- $(nodist_libsane_epson2_la_SOURCES) \
- $(nodist_libsane_epsonds_la_SOURCES) \
- $(nodist_libsane_fujitsu_la_SOURCES) \
- $(nodist_libsane_genesys_la_SOURCES) \
- $(nodist_libsane_gphoto2_la_SOURCES) \
- $(nodist_libsane_gt68xx_la_SOURCES) \
- $(nodist_libsane_hp_la_SOURCES) \
- $(nodist_libsane_hp3500_la_SOURCES) \
- $(nodist_libsane_hp3900_la_SOURCES) \
- $(nodist_libsane_hp4200_la_SOURCES) \
- $(nodist_libsane_hp5400_la_SOURCES) \
- $(nodist_libsane_hp5590_la_SOURCES) \
- $(nodist_libsane_hpljm1005_la_SOURCES) \
- $(nodist_libsane_hpsj5s_la_SOURCES) \
- $(nodist_libsane_hs2p_la_SOURCES) \
- $(nodist_libsane_ibm_la_SOURCES) \
- $(nodist_libsane_kodak_la_SOURCES) \
- $(nodist_libsane_kodakaio_la_SOURCES) \
- $(nodist_libsane_kvs1025_la_SOURCES) \
- $(nodist_libsane_kvs20xx_la_SOURCES) \
- $(nodist_libsane_kvs40xx_la_SOURCES) \
- $(nodist_libsane_leo_la_SOURCES) \
- $(nodist_libsane_lexmark_la_SOURCES) \
- $(nodist_libsane_ma1509_la_SOURCES) \
- $(nodist_libsane_magicolor_la_SOURCES) \
- $(nodist_libsane_matsushita_la_SOURCES) \
- $(nodist_libsane_microtek_la_SOURCES) \
- $(nodist_libsane_microtek2_la_SOURCES) \
- $(nodist_libsane_mustek_la_SOURCES) \
- $(nodist_libsane_mustek_pp_la_SOURCES) \
- $(nodist_libsane_mustek_usb_la_SOURCES) \
- $(nodist_libsane_mustek_usb2_la_SOURCES) \
- $(nodist_libsane_nec_la_SOURCES) \
- $(nodist_libsane_net_la_SOURCES) \
- $(nodist_libsane_niash_la_SOURCES) \
- $(nodist_libsane_p5_la_SOURCES) \
- $(nodist_libsane_pie_la_SOURCES) \
- $(nodist_libsane_pieusb_la_SOURCES) \
- $(nodist_libsane_pint_la_SOURCES) \
- $(nodist_libsane_pixma_la_SOURCES) \
- $(nodist_libsane_plustek_la_SOURCES) \
- $(nodist_libsane_plustek_pp_la_SOURCES) \
- $(nodist_libsane_pnm_la_SOURCES) \
- $(nodist_libsane_qcam_la_SOURCES) \
- $(nodist_libsane_ricoh_la_SOURCES) \
- $(nodist_libsane_rts8891_la_SOURCES) \
- $(nodist_libsane_s9036_la_SOURCES) \
- $(nodist_libsane_sceptre_la_SOURCES) \
- $(nodist_libsane_sharp_la_SOURCES) \
- $(nodist_libsane_sm3600_la_SOURCES) \
- $(nodist_libsane_sm3840_la_SOURCES) \
- $(nodist_libsane_snapscan_la_SOURCES) \
- $(nodist_libsane_sp15c_la_SOURCES) \
- $(nodist_libsane_st400_la_SOURCES) \
- $(nodist_libsane_stv680_la_SOURCES) \
- $(nodist_libsane_tamarack_la_SOURCES) \
- $(nodist_libsane_teco1_la_SOURCES) \
- $(nodist_libsane_teco2_la_SOURCES) \
- $(nodist_libsane_teco3_la_SOURCES) \
- $(nodist_libsane_test_la_SOURCES) \
- $(nodist_libsane_u12_la_SOURCES) \
- $(nodist_libsane_umax_la_SOURCES) \
- $(nodist_libsane_umax1220u_la_SOURCES) \
- $(nodist_libsane_umax_pp_la_SOURCES) \
- $(nodist_libsane_v4l_la_SOURCES) \
- $(nodist_libsane_xerox_mfp_la_SOURCES) \
- $(nodist_libsane_la_SOURCES) $(libsceptre_la_SOURCES) \
- $(libsharp_la_SOURCES) $(libsm3600_la_SOURCES) \
- $(libsm3840_la_SOURCES) $(libsnapscan_la_SOURCES) \
- $(libsp15c_la_SOURCES) $(libst400_la_SOURCES) \
- $(libstv680_la_SOURCES) $(libtamarack_la_SOURCES) \
- $(libteco1_la_SOURCES) $(libteco2_la_SOURCES) \
- $(libteco3_la_SOURCES) $(libtest_la_SOURCES) \
- $(libu12_la_SOURCES) $(libumax_la_SOURCES) \
- $(libumax1220u_la_SOURCES) $(libumax_pp_la_SOURCES) \
- $(libv4l_la_SOURCES) $(libxerox_mfp_la_SOURCES)
-DIST_SOURCES = $(libabaton_la_SOURCES) $(libagfafocus_la_SOURCES) \
- $(libapple_la_SOURCES) $(libartec_la_SOURCES) \
- $(libartec_eplus48u_la_SOURCES) $(libas6e_la_SOURCES) \
- $(libavision_la_SOURCES) $(libbh_la_SOURCES) \
- $(libcanon_la_SOURCES) $(libcanon630u_la_SOURCES) \
- $(libcanon_dr_la_SOURCES) $(libcanon_pp_la_SOURCES) \
- $(libcardscan_la_SOURCES) $(libcoolscan_la_SOURCES) \
- $(libcoolscan2_la_SOURCES) $(libcoolscan3_la_SOURCES) \
- $(libdc210_la_SOURCES) $(libdc240_la_SOURCES) \
- $(libdc25_la_SOURCES) $(libdell1600n_net_la_SOURCES) \
- $(libdll_la_SOURCES) $(libdll_preload_la_SOURCES) \
- $(libdmc_la_SOURCES) $(libepjitsu_la_SOURCES) \
- $(libepson_la_SOURCES) $(libepson2_la_SOURCES) \
- $(libepsonds_la_SOURCES) $(libfujitsu_la_SOURCES) \
- $(libgenesys_la_SOURCES) $(libgphoto2_i_la_SOURCES) \
- $(libgt68xx_la_SOURCES) $(libhp_la_SOURCES) \
- $(libhp3500_la_SOURCES) $(libhp3900_la_SOURCES) \
- $(libhp4200_la_SOURCES) $(libhp5400_la_SOURCES) \
- $(libhp5590_la_SOURCES) $(libhpljm1005_la_SOURCES) \
- $(libhpsj5s_la_SOURCES) $(libhs2p_la_SOURCES) \
- $(libibm_la_SOURCES) $(libkodak_la_SOURCES) \
- $(libkodakaio_la_SOURCES) $(libkvs1025_la_SOURCES) \
- $(libkvs20xx_la_SOURCES) $(libkvs40xx_la_SOURCES) \
- $(libleo_la_SOURCES) $(liblexmark_la_SOURCES) \
- $(libma1509_la_SOURCES) $(libmagicolor_la_SOURCES) \
- $(libmatsushita_la_SOURCES) $(libmicrotek_la_SOURCES) \
- $(libmicrotek2_la_SOURCES) $(libmustek_la_SOURCES) \
- $(libmustek_pp_la_SOURCES) $(libmustek_usb_la_SOURCES) \
- $(libmustek_usb2_la_SOURCES) $(libnec_la_SOURCES) \
- $(libnet_la_SOURCES) $(libniash_la_SOURCES) \
- $(libp5_la_SOURCES) $(libpie_la_SOURCES) \
- $(libpieusb_la_SOURCES) $(libpint_la_SOURCES) \
- $(libpixma_la_SOURCES) $(libplustek_la_SOURCES) \
- $(libplustek_pp_la_SOURCES) $(libpnm_la_SOURCES) \
- $(libqcam_la_SOURCES) $(libricoh_la_SOURCES) \
- $(librts8891_la_SOURCES) $(libs9036_la_SOURCES) \
- $(libsceptre_la_SOURCES) $(libsharp_la_SOURCES) \
- $(libsm3600_la_SOURCES) $(libsm3840_la_SOURCES) \
- $(libsnapscan_la_SOURCES) $(libsp15c_la_SOURCES) \
- $(libst400_la_SOURCES) $(libstv680_la_SOURCES) \
- $(libtamarack_la_SOURCES) $(libteco1_la_SOURCES) \
- $(libteco2_la_SOURCES) $(libteco3_la_SOURCES) \
- $(libtest_la_SOURCES) $(libu12_la_SOURCES) \
- $(libumax_la_SOURCES) $(libumax1220u_la_SOURCES) \
- $(libumax_pp_la_SOURCES) $(libv4l_la_SOURCES) \
- $(libxerox_mfp_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include $(USB_CFLAGS) \
- -DLIBDIR="\"$(libdir)/sane\""
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@ $(STRICT_LDFLAGS)
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-
-# LIBTOOL install is a little to noisy for my liking.
-LIBTOOL = @LIBTOOL@ --silent
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-# The -rpath option is added because we are creating _LTLIBRARIES based
-# on configure substitution. This causes automake to not know the
-# correct $libdir and must be added here.
-DIST_SANELIBS_LDFLAGS = $(AM_LDFLAGS) -rpath '$(libdir)/sane' -version-number $(V_MAJOR):$(V_MINOR):$(V_REV) $(DYNAMIC_FLAG)
-DIST_LIBS_LDFLAGS = $(AM_LDFLAGS) -rpath '$(libdir)' -version-number $(V_MAJOR):$(V_MINOR):$(V_REV)
-FIRMWARE_DIRS = artec_eplus48u gt68xx snapscan epjitsu
-
-# TODO: This really belongs together with the saned sources and
-# should be installed there as well.
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are this distributed but not compiled?
-# TODO: Why are this distributed but not compiled?
-# TODO: Why are this distributed but not compiled?
-# TODO: These should be moved to ../docs/hp; don't belong here.
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why are these distributed but not compiled?
-# TODO: Why is this distributed but not installed?
-EXTRA_DIST = sane_strstatus.c stubs.c saned.conf.in abaton.conf.in \
- agfafocus.conf.in apple.conf.in artec.conf.in \
- artec_eplus48u.conf.in avision.conf.in bh.conf.in \
- canon.conf.in canon-sane.c canon-scsi.c canon630u.conf.in \
- canon630u-common.c lm9830.h canon_dr.conf.in canon_pp.conf.in \
- cardscan.conf.in coolscan.conf.in coolscan2.conf.in \
- coolscan3.conf.in dc25.conf.in dc210.conf.in dc240.conf.in \
- dell1600n_net.conf.in dmc.conf.in epjitsu.conf.in \
- epson.conf.in epson2.conf.in epsonds.conf.in fujitsu.conf.in \
- genesys.conf.in genesys_conv.c genesys_conv_hlp.c \
- genesys_devices.c gphoto2.conf.in gt68xx.conf.in \
- gt68xx_devices.c gt68xx_generic.c gt68xx_generic.h \
- gt68xx_gt6801.c gt68xx_gt6801.h gt68xx_gt6816.c \
- gt68xx_gt6816.h gt68xx_high.c gt68xx_high.h gt68xx_low.c \
- gt68xx_low.h gt68xx_mid.c gt68xx_mid.h gt68xx_shm_channel.c \
- gt68xx_shm_channel.h hp.conf.in hp.README hp.TODO \
- hp3900.conf.in hp3900_config.c hp3900_debug.c hp3900_rts8822.c \
- hp3900_sane.c hp3900_types.c hp3900_usb.c hp4200.conf.in \
- hp4200_lm9830.c hp4200_lm9830.h hp5400.conf.in hp5400_debug.c \
- hp5400_debug.h hp5400_internal.c hp5400_internal.h \
- hp5400_sane.c hp5400_sanei.c hp5400_sanei.h hp5400_xfer.h \
- hp5590_cmds.c hp5590_cmds.h hp5590_low.c hp5590_low.h \
- hpsj5s.conf.in hs2p.conf.in hs2p-scsi.c hs2p-scsi.h \
- ibm.conf.in ibm-scsi.c kodak.conf.in kodakaio.conf.in \
- kvs1025.conf.in leo.conf.in lexmark.conf.in lexmark_models.c \
- lexmark_sensors.c ma1509.conf.in magicolor.conf.in \
- matsushita.conf.in microtek.conf.in microtek2.conf.in \
- mustek.conf.in mustek_scsi_pp.c mustek_scsi_pp.h \
- mustek_pp.conf.in mustek_pp_ccd300.c mustek_pp_ccd300.h \
- mustek_pp_cis.c mustek_pp_cis.h mustek_pp_null.c \
- mustek_usb.conf.in mustek_usb_high.c mustek_usb_high.h \
- mustek_usb_low.c mustek_usb_low.h mustek_usb_mid.c \
- mustek_usb_mid.h mustek_usb2_asic.c mustek_usb2_asic.h \
- mustek_usb2_high.c mustek_usb2_high.h mustek_usb2_reflective.c \
- mustek_usb2_transparent.c nec.conf.in net.conf.in niash_core.c \
- niash_core.h niash_xfer.c niash_xfer.h pie.conf.in \
- pieusb.conf.in p5.conf.in p5_device.c pixma.conf.in \
- pixma_sane_options.c pixma_sane_options.h plustek.conf.in \
- plustek-usb.c plustek-usb.h plustek-usbcal.c \
- plustek-usbcalfile.c plustek-usbdevs.c plustek-usbhw.c \
- plustek-usbimg.c plustek-usbio.c plustek-usbmap.c \
- plustek-usbscan.c plustek-usbshading.c plustek_pp.conf.in \
- 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 qcam.conf.in ricoh.conf.in ricoh-scsi.c \
- rts8891.conf.in rts8891_devices.c rts8891_low.c rts8891_low.h \
- s9036.conf.in sceptre.conf.in sharp.conf.in sm3600-color.c \
- sm3600-gray.c sm3600-homerun.c sm3600-scanmtek.c \
- sm3600-scantool.h sm3600-scanusb.c sm3600-scanutil.c \
- sm3840.conf.in sm3840_lib.c sm3840_lib.h sm3840_scan.c \
- snapscan.conf.in snapscan-data.c snapscan-mutex.c \
- snapscan-options.c snapscan-scsi.c snapscan-sources.c \
- snapscan-sources.h snapscan-usb.c snapscan-usb.h sp15c.conf.in \
- st400.conf.in stv680.conf.in tamarack.conf.in test.conf.in \
- test-picture.c teco1.conf.in teco2.conf.in teco3.conf.in \
- u12.conf.in u12-ccd.c u12-hw.c u12-hwdef.h u12-if.c \
- u12-image.c u12-io.c u12-map.c u12-motor.c u12-scanner.h \
- u12-shading.c u12-tpa.c umax.conf.in umax-scanner.c \
- umax-scanner.h umax-scsidef.h umax-uc1200s.c umax-uc1200se.c \
- umax-uc1260.c umax-uc630.c umax-uc840.c umax-ug630.c \
- umax-ug80.c umax-usb.c umax1220u.conf.in umax1220u-common.c \
- umax_pp.conf.in v4l.conf.in xerox_mfp.conf.in dll.conf.in \
- dll.aliases
-
-# Backends are not required to have a config file. Any backend
-# that wants to install a config file should list it here.
-BACKEND_CONFS = abaton.conf agfafocus.conf apple.conf artec.conf \
- artec_eplus48u.conf avision.conf bh.conf \
- canon630u.conf canon.conf canon_dr.conf \
- canon_pp.conf cardscan.conf coolscan2.conf coolscan3.conf \
- coolscan.conf dc210.conf dc240.conf dc25.conf \
- dell1600n_net.conf dmc.conf epjitsu.conf epson2.conf \
- epson.conf epsonds.conf fujitsu.conf genesys.conf gphoto2.conf \
- gt68xx.conf hp3900.conf hp4200.conf hp5400.conf \
- hp.conf hpsj5s.conf hs2p.conf ibm.conf kodak.conf kodakaio.conf\
- kvs1025.conf \
- leo.conf lexmark.conf ma1509.conf magicolor.conf \
- matsushita.conf microtek2.conf microtek.conf mustek.conf \
- mustek_pp.conf mustek_usb.conf nec.conf net.conf \
- p5.conf \
- pie.conf pieusb.conf pixma.conf plustek.conf plustek_pp.conf \
- qcam.conf ricoh.conf rts8891.conf s9036.conf sceptre.conf \
- sharp.conf sm3840.conf snapscan.conf sp15c.conf \
- st400.conf stv680.conf tamarack.conf \
- teco1.conf teco2.conf teco3.conf test.conf \
- u12.conf umax1220u.conf umax.conf umax_pp.conf v4l.conf \
- xerox_mfp.conf dll.conf saned.conf
-
-SUFFIXES = .conf.in .conf
-CLEANFILES = $(BACKEND_CONFS) $(be_convenience_libs) dll-preload.h
-
-# Backends
-#
-# All possible backends should be listed here. As a first step, we create
-# a convenience library containing all files needed to link a backend
-# directly into libsane.la. Convenience library should have the
-# form of lib${backend}.la to match what configure will list to
-# build.
-# Occasionally, this approach will have name conflicts with external
-# libraries that need to be linked in. See libgphoto2_i.la for
-# example of working around that issue.
-be_convenience_libs = libabaton.la libagfafocus.la \
- libapple.la libartec.la libartec_eplus48u.la \
- libas6e.la libavision.la libbh.la \
- libcanon.la libcanon630u.la libcanon_dr.la \
- libcanon_pp.la libcardscan.la libcoolscan.la \
- libcoolscan2.la libcoolscan3.la libdc25.la \
- libdc210.la libdc240.la libdell1600n_net.la \
- libdmc.la libdll.la libdll_preload.la libepjitsu.la libepson.la \
- libepson2.la libepsonds.la libfujitsu.la libgenesys.la \
- libgphoto2_i.la libgt68xx.la libhp.la \
- libhp3500.la libhp3900.la libhp4200.la \
- libhp5400.la libhp5590.la libhpljm1005.la \
- libhpsj5s.la libhs2p.la libibm.la libkodak.la libkodakaio.la\
- libkvs1025.la libkvs20xx.la libkvs40xx.la \
- libleo.la liblexmark.la libma1509.la libmagicolor.la \
- libmatsushita.la libmicrotek.la libmicrotek2.la \
- libmustek.la libmustek_pp.la libmustek_usb.la \
- libmustek_usb2.la libnec.la libnet.la \
- libniash.la libp5.la \
- libpie.la libpieusb.la libpint.la libpixma.la \
- libplustek.la libplustek_pp.la libpnm.la \
- libqcam.la libricoh.la librts8891.la \
- libs9036.la libsceptre.la libsharp.la \
- libsm3600.la libsm3840.la libsnapscan.la \
- libsp15c.la libst400.la libstv680.la \
- libtamarack.la libtest.la libteco1.la \
- libteco2.la libteco3.la libu12.la libumax.la \
- libumax1220u.la libumax_pp.la libv4l.la \
- libxerox_mfp.la
-
-
-# Each stand alone backend thats possible to be built should be listed
-# here. There are the libraries that are installed under $(libdir)/sane.
-# Format is libsane-${backend}.la.
-be_dlopen_libs = libsane-abaton.la libsane-agfafocus.la \
- libsane-apple.la libsane-artec.la libsane-artec_eplus48u.la \
- libsane-as6e.la libsane-avision.la libsane-bh.la \
- libsane-canon.la libsane-canon630u.la libsane-canon_dr.la \
- libsane-canon_pp.la libsane-cardscan.la libsane-coolscan.la \
- libsane-coolscan2.la libsane-coolscan3.la libsane-dc25.la \
- libsane-dc210.la libsane-dc240.la libsane-dell1600n_net.la \
- libsane-dmc.la libsane-epjitsu.la libsane-epson.la \
- libsane-epson2.la libsane-epsonds.la libsane-fujitsu.la libsane-genesys.la \
- libsane-gphoto2.la libsane-gt68xx.la libsane-hp.la \
- libsane-hp3500.la libsane-hp3900.la libsane-hp4200.la \
- libsane-hp5400.la libsane-hp5590.la libsane-hpljm1005.la \
- libsane-hpsj5s.la libsane-hs2p.la libsane-ibm.la libsane-kodak.la libsane-kodakaio.la\
- libsane-kvs1025.la libsane-kvs20xx.la libsane-kvs40xx.la \
- libsane-leo.la \
- libsane-lexmark.la libsane-ma1509.la libsane-magicolor.la \
- libsane-matsushita.la libsane-microtek.la libsane-microtek2.la \
- libsane-mustek.la libsane-mustek_pp.la libsane-mustek_usb.la \
- libsane-mustek_usb2.la libsane-nec.la libsane-net.la \
- libsane-niash.la libsane-p5.la \
- libsane-pie.la libsane-pieusb.la libsane-pint.la libsane-pixma.la \
- libsane-plustek.la libsane-plustek_pp.la libsane-pnm.la \
- libsane-qcam.la libsane-ricoh.la libsane-rts8891.la \
- libsane-s9036.la libsane-sceptre.la libsane-sharp.la \
- libsane-sm3600.la libsane-sm3840.la libsane-snapscan.la \
- libsane-sp15c.la libsane-st400.la libsane-stv680.la \
- libsane-tamarack.la libsane-test.la libsane-teco1.la \
- libsane-teco2.la libsane-teco3.la libsane-u12.la libsane-umax.la \
- libsane-umax1220u.la libsane-umax_pp.la libsane-v4l.la \
- libsane-xerox_mfp.la
-
-EXTRA_LTLIBRARIES = $(be_convenience_libs) $(be_dlopen_libs)
-lib_LTLIBRARIES = libsane.la
-sanelibdir = $(libdir)/sane
-sanelib_LTLIBRARIES = $(BACKEND_LIBS_ENABLED) libsane-dll.la
-COMMON_LIBS = ../lib/liblib.la
-
-# Each backend should define a convenience library that compiles
-# all related files within backend directory. General guideline
-# is to have a ${backend}.c and ${backend}.h. Some backends also
-# add a few support source files to convience library.
-# Note: automake doesn't really use header files listed here.
-# They are indications that they need to be distributed only.
-libabaton_la_SOURCES = abaton.c abaton.h
-libabaton_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=abaton
-
-# Each backend should define a stand alone library that gets installed.
-# This will need to link in a special file ${backend}-s.c that allows
-# the backend to be stand alone and contain all SANE API functions.
-# Also, it will need to link in related convenience library as well as
-# any external libraries required to resolve symbols.
-#
-# All backends should include $(DIST_SANELIBS_LDFLAGS) so that
-# library is correctly versioned.
-#
-# If a backend has a config file, it must be listed here to get distributed.
-nodist_libsane_abaton_la_SOURCES = abaton-s.c
-libsane_abaton_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=abaton
-libsane_abaton_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_abaton_la_LIBADD = $(COMMON_LIBS) libabaton.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libagfafocus_la_SOURCES = agfafocus.c agfafocus.h
-libagfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
-nodist_libsane_agfafocus_la_SOURCES = agfafocus-s.c
-libsane_agfafocus_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=agfafocus
-libsane_agfafocus_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_agfafocus_la_LIBADD = $(COMMON_LIBS) libagfafocus.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libapple_la_SOURCES = apple.c apple.h
-libapple_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=apple
-nodist_libsane_apple_la_SOURCES = apple-s.c
-libsane_apple_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=apple
-libsane_apple_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_apple_la_LIBADD = $(COMMON_LIBS) libapple.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libartec_la_SOURCES = artec.c artec.h
-libartec_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=artec
-nodist_libsane_artec_la_SOURCES = artec-s.c
-libsane_artec_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_artec_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=artec
-libsane_artec_la_LIBADD = $(COMMON_LIBS) libartec.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libartec_eplus48u_la_SOURCES = artec_eplus48u.c artec_eplus48u.h
-libartec_eplus48u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=artec_eplus48u
-nodist_libsane_artec_eplus48u_la_SOURCES = artec_eplus48u-s.c
-libsane_artec_eplus48u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=artec_eplus48u
-libsane_artec_eplus48u_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_artec_eplus48u_la_LIBADD = $(COMMON_LIBS) libartec_eplus48u.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMEG_LIBS)
-libas6e_la_SOURCES = as6e.c as6e.h
-libas6e_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=as6e
-nodist_libsane_as6e_la_SOURCES = as6e-s.c
-libsane_as6e_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=as6e
-libsane_as6e_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_as6e_la_LIBADD = $(COMMON_LIBS) libas6e.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
-libavision_la_SOURCES = avision.c avision.h
-libavision_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=avision
-nodist_libsane_avision_la_SOURCES = avision-s.c
-libsane_avision_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=avision
-libsane_avision_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_avision_la_LIBADD = $(COMMON_LIBS) libavision.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libbh_la_SOURCES = bh.c bh.h
-libbh_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=bh
-nodist_libsane_bh_la_SOURCES = bh-s.c
-libsane_bh_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=bh
-libsane_bh_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_bh_la_LIBADD = $(COMMON_LIBS) libbh.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libcanon_la_SOURCES = canon.c canon.h
-libcanon_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon
-nodist_libsane_canon_la_SOURCES = canon-s.c
-libsane_canon_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon
-libsane_canon_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_canon_la_LIBADD = $(COMMON_LIBS) libcanon.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(RESMGR_LIBS)
-libcanon630u_la_SOURCES = canon630u.c
-libcanon630u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon630u
-nodist_libsane_canon630u_la_SOURCES = canon630u-s.c
-libsane_canon630u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon630u
-libsane_canon630u_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_canon630u_la_LIBADD = $(COMMON_LIBS) libcanon630u.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libcanon_dr_la_SOURCES = canon_dr.c canon_dr.h canon_dr-cmd.h
-libcanon_dr_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_dr
-nodist_libsane_canon_dr_la_SOURCES = canon_dr-s.c
-libsane_canon_dr_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_dr
-libsane_canon_dr_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_canon_dr_la_LIBADD = $(COMMON_LIBS) libcanon_dr.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_magic.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libcanon_pp_la_SOURCES = canon_pp.c canon_pp.h canon_pp-io.c canon_pp-io.h canon_pp-dev.c canon_pp-dev.h
-libcanon_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_pp
-nodist_libsane_canon_pp_la_SOURCES = canon_pp-s.c
-libsane_canon_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=canon_pp
-libsane_canon_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_canon_pp_la_LIBADD = $(COMMON_LIBS) libcanon_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(IEEE1284_LIBS)
-libcardscan_la_SOURCES = cardscan.c cardscan.h
-libcardscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=cardscan
-nodist_libsane_cardscan_la_SOURCES = cardscan-s.c
-libsane_cardscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=cardscan
-libsane_cardscan_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_cardscan_la_LIBADD = $(COMMON_LIBS) libcardscan.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libcoolscan_la_SOURCES = coolscan.c coolscan.h coolscan-scsidef.h
-libcoolscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan
-nodist_libsane_coolscan_la_SOURCES = coolscan-s.c
-libsane_coolscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan
-libsane_coolscan_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_coolscan_la_LIBADD = $(COMMON_LIBS) libcoolscan.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_thread.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libcoolscan2_la_SOURCES = coolscan2.c
-libcoolscan2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan2
-nodist_libsane_coolscan2_la_SOURCES = coolscan2-s.c
-libsane_coolscan2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan2
-libsane_coolscan2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_coolscan2_la_LIBADD = $(COMMON_LIBS) libcoolscan2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libcoolscan3_la_SOURCES = coolscan3.c
-libcoolscan3_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan3
-nodist_libsane_coolscan3_la_SOURCES = coolscan3-s.c
-libsane_coolscan3_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=coolscan3
-libsane_coolscan3_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_coolscan3_la_LIBADD = $(COMMON_LIBS) libcoolscan3.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libdc25_la_SOURCES = dc25.c dc25.h
-libdc25_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc25
-nodist_libsane_dc25_la_SOURCES = dc25-s.c
-libsane_dc25_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc25
-libsane_dc25_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dc25_la_LIBADD = $(COMMON_LIBS) libdc25.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(MATH_LIB)
-libdc210_la_SOURCES = dc210.c dc210.h
-libdc210_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc210
-nodist_libsane_dc210_la_SOURCES = dc210-s.c
-libsane_dc210_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc210
-libsane_dc210_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dc210_la_LIBADD = $(COMMON_LIBS) libdc210.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(SANEI_SANEI_JPEG_LO) $(JPEG_LIBS)
-libdc240_la_SOURCES = dc240.c dc240.h
-libdc240_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc240
-nodist_libsane_dc240_la_SOURCES = dc240-s.c
-libsane_dc240_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dc240
-libsane_dc240_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dc240_la_LIBADD = $(COMMON_LIBS) libdc240.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(SANEI_SANEI_JPEG_LO) $(JPEG_LIBS)
-libdell1600n_net_la_SOURCES = dell1600n_net.c
-libdell1600n_net_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dell1600n_net
-nodist_libsane_dell1600n_net_la_SOURCES = dell1600n_net-s.c
-libsane_dell1600n_net_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dell1600n_net
-libsane_dell1600n_net_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dell1600n_net_la_LIBADD = $(COMMON_LIBS) libdell1600n_net.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(TIFF_LIBS) $(JPEG_LIBS) $(SOCKET_LIBS)
-libdmc_la_SOURCES = dmc.c dmc.h
-libdmc_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dmc
-nodist_libsane_dmc_la_SOURCES = dmc-s.c
-libsane_dmc_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dmc
-libsane_dmc_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dmc_la_LIBADD = $(COMMON_LIBS) libdmc.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libepjitsu_la_SOURCES = epjitsu.c epjitsu.h epjitsu-cmd.h
-libepjitsu_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epjitsu
-nodist_libsane_epjitsu_la_SOURCES = epjitsu-s.c
-libsane_epjitsu_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epjitsu
-libsane_epjitsu_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_epjitsu_la_LIBADD = $(COMMON_LIBS) libepjitsu.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libepson_la_SOURCES = epson.c epson.h epson_scsi.c epson_scsi.h epson_usb.c epson_usb.h
-libepson_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epson
-nodist_libsane_epson_la_SOURCES = epson-s.c
-libsane_epson_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epson
-libsane_epson_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_epson_la_LIBADD = $(COMMON_LIBS) libepson.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pio.lo $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libepson2_la_SOURCES = epson2.c epson2.h epson2_scsi.c epson2_scsi.h epson2_usb.c epson2_net.c epson2_net.h epson2-io.c epson2-io.h epson2-commands.c epson2-commands.h epson2-ops.c epson2-ops.h epson2-cct.c
-libepson2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epson2
-nodist_libsane_epson2_la_SOURCES = epson2-s.c
-libsane_epson2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epson2
-libsane_epson2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_epson2_la_LIBADD = $(COMMON_LIBS) libepson2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo $(SCSI_LIBS) $(USB_LIBS) $(SOCKET_LIBS) $(MATH_LIB) $(RESMGR_LIBS)
-libepsonds_la_SOURCES = epsonds.c epsonds.h epsonds-usb.c epsonds-usb.h epsonds-io.c epsonds-io.h \
- epsonds-cmd.c epsonds-cmd.h epsonds-ops.c epsonds-ops.h epsonds-jpeg.c epsonds-jpeg.h \
- epsonds-net.c epsonds-net.h
-
-libepsonds_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epsonds
-nodist_libsane_epsonds_la_SOURCES = epsonds-s.c
-libsane_epsonds_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=epsonds
-libsane_epsonds_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_epsonds_la_LIBADD = $(COMMON_LIBS) libepsonds.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo \
- ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo \
- ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo \
- ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo \
- $(SANEI_SANEI_JPEG_LO) $(JPEG_LIBS) $(USB_LIBS) $(MATH_LIB) $(RESMGR_LIBS) $(SOCKET_LIBS)
-
-libfujitsu_la_SOURCES = fujitsu.c fujitsu.h fujitsu-scsi.h
-libfujitsu_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=fujitsu
-nodist_libsane_fujitsu_la_SOURCES = fujitsu-s.c
-libsane_fujitsu_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=fujitsu
-libsane_fujitsu_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_fujitsu_la_LIBADD = $(COMMON_LIBS) libfujitsu.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_magic.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libgenesys_la_SOURCES = genesys.c genesys.h genesys_gl646.c genesys_gl646.h genesys_gl841.c genesys_gl841.h genesys_gl843.c genesys_gl843.h genesys_gl846.c genesys_gl846.h genesys_gl847.c genesys_gl847.h genesys_gl124.c genesys_gl124.h genesys_low.c genesys_low.h
-libgenesys_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=genesys
-nodist_libsane_genesys_la_SOURCES = genesys-s.c
-libsane_genesys_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=genesys
-libsane_genesys_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_genesys_la_LIBADD = $(COMMON_LIBS) libgenesys.la ../sanei/sanei_magic.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libgphoto2_i_la_SOURCES = gphoto2.c gphoto2.h
-libgphoto2_i_la_CPPFLAGS = $(AM_CPPFLAGS) $(GPHOTO2_CPPFLAGS) -DBACKEND_NAME=gphoto2
-nodist_libsane_gphoto2_la_SOURCES = gphoto2-s.c
-libsane_gphoto2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gphoto2
-libsane_gphoto2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_gphoto2_la_LIBADD = $(GPHOTO2_LDFLAGS) $(COMMON_LIBS) libgphoto2_i.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(SANEI_SANEI_JPEG_LO) $(GPHOTO2_LIBS) $(JPEG_LIBS)
-libgt68xx_la_SOURCES = gt68xx.c gt68xx.h
-libgt68xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gt68xx
-nodist_libsane_gt68xx_la_SOURCES = gt68xx-s.c
-libsane_gt68xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=gt68xx
-libsane_gt68xx_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_gt68xx_la_LIBADD = $(COMMON_LIBS) libgt68xx.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libhp_la_SOURCES = hp.c hp.h hp-accessor.c hp-accessor.h hp-device.c hp-device.h hp-handle.c hp-handle.h hp-hpmem.c hp-option.c hp-option.h hp-scl.c hp-scl.h hp-scsi.h
-libhp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp
-nodist_libsane_hp_la_SOURCES = hp-s.c
-libsane_hp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp
-libsane_hp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp_la_LIBADD = $(COMMON_LIBS) libhp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pio.lo ../sanei/sanei_thread.lo $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libhp3500_la_SOURCES = hp3500.c
-libhp3500_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp3500
-nodist_libsane_hp3500_la_SOURCES = hp3500-s.c
-libsane_hp3500_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp3500
-libsane_hp3500_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp3500_la_LIBADD = $(COMMON_LIBS) libhp3500.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libhp3900_la_SOURCES = hp3900.c
-libhp3900_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp3900
-nodist_libsane_hp3900_la_SOURCES = hp3900-s.c
-libsane_hp3900_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp3900
-libsane_hp3900_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp3900_la_LIBADD = $(COMMON_LIBS) libhp3900.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(TIFF_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libhp4200_la_SOURCES = hp4200.c hp4200.h
-libhp4200_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp4200
-nodist_libsane_hp4200_la_SOURCES = hp4200-s.c
-libsane_hp4200_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp4200
-libsane_hp4200_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp4200_la_LIBADD = $(COMMON_LIBS) libhp4200.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libhp5400_la_SOURCES = hp5400.c hp5400.h
-libhp5400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp5400
-nodist_libsane_hp5400_la_SOURCES = hp5400-s.c
-libsane_hp5400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp5400
-libsane_hp5400_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp5400_la_LIBADD = $(COMMON_LIBS) libhp5400.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libhp5590_la_SOURCES = hp5590.c
-libhp5590_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp5590
-nodist_libsane_hp5590_la_SOURCES = hp5590-s.c
-libsane_hp5590_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hp5590
-libsane_hp5590_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hp5590_la_LIBADD = $(COMMON_LIBS) libhp5590.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libhpljm1005_la_SOURCES = hpljm1005.c
-libhpljm1005_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpljm1005
-nodist_libsane_hpljm1005_la_SOURCES = hpljm1005-s.c
-libsane_hpljm1005_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpljm1005
-libsane_hpljm1005_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hpljm1005_la_LIBADD = $(COMMON_LIBS) libhpljm1005.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libhpsj5s_la_SOURCES = hpsj5s.c hpsj5s.h
-libhpsj5s_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpsj5s
-nodist_libsane_hpsj5s_la_SOURCES = hpsj5s-s.c
-libsane_hpsj5s_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hpsj5s
-libsane_hpsj5s_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hpsj5s_la_LIBADD = $(COMMON_LIBS) libhpsj5s.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(IEEE1284_LIBS)
-libhs2p_la_SOURCES = hs2p.c hs2p.h hs2p-saneopts.h
-libhs2p_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hs2p
-nodist_libsane_hs2p_la_SOURCES = hs2p-s.c
-libsane_hs2p_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=hs2p
-libsane_hs2p_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_hs2p_la_LIBADD = $(COMMON_LIBS) libhs2p.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libibm_la_SOURCES = ibm.c ibm.h
-libibm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ibm
-nodist_libsane_ibm_la_SOURCES = ibm-s.c
-libsane_ibm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ibm
-libsane_ibm_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_ibm_la_LIBADD = $(COMMON_LIBS) libibm.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libkodak_la_SOURCES = kodak.c kodak.h kodak-cmd.h
-libkodak_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kodak
-nodist_libsane_kodak_la_SOURCES = kodak-s.c
-libsane_kodak_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kodak
-libsane_kodak_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_kodak_la_LIBADD = $(COMMON_LIBS) libkodak.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libkodakaio_la_SOURCES = kodakaio.c kodakaio.h
-libkodakaio_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kodakaio
-nodist_libsane_kodakaio_la_SOURCES = kodakaio-s.c
-libsane_kodakaio_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kodakaio
-libsane_kodakaio_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_kodakaio_la_LIBADD = $(COMMON_LIBS) libkodakaio.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo $(USB_LIBS) $(SOCKET_LIBS) $(AVAHI_LIBS) $(MATH_LIB) $(RESMGR_LIBS)
-libkvs1025_la_SOURCES = kvs1025.c kvs1025_low.c kvs1025_opt.c kvs1025_usb.c \
- kvs1025.h kvs1025_low.h kvs1025_usb.h kvs1025_cmds.h
-
-libkvs1025_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs1025
-nodist_libsane_kvs1025_la_SOURCES = kvs1025-s.c
-libsane_kvs1025_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs1025
-libsane_kvs1025_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_kvs1025_la_LIBADD = $(COMMON_LIBS) libkvs1025.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_magic.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libkvs20xx_la_SOURCES = kvs20xx.c kvs20xx_cmd.c kvs20xx_opt.c \
- kvs20xx_cmd.h kvs20xx.h
-
-libkvs20xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs20xx
-nodist_libsane_kvs20xx_la_SOURCES = kvs20xx-s.c
-libsane_kvs20xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs20xx
-libsane_kvs20xx_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_kvs20xx_la_LIBADD = $(COMMON_LIBS) libkvs20xx.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libkvs40xx_la_SOURCES = kvs40xx.c kvs40xx_cmd.c kvs40xx_opt.c \
- kvs40xx.h
-
-libkvs40xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs40xx
-nodist_libsane_kvs40xx_la_SOURCES = kvs40xx-s.c
-libsane_kvs40xx_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=kvs40xx
-libsane_kvs40xx_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_kvs40xx_la_LIBADD = $(COMMON_LIBS) libkvs40xx.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libleo_la_SOURCES = leo.c leo.h
-libleo_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=leo
-nodist_libsane_leo_la_SOURCES = leo-s.c
-libsane_leo_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=leo
-libsane_leo_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_leo_la_LIBADD = $(COMMON_LIBS) libleo.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-liblexmark_la_SOURCES = lexmark.c lexmark.h lexmark_low.c
-liblexmark_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=lexmark
-nodist_libsane_lexmark_la_SOURCES = lexmark-s.c
-libsane_lexmark_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=lexmark
-libsane_lexmark_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_lexmark_la_LIBADD = $(COMMON_LIBS) liblexmark.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libma1509_la_SOURCES = ma1509.c ma1509.h
-libma1509_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ma1509
-nodist_libsane_ma1509_la_SOURCES = ma1509-s.c
-libsane_ma1509_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ma1509
-libsane_ma1509_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_ma1509_la_LIBADD = $(COMMON_LIBS) libma1509.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libmagicolor_la_SOURCES = magicolor.c magicolor.h
-libmagicolor_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=magicolor $(SNMP_CFLAGS)
-nodist_libsane_magicolor_la_SOURCES = magicolor-s.c
-libsane_magicolor_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=magicolor
-libsane_magicolor_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_magicolor_la_LIBADD = $(COMMON_LIBS) libmagicolor.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo $(USB_LIBS) $(SOCKET_LIBS) $(MATH_LIB) $(RESMGR_LIBS) $(SNMP_LIBS)
-libmatsushita_la_SOURCES = matsushita.c matsushita.h
-libmatsushita_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=matsushita
-nodist_libsane_matsushita_la_SOURCES = matsushita-s.c
-libsane_matsushita_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=matsushita
-libsane_matsushita_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_matsushita_la_LIBADD = $(COMMON_LIBS) libmatsushita.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libmicrotek_la_SOURCES = microtek.c microtek.h
-libmicrotek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=microtek
-nodist_libsane_microtek_la_SOURCES = microtek-s.c
-libsane_microtek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=microtek
-libsane_microtek_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_microtek_la_LIBADD = $(COMMON_LIBS) libmicrotek.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(RESMGR_LIBS)
-libmicrotek2_la_SOURCES = microtek2.c microtek2.h
-libmicrotek2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=microtek2
-nodist_libsane_microtek2_la_SOURCES = microtek2-s.c
-libsane_microtek2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=microtek2
-libsane_microtek2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_microtek2_la_LIBADD = $(COMMON_LIBS) libmicrotek2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libmustek_la_SOURCES = mustek.c mustek.h
-libmustek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek
-nodist_libsane_mustek_la_SOURCES = mustek-s.c
-libsane_mustek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek
-libsane_mustek_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_mustek_la_LIBADD = $(COMMON_LIBS) libmustek.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_thread.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pa4s2.lo $(IEEE1284_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libmustek_pp_la_SOURCES = mustek_pp.c mustek_pp.h mustek_pp_decl.h mustek_pp_drivers.h
-libmustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_pp
-nodist_libsane_mustek_pp_la_SOURCES = mustek_pp-s.c
-libsane_mustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_pp
-libsane_mustek_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_mustek_pp_la_LIBADD = $(COMMON_LIBS) libmustek_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_pa4s2.lo $(MATH_LIB) $(IEEE1284_LIBS)
-libmustek_usb_la_SOURCES = mustek_usb.c mustek_usb.h
-libmustek_usb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb
-nodist_libsane_mustek_usb_la_SOURCES = mustek_usb-s.c
-libsane_mustek_usb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb
-libsane_mustek_usb_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_mustek_usb_la_LIBADD = $(COMMON_LIBS) libmustek_usb.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libmustek_usb2_la_SOURCES = mustek_usb2.c mustek_usb2.h
-libmustek_usb2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb2
-nodist_libsane_mustek_usb2_la_SOURCES = mustek_usb2-s.c
-libsane_mustek_usb2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=mustek_usb2
-libsane_mustek_usb2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_mustek_usb2_la_LIBADD = $(COMMON_LIBS) libmustek_usb2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(PTHREAD_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libnec_la_SOURCES = nec.c nec.h
-libnec_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=nec
-nodist_libsane_nec_la_SOURCES = nec-s.c
-libsane_nec_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=nec
-libsane_nec_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_nec_la_LIBADD = $(COMMON_LIBS) libnec.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(RESMGR_LIBS)
-libnet_la_SOURCES = net.c net.h
-libnet_la_CPPFLAGS = $(AM_CPPFLAGS) $(AVAHI_CFLAGS) -DBACKEND_NAME=net
-nodist_libsane_net_la_SOURCES = net-s.c
-libsane_net_la_CPPFLAGS = $(AM_CPPFLAGS) $(AVAHI_CFLAGS) -DBACKEND_NAME=net
-libsane_net_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_net_la_LIBADD = $(COMMON_LIBS) libnet.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo $(AVAHI_LIBS) $(SOCKET_LIBS)
-libniash_la_SOURCES = niash.c
-libniash_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=niash
-nodist_libsane_niash_la_SOURCES = niash-s.c
-libsane_niash_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=niash
-libsane_niash_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_niash_la_LIBADD = $(COMMON_LIBS) libniash.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libpie_la_SOURCES = pie.c pie-scsidef.h
-libpie_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pie
-nodist_libsane_pie_la_SOURCES = pie-s.c
-libsane_pie_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pie
-libsane_pie_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pie_la_LIBADD = $(COMMON_LIBS) libpie.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_thread.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libpieusb_la_SOURCES = pieusb.h pieusb_buffer.c pieusb_buffer.h pieusb_scancmd.c pieusb_scancmd.h pieusb_specific.c pieusb_specific.h pieusb_usb.c pieusb_usb.h pieusb.c
-libpieusb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pieusb
-nodist_libsane_pieusb_la_SOURCES = pieusb-s.c
-libsane_pieusb_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pieusb
-libsane_pieusb_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pieusb_la_LIBADD = $(COMMON_LIBS) libpieusb.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_thread.lo ../sanei/sanei_usb.lo ../sanei/sanei_ir.lo ../sanei/sanei_magic.lo $(PTHREAD_LIBS) $(RESMGR_LIBS) $(USB_LIBS) $(MATH_LIB)
-libp5_la_SOURCES = p5.c p5.h p5_device.h
-libp5_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=p5
-nodist_libsane_p5_la_SOURCES = p5-s.c
-libsane_p5_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=p5
-libsane_p5_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_p5_la_LIBADD = $(COMMON_LIBS) libp5.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
-libpint_la_SOURCES = pint.c pint.h
-libpint_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pint
-nodist_libsane_pint_la_SOURCES = pint-s.c
-libsane_pint_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pint
-libsane_pint_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pint_la_LIBADD = $(COMMON_LIBS) libpint.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
-libpixma_la_SOURCES = pixma.c pixma.h pixma_io_sanei.c pixma_io.h pixma_common.c pixma_common.h pixma_mp150.c pixma_mp730.c pixma_mp750.c pixma_mp810.c pixma_imageclass.c pixma_bjnp.c pixma_bjnp.h pixma_bjnp_private.h pixma_rename.h
-libpixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
-nodist_libsane_pixma_la_SOURCES = pixma-s.c
-libsane_pixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
-libsane_pixma_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pixma_la_LIBADD = $(COMMON_LIBS) libpixma.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(SOCKET_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libplustek_la_SOURCES = plustek.c plustek.h
-libplustek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek
-nodist_libsane_plustek_la_SOURCES = plustek-s.c
-libsane_plustek_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek
-libsane_plustek_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_plustek_la_LIBADD = $(COMMON_LIBS) libplustek.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libplustek_pp_la_SOURCES = plustek_pp.c plustek-pp.h
-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) $(PTHREAD_LIBS)
-libpnm_la_SOURCES = pnm.c
-libpnm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pnm
-nodist_libsane_pnm_la_SOURCES = pnm-s.c
-libsane_pnm_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pnm
-libsane_pnm_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_pnm_la_LIBADD = $(COMMON_LIBS) libpnm.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo
-libqcam_la_SOURCES = qcam.c qcam.h
-libqcam_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=qcam
-nodist_libsane_qcam_la_SOURCES = qcam-s.c
-libsane_qcam_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=qcam
-libsane_qcam_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_qcam_la_LIBADD = $(COMMON_LIBS) libqcam.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_pio.lo
-libricoh_la_SOURCES = ricoh.c ricoh.h
-libricoh_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ricoh
-nodist_libsane_ricoh_la_SOURCES = ricoh-s.c
-libsane_ricoh_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=ricoh
-libsane_ricoh_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_ricoh_la_LIBADD = $(COMMON_LIBS) libricoh.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-librts8891_la_SOURCES = rts8891.c rts8891.h rts88xx_lib.c rts88xx_lib.h
-librts8891_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=rts8891
-nodist_libsane_rts8891_la_SOURCES = rts8891-s.c
-libsane_rts8891_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=rts8891
-libsane_rts8891_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_rts8891_la_LIBADD = $(COMMON_LIBS) librts8891.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_scsi.lo ../sanei/sanei_usb.lo $(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS) $(RESMGR_LIBS)
-libs9036_la_SOURCES = s9036.c s9036.h
-libs9036_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=s9036
-nodist_libsane_s9036_la_SOURCES = s9036-s.c
-libsane_s9036_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=s9036
-libsane_s9036_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_s9036_la_LIBADD = $(COMMON_LIBS) libs9036.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libsceptre_la_SOURCES = sceptre.c sceptre.h
-libsceptre_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sceptre
-nodist_libsane_sceptre_la_SOURCES = sceptre-s.c
-libsane_sceptre_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sceptre
-libsane_sceptre_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_sceptre_la_LIBADD = $(COMMON_LIBS) libsceptre.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libsharp_la_SOURCES = sharp.c sharp.h
-libsharp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sharp
-nodist_libsane_sharp_la_SOURCES = sharp-s.c
-libsane_sharp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sharp
-libsane_sharp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_sharp_la_LIBADD = $(COMMON_LIBS) libsharp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(RESMGR_LIBS)
-libsm3600_la_SOURCES = sm3600.c sm3600.h
-libsm3600_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sm3600
-nodist_libsane_sm3600_la_SOURCES = sm3600-s.c
-libsane_sm3600_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sm3600
-libsane_sm3600_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_sm3600_la_LIBADD = $(COMMON_LIBS) libsm3600.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libsm3840_la_SOURCES = sm3840.c sm3840.h sm3840_params.h
-libsm3840_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sm3840
-nodist_libsane_sm3840_la_SOURCES = sm3840-s.c
-libsane_sm3840_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sm3840
-libsane_sm3840_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_sm3840_la_LIBADD = $(COMMON_LIBS) libsm3840.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libsnapscan_la_SOURCES = snapscan.c snapscan.h
-libsnapscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=snapscan
-nodist_libsane_snapscan_la_SOURCES = snapscan-s.c
-libsane_snapscan_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=snapscan
-libsane_snapscan_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_snapscan_la_LIBADD = $(COMMON_LIBS) libsnapscan.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libsp15c_la_SOURCES = sp15c.c sp15c.h sp15c-scsi.h
-libsp15c_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sp15c
-nodist_libsane_sp15c_la_SOURCES = sp15c-s.c
-libsane_sp15c_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=sp15c
-libsane_sp15c_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_sp15c_la_LIBADD = $(COMMON_LIBS) libsp15c.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libst400_la_SOURCES = st400.c st400.h
-libst400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=st400
-nodist_libsane_st400_la_SOURCES = st400-s.c ../sanei/sanei_scsi.lo
-libsane_st400_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=st400
-libsane_st400_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_st400_la_LIBADD = $(COMMON_LIBS) libst400.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libstv680_la_SOURCES = stv680.c stv680.h
-libstv680_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=stv680
-nodist_libsane_stv680_la_SOURCES = stv680-s.c
-libsane_stv680_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=stv680
-libsane_stv680_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_stv680_la_LIBADD = $(COMMON_LIBS) libstv680.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo $(USB_LIBS) $(RESMGR_LIBS)
-libtamarack_la_SOURCES = tamarack.c tamarack.h
-libtamarack_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=tamarack
-nodist_libsane_tamarack_la_SOURCES = tamarack-s.c
-libsane_tamarack_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=tamarack
-libsane_tamarack_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_tamarack_la_LIBADD = $(COMMON_LIBS) libtamarack.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libtest_la_SOURCES = test.c test.h
-libtest_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=test
-nodist_libsane_test_la_SOURCES = test-s.c
-libsane_test_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=test
-libsane_test_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_test_la_LIBADD = $(COMMON_LIBS) libtest.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_thread.lo $(PTHREAD_LIBS)
-libteco1_la_SOURCES = teco1.c teco1.h
-libteco1_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco1
-nodist_libsane_teco1_la_SOURCES = teco1-s.c
-libsane_teco1_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco1
-libsane_teco1_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_teco1_la_LIBADD = $(COMMON_LIBS) libteco1.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libteco2_la_SOURCES = teco2.c teco2.h
-libteco2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco2
-nodist_libsane_teco2_la_SOURCES = teco2-s.c
-libsane_teco2_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco2
-libsane_teco2_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_teco2_la_LIBADD = $(COMMON_LIBS) libteco2.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libteco3_la_SOURCES = teco3.c teco3.h
-libteco3_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco3
-nodist_libsane_teco3_la_SOURCES = teco3-s.c
-libsane_teco3_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=teco3
-libsane_teco3_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_teco3_la_LIBADD = $(COMMON_LIBS) libteco3.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_scsi.lo $(SCSI_LIBS) $(RESMGR_LIBS)
-libu12_la_SOURCES = u12.c u12.h
-libu12_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=u12
-nodist_libsane_u12_la_SOURCES = u12-s.c
-libsane_u12_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=u12
-libsane_u12_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_u12_la_LIBADD = $(COMMON_LIBS) libu12.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libumax_la_SOURCES = umax.c umax.h
-libumax_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax
-nodist_libsane_umax_la_SOURCES = umax-s.c
-libsane_umax_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax
-libsane_umax_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_umax_la_LIBADD = $(COMMON_LIBS) libumax.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_thread.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo $(MATH_LIB) $(SCSI_LIBS) $(USB_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-libumax1220u_la_SOURCES = umax1220u.c
-libumax1220u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax1220u
-nodist_libsane_umax1220u_la_SOURCES = umax1220u-s.c
-libsane_umax1220u_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax1220u
-libsane_umax1220u_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_umax1220u_la_LIBADD = $(COMMON_LIBS) libumax1220u.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_usb.lo ../sanei/sanei_pv8630.lo $(MATH_LIB) $(USB_LIBS) $(RESMGR_LIBS)
-libumax_pp_la_SOURCES = umax_pp.c umax_pp.h umax_pp_low.c umax_pp_low.h umax_pp_mid.c umax_pp_mid.h
-libumax_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax_pp
-nodist_libsane_umax_pp_la_SOURCES = umax_pp-s.c
-libsane_umax_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=umax_pp
-libsane_umax_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_umax_pp_la_LIBADD = $(COMMON_LIBS) libumax_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(MATH_LIB)
-libv4l_la_SOURCES = v4l.c v4l.h v4l-frequencies.h
-libv4l_la_CPPFLAGS = $(AM_CPPFLAGS) $(LIBV4L_CFLAGS) -DBACKEND_NAME=v4l
-nodist_libsane_v4l_la_SOURCES = v4l-s.c
-libsane_v4l_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=v4l
-libsane_v4l_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_v4l_la_LIBADD = $(COMMON_LIBS) libv4l.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(LIBV4L_LIBS)
-libxerox_mfp_la_SOURCES = xerox_mfp.c xerox_mfp-usb.c xerox_mfp-tcp.c xerox_mfp.h
-libxerox_mfp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=xerox_mfp
-nodist_libsane_xerox_mfp_la_SOURCES = xerox_mfp-s.c
-libsane_xerox_mfp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=xerox_mfp
-libsane_xerox_mfp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_xerox_mfp_la_LIBADD = $(COMMON_LIBS) libxerox_mfp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo @SANEI_SANEI_JPEG_LO@ $(JPEG_LIBS) ../sanei/sanei_usb.lo ../sanei/sanei_tcp.lo $(MATH_LIB) $(SOCKET_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
-libdll_preload_la_SOURCES = dll.c
-libdll_preload_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll -DENABLE_PRELOAD
-libdll_la_SOURCES = dll.c
-libdll_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
-BUILT_SOURCES = dll-preload.h
-nodist_libsane_dll_la_SOURCES = dll-s.c
-libsane_dll_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
-libsane_dll_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_dll_la_LIBADD = $(COMMON_LIBS) libdll.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo $(DL_LIBS)
-
-# libsane.la and libsane-dll.la are the same thing except for
-# the addition of backends listed by PRELOADABLE_BACKENDS that are
-# statically linked in.
-# Also, libsane.la goes into $(libdir) where as all libsane-*
-# (including libsane-dll.la) go into $(libdir)/sane
-
-# FIXME: Since we are throwing in the kitchen sink, might as
-# well link in ../sanei/libsanei.la instead. But currently,
-# libsanei.la is linking in sanei_auth which requires md5.
-# Shipping md5 could cause symbol conflicts with commonly used
-# md5 external libraries. Either need to prefix md5 with sanei_
-# (see liblib.la and snprintf), or move sanei_auth outside
-# of libsanei.
-#
-# FIXME: This is linking in every possible external library because there
-# is the off chance user is using PRELOADABLE_BACKENDS that may need
-# them. Since standard mode is to only have the dll backend, its a waste.
-# Need to update configure to build a list of only what needs to go into
-# LIBADD based on whats being preloaded.
-nodist_libsane_la_SOURCES = dll-s.c
-libsane_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
-libsane_la_LDFLAGS = $(DIST_LIBS_LDFLAGS)
-libsane_la_LIBADD = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(DL_LIBS) $(LIBV4L_LIBS) $(MATH_LIB) $(IEEE1284_LIBS) $(TIFF_LIBS) $(JPEG_LIBS) $(GPHOTO2_LIBS) $(SOCKET_LIBS) $(USB_LIBS) $(AVAHI_LIBS) $(SCSI_LIBS) $(PTHREAD_LIBS) $(RESMGR_LIBS)
-
-# WARNING: Automake is getting this wrong so have to do it ourselves.
-libsane_la_DEPENDENCIES = $(COMMON_LIBS) $(PRELOADABLE_BACKENDS_ENABLED) libdll_preload.la sane_strstatus.lo ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo ../sanei/sanei_config2.lo ../sanei/sanei_usb.lo ../sanei/sanei_scsi.lo ../sanei/sanei_pv8630.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo ../sanei/sanei_lm983x.lo ../sanei/sanei_access.lo ../sanei/sanei_net.lo ../sanei/sanei_wire.lo ../sanei/sanei_codec_bin.lo ../sanei/sanei_pa4s2.lo ../sanei/sanei_ab306.lo ../sanei/sanei_pio.lo ../sanei/sanei_tcp.lo ../sanei/sanei_udp.lo ../sanei/sanei_magic.lo $(SANEI_SANEI_JPEG_LO)
-all: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .conf.in .conf .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu backend/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu backend/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
- }
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-install-sanelibLTLIBRARIES: $(sanelib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(sanelib_LTLIBRARIES)'; test -n "$(sanelibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(sanelibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(sanelibdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(sanelibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(sanelibdir)"; \
- }
-
-uninstall-sanelibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(sanelib_LTLIBRARIES)'; test -n "$(sanelibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(sanelibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(sanelibdir)/$$f"; \
- done
-
-clean-sanelibLTLIBRARIES:
- -test -z "$(sanelib_LTLIBRARIES)" || rm -f $(sanelib_LTLIBRARIES)
- @list='$(sanelib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-libabaton.la: $(libabaton_la_OBJECTS) $(libabaton_la_DEPENDENCIES) $(EXTRA_libabaton_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libabaton_la_OBJECTS) $(libabaton_la_LIBADD) $(LIBS)
-
-libagfafocus.la: $(libagfafocus_la_OBJECTS) $(libagfafocus_la_DEPENDENCIES) $(EXTRA_libagfafocus_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libagfafocus_la_OBJECTS) $(libagfafocus_la_LIBADD) $(LIBS)
-
-libapple.la: $(libapple_la_OBJECTS) $(libapple_la_DEPENDENCIES) $(EXTRA_libapple_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libapple_la_OBJECTS) $(libapple_la_LIBADD) $(LIBS)
-
-libartec.la: $(libartec_la_OBJECTS) $(libartec_la_DEPENDENCIES) $(EXTRA_libartec_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libartec_la_OBJECTS) $(libartec_la_LIBADD) $(LIBS)
-
-libartec_eplus48u.la: $(libartec_eplus48u_la_OBJECTS) $(libartec_eplus48u_la_DEPENDENCIES) $(EXTRA_libartec_eplus48u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libartec_eplus48u_la_OBJECTS) $(libartec_eplus48u_la_LIBADD) $(LIBS)
-
-libas6e.la: $(libas6e_la_OBJECTS) $(libas6e_la_DEPENDENCIES) $(EXTRA_libas6e_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libas6e_la_OBJECTS) $(libas6e_la_LIBADD) $(LIBS)
-
-libavision.la: $(libavision_la_OBJECTS) $(libavision_la_DEPENDENCIES) $(EXTRA_libavision_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libavision_la_OBJECTS) $(libavision_la_LIBADD) $(LIBS)
-
-libbh.la: $(libbh_la_OBJECTS) $(libbh_la_DEPENDENCIES) $(EXTRA_libbh_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libbh_la_OBJECTS) $(libbh_la_LIBADD) $(LIBS)
-
-libcanon.la: $(libcanon_la_OBJECTS) $(libcanon_la_DEPENDENCIES) $(EXTRA_libcanon_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcanon_la_OBJECTS) $(libcanon_la_LIBADD) $(LIBS)
-
-libcanon630u.la: $(libcanon630u_la_OBJECTS) $(libcanon630u_la_DEPENDENCIES) $(EXTRA_libcanon630u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcanon630u_la_OBJECTS) $(libcanon630u_la_LIBADD) $(LIBS)
-
-libcanon_dr.la: $(libcanon_dr_la_OBJECTS) $(libcanon_dr_la_DEPENDENCIES) $(EXTRA_libcanon_dr_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcanon_dr_la_OBJECTS) $(libcanon_dr_la_LIBADD) $(LIBS)
-
-libcanon_pp.la: $(libcanon_pp_la_OBJECTS) $(libcanon_pp_la_DEPENDENCIES) $(EXTRA_libcanon_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcanon_pp_la_OBJECTS) $(libcanon_pp_la_LIBADD) $(LIBS)
-
-libcardscan.la: $(libcardscan_la_OBJECTS) $(libcardscan_la_DEPENDENCIES) $(EXTRA_libcardscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcardscan_la_OBJECTS) $(libcardscan_la_LIBADD) $(LIBS)
-
-libcoolscan.la: $(libcoolscan_la_OBJECTS) $(libcoolscan_la_DEPENDENCIES) $(EXTRA_libcoolscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcoolscan_la_OBJECTS) $(libcoolscan_la_LIBADD) $(LIBS)
-
-libcoolscan2.la: $(libcoolscan2_la_OBJECTS) $(libcoolscan2_la_DEPENDENCIES) $(EXTRA_libcoolscan2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcoolscan2_la_OBJECTS) $(libcoolscan2_la_LIBADD) $(LIBS)
-
-libcoolscan3.la: $(libcoolscan3_la_OBJECTS) $(libcoolscan3_la_DEPENDENCIES) $(EXTRA_libcoolscan3_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libcoolscan3_la_OBJECTS) $(libcoolscan3_la_LIBADD) $(LIBS)
-
-libdc210.la: $(libdc210_la_OBJECTS) $(libdc210_la_DEPENDENCIES) $(EXTRA_libdc210_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdc210_la_OBJECTS) $(libdc210_la_LIBADD) $(LIBS)
-
-libdc240.la: $(libdc240_la_OBJECTS) $(libdc240_la_DEPENDENCIES) $(EXTRA_libdc240_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdc240_la_OBJECTS) $(libdc240_la_LIBADD) $(LIBS)
-
-libdc25.la: $(libdc25_la_OBJECTS) $(libdc25_la_DEPENDENCIES) $(EXTRA_libdc25_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdc25_la_OBJECTS) $(libdc25_la_LIBADD) $(LIBS)
-
-libdell1600n_net.la: $(libdell1600n_net_la_OBJECTS) $(libdell1600n_net_la_DEPENDENCIES) $(EXTRA_libdell1600n_net_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdell1600n_net_la_OBJECTS) $(libdell1600n_net_la_LIBADD) $(LIBS)
-
-libdll.la: $(libdll_la_OBJECTS) $(libdll_la_DEPENDENCIES) $(EXTRA_libdll_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdll_la_OBJECTS) $(libdll_la_LIBADD) $(LIBS)
-
-libdll_preload.la: $(libdll_preload_la_OBJECTS) $(libdll_preload_la_DEPENDENCIES) $(EXTRA_libdll_preload_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdll_preload_la_OBJECTS) $(libdll_preload_la_LIBADD) $(LIBS)
-
-libdmc.la: $(libdmc_la_OBJECTS) $(libdmc_la_DEPENDENCIES) $(EXTRA_libdmc_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libdmc_la_OBJECTS) $(libdmc_la_LIBADD) $(LIBS)
-
-libepjitsu.la: $(libepjitsu_la_OBJECTS) $(libepjitsu_la_DEPENDENCIES) $(EXTRA_libepjitsu_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libepjitsu_la_OBJECTS) $(libepjitsu_la_LIBADD) $(LIBS)
-
-libepson.la: $(libepson_la_OBJECTS) $(libepson_la_DEPENDENCIES) $(EXTRA_libepson_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libepson_la_OBJECTS) $(libepson_la_LIBADD) $(LIBS)
-
-libepson2.la: $(libepson2_la_OBJECTS) $(libepson2_la_DEPENDENCIES) $(EXTRA_libepson2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libepson2_la_OBJECTS) $(libepson2_la_LIBADD) $(LIBS)
-
-libepsonds.la: $(libepsonds_la_OBJECTS) $(libepsonds_la_DEPENDENCIES) $(EXTRA_libepsonds_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libepsonds_la_OBJECTS) $(libepsonds_la_LIBADD) $(LIBS)
-
-libfujitsu.la: $(libfujitsu_la_OBJECTS) $(libfujitsu_la_DEPENDENCIES) $(EXTRA_libfujitsu_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libfujitsu_la_OBJECTS) $(libfujitsu_la_LIBADD) $(LIBS)
-
-libgenesys.la: $(libgenesys_la_OBJECTS) $(libgenesys_la_DEPENDENCIES) $(EXTRA_libgenesys_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libgenesys_la_OBJECTS) $(libgenesys_la_LIBADD) $(LIBS)
-
-libgphoto2_i.la: $(libgphoto2_i_la_OBJECTS) $(libgphoto2_i_la_DEPENDENCIES) $(EXTRA_libgphoto2_i_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libgphoto2_i_la_OBJECTS) $(libgphoto2_i_la_LIBADD) $(LIBS)
-
-libgt68xx.la: $(libgt68xx_la_OBJECTS) $(libgt68xx_la_DEPENDENCIES) $(EXTRA_libgt68xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libgt68xx_la_OBJECTS) $(libgt68xx_la_LIBADD) $(LIBS)
-
-libhp.la: $(libhp_la_OBJECTS) $(libhp_la_DEPENDENCIES) $(EXTRA_libhp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp_la_OBJECTS) $(libhp_la_LIBADD) $(LIBS)
-
-libhp3500.la: $(libhp3500_la_OBJECTS) $(libhp3500_la_DEPENDENCIES) $(EXTRA_libhp3500_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp3500_la_OBJECTS) $(libhp3500_la_LIBADD) $(LIBS)
-
-libhp3900.la: $(libhp3900_la_OBJECTS) $(libhp3900_la_DEPENDENCIES) $(EXTRA_libhp3900_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp3900_la_OBJECTS) $(libhp3900_la_LIBADD) $(LIBS)
-
-libhp4200.la: $(libhp4200_la_OBJECTS) $(libhp4200_la_DEPENDENCIES) $(EXTRA_libhp4200_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp4200_la_OBJECTS) $(libhp4200_la_LIBADD) $(LIBS)
-
-libhp5400.la: $(libhp5400_la_OBJECTS) $(libhp5400_la_DEPENDENCIES) $(EXTRA_libhp5400_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp5400_la_OBJECTS) $(libhp5400_la_LIBADD) $(LIBS)
-
-libhp5590.la: $(libhp5590_la_OBJECTS) $(libhp5590_la_DEPENDENCIES) $(EXTRA_libhp5590_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhp5590_la_OBJECTS) $(libhp5590_la_LIBADD) $(LIBS)
-
-libhpljm1005.la: $(libhpljm1005_la_OBJECTS) $(libhpljm1005_la_DEPENDENCIES) $(EXTRA_libhpljm1005_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhpljm1005_la_OBJECTS) $(libhpljm1005_la_LIBADD) $(LIBS)
-
-libhpsj5s.la: $(libhpsj5s_la_OBJECTS) $(libhpsj5s_la_DEPENDENCIES) $(EXTRA_libhpsj5s_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhpsj5s_la_OBJECTS) $(libhpsj5s_la_LIBADD) $(LIBS)
-
-libhs2p.la: $(libhs2p_la_OBJECTS) $(libhs2p_la_DEPENDENCIES) $(EXTRA_libhs2p_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libhs2p_la_OBJECTS) $(libhs2p_la_LIBADD) $(LIBS)
-
-libibm.la: $(libibm_la_OBJECTS) $(libibm_la_DEPENDENCIES) $(EXTRA_libibm_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libibm_la_OBJECTS) $(libibm_la_LIBADD) $(LIBS)
-
-libkodak.la: $(libkodak_la_OBJECTS) $(libkodak_la_DEPENDENCIES) $(EXTRA_libkodak_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libkodak_la_OBJECTS) $(libkodak_la_LIBADD) $(LIBS)
-
-libkodakaio.la: $(libkodakaio_la_OBJECTS) $(libkodakaio_la_DEPENDENCIES) $(EXTRA_libkodakaio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libkodakaio_la_OBJECTS) $(libkodakaio_la_LIBADD) $(LIBS)
-
-libkvs1025.la: $(libkvs1025_la_OBJECTS) $(libkvs1025_la_DEPENDENCIES) $(EXTRA_libkvs1025_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libkvs1025_la_OBJECTS) $(libkvs1025_la_LIBADD) $(LIBS)
-
-libkvs20xx.la: $(libkvs20xx_la_OBJECTS) $(libkvs20xx_la_DEPENDENCIES) $(EXTRA_libkvs20xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libkvs20xx_la_OBJECTS) $(libkvs20xx_la_LIBADD) $(LIBS)
-
-libkvs40xx.la: $(libkvs40xx_la_OBJECTS) $(libkvs40xx_la_DEPENDENCIES) $(EXTRA_libkvs40xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libkvs40xx_la_OBJECTS) $(libkvs40xx_la_LIBADD) $(LIBS)
-
-libleo.la: $(libleo_la_OBJECTS) $(libleo_la_DEPENDENCIES) $(EXTRA_libleo_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libleo_la_OBJECTS) $(libleo_la_LIBADD) $(LIBS)
-
-liblexmark.la: $(liblexmark_la_OBJECTS) $(liblexmark_la_DEPENDENCIES) $(EXTRA_liblexmark_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(liblexmark_la_OBJECTS) $(liblexmark_la_LIBADD) $(LIBS)
-
-libma1509.la: $(libma1509_la_OBJECTS) $(libma1509_la_DEPENDENCIES) $(EXTRA_libma1509_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libma1509_la_OBJECTS) $(libma1509_la_LIBADD) $(LIBS)
-
-libmagicolor.la: $(libmagicolor_la_OBJECTS) $(libmagicolor_la_DEPENDENCIES) $(EXTRA_libmagicolor_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmagicolor_la_OBJECTS) $(libmagicolor_la_LIBADD) $(LIBS)
-
-libmatsushita.la: $(libmatsushita_la_OBJECTS) $(libmatsushita_la_DEPENDENCIES) $(EXTRA_libmatsushita_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmatsushita_la_OBJECTS) $(libmatsushita_la_LIBADD) $(LIBS)
-
-libmicrotek.la: $(libmicrotek_la_OBJECTS) $(libmicrotek_la_DEPENDENCIES) $(EXTRA_libmicrotek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmicrotek_la_OBJECTS) $(libmicrotek_la_LIBADD) $(LIBS)
-
-libmicrotek2.la: $(libmicrotek2_la_OBJECTS) $(libmicrotek2_la_DEPENDENCIES) $(EXTRA_libmicrotek2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmicrotek2_la_OBJECTS) $(libmicrotek2_la_LIBADD) $(LIBS)
-
-libmustek.la: $(libmustek_la_OBJECTS) $(libmustek_la_DEPENDENCIES) $(EXTRA_libmustek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmustek_la_OBJECTS) $(libmustek_la_LIBADD) $(LIBS)
-
-libmustek_pp.la: $(libmustek_pp_la_OBJECTS) $(libmustek_pp_la_DEPENDENCIES) $(EXTRA_libmustek_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmustek_pp_la_OBJECTS) $(libmustek_pp_la_LIBADD) $(LIBS)
-
-libmustek_usb.la: $(libmustek_usb_la_OBJECTS) $(libmustek_usb_la_DEPENDENCIES) $(EXTRA_libmustek_usb_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmustek_usb_la_OBJECTS) $(libmustek_usb_la_LIBADD) $(LIBS)
-
-libmustek_usb2.la: $(libmustek_usb2_la_OBJECTS) $(libmustek_usb2_la_DEPENDENCIES) $(EXTRA_libmustek_usb2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libmustek_usb2_la_OBJECTS) $(libmustek_usb2_la_LIBADD) $(LIBS)
-
-libnec.la: $(libnec_la_OBJECTS) $(libnec_la_DEPENDENCIES) $(EXTRA_libnec_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libnec_la_OBJECTS) $(libnec_la_LIBADD) $(LIBS)
-
-libnet.la: $(libnet_la_OBJECTS) $(libnet_la_DEPENDENCIES) $(EXTRA_libnet_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libnet_la_OBJECTS) $(libnet_la_LIBADD) $(LIBS)
-
-libniash.la: $(libniash_la_OBJECTS) $(libniash_la_DEPENDENCIES) $(EXTRA_libniash_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libniash_la_OBJECTS) $(libniash_la_LIBADD) $(LIBS)
-
-libp5.la: $(libp5_la_OBJECTS) $(libp5_la_DEPENDENCIES) $(EXTRA_libp5_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libp5_la_OBJECTS) $(libp5_la_LIBADD) $(LIBS)
-
-libpie.la: $(libpie_la_OBJECTS) $(libpie_la_DEPENDENCIES) $(EXTRA_libpie_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libpie_la_OBJECTS) $(libpie_la_LIBADD) $(LIBS)
-
-libpieusb.la: $(libpieusb_la_OBJECTS) $(libpieusb_la_DEPENDENCIES) $(EXTRA_libpieusb_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libpieusb_la_OBJECTS) $(libpieusb_la_LIBADD) $(LIBS)
-
-libpint.la: $(libpint_la_OBJECTS) $(libpint_la_DEPENDENCIES) $(EXTRA_libpint_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libpint_la_OBJECTS) $(libpint_la_LIBADD) $(LIBS)
-
-libpixma.la: $(libpixma_la_OBJECTS) $(libpixma_la_DEPENDENCIES) $(EXTRA_libpixma_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libpixma_la_OBJECTS) $(libpixma_la_LIBADD) $(LIBS)
-
-libplustek.la: $(libplustek_la_OBJECTS) $(libplustek_la_DEPENDENCIES) $(EXTRA_libplustek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libplustek_la_OBJECTS) $(libplustek_la_LIBADD) $(LIBS)
-
-libplustek_pp.la: $(libplustek_pp_la_OBJECTS) $(libplustek_pp_la_DEPENDENCIES) $(EXTRA_libplustek_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libplustek_pp_la_OBJECTS) $(libplustek_pp_la_LIBADD) $(LIBS)
-
-libpnm.la: $(libpnm_la_OBJECTS) $(libpnm_la_DEPENDENCIES) $(EXTRA_libpnm_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libpnm_la_OBJECTS) $(libpnm_la_LIBADD) $(LIBS)
-
-libqcam.la: $(libqcam_la_OBJECTS) $(libqcam_la_DEPENDENCIES) $(EXTRA_libqcam_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libqcam_la_OBJECTS) $(libqcam_la_LIBADD) $(LIBS)
-
-libricoh.la: $(libricoh_la_OBJECTS) $(libricoh_la_DEPENDENCIES) $(EXTRA_libricoh_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libricoh_la_OBJECTS) $(libricoh_la_LIBADD) $(LIBS)
-
-librts8891.la: $(librts8891_la_OBJECTS) $(librts8891_la_DEPENDENCIES) $(EXTRA_librts8891_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(librts8891_la_OBJECTS) $(librts8891_la_LIBADD) $(LIBS)
-
-libs9036.la: $(libs9036_la_OBJECTS) $(libs9036_la_DEPENDENCIES) $(EXTRA_libs9036_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libs9036_la_OBJECTS) $(libs9036_la_LIBADD) $(LIBS)
-
-libsane-abaton.la: $(libsane_abaton_la_OBJECTS) $(libsane_abaton_la_DEPENDENCIES) $(EXTRA_libsane_abaton_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_abaton_la_LINK) $(libsane_abaton_la_OBJECTS) $(libsane_abaton_la_LIBADD) $(LIBS)
-
-libsane-agfafocus.la: $(libsane_agfafocus_la_OBJECTS) $(libsane_agfafocus_la_DEPENDENCIES) $(EXTRA_libsane_agfafocus_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_agfafocus_la_LINK) $(libsane_agfafocus_la_OBJECTS) $(libsane_agfafocus_la_LIBADD) $(LIBS)
-
-libsane-apple.la: $(libsane_apple_la_OBJECTS) $(libsane_apple_la_DEPENDENCIES) $(EXTRA_libsane_apple_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_apple_la_LINK) $(libsane_apple_la_OBJECTS) $(libsane_apple_la_LIBADD) $(LIBS)
-
-libsane-artec.la: $(libsane_artec_la_OBJECTS) $(libsane_artec_la_DEPENDENCIES) $(EXTRA_libsane_artec_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_artec_la_LINK) $(libsane_artec_la_OBJECTS) $(libsane_artec_la_LIBADD) $(LIBS)
-
-libsane-artec_eplus48u.la: $(libsane_artec_eplus48u_la_OBJECTS) $(libsane_artec_eplus48u_la_DEPENDENCIES) $(EXTRA_libsane_artec_eplus48u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_artec_eplus48u_la_LINK) $(libsane_artec_eplus48u_la_OBJECTS) $(libsane_artec_eplus48u_la_LIBADD) $(LIBS)
-
-libsane-as6e.la: $(libsane_as6e_la_OBJECTS) $(libsane_as6e_la_DEPENDENCIES) $(EXTRA_libsane_as6e_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_as6e_la_LINK) $(libsane_as6e_la_OBJECTS) $(libsane_as6e_la_LIBADD) $(LIBS)
-
-libsane-avision.la: $(libsane_avision_la_OBJECTS) $(libsane_avision_la_DEPENDENCIES) $(EXTRA_libsane_avision_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_avision_la_LINK) $(libsane_avision_la_OBJECTS) $(libsane_avision_la_LIBADD) $(LIBS)
-
-libsane-bh.la: $(libsane_bh_la_OBJECTS) $(libsane_bh_la_DEPENDENCIES) $(EXTRA_libsane_bh_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_bh_la_LINK) $(libsane_bh_la_OBJECTS) $(libsane_bh_la_LIBADD) $(LIBS)
-
-libsane-canon.la: $(libsane_canon_la_OBJECTS) $(libsane_canon_la_DEPENDENCIES) $(EXTRA_libsane_canon_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_canon_la_LINK) $(libsane_canon_la_OBJECTS) $(libsane_canon_la_LIBADD) $(LIBS)
-
-libsane-canon630u.la: $(libsane_canon630u_la_OBJECTS) $(libsane_canon630u_la_DEPENDENCIES) $(EXTRA_libsane_canon630u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_canon630u_la_LINK) $(libsane_canon630u_la_OBJECTS) $(libsane_canon630u_la_LIBADD) $(LIBS)
-
-libsane-canon_dr.la: $(libsane_canon_dr_la_OBJECTS) $(libsane_canon_dr_la_DEPENDENCIES) $(EXTRA_libsane_canon_dr_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_canon_dr_la_LINK) $(libsane_canon_dr_la_OBJECTS) $(libsane_canon_dr_la_LIBADD) $(LIBS)
-
-libsane-canon_pp.la: $(libsane_canon_pp_la_OBJECTS) $(libsane_canon_pp_la_DEPENDENCIES) $(EXTRA_libsane_canon_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_canon_pp_la_LINK) $(libsane_canon_pp_la_OBJECTS) $(libsane_canon_pp_la_LIBADD) $(LIBS)
-
-libsane-cardscan.la: $(libsane_cardscan_la_OBJECTS) $(libsane_cardscan_la_DEPENDENCIES) $(EXTRA_libsane_cardscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_cardscan_la_LINK) $(libsane_cardscan_la_OBJECTS) $(libsane_cardscan_la_LIBADD) $(LIBS)
-
-libsane-coolscan.la: $(libsane_coolscan_la_OBJECTS) $(libsane_coolscan_la_DEPENDENCIES) $(EXTRA_libsane_coolscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_coolscan_la_LINK) $(libsane_coolscan_la_OBJECTS) $(libsane_coolscan_la_LIBADD) $(LIBS)
-
-libsane-coolscan2.la: $(libsane_coolscan2_la_OBJECTS) $(libsane_coolscan2_la_DEPENDENCIES) $(EXTRA_libsane_coolscan2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_coolscan2_la_LINK) $(libsane_coolscan2_la_OBJECTS) $(libsane_coolscan2_la_LIBADD) $(LIBS)
-
-libsane-coolscan3.la: $(libsane_coolscan3_la_OBJECTS) $(libsane_coolscan3_la_DEPENDENCIES) $(EXTRA_libsane_coolscan3_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_coolscan3_la_LINK) $(libsane_coolscan3_la_OBJECTS) $(libsane_coolscan3_la_LIBADD) $(LIBS)
-
-libsane-dc210.la: $(libsane_dc210_la_OBJECTS) $(libsane_dc210_la_DEPENDENCIES) $(EXTRA_libsane_dc210_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dc210_la_LINK) $(libsane_dc210_la_OBJECTS) $(libsane_dc210_la_LIBADD) $(LIBS)
-
-libsane-dc240.la: $(libsane_dc240_la_OBJECTS) $(libsane_dc240_la_DEPENDENCIES) $(EXTRA_libsane_dc240_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dc240_la_LINK) $(libsane_dc240_la_OBJECTS) $(libsane_dc240_la_LIBADD) $(LIBS)
-
-libsane-dc25.la: $(libsane_dc25_la_OBJECTS) $(libsane_dc25_la_DEPENDENCIES) $(EXTRA_libsane_dc25_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dc25_la_LINK) $(libsane_dc25_la_OBJECTS) $(libsane_dc25_la_LIBADD) $(LIBS)
-
-libsane-dell1600n_net.la: $(libsane_dell1600n_net_la_OBJECTS) $(libsane_dell1600n_net_la_DEPENDENCIES) $(EXTRA_libsane_dell1600n_net_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dell1600n_net_la_LINK) $(libsane_dell1600n_net_la_OBJECTS) $(libsane_dell1600n_net_la_LIBADD) $(LIBS)
-
-libsane-dll.la: $(libsane_dll_la_OBJECTS) $(libsane_dll_la_DEPENDENCIES) $(EXTRA_libsane_dll_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dll_la_LINK) -rpath $(sanelibdir) $(libsane_dll_la_OBJECTS) $(libsane_dll_la_LIBADD) $(LIBS)
-
-libsane-dmc.la: $(libsane_dmc_la_OBJECTS) $(libsane_dmc_la_DEPENDENCIES) $(EXTRA_libsane_dmc_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_dmc_la_LINK) $(libsane_dmc_la_OBJECTS) $(libsane_dmc_la_LIBADD) $(LIBS)
-
-libsane-epjitsu.la: $(libsane_epjitsu_la_OBJECTS) $(libsane_epjitsu_la_DEPENDENCIES) $(EXTRA_libsane_epjitsu_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_epjitsu_la_LINK) $(libsane_epjitsu_la_OBJECTS) $(libsane_epjitsu_la_LIBADD) $(LIBS)
-
-libsane-epson.la: $(libsane_epson_la_OBJECTS) $(libsane_epson_la_DEPENDENCIES) $(EXTRA_libsane_epson_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_epson_la_LINK) $(libsane_epson_la_OBJECTS) $(libsane_epson_la_LIBADD) $(LIBS)
-
-libsane-epson2.la: $(libsane_epson2_la_OBJECTS) $(libsane_epson2_la_DEPENDENCIES) $(EXTRA_libsane_epson2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_epson2_la_LINK) $(libsane_epson2_la_OBJECTS) $(libsane_epson2_la_LIBADD) $(LIBS)
-
-libsane-epsonds.la: $(libsane_epsonds_la_OBJECTS) $(libsane_epsonds_la_DEPENDENCIES) $(EXTRA_libsane_epsonds_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_epsonds_la_LINK) $(libsane_epsonds_la_OBJECTS) $(libsane_epsonds_la_LIBADD) $(LIBS)
-
-libsane-fujitsu.la: $(libsane_fujitsu_la_OBJECTS) $(libsane_fujitsu_la_DEPENDENCIES) $(EXTRA_libsane_fujitsu_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_fujitsu_la_LINK) $(libsane_fujitsu_la_OBJECTS) $(libsane_fujitsu_la_LIBADD) $(LIBS)
-
-libsane-genesys.la: $(libsane_genesys_la_OBJECTS) $(libsane_genesys_la_DEPENDENCIES) $(EXTRA_libsane_genesys_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_genesys_la_LINK) $(libsane_genesys_la_OBJECTS) $(libsane_genesys_la_LIBADD) $(LIBS)
-
-libsane-gphoto2.la: $(libsane_gphoto2_la_OBJECTS) $(libsane_gphoto2_la_DEPENDENCIES) $(EXTRA_libsane_gphoto2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_gphoto2_la_LINK) $(libsane_gphoto2_la_OBJECTS) $(libsane_gphoto2_la_LIBADD) $(LIBS)
-
-libsane-gt68xx.la: $(libsane_gt68xx_la_OBJECTS) $(libsane_gt68xx_la_DEPENDENCIES) $(EXTRA_libsane_gt68xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_gt68xx_la_LINK) $(libsane_gt68xx_la_OBJECTS) $(libsane_gt68xx_la_LIBADD) $(LIBS)
-
-libsane-hp.la: $(libsane_hp_la_OBJECTS) $(libsane_hp_la_DEPENDENCIES) $(EXTRA_libsane_hp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp_la_LINK) $(libsane_hp_la_OBJECTS) $(libsane_hp_la_LIBADD) $(LIBS)
-
-libsane-hp3500.la: $(libsane_hp3500_la_OBJECTS) $(libsane_hp3500_la_DEPENDENCIES) $(EXTRA_libsane_hp3500_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp3500_la_LINK) $(libsane_hp3500_la_OBJECTS) $(libsane_hp3500_la_LIBADD) $(LIBS)
-
-libsane-hp3900.la: $(libsane_hp3900_la_OBJECTS) $(libsane_hp3900_la_DEPENDENCIES) $(EXTRA_libsane_hp3900_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp3900_la_LINK) $(libsane_hp3900_la_OBJECTS) $(libsane_hp3900_la_LIBADD) $(LIBS)
-
-libsane-hp4200.la: $(libsane_hp4200_la_OBJECTS) $(libsane_hp4200_la_DEPENDENCIES) $(EXTRA_libsane_hp4200_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp4200_la_LINK) $(libsane_hp4200_la_OBJECTS) $(libsane_hp4200_la_LIBADD) $(LIBS)
-
-libsane-hp5400.la: $(libsane_hp5400_la_OBJECTS) $(libsane_hp5400_la_DEPENDENCIES) $(EXTRA_libsane_hp5400_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp5400_la_LINK) $(libsane_hp5400_la_OBJECTS) $(libsane_hp5400_la_LIBADD) $(LIBS)
-
-libsane-hp5590.la: $(libsane_hp5590_la_OBJECTS) $(libsane_hp5590_la_DEPENDENCIES) $(EXTRA_libsane_hp5590_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hp5590_la_LINK) $(libsane_hp5590_la_OBJECTS) $(libsane_hp5590_la_LIBADD) $(LIBS)
-
-libsane-hpljm1005.la: $(libsane_hpljm1005_la_OBJECTS) $(libsane_hpljm1005_la_DEPENDENCIES) $(EXTRA_libsane_hpljm1005_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hpljm1005_la_LINK) $(libsane_hpljm1005_la_OBJECTS) $(libsane_hpljm1005_la_LIBADD) $(LIBS)
-
-libsane-hpsj5s.la: $(libsane_hpsj5s_la_OBJECTS) $(libsane_hpsj5s_la_DEPENDENCIES) $(EXTRA_libsane_hpsj5s_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hpsj5s_la_LINK) $(libsane_hpsj5s_la_OBJECTS) $(libsane_hpsj5s_la_LIBADD) $(LIBS)
-
-libsane-hs2p.la: $(libsane_hs2p_la_OBJECTS) $(libsane_hs2p_la_DEPENDENCIES) $(EXTRA_libsane_hs2p_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_hs2p_la_LINK) $(libsane_hs2p_la_OBJECTS) $(libsane_hs2p_la_LIBADD) $(LIBS)
-
-libsane-ibm.la: $(libsane_ibm_la_OBJECTS) $(libsane_ibm_la_DEPENDENCIES) $(EXTRA_libsane_ibm_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_ibm_la_LINK) $(libsane_ibm_la_OBJECTS) $(libsane_ibm_la_LIBADD) $(LIBS)
-
-libsane-kodak.la: $(libsane_kodak_la_OBJECTS) $(libsane_kodak_la_DEPENDENCIES) $(EXTRA_libsane_kodak_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_kodak_la_LINK) $(libsane_kodak_la_OBJECTS) $(libsane_kodak_la_LIBADD) $(LIBS)
-
-libsane-kodakaio.la: $(libsane_kodakaio_la_OBJECTS) $(libsane_kodakaio_la_DEPENDENCIES) $(EXTRA_libsane_kodakaio_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_kodakaio_la_LINK) $(libsane_kodakaio_la_OBJECTS) $(libsane_kodakaio_la_LIBADD) $(LIBS)
-
-libsane-kvs1025.la: $(libsane_kvs1025_la_OBJECTS) $(libsane_kvs1025_la_DEPENDENCIES) $(EXTRA_libsane_kvs1025_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_kvs1025_la_LINK) $(libsane_kvs1025_la_OBJECTS) $(libsane_kvs1025_la_LIBADD) $(LIBS)
-
-libsane-kvs20xx.la: $(libsane_kvs20xx_la_OBJECTS) $(libsane_kvs20xx_la_DEPENDENCIES) $(EXTRA_libsane_kvs20xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_kvs20xx_la_LINK) $(libsane_kvs20xx_la_OBJECTS) $(libsane_kvs20xx_la_LIBADD) $(LIBS)
-
-libsane-kvs40xx.la: $(libsane_kvs40xx_la_OBJECTS) $(libsane_kvs40xx_la_DEPENDENCIES) $(EXTRA_libsane_kvs40xx_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_kvs40xx_la_LINK) $(libsane_kvs40xx_la_OBJECTS) $(libsane_kvs40xx_la_LIBADD) $(LIBS)
-
-libsane-leo.la: $(libsane_leo_la_OBJECTS) $(libsane_leo_la_DEPENDENCIES) $(EXTRA_libsane_leo_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_leo_la_LINK) $(libsane_leo_la_OBJECTS) $(libsane_leo_la_LIBADD) $(LIBS)
-
-libsane-lexmark.la: $(libsane_lexmark_la_OBJECTS) $(libsane_lexmark_la_DEPENDENCIES) $(EXTRA_libsane_lexmark_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_lexmark_la_LINK) $(libsane_lexmark_la_OBJECTS) $(libsane_lexmark_la_LIBADD) $(LIBS)
-
-libsane-ma1509.la: $(libsane_ma1509_la_OBJECTS) $(libsane_ma1509_la_DEPENDENCIES) $(EXTRA_libsane_ma1509_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_ma1509_la_LINK) $(libsane_ma1509_la_OBJECTS) $(libsane_ma1509_la_LIBADD) $(LIBS)
-
-libsane-magicolor.la: $(libsane_magicolor_la_OBJECTS) $(libsane_magicolor_la_DEPENDENCIES) $(EXTRA_libsane_magicolor_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_magicolor_la_LINK) $(libsane_magicolor_la_OBJECTS) $(libsane_magicolor_la_LIBADD) $(LIBS)
-
-libsane-matsushita.la: $(libsane_matsushita_la_OBJECTS) $(libsane_matsushita_la_DEPENDENCIES) $(EXTRA_libsane_matsushita_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_matsushita_la_LINK) $(libsane_matsushita_la_OBJECTS) $(libsane_matsushita_la_LIBADD) $(LIBS)
-
-libsane-microtek.la: $(libsane_microtek_la_OBJECTS) $(libsane_microtek_la_DEPENDENCIES) $(EXTRA_libsane_microtek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_microtek_la_LINK) $(libsane_microtek_la_OBJECTS) $(libsane_microtek_la_LIBADD) $(LIBS)
-
-libsane-microtek2.la: $(libsane_microtek2_la_OBJECTS) $(libsane_microtek2_la_DEPENDENCIES) $(EXTRA_libsane_microtek2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_microtek2_la_LINK) $(libsane_microtek2_la_OBJECTS) $(libsane_microtek2_la_LIBADD) $(LIBS)
-
-libsane-mustek.la: $(libsane_mustek_la_OBJECTS) $(libsane_mustek_la_DEPENDENCIES) $(EXTRA_libsane_mustek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_mustek_la_LINK) $(libsane_mustek_la_OBJECTS) $(libsane_mustek_la_LIBADD) $(LIBS)
-
-libsane-mustek_pp.la: $(libsane_mustek_pp_la_OBJECTS) $(libsane_mustek_pp_la_DEPENDENCIES) $(EXTRA_libsane_mustek_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_mustek_pp_la_LINK) $(libsane_mustek_pp_la_OBJECTS) $(libsane_mustek_pp_la_LIBADD) $(LIBS)
-
-libsane-mustek_usb.la: $(libsane_mustek_usb_la_OBJECTS) $(libsane_mustek_usb_la_DEPENDENCIES) $(EXTRA_libsane_mustek_usb_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_mustek_usb_la_LINK) $(libsane_mustek_usb_la_OBJECTS) $(libsane_mustek_usb_la_LIBADD) $(LIBS)
-
-libsane-mustek_usb2.la: $(libsane_mustek_usb2_la_OBJECTS) $(libsane_mustek_usb2_la_DEPENDENCIES) $(EXTRA_libsane_mustek_usb2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_mustek_usb2_la_LINK) $(libsane_mustek_usb2_la_OBJECTS) $(libsane_mustek_usb2_la_LIBADD) $(LIBS)
-
-libsane-nec.la: $(libsane_nec_la_OBJECTS) $(libsane_nec_la_DEPENDENCIES) $(EXTRA_libsane_nec_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_nec_la_LINK) $(libsane_nec_la_OBJECTS) $(libsane_nec_la_LIBADD) $(LIBS)
-
-libsane-net.la: $(libsane_net_la_OBJECTS) $(libsane_net_la_DEPENDENCIES) $(EXTRA_libsane_net_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_net_la_LINK) $(libsane_net_la_OBJECTS) $(libsane_net_la_LIBADD) $(LIBS)
-
-libsane-niash.la: $(libsane_niash_la_OBJECTS) $(libsane_niash_la_DEPENDENCIES) $(EXTRA_libsane_niash_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_niash_la_LINK) $(libsane_niash_la_OBJECTS) $(libsane_niash_la_LIBADD) $(LIBS)
-
-libsane-p5.la: $(libsane_p5_la_OBJECTS) $(libsane_p5_la_DEPENDENCIES) $(EXTRA_libsane_p5_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_p5_la_LINK) $(libsane_p5_la_OBJECTS) $(libsane_p5_la_LIBADD) $(LIBS)
-
-libsane-pie.la: $(libsane_pie_la_OBJECTS) $(libsane_pie_la_DEPENDENCIES) $(EXTRA_libsane_pie_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_pie_la_LINK) $(libsane_pie_la_OBJECTS) $(libsane_pie_la_LIBADD) $(LIBS)
-
-libsane-pieusb.la: $(libsane_pieusb_la_OBJECTS) $(libsane_pieusb_la_DEPENDENCIES) $(EXTRA_libsane_pieusb_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_pieusb_la_LINK) $(libsane_pieusb_la_OBJECTS) $(libsane_pieusb_la_LIBADD) $(LIBS)
-
-libsane-pint.la: $(libsane_pint_la_OBJECTS) $(libsane_pint_la_DEPENDENCIES) $(EXTRA_libsane_pint_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_pint_la_LINK) $(libsane_pint_la_OBJECTS) $(libsane_pint_la_LIBADD) $(LIBS)
-
-libsane-pixma.la: $(libsane_pixma_la_OBJECTS) $(libsane_pixma_la_DEPENDENCIES) $(EXTRA_libsane_pixma_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_pixma_la_LINK) $(libsane_pixma_la_OBJECTS) $(libsane_pixma_la_LIBADD) $(LIBS)
-
-libsane-plustek.la: $(libsane_plustek_la_OBJECTS) $(libsane_plustek_la_DEPENDENCIES) $(EXTRA_libsane_plustek_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_plustek_la_LINK) $(libsane_plustek_la_OBJECTS) $(libsane_plustek_la_LIBADD) $(LIBS)
-
-libsane-plustek_pp.la: $(libsane_plustek_pp_la_OBJECTS) $(libsane_plustek_pp_la_DEPENDENCIES) $(EXTRA_libsane_plustek_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_plustek_pp_la_LINK) $(libsane_plustek_pp_la_OBJECTS) $(libsane_plustek_pp_la_LIBADD) $(LIBS)
-
-libsane-pnm.la: $(libsane_pnm_la_OBJECTS) $(libsane_pnm_la_DEPENDENCIES) $(EXTRA_libsane_pnm_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_pnm_la_LINK) $(libsane_pnm_la_OBJECTS) $(libsane_pnm_la_LIBADD) $(LIBS)
-
-libsane-qcam.la: $(libsane_qcam_la_OBJECTS) $(libsane_qcam_la_DEPENDENCIES) $(EXTRA_libsane_qcam_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_qcam_la_LINK) $(libsane_qcam_la_OBJECTS) $(libsane_qcam_la_LIBADD) $(LIBS)
-
-libsane-ricoh.la: $(libsane_ricoh_la_OBJECTS) $(libsane_ricoh_la_DEPENDENCIES) $(EXTRA_libsane_ricoh_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_ricoh_la_LINK) $(libsane_ricoh_la_OBJECTS) $(libsane_ricoh_la_LIBADD) $(LIBS)
-
-libsane-rts8891.la: $(libsane_rts8891_la_OBJECTS) $(libsane_rts8891_la_DEPENDENCIES) $(EXTRA_libsane_rts8891_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_rts8891_la_LINK) $(libsane_rts8891_la_OBJECTS) $(libsane_rts8891_la_LIBADD) $(LIBS)
-
-libsane-s9036.la: $(libsane_s9036_la_OBJECTS) $(libsane_s9036_la_DEPENDENCIES) $(EXTRA_libsane_s9036_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_s9036_la_LINK) $(libsane_s9036_la_OBJECTS) $(libsane_s9036_la_LIBADD) $(LIBS)
-
-libsane-sceptre.la: $(libsane_sceptre_la_OBJECTS) $(libsane_sceptre_la_DEPENDENCIES) $(EXTRA_libsane_sceptre_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_sceptre_la_LINK) $(libsane_sceptre_la_OBJECTS) $(libsane_sceptre_la_LIBADD) $(LIBS)
-
-libsane-sharp.la: $(libsane_sharp_la_OBJECTS) $(libsane_sharp_la_DEPENDENCIES) $(EXTRA_libsane_sharp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_sharp_la_LINK) $(libsane_sharp_la_OBJECTS) $(libsane_sharp_la_LIBADD) $(LIBS)
-
-libsane-sm3600.la: $(libsane_sm3600_la_OBJECTS) $(libsane_sm3600_la_DEPENDENCIES) $(EXTRA_libsane_sm3600_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_sm3600_la_LINK) $(libsane_sm3600_la_OBJECTS) $(libsane_sm3600_la_LIBADD) $(LIBS)
-
-libsane-sm3840.la: $(libsane_sm3840_la_OBJECTS) $(libsane_sm3840_la_DEPENDENCIES) $(EXTRA_libsane_sm3840_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_sm3840_la_LINK) $(libsane_sm3840_la_OBJECTS) $(libsane_sm3840_la_LIBADD) $(LIBS)
-
-libsane-snapscan.la: $(libsane_snapscan_la_OBJECTS) $(libsane_snapscan_la_DEPENDENCIES) $(EXTRA_libsane_snapscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_snapscan_la_LINK) $(libsane_snapscan_la_OBJECTS) $(libsane_snapscan_la_LIBADD) $(LIBS)
-
-libsane-sp15c.la: $(libsane_sp15c_la_OBJECTS) $(libsane_sp15c_la_DEPENDENCIES) $(EXTRA_libsane_sp15c_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_sp15c_la_LINK) $(libsane_sp15c_la_OBJECTS) $(libsane_sp15c_la_LIBADD) $(LIBS)
-
-libsane-st400.la: $(libsane_st400_la_OBJECTS) $(libsane_st400_la_DEPENDENCIES) $(EXTRA_libsane_st400_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_st400_la_LINK) $(libsane_st400_la_OBJECTS) $(libsane_st400_la_LIBADD) $(LIBS)
-
-libsane-stv680.la: $(libsane_stv680_la_OBJECTS) $(libsane_stv680_la_DEPENDENCIES) $(EXTRA_libsane_stv680_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_stv680_la_LINK) $(libsane_stv680_la_OBJECTS) $(libsane_stv680_la_LIBADD) $(LIBS)
-
-libsane-tamarack.la: $(libsane_tamarack_la_OBJECTS) $(libsane_tamarack_la_DEPENDENCIES) $(EXTRA_libsane_tamarack_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_tamarack_la_LINK) $(libsane_tamarack_la_OBJECTS) $(libsane_tamarack_la_LIBADD) $(LIBS)
-
-libsane-teco1.la: $(libsane_teco1_la_OBJECTS) $(libsane_teco1_la_DEPENDENCIES) $(EXTRA_libsane_teco1_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_teco1_la_LINK) $(libsane_teco1_la_OBJECTS) $(libsane_teco1_la_LIBADD) $(LIBS)
-
-libsane-teco2.la: $(libsane_teco2_la_OBJECTS) $(libsane_teco2_la_DEPENDENCIES) $(EXTRA_libsane_teco2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_teco2_la_LINK) $(libsane_teco2_la_OBJECTS) $(libsane_teco2_la_LIBADD) $(LIBS)
-
-libsane-teco3.la: $(libsane_teco3_la_OBJECTS) $(libsane_teco3_la_DEPENDENCIES) $(EXTRA_libsane_teco3_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_teco3_la_LINK) $(libsane_teco3_la_OBJECTS) $(libsane_teco3_la_LIBADD) $(LIBS)
-
-libsane-test.la: $(libsane_test_la_OBJECTS) $(libsane_test_la_DEPENDENCIES) $(EXTRA_libsane_test_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_test_la_LINK) $(libsane_test_la_OBJECTS) $(libsane_test_la_LIBADD) $(LIBS)
-
-libsane-u12.la: $(libsane_u12_la_OBJECTS) $(libsane_u12_la_DEPENDENCIES) $(EXTRA_libsane_u12_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_u12_la_LINK) $(libsane_u12_la_OBJECTS) $(libsane_u12_la_LIBADD) $(LIBS)
-
-libsane-umax.la: $(libsane_umax_la_OBJECTS) $(libsane_umax_la_DEPENDENCIES) $(EXTRA_libsane_umax_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_umax_la_LINK) $(libsane_umax_la_OBJECTS) $(libsane_umax_la_LIBADD) $(LIBS)
-
-libsane-umax1220u.la: $(libsane_umax1220u_la_OBJECTS) $(libsane_umax1220u_la_DEPENDENCIES) $(EXTRA_libsane_umax1220u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_umax1220u_la_LINK) $(libsane_umax1220u_la_OBJECTS) $(libsane_umax1220u_la_LIBADD) $(LIBS)
-
-libsane-umax_pp.la: $(libsane_umax_pp_la_OBJECTS) $(libsane_umax_pp_la_DEPENDENCIES) $(EXTRA_libsane_umax_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_umax_pp_la_LINK) $(libsane_umax_pp_la_OBJECTS) $(libsane_umax_pp_la_LIBADD) $(LIBS)
-
-libsane-v4l.la: $(libsane_v4l_la_OBJECTS) $(libsane_v4l_la_DEPENDENCIES) $(EXTRA_libsane_v4l_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_v4l_la_LINK) $(libsane_v4l_la_OBJECTS) $(libsane_v4l_la_LIBADD) $(LIBS)
-
-libsane-xerox_mfp.la: $(libsane_xerox_mfp_la_OBJECTS) $(libsane_xerox_mfp_la_DEPENDENCIES) $(EXTRA_libsane_xerox_mfp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_xerox_mfp_la_LINK) $(libsane_xerox_mfp_la_OBJECTS) $(libsane_xerox_mfp_la_LIBADD) $(LIBS)
-
-libsane.la: $(libsane_la_OBJECTS) $(libsane_la_DEPENDENCIES) $(EXTRA_libsane_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libsane_la_LINK) -rpath $(libdir) $(libsane_la_OBJECTS) $(libsane_la_LIBADD) $(LIBS)
-
-libsceptre.la: $(libsceptre_la_OBJECTS) $(libsceptre_la_DEPENDENCIES) $(EXTRA_libsceptre_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsceptre_la_OBJECTS) $(libsceptre_la_LIBADD) $(LIBS)
-
-libsharp.la: $(libsharp_la_OBJECTS) $(libsharp_la_DEPENDENCIES) $(EXTRA_libsharp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsharp_la_OBJECTS) $(libsharp_la_LIBADD) $(LIBS)
-
-libsm3600.la: $(libsm3600_la_OBJECTS) $(libsm3600_la_DEPENDENCIES) $(EXTRA_libsm3600_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsm3600_la_OBJECTS) $(libsm3600_la_LIBADD) $(LIBS)
-
-libsm3840.la: $(libsm3840_la_OBJECTS) $(libsm3840_la_DEPENDENCIES) $(EXTRA_libsm3840_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsm3840_la_OBJECTS) $(libsm3840_la_LIBADD) $(LIBS)
-
-libsnapscan.la: $(libsnapscan_la_OBJECTS) $(libsnapscan_la_DEPENDENCIES) $(EXTRA_libsnapscan_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsnapscan_la_OBJECTS) $(libsnapscan_la_LIBADD) $(LIBS)
-
-libsp15c.la: $(libsp15c_la_OBJECTS) $(libsp15c_la_DEPENDENCIES) $(EXTRA_libsp15c_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsp15c_la_OBJECTS) $(libsp15c_la_LIBADD) $(LIBS)
-
-libst400.la: $(libst400_la_OBJECTS) $(libst400_la_DEPENDENCIES) $(EXTRA_libst400_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libst400_la_OBJECTS) $(libst400_la_LIBADD) $(LIBS)
-
-libstv680.la: $(libstv680_la_OBJECTS) $(libstv680_la_DEPENDENCIES) $(EXTRA_libstv680_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libstv680_la_OBJECTS) $(libstv680_la_LIBADD) $(LIBS)
-
-libtamarack.la: $(libtamarack_la_OBJECTS) $(libtamarack_la_DEPENDENCIES) $(EXTRA_libtamarack_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libtamarack_la_OBJECTS) $(libtamarack_la_LIBADD) $(LIBS)
-
-libteco1.la: $(libteco1_la_OBJECTS) $(libteco1_la_DEPENDENCIES) $(EXTRA_libteco1_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libteco1_la_OBJECTS) $(libteco1_la_LIBADD) $(LIBS)
-
-libteco2.la: $(libteco2_la_OBJECTS) $(libteco2_la_DEPENDENCIES) $(EXTRA_libteco2_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libteco2_la_OBJECTS) $(libteco2_la_LIBADD) $(LIBS)
-
-libteco3.la: $(libteco3_la_OBJECTS) $(libteco3_la_DEPENDENCIES) $(EXTRA_libteco3_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libteco3_la_OBJECTS) $(libteco3_la_LIBADD) $(LIBS)
-
-libtest.la: $(libtest_la_OBJECTS) $(libtest_la_DEPENDENCIES) $(EXTRA_libtest_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libtest_la_OBJECTS) $(libtest_la_LIBADD) $(LIBS)
-
-libu12.la: $(libu12_la_OBJECTS) $(libu12_la_DEPENDENCIES) $(EXTRA_libu12_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libu12_la_OBJECTS) $(libu12_la_LIBADD) $(LIBS)
-
-libumax.la: $(libumax_la_OBJECTS) $(libumax_la_DEPENDENCIES) $(EXTRA_libumax_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libumax_la_OBJECTS) $(libumax_la_LIBADD) $(LIBS)
-
-libumax1220u.la: $(libumax1220u_la_OBJECTS) $(libumax1220u_la_DEPENDENCIES) $(EXTRA_libumax1220u_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libumax1220u_la_OBJECTS) $(libumax1220u_la_LIBADD) $(LIBS)
-
-libumax_pp.la: $(libumax_pp_la_OBJECTS) $(libumax_pp_la_DEPENDENCIES) $(EXTRA_libumax_pp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libumax_pp_la_OBJECTS) $(libumax_pp_la_LIBADD) $(LIBS)
-
-libv4l.la: $(libv4l_la_OBJECTS) $(libv4l_la_DEPENDENCIES) $(EXTRA_libv4l_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libv4l_la_OBJECTS) $(libv4l_la_LIBADD) $(LIBS)
-
-libxerox_mfp.la: $(libxerox_mfp_la_OBJECTS) $(libxerox_mfp_la_DEPENDENCIES) $(EXTRA_libxerox_mfp_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libxerox_mfp_la_OBJECTS) $(libxerox_mfp_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libabaton_la-abaton.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libagfafocus_la-agfafocus.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libapple_la-apple.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libartec_eplus48u_la-artec_eplus48u.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libartec_la-artec.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libas6e_la-as6e.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libavision_la-avision.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbh_la-bh.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon630u_la-canon630u.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon_dr_la-canon_dr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon_la-canon.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon_pp_la-canon_pp-dev.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon_pp_la-canon_pp-io.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcanon_pp_la-canon_pp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcardscan_la-cardscan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoolscan2_la-coolscan2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoolscan3_la-coolscan3.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcoolscan_la-coolscan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdc210_la-dc210.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdc240_la-dc240.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdc25_la-dc25.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdell1600n_net_la-dell1600n_net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdll_la-dll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdll_preload_la-dll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdmc_la-dmc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepjitsu_la-epjitsu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2-cct.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2-commands.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2-io.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2-ops.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2_net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2_scsi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson2_la-epson2_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson_la-epson.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson_la-epson_scsi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepson_la-epson_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-cmd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-io.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-jpeg.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-ops.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds-usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libepsonds_la-epsonds.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libfujitsu_la-fujitsu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl124.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl646.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl841.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl843.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl846.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_gl847.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgenesys_la-genesys_low.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_i_la-gphoto2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgt68xx_la-gt68xx.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp3500_la-hp3500.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp3900_la-hp3900.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp4200_la-hp4200.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp5400_la-hp5400.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp5590_la-hp5590.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-accessor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-device.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-handle.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-hpmem.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-option.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp-scl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhp_la-hp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhpljm1005_la-hpljm1005.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhpsj5s_la-hpsj5s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhs2p_la-hs2p.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibm_la-ibm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkodak_la-kodak.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkodakaio_la-kodakaio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs1025_la-kvs1025.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs1025_la-kvs1025_low.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs1025_la-kvs1025_opt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs1025_la-kvs1025_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs20xx_la-kvs20xx.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs20xx_la-kvs20xx_cmd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs20xx_la-kvs20xx_opt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs40xx_la-kvs40xx.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs40xx_la-kvs40xx_cmd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkvs40xx_la-kvs40xx_opt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libleo_la-leo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblexmark_la-lexmark.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblexmark_la-lexmark_low.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libma1509_la-ma1509.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmagicolor_la-magicolor.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmatsushita_la-matsushita.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmicrotek2_la-microtek2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmicrotek_la-microtek.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmustek_la-mustek.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmustek_pp_la-mustek_pp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmustek_usb2_la-mustek_usb2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmustek_usb_la-mustek_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnec_la-nec.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnet_la-net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libniash_la-niash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libp5_la-p5.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpie_la-pie.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpieusb_la-pieusb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpieusb_la-pieusb_buffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpieusb_la-pieusb_scancmd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpieusb_la-pieusb_specific.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpieusb_la-pieusb_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpint_la-pint.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_bjnp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_common.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_imageclass.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_io_sanei.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_mp150.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_mp730.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_mp750.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpixma_la-pixma_mp810.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libplustek_la-plustek.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libplustek_pp_la-plustek_pp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpnm_la-pnm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libqcam_la-qcam.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libricoh_la-ricoh.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librts8891_la-rts8891.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librts8891_la-rts88xx_lib.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libs9036_la-s9036.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_abaton_la-abaton-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_agfafocus_la-agfafocus-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_apple_la-apple-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_artec_eplus48u_la-artec_eplus48u-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_artec_la-artec-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_as6e_la-as6e-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_avision_la-avision-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_bh_la-bh-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_canon630u_la-canon630u-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_canon_dr_la-canon_dr-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_canon_la-canon-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_canon_pp_la-canon_pp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_cardscan_la-cardscan-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_coolscan2_la-coolscan2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_coolscan3_la-coolscan3-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_coolscan_la-coolscan-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dc210_la-dc210-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dc240_la-dc240-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dc25_la-dc25-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dell1600n_net_la-dell1600n_net-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dll_la-dll-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_dmc_la-dmc-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_epjitsu_la-epjitsu-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_epson2_la-epson2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_epson_la-epson-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_epsonds_la-epsonds-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_fujitsu_la-fujitsu-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_genesys_la-genesys-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_gphoto2_la-gphoto2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_gt68xx_la-gt68xx-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp3500_la-hp3500-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp3900_la-hp3900-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp4200_la-hp4200-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp5400_la-hp5400-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp5590_la-hp5590-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hp_la-hp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hpljm1005_la-hpljm1005-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hpsj5s_la-hpsj5s-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_hs2p_la-hs2p-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_ibm_la-ibm-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_kodak_la-kodak-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_kodakaio_la-kodakaio-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_kvs1025_la-kvs1025-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_kvs20xx_la-kvs20xx-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_kvs40xx_la-kvs40xx-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_la-dll-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_leo_la-leo-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_lexmark_la-lexmark-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_ma1509_la-ma1509-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_magicolor_la-magicolor-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_matsushita_la-matsushita-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_microtek2_la-microtek2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_microtek_la-microtek-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_mustek_la-mustek-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_mustek_pp_la-mustek_pp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_mustek_usb2_la-mustek_usb2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_mustek_usb_la-mustek_usb-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_nec_la-nec-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_net_la-net-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_niash_la-niash-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_p5_la-p5-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_pie_la-pie-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_pieusb_la-pieusb-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_pint_la-pint-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_pixma_la-pixma-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_plustek_la-plustek-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_plustek_pp_la-plustek_pp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_pnm_la-pnm-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_qcam_la-qcam-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_ricoh_la-ricoh-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_rts8891_la-rts8891-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_s9036_la-s9036-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_sceptre_la-sceptre-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_sharp_la-sharp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_sm3600_la-sm3600-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_sm3840_la-sm3840-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_snapscan_la-snapscan-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_sp15c_la-sp15c-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_st400_la-st400-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_stv680_la-stv680-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_tamarack_la-tamarack-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_teco1_la-teco1-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_teco2_la-teco2-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_teco3_la-teco3-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_test_la-test-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_u12_la-u12-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_umax1220u_la-umax1220u-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_umax_la-umax-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_umax_pp_la-umax_pp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_v4l_la-v4l-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsane_xerox_mfp_la-xerox_mfp-s.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsceptre_la-sceptre.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsharp_la-sharp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsm3600_la-sm3600.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsm3840_la-sm3840.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsnapscan_la-snapscan.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsp15c_la-sp15c.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libst400_la-st400.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstv680_la-stv680.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtamarack_la-tamarack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libteco1_la-teco1.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libteco2_la-teco2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libteco3_la-teco3.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtest_la-test.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libu12_la-u12.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libumax1220u_la-umax1220u.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libumax_la-umax.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libumax_pp_la-umax_pp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libumax_pp_la-umax_pp_low.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libumax_pp_la-umax_pp_mid.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libv4l_la-v4l.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxerox_mfp_la-xerox_mfp-tcp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxerox_mfp_la-xerox_mfp-usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxerox_mfp_la-xerox_mfp.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libabaton_la-abaton.lo: abaton.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libabaton_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libabaton_la-abaton.lo -MD -MP -MF $(DEPDIR)/libabaton_la-abaton.Tpo -c -o libabaton_la-abaton.lo `test -f 'abaton.c' || echo '$(srcdir)/'`abaton.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libabaton_la-abaton.Tpo $(DEPDIR)/libabaton_la-abaton.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='abaton.c' object='libabaton_la-abaton.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libabaton_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libabaton_la-abaton.lo `test -f 'abaton.c' || echo '$(srcdir)/'`abaton.c
-
-libagfafocus_la-agfafocus.lo: agfafocus.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libagfafocus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libagfafocus_la-agfafocus.lo -MD -MP -MF $(DEPDIR)/libagfafocus_la-agfafocus.Tpo -c -o libagfafocus_la-agfafocus.lo `test -f 'agfafocus.c' || echo '$(srcdir)/'`agfafocus.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libagfafocus_la-agfafocus.Tpo $(DEPDIR)/libagfafocus_la-agfafocus.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='agfafocus.c' object='libagfafocus_la-agfafocus.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libagfafocus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libagfafocus_la-agfafocus.lo `test -f 'agfafocus.c' || echo '$(srcdir)/'`agfafocus.c
-
-libapple_la-apple.lo: apple.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libapple_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libapple_la-apple.lo -MD -MP -MF $(DEPDIR)/libapple_la-apple.Tpo -c -o libapple_la-apple.lo `test -f 'apple.c' || echo '$(srcdir)/'`apple.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libapple_la-apple.Tpo $(DEPDIR)/libapple_la-apple.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='apple.c' object='libapple_la-apple.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libapple_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libapple_la-apple.lo `test -f 'apple.c' || echo '$(srcdir)/'`apple.c
-
-libartec_la-artec.lo: artec.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libartec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libartec_la-artec.lo -MD -MP -MF $(DEPDIR)/libartec_la-artec.Tpo -c -o libartec_la-artec.lo `test -f 'artec.c' || echo '$(srcdir)/'`artec.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libartec_la-artec.Tpo $(DEPDIR)/libartec_la-artec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='artec.c' object='libartec_la-artec.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libartec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libartec_la-artec.lo `test -f 'artec.c' || echo '$(srcdir)/'`artec.c
-
-libartec_eplus48u_la-artec_eplus48u.lo: artec_eplus48u.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libartec_eplus48u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libartec_eplus48u_la-artec_eplus48u.lo -MD -MP -MF $(DEPDIR)/libartec_eplus48u_la-artec_eplus48u.Tpo -c -o libartec_eplus48u_la-artec_eplus48u.lo `test -f 'artec_eplus48u.c' || echo '$(srcdir)/'`artec_eplus48u.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libartec_eplus48u_la-artec_eplus48u.Tpo $(DEPDIR)/libartec_eplus48u_la-artec_eplus48u.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='artec_eplus48u.c' object='libartec_eplus48u_la-artec_eplus48u.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libartec_eplus48u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libartec_eplus48u_la-artec_eplus48u.lo `test -f 'artec_eplus48u.c' || echo '$(srcdir)/'`artec_eplus48u.c
-
-libas6e_la-as6e.lo: as6e.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libas6e_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libas6e_la-as6e.lo -MD -MP -MF $(DEPDIR)/libas6e_la-as6e.Tpo -c -o libas6e_la-as6e.lo `test -f 'as6e.c' || echo '$(srcdir)/'`as6e.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libas6e_la-as6e.Tpo $(DEPDIR)/libas6e_la-as6e.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='as6e.c' object='libas6e_la-as6e.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libas6e_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libas6e_la-as6e.lo `test -f 'as6e.c' || echo '$(srcdir)/'`as6e.c
-
-libavision_la-avision.lo: avision.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libavision_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libavision_la-avision.lo -MD -MP -MF $(DEPDIR)/libavision_la-avision.Tpo -c -o libavision_la-avision.lo `test -f 'avision.c' || echo '$(srcdir)/'`avision.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libavision_la-avision.Tpo $(DEPDIR)/libavision_la-avision.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avision.c' object='libavision_la-avision.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libavision_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libavision_la-avision.lo `test -f 'avision.c' || echo '$(srcdir)/'`avision.c
-
-libbh_la-bh.lo: bh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libbh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libbh_la-bh.lo -MD -MP -MF $(DEPDIR)/libbh_la-bh.Tpo -c -o libbh_la-bh.lo `test -f 'bh.c' || echo '$(srcdir)/'`bh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libbh_la-bh.Tpo $(DEPDIR)/libbh_la-bh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bh.c' object='libbh_la-bh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libbh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libbh_la-bh.lo `test -f 'bh.c' || echo '$(srcdir)/'`bh.c
-
-libcanon_la-canon.lo: canon.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon_la-canon.lo -MD -MP -MF $(DEPDIR)/libcanon_la-canon.Tpo -c -o libcanon_la-canon.lo `test -f 'canon.c' || echo '$(srcdir)/'`canon.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon_la-canon.Tpo $(DEPDIR)/libcanon_la-canon.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon.c' object='libcanon_la-canon.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon_la-canon.lo `test -f 'canon.c' || echo '$(srcdir)/'`canon.c
-
-libcanon630u_la-canon630u.lo: canon630u.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon630u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon630u_la-canon630u.lo -MD -MP -MF $(DEPDIR)/libcanon630u_la-canon630u.Tpo -c -o libcanon630u_la-canon630u.lo `test -f 'canon630u.c' || echo '$(srcdir)/'`canon630u.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon630u_la-canon630u.Tpo $(DEPDIR)/libcanon630u_la-canon630u.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon630u.c' object='libcanon630u_la-canon630u.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon630u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon630u_la-canon630u.lo `test -f 'canon630u.c' || echo '$(srcdir)/'`canon630u.c
-
-libcanon_dr_la-canon_dr.lo: canon_dr.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_dr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon_dr_la-canon_dr.lo -MD -MP -MF $(DEPDIR)/libcanon_dr_la-canon_dr.Tpo -c -o libcanon_dr_la-canon_dr.lo `test -f 'canon_dr.c' || echo '$(srcdir)/'`canon_dr.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon_dr_la-canon_dr.Tpo $(DEPDIR)/libcanon_dr_la-canon_dr.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_dr.c' object='libcanon_dr_la-canon_dr.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_dr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon_dr_la-canon_dr.lo `test -f 'canon_dr.c' || echo '$(srcdir)/'`canon_dr.c
-
-libcanon_pp_la-canon_pp.lo: canon_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon_pp_la-canon_pp.lo -MD -MP -MF $(DEPDIR)/libcanon_pp_la-canon_pp.Tpo -c -o libcanon_pp_la-canon_pp.lo `test -f 'canon_pp.c' || echo '$(srcdir)/'`canon_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon_pp_la-canon_pp.Tpo $(DEPDIR)/libcanon_pp_la-canon_pp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_pp.c' object='libcanon_pp_la-canon_pp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon_pp_la-canon_pp.lo `test -f 'canon_pp.c' || echo '$(srcdir)/'`canon_pp.c
-
-libcanon_pp_la-canon_pp-io.lo: canon_pp-io.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon_pp_la-canon_pp-io.lo -MD -MP -MF $(DEPDIR)/libcanon_pp_la-canon_pp-io.Tpo -c -o libcanon_pp_la-canon_pp-io.lo `test -f 'canon_pp-io.c' || echo '$(srcdir)/'`canon_pp-io.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon_pp_la-canon_pp-io.Tpo $(DEPDIR)/libcanon_pp_la-canon_pp-io.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_pp-io.c' object='libcanon_pp_la-canon_pp-io.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon_pp_la-canon_pp-io.lo `test -f 'canon_pp-io.c' || echo '$(srcdir)/'`canon_pp-io.c
-
-libcanon_pp_la-canon_pp-dev.lo: canon_pp-dev.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcanon_pp_la-canon_pp-dev.lo -MD -MP -MF $(DEPDIR)/libcanon_pp_la-canon_pp-dev.Tpo -c -o libcanon_pp_la-canon_pp-dev.lo `test -f 'canon_pp-dev.c' || echo '$(srcdir)/'`canon_pp-dev.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcanon_pp_la-canon_pp-dev.Tpo $(DEPDIR)/libcanon_pp_la-canon_pp-dev.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_pp-dev.c' object='libcanon_pp_la-canon_pp-dev.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcanon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcanon_pp_la-canon_pp-dev.lo `test -f 'canon_pp-dev.c' || echo '$(srcdir)/'`canon_pp-dev.c
-
-libcardscan_la-cardscan.lo: cardscan.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcardscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcardscan_la-cardscan.lo -MD -MP -MF $(DEPDIR)/libcardscan_la-cardscan.Tpo -c -o libcardscan_la-cardscan.lo `test -f 'cardscan.c' || echo '$(srcdir)/'`cardscan.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcardscan_la-cardscan.Tpo $(DEPDIR)/libcardscan_la-cardscan.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cardscan.c' object='libcardscan_la-cardscan.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcardscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcardscan_la-cardscan.lo `test -f 'cardscan.c' || echo '$(srcdir)/'`cardscan.c
-
-libcoolscan_la-coolscan.lo: coolscan.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcoolscan_la-coolscan.lo -MD -MP -MF $(DEPDIR)/libcoolscan_la-coolscan.Tpo -c -o libcoolscan_la-coolscan.lo `test -f 'coolscan.c' || echo '$(srcdir)/'`coolscan.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcoolscan_la-coolscan.Tpo $(DEPDIR)/libcoolscan_la-coolscan.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan.c' object='libcoolscan_la-coolscan.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcoolscan_la-coolscan.lo `test -f 'coolscan.c' || echo '$(srcdir)/'`coolscan.c
-
-libcoolscan2_la-coolscan2.lo: coolscan2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcoolscan2_la-coolscan2.lo -MD -MP -MF $(DEPDIR)/libcoolscan2_la-coolscan2.Tpo -c -o libcoolscan2_la-coolscan2.lo `test -f 'coolscan2.c' || echo '$(srcdir)/'`coolscan2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcoolscan2_la-coolscan2.Tpo $(DEPDIR)/libcoolscan2_la-coolscan2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan2.c' object='libcoolscan2_la-coolscan2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcoolscan2_la-coolscan2.lo `test -f 'coolscan2.c' || echo '$(srcdir)/'`coolscan2.c
-
-libcoolscan3_la-coolscan3.lo: coolscan3.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcoolscan3_la-coolscan3.lo -MD -MP -MF $(DEPDIR)/libcoolscan3_la-coolscan3.Tpo -c -o libcoolscan3_la-coolscan3.lo `test -f 'coolscan3.c' || echo '$(srcdir)/'`coolscan3.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcoolscan3_la-coolscan3.Tpo $(DEPDIR)/libcoolscan3_la-coolscan3.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan3.c' object='libcoolscan3_la-coolscan3.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcoolscan3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcoolscan3_la-coolscan3.lo `test -f 'coolscan3.c' || echo '$(srcdir)/'`coolscan3.c
-
-libdc210_la-dc210.lo: dc210.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc210_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdc210_la-dc210.lo -MD -MP -MF $(DEPDIR)/libdc210_la-dc210.Tpo -c -o libdc210_la-dc210.lo `test -f 'dc210.c' || echo '$(srcdir)/'`dc210.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdc210_la-dc210.Tpo $(DEPDIR)/libdc210_la-dc210.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc210.c' object='libdc210_la-dc210.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc210_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdc210_la-dc210.lo `test -f 'dc210.c' || echo '$(srcdir)/'`dc210.c
-
-libdc240_la-dc240.lo: dc240.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc240_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdc240_la-dc240.lo -MD -MP -MF $(DEPDIR)/libdc240_la-dc240.Tpo -c -o libdc240_la-dc240.lo `test -f 'dc240.c' || echo '$(srcdir)/'`dc240.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdc240_la-dc240.Tpo $(DEPDIR)/libdc240_la-dc240.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc240.c' object='libdc240_la-dc240.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc240_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdc240_la-dc240.lo `test -f 'dc240.c' || echo '$(srcdir)/'`dc240.c
-
-libdc25_la-dc25.lo: dc25.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc25_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdc25_la-dc25.lo -MD -MP -MF $(DEPDIR)/libdc25_la-dc25.Tpo -c -o libdc25_la-dc25.lo `test -f 'dc25.c' || echo '$(srcdir)/'`dc25.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdc25_la-dc25.Tpo $(DEPDIR)/libdc25_la-dc25.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc25.c' object='libdc25_la-dc25.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdc25_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdc25_la-dc25.lo `test -f 'dc25.c' || echo '$(srcdir)/'`dc25.c
-
-libdell1600n_net_la-dell1600n_net.lo: dell1600n_net.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdell1600n_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdell1600n_net_la-dell1600n_net.lo -MD -MP -MF $(DEPDIR)/libdell1600n_net_la-dell1600n_net.Tpo -c -o libdell1600n_net_la-dell1600n_net.lo `test -f 'dell1600n_net.c' || echo '$(srcdir)/'`dell1600n_net.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdell1600n_net_la-dell1600n_net.Tpo $(DEPDIR)/libdell1600n_net_la-dell1600n_net.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dell1600n_net.c' object='libdell1600n_net_la-dell1600n_net.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdell1600n_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdell1600n_net_la-dell1600n_net.lo `test -f 'dell1600n_net.c' || echo '$(srcdir)/'`dell1600n_net.c
-
-libdll_la-dll.lo: dll.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdll_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdll_la-dll.lo -MD -MP -MF $(DEPDIR)/libdll_la-dll.Tpo -c -o libdll_la-dll.lo `test -f 'dll.c' || echo '$(srcdir)/'`dll.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdll_la-dll.Tpo $(DEPDIR)/libdll_la-dll.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dll.c' object='libdll_la-dll.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdll_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdll_la-dll.lo `test -f 'dll.c' || echo '$(srcdir)/'`dll.c
-
-libdll_preload_la-dll.lo: dll.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdll_preload_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdll_preload_la-dll.lo -MD -MP -MF $(DEPDIR)/libdll_preload_la-dll.Tpo -c -o libdll_preload_la-dll.lo `test -f 'dll.c' || echo '$(srcdir)/'`dll.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdll_preload_la-dll.Tpo $(DEPDIR)/libdll_preload_la-dll.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dll.c' object='libdll_preload_la-dll.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdll_preload_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdll_preload_la-dll.lo `test -f 'dll.c' || echo '$(srcdir)/'`dll.c
-
-libdmc_la-dmc.lo: dmc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdmc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libdmc_la-dmc.lo -MD -MP -MF $(DEPDIR)/libdmc_la-dmc.Tpo -c -o libdmc_la-dmc.lo `test -f 'dmc.c' || echo '$(srcdir)/'`dmc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdmc_la-dmc.Tpo $(DEPDIR)/libdmc_la-dmc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dmc.c' object='libdmc_la-dmc.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libdmc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libdmc_la-dmc.lo `test -f 'dmc.c' || echo '$(srcdir)/'`dmc.c
-
-libepjitsu_la-epjitsu.lo: epjitsu.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepjitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepjitsu_la-epjitsu.lo -MD -MP -MF $(DEPDIR)/libepjitsu_la-epjitsu.Tpo -c -o libepjitsu_la-epjitsu.lo `test -f 'epjitsu.c' || echo '$(srcdir)/'`epjitsu.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepjitsu_la-epjitsu.Tpo $(DEPDIR)/libepjitsu_la-epjitsu.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epjitsu.c' object='libepjitsu_la-epjitsu.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepjitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepjitsu_la-epjitsu.lo `test -f 'epjitsu.c' || echo '$(srcdir)/'`epjitsu.c
-
-libepson_la-epson.lo: epson.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson_la-epson.lo -MD -MP -MF $(DEPDIR)/libepson_la-epson.Tpo -c -o libepson_la-epson.lo `test -f 'epson.c' || echo '$(srcdir)/'`epson.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson_la-epson.Tpo $(DEPDIR)/libepson_la-epson.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson.c' object='libepson_la-epson.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson_la-epson.lo `test -f 'epson.c' || echo '$(srcdir)/'`epson.c
-
-libepson_la-epson_scsi.lo: epson_scsi.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson_la-epson_scsi.lo -MD -MP -MF $(DEPDIR)/libepson_la-epson_scsi.Tpo -c -o libepson_la-epson_scsi.lo `test -f 'epson_scsi.c' || echo '$(srcdir)/'`epson_scsi.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson_la-epson_scsi.Tpo $(DEPDIR)/libepson_la-epson_scsi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson_scsi.c' object='libepson_la-epson_scsi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson_la-epson_scsi.lo `test -f 'epson_scsi.c' || echo '$(srcdir)/'`epson_scsi.c
-
-libepson_la-epson_usb.lo: epson_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson_la-epson_usb.lo -MD -MP -MF $(DEPDIR)/libepson_la-epson_usb.Tpo -c -o libepson_la-epson_usb.lo `test -f 'epson_usb.c' || echo '$(srcdir)/'`epson_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson_la-epson_usb.Tpo $(DEPDIR)/libepson_la-epson_usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson_usb.c' object='libepson_la-epson_usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson_la-epson_usb.lo `test -f 'epson_usb.c' || echo '$(srcdir)/'`epson_usb.c
-
-libepson2_la-epson2.lo: epson2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2.Tpo -c -o libepson2_la-epson2.lo `test -f 'epson2.c' || echo '$(srcdir)/'`epson2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2.Tpo $(DEPDIR)/libepson2_la-epson2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2.c' object='libepson2_la-epson2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2.lo `test -f 'epson2.c' || echo '$(srcdir)/'`epson2.c
-
-libepson2_la-epson2_scsi.lo: epson2_scsi.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2_scsi.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2_scsi.Tpo -c -o libepson2_la-epson2_scsi.lo `test -f 'epson2_scsi.c' || echo '$(srcdir)/'`epson2_scsi.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2_scsi.Tpo $(DEPDIR)/libepson2_la-epson2_scsi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2_scsi.c' object='libepson2_la-epson2_scsi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2_scsi.lo `test -f 'epson2_scsi.c' || echo '$(srcdir)/'`epson2_scsi.c
-
-libepson2_la-epson2_usb.lo: epson2_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2_usb.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2_usb.Tpo -c -o libepson2_la-epson2_usb.lo `test -f 'epson2_usb.c' || echo '$(srcdir)/'`epson2_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2_usb.Tpo $(DEPDIR)/libepson2_la-epson2_usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2_usb.c' object='libepson2_la-epson2_usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2_usb.lo `test -f 'epson2_usb.c' || echo '$(srcdir)/'`epson2_usb.c
-
-libepson2_la-epson2_net.lo: epson2_net.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2_net.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2_net.Tpo -c -o libepson2_la-epson2_net.lo `test -f 'epson2_net.c' || echo '$(srcdir)/'`epson2_net.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2_net.Tpo $(DEPDIR)/libepson2_la-epson2_net.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2_net.c' object='libepson2_la-epson2_net.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2_net.lo `test -f 'epson2_net.c' || echo '$(srcdir)/'`epson2_net.c
-
-libepson2_la-epson2-io.lo: epson2-io.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2-io.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2-io.Tpo -c -o libepson2_la-epson2-io.lo `test -f 'epson2-io.c' || echo '$(srcdir)/'`epson2-io.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2-io.Tpo $(DEPDIR)/libepson2_la-epson2-io.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2-io.c' object='libepson2_la-epson2-io.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2-io.lo `test -f 'epson2-io.c' || echo '$(srcdir)/'`epson2-io.c
-
-libepson2_la-epson2-commands.lo: epson2-commands.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2-commands.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2-commands.Tpo -c -o libepson2_la-epson2-commands.lo `test -f 'epson2-commands.c' || echo '$(srcdir)/'`epson2-commands.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2-commands.Tpo $(DEPDIR)/libepson2_la-epson2-commands.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2-commands.c' object='libepson2_la-epson2-commands.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2-commands.lo `test -f 'epson2-commands.c' || echo '$(srcdir)/'`epson2-commands.c
-
-libepson2_la-epson2-ops.lo: epson2-ops.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2-ops.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2-ops.Tpo -c -o libepson2_la-epson2-ops.lo `test -f 'epson2-ops.c' || echo '$(srcdir)/'`epson2-ops.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2-ops.Tpo $(DEPDIR)/libepson2_la-epson2-ops.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2-ops.c' object='libepson2_la-epson2-ops.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2-ops.lo `test -f 'epson2-ops.c' || echo '$(srcdir)/'`epson2-ops.c
-
-libepson2_la-epson2-cct.lo: epson2-cct.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepson2_la-epson2-cct.lo -MD -MP -MF $(DEPDIR)/libepson2_la-epson2-cct.Tpo -c -o libepson2_la-epson2-cct.lo `test -f 'epson2-cct.c' || echo '$(srcdir)/'`epson2-cct.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepson2_la-epson2-cct.Tpo $(DEPDIR)/libepson2_la-epson2-cct.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2-cct.c' object='libepson2_la-epson2-cct.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepson2_la-epson2-cct.lo `test -f 'epson2-cct.c' || echo '$(srcdir)/'`epson2-cct.c
-
-libepsonds_la-epsonds.lo: epsonds.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds.Tpo -c -o libepsonds_la-epsonds.lo `test -f 'epsonds.c' || echo '$(srcdir)/'`epsonds.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds.Tpo $(DEPDIR)/libepsonds_la-epsonds.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds.c' object='libepsonds_la-epsonds.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds.lo `test -f 'epsonds.c' || echo '$(srcdir)/'`epsonds.c
-
-libepsonds_la-epsonds-usb.lo: epsonds-usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-usb.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-usb.Tpo -c -o libepsonds_la-epsonds-usb.lo `test -f 'epsonds-usb.c' || echo '$(srcdir)/'`epsonds-usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-usb.Tpo $(DEPDIR)/libepsonds_la-epsonds-usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-usb.c' object='libepsonds_la-epsonds-usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-usb.lo `test -f 'epsonds-usb.c' || echo '$(srcdir)/'`epsonds-usb.c
-
-libepsonds_la-epsonds-io.lo: epsonds-io.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-io.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-io.Tpo -c -o libepsonds_la-epsonds-io.lo `test -f 'epsonds-io.c' || echo '$(srcdir)/'`epsonds-io.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-io.Tpo $(DEPDIR)/libepsonds_la-epsonds-io.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-io.c' object='libepsonds_la-epsonds-io.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-io.lo `test -f 'epsonds-io.c' || echo '$(srcdir)/'`epsonds-io.c
-
-libepsonds_la-epsonds-cmd.lo: epsonds-cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-cmd.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-cmd.Tpo -c -o libepsonds_la-epsonds-cmd.lo `test -f 'epsonds-cmd.c' || echo '$(srcdir)/'`epsonds-cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-cmd.Tpo $(DEPDIR)/libepsonds_la-epsonds-cmd.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-cmd.c' object='libepsonds_la-epsonds-cmd.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-cmd.lo `test -f 'epsonds-cmd.c' || echo '$(srcdir)/'`epsonds-cmd.c
-
-libepsonds_la-epsonds-ops.lo: epsonds-ops.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-ops.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-ops.Tpo -c -o libepsonds_la-epsonds-ops.lo `test -f 'epsonds-ops.c' || echo '$(srcdir)/'`epsonds-ops.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-ops.Tpo $(DEPDIR)/libepsonds_la-epsonds-ops.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-ops.c' object='libepsonds_la-epsonds-ops.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-ops.lo `test -f 'epsonds-ops.c' || echo '$(srcdir)/'`epsonds-ops.c
-
-libepsonds_la-epsonds-jpeg.lo: epsonds-jpeg.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-jpeg.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-jpeg.Tpo -c -o libepsonds_la-epsonds-jpeg.lo `test -f 'epsonds-jpeg.c' || echo '$(srcdir)/'`epsonds-jpeg.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-jpeg.Tpo $(DEPDIR)/libepsonds_la-epsonds-jpeg.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-jpeg.c' object='libepsonds_la-epsonds-jpeg.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-jpeg.lo `test -f 'epsonds-jpeg.c' || echo '$(srcdir)/'`epsonds-jpeg.c
-
-libepsonds_la-epsonds-net.lo: epsonds-net.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libepsonds_la-epsonds-net.lo -MD -MP -MF $(DEPDIR)/libepsonds_la-epsonds-net.Tpo -c -o libepsonds_la-epsonds-net.lo `test -f 'epsonds-net.c' || echo '$(srcdir)/'`epsonds-net.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libepsonds_la-epsonds-net.Tpo $(DEPDIR)/libepsonds_la-epsonds-net.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-net.c' object='libepsonds_la-epsonds-net.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libepsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libepsonds_la-epsonds-net.lo `test -f 'epsonds-net.c' || echo '$(srcdir)/'`epsonds-net.c
-
-libfujitsu_la-fujitsu.lo: fujitsu.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfujitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libfujitsu_la-fujitsu.lo -MD -MP -MF $(DEPDIR)/libfujitsu_la-fujitsu.Tpo -c -o libfujitsu_la-fujitsu.lo `test -f 'fujitsu.c' || echo '$(srcdir)/'`fujitsu.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libfujitsu_la-fujitsu.Tpo $(DEPDIR)/libfujitsu_la-fujitsu.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fujitsu.c' object='libfujitsu_la-fujitsu.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libfujitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libfujitsu_la-fujitsu.lo `test -f 'fujitsu.c' || echo '$(srcdir)/'`fujitsu.c
-
-libgenesys_la-genesys.lo: genesys.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys.Tpo -c -o libgenesys_la-genesys.lo `test -f 'genesys.c' || echo '$(srcdir)/'`genesys.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys.Tpo $(DEPDIR)/libgenesys_la-genesys.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys.c' object='libgenesys_la-genesys.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys.lo `test -f 'genesys.c' || echo '$(srcdir)/'`genesys.c
-
-libgenesys_la-genesys_gl646.lo: genesys_gl646.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl646.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl646.Tpo -c -o libgenesys_la-genesys_gl646.lo `test -f 'genesys_gl646.c' || echo '$(srcdir)/'`genesys_gl646.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl646.Tpo $(DEPDIR)/libgenesys_la-genesys_gl646.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl646.c' object='libgenesys_la-genesys_gl646.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl646.lo `test -f 'genesys_gl646.c' || echo '$(srcdir)/'`genesys_gl646.c
-
-libgenesys_la-genesys_gl841.lo: genesys_gl841.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl841.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl841.Tpo -c -o libgenesys_la-genesys_gl841.lo `test -f 'genesys_gl841.c' || echo '$(srcdir)/'`genesys_gl841.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl841.Tpo $(DEPDIR)/libgenesys_la-genesys_gl841.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl841.c' object='libgenesys_la-genesys_gl841.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl841.lo `test -f 'genesys_gl841.c' || echo '$(srcdir)/'`genesys_gl841.c
-
-libgenesys_la-genesys_gl843.lo: genesys_gl843.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl843.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl843.Tpo -c -o libgenesys_la-genesys_gl843.lo `test -f 'genesys_gl843.c' || echo '$(srcdir)/'`genesys_gl843.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl843.Tpo $(DEPDIR)/libgenesys_la-genesys_gl843.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl843.c' object='libgenesys_la-genesys_gl843.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl843.lo `test -f 'genesys_gl843.c' || echo '$(srcdir)/'`genesys_gl843.c
-
-libgenesys_la-genesys_gl846.lo: genesys_gl846.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl846.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl846.Tpo -c -o libgenesys_la-genesys_gl846.lo `test -f 'genesys_gl846.c' || echo '$(srcdir)/'`genesys_gl846.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl846.Tpo $(DEPDIR)/libgenesys_la-genesys_gl846.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl846.c' object='libgenesys_la-genesys_gl846.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl846.lo `test -f 'genesys_gl846.c' || echo '$(srcdir)/'`genesys_gl846.c
-
-libgenesys_la-genesys_gl847.lo: genesys_gl847.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl847.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl847.Tpo -c -o libgenesys_la-genesys_gl847.lo `test -f 'genesys_gl847.c' || echo '$(srcdir)/'`genesys_gl847.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl847.Tpo $(DEPDIR)/libgenesys_la-genesys_gl847.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl847.c' object='libgenesys_la-genesys_gl847.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl847.lo `test -f 'genesys_gl847.c' || echo '$(srcdir)/'`genesys_gl847.c
-
-libgenesys_la-genesys_gl124.lo: genesys_gl124.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_gl124.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_gl124.Tpo -c -o libgenesys_la-genesys_gl124.lo `test -f 'genesys_gl124.c' || echo '$(srcdir)/'`genesys_gl124.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_gl124.Tpo $(DEPDIR)/libgenesys_la-genesys_gl124.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_gl124.c' object='libgenesys_la-genesys_gl124.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_gl124.lo `test -f 'genesys_gl124.c' || echo '$(srcdir)/'`genesys_gl124.c
-
-libgenesys_la-genesys_low.lo: genesys_low.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgenesys_la-genesys_low.lo -MD -MP -MF $(DEPDIR)/libgenesys_la-genesys_low.Tpo -c -o libgenesys_la-genesys_low.lo `test -f 'genesys_low.c' || echo '$(srcdir)/'`genesys_low.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgenesys_la-genesys_low.Tpo $(DEPDIR)/libgenesys_la-genesys_low.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys_low.c' object='libgenesys_la-genesys_low.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgenesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgenesys_la-genesys_low.lo `test -f 'genesys_low.c' || echo '$(srcdir)/'`genesys_low.c
-
-libgphoto2_i_la-gphoto2.lo: gphoto2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_i_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_i_la-gphoto2.lo -MD -MP -MF $(DEPDIR)/libgphoto2_i_la-gphoto2.Tpo -c -o libgphoto2_i_la-gphoto2.lo `test -f 'gphoto2.c' || echo '$(srcdir)/'`gphoto2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_i_la-gphoto2.Tpo $(DEPDIR)/libgphoto2_i_la-gphoto2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2.c' object='libgphoto2_i_la-gphoto2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_i_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_i_la-gphoto2.lo `test -f 'gphoto2.c' || echo '$(srcdir)/'`gphoto2.c
-
-libgt68xx_la-gt68xx.lo: gt68xx.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgt68xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgt68xx_la-gt68xx.lo -MD -MP -MF $(DEPDIR)/libgt68xx_la-gt68xx.Tpo -c -o libgt68xx_la-gt68xx.lo `test -f 'gt68xx.c' || echo '$(srcdir)/'`gt68xx.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgt68xx_la-gt68xx.Tpo $(DEPDIR)/libgt68xx_la-gt68xx.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gt68xx.c' object='libgt68xx_la-gt68xx.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgt68xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgt68xx_la-gt68xx.lo `test -f 'gt68xx.c' || echo '$(srcdir)/'`gt68xx.c
-
-libhp_la-hp.lo: hp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp.Tpo -c -o libhp_la-hp.lo `test -f 'hp.c' || echo '$(srcdir)/'`hp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp.Tpo $(DEPDIR)/libhp_la-hp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp.c' object='libhp_la-hp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp.lo `test -f 'hp.c' || echo '$(srcdir)/'`hp.c
-
-libhp_la-hp-accessor.lo: hp-accessor.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-accessor.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-accessor.Tpo -c -o libhp_la-hp-accessor.lo `test -f 'hp-accessor.c' || echo '$(srcdir)/'`hp-accessor.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-accessor.Tpo $(DEPDIR)/libhp_la-hp-accessor.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-accessor.c' object='libhp_la-hp-accessor.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-accessor.lo `test -f 'hp-accessor.c' || echo '$(srcdir)/'`hp-accessor.c
-
-libhp_la-hp-device.lo: hp-device.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-device.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-device.Tpo -c -o libhp_la-hp-device.lo `test -f 'hp-device.c' || echo '$(srcdir)/'`hp-device.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-device.Tpo $(DEPDIR)/libhp_la-hp-device.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-device.c' object='libhp_la-hp-device.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-device.lo `test -f 'hp-device.c' || echo '$(srcdir)/'`hp-device.c
-
-libhp_la-hp-handle.lo: hp-handle.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-handle.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-handle.Tpo -c -o libhp_la-hp-handle.lo `test -f 'hp-handle.c' || echo '$(srcdir)/'`hp-handle.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-handle.Tpo $(DEPDIR)/libhp_la-hp-handle.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-handle.c' object='libhp_la-hp-handle.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-handle.lo `test -f 'hp-handle.c' || echo '$(srcdir)/'`hp-handle.c
-
-libhp_la-hp-hpmem.lo: hp-hpmem.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-hpmem.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-hpmem.Tpo -c -o libhp_la-hp-hpmem.lo `test -f 'hp-hpmem.c' || echo '$(srcdir)/'`hp-hpmem.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-hpmem.Tpo $(DEPDIR)/libhp_la-hp-hpmem.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-hpmem.c' object='libhp_la-hp-hpmem.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-hpmem.lo `test -f 'hp-hpmem.c' || echo '$(srcdir)/'`hp-hpmem.c
-
-libhp_la-hp-option.lo: hp-option.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-option.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-option.Tpo -c -o libhp_la-hp-option.lo `test -f 'hp-option.c' || echo '$(srcdir)/'`hp-option.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-option.Tpo $(DEPDIR)/libhp_la-hp-option.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-option.c' object='libhp_la-hp-option.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-option.lo `test -f 'hp-option.c' || echo '$(srcdir)/'`hp-option.c
-
-libhp_la-hp-scl.lo: hp-scl.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp_la-hp-scl.lo -MD -MP -MF $(DEPDIR)/libhp_la-hp-scl.Tpo -c -o libhp_la-hp-scl.lo `test -f 'hp-scl.c' || echo '$(srcdir)/'`hp-scl.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp_la-hp-scl.Tpo $(DEPDIR)/libhp_la-hp-scl.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-scl.c' object='libhp_la-hp-scl.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp_la-hp-scl.lo `test -f 'hp-scl.c' || echo '$(srcdir)/'`hp-scl.c
-
-libhp3500_la-hp3500.lo: hp3500.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp3500_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp3500_la-hp3500.lo -MD -MP -MF $(DEPDIR)/libhp3500_la-hp3500.Tpo -c -o libhp3500_la-hp3500.lo `test -f 'hp3500.c' || echo '$(srcdir)/'`hp3500.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp3500_la-hp3500.Tpo $(DEPDIR)/libhp3500_la-hp3500.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp3500.c' object='libhp3500_la-hp3500.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp3500_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp3500_la-hp3500.lo `test -f 'hp3500.c' || echo '$(srcdir)/'`hp3500.c
-
-libhp3900_la-hp3900.lo: hp3900.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp3900_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp3900_la-hp3900.lo -MD -MP -MF $(DEPDIR)/libhp3900_la-hp3900.Tpo -c -o libhp3900_la-hp3900.lo `test -f 'hp3900.c' || echo '$(srcdir)/'`hp3900.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp3900_la-hp3900.Tpo $(DEPDIR)/libhp3900_la-hp3900.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp3900.c' object='libhp3900_la-hp3900.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp3900_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp3900_la-hp3900.lo `test -f 'hp3900.c' || echo '$(srcdir)/'`hp3900.c
-
-libhp4200_la-hp4200.lo: hp4200.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp4200_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp4200_la-hp4200.lo -MD -MP -MF $(DEPDIR)/libhp4200_la-hp4200.Tpo -c -o libhp4200_la-hp4200.lo `test -f 'hp4200.c' || echo '$(srcdir)/'`hp4200.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp4200_la-hp4200.Tpo $(DEPDIR)/libhp4200_la-hp4200.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp4200.c' object='libhp4200_la-hp4200.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp4200_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp4200_la-hp4200.lo `test -f 'hp4200.c' || echo '$(srcdir)/'`hp4200.c
-
-libhp5400_la-hp5400.lo: hp5400.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp5400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp5400_la-hp5400.lo -MD -MP -MF $(DEPDIR)/libhp5400_la-hp5400.Tpo -c -o libhp5400_la-hp5400.lo `test -f 'hp5400.c' || echo '$(srcdir)/'`hp5400.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp5400_la-hp5400.Tpo $(DEPDIR)/libhp5400_la-hp5400.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp5400.c' object='libhp5400_la-hp5400.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp5400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp5400_la-hp5400.lo `test -f 'hp5400.c' || echo '$(srcdir)/'`hp5400.c
-
-libhp5590_la-hp5590.lo: hp5590.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp5590_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhp5590_la-hp5590.lo -MD -MP -MF $(DEPDIR)/libhp5590_la-hp5590.Tpo -c -o libhp5590_la-hp5590.lo `test -f 'hp5590.c' || echo '$(srcdir)/'`hp5590.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhp5590_la-hp5590.Tpo $(DEPDIR)/libhp5590_la-hp5590.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp5590.c' object='libhp5590_la-hp5590.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhp5590_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhp5590_la-hp5590.lo `test -f 'hp5590.c' || echo '$(srcdir)/'`hp5590.c
-
-libhpljm1005_la-hpljm1005.lo: hpljm1005.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhpljm1005_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhpljm1005_la-hpljm1005.lo -MD -MP -MF $(DEPDIR)/libhpljm1005_la-hpljm1005.Tpo -c -o libhpljm1005_la-hpljm1005.lo `test -f 'hpljm1005.c' || echo '$(srcdir)/'`hpljm1005.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhpljm1005_la-hpljm1005.Tpo $(DEPDIR)/libhpljm1005_la-hpljm1005.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hpljm1005.c' object='libhpljm1005_la-hpljm1005.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhpljm1005_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhpljm1005_la-hpljm1005.lo `test -f 'hpljm1005.c' || echo '$(srcdir)/'`hpljm1005.c
-
-libhpsj5s_la-hpsj5s.lo: hpsj5s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhpsj5s_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhpsj5s_la-hpsj5s.lo -MD -MP -MF $(DEPDIR)/libhpsj5s_la-hpsj5s.Tpo -c -o libhpsj5s_la-hpsj5s.lo `test -f 'hpsj5s.c' || echo '$(srcdir)/'`hpsj5s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhpsj5s_la-hpsj5s.Tpo $(DEPDIR)/libhpsj5s_la-hpsj5s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hpsj5s.c' object='libhpsj5s_la-hpsj5s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhpsj5s_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhpsj5s_la-hpsj5s.lo `test -f 'hpsj5s.c' || echo '$(srcdir)/'`hpsj5s.c
-
-libhs2p_la-hs2p.lo: hs2p.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhs2p_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhs2p_la-hs2p.lo -MD -MP -MF $(DEPDIR)/libhs2p_la-hs2p.Tpo -c -o libhs2p_la-hs2p.lo `test -f 'hs2p.c' || echo '$(srcdir)/'`hs2p.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhs2p_la-hs2p.Tpo $(DEPDIR)/libhs2p_la-hs2p.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hs2p.c' object='libhs2p_la-hs2p.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhs2p_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhs2p_la-hs2p.lo `test -f 'hs2p.c' || echo '$(srcdir)/'`hs2p.c
-
-libibm_la-ibm.lo: ibm.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libibm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libibm_la-ibm.lo -MD -MP -MF $(DEPDIR)/libibm_la-ibm.Tpo -c -o libibm_la-ibm.lo `test -f 'ibm.c' || echo '$(srcdir)/'`ibm.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibm_la-ibm.Tpo $(DEPDIR)/libibm_la-ibm.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibm.c' object='libibm_la-ibm.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libibm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libibm_la-ibm.lo `test -f 'ibm.c' || echo '$(srcdir)/'`ibm.c
-
-libkodak_la-kodak.lo: kodak.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkodak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkodak_la-kodak.lo -MD -MP -MF $(DEPDIR)/libkodak_la-kodak.Tpo -c -o libkodak_la-kodak.lo `test -f 'kodak.c' || echo '$(srcdir)/'`kodak.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkodak_la-kodak.Tpo $(DEPDIR)/libkodak_la-kodak.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak.c' object='libkodak_la-kodak.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkodak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkodak_la-kodak.lo `test -f 'kodak.c' || echo '$(srcdir)/'`kodak.c
-
-libkodakaio_la-kodakaio.lo: kodakaio.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkodakaio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkodakaio_la-kodakaio.lo -MD -MP -MF $(DEPDIR)/libkodakaio_la-kodakaio.Tpo -c -o libkodakaio_la-kodakaio.lo `test -f 'kodakaio.c' || echo '$(srcdir)/'`kodakaio.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkodakaio_la-kodakaio.Tpo $(DEPDIR)/libkodakaio_la-kodakaio.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodakaio.c' object='libkodakaio_la-kodakaio.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkodakaio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkodakaio_la-kodakaio.lo `test -f 'kodakaio.c' || echo '$(srcdir)/'`kodakaio.c
-
-libkvs1025_la-kvs1025.lo: kvs1025.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs1025_la-kvs1025.lo -MD -MP -MF $(DEPDIR)/libkvs1025_la-kvs1025.Tpo -c -o libkvs1025_la-kvs1025.lo `test -f 'kvs1025.c' || echo '$(srcdir)/'`kvs1025.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs1025_la-kvs1025.Tpo $(DEPDIR)/libkvs1025_la-kvs1025.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs1025.c' object='libkvs1025_la-kvs1025.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs1025_la-kvs1025.lo `test -f 'kvs1025.c' || echo '$(srcdir)/'`kvs1025.c
-
-libkvs1025_la-kvs1025_low.lo: kvs1025_low.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs1025_la-kvs1025_low.lo -MD -MP -MF $(DEPDIR)/libkvs1025_la-kvs1025_low.Tpo -c -o libkvs1025_la-kvs1025_low.lo `test -f 'kvs1025_low.c' || echo '$(srcdir)/'`kvs1025_low.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs1025_la-kvs1025_low.Tpo $(DEPDIR)/libkvs1025_la-kvs1025_low.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs1025_low.c' object='libkvs1025_la-kvs1025_low.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs1025_la-kvs1025_low.lo `test -f 'kvs1025_low.c' || echo '$(srcdir)/'`kvs1025_low.c
-
-libkvs1025_la-kvs1025_opt.lo: kvs1025_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs1025_la-kvs1025_opt.lo -MD -MP -MF $(DEPDIR)/libkvs1025_la-kvs1025_opt.Tpo -c -o libkvs1025_la-kvs1025_opt.lo `test -f 'kvs1025_opt.c' || echo '$(srcdir)/'`kvs1025_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs1025_la-kvs1025_opt.Tpo $(DEPDIR)/libkvs1025_la-kvs1025_opt.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs1025_opt.c' object='libkvs1025_la-kvs1025_opt.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs1025_la-kvs1025_opt.lo `test -f 'kvs1025_opt.c' || echo '$(srcdir)/'`kvs1025_opt.c
-
-libkvs1025_la-kvs1025_usb.lo: kvs1025_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs1025_la-kvs1025_usb.lo -MD -MP -MF $(DEPDIR)/libkvs1025_la-kvs1025_usb.Tpo -c -o libkvs1025_la-kvs1025_usb.lo `test -f 'kvs1025_usb.c' || echo '$(srcdir)/'`kvs1025_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs1025_la-kvs1025_usb.Tpo $(DEPDIR)/libkvs1025_la-kvs1025_usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs1025_usb.c' object='libkvs1025_la-kvs1025_usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs1025_la-kvs1025_usb.lo `test -f 'kvs1025_usb.c' || echo '$(srcdir)/'`kvs1025_usb.c
-
-libkvs20xx_la-kvs20xx.lo: kvs20xx.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs20xx_la-kvs20xx.lo -MD -MP -MF $(DEPDIR)/libkvs20xx_la-kvs20xx.Tpo -c -o libkvs20xx_la-kvs20xx.lo `test -f 'kvs20xx.c' || echo '$(srcdir)/'`kvs20xx.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs20xx_la-kvs20xx.Tpo $(DEPDIR)/libkvs20xx_la-kvs20xx.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs20xx.c' object='libkvs20xx_la-kvs20xx.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs20xx_la-kvs20xx.lo `test -f 'kvs20xx.c' || echo '$(srcdir)/'`kvs20xx.c
-
-libkvs20xx_la-kvs20xx_cmd.lo: kvs20xx_cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs20xx_la-kvs20xx_cmd.lo -MD -MP -MF $(DEPDIR)/libkvs20xx_la-kvs20xx_cmd.Tpo -c -o libkvs20xx_la-kvs20xx_cmd.lo `test -f 'kvs20xx_cmd.c' || echo '$(srcdir)/'`kvs20xx_cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs20xx_la-kvs20xx_cmd.Tpo $(DEPDIR)/libkvs20xx_la-kvs20xx_cmd.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs20xx_cmd.c' object='libkvs20xx_la-kvs20xx_cmd.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs20xx_la-kvs20xx_cmd.lo `test -f 'kvs20xx_cmd.c' || echo '$(srcdir)/'`kvs20xx_cmd.c
-
-libkvs20xx_la-kvs20xx_opt.lo: kvs20xx_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs20xx_la-kvs20xx_opt.lo -MD -MP -MF $(DEPDIR)/libkvs20xx_la-kvs20xx_opt.Tpo -c -o libkvs20xx_la-kvs20xx_opt.lo `test -f 'kvs20xx_opt.c' || echo '$(srcdir)/'`kvs20xx_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs20xx_la-kvs20xx_opt.Tpo $(DEPDIR)/libkvs20xx_la-kvs20xx_opt.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs20xx_opt.c' object='libkvs20xx_la-kvs20xx_opt.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs20xx_la-kvs20xx_opt.lo `test -f 'kvs20xx_opt.c' || echo '$(srcdir)/'`kvs20xx_opt.c
-
-libkvs40xx_la-kvs40xx.lo: kvs40xx.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs40xx_la-kvs40xx.lo -MD -MP -MF $(DEPDIR)/libkvs40xx_la-kvs40xx.Tpo -c -o libkvs40xx_la-kvs40xx.lo `test -f 'kvs40xx.c' || echo '$(srcdir)/'`kvs40xx.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs40xx_la-kvs40xx.Tpo $(DEPDIR)/libkvs40xx_la-kvs40xx.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs40xx.c' object='libkvs40xx_la-kvs40xx.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs40xx_la-kvs40xx.lo `test -f 'kvs40xx.c' || echo '$(srcdir)/'`kvs40xx.c
-
-libkvs40xx_la-kvs40xx_cmd.lo: kvs40xx_cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs40xx_la-kvs40xx_cmd.lo -MD -MP -MF $(DEPDIR)/libkvs40xx_la-kvs40xx_cmd.Tpo -c -o libkvs40xx_la-kvs40xx_cmd.lo `test -f 'kvs40xx_cmd.c' || echo '$(srcdir)/'`kvs40xx_cmd.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs40xx_la-kvs40xx_cmd.Tpo $(DEPDIR)/libkvs40xx_la-kvs40xx_cmd.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs40xx_cmd.c' object='libkvs40xx_la-kvs40xx_cmd.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs40xx_la-kvs40xx_cmd.lo `test -f 'kvs40xx_cmd.c' || echo '$(srcdir)/'`kvs40xx_cmd.c
-
-libkvs40xx_la-kvs40xx_opt.lo: kvs40xx_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libkvs40xx_la-kvs40xx_opt.lo -MD -MP -MF $(DEPDIR)/libkvs40xx_la-kvs40xx_opt.Tpo -c -o libkvs40xx_la-kvs40xx_opt.lo `test -f 'kvs40xx_opt.c' || echo '$(srcdir)/'`kvs40xx_opt.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkvs40xx_la-kvs40xx_opt.Tpo $(DEPDIR)/libkvs40xx_la-kvs40xx_opt.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs40xx_opt.c' object='libkvs40xx_la-kvs40xx_opt.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libkvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libkvs40xx_la-kvs40xx_opt.lo `test -f 'kvs40xx_opt.c' || echo '$(srcdir)/'`kvs40xx_opt.c
-
-libleo_la-leo.lo: leo.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libleo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libleo_la-leo.lo -MD -MP -MF $(DEPDIR)/libleo_la-leo.Tpo -c -o libleo_la-leo.lo `test -f 'leo.c' || echo '$(srcdir)/'`leo.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libleo_la-leo.Tpo $(DEPDIR)/libleo_la-leo.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='leo.c' object='libleo_la-leo.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libleo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libleo_la-leo.lo `test -f 'leo.c' || echo '$(srcdir)/'`leo.c
-
-liblexmark_la-lexmark.lo: lexmark.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblexmark_la-lexmark.lo -MD -MP -MF $(DEPDIR)/liblexmark_la-lexmark.Tpo -c -o liblexmark_la-lexmark.lo `test -f 'lexmark.c' || echo '$(srcdir)/'`lexmark.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblexmark_la-lexmark.Tpo $(DEPDIR)/liblexmark_la-lexmark.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexmark.c' object='liblexmark_la-lexmark.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblexmark_la-lexmark.lo `test -f 'lexmark.c' || echo '$(srcdir)/'`lexmark.c
-
-liblexmark_la-lexmark_low.lo: lexmark_low.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblexmark_la-lexmark_low.lo -MD -MP -MF $(DEPDIR)/liblexmark_la-lexmark_low.Tpo -c -o liblexmark_la-lexmark_low.lo `test -f 'lexmark_low.c' || echo '$(srcdir)/'`lexmark_low.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblexmark_la-lexmark_low.Tpo $(DEPDIR)/liblexmark_la-lexmark_low.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexmark_low.c' object='liblexmark_la-lexmark_low.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblexmark_la-lexmark_low.lo `test -f 'lexmark_low.c' || echo '$(srcdir)/'`lexmark_low.c
-
-libma1509_la-ma1509.lo: ma1509.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libma1509_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libma1509_la-ma1509.lo -MD -MP -MF $(DEPDIR)/libma1509_la-ma1509.Tpo -c -o libma1509_la-ma1509.lo `test -f 'ma1509.c' || echo '$(srcdir)/'`ma1509.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libma1509_la-ma1509.Tpo $(DEPDIR)/libma1509_la-ma1509.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ma1509.c' object='libma1509_la-ma1509.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libma1509_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libma1509_la-ma1509.lo `test -f 'ma1509.c' || echo '$(srcdir)/'`ma1509.c
-
-libmagicolor_la-magicolor.lo: magicolor.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagicolor_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmagicolor_la-magicolor.lo -MD -MP -MF $(DEPDIR)/libmagicolor_la-magicolor.Tpo -c -o libmagicolor_la-magicolor.lo `test -f 'magicolor.c' || echo '$(srcdir)/'`magicolor.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmagicolor_la-magicolor.Tpo $(DEPDIR)/libmagicolor_la-magicolor.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='magicolor.c' object='libmagicolor_la-magicolor.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmagicolor_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmagicolor_la-magicolor.lo `test -f 'magicolor.c' || echo '$(srcdir)/'`magicolor.c
-
-libmatsushita_la-matsushita.lo: matsushita.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmatsushita_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmatsushita_la-matsushita.lo -MD -MP -MF $(DEPDIR)/libmatsushita_la-matsushita.Tpo -c -o libmatsushita_la-matsushita.lo `test -f 'matsushita.c' || echo '$(srcdir)/'`matsushita.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmatsushita_la-matsushita.Tpo $(DEPDIR)/libmatsushita_la-matsushita.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matsushita.c' object='libmatsushita_la-matsushita.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmatsushita_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmatsushita_la-matsushita.lo `test -f 'matsushita.c' || echo '$(srcdir)/'`matsushita.c
-
-libmicrotek_la-microtek.lo: microtek.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrotek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmicrotek_la-microtek.lo -MD -MP -MF $(DEPDIR)/libmicrotek_la-microtek.Tpo -c -o libmicrotek_la-microtek.lo `test -f 'microtek.c' || echo '$(srcdir)/'`microtek.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmicrotek_la-microtek.Tpo $(DEPDIR)/libmicrotek_la-microtek.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='microtek.c' object='libmicrotek_la-microtek.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrotek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmicrotek_la-microtek.lo `test -f 'microtek.c' || echo '$(srcdir)/'`microtek.c
-
-libmicrotek2_la-microtek2.lo: microtek2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrotek2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmicrotek2_la-microtek2.lo -MD -MP -MF $(DEPDIR)/libmicrotek2_la-microtek2.Tpo -c -o libmicrotek2_la-microtek2.lo `test -f 'microtek2.c' || echo '$(srcdir)/'`microtek2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmicrotek2_la-microtek2.Tpo $(DEPDIR)/libmicrotek2_la-microtek2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='microtek2.c' object='libmicrotek2_la-microtek2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrotek2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmicrotek2_la-microtek2.lo `test -f 'microtek2.c' || echo '$(srcdir)/'`microtek2.c
-
-libmustek_la-mustek.lo: mustek.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmustek_la-mustek.lo -MD -MP -MF $(DEPDIR)/libmustek_la-mustek.Tpo -c -o libmustek_la-mustek.lo `test -f 'mustek.c' || echo '$(srcdir)/'`mustek.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmustek_la-mustek.Tpo $(DEPDIR)/libmustek_la-mustek.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek.c' object='libmustek_la-mustek.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmustek_la-mustek.lo `test -f 'mustek.c' || echo '$(srcdir)/'`mustek.c
-
-libmustek_pp_la-mustek_pp.lo: mustek_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmustek_pp_la-mustek_pp.lo -MD -MP -MF $(DEPDIR)/libmustek_pp_la-mustek_pp.Tpo -c -o libmustek_pp_la-mustek_pp.lo `test -f 'mustek_pp.c' || echo '$(srcdir)/'`mustek_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmustek_pp_la-mustek_pp.Tpo $(DEPDIR)/libmustek_pp_la-mustek_pp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_pp.c' object='libmustek_pp_la-mustek_pp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmustek_pp_la-mustek_pp.lo `test -f 'mustek_pp.c' || echo '$(srcdir)/'`mustek_pp.c
-
-libmustek_usb_la-mustek_usb.lo: mustek_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmustek_usb_la-mustek_usb.lo -MD -MP -MF $(DEPDIR)/libmustek_usb_la-mustek_usb.Tpo -c -o libmustek_usb_la-mustek_usb.lo `test -f 'mustek_usb.c' || echo '$(srcdir)/'`mustek_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmustek_usb_la-mustek_usb.Tpo $(DEPDIR)/libmustek_usb_la-mustek_usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_usb.c' object='libmustek_usb_la-mustek_usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmustek_usb_la-mustek_usb.lo `test -f 'mustek_usb.c' || echo '$(srcdir)/'`mustek_usb.c
-
-libmustek_usb2_la-mustek_usb2.lo: mustek_usb2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_usb2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libmustek_usb2_la-mustek_usb2.lo -MD -MP -MF $(DEPDIR)/libmustek_usb2_la-mustek_usb2.Tpo -c -o libmustek_usb2_la-mustek_usb2.lo `test -f 'mustek_usb2.c' || echo '$(srcdir)/'`mustek_usb2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libmustek_usb2_la-mustek_usb2.Tpo $(DEPDIR)/libmustek_usb2_la-mustek_usb2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_usb2.c' object='libmustek_usb2_la-mustek_usb2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmustek_usb2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libmustek_usb2_la-mustek_usb2.lo `test -f 'mustek_usb2.c' || echo '$(srcdir)/'`mustek_usb2.c
-
-libnec_la-nec.lo: nec.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnec_la-nec.lo -MD -MP -MF $(DEPDIR)/libnec_la-nec.Tpo -c -o libnec_la-nec.lo `test -f 'nec.c' || echo '$(srcdir)/'`nec.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnec_la-nec.Tpo $(DEPDIR)/libnec_la-nec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nec.c' object='libnec_la-nec.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnec_la-nec.lo `test -f 'nec.c' || echo '$(srcdir)/'`nec.c
-
-libnet_la-net.lo: net.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnet_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libnet_la-net.lo -MD -MP -MF $(DEPDIR)/libnet_la-net.Tpo -c -o libnet_la-net.lo `test -f 'net.c' || echo '$(srcdir)/'`net.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libnet_la-net.Tpo $(DEPDIR)/libnet_la-net.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='net.c' object='libnet_la-net.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnet_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libnet_la-net.lo `test -f 'net.c' || echo '$(srcdir)/'`net.c
-
-libniash_la-niash.lo: niash.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libniash_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libniash_la-niash.lo -MD -MP -MF $(DEPDIR)/libniash_la-niash.Tpo -c -o libniash_la-niash.lo `test -f 'niash.c' || echo '$(srcdir)/'`niash.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libniash_la-niash.Tpo $(DEPDIR)/libniash_la-niash.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='niash.c' object='libniash_la-niash.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libniash_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libniash_la-niash.lo `test -f 'niash.c' || echo '$(srcdir)/'`niash.c
-
-libp5_la-p5.lo: p5.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libp5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libp5_la-p5.lo -MD -MP -MF $(DEPDIR)/libp5_la-p5.Tpo -c -o libp5_la-p5.lo `test -f 'p5.c' || echo '$(srcdir)/'`p5.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libp5_la-p5.Tpo $(DEPDIR)/libp5_la-p5.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='p5.c' object='libp5_la-p5.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libp5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libp5_la-p5.lo `test -f 'p5.c' || echo '$(srcdir)/'`p5.c
-
-libpie_la-pie.lo: pie.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpie_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpie_la-pie.lo -MD -MP -MF $(DEPDIR)/libpie_la-pie.Tpo -c -o libpie_la-pie.lo `test -f 'pie.c' || echo '$(srcdir)/'`pie.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpie_la-pie.Tpo $(DEPDIR)/libpie_la-pie.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pie.c' object='libpie_la-pie.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpie_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpie_la-pie.lo `test -f 'pie.c' || echo '$(srcdir)/'`pie.c
-
-libpieusb_la-pieusb_buffer.lo: pieusb_buffer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpieusb_la-pieusb_buffer.lo -MD -MP -MF $(DEPDIR)/libpieusb_la-pieusb_buffer.Tpo -c -o libpieusb_la-pieusb_buffer.lo `test -f 'pieusb_buffer.c' || echo '$(srcdir)/'`pieusb_buffer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpieusb_la-pieusb_buffer.Tpo $(DEPDIR)/libpieusb_la-pieusb_buffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb_buffer.c' object='libpieusb_la-pieusb_buffer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpieusb_la-pieusb_buffer.lo `test -f 'pieusb_buffer.c' || echo '$(srcdir)/'`pieusb_buffer.c
-
-libpieusb_la-pieusb_scancmd.lo: pieusb_scancmd.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpieusb_la-pieusb_scancmd.lo -MD -MP -MF $(DEPDIR)/libpieusb_la-pieusb_scancmd.Tpo -c -o libpieusb_la-pieusb_scancmd.lo `test -f 'pieusb_scancmd.c' || echo '$(srcdir)/'`pieusb_scancmd.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpieusb_la-pieusb_scancmd.Tpo $(DEPDIR)/libpieusb_la-pieusb_scancmd.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb_scancmd.c' object='libpieusb_la-pieusb_scancmd.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpieusb_la-pieusb_scancmd.lo `test -f 'pieusb_scancmd.c' || echo '$(srcdir)/'`pieusb_scancmd.c
-
-libpieusb_la-pieusb_specific.lo: pieusb_specific.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpieusb_la-pieusb_specific.lo -MD -MP -MF $(DEPDIR)/libpieusb_la-pieusb_specific.Tpo -c -o libpieusb_la-pieusb_specific.lo `test -f 'pieusb_specific.c' || echo '$(srcdir)/'`pieusb_specific.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpieusb_la-pieusb_specific.Tpo $(DEPDIR)/libpieusb_la-pieusb_specific.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb_specific.c' object='libpieusb_la-pieusb_specific.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpieusb_la-pieusb_specific.lo `test -f 'pieusb_specific.c' || echo '$(srcdir)/'`pieusb_specific.c
-
-libpieusb_la-pieusb_usb.lo: pieusb_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpieusb_la-pieusb_usb.lo -MD -MP -MF $(DEPDIR)/libpieusb_la-pieusb_usb.Tpo -c -o libpieusb_la-pieusb_usb.lo `test -f 'pieusb_usb.c' || echo '$(srcdir)/'`pieusb_usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpieusb_la-pieusb_usb.Tpo $(DEPDIR)/libpieusb_la-pieusb_usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb_usb.c' object='libpieusb_la-pieusb_usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpieusb_la-pieusb_usb.lo `test -f 'pieusb_usb.c' || echo '$(srcdir)/'`pieusb_usb.c
-
-libpieusb_la-pieusb.lo: pieusb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpieusb_la-pieusb.lo -MD -MP -MF $(DEPDIR)/libpieusb_la-pieusb.Tpo -c -o libpieusb_la-pieusb.lo `test -f 'pieusb.c' || echo '$(srcdir)/'`pieusb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpieusb_la-pieusb.Tpo $(DEPDIR)/libpieusb_la-pieusb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb.c' object='libpieusb_la-pieusb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpieusb_la-pieusb.lo `test -f 'pieusb.c' || echo '$(srcdir)/'`pieusb.c
-
-libpint_la-pint.lo: pint.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpint_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpint_la-pint.lo -MD -MP -MF $(DEPDIR)/libpint_la-pint.Tpo -c -o libpint_la-pint.lo `test -f 'pint.c' || echo '$(srcdir)/'`pint.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpint_la-pint.Tpo $(DEPDIR)/libpint_la-pint.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pint.c' object='libpint_la-pint.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpint_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpint_la-pint.lo `test -f 'pint.c' || echo '$(srcdir)/'`pint.c
-
-libpixma_la-pixma.lo: pixma.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma.Tpo -c -o libpixma_la-pixma.lo `test -f 'pixma.c' || echo '$(srcdir)/'`pixma.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma.Tpo $(DEPDIR)/libpixma_la-pixma.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma.c' object='libpixma_la-pixma.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma.lo `test -f 'pixma.c' || echo '$(srcdir)/'`pixma.c
-
-libpixma_la-pixma_io_sanei.lo: pixma_io_sanei.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_io_sanei.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_io_sanei.Tpo -c -o libpixma_la-pixma_io_sanei.lo `test -f 'pixma_io_sanei.c' || echo '$(srcdir)/'`pixma_io_sanei.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_io_sanei.Tpo $(DEPDIR)/libpixma_la-pixma_io_sanei.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_io_sanei.c' object='libpixma_la-pixma_io_sanei.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_io_sanei.lo `test -f 'pixma_io_sanei.c' || echo '$(srcdir)/'`pixma_io_sanei.c
-
-libpixma_la-pixma_common.lo: pixma_common.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_common.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_common.Tpo -c -o libpixma_la-pixma_common.lo `test -f 'pixma_common.c' || echo '$(srcdir)/'`pixma_common.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_common.Tpo $(DEPDIR)/libpixma_la-pixma_common.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_common.c' object='libpixma_la-pixma_common.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_common.lo `test -f 'pixma_common.c' || echo '$(srcdir)/'`pixma_common.c
-
-libpixma_la-pixma_mp150.lo: pixma_mp150.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_mp150.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_mp150.Tpo -c -o libpixma_la-pixma_mp150.lo `test -f 'pixma_mp150.c' || echo '$(srcdir)/'`pixma_mp150.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_mp150.Tpo $(DEPDIR)/libpixma_la-pixma_mp150.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_mp150.c' object='libpixma_la-pixma_mp150.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_mp150.lo `test -f 'pixma_mp150.c' || echo '$(srcdir)/'`pixma_mp150.c
-
-libpixma_la-pixma_mp730.lo: pixma_mp730.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_mp730.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_mp730.Tpo -c -o libpixma_la-pixma_mp730.lo `test -f 'pixma_mp730.c' || echo '$(srcdir)/'`pixma_mp730.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_mp730.Tpo $(DEPDIR)/libpixma_la-pixma_mp730.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_mp730.c' object='libpixma_la-pixma_mp730.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_mp730.lo `test -f 'pixma_mp730.c' || echo '$(srcdir)/'`pixma_mp730.c
-
-libpixma_la-pixma_mp750.lo: pixma_mp750.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_mp750.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_mp750.Tpo -c -o libpixma_la-pixma_mp750.lo `test -f 'pixma_mp750.c' || echo '$(srcdir)/'`pixma_mp750.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_mp750.Tpo $(DEPDIR)/libpixma_la-pixma_mp750.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_mp750.c' object='libpixma_la-pixma_mp750.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_mp750.lo `test -f 'pixma_mp750.c' || echo '$(srcdir)/'`pixma_mp750.c
-
-libpixma_la-pixma_mp810.lo: pixma_mp810.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_mp810.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_mp810.Tpo -c -o libpixma_la-pixma_mp810.lo `test -f 'pixma_mp810.c' || echo '$(srcdir)/'`pixma_mp810.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_mp810.Tpo $(DEPDIR)/libpixma_la-pixma_mp810.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_mp810.c' object='libpixma_la-pixma_mp810.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_mp810.lo `test -f 'pixma_mp810.c' || echo '$(srcdir)/'`pixma_mp810.c
-
-libpixma_la-pixma_imageclass.lo: pixma_imageclass.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_imageclass.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_imageclass.Tpo -c -o libpixma_la-pixma_imageclass.lo `test -f 'pixma_imageclass.c' || echo '$(srcdir)/'`pixma_imageclass.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_imageclass.Tpo $(DEPDIR)/libpixma_la-pixma_imageclass.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_imageclass.c' object='libpixma_la-pixma_imageclass.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_imageclass.lo `test -f 'pixma_imageclass.c' || echo '$(srcdir)/'`pixma_imageclass.c
-
-libpixma_la-pixma_bjnp.lo: pixma_bjnp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpixma_la-pixma_bjnp.lo -MD -MP -MF $(DEPDIR)/libpixma_la-pixma_bjnp.Tpo -c -o libpixma_la-pixma_bjnp.lo `test -f 'pixma_bjnp.c' || echo '$(srcdir)/'`pixma_bjnp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpixma_la-pixma_bjnp.Tpo $(DEPDIR)/libpixma_la-pixma_bjnp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma_bjnp.c' object='libpixma_la-pixma_bjnp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpixma_la-pixma_bjnp.lo `test -f 'pixma_bjnp.c' || echo '$(srcdir)/'`pixma_bjnp.c
-
-libplustek_la-plustek.lo: plustek.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libplustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libplustek_la-plustek.lo -MD -MP -MF $(DEPDIR)/libplustek_la-plustek.Tpo -c -o libplustek_la-plustek.lo `test -f 'plustek.c' || echo '$(srcdir)/'`plustek.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libplustek_la-plustek.Tpo $(DEPDIR)/libplustek_la-plustek.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='plustek.c' object='libplustek_la-plustek.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libplustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libplustek_la-plustek.lo `test -f 'plustek.c' || echo '$(srcdir)/'`plustek.c
-
-libplustek_pp_la-plustek_pp.lo: plustek_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libplustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libplustek_pp_la-plustek_pp.lo -MD -MP -MF $(DEPDIR)/libplustek_pp_la-plustek_pp.Tpo -c -o libplustek_pp_la-plustek_pp.lo `test -f 'plustek_pp.c' || echo '$(srcdir)/'`plustek_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libplustek_pp_la-plustek_pp.Tpo $(DEPDIR)/libplustek_pp_la-plustek_pp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='plustek_pp.c' object='libplustek_pp_la-plustek_pp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libplustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libplustek_pp_la-plustek_pp.lo `test -f 'plustek_pp.c' || echo '$(srcdir)/'`plustek_pp.c
-
-libpnm_la-pnm.lo: pnm.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpnm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libpnm_la-pnm.lo -MD -MP -MF $(DEPDIR)/libpnm_la-pnm.Tpo -c -o libpnm_la-pnm.lo `test -f 'pnm.c' || echo '$(srcdir)/'`pnm.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpnm_la-pnm.Tpo $(DEPDIR)/libpnm_la-pnm.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pnm.c' object='libpnm_la-pnm.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpnm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libpnm_la-pnm.lo `test -f 'pnm.c' || echo '$(srcdir)/'`pnm.c
-
-libqcam_la-qcam.lo: qcam.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcam_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libqcam_la-qcam.lo -MD -MP -MF $(DEPDIR)/libqcam_la-qcam.Tpo -c -o libqcam_la-qcam.lo `test -f 'qcam.c' || echo '$(srcdir)/'`qcam.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libqcam_la-qcam.Tpo $(DEPDIR)/libqcam_la-qcam.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcam.c' object='libqcam_la-qcam.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libqcam_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libqcam_la-qcam.lo `test -f 'qcam.c' || echo '$(srcdir)/'`qcam.c
-
-libricoh_la-ricoh.lo: ricoh.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libricoh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libricoh_la-ricoh.lo -MD -MP -MF $(DEPDIR)/libricoh_la-ricoh.Tpo -c -o libricoh_la-ricoh.lo `test -f 'ricoh.c' || echo '$(srcdir)/'`ricoh.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libricoh_la-ricoh.Tpo $(DEPDIR)/libricoh_la-ricoh.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ricoh.c' object='libricoh_la-ricoh.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libricoh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libricoh_la-ricoh.lo `test -f 'ricoh.c' || echo '$(srcdir)/'`ricoh.c
-
-librts8891_la-rts8891.lo: rts8891.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT librts8891_la-rts8891.lo -MD -MP -MF $(DEPDIR)/librts8891_la-rts8891.Tpo -c -o librts8891_la-rts8891.lo `test -f 'rts8891.c' || echo '$(srcdir)/'`rts8891.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librts8891_la-rts8891.Tpo $(DEPDIR)/librts8891_la-rts8891.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rts8891.c' object='librts8891_la-rts8891.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o librts8891_la-rts8891.lo `test -f 'rts8891.c' || echo '$(srcdir)/'`rts8891.c
-
-librts8891_la-rts88xx_lib.lo: rts88xx_lib.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT librts8891_la-rts88xx_lib.lo -MD -MP -MF $(DEPDIR)/librts8891_la-rts88xx_lib.Tpo -c -o librts8891_la-rts88xx_lib.lo `test -f 'rts88xx_lib.c' || echo '$(srcdir)/'`rts88xx_lib.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librts8891_la-rts88xx_lib.Tpo $(DEPDIR)/librts8891_la-rts88xx_lib.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rts88xx_lib.c' object='librts8891_la-rts88xx_lib.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(librts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o librts8891_la-rts88xx_lib.lo `test -f 'rts88xx_lib.c' || echo '$(srcdir)/'`rts88xx_lib.c
-
-libs9036_la-s9036.lo: s9036.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libs9036_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libs9036_la-s9036.lo -MD -MP -MF $(DEPDIR)/libs9036_la-s9036.Tpo -c -o libs9036_la-s9036.lo `test -f 's9036.c' || echo '$(srcdir)/'`s9036.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libs9036_la-s9036.Tpo $(DEPDIR)/libs9036_la-s9036.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='s9036.c' object='libs9036_la-s9036.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libs9036_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libs9036_la-s9036.lo `test -f 's9036.c' || echo '$(srcdir)/'`s9036.c
-
-libsane_abaton_la-abaton-s.lo: abaton-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_abaton_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_abaton_la-abaton-s.lo -MD -MP -MF $(DEPDIR)/libsane_abaton_la-abaton-s.Tpo -c -o libsane_abaton_la-abaton-s.lo `test -f 'abaton-s.c' || echo '$(srcdir)/'`abaton-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_abaton_la-abaton-s.Tpo $(DEPDIR)/libsane_abaton_la-abaton-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='abaton-s.c' object='libsane_abaton_la-abaton-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_abaton_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_abaton_la-abaton-s.lo `test -f 'abaton-s.c' || echo '$(srcdir)/'`abaton-s.c
-
-libsane_agfafocus_la-agfafocus-s.lo: agfafocus-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_agfafocus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_agfafocus_la-agfafocus-s.lo -MD -MP -MF $(DEPDIR)/libsane_agfafocus_la-agfafocus-s.Tpo -c -o libsane_agfafocus_la-agfafocus-s.lo `test -f 'agfafocus-s.c' || echo '$(srcdir)/'`agfafocus-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_agfafocus_la-agfafocus-s.Tpo $(DEPDIR)/libsane_agfafocus_la-agfafocus-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='agfafocus-s.c' object='libsane_agfafocus_la-agfafocus-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_agfafocus_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_agfafocus_la-agfafocus-s.lo `test -f 'agfafocus-s.c' || echo '$(srcdir)/'`agfafocus-s.c
-
-libsane_apple_la-apple-s.lo: apple-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_apple_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_apple_la-apple-s.lo -MD -MP -MF $(DEPDIR)/libsane_apple_la-apple-s.Tpo -c -o libsane_apple_la-apple-s.lo `test -f 'apple-s.c' || echo '$(srcdir)/'`apple-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_apple_la-apple-s.Tpo $(DEPDIR)/libsane_apple_la-apple-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='apple-s.c' object='libsane_apple_la-apple-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_apple_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_apple_la-apple-s.lo `test -f 'apple-s.c' || echo '$(srcdir)/'`apple-s.c
-
-libsane_artec_la-artec-s.lo: artec-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_artec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_artec_la-artec-s.lo -MD -MP -MF $(DEPDIR)/libsane_artec_la-artec-s.Tpo -c -o libsane_artec_la-artec-s.lo `test -f 'artec-s.c' || echo '$(srcdir)/'`artec-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_artec_la-artec-s.Tpo $(DEPDIR)/libsane_artec_la-artec-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='artec-s.c' object='libsane_artec_la-artec-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_artec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_artec_la-artec-s.lo `test -f 'artec-s.c' || echo '$(srcdir)/'`artec-s.c
-
-libsane_artec_eplus48u_la-artec_eplus48u-s.lo: artec_eplus48u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_artec_eplus48u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_artec_eplus48u_la-artec_eplus48u-s.lo -MD -MP -MF $(DEPDIR)/libsane_artec_eplus48u_la-artec_eplus48u-s.Tpo -c -o libsane_artec_eplus48u_la-artec_eplus48u-s.lo `test -f 'artec_eplus48u-s.c' || echo '$(srcdir)/'`artec_eplus48u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_artec_eplus48u_la-artec_eplus48u-s.Tpo $(DEPDIR)/libsane_artec_eplus48u_la-artec_eplus48u-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='artec_eplus48u-s.c' object='libsane_artec_eplus48u_la-artec_eplus48u-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_artec_eplus48u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_artec_eplus48u_la-artec_eplus48u-s.lo `test -f 'artec_eplus48u-s.c' || echo '$(srcdir)/'`artec_eplus48u-s.c
-
-libsane_as6e_la-as6e-s.lo: as6e-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_as6e_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_as6e_la-as6e-s.lo -MD -MP -MF $(DEPDIR)/libsane_as6e_la-as6e-s.Tpo -c -o libsane_as6e_la-as6e-s.lo `test -f 'as6e-s.c' || echo '$(srcdir)/'`as6e-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_as6e_la-as6e-s.Tpo $(DEPDIR)/libsane_as6e_la-as6e-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='as6e-s.c' object='libsane_as6e_la-as6e-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_as6e_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_as6e_la-as6e-s.lo `test -f 'as6e-s.c' || echo '$(srcdir)/'`as6e-s.c
-
-libsane_avision_la-avision-s.lo: avision-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_avision_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_avision_la-avision-s.lo -MD -MP -MF $(DEPDIR)/libsane_avision_la-avision-s.Tpo -c -o libsane_avision_la-avision-s.lo `test -f 'avision-s.c' || echo '$(srcdir)/'`avision-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_avision_la-avision-s.Tpo $(DEPDIR)/libsane_avision_la-avision-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='avision-s.c' object='libsane_avision_la-avision-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_avision_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_avision_la-avision-s.lo `test -f 'avision-s.c' || echo '$(srcdir)/'`avision-s.c
-
-libsane_bh_la-bh-s.lo: bh-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_bh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_bh_la-bh-s.lo -MD -MP -MF $(DEPDIR)/libsane_bh_la-bh-s.Tpo -c -o libsane_bh_la-bh-s.lo `test -f 'bh-s.c' || echo '$(srcdir)/'`bh-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_bh_la-bh-s.Tpo $(DEPDIR)/libsane_bh_la-bh-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bh-s.c' object='libsane_bh_la-bh-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_bh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_bh_la-bh-s.lo `test -f 'bh-s.c' || echo '$(srcdir)/'`bh-s.c
-
-libsane_canon_la-canon-s.lo: canon-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_canon_la-canon-s.lo -MD -MP -MF $(DEPDIR)/libsane_canon_la-canon-s.Tpo -c -o libsane_canon_la-canon-s.lo `test -f 'canon-s.c' || echo '$(srcdir)/'`canon-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_canon_la-canon-s.Tpo $(DEPDIR)/libsane_canon_la-canon-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon-s.c' object='libsane_canon_la-canon-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_canon_la-canon-s.lo `test -f 'canon-s.c' || echo '$(srcdir)/'`canon-s.c
-
-libsane_canon630u_la-canon630u-s.lo: canon630u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon630u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_canon630u_la-canon630u-s.lo -MD -MP -MF $(DEPDIR)/libsane_canon630u_la-canon630u-s.Tpo -c -o libsane_canon630u_la-canon630u-s.lo `test -f 'canon630u-s.c' || echo '$(srcdir)/'`canon630u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_canon630u_la-canon630u-s.Tpo $(DEPDIR)/libsane_canon630u_la-canon630u-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon630u-s.c' object='libsane_canon630u_la-canon630u-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon630u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_canon630u_la-canon630u-s.lo `test -f 'canon630u-s.c' || echo '$(srcdir)/'`canon630u-s.c
-
-libsane_canon_dr_la-canon_dr-s.lo: canon_dr-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_dr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_canon_dr_la-canon_dr-s.lo -MD -MP -MF $(DEPDIR)/libsane_canon_dr_la-canon_dr-s.Tpo -c -o libsane_canon_dr_la-canon_dr-s.lo `test -f 'canon_dr-s.c' || echo '$(srcdir)/'`canon_dr-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_canon_dr_la-canon_dr-s.Tpo $(DEPDIR)/libsane_canon_dr_la-canon_dr-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_dr-s.c' object='libsane_canon_dr_la-canon_dr-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_dr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_canon_dr_la-canon_dr-s.lo `test -f 'canon_dr-s.c' || echo '$(srcdir)/'`canon_dr-s.c
-
-libsane_canon_pp_la-canon_pp-s.lo: canon_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_canon_pp_la-canon_pp-s.lo -MD -MP -MF $(DEPDIR)/libsane_canon_pp_la-canon_pp-s.Tpo -c -o libsane_canon_pp_la-canon_pp-s.lo `test -f 'canon_pp-s.c' || echo '$(srcdir)/'`canon_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_canon_pp_la-canon_pp-s.Tpo $(DEPDIR)/libsane_canon_pp_la-canon_pp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon_pp-s.c' object='libsane_canon_pp_la-canon_pp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_canon_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_canon_pp_la-canon_pp-s.lo `test -f 'canon_pp-s.c' || echo '$(srcdir)/'`canon_pp-s.c
-
-libsane_cardscan_la-cardscan-s.lo: cardscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_cardscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_cardscan_la-cardscan-s.lo -MD -MP -MF $(DEPDIR)/libsane_cardscan_la-cardscan-s.Tpo -c -o libsane_cardscan_la-cardscan-s.lo `test -f 'cardscan-s.c' || echo '$(srcdir)/'`cardscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_cardscan_la-cardscan-s.Tpo $(DEPDIR)/libsane_cardscan_la-cardscan-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cardscan-s.c' object='libsane_cardscan_la-cardscan-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_cardscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_cardscan_la-cardscan-s.lo `test -f 'cardscan-s.c' || echo '$(srcdir)/'`cardscan-s.c
-
-libsane_coolscan_la-coolscan-s.lo: coolscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_coolscan_la-coolscan-s.lo -MD -MP -MF $(DEPDIR)/libsane_coolscan_la-coolscan-s.Tpo -c -o libsane_coolscan_la-coolscan-s.lo `test -f 'coolscan-s.c' || echo '$(srcdir)/'`coolscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_coolscan_la-coolscan-s.Tpo $(DEPDIR)/libsane_coolscan_la-coolscan-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan-s.c' object='libsane_coolscan_la-coolscan-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_coolscan_la-coolscan-s.lo `test -f 'coolscan-s.c' || echo '$(srcdir)/'`coolscan-s.c
-
-libsane_coolscan2_la-coolscan2-s.lo: coolscan2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_coolscan2_la-coolscan2-s.lo -MD -MP -MF $(DEPDIR)/libsane_coolscan2_la-coolscan2-s.Tpo -c -o libsane_coolscan2_la-coolscan2-s.lo `test -f 'coolscan2-s.c' || echo '$(srcdir)/'`coolscan2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_coolscan2_la-coolscan2-s.Tpo $(DEPDIR)/libsane_coolscan2_la-coolscan2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan2-s.c' object='libsane_coolscan2_la-coolscan2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_coolscan2_la-coolscan2-s.lo `test -f 'coolscan2-s.c' || echo '$(srcdir)/'`coolscan2-s.c
-
-libsane_coolscan3_la-coolscan3-s.lo: coolscan3-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_coolscan3_la-coolscan3-s.lo -MD -MP -MF $(DEPDIR)/libsane_coolscan3_la-coolscan3-s.Tpo -c -o libsane_coolscan3_la-coolscan3-s.lo `test -f 'coolscan3-s.c' || echo '$(srcdir)/'`coolscan3-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_coolscan3_la-coolscan3-s.Tpo $(DEPDIR)/libsane_coolscan3_la-coolscan3-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='coolscan3-s.c' object='libsane_coolscan3_la-coolscan3-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_coolscan3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_coolscan3_la-coolscan3-s.lo `test -f 'coolscan3-s.c' || echo '$(srcdir)/'`coolscan3-s.c
-
-libsane_dc210_la-dc210-s.lo: dc210-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc210_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dc210_la-dc210-s.lo -MD -MP -MF $(DEPDIR)/libsane_dc210_la-dc210-s.Tpo -c -o libsane_dc210_la-dc210-s.lo `test -f 'dc210-s.c' || echo '$(srcdir)/'`dc210-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dc210_la-dc210-s.Tpo $(DEPDIR)/libsane_dc210_la-dc210-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc210-s.c' object='libsane_dc210_la-dc210-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc210_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dc210_la-dc210-s.lo `test -f 'dc210-s.c' || echo '$(srcdir)/'`dc210-s.c
-
-libsane_dc240_la-dc240-s.lo: dc240-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc240_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dc240_la-dc240-s.lo -MD -MP -MF $(DEPDIR)/libsane_dc240_la-dc240-s.Tpo -c -o libsane_dc240_la-dc240-s.lo `test -f 'dc240-s.c' || echo '$(srcdir)/'`dc240-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dc240_la-dc240-s.Tpo $(DEPDIR)/libsane_dc240_la-dc240-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc240-s.c' object='libsane_dc240_la-dc240-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc240_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dc240_la-dc240-s.lo `test -f 'dc240-s.c' || echo '$(srcdir)/'`dc240-s.c
-
-libsane_dc25_la-dc25-s.lo: dc25-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc25_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dc25_la-dc25-s.lo -MD -MP -MF $(DEPDIR)/libsane_dc25_la-dc25-s.Tpo -c -o libsane_dc25_la-dc25-s.lo `test -f 'dc25-s.c' || echo '$(srcdir)/'`dc25-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dc25_la-dc25-s.Tpo $(DEPDIR)/libsane_dc25_la-dc25-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dc25-s.c' object='libsane_dc25_la-dc25-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dc25_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dc25_la-dc25-s.lo `test -f 'dc25-s.c' || echo '$(srcdir)/'`dc25-s.c
-
-libsane_dell1600n_net_la-dell1600n_net-s.lo: dell1600n_net-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dell1600n_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dell1600n_net_la-dell1600n_net-s.lo -MD -MP -MF $(DEPDIR)/libsane_dell1600n_net_la-dell1600n_net-s.Tpo -c -o libsane_dell1600n_net_la-dell1600n_net-s.lo `test -f 'dell1600n_net-s.c' || echo '$(srcdir)/'`dell1600n_net-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dell1600n_net_la-dell1600n_net-s.Tpo $(DEPDIR)/libsane_dell1600n_net_la-dell1600n_net-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dell1600n_net-s.c' object='libsane_dell1600n_net_la-dell1600n_net-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dell1600n_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dell1600n_net_la-dell1600n_net-s.lo `test -f 'dell1600n_net-s.c' || echo '$(srcdir)/'`dell1600n_net-s.c
-
-libsane_dll_la-dll-s.lo: dll-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dll_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dll_la-dll-s.lo -MD -MP -MF $(DEPDIR)/libsane_dll_la-dll-s.Tpo -c -o libsane_dll_la-dll-s.lo `test -f 'dll-s.c' || echo '$(srcdir)/'`dll-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dll_la-dll-s.Tpo $(DEPDIR)/libsane_dll_la-dll-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dll-s.c' object='libsane_dll_la-dll-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dll_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dll_la-dll-s.lo `test -f 'dll-s.c' || echo '$(srcdir)/'`dll-s.c
-
-libsane_dmc_la-dmc-s.lo: dmc-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dmc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_dmc_la-dmc-s.lo -MD -MP -MF $(DEPDIR)/libsane_dmc_la-dmc-s.Tpo -c -o libsane_dmc_la-dmc-s.lo `test -f 'dmc-s.c' || echo '$(srcdir)/'`dmc-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_dmc_la-dmc-s.Tpo $(DEPDIR)/libsane_dmc_la-dmc-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dmc-s.c' object='libsane_dmc_la-dmc-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_dmc_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_dmc_la-dmc-s.lo `test -f 'dmc-s.c' || echo '$(srcdir)/'`dmc-s.c
-
-libsane_epjitsu_la-epjitsu-s.lo: epjitsu-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epjitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_epjitsu_la-epjitsu-s.lo -MD -MP -MF $(DEPDIR)/libsane_epjitsu_la-epjitsu-s.Tpo -c -o libsane_epjitsu_la-epjitsu-s.lo `test -f 'epjitsu-s.c' || echo '$(srcdir)/'`epjitsu-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_epjitsu_la-epjitsu-s.Tpo $(DEPDIR)/libsane_epjitsu_la-epjitsu-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epjitsu-s.c' object='libsane_epjitsu_la-epjitsu-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epjitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_epjitsu_la-epjitsu-s.lo `test -f 'epjitsu-s.c' || echo '$(srcdir)/'`epjitsu-s.c
-
-libsane_epson_la-epson-s.lo: epson-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_epson_la-epson-s.lo -MD -MP -MF $(DEPDIR)/libsane_epson_la-epson-s.Tpo -c -o libsane_epson_la-epson-s.lo `test -f 'epson-s.c' || echo '$(srcdir)/'`epson-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_epson_la-epson-s.Tpo $(DEPDIR)/libsane_epson_la-epson-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson-s.c' object='libsane_epson_la-epson-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epson_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_epson_la-epson-s.lo `test -f 'epson-s.c' || echo '$(srcdir)/'`epson-s.c
-
-libsane_epson2_la-epson2-s.lo: epson2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_epson2_la-epson2-s.lo -MD -MP -MF $(DEPDIR)/libsane_epson2_la-epson2-s.Tpo -c -o libsane_epson2_la-epson2-s.lo `test -f 'epson2-s.c' || echo '$(srcdir)/'`epson2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_epson2_la-epson2-s.Tpo $(DEPDIR)/libsane_epson2_la-epson2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epson2-s.c' object='libsane_epson2_la-epson2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epson2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_epson2_la-epson2-s.lo `test -f 'epson2-s.c' || echo '$(srcdir)/'`epson2-s.c
-
-libsane_epsonds_la-epsonds-s.lo: epsonds-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_epsonds_la-epsonds-s.lo -MD -MP -MF $(DEPDIR)/libsane_epsonds_la-epsonds-s.Tpo -c -o libsane_epsonds_la-epsonds-s.lo `test -f 'epsonds-s.c' || echo '$(srcdir)/'`epsonds-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_epsonds_la-epsonds-s.Tpo $(DEPDIR)/libsane_epsonds_la-epsonds-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsonds-s.c' object='libsane_epsonds_la-epsonds-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_epsonds_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_epsonds_la-epsonds-s.lo `test -f 'epsonds-s.c' || echo '$(srcdir)/'`epsonds-s.c
-
-libsane_fujitsu_la-fujitsu-s.lo: fujitsu-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_fujitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_fujitsu_la-fujitsu-s.lo -MD -MP -MF $(DEPDIR)/libsane_fujitsu_la-fujitsu-s.Tpo -c -o libsane_fujitsu_la-fujitsu-s.lo `test -f 'fujitsu-s.c' || echo '$(srcdir)/'`fujitsu-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_fujitsu_la-fujitsu-s.Tpo $(DEPDIR)/libsane_fujitsu_la-fujitsu-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fujitsu-s.c' object='libsane_fujitsu_la-fujitsu-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_fujitsu_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_fujitsu_la-fujitsu-s.lo `test -f 'fujitsu-s.c' || echo '$(srcdir)/'`fujitsu-s.c
-
-libsane_genesys_la-genesys-s.lo: genesys-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_genesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_genesys_la-genesys-s.lo -MD -MP -MF $(DEPDIR)/libsane_genesys_la-genesys-s.Tpo -c -o libsane_genesys_la-genesys-s.lo `test -f 'genesys-s.c' || echo '$(srcdir)/'`genesys-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_genesys_la-genesys-s.Tpo $(DEPDIR)/libsane_genesys_la-genesys-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genesys-s.c' object='libsane_genesys_la-genesys-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_genesys_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_genesys_la-genesys-s.lo `test -f 'genesys-s.c' || echo '$(srcdir)/'`genesys-s.c
-
-libsane_gphoto2_la-gphoto2-s.lo: gphoto2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_gphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_gphoto2_la-gphoto2-s.lo -MD -MP -MF $(DEPDIR)/libsane_gphoto2_la-gphoto2-s.Tpo -c -o libsane_gphoto2_la-gphoto2-s.lo `test -f 'gphoto2-s.c' || echo '$(srcdir)/'`gphoto2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_gphoto2_la-gphoto2-s.Tpo $(DEPDIR)/libsane_gphoto2_la-gphoto2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-s.c' object='libsane_gphoto2_la-gphoto2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_gphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_gphoto2_la-gphoto2-s.lo `test -f 'gphoto2-s.c' || echo '$(srcdir)/'`gphoto2-s.c
-
-libsane_gt68xx_la-gt68xx-s.lo: gt68xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_gt68xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_gt68xx_la-gt68xx-s.lo -MD -MP -MF $(DEPDIR)/libsane_gt68xx_la-gt68xx-s.Tpo -c -o libsane_gt68xx_la-gt68xx-s.lo `test -f 'gt68xx-s.c' || echo '$(srcdir)/'`gt68xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_gt68xx_la-gt68xx-s.Tpo $(DEPDIR)/libsane_gt68xx_la-gt68xx-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gt68xx-s.c' object='libsane_gt68xx_la-gt68xx-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_gt68xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_gt68xx_la-gt68xx-s.lo `test -f 'gt68xx-s.c' || echo '$(srcdir)/'`gt68xx-s.c
-
-libsane_hp_la-hp-s.lo: hp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp_la-hp-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp_la-hp-s.Tpo -c -o libsane_hp_la-hp-s.lo `test -f 'hp-s.c' || echo '$(srcdir)/'`hp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp_la-hp-s.Tpo $(DEPDIR)/libsane_hp_la-hp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp-s.c' object='libsane_hp_la-hp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp_la-hp-s.lo `test -f 'hp-s.c' || echo '$(srcdir)/'`hp-s.c
-
-libsane_hp3500_la-hp3500-s.lo: hp3500-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp3500_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp3500_la-hp3500-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp3500_la-hp3500-s.Tpo -c -o libsane_hp3500_la-hp3500-s.lo `test -f 'hp3500-s.c' || echo '$(srcdir)/'`hp3500-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp3500_la-hp3500-s.Tpo $(DEPDIR)/libsane_hp3500_la-hp3500-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp3500-s.c' object='libsane_hp3500_la-hp3500-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp3500_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp3500_la-hp3500-s.lo `test -f 'hp3500-s.c' || echo '$(srcdir)/'`hp3500-s.c
-
-libsane_hp3900_la-hp3900-s.lo: hp3900-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp3900_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp3900_la-hp3900-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp3900_la-hp3900-s.Tpo -c -o libsane_hp3900_la-hp3900-s.lo `test -f 'hp3900-s.c' || echo '$(srcdir)/'`hp3900-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp3900_la-hp3900-s.Tpo $(DEPDIR)/libsane_hp3900_la-hp3900-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp3900-s.c' object='libsane_hp3900_la-hp3900-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp3900_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp3900_la-hp3900-s.lo `test -f 'hp3900-s.c' || echo '$(srcdir)/'`hp3900-s.c
-
-libsane_hp4200_la-hp4200-s.lo: hp4200-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp4200_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp4200_la-hp4200-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp4200_la-hp4200-s.Tpo -c -o libsane_hp4200_la-hp4200-s.lo `test -f 'hp4200-s.c' || echo '$(srcdir)/'`hp4200-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp4200_la-hp4200-s.Tpo $(DEPDIR)/libsane_hp4200_la-hp4200-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp4200-s.c' object='libsane_hp4200_la-hp4200-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp4200_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp4200_la-hp4200-s.lo `test -f 'hp4200-s.c' || echo '$(srcdir)/'`hp4200-s.c
-
-libsane_hp5400_la-hp5400-s.lo: hp5400-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp5400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp5400_la-hp5400-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp5400_la-hp5400-s.Tpo -c -o libsane_hp5400_la-hp5400-s.lo `test -f 'hp5400-s.c' || echo '$(srcdir)/'`hp5400-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp5400_la-hp5400-s.Tpo $(DEPDIR)/libsane_hp5400_la-hp5400-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp5400-s.c' object='libsane_hp5400_la-hp5400-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp5400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp5400_la-hp5400-s.lo `test -f 'hp5400-s.c' || echo '$(srcdir)/'`hp5400-s.c
-
-libsane_hp5590_la-hp5590-s.lo: hp5590-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp5590_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hp5590_la-hp5590-s.lo -MD -MP -MF $(DEPDIR)/libsane_hp5590_la-hp5590-s.Tpo -c -o libsane_hp5590_la-hp5590-s.lo `test -f 'hp5590-s.c' || echo '$(srcdir)/'`hp5590-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hp5590_la-hp5590-s.Tpo $(DEPDIR)/libsane_hp5590_la-hp5590-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hp5590-s.c' object='libsane_hp5590_la-hp5590-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hp5590_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hp5590_la-hp5590-s.lo `test -f 'hp5590-s.c' || echo '$(srcdir)/'`hp5590-s.c
-
-libsane_hpljm1005_la-hpljm1005-s.lo: hpljm1005-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hpljm1005_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hpljm1005_la-hpljm1005-s.lo -MD -MP -MF $(DEPDIR)/libsane_hpljm1005_la-hpljm1005-s.Tpo -c -o libsane_hpljm1005_la-hpljm1005-s.lo `test -f 'hpljm1005-s.c' || echo '$(srcdir)/'`hpljm1005-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hpljm1005_la-hpljm1005-s.Tpo $(DEPDIR)/libsane_hpljm1005_la-hpljm1005-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hpljm1005-s.c' object='libsane_hpljm1005_la-hpljm1005-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hpljm1005_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hpljm1005_la-hpljm1005-s.lo `test -f 'hpljm1005-s.c' || echo '$(srcdir)/'`hpljm1005-s.c
-
-libsane_hpsj5s_la-hpsj5s-s.lo: hpsj5s-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hpsj5s_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hpsj5s_la-hpsj5s-s.lo -MD -MP -MF $(DEPDIR)/libsane_hpsj5s_la-hpsj5s-s.Tpo -c -o libsane_hpsj5s_la-hpsj5s-s.lo `test -f 'hpsj5s-s.c' || echo '$(srcdir)/'`hpsj5s-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hpsj5s_la-hpsj5s-s.Tpo $(DEPDIR)/libsane_hpsj5s_la-hpsj5s-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hpsj5s-s.c' object='libsane_hpsj5s_la-hpsj5s-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hpsj5s_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hpsj5s_la-hpsj5s-s.lo `test -f 'hpsj5s-s.c' || echo '$(srcdir)/'`hpsj5s-s.c
-
-libsane_hs2p_la-hs2p-s.lo: hs2p-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hs2p_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_hs2p_la-hs2p-s.lo -MD -MP -MF $(DEPDIR)/libsane_hs2p_la-hs2p-s.Tpo -c -o libsane_hs2p_la-hs2p-s.lo `test -f 'hs2p-s.c' || echo '$(srcdir)/'`hs2p-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_hs2p_la-hs2p-s.Tpo $(DEPDIR)/libsane_hs2p_la-hs2p-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hs2p-s.c' object='libsane_hs2p_la-hs2p-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_hs2p_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_hs2p_la-hs2p-s.lo `test -f 'hs2p-s.c' || echo '$(srcdir)/'`hs2p-s.c
-
-libsane_ibm_la-ibm-s.lo: ibm-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ibm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_ibm_la-ibm-s.lo -MD -MP -MF $(DEPDIR)/libsane_ibm_la-ibm-s.Tpo -c -o libsane_ibm_la-ibm-s.lo `test -f 'ibm-s.c' || echo '$(srcdir)/'`ibm-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_ibm_la-ibm-s.Tpo $(DEPDIR)/libsane_ibm_la-ibm-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibm-s.c' object='libsane_ibm_la-ibm-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ibm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_ibm_la-ibm-s.lo `test -f 'ibm-s.c' || echo '$(srcdir)/'`ibm-s.c
-
-libsane_kodak_la-kodak-s.lo: kodak-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kodak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_kodak_la-kodak-s.lo -MD -MP -MF $(DEPDIR)/libsane_kodak_la-kodak-s.Tpo -c -o libsane_kodak_la-kodak-s.lo `test -f 'kodak-s.c' || echo '$(srcdir)/'`kodak-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_kodak_la-kodak-s.Tpo $(DEPDIR)/libsane_kodak_la-kodak-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodak-s.c' object='libsane_kodak_la-kodak-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kodak_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_kodak_la-kodak-s.lo `test -f 'kodak-s.c' || echo '$(srcdir)/'`kodak-s.c
-
-libsane_kodakaio_la-kodakaio-s.lo: kodakaio-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kodakaio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_kodakaio_la-kodakaio-s.lo -MD -MP -MF $(DEPDIR)/libsane_kodakaio_la-kodakaio-s.Tpo -c -o libsane_kodakaio_la-kodakaio-s.lo `test -f 'kodakaio-s.c' || echo '$(srcdir)/'`kodakaio-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_kodakaio_la-kodakaio-s.Tpo $(DEPDIR)/libsane_kodakaio_la-kodakaio-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kodakaio-s.c' object='libsane_kodakaio_la-kodakaio-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kodakaio_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_kodakaio_la-kodakaio-s.lo `test -f 'kodakaio-s.c' || echo '$(srcdir)/'`kodakaio-s.c
-
-libsane_kvs1025_la-kvs1025-s.lo: kvs1025-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_kvs1025_la-kvs1025-s.lo -MD -MP -MF $(DEPDIR)/libsane_kvs1025_la-kvs1025-s.Tpo -c -o libsane_kvs1025_la-kvs1025-s.lo `test -f 'kvs1025-s.c' || echo '$(srcdir)/'`kvs1025-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_kvs1025_la-kvs1025-s.Tpo $(DEPDIR)/libsane_kvs1025_la-kvs1025-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs1025-s.c' object='libsane_kvs1025_la-kvs1025-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs1025_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_kvs1025_la-kvs1025-s.lo `test -f 'kvs1025-s.c' || echo '$(srcdir)/'`kvs1025-s.c
-
-libsane_kvs20xx_la-kvs20xx-s.lo: kvs20xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_kvs20xx_la-kvs20xx-s.lo -MD -MP -MF $(DEPDIR)/libsane_kvs20xx_la-kvs20xx-s.Tpo -c -o libsane_kvs20xx_la-kvs20xx-s.lo `test -f 'kvs20xx-s.c' || echo '$(srcdir)/'`kvs20xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_kvs20xx_la-kvs20xx-s.Tpo $(DEPDIR)/libsane_kvs20xx_la-kvs20xx-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs20xx-s.c' object='libsane_kvs20xx_la-kvs20xx-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs20xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_kvs20xx_la-kvs20xx-s.lo `test -f 'kvs20xx-s.c' || echo '$(srcdir)/'`kvs20xx-s.c
-
-libsane_kvs40xx_la-kvs40xx-s.lo: kvs40xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_kvs40xx_la-kvs40xx-s.lo -MD -MP -MF $(DEPDIR)/libsane_kvs40xx_la-kvs40xx-s.Tpo -c -o libsane_kvs40xx_la-kvs40xx-s.lo `test -f 'kvs40xx-s.c' || echo '$(srcdir)/'`kvs40xx-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_kvs40xx_la-kvs40xx-s.Tpo $(DEPDIR)/libsane_kvs40xx_la-kvs40xx-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kvs40xx-s.c' object='libsane_kvs40xx_la-kvs40xx-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_kvs40xx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_kvs40xx_la-kvs40xx-s.lo `test -f 'kvs40xx-s.c' || echo '$(srcdir)/'`kvs40xx-s.c
-
-libsane_leo_la-leo-s.lo: leo-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_leo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_leo_la-leo-s.lo -MD -MP -MF $(DEPDIR)/libsane_leo_la-leo-s.Tpo -c -o libsane_leo_la-leo-s.lo `test -f 'leo-s.c' || echo '$(srcdir)/'`leo-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_leo_la-leo-s.Tpo $(DEPDIR)/libsane_leo_la-leo-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='leo-s.c' object='libsane_leo_la-leo-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_leo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_leo_la-leo-s.lo `test -f 'leo-s.c' || echo '$(srcdir)/'`leo-s.c
-
-libsane_lexmark_la-lexmark-s.lo: lexmark-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_lexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_lexmark_la-lexmark-s.lo -MD -MP -MF $(DEPDIR)/libsane_lexmark_la-lexmark-s.Tpo -c -o libsane_lexmark_la-lexmark-s.lo `test -f 'lexmark-s.c' || echo '$(srcdir)/'`lexmark-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_lexmark_la-lexmark-s.Tpo $(DEPDIR)/libsane_lexmark_la-lexmark-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lexmark-s.c' object='libsane_lexmark_la-lexmark-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_lexmark_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_lexmark_la-lexmark-s.lo `test -f 'lexmark-s.c' || echo '$(srcdir)/'`lexmark-s.c
-
-libsane_ma1509_la-ma1509-s.lo: ma1509-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ma1509_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_ma1509_la-ma1509-s.lo -MD -MP -MF $(DEPDIR)/libsane_ma1509_la-ma1509-s.Tpo -c -o libsane_ma1509_la-ma1509-s.lo `test -f 'ma1509-s.c' || echo '$(srcdir)/'`ma1509-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_ma1509_la-ma1509-s.Tpo $(DEPDIR)/libsane_ma1509_la-ma1509-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ma1509-s.c' object='libsane_ma1509_la-ma1509-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ma1509_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_ma1509_la-ma1509-s.lo `test -f 'ma1509-s.c' || echo '$(srcdir)/'`ma1509-s.c
-
-libsane_magicolor_la-magicolor-s.lo: magicolor-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_magicolor_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_magicolor_la-magicolor-s.lo -MD -MP -MF $(DEPDIR)/libsane_magicolor_la-magicolor-s.Tpo -c -o libsane_magicolor_la-magicolor-s.lo `test -f 'magicolor-s.c' || echo '$(srcdir)/'`magicolor-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_magicolor_la-magicolor-s.Tpo $(DEPDIR)/libsane_magicolor_la-magicolor-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='magicolor-s.c' object='libsane_magicolor_la-magicolor-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_magicolor_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_magicolor_la-magicolor-s.lo `test -f 'magicolor-s.c' || echo '$(srcdir)/'`magicolor-s.c
-
-libsane_matsushita_la-matsushita-s.lo: matsushita-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_matsushita_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_matsushita_la-matsushita-s.lo -MD -MP -MF $(DEPDIR)/libsane_matsushita_la-matsushita-s.Tpo -c -o libsane_matsushita_la-matsushita-s.lo `test -f 'matsushita-s.c' || echo '$(srcdir)/'`matsushita-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_matsushita_la-matsushita-s.Tpo $(DEPDIR)/libsane_matsushita_la-matsushita-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='matsushita-s.c' object='libsane_matsushita_la-matsushita-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_matsushita_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_matsushita_la-matsushita-s.lo `test -f 'matsushita-s.c' || echo '$(srcdir)/'`matsushita-s.c
-
-libsane_microtek_la-microtek-s.lo: microtek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_microtek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_microtek_la-microtek-s.lo -MD -MP -MF $(DEPDIR)/libsane_microtek_la-microtek-s.Tpo -c -o libsane_microtek_la-microtek-s.lo `test -f 'microtek-s.c' || echo '$(srcdir)/'`microtek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_microtek_la-microtek-s.Tpo $(DEPDIR)/libsane_microtek_la-microtek-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='microtek-s.c' object='libsane_microtek_la-microtek-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_microtek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_microtek_la-microtek-s.lo `test -f 'microtek-s.c' || echo '$(srcdir)/'`microtek-s.c
-
-libsane_microtek2_la-microtek2-s.lo: microtek2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_microtek2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_microtek2_la-microtek2-s.lo -MD -MP -MF $(DEPDIR)/libsane_microtek2_la-microtek2-s.Tpo -c -o libsane_microtek2_la-microtek2-s.lo `test -f 'microtek2-s.c' || echo '$(srcdir)/'`microtek2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_microtek2_la-microtek2-s.Tpo $(DEPDIR)/libsane_microtek2_la-microtek2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='microtek2-s.c' object='libsane_microtek2_la-microtek2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_microtek2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_microtek2_la-microtek2-s.lo `test -f 'microtek2-s.c' || echo '$(srcdir)/'`microtek2-s.c
-
-libsane_mustek_la-mustek-s.lo: mustek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_mustek_la-mustek-s.lo -MD -MP -MF $(DEPDIR)/libsane_mustek_la-mustek-s.Tpo -c -o libsane_mustek_la-mustek-s.lo `test -f 'mustek-s.c' || echo '$(srcdir)/'`mustek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_mustek_la-mustek-s.Tpo $(DEPDIR)/libsane_mustek_la-mustek-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek-s.c' object='libsane_mustek_la-mustek-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_mustek_la-mustek-s.lo `test -f 'mustek-s.c' || echo '$(srcdir)/'`mustek-s.c
-
-libsane_mustek_pp_la-mustek_pp-s.lo: mustek_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_mustek_pp_la-mustek_pp-s.lo -MD -MP -MF $(DEPDIR)/libsane_mustek_pp_la-mustek_pp-s.Tpo -c -o libsane_mustek_pp_la-mustek_pp-s.lo `test -f 'mustek_pp-s.c' || echo '$(srcdir)/'`mustek_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_mustek_pp_la-mustek_pp-s.Tpo $(DEPDIR)/libsane_mustek_pp_la-mustek_pp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_pp-s.c' object='libsane_mustek_pp_la-mustek_pp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_mustek_pp_la-mustek_pp-s.lo `test -f 'mustek_pp-s.c' || echo '$(srcdir)/'`mustek_pp-s.c
-
-libsane_mustek_usb_la-mustek_usb-s.lo: mustek_usb-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_mustek_usb_la-mustek_usb-s.lo -MD -MP -MF $(DEPDIR)/libsane_mustek_usb_la-mustek_usb-s.Tpo -c -o libsane_mustek_usb_la-mustek_usb-s.lo `test -f 'mustek_usb-s.c' || echo '$(srcdir)/'`mustek_usb-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_mustek_usb_la-mustek_usb-s.Tpo $(DEPDIR)/libsane_mustek_usb_la-mustek_usb-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_usb-s.c' object='libsane_mustek_usb_la-mustek_usb-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_mustek_usb_la-mustek_usb-s.lo `test -f 'mustek_usb-s.c' || echo '$(srcdir)/'`mustek_usb-s.c
-
-libsane_mustek_usb2_la-mustek_usb2-s.lo: mustek_usb2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_usb2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_mustek_usb2_la-mustek_usb2-s.lo -MD -MP -MF $(DEPDIR)/libsane_mustek_usb2_la-mustek_usb2-s.Tpo -c -o libsane_mustek_usb2_la-mustek_usb2-s.lo `test -f 'mustek_usb2-s.c' || echo '$(srcdir)/'`mustek_usb2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_mustek_usb2_la-mustek_usb2-s.Tpo $(DEPDIR)/libsane_mustek_usb2_la-mustek_usb2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mustek_usb2-s.c' object='libsane_mustek_usb2_la-mustek_usb2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_mustek_usb2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_mustek_usb2_la-mustek_usb2-s.lo `test -f 'mustek_usb2-s.c' || echo '$(srcdir)/'`mustek_usb2-s.c
-
-libsane_nec_la-nec-s.lo: nec-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_nec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_nec_la-nec-s.lo -MD -MP -MF $(DEPDIR)/libsane_nec_la-nec-s.Tpo -c -o libsane_nec_la-nec-s.lo `test -f 'nec-s.c' || echo '$(srcdir)/'`nec-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_nec_la-nec-s.Tpo $(DEPDIR)/libsane_nec_la-nec-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nec-s.c' object='libsane_nec_la-nec-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_nec_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_nec_la-nec-s.lo `test -f 'nec-s.c' || echo '$(srcdir)/'`nec-s.c
-
-libsane_net_la-net-s.lo: net-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_net_la-net-s.lo -MD -MP -MF $(DEPDIR)/libsane_net_la-net-s.Tpo -c -o libsane_net_la-net-s.lo `test -f 'net-s.c' || echo '$(srcdir)/'`net-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_net_la-net-s.Tpo $(DEPDIR)/libsane_net_la-net-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='net-s.c' object='libsane_net_la-net-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_net_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_net_la-net-s.lo `test -f 'net-s.c' || echo '$(srcdir)/'`net-s.c
-
-libsane_niash_la-niash-s.lo: niash-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_niash_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_niash_la-niash-s.lo -MD -MP -MF $(DEPDIR)/libsane_niash_la-niash-s.Tpo -c -o libsane_niash_la-niash-s.lo `test -f 'niash-s.c' || echo '$(srcdir)/'`niash-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_niash_la-niash-s.Tpo $(DEPDIR)/libsane_niash_la-niash-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='niash-s.c' object='libsane_niash_la-niash-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_niash_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_niash_la-niash-s.lo `test -f 'niash-s.c' || echo '$(srcdir)/'`niash-s.c
-
-libsane_p5_la-p5-s.lo: p5-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_p5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_p5_la-p5-s.lo -MD -MP -MF $(DEPDIR)/libsane_p5_la-p5-s.Tpo -c -o libsane_p5_la-p5-s.lo `test -f 'p5-s.c' || echo '$(srcdir)/'`p5-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_p5_la-p5-s.Tpo $(DEPDIR)/libsane_p5_la-p5-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='p5-s.c' object='libsane_p5_la-p5-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_p5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_p5_la-p5-s.lo `test -f 'p5-s.c' || echo '$(srcdir)/'`p5-s.c
-
-libsane_pie_la-pie-s.lo: pie-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pie_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_pie_la-pie-s.lo -MD -MP -MF $(DEPDIR)/libsane_pie_la-pie-s.Tpo -c -o libsane_pie_la-pie-s.lo `test -f 'pie-s.c' || echo '$(srcdir)/'`pie-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_pie_la-pie-s.Tpo $(DEPDIR)/libsane_pie_la-pie-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pie-s.c' object='libsane_pie_la-pie-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pie_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_pie_la-pie-s.lo `test -f 'pie-s.c' || echo '$(srcdir)/'`pie-s.c
-
-libsane_pieusb_la-pieusb-s.lo: pieusb-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_pieusb_la-pieusb-s.lo -MD -MP -MF $(DEPDIR)/libsane_pieusb_la-pieusb-s.Tpo -c -o libsane_pieusb_la-pieusb-s.lo `test -f 'pieusb-s.c' || echo '$(srcdir)/'`pieusb-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_pieusb_la-pieusb-s.Tpo $(DEPDIR)/libsane_pieusb_la-pieusb-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pieusb-s.c' object='libsane_pieusb_la-pieusb-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pieusb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_pieusb_la-pieusb-s.lo `test -f 'pieusb-s.c' || echo '$(srcdir)/'`pieusb-s.c
-
-libsane_pint_la-pint-s.lo: pint-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pint_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_pint_la-pint-s.lo -MD -MP -MF $(DEPDIR)/libsane_pint_la-pint-s.Tpo -c -o libsane_pint_la-pint-s.lo `test -f 'pint-s.c' || echo '$(srcdir)/'`pint-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_pint_la-pint-s.Tpo $(DEPDIR)/libsane_pint_la-pint-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pint-s.c' object='libsane_pint_la-pint-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pint_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_pint_la-pint-s.lo `test -f 'pint-s.c' || echo '$(srcdir)/'`pint-s.c
-
-libsane_pixma_la-pixma-s.lo: pixma-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_pixma_la-pixma-s.lo -MD -MP -MF $(DEPDIR)/libsane_pixma_la-pixma-s.Tpo -c -o libsane_pixma_la-pixma-s.lo `test -f 'pixma-s.c' || echo '$(srcdir)/'`pixma-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_pixma_la-pixma-s.Tpo $(DEPDIR)/libsane_pixma_la-pixma-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pixma-s.c' object='libsane_pixma_la-pixma-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pixma_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_pixma_la-pixma-s.lo `test -f 'pixma-s.c' || echo '$(srcdir)/'`pixma-s.c
-
-libsane_plustek_la-plustek-s.lo: plustek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_plustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_plustek_la-plustek-s.lo -MD -MP -MF $(DEPDIR)/libsane_plustek_la-plustek-s.Tpo -c -o libsane_plustek_la-plustek-s.lo `test -f 'plustek-s.c' || echo '$(srcdir)/'`plustek-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_plustek_la-plustek-s.Tpo $(DEPDIR)/libsane_plustek_la-plustek-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='plustek-s.c' object='libsane_plustek_la-plustek-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_plustek_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_plustek_la-plustek-s.lo `test -f 'plustek-s.c' || echo '$(srcdir)/'`plustek-s.c
-
-libsane_plustek_pp_la-plustek_pp-s.lo: plustek_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_plustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_plustek_pp_la-plustek_pp-s.lo -MD -MP -MF $(DEPDIR)/libsane_plustek_pp_la-plustek_pp-s.Tpo -c -o libsane_plustek_pp_la-plustek_pp-s.lo `test -f 'plustek_pp-s.c' || echo '$(srcdir)/'`plustek_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_plustek_pp_la-plustek_pp-s.Tpo $(DEPDIR)/libsane_plustek_pp_la-plustek_pp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='plustek_pp-s.c' object='libsane_plustek_pp_la-plustek_pp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_plustek_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_plustek_pp_la-plustek_pp-s.lo `test -f 'plustek_pp-s.c' || echo '$(srcdir)/'`plustek_pp-s.c
-
-libsane_pnm_la-pnm-s.lo: pnm-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pnm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_pnm_la-pnm-s.lo -MD -MP -MF $(DEPDIR)/libsane_pnm_la-pnm-s.Tpo -c -o libsane_pnm_la-pnm-s.lo `test -f 'pnm-s.c' || echo '$(srcdir)/'`pnm-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_pnm_la-pnm-s.Tpo $(DEPDIR)/libsane_pnm_la-pnm-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pnm-s.c' object='libsane_pnm_la-pnm-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_pnm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_pnm_la-pnm-s.lo `test -f 'pnm-s.c' || echo '$(srcdir)/'`pnm-s.c
-
-libsane_qcam_la-qcam-s.lo: qcam-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_qcam_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_qcam_la-qcam-s.lo -MD -MP -MF $(DEPDIR)/libsane_qcam_la-qcam-s.Tpo -c -o libsane_qcam_la-qcam-s.lo `test -f 'qcam-s.c' || echo '$(srcdir)/'`qcam-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_qcam_la-qcam-s.Tpo $(DEPDIR)/libsane_qcam_la-qcam-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcam-s.c' object='libsane_qcam_la-qcam-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_qcam_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_qcam_la-qcam-s.lo `test -f 'qcam-s.c' || echo '$(srcdir)/'`qcam-s.c
-
-libsane_ricoh_la-ricoh-s.lo: ricoh-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ricoh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_ricoh_la-ricoh-s.lo -MD -MP -MF $(DEPDIR)/libsane_ricoh_la-ricoh-s.Tpo -c -o libsane_ricoh_la-ricoh-s.lo `test -f 'ricoh-s.c' || echo '$(srcdir)/'`ricoh-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_ricoh_la-ricoh-s.Tpo $(DEPDIR)/libsane_ricoh_la-ricoh-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ricoh-s.c' object='libsane_ricoh_la-ricoh-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_ricoh_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_ricoh_la-ricoh-s.lo `test -f 'ricoh-s.c' || echo '$(srcdir)/'`ricoh-s.c
-
-libsane_rts8891_la-rts8891-s.lo: rts8891-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_rts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_rts8891_la-rts8891-s.lo -MD -MP -MF $(DEPDIR)/libsane_rts8891_la-rts8891-s.Tpo -c -o libsane_rts8891_la-rts8891-s.lo `test -f 'rts8891-s.c' || echo '$(srcdir)/'`rts8891-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_rts8891_la-rts8891-s.Tpo $(DEPDIR)/libsane_rts8891_la-rts8891-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rts8891-s.c' object='libsane_rts8891_la-rts8891-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_rts8891_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_rts8891_la-rts8891-s.lo `test -f 'rts8891-s.c' || echo '$(srcdir)/'`rts8891-s.c
-
-libsane_s9036_la-s9036-s.lo: s9036-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_s9036_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_s9036_la-s9036-s.lo -MD -MP -MF $(DEPDIR)/libsane_s9036_la-s9036-s.Tpo -c -o libsane_s9036_la-s9036-s.lo `test -f 's9036-s.c' || echo '$(srcdir)/'`s9036-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_s9036_la-s9036-s.Tpo $(DEPDIR)/libsane_s9036_la-s9036-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='s9036-s.c' object='libsane_s9036_la-s9036-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_s9036_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_s9036_la-s9036-s.lo `test -f 's9036-s.c' || echo '$(srcdir)/'`s9036-s.c
-
-libsane_sceptre_la-sceptre-s.lo: sceptre-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sceptre_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_sceptre_la-sceptre-s.lo -MD -MP -MF $(DEPDIR)/libsane_sceptre_la-sceptre-s.Tpo -c -o libsane_sceptre_la-sceptre-s.lo `test -f 'sceptre-s.c' || echo '$(srcdir)/'`sceptre-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_sceptre_la-sceptre-s.Tpo $(DEPDIR)/libsane_sceptre_la-sceptre-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sceptre-s.c' object='libsane_sceptre_la-sceptre-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sceptre_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_sceptre_la-sceptre-s.lo `test -f 'sceptre-s.c' || echo '$(srcdir)/'`sceptre-s.c
-
-libsane_sharp_la-sharp-s.lo: sharp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sharp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_sharp_la-sharp-s.lo -MD -MP -MF $(DEPDIR)/libsane_sharp_la-sharp-s.Tpo -c -o libsane_sharp_la-sharp-s.lo `test -f 'sharp-s.c' || echo '$(srcdir)/'`sharp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_sharp_la-sharp-s.Tpo $(DEPDIR)/libsane_sharp_la-sharp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sharp-s.c' object='libsane_sharp_la-sharp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sharp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_sharp_la-sharp-s.lo `test -f 'sharp-s.c' || echo '$(srcdir)/'`sharp-s.c
-
-libsane_sm3600_la-sm3600-s.lo: sm3600-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sm3600_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_sm3600_la-sm3600-s.lo -MD -MP -MF $(DEPDIR)/libsane_sm3600_la-sm3600-s.Tpo -c -o libsane_sm3600_la-sm3600-s.lo `test -f 'sm3600-s.c' || echo '$(srcdir)/'`sm3600-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_sm3600_la-sm3600-s.Tpo $(DEPDIR)/libsane_sm3600_la-sm3600-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sm3600-s.c' object='libsane_sm3600_la-sm3600-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sm3600_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_sm3600_la-sm3600-s.lo `test -f 'sm3600-s.c' || echo '$(srcdir)/'`sm3600-s.c
-
-libsane_sm3840_la-sm3840-s.lo: sm3840-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sm3840_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_sm3840_la-sm3840-s.lo -MD -MP -MF $(DEPDIR)/libsane_sm3840_la-sm3840-s.Tpo -c -o libsane_sm3840_la-sm3840-s.lo `test -f 'sm3840-s.c' || echo '$(srcdir)/'`sm3840-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_sm3840_la-sm3840-s.Tpo $(DEPDIR)/libsane_sm3840_la-sm3840-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sm3840-s.c' object='libsane_sm3840_la-sm3840-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sm3840_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_sm3840_la-sm3840-s.lo `test -f 'sm3840-s.c' || echo '$(srcdir)/'`sm3840-s.c
-
-libsane_snapscan_la-snapscan-s.lo: snapscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_snapscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_snapscan_la-snapscan-s.lo -MD -MP -MF $(DEPDIR)/libsane_snapscan_la-snapscan-s.Tpo -c -o libsane_snapscan_la-snapscan-s.lo `test -f 'snapscan-s.c' || echo '$(srcdir)/'`snapscan-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_snapscan_la-snapscan-s.Tpo $(DEPDIR)/libsane_snapscan_la-snapscan-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='snapscan-s.c' object='libsane_snapscan_la-snapscan-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_snapscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_snapscan_la-snapscan-s.lo `test -f 'snapscan-s.c' || echo '$(srcdir)/'`snapscan-s.c
-
-libsane_sp15c_la-sp15c-s.lo: sp15c-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sp15c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_sp15c_la-sp15c-s.lo -MD -MP -MF $(DEPDIR)/libsane_sp15c_la-sp15c-s.Tpo -c -o libsane_sp15c_la-sp15c-s.lo `test -f 'sp15c-s.c' || echo '$(srcdir)/'`sp15c-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_sp15c_la-sp15c-s.Tpo $(DEPDIR)/libsane_sp15c_la-sp15c-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sp15c-s.c' object='libsane_sp15c_la-sp15c-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_sp15c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_sp15c_la-sp15c-s.lo `test -f 'sp15c-s.c' || echo '$(srcdir)/'`sp15c-s.c
-
-libsane_st400_la-st400-s.lo: st400-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_st400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_st400_la-st400-s.lo -MD -MP -MF $(DEPDIR)/libsane_st400_la-st400-s.Tpo -c -o libsane_st400_la-st400-s.lo `test -f 'st400-s.c' || echo '$(srcdir)/'`st400-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_st400_la-st400-s.Tpo $(DEPDIR)/libsane_st400_la-st400-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st400-s.c' object='libsane_st400_la-st400-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_st400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_st400_la-st400-s.lo `test -f 'st400-s.c' || echo '$(srcdir)/'`st400-s.c
-
-libsane_stv680_la-stv680-s.lo: stv680-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_stv680_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_stv680_la-stv680-s.lo -MD -MP -MF $(DEPDIR)/libsane_stv680_la-stv680-s.Tpo -c -o libsane_stv680_la-stv680-s.lo `test -f 'stv680-s.c' || echo '$(srcdir)/'`stv680-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_stv680_la-stv680-s.Tpo $(DEPDIR)/libsane_stv680_la-stv680-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stv680-s.c' object='libsane_stv680_la-stv680-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_stv680_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_stv680_la-stv680-s.lo `test -f 'stv680-s.c' || echo '$(srcdir)/'`stv680-s.c
-
-libsane_tamarack_la-tamarack-s.lo: tamarack-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_tamarack_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_tamarack_la-tamarack-s.lo -MD -MP -MF $(DEPDIR)/libsane_tamarack_la-tamarack-s.Tpo -c -o libsane_tamarack_la-tamarack-s.lo `test -f 'tamarack-s.c' || echo '$(srcdir)/'`tamarack-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_tamarack_la-tamarack-s.Tpo $(DEPDIR)/libsane_tamarack_la-tamarack-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tamarack-s.c' object='libsane_tamarack_la-tamarack-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_tamarack_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_tamarack_la-tamarack-s.lo `test -f 'tamarack-s.c' || echo '$(srcdir)/'`tamarack-s.c
-
-libsane_teco1_la-teco1-s.lo: teco1-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_teco1_la-teco1-s.lo -MD -MP -MF $(DEPDIR)/libsane_teco1_la-teco1-s.Tpo -c -o libsane_teco1_la-teco1-s.lo `test -f 'teco1-s.c' || echo '$(srcdir)/'`teco1-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_teco1_la-teco1-s.Tpo $(DEPDIR)/libsane_teco1_la-teco1-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco1-s.c' object='libsane_teco1_la-teco1-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_teco1_la-teco1-s.lo `test -f 'teco1-s.c' || echo '$(srcdir)/'`teco1-s.c
-
-libsane_teco2_la-teco2-s.lo: teco2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_teco2_la-teco2-s.lo -MD -MP -MF $(DEPDIR)/libsane_teco2_la-teco2-s.Tpo -c -o libsane_teco2_la-teco2-s.lo `test -f 'teco2-s.c' || echo '$(srcdir)/'`teco2-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_teco2_la-teco2-s.Tpo $(DEPDIR)/libsane_teco2_la-teco2-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco2-s.c' object='libsane_teco2_la-teco2-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_teco2_la-teco2-s.lo `test -f 'teco2-s.c' || echo '$(srcdir)/'`teco2-s.c
-
-libsane_teco3_la-teco3-s.lo: teco3-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_teco3_la-teco3-s.lo -MD -MP -MF $(DEPDIR)/libsane_teco3_la-teco3-s.Tpo -c -o libsane_teco3_la-teco3-s.lo `test -f 'teco3-s.c' || echo '$(srcdir)/'`teco3-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_teco3_la-teco3-s.Tpo $(DEPDIR)/libsane_teco3_la-teco3-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco3-s.c' object='libsane_teco3_la-teco3-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_teco3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_teco3_la-teco3-s.lo `test -f 'teco3-s.c' || echo '$(srcdir)/'`teco3-s.c
-
-libsane_test_la-test-s.lo: test-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_test_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_test_la-test-s.lo -MD -MP -MF $(DEPDIR)/libsane_test_la-test-s.Tpo -c -o libsane_test_la-test-s.lo `test -f 'test-s.c' || echo '$(srcdir)/'`test-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_test_la-test-s.Tpo $(DEPDIR)/libsane_test_la-test-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-s.c' object='libsane_test_la-test-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_test_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_test_la-test-s.lo `test -f 'test-s.c' || echo '$(srcdir)/'`test-s.c
-
-libsane_u12_la-u12-s.lo: u12-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_u12_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_u12_la-u12-s.lo -MD -MP -MF $(DEPDIR)/libsane_u12_la-u12-s.Tpo -c -o libsane_u12_la-u12-s.lo `test -f 'u12-s.c' || echo '$(srcdir)/'`u12-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_u12_la-u12-s.Tpo $(DEPDIR)/libsane_u12_la-u12-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u12-s.c' object='libsane_u12_la-u12-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_u12_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_u12_la-u12-s.lo `test -f 'u12-s.c' || echo '$(srcdir)/'`u12-s.c
-
-libsane_umax_la-umax-s.lo: umax-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_umax_la-umax-s.lo -MD -MP -MF $(DEPDIR)/libsane_umax_la-umax-s.Tpo -c -o libsane_umax_la-umax-s.lo `test -f 'umax-s.c' || echo '$(srcdir)/'`umax-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_umax_la-umax-s.Tpo $(DEPDIR)/libsane_umax_la-umax-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax-s.c' object='libsane_umax_la-umax-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_umax_la-umax-s.lo `test -f 'umax-s.c' || echo '$(srcdir)/'`umax-s.c
-
-libsane_umax1220u_la-umax1220u-s.lo: umax1220u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax1220u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_umax1220u_la-umax1220u-s.lo -MD -MP -MF $(DEPDIR)/libsane_umax1220u_la-umax1220u-s.Tpo -c -o libsane_umax1220u_la-umax1220u-s.lo `test -f 'umax1220u-s.c' || echo '$(srcdir)/'`umax1220u-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_umax1220u_la-umax1220u-s.Tpo $(DEPDIR)/libsane_umax1220u_la-umax1220u-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax1220u-s.c' object='libsane_umax1220u_la-umax1220u-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax1220u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_umax1220u_la-umax1220u-s.lo `test -f 'umax1220u-s.c' || echo '$(srcdir)/'`umax1220u-s.c
-
-libsane_umax_pp_la-umax_pp-s.lo: umax_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_umax_pp_la-umax_pp-s.lo -MD -MP -MF $(DEPDIR)/libsane_umax_pp_la-umax_pp-s.Tpo -c -o libsane_umax_pp_la-umax_pp-s.lo `test -f 'umax_pp-s.c' || echo '$(srcdir)/'`umax_pp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_umax_pp_la-umax_pp-s.Tpo $(DEPDIR)/libsane_umax_pp_la-umax_pp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax_pp-s.c' object='libsane_umax_pp_la-umax_pp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_umax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_umax_pp_la-umax_pp-s.lo `test -f 'umax_pp-s.c' || echo '$(srcdir)/'`umax_pp-s.c
-
-libsane_v4l_la-v4l-s.lo: v4l-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_v4l_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_v4l_la-v4l-s.lo -MD -MP -MF $(DEPDIR)/libsane_v4l_la-v4l-s.Tpo -c -o libsane_v4l_la-v4l-s.lo `test -f 'v4l-s.c' || echo '$(srcdir)/'`v4l-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_v4l_la-v4l-s.Tpo $(DEPDIR)/libsane_v4l_la-v4l-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v4l-s.c' object='libsane_v4l_la-v4l-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_v4l_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_v4l_la-v4l-s.lo `test -f 'v4l-s.c' || echo '$(srcdir)/'`v4l-s.c
-
-libsane_xerox_mfp_la-xerox_mfp-s.lo: xerox_mfp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_xerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_xerox_mfp_la-xerox_mfp-s.lo -MD -MP -MF $(DEPDIR)/libsane_xerox_mfp_la-xerox_mfp-s.Tpo -c -o libsane_xerox_mfp_la-xerox_mfp-s.lo `test -f 'xerox_mfp-s.c' || echo '$(srcdir)/'`xerox_mfp-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_xerox_mfp_la-xerox_mfp-s.Tpo $(DEPDIR)/libsane_xerox_mfp_la-xerox_mfp-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xerox_mfp-s.c' object='libsane_xerox_mfp_la-xerox_mfp-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_xerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_xerox_mfp_la-xerox_mfp-s.lo `test -f 'xerox_mfp-s.c' || echo '$(srcdir)/'`xerox_mfp-s.c
-
-libsane_la-dll-s.lo: dll-s.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsane_la-dll-s.lo -MD -MP -MF $(DEPDIR)/libsane_la-dll-s.Tpo -c -o libsane_la-dll-s.lo `test -f 'dll-s.c' || echo '$(srcdir)/'`dll-s.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsane_la-dll-s.Tpo $(DEPDIR)/libsane_la-dll-s.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dll-s.c' object='libsane_la-dll-s.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsane_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsane_la-dll-s.lo `test -f 'dll-s.c' || echo '$(srcdir)/'`dll-s.c
-
-libsceptre_la-sceptre.lo: sceptre.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsceptre_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsceptre_la-sceptre.lo -MD -MP -MF $(DEPDIR)/libsceptre_la-sceptre.Tpo -c -o libsceptre_la-sceptre.lo `test -f 'sceptre.c' || echo '$(srcdir)/'`sceptre.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsceptre_la-sceptre.Tpo $(DEPDIR)/libsceptre_la-sceptre.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sceptre.c' object='libsceptre_la-sceptre.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsceptre_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsceptre_la-sceptre.lo `test -f 'sceptre.c' || echo '$(srcdir)/'`sceptre.c
-
-libsharp_la-sharp.lo: sharp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsharp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsharp_la-sharp.lo -MD -MP -MF $(DEPDIR)/libsharp_la-sharp.Tpo -c -o libsharp_la-sharp.lo `test -f 'sharp.c' || echo '$(srcdir)/'`sharp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsharp_la-sharp.Tpo $(DEPDIR)/libsharp_la-sharp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sharp.c' object='libsharp_la-sharp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsharp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsharp_la-sharp.lo `test -f 'sharp.c' || echo '$(srcdir)/'`sharp.c
-
-libsm3600_la-sm3600.lo: sm3600.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsm3600_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsm3600_la-sm3600.lo -MD -MP -MF $(DEPDIR)/libsm3600_la-sm3600.Tpo -c -o libsm3600_la-sm3600.lo `test -f 'sm3600.c' || echo '$(srcdir)/'`sm3600.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsm3600_la-sm3600.Tpo $(DEPDIR)/libsm3600_la-sm3600.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sm3600.c' object='libsm3600_la-sm3600.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsm3600_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsm3600_la-sm3600.lo `test -f 'sm3600.c' || echo '$(srcdir)/'`sm3600.c
-
-libsm3840_la-sm3840.lo: sm3840.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsm3840_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsm3840_la-sm3840.lo -MD -MP -MF $(DEPDIR)/libsm3840_la-sm3840.Tpo -c -o libsm3840_la-sm3840.lo `test -f 'sm3840.c' || echo '$(srcdir)/'`sm3840.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsm3840_la-sm3840.Tpo $(DEPDIR)/libsm3840_la-sm3840.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sm3840.c' object='libsm3840_la-sm3840.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsm3840_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsm3840_la-sm3840.lo `test -f 'sm3840.c' || echo '$(srcdir)/'`sm3840.c
-
-libsnapscan_la-snapscan.lo: snapscan.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsnapscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsnapscan_la-snapscan.lo -MD -MP -MF $(DEPDIR)/libsnapscan_la-snapscan.Tpo -c -o libsnapscan_la-snapscan.lo `test -f 'snapscan.c' || echo '$(srcdir)/'`snapscan.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsnapscan_la-snapscan.Tpo $(DEPDIR)/libsnapscan_la-snapscan.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='snapscan.c' object='libsnapscan_la-snapscan.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsnapscan_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsnapscan_la-snapscan.lo `test -f 'snapscan.c' || echo '$(srcdir)/'`snapscan.c
-
-libsp15c_la-sp15c.lo: sp15c.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsp15c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsp15c_la-sp15c.lo -MD -MP -MF $(DEPDIR)/libsp15c_la-sp15c.Tpo -c -o libsp15c_la-sp15c.lo `test -f 'sp15c.c' || echo '$(srcdir)/'`sp15c.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsp15c_la-sp15c.Tpo $(DEPDIR)/libsp15c_la-sp15c.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sp15c.c' object='libsp15c_la-sp15c.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsp15c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsp15c_la-sp15c.lo `test -f 'sp15c.c' || echo '$(srcdir)/'`sp15c.c
-
-libst400_la-st400.lo: st400.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libst400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libst400_la-st400.lo -MD -MP -MF $(DEPDIR)/libst400_la-st400.Tpo -c -o libst400_la-st400.lo `test -f 'st400.c' || echo '$(srcdir)/'`st400.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libst400_la-st400.Tpo $(DEPDIR)/libst400_la-st400.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st400.c' object='libst400_la-st400.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libst400_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libst400_la-st400.lo `test -f 'st400.c' || echo '$(srcdir)/'`st400.c
-
-libstv680_la-stv680.lo: stv680.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstv680_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libstv680_la-stv680.lo -MD -MP -MF $(DEPDIR)/libstv680_la-stv680.Tpo -c -o libstv680_la-stv680.lo `test -f 'stv680.c' || echo '$(srcdir)/'`stv680.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libstv680_la-stv680.Tpo $(DEPDIR)/libstv680_la-stv680.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='stv680.c' object='libstv680_la-stv680.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstv680_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libstv680_la-stv680.lo `test -f 'stv680.c' || echo '$(srcdir)/'`stv680.c
-
-libtamarack_la-tamarack.lo: tamarack.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtamarack_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtamarack_la-tamarack.lo -MD -MP -MF $(DEPDIR)/libtamarack_la-tamarack.Tpo -c -o libtamarack_la-tamarack.lo `test -f 'tamarack.c' || echo '$(srcdir)/'`tamarack.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtamarack_la-tamarack.Tpo $(DEPDIR)/libtamarack_la-tamarack.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tamarack.c' object='libtamarack_la-tamarack.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtamarack_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtamarack_la-tamarack.lo `test -f 'tamarack.c' || echo '$(srcdir)/'`tamarack.c
-
-libteco1_la-teco1.lo: teco1.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libteco1_la-teco1.lo -MD -MP -MF $(DEPDIR)/libteco1_la-teco1.Tpo -c -o libteco1_la-teco1.lo `test -f 'teco1.c' || echo '$(srcdir)/'`teco1.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libteco1_la-teco1.Tpo $(DEPDIR)/libteco1_la-teco1.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco1.c' object='libteco1_la-teco1.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libteco1_la-teco1.lo `test -f 'teco1.c' || echo '$(srcdir)/'`teco1.c
-
-libteco2_la-teco2.lo: teco2.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libteco2_la-teco2.lo -MD -MP -MF $(DEPDIR)/libteco2_la-teco2.Tpo -c -o libteco2_la-teco2.lo `test -f 'teco2.c' || echo '$(srcdir)/'`teco2.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libteco2_la-teco2.Tpo $(DEPDIR)/libteco2_la-teco2.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco2.c' object='libteco2_la-teco2.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libteco2_la-teco2.lo `test -f 'teco2.c' || echo '$(srcdir)/'`teco2.c
-
-libteco3_la-teco3.lo: teco3.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libteco3_la-teco3.lo -MD -MP -MF $(DEPDIR)/libteco3_la-teco3.Tpo -c -o libteco3_la-teco3.lo `test -f 'teco3.c' || echo '$(srcdir)/'`teco3.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libteco3_la-teco3.Tpo $(DEPDIR)/libteco3_la-teco3.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='teco3.c' object='libteco3_la-teco3.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libteco3_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libteco3_la-teco3.lo `test -f 'teco3.c' || echo '$(srcdir)/'`teco3.c
-
-libtest_la-test.lo: test.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtest_la-test.lo -MD -MP -MF $(DEPDIR)/libtest_la-test.Tpo -c -o libtest_la-test.lo `test -f 'test.c' || echo '$(srcdir)/'`test.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtest_la-test.Tpo $(DEPDIR)/libtest_la-test.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test.c' object='libtest_la-test.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtest_la-test.lo `test -f 'test.c' || echo '$(srcdir)/'`test.c
-
-libu12_la-u12.lo: u12.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libu12_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libu12_la-u12.lo -MD -MP -MF $(DEPDIR)/libu12_la-u12.Tpo -c -o libu12_la-u12.lo `test -f 'u12.c' || echo '$(srcdir)/'`u12.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libu12_la-u12.Tpo $(DEPDIR)/libu12_la-u12.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u12.c' object='libu12_la-u12.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libu12_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libu12_la-u12.lo `test -f 'u12.c' || echo '$(srcdir)/'`u12.c
-
-libumax_la-umax.lo: umax.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libumax_la-umax.lo -MD -MP -MF $(DEPDIR)/libumax_la-umax.Tpo -c -o libumax_la-umax.lo `test -f 'umax.c' || echo '$(srcdir)/'`umax.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libumax_la-umax.Tpo $(DEPDIR)/libumax_la-umax.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax.c' object='libumax_la-umax.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libumax_la-umax.lo `test -f 'umax.c' || echo '$(srcdir)/'`umax.c
-
-libumax1220u_la-umax1220u.lo: umax1220u.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax1220u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libumax1220u_la-umax1220u.lo -MD -MP -MF $(DEPDIR)/libumax1220u_la-umax1220u.Tpo -c -o libumax1220u_la-umax1220u.lo `test -f 'umax1220u.c' || echo '$(srcdir)/'`umax1220u.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libumax1220u_la-umax1220u.Tpo $(DEPDIR)/libumax1220u_la-umax1220u.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax1220u.c' object='libumax1220u_la-umax1220u.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax1220u_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libumax1220u_la-umax1220u.lo `test -f 'umax1220u.c' || echo '$(srcdir)/'`umax1220u.c
-
-libumax_pp_la-umax_pp.lo: umax_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libumax_pp_la-umax_pp.lo -MD -MP -MF $(DEPDIR)/libumax_pp_la-umax_pp.Tpo -c -o libumax_pp_la-umax_pp.lo `test -f 'umax_pp.c' || echo '$(srcdir)/'`umax_pp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libumax_pp_la-umax_pp.Tpo $(DEPDIR)/libumax_pp_la-umax_pp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax_pp.c' object='libumax_pp_la-umax_pp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libumax_pp_la-umax_pp.lo `test -f 'umax_pp.c' || echo '$(srcdir)/'`umax_pp.c
-
-libumax_pp_la-umax_pp_low.lo: umax_pp_low.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libumax_pp_la-umax_pp_low.lo -MD -MP -MF $(DEPDIR)/libumax_pp_la-umax_pp_low.Tpo -c -o libumax_pp_la-umax_pp_low.lo `test -f 'umax_pp_low.c' || echo '$(srcdir)/'`umax_pp_low.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libumax_pp_la-umax_pp_low.Tpo $(DEPDIR)/libumax_pp_la-umax_pp_low.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax_pp_low.c' object='libumax_pp_la-umax_pp_low.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libumax_pp_la-umax_pp_low.lo `test -f 'umax_pp_low.c' || echo '$(srcdir)/'`umax_pp_low.c
-
-libumax_pp_la-umax_pp_mid.lo: umax_pp_mid.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libumax_pp_la-umax_pp_mid.lo -MD -MP -MF $(DEPDIR)/libumax_pp_la-umax_pp_mid.Tpo -c -o libumax_pp_la-umax_pp_mid.lo `test -f 'umax_pp_mid.c' || echo '$(srcdir)/'`umax_pp_mid.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libumax_pp_la-umax_pp_mid.Tpo $(DEPDIR)/libumax_pp_la-umax_pp_mid.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='umax_pp_mid.c' object='libumax_pp_la-umax_pp_mid.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libumax_pp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libumax_pp_la-umax_pp_mid.lo `test -f 'umax_pp_mid.c' || echo '$(srcdir)/'`umax_pp_mid.c
-
-libv4l_la-v4l.lo: v4l.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libv4l_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libv4l_la-v4l.lo -MD -MP -MF $(DEPDIR)/libv4l_la-v4l.Tpo -c -o libv4l_la-v4l.lo `test -f 'v4l.c' || echo '$(srcdir)/'`v4l.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libv4l_la-v4l.Tpo $(DEPDIR)/libv4l_la-v4l.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='v4l.c' object='libv4l_la-v4l.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libv4l_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libv4l_la-v4l.lo `test -f 'v4l.c' || echo '$(srcdir)/'`v4l.c
-
-libxerox_mfp_la-xerox_mfp.lo: xerox_mfp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libxerox_mfp_la-xerox_mfp.lo -MD -MP -MF $(DEPDIR)/libxerox_mfp_la-xerox_mfp.Tpo -c -o libxerox_mfp_la-xerox_mfp.lo `test -f 'xerox_mfp.c' || echo '$(srcdir)/'`xerox_mfp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxerox_mfp_la-xerox_mfp.Tpo $(DEPDIR)/libxerox_mfp_la-xerox_mfp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xerox_mfp.c' object='libxerox_mfp_la-xerox_mfp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxerox_mfp_la-xerox_mfp.lo `test -f 'xerox_mfp.c' || echo '$(srcdir)/'`xerox_mfp.c
-
-libxerox_mfp_la-xerox_mfp-usb.lo: xerox_mfp-usb.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libxerox_mfp_la-xerox_mfp-usb.lo -MD -MP -MF $(DEPDIR)/libxerox_mfp_la-xerox_mfp-usb.Tpo -c -o libxerox_mfp_la-xerox_mfp-usb.lo `test -f 'xerox_mfp-usb.c' || echo '$(srcdir)/'`xerox_mfp-usb.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxerox_mfp_la-xerox_mfp-usb.Tpo $(DEPDIR)/libxerox_mfp_la-xerox_mfp-usb.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xerox_mfp-usb.c' object='libxerox_mfp_la-xerox_mfp-usb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxerox_mfp_la-xerox_mfp-usb.lo `test -f 'xerox_mfp-usb.c' || echo '$(srcdir)/'`xerox_mfp-usb.c
-
-libxerox_mfp_la-xerox_mfp-tcp.lo: xerox_mfp-tcp.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libxerox_mfp_la-xerox_mfp-tcp.lo -MD -MP -MF $(DEPDIR)/libxerox_mfp_la-xerox_mfp-tcp.Tpo -c -o libxerox_mfp_la-xerox_mfp-tcp.lo `test -f 'xerox_mfp-tcp.c' || echo '$(srcdir)/'`xerox_mfp-tcp.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxerox_mfp_la-xerox_mfp-tcp.Tpo $(DEPDIR)/libxerox_mfp_la-xerox_mfp-tcp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xerox_mfp-tcp.c' object='libxerox_mfp_la-xerox_mfp-tcp.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libxerox_mfp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libxerox_mfp_la-xerox_mfp-tcp.lo `test -f 'xerox_mfp-tcp.c' || echo '$(srcdir)/'`xerox_mfp-tcp.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sanelibdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
- clean-sanelibLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-sanelibLTLIBRARIES
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) install-data-hook
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-sanelibLTLIBRARIES
- @$(NORMAL_INSTALL)
- $(MAKE) $(AM_MAKEFLAGS) uninstall-hook
-.MAKE: all check install install-am install-data-am install-strip \
- uninstall-am
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool clean-local \
- clean-sanelibLTLIBRARIES cscopelist-am ctags ctags-am \
- distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-data-hook install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-libLTLIBRARIES \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-sanelibLTLIBRARIES install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-hook \
- uninstall-libLTLIBRARIES uninstall-sanelibLTLIBRARIES
-
-
-all: becfg
-
-# FIXME: % is a GNU extension... This is only thing left requiring
-# use to use GNU make.
-%-s.c: $(srcdir)/stubs.c
- $(AM_V_at)rm -f $@
- $(AM_V_at)$(LN_S) $(srcdir)/stubs.c $@
-
-dll-preload.h:
- $(AM_V_at)rm -f $@
- $(AM_V_at)list="$(PRELOADABLE_BACKENDS)"; for be in $$list; do \
- echo "PRELOAD_DECL($$be)" >> $@; \
- done; \
- echo "static struct backend preloaded_backends[] = {" >> $@; \
- sep=""; \
- list="$(PRELOADABLE_BACKENDS)"; \
- if test -z "$${list}"; then \
- echo { 0, 0, 0, 0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }} >> $@; \
- else \
- for be in $$list; do \
- echo "$${sep}PRELOAD_DEFN($$be)" >> $@; \
- sep=","; \
- done; \
- fi; \
- echo "};" >> $@
-becfg: $(BACKEND_CONFS)
-.conf.in.conf:
- @echo Generating $@ from $^
- @sed -e 's|@DATADIR@|$(datadir)|g' \
- -e 's|@CONFIGDIR@|$(configdir)|g' \
- -e 's|@DOCDIR@|$(docdir)|g' \
- -e 's|@LIBDIR@|$(libdir)/sane|g' \
- -e 's|@BINDIR@|$(bindir)|g' \
- -e 's|@SBINDIR@|$(sbindir)|g' \
- -e 's|@PACKAGEVERSION@|$(PACKAGE_VERSION)|g' $? > $@
-
-install-data-hook: install-becfg install-firmware-path $(INSTALL_LOCKPATH)
-
-# Custom install target to install config files. Do not overwrite
-# files that have been previously installed so that user modifications
-# are not lost.
-install-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.*
- 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 \
- if test ! -r $${cfg}; then continue; fi; \
- if test -f $(DESTDIR)$(configdir)/$${cfg}; then \
- echo NOT overwriting $${cfg} in $(configdir)...; \
- else \
- echo installing $${cfg} in $(configdir)/$${cfg}...; \
- $(INSTALL_DATA) $${cfg} $(DESTDIR)$(configdir)/$${cfg} \
- || exit 1; \
- fi; \
- done
-
-install-firmware-path:
- for dir in $(FIRMWARE_DIRS) ; do \
- $(mkinstalldirs) $(DESTDIR)$(datadir)/sane/$${dir} ; \
- done
-
-install-lockpath:
- $(mkinstalldirs) -m 775 $(DESTDIR)$(locksanedir)
-
-uninstall-hook:
- rm -rf $(DESTDIR)$(libdir)/sane $(DESTDIR)$(configdir) $(DESTDIR)$(locksanedir)
- rm -f $(DESTDIR)$(libdir)/libsane.*
- -for dir in $(FIRMWARE_DIRS) ; do \
- rmdir $(DESTDIR)$(datadir)/sane/$${dir} ; \
- done
-clean-local:
- find . -type l -name \*-s.c | xargs rm -f
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/backend/abaton.c b/backend/abaton.c
index 4008c62..3e487aa 100644
--- a/backend/abaton.c
+++ b/backend/abaton.c
@@ -322,7 +322,7 @@ set_window (Abaton_Scanner * s)
uint8_t cmd[10 + 40];
uint8_t *window = cmd + 10 + 8;
int invert;
-
+
memset (cmd, 0, sizeof (cmd));
cmd[0] = SET_WINDOW;
cmd[8] = 40;
@@ -379,11 +379,11 @@ set_window (Abaton_Scanner * s)
s->val[OPT_HALFTONE_PATTERN].s);
return SANE_STATUS_INVAL;
}
-
+
/* We have to invert these ones for some reason, so why not
let the scanner do it for us... */
STORE8 (window + 21, invert ? 0x80 : 0);
-
+
STORE16 (window + 22, (s->val[OPT_MIRROR].w != 0));
return sanei_scsi_cmd (s->fd, cmd, sizeof (cmd), 0, 0);
@@ -511,7 +511,7 @@ calc_parameters (Abaton_Scanner * s)
SANE_Int dpix = s->val[OPT_X_RESOLUTION].w;
SANE_Int dpiy = s->val[OPT_Y_RESOLUTION].w;
double ulx, uly, width, height;
-
+
DBG (FLOW_CONTROL, "Entering calc_parameters\n");
if (!strcmp (val, SANE_VALUE_SCAN_MODE_LINEART) || !strcmp (val, SANE_VALUE_SCAN_MODE_HALFTONE))
@@ -549,7 +549,7 @@ calc_parameters (Abaton_Scanner * s)
s->ULy = uly * dpiy;
s->Width = width * dpix;
s->Height = height * dpiy;
-
+
DBG (VARIABLE_CONTROL, "(pixels) ulx: %d, uly: %d, width: %d, height: %d\n",
s->ULx, s->ULy, s->Width, s->Height);
@@ -653,7 +653,7 @@ init_options (Abaton_Scanner * s)
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;
-
+
/* "Mode" group: */
s->opt[OPT_MODE_GROUP].title = "Scan Mode";
s->opt[OPT_MODE_GROUP].desc = "";
@@ -662,7 +662,7 @@ init_options (Abaton_Scanner * s)
s->opt[OPT_MODE_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
mode_list[0]=SANE_VALUE_SCAN_MODE_LINEART;
-
+
switch (s->hw->ScannerModel)
{
case ABATON_300GS:
@@ -676,7 +676,7 @@ init_options (Abaton_Scanner * s)
mode_list[1]=NULL;
break;
}
-
+
/* scan mode */
s->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE;
s->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE;
@@ -724,7 +724,7 @@ init_options (Abaton_Scanner * s)
s->opt[OPT_PREVIEW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
s->opt[OPT_PREVIEW].type = SANE_TYPE_BOOL;
s->val[OPT_PREVIEW].w = SANE_FALSE;
-
+
/* halftone pattern */
s->opt[OPT_HALFTONE_PATTERN].name = SANE_NAME_HALFTONE_PATTERN;
s->opt[OPT_HALFTONE_PATTERN].title = SANE_TITLE_HALFTONE_PATTERN;
@@ -832,7 +832,7 @@ init_options (Abaton_Scanner * s)
s->opt[OPT_NEGATIVE].unit = SANE_UNIT_NONE;
s->opt[OPT_NEGATIVE].constraint_type = SANE_CONSTRAINT_NONE;
s->val[OPT_NEGATIVE].w = SANE_FALSE;
-
+
/* mirror-image */
s->opt[OPT_MIRROR].name = "mirror";
s->opt[OPT_MIRROR].title = "Mirror Image";
@@ -974,7 +974,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
/* set up some universal parameters */
s->params.last_frame = SANE_TRUE;
s->params.format = SANE_FRAME_GRAY;
-
+
/* insert newly opened handle into list of open handles: */
s->next = first_handle;
first_handle = s;
@@ -1017,7 +1017,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
if ((unsigned) option >= NUM_OPTIONS)
return NULL;
-
+
return s->opt + option;
}
@@ -1072,7 +1072,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_HALFTONE_PATTERN:
status = sanei_constrain_value (s->opt + option, s->val[option].s,
info);
- strcpy (val, s->val[option].s);
+ strcpy (val, s->val[option].s);
return SANE_STATUS_GOOD;
}
}
@@ -1103,7 +1103,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
return SANE_STATUS_GOOD;
-
+
case OPT_RESOLUTION_BIND:
s->val[option].w = *(SANE_Word *) val;
if (*(SANE_Word *) val) {
@@ -1114,7 +1114,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
SANE_INFO_RELOAD_OPTIONS;
}
return SANE_STATUS_GOOD;
-
+
case OPT_X_RESOLUTION:
if (s->val[OPT_PREVIEW].w || s->val[OPT_RESOLUTION_BIND].w) {
s->val[OPT_Y_RESOLUTION].w = *(SANE_Word *)val;
@@ -1155,7 +1155,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
calc_parameters (s);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS
- | SANE_INFO_INEXACT;
+ | SANE_INFO_INEXACT;
return SANE_STATUS_GOOD;
/* no side-effects whatsoever */
@@ -1176,7 +1176,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
free (s->val[option].s);
s->val[option].s = strdup (val);
return SANE_STATUS_GOOD;
-
+
case OPT_MODE:
status = mode_update (s, val);
if (status != SANE_STATUS_GOOD)
@@ -1295,7 +1295,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
/* this is a sub-optimal way of doing this, I'm sure */
if (!s->scanning)
return SANE_STATUS_EOF;
-
+
if (!strcmp (s->val[OPT_MODE].s, "Gray16"))
Pseudo8bit = SANE_TRUE;
@@ -1352,13 +1352,13 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
{
rread = data_av;
}
-
+
DBG (IO_MESSAGE,
"sane_read: (action) Actual read request for %u bytes.\n",
rread);
size = rread;
-
+
STORE24 (read + 6, rread);
status = sanei_scsi_cmd (s->fd, read, sizeof (read),
@@ -1487,7 +1487,7 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
handle = handle; /* silence gcc */
fd = fd; /* silence gcc */
-
+
DBG (FLOW_CONTROL, "sane_get_select_fd: Don't call me please. "
"Unimplemented function\n");
return SANE_STATUS_UNSUPPORTED;
diff --git a/backend/abaton.h b/backend/abaton.h
index 1f46ded..1ecd867 100644
--- a/backend/abaton.h
+++ b/backend/abaton.h
@@ -54,7 +54,7 @@ enum Abaton_Modes
ABATON_MODE_HALFTONE,
ABATON_MODE_GRAY
};
-
+
enum Abaton_Option
{
OPT_NUM_OPTS = 0,
@@ -66,7 +66,7 @@ enum Abaton_Option
OPT_RESOLUTION_BIND,
OPT_PREVIEW,
OPT_HALFTONE_PATTERN,
-
+
OPT_GEOMETRY_GROUP,
OPT_TL_X, /* top-left x */
OPT_TL_Y, /* top-left y */
@@ -79,7 +79,7 @@ enum Abaton_Option
OPT_THRESHOLD,
OPT_NEGATIVE,
OPT_MIRROR,
-
+
/* must come last: */
NUM_OPTIONS
};
@@ -110,7 +110,7 @@ typedef struct Abaton_Scanner
SANE_Bool scanning;
SANE_Bool AbortedByUser;
-
+
SANE_Parameters params;
/* The actual bpp, before "Pseudo-8-bit" fiddling */
diff --git a/backend/agfafocus.c b/backend/agfafocus.c
index c2c5664..0b59d2d 100644
--- a/backend/agfafocus.c
+++ b/backend/agfafocus.c
@@ -1,7 +1,7 @@
/* sane - Scanner Access Now Easy.
This file (C) 1997 Ingo Schneider
- (C) 1998 Karl Anders ygard
+ (C) 1998 Karl Anders Øygard
This file is part of the SANE package.
@@ -116,11 +116,11 @@ max_string_size (const SANE_String_Const strings[])
}
/* sets loc_s bytes long value at offset loc in scsi command to value size */
-static void
+static void
set_size (Byte * loc, int loc_s, size_t size)
{
int i;
-
+
for (i = 0; i < loc_s; i++)
{
loc[loc_s - i - 1] = (size >> (i * 8)) & 0xff;
@@ -142,10 +142,10 @@ get_size (Byte * loc, int loc_s)
return j;
}
-static long
+static long
reserve_unit (int fd)
{
- struct
+ struct
{
/* Command */
Byte cmd;
@@ -164,10 +164,10 @@ reserve_unit (int fd)
return sanei_scsi_cmd (fd, &scsi_reserve, sizeof (scsi_reserve), 0, 0);
}
-static long
+static long
release_unit (int fd)
{
- struct
+ struct
{
/* Command */
Byte cmd;
@@ -192,7 +192,7 @@ test_ready (int fd)
SANE_Status status;
int try;
- struct
+ struct
{
/* Command */
Byte cmd;
@@ -317,7 +317,7 @@ wait_ready (int fd)
Byte tr_len[3];
Byte ctrl;
} cmd;
-
+
memset (&cmd, 0, sizeof (cmd));
cmd.cmd = 0x28; /* READ */
@@ -468,7 +468,7 @@ set_window (AgfaFocus_Scanner * s)
Byte tonecurve; /* Tone curve (0 - 8) */
Byte ht_pattern; /* Halftone pattern */
Byte paddingtype; /* Padding type */
-
+
Byte bitordering[2]; /* Bit ordering (0 = left to right) */
Byte comprtype; /* Compression type */
Byte comprarg; /* Compression argument */
@@ -522,7 +522,7 @@ set_window (AgfaFocus_Scanner * s)
set_size (cmd.tr_len, 3, 36 + 8);
set_size (cmd.wd_len, 2, 36);
break;
-
+
case AGFACOLOR:
set_size (cmd.tr_len, 3, 65 + 8);
set_size (cmd.wd_len, 2, 65);
@@ -582,7 +582,7 @@ set_window (AgfaFocus_Scanner * s)
cmd.wd.ht_pattern = s->halftone;
else
cmd.wd.ht_pattern = 3;
-
+
cmd.wd.intensity = brightness;
cmd.wd.contrast = contrast;
@@ -645,20 +645,20 @@ upload_dither_matrix (AgfaFocus_Scanner * s, int rows, int cols, int *dither_mat
Byte re1[3];
Byte tr_len[3];
Byte ctrl;
-
+
struct {
Byte nrrows[2];
Byte nrcols[2];
-
+
struct {
Byte data[2];
} element[256];
} wd;
} cmd;
-
+
SANE_Status status;
int i;
-
+
memset (&cmd, 0, sizeof (cmd));
cmd.cmd = 0x2a; /* WRITE */
@@ -670,9 +670,9 @@ upload_dither_matrix (AgfaFocus_Scanner * s, int rows, int cols, int *dither_mat
for (i = 0; i < cols * rows; ++i)
set_size (cmd.wd.element[i].data, 2, dither_matrix[i]);
-
+
status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd), 0, 0);
-
+
if (status != SANE_STATUS_GOOD)
/* Command failed */
return SANE_STATUS_IO_ERROR;
@@ -692,7 +692,7 @@ upload_tonecurve (AgfaFocus_Scanner * s, int color_type, int input, int output,
Byte re1[4];
Byte tr_len[3];
Byte ctrl;
-
+
Byte re2[6];
Byte wd_len[2];
@@ -700,7 +700,7 @@ upload_tonecurve (AgfaFocus_Scanner * s, int color_type, int input, int output,
Byte color_type[2];
Byte nrinput[2];
Byte nroutput[2];
-
+
struct {
Byte data[2];
} outputval[256];
@@ -721,9 +721,9 @@ upload_tonecurve (AgfaFocus_Scanner * s, int color_type, int input, int output,
for (i = 0; i < cols; ++i)
for (j = 0; j < rows; ++j)
set_size (cmd.wd.element[j + i * rows].data, 2, dither_matrix[j + i * rows]);
-
+
status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd), 0, 0);
-
+
if (status != SANE_STATUS_GOOD)
/* * Command failed * */
return SANE_STATUS_IO_ERROR;
@@ -760,22 +760,22 @@ read_data (AgfaFocus_Scanner * s, SANE_Byte *buf, int lines, int bpl)
set_size (cmd.tr_len, 3, lines);
size = lines * bpl;
-
+
status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd), buf, &size);
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "sanei_scsi_cmd() = %d\n", status);
return SANE_STATUS_IO_ERROR;
}
-
+
if (size != ((unsigned int) lines * bpl))
{
DBG (1, "sanei_scsi_cmd(): got %lu bytes, expected %d\n",
(u_long) size, lines * bpl);
return SANE_STATUS_INVAL;
}
-
+
DBG (1, "Got %lu bytes\n", (u_long) size);
/* Reverse: */
@@ -788,7 +788,7 @@ read_data (AgfaFocus_Scanner * s, SANE_Byte *buf, int lines, int bpl)
for (i = 0; i < size; i++)
buf[i] = 255 - ((buf[i] * 256.0f) / 64.0f);
}
-
+
s->lines_available -= lines;
return SANE_STATUS_GOOD;
@@ -954,7 +954,7 @@ do_cancel (AgfaFocus_Scanner * s)
/* ensure child knows it's time to stop: */
sanei_thread_kill (s->reader_pid);
sanei_thread_waitpid (s->reader_pid, &exit_status);
- s->reader_pid = -1;
+ sanei_thread_invalidate(s->reader_pid);
}
if (s->fd >= 0)
@@ -980,9 +980,9 @@ init_options (AgfaFocus_Scanner * s)
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX(1) /* quantization */
};
static const SANE_Range sharpen_range =
@@ -991,9 +991,9 @@ init_options (AgfaFocus_Scanner * s)
{0, 100, 0};
static const SANE_Range attenuation_range =
{
- 0 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(0), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX(1) /* quantization */
};
@@ -1182,7 +1182,7 @@ init_options (AgfaFocus_Scanner * s)
s->opt[OPT_CONTRAST].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_CONTRAST].constraint.range = &percentage_range;
s->val[OPT_CONTRAST].w = 0;
-
+
/* halftone patterns */
s->opt[OPT_HALFTONE_PATTERN].name = SANE_NAME_HALFTONE_PATTERN;
s->opt[OPT_HALFTONE_PATTERN].title = SANE_TITLE_HALFTONE_PATTERN;
@@ -1324,7 +1324,7 @@ sane_exit (void)
sane_close (dev->handle);
free (dev);
}
-
+
if (devlist)
free (devlist);
}
@@ -1510,16 +1510,16 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->val[option].s = strdup (val);
if (strcmp (s->val[option].s, "Gray (6 bit)") == 0)
- s->mode = GRAY6BIT;
+ s->mode = GRAY6BIT;
else if (strcmp (s->val[option].s, "Gray (8 bit)") == 0)
- s->mode = GRAY8BIT;
+ s->mode = GRAY8BIT;
else if (strcmp (s->val[option].s, "Color (18 bit)") == 0)
- s->mode = COLOR18BIT;
+ s->mode = COLOR18BIT;
else if (strcmp (s->val[option].s, "Color (24 bit)") == 0)
- s->mode = COLOR24BIT;
+ s->mode = COLOR24BIT;
else
s->mode = LINEART;
-
+
switch (s->mode)
{
case LINEART:
@@ -1679,18 +1679,18 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
case LINEART:
{
const char *halftone;
-
+
s->image_composition = 0;
-
+
/* in 1 bpp mode, lines need to be 8 pixel length */
-
+
if (s->params.pixels_per_line % 8)
s->params.pixels_per_line += 8 - (s->params.pixels_per_line % 8);
-
+
s->params.format = SANE_FRAME_GRAY;
s->params.bytes_per_line = s->params.pixels_per_line / 8;
s->bpp = s->params.depth = 1;
-
+
halftone = s->val[OPT_HALFTONE_PATTERN].s;
if (strcmp (halftone, "1") == 0 )
s->halftone = 1;
@@ -1704,14 +1704,14 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
s->halftone = 5;
else
s->halftone = 0;
-
+
s->edge = s->val[OPT_SHARPEN].w;
}
break;
case GRAY6BIT:
s->image_composition = 2;
-
+
s->params.format = SANE_FRAME_GRAY;
s->params.bytes_per_line = s->params.pixels_per_line;
s->bpp = 6;
@@ -1722,7 +1722,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
case GRAY8BIT:
s->image_composition = 2;
-
+
s->params.format = SANE_FRAME_GRAY;
s->params.bytes_per_line = s->params.pixels_per_line;
s->bpp = s->params.depth = 8;
@@ -1760,9 +1760,9 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
if (s->mode == COLOR18BIT ||
s->mode == COLOR24BIT)
s->params.format = SANE_FRAME_RED + s->pass;
-
+
s->params.last_frame = (s->params.format != SANE_FRAME_RED && s->params.format != SANE_FRAME_GREEN);
-
+
if (params)
*params = s->params;
return SANE_STATUS_GOOD;
@@ -1856,23 +1856,23 @@ reader_process (void *scanner)
{
/* No lines in scanner? Scan some more */
status = request_more_data (s);
-
+
if (status != SANE_STATUS_GOOD)
{
close (fd);
return 1;
}
}
-
+
/* We only request as many lines as there are already scanned */
if (lines > s->lines_available)
lines = s->lines_available;
DBG (1, "Requesting %d lines, in scanner: %d, total: %d\n", lines,
s->lines_available, s->params.lines);
-
+
status = read_data (s, data, lines, bytes_per_line);
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "sane_read: read_data() failed (%s)\n",
@@ -1881,10 +1881,10 @@ reader_process (void *scanner)
close (fd);
return 1;
}
-
+
/* Sometimes the scanner will return more bytes per line than
requested, so we copy only what we wanted. */
-
+
for (i = 0; i < lines; i++)
if (write (fd, data + i * bytes_per_line, s->params.bytes_per_line) != s->params.bytes_per_line)
{
@@ -1895,7 +1895,7 @@ reader_process (void *scanner)
lines_read += lines;
}
-
+
close (fd);
return 0;
}
@@ -1906,14 +1906,14 @@ sane_start (SANE_Handle handle)
AgfaFocus_Scanner *s = handle;
SANE_Status status;
int fds[2];
-
+
/* First make sure we have a current parameter set. Some of the
parameters will be overwritten below, but that's OK. */
-
+
status = sane_get_parameters (s, 0);
if (status != SANE_STATUS_GOOD)
return status;
-
+
/* don't initialise scanner if we're doing a three-pass scan */
if (s->pass == 0)
@@ -1966,10 +1966,10 @@ sane_start (SANE_Handle handle)
42, 26, 38, 22, 43, 27, 39, 23,
4, 58, 14, 54, 1, 59, 15, 55,
36, 20, 46, 30, 33, 17, 47, 31,
- 12, 52, 8, 62, 9, 49, 5, 63,
+ 12, 52, 8, 62, 9, 49, 5, 63,
44, 28, 40, 24, 41, 25, 37, 21
};
-
+
status = upload_dither_matrix (s, 8, 8, matrix);
if (status != SANE_STATUS_GOOD)
{
@@ -2030,7 +2030,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
if (!s->scanning)
return do_cancel (s);
-
+
if (nread < 0) {
if (errno == EAGAIN) {
return SANE_STATUS_GOOD;
diff --git a/backend/agfafocus.conf.in b/backend/agfafocus.conf.in
index 2648863..caa0783 100644
--- a/backend/agfafocus.conf.in
+++ b/backend/agfafocus.conf.in
@@ -1,2 +1 @@
/dev/scanner
-
diff --git a/backend/agfafocus.h b/backend/agfafocus.h
index 078b68e..036a656 100644
--- a/backend/agfafocus.h
+++ b/backend/agfafocus.h
@@ -1,7 +1,7 @@
/* sane - Scanner Access Now Easy.
This file (C) 1997 Ingo Schneider
- (C) 1998 Karl Anders ygard
+ (C) 1998 Karl Anders Øygard
This file is part of the SANE package.
@@ -27,7 +27,7 @@ enum AgfaFocus_Scanner_Type
AGFAGRAY64,
AGFALINEART,
AGFAGRAY256,
- AGFACOLOR
+ AGFACOLOR
};
typedef enum
diff --git a/backend/apple.c b/backend/apple.c
index 487d743..167f6ea 100644
--- a/backend/apple.c
+++ b/backend/apple.c
@@ -227,14 +227,14 @@ static const uint8_t test_unit_ready[] =
#if 0
-SANE_Int
+SANE_Int
xqstep (unsigned int Xres, unsigned int bpp)
{
return (SANE_Int) ((double) (8 * 1200)) / ((double) (Xres * bpp));
}
-SANE_Int
+SANE_Int
yqstep (unsigned int Yres, unsigned int bpp)
{
return (SANE_Int) ((double) (1200)) / ((double) (Yres));
@@ -246,7 +246,7 @@ yqstep (unsigned int Yres, unsigned int bpp)
/* The functions below return the quantized value of x,y in scanners dots
aka 1/1200 of an inch */
-static SANE_Int
+static SANE_Int
xquant (double x, unsigned int Xres, unsigned int bpp, int dir)
{
double tmp;
@@ -264,7 +264,7 @@ xquant (double x, unsigned int Xres, unsigned int bpp, int dir)
-static SANE_Int
+static SANE_Int
yquant (double y, unsigned int Yres, int dir)
{
double tmp;
@@ -986,7 +986,7 @@ calc_parameters (Apple_Scanner * s)
s->ulx, s->uly, s->wx, s->wy);
-/*
+/*
TODO: Remove this ugly hack (Protect). Read to learn why!
@@ -1168,7 +1168,7 @@ mode_update (SANE_Handle handle, char *val)
DISABLE (OPT_HALFTONE_PATTERN);
if (s->hw->ScannerModel == COLORONESCANNER)
ENABLE(OPT_COLOR_SENSOR);
-
+
} /* End of Gray */
else if (!strcmp (val, "BiColor"))
{
@@ -1215,7 +1215,7 @@ mode_update (SANE_Handle handle, char *val)
{
DISABLE (OPT_THRESHOLD);
DISABLE (OPT_AUTOBACKGROUND_THRESHOLD);
-
+
if (s->hw->ScannerModel == COLORONESCANNER)
{
ENABLE (OPT_VOLT_REF);
@@ -1302,7 +1302,7 @@ init_options (Apple_Scanner * s)
s->opt[OPT_HWDETECT_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_HWDETECT_GROUP].cap = 0;
s->opt[OPT_HWDETECT_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
s->opt[OPT_MODEL].name = "model";
s->opt[OPT_MODEL].title = "Model";
s->opt[OPT_MODEL].desc = "Model and capabilities";
@@ -1325,7 +1325,7 @@ init_options (Apple_Scanner * s)
halftone_pattern_list[1]="bayer4x4";
halftone_pattern_list[2]="download";
halftone_pattern_list[3]=NULL;
-
+
switch (s->hw->ScannerModel)
{
@@ -1515,7 +1515,7 @@ init_options (Apple_Scanner * s)
s->opt[OPT_AUTOBACKGROUND_THRESHOLD].constraint.range = &byte_range;
s->val[OPT_AUTOBACKGROUND_THRESHOLD].w = 64;
-
+
/* AppleScanner & OneScanner options */
/* Select HalfTone Pattern */
@@ -2440,7 +2440,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
#ifdef RESERVE_RELEASE_HACK
uint8_t reserve[6];
uint8_t release[6];
-#endif
+#endif
uint8_t result[12];
size_t size;
@@ -2457,7 +2457,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
#else
*len = 0;
if (!s->scanning) return SANE_STATUS_EOF;
-
+
if (!strcmp (s->val[OPT_MODE].s, "Gray16"))
Pseudo8bit = SANE_TRUE;
@@ -2493,7 +2493,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
release[1]|=SETTHIRDPARTY;
#endif
-
+
do
{
size = sizeof (result);
diff --git a/backend/apple.h b/backend/apple.h
index 9e14434..b4a0c03 100644
--- a/backend/apple.h
+++ b/backend/apple.h
@@ -91,7 +91,7 @@ enum Apple_Modes
EMPTY_DONT_USE_IT,
APPLE_MODE_COLOR
};
-
+
enum Apple_Option
{
OPT_NUM_OPTS = 0,
@@ -116,7 +116,7 @@ enum Apple_Option
OPT_BRIGHTNESS,
OPT_CONTRAST,
OPT_THRESHOLD,
-
+
/* AppleScanner only */
OPT_GRAYMAP,
OPT_AUTOBACKGROUND,
@@ -147,7 +147,7 @@ enum Apple_Option
/* OneScanner && ColorOneScanner */
OPT_LED,
OPT_CCD,
-
+
/* ColorOneScanner only */
OPT_MTF_CIRCUIT,
@@ -255,7 +255,7 @@ TODO: Initialize this beasts with malloc instead of statically allocation.
SANE_Bool scanning;
SANE_Bool AbortedByUser;
-
+
int pass; /* pass number */
SANE_Parameters params;
diff --git a/backend/artec.c b/backend/artec.c
index 2d564a5..2ba8d6d 100644
--- a/backend/artec.c
+++ b/backend/artec.c
@@ -1715,7 +1715,7 @@ artec_get_cap_data (ARTEC_Device * dev, int fd)
DBG (7, "artec_get_cap_data()\n");
- /* DB always use the hard-coded capability info first
+ /* DB always use the hard-coded capability info first
* if we get cap data from the scanner, we override */
cap_model = -1;
for (loop = 0; loop < NELEMS (cap_data); loop++)
diff --git a/backend/artec.conf.in b/backend/artec.conf.in
index 371a174..8b13880 100644
--- a/backend/artec.conf.in
+++ b/backend/artec.conf.in
@@ -1,3 +1,2 @@
scsi ULTIMA
/dev/scanner
-
diff --git a/backend/artec_eplus48u.c b/backend/artec_eplus48u.c
index f31bf5c..0e81b06 100644
--- a/backend/artec_eplus48u.c
+++ b/backend/artec_eplus48u.c
@@ -3505,7 +3505,7 @@ do_cancel (Artec48U_Scanner * s, SANE_Bool closepipe)
{
XDBG ((1, "sanei_thread_waitpid() failed !\n"));
}
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
XDBG ((1, "reader_process killed\n"));
}
if (SANE_TRUE == closepipe)
@@ -4337,7 +4337,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
if (s->eof == SANE_TRUE)
{
sanei_thread_waitpid (s->reader_pid, 0);
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
artec48u_scanner_stop_scan (s);
artec48u_carriage_home (s->dev);
return close_pipe (s);
diff --git a/backend/artec_eplus48u.conf.in b/backend/artec_eplus48u.conf.in
index 0b20c6e..03c9b57 100644
--- a/backend/artec_eplus48u.conf.in
+++ b/backend/artec_eplus48u.conf.in
@@ -116,4 +116,3 @@ usb 0x05d8 0x4011
option artecFirmwareFile @DATADIR@/sane/artec_eplus48u/Artec48.usb
option vendorString "Yakumo"
option modelString "Scan50"
-
diff --git a/backend/as6e.c b/backend/as6e.c
index 76241fb..37a6d3b 100644
--- a/backend/as6e.c
+++ b/backend/as6e.c
@@ -799,7 +799,7 @@ check_for_driver (const char *devname)
char *path;
char fullname[NAMESIZE];
char dir[NAMESIZE];
- int count = 0, offset = 0;
+ int count = 0, offset = 0, valid;
path = getenv ("PATH");
if (!path)
@@ -808,21 +808,29 @@ check_for_driver (const char *devname)
{
memset (fullname, '\0', sizeof (fullname));
memset (dir, '\0', sizeof (dir));
+ valid = 1;
while ((path[count] != ':') && (path[count] != '\0'))
{
- dir[count - offset] = path[count];
+ /* prevent writing data, which are out of bounds */
+ if ((unsigned int)(count - offset) < sizeof (dir))
+ dir[count - offset] = path[count];
+ else
+ valid = 0;
count++;
}
- /* use sizeof(fullname)-1 to make sure there is at least one padded null byte */
- strncpy (fullname, dir, sizeof(fullname)-1);
- /* take into account that fullname already contains non-null bytes */
- strncat (fullname, "/", sizeof(fullname)-strlen(fullname)-1);
- strncat (fullname, devname, sizeof(fullname)-strlen(fullname)-1);
- if (!stat (fullname, &statbuf))
+ if (valid == 1)
{
- modes = statbuf.st_mode;
- if (S_ISREG (modes))
- return (1); /* found as6edriver */
+ /* use sizeof(fullname)-1 to make sure there is at least one padded null byte */
+ strncpy (fullname, dir, sizeof(fullname)-1);
+ /* take into account that fullname already contains non-null bytes */
+ strncat (fullname, "/", sizeof(fullname)-strlen(fullname)-1);
+ strncat (fullname, devname, sizeof(fullname)-strlen(fullname)-1);
+ if (!stat (fullname, &statbuf))
+ {
+ modes = statbuf.st_mode;
+ if (S_ISREG (modes))
+ return (1); /* found as6edriver */
+ }
}
if (path[count] == '\0')
return (0); /* end of path --no driver found */
diff --git a/backend/avision.c b/backend/avision.c
index 61491a2..e9f0145 100644
--- a/backend/avision.c
+++ b/backend/avision.c
@@ -44,7 +44,7 @@
74xx, Minolta FS-V1 ...) or Fujitsu ScanPartner with the AVISION SCSI-2/3
or USB command set and written by René Rebe and Meino Cramer.
-
+
Copyright 2002 - 2015 by
"Ren Rebe" <rene@exactcode.de>
@@ -54,7 +54,7 @@
Copyright 2002 by
"Jose Paulo Moitinho de Almeida" <moitinho@civil.ist.utl.pt>
-
+
Copyright 2010, 2011 by
"Mike Kelly" <mike@piratehaven.org>
@@ -73,7 +73,7 @@
OS/2 threading support
"Falk Rohsiepe"
Spelling and whitespace as well as HP5370 quirks
-
+
Many additional special thanks to:
Avision INC for providing protocol documentation.
Avision INC for sponsoring an AV 8000S with ADF.
@@ -90,7 +90,7 @@
Thanks to all the people and companies above. Without you
the Avision backend would not be in the shape it is today! ;-)
-
+
********************************************************************************/
/* SANE-FLOW-DIAGRAMM (from umax.c)
@@ -166,13 +166,13 @@ static Avision_HWEntry Avision_Device_List [] =
"Avision", "AV100CS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV100IIICS",
0, 0,
"Avision", "AV100IIICS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV100S",
0, 0,
"Avision", "AV100S",
@@ -199,7 +199,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON | AV_2ND_LINE_INTERLACED | AV_NO_REAR | AV_SOFT_SCALE | AV_DOES_KEEP_WINDOW | AV_DOES_KEEP_GAMMA | AV_REAR_OFFSET},
/* comment="sheetfed duplex scanner" */
/* status="good" */
-
+
{ NULL, NULL,
0x0638, 0x0A93,
"Avision", "AV122 C2",
@@ -213,7 +213,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON | AV_ACCEL_TABLE},
/* comment="sheetfed scanner" */
/* status="complete" */
-
+
{ NULL, NULL,
0x0638, 0x0A25,
"Avision", "AV210",
@@ -303,37 +303,37 @@ static Avision_HWEntry Avision_Device_List [] =
"Avision", "AV240SC",
0},
/* status="untested" */
-
+
{ "AVISION", "AV260CS",
0, 0,
"Avision", "AV260CS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV360CS",
0, 0,
"Avision", "AV360CS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV363CS",
0, 0,
"Avision", "AV363CS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV420CS",
0, 0,
"Avision", "AV420CS",
0},
/* status="untested" */
-
+
{ "AVISION", "AV6120",
0, 0,
"Avision", "AV6120",
0},
/* status="untested" */
-
+
{ NULL, "AV610",
0x0638, 0x0a18,
"Avision", "AV610",
@@ -353,7 +353,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_NO_BACKGROUND | AV_INT_BUTTON}, /* cancel button -> sense abort! */
/* status="good" */
- { NULL, NULL,
+ { NULL, NULL,
0x0638, 0x0a41,
"Avision", "AM3000 Series",
0},
@@ -373,35 +373,35 @@ static Avision_HWEntry Avision_Device_List [] =
0},
/* comment="1 pass, 600 dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV620CS Plus",
0, 0,
"Avision", "AV620CS Plus",
0},
/* comment="1 pass, 1200 dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV630CS",
0, 0,
"Avision", "AV630CS",
0},
/* comment="1 pass, 1200 dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV630CSL",
0, 0,
"Avision", "AV630CSL",
0},
/* comment="1 pass, 1200 dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV6240",
0, 0,
"Avision", "AV6240",
0},
/* comment="1 pass, ??? dpi" */
/* status="complete" */
-
+
{ NULL, NULL,
0x0638, 0x0A13,
"Avision", "AV600U",
@@ -422,70 +422,70 @@ static Avision_HWEntry Avision_Device_List [] =
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV690U",
0, 0,
"Avision", "AV690U",
0},
/* comment="1 pass, 2400 dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV800S",
0, 0,
"Avision", "AV800S",
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV810C",
0, 0,
"Avision", "AV810C",
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV820",
0, 0,
"Avision", "AV820",
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV820C",
0, 0,
"Avision", "AV820C",
0},
/* comment="1 pass, ??? dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV820C Plus",
0, 0,
"Avision", "AV820C Plus",
0},
/* comment="1 pass, ??? dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV830C",
0, 0,
"Avision", "AV830C",
0},
/* comment="1 pass, ??? dpi" */
/* status="complete" */
-
+
{ "AVISION", "AV830C Plus",
0, 0,
"Avision", "AV830C Plus",
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV880",
0, 0,
"Avision", "AV880",
0},
/* comment="1 pass, ??? dpi" */
/* status="untested" */
-
+
{ "AVISION", "AV880C",
0, 0,
"Avision", "AV880C",
@@ -613,7 +613,7 @@ static Avision_HWEntry Avision_Device_List [] =
/* status="basic" */
/* and possibly more avisions ;-) */
-
+
{ "HP", "ScanJet 5300C",
0x03f0, 0x0701,
"Hewlett-Packard", "ScanJet 5300C",
@@ -627,14 +627,14 @@ static Avision_HWEntry Avision_Device_List [] =
AV_MULTI_CALIB_CMD | AV_INT_STATUS},
/* comment="1 pass, 2400 dpi - some FW revisions have x-axis image scaling problems over 1200 dpi" */
/* status="good" */
-
+
{ "hp", "scanjet 7400c",
0x03f0, 0x0801,
"Hewlett-Packard", "ScanJet 7400c",
AV_LIGHT_CHECK_BOGUS | AV_NO_64BYTE_ALIGN | AV_INT_STATUS},
/* comment="1 pass, 2400 dpi - dual USB/SCSI interface" */
/* status="good" */
-
+
#ifdef FAKE_ENTRIES_FOR_DESC_GENERATION
{ "hp", "scanjet 7450c",
0x03f0, 0x0801,
@@ -642,7 +642,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_NO_64BYTE_ALIGN | AV_INT_STATUS},
/* comment="1 pass, 2400 dpi - dual USB/SCSI interface" */
/* status="good" */
-
+
{ "hp", "scanjet 7490c",
0x03f0, 0x0801,
"Hewlett-Packard", "ScanJet 7490c",
@@ -681,8 +681,8 @@ static Avision_HWEntry Avision_Device_List [] =
AV_ADF_FLIPPING_DUPLEX | AV_FIRMWARE},
/* comment="1 pass, 4800 (?) dpi - USB 2.0 and SCSI - only SCSI tested so far" */
/* status="good" */
-
-#endif
+
+#endif
{ "HP", "C9930A",
0x03f0, 0x3805,
"Hewlett-Packard", "ScanJet 8300",
@@ -705,7 +705,7 @@ static Avision_HWEntry Avision_Device_List [] =
/* comment="1 pass, 4800 (?) dpi - USB 2.0" */
/* status="good" */
-#endif
+#endif
{ "Minolta", "#2882",
0, 0,
"Minolta", "Dimage Scan Dual I",
@@ -717,21 +717,21 @@ static Avision_HWEntry Avision_Device_List [] =
"Minolta", "Scan Multi Pro",
AV_FORCE_FILM | AV_NO_START_SCAN}, /* AV_FILMSCANNER (frame control)? */
/* status="untested" */
-
+
{ "MINOLTA", "FS-V1",
0x0638, 0x026a,
"Minolta", "Dimage Scan Dual II",
AV_FILMSCANNER | AV_ONE_CALIB_CMD | AV_12_BIT_MODE},
/* comment="1 pass, film-scanner" */
/* status="good" */
-
+
{ "MINOLTA", "Elite II",
0x0686, 0x4004,
"Minolta", "Elite II",
AV_FILMSCANNER | AV_ONE_CALIB_CMD},
/* comment="1 pass, film-scanner" */
/* status="untested" */
-
+
{ "MINOLTA", "FS-V3",
0x0686, 0x400d,
"Minolta", "Dimage Scan Dual III",
@@ -759,33 +759,33 @@ static Avision_HWEntry Avision_Device_List [] =
0},
/* comment="" */
/* status="good" */
-
+
{ "MITSBISH", "MCA-ADFC",
0, 0,
"Mitsubishi", "MCA-ADFC",
0},
/* status="untested" */
-
+
{ "MITSBISH", "MCA-S1200C",
0, 0,
"Mitsubishi", "S1200C",
0},
/* status="untested" */
-
+
{ "MITSBISH", "MCA-S600C",
0, 0,
"Mitsubishi", "S600C",
0},
/* status="untested" */
-
+
{ "MITSBISH", "SS600",
0, 0,
"Mitsubishi", "SS600",
0},
/* status="good" */
-
+
/* The next are all untested ... */
-
+
{ "FCPA", "ScanPartner",
0, 0,
"Fujitsu", "ScanPartner",
@@ -797,25 +797,25 @@ static Avision_HWEntry Avision_Device_List [] =
"Fujitsu", "ScanPartner 10",
AV_FUJITSU},
/* status="untested" */
-
+
{ "FCPA", "ScanPartner 10C",
0, 0,
"Fujitsu", "ScanPartner 10C",
AV_FUJITSU},
/* status="untested" */
-
+
{ "FCPA", "ScanPartner 15C",
0, 0,
"Fujitsu", "ScanPartner 15C",
AV_FUJITSU},
/* status="untested" */
-
+
{ "FCPA", "ScanPartner 300C",
0, 0,
"Fujitsu", "ScanPartner 300C",
0},
/* status="untested" */
-
+
{ "FCPA", "ScanPartner 600C",
0, 0,
"Fujitsu", "ScanPartner 600C",
@@ -827,13 +827,13 @@ static Avision_HWEntry Avision_Device_List [] =
"Fujitsu", "ScanPartner 620C",
AV_LIGHT_CHECK_BOGUS},
/* status="good" */
-
+
{ "FCPA", "ScanPartner Jr",
0, 0,
"Fujitsu", "ScanPartner Jr",
0},
/* status="untested" */
-
+
{ "FCPA", "ScanStation",
0, 0,
"Fujitsu", "ScanStation",
@@ -863,13 +863,13 @@ static Avision_HWEntry Avision_Device_List [] =
"Kodak", "i40",
AV_INT_BUTTON | AV_GRAY_MODES},
/* status="basic" */
-
+
{ NULL, NULL,
0x040a, 0x6003,
"Kodak", "i50",
AV_INT_BUTTON},
/* status="untested" */
-
+
#ifdef FAKE_ENTRIES_FOR_DESC_GENERATION
{ NULL, NULL,
0x040a, 0x6003,
@@ -877,13 +877,13 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON},
/* status="untested" */
#endif
-
+
{ NULL, NULL,
0x040a, 0x6004,
"Kodak", "i60",
AV_INT_BUTTON},
/* status="untested" */
-
+
#ifdef FAKE_ENTRIES_FOR_DESC_GENERATION
{ NULL, NULL,
0x040a, 0x6004,
@@ -891,19 +891,19 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON},
/* status="untested" */
#endif
-
+
{ NULL, NULL,
0x040a, 0x6005,
"Kodak", "i80",
AV_INT_BUTTON},
- /* status="good" */
-
+ /* status="good" */
+
{ "iVina", "1200U",
0x0638, 0x0268,
"iVina", "1200U",
0},
/* status="untested" */
-
+
{ NULL, NULL,
0x04a7, 0x0424,
"Visioneer", "Strobe XP 450",
@@ -917,7 +917,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON | AV_ACCEL_TABLE},
/* comment="sheetfed scanner" */
/* status="complete" */
-
+
{ NULL, NULL,
0x04a7, 0x0479,
"Visioneer", "Strobe XP 470",
@@ -931,7 +931,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON | AV_ACCEL_TABLE},
/* comment="sheetfed scanner" */
/* status="complete" */
-
+
{ NULL, NULL,
0x04a7, 0x0420,
"Visioneer", "9320",
@@ -973,7 +973,7 @@ static Avision_HWEntry Avision_Device_List [] =
0},
/* comment="sheetfed scanner" */
/* status="complete" */
-
+
{ NULL, NULL,
0x04a7, 0x0423,
"Visioneer", "9750",
@@ -1017,7 +1017,7 @@ static Avision_HWEntry Avision_Device_List [] =
AV_INT_BUTTON},
/* comment="sheetfed scanner" */
/* status="complete" */
-
+
{ NULL, NULL,
0x04a7, 0x049C,
"Xerox", "DocuMate150",
@@ -1047,7 +1047,7 @@ static Avision_HWEntry Avision_Device_List [] =
"Xerox", "DocuMate250-G",
AV_INT_BUTTON},
/* status="good" */
-
+
{ NULL, NULL,
0x04a7, 0x0449,
"Xerox", "DocuMate252",
@@ -1059,7 +1059,7 @@ static Avision_HWEntry Avision_Device_List [] =
"Xerox", "DocuMate252-G",
AV_INT_BUTTON},
/* status="good" */
-
+
{ NULL, NULL,
0x04a7, 0x0476,
"Xerox", "DocuMate232",
@@ -1077,7 +1077,7 @@ static Avision_HWEntry Avision_Device_List [] =
"Xerox", "DocuMate262-G",
AV_INT_BUTTON},
/* status="good" */
-
+
{ NULL, NULL,
0x04a7, 0x04a7,
"Xerox", "DocuMate262i",
@@ -1095,7 +1095,7 @@ static Avision_HWEntry Avision_Device_List [] =
"Xerox", "DocuMate272-G",
AV_INT_BUTTON},
/* status="untested" */
-
+
{ NULL, NULL,
0x04a7, 0x0446,
"Xerox", "DocuMate510",
@@ -1179,35 +1179,35 @@ static Avision_HWEntry Avision_Device_List [] =
V6240 */
/* Possibly:
-Lexmark 4600 MFP Option MFP Options
-Lexmark 4600 MFP Option (C772n) MFP Options
+Lexmark 4600 MFP Option MFP Options
+Lexmark 4600 MFP Option (C772n) MFP Options
Lexmark X215
-Lexmark Optra Image X242
+Lexmark Optra Image X242
Lexmark X443
Lexmark 3100
-Lexmark 3200
-Lexmark X340 MFP Multifunction
-Lexmark X342n MFP Multifunction
+Lexmark 3200
+Lexmark X340 MFP Multifunction
+Lexmark X342n MFP Multifunction
Lexmark X522
Lexmark X630
Lexmark X632E
-Lexmark X642e MFP Multifunction
-Lexmark X644e MFP Multifunction
-Lexmark X646dte MFP Multifunction
-Lexmark X646e MFP Multifunction
-Lexmark X646ef MFP Multifunction
-Lexmark X772e Multifunction
-Lexmark X850e MFP Multifunction
-Lexmark X852e MFP Multifunction
-Lexmark X854e MFP Multifunction
+Lexmark X642e MFP Multifunction
+Lexmark X644e MFP Multifunction
+Lexmark X646dte MFP Multifunction
+Lexmark X646e MFP Multifunction
+Lexmark X646ef MFP Multifunction
+Lexmark X772e Multifunction
+Lexmark X850e MFP Multifunction
+Lexmark X852e MFP Multifunction
+Lexmark X854e MFP Multifunction
Lexmark X4500 MFP
*/
-
+
/* last entry detection */
{ NULL, NULL,
0, 0,
NULL, NULL,
- 0}
+ 0}
};
#if 0
@@ -1316,13 +1316,6 @@ static const SANE_Range percentage_range =
SANE_FIX (1) /* quantization */
};
-static const SANE_Range abs_percentage_range =
- {
- SANE_FIX (0), /* minimum */
- SANE_FIX (100), /* maximum */
- SANE_FIX (1) /* quantization */
- };
-
static const SANE_Range exposure_range =
{
0, /* minimum */
@@ -1352,20 +1345,26 @@ static const uint8_t test_unit_ready[] =
AVISION_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_AVISION_SCSI_GET_DATA_STATUS
static const uint8_t get_status[] =
{
- AVISION_SCSI_GET_DATA_STATUS, 0x00, 0x00, 0x00, 0x00, 0x00,
+ AVISION_SCSI_GET_DATA_STATUS, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0c, 0x00
};
+#endif
static size_t
max_string_size (const SANE_String_Const strings[])
{
size_t size, max_size = 0;
int i;
-
+
DBG (3, "max_string_size:\n");
-
+
for (i = 0; strings[i]; ++ i) {
size = strlen (strings[i]) + 1;
if (size > max_size)
@@ -1386,7 +1385,7 @@ static void debug_print_raw (int dbg_level, char* info, const uint8_t* data,
size_t count)
{
size_t i;
-
+
DBG (dbg_level, "%s", info);
for (i = 0; i < count; ++ i) {
DBG (dbg_level, " [%lu] %1d%1d%1d%1d%1d%1d%1d%1db %3oo %3dd %2xx\n",
@@ -1412,7 +1411,7 @@ static void debug_print_hex_raw (int dbg_level, char* info, const uint8_t* data,
count--; i++;
}
*--t = 0;
-
+
DBG (dbg_level, " [%08x] %s\n", address, text);
address += 16;
}
@@ -1429,7 +1428,7 @@ static void debug_print_nvram_data (int dbg_level, char* func,
func, get_quad(nvram->adf_duplex_scans));
DBG (dbg_level, "%s: flatbed scans: %d\n",
func, get_quad(nvram->flatbed_scans));
-
+
DBG (dbg_level, "%s: flatbed leading edge: %d\n",
func, (int16_t)get_double(nvram->flatbed_leading_edge));
DBG (dbg_level, "%s: flatbed side edge: %d\n",
@@ -1442,7 +1441,7 @@ static void debug_print_nvram_data (int dbg_level, char* func,
func, (int16_t)get_double(nvram->adf_rear_leading_edge));
DBG (dbg_level, "%s: ADF rear side edge: %d\n",
func, (int16_t)get_double(nvram->adf_rear_side_edge));
-
+
DBG (dbg_level, "%s: born month: %d\n",
func, get_double(nvram->born_month));
DBG (dbg_level, "%s: born day: %d\n",
@@ -1456,7 +1455,7 @@ static void debug_print_nvram_data (int dbg_level, char* func,
func, get_double(nvram->first_scan_day));
DBG (dbg_level, "%s: first scan year: %d\n",
func, get_double(nvram->first_scan_year));
-
+
DBG (dbg_level, "%s: vert. magnification: %d\n",
func, get_double(nvram->vertical_magnification));
@@ -1467,10 +1466,10 @@ static void debug_print_nvram_data (int dbg_level, char* func,
func, nvram->ccd_type);
DBG (dbg_level, "%s: scan speed: %d\n",
func, nvram->scan_speed);
-
+
DBG (dbg_level, "%s: serial: '%.24s'\n", /* 24 chars max */
func, nvram->serial);
-
+
DBG (dbg_level, "%s: power saving time: %d\n",
func, get_double(nvram->power_saving_time));
@@ -1495,11 +1494,11 @@ static void debug_print_avdimen (int dbg_level, char* func,
{
DBG (dbg_level, "%s: hw_xres: %d, hw_yres: %d, line_difference: %d\n",
func, avdimen->hw_xres, avdimen->hw_yres, avdimen->line_difference);
-
+
DBG (dbg_level, "%s: tlx: %ld, tly: %ld, brx: %ld, bry: %ld\n",
func, avdimen->tlx, avdimen->tly,
avdimen->brx, avdimen->bry);
-
+
DBG (dbg_level, "%s: hw_pixel_per_line: %d, hw_lines: %d, hw_bytes_per_line: %d\n",
func, avdimen->hw_pixels_per_line, avdimen->hw_lines, avdimen->hw_bytes_per_line);
@@ -1520,18 +1519,18 @@ static void debug_print_calib_format (int dbg_level, char* func,
uint8_t* result)
{
debug_print_raw (dbg_level + 2, "debug_print_calib_format:\n", result, 32);
-
+
DBG (dbg_level, "%s: [0-1] pixels per line: %d\n",
func, get_double ( &(result[0]) ));
DBG (dbg_level, "%s: [2] bytes per channel: %d\n", func, result[2]);
DBG (dbg_level, "%s: [3] line count: %d\n", func, result[3]);
-
+
DBG (dbg_level, "%s: [4] FLAG:%s%s%s\n",
func,
result[4] == 1?" MUST_DO_CALIBRATION":"",
result[4] == 2?" SCAN_IMAGE_DOES_CALIBRATION":"",
result[4] == 3?" NEEDS_NO_CALIBRATION":"");
-
+
DBG (dbg_level, "%s: [5] Ability1:%s%s%s%s%s%s%s%s\n",
func,
BIT(result[5],7)?" NONE_PACKED":" PACKED",
@@ -1542,18 +1541,18 @@ static void debug_print_calib_format (int dbg_level, char* func,
BIT(result[5],2)?" DARK_CALIB":"",
BIT(result[5],1)?" NEEDS_WHITE_BLACK_SHADING_DATA":"",
BIT(result[5],0)?" NEEDS_CALIB_TABLE_CHANNEL_BY_CHANNEL":"");
-
+
DBG (dbg_level, "%s: [6] R gain: %d\n", func, result[6]);
DBG (dbg_level, "%s: [7] G gain: %d\n", func, result[7]);
DBG (dbg_level, "%s: [8] B gain: %d\n", func, result[8]);
-
+
DBG (dbg_level, "%s: [9-10] R shading target: %x\n",
func, get_double ( &(result[9]) ) );
DBG (dbg_level, "%s: [11-12] G shading target: %x\n",
func, get_double ( &(result[11]) ) );
DBG (dbg_level, "%s: [13-14] B shading target: %x\n",
func, get_double ( &(result[13]) ) );
-
+
DBG (dbg_level, "%s: [15-16] R dark shading target: %x\n",
func, get_double ( &(result[15]) ) );
DBG (dbg_level, "%s: [17-18] G dark shading target: %x\n",
@@ -1564,7 +1563,7 @@ static void debug_print_calib_format (int dbg_level, char* func,
DBG (dbg_level, "%s: [21] true-gray gain: %d\n", func, result[21]);
DBG (dbg_level, "%s: [22-23] true-gray shading target: %x\n",
func, get_double ( &(result[22]) ) );
-
+
DBG (dbg_level, "%s: [24-25] true-gray dark shading target: %x\n",
func, get_double ( &(result[24]) ) );
}
@@ -1573,7 +1572,7 @@ static void debug_print_accel_info (int dbg_level, char* func,
uint8_t* result)
{
debug_print_raw (dbg_level + 2, "debug_print_accel_info:\n", result, 24);
-
+
DBG (dbg_level, "%s: [0-1] acceleration step count: %d\n",
func, get_double ( &(result[0]) ));
DBG (dbg_level, "%s: [2-3] stable step count: %d\n",
@@ -1591,7 +1590,7 @@ static void debug_print_accel_info (int dbg_level, char* func,
BIT(result[16],0)?" TWO_BYTES_PER_ELEM":" SINGLE_BYTE_PER_ELEM",
BIT(result[16],1)?" LOW_HIGH_ORDER":" HIGH_LOW_ORDER");
DBG (dbg_level, "%s: [17] table count: %d\n", func, result[17]);
-
+
}
static void debug_print_window_descriptor (int dbg_level, char* func,
@@ -1605,7 +1604,7 @@ static void debug_print_window_descriptor (int dbg_level, char* func,
(uint8_t*)(&window->descriptor),
sizeof(*window) -
sizeof(window->header));
-
+
DBG (dbg_level, "%s: [0] window_id: %d\n", func,
window->descriptor.winid);
DBG (dbg_level, "%s: [2-3] x-axis res: %d\n", func,
@@ -1618,7 +1617,7 @@ static void debug_print_window_descriptor (int dbg_level, char* func,
func, get_quad (window->descriptor.uly));
DBG (dbg_level, "%s: [14-17] window width: %d\n", func,
get_quad (window->descriptor.width));
- DBG (dbg_level, "%s: [18-21] window length: %d\n", func,
+ DBG (dbg_level, "%s: [18-21] window length: %d\n", func,
get_quad (window->descriptor.length));
DBG (dbg_level, "%s: [22] brightness: %d\n", func,
window->descriptor.brightness);
@@ -1660,14 +1659,14 @@ static void debug_print_window_descriptor (int dbg_level, char* func,
window->avision.type.normal.bitset2);
DBG (dbg_level, "%s: [50] ir exposure time: %x\n",
func, window->avision.type.normal.ir_exposure_time);
-
+
DBG (dbg_level, "%s: [51-52] r exposure: %x\n", func,
get_double (window->avision.type.normal.r_exposure_time));
DBG (dbg_level, "%s: [53-54] g exposure: %x\n", func,
get_double (window->avision.type.normal.g_exposure_time));
DBG (dbg_level, "%s: [55-56] b exposure: %x\n", func,
get_double (window->avision.type.normal.b_exposure_time));
-
+
DBG (dbg_level, "%s: [57] bitset3: %x\n", func,
window->avision.type.normal.bitset3);
DBG (dbg_level, "%s: [58] auto focus: %d\n", func,
@@ -1685,7 +1684,7 @@ static int write_pnm_header (FILE* f, color_mode m, int depth, int width, int he
int maxval = (1 << depth) - 1;
const char* hdr_str = NULL;
/* construct PNM header */
-
+
switch (m) {
case AV_THRESHOLDED:
case AV_DITHERED:
@@ -1704,7 +1703,7 @@ static int write_pnm_header (FILE* f, color_mode m, int depth, int width, int he
case AV_COLOR_MODE_LAST:
; /* silence compiler warning */
}
-
+
return fprintf (f, hdr_str, width, height, maxval);
}
@@ -1712,19 +1711,19 @@ static SANE_Status
sense_handler (int fd, u_char* sense, void* arg)
{
SANE_Status status = SANE_STATUS_IO_ERROR; /* default case */
-
+
char* text;
char textbuf[64];
-
+
uint8_t error_code = sense[0] & 0x7f;
uint8_t sense_key = sense[2] & 0xf;
uint8_t additional_sense = sense[7];
-
+
fd = fd; /* silence gcc */
arg = arg; /* silence gcc */
-
+
DBG (3, "sense_handler:\n");
-
+
switch (error_code)
{
case 0x70:
@@ -1736,15 +1735,15 @@ sense_handler (int fd, u_char* sense, void* arg)
default:
text = "unknown sense";
}
-
+
debug_print_raw (1, "sense_handler: data:\n", sense, 8 + additional_sense);
-
+
/* request valid? */
if (! (sense[0] & (1<<7))) {
DBG (1, "sense_handler: sense not valid ...\n");
return status;
}
-
+
switch (sense_key)
{
case 0x00:
@@ -1778,26 +1777,26 @@ sense_handler (int fd, u_char* sense, void* arg)
sprintf (textbuf, "got unknown sense code 0x%02x", (int)sense_key);
text = textbuf;
}
-
+
DBG (1, "sense_handler: sense code: %s\n", text);
-
+
if (sense[2] & (1<<6))
- DBG (1, "sense_handler: end of scan\n");
- else
+ DBG (1, "sense_handler: end of scan\n");
+ else
DBG (1, "sense_handler: scan has not yet been completed\n");
-
+
if (sense[2] & (1<<5))
DBG (1, "sense_handler: incorrect logical length\n");
- else
+ else
DBG (1, "sense_handler: correct logical length\n");
- {
+ {
uint8_t asc = sense[12];
uint8_t ascq = sense[13];
-
+
#define ADDITIONAL_SENSE(asc,ascq,txt) \
case ( (asc << 8) + ascq): text = txt; break
-
+
switch ( (asc << 8) + ascq )
{
/* normal */
@@ -1808,9 +1807,9 @@ sense_handler (int fd, u_char* sense, void* arg)
ADDITIONAL_SENSE (0x15,0x02, "Flatbed Home Sensor Error (OKI only");
ADDITIONAL_SENSE (0x15,0x03, "ADF Home Sensor Error (OKI only)");
ADDITIONAL_SENSE (0x15,0x04, "Lock Error (OKI only)");
-
+
ADDITIONAL_SENSE (0x1a,0x00, "parameter list length error");
-
+
ADDITIONAL_SENSE (0x20,0x00, "Invalid command");
ADDITIONAL_SENSE (0x24,0x00, "Invalid field in CDB");
ADDITIONAL_SENSE (0x25,0x00, "Logical unit not supported");
@@ -1822,7 +1821,7 @@ sense_handler (int fd, u_char* sense, void* arg)
ADDITIONAL_SENSE (0x2f,0x00, "Command cleared by another initiator");
ADDITIONAL_SENSE (0x3D,0x00, "Invalid Bit in Identify Message");
-
+
ADDITIONAL_SENSE (0x43,0x00, "Message error");
ADDITIONAL_SENSE (0x44,0x00, "Internal target failure");
ADDITIONAL_SENSE (0x44,0x01, "Flatbed DRAM Error(OKI only)");
@@ -1830,12 +1829,12 @@ sense_handler (int fd, u_char* sense, void* arg)
ADDITIONAL_SENSE (0x44,0x03, "Write NVRAM Error");
ADDITIONAL_SENSE (0x47,0x00, "SCSI parity error");
ADDITIONAL_SENSE (0x49,0x00, "Invalid message error");
-
+
ADDITIONAL_SENSE (0x60,0x00, "Lamp failure");
ADDITIONAL_SENSE (0x60,0x01, "Flatbed Lamp error (Oki only)");
ADDITIONAL_SENSE (0x60,0x02, "ADF lamp error (Oki only)");
ADDITIONAL_SENSE (0x62,0x00, "Scan head positioning error");
-
+
ADDITIONAL_SENSE (0x80,0x01, "ADF paper jam"; status = SANE_STATUS_JAMMED);
ADDITIONAL_SENSE (0x80,0x02, "ADF cover open"; status = SANE_STATUS_COVER_OPEN);
ADDITIONAL_SENSE (0x80,0x03, "ADF chute empty"; status = SANE_STATUS_NO_DOCS);
@@ -1848,7 +1847,7 @@ sense_handler (int fd, u_char* sense, void* arg)
ADDITIONAL_SENSE (0x80,0x0A, "ADF Paper Start");
ADDITIONAL_SENSE (0x80,0x0B, "Multiple ADF paper End and Start");
ADDITIONAL_SENSE (0x80,0x0C, "Multiple ADF paper End");
-
+
/* film scanner */
ADDITIONAL_SENSE (0x81,0x00, "ADF/MFP front door open"; status = SANE_STATUS_COVER_OPEN);
ADDITIONAL_SENSE (0x81,0x01, "ADF holder cartridge open"; status = SANE_STATUS_COVER_OPEN);
@@ -1861,19 +1860,19 @@ sense_handler (int fd, u_char* sense, void* arg)
ADDITIONAL_SENSE (0x81,0x08, "ADF adapter error");
ADDITIONAL_SENSE (0xA0,0x01, "Filter Positioning Error");
-
+
ADDITIONAL_SENSE (0x90,0x00, "Scanner busy (FW busy)");
-
+
default:
sprintf (textbuf, "Unknown sense code asc: 0x%02x, ascq: 0x%02x",
(int)asc, (int)ascq);
text = textbuf;
}
-
+
#undef ADDITIONAL_SENSE
-
+
DBG (1, "sense_handler: sense code: %s\n", text);
-
+
/* sense code specific for invalid request
* it is possible to get a detailed error location here ;-)*/
if (sense_key == 0x05) {
@@ -1883,10 +1882,10 @@ sense_handler (int fd, u_char* sense, void* arg)
DBG (1, "sense_handler: error in command parameter\n");
else
DBG (1, "sense_handler: error in data parameter\n");
-
+
DBG (1, "sense_handler: error in parameter byte: %d, %x\n",
get_double(&(sense[16])), get_double(&(sense[16])));
-
+
/* bit pointer valid ?*/
if (sense[15] & (1<<3) )
DBG (1, "sense_handler: error in command parameter\n");
@@ -1895,7 +1894,7 @@ sense_handler (int fd, u_char* sense, void* arg)
}
}
}
-
+
return status;
}
@@ -1912,7 +1911,7 @@ avision_usb_status (Avision_Connection* av_con, int retry, int timeout)
int t_retry = retry;
#define valid_status(status,a) (status == SANE_STATUS_GOOD ? a : 0)
-
+
DBG (4, "avision_usb_status: timeout %d, %d retries\n", timeout, retry);
#ifndef HAVE_SANEI_USB_SET_TIMEOUT
#error "You must update include/sane/sanei_usb.h and sanei/sanei_usb.c accordingly!"
@@ -1928,7 +1927,7 @@ avision_usb_status (Avision_Connection* av_con, int retry, int timeout)
--retry)
{
count = sizeof (usb_status);
-
+
DBG (5, "==> (bulk read) going down ...\n");
status = sanei_usb_read_bulk (av_con->usb_dn, usb_status,
&count);
@@ -1939,10 +1938,10 @@ avision_usb_status (Avision_Connection* av_con, int retry, int timeout)
av_con->usb_status = AVISION_USB_BULK_STATUS;
}
}
-
+
/* reset retry count ... */
retry = t_retry;
-
+
/* 2nd try interrupt status read - if not yet disabled */
for (;
count == 0 &&
@@ -1952,23 +1951,23 @@ avision_usb_status (Avision_Connection* av_con, int retry, int timeout)
--retry)
{
count = sizeof (usb_status);
-
+
DBG (5, "==> (interrupt read) going down ...\n");
status = sanei_usb_read_int (av_con->usb_dn, usb_status,
&count);
DBG (5, "<== (interrupt read) got: %ld, status: %d\n",
(u_long)count, valid_status(status, usb_status[0]));
-
+
if (count > 0)
av_con->usb_status = AVISION_USB_INT_STATUS;
- }
-
+ }
+
if (status != SANE_STATUS_GOOD)
return status;
-
+
if (count == 0)
return SANE_STATUS_IO_ERROR;
-
+
/* 0 = ok, 2 => request sense, 8 ==> busy, else error */
switch (usb_status[0])
{
@@ -2051,7 +2050,7 @@ static SANE_Status avision_cmd (Avision_Connection* av_con,
}
else {
SANE_Status status = SANE_STATUS_GOOD;
-
+
size_t i, count, out_count;
/* some commands on some devices need a rather long time to respond */
#define STD_TIMEOUT 30000
@@ -2065,11 +2064,11 @@ static SANE_Status avision_cmd (Avision_Connection* av_con,
const uint8_t* m_cmd = (const uint8_t*)cmd;
const uint8_t* m_src = (const uint8_t*)src;
uint8_t* m_dst = (uint8_t*)dst;
-
+
/* may I vote for the possibility to use C99 ... */
#define min_usb_size 10
#define max_usb_size 256 * 1024 /* or 0x10000, used by AV Windows driver during background raster read, ... ? */
-
+
/* 1st send command data - at least 10 Bytes for USB scanners */
uint8_t enlarged_cmd [min_usb_size];
if (cmd_size < min_usb_size) {
@@ -2106,12 +2105,12 @@ write_usb_cmd:
sanei_usb_set_timeout (write_timeout);
DBG (8, "try to write cmd, count: %lu.\n", (u_long) count);
status = sanei_usb_write_bulk (av_con->usb_dn, m_cmd, &count);
-
+
DBG (8, "wrote %lu bytes\n", (u_long) count);
if (status != SANE_STATUS_GOOD || count != cmd_size) {
DBG (3, "=== Got error %d trying to write, wrote: %ld. ===\n",
status, (long)count);
-
+
if (status != SANE_STATUS_GOOD) /* == SANE_STATUS_EOF) */ {
DBG (3, "try to read status to clear the FIFO\n");
status = avision_usb_status (av_con, 1, 500);
@@ -2125,21 +2124,21 @@ write_usb_cmd:
DBG (3, "Retrying to send command\n");
goto write_usb_cmd;
}
-
+
return SANE_STATUS_IO_ERROR;
}
-
+
/* 2nd send command data (if any) */
for (i = 0; i < src_size; ) {
-
+
count = src_size - i;
/* if (count > max_usb_size)
count = max_usb_size; */
-
+
DBG (8, "try to write src, count: %lu.\n", (u_long) count);
sanei_usb_set_timeout (write_timeout);
status = sanei_usb_write_bulk (av_con->usb_dn, &(m_src[i]), &count);
-
+
DBG (8, "wrote %lu bytes\n", (u_long) count);
if (status == SANE_STATUS_GOOD) {
i += count;
@@ -2155,7 +2154,7 @@ write_usb_cmd:
sanei_usb_set_timeout (read_timeout);
while (out_count < *dst_size) {
count = (*dst_size - out_count);
-
+
DBG (8, "try to read %lu bytes\n", (u_long) count);
status = sanei_usb_read_bulk(av_con->usb_dn, &(m_dst[out_count]),
&count);
@@ -2174,7 +2173,7 @@ write_usb_cmd:
}
}
}
-
+
/* last: read the device status via a pseudo interrupt transfer
* this is needed - otherwise the scanner will hang ... */
sanei_usb_set_timeout (status_timeout);
@@ -2182,49 +2181,49 @@ write_usb_cmd:
/* next i/o hardening attempt - and yes this gets ugly ... */
if (status != SANE_STATUS_GOOD && status != SANE_STATUS_INVAL)
goto write_usb_cmd;
-
+
if (status == SANE_STATUS_INVAL) {
struct {
command_header header;
uint8_t pad[4];
} sense_cmd;
-
+
uint8_t sense_buffer[22];
-
+
DBG (3, "Error during status read!\n");
DBG (3, "=== Try to request sense ===\n");
-
+
/* we can not call avision_cmd recursively - we might ending in
an endless recursion requesting sense for failing request
sense transfers ...*/
-
+
memset (&sense_cmd, 0, sizeof (sense_cmd) );
memset (&sense_buffer, 0, sizeof (sense_buffer) );
sense_cmd.header.opc = AVISION_SCSI_REQUEST_SENSE;
sense_cmd.header.len = sizeof (sense_buffer);
-
+
count = sizeof(sense_cmd);
-
+
DBG (8, "try to write %lu bytes\n", (u_long) count);
sanei_usb_set_timeout (write_timeout);
status = sanei_usb_write_bulk (av_con->usb_dn,
(uint8_t*) &sense_cmd, &count);
DBG (8, "wrote %lu bytes\n", (u_long) count);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (3, "=== Got error %d trying to request sense! ===\n", status);
}
else {
count = sizeof (sense_buffer);
-
+
DBG (8, "try to read %lu bytes sense data\n", (u_long) count);
sanei_usb_set_timeout (read_timeout);
status = sanei_usb_read_bulk(av_con->usb_dn, sense_buffer, &count);
DBG (8, "read %lu bytes sense data\n", (u_long) count);
-
+
/* we need to read out the status from the scanner i/o buffer */
status = avision_usb_status (av_con, 1, status_timeout);
-
+
/* some scanner return NEED_SENSE even after reading it */
if (status != SANE_STATUS_GOOD && status != SANE_STATUS_INVAL)
DBG (3, "=== Got error %d trying to read sense! ===\n", status);
@@ -2248,33 +2247,33 @@ bubble_sort (uint8_t* sort_data, size_t count)
{
size_t i, j, limit, k;
double sum = 0.0;
-
+
limit = count / 3;
-
+
for (i = 0; i < limit; ++i)
{
uint16_t ti = 0;
uint16_t tj = 0;
-
+
for (j = (i + 1); j < count; ++j)
{
ti = get_double ((sort_data + i*2));
tj = get_double ((sort_data + j*2));
-
+
if (ti > tj) {
set_double ((sort_data + i*2), tj);
set_double ((sort_data + j*2), ti);
}
}
}
-
+
for (k = 0, i = limit; i < count; ++i) {
sum += get_double ((sort_data + i*2));
++ k;
}
-
+
/* DBG (7, "bubble_sort: %d values for average\n", k); */
-
+
if (k > 0) /* if avg to compute */
return (uint16_t) (sum / k);
else
@@ -2286,7 +2285,7 @@ add_color_mode (Avision_Device* dev, color_mode mode, SANE_String name)
{
int i;
DBG (3, "add_color_mode: %d %s\n", mode, name);
-
+
for (i = 0; i < AV_COLOR_MODE_LAST; ++i)
{
if (dev->color_list [i] == 0) {
@@ -2298,7 +2297,7 @@ add_color_mode (Avision_Device* dev, color_mode mode, SANE_String name)
return SANE_STATUS_GOOD;
}
}
-
+
DBG (3, "add_color_mode: failed\n");
return SANE_STATUS_NO_MEM;
}
@@ -2307,13 +2306,13 @@ static int
last_color_mode (Avision_Device* dev)
{
int i = 1;
-
+
while (dev->color_list [i] != 0 && i < AV_COLOR_MODE_LAST)
++i;
-
+
/* we are off by one */
--i;
-
+
return i;
}
@@ -2331,7 +2330,7 @@ match_color_mode (Avision_Device* dev, SANE_String name)
return dev->color_list_num [i];
}
}
-
+
DBG (3, "match_color_mode: source mode invalid\n");
return AV_GRAYSCALE;
}
@@ -2352,14 +2351,14 @@ static SANE_Bool
is_adf_scan (Avision_Scanner* s)
{
return s->hw->scanner_type == AV_SHEETFEED || (s->hw->scanner_type == AV_FLATBED && s->source_mode_dim == AV_ADF_DIM);
-
+
}
static SANE_Status
add_source_mode (Avision_Device* dev, source_mode mode, SANE_String name)
{
int i;
-
+
for (i = 0; i < AV_SOURCE_MODE_LAST; ++i)
{
if (dev->source_list [i] == 0) {
@@ -2371,7 +2370,7 @@ add_source_mode (Avision_Device* dev, source_mode mode, SANE_String name)
return SANE_STATUS_GOOD;
}
}
-
+
return SANE_STATUS_NO_MEM;
}
@@ -2379,7 +2378,7 @@ static source_mode
match_source_mode (Avision_Device* dev, SANE_String name)
{
int i;
-
+
DBG (3, "match_source_mode: \"%s\"\n", name);
for (i = 0; i < AV_SOURCE_MODE_LAST; ++i)
@@ -2390,7 +2389,7 @@ match_source_mode (Avision_Device* dev, SANE_String name)
return dev->source_list_num [i];
}
}
-
+
DBG (3, "match_source_mode: source mode invalid\n");
return AV_NORMAL;
}
@@ -2399,7 +2398,7 @@ static source_mode_dim
match_source_mode_dim (source_mode sm)
{
DBG (3, "match_source_mode_dim: %d\n", sm);
-
+
switch (sm) {
case AV_NORMAL:
return AV_NORMAL_DIM;
@@ -2420,7 +2419,7 @@ get_pixel_boundary (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
int boundary;
-
+
switch (s->c_mode) {
case AV_TRUECOLOR:
case AV_TRUECOLOR12:
@@ -2447,7 +2446,7 @@ get_pixel_boundary (Avision_Scanner* s)
default:
boundary = 8;
}
-
+
return boundary;
}
@@ -2458,11 +2457,11 @@ compute_parameters (Avision_Scanner* s)
int boundary = get_pixel_boundary (s);
SANE_Bool gray_mode = color_mode_is_shaded (s->c_mode);
-
+
/* interlaced duplex (higher end) or flipping paper (HP8xxx)? */
s->avdimen.interlaced_duplex = s->source_mode == AV_ADF_DUPLEX &&
dev->inquiry_duplex_interlaced;
-
+
/* for infra-red we use the same code path es for interlaced
duplex */
if (s->val[OPT_IR].w)
@@ -2491,23 +2490,23 @@ compute_parameters (Avision_Scanner* s)
break;
}
#endif
-
+
DBG (3, "sane_compute_parameters:\n");
-
+
DBG (3, "sane_compute_parameters: boundary %d, gray_mode: %d, \n",
boundary, gray_mode);
-
+
/* TODO: Implement different x/y resolutions support */
s->avdimen.xres = s->val[OPT_RESOLUTION].w;
s->avdimen.yres = s->val[OPT_RESOLUTION].w;
-
+
/* soft scale ? */
if (dev->hw->feature_type & AV_SOFT_SCALE) {
/* find supported hardware resolution */
const int* hw_res;
const int* hw_res_list =
dev->inquiry_asic_type == AV_ASIC_C5 ? hw_res_list_c5 : hw_res_list_generic;
-
+
for (hw_res = hw_res_list; *hw_res && *hw_res < s->avdimen.xres; ++hw_res)
/* just iterate */;
s->avdimen.hw_xres = *hw_res;
@@ -2515,11 +2514,11 @@ compute_parameters (Avision_Scanner* s)
for (hw_res = hw_res_list; *hw_res && *hw_res < s->avdimen.yres; ++hw_res)
/* just iterate */;
s->avdimen.hw_yres = *hw_res;
-
+
DBG (3, "sane_compute_parameters: soft scale, hw res: %dx%d\n",
s->avdimen.hw_xres,
s->avdimen.hw_yres);
-
+
if (!s->avdimen.hw_xres || ! s->avdimen.hw_yres) {
DBG (1, "sane_compute_parameters: no matching HW res for: %dx%d\n",
s->avdimen.xres,
@@ -2531,11 +2530,11 @@ compute_parameters (Avision_Scanner* s)
s->avdimen.hw_xres = s->val[OPT_RESOLUTION].w;
s->avdimen.hw_yres = s->val[OPT_RESOLUTION].w;
}
-
+
DBG (3, "sane_compute_parameters: tlx: %f, tly: %f, brx: %f, bry: %f\n",
SANE_UNFIX (s->val[OPT_TL_X].w), SANE_UNFIX (s->val[OPT_TL_Y].w),
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;
@@ -2545,7 +2544,7 @@ compute_parameters (Avision_Scanner* s)
/ MM_PER_INCH;
s->avdimen.bry = 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) &&
dev->inquiry_needs_software_colorpack &&
@@ -2553,27 +2552,27 @@ compute_parameters (Avision_Scanner* s)
{
s->avdimen.line_difference =
(dev->inquiry_line_difference * s->avdimen.hw_yres) / dev->inquiry_optical_res;
-
+
s->avdimen.bry += 2 * s->avdimen.line_difference;
-
+
/* 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;
DBG (3, "sane_compute_parameters: y_max: %ld, bry: %ld, line_difference: %d\n",
y_max, s->avdimen.bry, s->avdimen.line_difference);
-
+
if (s->avdimen.bry + 2 * s->avdimen.line_difference > y_max) {
DBG (1, "sane_compute_parameters: bry limited!\n");
s->avdimen.bry = y_max - 2 * s->avdimen.line_difference;
}
}
-
+
} /* end if needs software colorpack */
else {
s->avdimen.line_difference = 0;
}
-
+
/* add overscan */
if (dev->inquiry_tune_scan_length && is_adf_scan (s)) {
/* some extra effort for precise rounding ... */
@@ -2584,7 +2583,7 @@ compute_parameters (Avision_Scanner* s)
DBG (3, "sane_compute_parameters: overscan lines: %d\n", overscan);
s->avdimen.bry += overscan;
}
-
+
/* rear offset compensation */
if (s->avdimen.interlaced_duplex && dev->hw->feature_type & AV_REAR_OFFSET) {
const double offset = 0.5; /* in current affected models 1/2 inch */
@@ -2598,16 +2597,16 @@ 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 -= s->avdimen.hw_pixels_per_line % boundary;
-
+
s->avdimen.hw_lines = (s->avdimen.bry - s->avdimen.tly -
2 * s->avdimen.line_difference);
-
+
if (s->avdimen.interlaced_duplex && dev->scanner_type != AV_FILM)
s->avdimen.hw_lines -= s->avdimen.hw_lines % dev->read_stripe_size;
-
+
s->params.pixels_per_line = s->avdimen.hw_pixels_per_line * s->avdimen.xres / s->avdimen.hw_xres;
s->params.lines = s->avdimen.hw_lines * s->avdimen.xres / s->avdimen.hw_xres;
if (is_adf_scan (s))
@@ -2615,9 +2614,9 @@ compute_parameters (Avision_Scanner* s)
s->params.lines = -1;
if (s->c_mode == AV_THRESHOLDED || s->c_mode == AV_DITHERED)
s->params.pixels_per_line -= s->params.pixels_per_line % 8;
-
+
debug_print_avdimen (1, "sane_compute_parameters", &s->avdimen);
-
+
switch (s->c_mode)
{
case AV_THRESHOLDED:
@@ -2662,9 +2661,9 @@ compute_parameters (Avision_Scanner* s)
DBG (1, "Invalid mode. %d\n", s->c_mode);
return SANE_STATUS_INVAL;
} /* end switch */
-
+
s->params.last_frame = SANE_TRUE;
-
+
debug_print_params (1, "sane_compute_parameters", &s->params);
return SANE_STATUS_GOOD;
}
@@ -2675,26 +2674,26 @@ inquiry (Avision_Connection av_con, uint8_t* data, size_t len)
SANE_Status status;
command_header inquiry;
int try = 2;
-
+
DBG (3, "inquiry: length: %ld\n", (long)len);
-
+
memset (&inquiry, 0, sizeof(inquiry));
inquiry.opc = AVISION_SCSI_INQUIRY;
inquiry.len = len;
-
+
do {
size_t size = inquiry.len;
-
+
DBG (3, "inquiry: inquiring ...\n");
status = avision_cmd (&av_con, &inquiry, sizeof (inquiry), 0, 0,
data, &size);
if (status == SANE_STATUS_GOOD && size == inquiry.len)
break;
-
+
DBG (1, "inquiry: inquiry failed (%s)\n", sane_strstatus (status));
--try;
} while (try > 0);
-
+
return status;
}
@@ -2703,14 +2702,14 @@ wait_ready (Avision_Connection* av_con, int delay)
{
SANE_Status status;
int try;
-
+
for (try = 0; try < 10; ++ try)
{
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);
-
+
switch (status)
{
default:
@@ -2734,45 +2733,45 @@ static SANE_Status
wait_4_light (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
-
+
/* read stuff */
struct command_read rcmd;
char* light_status[] =
- { "off", "on", "warming up", "needs warm up test",
+ { "off", "on", "warming up", "needs warm up test",
"light check error", "backlight on", "RESERVED" };
-
+
SANE_Status status;
uint8_t result;
int try;
size_t size = 1;
-
+
DBG (3, "wait_4_light: getting light status.\n");
-
+
memset (&rcmd, 0, sizeof (rcmd));
-
+
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0xa0; /* get light status */
set_double (rcmd.datatypequal, dev->data_dq);
set_triple (rcmd.transferlen, size);
-
+
for (try = 0; try < 90; ++ try) {
if (s->cancelled) {
DBG (3, "wait_4_light: cancelled\n");
return SANE_STATUS_CANCELLED;
}
-
+
DBG (5, "wait_4_light: read bytes %lu\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, "wait_4_light: read failed (%s)\n", sane_strstatus (status));
return status;
}
-
+
DBG (3, "wait_4_light: command is %d. Result is %d (%s)\n",
status, result, light_status[(result>5)?6:result]);
-
+
if (result == 1 || result == 5) {
return SANE_STATUS_GOOD;
}
@@ -2783,20 +2782,20 @@ wait_4_light (Avision_Scanner* s)
else {
struct command_send scmd;
uint8_t light_on = 1;
-
+
/* turn on the light */
DBG (3, "wait_4_light: setting light status.\n");
-
+
memset (&scmd, 0, sizeof (scmd));
-
+
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = 0xa0; /* send light status */
set_double (scmd.datatypequal, dev->data_dq);
set_triple (scmd.transferlen, size);
-
+
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
&light_on, sizeof (light_on), 0, 0);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "wait_4_light: send failed (%s)\n", sane_strstatus (status));
return status;
@@ -2804,7 +2803,7 @@ wait_4_light (Avision_Scanner* s)
}
sleep (1);
}
-
+
DBG (1, "wait_4_light: timed out after %d attempts\n", try);
return SANE_STATUS_DEVICE_BUSY;
}
@@ -2846,27 +2845,27 @@ get_firmware_status (Avision_Connection* av_con)
SANE_Status status;
firmware_status result;
-
+
DBG (3, "get_firmware_status\n");
-
+
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0x90; /* firmware status */
set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
set_triple (rcmd.transferlen, size);
-
+
status = avision_cmd (av_con, &rcmd, sizeof (rcmd), 0, 0, &result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
DBG (1, "get_firmware_status: read failed (%s)\n",
sane_strstatus (status));
return (status);
}
-
+
debug_print_raw (6, "get_firmware_status: raw data:\n", (uint8_t*)&result, size);
-
+
DBG (3, "get_firmware_status: [0] needs firmware %x\n", result.download_firmware);
DBG (3, "get_firmware_status: [1] side edge: %d\n", get_double ( result.first_effective_pixel_flatbed ));
DBG (3, "get_firmware_status: [3] side edge: %d\n", get_double ( result.first_effective_pixel_adf_front ));
@@ -2883,28 +2882,28 @@ get_flash_ram_info (Avision_Connection* av_con)
size_t size;
SANE_Status status;
uint8_t result[40];
-
+
DBG (3, "get_flash_ram_info\n");
-
+
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0x6a; /* flash ram information */
set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
set_triple (rcmd.transferlen, size);
-
+
status = avision_cmd (av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
DBG (1, "get_flash_ram_info: read failed (%s)\n",
sane_strstatus (status));
return (status);
}
-
+
debug_print_raw (6, "get_flash_ram_info: raw data:\n", result, size);
-
- DBG (3, "get_flash_ram_info: [0] data type %x\n", result [0]);
+
+ DBG (3, "get_flash_ram_info: [0] data type %x\n", result [0]);
DBG (3, "get_flash_ram_info: [1] Ability1:%s%s%s%s%s%s%s%s\n",
BIT(result[1],7)?" RESERVED_BIT7":"",
BIT(result[1],6)?" RESERVED_BIT6":"",
@@ -2914,7 +2913,7 @@ get_flash_ram_info (Avision_Connection* av_con)
BIT(result[1],2)?" RAWLINE(r)":"",
BIT(result[1],1)?" FIRMWARE(r/w)":"",
BIT(result[1],0)?" CTAB(r/w)":"");
-
+
DBG (3, "get_flash_ram_info: [2-5] size CTAB: %d\n",
get_quad ( &(result[2]) ) );
@@ -2938,7 +2937,7 @@ get_flash_ram_info (Avision_Connection* av_con)
DBG (3, "get_flash_ram_info: [30-33] size RESERVED: %d\n",
get_quad ( &(result[30]) ) );
-
+
return SANE_STATUS_GOOD;
}
@@ -2947,23 +2946,23 @@ get_nvram_data (Avision_Scanner* s, nvram_data* nvram)
{
/* read stuff */
struct command_send rcmd;
-
+
size_t size;
SANE_Status status;
-
+
DBG (3, "get_nvram_data\n");
-
+
size = sizeof (*nvram);
-
+
memset (&rcmd, 0, sizeof (rcmd));
memset (nvram, 0, size);
-
+
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0x69; /* Read NVM RAM data */
set_double (rcmd.datatypequal, 0); /* dev->data_dq not available */
set_triple (rcmd.transferlen, size);
-
+
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0,
nvram, &size);
if (status != SANE_STATUS_GOOD) {
@@ -2971,9 +2970,9 @@ get_nvram_data (Avision_Scanner* s, nvram_data* nvram)
sane_strstatus (status));
return (status);
}
-
+
debug_print_nvram_data (5, "get_nvram_data", nvram);
-
+
return SANE_STATUS_GOOD;
}
@@ -2985,7 +2984,7 @@ get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
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",
@@ -2995,17 +2994,17 @@ get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
i += snprintf (str+i, n-i, "\nFirmware: %.4s",
inquiry_result+32);
}
-
+
if (!s->hw->inquiry_nvram_read)
return SANE_STATUS_GOOD;
-
+
status = get_nvram_data (s, &nvram);
if (status == SANE_STATUS_GOOD)
{
if (nvram.serial[0])
i += snprintf (str+i, n-i, "\nSerial: %.24s",
nvram.serial);
-
+
if (nvram.born_year)
i += snprintf (str+i, n-i, "\nManufacturing date: %d-%d-%d",
get_double(nvram.born_year),
@@ -3016,7 +3015,7 @@ get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
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);
@@ -3030,7 +3029,7 @@ get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
if (x)
i += snprintf (str+i, n-i, "\nADF duplex scans: %d", x);
}
-
+
return status;
}
@@ -3039,21 +3038,21 @@ get_power_save_time (Avision_Scanner* s, SANE_Word* time)
{
SANE_Status status;
nvram_data nvram;
-
+
DBG (3, "get_power_save_time\n");
-
+
if (!s->hw->inquiry_nvram_read)
return SANE_STATUS_INVAL;
-
+
status = get_nvram_data (s, &nvram);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "get_power_save_time: read nvram failed (%s)\n", sane_strstatus (status));
return status;
}
-
+
*time = get_double (nvram.power_saving_time);
-
+
return SANE_STATUS_GOOD;
}
@@ -3066,18 +3065,18 @@ send_nvram_data (Avision_Connection* av_con)
struct command_send scmd;
size_t size;
SANE_Status status;
-
+
DBG (3, "send_nvram_data\n");
-
+
size = sizeof (c7_nvram);
-
+
memset (&scmd, 0, sizeof (scmd));
scmd.opc = AVISION_SCSI_SEND;
-
+
scmd.datatypecode = 0x85; /* nvram data */
set_double (scmd.datatypequal, 0); /* dev->data_dq not available */
set_triple (scmd.transferlen, size);
-
+
status = avision_cmd (av_con, &scmd, sizeof (scmd), &c7_nvram, size,
0, 0);
if (status != SANE_STATUS_GOOD) {
@@ -3085,7 +3084,7 @@ send_nvram_data (Avision_Connection* av_con)
sane_strstatus (status));
return (status);
}
-
+
return SANE_STATUS_GOOD;
}
@@ -3096,18 +3095,18 @@ send_flash_ram_data (Avision_Connection* av_con)
struct command_send scmd;
size_t size;
SANE_Status status;
-
+
DBG (3, "send_flash_ram_data\n");
-
+
size = sizeof (c7_flash_ram);
-
+
memset (&scmd, 0, sizeof (scmd));
scmd.opc = AVISION_SCSI_SEND;
-
+
scmd.datatypecode = 0x86; /* flash data */
set_double (scmd.datatypequal, 0);
set_triple (scmd.transferlen, size);
-
+
status = avision_cmd (av_con, &scmd, sizeof (scmd), &c7_flash_ram, size,
0, 0);
if (status != SANE_STATUS_GOOD) {
@@ -3115,7 +3114,7 @@ send_flash_ram_data (Avision_Connection* av_con)
sane_strstatus (status));
return (status);
}
-
+
return SANE_STATUS_GOOD;
}
#endif
@@ -3177,28 +3176,28 @@ get_accessories_info (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
int try = 3;
-
+
/* read stuff */
struct command_read rcmd;
size_t size;
SANE_Status status;
uint8_t result[8];
-
+
char* adf_model[] =
{ "Origami", "Oodles", "HP9930", "unknown" };
const int adf_models = sizeof (adf_model) / sizeof(char*) - 1;
-
+
DBG (3, "get_accessories_info\n");
-
+
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0x64; /* detect accessories */
set_double (rcmd.datatypequal, dev->data_dq);
set_triple (rcmd.transferlen, size);
-
+
/* after resetting the ADF unit, try reprobing it again */
RETRY:
@@ -3291,7 +3290,7 @@ string_for_button (Avision_Scanner* s, int button)
case 2: return "duplex";
}
}
-
+
if (strcmp (dev->sane.model, "AV210C2") == 0 ||
strcmp (dev->sane.model, "AV210D2+") == 0 ||
strcmp (dev->sane.model, "AV220C2") == 0 ||
@@ -3303,7 +3302,7 @@ string_for_button (Avision_Scanner* s, int button)
else
goto return_scan;
}
-
+
/* those are unique, right now */
if (strcmp (dev->sane.model, "AV610") == 0)
{
@@ -3314,11 +3313,11 @@ string_for_button (Avision_Scanner* s, int button)
case 2: return "scan";
}
}
-
+
/* last resort */
snprintf (buffer, sizeof (buffer), "button%d", button);
return buffer;
-
+
return_scan:
return "scan";
}
@@ -3327,7 +3326,7 @@ static SANE_Status
get_button_status (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
-
+
/* read stuff */
struct command_read rcmd;
size_t size;
@@ -3341,21 +3340,21 @@ get_button_status (Avision_Scanner* s)
} result;
unsigned int i;
-
+
DBG (3, "get_button_status:\n");
-
+
size = sizeof (result);
-
+
/* AV220 et.al. */
if (! (dev->hw->feature_type & AV_INT_BUTTON))
{
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0xA1; /* button status */
set_double (rcmd.datatypequal, dev->data_dq);
set_triple (rcmd.transferlen, size);
-
+
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0,
(uint8_t*)&result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
@@ -3367,7 +3366,7 @@ get_button_status (Avision_Scanner* s)
{
/* only try to read the first 8 bytes ...*/
size = 8;
-
+
/* no SCSI equivalent */
/* either there was a button press and this completes quickly
or there is no point waiting for a future press */
@@ -3376,21 +3375,21 @@ get_button_status (Avision_Scanner* s)
status = sanei_usb_read_int (s->av_con.usb_dn, (uint8_t*)&result,
&size);
DBG (5, "==> (interrupt read) got: %ld\n", (long)size);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "get_button_status: interrupt read failed (%s)\n",
sane_strstatus (status));
return SANE_STATUS_GOOD;
}
-
+
if (size < sizeof (result))
memset ((char*)result.buttons + size, 0, sizeof (result) - size);
-
+
/* hack to fill in meaningful values for the AV 210 / 610 and
under some conditions the AV 220 */
if (size == 1) { /* AV 210, AV 610 */
DBG (1, "get_button_status: just one byte, filling the rest\n");
-
+
if (result.press_state > 0) {
debug_print_raw (6, "get_button_status: raw data\n",
(uint8_t*)&result, size);
@@ -3402,72 +3401,72 @@ get_button_status (Avision_Scanner* s)
return SANE_STATUS_GOOD;
}
else if (size >= 8 && result.press_state == 0) { /* AV 220 */
-
+
debug_print_raw (6, "get_button_status: raw data\n",
(uint8_t*)&result, size);
-
+
DBG (1, "get_button_status: zero buttons - filling values ...\n");
-
+
/* simulate button press of the last button ... */
result.press_state = 0x80 | 1;
result.buttons[0] = dev->inquiry_buttons; /* 1 based */
}
}
-
+
debug_print_raw (6, "get_button_status: raw data\n",
(uint8_t*)&result, size);
-
+
DBG (3, "get_button_status: [0] Button status: %x\n", result.press_state);
for (i = 0; i < 5; ++i)
DBG (3, "get_button_status: [%d] Button number %d: %x\n", i+1, i,
result.buttons[i]);
DBG (3, "get_button_status: [7] Display: %d\n", result.display);
-
+
{
char* message_begin = s->val[OPT_MESSAGE].s;
char* message_end = s->val[OPT_MESSAGE].s + s->opt[OPT_MESSAGE].size;
char* message = message_begin;
-
+
#define add_token(format,value) do { \
int n = snprintf (message, message_end - message, "%s" format, \
message == message_begin ? "" : ":", value); \
message += n > 0 ? n : 0; \
} while (0)
-
+
if (result.display > 0)
add_token ("%d", result.display);
-
+
if (result.press_state >> 7) /* AV220 et.al. bit 6 is long/short press? */
{
-
+
const unsigned int buttons_pressed = result.press_state & 0x7F;
DBG (3, "get_button_status: %d button(s) pressed\n", buttons_pressed);
-
+
/* reset the hardware button status */
if (! (dev->hw->feature_type & AV_INT_BUTTON))
{
struct command_send scmd;
uint8_t button_reset = 1;
-
+
DBG (3, "get_button_status: resetting status\n");
-
+
memset (&scmd, 0, sizeof (scmd));
-
+
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = 0xA1; /* button control */
set_double (scmd.datatypequal, dev->data_dq);
set_triple (scmd.transferlen, size);
-
+
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
&button_reset, sizeof (button_reset), 0, 0);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "get_button_status: send failed (%s)\n",
sane_strstatus (status));
return status;
}
}
-
+
for (i = 0; i < buttons_pressed; ++i) {
const unsigned int button = result.buttons[i] - 1; /* 1 based ... */
DBG (3, "get_button_status: button %d pressed\n", button);
@@ -3487,7 +3486,7 @@ get_button_status (Avision_Scanner* s)
else
DBG (3, "get_button_status: no button pressed\n");
}
-
+
return SANE_STATUS_GOOD;
#undef add_token
}
@@ -3496,33 +3495,33 @@ static SANE_Status
get_frame_info (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
-
+
/* read stuff */
struct command_read rcmd;
size_t size;
SANE_Status status;
uint8_t result[8];
size_t i;
-
+
DBG (3, "get_frame_info:\n");
-
+
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0x87; /* film holder sense */
set_double (rcmd.datatypequal, dev->data_dq);
set_triple (rcmd.transferlen, 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_frame_info: read failed (%s)\n", sane_strstatus (status));
return (status);
}
-
+
debug_print_raw (6, "get_frame_info: raw data\n", result, size);
-
+
DBG (3, "get_frame_info: [0] Holder type: %s\n",
(result[0]==1)?"APS":
(result[0]==2)?"Film holder (35mm)":
@@ -3531,24 +3530,24 @@ get_frame_info (Avision_Scanner* s)
DBG (3, "get_frame_info: [1] Current frame number: %d\n", result[1]);
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",
+ DBG (3, "get_frame_info: [3] Exposures (if APS): %s\n",
((i=(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",
+ 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==1)?"B&W Negative":(i==2)?"Color slide":"Color Negative");
dev->holder_type = result[0];
dev->current_frame = result[1];
-
+
dev->frame_range.min = 1;
dev->frame_range.quant = 1;
-
+
if (result[0] != 0xff)
dev->frame_range.max = result[2];
else
dev->frame_range.max = 1;
-
+
return SANE_STATUS_GOOD;
}
@@ -3556,7 +3555,7 @@ static SANE_Status
get_duplex_info (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
-
+
/* read stuff */
struct command_read rcmd;
@@ -3567,30 +3566,30 @@ get_duplex_info (Avision_Scanner* s)
uint8_t lineart_line_difference[2];
uint8_t image_info;
} result;
-
+
size_t size;
SANE_Status status;
-
+
DBG (3, "get_duplex_info:\n");
-
+
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
-
+
rcmd.datatypecode = 0xB1; /* read duplex info */
set_double (rcmd.datatypequal, dev->data_dq);
set_triple (rcmd.transferlen, 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_duplex_info: read failed (%s)\n", sane_strstatus (status));
return (status);
}
-
+
debug_print_raw (6, "get_duplex_info: raw data\n", (uint8_t*)&result, size);
-
+
DBG (3, "get_duplex_info: [0] Mode: %s%s\n",
BIT(result.mode,0)?"MERGED_PAGES":"",
BIT(result.mode,1)?"2ND_PAGE_FOLLOWS":"");
@@ -3606,7 +3605,7 @@ get_duplex_info (Avision_Scanner* s)
BIT(result.image_info,1)?" ADF_BGR":" ADF_RGB",
BIT(result.image_info,2)?" FLATBED_NEEDS_MIRROR_IMAGE":"",
BIT(result.image_info,3)?" ADF_NEEDS_MIRROR_IMAGE":"");
-
+
return SANE_STATUS_GOOD;
}
@@ -3617,45 +3616,45 @@ set_frame (Avision_Scanner* s, SANE_Word frame)
struct command_send cmd;
uint8_t data[8];
} scmd;
-
+
Avision_Device* dev = s->hw;
SANE_Status status;
-
+
DBG (3, "set_frame: request frame %d\n", frame);
-
+
/* Better check the current status of the film holder, because it
can be changed between scans. */
status = get_frame_info (s);
if (status != SANE_STATUS_GOOD)
return status;
-
+
/* No film holder? */
if (dev->holder_type == 0xff) {
DBG (1, "set_frame: No film holder!!\n");
return SANE_STATUS_INVAL;
}
-
+
/* Requesting frame 0xff indicates eject/rewind */
if (frame != 0xff && (frame < 1 || frame > dev->frame_range.max) ) {
DBG (1, "set_frame: Illegal frame (%d) requested (min=1, max=%d)\n",
- frame, dev->frame_range.max);
+ frame, dev->frame_range.max);
return SANE_STATUS_INVAL;
}
-
+
memset (&scmd, 0, sizeof (scmd));
scmd.cmd.opc = AVISION_SCSI_SEND;
scmd.cmd.datatypecode = 0x87; /* send film holder "sense" */
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[1] = frame;
+
status = avision_cmd (&s->av_con, &scmd.cmd, sizeof (scmd.cmd),
&scmd.data, sizeof (scmd.data), 0, 0);
if (status != SANE_STATUS_GOOD) {
DBG (1, "set_frame: send_data (%s)\n", sane_strstatus (status));
- }
+ }
return status;
}
@@ -3669,20 +3668,20 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
Avision_Device* dev;
SANE_Status status;
-
+
Avision_Connection av_con;
char mfg [9];
char model [17];
char rev [5];
-
+
unsigned int i;
char* s;
SANE_Bool found;
-
+
DBG (3, "attach:\n");
memset (result, 0, sizeof(result));
-
+
for (dev = first_dev; dev; dev = dev->next)
if (strcmp (dev->sane.name, devname) == 0) {
if (devp)
@@ -3693,25 +3692,25 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
av_con.connection_type = con_type;
if (av_con.connection_type == AV_USB)
av_con.usb_status = AVISION_USB_UNTESTED_STATUS;
-
+
/* set known USB status type */
if (attaching_hw && attaching_hw->feature_type & AV_INT_STATUS)
av_con.usb_status = AVISION_USB_INT_STATUS;
-
+
DBG (3, "attach: opening %s\n", devname);
status = avision_open (devname, &av_con, sense_handler, 0);
if (status != SANE_STATUS_GOOD) {
DBG (1, "attach: open failed (%s)\n", sane_strstatus (status));
return SANE_STATUS_INVAL;
}
-
+
/* first: get the standard inquiry? */
status = inquiry (av_con, result, AVISION_INQUIRY_SIZE_V1);
if (status != SANE_STATUS_GOOD) {
DBG (1, "attach: 1st inquiry failed (%s)\n", sane_strstatus (status));
return status;
}
-
+
/* copy string information - and zero terminate them c-style */
memcpy (&mfg, result + 8, 8);
mfg [8] = 0;
@@ -3719,7 +3718,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
model [16] = 0;
memcpy (&rev, result + 32, 4);
rev [4] = 0;
-
+
/* shorten strings (-1 for last index
-1 for last 0; >0 because one char at least) */
for (i = sizeof (mfg) - 2; i > 0; i--) {
@@ -3734,10 +3733,10 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
else
break;
}
-
+
DBG (1, "attach: Inquiry gives mfg=%s, model=%s, product revision=%s.\n",
mfg, model, rev);
-
+
model_num = 0;
found = 0;
/* while not at at end of list NULL terminator */
@@ -3746,7 +3745,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
{
int matches = 0, match_count = 0; /* count number of matches */
DBG (1, "attach: Checking model: %d\n", model_num);
-
+
if (Avision_Device_List[model_num].scsi_mfg) {
++match_count;
if (strcmp(mfg, Avision_Device_List[model_num].scsi_mfg) == 0)
@@ -3757,7 +3756,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
if (strcmp(model, Avision_Device_List[model_num].scsi_model) == 0)
++matches;
}
-
+
/* we need 2 matches (mfg, model) for SCSI entries, or the ones available
for "we know what we are looking for" USB entries */
if ((attaching_hw == &(Avision_Device_List [model_num]) &&
@@ -3775,16 +3774,16 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
}
++model_num;
}
-
+
if (!found) {
DBG (0, "attach: \"%s\" - \"%s\" not yet in whitelist!\n", mfg, model);
DBG (0, "attach: You might want to report this output.\n");
DBG (0, "attach: To: rene@exactcode.de (the Avision backend author)\n");
-
+
status = SANE_STATUS_INVAL;
goto close_scanner_and_return;
}
-
+
/* second: maybe ask for the firmware status and flash ram info */
if (Avision_Device_List [model_num].feature_type & AV_FIRMWARE)
{
@@ -3795,7 +3794,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
sane_strstatus (status));
goto close_scanner_and_return;
}
-
+
DBG (3, "attach: reading flash ram info\n");
status = get_flash_ram_info (&av_con);
if (status != SANE_STATUS_GOOD) {
@@ -3803,7 +3802,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
sane_strstatus (status));
goto close_scanner_and_return;
}
-
+
#ifdef FIRMWARE_DATABASE_INCLUDED
/* Send new NV-RAM (firmware) data */
status = send_nvram_data (&av_con);
@@ -3811,7 +3810,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
goto close_scanner_and_return;
#endif
}
-
+
/* third: get the extended Avision inquiry */
status = inquiry (av_con, result, AVISION_INQUIRY_SIZE_V1);
if (status != SANE_STATUS_GOOD) {
@@ -3824,17 +3823,17 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
status = SANE_STATUS_NO_MEM;
goto close_scanner_and_return;
}
-
+
memset (dev, 0, sizeof (*dev));
dev->hw = &Avision_Device_List[model_num];
-
+
dev->sane.name = strdup (devname);
dev->sane.vendor = dev->hw->real_mfg ? dev->hw->real_mfg : strdup (mfg);
dev->sane.model = dev->hw->real_model ? dev->hw->real_model : strdup (model);
dev->connection.connection_type = av_con.connection_type;
dev->connection.usb_status = av_con.usb_status;
-
+
/* and finally Avision even extended this one later on
the AV220C2 does not grok this */
dev->inquiry_asic_type = (int) result[91];
@@ -3846,13 +3845,13 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
goto close_scanner_and_return;
}
}
-
+
debug_print_raw (6, "attach: raw data:\n", result, sizeof (result) );
-
+
DBG (3, "attach: [8-15] Vendor id.: '%8.8s'\n", result+8);
DBG (3, "attach: [16-31] Product id.: '%16.16s'\n", result+16);
DBG (3, "attach: [32-35] Product rev.: '%4.4s'\n", result+32);
-
+
i = (result[36] >> 4) & 0x7;
switch (result[36] & 0x07) {
case 0:
@@ -3873,7 +3872,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
DBG (3, "attach: [37] Optical res.: %d00 dpi\n", result[37]);
DBG (3, "attach: [38] Maximum res.: %d00 dpi\n", result[38]);
-
+
DBG (3, "attach: [39] Bitfield1:%s%s%s%s%s%s\n",
BIT(result[39],7)?" TRANS":"",
BIT(result[39],6)?" Q_SCAN":"",
@@ -3881,7 +3880,7 @@ attach (SANE_String_Const devname, Avision_ConnectionType con_type,
BIT(result[39],4)?" SUPPORTS_CALIB":"",
BIT(result[39],2)?" NEW_PROTOCOL":"",
(result[39] & 0x03) == 0x03 ? " AVISION":" OEM");
-
+
DBG (3, "attach: [40-41] X res. in gray: %d dpi\n",
get_double ( &(result[40]) ));
DBG (3, "attach: [42-43] Y res. in gray: %d dpi\n",
@@ -3920,7 +3919,7 @@ get_double ( &(result[48] ) ));
BIT(result[52],2)?" INDEX_COLOR":"",
BIT(result[52],1)?" POWER_SAVING_TIMER":"",
BIT(result[52],0)?" NVM_DATA_REC":"");
-
+
/* print some more scanner features/params */
DBG (3, "attach: [53] line difference (software color pack): %d\n", result[53]);
DBG (3, "attach: [54] color mode pixel boundary: %d\n", result[54]);
@@ -3929,13 +3928,13 @@ get_double ( &(result[48] ) ));
DBG (3, "attach: [57] lineart mode pixel boundary: %d\n", result[57]);
DBG (3, "attach: [58] halftone mode pixel boundary: %d\n", result[58]);
DBG (3, "attach: [59] error-diffusion mode pixel boundary: %d\n", result[59]);
-
+
DBG (3, "attach: [60] channels per pixel:%s%s%s\n",
BIT(result[60],7)?" 1":"",
BIT(result[60],6)?" 3":"",
(result[60] & 0x3F) != 0 ? " RESERVED":"");
-
- DBG (3, "attach: [61] bits per channel:%s%s%s%s%s%s%s\n",
+
+ DBG (3, "attach: [61] bits per channel:%s%s%s%s%s%s%s\n",
BIT(result[61],7)?" 1":"",
BIT(result[61],6)?" 4":"",
BIT(result[61],5)?" 6":"",
@@ -3943,40 +3942,40 @@ get_double ( &(result[48] ) ));
BIT(result[61],3)?" 10":"",
BIT(result[61],2)?" 12":"",
BIT(result[61],1)?" 16":"");
-
- DBG (3, "attach: [62] scanner type:%s%s%s%s%s%s\n",
+
+ DBG (3, "attach: [62] scanner type:%s%s%s%s%s%s\n",
BIT(result[62],7)?" Flatbed":"",
BIT(result[62],6)?" Roller (ADF)":"",
BIT(result[62],5)?" Flatbed (ADF)":"",
BIT(result[62],4)?" Roller":"", /* does not feed multiple pages, AV25 */
BIT(result[62],3)?" Film scanner":"",
BIT(result[62],2)?" Duplex":"");
-
+
DBG (3, "attach: [75-76] Max shading target : %x\n",
get_double ( &(result[75]) ));
-
+
DBG (3, "attach: [77-78] Max X of transparency: %d dots * base_dpi\n",
get_double ( &(result[77]) ));
DBG (3, "attach: [79-80] Max Y of transparency: %d dots * base_dpi\n",
get_double ( &(result[79]) ));
-
+
DBG (3, "attach: [81-82] Max X of flatbed: %d dots * base_dpi\n",
get_double ( &(result[81]) ));
DBG (3, "attach: [83-84] Max Y of flatbed: %d dots * base_dpi\n",
get_double ( &(result[83]) ));
-
+
DBG (3, "attach: [85-86] Max X of ADF: %d dots * base_dpi\n",
get_double ( &(result[85]) ));
DBG (3, "attach: [87-88] Max Y of ADF: %d dots * base_dpi\n",
get_double ( &(result[87]) )); /* 0xFFFF means unlimited length */
-
+
DBG (3, "attach: [89-90] Res. in Ex. mode: %d dpi\n",
get_double ( &(result[89]) ));
-
+
DBG (3, "attach: [91] ASIC: %d\n", result[91]);
-
+
DBG (3, "attach: [92] Buttons: %d\n", result[92]);
-
+
DBG (3, "attach: [93] ESA4:%s%s%s%s%s%s%s%s\n",
BIT(result[93],7)?" SUPPORTS_ACCESSORIES_DETECT":"",
BIT(result[93],6)?" ADF_IS_BGR_ORDERED":"",
@@ -3986,7 +3985,7 @@ get_double ( &(result[48] ) ));
BIT(result[93],2)?" SUPPORTS_LIGHT_DETECT":"",
BIT(result[93],1)?" SUPPORTS_READ_PRNU_DATA":"",
BIT(result[93],0)?" FLATBED_MIRRORS_IMAGE":"");
-
+
DBG (3, "attach: [94] ESA5:%s%s%s%s%s%s%s%s\n",
BIT(result[94],7)?" IGNORE_LINE_DIFFERENCE_FOR_ADF":"",
BIT(result[94],6)?" NEEDS_SW_LINE_COLOR_PACK":"",
@@ -3996,7 +3995,7 @@ get_double ( &(result[48] ) ));
BIT(result[94],2)?" SUPPORTS_TUNE_SCAN_LENGTH":"",
BIT(result[94],1)?" SUPPORTS_SWITCH_STRIP_FOR_DESKEW":"", /* Kodak i80 only */
BIT(result[94],0)?" SEARCHES_LEADING_SIDE_EDGE_BY_FIRMWARE":"");
-
+
DBG (3, "attach: [95] ESA6:%s%s%s%s%s%s%s%s\n",
BIT(result[95],7)?" SUPPORTS_PAPER_SIZE_AUTO_DETECTION":"",
BIT(result[95],6)?" SUPPORTS_DO_HOUSEKEEPING":"", /* Kodak i80 only */
@@ -4006,7 +4005,7 @@ get_double ( &(result[48] ) ));
BIT(result[95],2)?" SUPPORTS_GET_BACKGROUND_RASTER":"", /* AV220 et.al. */
BIT(result[95],1)?" SUPPORTS_NVRAM_RESET":"",
BIT(result[95],0)?" SUPPORTS_BATCH_SCAN":"");
-
+
DBG (3, "attach: [128] ESA7:%s%s%s%s%s%s%s%s\n",
BIT(result[128],7)?" SUPPORTS_ADF_CONTINUOUS":"",
BIT(result[128],6)?" SUPPORTS_YCbCr_COLOR":"",
@@ -4016,7 +4015,7 @@ get_double ( &(result[48] ) ));
BIT(result[128],2)?" SUPPORTS_JOB_CONTROL":"",
BIT(result[128],1)?" SUPPORTS_INF_LENGTH":"",
BIT(result[128],0)?" ULTRA_SONIC_DOUBLE_FEED_DETECTION":"");
-
+
DBG (3, "attach: [129] YCbCr:%s%s%s%s%s%s%s%s\n",
BIT(result[129],7)?" YCC4:2:0":"",
BIT(result[129],6)?" YCC(profile2)":"",
@@ -4026,7 +4025,7 @@ get_double ( &(result[48] ) ));
BIT(result[129],2)?" JPEG(profile2)":"",
BIT(result[129],1)?" JPEG(profile3)":"",
BIT(result[129],0)?" JPEG(profile4)":"");
-
+
/* I have no idea how film scanner could reliably be detected -ReneR */
if (dev->hw->feature_type & AV_FILMSCANNER) {
dev->scanner_type = AV_FILM;
@@ -4046,19 +4045,19 @@ get_double ( &(result[48] ) ));
dev->inquiry_nvram_read = BIT(result[52],0);
dev->inquiry_power_save_time = BIT(result[52],1);
-
+
dev->inquiry_adf = BIT (result[62], 5);
dev->inquiry_duplex = BIT (result[62], 2) || BIT (result[94], 5);
- dev->inquiry_duplex_interlaced = BIT(result[62],2) || BIT (result[94], 4);
+ dev->inquiry_duplex_interlaced = BIT(result[62],2) || BIT (result[94], 4);
/* the first avision scanners (AV3200) do not set the interlaced bit */
if (dev->inquiry_duplex && dev->inquiry_asic_type < AV_ASIC_C6)
dev->inquiry_duplex_interlaced = 1;
dev->inquiry_paper_length = BIT (result[95], 5);
dev->inquiry_batch_scan = BIT (result[95], 0); /* AV122, DM152 */
-
+
dev->inquiry_detect_accessories = BIT (result[93], 7);
-
+
dev->inquiry_needs_calibration = BIT (result[50], 4);
dev->inquiry_keeps_window = BIT (result[50], 1);
@@ -4066,7 +4065,7 @@ get_double ( &(result[48] ) ));
dev->inquiry_keeps_window = 0;
if (Avision_Device_List [model_num].feature_type & AV_DOES_KEEP_WINDOW)
dev->inquiry_keeps_window = 1;
-
+
dev->inquiry_needs_gamma = BIT (result[50], 3);
dev->inquiry_keeps_gamma = BIT (result[50], 2);
if (Avision_Device_List [model_num].feature_type & AV_DOES_NOT_KEEP_GAMMA)
@@ -4076,33 +4075,33 @@ get_double ( &(result[48] ) ));
dev->inquiry_3x3_matrix = BIT (result[51], 1);
dev->inquiry_needs_software_colorpack = BIT (result[50],5);
-
+
dev->inquiry_needs_line_pack = BIT (result[94], 6);
-
+
dev->inquiry_adf_need_mirror = BIT (result[51], 0);
dev->inquiry_adf_bgr_order = BIT (result[93], 6);
if (Avision_Device_List [model_num].feature_type & AV_ADF_BGR_ORDER_INVERT)
dev->inquiry_adf_bgr_order = ! dev->inquiry_adf_bgr_order;
-
+
dev->inquiry_light_detect = BIT (result[93], 2);
dev->inquiry_light_control = BIT (result[50], 7);
dev->inquiry_button_control = BIT (result[50], 6) | BIT (result[51],2);
-
+
dev->inquiry_exposure_control = BIT(result[51],7);
dev->inquiry_max_shading_target = get_double ( &(result[75]) );
-
+
dev->inquiry_color_boundary = result[54];
if (dev->inquiry_color_boundary == 0)
dev->inquiry_color_boundary = 8;
-
+
dev->inquiry_gray_boundary = result[55];
if (dev->inquiry_gray_boundary == 0)
dev->inquiry_gray_boundary = 8;
-
+
dev->inquiry_dithered_boundary = result[59];
if (dev->inquiry_dithered_boundary == 0)
dev->inquiry_dithered_boundary = 8;
-
+
dev->inquiry_thresholded_boundary = result[57];
if (dev->inquiry_thresholded_boundary == 0)
dev->inquiry_thresholded_boundary = 8;
@@ -4121,7 +4120,7 @@ get_double ( &(result[48] ) ));
default:
;
}
-
+
if (dev->inquiry_new_protocol) {
dev->inquiry_optical_res = get_double ( &(result[89]) );
dev->inquiry_max_res = get_double ( &(result[44]) );
@@ -4136,7 +4135,7 @@ get_double ( &(result[48] ) ));
DBG (1, "Inquiry optical resolution > max_resolution, adjusting!\n");
dev->inquiry_max_res = dev->inquiry_optical_res;
}
-
+
if (dev->inquiry_optical_res == 0)
{
DBG (1, "Inquiry optical resolution is invalid!\n");
@@ -4151,7 +4150,7 @@ get_double ( &(result[48] ) ));
DBG (1, "Inquiry max resolution is invalid, using 1200 dpi!\n");
dev->inquiry_max_res = 1200;
}
-
+
DBG (1, "attach: optical resolution set to: %d dpi\n", dev->inquiry_optical_res);
DBG (1, "attach: max resolution set to: %d dpi\n", dev->inquiry_max_res);
@@ -4163,7 +4162,7 @@ get_double ( &(result[48] ) ));
dev->inquiry_channels_per_pixel = 3;
else
dev->inquiry_channels_per_pixel = 1;
-
+
if (BIT(result[61],1))
dev->inquiry_bits_per_channel = 16;
else if (BIT(result[61],2))
@@ -4192,7 +4191,7 @@ get_double ( &(result[48] ) ));
if (! (dev->hw->feature_type & AV_NO_BUTTON))
dev->inquiry_buttons = result[92];
-
+
/* get max x/y ranges for the different modes */
{
double base_dpi; /* TODO: make int */
@@ -4205,39 +4204,39 @@ get_double ( &(result[48] ) ));
*/
base_dpi = dev->inquiry_optical_res;
}
-
+
/* .1 to slightly increase the size to match the one of American standard paper
formats that would otherwise be .1 mm too large to scan ... */
dev->inquiry_x_ranges [AV_NORMAL_DIM] =
(double)get_double (&(result[81])) * MM_PER_INCH / base_dpi + .1;
dev->inquiry_y_ranges [AV_NORMAL_DIM] =
(double)get_double (&(result[83])) * MM_PER_INCH / base_dpi;
-
+
dev->inquiry_x_ranges [AV_TRANSPARENT_DIM] =
(double)get_double (&(result[77])) * MM_PER_INCH / base_dpi + .1;
dev->inquiry_y_ranges [AV_TRANSPARENT_DIM] =
(double)get_double (&(result[79])) * MM_PER_INCH / base_dpi;
-
+
dev->inquiry_x_ranges [AV_ADF_DIM] =
(double)get_double (&(result[85])) * MM_PER_INCH / base_dpi + .1;
dev->inquiry_y_ranges [AV_ADF_DIM] =
(double)get_double (&(result[87])) * MM_PER_INCH / base_dpi;
}
-
+
dev->inquiry_tune_scan_length = BIT(result[94],2);
if (Avision_Device_List [model_num].feature_type & AV_NO_TUNE_SCAN_LENGTH)
dev->inquiry_tune_scan_length = 0;
dev->inquiry_background_raster = BIT(result[95],2);
-
+
if (dev->hw->feature_type & AV_NO_BACKGROUND)
dev->inquiry_background_raster = 0;
-
+
if (dev->inquiry_background_raster) {
dev->inquiry_background_raster_pixel =
get_double(&(result[85])) * dev->inquiry_optical_res / AVISION_BASE_RES;
}
-
+
/* check if x/y ranges are valid :-((( */
{
source_mode_dim mode;
@@ -4271,7 +4270,7 @@ get_double ( &(result[48] ) ));
}
else {
dev->inquiry_x_ranges [mode] = A4_X_RANGE * MM_PER_INCH;
-
+
if (dev->scanner_type == AV_SHEETFEED)
dev->inquiry_y_ranges [mode] = SHEETFEED_Y_RANGE * MM_PER_INCH;
else
@@ -4283,7 +4282,7 @@ get_double ( &(result[48] ) ));
dev->inquiry_x_ranges [mode], dev->inquiry_y_ranges [mode]);
} /* end for all modes */
}
-
+
/* We need a bigger buffer for USB devices, since they seem to have
a firmware bug and do not support reading the calibration data in
tiny chunks */
@@ -4298,26 +4297,26 @@ get_double ( &(result[48] ) ));
dev->read_stripe_size = 32;
else /* tested on AV3200 with it's max of 300dpi @color */
dev->read_stripe_size = 8; /* maybe made dynamic on scan res ... */
-
+
/* normally the data_dq is 0x0a0d - but some newer scanner hang with it ... */
if (dev->inquiry_new_protocol) /* TODO: match on ASIC? which model hung? */
dev->data_dq = 0x0a0d;
else
dev->data_dq = 0;
-
+
avision_close (&av_con);
-
+
++ num_devices;
dev->next = first_dev;
first_dev = dev;
if (devp)
*devp = dev;
-
+
return SANE_STATUS_GOOD;
-
+
close_scanner_and_return:
avision_close (&av_con);
-
+
return status;
}
@@ -4327,39 +4326,39 @@ get_tune_scan_length (Avision_Scanner* s)
{
SANE_Status status;
int i;
-
+
struct command_read rcmd;
size_t size;
-
+
struct max_value {
uint8_t max [2];
} payload;
-
+
/* turn on the light */
DBG (3, "get_tune_scan_length:\n");
memset (&rcmd, 0, sizeof (rcmd));
size = sizeof (payload);
-
+
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0xD2; /* Read General Ability/Parameter */
-
+
for (i = 1; i <= 8; ++i) {
memset (&payload, 0, sizeof (payload));
-
+
set_double (rcmd.datatypequal, i); /* type */
set_triple (rcmd.transferlen, size);
-
+
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd),
0, 0, &payload, &size);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "get_tune_scan_length: read %d failed (%s)\n", i, sane_strstatus (status));
return status;
}
DBG (1, "get_tune_scan_length: %d: %d\n", i, get_double (payload.max));
}
-
+
return SANE_STATUS_GOOD;
}
@@ -4367,7 +4366,7 @@ static SANE_Status
send_tune_scan_length (Avision_Scanner* s)
{
int top, bottom;
-
+
SANE_Status status;
size_t size;
struct command_send scmd;
@@ -4375,31 +4374,31 @@ send_tune_scan_length (Avision_Scanner* s)
uint8_t vertical [2];
/* uint8_t horizontal [2]; not send by the Windows driver, yet */
} payload;
-
+
DBG (3, "send_tune_scan_length:\n");
-
+
memset (&scmd, 0, sizeof (scmd));
-
+
size = sizeof (payload);
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = 0x96; /* Attach/Truncate head(left) of scan length */
set_triple (scmd.transferlen, size);
-
+
/* the SPEC says optical DPI, but real world measuring suggests it is 1200
as in the window descriptor */
top = 1200 * SANE_UNFIX (s->val[OPT_OVERSCAN_TOP].w) / MM_PER_INCH;
DBG (3, "send_tune_scan_length: top: %d\n", top);
-
+
set_double (scmd.datatypequal, 0x0001); /* attach, 0x000 is shorten */
set_double (payload.vertical, top);
/* set_double (payload.horizontal, 0); */
-
+
/* we alway send it, even for 0 as the scanner keeps it in RAM and
previous runs could already have set something */
-
+
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
&payload, sizeof (payload), 0, 0);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "send_tune_scan_length: send top/left failed (%s)\n", sane_strstatus (status));
return status;
@@ -4411,16 +4410,16 @@ send_tune_scan_length (Avision_Scanner* s)
set_double (payload.vertical, bottom);
/*set_double (payload.horizontal, 0); */
-
+
size = sizeof (payload);
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
&payload, sizeof (payload), 0, 0);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "send_tune_scan_length: send bottom/right failed (%s)\n", sane_strstatus (status));
return status;
}
-
+
return SANE_STATUS_GOOD;
}
@@ -4428,10 +4427,10 @@ static SANE_Status
additional_probe (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
-
+
/* we should wait until the scanner is ready before we
perform further actions */
-
+
SANE_Status status;
/* try to retrieve additional accessory information */
if (dev->inquiry_detect_accessories) {
@@ -4439,28 +4438,28 @@ additional_probe (Avision_Scanner* s)
if (status != SANE_STATUS_GOOD)
return status;
}
-
+
/* for a film scanner try to retrieve additional frame information */
if (dev->scanner_type == AV_FILM) {
status = get_frame_info (s);
if (status != SANE_STATUS_GOOD)
return status;
}
-
+
/* no scanner did support this so far: tried on AV220, DM152 */
if (0 && dev->inquiry_duplex) {
status = get_duplex_info (s);
if (status != SANE_STATUS_GOOD)
return status;
}
-
+
/* get overscan ("head/tail tune") information: hangs AV220, zeros on AV122 */
if (0 && dev->inquiry_tune_scan_length) {
status = get_tune_scan_length (s);
if (status != SANE_STATUS_GOOD)
return status;
}
-
+
/* create dynamic *-mode entries */
if (!dev->inquiry_no_gray_modes)
{
@@ -4474,7 +4473,7 @@ additional_probe (Avision_Scanner* s)
if (dev->inquiry_bits_per_channel == 12)
add_color_mode (dev, AV_GRAYSCALE12, "12bit Gray");
-
+
if (dev->inquiry_bits_per_channel >= 16)
add_color_mode (dev, AV_GRAYSCALE16, "16bit Gray");
}
@@ -4484,17 +4483,17 @@ additional_probe (Avision_Scanner* s)
if (dev->inquiry_bits_per_channel == 12)
add_color_mode (dev, AV_TRUECOLOR12, "12bit Color");
-
+
if (dev->inquiry_bits_per_channel >= 16)
add_color_mode (dev, AV_TRUECOLOR16, "16bit Color");
}
-
+
/* now choose the default mode - avoiding the 12/16 bit modes */
dev->color_list_default = last_color_mode (dev);
if (dev->inquiry_bits_per_channel > 8 && dev->color_list_default > 0) {
dev->color_list_default--;
}
-
+
if (dev->scanner_type == AV_SHEETFEED)
{
add_source_mode (dev, AV_ADF, "ADF Front");
@@ -4502,20 +4501,20 @@ additional_probe (Avision_Scanner* s)
else
{
add_source_mode (dev, AV_NORMAL, "Normal");
-
+
if (dev->inquiry_light_box)
add_source_mode (dev, AV_TRANSPARENT, "Transparency");
-
+
if (dev->inquiry_adf)
add_source_mode (dev, AV_ADF, "ADF Front");
}
-
+
if (dev->inquiry_duplex) {
if (dev->inquiry_duplex_interlaced && !(dev->hw->feature_type & AV_NO_REAR))
add_source_mode (dev, AV_ADF_REAR, "ADF Back");
add_source_mode (dev, AV_ADF_DUPLEX, "ADF Duplex");
}
-
+
return SANE_STATUS_GOOD;
}
@@ -4523,21 +4522,21 @@ static SANE_Status
get_calib_format (Avision_Scanner* s, struct calibration_format* format)
{
SANE_Status status;
-
+
struct command_read rcmd;
uint8_t result [32];
size_t size;
-
+
DBG (3, "get_calib_format:\n");
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0x60; /* get calibration format */
set_double (rcmd.datatypequal, s->hw->data_dq);
set_triple (rcmd.transferlen, size);
-
+
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) ) {
@@ -4545,9 +4544,9 @@ get_calib_format (Avision_Scanner* s, struct calibration_format* format)
sane_strstatus (status) );
return status;
}
-
+
debug_print_calib_format (3, "get_calib_format", result);
-
+
format->pixel_per_line = get_double (&(result[0]));
format->bytes_per_channel = result[2];
format->lines = result[3];
@@ -4562,21 +4561,21 @@ get_calib_format (Avision_Scanner* s, struct calibration_format* format)
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]));
-
+
/* now translate to normal! */
/* firmware return R--RG--GB--B with 3 line count */
/* software format it as 1 line if true color scan */
/* only line interleave format to be supported */
-
+
if (color_mode_is_color (s->c_mode) || BIT(format->ability1, 3)) {
format->channels = 3;
format->lines /= 3; /* line interleave */
}
else
format->channels = 1;
-
+
DBG (3, "get_calib_format: channels: %d\n", format->channels);
-
+
return SANE_STATUS_GOOD;
}
@@ -4587,26 +4586,26 @@ get_calib_data (Avision_Scanner* s, uint8_t data_type,
{
SANE_Status status;
uint8_t *calib_ptr;
-
+
size_t get_size, data_size, chunk_size;
-
+
struct command_read rcmd;
-
+
chunk_size = calib_size;
-
+
DBG (3, "get_calib_data: type %x, size %lu, chunk_size: %lu\n",
data_type, (u_long) calib_size, (u_long) chunk_size);
-
+
memset (&rcmd, 0, sizeof (rcmd));
-
+
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = data_type;
set_double (rcmd.datatypequal, s->hw->data_dq);
-
+
calib_ptr = calib_data;
get_size = chunk_size;
data_size = calib_size;
-
+
while (data_size) {
if (get_size > data_size)
get_size = data_size;
@@ -4617,7 +4616,7 @@ get_calib_data (Avision_Scanner* s, uint8_t data_type,
DBG (3, "get_calib_data: Reading %ld bytes calibration data\n",
(long)get_size);
-
+
status = avision_cmd (&s->av_con, &rcmd,
sizeof (rcmd), 0, 0, calib_ptr, &get_size);
if (status != SANE_STATUS_GOOD) {
@@ -4631,7 +4630,7 @@ get_calib_data (Avision_Scanner* s, uint8_t data_type,
data_size -= get_size;
calib_ptr += get_size;
}
-
+
return SANE_STATUS_GOOD;
}
@@ -4640,22 +4639,22 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
uint8_t* dark_data, uint8_t* white_data)
{
Avision_Device* dev = s->hw;
-
+
const int elements_per_line = format->pixel_per_line * format->channels;
-
+
SANE_Status status;
-
+
uint8_t send_type;
uint16_t send_type_q;
-
+
struct command_send scmd;
-
+
int i;
-
+
DBG (3, "set_calib_data:\n");
-
+
send_type = 0x82; /* download calibration data */
-
+
/* do we use a color mode? */
if (format->channels > 1) {
send_type_q = 0x12; /* color calib data */
@@ -4666,40 +4665,40 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
else
send_type_q = 0x11; /* gray/bw calib data */
}
-
+
memset (&scmd, 0x00, sizeof (scmd));
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = send_type;
-
+
/* data corrections due to dark calibration data merge */
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_new = value_orig;
-
+
value_new &= 0xffc0;
value_new |= (get_double_le (dark_data + i*2) >> 10) & 0x3f;
-
+
DBG (9, "set_calib_data: element %d, dark difference %d\n",
i, value_orig - value_new);
-
+
set_double_le ((white_data + i*2), value_new);
}
}
-
+
/* send data in one command? */
/* FR: HP5370 reports one-pass, but needs multi (or other format in single) */
if (format->channels == 1 ||
( ( (dev->hw->feature_type & AV_ONE_CALIB_CMD) ||
- ! BIT(format->ability1, 0) ) &&
+ ! BIT(format->ability1, 0) ) &&
! (dev->hw->feature_type & AV_MULTI_CALIB_CMD) ) )
/* one command (most scanners) */
{
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);
-
+
memset (&scmd, 0, sizeof (scmd) );
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = send_type;
@@ -4715,9 +4714,9 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
int 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 */
-
+
DBG (3, "set_calib_data: channels in single commands\n");
-
+
conv_out_data = (uint16_t*) malloc (conv_out_size);
if (!conv_out_data) {
status = SANE_STATUS_NO_MEM;
@@ -4727,24 +4726,24 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
for (channel = 0; channel < 3; ++ channel)
{
int i;
-
+
/* no need for endianness handling since whole word copy */
uint16_t* casted_avg_data = (uint16_t*) white_data;
-
+
DBG (3, "set_calib_data_calibration: channel: %i\n", channel);
-
+
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",
conv_out_size);
-
+
memset (&scmd, 0, sizeof (scmd));
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = send_type; /* send calibration data */
set_double (scmd.datatypequal, channel);
set_triple (scmd.transferlen, conv_out_size);
-
+
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
conv_out_data, conv_out_size, 0, 0);
if (status != SANE_STATUS_GOOD) {
@@ -4756,14 +4755,14 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
free (conv_out_data);
} /* end else send calib data*/
}
-
+
return SANE_STATUS_GOOD;
}
/* Sort data pixel by pixel and average first 2/3 of the data.
The caller has to free return pointer. R,G,B pixels
interleave to R,G,B line interleave.
-
+
The input data data is in 16 bits little endian, always.
That is a = b[1] << 8 + b[0] in all system.
@@ -4776,34 +4775,34 @@ 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;
-
+
uint8_t *sort_data, *avg_data;
-
+
DBG (1, "sort_and_average:\n");
-
+
if (!format || !data)
return NULL;
-
+
sort_data = malloc (format->lines * 2);
if (!sort_data)
return NULL;
-
+
avg_data = malloc (elements_per_line * 2);
if (!avg_data) {
free (sort_data);
return NULL;
}
-
+
/* for each pixel */
for (i = 0; i < elements_per_line; ++ i)
{
uint8_t* ptr1 = data + i * format->bytes_per_channel;
uint16_t temp;
-
+
/* copy all lines for pixel i into the linear array sort_data */
for (line = 0; line < format->lines; ++ line) {
uint8_t* ptr2 = ptr1 + line * stride; /* pixel */
-
+
if (format->bytes_per_channel == 1)
temp = 0xffff * *ptr2 / 255;
else
@@ -4811,12 +4810,12 @@ sort_and_average (struct calibration_format* format, uint8_t* data)
set_double ((sort_data + line*2), temp); /* store big-endian */
/* DBG (7, "ReneR to sort: %x\n", temp); */
}
-
+
temp = bubble_sort (sort_data, format->lines);
/* DBG (7, "ReneR averaged: %x\n", temp); */
set_double ((avg_data + i*2), temp); /* store big-endian */
}
-
+
free ((void *) sort_data);
return avg_data;
}
@@ -4828,28 +4827,28 @@ compute_dark_shading_data (Avision_Scanner* s,
{
uint16_t map_value = DEFAULT_DARK_SHADING;
uint16_t rgb_map_value[3];
-
+
int elements_per_line, i;
-
+
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;
-
+
rgb_map_value[0] = format->r_dark_shading_target;
rgb_map_value[1] = format->g_dark_shading_target;
rgb_map_value[2] = format->b_dark_shading_target;
-
+
for (i = 0; i < format->channels; ++i) {
if (rgb_map_value[i] == INVALID_DARK_SHADING)
rgb_map_value[i] = map_value;
}
-
+
if (format->channels == 1) {
/* set to green, TODO: should depend on color drop-out and true-gray -ReneR */
rgb_map_value[0] = rgb_map_value[1] = rgb_map_value[2] = rgb_map_value[1];
}
-
+
elements_per_line = format->pixel_per_line * format->channels;
/* Check line interleave or pixel interleave. */
@@ -4874,22 +4873,22 @@ compute_white_shading_data (Avision_Scanner* s,
int i;
uint16_t inquiry_mst = DEFAULT_WHITE_SHADING;
uint16_t mst[3];
-
+
int elements_per_line = format->pixel_per_line * format->channels;
-
+
/* debug counter */
int values_invalid = 0;
int values_limitted = 0;
-
+
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;
-
+
mst[0] = format->r_shading_target;
mst[1] = format->g_shading_target;
mst[2] = format->b_shading_target;
-
+
for (i = 0; i < 3; ++i) {
if (mst[i] == INVALID_WHITE_SHADING) /* mst[i] > MAX_WHITE_SHADING) */ {
DBG (3, "compute_white_shading_data: target %d invalid (%x) using inquiry (%x)\n",
@@ -4913,7 +4912,7 @@ compute_white_shading_data (Avision_Scanner* s,
else
DBG (3, "compute_white_shading_data: target %d: %x\n", i, mst[0]);
}
-
+
/* some Avision example code was present here until SANE/Avision
* BUILD 57. */
@@ -4921,31 +4920,31 @@ compute_white_shading_data (Avision_Scanner* s,
/* set to green, TODO: should depend on color drop-out and true-gray -ReneR */
mst[0] = mst[1] = mst[2] = mst[1];
}
-
+
/* calculate calibration data */
for (i = 0; i < elements_per_line; ++ i)
{
int result;
/* calculate calibration value for pixel i */
uint16_t tmp_data = 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));
-
+
/* sanity check for over-amplification, clipping */
if (result > MAX_WHITE_SHADING) {
result = WHITE_MAP_RANGE;
++ values_limitted;
}
-
+
/* for visual debugging ... */
if (static_calib_list [i % 3] == SANE_TRUE)
result = 0xA000;
-
+
/* the output to the scanner will be 16 bit little endian again */
set_double_le ((data + i*2), result);
}
@@ -4959,20 +4958,20 @@ static SANE_Status
normal_calibration (Avision_Scanner* s)
{
SANE_Status status;
-
+
struct calibration_format calib_format;
-
+
int calib_data_size, calib_bytes_per_line;
uint8_t read_type;
uint8_t *calib_tmp_data;
-
+
DBG (1, "normal_calibration:\n");
-
+
/* get calibration format and data */
status = get_calib_format (s, &calib_format);
if (status != SANE_STATUS_GOOD)
return status;
-
+
/* check if need do calibration */
if (calib_format.flags != 1) {
DBG (1, "normal_calibration: Scanner claims no calibration needed -> skipped!\n");
@@ -4983,27 +4982,27 @@ normal_calibration (Avision_Scanner* s)
/* size = lines * bytes_per_channel * pixels_per_line * channel */
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_tmp_data = malloc (calib_data_size);
if (!calib_tmp_data)
return SANE_STATUS_NO_MEM;
-
+
/* check if we need to do dark calibration (shading) */
if (BIT(calib_format.ability1, 3))
{
DBG (1, "normal_calibration: reading dark data\n");
/* read dark calib data */
status = get_calib_data (s, 0x66, calib_tmp_data, calib_data_size);
-
+
if (status != SANE_STATUS_GOOD) {
free (calib_tmp_data);
return status;
}
-
+
/* process dark data: sort and average. */
-
+
if (s->dark_avg_data) {
free (s->dark_avg_data);
s->dark_avg_data = 0;
@@ -5015,7 +5014,7 @@ normal_calibration (Avision_Scanner* s)
}
compute_dark_shading_data (s, &calib_format, s->dark_avg_data);
}
-
+
/* do we use a color mode? */
if (calib_format.channels > 1) {
DBG (3, "normal_calibration: using color calibration\n");
@@ -5025,15 +5024,15 @@ normal_calibration (Avision_Scanner* s)
DBG (3, "normal_calibration: using gray calibration\n");
read_type = 0x61; /* gray calib data */
}
-
+
/* do white calibration: read gray or color data */
status = get_calib_data (s, read_type, calib_tmp_data, calib_data_size);
-
+
if (status != SANE_STATUS_GOOD) {
free (calib_tmp_data);
return status;
}
-
+
if (0) /* debug */
{
FILE* f = NULL;
@@ -5041,11 +5040,11 @@ normal_calibration (Avision_Scanner* s)
write_pnm_header (f, AV_GRAYSCALE, calib_format.bytes_per_channel * 8,
calib_format.pixel_per_line,
calib_format.lines * calib_format.channels);
-
+
fwrite (calib_tmp_data, 1, calib_data_size, f);
fclose (f);
}
-
+
if (s->white_avg_data) {
free (s->white_avg_data);
s->white_avg_data = 0;
@@ -5055,24 +5054,24 @@ normal_calibration (Avision_Scanner* s)
free (calib_tmp_data);
return SANE_STATUS_NO_MEM;
}
-
+
/* decrease white average data (if dark average data is present) */
if (s->dark_avg_data) {
int elements_per_line = calib_format.pixel_per_line * calib_format.channels;
int i;
DBG (1, "normal_calibration: dark data present - decreasing white average data\n");
-
+
for (i = 0; i < elements_per_line; ++ i) {
s->white_avg_data[i] -= s->dark_avg_data[i];
}
}
-
+
compute_white_shading_data (s, &calib_format, s->white_avg_data);
-
+
status = set_calib_data (s, &calib_format,
s->dark_avg_data, s->white_avg_data);
-
+
free (calib_tmp_data);
return status;
}
@@ -5080,12 +5079,12 @@ normal_calibration (Avision_Scanner* s)
/* next was taken from the GIMP and is a bit modified ... ;-)
* original Copyright (C) 1995 Spencer Kimball and Peter Mattis
*/
-static double
+static double
brightness_contrast_func (double brightness, double contrast, double value)
{
double nvalue;
double power;
-
+
/* apply brightness */
if (brightness < 0.0)
value = value * (1.0 + brightness);
@@ -5130,28 +5129,28 @@ send_gamma (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
SANE_Status status = SANE_STATUS_GOOD;
-
+
int invert_table = 0;
-
+
size_t gamma_table_raw_size;
size_t gamma_table_size;
size_t gamma_values;
-
+
struct command_send scmd;
uint8_t *gamma_data;
-
+
int color; /* current color */
size_t i; /* big table index */
size_t j; /* little table index */
size_t k; /* big table sub index */
double v1, v2;
-
+
double brightness;
double contrast;
-
+
if (dev->inquiry_asic_type != AV_ASIC_OA980)
invert_table = (s->c_mode == AV_THRESHOLDED) || (s->c_mode == AV_DITHERED);
-
+
switch (dev->inquiry_asic_type)
{
case AV_ASIC_Cx:
@@ -5176,37 +5175,37 @@ send_gamma (Avision_Scanner* s)
gamma_table_raw_size = 512; /* SPEC claims: 256 ... ? */
gamma_table_size = 512;
}
-
+
gamma_values = gamma_table_size / 256;
-
+
DBG (3, "send_gamma: table_raw_size: %lu, table_size: %lu\n",
(u_long) gamma_table_raw_size, (u_long) gamma_table_size);
DBG (3, "send_gamma: values: %lu, invert_table: %d\n",
(u_long) gamma_values, invert_table);
-
+
/* prepare for emulating contrast, brightness ... via the gamma-table */
brightness = SANE_UNFIX (s->val[OPT_BRIGHTNESS].w);
brightness /= 100;
contrast = SANE_UNFIX (s->val[OPT_CONTRAST].w);
contrast /= 100;
-
+
DBG (3, "send_gamma: brightness: %f, contrast: %f\n", brightness, contrast);
-
+
gamma_data = malloc (gamma_table_raw_size);
if (!gamma_data)
return SANE_STATUS_NO_MEM;
-
+
memset (&scmd, 0, sizeof (scmd) );
-
+
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = 0x81; /* 0x81 for download gamma table */
set_triple (scmd.transferlen, gamma_table_raw_size);
-
+
for (color = 0; color < 3 && status == SANE_STATUS_GOOD; ++ color)
{
/* color: 0=red; 1=green; 2=blue */
set_double (scmd.datatypequal, color);
-
+
i = 0; /* big table index */
for (j = 0; j < 256; ++ j) /* little table index */
{
@@ -5237,21 +5236,21 @@ send_gamma (Avision_Scanner* s)
v2 = (double) s->gamma_table [0][j + 1];
}
} /*end switch */
-
+
/* Emulate brightness and contrast (at least the Avision AV6[2,3]0
* as well as many others do not have a hardware implementation,
* --$. The function was taken from the GIMP source - maybe I'll
* optimize it in the future (when I have spare time). */
-
+
v1 /= 255;
v2 /= 255;
-
+
v1 = (brightness_contrast_func (brightness, contrast, v1) );
v2 = (brightness_contrast_func (brightness, contrast, v2) );
-
+
v1 *= 255;
v2 *= 255;
-
+
if (invert_table) {
v1 = 255 - v1;
v2 = 255 - v2;
@@ -5260,7 +5259,7 @@ send_gamma (Avision_Scanner* s)
if (v2 <= 0)
v2 = 0;
}
-
+
for (k = 0; k < gamma_values; ++ k, ++ i) {
gamma_data [i] = (uint8_t)
(((v1 * (gamma_values - k)) + (v2 * k) ) / (double) gamma_values);
@@ -5275,12 +5274,12 @@ send_gamma (Avision_Scanner* s)
gamma_data [i] = gamma_data [t_i];
}
}
-
+
DBG (4, "send_gamma: sending %lu bytes gamma table.\n",
(u_long) gamma_table_raw_size);
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
gamma_data, gamma_table_raw_size, 0, 0);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "send_gamma: gamma table upload failed: %s\n",
sane_strstatus (status));
@@ -5294,33 +5293,33 @@ static SANE_Status
send_3x3_matrix (Avision_Scanner* s)
{
SANE_Status status;
-
+
#define SIGN_BIT 0x1000
#define INT_PART 10
-
+
struct matrix_cmd
{
struct command_send scmd;
struct matrix_3x3 matrix;
} cmd;
-
- /* 04 00 00 00 00 00
+
+ /* 04 00 00 00 00 00
00 00 04 00 00 00
00 00 00 00 04 00 */
-
+
int i, a_i;
static const double c5_matrix[] =
{ 1.000, 0.000, 0.000,
0.000, 1.000, 0.000,
0.000, 0.000, 1.000 };
-
+
double a_f, b_f;
uint16_t m;
-
+
DBG (3, "send_3x3_matrix:\n");
-
+
memset (&cmd, 0, sizeof (cmd));
-
+
for (i = 0; i < 9; i++)
{
m = 0;
@@ -5329,18 +5328,18 @@ send_3x3_matrix (Avision_Scanner* s)
m |= SIGN_BIT;
a_f = -a_f;
}
-
+
a_i = (int) a_f; /* integer */
b_f = a_f - (double) a_i; /* float */
m |= ((a_i & 0x3) << INT_PART);
m |= (uint16_t) (b_f * 1024);
set_double (((uint8_t*)(&cmd.matrix.v[i])), m);
}
-
+
cmd.scmd.opc = AVISION_SCSI_SEND;
cmd.scmd.datatypecode = 0x83; /* 0x83 for 3x3 color matrix */
set_triple (cmd.scmd.transferlen, sizeof (struct matrix_3x3));
-
+
if (1) {
DBG (3, "send_3x3_matrix: sending matrix split into two commands\n");
status = avision_cmd (&s->av_con, &cmd.scmd, sizeof (cmd.scmd),
@@ -5350,7 +5349,7 @@ send_3x3_matrix (Avision_Scanner* s)
DBG (3, "send_3x3_matrix: sending matrix in one command\n");
status = avision_cmd (&s->av_con, &cmd, sizeof (cmd), 0, 0, 0, 0);
}
-
+
return status;
}
@@ -5358,21 +5357,21 @@ static SANE_Status
get_acceleration_info (Avision_Scanner* s, struct acceleration_info* info)
{
SANE_Status status;
-
+
struct command_read rcmd;
uint8_t result [24];
size_t size;
-
+
DBG (3, "get_acceleration_info:\n");
size = sizeof (result);
-
+
memset (&rcmd, 0, sizeof (rcmd));
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0x6c; /* get acceleration information */
set_double (rcmd.datatypequal, s->hw->data_dq);
set_triple (rcmd.transferlen, size);
-
+
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) ) {
@@ -5380,9 +5379,9 @@ get_acceleration_info (Avision_Scanner* s, struct acceleration_info* info)
sane_strstatus (status) );
return status;
}
-
+
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]));
@@ -5391,7 +5390,7 @@ get_acceleration_info (Avision_Scanner* s, struct acceleration_info* info)
info->target_speed = get_double (&(result[14]));
info->ability = result[16];
info->table_count = result[17];
-
+
return SANE_STATUS_GOOD;
}
@@ -5399,45 +5398,45 @@ static SANE_Status
send_acceleration_table (Avision_Scanner* s)
{
SANE_Status status;
-
+
struct command_send scmd;
int table = 0;
int i;
struct acceleration_info accel_info = accel_info;
uint8_t* table_data;
-
+
DBG (3, "send_acceleration_table:\n");
do {
status = get_acceleration_info (s, &accel_info);
-
+
if (accel_info.table_count == 0) {
DBG (3, "send_acceleration_table: device does not need tables\n");
return SANE_STATUS_GOOD;
}
-
+
if (accel_info.target_speed > accel_info.start_speed ||
accel_info.target_speed == 0 ||
accel_info.total_steps <= accel_info.stable_steps) {
DBG (1, "send_acceleration_table: table does not look right.\n");
return SANE_STATUS_INVAL;
}
-
+
if (accel_info.ability != 0) {
DBG (1, "send_acceleration_table: ability non-zero - insert code\n");
return SANE_STATUS_INVAL;
}
-
+
/* so far I assume we have one byte tables as used in the C6 ASIC ... */
table_data = malloc (accel_info.total_steps + 1000);
-
+
memset (&scmd, 0x00, sizeof (scmd));
scmd.opc = AVISION_SCSI_SEND;
scmd.datatypecode = 0x6c; /* send acceleration table */
-
+
set_double (scmd.datatypequal, table);
set_triple (scmd.transferlen, accel_info.total_steps);
-
+
/* construct the table - Warning: This code is derived from Avision
sample code and is a bit scary! I have no idea why the scanner
needs such a dumb table and also do not know /why/ it has to be
@@ -5447,16 +5446,16 @@ send_acceleration_table (Avision_Scanner* s)
float up_lim = 1.0;
uint16_t accel_steps = accel_info.total_steps - accel_info.stable_steps + 1;
-
+
/* acceleration ramp */
while ((up_lim - low_lim) > 0.0001)
{
float mid = (up_lim + low_lim) / 2; /* accel rate */
-
+
uint16_t now_count = accel_info.start_speed;
-
+
uint16_t i = 0;
-
+
float now_count_f = now_count;
table_data [i++] = (uint8_t) accel_info.start_speed;
@@ -5467,8 +5466,8 @@ send_acceleration_table (Avision_Scanner* s)
now_count = (uint16_t)(now_count_f + 0.5);
table_data[i++] = (uint8_t) now_count;
}
-
-
+
+
if (i == accel_steps)
break;
if (i > accel_steps)
@@ -5476,23 +5475,23 @@ send_acceleration_table (Avision_Scanner* s)
else
up_lim = mid;
}
-
+
/* fill stable steps */
for (i = accel_steps; i < accel_info.total_steps; i++)
table_data [i] = table_data [i-1];
-
+
debug_print_hex_raw (5, "send_acceleration_table: first pass:\n",
table_data, accel_info.total_steps);
-
+
/* maybe post fix-up */
{
int add_count;
-
+
/* count total steps in table */
int table_total = 0;
for (i = 0; i < accel_info.total_steps; i++)
table_total += table_data [i];
-
+
i = 0;
if (((table_total * accel_info.table_units) % accel_info.base_units) == 0)
add_count = 0;
@@ -5500,7 +5499,7 @@ send_acceleration_table (Avision_Scanner* s)
add_count = (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) {
DBG (1, "send_acceleration_table: add_count limited, was: %d\n", add_count);
@@ -5510,26 +5509,26 @@ send_acceleration_table (Avision_Scanner* s)
{
uint16_t temp_count = 255 - table_data [i];
temp_count = temp_count > add_count ? add_count : temp_count;
-
+
table_data [i] += (uint8_t) temp_count;
add_count -= temp_count;
}
}
}
-
+
debug_print_hex_raw (5, "send_acceleration_table: fixed up:\n",
table_data, accel_info.total_steps);
-
+
/* decrease all by one ... */
for (i = 0; i < accel_info.total_steps; i++) {
table_data[i]--;
}
-
+
DBG (1, "send_acceleration_table: sending table %d\n", table);
-
+
debug_print_hex_raw (5, "send_acceleration_table: final:\n",
table_data, accel_info.total_steps);
-
+
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd),
(char*) table_data, accel_info.total_steps,
0, 0);
@@ -5537,13 +5536,13 @@ send_acceleration_table (Avision_Scanner* s)
DBG (3, "send_acceleration_table: send_data failed (%s)\n",
sane_strstatus (status));
}
-
+
free (table_data); table_data = 0;
-
+
table++;
} while (table < accel_info.table_count);
-
-
+
+
return status;
}
@@ -5555,17 +5554,17 @@ set_window (Avision_Scanner* s)
int base_dpi_abs, base_dpi_rel;
int transferlen;
int paralen;
-
+
int bytes_per_line;
int line_count;
-
+
struct {
struct command_set_window cmd;
struct command_set_window_window window;
} cmd;
-
+
DBG (1, "set_window:\n");
-
+
/* plain old scanners, the C3 ASIC HP 53xx and the C6 ASIC HP 74xx
and up do use 1200 as base - only the C5 differs */
switch (dev->inquiry_asic_type) {
@@ -5582,64 +5581,64 @@ set_window (Avision_Scanner* s)
base_dpi_abs = 1200;
base_dpi_rel = 1200;
}
-
+
DBG (2, "set_window: base_dpi_abs: %d, base_dpi_rel: %d\n", base_dpi_abs, base_dpi_rel);
-
+
/* wipe out anything */
memset (&cmd, 0, sizeof (cmd) );
cmd.window.descriptor.winid = AV_WINID; /* normally defined to be zero */
-
+
/* optional parameter length to use */
paralen = sizeof (cmd.window.avision) - sizeof (cmd.window.avision.type);
-
+
DBG (2, "set_window: base paralen: %d\n", paralen);
-
+
if (dev->hw->feature_type & AV_FUJITSU)
paralen += sizeof (cmd.window.avision.type.fujitsu);
else if (!dev->inquiry_new_protocol)
paralen += sizeof (cmd.window.avision.type.old);
else
paralen += sizeof (cmd.window.avision.type.normal);
-
+
DBG (2, "set_window: final paralen: %d\n", paralen);
-
+
transferlen = sizeof (cmd.window)
- sizeof (cmd.window.avision) + paralen;
-
+
DBG (2, "set_window: transferlen: %d\n", transferlen);
-
+
/* command setup */
cmd.cmd.opc = AVISION_SCSI_SET_WINDOW;
set_triple (cmd.cmd.transferlen, transferlen);
set_double (cmd.window.header.desclen,
sizeof (cmd.window.descriptor) + paralen);
-
+
/* resolution parameters */
set_double (cmd.window.descriptor.xres, s->avdimen.hw_xres);
set_double (cmd.window.descriptor.yres, s->avdimen.hw_yres);
-
+
/* upper left corner x/y as well as width/length in inch * base_dpi
- avdimen are world pixels */
set_quad (cmd.window.descriptor.ulx, s->avdimen.tlx * base_dpi_abs / s->avdimen.hw_xres);
set_quad (cmd.window.descriptor.uly, s->avdimen.tly * base_dpi_abs / s->avdimen.hw_yres);
-
+
set_quad (cmd.window.descriptor.width,
s->avdimen.hw_pixels_per_line * base_dpi_rel / s->avdimen.hw_xres + 1);
line_count = s->avdimen.hw_lines + 2 * s->avdimen.line_difference + s->avdimen.rear_offset;
set_quad (cmd.window.descriptor.length,
line_count * base_dpi_rel / s->avdimen.hw_yres + 1);
-
+
/* interlaced duplex scans are twice as long */
if (s->avdimen.interlaced_duplex && dev->scanner_type != AV_FILM) {
DBG (2, "set_window: interlaced duplex scan, doubled line count\n");
line_count *= 2;
}
-
+
bytes_per_line = s->avdimen.hw_bytes_per_line;
-
+
set_double (cmd.window.avision.line_width, bytes_per_line);
set_double (cmd.window.avision.line_count, line_count);
-
+
/* 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");
@@ -5648,16 +5647,16 @@ set_window (Avision_Scanner* s)
cmd.window.avision.type.normal.line_count_msb =
line_count >> 16;
}
-
+
if (dev->inquiry_background_raster)
cmd.window.avision.type.normal.background_lines = s->val[OPT_BACKGROUND].w;
-
+
/* scanner should use our line-width and count */
- SET_BIT (cmd.window.avision.bitset1, 6);
-
+ SET_BIT (cmd.window.avision.bitset1, 6);
+
/* set speed */
cmd.window.avision.bitset1 |= s->val[OPT_SPEED].w & 0x07; /* only 3 bit */
-
+
/* ADF scan? */
DBG (3, "set_window: source mode %d source mode dim %d\n",
s->source_mode, s->source_mode_dim);
@@ -5687,43 +5686,43 @@ set_window (Avision_Scanner* s)
SET_BIT(cmd.window.avision.type.normal.bitset3, 2); /* MIRR 0x04 */
}
}
-
+
if (s->val[OPT_PAPERLEN].w != SANE_FALSE) {
set_double (cmd.window.descriptor.paper_length, (int)((double)30.0*1200));
}
if ( !(dev->hw->feature_type & AV_FUJITSU) )
- {
+ {
/* quality scan option switch */
if (s->val[OPT_QSCAN].w == SANE_TRUE) {
SET_BIT (cmd.window.avision.type.normal.bitset2, 4);
}
-
+
/* quality calibration option switch (inverted! if set == speed) */
if (s->val[OPT_QCALIB].w == SANE_FALSE) {
SET_BIT (cmd.window.avision.type.normal.bitset2, 3);
}
-
+
/* transparency option switch */
if (s->source_mode_dim == AV_TRANSPARENT_DIM) {
SET_BIT (cmd.window.avision.type.normal.bitset2, 7);
}
-
+
if (dev->scanner_type == AV_FILM) {
/* TODO: wire to IR exposure option? */
cmd.window.avision.type.normal.ir_exposure_time = 100;
set_double (cmd.window.avision.type.normal.r_exposure_time, s->val[OPT_EXPOSURE].w);
set_double (cmd.window.avision.type.normal.g_exposure_time, s->val[OPT_EXPOSURE].w);
set_double (cmd.window.avision.type.normal.b_exposure_time, s->val[OPT_EXPOSURE].w);
-
+
if (s->val[OPT_IR].w)
cmd.window.avision.type.normal.bitset3 |= (1 << 0);
-
+
if (s->val[OPT_MULTISAMPLE].w)
cmd.window.avision.type.normal.bitset3 |= (1 << 1);
}
}
-
+
/* fixed values */
cmd.window.descriptor.padding_and_bitset = 3;
cmd.window.descriptor.vendor_specific = 0xFF;
@@ -5732,7 +5731,7 @@ set_window (Avision_Scanner* s)
/* This is normally unsupported by Avision scanners, and we do this
via the gamma table - which works for all devices ... */
cmd.window.descriptor.threshold = 128;
- cmd.window.descriptor.brightness = 128;
+ cmd.window.descriptor.brightness = 128;
cmd.window.descriptor.contrast = 128;
cmd.window.avision.highlight = 0xFF;
cmd.window.avision.shadow = 0x00;
@@ -5744,17 +5743,17 @@ set_window (Avision_Scanner* s)
cmd.window.descriptor.bpc = 1;
cmd.window.descriptor.image_comp = 0;
break;
-
+
case AV_DITHERED:
cmd.window.descriptor.bpc = 1;
cmd.window.descriptor.image_comp = 1;
break;
-
+
case AV_GRAYSCALE:
cmd.window.descriptor.bpc = 8;
cmd.window.descriptor.image_comp = 2;
break;
-
+
case AV_GRAYSCALE12:
cmd.window.descriptor.bpc = 12;
cmd.window.descriptor.image_comp = 2;
@@ -5764,7 +5763,7 @@ set_window (Avision_Scanner* s)
cmd.window.descriptor.bpc = 16;
cmd.window.descriptor.image_comp = 2;
break;
-
+
case AV_TRUECOLOR:
cmd.window.descriptor.bpc = 8;
cmd.window.descriptor.image_comp = 5;
@@ -5779,7 +5778,7 @@ set_window (Avision_Scanner* s)
cmd.window.descriptor.bpc = 16;
cmd.window.descriptor.image_comp = 5;
break;
-
+
default:
DBG (1, "Invalid mode. %d\n", s->c_mode);
return SANE_STATUS_INVAL;
@@ -5796,13 +5795,13 @@ set_window (Avision_Scanner* s)
else
cmd.window.avision.bitset1 |= AVISION_FILTER_NONE;
}
-
+
debug_print_window_descriptor (5, "set_window", &(cmd.window));
-
+
DBG (3, "set_window: sending command. Bytes: %d\n", transferlen);
status = avision_cmd (&s->av_con, &cmd, sizeof (cmd.cmd),
&(cmd.window), transferlen, 0, 0);
-
+
return status;
}
@@ -5813,13 +5812,13 @@ get_background_raster (Avision_Scanner* s)
Avision_Device* dev = s->hw;
SANE_Status status;
-
+
struct command_read rcmd;
size_t size;
int bytes_per_line, i;
const int bpp = color_mode_is_color (s->c_mode) ? 3 : 1;
const int lines = s->val[OPT_BACKGROUND].w * (s->avdimen.interlaced_duplex ? 2 : 1);
-
+
uint8_t* background = NULL;
DBG (1, "get_background_raster:\n");
@@ -5828,20 +5827,20 @@ get_background_raster (Avision_Scanner* s)
DBG (1, "get_background_raster: no background requested\n");
return SANE_STATUS_GOOD;
}
-
+
/* full width, always :-(, duplex *2 for front and rear */
bytes_per_line = dev->inquiry_background_raster_pixel *
s->avdimen.hw_xres / dev->inquiry_optical_res;
bytes_per_line *= bpp;
-
+
DBG (3, "get_background_raster: native raster pixels: %d, raster bytes_per_line: %d\n",
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;
DBG (3, "get_background_raster: buffer size: %ld\n", (long)size);
-
+
background = s->background_raster = realloc (s->background_raster, size);
if (!background)
return SANE_STATUS_NO_MEM;
@@ -5850,13 +5849,13 @@ get_background_raster (Avision_Scanner* s)
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0x9b; /* get background raster */
set_double (rcmd.datatypequal, s->hw->data_dq);
-
+
/* Ok, well - this part is very messy. The AV122 and DM152 appear to
contain differently buggy ASICs. The only combination I found to
at least get a correct front raster out of them is to read it
line by line and then every second line appears to be valid front
data, ... */
-
+
/* read the raster data */
for (i = 0; i < lines;)
{
@@ -5864,7 +5863,7 @@ get_background_raster (Avision_Scanner* s)
/* read stripe by stripe, or all in one chunk */
size_t this_read, read_size;
int this_lines;
-
+
if (dev->hw->feature_type & AV_2ND_LINE_INTERLACED) {
if (dev->hw->feature_type & AV_BACKGROUND_QUIRK)
this_lines = 1;
@@ -5875,12 +5874,12 @@ get_background_raster (Avision_Scanner* s)
this_lines = s->val[OPT_BACKGROUND].w;
}
this_read = bytes_per_line * this_lines;
-
+
DBG (3, "get_background_raster: line: %d, lines: %d, %lu bytes\n",
i, this_lines, (u_long) this_read);
set_triple (rcmd.transferlen, this_read);
-
+
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) {
@@ -5888,29 +5887,29 @@ get_background_raster (Avision_Scanner* s)
sane_strstatus (status) );
return status;
}
-
+
i += this_lines;
}
-
+
/* dump raw result while debugging */
if (debug)
{
FILE* f = NULL;
f = fopen ("background-raw.pnm", "w");
-
+
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);
fclose (f);
}
/* line-pack - move to unified processing flow, later */
if (dev->inquiry_needs_line_pack)
- {
+ {
/* TODO: add 16bit per sample code? */
int l, p;
-
+
uint8_t* tmp_data = malloc (bytes_per_line);
for (l = 0; l < lines; ++l)
{
@@ -5918,47 +5917,47 @@ get_background_raster (Avision_Scanner* s)
uint8_t* r_ptr = background + (bytes_per_line * l);
uint8_t* g_ptr = r_ptr + bytes_per_line / bpp;
uint8_t* b_ptr = g_ptr + bytes_per_line / bpp;
-
+
for (p = 0; p < bytes_per_line;) {
out_data [p++] = *(r_ptr++);
out_data [p++] = *(g_ptr++);
out_data [p++] = *(b_ptr++);
}
-
+
memcpy (background + (bytes_per_line * l), tmp_data, bytes_per_line);
}
-
+
free (tmp_data);
} /* end line pack */
-
+
/* deinterlace? */
if (s->avdimen.interlaced_duplex && dev->hw->feature_type & AV_2ND_LINE_INTERLACED)
{
uint8_t* deinterlaced = malloc (size * 2);
if (!deinterlaced)
return SANE_STATUS_NO_MEM;
-
+
for (i = 0; i < lines; ++i)
{
int dst_i = i / 2 + (i % 2) * (lines / 2);
uint8_t* dst_raster; /* just no C99 in SANE :-( */
uint8_t* src_raster;
-
+
/* for the quirky devices and some resolutions the interlacing differs */
if (dev->hw->feature_type & AV_BACKGROUND_QUIRK && s->avdimen.hw_xres >= 150)
dst_i = i / 2 + ((i+1) % 2) * (lines / 2);
-
+
dst_raster = deinterlaced + bytes_per_line * dst_i;
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);
}
-
+
free (background);
background = s->background_raster = deinterlaced;
}
-
+
/* dump raw result while debugging */
for (i = 0; debug && i < (s->avdimen.interlaced_duplex ? 2 : 1); ++i)
{
@@ -5971,14 +5970,14 @@ get_background_raster (Avision_Scanner* s)
f = fopen ("background-rear.pnm", "w");
raster += bytes_per_line * s->val[OPT_BACKGROUND].w;
}
-
+
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);
fclose (f);
}
-
+
/* crop from full-width scanlines to scan window */
{
uint8_t *dst_ptr, *src_ptr;
@@ -5991,19 +5990,19 @@ get_background_raster (Avision_Scanner* s)
src_ptr += bytes_per_line;
}
}
-
+
/* soft-scale - move to unified processing flow, later */
if (s->avdimen.hw_xres != s->avdimen.xres)
{
const uint8_t* out_data = background;
uint8_t* dst = background;
-
+
int l;
for (l = 0; l < lines; ++l)
{
const int hwbpl = s->avdimen.hw_bytes_per_line;
const int sy = l;
-
+
int x;
for (x = 0; x < s->params.pixels_per_line; ++x)
{
@@ -6011,24 +6010,24 @@ get_background_raster (Avision_Scanner* s)
const int sx = (int)floor(bx);
const int xdist = (int) ((bx - sx) * 256);
const int sxx = sx + 1;
-
+
switch (bpp) {
case 1:
{
- uint8_t v =
+ uint8_t v =
( out_data [sy*hwbpl + sx ] * (256-xdist) +
out_data [sy*hwbpl + sxx] * xdist
) / (256);
*dst++ = v;
}
break;
-
+
case 3:
{
int c;
for (c = 0; c < 3; ++c)
{
- uint8_t v =
+ uint8_t v =
( out_data [sy*hwbpl + sx*3 + c] * (256-xdist) +
out_data [sy*hwbpl + sxx*3 + c] * xdist
) / (256);
@@ -6040,7 +6039,7 @@ get_background_raster (Avision_Scanner* s)
}
}
}
-
+
/* dump final result while debugging */
if (debug) {
for (i = 0; i < (s->avdimen.interlaced_duplex ? 2 : 1); ++i)
@@ -6054,15 +6053,15 @@ get_background_raster (Avision_Scanner* s)
f = fopen ("background-final-rear.pnm", "w");
raster += s->params.bytes_per_line * s->val[OPT_BACKGROUND].w;
}
-
+
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);
fclose (f);
}
}
-
+
return SANE_STATUS_GOOD;
}
@@ -6072,9 +6071,9 @@ reserve_unit (Avision_Scanner* s)
char cmd[] =
{AVISION_SCSI_RESERVE_UNIT, 0, 0, 0, 0, 0};
SANE_Status status;
-
+
DBG (1, "reserve_unit:\n");
-
+
status = avision_cmd (&s->av_con, cmd, sizeof (cmd), 0, 0, 0, 0);
return status;
}
@@ -6085,7 +6084,7 @@ release_unit (Avision_Scanner* s, int type)
char cmd[] =
{AVISION_SCSI_RELEASE_UNIT, 0, 0, 0, 0, 0};
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 */
status = avision_cmd (&s->av_con, cmd, sizeof (cmd), 0, 0, 0, 0);
@@ -6100,17 +6099,17 @@ media_check (Avision_Scanner* s)
SANE_Status status;
uint8_t result[1]; /* 4 */
size_t size = sizeof(result);
-
+
status = avision_cmd (&s->av_con, cmd, sizeof (cmd),
0, 0, result, &size);
-
+
debug_print_raw (5, "media_check: result\n", result, size);
-
+
if (status == SANE_STATUS_GOOD) {
if (!(result[0] & 0x1))
status = SANE_STATUS_NO_DOCS;
}
-
+
return status;
}
@@ -6120,7 +6119,7 @@ flush_media (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
SANE_Status status;
-
+
if (s->source_mode_dim == AV_ADF_DIM && dev->inquiry_batch_scan)
{
DBG (1, "flush_media: flushing pages out of batch scanner\n");
@@ -6133,7 +6132,7 @@ flush_media (Avision_Scanner* s)
DBG (1, "flush_media: release status: %d\n", status2);
}
} while (status == SANE_STATUS_GOOD);
- }
+ }
return SANE_STATUS_GOOD;
}
#endif /* 0 - unused */
@@ -6142,15 +6141,15 @@ static SANE_Status
object_position (Avision_Scanner* s, uint8_t position)
{
SANE_Status status;
-
+
uint8_t cmd [10];
-
+
memset (cmd, 0, sizeof (cmd));
cmd[0] = AVISION_SCSI_OBJECT_POSITION;
cmd[1] = position;
-
+
DBG (1, "object_position: %d\n", position);
-
+
status = avision_cmd (&s->av_con, cmd, sizeof(cmd), 0, 0, 0, 0);
return status;
}
@@ -6159,11 +6158,11 @@ static SANE_Status
start_scan (Avision_Scanner* s)
{
struct command_scan cmd;
-
+
size_t size = sizeof (cmd);
-
+
DBG (3, "start_scan:\n");
-
+
memset (&cmd, 0, sizeof (cmd));
cmd.opc = AVISION_SCSI_SCAN;
cmd.transferlen = 1;
@@ -6176,7 +6175,7 @@ start_scan (Avision_Scanner* s)
if (s->val[OPT_QSCAN].w == SANE_TRUE) {
SET_BIT(cmd.bitset1,7);
}
-
+
DBG (3, "start_scan: sending command. Bytes: %lu\n", (u_long) size);
return avision_cmd (&s->av_con, &cmd, size, 0, 0, 0, 0);
}
@@ -6185,12 +6184,12 @@ static SANE_Status
do_eof (Avision_Scanner *s)
{
int exit_status;
-
+
DBG (3, "do_eof:\n");
/* we do not scan anymore */
s->prepared = s->scanning = SANE_FALSE;
-
+
/* we can now mark the rear data as valid */
if (s->avdimen.interlaced_duplex ||
(s->hw->hw->feature_type & AV_ADF_FLIPPING_DUPLEX && s->source_mode == AV_ADF_DUPLEX)) {
@@ -6199,16 +6198,16 @@ do_eof (Avision_Scanner *s)
DBG (3, "do_eof: duplex rear data valid: %x\n",
s->duplex_rear_valid);
}
-
+
if (s->read_fds >= 0) {
close (s->read_fds);
s->read_fds = -1;
}
-
+
/* join our processes - without a wait() you will produce zombies
(defunct children) */
sanei_thread_waitpid (s->reader_pid, &exit_status);
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
DBG (3, "do_eof: returning %d\n", exit_status);
return (SANE_Status)exit_status;
@@ -6218,19 +6217,19 @@ static SANE_Status
do_cancel (Avision_Scanner* s)
{
DBG (3, "do_cancel:\n");
-
+
s->prepared = s->scanning = SANE_FALSE;
s->duplex_rear_valid = SANE_FALSE;
s->page = 0;
s->cancelled = 1;
-
+
if (sanei_thread_is_valid (s->reader_pid)) {
int exit_status;
-
+
/* ensure child knows it's time to stop: */
sanei_thread_kill (s->reader_pid);
sanei_thread_waitpid (s->reader_pid, &exit_status);
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
}
return SANE_STATUS_CANCELLED;
@@ -6243,16 +6242,16 @@ read_data (Avision_Scanner* s, SANE_Byte* buf, size_t* count)
SANE_Status status;
DBG (9, "read_data: %lu\n", (u_long) *count);
-
+
memset (&rcmd, 0, sizeof (rcmd));
-
+
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = 0x00; /* read image data */
set_double (rcmd.datatypequal, s->hw->data_dq);
set_triple (rcmd.transferlen, *count);
-
+
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, buf, count);
-
+
return status;
}
@@ -6261,9 +6260,9 @@ init_options (Avision_Scanner* s)
{
Avision_Device* dev = s->hw;
int i;
-
+
DBG (3, "init_options:\n");
-
+
memset (s->opt, 0, sizeof (s->opt));
memset (s->val, 0, sizeof (s->val));
@@ -6271,9 +6270,9 @@ init_options (Avision_Scanner* s)
s->opt[i].size = sizeof (SANE_Word);
s->opt[i].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
}
-
+
/* Init the SANE option from the scanner inquiry data */
-
+
switch (dev->inquiry_asic_type) {
case AV_ASIC_C2:
dev->dpi_range.min = 100;
@@ -6294,11 +6293,11 @@ init_options (Avision_Scanner* s)
dev->dpi_range.quant = 1; /* any, including 72, 144, etc. */
dev->dpi_range.max = dev->inquiry_max_res;
-
+
dev->speed_range.min = (SANE_Int)0;
dev->speed_range.max = (SANE_Int)4;
dev->speed_range.quant = (SANE_Int)1;
-
+
s->opt[OPT_NUM_OPTS].name = "";
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].desc = "";
@@ -6306,7 +6305,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;
s->opt[OPT_NUM_OPTS].size = sizeof(SANE_TYPE_INT);
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;
-
+
/* "Mode" group: */
s->opt[OPT_MODE_GROUP].title = SANE_TITLE_SCAN_MODE;
s->opt[OPT_MODE_GROUP].desc = ""; /* for groups only title and type are valid */
@@ -6314,7 +6313,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MODE_GROUP].cap = 0;
s->opt[OPT_MODE_GROUP].size = 0;
s->opt[OPT_MODE_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
/* color mode */
s->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE;
s->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE;
@@ -6325,7 +6324,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MODE].constraint.string_list = dev->color_list;
s->val[OPT_MODE].s = strdup (dev->color_list[dev->color_list_default]);
s->c_mode = match_color_mode (dev, s->val[OPT_MODE].s);
-
+
/* source mode */
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
s->opt[OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
@@ -6366,7 +6365,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_SPEED].desc = SANE_DESC_SCAN_SPEED;
s->opt[OPT_SPEED].type = SANE_TYPE_INT;
s->opt[OPT_SPEED].constraint_type = SANE_CONSTRAINT_RANGE;
- s->opt[OPT_SPEED].constraint.range = &dev->speed_range;
+ s->opt[OPT_SPEED].constraint.range = &dev->speed_range;
s->val[OPT_SPEED].w = 0;
if (dev->scanner_type == AV_SHEETFEED)
s->opt[OPT_SPEED].cap |= SANE_CAP_INACTIVE;
@@ -6418,7 +6417,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_Y].constraint.range = &dev->y_range;
s->val[OPT_BR_Y].w = dev->y_range.max;
-
+
/* overscan top */
s->opt[OPT_OVERSCAN_TOP].name = "overscan-top";
s->opt[OPT_OVERSCAN_TOP].title = "Overscan top";
@@ -6428,7 +6427,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_OVERSCAN_TOP].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_OVERSCAN_TOP].constraint.range = &overscan_range;
s->val[OPT_OVERSCAN_TOP].w = SANE_FIX(0);
-
+
/* overscan bottom */
s->opt[OPT_OVERSCAN_BOTTOM].name = "overscan-bottom";
s->opt[OPT_OVERSCAN_BOTTOM].title = "Overscan bottom";
@@ -6438,12 +6437,12 @@ init_options (Avision_Scanner* s)
s->opt[OPT_OVERSCAN_BOTTOM].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_OVERSCAN_BOTTOM].constraint.range = &overscan_range;
s->val[OPT_OVERSCAN_BOTTOM].w = SANE_FIX(0);
-
+
if (!dev->inquiry_tune_scan_length)
s->opt[OPT_OVERSCAN_TOP].cap |= SANE_CAP_INACTIVE;
if (!dev->inquiry_tune_scan_length)
s->opt[OPT_OVERSCAN_BOTTOM].cap |= SANE_CAP_INACTIVE;
-
+
/* background raster */
s->opt[OPT_BACKGROUND].name = "background-lines";
s->opt[OPT_BACKGROUND].title = "Background raster lines";
@@ -6453,11 +6452,11 @@ init_options (Avision_Scanner* s)
s->opt[OPT_BACKGROUND].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BACKGROUND].constraint.range = &background_range;
s->val[OPT_BACKGROUND].w = 0;
-
+
if (!dev->inquiry_background_raster) {
s->opt[OPT_BACKGROUND].cap |= SANE_CAP_INACTIVE;
}
-
+
/* "Enhancement" group: */
s->opt[OPT_ENHANCEMENT_GROUP].title = "Enhancement";
s->opt[OPT_ENHANCEMENT_GROUP].desc = ""; /* for groups only title and type are valid */
@@ -6553,7 +6552,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_GAMMA_VECTOR_B].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_GAMMA_VECTOR_B].constraint.range = &u8_range;
s->val[OPT_GAMMA_VECTOR_B].wa = &s->gamma_table[3][0];
-
+
if (!disable_gamma_table)
{
if (color_mode_is_color (s->c_mode)) {
@@ -6565,7 +6564,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_GAMMA_VECTOR].cap &= ~SANE_CAP_INACTIVE;
}
}
-
+
/* exposure */
s->opt[OPT_EXPOSURE].name = "exposure";
s->opt[OPT_EXPOSURE].title = "Exposure";
@@ -6575,7 +6574,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_EXPOSURE].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_EXPOSURE].constraint.range = &exposure_range;
s->val[OPT_EXPOSURE].w = 100;
-
+
if (!dev->inquiry_exposure_control) {
s->opt[OPT_EXPOSURE].cap |= SANE_CAP_INACTIVE;
}
@@ -6587,7 +6586,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MULTISAMPLE].type = SANE_TYPE_BOOL;
s->opt[OPT_MULTISAMPLE].unit = SANE_UNIT_NONE;
s->val[OPT_MULTISAMPLE].w = SANE_FALSE;
-
+
/* TODO: No idea how to detect, assume exposure control devices are
new enough to support this, for now. -ReneR */
if (!dev->inquiry_exposure_control) {
@@ -6601,13 +6600,13 @@ init_options (Avision_Scanner* s)
s->opt[OPT_IR].type = SANE_TYPE_BOOL;
s->opt[OPT_IR].unit = SANE_UNIT_NONE;
s->val[OPT_IR].w = SANE_FALSE;
-
+
/* TODO: No idea how to detect, assume exposure control devices are
new enough to support this, for now. -ReneR */
if (!dev->inquiry_exposure_control) {
s->opt[OPT_IR].cap |= SANE_CAP_INACTIVE;
}
-
+
/* "MISC" group: */
s->opt[OPT_MISC_GROUP].title = SANE_TITLE_SCAN_MODE;
s->opt[OPT_MISC_GROUP].desc = ""; /* for groups only title and type are valid */
@@ -6615,7 +6614,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MISC_GROUP].cap = 0;
s->opt[OPT_MISC_GROUP].size = 0;
s->opt[OPT_MISC_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
/* film holder control */
if (dev->scanner_type != AV_FILM)
s->opt[OPT_FRAME].cap |= SANE_CAP_INACTIVE;
@@ -6649,7 +6648,7 @@ init_options (Avision_Scanner* s)
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[0] = 0;
-
+
/* NVRAM */
s->opt[OPT_NVRAM].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
if (!dev->inquiry_nvram_read)
@@ -6663,7 +6662,7 @@ init_options (Avision_Scanner* s)
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[0] = 0;
-
+
/* paper_length */
s->opt[OPT_PAPERLEN].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
if (!dev->inquiry_paper_length)
@@ -6676,7 +6675,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_PAPERLEN].size = sizeof(SANE_Word);
s->opt[OPT_PAPERLEN].constraint_type = SANE_CONSTRAINT_NONE;
s->val[OPT_PAPERLEN].w = SANE_FALSE;
-
+
/* ADF page flipping */
s->opt[OPT_ADF_FLIP].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_AUTOMATIC | SANE_CAP_ADVANCED;
if (!(s->hw->hw->feature_type & AV_ADF_FLIPPING_DUPLEX && s->source_mode == AV_ADF_DUPLEX))
@@ -6711,24 +6710,24 @@ reader_process (void *data)
int fd = s->write_fds;
Avision_Device* dev = s->hw;
-
+
SANE_Status status;
SANE_Status exit_status = SANE_STATUS_GOOD;
sigset_t sigterm_set;
sigset_t ignore_set;
struct SIGACTION act;
-
+
FILE* fp;
FILE* rear_fp = 0; /* used to store the deinterlaced rear data */
FILE* raw_fp = 0; /* used to write the RAW image data for debugging */
-
+
/* the complex params */
unsigned int lines_per_stripe;
unsigned int lines_per_output;
unsigned int max_bytes_per_read;
-
+
SANE_Bool gray_mode;
-
+
/* the simple params for the data reader */
int hw_line = 0;
int line = 0;
@@ -6736,17 +6735,17 @@ reader_process (void *data)
unsigned int stripe_size;
unsigned int stripe_fill;
unsigned int out_size;
-
+
size_t total_size;
size_t processed_bytes;
-
+
enum {
NONE, /* do not de-interlace at all */
STRIPE, /* every 2nd stripe */
HALF, /* the 2nd half */
LINE /* every 2nd line */
} deinterlace = NONE;
-
+
/* the fat strip we currently puzzle together to perform software-colorpack
and more */
uint8_t* stripe_data;
@@ -6755,44 +6754,44 @@ reader_process (void *data)
/* interpolation output data, one line */
uint8_t* ip_history = 0;
uint8_t* ip_data = 0;
-
+
DBG (3, "reader_process:\n");
-
+
if (sanei_thread_is_forked())
close (s->read_fds);
-
+
sigfillset (&ignore_set);
sigdelset (&ignore_set, SIGTERM);
#if defined (__APPLE__) && defined (__MACH__)
sigdelset (&ignore_set, SIGUSR2);
#endif
sigprocmask (SIG_SETMASK, &ignore_set, 0);
-
+
memset (&act, 0, sizeof (act));
sigaction (SIGTERM, &act, 0);
-
+
sigemptyset (&sigterm_set);
sigaddset (&sigterm_set, SIGTERM);
-
+
gray_mode = color_mode_is_shaded (s->c_mode);
if (s->avdimen.interlaced_duplex) {
deinterlace = STRIPE;
-
+
if ( (dev->hw->feature_type & AV_NON_INTERLACED_DUPLEX_300) &&
(s->avdimen.hw_xres <= 300 && s->avdimen.hw_yres <= 300) )
deinterlace = HALF;
if (dev->hw->feature_type & AV_2ND_LINE_INTERLACED)
deinterlace = LINE;
-
+
if (dev->scanner_type == AV_FILM)
deinterlace = LINE;
}
-
+
fp = fdopen (fd, "w");
if (!fp)
return SANE_STATUS_NO_MEM;
-
+
/* start scan ? */
if ((deinterlace == NONE && !((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && s->duplex_rear_valid)) ||
(deinterlace != NONE && !s->duplex_rear_valid))
@@ -6806,7 +6805,7 @@ reader_process (void *data)
sane_strstatus (status));
return status;
}
-
+
if (dev->hw->feature_type & AV_NO_START_SCAN) {
DBG (1, "reader_process: start_scan skipped due to device-list!\n");
}
@@ -6818,7 +6817,7 @@ reader_process (void *data)
return status;
}
}
-
+
if (dev->hw->feature_type & AV_ACCEL_TABLE)
/* (s->hw->inquiry_asic_type == AV_ASIC_C6) */ {
status = send_acceleration_table (s);
@@ -6829,7 +6828,7 @@ reader_process (void *data)
}
}
}
-
+
/* setup file i/o for deinterlacing scans or if we are the back page with a flipping duplexer */
if (deinterlace != NONE ||
(dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX && s->source_mode == AV_ADF_DUPLEX && !(s->page % 2)))
@@ -6851,38 +6850,38 @@ reader_process (void *data)
}
}
}
-
+
/* it takes quite a few lines to saturate the (USB) bus */
lines_per_stripe = dev->read_stripe_size;
if (s->avdimen.line_difference)
lines_per_stripe += 2 * 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;
-
+
if (s->av_con.connection_type == AV_SCSI)
/* maybe better not /2 ... */
max_bytes_per_read = dev->scsi_buffer_size / 2;
- else
+ else
/* vast buffer size to saturate the bus */
max_bytes_per_read = 0x100000;
-
+
out_size = s->avdimen.hw_bytes_per_line * lines_per_output;
-
+
DBG (3, "dev->scsi_buffer_size / 2: %d\n",
dev->scsi_buffer_size / 2);
-
+
DBG (3, "bytes_per_line: %d, pixels_per_line: %d\n",
s->avdimen.hw_bytes_per_line, s->avdimen.hw_pixels_per_line);
-
+
DBG (3, "lines_per_stripe: %d, lines_per_output: %d\n",
lines_per_stripe, lines_per_output);
-
+
DBG (3, "max_bytes_per_read: %d, stripe_size: %d, out_size: %d\n",
max_bytes_per_read, stripe_size, out_size);
-
+
stripe_data = malloc (stripe_size);
-
+
/* for software scaling we need an additional interpolation line buffer */
if (s->avdimen.hw_xres != s->avdimen.xres ||
s->avdimen.hw_yres != s->avdimen.yres)
@@ -6890,13 +6889,13 @@ reader_process (void *data)
/* layout out_data so that the interpolation history is exactly in front */
ip_history = malloc (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);
}
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 +
@@ -6904,7 +6903,7 @@ reader_process (void *data)
if (deinterlace != NONE && !s->duplex_rear_valid)
total_size *= 2;
DBG (3, "reader_process: total_size: %lu\n", (u_long) total_size);
-
+
/* write a RAW PNM file for debugging -ReneR */
if (0 /* DEBUG */ &&
(deinterlace == NONE || (deinterlace != NONE && !s->duplex_rear_valid)) )
@@ -6913,36 +6912,36 @@ reader_process (void *data)
write_pnm_header (fp, s->c_mode, s->params.depth,
s->avdimen.hw_pixels_per_line, total_size / s->avdimen.hw_bytes_per_line);
}
-
+
processed_bytes = 0;
stripe_fill = 0;
-
+
/* First, dump background raster, bypassing all the other processing. */
if (dev->inquiry_background_raster && s->val[OPT_BACKGROUND].w)
{
uint8_t* background = s->background_raster;
if (s->duplex_rear_valid)
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);
}
-
+
/* Data read; loop until all data has been processed. Might exit
before all lines are transferred for ADF paper end. */
while (exit_status == SANE_STATUS_GOOD && processed_bytes < total_size)
{
unsigned int useful_bytes;
-
+
DBG (5, "reader_process: stripe filled: %d\n", stripe_fill);
-
+
/* fill the stripe buffer with real data */
while (!s->duplex_rear_valid &&
processed_bytes < total_size && stripe_fill < stripe_size &&
exit_status == SANE_STATUS_GOOD)
{
size_t this_read = stripe_size - stripe_fill;
-
+
/* Limit reads to max_bytes_per_read and global data
boundaries. Rounded to the next lower multiple of
byte_per_lines, otherwise some scanners freeze. */
@@ -6962,7 +6961,7 @@ reader_process (void *data)
sigprocmask (SIG_BLOCK, &sigterm_set, 0);
status = read_data (s, stripe_data + stripe_fill, &this_read);
sigprocmask (SIG_UNBLOCK, &sigterm_set, 0);
-
+
/* only EOF on the second stripe, as otherwise the rear page
is shorter */
if (status == SANE_STATUS_EOF && deinterlace == STRIPE) {
@@ -6977,59 +6976,59 @@ reader_process (void *data)
}
}
}
-
+
/* write RAW data to file for debugging */
if (raw_fp && this_read > 0)
fwrite (stripe_data + stripe_fill, this_read, 1, raw_fp);
-
+
if (status == SANE_STATUS_EOF || this_read == 0) {
DBG (1, "reader_process: read_data failed due to EOF\n");
exit_status = SANE_STATUS_EOF;
}
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "reader_process: read_data failed with status: %d\n",
status);
exit_status = status;
}
-
+
stripe_fill += this_read;
processed_bytes += this_read;
}
-
+
/* fill the stripe buffer with stored, virtual data */
if (s->duplex_rear_valid)
{
size_t this_read = stripe_size - stripe_fill;
size_t got;
-
+
/* limit reads to max_read and global data boundaries */
if (this_read > max_bytes_per_read)
this_read = max_bytes_per_read;
-
+
if (processed_bytes + this_read > total_size)
this_read = total_size - processed_bytes;
-
+
DBG (5, "reader_process: virtual processed_bytes: %lu, total_size: %lu\n",
(u_long) processed_bytes, (u_long) total_size);
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;
processed_bytes += got;
if (got != this_read)
exit_status = SANE_STATUS_EOF;
}
-
+
DBG (5, "reader_process: stripe filled: %d\n", stripe_fill);
-
+
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;
-
+
DBG (3, "reader_process: useful_bytes %i\n", useful_bytes);
-
+
/* Deinterlace, save the rear stripes. For some scanners (AV220)
that is every 2nd stripe, the 2nd half of the transferred
data ((AV83xx), or every 2nd line (AV122)). */
@@ -7078,12 +7077,12 @@ reader_process (void *data)
DBG (9, "reader_process: after page flip: useful_bytes: %d, stripe_fill: %d\n",
useful_bytes, stripe_fill);
} else {
-
+
/*
* Perform needed data conversions (packing, ...) and/or copy the
* image data.
*/
-
+
if (s->c_mode != AV_TRUECOLOR && s->c_mode != AV_TRUECOLOR16)
/* simple copy */
{
@@ -7098,11 +7097,11 @@ reader_process (void *data)
/* TODO: add 16bit per sample code? */
unsigned int i;
int c_offset = s->avdimen.line_difference * s->avdimen.hw_bytes_per_line;
-
+
uint8_t* r_ptr = stripe_data;
uint8_t* g_ptr = stripe_data + c_offset + 1;
uint8_t* b_ptr = stripe_data + 2 * c_offset + 2;
-
+
for (i = 0; i < useful_bytes;) {
out_data [i++] = *r_ptr; r_ptr += 3;
out_data [i++] = *g_ptr; g_ptr += 3;
@@ -7110,17 +7109,17 @@ reader_process (void *data)
}
} /* end color pack */
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;
-
+
for (l = 0; l < lines; ++l)
{
uint8_t* r_ptr = stripe_data + (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) {
out_data [i++] = *(r_ptr++);
out_data [i++] = *(g_ptr++);
@@ -7129,13 +7128,13 @@ reader_process (void *data)
}
} /* end line pack */
else /* else no packing was required -> simple copy */
- {
+ {
memcpy (out_data, stripe_data, useful_bytes);
}
} /* end if AV_TRUECOLOR* */
-
+
/* FURTHER POST-PROCESSING ON THE FINAL OUTPUT DATA */
-
+
/* maybe mirroring in ADF mode */
if (s->source_mode_dim == AV_ADF_DIM && dev->inquiry_adf_need_mirror)
{
@@ -7152,7 +7151,7 @@ reader_process (void *data)
{
uint8_t* begin_ptr = out_data + (l * s->avdimen.hw_bytes_per_line);
uint8_t* end_ptr = begin_ptr + s->avdimen.hw_bytes_per_line;
-
+
while (begin_ptr < end_ptr) {
uint8_t tmp;
tmp = *begin_ptr;
@@ -7164,7 +7163,7 @@ reader_process (void *data)
else /* non trivial mirroring */
{
/* Non-trivial Mirroring with element swapping */
-
+
int l;
int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
@@ -7172,25 +7171,25 @@ reader_process (void *data)
{
uint8_t* begin_ptr = out_data + (l * s->avdimen.hw_bytes_per_line);
uint8_t* end_ptr = begin_ptr + s->avdimen.hw_bytes_per_line - 3;
-
+
while (begin_ptr < end_ptr) {
uint8_t tmp;
-
+
/* R */
tmp = *begin_ptr;
*begin_ptr++ = *end_ptr;
*end_ptr++ = tmp;
-
+
/* G */
tmp = *begin_ptr;
*begin_ptr++ = *end_ptr;
*end_ptr++ = tmp;
-
+
/* B */
tmp = *begin_ptr;
*begin_ptr++ = *end_ptr;
*end_ptr = tmp;
-
+
end_ptr -= 5;
}
}
@@ -7202,13 +7201,13 @@ reader_process (void *data)
s->c_mode == AV_GRAYSCALE16 ||
s->c_mode == AV_TRUECOLOR12 ||
s->c_mode == AV_TRUECOLOR16) {
-
+
int l;
int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
uint8_t* dark_avg_data = s->dark_avg_data;
uint8_t* white_avg_data = s->white_avg_data;
-
+
uint8_t* begin_ptr = out_data;
uint8_t* end_ptr = begin_ptr + s->avdimen.hw_bytes_per_line;
uint8_t* line_ptr;
@@ -7216,16 +7215,16 @@ reader_process (void *data)
double scale = 1.0;
if (s->c_mode == AV_GRAYSCALE12 || s->c_mode == AV_TRUECOLOR12)
scale = (double) (1<<4);
-
+
while (begin_ptr < end_ptr) {
uint16_t dark_avg = 0;
uint16_t white_avg = WHITE_MAP_RANGE;
-
+
if (dark_avg_data)
dark_avg = get_double_le (dark_avg_data);
if (white_avg_data)
white_avg = get_double_le (white_avg_data);
-
+
line_ptr = begin_ptr;
for (l = 0; l < lines; ++ l)
{
@@ -7233,16 +7232,16 @@ reader_process (void *data)
uint16_t v2;
if (0)
v = (v - dark_avg) * white_avg / WHITE_MAP_RANGE;
-
+
v2 = v < 0xFFFF ? 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 += s->avdimen.hw_bytes_per_line;
}
-
+
begin_ptr += 2;
if (dark_avg_data)
dark_avg_data += 2;
@@ -7250,9 +7249,9 @@ reader_process (void *data)
white_avg_data += 2;
}
}
-
+
/* SOFTWARE SCALING WITH INTERPOLATION (IF NECESSARY) */
-
+
if (s->avdimen.hw_xres == s->avdimen.xres &&
s->avdimen.hw_yres == s->avdimen.yres) /* No scaling */
{
@@ -7280,22 +7279,22 @@ reader_process (void *data)
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;
-
+
/* on-the-fly bi-linear interpolation */
while (1) {
double by = (-1.0 + s->avdimen.hw_lines) * line / (s->avdimen.hw_lines * s->avdimen.xres / s->avdimen.hw_xres + s->val[OPT_BACKGROUND].w);
int sy = (int)floor(by);
int ydist = (int) ((by - sy) * 256);
int syy = sy + 1;
-
+
const int hwbpl = s->avdimen.hw_bytes_per_line;
-
+
uint8_t* dst = ip_data;
uint16_t* dst16 = (uint16_t*) ip_data;
unsigned int v; /* accumulator */
-
+
/* Break out if we do not have the hw source line - yet,
or when we are past the end of wanted data (e.g. on the
front page due to rear_offset). Also take the read_offset
@@ -7312,35 +7311,35 @@ reader_process (void *data)
syy += s->avdimen.rear_offset;
}
}
-
+
if (sy >= hw_line_end || syy >= hw_line_end) {
DBG (3, "reader_process: source line %d-%d not yet avail\n",
sy, syy);
break;
}
-
+
/* convert to offset in current stripe */
sy -= hw_line;
syy -= hw_line;
-
+
if (sy < -1) {
DBG (1, "reader_process: need more history: %d???\n", sy);
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);
const int xdist = (int) ((bx - sx) * 256);
const int sxx = sx + 1;
-
+
if (x == 0 || x == s->params.pixels_per_line - 1)
DBG (8, "reader_process: x: %d <- from: %d-%d\n",
x, sx, sxx);
-
+
switch (s->c_mode) {
case AV_THRESHOLDED:
case AV_DITHERED:
@@ -7348,13 +7347,13 @@ 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 =
( ((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);
-
+
/* Shift and or the result together and eventually
jump to the next byte. */
*dst = (*dst << 1) | ((v>>7)&1);
@@ -7362,10 +7361,10 @@ reader_process (void *data)
++dst;
}
break;
-
+
case AV_GRAYSCALE:
{
- v =
+ v =
( 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 +
@@ -7374,12 +7373,12 @@ reader_process (void *data)
*dst++ = v;
}
break;
-
+
case AV_GRAYSCALE12:
case AV_GRAYSCALE16:
{
- /* TODO: test! */
- v =
+ /* TODO: test! */
+ v =
( 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 +
@@ -7388,13 +7387,13 @@ reader_process (void *data)
*dst16++ = v;
}
break;
-
+
case AV_TRUECOLOR:
{
int c;
for (c = 0; c < 3; ++c)
{
- v =
+ v =
( 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 +
@@ -7404,7 +7403,7 @@ reader_process (void *data)
}
}
break;
-
+
case AV_TRUECOLOR12:
case AV_TRUECOLOR16:
{
@@ -7412,7 +7411,7 @@ reader_process (void *data)
int c;
for (c = 0; c < 3; ++c)
{
- v =
+ v =
( 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 +
@@ -7422,7 +7421,7 @@ reader_process (void *data)
}
}
break;
-
+
case AV_COLOR_MODE_LAST:
; /* silence compiler warning */
}
@@ -7436,29 +7435,29 @@ reader_process (void *data)
s->avdimen.hw_bytes_per_line);
}
}
-
+
/* save image date in stripe buffer for next next stripe */
stripe_fill -= useful_bytes;
if (stripe_fill > 0)
memcpy (stripe_data, stripe_data + useful_bytes, stripe_fill);
-
+
hw_line += useful_bytes / s->avdimen.hw_bytes_per_line;
-
+
DBG (3, "reader_process: end of iteration\n");
} /* end while not all lines or inf. mode */
-
+
DBG (3, "reader_process: i/o loop finished\n");
if (exit_status == SANE_STATUS_GOOD)
exit_status = SANE_STATUS_EOF;
-
+
if (raw_fp)
fclose (raw_fp);
-
+
/* 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);
-
+
DBG (6, "reader_process: padding line %d - %d\n",
line, s->params.lines);
while (line < s->params.lines) {
@@ -7466,7 +7465,7 @@ reader_process (void *data)
++line;
}
}
-
+
/* Eject film holder and/or release_unit - but only for
non-duplex-rear / non-virtual scans. */
if ((deinterlace != NONE && s->duplex_rear_valid) ||
@@ -7485,14 +7484,14 @@ reader_process (void *data)
status = release_unit (s, 0);
if (status != SANE_STATUS_GOOD)
DBG (1, "reader_process: release_unit failed\n");
-
+
if (dev->inquiry_new_protocol && dev->scanner_type == AV_FILM) {
status = object_position (s, AVISION_SCSI_OP_GO_HOME);
if (status != SANE_STATUS_GOOD)
DBG (1, "reader_process: object position go-home failed!\n");
}
}
-
+
if ((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && s->page % 2) {
/* front page of flipping duplex */
if (exit_status == SANE_STATUS_EOF) {
@@ -7507,10 +7506,15 @@ reader_process (void *data)
return status;
}
}
- /* we can set anything here without fear because the process will terminate soon and take our changes with it */
+ /* We run in a separate process or thread. In the latter case,
+ any change we make to s before the reader_process invocation
+ needs to be reverted. */
+ SANE_Int lines = s->params.lines;
s->page += 1;
s->params.lines = -line;
exit_status = reader_process (s);
+ s->params.lines = lines;
+ s->page -= 1;
}
/* TODO:
* else {
@@ -7522,15 +7526,15 @@ reader_process (void *data)
}
if (rear_fp)
fclose (rear_fp);
-
+
if (ip_data) free (ip_data);
if (ip_history)
free (ip_history);
else
free (out_data); /* if we have ip_history out_data is included there */
-
+
free (stripe_data);
-
+
DBG (3, "reader_process: returning success\n");
return exit_status;
}
@@ -7550,17 +7554,17 @@ attach_one_usb (const char* dev)
attach (dev, AV_USB, 0);
return SANE_STATUS_GOOD;
}
-
+
static SANE_Status
sane_reload_devices (void)
{
FILE* fp;
-
+
char line[PATH_MAX];
const char* cp = 0;
char* word;
int linenumber = 0;
- int model_num = 0;
+ int model_num = 0;
sanei_usb_init ();
fp = sanei_config_open (AVISION_CONFIG_FILE);
@@ -7574,15 +7578,15 @@ sane_reload_devices (void)
while (sanei_config_read (line, sizeof (line), fp))
{
attaching_hw = 0;
-
+
word = NULL;
++ linenumber;
-
+
DBG (5, "sane_reload_devices: parsing config line \"%s\"\n",
line);
-
+
cp = sanei_config_get_string (line, &word);
-
+
if (!word || cp == line) {
DBG (5, "sane_reload_devices: config file line %d: ignoring empty line\n",
linenumber);
@@ -7592,13 +7596,13 @@ sane_reload_devices (void)
}
continue;
}
-
+
if (!word) {
DBG (1, "sane_reload_devices: config file line %d: could not be parsed\n",
linenumber);
continue;
}
-
+
if (word[0] == '#') {
DBG (5, "sane_reload_devices: config file line %d: ignoring comment line\n",
linenumber);
@@ -7606,13 +7610,13 @@ sane_reload_devices (void)
word = NULL;
continue;
}
-
+
if (strcmp (word, "option") == 0)
{
free (word);
word = NULL;
cp = sanei_config_get_string (cp, &word);
-
+
if (strcmp (word, "disable-gamma-table") == 0) {
DBG (3, "sane_reload_devices: config file line %d: disable-gamma-table\n",
linenumber);
@@ -7656,7 +7660,7 @@ sane_reload_devices (void)
else if (strcmp (word, "static-blue-calib") == 0) {
DBG (3, "sane_reload_devices: config file line %d: static blue calibration\n",
linenumber);
- static_calib_list [2] = SANE_TRUE;
+ static_calib_list [2] = SANE_TRUE;
}
else
DBG (1, "sane_reload_devices: config file line %d: options unknown!\n",
@@ -7671,7 +7675,7 @@ sane_reload_devices (void)
else if (strcmp (word, "scsi") == 0) {
DBG (2, "sane_reload_devices: config file line %d: trying to attach SCSI: %s'\n",
linenumber, line);
-
+
/* the last time I verified (2003-03-18) this function
only matches SCSI devices ... */
sanei_config_attach_matching_devices (line, attach_one_scsi);
@@ -7681,7 +7685,7 @@ sane_reload_devices (void)
linenumber);
DBG (1, "sane_reload_devices: (see man sane-avision for details): trying to attach SCSI: %s'\n",
line);
-
+
/* the last time I verified (2003-03-18) this function
only matched SCSI devices ... */
sanei_config_attach_matching_devices (line, attach_one_scsi);
@@ -7689,13 +7693,13 @@ sane_reload_devices (void)
free (word);
word = NULL;
} /* end while read */
-
+
fclose (fp);
-
+
if (word)
free (word);
} /* end if fp */
-
+
/* search for all supported SCSI/USB devices */
while (Avision_Device_List [model_num].scsi_mfg != NULL ||
Avision_Device_List [model_num].real_mfg != NULL)
@@ -7707,13 +7711,13 @@ sane_reload_devices (void)
attaching_hw->scsi_model, NULL,
-1, -1, -1, -1,
attach_one_scsi);
-
+
if (attaching_hw->usb_vendor != 0 && attaching_hw->usb_product != 0 )
{
DBG (1, "sane_reload_devices: Trying to find USB device %.4x %.4x ...\n",
attaching_hw->usb_vendor,
attaching_hw->usb_product);
-
+
/* TODO: check return value */
if (sanei_usb_find_devices (attaching_hw->usb_vendor,
attaching_hw->usb_product,
@@ -7723,7 +7727,7 @@ sane_reload_devices (void)
}
++ model_num;
} /* end for all devices in supported list */
-
+
attaching_hw = 0;
return SANE_STATUS_GOOD;
}
@@ -7732,16 +7736,16 @@ SANE_Status
sane_init (SANE_Int* version_code, SANE_Auth_Callback authorize)
{
authorize = authorize; /* silence gcc */
-
+
DBG_INIT();
#ifdef AVISION_STATIC_DEBUG_LEVEL
DBG_LEVEL = AVISION_STATIC_DEBUG_LEVEL;
#endif
-
+
DBG (3, "sane_init:(Version: %i.%i Build: %i)\n",
SANE_CURRENT_MAJOR, V_MINOR, BACKEND_BUILD);
-
+
/* must come first */
sanei_thread_init ();
@@ -7812,7 +7816,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
uint8_t inquiry_result[AVISION_INQUIRY_SIZE_V1];
DBG (3, "sane_open:\n");
-
+
if (devicename[0]) {
for (dev = first_dev; dev; dev = dev->next)
if (strcmp (dev->sane.name, devicename) == 0)
@@ -7830,26 +7834,26 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
if (!dev)
return SANE_STATUS_INVAL;
-
+
s = malloc (sizeof (*s));
if (!s)
return SANE_STATUS_NO_MEM;
-
+
/* initialize ... */
/* the other states (scanning, ...) rely on this memset (0) */
memset (s, 0, sizeof (*s));
-
+
/* initialize connection state */
s->av_con.connection_type = dev->connection.connection_type;
s->av_con.usb_status = dev->connection.usb_status;
s->av_con.scsi_fd = -1;
s->av_con.usb_dn = -1;
-
- s->reader_pid = -1;
+
+ sanei_thread_initialize (s->reader_pid);
s->read_fds = -1;
s->hw = dev;
-
+
/* We initialize the table to a gamma value of 2.22, since this is what
papers about Colorimetry suggest.
@@ -7859,17 +7863,17 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
{
const double gamma = 2.22;
const double one_over_gamma = 1. / gamma;
-
+
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;
}
-
+
/* insert newly opened handle into list of open handles: */
s->next = first_handle;
first_handle = s;
*handle = s;
-
+
/* open the device */
if (! avision_is_open (&s->av_con) ) {
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
@@ -7907,16 +7911,16 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
DBG (1, "sane_open: additional probe failed: %s\n", sane_strstatus (status));
return status;
}
-
+
/* initialize the options */
init_options (s);
-
+
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. */
strncpy(s->duplex_rear_fname, "/tmp/avision-rear-XXXXXX", PATH_MAX);
-
+
if (! mktemp(s->duplex_rear_fname) ) {
DBG (1, "sane_open: failed to generate temporary fname for duplex scans\n");
return SANE_STATUS_NO_MEM;
@@ -7926,25 +7930,25 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
s->duplex_rear_fname);
}
}
-
+
/* calibrate film scanners, as this must be done without the
film holder and at the full resolution */
if (dev->scanner_type == AV_FILM)
{
int default_res = s->val[OPT_RESOLUTION].w;
s->val[OPT_RESOLUTION].w = dev->inquiry_optical_res;
-
+
DBG (1, "sane_open: early calibration for film scanner.\n");
-
+
compute_parameters (s);
-
+
status = set_window (s);
if (status != SANE_STATUS_GOOD) {
DBG (1, "sane_open: set scan window command failed: %s\n",
sane_strstatus (status));
return status;
}
-
+
if (!(dev->hw->feature_type & AV_NO_CALIB))
{
status = normal_calibration (s);
@@ -7954,16 +7958,16 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
return status;
}
}
-
+
if (dev->scanner_type == AV_FILM) {
status = object_position (s, AVISION_SCSI_OP_GO_HOME);
if (status != SANE_STATUS_GOOD)
DBG (1, "reader_open: object position go-home failed!\n");
}
-
+
s->val[OPT_RESOLUTION].w = default_res;
}
-
+
return SANE_STATUS_GOOD;
}
@@ -7975,12 +7979,12 @@ sane_close (SANE_Handle handle)
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) {
@@ -8008,20 +8012,20 @@ sane_close (SANE_Handle handle)
free (s->val[i].s);
}
}
-
+
if (s->white_avg_data)
free (s->white_avg_data);
if (s->dark_avg_data)
free (s->dark_avg_data);
-
+
if (s->background_raster)
free (s->background_raster);
-
+
if (*(s->duplex_rear_fname)) {
unlink (s->duplex_rear_fname);
*(s->duplex_rear_fname) = 0;
}
-
+
free (handle);
}
@@ -8029,7 +8033,7 @@ const SANE_Option_Descriptor*
sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
{
Avision_Scanner* s = handle;
-
+
DBG (3, "sane_get_option_descriptor: %d\n", option);
if ((unsigned) option >= NUM_OPTIONS)
@@ -8045,7 +8049,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
Avision_Device* dev = s->hw;
SANE_Status status;
SANE_Word cap;
-
+
DBG (3, "sane_control_option: option=%d, action=%d\n",
(int)option, (int)action);
@@ -8060,7 +8064,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (s->scanning)
return SANE_STATUS_DEVICE_BUSY;
-
+
if (option >= NUM_OPTIONS)
return SANE_STATUS_INVAL;
@@ -8075,7 +8079,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{
/* word options: */
case OPT_PREVIEW:
-
+
case OPT_RESOLUTION:
case OPT_SPEED:
case OPT_TL_X:
@@ -8086,7 +8090,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_OVERSCAN_BOTTOM:
case OPT_BACKGROUND:
case OPT_NUM_OPTS:
-
+
case OPT_BRIGHTNESS:
case OPT_CONTRAST:
case OPT_EXPOSURE:
@@ -8098,19 +8102,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_ADF_FLIP:
*(SANE_Word*) val = s->val[option].w;
return SANE_STATUS_GOOD;
-
+
/* specially treated word options */
-
+
case OPT_FRAME:
status = get_frame_info (s);
*(SANE_Word*) val = s->val[option].w;
return status;
-
+
case OPT_POWER_SAVE_TIME:
get_power_save_time (s, &(s->val[option].w));
*(SANE_Word*) val = s->val[option].w;
return SANE_STATUS_GOOD;
-
+
/* word-array options: */
case OPT_GAMMA_VECTOR:
case OPT_GAMMA_VECTOR_R:
@@ -8118,7 +8122,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_B:
memcpy (val, s->val[option].wa, s->opt[option].size);
return SANE_STATUS_GOOD;
-
+
/* string options: */
case OPT_MODE:
case OPT_SOURCE:
@@ -8129,28 +8133,28 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_MESSAGE:
if (dev->inquiry_button_control || dev->inquiry_buttons)
status = get_button_status (s);
-
+
strcpy (val, s->val[option].s);
s->val[option].s[0] = 0;
return SANE_STATUS_GOOD;
case OPT_NVRAM:
get_and_parse_nvram (s, s->val[option].s, 1024);
-
+
strcpy (val, s->val[option].s);
return SANE_STATUS_GOOD;
-
+
} /* end switch option */
} /* end if GET_ACTION_GET_VALUE */
else if (action == SANE_ACTION_SET_VALUE)
{
if (!SANE_OPTION_IS_SETTABLE (cap))
return SANE_STATUS_INVAL;
-
+
status = constrain_value (s, option, val, info);
if (status != SANE_STATUS_GOOD)
return status;
-
+
switch (option)
{
/* side-effect-free word options: */
@@ -8170,7 +8174,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_ADF_FLIP:
s->val[option].w = *(SANE_Word*) val;
return SANE_STATUS_GOOD;
-
+
/* side-effect-free word-array options: */
case OPT_GAMMA_VECTOR:
case OPT_GAMMA_VECTOR_R:
@@ -8178,7 +8182,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_B:
memcpy (s->val[option].wa, val, s->opt[option].size);
return SANE_STATUS_GOOD;
-
+
/* options with side-effects: */
case OPT_RESOLUTION:
case OPT_TL_X:
@@ -8195,14 +8199,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
/* string options with side-effects: */
case OPT_SOURCE:
-
+
if (s->val[option].s) {
free(s->val[option].s);
}
s->val[option].s = strdup(val);
s->source_mode = match_source_mode (dev, s->val[option].s);
s->source_mode_dim = match_source_mode_dim (s->source_mode);
-
+
/* set side-effects */
dev->x_range.max =
SANE_FIX ( dev->inquiry_x_ranges[s->source_mode_dim]);
@@ -8214,22 +8218,22 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
} else {
s->opt[OPT_ADF_FLIP].cap |= SANE_CAP_INACTIVE;
}
-
+
if (info)
*info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
-
+
return SANE_STATUS_GOOD;
-
+
case OPT_MODE:
{
if (s->val[option].s)
free (s->val[option].s);
-
+
s->val[option].s = strdup (val);
s->c_mode = match_color_mode (dev, s->val[OPT_MODE].s);
-
+
/* set to mode specific values */
-
+
/* the gamma table related */
if (!disable_gamma_table)
{
@@ -8246,7 +8250,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
}
- }
+ }
if (info)
*info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
return SANE_STATUS_GOOD;
@@ -8254,7 +8258,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_FRAME:
{
SANE_Word frame = *((SANE_Word *) val);
-
+
status = set_frame (s, frame);
if (status == SANE_STATUS_GOOD) {
s->val[OPT_FRAME].w = frame;
@@ -8292,9 +8296,9 @@ SANE_Status
sane_get_parameters (SANE_Handle handle, SANE_Parameters* params)
{
Avision_Scanner* s = handle;
-
+
DBG (3, "sane_get_parameters:\n");
-
+
/* During an actual scan these parameters will have been computed in
sane_start(). Otherwise, the values must be computed on demand. The
values cannot be changed during a scan to avoid inconsistency. */
@@ -8309,7 +8313,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters* params)
/* add background raster lines */
params->lines += s->val[OPT_BACKGROUND].w;
}
-
+
return SANE_STATUS_GOOD;
}
@@ -8318,25 +8322,25 @@ sane_start (SANE_Handle handle)
{
Avision_Scanner* s = handle;
Avision_Device* dev = s->hw;
-
+
SANE_Status status;
int fds [2];
DBG (1, "sane_start:\n");
-
+
/* Make sure there is no scan running!!! */
if (s->scanning)
return SANE_STATUS_DEVICE_BUSY;
/* Clear cancellation status */
s->cancelled = 0;
-
+
/* Make sure we have a current parameter set. Some of the
parameters will be overwritten below, but that's OK. */
status = sane_get_parameters (s, &s->params);
if (status != SANE_STATUS_GOOD) {
return status;
}
-
+
/* for non ADF scans (e.g. scanimage --batch-prompt on a Flatbed
scanner) make sure we do not assume it's an ADF scan and
optimize something away*/
@@ -8347,7 +8351,7 @@ sane_start (SANE_Handle handle)
DBG (1, "sane_start: virtual duplex rear data valid.\n");
goto start_scan_end;
}
-
+
/* Check for paper during ADF scans and for sheetfed scanners. */
if (is_adf_scan (s)) {
status = media_check (s);
@@ -8359,7 +8363,7 @@ sane_start (SANE_Handle handle)
else
DBG (1, "sane_start: media_check ok\n");
}
-
+
/* Check the light early, to return to the GUI and notify the user. */
if (s->prepared == SANE_FALSE) {
if (dev->inquiry_light_control) {
@@ -8397,28 +8401,28 @@ sane_start (SANE_Handle handle)
{
size_t size = 16;
uint8_t result[16];
-
+
DBG (5, "sane_start: reading scanner window size\n");
-
+
status = simple_read (s, 0x80, 0, &size, result);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "sane_start: get pixel size command failed: %s\n",
sane_strstatus (status));
goto stop_scanner_and_return;
- }
+ }
debug_print_raw (5, "sane_start: pixel_size:", result, size);
DBG (5, "sane_start: x-pixels: %d, y-pixels: %d\n",
get_quad (&(result[0])), get_quad (&(result[4])));
}
#endif
-
+
/* no calibration for ADF pages */
if (s->page > 0) {
DBG (1, "sane_start: optimized calibration away.\n");
goto calib_end;
}
-
+
/* check whether the user enforces calibration */
if (force_calibration) {
DBG (1, "sane_start: calibration enforced in config!\n");
@@ -8431,12 +8435,12 @@ sane_start (SANE_Handle handle)
DBG (1, "sane_start: old protocol no calibration needed!\n");
goto calib_end;
}
-
+
if (!dev->inquiry_needs_calibration) {
DBG (1, "sane_start: due to inquiry no calibration needed!\n");
goto calib_end;
}
-
+
/* calibration allowed for this scanner? */
if (dev->hw->feature_type & AV_NO_CALIB) {
DBG (1, "sane_start: calibration disabled in device list!!\n");
@@ -8448,28 +8452,28 @@ sane_start (SANE_Handle handle)
DBG (1, "sane_start: no calibration for film scanner!\n");
goto calib_end;
}
-
+
/* check whether calibration is disabled by the user */
if (disable_calibration) {
DBG (1, "sane_start: calibration disabled in config - skipped!\n");
goto calib_end;
}
-
+
/* R² reminder: We must not skip the calibration for ADF scans, some
scanner (HP 53xx/74xx ASIC series) rely on a calibration data
read (and will hang otherwise) */
calib:
status = normal_calibration (s);
-
+
if (status != SANE_STATUS_GOOD) {
DBG (1, "sane_start: perform calibration failed: %s\n",
sane_strstatus (status));
goto stop_scanner_and_return;
}
-
+
calib_end:
-
+
if (dev->inquiry_3x3_matrix && dev->inquiry_asic_type >= AV_ASIC_C6 &&
s->page == 0)
{
@@ -8478,13 +8482,13 @@ sane_start (SANE_Handle handle)
return status;
}
}
-
+
/* check whether gamma-table is disabled by the user? */
if (disable_gamma_table) {
DBG (1, "sane_start: gamma-table disabled in config - skipped!\n");
goto gamma_end;
}
-
+
if (dev->hw->feature_type & AV_NO_GAMMA) {
DBG (1, "sane_start: gamma table skipped due to device-list!!\n");
goto gamma_end;
@@ -8501,9 +8505,9 @@ sane_start (SANE_Handle handle)
goto stop_scanner_and_return;
}
}
-
+
gamma_end:
-
+
if (dev->inquiry_tune_scan_length && is_adf_scan (s)) {
status = send_tune_scan_length (s);
if (status != SANE_STATUS_GOOD) {
@@ -8512,7 +8516,7 @@ sane_start (SANE_Handle handle)
goto stop_scanner_and_return;
}
}
-
+
/* if the device supports retrieving background raster data
inquire the data no matter if the user/applications asks for
it in order to use it for bottom padding */
@@ -8524,11 +8528,11 @@ sane_start (SANE_Handle handle)
goto stop_scanner_and_return;
}
}
-
+
/* check film holder */
if (dev->scanner_type == AV_FILM && dev->holder_type == 0xff) {
DBG (1, "sane_start: no film holder or APS cassette!\n");
-
+
/* Normally "go_home" is executed from the reader process,
but as it will not start we have to reset things here */
if (dev->inquiry_new_protocol) {
@@ -8539,33 +8543,33 @@ sane_start (SANE_Handle handle)
}
goto stop_scanner_and_return;
}
-
+
start_scan_end:
-
+
s->scanning = SANE_TRUE;
s->page += 1; /* processing next page */
-
+
if (pipe (fds) < 0) {
return SANE_STATUS_IO_ERROR;
}
-
+
s->read_fds = fds[0];
s->write_fds = fds[1];
/* create reader routine as new process or thread */
DBG (3, "sane_start: starting thread\n");
s->reader_pid = sanei_thread_begin (reader_process, (void *) s);
-
+
if (sanei_thread_is_forked())
close (s->write_fds);
-
+
return SANE_STATUS_GOOD;
-
+
stop_scanner_and_return:
-
+
/* cancel the scan nicely */
do_cancel (s);
-
+
return status;
}
@@ -8588,7 +8592,7 @@ sane_read (SANE_Handle handle, SANE_Byte* buf, SANE_Int max_len, SANE_Int* len)
if (!s->scanning)
return SANE_STATUS_CANCELLED;
-
+
if (nread < 0) {
if (errno == EAGAIN) {
return SANE_STATUS_GOOD;
@@ -8597,9 +8601,9 @@ sane_read (SANE_Handle handle, SANE_Byte* buf, SANE_Int max_len, SANE_Int* len)
return SANE_STATUS_IO_ERROR;
}
}
-
+
*len = nread;
-
+
/* if all data was passed through */
if (nread == 0)
return do_eof (s);
@@ -8621,16 +8625,16 @@ SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
Avision_Scanner* s = handle;
-
+
DBG (3, "sane_set_io_mode:\n");
if (!s->scanning) {
DBG (3, "sane_set_io_mode: not yet scanning\n");
return SANE_STATUS_INVAL;
}
-
+
if (fcntl (s->read_fds, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0)
return SANE_STATUS_IO_ERROR;
-
+
return SANE_STATUS_GOOD;
}
@@ -8638,14 +8642,14 @@ SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int* fd)
{
Avision_Scanner* s = handle;
-
+
DBG (3, "sane_get_select_fd:\n");
-
+
if (!s->scanning) {
DBG (3, "sane_get_select_fd: not yet scanning\n");
return SANE_STATUS_INVAL;
}
-
+
*fd = s->read_fds;
return SANE_STATUS_GOOD;
}
diff --git a/backend/avision.conf.in b/backend/avision.conf.in
index 0862d5c..33e2683 100644
--- a/backend/avision.conf.in
+++ b/backend/avision.conf.in
@@ -20,4 +20,3 @@
#scsi /dev/scanner
# usb libusb:002:003
# usb 0x03f0 0x0701
-
diff --git a/backend/avision.h b/backend/avision.h
index b26907f..3f42ff6 100644
--- a/backend/avision.h
+++ b/backend/avision.h
@@ -1,7 +1,7 @@
/*******************************************************************************
* SANE - Scanner Access Now Easy.
- avision.h
+ avision.h
This file is part of the SANE package.
@@ -41,7 +41,7 @@
This backend is based upon the Tamarack backend and adapted to the Avision
scanners by René Rebe and Meino Cramer.
-
+
Check the avision.c file for detailed copyright and change-log
information.
@@ -78,7 +78,7 @@ typedef struct Avision_Connection {
AVISION_USB_INT_STATUS, /* interrupt endp. (USB 1.x device) status */
AVISION_USB_BULK_STATUS /* bulk endp. (USB 2.0 device) status */
} usb_status;
-
+
} Avision_Connection;
typedef struct Avision_HWEntry {
@@ -90,33 +90,33 @@ typedef struct Avision_HWEntry {
const char* real_mfg;
const char* real_model;
-
+
/* feature overwrites - as embedded CPUs have 16bit enums - this
would need a change ... */
/* force no calibration */
#define AV_NO_CALIB ((uint64_t)1<<0)
-
+
/* force all in one command calibration */
#define AV_ONE_CALIB_CMD ((uint64_t)1<<1)
-
+
/* no gamma table */
#define AV_NO_GAMMA ((uint64_t)1<<2)
-
+
/* light check is bogus */
#define AV_LIGHT_CHECK_BOGUS ((uint64_t)1<<3)
-
+
/* no button though the device advertise it */
#define AV_NO_BUTTON ((uint64_t)1<<4)
-
+
/* if the scan area needs to be forced to A3 */
#define AV_FORCE_A3 ((uint64_t)1<<5)
-
+
/* if the scan area and resolution needs to be forced for films */
#define AV_FORCE_FILM ((uint64_t)1<<6)
-
+
/* does not suport, or very broken background (added for AV610C2) */
#define AV_NO_BACKGROUND ((uint64_t)1<<7)
-
+
/* is film scanner - no detection yet */
#define AV_FILMSCANNER ((uint64_t)1<<8)
@@ -125,7 +125,7 @@ typedef struct Avision_HWEntry {
/* gray calibration data has to be uploaded on the blue channel ... ? */
#define AV_GRAY_CALIB_BLUE ((uint64_t)1<<10)
-
+
/* Interrupt endpoint button readout (so far AV220) */
#define AV_INT_BUTTON ((uint64_t)1<<11)
@@ -161,35 +161,35 @@ typedef struct Avision_HWEntry {
/* very broken background raster */
#define AV_BACKGROUND_QUIRK ((uint64_t)1<<22)
-
+
/* though marked as GRAY only the scanner can do GRAY modes */
#define AV_GRAY_MODES ((uint64_t)1<<23)
/* no seperate, single REAR scan (AV122, DM152, ...) */
#define AV_NO_REAR ((uint64_t)1<<24)
-
+
/* only scan with some known good hardware resolutions, as the
scanner fails to properly interpoloate in between (e.g. AV121,
DM152 on duplex scans - but also the AV600), software scale and
interpolate to all the others */
#define AV_SOFT_SCALE ((uint64_t)1<<25)
-
+
/* does keep window though it does not advertice it - the AV122/DM152
mess up image data if window is resend between ADF pages */
#define AV_DOES_KEEP_WINDOW ((uint64_t)1<<26)
-
+
/* does keep gamma though it does not advertice it */
#define AV_DOES_KEEP_GAMMA ((uint64_t)1<<27)
-
+
/* does the scanner contain a Cancel button? */
#define AV_CANCEL_BUTTON ((uint64_t)1<<28)
-
+
/* is the rear image offset? */
#define AV_REAR_OFFSET ((uint64_t)1<<29)
/* some devices do not need a START_SCAN, even hang with it */
#define AV_NO_START_SCAN ((uint64_t)1<<30)
-
+
#define AV_INT_STATUS ((uint64_t)1<<31)
/* force no calibration */
@@ -203,7 +203,7 @@ typedef struct Avision_HWEntry {
/* For scanners which need to have their firmware read to properly function. */
#define AV_FIRMWARE ((uint64_t)1<<35)
-
+
/* maybe more ...*/
uint64_t feature_type;
@@ -252,32 +252,32 @@ typedef enum {
enum Avision_Option
{
OPT_NUM_OPTS = 0, /* must come first */
-
+
OPT_MODE_GROUP,
OPT_MODE,
OPT_RESOLUTION,
#define OPT_RESOLUTION_DEFAULT 150
OPT_SPEED,
OPT_PREVIEW,
-
+
OPT_SOURCE, /* scan source normal, transparency, ADF */
-
+
OPT_GEOMETRY_GROUP,
OPT_TL_X, /* top-left x */
OPT_TL_Y, /* top-left y */
OPT_BR_X, /* bottom-right x */
OPT_BR_Y, /* bottom-right y */
-
+
OPT_OVERSCAN_TOP, /* overscan for auto-crop/deskew, if supported */
OPT_OVERSCAN_BOTTOM,
OPT_BACKGROUND, /* background raster lines to read out */
-
+
OPT_ENHANCEMENT_GROUP,
OPT_BRIGHTNESS,
OPT_CONTRAST,
OPT_QSCAN,
OPT_QCALIB,
-
+
OPT_GAMMA_VECTOR, /* first must be gray */
OPT_GAMMA_VECTOR_R, /* then r g b vector */
OPT_GAMMA_VECTOR_G,
@@ -286,15 +286,15 @@ enum Avision_Option
OPT_EXPOSURE, /* film exposure adjustment */
OPT_IR, /* infra-red */
OPT_MULTISAMPLE, /* multi-sample */
-
+
OPT_MISC_GROUP,
OPT_FRAME, /* Film holder control */
OPT_POWER_SAVE_TIME, /* set power save time to the scanner */
- OPT_MESSAGE, /* optional message from the scanner display */
+ OPT_MESSAGE, /* optional message from the scanner display */
OPT_NVRAM, /* retrieve NVRAM values as pretty printed text */
-
+
OPT_PAPERLEN, /* Use paper_length field to detect double feeds */
OPT_ADF_FLIP, /* For flipping duplex, reflip the document */
@@ -306,28 +306,28 @@ typedef struct Avision_Dimensions
/* in dpi */
int xres;
int yres;
-
+
/* in pixels */
long tlx;
long tly;
long brx;
long bry;
-
+
/* in pixels */
int line_difference;
int rear_offset; /* in pixels of HW res */
/* interlaced duplex scan */
SANE_Bool interlaced_duplex;
-
+
/* in dpi, likewise - different if software scaling required */
int hw_xres;
int hw_yres;
-
+
int hw_pixels_per_line;
int hw_bytes_per_line;
int hw_lines;
-
+
} Avision_Dimensions;
/* this contains our low-level info - not relevant for the SANE interface */
@@ -336,7 +336,7 @@ typedef struct Avision_Device
struct Avision_Device* next;
SANE_Device sane;
Avision_Connection connection;
-
+
/* structs used to store config options */
SANE_Range dpi_range;
SANE_Range x_range;
@@ -369,34 +369,34 @@ typedef struct Avision_Device
SANE_Bool inquiry_light_detect;
SANE_Bool inquiry_light_control;
SANE_Bool inquiry_exposure_control;
-
+
int inquiry_max_shading_target;
SANE_Bool inquiry_button_control;
unsigned int inquiry_buttons;
SANE_Bool inquiry_tune_scan_length;
SANE_Bool inquiry_background_raster;
int inquiry_background_raster_pixel;
-
+
enum {AV_FLATBED,
AV_FILM,
AV_SHEETFEED
} scanner_type;
-
+
/* the list of available color modes */
SANE_String_Const color_list[AV_COLOR_MODE_LAST + 1];
color_mode color_list_num[AV_COLOR_MODE_LAST];
color_mode color_list_default;
-
+
/* the list of available source modes */
SANE_String_Const source_list[AV_SOURCE_MODE_LAST + 1];
source_mode source_list_num[AV_SOURCE_MODE_LAST];
-
+
int inquiry_optical_res; /* in dpi */
int inquiry_max_res; /* in dpi */
-
+
double inquiry_x_ranges [AV_SOURCE_MODE_DIM_LAST]; /* in mm */
double inquiry_y_ranges [AV_SOURCE_MODE_DIM_LAST]; /* in mm */
-
+
int inquiry_color_boundary;
int inquiry_gray_boundary;
int inquiry_dithered_boundary;
@@ -406,7 +406,7 @@ typedef struct Avision_Device
int inquiry_channels_per_pixel;
int inquiry_bits_per_channel;
int inquiry_no_gray_modes;
-
+
int scsi_buffer_size; /* nice to have SCSI buffer size */
int read_stripe_size; /* stripes to be read at-a-time */
@@ -414,10 +414,10 @@ typedef struct Avision_Device
SANE_Range frame_range;
SANE_Word current_frame;
SANE_Word holder_type;
-
+
/* some versin corrections */
uint16_t data_dq; /* was ox0A0D - but hangs some new scanners */
-
+
Avision_HWEntry* hw;
} Avision_Device;
@@ -426,19 +426,19 @@ typedef struct Avision_Scanner
{
struct Avision_Scanner* next;
Avision_Device* hw;
-
+
SANE_Option_Descriptor opt [NUM_OPTIONS];
Option_Value val [NUM_OPTIONS];
SANE_Int gamma_table [4][256];
-
+
/* we now save the calib data because we might need it for 16bit software
calibration :-( */
uint8_t* dark_avg_data;
uint8_t* white_avg_data;
-
+
/* background raster data, if duplex first front, then rear */
uint8_t* background_raster;
-
+
/* Parsed option values and variables that are valid only during
the actual scan: */
SANE_Bool prepared; /* first page marker */
@@ -448,22 +448,22 @@ typedef struct Avision_Scanner
SANE_Parameters params; /* scan window */
Avision_Dimensions avdimen; /* scan window - detailed internals */
-
+
/* Internal data for duplex scans */
char duplex_rear_fname [PATH_MAX];
SANE_Bool duplex_rear_valid;
-
+
color_mode c_mode;
source_mode source_mode;
source_mode_dim source_mode_dim;
-
+
/* Avision HW Access Connection (SCSI/USB abstraction) */
Avision_Connection av_con;
SANE_Pid reader_pid; /* process id of reader */
int read_fds; /* pipe reading end */
int write_fds; /* pipe writing end */
-
+
} Avision_Scanner;
/* Some Avision driver internal defines */
@@ -549,7 +549,7 @@ typedef struct command_send
uint8_t opc;
uint8_t bitset1;
uint8_t datatypecode;
- uint8_t reserved0;
+ uint8_t reserved0;
uint8_t datatypequal [2];
uint8_t transferlen [3];
uint8_t reserved1;
@@ -602,7 +602,7 @@ typedef struct nvram_data
uint8_t jam_count [4];
uint8_t reserved;
- char identify_info[16];
+ char identify_info[16];
char formal_name[16];
uint8_t reserved2 [10];
@@ -614,7 +614,7 @@ typedef struct command_set_window_window
uint8_t reserved0 [6];
uint8_t desclen [2];
} header;
-
+
struct {
uint8_t winid;
uint8_t reserved0;
@@ -641,37 +641,37 @@ typedef struct command_set_window_window
uint8_t vendor_specific;
uint8_t paralen; /* bytes following after this byte */
} descriptor;
-
+
struct {
uint8_t bitset1;
uint8_t highlight;
uint8_t shadow;
uint8_t line_width [2];
uint8_t line_count [2];
-
+
/* the tail is quite version and model specific */
union {
struct {
uint8_t bitset2;
uint8_t reserved;
} old;
-
+
struct {
uint8_t bitset2;
uint8_t ir_exposure_time;
-
+
/* optional */
uint8_t r_exposure_time [2];
uint8_t g_exposure_time [2];
uint8_t b_exposure_time [2];
-
+
uint8_t bitset3; /* reserved in the v2 */
uint8_t auto_focus;
uint8_t line_width_msb;
uint8_t line_count_msb;
uint8_t background_lines;
} normal;
-
+
struct {
uint8_t reserved0 [4];
uint8_t paper_size;
@@ -716,7 +716,7 @@ typedef struct calibration_format
uint16_t r_dark_shading_target;
uint16_t g_dark_shading_target;
uint16_t b_dark_shading_target;
-
+
/* not returned but usefull in some places */
uint8_t channels;
} calibration_format;
@@ -726,7 +726,7 @@ typedef struct matrix_3x3
uint16_t v[9];
} matrix_3x3;
-typedef struct acceleration_info
+typedef struct acceleration_info
{
uint16_t total_steps;
uint16_t stable_steps;
diff --git a/backend/bh.c b/backend/bh.c
index 9424bd6..60741cc 100644
--- a/backend/bh.c
+++ b/backend/bh.c
@@ -76,7 +76,7 @@ static SANE_Int fake_inquiry = 0;
static int allblank(const char *s)
{
- while (s && *s)
+ while (s && *s)
if (!isspace(*s++))
return 0;
@@ -111,10 +111,10 @@ trim_spaces(char *s, size_t n)
}
static SANE_String_Const
-print_devtype (SANE_Byte devtype)
+print_devtype (SANE_Byte devtype)
{
static SANE_String devtypes[] =
- {
+ {
"disk",
"tape",
"printer",
@@ -127,21 +127,21 @@ print_devtype (SANE_Byte devtype)
"communicator"
};
- return (devtype > 0 && devtype < NELEMS(devtypes)) ?
- devtypes[devtype] :
+ return (devtype > 0 && devtype < NELEMS(devtypes)) ?
+ devtypes[devtype] :
"unknown-device";
}
static SANE_String_Const
-print_barcodetype (SANE_Int i)
+print_barcodetype (SANE_Int i)
{
- return (i > 0 && i < NELEMS(barcode_search_bar_list)) ?
- barcode_search_bar_list[i] :
+ return (i > 0 && i < NELEMS(barcode_search_bar_list)) ?
+ barcode_search_bar_list[i] :
(SANE_String_Const) "unknown";
}
static SANE_String_Const
-print_orientation (SANE_Int i)
+print_orientation (SANE_Int i)
{
switch(i)
{
@@ -163,7 +163,7 @@ print_orientation (SANE_Int i)
}
static SANE_String_Const
-print_read_type (SANE_Int i)
+print_read_type (SANE_Int i)
{
static char buf[32];
SANE_Int n;
@@ -249,72 +249,72 @@ print_read_type (SANE_Int i)
return buf;
}
-static SANE_Int
+static SANE_Int
get_rotation_id(char *s)
{
SANE_Int i;
- for (i = 0; rotation_list[i]; i++)
- if (strcmp(s, rotation_list[i]) == 0)
+ for (i = 0; rotation_list[i]; i++)
+ if (strcmp(s, rotation_list[i]) == 0)
break;
/* unknown strings are treated as '0' */
return rotation_list[i] ? i : 0;
}
-static SANE_Int
+static SANE_Int
get_compression_id(char *s)
{
SANE_Int i;
- for (i = 0; compression_list[i]; i++)
- if (strcmp(s, compression_list[i]) == 0)
+ for (i = 0; compression_list[i]; i++)
+ if (strcmp(s, compression_list[i]) == 0)
break;
/* unknown strings are treated as 'none' */
return compression_list[i] ? i : 0;
}
-static SANE_Int
+static SANE_Int
get_barcode_id(char *s)
{
SANE_Int i;
- for (i = 0; barcode_search_bar_list[i]; i++)
- if (strcmp(s, barcode_search_bar_list[i]) == 0)
+ for (i = 0; barcode_search_bar_list[i]; i++)
+ if (strcmp(s, barcode_search_bar_list[i]) == 0)
break;
/* unknown strings are treated as 'none' */
return barcode_search_bar_list[i] ? i : 0;
}
-static SANE_Int
+static SANE_Int
get_scan_mode_id(char *s)
{
SANE_Int i;
- for (i = 0; scan_mode_list[i]; i++)
- if (strcmp(s, scan_mode_list[i]) == 0)
+ for (i = 0; scan_mode_list[i]; i++)
+ if (strcmp(s, scan_mode_list[i]) == 0)
break;
/* unknown strings are treated as 'lineart' */
return scan_mode_list[i] ? i : 0;
}
-static SANE_Int
+static SANE_Int
get_paper_id(char *s)
{
SANE_Int i;
- for (i = 0; paper_list[i]; i++)
- if (strcmp(s, paper_list[i]) == 0)
+ for (i = 0; paper_list[i]; i++)
+ if (strcmp(s, paper_list[i]) == 0)
break;
/* unknown strings are treated as 'custom' */
return paper_list[i] ? i : 0;
}
-static SANE_Int
+static SANE_Int
get_barcode_search_mode(char *s)
{
SANE_Int i;
@@ -335,7 +335,7 @@ get_barcode_search_mode(char *s)
{
i = 9;
}
- else
+ else
{
/* unknown strings are treated as 'horiz-vert' */
DBG(1, "get_barcode_search_mode: unrecognized string `%s'\n", s);
@@ -345,7 +345,7 @@ get_barcode_search_mode(char *s)
return i;
}
-static void
+static void
appendStdList(BH_Info *sc, SANE_Int res)
{
/* append entry to resolution list - a SANE_WORD_LIST */
@@ -353,7 +353,7 @@ appendStdList(BH_Info *sc, SANE_Int res)
sc->resStdList[0]++;
}
-static void
+static void
ScannerDump(BH_Scanner *s)
{
int i;
@@ -370,9 +370,9 @@ ScannerDump(BH_Scanner *s)
sdev->type);
DBG (1, "Type: '%s' Vendor: '%s' Product: '%s' Revision: '%s'\n",
- print_devtype(info->devtype),
- info->vendor,
- info->product,
+ print_devtype(info->devtype),
+ info->vendor,
+ info->product,
info->revision);
DBG (1, "Automatic Document Feeder:%s\n",
@@ -399,8 +399,8 @@ ScannerDump(BH_Scanner *s)
info->canBarCode ? " <BarCode Decoding>" : "",
info->canIcon ? " <Icon Generation>" : "",
info->canSection ? " <Section Support>" : "");
-
- DBG (1, "Max bytes per scan-line: %d (%d pixels)\n",
+
+ DBG (1, "Max bytes per scan-line: %d (%d pixels)\n",
info->lineMaxBytes,
info->lineMaxBytes * 8);
@@ -408,11 +408,11 @@ ScannerDump(BH_Scanner *s)
info->resBasicX,
info->resBasicY);
- DBG (1, "Maximum resolution (X/Y): %d/%d\n",
+ DBG (1, "Maximum resolution (X/Y): %d/%d\n",
info->resMaxX,
info->resMaxY);
- DBG (1, "Minimum resolution (X/Y): %d/%d\n",
+ DBG (1, "Minimum resolution (X/Y): %d/%d\n",
info->resMinX,
info->resMinY);
@@ -421,8 +421,8 @@ ScannerDump(BH_Scanner *s)
DBG (1, " %d\n", info->resStdList[i+1]);
DBG (1, "Window Width/Height (in basic res) %d/%d (%.2f/%.2f inches)\n",
- info->winWidth,
- info->winHeight,
+ info->winWidth,
+ info->winHeight,
(info->resBasicX != 0) ? ((float) info->winWidth) / info->resBasicX : 0.0,
(info->resBasicY) ? ((float) info->winHeight) / info->resBasicY : 0.0);
@@ -430,15 +430,15 @@ ScannerDump(BH_Scanner *s)
info->canDuplex ? "Duplex Scanner" : "Simplex Scanner",
info->canACE ? " (ACE capable)" : "",
info->canCheckADF ? " (ADF Paper Sensor capable)" : "");
-
+
sprintf(inquiry_data, "Vendor: %s Product: %s Rev: %s %s%s%s\n",
- info->vendor,
- info->product,
+ info->vendor,
+ info->product,
info->revision,
info->canDuplex ? "Duplex Scanner" : "Simplex Scanner",
info->canACE ? " (ACE capable)" : "",
info->canCheckADF ? " (ADF Paper Sensor capable)" : "");
-
+
DBG (5, "autoborder_default=%d\n", info->autoborder_default);
DBG (5, "batch_default=%d\n", info->batch_default);
DBG (5, "deskew_default=%d\n", info->deskew_default);
@@ -534,7 +534,7 @@ read_barcode_data (BH_Scanner *s, FILE *fp)
l += (BH_DECODE_FUDGE * 4);
/* write the decoded barcode data into the file */
- fprintf(fp, "<barcode>\n <section>%s</section>\n",
+ fprintf(fp, "<barcode>\n <section>%s</section>\n",
print_read_type((int) s->readlist[s->readptr]));
fprintf(fp, " <type>%s</type>\n <status-flag>%d</status-flag>\n",
print_barcodetype((int) _2btol(buf.barcodetype)),
@@ -558,7 +558,7 @@ read_barcode_data (BH_Scanner *s, FILE *fp)
buf.barcodedata);
} while (num_found <= BH_DECODE_TRIES);
- DBG (3, "read_barcode_data: found %d barcodes, returning %s\n",
+ DBG (3, "read_barcode_data: found %d barcodes, returning %s\n",
num_found, sane_strstatus(status));
return status;
@@ -581,7 +581,7 @@ read_icon_data (BH_Scanner *s)
memset (&buf, 0, sizeof(buf));
status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd), &buf, &buf_size);
-
+
/* set the fields in the scanner handle for later reference */
s->iconwidth = _4btol(buf.iconwidth);
s->iconlength = _4btol(buf.iconlength);
@@ -593,7 +593,7 @@ read_icon_data (BH_Scanner *s)
_4btol(buf.iconwidth),
_4btol(buf.iconlength),
_4btol(buf.iconwidthbytes));
- DBG(3, "read_icon_data: bitordering:%02x, icondatalen:%lu\n",
+ DBG(3, "read_icon_data: bitordering:%02x, icondatalen:%lu\n",
buf.bitordering,
_4btol(buf.icondatalen));
@@ -611,7 +611,7 @@ read_barfile (BH_Scanner *s, void *buf, size_t *buf_size)
if (s->barf != NULL)
{
- /* this function needs to set InvalidBytes so it looks
+ /* this function needs to set InvalidBytes so it looks
* like a B&H scsi EOF
*/
if ((nread = fread(buf, 1, *buf_size, s->barf)) < *buf_size)
@@ -802,7 +802,7 @@ mode_select_barcode_param1 (BH_Scanner *s)
_lto2b((SANE_Int)_OPT_VAL_WORD_THOUSANDTHS(s, OPT_BARCODE_HMIN), select_cmd.mp.minbarheight);
select_cmd.mp.searchcount = _OPT_VAL_WORD(s, OPT_BARCODE_SEARCH_COUNT);
- select_cmd.mp.searchmode =
+ select_cmd.mp.searchmode =
get_barcode_search_mode(_OPT_VAL_STRING(s, OPT_BARCODE_SEARCH_MODE));
_lto2b(_OPT_VAL_WORD(s, OPT_BARCODE_SEARCH_TIMEOUT), select_cmd.mp.searchtimeout);
@@ -832,10 +832,10 @@ mode_select_barcode_param2 (BH_Scanner *s)
select_cmd.cmd[4] = sizeof(select_cmd.mp);
len = sizeof(select_cmd.mp);
- status = sanei_scsi_cmd (s->fd, &select_cmd.cmd, sizeof (select_cmd.cmd),
+ status = sanei_scsi_cmd (s->fd, &select_cmd.cmd, sizeof (select_cmd.cmd),
&select_cmd.mp, &len);
- if (status == SANE_STATUS_GOOD)
+ if (status == SANE_STATUS_GOOD)
{
DBG(8, "mode_select_barcode_param2: sensed values: relmax:%d barmin:%d barmax:%d\n",
(int) _2btol(select_cmd.mp.relmax),
@@ -906,10 +906,10 @@ mode_select_barcode_param3 (BH_Scanner *s)
select_cmd.cmd[4] = sizeof(select_cmd.mp);
len = sizeof(select_cmd.mp);
- status = sanei_scsi_cmd (s->fd, &select_cmd.cmd, sizeof (select_cmd.cmd),
+ status = sanei_scsi_cmd (s->fd, &select_cmd.cmd, sizeof (select_cmd.cmd),
&select_cmd.mp, &len);
- if (status == SANE_STATUS_GOOD)
+ if (status == SANE_STATUS_GOOD)
{
DBG(8, "mode_select_barcode_param3: sensed values: contrast:%d patchmode:%d\n",
(int) _2btol(select_cmd.mp.barcodecontrast),
@@ -992,10 +992,10 @@ set_window (BH_Scanner *s, SANE_Byte batchmode)
memset (&set_window_cmd, 0, sizeof (set_window_cmd));
set_window_cmd.cmd[0] = BH_SCSI_SET_WINDOW;
- DBG(3, "set_window: sizeof(hdr) %d, sizeof(window): %d\n",
+ DBG(3, "set_window: sizeof(hdr) %d, sizeof(window): %d\n",
(int)sizeof(set_window_cmd.hdr), (int)sizeof(set_window_cmd.window));
- _lto3b(sizeof(set_window_cmd.hdr) + sizeof(set_window_cmd.window),
+ _lto3b(sizeof(set_window_cmd.hdr) + sizeof(set_window_cmd.window),
&set_window_cmd.cmd[6]);
_lto2b(256, &set_window_cmd.hdr[6]);
@@ -1008,9 +1008,9 @@ set_window (BH_Scanner *s, SANE_Byte batchmode)
_lto4b((int) _OPT_VAL_WORD_THOUSANDTHS(s, OPT_TL_X), set_window_cmd.window.ulx);
_lto4b((int) _OPT_VAL_WORD_THOUSANDTHS(s, OPT_TL_Y), set_window_cmd.window.uly);
- width = (SANE_Int) (_OPT_VAL_WORD_THOUSANDTHS(s, OPT_BR_X) -
+ width = (SANE_Int) (_OPT_VAL_WORD_THOUSANDTHS(s, OPT_BR_X) -
_OPT_VAL_WORD_THOUSANDTHS(s, OPT_TL_X));
- length = (SANE_Int) (_OPT_VAL_WORD_THOUSANDTHS(s, OPT_BR_Y) -
+ length = (SANE_Int) (_OPT_VAL_WORD_THOUSANDTHS(s, OPT_BR_Y) -
_OPT_VAL_WORD_THOUSANDTHS(s, OPT_TL_Y));
_lto4b(width, set_window_cmd.window.windowwidth);
@@ -1023,16 +1023,16 @@ set_window (BH_Scanner *s, SANE_Byte batchmode)
/*!!! contrast (not used) */
/*!!! set_window_cmd.window.contrast = _OPT_VAL_WORD(s, OPT_CONTRAST); */
/* imagecomposition 0x00 lineart, 0x01 dithered/halftone, 0x02 grayscale*/
- set_window_cmd.window.imagecomposition =
+ set_window_cmd.window.imagecomposition =
get_scan_mode_id(_OPT_VAL_STRING(s, OPT_SCAN_MODE));
-
+
set_window_cmd.window.bitsperpixel = 0x01;
/*!!! halftone code (not used) */
/*!!! halftone id (not used) */
set_window_cmd.window.paddingtype = 0x03; /* truncate byte */
if (_OPT_VAL_WORD(s, OPT_NEGATIVE) == SANE_TRUE) {
- /* reverse image format (valid when bitsperpixel=1)
+ /* reverse image format (valid when bitsperpixel=1)
* 0x00 normal, 0x01 reversed. This is bit 7 of paddingtype.
*/
set_window_cmd.window.paddingtype |= 0x80;
@@ -1134,7 +1134,7 @@ get_window (BH_Scanner *s, SANE_Int *w, SANE_Int *h, SANE_Bool backpage)
autoborder = _OPT_VAL_WORD(s, OPT_AUTOBORDER) == 1;
- while (1)
+ while (1)
{
i++;
memset (&cmd, 0, sizeof (cmd));
@@ -1148,7 +1148,7 @@ get_window (BH_Scanner *s, SANE_Int *w, SANE_Int *h, SANE_Bool backpage)
get_window_data.window.windowid = (backpage == SANE_TRUE) ? 1 : 0;
len = sizeof(get_window_data);
- status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd),
+ status = sanei_scsi_cmd (s->fd, &cmd, sizeof (cmd),
&get_window_data, &len);
if (status == SANE_STATUS_GOOD)
{
@@ -1198,9 +1198,9 @@ get_parameters (SANE_Handle handle, SANE_Parameters *params)
SANE_Frame format;
DBG(3, "get_parameters called\n");
-
+
memset (&s->params, 0, sizeof (s->params));
-
+
res = _OPT_VAL_WORD(s, OPT_RESOLUTION);
/* make best-effort guess at what parameters will look like once
@@ -1242,7 +1242,7 @@ get_parameters (SANE_Handle handle, SANE_Parameters *params)
/* update parameters based on the current item */
status = SANE_STATUS_GOOD;
- if (itemtype == BH_SCSI_READ_TYPE_FRONT)
+ if (itemtype == BH_SCSI_READ_TYPE_FRONT)
{
DBG (3, "get_parameters: sending GET WINDOW (front)\n");
status = get_window (s, &w, &l, SANE_FALSE);
@@ -1293,7 +1293,7 @@ get_parameters (SANE_Handle handle, SANE_Parameters *params)
length = s->sections[sectnum - 1].length * res / 1000.0;
}
else if ( (itemtype >= BH_SCSI_READ_TYPE_BACK_BARCODE &&
- itemtype <= (BH_SCSI_READ_TYPE_BACK_BARCODE + NUM_SECTIONS)) ||
+ itemtype <= (BH_SCSI_READ_TYPE_BACK_BARCODE + NUM_SECTIONS)) ||
(itemtype >= BH_SCSI_READ_TYPE_FRONT_BARCODE &&
itemtype <= (BH_SCSI_READ_TYPE_FRONT_BARCODE + NUM_SECTIONS)) )
{
@@ -1331,7 +1331,7 @@ get_parameters (SANE_Handle handle, SANE_Parameters *params)
res, width, length);
return SANE_STATUS_INVAL;
}
-
+
/* we disable our compression/barcode formats in preview as well
* as with the disable_optional_frames configuration option. NOTE:
* we may still be delivering 'wierd' data and lying about it being _GRAY!
@@ -1357,11 +1357,11 @@ get_parameters (SANE_Handle handle, SANE_Parameters *params)
*params = s->params;
DBG (1, "get_parameters: format=%d, pixels/line=%d, bytes/line=%d, "
- "lines=%d, dpi=%d\n",
- (int) s->params.format,
- s->params.pixels_per_line,
+ "lines=%d, dpi=%d\n",
+ (int) s->params.format,
+ s->params.pixels_per_line,
s->params.bytes_per_line,
- s->params.lines,
+ s->params.lines,
res);
return SANE_STATUS_GOOD;
@@ -1404,7 +1404,7 @@ section_parse(const char *val, BH_Section *sect, SANE_Int res, SANE_Int comp)
if (y) f = strtok(NULL, seps);
if (!x || !y || !w || !l) break;
- mm = strtod(x, &ep);
+ mm = strtod(x, &ep);
if (*ep != '\0' || errno == ERANGE || mm < 0.0) break;
sect->left = mm * 1000.0 / MM_PER_INCH;
@@ -1482,10 +1482,10 @@ section_parse(const char *val, BH_Section *sect, SANE_Int res, SANE_Int comp)
DBG(3, "section_parse: converted '%s' (mm) to "
"%ldx%ld+%ld+%ld (thousandths) "
- "flags=%02x compression=[%d,%d] frame=%s\n",
- val,
+ "flags=%02x compression=[%d,%d] frame=%s\n",
+ val,
sect->width, sect->length, sect->left, sect->top,
- sect->flags,
+ sect->flags,
sect->compressiontype, sect->compressionarg,
sane_strframe(sect->format));
@@ -1515,20 +1515,20 @@ setup_sections (BH_Scanner *s, const char *val)
strcpy(buf, val);
section = strtok(buf, ",");
- while (section != NULL && sectnum < NUM_SECTIONS)
+ while (section != NULL && sectnum < NUM_SECTIONS)
{
- if (!allblank(section))
+ if (!allblank(section))
{
SANE_Int res = _OPT_VAL_WORD(s, OPT_RESOLUTION);
- SANE_Int format =
+ SANE_Int format =
get_compression_id(_OPT_VAL_STRING(s, OPT_COMPRESSION));
- status = section_parse(section, &s->sections[sectnum],
+ status = section_parse(section, &s->sections[sectnum],
res, format);
if (status != SANE_STATUS_GOOD)
{
- DBG(1,
- "setup_sections: error parsing section `%s'\n",
+ DBG(1,
+ "setup_sections: error parsing section `%s'\n",
section);
break;
}
@@ -1562,12 +1562,12 @@ start_setup (BH_Scanner *s)
status = setup_sections(s, _OPT_VAL_STRING(s, OPT_SECTION));
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: setup_sections failed: %s\n",
+ DBG(1, "start_setup: setup_sections failed: %s\n",
sane_strstatus(status));
return status;
}
- /* see whether we'll be decoding barcodes and
+ /* see whether we'll be decoding barcodes and
* set the barcodes flag appropriately
*/
if (s->search_bars[0] == 0)
@@ -1655,10 +1655,10 @@ start_setup (BH_Scanner *s)
SANE_Word flags = s->sections[i].flags;
if (flags & BH_SECTION_FRONT_BAR)
- s->readlist[s->readcnt++] =
+ s->readlist[s->readcnt++] =
BH_SCSI_READ_TYPE_FRONT_BARCODE + i + 1;
if (flags & BH_SECTION_BACK_BAR)
- s->readlist[s->readcnt++] =
+ s->readlist[s->readcnt++] =
BH_SCSI_READ_TYPE_BACK_BARCODE + i + 1;
}
}
@@ -1687,10 +1687,10 @@ start_setup (BH_Scanner *s)
SANE_Word flags = s->sections[i].flags;
if (flags & BH_SECTION_FRONT_PATCH)
- s->readlist[s->readcnt++] =
+ s->readlist[s->readcnt++] =
BH_SCSI_READ_TYPE_FRONT_PATCHCODE + i + 1;
if (flags & BH_SECTION_BACK_PATCH)
- s->readlist[s->readcnt++] =
+ s->readlist[s->readcnt++] =
BH_SCSI_READ_TYPE_BACK_PATCHCODE + i + 1;
}
}
@@ -1707,7 +1707,7 @@ start_setup (BH_Scanner *s)
if (_OPT_VAL_WORD(s, OPT_BATCH) == SANE_TRUE)
{
- /* if batchmode is enabled, then call set_window to
+ /* if batchmode is enabled, then call set_window to
* abort the batch (even though there might not (and probably
* isn't) a batch in progress). This avoids a batch start error
* in the case where a previous batch was not aborted.
@@ -1716,7 +1716,7 @@ start_setup (BH_Scanner *s)
set_window(s, BH_BATCH_ABORT);
batchmode = BH_BATCH_ENABLE;
- }
+ }
else
{
batchmode = BH_BATCH_DISABLE;
@@ -1750,7 +1750,7 @@ start_setup (BH_Scanner *s)
status = set_window(s, batchmode);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: SET WINDOW failed: %s\n",
+ DBG(1, "start_setup: SET WINDOW failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1759,7 +1759,7 @@ start_setup (BH_Scanner *s)
status = mode_select_timeout(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_timeout failed: %s\n",
+ DBG(1, "start_setup: mode_select_timeout failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1770,7 +1770,7 @@ start_setup (BH_Scanner *s)
status = mode_select_icon(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_icon failed: %s\n",
+ DBG(1, "start_setup: mode_select_icon failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1782,7 +1782,7 @@ start_setup (BH_Scanner *s)
status = mode_select_barcode_priority(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_barcode_priority failed: %s\n",
+ DBG(1, "start_setup: mode_select_barcode_priority failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1791,7 +1791,7 @@ start_setup (BH_Scanner *s)
status = mode_select_barcode_param1(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_barcode_param1 failed: %s\n",
+ DBG(1, "start_setup: mode_select_barcode_param1 failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1800,7 +1800,7 @@ start_setup (BH_Scanner *s)
status = mode_select_barcode_param2(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_barcode_param2 failed: %s\n",
+ DBG(1, "start_setup: mode_select_barcode_param2 failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1809,7 +1809,7 @@ start_setup (BH_Scanner *s)
status = mode_select_barcode_param3(s);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "start_setup: mode_select_barcode_param3 failed: %s\n",
+ DBG(1, "start_setup: mode_select_barcode_param3 failed: %s\n",
sane_strstatus(status));
return status;
}
@@ -1829,13 +1829,13 @@ start_scan (BH_Scanner *s)
/* SANE front ends will call this function between 'FRAMES'.
* A single scan on the B&H may result in up to 56 different
* things to read (20 are SANE image frames, 36 are non-SANE
- * data - decoded bar/patch codes).
+ * data - decoded bar/patch codes).
*/
if (s->readcnt > 1 && s->scanning == SANE_TRUE)
{
DBG(3, "start_scan: any more items in the readlist?\n");
- /* we've been reading data from this scan, so we just
+ /* we've been reading data from this scan, so we just
* move on to the next item in the readlist without
* starting a new scan.
*/
@@ -1850,7 +1850,7 @@ start_scan (BH_Scanner *s)
itemtype = s->readlist[s->readptr];
DBG(3, "start_scan: advance readlist(%d, %d)\n",
- s->readptr,
+ s->readptr,
(int) itemtype);
/* 'dance' by the non-SANE data streams
@@ -1869,12 +1869,12 @@ start_scan (BH_Scanner *s)
{
fprintf(fp, "<xml-stream>\n");
- for (;
- s->readptr < s->readcnt &&
- status == SANE_STATUS_GOOD;
+ for (;
+ s->readptr < s->readcnt &&
+ status == SANE_STATUS_GOOD;
s->readptr++)
{
- if (s->readlist[s->readptr] ==
+ if (s->readlist[s->readptr] ==
BH_SCSI_READ_TYPE_SENDBARFILE) {
break;
}
@@ -1888,14 +1888,14 @@ start_scan (BH_Scanner *s)
fclose(fp);
if ((s->barf = fopen(s->barfname, "r")) == NULL)
{
- DBG(1, "sane_start: error opening barfile `%s'\n",
+ DBG(1, "sane_start: error opening barfile `%s'\n",
s->barfname);
status = SANE_STATUS_IO_ERROR;
}
}
else
{
- DBG(1, "sane_start: error opening barfile `%s'\n",
+ DBG(1, "sane_start: error opening barfile `%s'\n",
s->barfname);
status = SANE_STATUS_IO_ERROR;
}
@@ -1905,7 +1905,7 @@ start_scan (BH_Scanner *s)
{
/* read the icon header setting the iconwidth and iconlength
* to the actual values so get_parameters will have them.
- * Subsequent calls to sane_read will get pure image data
+ * Subsequent calls to sane_read will get pure image data
* since the icon header has been consumed.
*/
@@ -1922,7 +1922,7 @@ start_scan (BH_Scanner *s)
return status;
}
- /* if we reach here, we're finished with the readlist and
+ /* if we reach here, we're finished with the readlist and
* will drop through to start a new scan
*/
}
@@ -1990,7 +1990,7 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
EOM = (result[2] & 0x40) != 0; /* End Of Media */
ILI = (result[2] & 0x20) != 0; /* Invalid Length Indicator */
InvalidBytes = ValidData ? _4btol(&result[3]) : 0;
-
+
DBG(3, "sense_handler: result=%x, sense=%x, asc=%x, ascq=%x\n",
result[0], sense, asc, ascq);
DBG(3, "sense_handler: ErrorCode %02x ValidData: %d "
@@ -2010,8 +2010,8 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
return SANE_STATUS_IO_ERROR; /* error code is invalid */
}
- /* handle each sense key;
- * RSC supports 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0B
+ /* handle each sense key;
+ * RSC supports 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0B
*/
switch (sense)
{
@@ -2303,7 +2303,7 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
break;
}
- DBG(3, "sense_handler: '%s' '%s' return:%d\n",
+ DBG(3, "sense_handler: '%s' '%s' return:%d\n",
sense_str, as_str, status);
return status;
@@ -2712,7 +2712,7 @@ init_options (BH_Scanner * s)
s->opt[OPT_BARCODE_SEARCH_BAR].constraint.string_list = barcode_search_bar_list;
s->opt[OPT_BARCODE_SEARCH_BAR].size = max_string_size (barcode_search_bar_list);
s->val[OPT_BARCODE_SEARCH_BAR].s = strdup (barcode_search_bar_list[0]);
-
+
/* Barcode search count (1-7, default 1). */
s->opt[OPT_BARCODE_SEARCH_COUNT].name = SANE_NAME_BARCODE_SEARCH_COUNT;
s->opt[OPT_BARCODE_SEARCH_COUNT].title = SANE_TITLE_BARCODE_SEARCH_COUNT;
@@ -2762,7 +2762,7 @@ init_options (BH_Scanner * s)
s->opt[OPT_SECTION].constraint_type = SANE_CONSTRAINT_NONE;
s->opt[OPT_SECTION].size = 255;
s->val[OPT_SECTION].s = strdup ("");
-
+
/* Barcode_Relmax */
s->opt[OPT_BARCODE_RELMAX].name = SANE_NAME_BARCODE_RELMAX;
s->opt[OPT_BARCODE_RELMAX].title = SANE_TITLE_BARCODE_RELMAX;
@@ -2907,7 +2907,7 @@ attach (const char *devnam, BH_Device ** devp)
BH_INQUIRY_STANDARD_PAGE_CODE);
if (status != SANE_STATUS_GOOD)
{
- DBG (1, "attach: inquiry (standard data) failed: %s\n",
+ DBG (1, "attach: inquiry (standard data) failed: %s\n",
sane_strstatus (status));
sanei_scsi_close (fd);
return status;
@@ -2922,7 +2922,7 @@ attach (const char *devnam, BH_Device ** devp)
|| strncmp ((char *)ibuf.vendor, "B&H SCSI", 8) != 0
|| strncmp ((char *)ibuf.product, "COPISCAN ", 9) != 0)
{
- DBG (1,
+ DBG (1,
"attach: device is not a recognized Bell and Howell scanner\n");
sanei_scsi_close (fd);
return SANE_STATUS_INVAL;
@@ -2931,11 +2931,11 @@ attach (const char *devnam, BH_Device ** devp)
DBG (3, "attach: sending INQUIRY (vpd data)\n");
memset (&vbuf, 0, sizeof (vbuf));
buf_size = sizeof(vbuf);
- status = inquiry (fd, &vbuf, &buf_size, 1,
+ status = inquiry (fd, &vbuf, &buf_size, 1,
BH_INQUIRY_VPD_PAGE_CODE);
if (status != SANE_STATUS_GOOD)
{
- DBG (1, "attach: inquiry (vpd data) failed: %s\n",
+ DBG (1, "attach: inquiry (vpd data) failed: %s\n",
sane_strstatus (status));
sanei_scsi_close (fd);
return status;
@@ -2944,7 +2944,7 @@ attach (const char *devnam, BH_Device ** devp)
DBG (3, "attach: sending INQUIRY (jis data)\n");
memset (&jbuf, 0, sizeof (jbuf));
buf_size = sizeof(jbuf);
- status = inquiry (fd, &jbuf, &buf_size, 1,
+ status = inquiry (fd, &jbuf, &buf_size, 1,
BH_INQUIRY_JIS_PAGE_CODE);
if (status != SANE_STATUS_GOOD)
{
@@ -3044,7 +3044,7 @@ attach (const char *devnam, BH_Device ** devp)
if (jbuf.standardres[1] & 0x04) appendStdList(&dev->info, 600);
if (jbuf.standardres[1] & 0x02) appendStdList(&dev->info, 800);
if (jbuf.standardres[1] & 0x01) appendStdList(&dev->info, 1200);
- if (dev->info.resStdList[0] == 0)
+ if (dev->info.resStdList[0] == 0)
{
/* make a default standard resolutions for 200 and 300dpi */
DBG(1, "attach: no standard resolutions reported\n");
@@ -3053,29 +3053,29 @@ attach (const char *devnam, BH_Device ** devp)
dev->info.resStdList[2] = 300;
dev->info.resBasicX = dev->info.resBasicY = 300;
}
-
+
dev->info.winWidth = _4btol(jbuf.windowwidth);
dev->info.winHeight = _4btol(jbuf.windowlength);
- if (dev->info.winWidth <= 0)
+ if (dev->info.winWidth <= 0)
{
dev->info.winWidth = (SANE_Int) (dev->info.resBasicX * 8.5);
DBG(1, "attach: invalid window width reported, using %d\n", dev->info.winWidth);
}
- if (dev->info.winHeight <= 0)
+ if (dev->info.winHeight <= 0)
{
dev->info.winHeight = dev->info.resBasicY * 14;
DBG(1, "attach: invalid window height reported, using %d\n", dev->info.winHeight);
}
- mm = (dev->info.resBasicX > 0) ?
+ mm = (dev->info.resBasicX > 0) ?
((double) dev->info.winWidth / (double) dev->info.resBasicX * MM_PER_INCH) :
0.0;
dev->info.x_range.min = SANE_FIX(0.0);
dev->info.x_range.max = SANE_FIX(mm);
dev->info.x_range.quant = SANE_FIX(0.0);
- mm = (dev->info.resBasicY > 0) ?
+ mm = (dev->info.resBasicY > 0) ?
((double) dev->info.winHeight / (double) dev->info.resBasicY * MM_PER_INCH) :
0.0;
dev->info.y_range.min = SANE_FIX(0.0);
@@ -3157,35 +3157,35 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
if (version_code)
*version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, BUILD);
-
+
fp = sanei_config_open(BH_CONFIG_FILE);
if (fp)
{
char line[PATH_MAX];
const char *lp;
size_t len;
-
+
/* read config file */
while (sanei_config_read (line, sizeof (line), fp))
{
if (line[0] == '#') /* ignore line comments */
continue;
len = strlen (line);
-
+
if (!len)
continue; /* ignore empty lines */
-
+
lp = sanei_config_skip_whitespace (line);
- DBG(16,
+ DBG(16,
"sane_init: processing config file line '%s'\n",
line);
- if (strncmp(lp, "option", 6) == 0 &&
+ if (strncmp(lp, "option", 6) == 0 &&
(isspace (lp[6]) || lp[6] == '\0'))
{
lp += 6;
lp = sanei_config_skip_whitespace (lp);
-
+
if (strncmp(lp, "disable-optional-frames", 23) == 0)
{
DBG(1, "sane_init: configuration option "
@@ -3205,15 +3205,15 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
lp);
}
}
- else
+ else
{
- DBG(16,
+ DBG(16,
"sane_init: found a device: line '%s'\n",
lp);
strncpy (devnam, lp, sizeof(devnam));
devnam[sizeof(devnam)-1] = '\0';
-
- sanei_config_attach_matching_devices(devnam,
+
+ sanei_config_attach_matching_devices(devnam,
attach_one);
}
}
@@ -3228,7 +3228,7 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
return SANE_STATUS_GOOD;
}
-SANE_Status
+SANE_Status
sane_get_devices (const SANE_Device ***device_list, SANE_Bool local)
{
BH_Device *dev;
@@ -3259,7 +3259,7 @@ sane_open (SANE_String_Const devnam, SANE_Handle *handle)
BH_Device *dev;
BH_Scanner *s;
DBG(3, "sane_open called\n");
-
+
if (devnam[0] != '\0')
{
for (dev = first_dev; dev; dev = dev->next)
@@ -3279,7 +3279,7 @@ sane_open (SANE_String_Const devnam, SANE_Handle *handle)
{
dev = first_dev;
}
-
+
if (!dev)
return SANE_STATUS_INVAL;
@@ -3432,22 +3432,22 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
{
case SANE_TYPE_BOOL:
case SANE_TYPE_INT:
- DBG(16, "sane_control_option: set_value %s [#%d] to %d\n",
+ DBG(16, "sane_control_option: set_value %s [#%d] to %d\n",
name, option, *(SANE_Word *) val);
break;
-
+
case SANE_TYPE_FIXED:
- DBG(16, "sane_control_option: set_value %s [#%d] to %f\n",
+ DBG(16, "sane_control_option: set_value %s [#%d] to %f\n",
name, option, SANE_UNFIX(*(SANE_Word *) val));
break;
-
+
case SANE_TYPE_STRING:
- DBG(16, "sane_control_option: set_value %s [#%d] to %s\n",
+ DBG(16, "sane_control_option: set_value %s [#%d] to %s\n",
name, option, (char *) val);
break;
-
+
default:
- DBG(16, "sane_control_option: set_value %s [#%d]\n",
+ DBG(16, "sane_control_option: set_value %s [#%d]\n",
name, option);
}
@@ -3504,7 +3504,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
case OPT_NUM_OPTS:
s->val[option].w = *(SANE_Word *) val;
return SANE_STATUS_GOOD;
-
+
/* string options */
case OPT_BARCODE_SEARCH_BAR:
/*!!! we're supporting only a single barcode type via the option */
@@ -3584,7 +3584,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
if (info) *info |= SANE_INFO_RELOAD_OPTIONS;
if (get_scan_mode_id((SANE_String) val) != 0)
{
- /* scan mode is not lineart, disable compression
+ /* scan mode is not lineart, disable compression
* and set compression to 'none'
*/
s->opt[OPT_COMPRESSION].cap |= SANE_CAP_INACTIVE;
@@ -3622,9 +3622,9 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
x_max = SANE_UNFIX(s->hw->info.x_range.max);
y_max = SANE_UNFIX(s->hw->info.y_range.max);
/* a dimension of 0.0 (or less) is replaced with the max value */
- x = (paper_sizes[paper_id].width <= 0.0) ? x_max :
+ x = (paper_sizes[paper_id].width <= 0.0) ? x_max :
paper_sizes[paper_id].width;
- y = (paper_sizes[paper_id].length <= 0.0) ? y_max :
+ y = (paper_sizes[paper_id].length <= 0.0) ? y_max :
paper_sizes[paper_id].length;
if (info) *info |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
@@ -3644,8 +3644,8 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
left = 0.0;
}
- s->val[OPT_TL_X].w = SANE_FIX(left);
- s->val[OPT_TL_Y].w = SANE_FIX(0.0);
+ s->val[OPT_TL_X].w = SANE_FIX(left);
+ s->val[OPT_TL_Y].w = SANE_FIX(0.0);
s->val[OPT_BR_X].w = SANE_FIX(MIN(x + left, x_max));
s->val[OPT_BR_Y].w = SANE_FIX(MIN(y, y_max));
}
@@ -3670,7 +3670,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
SANE_Int status = SANE_STATUS_GOOD;
DBG(3, "sane_get_parameters called\n");
-
+
if (params)
{
SANE_Int res;
@@ -3686,11 +3686,11 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
res = _OPT_VAL_WORD(s, OPT_RESOLUTION);
DBG (1, "get_parameters: format=%d, pixels/line=%d, bytes/line=%d, "
- "lines=%d, dpi=%d\n",
- (int) s->params.format,
- s->params.pixels_per_line,
+ "lines=%d, dpi=%d\n",
+ (int) s->params.format,
+ s->params.pixels_per_line,
s->params.bytes_per_line,
- s->params.lines,
+ s->params.lines,
res);
}
@@ -3718,7 +3718,7 @@ sane_start (SANE_Handle handle)
}
/* Do the setup once per 'batch'. The SANE standard requires the
- * frontend to call sane_cancel once all desired frames have been
+ * frontend to call sane_cancel once all desired frames have been
* acquired. That is when scanning is set back to SANE_FALSE and
* the 'batch' is considered done.
*/
@@ -3739,7 +3739,7 @@ sane_start (SANE_Handle handle)
return status;
}
- return SANE_STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
SANE_Status
@@ -3795,13 +3795,13 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
DBG(3, "sane_set_io_mode called: non_blocking=%d\n", non_blocking);
#ifdef NONBLOCKSUPPORTED
- if (s->fd < 0)
- {
- return SANE_STATUS_INVAL;
+ if (s->fd < 0)
+ {
+ return SANE_STATUS_INVAL;
}
if (fcntl (s->fd, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0)
- {
+ {
DBG(1, "sane_set_io_mode: error setting io mode\n");
return SANE_STATUS_IO_ERROR;
}
@@ -3823,8 +3823,8 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int *fd)
#ifdef NONBLOCKSUPPORTED
if (s->fd < 0)
- {
- return SANE_STATUS_INVAL;
+ {
+ return SANE_STATUS_INVAL;
}
*fd = s->fd;
@@ -3842,14 +3842,14 @@ sane_cancel (SANE_Handle handle)
DBG(3, "sane_cancel called\n");
if (s->scanning)
{
- /* if batchmode is enabled, then call set_window to
+ /* if batchmode is enabled, then call set_window to
* abort the batch
*/
if (_OPT_VAL_WORD(s, OPT_BATCH) == SANE_TRUE)
{
DBG(5, "sane_cancel: calling set_window to abort batch\n");
set_window(s, BH_BATCH_ABORT);
- }
+ }
}
s->scanning = SANE_FALSE;
s->cancelled = SANE_TRUE;
@@ -3878,8 +3878,7 @@ sane_exit (void)
next = dev->next;
free (dev);
}
-
+
if (devlist)
free (devlist);
}
-
diff --git a/backend/bh.h b/backend/bh.h
index 545ffb1..fcd833a 100644
--- a/backend/bh.h
+++ b/backend/bh.h
@@ -73,16 +73,16 @@
#define BH_SECTION_FRONT_PATCH (1 << 4)
#define BH_SECTION_BACK_PATCH (1 << 5)
-typedef enum
-{
- BH_UNIT_INCH,
- BH_UNIT_MM,
+typedef enum
+{
+ BH_UNIT_INCH,
+ BH_UNIT_MM,
BH_UNIT_POINT
} bh_measureUnit;
typedef enum
{
- BH_COMP_NONE,
+ BH_COMP_NONE,
BH_COMP_G31D,
BH_COMP_G32D,
BH_COMP_G42D
@@ -90,13 +90,13 @@ typedef enum
typedef enum
{
- BH_ROTATION_0,
+ BH_ROTATION_0,
BH_ROTATION_90,
BH_ROTATION_180,
BH_ROTATION_270
} bh_rotation;
-typedef enum
+typedef enum
{
OPT_NUM_OPTS = 0,
@@ -171,30 +171,30 @@ typedef enum
OPT_BARCODE_SEARCH_BAR,
/* Barcode search count (1-7, default 3). */
OPT_BARCODE_SEARCH_COUNT,
- /* Barcode search mode.
- * (1 = horizontal,2 = vertical, 6 = v then h, 9 = h then v).
+ /* Barcode search mode.
+ * (1 = horizontal,2 = vertical, 6 = v then h, 9 = h then v).
*/
OPT_BARCODE_SEARCH_MODE,
/* Patch code min height (def=127 (5mm)) */
- OPT_BARCODE_HMIN,
- /* Barcode search timeout in ms
- * (20-65535,default is disabled).
+ OPT_BARCODE_HMIN,
+ /* Barcode search timeout in ms
+ * (20-65535,default is disabled).
*/
OPT_BARCODE_SEARCH_TIMEOUT,
/* Specify image sections and functions
*/
OPT_SECTION,
- /* Specifies the maximum relation from the widest to
- * the smallest bar
+ /* Specifies the maximum relation from the widest to
+ * the smallest bar
*/
OPT_BARCODE_RELMAX,
/* Specifies the minimum number of bars in Bar/Patch code */
OPT_BARCODE_BARMIN,
/* Specifies the maximum number of bars in a Bar/Patch code */
OPT_BARCODE_BARMAX,
- /* Specifies the image contrast used in decoding.
- * Use higher values when there are more white pixels
- * in the code
+ /* Specifies the image contrast used in decoding.
+ * Use higher values when there are more white pixels
+ * in the code
*/
OPT_BARCODE_CONTRAST,
/* Controls Patch Code detection. */
@@ -291,8 +291,8 @@ typedef struct _BH_Info
SANE_Int resMaxY; /* maximum Y resolution */
SANE_Int resMinX; /* minimum X resolution */
SANE_Int resMinY; /* minimum Y resolution */
- SANE_Int resStdList[16+1]; /* list of available standard resolutions
- * (first slot is the length)
+ SANE_Int resStdList[16+1]; /* list of available standard resolutions
+ * (first slot is the length)
*/
SANE_Int winWidth; /* length of window (in BasicX res DPI) */
SANE_Int winHeight; /* height of window (in BasicY res DPI) */
@@ -321,7 +321,7 @@ struct _BH_Scanner
/* SCSI filedescriptor */
int fd;
-
+
/* tempfile which is used to send decoded barcode data */
FILE *barf;
char barfname[PATH_MAX+1];
@@ -337,7 +337,7 @@ struct _BH_Scanner
/* SANE image parameters */
SANE_Parameters params;
-
+
/* state information - not options */
/* Basic Measurement Unit */
@@ -394,9 +394,9 @@ static const SANE_Range barcode_search_timeout_range =
static const SANE_Range barcode_hmin_range =
{
1, /* minimum */
- 1660, /* maximum (when converted from mm
- * to thousandths will still be less
- * than 65536)
+ 1660, /* maximum (when converted from mm
+ * to thousandths will still be less
+ * than 65536)
*/
0 /* quantization */
};
@@ -915,7 +915,7 @@ struct mode_page_03 {
SANE_Byte mediumtype;
SANE_Byte devicespecificparam;
SANE_Byte blockdescriptorlen;
-
+
SANE_Byte pagecode;
SANE_Byte paramlen;
SANE_Byte bmu;
diff --git a/backend/canon-sane.c b/backend/canon-sane.c
index a8efc7a..5d9ec99 100644
--- a/backend/canon-sane.c
+++ b/backend/canon-sane.c
@@ -1126,7 +1126,7 @@ sane_start (SANE_Handle handle)
if (thistmpfile != NULL)
{
if (mktemp(thistmpfile) == 0)
- {
+ {
DBG(1, "mktemp(thistmpfile) is failed\n");
return (SANE_STATUS_INVAL);
}
diff --git a/backend/canon-scsi.c b/backend/canon-scsi.c
index a83e518..0bddf51 100644
--- a/backend/canon-scsi.c
+++ b/backend/canon-scsi.c
@@ -623,7 +623,7 @@ wait_ready(int fd)
while ((status = test_unit_ready (fd)) != SANE_STATUS_GOOD)
{
DBG(5, "wait_ready failed (%d)\n", retry);
- if (retry++ > 15)
+ if (retry++ > 15)
return SANE_STATUS_IO_ERROR;
sleep(3);
}
diff --git a/backend/canon.c b/backend/canon.c
index 168b2d6..ad738e8 100644
--- a/backend/canon.c
+++ b/backend/canon.c
@@ -62,7 +62,7 @@
. . - sane_get_parameters() : returns actual scan-parameters
. . - sane_read() : read image-data (from pipe)
. . - sane_cancel() : cancel operation, kill reader_process
-
+
. - sane_close() : close opened scanner-device, do_cancel, free buffer and handle
- sane_exit() : terminate use of backend, free devicename and device-struture
*/
@@ -140,7 +140,7 @@ static const SANE_String_Const mode_list[] = {
SANE_VALUE_SCAN_MODE_HALFTONE,
SANE_VALUE_SCAN_MODE_GRAY,
SANE_VALUE_SCAN_MODE_COLOR,
- 0
+ 0
};
/* modification for FS2710 */
@@ -193,11 +193,6 @@ static const SANE_String_Const tpu_filmtype_list[] = {
0
};
-static const SANE_String_Const papersize_list[] = {
- "A4", "Letter", "B5", "Maximal",
- 0
-};
-
/**************************************************/
static const SANE_Range u8_range = {
diff --git a/backend/canon630u-common.c b/backend/canon630u-common.c
index a46424a..27c34ff 100644
--- a/backend/canon630u-common.c
+++ b/backend/canon630u-common.c
@@ -35,15 +35,15 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
Communication, calibration, and scanning with the Canon CanoScan FB630U
flatbed scanner under linux.
-
+
Reworked into SANE-compatible format.
-
+
The usb-parallel port interface chip is GL640usb, on the far side of
which is an LM9830 parallel-port scanner-on-a-chip.
@@ -153,7 +153,7 @@ gl640ReadReq (int fd, GL640_Request req, byte * data)
}
-/* Write USB bulk data
+/* Write USB bulk data
setup is an apparently scanner-specific sequence:
{(0=read, 1=write), 0x00, 0x00, 0x00, sizelo, sizehi, 0x00, 0x00}
hp3400: setup[1] = 0x01
@@ -177,7 +177,7 @@ gl640WriteBulk (int fd, byte * setup, byte * data, size_t size)
}
-/* Read USB bulk data
+/* Read USB bulk data
setup is an apparently scanner-specific sequence:
{(0=read, 1=write), 0x00, 0x00, 0x00, sizelo, sizehi, 0x00, 0x00}
fb630u: setup[2] = 0x80
@@ -461,7 +461,7 @@ typedef struct CANON_Handle
#define FLG_GRAY 0x01 /* grayscale */
#define FLG_FORCE_CAL 0x02 /* force calibration */
#define FLG_BUF 0x04 /* save scan to buffer instead of file */
-#define FLG_NO_INTERLEAVE 0x08 /* don't interleave r,g,b pixels; leave them
+#define FLG_NO_INTERLEAVE 0x08 /* don't interleave r,g,b pixels; leave them
in row format */
#define FLG_PPM_HEADER 0x10 /* include PPM header in scan file */
}
@@ -501,7 +501,7 @@ init (int fd)
{
byte result, rv;
- if (gl640WriteReq (fd, GL640_GPIO_OE, 0x71) != SANE_STATUS_GOOD) {
+ if (gl640WriteReq (fd, GL640_GPIO_OE, 0x71) != SANE_STATUS_GOOD) {
DBG(1, "Initial write request failed.\n");
return -1;
}
@@ -653,7 +653,7 @@ do_scan (CANON_Handle * s)
fwrite (redptr + s->width, 1, 1, fp); /* Green */
fwrite (redptr + s->width + s->width, 1, 1, fp); /* Blue */
/* for PPM ascii (P3)
- fprintf(fp, "%3d %3d %3d\n", *redptr,
+ fprintf(fp, "%3d %3d %3d\n", *redptr,
*(redptr + s->width),
*(redptr + s->width + s->width));
*/
@@ -869,8 +869,8 @@ plugin_cal (CANON_Handle * s)
write_word (fd, LAMP_B_OFF, 0x0100);
/* coming in, we've got 300dpi,
data px start : 0x004b
- data px end : 0x1437 for a total of 5100(13ec) 600-dpi pixels,
- (8.5 inches) or 2550 300-dpi pixels (7653 bytes).
+ data px end : 0x1437 for a total of 5100(13ec) 600-dpi pixels,
+ (8.5 inches) or 2550 300-dpi pixels (7653 bytes).
Interestingly, the scan head never moves, no matter how many rows
are read. */
s->width = 2551;
@@ -981,7 +981,7 @@ plugin_cal (CANON_Handle * s)
somewhat more complicated than necessary because I don't hard-code the
strip widths; I try to figure out the regions based on the scan data.
Theoretically, the region-finder should work for any number of distinct
- regions (but there are only 2 on this scanner.)
+ regions (but there are only 2 on this scanner.)
This produces the CAL_FILE_OGN file, the final offset/gain table. */
static SANE_Status
compute_ogn (char *calfilename)
@@ -1132,7 +1132,7 @@ compute_ogn (char *calfilename)
continue;
}
- /* Gain multiplier:
+ /* Gain multiplier:
255 : 1.5 times brighter
511 : 2 times brighter
1023: 3 times brighter */
@@ -1146,9 +1146,9 @@ compute_ogn (char *calfilename)
offset would be bad. */
/* Enhanced offset and gain calculation by M.Reinelt <reinelt@eunet.at>
- * These expressions were found by an iterative calibration process,
+ * These expressions were found by an iterative calibration process,
* by changing gain and offset values for every pixel until the desired
- * values for black and white were reached, and finding an approximation
+ * values for black and white were reached, and finding an approximation
* formula.
* Note that offset is linear, but gain isn't!
*/
@@ -1256,8 +1256,8 @@ scan (CANON_Handle * opt)
read_byte (fd, STATUS, &result); /* wants 2f or 2d */
if (!(result & STATUS_HOME) /*0x2d */ )
return SANE_STATUS_DEVICE_BUSY;
- /* or force it to return?
- write_byte(fd, COMMAND, 0x02);
+ /* or force it to return?
+ write_byte(fd, COMMAND, 0x02);
wait_for_return(fd);
*/
@@ -1439,9 +1439,9 @@ CANON_set_scan_parameters (CANON_Handle * scan,
const int left,
const int top,
const int right,
- const int bottom,
- const int res,
- const int gain,
+ const int bottom,
+ const int res,
+ const int gain,
const double gamma)
{
DBG (2, "CANON_set_scan_parameters:\n");
@@ -1593,12 +1593,12 @@ CANON_start_scan (CANON_Handle * scanner)
return SANE_STATUS_IO_ERROR;
}
if ((rv == 1)
- || !check_ogn_file ()
+ || !check_ogn_file ()
|| (scanner->flags & FLG_FORCE_CAL)) {
plugin_cal (scanner);
wait_for_return (scanner->fd);
}
-
+
/* scan */
if ((status = scan (scanner)) != SANE_STATUS_GOOD)
{
diff --git a/backend/canon630u.c b/backend/canon630u.c
index 5c1a711..c413253 100644
--- a/backend/canon630u.c
+++ b/backend/canon630u.c
@@ -703,7 +703,7 @@ attach_one (const char *name)
}
-/*
+/*
Find our devices
*/
SANE_Status
@@ -995,7 +995,7 @@ sane_start (SANE_Handle handle)
MM_IN_INCH * 600,
SANE_UNFIX (optionBotRightYValue) /
MM_IN_INCH * 600,
- optionResolutionValue,
+ optionResolutionValue,
optionAGainValue,
SANE_UNFIX (optionGammaValue));
diff --git a/backend/canon_dr-cmd.h b/backend/canon_dr-cmd.h
index b969c3b..51f2a06 100644
--- a/backend/canon_dr-cmd.h
+++ b/backend/canon_dr-cmd.h
@@ -1,7 +1,7 @@
#ifndef CANON_DR_CMD_H
#define CANON_DR_CMD_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comments in canon_dr.c
*/
@@ -258,6 +258,11 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define R_FINE_uid_blue 0x09
#define R_FINE_uid_unknown 0x14
+/* get pixel size */
+#define R_PSIZE_len 16
+#define get_R_PSIZE_width(in) getnbyte(in + 0x08, 4)
+#define get_R_PSIZE_length(in) getnbyte(in + 0x0c, 4)
+
/* ==================================================================== */
/* SEND */
#define SEND_code 0x2a
@@ -431,6 +436,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define SM2_pc_df 0x00
#define SM2_pc_ultra 0x01
#define SM2_pc_buffer 0x02
+#define SM2_pc_hw_enhancement 0x03
#define SM2_pc_dropout 0x06
/* ==================================================================== */
@@ -447,6 +453,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/* for DF (0x00) page */
#define set_SSM2_DF_thick(sb, val) setbitfield(sb+3, 1, 2, val)
#define set_SSM2_DF_len(sb, val) setbitfield(sb+3, 1, 0, val)
+#define set_SSM2_DF_staple(sb, val) setbitfield(sb+3, 1, 4, val)
/* for ULTRA (0x01) page */
#define set_SSM2_ULTRA_top(sb, val) putnbyte(sb + 0x07, val, 2)
@@ -457,9 +464,14 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define set_SSM2_BUFF_unk2(sb, val) sb[0x06] = val
#define set_SSM2_BUFF_sync(sb, val) sb[0x09] = val
+/* for HARDWARE ENHANCEMENT (0x03) */
+#define set_SSM2_roller_deskew(sb, val) setbitfield(sb+6, 1, 3, val)
+#define set_SSM2_hw_crop(sb, val) setbitfield(sb+6, 1, 5, val)
+
/* for DROPOUT (0x06) page */
#define set_SSM2_DO_do(sb, val) sb[0x09] = val
#define set_SSM2_DO_en(sb, val) sb[0x0a] = val
+#define set_SSM2_DO_side(sb, val) sb[0x05] = val
/* ==================================================================== */
/* window descriptor macros for SET_WINDOW and GET_WINDOW */
@@ -571,7 +583,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/* FIXME: more params here? */
#define set_WD_reserved2(sb, val) sb[0x2a] = val
#define get_WD_reserved2(sb) sb[0x2a]
-
+
/* ==================================================================== */
diff --git a/backend/canon_dr.c b/backend/canon_dr.c
index 3c058ab..64aec31 100644
--- a/backend/canon_dr.c
+++ b/backend/canon_dr.c
@@ -10,6 +10,7 @@
Canon, USA. www.usa.canon.com loaned equipment
HPrint hprint.com.br provided funding and testing for DR-2510 support
Stone-IT www.stone-it.com provided funding for DR-2010 and DR-2050 support
+ Smartmatic www.smartmatic.com provided testing and changes for DR-X10C support
--------------------------------------------------------------------------
@@ -165,7 +166,7 @@
- correct rgb padding macro
- skip send_panel and ssm_df commands for DR-20xx scanners
v22 2009-03-25, MAN
- - add deinterlacing code for DR-2510C in duplex and color
+ - add deinterlacing code for DR-2510C in duplex and color
v23 2009-03-27, MAN
- rewrite all image data processing code
- handle more image interlacing formats
@@ -335,6 +336,8 @@
- rename all DUPLEX_INTERLACE_* to indicate start and end of line
v56 2016-08-23, MAN
- initial support for P-150
+ v57 2019-02-24, manuarg
+ - complete support for X-10, including hardware cropping
SANE FLOW DIAGRAM
@@ -352,7 +355,7 @@
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times; after sane_read returns EOF,
+ . . (sane_read called multiple times; after sane_read returns EOF,
. . loop may continue with sane_start which may return a 2nd page
. . when doing duplex scans, or load the next page from the ADF)
. .
@@ -385,14 +388,14 @@
#include "canon_dr.h"
#define DEBUG 1
-#define BUILD 56
+#define BUILD 57
/* values for SANE_DEBUG_CANON_DR env var:
- errors 5
- function trace 10
- function detail 15
- get/setopt cmds 20
- - scsi/usb trace 25
+ - scsi/usb trace 25
- scsi/usb writes 30
- scsi/usb reads 31
- useless noise 35
@@ -455,7 +458,7 @@ static struct scanner *scanner_devList = NULL;
/*
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -487,7 +490,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/*
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -500,7 +503,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -544,42 +547,42 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
CANON_DR_CONFIG_FILE);
while (sanei_config_read (line, PATH_MAX, fp)) {
-
+
lp = line;
-
+
/* ignore comments */
if (*lp == '#')
continue;
-
+
/* skip empty lines */
if (*lp == 0)
continue;
-
+
if (!strncmp ("option", lp, 6) && isspace (lp[6])) {
-
+
lp += 6;
lp = sanei_config_skip_whitespace (lp);
-
+
/* BUFFERSIZE: > 4K */
if (!strncmp (lp, "buffer-size", 11) && isspace (lp[11])) {
-
+
int buf;
lp += 11;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf < 4096) {
DBG (5, "sane_get_devices: config option \"buffer-size\" "
"(%d) is < 4096, ignoring!\n", buf);
continue;
}
-
+
if (buf > global_buffer_size_default) {
DBG (5, "sane_get_devices: config option \"buffer-size\" "
"(%d) is > %d, scanning problems may result\n", buf,
global_buffer_size_default);
}
-
+
DBG (15, "sane_get_devices: setting \"buffer-size\" to %d\n",
buf);
@@ -588,24 +591,24 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
/* PADDED READ: we clamp to 0 or 1 */
else if (!strncmp (lp, "padded-read", 11) && isspace (lp[11])) {
-
+
int buf;
lp += 11;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf < 0) {
DBG (5, "sane_get_devices: config option \"padded-read\" "
"(%d) is < 0, ignoring!\n", buf);
continue;
}
-
+
if (buf > 1) {
DBG (5, "sane_get_devices: config option \"padded-read\" "
"(%d) is > 1, ignoring!\n", buf);
continue;
}
-
+
DBG (15, "sane_get_devices: setting \"padded-read\" to %d\n",
buf);
@@ -614,24 +617,24 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
/* EXTRA STATUS: we clamp to 0 or 1 */
else if (!strncmp (lp, "extra-status", 12) && isspace (lp[12])) {
-
+
int buf;
lp += 12;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf < 0) {
DBG (5, "sane_get_devices: config option \"extra-status\" "
"(%d) is < 0, ignoring!\n", buf);
continue;
}
-
+
if (buf > 1) {
DBG (5, "sane_get_devices: config option \"extra-status\" "
"(%d) is > 1, ignoring!\n", buf);
continue;
}
-
+
DBG (15, "sane_get_devices: setting \"extra-status\" to %d\n",
buf);
@@ -640,18 +643,18 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
/* DUPLEXOFFSET: < 2400 */
else if (!strncmp (lp, "duplex-offset", 13) && isspace (lp[13])) {
-
+
int buf;
lp += 13;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf > 2400) {
DBG (5, "sane_get_devices: config option \"duplex-offset\" "
"(%d) is > 2400, ignoring!\n", buf);
continue;
}
-
+
if (buf < 0) {
DBG (5, "sane_get_devices: config option \"duplex-offset\" "
"(%d) is < 0, ignoring!\n", buf);
@@ -671,7 +674,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
lp = sanei_config_skip_whitespace (lp);
strncpy(global_vendor_name, lp, 8);
global_vendor_name[8] = 0;
-
+
DBG (15, "sane_get_devices: setting \"vendor-name\" to %s\n",
global_vendor_name);
}
@@ -683,7 +686,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
lp = sanei_config_skip_whitespace (lp);
strncpy(global_model_name, lp, 16);
global_model_name[16] = 0;
-
+
DBG (15, "sane_get_devices: setting \"model-name\" to %s\n",
global_model_name);
}
@@ -695,7 +698,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
lp = sanei_config_skip_whitespace (lp);
strncpy(global_version_name, lp, 4);
global_version_name[4] = 0;
-
+
DBG (15, "sane_get_devices: setting \"version-name\" to %s\n",
global_version_name);
}
@@ -801,8 +804,8 @@ attach_one_usb (const char *device_name)
return attach_one(device_name,CONNECTION_USB);
}
-/* build the scanner struct and link to global list
- * unless struct is already loaded, then pretend
+/* build the scanner struct and link to global list
+ * unless struct is already loaded, then pretend
*/
static SANE_Status
attach_one (const char *device_name, int connType)
@@ -974,8 +977,8 @@ connect_fd (struct scanner *s)
if(ret == SANE_STATUS_GOOD){
- /* first generation usb scanners can get flaky if not closed
- * properly after last use. very first commands sent to device
+ /* first generation usb scanners can get flaky if not closed
+ * properly after last use. very first commands sent to device
* must be prepared to correct this- see wait_scanner() */
ret = wait_scanner(s);
if (ret != SANE_STATUS_GOOD) {
@@ -1016,9 +1019,9 @@ init_inquire (struct scanner *s)
set_IN_return_size (cmd, inLen);
set_IN_evpd (cmd, 0);
set_IN_page_code (cmd, 0);
-
+
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
NULL, 0,
in, &inLen
@@ -1323,7 +1326,7 @@ init_model (struct scanner *s)
s->std_res_y[DPI_400]=1;
s->std_res_x[DPI_600]=1;
s->std_res_y[DPI_600]=1;
-
+
/*weirdness*/
s->has_ssm = 0;
s->has_ssm2 = 1;
@@ -1522,7 +1525,7 @@ init_model (struct scanner *s)
s->std_res_y[DPI_400]=1;
s->std_res_x[DPI_600]=1;
s->std_res_y[DPI_600]=1;
-
+
s->has_comp_JPEG = 1;
s->rgb_format = 1;
s->has_df_ultra = 1;
@@ -1562,7 +1565,7 @@ init_model (struct scanner *s)
s->std_res_y[DPI_400]=1;
s->std_res_x[DPI_600]=1;
s->std_res_y[DPI_600]=1;
-
+
s->has_comp_JPEG = 1;
s->rgb_format = 1;
s->has_df_ultra = 1;
@@ -1690,6 +1693,31 @@ init_model (struct scanner *s)
s->can_halftone = 0;
}
+ else if (strstr (s->model_name,"DR-X10C")){
+
+ /* Required for USB coms */
+ s->has_ssm = 0;
+ s->has_ssm2 = 1;
+
+ /* missing */
+ s->std_res_x[DPI_100]=1;
+ s->std_res_y[DPI_100]=1;
+ s->std_res_x[DPI_150]=1;
+ s->std_res_y[DPI_150]=1;
+ s->std_res_x[DPI_200]=1;
+ s->std_res_y[DPI_200]=1;
+ s->std_res_x[DPI_240]=1;
+ s->std_res_y[DPI_240]=1;
+ s->std_res_x[DPI_300]=1;
+ s->std_res_y[DPI_300]=1;
+ s->std_res_x[DPI_400]=1;
+ s->std_res_y[DPI_400]=1;
+ s->std_res_x[DPI_600]=1;
+ s->std_res_y[DPI_600]=1;
+
+ s->has_hwcrop = 1;
+ }
+
DBG (10, "init_model: finish\n");
return SANE_STATUS_GOOD;
@@ -1801,9 +1829,9 @@ init_options (struct scanner *s)
s->opt[i].cap = SANE_CAP_INACTIVE;
}
- /* go ahead and setup the first opt, because
- * frontend may call control_option on it
- * before calling get_option_descriptor
+ /* go ahead and setup the first opt, because
+ * frontend may call control_option on it
+ * before calling get_option_descriptor
*/
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
@@ -1831,7 +1859,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
struct scanner *dev = NULL;
struct scanner *s = NULL;
SANE_Status ret;
-
+
DBG (10, "sane_open: start\n");
if(scanner_devList){
@@ -1852,7 +1880,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
else{
DBG (15, "sane_open: device %s requested\n", name);
-
+
for (dev = scanner_devList; dev; dev = dev->next) {
if (strcmp (dev->sane.name, name) == 0
|| strcmp (dev->device_name, name) == 0) { /*always allow sanei devname*/
@@ -1928,7 +1956,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
}
if(s->has_adf){
s->source_list[i++]=STRING_ADFFRONT;
-
+
if(s->has_back){
s->source_list[i++]=STRING_ADFBACK;
}
@@ -1938,7 +1966,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
}
if(s->has_card){
s->source_list[i++]=STRING_CARDFRONT;
-
+
if(s->has_back){
s->source_list[i++]=STRING_CARDBACK;
}
@@ -1974,7 +2002,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->mode_list[i++]=STRING_COLOR;
}
s->mode_list[i]=NULL;
-
+
opt->name = SANE_NAME_SCAN_MODE;
opt->title = SANE_TITLE_SCAN_MODE;
opt->desc = SANE_DESC_SCAN_MODE;
@@ -2041,14 +2069,14 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->res_list[++i] = 1200;
}
s->res_list[0] = i;
-
+
opt->name = SANE_NAME_SCAN_RESOLUTION;
opt->title = SANE_TITLE_SCAN_RESOLUTION;
opt->desc = SANE_DESC_SCAN_RESOLUTION;
opt->type = SANE_TYPE_INT;
opt->unit = SANE_UNIT_DPI;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
-
+
if(s->step_y_res){
s->res_range.min = s->min_y_res;
s->res_range.max = s->max_y_res;
@@ -2078,7 +2106,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->tl_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_x);
s->tl_x_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_width(s));
s->tl_x_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_X;
opt->title = SANE_TITLE_SCAN_TL_X;
opt->desc = SANE_DESC_SCAN_TL_X;
@@ -2096,7 +2124,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->tl_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_y);
s->tl_y_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_height(s));
s->tl_y_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_Y;
opt->title = SANE_TITLE_SCAN_TL_Y;
opt->desc = SANE_DESC_SCAN_TL_Y;
@@ -2114,7 +2142,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_X;
opt->title = SANE_TITLE_SCAN_BR_X;
opt->desc = SANE_DESC_SCAN_BR_X;
@@ -2132,7 +2160,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_Y;
opt->title = SANE_TITLE_SCAN_BR_Y;
opt->desc = SANE_DESC_SCAN_BR_Y;
@@ -2370,7 +2398,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*double feed by thickness */
if(option==OPT_DF_THICKNESS){
-
+
opt->name = "df-thickness";
opt->title = "DF by thickness";
opt->desc = "Detect double feeds using thickness sensor";
@@ -2482,7 +2510,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->do_color_list[5] = STRING_EN_GREEN;
s->do_color_list[6] = STRING_EN_BLUE;
s->do_color_list[7] = NULL;
-
+
opt->name = "dropout-front";
opt->title = "Dropout color front";
opt->desc = "One-pass scanners use only one color during gray or binary scanning, useful for colored paper or ink";
@@ -2510,7 +2538,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->do_color_list[5] = STRING_EN_GREEN;
s->do_color_list[6] = STRING_EN_BLUE;
s->do_color_list[7] = NULL;
-
+
opt->name = "dropout-back";
opt->title = "Dropout color back";
opt->desc = "One-pass scanners use only one color during gray or binary scanning, useful for colored paper or ink";
@@ -2551,6 +2579,18 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->constraint_type = SANE_CONSTRAINT_NONE;
}
+ /*hardware crop*/
+ if(option==OPT_HW_CROP){
+ opt->name = "hwcrop";
+ opt->title = "Hardware crop";
+ opt->desc = "Request scanner to crop image automatically";
+ opt->type = SANE_TYPE_BOOL;
+ if (s->has_hwcrop)
+ 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;
@@ -2671,7 +2711,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -2682,7 +2722,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -2918,6 +2958,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*val_p = s->side;
return SANE_STATUS_GOOD;
+ case OPT_HW_CROP:
+ *val_p = s->hwcrop;
+ return SANE_STATUS_GOOD;
+
/* Sensor Group */
case OPT_START:
ret = read_panel(s,OPT_START);
@@ -2999,7 +3043,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* below.
*/
switch (option) {
-
+
/* Mode Group */
case OPT_SOURCE:
if (!strcmp (val, STRING_ADFFRONT)) {
@@ -3024,7 +3068,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
tmp = SOURCE_FLATBED;
}
- if (s->u.source == tmp)
+ if (s->u.source == tmp)
return SANE_STATUS_GOOD;
s->u.source = tmp;
@@ -3056,7 +3100,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_RES:
- if (s->u.dpi_x == val_c && s->u.dpi_y == val_c)
+ if (s->u.dpi_x == val_c && s->u.dpi_y == val_c)
return SANE_STATUS_GOOD;
s->u.dpi_x = val_c;
@@ -3237,6 +3281,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->buffermode = val_c;
return SANE_STATUS_GOOD;
+ case OPT_HW_CROP:
+ s->hwcrop = val_c;
+ return SANE_STATUS_GOOD;
+
}
} /* else */
@@ -3251,25 +3299,25 @@ ssm_buffer (struct scanner *s)
DBG (10, "ssm_buffer: start\n");
if(s->has_ssm){
-
+
unsigned char cmd[SET_SCAN_MODE_len];
size_t cmdLen = SET_SCAN_MODE_len;
-
+
unsigned char out[SSM_PAY_len];
size_t outLen = SSM_PAY_len;
-
+
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd, SET_SCAN_MODE_code);
set_SSM_pf(cmd, 1);
set_SSM_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
if(s->has_ssm_pay_head_len){
set_SSM_pay_head_len(out, SSM_PAY_HEAD_len);
}
set_SSM_page_code(out, SM_pc_buffer);
set_SSM_page_len(out, SSM_PAGE_len);
-
+
if(s->s.source == SOURCE_ADF_DUPLEX || s->s.source == SOURCE_CARD_DUPLEX){
set_SSM_BUFF_duplex(out, 1);
}
@@ -3288,7 +3336,7 @@ ssm_buffer (struct scanner *s)
if(0){
set_SSM_BUFF_unk(out,1);
}
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3301,20 +3349,20 @@ ssm_buffer (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_buffer);
set_SSM2_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
set_SSM2_BUFF_unk(out, !s->buffermode);
set_SSM2_BUFF_unk2(out, 0x40);
set_SSM2_BUFF_sync(out, !s->buffermode);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3338,52 +3386,52 @@ ssm_df (struct scanner *s)
SANE_Status ret = SANE_STATUS_GOOD;
DBG (10, "ssm_df: start\n");
-
+
if(!s->has_df){
DBG (10, "ssm_df: unsupported, finishing\n");
return ret;
}
-
+
if(s->has_ssm){
unsigned char cmd[SET_SCAN_MODE_len];
size_t cmdLen = SET_SCAN_MODE_len;
-
+
unsigned char out[SSM_PAY_len];
size_t outLen = SSM_PAY_len;
-
+
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd, SET_SCAN_MODE_code);
set_SSM_pf(cmd, 1);
set_SSM_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
if(s->has_ssm_pay_head_len){
set_SSM_pay_head_len(out, SSM_PAY_HEAD_len);
}
set_SSM_page_code(out, SM_pc_df);
set_SSM_page_len(out, SSM_PAGE_len);
-
+
/* deskew by roller */
if(s->rollerdeskew){
set_SSM_DF_deskew_roll(out, 1);
}
-
+
/* staple detection */
if(s->stapledetect){
set_SSM_DF_staple(out, 1);
}
-
+
/* thickness */
if(s->df_thickness){
set_SSM_DF_thick(out, 1);
}
-
+
/* length */
if(s->df_length){
set_SSM_DF_len(out, 1);
}
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3397,7 +3445,7 @@ ssm_df (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;
@@ -3407,11 +3455,11 @@ ssm_df (struct scanner *s)
set_SCSI_opcode(cmd, SET_SCAN_MODE2_code);
set_SSM2_page_code(cmd, SM2_pc_ultra);
set_SSM2_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
set_SSM2_ULTRA_top(out, 0);
set_SSM2_ULTRA_bot(out, 0);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3424,19 +3472,24 @@ ssm_df (struct scanner *s)
set_SCSI_opcode(cmd, SET_SCAN_MODE2_code);
set_SSM2_page_code(cmd, SM2_pc_df);
set_SSM2_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
-
+
/* thickness */
if(s->df_thickness){
set_SSM2_DF_thick(out, 1);
}
-
+
/* length */
if(s->df_length){
set_SSM2_DF_len(out, 1);
}
-
+
+ /* staple detection */
+ if(s->stapledetect){
+ set_SSM2_DF_staple(out, 1);
+ }
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3456,6 +3509,53 @@ ssm_df (struct scanner *s)
}
static SANE_Status
+ssm2_hw_enhancement (struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ DBG (10, "ssm2_hw_enhancement: start\n");
+
+ if(s->has_ssm2){
+ 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_hw_enhancement);
+ set_SSM2_pay_len(cmd, outLen);
+
+ memset(out,0,outLen);
+
+ if(s->rollerdeskew){
+ set_SSM2_roller_deskew(out, 1);
+ }
+
+ if(s->hwcrop){
+ set_SSM2_hw_crop(out, 1);
+ }
+
+ ret = do_cmd (
+ s, 1, 0,
+ cmd, cmdLen,
+ out, outLen,
+ NULL, NULL
+ );
+
+ }
+
+ else{
+ DBG (10, "ssm2_hw_enhancement: unsupported\n");
+ }
+
+ DBG (10, "ssm2_hw_enhancement: finish\n");
+
+ return ret;
+}
+
+static SANE_Status
ssm_do (struct scanner *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
@@ -3466,7 +3566,7 @@ ssm_do (struct scanner *s)
DBG (10, "ssm_do: unsupported, finishing\n");
return ret;
}
-
+
if(s->s.mode == MODE_COLOR){
DBG (10, "ssm_do: unneeded, finishing\n");
return ret;
@@ -3476,24 +3576,24 @@ ssm_do (struct scanner *s)
unsigned char cmd[SET_SCAN_MODE_len];
size_t cmdLen = SET_SCAN_MODE_len;
-
+
unsigned char out[SSM_PAY_len];
size_t outLen = SSM_PAY_len;
-
+
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd, SET_SCAN_MODE_code);
set_SSM_pf(cmd, 1);
set_SSM_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
if(s->has_ssm_pay_head_len){
set_SSM_pay_head_len(out, SSM_PAY_HEAD_len);
}
set_SSM_page_code(out, SM_pc_dropout);
set_SSM_page_len(out, SSM_PAGE_len);
-
+
set_SSM_DO_unk1(out, 0x03);
-
+
switch(s->dropout_color[SIDE_FRONT]){
case COLOR_RED:
set_SSM_DO_unk2(out, 0x05);
@@ -3520,7 +3620,7 @@ ssm_do (struct scanner *s)
set_SSM_DO_f_en(out,SSM_DO_blue);
break;
}
-
+
switch(s->dropout_color[SIDE_BACK]){
case COLOR_RED:
set_SSM_DO_unk2(out, 0x05);
@@ -3547,7 +3647,7 @@ ssm_do (struct scanner *s)
set_SSM_DO_b_en(out,SSM_DO_blue);
break;
}
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3561,17 +3661,17 @@ ssm_do (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_dropout);
set_SSM2_pay_len(cmd, outLen);
-
+
memset(out,0,outLen);
-
+
switch(s->dropout_color[SIDE_FRONT]){
case COLOR_RED:
set_SSM2_DO_do(out,SSM_DO_red);
@@ -3599,6 +3699,46 @@ ssm_do (struct scanner *s)
out, outLen,
NULL, NULL
);
+
+ if(ret == SANE_STATUS_GOOD &&
+ (s->s.source == SOURCE_ADF_DUPLEX || s->s.source == SOURCE_CARD_DUPLEX)){
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, SET_SCAN_MODE2_code);
+ set_SSM2_page_code(cmd, SM2_pc_dropout);
+ set_SSM2_DO_side(cmd, SIDE_BACK);
+ set_SSM2_pay_len(cmd, outLen);
+
+ memset(out,0,outLen);
+
+ switch(s->dropout_color[SIDE_BACK]){
+ case COLOR_RED:
+ set_SSM2_DO_do(out,SSM_DO_red);
+ break;
+ case COLOR_GREEN:
+ set_SSM2_DO_do(out,SSM_DO_green);
+ break;
+ case COLOR_BLUE:
+ set_SSM2_DO_do(out,SSM_DO_blue);
+ break;
+ case COLOR_EN_RED:
+ set_SSM2_DO_en(out,SSM_DO_red);
+ break;
+ case COLOR_EN_GREEN:
+ set_SSM2_DO_en(out,SSM_DO_green);
+ break;
+ case COLOR_EN_BLUE:
+ set_SSM2_DO_en(out,SSM_DO_blue);
+ break;
+ }
+
+ ret = do_cmd (
+ s, 1, 0,
+ cmd, cmdLen,
+ out, outLen,
+ NULL, NULL
+ );
+ }
}
else{
@@ -3622,7 +3762,7 @@ read_sensors(struct scanner *s,SANE_Int option)
size_t inLen = R_SENSORS_len;
DBG (10, "read_sensors: start %d\n", option);
-
+
if(!s->can_read_sensors){
DBG (10, "read_sensors: unsupported, finishing\n");
return ret;
@@ -3638,14 +3778,14 @@ read_sensors(struct scanner *s,SANE_Int option)
set_SCSI_opcode(cmd, READ_code);
set_R_datatype_code (cmd, SR_datatype_sensors);
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) {
/*set flags indicating there is data to read*/
memset(s->sensors_read,1,sizeof(s->sensors_read));
@@ -3656,12 +3796,12 @@ read_sensors(struct scanner *s,SANE_Int option)
ret = SANE_STATUS_GOOD;
}
}
-
+
if(option)
s->sensors_read[option-OPT_ADF_LOADED] = 0;
DBG (10, "read_sensors: finish\n");
-
+
return ret;
}
@@ -3677,7 +3817,7 @@ read_panel(struct scanner *s,SANE_Int option)
size_t inLen = R_PANEL_len;
DBG (10, "read_panel: start %d\n", option);
-
+
if(!s->can_read_panel){
DBG (10, "read_panel: unsupported, finishing\n");
return ret;
@@ -3693,14 +3833,14 @@ read_panel(struct scanner *s,SANE_Int option)
set_SCSI_opcode(cmd, READ_code);
set_R_datatype_code (cmd, SR_datatype_panel);
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) {
/*set flags indicating there is data to read*/
memset(s->panel_read,1,sizeof(s->panel_read));
@@ -3717,12 +3857,12 @@ read_panel(struct scanner *s,SANE_Int option)
ret = SANE_STATUS_GOOD;
}
}
-
+
if(option)
s->panel_read[option-OPT_START] = 0;
DBG (10, "read_panel: finish %d\n",s->panel_counter);
-
+
return ret;
}
@@ -3752,24 +3892,112 @@ send_panel(struct scanner *s)
memset(out,0,outLen);
set_S_PANEL_enable_led(out,s->panel_enable_led);
set_S_PANEL_counter(out,s->panel_counter);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
out, outLen,
NULL, NULL
);
-
+
if (ret == SANE_STATUS_EOF) {
ret = SANE_STATUS_GOOD;
}
-
+
DBG (10, "send_panel: finish %d\n", ret);
-
+
return ret;
}
/*
+ * Request the size of the scanned image
+ */
+/* we should really be updating s->s and s->i instead */
+static SANE_Status
+get_pixelsize(struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ unsigned char cmd[READ_len];
+ size_t cmdLen = READ_len;
+
+ unsigned char in[R_PSIZE_len];
+ size_t inLen = R_PSIZE_len;
+
+ int i = 0;
+ const int MAX_TRIES = 5;
+
+ DBG (10, "get_pixelsize: start\n");
+
+ if(!s->hwcrop){
+ DBG (10, "get_pixelsize: unneeded, finishing\n");
+ return ret;
+ }
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, READ_code);
+ set_R_datatype_code(cmd, SR_datatype_pixelsize);
+ set_R_xfer_lid(cmd, 0x02);
+ set_R_xfer_length(cmd, inLen);
+
+ /* May need to retry/block until the scanner is done */
+ for(i=0;i<MAX_TRIES;i++){
+ ret = do_cmd (
+ s, 1, 0,
+ cmd, cmdLen,
+ NULL, 0,
+ in, &inLen
+ );
+
+ if(ret == SANE_STATUS_GOOD &&
+ get_R_PSIZE_width(in) > 0 &&
+ get_R_PSIZE_length(in) > 0){
+
+ DBG (15, "get_pixelsize: w:%d h:%d\n",
+ get_R_PSIZE_width(in) * s->u.dpi_x / 1200,
+ get_R_PSIZE_length(in) * s->u.dpi_y / 1200);
+
+ /*
+ * Round up to byte boundary if needed.
+ * For 1 bpp the resulting size may not fit in a byte boundary.
+ */
+ int remainder = (get_R_PSIZE_width(in) * s->u.dpi_x / 1200) % 8;
+
+ if (s->u.mode < MODE_GRAYSCALE && remainder)
+ {
+ int rounded_up = (8 - remainder) + (get_R_PSIZE_width(in) * s->u.dpi_x / 1200);
+
+ s->u.br_x = rounded_up * 1200 / s->u.dpi_x;
+ }
+ else{
+ s->u.br_x = get_R_PSIZE_width(in);
+ }
+
+ s->u.tl_x = 0;
+ s->u.br_y = get_R_PSIZE_length(in);
+ s->u.tl_y = 0;
+
+ s->u.page_x = s->u.br_x;
+ s->u.page_y = s->u.br_y;
+
+ update_params(s,0);
+ clean_params(s);
+ break;
+ }
+
+ else{
+ DBG (10, "get_pixelsize: error reading, status = %d w:%d h:%d\n",
+ ret, get_R_PSIZE_width(in), get_R_PSIZE_length(in));
+ ret = SANE_STATUS_INVAL;
+ usleep(1000000);
+ }
+ }
+ DBG (10, "get_pixelsize: finish\n");
+
+ return ret;
+}
+
+/*
* @@ Section 4 - SANE scanning functions
*/
/*
@@ -3783,7 +4011,7 @@ send_panel(struct scanner *s)
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -3795,7 +4023,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
{
SANE_Status ret = SANE_STATUS_GOOD;
struct scanner *s = (struct scanner *) handle;
-
+
DBG (10, "sane_get_parameters: start\n");
if(!s->started){
@@ -3825,14 +4053,14 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
DBG(15,"sane_get_parameters: area: tlx=%d, brx=%d, tly=%d, bry=%d\n",
s->i.tl_x, s->i.br_x, s->i.tl_y, s->i.br_y);
- DBG (15, "sane_get_parameters: params: ppl=%d, Bpl=%d, lines=%d\n",
+ DBG (15, "sane_get_parameters: params: ppl=%d, Bpl=%d, lines=%d\n",
params->pixels_per_line, params->bytes_per_line, params->lines);
- DBG (15, "sane_get_parameters: params: format=%d, depth=%d, last=%d\n",
+ DBG (15, "sane_get_parameters: params: format=%d, depth=%d, last=%d\n",
params->format, params->depth, params->last_frame);
DBG (10, "sane_get_parameters: finish\n");
-
+
return ret;
}
@@ -3840,9 +4068,9 @@ SANE_Status
update_params(struct scanner *s, int calib)
{
SANE_Status ret = SANE_STATUS_GOOD;
-
+
DBG (10, "update_params: start\n");
-
+
s->u.width = (s->u.br_x - s->u.tl_x) * s->u.dpi_x / 1200;
s->u.height = (s->u.br_y - s->u.tl_y) * s->u.dpi_y / 1200;
@@ -3884,7 +4112,7 @@ update_params(struct scanner *s, int calib)
s->u.br_x, s->u.tl_x, s->u.dpi_x, s->u.br_y, s->u.tl_y, s->u.dpi_y);
/* some scanners are limited in their valid scan params
- * make a second version of the params struct, but
+ * make a second version of the params struct, but
* override the user's values with what the scanner can actually do */
memcpy(&s->s,&s->u,sizeof(struct img_params));
@@ -3971,7 +4199,7 @@ update_params(struct scanner *s, int calib)
/* round lines up to even number */
s->s.height += s->s.height % 2;
-
+
DBG (15, "update_params: scan params: w:%d h:%d m:%d f:%d b:%d\n",
s->s.width, s->s.height, s->s.mode, s->s.format, s->s.bpp);
DBG (15, "update_params: scan params: B:%d vB:%d vw:%d\n",
@@ -4011,12 +4239,12 @@ SANE_Status
update_i_params(struct scanner *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
-
+
DBG (10, "update_i_params: start\n");
s->i.width = s->u.width;
s->i.Bpl = s->u.Bpl;
-
+
DBG (10, "update_i_params: finish\n");
return ret;
}
@@ -4105,6 +4333,16 @@ sane_start (SANE_Handle handle)
DBG (5, "sane_start: ERROR: cannot send panel\n");
}
+ /* we should really be updating s->s and s->i instead */
+ if(s->hwcrop){
+ s->u.br_x = s->max_x;
+ s->u.tl_x = 0;
+ s->u.br_y = s->max_y;
+ s->u.tl_y = 0;
+ s->u.page_x = s->max_x;
+ s->u.page_y = s->max_y;
+ }
+
/* load our own private copy of scan params */
ret = update_params(s,0);
if (ret != SANE_STATUS_GOOD) {
@@ -4140,6 +4378,12 @@ sane_start (SANE_Handle handle)
goto errors;
}
+ ret = ssm2_hw_enhancement(s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "sane_start: ERROR: cannot ssm2 hw enhancement\n");
+ goto errors;
+ }
+
/* clean scan params for new scan */
ret = clean_params(s);
if (ret != SANE_STATUS_GOOD) {
@@ -4169,7 +4413,7 @@ sane_start (SANE_Handle handle)
DBG (5, "sane_start: ERROR: cannot load page\n");
goto errors;
}
-
+
/* wait for scanner to finish load */
ret = wait_scanner (s);
if (ret != SANE_STATUS_GOOD) {
@@ -4185,6 +4429,12 @@ sane_start (SANE_Handle handle)
goto errors;
}
+ ret = get_pixelsize(s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "sane_start: ERROR: cannot get pixel size\n");
+ goto errors;
+ }
+
s->started = 1;
}
@@ -4235,7 +4485,7 @@ sane_start (SANE_Handle handle)
}
}
}
-
+
/* small, buffering scanners check for more pages by reading counter */
else{
ret = read_panel (s, OPT_COUNTER);
@@ -4251,6 +4501,12 @@ sane_start (SANE_Handle handle)
DBG (5, "sane_start: diff counter (%d/%d)\n",
s->prev_page,s->panel_counter);
}
+
+ ret = get_pixelsize(s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "sane_start: ERROR: cannot get pixel size\n");
+ goto errors;
+ }
}
}
@@ -4261,9 +4517,9 @@ sane_start (SANE_Handle handle)
DBG (15, "started=%d, side=%d, source=%d\n",
s->started, s->side, s->u.source);
- /* certain options require the entire image to
+ /* certain options require the entire image to
* be collected from the scanner before we can
- * tell the user the size of the image. the sane
+ * tell the user the size of the image. the sane
* API has no way to inform the frontend of this,
* so we block and buffer. yuck */
if(must_fully_buffer(s)){
@@ -4294,7 +4550,7 @@ sane_start (SANE_Handle handle)
}
if(s->swskip){
/* Skipping means throwing out this image.
- * Pretend the user read the whole thing
+ * Pretend the user read the whole thing
* and call sane_start again.
* This assumes we are running in batch mode. */
if(buffer_isblank(s,s->side)){
@@ -4349,7 +4605,7 @@ clean_params (struct scanner *s)
s->s.bytes_tot[0]=0;
s->s.bytes_tot[1]=0;
- /* store the number of front bytes */
+ /* store the number of front bytes */
if ( s->u.source != SOURCE_ADF_BACK && s->u.source != SOURCE_CARD_BACK )
s->u.bytes_tot[SIDE_FRONT] = s->u.Bpl * s->u.height;
@@ -4359,8 +4615,8 @@ clean_params (struct scanner *s)
if ( s->s.source != SOURCE_ADF_BACK && s->s.source != SOURCE_CARD_BACK )
s->s.bytes_tot[SIDE_FRONT] = s->s.Bpl * s->s.height;
- /* store the number of back bytes */
- if ( s->u.source == SOURCE_ADF_DUPLEX || s->u.source == SOURCE_ADF_BACK
+ /* store the number of back bytes */
+ if ( s->u.source == SOURCE_ADF_DUPLEX || s->u.source == SOURCE_ADF_BACK
|| s->u.source == SOURCE_CARD_DUPLEX || s->u.source == SOURCE_CARD_BACK )
s->u.bytes_tot[SIDE_BACK] = s->u.Bpl * s->u.height;
@@ -4421,14 +4677,14 @@ set_window (struct scanner *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
- /* The command specifies the number of bytes in the data phase
- * the data phase has a header, followed by 1 window desc block
+ /* The command specifies the number of bytes in the data phase
+ * the data phase has a header, followed by 1 window desc block
* the header specifies the number of bytes in 1 window desc block
*/
unsigned char cmd[SET_WINDOW_len];
size_t cmdLen = SET_WINDOW_len;
-
+
unsigned char out[SW_header_len + SW_desc_len];
size_t outLen = SW_header_len + SW_desc_len;
@@ -4484,9 +4740,9 @@ set_window (struct scanner *s)
/*convert our common -127 to +127 range into HW's range
*FIXME: this code assumes hardware range of 0-255 */
set_WD_brightness (desc1, s->brightness+128);
-
+
set_WD_threshold (desc1, s->threshold);
-
+
/*convert our common -127 to +127 range into HW's range
*FIXME: this code assumes hardware range of 0-255 */
set_WD_contrast (desc1, s->contrast+128);
@@ -4593,7 +4849,7 @@ object_position (struct scanner *s, int i_load)
/*
* Issues SCAN command.
- *
+ *
* (This doesn't actually read anything, it just tells the scanner
* to start scanning.)
*/
@@ -4641,7 +4897,7 @@ start_scan (struct scanner *s, int type)
/*
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -4649,7 +4905,7 @@ start_scan (struct scanner *s, int type)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -4698,7 +4954,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
}
}
}
-
+
/* simplex or non-alternating duplex */
else{
if(!s->s.eof[s->side]){
@@ -4719,7 +4975,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
ret = read_from_buffer(s,buf,max_len,len,s->side);
if(ret)
goto errors;
-
+
ret = check_for_cancel(s);
s->reading = 0;
@@ -4813,13 +5069,13 @@ read_from_scanner(struct scanner *s, int side, int exact)
size_t i;
for(i=0;i<inLen;i++){
-
+
/* about to change stage */
if(s->jpeg_stage == JPEG_STAGE_NONE && in[i] == 0xff){
s->jpeg_ff_offset=0;
continue;
}
-
+
s->jpeg_ff_offset++;
/* last byte was an ff, this byte is SOF */
@@ -4827,7 +5083,7 @@ read_from_scanner(struct scanner *s, int side, int exact)
s->jpeg_stage = JPEG_STAGE_SOF;
continue;
}
-
+
if(s->jpeg_stage == JPEG_STAGE_SOF){
/* lines in start of frame, overwrite it */
@@ -4839,7 +5095,7 @@ read_from_scanner(struct scanner *s, int side, int exact)
in[i] = s->s.height & 0xff;
continue;
}
-
+
/* width in start of frame, overwrite it */
if(s->jpeg_ff_offset == 7){
in[i] = (s->s.width >> 8) & 0xff;
@@ -4883,7 +5139,7 @@ read_from_scanner(struct scanner *s, int side, int exact)
s->s.bytes_tot[side] = s->s.bytes_sent[side];
s->i.bytes_tot[side] = s->i.bytes_sent[side];
s->u.bytes_tot[side] = s->i.bytes_sent[side];
- }
+ }
/* this is non-jpeg data, fill remainder, change rx'd size */
else{
@@ -5025,7 +5281,7 @@ read_from_scanner_duplex(struct scanner *s,int exact)
return ret;
}
-/* these functions copy image data from input buffer to scanner struct
+/* these functions copy image data from input buffer to scanner struct
* descrambling it, and putting it in the right side buffer */
/* NOTE: they assume buffer is scanline aligned */
static SANE_Status
@@ -5051,7 +5307,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
s->s.bytes_sent[side] += len;
return ret;
}
-
+
DBG (15, "copy_simplex: per-line copy\n");
line = malloc(bwidth);
@@ -5061,7 +5317,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
for(i=0; i<len; i+=bwidth){
int lineNum = s->s.bytes_sent[side] / bwidth;
-
+
/*increment number of bytes rx'd from scanner*/
s->s.bytes_sent[side] += bwidth;
@@ -5075,9 +5331,9 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line_next = 0;
if(s->s.format == SANE_FRAME_GRAY){
-
+
switch (s->gray_interlace[side]) {
-
+
/* one line has the following format: ggg...GGG
* where the 'capital' letters are the beginning of the line */
case GRAY_INTERLACE_gG:
@@ -5086,10 +5342,10 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+j];
}
break;
-
+
case GRAY_INTERLACE_2510:
DBG (17, "copy_simplex: gray, 2510\n");
-
+
/* first read head (third byte of every three) */
for(j=bwidth-1;j>=0;j-=3){
line[line_next++] = buf[i+j];
@@ -5109,11 +5365,11 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
break;
}
}
-
+
else if (s->s.format == SANE_FRAME_RGB){
-
+
switch (inter) {
-
+
/* scanner returns color data as bgrbgr... */
case COLOR_INTERLACE_BGR:
DBG (17, "copy_simplex: color, BGR\n");
@@ -5123,7 +5379,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+j*3];
}
break;
-
+
/* scanner returns color data as gbrgbr... */
case COLOR_INTERLACE_GBR:
DBG (17, "copy_simplex: color, GBR\n");
@@ -5133,7 +5389,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+j*3+1];
}
break;
-
+
/* scanner returns color data as brgbrg... */
case COLOR_INTERLACE_BRG:
DBG (17, "copy_simplex: color, BRG\n");
@@ -5143,7 +5399,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+j*3];
}
break;
-
+
/* one line has the following format: RRR...rrrGGG...gggBBB...bbb */
case COLOR_INTERLACE_RRGGBB:
DBG (17, "copy_simplex: color, RRGGBB\n");
@@ -5153,7 +5409,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+2*pwidth+j];
}
break;
-
+
/* one line has the following format: rrr...RRRggg...GGGbbb...BBB
* where the 'capital' letters are the beginning of the line */
case COLOR_INTERLACE_rRgGbB:
@@ -5164,10 +5420,10 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[line_next++] = buf[i+2*pwidth+j];
}
break;
-
+
case COLOR_INTERLACE_2510:
DBG (17, "copy_simplex: color, 2510\n");
-
+
/* first read head (third byte of every three) */
for(j=t-1;j>=0;j-=3){
line[line_next++] = buf[i+j];
@@ -5193,7 +5449,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
break;
}
}
-
+
/* nothing sent above? just copy one line of the block */
/* used by uninterlaced gray/color */
if(!line_next){
@@ -5201,14 +5457,14 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
memcpy(line+line_next,buf+i,bwidth);
line_next = bwidth;
}
-
+
/* invert image if scanner needs it for this mode */
if(s->reverse_by_mode[s->s.mode]){
for(j=0; j<line_next; j++){
line[j] ^= 0xff;
}
}
-
+
/* apply calibration if we have it */
if(s->f_offset[side]){
DBG (17, "copy_simplex: apply offset\n");
@@ -5227,7 +5483,7 @@ copy_simplex(struct scanner *s, unsigned char * buf, int len, int side)
line[j] = curr;
}
}
-
+
/* apply brightness and contrast if hardware cannot do it */
if(s->sw_lut && (s->s.mode == MODE_COLOR || s->s.mode == MODE_GRAYSCALE)){
DBG (17, "copy_simplex: apply brightness/contrast\n");
@@ -5283,7 +5539,7 @@ copy_duplex(struct scanner *s, unsigned char * buf, int len)
DBG (10, "copy_duplex: 2510\n");
for(i=0; i<len; i+=dbwidth){
-
+
for(j=0;j<dbwidth;j+=6){
/* we are actually only partially descrambling,
@@ -5473,7 +5729,7 @@ copy_line(struct scanner *s, unsigned char * buff, int side)
line[i*3+2] = line[source+2];
}
}
-
+
/* scan is wider than user wanted, skip some pixels on left side */
if(s->i.width != s->s.width){
offset = ((s->valid_x-s->i.page_x) / 2 + s->i.tl_x) * s->i.dpi_x/1200;
@@ -5481,12 +5737,12 @@ copy_line(struct scanner *s, unsigned char * buff, int side)
/* change mode, store line in buffer */
switch (s->i.mode) {
-
+
case MODE_COLOR:
memcpy(s->buffers[side]+s->i.bytes_sent[side], line+(offset*3), ibwidth);
s->i.bytes_sent[side] += ibwidth;
break;
-
+
case MODE_GRAYSCALE:
for(i=0;i<ibwidth;i++){
int source = (offset+i)*3;
@@ -5494,7 +5750,7 @@ copy_line(struct scanner *s, unsigned char * buff, int side)
= ((int)line[source] + line[source+1] + line[source+2])/3;
}
break;
-
+
default:
/*loop over output bytes*/
for(i=0;i<ibwidth;i++){
@@ -5506,7 +5762,7 @@ copy_line(struct scanner *s, unsigned char * buff, int side)
for(j=0;j<8;j++){
int source = offset*3 + i*24 + j*3;
if( (line[source] + line[source+1] + line[source+2]) < thresh ){
- curr |= 1 << (7-j);
+ curr |= 1 << (7-j);
}
}
@@ -5535,15 +5791,15 @@ read_from_buffer(struct scanner *s, SANE_Byte * buf, SANE_Int max_len,
/* figure out the max amount to transfer */
if(bytes > remain)
bytes = remain;
-
+
*len = bytes;
-
+
/*FIXME this needs to timeout eventually */
if(!bytes){
DBG(5,"read_from_buffer: nothing to do\n");
return SANE_STATUS_GOOD;
}
-
+
DBG(15, "read_from_buffer: si:%d to:%d tx:%d bu:%d pa:%d\n", side,
s->i.bytes_tot[side], s->u.bytes_sent[side], max_len, bytes);
@@ -5701,7 +5957,7 @@ calibrate_AFE (struct scanner *s)
DBG (5, "calibrate_AFE: ERROR: cannot set window\n");
goto cleanup;
}
-
+
/* first pass (black offset), lamp off, no offset/gain/exposure */
DBG (15, "calibrate_AFE: offset\n");
@@ -5925,7 +6181,7 @@ calibrate_fine_buffer (struct scanner *s)
DBG (5, "calibrate_fine_buffer: ERROR: cannot load offset buffers\n");
goto cleanup;
}
-
+
DBG (5, "calibrate_fine_buffer: %d %x\n", s->s.dpi_x/10, s->s.dpi_x/10);
memset(cmd,0,cmdLen);
@@ -5952,13 +6208,13 @@ calibrate_fine_buffer (struct scanner *s)
/*color mode, expand offset across all three channels? */
if(s->s.format == SANE_FRAME_RGB){
for(j=0; j<s->s.valid_width; j++){
-
- /*red*/
+
+ /*red*/
s->f_offset[i][j*3] = in[j*2+i];
if(s->f_offset[i][j*3] < 1)
s->f_offset[i][j*3] = 1;
- /*green and blue, same as red*/
+ /*green and blue, same as red*/
s->f_offset[i][j*3+1] = s->f_offset[i][j*3+2] = s->f_offset[i][j*3];
}
}
@@ -5995,10 +6251,10 @@ calibrate_fine_buffer (struct scanner *s)
int codes[] = {R_FINE_uid_red,R_FINE_uid_green,R_FINE_uid_blue};
for(k=0;k<3;k++){
-
+
set_R_xfer_uid (cmd, codes[k]);
inLen = reqLen;
-
+
hexdump(15, "cmd:", cmd, cmdLen);
ret = do_cmd (
@@ -6009,12 +6265,12 @@ calibrate_fine_buffer (struct scanner *s)
);
if (ret != SANE_STATUS_GOOD)
goto cleanup;
-
+
for(i=0;i<2;i++){
for(j=0; j<s->s.valid_width; j++){
-
+
s->f_gain[i][j*3+k] = in[j*2+i]*3/4;
-
+
if(s->f_gain[i][j*3+k] < 1)
s->f_gain[i][j*3+k] = 1;
}
@@ -6027,7 +6283,7 @@ calibrate_fine_buffer (struct scanner *s)
set_R_xfer_uid (cmd, R_FINE_uid_gray);
inLen = reqLen;
-
+
hexdump(15, "cmd:", cmd, cmdLen);
ret = do_cmd (
@@ -6038,12 +6294,12 @@ calibrate_fine_buffer (struct scanner *s)
);
if (ret != SANE_STATUS_GOOD)
goto cleanup;
-
+
for(i=0;i<2;i++){
for(j=0; j<s->s.valid_width; j++){
-
+
s->f_gain[i][j] = in[j*2+i]*3/4;
-
+
if(s->f_gain[i][j] < 1)
s->f_gain[i][j] = 1;
}
@@ -6127,7 +6383,7 @@ calibrate_fine (struct scanner *s)
DBG (5, "calibrate_fine: ERROR: cannot load buffers\n");
goto cleanup;
}
-
+
/*blast the existing fine cal data so reading code wont apply it*/
ret = offset_buffers(s,0);
ret = gain_buffers(s,0);
@@ -6138,14 +6394,14 @@ calibrate_fine (struct scanner *s)
DBG (5, "calibrate_fine: ERROR: cannot ssm buffer\n");
goto cleanup;
}
-
+
/* set window command */
ret = set_window(s);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "calibrate_fine: ERROR: cannot set window\n");
goto cleanup;
}
-
+
/*handle fifth pass (fine offset), lamp off*/
DBG (15, "calibrate_fine: offset\n");
ret = calibration_scan(s,0xff);
@@ -6159,7 +6415,7 @@ calibrate_fine (struct scanner *s)
DBG (5, "calibrate_fine: ERROR: cannot load offset buffers\n");
goto cleanup;
}
-
+
for(i=0;i<2;i++){
for(j=0; j<s->s.valid_Bpl; j++){
min = 0;
@@ -6184,7 +6440,7 @@ calibrate_fine (struct scanner *s)
DBG (5, "calibrate_fine: ERROR: cannot load gain buffers\n");
goto cleanup;
}
-
+
for(i=0;i<2;i++){
for(j=0; j<s->s.valid_Bpl; j++){
max = 0;
@@ -6231,14 +6487,14 @@ calibration_scan (struct scanner *s, int scan)
DBG (5, "calibration_scan: ERROR: cannot clean_params\n");
return ret;
}
-
+
/* start scanning */
ret = start_scan (s,scan);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "calibration_scan: ERROR: cannot start_scan\n");
return ret;
}
-
+
while(!s->s.eof[SIDE_FRONT] && !s->s.eof[SIDE_BACK]){
ret = read_from_scanner_duplex(s,1);
}
@@ -6260,7 +6516,7 @@ write_AFE(struct scanner *s)
size_t cmdLen = COR_CAL_len;
/*use the longest payload for buffer*/
- unsigned char pay[CC3_pay_len];
+ unsigned char pay[CC3_pay_len];
size_t payLen = CC3_pay_len;
DBG (10, "write_AFE: start\n");
@@ -6272,7 +6528,7 @@ write_AFE(struct scanner *s)
set_SCSI_opcode(cmd, COR_CAL_code);
set_CC_version(cmd,CC3_pay_ver);
set_CC_xferlen(cmd,payLen);
-
+
memset(pay,0,payLen);
set_CC3_gain_f_r(pay,s->c_gain[SIDE_FRONT]);
@@ -6282,7 +6538,7 @@ write_AFE(struct scanner *s)
set_CC3_off_f_r(pay,s->c_offset[SIDE_FRONT]);
set_CC3_off_f_g(pay,s->c_offset[SIDE_FRONT]);
set_CC3_off_f_b(pay,s->c_offset[SIDE_FRONT]);
-
+
set_CC3_exp_f_r(pay,s->c_exposure[SIDE_FRONT][CHAN_RED]);
set_CC3_exp_f_g(pay,s->c_exposure[SIDE_FRONT][CHAN_GREEN]);
set_CC3_exp_f_b(pay,s->c_exposure[SIDE_FRONT][CHAN_BLUE]);
@@ -6307,7 +6563,7 @@ write_AFE(struct scanner *s)
set_SCSI_opcode(cmd, COR_CAL_code);
set_CC_version(cmd,CC_pay_ver);
set_CC_xferlen(cmd,payLen);
-
+
memset(pay,0,payLen);
set_CC_f_gain(pay,s->c_gain[SIDE_FRONT]);
set_CC_unk1(pay,1);
@@ -6319,7 +6575,7 @@ write_AFE(struct scanner *s)
set_CC_exp_f_r2(pay,s->c_exposure[SIDE_FRONT][CHAN_RED]);
set_CC_exp_f_g2(pay,s->c_exposure[SIDE_FRONT][CHAN_GREEN]);
set_CC_exp_f_b2(pay,s->c_exposure[SIDE_FRONT][CHAN_BLUE]);
-
+
set_CC_b_gain(pay,s->c_gain[SIDE_BACK]);
set_CC_b_offset(pay,s->c_offset[SIDE_BACK]);
set_CC_exp_b_r1(pay,s->c_exposure[SIDE_BACK][CHAN_RED]);
@@ -6414,26 +6670,26 @@ gain_buffers (struct scanner *s, int setup)
* @@ Section 6 - SANE cleanup functions
*/
/*
- * Cancels a scan.
+ * Cancels a scan.
*
* It has been said on the mailing list that sane_cancel is a bit of a
* misnomer because it is routinely called to signal the end of a
* batch - quoting David Mosberger-Tang:
- *
+ *
* > In other words, the idea is to have sane_start() be called, and
* > collect as many images as the frontend wants (which could in turn
* > consist of multiple frames each as indicated by frame-type) and
- * > when the frontend is done, it should call sane_cancel().
+ * > when the frontend is done, it should call sane_cancel().
* > Sometimes it's better to think of sane_cancel() as "sane_stop()"
* > but that name would have had some misleading connotations as
* > well, that's why we stuck with "cancel".
- *
+ *
* The current consensus regarding duplex and ADF scans seems to be
* the following call sequence: sane_start; sane_read (repeat until
* EOF); sane_start; sane_read... and then call sane_cancel if the
* batch is at an end. I.e. do not call sane_cancel during the run but
* as soon as you get a SANE_STATUS_NO_DOCS.
- *
+ *
* From the SANE spec:
* This function is used to immediately or as quickly as possible
* cancel the currently pending operation of the device represented by
@@ -6478,13 +6734,13 @@ check_for_cancel(struct scanner *s)
if(s->started && s->cancelled){
unsigned char cmd[CANCEL_len];
size_t cmdLen = CANCEL_len;
-
+
DBG (15, "check_for_cancel: cancelling\n");
-
+
/* cancel scan */
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd, CANCEL_code);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6494,7 +6750,7 @@ check_for_cancel(struct scanner *s)
if(ret){
DBG (5, "check_for_cancel: ignoring bad cancel: %d\n",ret);
}
-
+
ret = object_position(s,SANE_FALSE);
if(ret){
DBG (5, "check_for_cancel: ignoring bad eject: %d\n",ret);
@@ -6516,7 +6772,7 @@ check_for_cancel(struct scanner *s)
/*
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -6560,7 +6816,7 @@ disconnect_fd (struct scanner *s)
/*
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -6983,19 +7239,19 @@ do_usb_cmd(struct scanner *s, int runRS, int shortTime,
DBG(5,"cmd: no mem\n");
return SANE_STATUS_NO_MEM;
}
-
+
/* build a USB packet around the SCSI command */
cmdBuffer[3] = cmdLength-4;
cmdBuffer[5] = 1;
cmdBuffer[6] = 0x90;
memcpy(cmdBuffer+cmdOffset,cmdBuff,cmdLen);
-
+
/* write the command out */
DBG(25, "cmd: writing %d bytes, timeout %d\n", (int)cmdLength, cmdTimeout);
hexdump(30, "cmd: >>", cmdBuffer, cmdLength);
ret = sanei_usb_write_bulk(s->fd, cmdBuffer, &cmdActual);
DBG(25, "cmd: wrote %d bytes, retVal %d\n", (int)cmdActual, ret);
-
+
if(cmdLength != cmdActual){
DBG(5,"cmd: wrong size %d/%d\n", (int)cmdLength, (int)cmdActual);
free(cmdBuffer);
@@ -7043,19 +7299,19 @@ do_usb_cmd(struct scanner *s, int runRS, int shortTime,
DBG(5,"out: no mem\n");
return SANE_STATUS_NO_MEM;
}
-
+
/* build a USB packet around the SCSI command */
outBuffer[3] = outLength-4;
outBuffer[5] = 2;
outBuffer[6] = 0xb0;
memcpy(outBuffer+outOffset,outBuff,outLen);
-
+
/* write the command out */
DBG(25, "out: writing %d bytes, timeout %d\n", (int)outLength, outTimeout);
hexdump(30, "out: >>", outBuffer, outLength);
ret = sanei_usb_write_bulk(s->fd, outBuffer, &outActual);
DBG(25, "out: wrote %d bytes, retVal %d\n", (int)outActual, ret);
-
+
if(outLength != outActual){
DBG(5,"out: wrong size %d/%d\n", (int)outLength, (int)outActual);
free(outBuffer);
@@ -7102,7 +7358,7 @@ do_usb_cmd(struct scanner *s, int runRS, int shortTime,
DBG(5,"in: no mem\n");
return SANE_STATUS_NO_MEM;
}
-
+
DBG(25, "in: reading %d bytes, timeout %d\n", (int)inActual, inTimeout);
ret = sanei_usb_read_bulk(s->fd, inBuffer, &inActual);
DBG(25, "in: read %d bytes, retval %d\n", (int)inActual, ret);
@@ -7161,11 +7417,11 @@ do_usb_cmd(struct scanner *s, int runRS, int shortTime,
ret = SANE_STATUS_EOF;
DBG(5,"in: short read, %d/%d\n", (int)inLength,(int)inActual);
}
-
+
/* ignore the USB packet around the SCSI command */
*inLen = inActual - inOffset;
memcpy(inBuff,inBuffer+inOffset,*inLen);
-
+
free(inBuffer);
}
@@ -7214,12 +7470,12 @@ do_usb_status(struct scanner *s, int runRS, int shortTime, size_t * extraLength)
DBG(5,"stat: no mem\n");
return SANE_STATUS_NO_MEM;
}
-
+
DBG(25, "stat: reading %d bytes, timeout %d\n", (int)statLength, statTimeout);
ret = sanei_usb_read_bulk(s->fd, statBuffer, &statActual);
DBG(25, "stat: read %d bytes, retval %d\n", (int)statActual, ret);
hexdump(30, "stat: <<", statBuffer, statActual);
-
+
/*weird status*/
if(ret != SANE_STATUS_GOOD){
DBG(5,"stat: clearing error '%s'\n",sane_strstatus(ret));
@@ -7232,7 +7488,7 @@ do_usb_status(struct scanner *s, int runRS, int shortTime, size_t * extraLength)
}
/*inspect the status byte of the response*/
else if(statBuffer[statOffset]){
- DBG(5,"stat: status %d\n",statBuffer[statLength-1-4]);
+ DBG(5,"stat: status %d\n",statBuffer[statOffset]);
ret = do_usb_clear(s,0,runRS);
}
@@ -7286,7 +7542,7 @@ do_usb_clear(struct scanner *s, int clear, int runRS)
rs_in, &rs_inLen
);
DBG(25,"rs sub call <<\n");
-
+
if(ret2 == SANE_STATUS_EOF){
DBG(5,"rs: got EOF, returning IO_ERROR\n");
return SANE_STATUS_IO_ERROR;
@@ -7309,7 +7565,7 @@ do_usb_clear(struct scanner *s, int clear, int runRS)
}
static SANE_Status
-wait_scanner(struct scanner *s)
+wait_scanner(struct scanner *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
@@ -7360,11 +7616,11 @@ wait_scanner(struct scanner *s)
/* Some scanners have per-resolution
* color interlacing values, but most
- * don't. This helper can tell the
+ * don't. This helper can tell the
* difference.
*/
static int
-get_color_inter(struct scanner *s, int side, int res)
+get_color_inter(struct scanner *s, int side, int res)
{
int i;
for(i=0;i<DPI_1200;i++){
@@ -7384,7 +7640,7 @@ get_color_inter(struct scanner *s, int side, int res)
* due to using FB or overscan.
*/
static int
-get_page_width(struct scanner *s)
+get_page_width(struct scanner *s)
{
int width = s->u.page_x;
@@ -7408,7 +7664,7 @@ get_page_width(struct scanner *s)
* due to using FB or overscan.
*/
static int
-get_page_height(struct scanner *s)
+get_page_height(struct scanner *s)
{
int height = s->u.page_y;
@@ -7600,7 +7856,7 @@ buffer_crop(struct scanner *s, int side)
/* if we will later binarize this image, make sure the width
* is a multiple of 8 pixels, by adjusting the right side */
- if ( must_downsample(s) && s->u.mode < MODE_GRAYSCALE ){
+ if ( must_downsample(s) && s->u.mode < MODE_GRAYSCALE ){
s->crop_vals[3] -= (s->crop_vals[3]-s->crop_vals[2]) % 8;
}
@@ -7618,13 +7874,13 @@ buffer_crop(struct scanner *s, int side)
s->i.width = s->s_params.pixels_per_line;
s->i.height = s->s_params.lines;
s->i.Bpl = s->s_params.bytes_per_line;
-
+
/* update image size counter to new, smaller size */
s->i.bytes_tot[side] = s->s_params.lines * s->s_params.bytes_per_line;
s->i.bytes_sent[side] = s->i.bytes_tot[side];
s->u.bytes_sent[side] = 0;
-
- cleanup:
+
+ cleanup:
DBG (10, "buffer_crop: finish\n");
return ret;
}
@@ -7679,7 +7935,7 @@ buffer_isblank(struct scanner *s, int side)
return status;
}
-/* certain options require the entire image to
+/* certain options require the entire image to
* be collected from the scanner before we can
* tell the user the size of the image. */
static int
@@ -7696,7 +7952,7 @@ must_fully_buffer(struct scanner *s)
return 0;
}
-/* certain scanners require the mode of the
+/* certain scanners require the mode of the
* image to be changed in software. */
static int
must_downsample(struct scanner *s)
@@ -7714,7 +7970,7 @@ must_downsample(struct scanner *s)
used by scanners to implement brightness/contrast/gamma
or by backends to speed binarization/thresholding
- offset and slope inputs are -127 to +127
+ offset and slope inputs are -127 to +127
slope rotates line around central input/output val,
0 makes horizontal line
@@ -7730,9 +7986,9 @@ must_downsample(struct scanner *s)
offset moves line vertically, and clamps to output range
0 keeps the line crossing the center of the table
- pos zero neg
+ pos zero neg
. xxxxxxxx . xx .
- . x . x .
+ . x . x .
out x . x . x
. . x . x
............ xx.......... xxxxxxxx....
@@ -7761,7 +8017,7 @@ load_lut (unsigned char * lut,
* first [-127,127] to [-.999,.999]
* then to [-PI/4,PI/4] then [0,PI/2]
* then take the tangent (T.O.A)
- * then multiply by the normal linear slope
+ * then multiply by the normal linear slope
* because the table may not be square, i.e. 1024x256*/
rise = tan((double)slope/128 * M_PI_4 + M_PI_4) * max_out_val / max_in_val;
@@ -7793,4 +8049,3 @@ load_lut (unsigned char * lut,
DBG (10, "load_lut: finish\n");
return ret;
}
-
diff --git a/backend/canon_dr.conf.in b/backend/canon_dr.conf.in
index 29b6db1..2f9d4e4 100644
--- a/backend/canon_dr.conf.in
+++ b/backend/canon_dr.conf.in
@@ -1,6 +1,6 @@
#######################################################################
# NOTE: 'option' lines only apply to the devices found by
-# the NEXT 'usb' or 'scsi' line. You may repeat the option line if
+# the NEXT 'usb' or 'scsi' line. You may repeat the option line if
# required for multiple scanners of different models/connections.
#######################################################################
diff --git a/backend/canon_dr.h b/backend/canon_dr.h
index d96fbba..4ffb360 100644
--- a/backend/canon_dr.h
+++ b/backend/canon_dr.h
@@ -1,12 +1,12 @@
#ifndef CANON_DR_H
#define CANON_DR_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comments in canon_dr.c
*/
-/* -------------------------------------------------------------------------
+/* -------------------------------------------------------------------------
* This option list has to contain all options for all scanners supported by
* this driver. If a certain scanner cannot handle a certain option, there's
* still the possibility to say so, later.
@@ -49,6 +49,7 @@ enum scanner_Option
OPT_DROPOUT_COLOR_B,
OPT_BUFFERMODE,
OPT_SIDE,
+ OPT_HW_CROP,
/*sensor group*/
OPT_SENSOR_GROUP,
@@ -89,7 +90,7 @@ struct img_params
int Bpl; /* in bytes */
int valid_width; /*some machines have black padding*/
- int valid_Bpl;
+ int valid_Bpl;
/* done yet? */
int eof[2];
@@ -183,9 +184,10 @@ struct scanner
int has_df;
int has_df_ultra;
int has_btc;
- int has_ssm; /* older scanners use this set scan mode command */
+ int has_ssm; /* older scanners use this set scan mode command */
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 can_read_sensors;
int can_read_panel;
int can_write_panel;
@@ -286,6 +288,7 @@ struct scanner
int swcrop;
int swskip;
int stapledetect;
+ int hwcrop;
/* --------------------------------------------------------------------- */
/* values which are derived from setting the options above */
@@ -454,8 +457,8 @@ enum {
#define DUPLEX_INTERLACE_2510 3
#define DUPLEX_INTERLACE_fFBb 4
-#define JPEG_INTERLACE_ALT 0
-#define JPEG_INTERLACE_NONE 1
+#define JPEG_INTERLACE_ALT 0
+#define JPEG_INTERLACE_NONE 1
#define CROP_RELATIVE 0
#define CROP_ABSOLUTE 1
diff --git a/backend/canon_pp-dev.c b/backend/canon_pp-dev.c
index a357cf0..df7c4aa 100644
--- a/backend/canon_pp-dev.c
+++ b/backend/canon_pp-dev.c
@@ -40,12 +40,12 @@
-----
- This file is part of the canon_pp backend, supporting Canon CanoScan
- Parallel scanners and also distributed as part of the stand-alone driver.
+ This file is part of the canon_pp backend, supporting Canon CanoScan
+ Parallel scanners and also distributed as part of the stand-alone driver.
canon_pp-dev.c: $Revision$
- Misc constants for Canon CanoScan Parallel scanners and high-level scan
+ Misc constants for Canon CanoScan Parallel scanners and high-level scan
functions.
Simon Krix <kinsei@users.sourceforge.net>
@@ -105,7 +105,7 @@ struct scanner_hardware_desc {
unsigned int type;
};
-static const struct scanner_hardware_desc
+static const struct scanner_hardware_desc
/* The known scanner types */
hw_fb320p = { "FB320P", 2, 2, 3508, 2552, 0 },
hw_fb330p = { "FB330P", 2, 2, 3508, 0, 1 },
@@ -124,7 +124,7 @@ struct scanner_id {
char *id;
const struct scanner_hardware_desc *hw;
};
-static const struct scanner_id scanner_id_table[] = {
+static const struct scanner_id scanner_id_table[] = {
{ "CANON IX-03055C", &hw_fb320p },
{ "CANON IX-06025C", &hw_fb620p },
{ "CANON IX-03075E", &hw_fb330p },
@@ -139,15 +139,15 @@ static const int fileversion = 3;
/* Internal functions */
static unsigned long column_sum(image_segment *image, int x);
-static int adjust_output(image_segment *image, scan_parameters *scanp,
+static int adjust_output(image_segment *image, scan_parameters *scanp,
scanner_parameters *scannerp);
static int check8(unsigned char *p, int s);
/* Converts from weird scanner format -> sequential data */
-static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
+static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
int width, int mode);
/* Sets up the scan command. This could use a better name
(and a rewrite). */
-static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
+static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
scan_parameters *scanp);
/* file reading and writing helpers */
@@ -155,7 +155,7 @@ static int safe_write(int fd, const char *p, unsigned long len);
static int safe_read(int fd, char *p, unsigned long len);
/* Command sending loop (waiting for ready status) */
-static int send_command(struct parport *port, unsigned char *buf, int bufsize,
+static int send_command(struct parport *port, unsigned char *buf, int bufsize,
int delay, int timeout);
/* Commands ================================================ */
@@ -219,8 +219,8 @@ static unsigned char command_14[32] =
0, 0, 0, 0,
0x12, 0xd1, 0x14, 0x82,
0, 0, 0, 0,
- 0x0f, 0xff,
- 0x0f, 0xff,
+ 0x0f, 0xff,
+ 0x0f, 0xff,
0x0f, 0xff, 0, 0 };
#endif
@@ -229,15 +229,15 @@ static unsigned char command_14[32] =
/*
* safe_write(): a small wrapper which ensures all the data is written in calls
- * to write(), since the POSIX call doesn't ensure it.
+ * to write(), since the POSIX call doesn't ensure it.
*/
static int safe_write(int fd, const char *p, unsigned long len) {
- int diff;
+ int diff;
unsigned long total = 0;
do {
diff = write(fd, p+total, len-total);
- if (diff < 0)
+ if (diff < 0)
{
if (errno == EINTR) continue;
return -1;
@@ -249,7 +249,7 @@ static int safe_write(int fd, const char *p, unsigned long len) {
}
-/* same dealie for read, except in the case of read the return of 0 bytes with
+/* same dealie for read, except in the case of read the return of 0 bytes with
* no INTR error indicates EOF */
static int safe_read(int fd, char *p, unsigned long len) {
int diff;
@@ -257,7 +257,7 @@ static int safe_read(int fd, char *p, unsigned long len) {
do {
diff = read(fd, p+total, len-total);
- if (diff <= 0)
+ if (diff <= 0)
{
if (errno == EINTR) continue;
if (diff == 0) return -2;
@@ -282,7 +282,7 @@ int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp)
/* Buffer for buffer info block */
unsigned char buffer_info_block[6];
- /* The image size the scanner says we asked for
+ /* The image size the scanner says we asked for
(based on the scanner's replies) */
int true_scanline_size, true_scanline_count;
@@ -301,7 +301,7 @@ int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp)
if (send_command(sp->port, command_b, 56, 50000, 1000000))
return -1;
-
+
/* Ask the scanner about the buffer */
if (send_command(sp->port, cmd_buf_status, 10, 50000, 1000000))
return -1;
@@ -309,7 +309,7 @@ int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp)
/* Read buffer information block */
sanei_canon_pp_read(sp->port, 6, buffer_info_block);
- if (check8(buffer_info_block, 6))
+ if (check8(buffer_info_block, 6))
DBG(1, "init_scan: ** Warning: Checksum error reading buffer "
"info block.\n");
@@ -321,7 +321,7 @@ int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp)
expected_scanline_size = scanp->width * 1.25; break;
case 1: /* true-colour; 30 bits per pixel */
expected_scanline_size = scanp->width * 3.75; break;
- default:
+ default:
DBG(1, "init_scan: Illegal mode %i requested in "
"init_scan().\n", scanp->mode);
DBG(1, "This is a bug. Please report it.\n");
@@ -329,29 +329,29 @@ int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp)
}
/* The scanner's idea of the length of each scanline in bytes */
- true_scanline_size = (buffer_info_block[0]<<8) | buffer_info_block[1];
+ true_scanline_size = (buffer_info_block[0]<<8) | buffer_info_block[1];
/* The scanner's idea of the number of scanlines in total */
- true_scanline_count = (buffer_info_block[2]<<8) | buffer_info_block[3];
+ true_scanline_count = (buffer_info_block[2]<<8) | buffer_info_block[3];
- if ((expected_scanline_size != true_scanline_size)
+ if ((expected_scanline_size != true_scanline_size)
|| (expected_scanline_count != true_scanline_count))
{
DBG(10, "init_scan: Warning: Scanner is producing an image "
"of unexpected size:\n");
- DBG(10, "expected: %i bytes wide, %i scanlines tall.\n",
- expected_scanline_size,
+ DBG(10, "expected: %i bytes wide, %i scanlines tall.\n",
+ expected_scanline_size,
expected_scanline_count);
- DBG(10, "true: %i bytes wide, %i scanlines tall.\n",
+ DBG(10, "true: %i bytes wide, %i scanlines tall.\n",
true_scanline_size, true_scanline_count);
if (scanp->mode == 0)
scanp->width = true_scanline_size / 1.25;
else
- scanp->width = true_scanline_size / 3.75;
+ scanp->width = true_scanline_size / 3.75;
scanp->height = true_scanline_count;
}
- return 0;
+ return 0;
}
@@ -373,7 +373,7 @@ int sanei_canon_pp_initialise(scanner_parameters *sp, int mode)
DBG(50, "initialise: >> scanner_init\n");
if (sanei_canon_pp_scanner_init(sp->port))
{
- /* If we're using an unsupported ieee1284 mode here, this is
+ /* If we're using an unsupported ieee1284 mode here, this is
* where it will fail, so fall back to nibble. */
sanei_canon_pp_set_ieee1284_mode(M1284_NIBBLE);
if (sanei_canon_pp_scanner_init(sp->port))
@@ -416,12 +416,12 @@ int sanei_canon_pp_initialise(scanner_parameters *sp, int mode)
{
hw = cur_id->hw;
}
- else if (sp->scanheadwidth == 5104)
+ else if (sp->scanheadwidth == 5104)
{
/* Guess 600dpi scanner */
hw = &hw_alien600;
}
- else if (sp->scanheadwidth == 2552)
+ else if (sp->scanheadwidth == 2552)
{
/* Guess 300dpi scanner */
hw = &hw_alien300;
@@ -433,24 +433,24 @@ int sanei_canon_pp_initialise(scanner_parameters *sp, int mode)
}
strcpy(sp->name, hw->name);
- sp->natural_xresolution = hw->natural_xresolution;
- sp->natural_yresolution = hw->natural_yresolution;
+ sp->natural_xresolution = hw->natural_xresolution;
+ sp->natural_yresolution = hw->natural_yresolution;
sp->scanbedlength = hw->scanbedlength;
if (hw->scanheadwidth)
sp->scanheadwidth = hw->scanheadwidth;
sp->type = hw->type;
- return 0;
+ return 0;
}
/* Shut scanner down */
int sanei_canon_pp_close_scanner(scanner_parameters *sp)
{
- /* Put scanner in transparent mode */
+ /* Put scanner in transparent mode */
sanei_canon_pp_sleep_scanner(sp->port);
/* Free memory (with purchase of memory of equal or greater value) */
- if (sp->blackweight != NULL)
+ if (sp->blackweight != NULL)
{
free(sp->blackweight);
sp->blackweight = NULL;
@@ -471,7 +471,7 @@ int sanei_canon_pp_close_scanner(scanner_parameters *sp)
sp->blueweight = NULL;
}
- return 0;
+ return 0;
}
/* Read the calibration information from file */
@@ -497,7 +497,7 @@ int sanei_canon_pp_load_weights(const char *filename, scanner_parameters *sp)
return -2;
}
- /* Read and check file version (the calibrate file
+ /* Read and check file version (the calibrate file
format changes from time to time) */
ret = safe_read(fd, (char *)&temp, sizeof(int));
@@ -512,7 +512,7 @@ int sanei_canon_pp_load_weights(const char *filename, scanner_parameters *sp)
if (((sp->blueweight = malloc(cal_data_size)) == NULL)
|| ((sp->redweight = malloc(cal_data_size)) == NULL)
|| ((sp->greenweight = malloc(cal_data_size)) == NULL)
- || ((sp->blackweight = malloc(cal_data_size)) == NULL))
+ || ((sp->blackweight = malloc(cal_data_size)) == NULL))
return -4;
/* Read width of calibration data */
@@ -555,20 +555,20 @@ int sanei_canon_pp_load_weights(const char *filename, scanner_parameters *sp)
}
/* Read white-balance/gamma data */
-
+
if (safe_read(fd, (char *)&(sp->gamma), 32) < 0)
{
close(fd);
return -10;
}
- close(fd);
+ close(fd);
return 0;
}
/* Mode is 0 for greyscale source data or 1 for RGB */
-static void convert_to_rgb(image_segment *dest, unsigned char *src,
+static void convert_to_rgb(image_segment *dest, unsigned char *src,
int width, int scanlines, int mode)
{
int curline;
@@ -581,23 +581,23 @@ static void convert_to_rgb(image_segment *dest, unsigned char *src,
if (mode == 0) /* Grey */
{
- convdata(src + (curline * scanline_size),
- dest->image_data +
+ convdata(src + (curline * scanline_size),
+ dest->image_data +
(curline * width * 2), width, 1);
}
else if (mode == 1) /* Truecolour */
{
/* Red */
- convdata(src + (curline * scanline_size),
- dest->image_data +
+ convdata(src + (curline * scanline_size),
+ dest->image_data +
(curline * width *3*2) + 4, width, 2);
/* Green */
- convdata(src + (curline * scanline_size) + colour_size,
- dest->image_data +
+ convdata(src + (curline * scanline_size) + colour_size,
+ dest->image_data +
(curline * width *3*2) + 2, width, 2);
/* Blue */
- convdata(src + (curline * scanline_size) +
- (2 * colour_size), dest->image_data +
+ convdata(src + (curline * scanline_size) +
+ (2 * colour_size), dest->image_data +
(curline * width *3*2), width, 2);
}
@@ -605,7 +605,7 @@ static void convert_to_rgb(image_segment *dest, unsigned char *src,
}
-int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
+int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
scan_parameters *scanp, int scanline_number, int do_adjust,
int scanlines_left)
{
@@ -646,8 +646,8 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
/* Allocate memory for dest image segment */
- output_image->image_data =
- malloc(output_image->width * output_image->height *
+ output_image->image_data =
+ malloc(output_image->width * output_image->height *
(scanp->mode ? 3 : 1) * 2);
if (output_image->image_data == NULL)
@@ -679,17 +679,17 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
if ((packet_header[2]<<8) + packet_header[3] != read_data_size)
{
- DBG(1, "read_segment: Error: Expected data size: %i bytes.\n",
+ DBG(1, "read_segment: Error: Expected data size: %i bytes.\n",
read_data_size);
DBG(1, "read_segment: Expecting %i bytes times %i "
"scanlines.\n", scanline_size, scanline_number);
- DBG(1, "read_segment: Actual data size: %i bytes.\n",
+ DBG(1, "read_segment: Actual data size: %i bytes.\n",
(packet_header[2] << 8) + packet_header[3]);
goto error_out;
}
/* Read scanlines_this_packet scanlines into the input buf */
-
+
if (sanei_canon_pp_read(sp->port, read_data_size, input_buffer))
{
DBG(1, "read_segment: Segment read incorrectly, and we don't "
@@ -697,11 +697,11 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
goto error_out;
}
- /* This is the only place we can abort safely -
+ /* This is the only place we can abort safely -
* between reading one segment and requesting the next one. */
if (sp->abort_now) goto error_out;
- if (scanlines_left >= (scanline_number * 2))
+ if (scanlines_left >= (scanline_number * 2))
{
DBG(100, "read_segment: Speculatively starting more scanning "
"(%d left)\n", scanlines_left);
@@ -711,7 +711,7 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
DBG(100, "read_segment: Convert to RGB\n");
/* Convert data */
- convert_to_rgb(output_image, input_buffer, scanp->width,
+ convert_to_rgb(output_image, input_buffer, scanp->width,
scanline_number, scanp->mode);
/* Adjust pixel readings according to calibration data */
@@ -724,10 +724,10 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
*dest = output_image;
/* finished with this now */
free(input_buffer);
- return 0;
+ return 0;
error_out:
- if (output_image && output_image->image_data)
+ if (output_image && output_image->image_data)
free(output_image->image_data);
if (output_image) free(output_image);
if (input_buffer) free(input_buffer);
@@ -735,13 +735,13 @@ int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
return -1;
}
-/*
+/*
check8: Calculates the checksum-8 for s bytes pointed to by p.
For messages from the scanner, this should normally end up returning
-0, since the last byte of most packets is the value that makes the
+0, since the last byte of most packets is the value that makes the
total up to 0 (or 256 if you're left-handed).
-Hence, usage: if (check8(buffer, size)) {DBG(10, "checksum error!\n");}
+Hence, usage: if (check8(buffer, size)) {DBG(10, "checksum error!\n");}
Can also be used to generate valid checksums for sending to the scanner.
*/
@@ -756,13 +756,13 @@ static int check8(unsigned char *p, int s) {
/* Converts from scanner format -> linear
width is in pixels, not bytes. */
/* This function could use a rewrite */
-static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
+static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
int width, int mode)
-/* This is a tricky (read: crap) function (read: hack) which is why I probably
- spent more time commenting it than programming it. The thing to remember
+/* This is a tricky (read: crap) function (read: hack) which is why I probably
+ spent more time commenting it than programming it. The thing to remember
here is that the scanner uses interpolated scanlines, so it's
- RRRRRRRGGGGGGBBBBBB not RGBRGBRGBRGBRGB. So, the calling function just
- increments the destination pointer slightly to handle green, then a bit
+ RRRRRRRGGGGGGBBBBBB not RGBRGBRGBRGBRGB. So, the calling function just
+ increments the destination pointer slightly to handle green, then a bit
more for blue. If you don't understand, tough. */
{
int count;
@@ -770,13 +770,13 @@ static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
for (count = 0; count < width; count++)
{
- /* The scanner stores data in a bizzare butchered 10-bit
+ /* The scanner stores data in a bizzare butchered 10-bit
format. I'll try to explain it in 100 words or less:
- Scanlines are made up of groups of 4 pixels. Each group of
- 4 is stored inside 5 bytes. The first 4 bytes of the group
- contain the lowest 8 bits of one pixel each (in the right
- order). The 5th byte contains the most significant 2 bits
+ Scanlines are made up of groups of 4 pixels. Each group of
+ 4 is stored inside 5 bytes. The first 4 bytes of the group
+ contain the lowest 8 bits of one pixel each (in the right
+ order). The 5th byte contains the most significant 2 bits
of each pixel in the same order. */
i = srcbuffer[count + (count >> 2)]; /* Low byte for pixel */
@@ -784,7 +784,7 @@ static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
j = j >> ((count % 4) * 2); /* Get upper 2 bits of intensity */
j = j & 0x03; /* Can't hurt */
/* And the final 10-bit pixel value is: */
- k = (j << 8) | i;
+ k = (j << 8) | i;
/* now we return this as a 16 bit value */
k = k << 6;
@@ -797,17 +797,17 @@ static void convdata(unsigned char *srcbuffer, unsigned char *dstbuffer,
else if (mode == 2) /* Scanner -> RGB */
{
dstbuffer[count * 3 * 2] = HIGH_BYTE(k);
- dstbuffer[(count * 3 * 2) + 1] = LOW_BYTE(k);
+ dstbuffer[(count * 3 * 2) + 1] = LOW_BYTE(k);
}
}
}
-static int adjust_output(image_segment *image, scan_parameters *scanp,
+static int adjust_output(image_segment *image, scan_parameters *scanp,
scanner_parameters *scannerp)
/* Needing a good cleanup */
{
- /* light and dark points for the CCD sensor in question
+ /* light and dark points for the CCD sensor in question
* (stored in file as 0-1024, scaled to 0-65536) */
unsigned long hi, lo;
/* The result of our calculations */
@@ -827,70 +827,70 @@ static int adjust_output(image_segment *image, scan_parameters *scanp,
{
/* Figure out CCD sensor number */
/* MAGIC FORMULA ALERT! */
- ccd = (pixelnum << (scannerp->natural_xresolution -
- scanp->xresolution)) + (1 <<
- (scannerp->natural_xresolution
+ ccd = (pixelnum << (scannerp->natural_xresolution -
+ scanp->xresolution)) + (1 <<
+ (scannerp->natural_xresolution
- scanp->xresolution)) - 1;
- scaled_xoff = scanp->xoffset <<
- (scannerp->natural_xresolution -
+ scaled_xoff = scanp->xoffset <<
+ (scannerp->natural_xresolution -
scanp->xresolution);
- ccd += scaled_xoff;
+ ccd += scaled_xoff;
for (colour = 0; colour < cols; colour++)
{
/* Address of pixel under scrutiny */
- pixel_address =
+ pixel_address =
(scanline * image->width * cols * 2) +
(pixelnum * cols * 2) + (colour * 2);
- /* Dark value is easy
+ /* Dark value is easy
* Range of lo is 0-18k */
lo = (scannerp->blackweight[ccd]) * 3;
- /* Light value depends on the colour,
+ /* Light value depends on the colour,
* and is an average in greyscale mode. */
if (scanp->mode == 1) /* RGB */
{
switch (colour)
{
- case 0: hi = scannerp->redweight[ccd] * 3;
+ case 0: hi = scannerp->redweight[ccd] * 3;
break;
- case 1: hi = scannerp->greenweight[ccd] * 3;
+ case 1: hi = scannerp->greenweight[ccd] * 3;
break;
- default: hi = scannerp->blueweight[ccd] * 3;
+ default: hi = scannerp->blueweight[ccd] * 3;
break;
}
}
else /* Grey - scanned using green */
{
- hi = scannerp->greenweight[ccd] * 3;
+ hi = scannerp->greenweight[ccd] * 3;
}
- /* Check for bad calibration data as it
+ /* Check for bad calibration data as it
can cause a divide-by-0 error */
if (hi <= lo)
{
DBG(1, "adjust_output: Bad cal data!"
" hi: %ld lo: %ld\n"
"Recalibrate, that "
- "should fix it.\n",
+ "should fix it.\n",
hi, lo);
return -1;
}
/* Start with the pixel value in result */
- result = MAKE_SHORT(*(image->image_data +
- pixel_address),
- *(image->image_data +
+ result = MAKE_SHORT(*(image->image_data +
+ pixel_address),
+ *(image->image_data +
pixel_address + 1));
result = result >> 6; /* Range now = 0-1023 */
/*
if (scanline == 10)
DBG(200, "adjust_output: Initial pixel"
- " value: %ld\n",
+ " value: %ld\n",
result);
*/
result *= 54; /* Range now = 0-54k */
@@ -913,13 +913,13 @@ static int adjust_output(image_segment *image, scan_parameters *scanp,
{
DBG(200, "adjust_output: %d: base = "
"%lu, result %lu (%lu "
- "- %lu)\n", pixelnum,
+ "- %lu)\n", pixelnum,
result, temp, lo, hi);
- }
+ }
*/
result = temp;
- /* Store the value back where it came
+ /* Store the value back where it came
* from (always bigendian) */
*(image->image_data + pixel_address)
= HIGH_BYTE(result);
@@ -934,7 +934,7 @@ static int adjust_output(image_segment *image, scan_parameters *scanp,
/* Calibration run. Aborting allowed at "safe" points where the scanner won't
* be left in a crap state. */
-int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
+int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
{
int count, readnum, colournum, scanlinenum;
int outfile;
@@ -962,11 +962,11 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
if (sp->abort_now) return -1;
DBG(40, "Calibrating %ix%i pixels calibration image "
- "(%i bytes each scan).\n",
- sp->scanheadwidth, scanline_count,
+ "(%i bytes each scan).\n",
+ sp->scanheadwidth, scanline_count,
scanline_size * scanline_count);
- /* Allocate memory for calibration data */
+ /* Allocate memory for calibration data */
sp->blackweight = (unsigned long *)
calloc(sizeof(unsigned long), sp->scanheadwidth);
sp->redweight = (unsigned long *)
@@ -981,7 +981,7 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
databuf = malloc(scanline_size * scanline_count * calibration_reads*3);
/* And allocate space for converted image data in this image_segment */
- image.image_data = malloc(scanline_count * sp->scanheadwidth * 2 *
+ image.image_data = malloc(scanline_count * sp->scanheadwidth * 2 *
calibration_reads);
image.width = sp->scanheadwidth;
image.height = scanline_count * calibration_reads;
@@ -996,7 +996,7 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
DBG(40, "Step 1/3: Calibrating black level...\n");
for (readnum = 0; readnum < calibration_reads; readnum++)
{
- DBG(40, " * Black scan number %d/%d.\n", readnum + 1,
+ DBG(40, " * Black scan number %d/%d.\n", readnum + 1,
calibration_reads);
if (sp->abort_now) return -1;
@@ -1007,32 +1007,32 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
free (image.image_data);
free(databuf);
return -1;
-
+
}
/* Black reference data */
sanei_canon_pp_read(sp->port, scanline_size * scanline_count,
- databuf +
+ databuf +
(readnum * scanline_size * scanline_count));
}
/* Convert scanner format to a greyscale 16bpp image */
- for (scanlinenum = 0;
- scanlinenum < scanline_count * calibration_reads;
+ for (scanlinenum = 0;
+ scanlinenum < scanline_count * calibration_reads;
scanlinenum++)
{
- convdata(databuf + (scanlinenum * scanline_size),
- image.image_data +
- (scanlinenum * sp->scanheadwidth*2),
+ convdata(databuf + (scanlinenum * scanline_size),
+ image.image_data +
+ (scanlinenum * sp->scanheadwidth*2),
sp->scanheadwidth, 1);
}
/* Take column totals */
for (count = 0; count < sp->scanheadwidth; count++)
{
- /* Value is normalised as if we took 6 scanlines, even if we
+ /* Value is normalised as if we took 6 scanlines, even if we
* didn't (620P I'm looking at you!) */
- sp->blackweight[count] = (column_sum(&image, count) * 6)
+ sp->blackweight[count] = (column_sum(&image, count) * 6)
/ scanline_count >> 6;
}
@@ -1057,7 +1057,7 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
DBG(20, " * Snoozing for 15 seconds while the scanner calibrates...");
usleep(15000000);
DBG(40, "done.\n");
-
+
DBG(40, " * Requesting gamma table values...");
if (send_command(sp->port, cmd_readgamma, 10, 100000, 10000000))
{
@@ -1088,7 +1088,7 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
command_buffer[3] = colournum;
for (readnum = 0; readnum < 3; readnum++)
{
- DBG(10, " * %s sensors, scan number %d/%d.\n",
+ DBG(10, " * %s sensors, scan number %d/%d.\n",
colours[colournum-1], readnum + 1,
calibration_reads);
@@ -1102,20 +1102,20 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
return -1;
}
- sanei_canon_pp_read(sp->port, scanline_size *
- scanline_count, databuf +
- (readnum * scanline_size *
+ sanei_canon_pp_read(sp->port, scanline_size *
+ scanline_count, databuf +
+ (readnum * scanline_size *
scanline_count));
}
/* Convert colour data from scanner format to RGB data */
- for (scanlinenum = 0; scanlinenum < scanline_count *
+ for (scanlinenum = 0; scanlinenum < scanline_count *
calibration_reads; scanlinenum++)
{
- convdata(databuf + (scanlinenum * scanline_size),
- image.image_data +
- (scanlinenum * sp->scanheadwidth * 2),
+ convdata(databuf + (scanlinenum * scanline_size),
+ image.image_data +
+ (scanlinenum * sp->scanheadwidth * 2),
sp->scanheadwidth, 1);
}
@@ -1123,14 +1123,14 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
for (count = 0; count < sp->scanheadwidth; count++)
{
if (colournum == 1)
- sp->redweight[count] =
- column_sum(&image, count) >> 6;
+ sp->redweight[count] =
+ column_sum(&image, count) >> 6;
else if (colournum == 2)
- sp->greenweight[count] =
- column_sum(&image, count) >> 6;
+ sp->greenweight[count] =
+ column_sum(&image, count) >> 6;
else
- sp->blueweight[count] =
- column_sum(&image, count) >> 6;
+ sp->blueweight[count] =
+ column_sum(&image, count) >> 6;
}
}
@@ -1154,19 +1154,19 @@ int sanei_canon_pp_calibrate(scanner_parameters *sp, char *cal_file)
DBG(10, "Write error on calibration file %s", cal_file);
/* Data */
- if (safe_write(outfile, (char *)&(sp->scanheadwidth),
+ if (safe_write(outfile, (char *)&(sp->scanheadwidth),
sizeof(sp->scanheadwidth)) < 0)
DBG(10, "Write error on calibration file %s", cal_file);
- if (safe_write(outfile, (char *)(sp->blackweight),
+ if (safe_write(outfile, (char *)(sp->blackweight),
sp->scanheadwidth * sizeof(long)) < 0)
DBG(10, "Write error on calibration file %s", cal_file);
- if (safe_write(outfile, (char *)(sp->redweight),
+ if (safe_write(outfile, (char *)(sp->redweight),
sp->scanheadwidth * sizeof(long)) < 0)
DBG(10, "Write error on calibration file %s", cal_file);
- if (safe_write(outfile, (char *)(sp->greenweight),
+ if (safe_write(outfile, (char *)(sp->greenweight),
sp->scanheadwidth * sizeof(long)) < 0)
DBG(10, "Write error on calibration file %s", cal_file);
- if (safe_write(outfile, (char *)(sp->blueweight),
+ if (safe_write(outfile, (char *)(sp->blueweight),
sp->scanheadwidth * sizeof(long)) < 0)
DBG(10, "Write error on calibration file %s", cal_file);
if (safe_write(outfile, (char *)(sp->gamma), 32) < 0)
@@ -1198,7 +1198,7 @@ static unsigned long column_sum(image_segment *image, int x)
}
-static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
+static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
scan_parameters *scanp)
{
int scaled_width, scaled_height;
@@ -1218,14 +1218,14 @@ static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
buf[3] = 0x58;
}
- scaled_width = scanp->width <<
+ scaled_width = scanp->width <<
(sp->natural_xresolution - scanp->xresolution);
/* YO! This needs fixing if we ever use yresolution! */
- scaled_height = scanp->height <<
+ scaled_height = scanp->height <<
(sp->natural_xresolution - scanp->xresolution);
- scaled_xoff = scanp->xoffset <<
+ scaled_xoff = scanp->xoffset <<
(sp->natural_xresolution - scanp->xresolution);
- scaled_yoff = scanp->yoffset <<
+ scaled_yoff = scanp->yoffset <<
(sp->natural_xresolution - scanp->xresolution);
/* Input resolution */
@@ -1247,7 +1247,7 @@ static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
buf[14] = (scaled_yoff & 0xff00) >> 8;
buf[15] = scaled_yoff & 0xff;
- /* Width of image to be scanned */
+ /* Width of image to be scanned */
buf[16] = (scaled_width & 0xff000000) >> 24;
buf[17] = (scaled_width & 0xff0000) >> 16;
buf[18] = (scaled_width & 0xff00) >> 8;
@@ -1260,7 +1260,7 @@ static int scanner_setup_params(unsigned char *buf, scanner_parameters *sp,
buf[23] = scaled_height & 0xff;
- /* These appear to be the only two colour mode possibilities.
+ /* These appear to be the only two colour mode possibilities.
Pure black-and-white mode probably just uses greyscale and
then gets its contrast adjusted by the driver. I forget. */
if (scanp->mode == 1) /* Truecolour */
@@ -1307,15 +1307,15 @@ int sanei_canon_pp_sleep_scanner(struct parport *port)
int sanei_canon_pp_detect(struct parport *port, int mode)
{
/*int caps;*/
- /* This code needs to detect whether or not a scanner is present on
- * the port, quickly and reliably. Fast version of
- * sanei_canon_pp_initialise()
+ /* This code needs to detect whether or not a scanner is present on
+ * the port, quickly and reliably. Fast version of
+ * sanei_canon_pp_initialise()
*
- * If this detect returns true, a more comprehensive check will
+ * If this detect returns true, a more comprehensive check will
* be conducted
- * Return values:
+ * Return values:
* 0 = scanner present
- * anything else = scanner not present
+ * anything else = scanner not present
* PRE: port is open/unclaimed
* POST: port is closed/unclaimed
*/
@@ -1343,9 +1343,9 @@ int sanei_canon_pp_detect(struct parport *port, int mode)
return 0;
}
-static int send_command(struct parport *port, unsigned char *buf, int bufsize,
+static int send_command(struct parport *port, unsigned char *buf, int bufsize,
int delay, int timeout)
-/* Sends a command until the scanner says it is ready.
+/* Sends a command until the scanner says it is ready.
* sleeps for delay microsecs between reads
* returns -1 on error, -2 on timeout */
{
@@ -1359,7 +1359,7 @@ static int send_command(struct parport *port, unsigned char *buf, int bufsize,
/* sleep a bit */
usleep(delay);
- } while (sanei_canon_pp_check_status(port) &&
+ } while (sanei_canon_pp_check_status(port) &&
retries++ < (timeout/delay));
if (retries >= (timeout/delay)) return -2;
diff --git a/backend/canon_pp-dev.h b/backend/canon_pp-dev.h
index e8f36a8..4ad2e45 100644
--- a/backend/canon_pp-dev.h
+++ b/backend/canon_pp-dev.h
@@ -42,7 +42,7 @@
canon_pp-dev.h: $Revision$
- This file is part of the canon_pp backend, supporting Canon FBX30P
+ This file is part of the canon_pp backend, supporting Canon FBX30P
and NX40P scanners and also part of the stand-alone driver.
Simon Krix <kinsei@users.sourceforge.net>
@@ -105,9 +105,9 @@ typedef struct scanner_parameter_struct
int max_xresolution;
int max_yresolution;
- /* ID String. Should only be 38(?) bytes long, so we can
+ /* ID String. Should only be 38(?) bytes long, so we can
reduce the size later. */
- char id_string[80];
+ char id_string[80];
/* Short, readable scanner name, such as "FB330P" */
char name[40];
@@ -120,7 +120,7 @@ typedef struct scanner_parameter_struct
unsigned long *blueweight;
/* Not understood white-balance/gain values */
- unsigned char gamma[32];
+ unsigned char gamma[32];
/* Type of scanner ( 0 = *20P, 1 = [*30P|*40P] ) */
unsigned char type;
@@ -154,7 +154,7 @@ typedef struct image_segment_struct
/* Scan-related functions ========================= */
-/* Brings the scanner in and out of transparent mode
+/* Brings the scanner in and out of transparent mode
and detects model information */
int sanei_canon_pp_initialise(scanner_parameters *sp, int mode);
int sanei_canon_pp_close_scanner(scanner_parameters *sp);
@@ -162,7 +162,7 @@ int sanei_canon_pp_close_scanner(scanner_parameters *sp);
/* Image scanning functions */
int sanei_canon_pp_init_scan(scanner_parameters *sp, scan_parameters *scanp);
-int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
+int sanei_canon_pp_read_segment(image_segment **dest, scanner_parameters *sp,
scan_parameters *scanp, int scanline_count, int do_adjust,
int scanlines_left);
diff --git a/backend/canon_pp-io.c b/backend/canon_pp-io.c
index 881ac24..97ee526 100644
--- a/backend/canon_pp-io.c
+++ b/backend/canon_pp-io.c
@@ -41,7 +41,7 @@
-----
This file is part of the canon_pp backend, supporting Canon CanoScan
- Parallel scanners and also distributed as part of the stand-alone driver.
+ Parallel scanners and also distributed as part of the stand-alone driver.
canon_pp-io.c: $Revision$
@@ -89,8 +89,8 @@ static void DBG(int level, const char *format, ...)
/* 0x00 = Nibble Mode (M1284_NIBBLE)
0x10 = ECP Mode (M1284_ECP)
- The scanner driver seems not to support ECP RLE mode
- (which is a huge bummer because compression would be
+ The scanner driver seems not to support ECP RLE mode
+ (which is a huge bummer because compression would be
ace) nor EPP mode.
*/
static int ieee_mode = M1284_NIBBLE;
@@ -109,12 +109,12 @@ static void scanner_chessboard_control(struct parport *port);
static void scanner_chessboard_data(struct parport *port, int mode);
/* Used by read_data */
-static int ieee_transfer(struct parport *port, int length,
+static int ieee_transfer(struct parport *port, int length,
unsigned char *data);
/* Low level functions */
static int readstatus(struct parport *port);
-static int expect(struct parport *port, const char *step, int s,
+static int expect(struct parport *port, const char *step, int s,
int mask, unsigned int delay);
/* Port-level functions */
@@ -124,7 +124,7 @@ static void outboth(struct parport *port, int d, int c);
/************************************/
-/*
+/*
* IEEE 1284 defines many values for m,
* but these scanners only support 2: nibble and ECP modes.
* And no data compression either (argh!)
@@ -144,7 +144,7 @@ int sanei_canon_pp_wake_scanner(struct parport *port, int mode)
int i = 0;
int tmp;
int max_cycles = 3;
-
+
tmp = readstatus(port);
/* Reset only works on 30/40 models */
@@ -171,7 +171,7 @@ int sanei_canon_pp_wake_scanner(struct parport *port, int mode)
scanner_chessboard_control(port);
scanner_chessboard_data(port, mode);
- if (expect(port, NULL, 0x03, 0x1f, 800000) &&
+ if (expect(port, NULL, 0x03, 0x1f, 800000) &&
(mode == INITMODE_AUTO))
{
/* 630 Style init failed, try 620 style */
@@ -187,7 +187,7 @@ int sanei_canon_pp_wake_scanner(struct parport *port, int mode)
usleep(100000);
}
- } while ((i < max_cycles) && (!expect(port,"Scanner wakeup reply 2",
+ } while ((i < max_cycles) && (!expect(port,"Scanner wakeup reply 2",
0x03, 0x1f, 100000) == 0));
/* Block just after chessboarding
@@ -201,7 +201,7 @@ int sanei_canon_pp_wake_scanner(struct parport *port, int mode)
return -1;
outboth(port, 0, NSELECTIN | NINIT | HOSTCLK); /* Clear D, C3+, C1- */
- /* If we had to try the wakeup cycle more than once, we should wait
+ /* If we had to try the wakeup cycle more than once, we should wait
* here for 10 seconds to let the scanner pull itself together -
* it can actually take longer, but I can't wait that long! */
if (i > 1)
@@ -227,7 +227,7 @@ int sanei_canon_pp_write(struct parport *port, int length, unsigned char *data)
DBG(10,"%02x ", data[count]);
if (count % 20 == 19)
DBG(10,"\n ");
- }
+ }
if (count % 20 != 19) DBG(10,"\n");
#endif
@@ -238,20 +238,20 @@ int sanei_canon_pp_write(struct parport *port, int length, unsigned char *data)
case M1284_BECP:
case M1284_ECPRLE:
case M1284_ECPSWE:
- case M1284_ECP:
+ case M1284_ECP:
ieee1284_negotiate(port, ieee_mode);
- if (ieee1284_ecp_write_data(port, 0, (char *)data,
+ if (ieee1284_ecp_write_data(port, 0, (char *)data,
length) != length)
return -1;
break;
- case M1284_NIBBLE:
- if (ieee1284_compat_write(port, 0, (char *)data,
+ case M1284_NIBBLE:
+ if (ieee1284_compat_write(port, 0, (char *)data,
length) != length)
return -1;
break;
default:
DBG(0, "Invalid mode in write!\n");
- }
+ }
DBG(100, "<< write");
@@ -265,7 +265,7 @@ int sanei_canon_pp_read(struct parport *port, int length, unsigned char *data)
DBG(200, "NEW read_data (%i bytes):\n", length);
ieee1284_negotiate(port, ieee_mode);
- /* This is special; Nibble mode needs a little
+ /* This is special; Nibble mode needs a little
extra help from us. */
if (ieee_mode == M1284_NIBBLE)
@@ -275,7 +275,7 @@ int sanei_canon_pp_read(struct parport *port, int length, unsigned char *data)
if (expect(port, "Read Data 1", 0, NDATAAVAIL, 6000000))
{
DBG(10,"Error 1\n");
- ieee1284_terminate(port);
+ ieee1284_terminate(port);
return 1;
}
outcont(port, HOSTBUSY, HOSTBUSY);
@@ -283,7 +283,7 @@ int sanei_canon_pp_read(struct parport *port, int length, unsigned char *data)
if (expect(port, "Read Data 2", NACK, NACK, 1000000))
{
DBG(1,"Error 2\n");
- ieee1284_terminate(port);
+ ieee1284_terminate(port);
return 1;
}
if (expect(port, "Read Data 3 (Ready?)", 0, PERROR, 1000000))
@@ -319,7 +319,7 @@ int sanei_canon_pp_read(struct parport *port, int length, unsigned char *data)
/* If 0 bytes were transferred, it's a legal
"No data" condition (I think). Otherwise,
it may have run out of buffer.. keep reading*/
-
+
if (count < 0) {
DBG(10, "Couldn't read enough data (need %d more "
"of %d)\n", length+count,length+offset);
@@ -344,14 +344,14 @@ int sanei_canon_pp_read(struct parport *port, int length, unsigned char *data)
DBG(10,"%02x ", data[count]);
if (count % 20 == 19)
DBG(10,"\n ");
- }
+ }
if (count % 20 != 19) DBG(10,"\n");
}
else
{
DBG(10,"Read: %i bytes\n", length);
- }
+ }
#endif
if (ieee_mode == M1284_NIBBLE)
@@ -367,17 +367,17 @@ static int ieee_transfer(struct parport *port, int length, unsigned char *data)
DBG(100, "IEEE transfer (%i bytes)\n", length);
- switch (ieee_mode)
+ switch (ieee_mode)
{
case M1284_BECP:
case M1284_ECP:
case M1284_ECPRLE:
case M1284_ECPSWE:
- result = ieee1284_ecp_read_data(port, 0, (char *)data,
+ result = ieee1284_ecp_read_data(port, 0, (char *)data,
length);
break;
case M1284_NIBBLE:
- result = ieee1284_nibble_read(port, 0, (char *)data,
+ result = ieee1284_nibble_read(port, 0, (char *)data,
length);
break;
default:
@@ -405,22 +405,22 @@ int sanei_canon_pp_check_status(struct parport *port)
{
case 0x0606:
DBG(200, "Ready - 0x0606\n");
- return 0;
+ return 0;
break;
case 0x1414:
- DBG(200, "Busy - 0x1414\n");
+ DBG(200, "Busy - 0x1414\n");
return 1;
break;
case 0x0805:
- DBG(200, "Resetting - 0x0805\n");
+ DBG(200, "Resetting - 0x0805\n");
return 3;
break;
case 0x1515:
DBG(1, "!! Invalid Command - 0x1515\n");
- return 2;
+ return 2;
break;
case 0x0000:
- DBG(200, "Nothing - 0x0000");
+ DBG(200, "Nothing - 0x0000");
return 4;
break;
@@ -451,9 +451,9 @@ static void outboth(struct parport *port, int d, int c)
{
ieee1284_write_data(port, d & 0xff);
outcont(port, c, 0x0f);
-}
+}
-/* readstatus():
+/* readstatus():
Returns the LOGIC value of the S register (ie: all input lines)
shifted right to to make it easier to read. Note: S5 is inverted
by ieee1284_read_status so we don't need to */
@@ -472,7 +472,7 @@ static void scanner_chessboard_control(struct parport *port)
outcont(port, 13, 0xf);
usleep(10);
outcont(port, 7, 0xf);
- usleep(10);
+ usleep(10);
}
static void scanner_chessboard_data(struct parport *port, int mode)
@@ -490,28 +490,28 @@ static void scanner_chessboard_data(struct parport *port, int mode)
outdata(port, 0x55);
else
outdata(port, 0x33);
- outcont(port, HOSTBUSY, HOSTBUSY);
+ outcont(port, HOSTBUSY, HOSTBUSY);
usleep(10);
- outcont(port, 0, HOSTBUSY);
+ outcont(port, 0, HOSTBUSY);
usleep(10);
- outcont(port, HOSTBUSY, HOSTBUSY);
+ outcont(port, HOSTBUSY, HOSTBUSY);
usleep(10);
if (mode == INITMODE_20P)
outdata(port, 0xaa);
else
outdata(port, 0xcc);
- outcont(port, HOSTBUSY, HOSTBUSY);
+ outcont(port, HOSTBUSY, HOSTBUSY);
usleep(10);
- outcont(port, 0, HOSTBUSY);
+ outcont(port, 0, HOSTBUSY);
usleep(10);
- outcont(port, HOSTBUSY, HOSTBUSY);
+ outcont(port, HOSTBUSY, HOSTBUSY);
usleep(10);
}
}
/* Reset the scanner. At least, it works 50% of the time. */
-static int scanner_reset(struct parport *port)
+static int scanner_reset(struct parport *port)
{
/* Resetting only works for the *30Ps, sorry */
@@ -545,7 +545,7 @@ static int scanner_reset(struct parport *port)
outcont(port, 0x0f, 0xf); /* All lines must be 1. */
/* All lines 1 */
- if (expect(port, "Reset 2 response 2 (READY)",
+ if (expect(port, "Reset 2 response 2 (READY)",
0x1f, 0x1f, 500000))
return 1;
@@ -556,9 +556,9 @@ static int scanner_reset(struct parport *port)
return 0;
}
-/* A timed version of expect, which will wait for delay before erroring
+/* A timed version of expect, which will wait for delay before erroring
This is the one and only one we should be using */
-static int expect(struct parport *port, const char *msg, int s,
+static int expect(struct parport *port, const char *msg, int s,
int mask, unsigned int delay)
{
struct timeval tv;
@@ -591,7 +591,7 @@ int sanei_canon_pp_scanner_init(struct parport *port)
/* In Windows, this is always ECP (or an attempt at it) */
if (sanei_canon_pp_write(port, 10, cmd_init))
return -1;
- /* Note that we don't really mind what the status was as long as it
+ /* Note that we don't really mind what the status was as long as it
* wasn't a read error (returns -1) */
/* In fact, the 620P gives an error on that last command, but they
* keep going anyway */
@@ -605,7 +605,7 @@ int sanei_canon_pp_scanner_init(struct parport *port)
if (tmp < 0)
return -1;
DBG(10, "scanner_init: Giving the scanner a snooze...\n");
- usleep(500000);
+ usleep(500000);
tries++;
diff --git a/backend/canon_pp-io.h b/backend/canon_pp-io.h
index 376af8a..ad04180 100644
--- a/backend/canon_pp-io.h
+++ b/backend/canon_pp-io.h
@@ -42,7 +42,7 @@
canon_pp-io.h: $Revision$
- This file is part of the canon_pp backend, supporting Canon FBX30P
+ This file is part of the canon_pp backend, supporting Canon FBX30P
and NX40P scanners and also distributed as part of the stand-alone
driver.
@@ -50,14 +50,14 @@
*/
#ifndef CANON_PP_IO_H
-#define CANON_PP_IO_H
+#define CANON_PP_IO_H
/* Actual Interface */
void sanei_canon_pp_set_ieee1284_mode(int m);
int sanei_canon_pp_wake_scanner(struct parport *port, int mode);
-int sanei_canon_pp_write(struct parport *port, int length,
+int sanei_canon_pp_write(struct parport *port, int length,
unsigned char *data);
-int sanei_canon_pp_read(struct parport *port, int length,
+int sanei_canon_pp_read(struct parport *port, int length,
unsigned char *data);
int sanei_canon_pp_check_status(struct parport *port);
int sanei_canon_pp_scanner_init(struct parport *port);
diff --git a/backend/canon_pp.c b/backend/canon_pp.c
index cc7c27e..822eaf1 100644
--- a/backend/canon_pp.c
+++ b/backend/canon_pp.c
@@ -42,7 +42,7 @@
canon_pp.c: $Revision$
- This file is part of the canon_pp backend, supporting Canon FBX30P
+ This file is part of the canon_pp backend, supporting Canon FBX30P
and NX40P scanners
*/
@@ -114,9 +114,9 @@ static SANE_Bool force_nibble = SANE_FALSE;
/* Constants */
/* Colour Modes */
-static const SANE_String_Const cmodes[] = {
- SANE_VALUE_SCAN_MODE_GRAY,
- SANE_VALUE_SCAN_MODE_COLOR,
+static const SANE_String_Const cmodes[] = {
+ SANE_VALUE_SCAN_MODE_GRAY,
+ SANE_VALUE_SCAN_MODE_COLOR,
NULL };
/* bit depths */
@@ -139,7 +139,7 @@ static const SANE_Int res600[] = {4, 75, 150, 300, 600};
sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
{
SANE_Status status = SANE_STATUS_GOOD;
- int i, tmp;
+ int i, tmp;
int tmp_im = INITMODE_AUTO;
FILE *fp;
char line[81]; /* plus 1 for a null */
@@ -150,7 +150,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
DBG_INIT();
#if defined PACKAGE && defined VERSION
- DBG(2, ">> sane_init (version %s null, authorize %s null): " PACKAGE " " VERSION "\n",
+ DBG(2, ">> sane_init (version %s null, authorize %s null): " PACKAGE " " VERSION "\n",
(vc) ? "!=" : "==", (cb) ? "!=" : "==");
#endif
@@ -192,8 +192,8 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
/* just to be extra sure, the line will always have an end: */
line[sizeof(line)-1] = '\0';
- /*
- * Read information from config file: pixel weight location and default
+ /*
+ * Read information from config file: pixel weight location and default
* port.
*/
if((fp = sanei_config_open(CANONP_CONFIG_FILE)))
@@ -208,24 +208,24 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
if(strncmp(line,"calibrate ", 10) == 0)
{
- /* warning: pointer trickyness ahead
+ /* warning: pointer trickyness ahead
* Do not free tmp_port! */
- DBG(40, "sane_init: calibrate line, %s\n",
+ DBG(40, "sane_init: calibrate line, %s\n",
line);
tmp_wf = strdup(line+10);
tmp_port = strstr(tmp_wf, " ");
if ((tmp_port == tmp_wf) || (tmp_port == NULL))
{
- /* They have used an old style config
+ /* They have used an old style config
* file which does not specify scanner
* Assume first port */
DBG(1, "sane_init: old config line:"
"\"%s\". Please add "
- "a port argument.\n",
+ "a port argument.\n",
line);
/* first_dev should never be null here
- * because we found at least one
+ * because we found at least one
* parallel port above */
first_dev->weights_file = tmp_wf;
DBG(100, "sane_init: Successfully "
@@ -236,7 +236,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
}
- /* Now find which scanner wants
+ /* Now find which scanner wants
* this calibration file */
s_tmp = first_dev;
DBG(100, "sane_init: Finding scanner on port "
@@ -247,7 +247,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
tmp_port+1))
{
DBG(100, "sane_init: Found!\n");
- /* Now terminate the weight
+ /* Now terminate the weight
* file string */
*tmp_port = '\0';
s_tmp->weights_file = tmp_wf;
@@ -255,7 +255,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
"cal, for port"
" '%s', weight"
" file is '%s'"
- ".\n",
+ ".\n",
s_tmp->params.
port->name,
tmp_wf);
@@ -295,7 +295,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
if(strncmp(line,"init_mode ", 10) == 0)
{
- /* parse what sort of initialisation mode to
+ /* parse what sort of initialisation mode to
* use */
if (strncmp(line+10, "FB620P", 6) == 0)
tmp_im = INITMODE_20P;
@@ -311,7 +311,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
if (tmp_port == NULL)
{
/* first_dev should never be null here
- * because we found at least one
+ * because we found at least one
* parallel port above */
first_dev->init_mode = tmp_im;
DBG(100, "sane_init: Parsed init-1.\n");
@@ -344,9 +344,9 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
}
DBG(1, "sane_init: Unknown configuration command!");
- }
+ }
fclose (fp);
- }
+ }
/* There should now be a LL of ports starting at first_dev */
@@ -355,23 +355,23 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
/* Assume there's no scanner present until proven otherwise */
s_tmp->scanner_present = SANE_FALSE;
- /* Try to detect if there's a scanner there, and if so,
+ /* Try to detect if there's a scanner there, and if so,
* what sort of scanner it is */
status = detect_mode(s_tmp);
- if (status != SANE_STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG(10,"sane_init: Error detecting port mode on %s!\n",
s_tmp->params.port->name);
s_tmp->scanner_present = SANE_FALSE;
continue;
- }
-
+ }
+
/* detect_mode suceeded, so the port is open. This beholdens
* us to call ieee1284_close in any of the remaining error
* cases in this loop. */
#if 0
- tmp = sanei_canon_pp_detect(s_tmp->params.port,
+ tmp = sanei_canon_pp_detect(s_tmp->params.port,
s_tmp->init_mode);
@@ -383,7 +383,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
s_tmp->ieee1284_mode = M1284_NIBBLE;
sanei_canon_pp_set_ieee1284_mode(s_tmp->ieee1284_mode);
- tmp = sanei_canon_pp_detect(s_tmp->params.port,
+ tmp = sanei_canon_pp_detect(s_tmp->params.port,
s_tmp->init_mode);
}
/* still no go? */
@@ -395,7 +395,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
ieee1284_close(s_tmp->params.port);
continue;
}
-
+
#endif
/* all signs point to yes, try it out */
if (ieee1284_claim(s_tmp->params.port) != E1284_OK) {
@@ -405,9 +405,9 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
ieee1284_close(s_tmp->params.port);
continue;
}
-
+
DBG(2, "sane_init: >> initialise\n");
- tmp = sanei_canon_pp_initialise(&(s_tmp->params),
+ tmp = sanei_canon_pp_initialise(&(s_tmp->params),
s_tmp->init_mode);
DBG(2, "sane_init: << %d initialise\n", tmp);
if (tmp) {
@@ -420,13 +420,13 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
continue;
}
- /* put it back to sleep until we're ready to
+ /* put it back to sleep until we're ready to
* open for business again - this will only work
* if we actually have a scanner there! */
DBG(100, "sane_init: And back to sleep again\n");
sanei_canon_pp_sleep_scanner(s_tmp->params.port);
- /* leave the port open but not claimed - this is regardless
+ /* leave the port open but not claimed - this is regardless
* of the return value of initialise */
ieee1284_release(s_tmp->params.port);
@@ -435,7 +435,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
if (fix_weights_file(s_tmp) != SANE_STATUS_GOOD) {
DBG(1, "sane_init: Eeek! fix_weights_file failed for "
- "scanner on port %s!\n",
+ "scanner on port %s!\n",
s_tmp->params.port->name);
/* non-fatal.. scans will look ugly as sin unless
* they calibrate */
@@ -462,7 +462,7 @@ sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
*************************************************************************/
SANE_Status
sane_get_devices (const SANE_Device ***dl, SANE_Bool local)
-{
+{
static const SANE_Device **devlist;
CANONP_Scanner *dev;
int i;
@@ -521,7 +521,7 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
DBG(2, ">> sane_open (h=%p, name=\"%s\")\n", (void *)h, name);
- if ((h == NULL) || (name == NULL))
+ if ((h == NULL) || (name == NULL))
{
DBG(2,"sane_open: Null pointer received!\n");
return SANE_STATUS_INVAL;
@@ -543,12 +543,12 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
while((cs != NULL) && strcmp(cs->params.port->name, name))
cs = cs->next;
- /* if we didn't find the port they want, or there's no scanner
+ /* if we didn't find the port they want, or there's no scanner
* there, we just want to find _any_ scanner */
if ((cs == NULL) || (cs->scanner_present != SANE_TRUE))
{
cs = first_dev;
- while((cs != NULL) &&
+ while((cs != NULL) &&
(cs->scanner_present == SANE_FALSE))
cs = cs->next;
}
@@ -563,7 +563,7 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
}
- if (cs == NULL)
+ if (cs == NULL)
{
DBG(2,"sane_open: No scanner found or requested port "
"doesn't exist (%s)\n", name);
@@ -575,15 +575,15 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
"(%s)\n", name);
return SANE_STATUS_IO_ERROR;
}
- if (cs->opened == SANE_TRUE)
+ if (cs->opened == SANE_TRUE)
{
DBG(2,"sane_open; Oi!, That scanner's already open.\n");
return SANE_STATUS_DEVICE_BUSY;
}
- /* If the scanner has already been opened once, we don't have to do
+ /* If the scanner has already been opened once, we don't have to do
* this setup again */
- if (cs->setup == SANE_TRUE)
+ if (cs->setup == SANE_TRUE)
{
cs->opened = SANE_TRUE;
*h = (SANE_Handle)cs;
@@ -613,11 +613,11 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
}
if (cs->weights_file != NULL)
- DBG(2, "sane_open: >> load_weights(%s, %p)\n",
- cs->weights_file,
+ DBG(2, "sane_open: >> load_weights(%s, %p)\n",
+ cs->weights_file,
(const void *)(&(cs->params)));
else
- DBG(2, "sane_open: >> load_weights(NULL, %p)\n",
+ DBG(2, "sane_open: >> load_weights(NULL, %p)\n",
(const void *)(&(cs->params)));
tmp = sanei_canon_pp_load_weights(cs->weights_file, &(cs->params));
DBG(2, "sane_open: << %d load_weights\n", tmp);
@@ -638,10 +638,10 @@ sane_open (SANE_String_Const name, SANE_Handle *h)
DBG(1, "sane_open: WARNING: adjust_gamma returned "
"%d!\n", tmp);
- DBG(10, "sane_open: after adjust_gamma Status = %i\n",
+ DBG(10, "sane_open: after adjust_gamma Status = %i\n",
sanei_canon_pp_check_status(cs->params.port));
}
-
+
/* Configure ranges etc */
@@ -744,11 +744,11 @@ sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act,
int i = 0, tmp, maxresi;
DBG(2, ">> sane_control_option (h=%p, opt=%d, act=%d)\n",
- h,opt,act);
- /* Do some sanity checks on the parameters
+ h,opt,act);
+ /* Do some sanity checks on the parameters
* note that val can be null for buttons */
- if ((h == NULL) || ((val == NULL) && (opt != OPT_CAL)))
- /* || (info == NULL)) - Don't check this any more..
+ if ((h == NULL) || ((val == NULL) && (opt != OPT_CAL)))
+ /* || (info == NULL)) - Don't check this any more..
* frontends seem to like passing a null */
{
DBG(1,"sane_control_option: Frontend passed me a null! "
@@ -757,7 +757,7 @@ sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act,
return SANE_STATUS_INVAL;
}
- if (((unsigned)opt) >= NUM_OPTIONS)
+ if (((unsigned)opt) >= NUM_OPTIONS)
{
DBG(1,"sane_control_option: I don't do option %d.\n", opt);
return SANE_STATUS_INVAL;
@@ -777,17 +777,17 @@ sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act,
return SANE_STATUS_DEVICE_BUSY;
}
- switch(act)
+ switch(act)
{
case SANE_ACTION_GET_VALUE:
- switch (opt)
+ switch (opt)
{
case OPT_COLOUR_MODE:
- strcpy((char *)val,
+ strcpy((char *)val,
cmodes[cs->vals[opt]]);
break;
case OPT_DEPTH:
- strcpy((char *)val,
+ strcpy((char *)val,
depths[cs->vals[opt]]);
break;
case OPT_RESOLUTION:
@@ -812,40 +812,40 @@ sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act,
maxresi = cs->opt[OPT_RESOLUTION].
constraint.word_list[0];
- while ((cs->vals[opt] <= maxresi) &&
+ while ((cs->vals[opt] <= maxresi) &&
(res600[cs->vals[opt]]
< *((int *)val)))
{
cs->vals[opt] += 1;
}
- if (res600[cs->vals[opt]] !=
+ if (res600[cs->vals[opt]] !=
*((int *)val))
{
- if (info != NULL) *info |=
+ if (info != NULL) *info |=
SANE_INFO_INEXACT;
}
break;
case OPT_COLOUR_MODE:
cs->vals[opt] = 0;
while ((cmodes[cs->vals[opt]] != NULL)
- && strcmp(cmodes[cs->vals[opt]],
+ && strcmp(cmodes[cs->vals[opt]],
(char *)val))
{
cs->vals[opt] += 1;
}
- if (info != NULL) *info |=
+ if (info != NULL) *info |=
SANE_INFO_RELOAD_PARAMS;
break;
case OPT_DEPTH:
cs->vals[opt] = 0;
while ((depths[cs->vals[opt]] != NULL)
- && strcmp(depths[cs->vals[opt]],
+ && strcmp(depths[cs->vals[opt]],
(char *)val))
{
cs->vals[opt] += 1;
}
- if (info != NULL) *info |=
+ if (info != NULL) *info |=
SANE_INFO_RELOAD_PARAMS;
break;
case OPT_TL_X:
@@ -861,34 +861,34 @@ sane_control_option (SANE_Handle h, SANE_Int opt, SANE_Action act,
if ((cs->weights_file==NULL) ||
cs->cal_readonly
)
- DBG(2, ">> calibrate(x, "
+ DBG(2, ">> calibrate(x, "
"NULL)\n");
else
DBG(2, ">> calibrate(x,"
"%s)\n",
cs->weights_file);
- if (cs->cal_readonly) tmp =
+ if (cs->cal_readonly) tmp =
sanei_canon_pp_calibrate(
- &(cs->params),
+ &(cs->params),
NULL);
else tmp = sanei_canon_pp_calibrate(
- &(cs->params),
+ &(cs->params),
cs->weights_file);
- DBG(2, "<< %d calibrate\n",
+ DBG(2, "<< %d calibrate\n",
tmp);
if (tmp != 0) {
DBG(1, "sane_control_option: "
"WARNING: "
"calibrate "
- "returned %d!",
+ "returned %d!",
tmp);
- cs->cal_valid =
+ cs->cal_valid =
SANE_FALSE;
return SANE_STATUS_IO_ERROR;
} else {
- cs->cal_valid =
+ cs->cal_valid =
SANE_TRUE;
}
@@ -930,7 +930,7 @@ sane_get_parameters (SANE_Handle h, SANE_Parameters *params)
{
int res, max_width, max_height, max_res;
CANONP_Scanner *cs = ((CANONP_Scanner *)h);
- DBG(2, ">> sane_get_parameters (h=%p, params=%p)\n", (void*)h,
+ DBG(2, ">> sane_get_parameters (h=%p, params=%p)\n", (void*)h,
(void*)params);
if (h == NULL) return SANE_STATUS_INVAL;
@@ -946,16 +946,16 @@ sane_get_parameters (SANE_Handle h, SANE_Parameters *params)
* version, so this will always work. */
res = res600[cs->vals[OPT_RESOLUTION]];
- /*
- * These don't change whether we're scanning or not
+ /*
+ * These don't change whether we're scanning or not
* NOTE: Assumes options don't change after scanning commences, which
* is part of the standard
*/
/* Copy the options stored in the vals into the scaninfo */
- params->pixels_per_line =
+ params->pixels_per_line =
((cs->vals[OPT_BR_X] - cs->vals[OPT_TL_X]) * res) / MM_PER_IN;
- params->lines = ((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) * res)
+ params->lines = ((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) * res)
/ MM_PER_IN;
/* FIXME: Magic numbers ahead! */
@@ -970,17 +970,17 @@ sane_get_parameters (SANE_Handle h, SANE_Parameters *params)
max_width = cs->params.scanheadwidth / (max_res / res);
- max_height = (cs->params.scanheadwidth == 2552 ? 3508 : 7016) /
+ max_height = (cs->params.scanheadwidth == 2552 ? 3508 : 7016) /
(max_res / res);
- if(params->pixels_per_line > max_width)
+ if(params->pixels_per_line > max_width)
params->pixels_per_line = max_width;
if(params->lines > max_height) params->lines = max_height;
params->depth = cs->vals[OPT_DEPTH] ? 16 : 8;
- switch (cs->vals[OPT_COLOUR_MODE])
+ switch (cs->vals[OPT_COLOUR_MODE])
{
case 0:
params->format = SANE_FRAME_GRAY;
@@ -997,7 +997,7 @@ sane_get_parameters (SANE_Handle h, SANE_Parameters *params)
if (!(params->pixels_per_line)) {
params->last_frame = SANE_TRUE;
params->lines = 0;
- }
+ }
/* Always the "last frame" */
params->last_frame = SANE_TRUE;
@@ -1009,7 +1009,7 @@ sane_get_parameters (SANE_Handle h, SANE_Parameters *params)
"max_res=%d, res=%d, max_height=%d, br_y=%d, tl_y=%d, "
"mm_per_in=%f\n",
params->bytes_per_line, params->pixels_per_line, params->lines,
- max_res, res, max_height, cs->vals[OPT_BR_Y],
+ max_res, res, max_height, cs->vals[OPT_BR_Y],
cs->vals[OPT_TL_Y], MM_PER_IN);
DBG(2, "<< sane_get_parameters\n");
@@ -1047,18 +1047,18 @@ sane_start (SANE_Handle h)
res = res600[cs->vals[OPT_RESOLUTION]];
/* Copy the options stored in the vals into the scaninfo */
- cs->scan.width = ((cs->vals[OPT_BR_X] - cs->vals[OPT_TL_X]) * res)
+ cs->scan.width = ((cs->vals[OPT_BR_X] - cs->vals[OPT_TL_X]) * res)
/ MM_PER_IN;
- cs->scan.height = ((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) * res)
+ cs->scan.height = ((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) * res)
/ MM_PER_IN;
cs->scan.xoffset = (cs->vals[OPT_TL_X] * res) / MM_PER_IN;
cs->scan.yoffset = (cs->vals[OPT_TL_Y] * res) / MM_PER_IN;
- /*
- * These values have to pass the requirements of not exceeding
- * dimensions (simple clipping) and both width values have to be some
- * integer multiple of 4
+ /*
+ * These values have to pass the requirements of not exceeding
+ * dimensions (simple clipping) and both width values have to be some
+ * integer multiple of 4
*/
/* FIXME: Magic numbers ahead! */
@@ -1074,11 +1074,11 @@ sane_start (SANE_Handle h)
max_width = cs->params.scanheadwidth / (max_res / res);
- max_height = (cs->params.scanheadwidth == 2552 ? 3508 : 7016) /
+ max_height = (cs->params.scanheadwidth == 2552 ? 3508 : 7016) /
(max_res / res);
if (cs->scan.width > max_width) cs->scan.width = max_width;
- if (cs->scan.width + cs->scan.xoffset > max_width) cs->scan.xoffset =
+ if (cs->scan.width + cs->scan.xoffset > max_width) cs->scan.xoffset =
max_width - cs->scan.width;
if (cs->scan.height > max_height) cs->scan.height = max_height;
@@ -1104,7 +1104,7 @@ sane_start (SANE_Handle h)
cs->scan.xresolution = i;
cs->scan.yresolution = i;
- if (((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) <= 0) ||
+ if (((cs->vals[OPT_BR_Y] - cs->vals[OPT_TL_Y]) <= 0) ||
((cs->vals[OPT_BR_X] - cs->vals[OPT_TL_X]) <= 0))
{
DBG(1,"sane_start: height = %d, Width = %d. "
@@ -1156,26 +1156,26 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
static SANE_Byte *lbuf;
static unsigned int bytesleft;
- DBG(2, ">> sane_read (h=%p, buf=%p, maxlen=%d)\n", h,
+ DBG(2, ">> sane_read (h=%p, buf=%p, maxlen=%d)\n", h,
(const void *)buf, maxlen);
/* default to returning 0 - for errors */
*lenp = 0;
- if ((h == NULL) || (buf == NULL) || (lenp == NULL))
+ if ((h == NULL) || (buf == NULL) || (lenp == NULL))
{
DBG(1, "sane_read: This frontend's passing me dodgy gear! "
- "(h=%p, buf=%p, lenp=%p)\n",
+ "(h=%p, buf=%p, lenp=%p)\n",
(void*)h, (void*)buf, (void*)lenp);
return SANE_STATUS_INVAL;
}
/* Now we have to see if we have some leftover from last time */
- if (read_leftover != NULL)
+ if (read_leftover != NULL)
{
- /* feed some more data in until we've run out - don't care
- * whether or not we _think_ the scanner is scanning now,
+ /* feed some more data in until we've run out - don't care
+ * whether or not we _think_ the scanner is scanning now,
* because we may still have data left over to send */
DBG(200, "sane_read: didn't send it all last time\n");
@@ -1204,11 +1204,11 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
return SANE_STATUS_GOOD;
}
- }
+ }
/* Has the last scan ended (other than by cancelling)? */
- if (((unsigned)cs->scan.height <= (unsigned)cs->lines_scanned)
+ if (((unsigned)cs->scan.height <= (unsigned)cs->lines_scanned)
|| (cs->sent_eof) || !(cs->scanning))
{
cs->sent_eof = SANE_TRUE;
@@ -1220,7 +1220,7 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
return SANE_STATUS_EOF;
}
- /* At this point we have to read more data from the scanner - or the
+ /* At this point we have to read more data from the scanner - or the
* scan has been cancelled, which means we have to call read_segment
* to leave the scanner consistant */
@@ -1230,17 +1230,17 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
else
bpl = cs->scan.width * (cs->vals[OPT_COLOUR_MODE] ? 6 : 2);
- /* New way: scan a whole scanner buffer full, and return as much as
- * the frontend wants. It's faster and more reliable since the
+ /* New way: scan a whole scanner buffer full, and return as much as
+ * the frontend wants. It's faster and more reliable since the
* scanners crack the shits if we ask for too many small packets */
lines = (BUF_MAX * 4 / 5) / bpl;
- if (lines > (cs->scan.height - cs->lines_scanned))
+ if (lines > (cs->scan.height - cs->lines_scanned))
lines = cs->scan.height - cs->lines_scanned;
if (!lines)
{
- /* can't fit a whole line into the buffer
+ /* can't fit a whole line into the buffer
* (should never happen!) */
lines = 1;
}
@@ -1268,16 +1268,16 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
DBG(10, "scan_params->: width=%d, height=%d, xoffset=%d, "
"yoffset=%d\n\txresolution=%d, yresolution=%d, "
"mode=%d, (lines=%d)\n",
- cs->scan.width, cs->scan.height,
+ cs->scan.width, cs->scan.height,
cs->scan.xoffset, cs->scan.yoffset,
cs->scan.xresolution, cs->scan.yresolution,
cs->scan.mode, lines);
DBG(2, ">> read_segment(x, x, x, %d, %d, %d)\n",
- lines, cs->cal_valid,
+ lines, cs->cal_valid,
cs->scan.height - cs->lines_scanned);
- tmp = sanei_canon_pp_read_segment(&is, &(cs->params), &(cs->scan),
- lines, cs->cal_valid,
+ tmp = sanei_canon_pp_read_segment(&is, &(cs->params), &(cs->scan),
+ lines, cs->cal_valid,
cs->scan.height - cs->lines_scanned);
DBG(2, "<< %d read_segment\n", tmp);
@@ -1361,7 +1361,7 @@ sane_read (SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
if ((unsigned)cs->lines_scanned >= cs->scan.height)
{
- /* The scan is over! Don't need to call anything in the
+ /* The scan is over! Don't need to call anything in the
* hardware, it will sort itself out */
DBG(10, "sane_read: Scan is finished.\n");
cs->scanning = SANE_FALSE;
@@ -1392,7 +1392,7 @@ sane_cancel (SANE_Handle h)
read_leftover = NULL;
- if (!(cs->scanning))
+ if (!(cs->scanning))
{
DBG(2, "<< sane_cancel (not scanning)\n");
return;
@@ -1431,7 +1431,7 @@ sane_close (SANE_Handle h)
sanei_canon_pp_close_scanner(&(cs->params));
cs->opened = SANE_FALSE;
-
+
/* if it was scanning, it's not any more */
cs->scanning = SANE_FALSE;
cs->sent_eof = SANE_TRUE;
@@ -1461,9 +1461,9 @@ sane_exit (void)
next = dev->next;
/* These were only created if the scanner has been init'd */
-
+
/* Should normally nullify pointers after freeing, but in
- * this case we're about to free the whole structure so
+ * this case we're about to free the whole structure so
* theres not a lot of point. */
/* Constraints (mostly) allocated when the scanner is opened */
@@ -1513,17 +1513,17 @@ sane_exit (void)
* (Not part of the SANE API)
*
* Initialises a CANONP_Scanner data structure for a new device.
- * NOTE: The device is not ready to scan until initialise() has been
+ * NOTE: The device is not ready to scan until initialise() has been
* called in scan library!
*
*************************************************************************/
-static SANE_Status init_device(struct parport *pp)
+static SANE_Status init_device(struct parport *pp)
{
int i;
static const char *hw_vendor = "CANON";
static const char *hw_type = "flatbed scanner";
static const char *opt_names[] = {
- SANE_NAME_NUM_OPTIONS,
+ SANE_NAME_NUM_OPTIONS,
SANE_NAME_SCAN_RESOLUTION,
SANE_NAME_SCAN_MODE,
SANE_NAME_BIT_DEPTH,
@@ -1539,7 +1539,7 @@ static SANE_Status init_device(struct parport *pp)
#endif
};
static const char *opt_titles[] = {
- SANE_TITLE_NUM_OPTIONS,
+ SANE_TITLE_NUM_OPTIONS,
SANE_TITLE_SCAN_RESOLUTION,
SANE_TITLE_SCAN_MODE,
SANE_TITLE_BIT_DEPTH,
@@ -1555,7 +1555,7 @@ static SANE_Status init_device(struct parport *pp)
#endif
};
static const char *opt_descs[] = {
- SANE_DESC_NUM_OPTIONS,
+ SANE_DESC_NUM_OPTIONS,
SANE_DESC_SCAN_RESOLUTION,
SANE_DESC_SCAN_MODE,
SANE_DESC_BIT_DEPTH,
@@ -1583,7 +1583,7 @@ static SANE_Status init_device(struct parport *pp)
memset(cs, 0, sizeof(*cs));
#if 0
- if ((cs->params.port = malloc(sizeof(*(cs->params.port)))) == NULL)
+ if ((cs->params.port = malloc(sizeof(*(cs->params.port)))) == NULL)
return SANE_STATUS_NO_MEM;
memcpy(cs->params.port, pp, sizeof(*pp));
@@ -1637,7 +1637,7 @@ static SANE_Status init_device(struct parport *pp)
cs->opt[OPT_RESOLUTION].unit = SANE_UNIT_DPI;
cs->opt[OPT_RESOLUTION].constraint_type = SANE_CONSTRAINT_WORD_LIST;
/* should never point at first element (wordlist size) */
- cs->vals[OPT_RESOLUTION] = 1;
+ cs->vals[OPT_RESOLUTION] = 1;
DBG(100, "init_device: configuring opt: colour mode\n");
@@ -1689,8 +1689,8 @@ static SANE_Status init_device(struct parport *pp)
/* The calibration button */
cs->opt[OPT_CAL].type = SANE_TYPE_BUTTON;
cs->opt[OPT_CAL].constraint_type = SANE_CONSTRAINT_NONE;
- if (cs->cal_readonly)
- cs->opt[OPT_CAL].cap |= SANE_CAP_INACTIVE;
+ if (cs->cal_readonly)
+ cs->opt[OPT_CAL].cap |= SANE_CAP_INACTIVE;
#if 0
/* the gamma values (once we do them) */
@@ -1700,8 +1700,8 @@ static SANE_Status init_device(struct parport *pp)
#endif
/*
- * NOTE: Ranges and lists are actually set when scanner is opened,
- * becase that's when we find out what sort of scanner it is
+ * NOTE: Ranges and lists are actually set when scanner is opened,
+ * becase that's when we find out what sort of scanner it is
*/
DBG(100, "init_device: done opts\n");
@@ -1720,7 +1720,7 @@ static SANE_Status init_device(struct parport *pp)
/*************************************************************************
*
- * These two are optional ones... maybe if I get really keen?
+ * These two are optional ones... maybe if I get really keen?
*
*************************************************************************/
SANE_Status
@@ -1739,7 +1739,7 @@ sane_set_io_mode (SANE_Handle h, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle h, SANE_Int *fdp)
{
- DBG(2, ">> sane_get_select_fd (%p, %p) (not supported)\n", h,
+ DBG(2, ">> sane_get_select_fd (%p, %p) (not supported)\n", h,
(const void *)fdp);
DBG(2, "<< sane_get_select_fd\n");
return SANE_STATUS_UNSUPPORTED;
@@ -1762,7 +1762,7 @@ static int init_cal(char *file)
if (errno == ENOENT)
{
/* we need to try and make ~/.sane perhaps -
- * find the last / in the file path, and try
+ * find the last / in the file path, and try
* to create it */
if ((tmp = strrchr(file, '/')) == NULL)
return -1;
@@ -1775,9 +1775,9 @@ static int init_cal(char *file)
if ((f = open(file, O_CREAT | O_WRONLY, 0600)) < 0)
return -1;
}
- else
+ else
{
- /* Error is something like access denied - too
+ /* Error is something like access denied - too
* hard to fix, so i give up... */
return -1;
}
@@ -1789,7 +1789,7 @@ static int init_cal(char *file)
/*************************************************************************
*
- * fix_weights_file(): Ensures that the weights_file setting for a given
+ * fix_weights_file(): Ensures that the weights_file setting for a given
* scanner is valid
*
************************************************************************/
@@ -1821,7 +1821,7 @@ static SANE_Status fix_weights_file(CANONP_Scanner *cs)
/* Get the user's home dir if they used ~ */
if (cs->weights_file[0] == '~')
{
- if ((tmp = malloc(PATH_MAX)) == NULL)
+ if ((tmp = malloc(PATH_MAX)) == NULL)
return SANE_STATUS_NO_MEM;
if ((myhome = getenv("HOME")) == NULL)
{
@@ -1832,7 +1832,7 @@ static SANE_Status fix_weights_file(CANONP_Scanner *cs)
return SANE_STATUS_INVAL;
}
strncpy(tmp, myhome, PATH_MAX);
- strncpy(tmp+strlen(tmp), (cs->weights_file)+1,
+ strncpy(tmp+strlen(tmp), (cs->weights_file)+1,
PATH_MAX-strlen(tmp));
free(cs->weights_file);
@@ -1869,8 +1869,8 @@ static SANE_Status fix_weights_file(CANONP_Scanner *cs)
i = open(cs->weights_file, O_RDONLY);
if (i <= 0)
{
- /*
- * Open failed (do i care why?)
+ /*
+ * Open failed (do i care why?)
*/
DBG(2,"fix_weights_file: error opening cal "
"(%s)\n", strerror(errno));
@@ -1904,10 +1904,10 @@ static SANE_Status fix_weights_file(CANONP_Scanner *cs)
* PRE:
* cs->params.port is not open
* POST:
- * cs->params.port is left opened iff SANE_STATUS_GOOD returned.
+ * cs->params.port is left opened iff SANE_STATUS_GOOD returned.
*/
-SANE_Status detect_mode(CANONP_Scanner *cs)
+SANE_Status detect_mode(CANONP_Scanner *cs)
{
int capabilities, tmp;
@@ -1925,7 +1925,7 @@ SANE_Status detect_mode(CANONP_Scanner *cs)
DBG(1, "detect_mode: Invalid port.\n");
break;
case E1284_SYS:
- DBG(1, "detect_mode: System error: %s\n",
+ DBG(1, "detect_mode: System error: %s\n",
strerror(errno));
break;
case E1284_INIT:
@@ -1973,7 +1973,7 @@ SANE_Status detect_mode(CANONP_Scanner *cs)
{
cs->ieee1284_mode = M1284_ECP;
DBG(10, "detect_mode: Using ECP-H Mode\n");
- }
+ }
else if (capabilities & CAP1284_ECPSWE)
{
cs->ieee1284_mode = M1284_ECPSWE;
@@ -1993,11 +1993,11 @@ SANE_Status detect_mode(CANONP_Scanner *cs)
}
/* Check to make sure ECP mode really is supported */
- /* Have disabled the hardware ECP check because it's always supported
- * by libieee1284 now, and it's too prone to hitting a ppdev bug
+ /* Have disabled the hardware ECP check because it's always supported
+ * by libieee1284 now, and it's too prone to hitting a ppdev bug
*/
- /* Disabled check entirely.. check now in initialise when we
+ /* Disabled check entirely.. check now in initialise when we
* actually do a read */
#if 0
if ((cs->ieee1284_mode == M1284_ECP) ||
@@ -2005,17 +2005,17 @@ SANE_Status detect_mode(CANONP_Scanner *cs)
{
DBG(1, "detect_mode: attempting a 0 byte read, if we hang "
"here, it's a ppdev bug!\n");
- /*
- * 29/06/02
+ /*
+ * 29/06/02
* NOTE:
- * This causes an infinite loop in ppdev on 2.4.18.
- * Not checking on hardware ECP mode should work-around
+ * This causes an infinite loop in ppdev on 2.4.18.
+ * Not checking on hardware ECP mode should work-around
* effectively.
*
- * I have sent email to twaugh about it, should be fixed in
+ * I have sent email to twaugh about it, should be fixed in
* 2.4.19 and above.
*/
- if (ieee1284_ecp_read_data(cs->params.port, 0, NULL, 0) ==
+ if (ieee1284_ecp_read_data(cs->params.port, 0, NULL, 0) ==
E1284_NOTIMPL)
{
DBG(10, "detect_mode: Your version of libieee1284 "
diff --git a/backend/canon_pp.conf.in b/backend/canon_pp.conf.in
index 14b3110..c12d763 100644
--- a/backend/canon_pp.conf.in
+++ b/backend/canon_pp.conf.in
@@ -1,4 +1,4 @@
-# Define which port to use if one isn't specified - you should only have
+# Define which port to use if one isn't specified - you should only have
# one of these lines!
# This is the default port to be used - others will be detected
ieee1284 parport0
@@ -21,7 +21,7 @@ calibrate ~/.sane/canon_pp-calibration-pp0 parport0
# calibrate /etc/sane/my_calibration parport1
-# Enable the next line if you're having trouble with ECP mode such as I/O
+# Enable the next line if you're having trouble with ECP mode such as I/O
# errors. Nibble mode is slower, but more reliable.
#force_nibble
diff --git a/backend/canon_pp.h b/backend/canon_pp.h
index 4797924..2dfee98 100644
--- a/backend/canon_pp.h
+++ b/backend/canon_pp.h
@@ -42,7 +42,7 @@
canon_pp.h: $Revision$
- This file is part of the canon_pp backend, supporting Canon FBX30P
+ This file is part of the canon_pp backend, supporting Canon FBX30P
and NX40P scanners
*/
@@ -69,7 +69,7 @@
#define CANONP_CONFIG_FILE "canon_pp.conf"
/* options: num,res,colour,depth,tl-x,tl-y,br-x,br-y,cal */
/* preview option disabled */
-#define NUM_OPTIONS 9
+#define NUM_OPTIONS 9
#define BUF_MAX 64000
/* Indexes into options array */
@@ -122,4 +122,3 @@ struct CANONP_Scanner_Struct
#endif
-
diff --git a/backend/cardscan.c b/backend/cardscan.c
index eab6500..ec776d1 100644
--- a/backend/cardscan.c
+++ b/backend/cardscan.c
@@ -199,7 +199,7 @@ four times {
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times; after sane_read returns EOF,
+ . . (sane_read called multiple times; after sane_read returns EOF,
. . loop may continue with sane_start which may return a 2nd page
. . when doing duplex scans, or load the next page from the ADF)
. .
@@ -226,14 +226,14 @@ four times {
#include "cardscan.h"
#define DEBUG 1
-#define BUILD 3
+#define BUILD 3
/* values for SANE_DEBUG_CARDSCAN env var:
- errors 5
- function trace 10
- function detail 15
- get/setopt cmds 20
- - usb cmd trace 25
+ - usb cmd trace 25
- usb cmd detail 30
- useless noise 35
*/
@@ -259,7 +259,7 @@ static struct scanner *scanner_devList = NULL;
/*
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -274,26 +274,26 @@ SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
authorize = authorize; /* get rid of compiler warning */
-
+
DBG_INIT ();
DBG (10, "sane_init: start\n");
-
+
sanei_usb_init();
-
+
if (version_code)
*version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, BUILD);
-
+
DBG (5, "sane_init: cardscan backend %d.%d.%d, from %s\n",
SANE_CURRENT_MAJOR, V_MINOR, BUILD, PACKAGE_STRING);
-
+
DBG (10, "sane_init: finish\n");
-
+
return SANE_STATUS_GOOD;
}
/*
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -306,7 +306,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -324,64 +324,64 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
FILE *fp;
int num_devices=0;
int i=0;
-
+
local_only = local_only; /* get rid of compiler warning */
-
+
DBG (10, "sane_get_devices: start\n");
-
+
global_has_cal_buffer = 1;
global_lines_per_block = 16;
fp = sanei_config_open (CONFIG_FILE);
-
+
if (fp) {
-
+
DBG (15, "sane_get_devices: reading config file %s\n", CONFIG_FILE);
-
+
while (sanei_config_read (line, PATH_MAX, fp)) {
-
+
lp = line;
/* ignore comments */
if (*lp == '#')
continue;
-
+
/* skip empty lines */
if (*lp == 0)
continue;
-
+
if ((strncmp ("usb", lp, 3) == 0) && isspace (lp[3])) {
DBG (15, "sane_get_devices: looking for '%s'\n", lp);
sanei_usb_attach_matching_devices(lp, attach_one);
}
else if (!strncmp(lp, "has_cal_buffer", 14) && isspace (lp[14])) {
-
+
int buf;
lp += 14;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if(buf){
global_has_cal_buffer = 1;
}
else{
global_has_cal_buffer = 0;
}
-
+
DBG (15, "sane_get_devices: setting \"has_cal_buffer\" to %d\n",
global_has_cal_buffer);
}
else if (!strncmp(lp, "lines_per_block", 15) && isspace (lp[15])) {
-
+
int buf;
lp += 15;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if(buf < 1 || buf > 32){
- DBG (15,
+ DBG (15,
"sane_get_devices: \"lines_per_block\"=%d\n out of range",
buf
);
@@ -398,42 +398,42 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
}
fclose (fp);
}
-
+
else {
DBG (5, "sane_get_devices: no config file '%s', using defaults\n",
CONFIG_FILE);
-
+
DBG (15, "sane_get_devices: looking for 'usb 0x08F0 0x0005'\n");
sanei_usb_attach_matching_devices("usb 0x08F0 0x0005", attach_one);
}
-
+
for (dev = scanner_devList; dev; dev=dev->next) {
DBG (15, "sane_get_devices: found scanner %s\n",dev->device_name);
num_devices++;
}
-
+
DBG (15, "sane_get_devices: found %d scanner(s)\n",num_devices);
-
+
sane_devArray = calloc (num_devices + 1, sizeof (SANE_Device*));
if (!sane_devArray)
return SANE_STATUS_NO_MEM;
-
+
for (dev = scanner_devList; dev; dev=dev->next) {
sane_devArray[i++] = (SANE_Device *)&dev->sane;
}
-
+
sane_devArray[i] = 0;
-
+
*device_list = sane_devArray;
-
+
DBG (10, "sane_get_devices: finish\n");
-
+
return SANE_STATUS_GOOD;
}
/* callback used by sane_get_devices
- * build the scanner struct and link to global list
- * unless struct is already loaded, then pretend
+ * build the scanner struct and link to global list
+ * unless struct is already loaded, then pretend
*/
static SANE_Status
attach_one (const char *device_name)
@@ -441,32 +441,32 @@ attach_one (const char *device_name)
struct scanner *s;
int ret, i;
SANE_Word vid, pid;
-
+
DBG (10, "attach_one: start '%s'\n", device_name);
-
+
for (s = scanner_devList; s; s = s->next) {
if (strcmp (s->sane.name, device_name) == 0) {
DBG (10, "attach_one: already attached!\n");
return SANE_STATUS_GOOD;
}
}
-
+
/* build a scanner struct to hold it */
DBG (15, "attach_one: init struct\n");
-
+
if ((s = calloc (sizeof (*s), 1)) == NULL)
return SANE_STATUS_NO_MEM;
-
+
/* copy the device name */
s->device_name = strdup (device_name);
if (!s->device_name){
free (s);
return SANE_STATUS_NO_MEM;
}
-
+
/* connect the fd */
DBG (15, "attach_one: connect fd\n");
-
+
s->fd = -1;
ret = connect_fd(s);
if(ret != SANE_STATUS_GOOD){
@@ -474,11 +474,11 @@ attach_one (const char *device_name)
free (s);
return ret;
}
-
+
/* clean up the scanner struct based on model */
/* this is the only piece of model specific code */
sanei_usb_get_vendor_product(s->fd,&vid,&pid);
-
+
if(vid == 0x08f0){
s->vendor_name = "CardScan";
if(pid == 0x0005){
@@ -507,10 +507,10 @@ attach_one (const char *device_name)
s->vendor_name = "Unknown";
s->product_name = "Unknown";
}
-
+
DBG (15, "attach_one: Found %s scanner %s at %s\n",
s->vendor_name, s->product_name, s->device_name);
-
+
/*copy config file settings*/
s->has_cal_buffer = global_has_cal_buffer;
s->lines_per_block = global_lines_per_block;
@@ -520,7 +520,7 @@ attach_one (const char *device_name)
/* try to get calibration */
if(s->has_cal_buffer){
DBG (15, "attach_one: scanner calibration\n");
-
+
ret = load_calibration(s);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: cannot calibrate, incompatible?\n");
@@ -532,13 +532,13 @@ attach_one (const char *device_name)
else{
DBG (15, "attach_one: skipping calibration\n");
}
-
+
/* set SANE option 'values' to good defaults */
DBG (15, "attach_one: init options\n");
-
- /* go ahead and setup the first opt, because
- * frontend may call control_option on it
- * before calling get_option_descriptor
+
+ /* go ahead and setup the first opt, because
+ * frontend may call control_option on it
+ * before calling get_option_descriptor
*/
memset (s->opt, 0, sizeof (s->opt));
for (i = 0; i < NUM_OPTIONS; ++i) {
@@ -546,29 +546,29 @@ attach_one (const char *device_name)
s->opt[i].size = sizeof (SANE_Word);
s->opt[i].cap = SANE_CAP_INACTIVE;
}
-
+
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;
-
+
DBG (15, "attach_one: init settings\n");
-
+
/* we close the connection, so that another backend can talk to scanner */
disconnect_fd(s);
-
+
/* load info into sane_device struct */
s->sane.name = s->device_name;
s->sane.vendor = s->vendor_name;
s->sane.model = s->product_name;
s->sane.type = "scanner";
-
+
s->next = scanner_devList;
scanner_devList = s;
-
+
DBG (10, "attach_one: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -579,9 +579,9 @@ static SANE_Status
connect_fd (struct scanner *s)
{
SANE_Status ret;
-
+
DBG (10, "connect_fd: start\n");
-
+
if(s->fd > -1){
DBG (5, "connect_fd: already open\n");
ret = SANE_STATUS_GOOD;
@@ -590,13 +590,13 @@ connect_fd (struct scanner *s)
DBG (15, "connect_fd: opening USB device\n");
ret = sanei_usb_open (s->device_name, &(s->fd));
}
-
+
if(ret != SANE_STATUS_GOOD){
DBG (5, "connect_fd: could not open device: %d\n", ret);
}
-
+
DBG (10, "connect_fd: finish\n");
-
+
return ret;
}
@@ -608,25 +608,25 @@ load_calibration(struct scanner *s)
unsigned char * buf;
size_t bytes = HEADER_SIZE + CAL_COLOR_SIZE*2 + CAL_GRAY_SIZE*2;
int j;
-
+
DBG (10, "load_calibration: start\n");
-
+
buf = malloc(bytes);
if(!buf){
DBG(5, "load_calibration: not enough mem for buffer: %ld\n",(long)bytes);
return SANE_STATUS_NO_MEM;
}
-
+
ret = do_cmd(
s, 0,
cmd, sizeof(cmd),
NULL, 0,
buf, &bytes
);
-
+
if (ret == SANE_STATUS_GOOD) {
DBG(15, "load_calibration: got GOOD\n");
-
+
/*
* color cal data comes from scaner like:
* bbbbbbbBBBBBBBgggggggGGGGGGGrrrrrrrRRRRRRR
@@ -634,40 +634,40 @@ load_calibration(struct scanner *s)
* reorder the data into two buffers
* bbbbbbbgggggggrrrrrrr and BBBBBBBGGGGGGGRRRRRRR
*/
-
+
/*dark/light blue*/
memcpy(s->cal_color_b, buf+HEADER_SIZE, PIXELS_PER_LINE);
memcpy(s->cal_color_w,
buf+HEADER_SIZE+PIXELS_PER_LINE, PIXELS_PER_LINE);
-
+
/*dark/light green*/
memcpy(s->cal_color_b+PIXELS_PER_LINE,
buf+HEADER_SIZE+(PIXELS_PER_LINE*2), PIXELS_PER_LINE);
memcpy(s->cal_color_w+PIXELS_PER_LINE,
buf+HEADER_SIZE+(PIXELS_PER_LINE*3), PIXELS_PER_LINE);
-
+
/*dark/light red*/
memcpy(s->cal_color_b+(PIXELS_PER_LINE*2),
buf+HEADER_SIZE+(PIXELS_PER_LINE*4), PIXELS_PER_LINE);
memcpy(s->cal_color_w+(PIXELS_PER_LINE*2),
buf+HEADER_SIZE+(PIXELS_PER_LINE*5), PIXELS_PER_LINE);
-
+
/* then slide the light data down using the dark offset */
for(j=0;j<CAL_COLOR_SIZE;j++){
s->cal_color_w[j] -= s->cal_color_b[j];
}
-
+
/*dark/light gray*/
memcpy(s->cal_gray_b,
buf+HEADER_SIZE+(CAL_COLOR_SIZE*2), PIXELS_PER_LINE);
memcpy(s->cal_gray_w,
buf+HEADER_SIZE+(CAL_COLOR_SIZE*2)+PIXELS_PER_LINE, PIXELS_PER_LINE);
-
+
/* then slide the light data down using the dark offset */
for(j=0;j<CAL_GRAY_SIZE;j++){
s->cal_gray_w[j] -= s->cal_gray_b[j];
}
-
+
hexdump(35, "cal_color_b:", s->cal_color_b, CAL_COLOR_SIZE);
hexdump(35, "cal_color_w:", s->cal_color_w, CAL_COLOR_SIZE);
hexdump(35, "cal_gray_b:", s->cal_gray_b, CAL_GRAY_SIZE);
@@ -676,9 +676,9 @@ load_calibration(struct scanner *s)
else {
DBG(5, "load_calibration: error reading data block status = %d\n", ret);
}
-
+
DBG (10, "load_calibration: finish\n");
-
+
return ret;
}
@@ -697,9 +697,9 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
struct scanner *dev = NULL;
struct scanner *s = NULL;
SANE_Status ret;
-
+
DBG (10, "sane_open: start\n");
-
+
if(name[0] == 0){
if(scanner_devList){
DBG (15, "sane_open: no device requested, using first\n");
@@ -725,24 +725,24 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
}
}
-
+
if (!s) {
DBG (5, "sane_open: no device found\n");
return SANE_STATUS_INVAL;
}
-
+
DBG (15, "sane_open: device %s found\n", s->sane.name);
-
+
*handle = s;
-
+
/* connect the fd so we can talk to scanner */
ret = connect_fd(s);
if(ret != SANE_STATUS_GOOD){
return ret;
}
-
+
DBG (10, "sane_open: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -789,7 +789,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->mode_list[i++]=STRING_GRAYSCALE;
s->mode_list[i++]=STRING_COLOR;
s->mode_list[i]=NULL;
-
+
opt->name = SANE_NAME_SCAN_MODE;
opt->title = SANE_TITLE_SCAN_MODE;
opt->desc = SANE_DESC_SCAN_MODE;
@@ -805,7 +805,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -816,7 +816,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -902,7 +902,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* below.
*/
switch (option) {
-
+
/* Mode Group */
case OPT_MODE:
if (!strcmp (val, STRING_GRAYSCALE)) {
@@ -939,7 +939,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -986,38 +986,38 @@ sane_start (SANE_Handle handle)
{
struct scanner *s = handle;
SANE_Status ret;
-
+
DBG (10, "sane_start: start\n");
-
+
/* first page of batch */
if(s->started){
DBG(5,"sane_start: previous transfer not finished?");
sane_cancel((SANE_Handle)s);
return SANE_STATUS_CANCELLED;
}
-
+
/* set clean defaults */
s->started=1;
s->bytes_rx=0;
s->bytes_tx=0;
s->paperless_lines=0;
-
- /* heat up the lamp */
+
+ /* heat up the lamp */
if(s->mode == MODE_COLOR){
ret = heat_lamp_color(s);
}
else{
ret = heat_lamp_gray(s);
}
-
+
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: failed to heat lamp\n");
sane_cancel((SANE_Handle)s);
return ret;
}
-
+
DBG (10, "sane_start: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -1031,9 +1031,9 @@ heat_lamp_gray(struct scanner *s)
size_t bytes = HEADER_SIZE + 1;
unsigned char * buf;
int i;
-
+
DBG (10, "heat_lamp_gray: start\n");
-
+
buf = malloc(bytes);
if(!buf){
DBG(5, "heat_lamp_gray: not enough mem for buffer: %lu\n",
@@ -1042,26 +1042,26 @@ heat_lamp_gray(struct scanner *s)
}
for(i=0;i<10;i++){
-
+
ret2 = do_cmd(
s, 0,
cmd, sizeof(cmd),
NULL, 0,
buf, &bytes
);
-
+
if (ret2 != SANE_STATUS_GOOD) {
DBG(5, "heat_lamp_gray: %d error\n",i);
ret = ret2;
break;
}
-
+
if(!buf[1]){
DBG(5, "heat_lamp_gray: %d got no docs\n",i);
ret = SANE_STATUS_NO_DOCS;
break;
}
-
+
DBG(15, "heat_lamp_gray: %d got: %d %d\n",i,
buf[HEADER_SIZE],s->cal_gray_b[0]);
@@ -1075,11 +1075,11 @@ heat_lamp_gray(struct scanner *s)
ret = SANE_STATUS_DEVICE_BUSY;
}
}
-
+
free(buf);
-
+
DBG (10, "heat_lamp_gray: finish %d\n",ret);
-
+
return ret;
}
@@ -1093,9 +1093,9 @@ heat_lamp_color(struct scanner *s)
size_t bytes = HEADER_SIZE + 3;
unsigned char * buf;
int i;
-
+
DBG (10, "heat_lamp_color: start\n");
-
+
buf = malloc(bytes);
if(!buf){
DBG(5, "heat_lamp_color: not enough mem for buffer: %lu\n",
@@ -1104,26 +1104,26 @@ heat_lamp_color(struct scanner *s)
}
for(i=0;i<10;i++){
-
+
ret2 = do_cmd(
s, 0,
cmd, sizeof(cmd),
NULL, 0,
buf, &bytes
);
-
+
if (ret2 != SANE_STATUS_GOOD) {
DBG(5, "heat_lamp_color: %d error\n",i);
ret = ret2;
break;
}
-
+
if(!buf[1]){
DBG(5, "heat_lamp_color: %d got no docs\n",i);
ret = SANE_STATUS_NO_DOCS;
break;
}
-
+
DBG(15, "heat_lamp_color: %d got: %d,%d,%d %d,%d,%d\n",i,
buf[HEADER_SIZE],buf[HEADER_SIZE+1],buf[HEADER_SIZE+2],
s->cal_color_b[0],s->cal_color_b[1],s->cal_color_b[2]);
@@ -1140,17 +1140,17 @@ heat_lamp_color(struct scanner *s)
ret = SANE_STATUS_DEVICE_BUSY;
}
}
-
+
free(buf);
-
+
DBG (10, "heat_lamp_color: finish %d\n",ret);
-
+
return ret;
}
/*
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -1158,7 +1158,7 @@ heat_lamp_color(struct scanner *s)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -1167,55 +1167,55 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
{
struct scanner *s = (struct scanner *) handle;
SANE_Status ret=SANE_STATUS_GOOD;
-
+
DBG (10, "sane_read: start\n");
-
+
*len = 0;
-
+
/* cancelled? */
if(!s->started){
DBG (5, "sane_read: call sane_start first\n");
return SANE_STATUS_CANCELLED;
}
-
+
/* have sent all of current buffer */
if(s->bytes_tx == s->bytes_rx){
-
+
/* at end of data, stop */
if(s->paperless_lines >= MAX_PAPERLESS_LINES){
DBG (15, "sane_read: returning eof\n");
power_down(s);
return SANE_STATUS_EOF;
}
-
+
/* more to get, reset and go */
s->bytes_tx = 0;
s->bytes_rx = 0;
-
+
if(s->mode == MODE_COLOR){
ret = read_from_scanner_color(s);
}
else{
ret = read_from_scanner_gray(s);
}
-
+
if(ret){
DBG(5,"sane_read: returning %d\n",ret);
return ret;
}
}
-
+
/* data in current buffer, send some of it */
*len = s->bytes_rx - s->bytes_tx;
if(*len > max_len){
*len = max_len;
}
-
+
memcpy(buf,s->buffer+s->bytes_tx,*len);
s->bytes_tx += *len;
-
+
DBG (10, "sane_read: %d,%d,%d finish\n", *len,s->bytes_rx,s->bytes_tx);
-
+
return ret;
}
@@ -1229,9 +1229,9 @@ read_from_scanner_gray(struct scanner *s)
size_t bytes = HEADER_SIZE + s->gray_block_size;
unsigned char * buf;
int i,j;
-
+
DBG (10, "read_from_scanner_gray: start\n");
-
+
cmd[4] = s->lines_per_block;
buf = malloc(bytes);
@@ -1240,14 +1240,14 @@ read_from_scanner_gray(struct scanner *s)
(long unsigned)bytes);
return SANE_STATUS_NO_MEM;
}
-
+
ret = do_cmd(
s, 0,
cmd, sizeof(cmd),
NULL, 0,
buf, &bytes
);
-
+
if (ret == SANE_STATUS_GOOD) {
DBG(15, "read_from_scanner_gray: got GOOD\n");
@@ -1255,19 +1255,19 @@ read_from_scanner_gray(struct scanner *s)
if(!buf[1]){
s->paperless_lines += s->lines_per_block;
}
-
+
s->bytes_rx = s->gray_block_size;
-
+
/*memcpy(s->buffer,buf+HEADER_SIZE,s->gray_block_size);*/
-
+
/* reorder the gray data into the struct's buffer */
for(i=0;i<s->gray_block_size;i+=PIXELS_PER_LINE){
for(j=0;j<PIXELS_PER_LINE;j++){
-
+
unsigned char byte = buf[ HEADER_SIZE + i + j ];
unsigned char bcal = s->cal_gray_b[j];
unsigned char wcal = s->cal_gray_w[j];
-
+
byte = (byte <= bcal)?0:(byte-bcal);
byte = (byte >= wcal)?255:(byte*255/wcal);
s->buffer[i+j] = byte;
@@ -1277,11 +1277,11 @@ read_from_scanner_gray(struct scanner *s)
else {
DBG(5, "read_from_scanner_gray: error reading status = %d\n", ret);
}
-
+
free(buf);
-
+
DBG (10, "read_from_scanner_gray: finish\n");
-
+
return ret;
}
@@ -1294,9 +1294,9 @@ read_from_scanner_color(struct scanner *s)
size_t bytes = HEADER_SIZE + s->color_block_size;
unsigned char * buf;
int i,j,k;
-
+
DBG (10, "read_from_scanner_color: start\n");
-
+
cmd[4] = s->lines_per_block;
buf = malloc(bytes);
@@ -1305,14 +1305,14 @@ read_from_scanner_color(struct scanner *s)
(long unsigned)bytes);
return SANE_STATUS_NO_MEM;
}
-
+
ret = do_cmd(
s, 0,
cmd, sizeof(cmd),
NULL, 0,
buf, &bytes
);
-
+
if (ret == SANE_STATUS_GOOD) {
DBG(15, "read_from_scanner_color: got GOOD\n");
@@ -1320,21 +1320,21 @@ read_from_scanner_color(struct scanner *s)
if(!buf[1]){
s->paperless_lines += s->lines_per_block;
}
-
+
s->bytes_rx = s->color_block_size;
-
+
/*memcpy(s->buffer,buf+HEADER_SIZE,s->color_block_size);*/
-
+
/* reorder the color data into the struct's buffer */
for(i=0;i<s->color_block_size;i+=PIXELS_PER_LINE*3){
for(j=0;j<PIXELS_PER_LINE;j++){
for(k=0;k<3;k++){
-
+
int offset = PIXELS_PER_LINE*(2-k) + j;
unsigned char byte = buf[ HEADER_SIZE + i + offset ];
unsigned char bcal = s->cal_color_b[offset];
unsigned char wcal = s->cal_color_w[offset];
-
+
byte = (byte <= bcal)?0:(byte-bcal);
byte = (byte >= wcal)?255:(byte*255/wcal);
s->buffer[i+j*3+k] = byte;
@@ -1345,11 +1345,11 @@ read_from_scanner_color(struct scanner *s)
else {
DBG(5, "read_from_scanner_color: error reading status = %d\n", ret);
}
-
+
free(buf);
-
+
DBG (10, "read_from_scanner_color: finish\n");
-
+
return ret;
}
@@ -1357,7 +1357,7 @@ read_from_scanner_color(struct scanner *s)
* @@ Section 4 - SANE cleanup functions
*/
/*
- * Cancels a scan.
+ * Cancels a scan.
*
* From the SANE spec:
* This function is used to immediately or as quickly as possible
@@ -1393,7 +1393,7 @@ power_down(struct scanner *s)
unsigned char buf[6];
size_t bytes = sizeof(buf);
int i;
-
+
DBG (10, "power_down: start\n");
for(i=0;i<5;i++){
@@ -1413,9 +1413,9 @@ power_down(struct scanner *s)
unsigned char cmd[] = {0x35, 0x01, 0x00, 0xff};
unsigned char buf[5];
size_t bytes = sizeof(buf);
-
+
DBG (10, "power_down: start\n");
-
+
ret = do_cmd(
s, 0,
cmd, sizeof(cmd),
@@ -1423,15 +1423,15 @@ power_down(struct scanner *s)
buf, &bytes
);
#endif
-
+
DBG (10, "power_down: finish %d\n",ret);
-
+
return ret;
}
/*
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -1467,7 +1467,7 @@ disconnect_fd (struct scanner *s)
/*
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
diff --git a/backend/cardscan.h b/backend/cardscan.h
index a673dc6..56bd08d 100644
--- a/backend/cardscan.h
+++ b/backend/cardscan.h
@@ -1,12 +1,12 @@
#ifndef CARDSCAN_H
#define CARDSCAN_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comment in cardscan.c
*/
-/* -------------------------------------------------------------------------
+/* -------------------------------------------------------------------------
* This option list has to contain all options for all scanners supported by
* this driver. If a certain scanner cannot handle a certain option, there's
* still the possibility to say so, later.
@@ -48,10 +48,10 @@ struct scanner
/* --------------------------------------------------------------------- */
/* immutable values which are set during reading of config file. */
- int has_cal_buffer;
- int lines_per_block;
- int color_block_size;
- int gray_block_size;
+ int has_cal_buffer;
+ int lines_per_block;
+ int color_block_size;
+ int gray_block_size;
/* --------------------------------------------------------------------- */
/* changeable SANE_Option structs provide our interface to frontend. */
diff --git a/backend/coolscan-scsidef.h b/backend/coolscan-scsidef.h
index 4f1a27e..da7eaa6 100644
--- a/backend/coolscan-scsidef.h
+++ b/backend/coolscan-scsidef.h
@@ -179,7 +179,7 @@ static scsiblk inquiry =
/* ==================================================================== */
/*
static unsigned char mode_selectC[] = {
- MODE_SELECT, 0x10, 0x00, 0x00, 0x00, 0x00
+ MODE_SELECT, 0x10, 0x00, 0x00, 0x00, 0x00
static scsiblk mode_select = { mode_selectC,sizeof(mode_selectC) };
*/
@@ -518,7 +518,7 @@ static scsiblk window_descriptor_block =
-/* LS-30 has different window-descriptor !
+/* LS-30 has different window-descriptor !
*/
static unsigned char window_descriptor_blockC_LS30[] =
@@ -529,11 +529,11 @@ static unsigned char window_descriptor_blockC_LS30[] =
0x00, /* 0x00 */
/* Window Identifier */
#define WD_wid_0 0x00 /* Only one supported */
-#define WD_wid_1 0x01
-#define WD_wid_2 0x02
-#define WD_wid_3 0x03
-#define WD_wid_4 0x04
-#define WD_wid_9 0x09
+#define WD_wid_1 0x01
+#define WD_wid_2 0x02
+#define WD_wid_3 0x03
+#define WD_wid_4 0x04
+#define WD_wid_9 0x09
0x00, /* reserved, AUTO */
0x00, 0x00, /* 0x02 */
@@ -784,7 +784,7 @@ static unsigned char autofocusLS30C[] =
static unsigned char autofocuspos[] =
{
- 0x00,
+ 0x00,
0x00, 0x00, 0x05, 0x10, /* x-position */
0x00, 0x00, 0x07, 0x9b, /* y-position */
};
diff --git a/backend/coolscan.c b/backend/coolscan.c
index 239b546..4904afc 100644
--- a/backend/coolscan.c
+++ b/backend/coolscan.c
@@ -35,7 +35,7 @@
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
@@ -267,10 +267,10 @@ request_sense_parse (unsigned char *sensed_data)
return ret;
}
-/*
+/*
* wait_scanner should spin until TEST_UNIT_READY returns 0 (GOOD)
* returns 0 on success,
- * returns -1 on error.
+ * returns -1 on error.
*/
static int
wait_scanner (Coolscan_t * s)
@@ -319,7 +319,7 @@ wait_scanner (Coolscan_t * s)
* GOOD
* RESERVE UNIT
* GOOD
- *
+ *
* It is then responsible for installing appropriate signal handlers
* to call emergency_give_scanner() if user aborts.
*/
@@ -331,7 +331,7 @@ coolscan_grab_scanner (Coolscan_t * s)
DBG (10, "grabbing scanner\n");
- wait_scanner (s); /* wait for scanner ready, if not print
+ wait_scanner (s); /* wait for scanner ready, if not print
sense and return 1 */
ret = do_scsi_cmd (s->sfd, reserve_unit.cmd, reserve_unit.size, NULL, 0);
if (ret)
@@ -341,15 +341,15 @@ coolscan_grab_scanner (Coolscan_t * s)
return 0;
}
-/*
+/*
* Convert a size in ilu to the units expected by the scanner
*/
static int
resDivToVal (int res_div)
-{
+{
if (res_div < 1 || res_div > resolution_list[0])
- {
+ {
DBG (1, "Invalid resolution divisor %d \n", res_div);
return 2700;
}
@@ -379,7 +379,7 @@ resValToDiv (int res_val)
return res_div;
}
}
-/*
+/*
* use mode select to force a mesurement divisor of 2700
*/
static unsigned char mode_select[] =
@@ -414,7 +414,7 @@ coolscan_autofocus_LS30 (Coolscan_t * s)
/* Trashes when used in combination with scsi-driver AM53C974.o */
do_scsi_cmd (s->sfd, command_c1.cmd,
command_c1.size, NULL, 0);
-
+
DBG (10, "\tWaiting end of Autofocus\n");
wait_scanner (s);
DBG (10, "AutoFocused.\n");
@@ -662,7 +662,7 @@ coolscan_set_window_param_LS20 (Coolscan_t * s, int prescan)
set_WD_shift_G (buffer_r, s->shift_G);
set_WD_shift_B (buffer_r, s->shift_B);
-
+
/* FIXME: LUT-[RGB] */
/* FIXME: stop on/off */
}
@@ -738,7 +738,7 @@ coolscan_set_window_param_LS30 (Coolscan_t * s, int wid, int prescan)
{
set_WD_scanmode_LS30 (buffer_r, WD_Scan);
- /* the coolscan LS-30 uses the upper left corner
+ /* the coolscan LS-30 uses the upper left corner
as the origin of coordinates */
/* xmax and ymax are given in 1200 dpi */
set_WD_ULX (buffer_r, s->tlx);
@@ -787,11 +787,11 @@ coolscan_set_window_param_LS30 (Coolscan_t * s, int wid, int prescan)
set_WD_negative_LS30(buffer_r, s->negative); /* Negative/positive slide */
switch(wid)
- { case 1: set_gain_LS30(buffer_r,(s->exposure_R*s->pretv_r)/50);
+ { case 1: set_gain_LS30(buffer_r,(s->exposure_R*s->pretv_r)/50);
break;
- case 2: set_gain_LS30(buffer_r,(s->exposure_G*s->pretv_g)/50);
+ case 2: set_gain_LS30(buffer_r,(s->exposure_G*s->pretv_g)/50);
break;
- case 3: set_gain_LS30(buffer_r,(s->exposure_B*s->pretv_b)/50);
+ case 3: set_gain_LS30(buffer_r,(s->exposure_B*s->pretv_b)/50);
break;
}
@@ -837,7 +837,7 @@ coolscan_set_window_param (Coolscan_t * s, int prescan)
int ret;
ret=0;
DBG (10, "set_window_param\n");
-
+
if(s->LS<2) /* distinquish between old and new scanners */
{ ret=coolscan_set_window_param_LS20 (s,prescan);
}
@@ -847,7 +847,7 @@ coolscan_set_window_param (Coolscan_t * s, int prescan)
wait_scanner (s);
coolscan_set_window_param_LS30(s,1,prescan);
ret=coolscan_set_window_param_LS30(s,2,prescan);
- ret=coolscan_set_window_param_LS30(s,3,prescan);
+ ret=coolscan_set_window_param_LS30(s,3,prescan);
if(s->colormode&0x08)
{ ret=coolscan_set_window_param_LS30(s,9,prescan);
}
@@ -856,9 +856,9 @@ coolscan_set_window_param (Coolscan_t * s, int prescan)
}
-/*
+/*
* The only purpose of get_window is debugging. None of the return parameters
- * is currently used.
+ * is currently used.
*/
static int
coolscan_get_window_param_LS30 (Coolscan_t * s, int wid,int prescanok)
@@ -896,11 +896,11 @@ coolscan_get_window_param_LS30 (Coolscan_t * s, int wid,int prescanok)
if(prescanok)
{ switch(wid)
- { case 1: s->pretv_r = get_gain_LS30(buf);
+ { case 1: s->pretv_r = get_gain_LS30(buf);
break;
- case 2: s->pretv_g = get_gain_LS30(buf);
+ case 2: s->pretv_g = get_gain_LS30(buf);
break;
- case 3: s->pretv_b = get_gain_LS30(buf);
+ case 3: s->pretv_b = get_gain_LS30(buf);
break;
}
}
@@ -920,9 +920,9 @@ coolscan_get_window_param_LS30 (Coolscan_t * s, int wid,int prescanok)
return 0;
}
-/*
+/*
* The only purpose of get_window is debugging. None of the return parameters
- * is currently used.
+ * is currently used.
*/
static int
coolscan_get_window_param_LS20 (Coolscan_t * s)
@@ -982,9 +982,9 @@ coolscan_get_window_param_LS20 (Coolscan_t * s)
return 0;
}
-/*
+/*
* The only purpose of get_window is debugging. None of the return parameters
- * is currently used.
+ * is currently used.
*/
static int
coolscan_get_window_param (Coolscan_t * s, int prescanok)
@@ -992,12 +992,12 @@ coolscan_get_window_param (Coolscan_t * s, int prescanok)
int ret;
DBG (10, "get_window_param\n");
- ret=0;
+ ret=0;
if(s->LS<2) /* distinquish between old and new scanners */
{ ret=coolscan_get_window_param_LS20 (s);
}
else
- {
+ {
ret=coolscan_get_window_param_LS30(s,1,prescanok);
ret=coolscan_get_window_param_LS30(s,2,prescanok);
ret=coolscan_get_window_param_LS30(s,3,prescanok);
@@ -1017,24 +1017,24 @@ coolscan_start_scanLS30 (Coolscan_t * s)
memcpy (s->buffer, scan.cmd, scan.size);
switch(s->colormode)
{ case RGB:
- case GREYSCALE:
+ case GREYSCALE:
channels=s->buffer[4]=0x03; /* window 1 */
s->buffer[6]=0x01; /* window 1 */
s->buffer[7]=0x02; /* window 2 */
- s->buffer[8]=0x03; /* window 3 */
-
- break;
+ s->buffer[8]=0x03; /* window 3 */
+
+ break;
case RGBI:
channels=s->buffer[4]=0x04; /* window 1 */
s->buffer[6]=0x01; /* window 1 */
s->buffer[7]=0x02; /* window 2 */
- s->buffer[8]=0x03; /* window 3 */
- s->buffer[9]=0x09; /* window 3 */
- break;
+ s->buffer[8]=0x03; /* window 3 */
+ s->buffer[9]=0x09; /* window 3 */
+ break;
case IRED:
channels=s->buffer[4]=0x01; /* window 1 */
- s->buffer[8]=0x09; /* window 3 */
- break;
+ s->buffer[8]=0x09; /* window 3 */
+ break;
}
return do_scsi_cmd (s->sfd, s->buffer, scan.size+channels, NULL, 0);
@@ -1061,14 +1061,14 @@ prescan (Coolscan_t * s)
{ coolscan_set_window_param (s, 1);
}
else
- {
+ {
do_scsi_cmd (s->sfd,commande1.cmd,commande1.size,s->buffer,0x0d);
wait_scanner (s);
wait_scanner (s);
coolscan_set_window_param_LS30 (s,1,1);
coolscan_set_window_param_LS30 (s,2,1);
coolscan_set_window_param_LS30 (s,3,1);
-
+
}
ret = coolscan_start_scan(s);
@@ -1119,7 +1119,7 @@ do_prescan_now (Coolscan_t * scanner)
return SANE_STATUS_DEVICE_BUSY;
}
- prescan (scanner);
+ prescan (scanner);
if(scanner->LS<2)
{ get_internal_info(scanner);
}
@@ -1157,7 +1157,7 @@ send_one_LUT (Coolscan_t * s, SANE_Word * LUT, int reg)
gamma = alloca (send.size + s->lutlength*2);
memcpy (gamma, send.cmd, send.size);
- if(s->LS<2)
+ if(s->LS<2)
{ gamma_p = &gamma[send.size];
for (i = 0; i < s->lutlength; i++)
{
@@ -1166,45 +1166,45 @@ send_one_LUT (Coolscan_t * s, SANE_Word * LUT, int reg)
*gamma_p++ = (unsigned char) LUT[i];
}
}
- else if(s->LS==2)
+ else if(s->LS==2)
{ gamma_s = (unsigned short*)( &gamma[send.size]);
for (i = 0; i < s->lutlength; i++)
{
if(s->negative)
{
- lutval=(unsigned short)(LUT[(s->lutlength-i)]);
+ lutval=(unsigned short)(LUT[(s->lutlength-i)]);
}
- else
+ else
{
- lutval=(unsigned short)(LUT[i]);
- }
+ lutval=(unsigned short)(LUT[i]);
+ }
if (LUT[i] >= s->max_lut_val)
LUT[i] = s->max_lut_val-1; /* broken gtk */
if(s->low_byte_first) /* if on little endian machine: */
{
- lutval=((lutval&0x00ff)<<8)+((lutval&0xff00)>>8); /* inverse byteorder */
+ lutval=((lutval&0x00ff)<<8)+((lutval&0xff00)>>8); /* inverse byteorder */
}
- *gamma_s++ = lutval;
+ *gamma_s++ = lutval;
}
}
- else if(s->LS==3)
+ else if(s->LS==3)
{ gamma_s = (unsigned short*)( &gamma[send.size]);
for (i = 0; i < s->lutlength; i++)
{
if(s->negative)
{
- lutval=(unsigned short)(LUT[s->lutlength-i]);
+ lutval=(unsigned short)(LUT[s->lutlength-i]);
}
- else
+ else
{
- lutval=(unsigned short)(LUT[i]);
- }
+ lutval=(unsigned short)(LUT[i]);
+ }
if (LUT[i] >= s->max_lut_val)
LUT[i] = s->max_lut_val-1; /* broken gtk */
if(s->low_byte_first) /* if on little endian machine: */
- { lutval=((lutval&0x00ff)<<8)+((lutval&0xff00)>>8); /* inverse byteorder */
+ { lutval=((lutval&0x00ff)<<8)+((lutval&0xff00)>>8); /* inverse byteorder */
}
- *gamma_s++ = lutval;
+ *gamma_s++ = lutval;
}
}
return do_scsi_cmd (s->sfd, gamma, send.size + s->lutlength*bytesperval, NULL, 0);
@@ -1223,7 +1223,7 @@ send_LUT (Coolscan_t * s)
send_one_LUT (s, s->gamma, S_DQ_Reg3);
if(s->colormode&0x08)
{ send_one_LUT (s, s->gamma, S_DQ_Reg9);
- }
+ }
}
}
@@ -1234,7 +1234,7 @@ send_LUT (Coolscan_t * s)
send_one_LUT (s, s->gamma_b, S_DQ_Reg3);
if(s->colormode&0x08)
{ send_one_LUT (s, s->gamma_r, S_DQ_Reg9);
- }
+ }
}
return 0;
}
@@ -1352,10 +1352,10 @@ pixels_per_line (Coolscan_t * s)
{
int pic_dot;
if(s->LS<2)
- { pic_dot = (s->brx - s->tlx + s->x_nres) / s->x_nres;
+ { pic_dot = (s->brx - s->tlx + s->x_nres) / s->x_nres;
}
else
- { pic_dot = (s->brx - s->tlx + 1) / s->x_nres;
+ { pic_dot = (s->brx - s->tlx + 1) / s->x_nres;
}
DBG (10, "pic_dot=%d\n", pic_dot);
return pic_dot;
@@ -1366,10 +1366,10 @@ lines_per_scan (Coolscan_t * s)
{
int pic_line;
if(s->LS<2)
- { pic_line = (s->bry - s->tly + s->y_nres) / s->y_nres;
+ { pic_line = (s->bry - s->tly + s->y_nres) / s->y_nres;
}
else
- { pic_line = (( s->bry - s->tly + 1.0 ) / s->y_nres);
+ { pic_line = (( s->bry - s->tly + 1.0 ) / s->y_nres);
}
DBG (10, "pic_line=%d\n", pic_line);
return pic_line;
@@ -1384,13 +1384,13 @@ scan_bytes_per_line (Coolscan_t * s)
bpl=pixels_per_line (s) * 3;
if(s->bits_per_color>8) bpl=bpl*2;
return bpl;
- break;
+ break;
case RGBI:
case IRED:
bpl=pixels_per_line (s) * 4;
if(s->bits_per_color>8) bpl=bpl*2;
return bpl;
- break;
+ break;
}
return 0;
}
@@ -1403,18 +1403,18 @@ write_bytes_per_line (Coolscan_t * s)
bpl=pixels_per_line (s) * 3;
if(s->bits_per_color>8) bpl=bpl*2;
return bpl;
- break;
+ break;
case RGBI:
bpl=pixels_per_line (s) * 4;
if(s->bits_per_color>8) bpl=bpl*2;
return bpl;
- break;
+ break;
case IRED:
case GREYSCALE:
bpl= pixels_per_line (s) ;
if(s->bits_per_color>8) bpl=bpl*2;
return bpl;
- break;
+ break;
}
return 0;
}
@@ -1449,7 +1449,7 @@ coolscan_check_values (Coolscan_t * s)
/* test_little_endian */
-static SANE_Bool
+static SANE_Bool
coolscan_test_little_endian(void)
{
SANE_Int testvalue = 255;
@@ -1463,7 +1463,7 @@ coolscan_test_little_endian(void)
static int
get_inquiery_part_LS30 (Coolscan_t * s, unsigned char part)
-{
+{
int size;
/* Get length of reponse */
@@ -1473,7 +1473,7 @@ get_inquiery_part_LS30 (Coolscan_t * s, unsigned char part)
set_inquiry_return_size (inquiry.cmd, size);
do_scsi_cmd (s->sfd, inquiry.cmd, inquiry.size,
s->buffer, size);
- size=get_inquiry_length(s->buffer);
+ size=get_inquiry_length(s->buffer);
size+=4;
/* then get inquiry with actual size */
set_inquiry_return_size (inquiry.cmd, size);
@@ -1498,7 +1498,7 @@ coolscan_read_var_data_block (Coolscan_t * s,int datatype)
set_R_xfer_length (sread.cmd, size);
r = do_scsi_cmd (s->sfd, sread.cmd, sread.size,
s->buffer, size);
- size=s->buffer[5];
+ size=s->buffer[5];
set_R_xfer_length (sread.cmd, size);
r = do_scsi_cmd (s->sfd, sread.cmd, sread.size,
s->buffer, size);
@@ -1507,14 +1507,14 @@ coolscan_read_var_data_block (Coolscan_t * s,int datatype)
static int
get_inquiery_LS30 (Coolscan_t * s)
-{
+{
unsigned char part;
unsigned char parts[5];
int i;
/* Get vector of inquiery parts */
get_inquiery_part_LS30(s, (unsigned char) 0);
- /* Get the parts of inquiery */
+ /* Get the parts of inquiery */
for(i=0;i<5;i++)
{ parts[i]=((unsigned char *)s->buffer)[4+11+i];
}
@@ -1522,7 +1522,7 @@ get_inquiery_LS30 (Coolscan_t * s)
{ part=parts[i];
get_inquiery_part_LS30 (s, part);
switch(part)
- { case 0x0c1:/* max size and resolution */
+ { case 0x0c1:/* max size and resolution */
s->adbits = 8;
s->outputbits = 8;
s->maxres = getnbyte(s->buffer+0x12,2)-1;
@@ -1537,7 +1537,7 @@ get_inquiery_LS30 (Coolscan_t * s)
break;
case 0x0f8:
break;
- }
+ }
}
/* get windows */
@@ -1556,7 +1556,7 @@ get_inquiery_LS30 (Coolscan_t * s)
static int
get_feeder_type_LS30 (Coolscan_t * s)
-{
+{
int size;
unsigned char *ptr;
int ima;
@@ -1668,7 +1668,7 @@ get_internal_info_LS20 (Coolscan_t * s)
"\tdevice error code = 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n"
"\tpower-on errors = 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n",
s->offsetdata_r, s->offsetdata_g, s->offsetdata_b,
- s->limitcondition,
+ s->limitcondition,
s->derr[0], s->derr[1], s->derr[2], s->derr[3], s->derr[4],
s->derr[5], s->derr[6], s->derr[7],
s->power_on_errors[0], s->power_on_errors[1],
@@ -1685,7 +1685,7 @@ get_internal_info (Coolscan_t * s)
int ret;
DBG (10, "get_internal_info\n");
-
+
if(s->LS<2) /* distinquish between old and new scanners */
{ ret=get_internal_info_LS20 (s);
}
@@ -1734,7 +1734,7 @@ coolscan_initialize_values (Coolscan_t * s)
}
if(s->LS>=2) /* LS-30 */
{
- get_inquiery_LS30(s); /* Info about scanner*/
+ get_inquiery_LS30(s); /* Info about scanner*/
select_MUD (s); /* must be before mode_sense */
get_feeder_type_LS30(s);
s->wdb_len = 117;
@@ -1773,7 +1773,7 @@ coolscan_initialize_values (Coolscan_t * s)
s->exposure_B = 50;
s->pretv_r=40000;
- s->pretv_g=40000;
+ s->pretv_g=40000;
s->pretv_b=40000;
s->shift_R = 128;
@@ -1808,7 +1808,7 @@ coolscan_initialize_values (Coolscan_t * s)
s->gamma_r[i] = s->gamma[i];
s->gamma_g[i] = s->gamma[i];
s->gamma_b[i] = s->gamma[i];
- }
+ }
if (coolscan_test_little_endian() == SANE_TRUE)
{
@@ -1863,7 +1863,7 @@ sense_handler (int scsi_fd, unsigned char * result, void *arg)
return SANE_STATUS_IO_ERROR; /* we only know about this one */
}
return request_sense_parse(result);
-
+
}
@@ -1904,7 +1904,7 @@ static SANE_String_Const scan_mode_list_LS30[] =
{
colorStr,
grayStr,
-#ifdef HAS_IRED
+#ifdef HAS_IRED
rgbiStr,
#endif /* HAS_IRED */
NULL
@@ -1928,7 +1928,7 @@ static SANE_String_Const autofocus_mode_list[] =
static SANE_String_Const source_list[4] =
{NULL, NULL, NULL, NULL};
-static const SANE_Range gamma_range_8 =
+static const SANE_Range gamma_range_8 =
{
0, /* minimum */
255, /* maximum */
@@ -1936,21 +1936,21 @@ static const SANE_Range gamma_range_8 =
};
-static const SANE_Range gamma_range_9 =
+static const SANE_Range gamma_range_9 =
{
0, /* minimum */
511, /* maximum */
1 /* quantization */
};
-static const SANE_Range gamma_range_10 =
+static const SANE_Range gamma_range_10 =
{
0, /* minimum */
1023, /* maximum */
1 /* quantization */
};
-static const SANE_Range gamma_range_12 =
+static const SANE_Range gamma_range_12 =
{
0, /* minimum */
4096, /* maximum */
@@ -2037,7 +2037,7 @@ do_cancel (Coolscan_t * scanner)
sanei_thread_kill (scanner->reader_pid);
while (sanei_thread_waitpid(scanner->reader_pid, &exit_status) !=
scanner->reader_pid );
- scanner->reader_pid = -1;
+ sanei_thread_invalidate (scanner->reader_pid);
}
if (scanner->sfd >= 0)
@@ -2082,10 +2082,10 @@ attach_scanner (const char *devicename, Coolscan_t ** devp)
if (NULL == (dev = malloc (sizeof (*dev))))
return SANE_STATUS_NO_MEM;
-
+
dev->row_bufsize = (sanei_scsi_max_request_size < (64 * 1024)) ?
sanei_scsi_max_request_size : 64 * 1024;
-
+
if ((dev->buffer = malloc (dev->row_bufsize)) == NULL)
/* if ((dev->buffer = malloc (sanei_scsi_max_request_size)) == NULL)*/
return SANE_STATUS_NO_MEM;
@@ -2170,16 +2170,16 @@ typedef struct Color_correct_s
double sumri; /* sum of red*ired pixel values*/
double sumii; /* sum of ired*ired pixel values*/
double sumrr; /* sum of ired*ired pixel values*/
- int mr; /* factor between red and ired values (*256) */
- int br; /* offset of ired values */
+ int mr; /* factor between red and ired values (*256) */
+ int br; /* offset of ired values */
} ColorCorrect;
-/* ---------------------------------------------------------------
+/* ---------------------------------------------------------------
function: RGBIfix
taks: Correct the infrared channel
-
+
import: unsigned char * rgbimat - RGBI - matrix from scanner
int size - number of pixels to correct
int *lutr - lookup table for red correction
@@ -2188,13 +2188,13 @@ typedef struct Color_correct_s
int *lutr - lookup table for red correction
export: unsigned char * orgbimat - RGBI - corrected matrix
-
+
written by: Andreas RICK 19.6.1999
-
+
----------------------------------------------------------------*/
static int Calc_fix_LUT(Coolscan_t * s)
-{ int uselutr,uselutg,uselutb,useluti;
+{ int uselutr,uselutg,uselutb,useluti;
/* static int irmulr= -34*25; */
int irmulr= -64*25;
int irmulg= -1*25;
@@ -2207,11 +2207,11 @@ static int Calc_fix_LUT(Coolscan_t * s)
irmulg=s->ired_green*(25);
irmulb=s->ired_blue*(25);
irmuli=25*256;
-
+
if(s->LS==2) /* TODO: right conversion factors for 10 and 12 bit */
{ div=4;
}
- else if(s->LS==3)
+ else if(s->LS==3)
{ div=16;
}
else
@@ -2233,10 +2233,10 @@ static int Calc_fix_LUT(Coolscan_t * s)
uselutb=s->gamma_b[i]/div;
useluti=s->gamma_r[i]/div;
}
- s->lutr[uselutr]=(int)(irmulr*pow((double)i,(double)0.333333));
- s->lutg[uselutg]=(int)(irmulg*pow((double)i,(double)0.333333));
- s->lutb[uselutb]=(int)(irmulb*pow((double)i,(double)0.333333));
- s->luti[useluti]=(int)(irmuli*pow((double)i,(double)0.333333));
+ s->lutr[uselutr]=(int)(irmulr*pow((double)i,(double)0.333333));
+ s->lutg[uselutg]=(int)(irmulg*pow((double)i,(double)0.333333));
+ s->lutb[uselutb]=(int)(irmulb*pow((double)i,(double)0.333333));
+ s->luti[useluti]=(int)(irmuli*pow((double)i,(double)0.333333));
if(uselutr<255)
{ if(s->lutr[uselutr+1]==0) s->lutr[uselutr+1]=s->lutr[uselutr];
}
@@ -2261,12 +2261,12 @@ static int Calc_fix_LUT(Coolscan_t * s)
-/* ---------------------------------------------------------------
+/* ---------------------------------------------------------------
function: RGBIfix
taks: Correct the infrared channel
-
+
import: unsigned char * rgbimat - RGBI - matrix from scanner
int size - number of pixels to correct
int *lutr - lookup table for red correction
@@ -2275,20 +2275,20 @@ static int Calc_fix_LUT(Coolscan_t * s)
int *lutr - lookup table for red correction
export: unsigned char * orgbimat - RGBI - corrected matrix
-
+
written by: Andreas RICK 19.6.1999
-
+
----------------------------------------------------------------*/
static int RGBIfix(Coolscan_t * scanner,
unsigned char* rgbimat,
- unsigned char* orgbimat,
+ unsigned char* orgbimat,
int size,
int *lutr,
int *lutg,
int *lutb,
int *luti)
-
+
{
unsigned char *pr,*pg,*pb,*pi;
unsigned char *opr,*opg,*opb,*opi;
@@ -2299,42 +2299,42 @@ static int RGBIfix(Coolscan_t * scanner,
for(x=0;x<size;x++)
{
pr=rgbimat+x*4;
- pg=pr+1;
+ pg=pr+1;
pb=pg+1;
- pi=pb+1;
+ pi=pb+1;
opr=orgbimat+x*4;
- opg=opr+1;
+ opg=opr+1;
opb=opg+1;
opi=opb+1;
r=lutr[(*pr)];
g=lutg[(*pg)];
- b=lutb[(*pb)];
- i=luti[(*pi)];
+ b=lutb[(*pb)];
+ i=luti[(*pi)];
ii= i-r-g-b;
(*opr)=(*pr);
(*opg)=(*pg);
- (*opb)=(*pb);
+ (*opb)=(*pb);
if(ii<0)ii=0;
if(ii>255*256)ii=255*256;
if(scanner->negative)
{
- (*opi)=(unsigned char)(255-(ii>>8));
+ (*opi)=(unsigned char)(255-(ii>>8));
}
else
{
- (*opi)=(unsigned char)(ii>>8);
+ (*opi)=(unsigned char)(ii>>8);
}
}
return 1;
}
-/* ---------------------------------------------------------------
+/* ---------------------------------------------------------------
function: RGBIfix16
taks: Correct the infrared channel for 16 bit images
(doesn't do anything for now)
-
+
import: unsigned char * rgbimat - RGBI - matrix from scanner
int size - number of pixels to correct
int *lutr - lookup table for red correction
@@ -2343,21 +2343,21 @@ static int RGBIfix(Coolscan_t * scanner,
int *lutr - lookup table for red correction
export: unsigned char * orgbimat - RGBI - corrected matrix
-
+
written by: Andreas RICK 19.6.1999
-
+
----------------------------------------------------------------*/
static int RGBIfix16(Coolscan_t * scanner,
unsigned short* rgbimat,
- unsigned short* orgbimat,
+ unsigned short* orgbimat,
int size,
int *lutr,
int *lutg,
int *lutb,
int *luti)
-
-{
+
+{
unsigned short *pr,*pg,*pb,*pi;
unsigned short *opr,*opg,*opb,*opi;
int x;
@@ -2367,43 +2367,43 @@ static int RGBIfix16(Coolscan_t * scanner,
for(x=0;x<size;x++)
{
pr=rgbimat+x*4;
- pg=pr+1;
+ pg=pr+1;
pb=pg+1;
- pi=pb+1;
+ pi=pb+1;
opr=orgbimat+x*4;
- opg=opr+1;
+ opg=opr+1;
opb=opg+1;
opi=opb+1;
- (*opr)=(((*pr)&0x00ff)<<8)+(((*pr)&0xff00)>>8);
- (*opg)=(((*pg)&0x00ff)<<8)+(((*pg)&0xff00)>>8);
- (*opb)=(((*pb)&0x00ff)<<8)+(((*pb)&0xff00)>>8);
- (*opi)=(((*pi)&0x00ff)<<8)+(((*pi)&0xff00)>>8);
+ (*opr)=(((*pr)&0x00ff)<<8)+(((*pr)&0xff00)>>8);
+ (*opg)=(((*pg)&0x00ff)<<8)+(((*pg)&0xff00)>>8);
+ (*opb)=(((*pb)&0x00ff)<<8)+(((*pb)&0xff00)>>8);
+ (*opi)=(((*pi)&0x00ff)<<8)+(((*pi)&0xff00)>>8);
}
return 1;
}
-/* ---------------------------------------------------------------
+/* ---------------------------------------------------------------
function: rgb2g
taks: Convert RGB data to grey
-
+
import: unsigned char * rgbimat - RGB - matrix from scanner
int size - size of input data (num pixel)
export: unsigned char * gomat - Grey matrix
-
+
written by: Andreas RICK 13.7.1999
-
+
----------------------------------------------------------------*/
#define RtoG ((int)(0.27*256))
#define GtoG ((int)(0.54*256))
#define BtoG ((int)(0.19*256))
-static int rgb2g(unsigned char* rgbimat,unsigned char* gomat,
+static int rgb2g(unsigned char* rgbimat,unsigned char* gomat,
int size)
-
+
{ unsigned char *pr,*pg,*pb;
unsigned char *opg;
@@ -2412,17 +2412,17 @@ static int rgb2g(unsigned char* rgbimat,unsigned char* gomat,
for(x=0;x<size;x++)
{
pr=rgbimat+x*3;
- pg=pr+1;
+ pg=pr+1;
pb=pg+1;
opg=gomat+x;
g= RtoG*(*pr) + GtoG*(*pg) + BtoG*(*pb);
- (*opg)=(unsigned char)(g>>8);
+ (*opg)=(unsigned char)(g>>8);
}
return 1;
}
-/* ---------------------------------------------------------------
+/* ---------------------------------------------------------------
function: RGBIfix1
@@ -2433,7 +2433,7 @@ static int rgb2g(unsigned char* rgbimat,unsigned char* gomat,
The infrared values is corrected by:
Ir=mr*lutr(r)+luti(i)
-
+
import: unsigned char * rgbimat - RGBI - matrix from scanner
int size - number of pixels to correct
ColorCorrect *cc,
@@ -2441,18 +2441,18 @@ static int rgb2g(unsigned char* rgbimat,unsigned char* gomat,
int *luti - lookup table for ired correction
export: unsigned char * orgbimat - RGBI - corrected matrix
-
+
written by: Andreas RICK 3.7.1999
-
+
----------------------------------------------------------------*/
#if 0
-static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
+static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
int size,
int *lutr,
int *lutg,
int *lutb,
int *luti)
-
+
{ unsigned char *pr,*pg,*pb,*pi;
unsigned char *opr,*opg,*opb,*opi;
ColorCorrect cc;
@@ -2468,7 +2468,7 @@ static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
cc.sumr=cc.sumii=cc.sumrr=cc.sumi=cc.sumri=0.0;
for(x=0;x<size;x++)
{ pr=rgbimat+x*4;
- pi=pr+3;
+ pi=pr+3;
r=lutr[(*pr)];
i=luti[(*pi)];
/* r=(*pr);
@@ -2506,11 +2506,11 @@ static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
{
pr=rgbimat+x*4;
- pg=pr+1;
+ pg=pr+1;
pb=pg+1;
- pi=pb+1;
+ pi=pb+1;
opr=orgbimat+x*4;
- opg=opr+1;
+ opg=opr+1;
opb=opg+1;
opi=opb+1;
r=lutr[(*pr)];
@@ -2520,10 +2520,10 @@ static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
ii= ((i-((r*cc.mr)>>10)-cc.br)>>2) +128;
(*opr)=(*pr);
(*opg)=(*pg);
- (*opb)=(*pb);
+ (*opb)=(*pb);
if(ii<0) ii=0;
if(ii>255) ii=255;
- (*opi)=(unsigned char)(ii);
+ (*opi)=(unsigned char)(ii);
}
return 1;
}
@@ -2582,7 +2582,7 @@ reader_process (void *data )
data_left = scan_bytes_per_line (scanner) *
lines_per_scan (scanner);
-
+
/*scanner->row_bufsize = sanei_scsi_max_request_size;*/
coolscan_trim_rowbufsize (scanner); /* trim bufsize */
@@ -2612,27 +2612,27 @@ reader_process (void *data )
fclose (fp);
return (-1);
}
-
+
if (scanner->LS == 1) { /* mirror image for LS-1000 */
bpl = scan_bytes_per_line(scanner);
linesPerBuf = data_to_read / bpl;
-
- for (line = 0, lineOffset = 0; line < linesPerBuf;
+
+ for (line = 0, lineOffset = 0; line < linesPerBuf;
line++, lineOffset += bpl ) {
-
+
if (scanner->colormode == RGB) {
for (j = 0; j < bpl/2 ; j += 3) {
r_data=scanner->buffer[lineOffset + j];
g_data=scanner->buffer[lineOffset + j + 1];
b_data=scanner->buffer[lineOffset + j + 2];
-
- scanner->buffer[lineOffset + j] =
+
+ scanner->buffer[lineOffset + j] =
scanner->buffer[lineOffset + bpl -1 - j - 2 ];
- scanner->buffer[lineOffset + j + 1] =
+ scanner->buffer[lineOffset + j + 1] =
scanner->buffer[lineOffset + bpl -1 - j - 1 ];
- scanner->buffer[lineOffset + j + 2] =
+ scanner->buffer[lineOffset + j + 2] =
scanner->buffer[lineOffset + bpl -1 - j ];
-
+
scanner->buffer[lineOffset + bpl -1 - j - 2 ] = r_data;
scanner->buffer[lineOffset + bpl -1 - j - 1] = g_data;
scanner->buffer[lineOffset + bpl -1 - j] = b_data;
@@ -2641,18 +2641,18 @@ reader_process (void *data )
else {
for (j = 0; j < bpl/2; j++) {
r_data=scanner->buffer[lineOffset + j];
- scanner->buffer[lineOffset + j] =
+ scanner->buffer[lineOffset + j] =
scanner->buffer[lineOffset + bpl - 1 - j];
scanner->buffer[lineOffset + bpl - 1 - j] = r_data;
}
}
- }
- }
- if(scanner->colormode==RGBI)
+ }
+ }
+ if(scanner->colormode==RGBI)
{ /* Correct Infrared Channel */
if(scanner->bits_per_color>8)
{
- RGBIfix16(scanner, (unsigned short * ) scanner->buffer,
+ RGBIfix16(scanner, (unsigned short * ) scanner->buffer,
(unsigned short * )scanner->obuffer,
data_to_read/8,scanner->lutr,
scanner->lutg,scanner->lutb,scanner->luti);
@@ -2672,9 +2672,9 @@ reader_process (void *data )
else
{ /* or just copy */
memcpy (scanner->obuffer, scanner->buffer,data_to_read);
- }
+ }
if((!scanner->low_byte_first)&&(scanner->bits_per_color>8))
- { for(i=0;i<data_to_write;i++) /* inverse byteorder */
+ { for(i=0;i<data_to_write;i++) /* inverse byteorder */
{ h=scanner->obuffer[i];
scanner->obuffer[i]=scanner->obuffer[i+1];
i++;
@@ -2682,7 +2682,7 @@ reader_process (void *data )
}
}
fwrite (scanner->obuffer, 1, data_to_write, fp);
- fflush (fp);
+ fflush (fp);
data_left -= data_to_read;
DBG (10, "reader_process: buffer of %d bytes read; %d bytes to go\n",
data_to_read, data_left);
@@ -2786,7 +2786,7 @@ init_options (Coolscan_t * scanner)
scanner->opt[OPT_PRESCAN_NOW].constraint.string_list = 0;
/* bit depth */
-
+
bit_depths=0;
bit_depth_list[++bit_depths] = 8;
if (scanner->LS==2)
@@ -2886,7 +2886,7 @@ init_options (Coolscan_t * scanner)
scanner->opt[OPT_GAMMA_BIND].type = SANE_TYPE_BOOL;
scanner->opt[OPT_GAMMA_BIND].unit = SANE_UNIT_NONE;
-
+
scanner->opt[OPT_ANALOG_GAMMA].name = "analog_gamma";
scanner->opt[OPT_ANALOG_GAMMA].title = "Analog Gamma";
scanner->opt[OPT_ANALOG_GAMMA].desc = "Analog Gamma";
@@ -3243,7 +3243,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG_INIT ();
sanei_thread_init ();
-
+
DBG (10, "sane_init\n");
if (version_code)
*version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, 0);
@@ -3286,7 +3286,7 @@ sane_exit (void)
free (dev->obuffer);
free (dev);
}
-
+
if (devlist)
free (devlist);
}
@@ -3468,11 +3468,11 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{ case AF_NEVER: strcpy (val,neverStr);
break;
case AF_PREVIEW:strcpy (val,previewStr);
- break;
+ break;
case AF_SCAN:if(scanner->LS>=2) strcpy (val,scanStr);
- break;
+ break;
case AF_PREANDSCAN:if(scanner->LS>=2) strcpy (val,preandscanStr);
- break;
+ break;
}
return SANE_STATUS_GOOD;
@@ -3567,13 +3567,13 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{ case RGB: strcpy (val,colorStr);
break;
case GREYSCALE:strcpy (val,grayStr);
- break;
+ break;
case RGBI:if(scanner->LS>=2) strcpy (val,rgbiStr);
else strcpy (val,colorStr);
- break;
- case IRED:if(scanner->LS>=2) strcpy (val,iredStr);
+ break;
+ case IRED:if(scanner->LS>=2) strcpy (val,iredStr);
else strcpy (val,grayStr);
- break;
+ break;
}
if (info)
{
@@ -3586,7 +3586,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*(SANE_Word *) val = (scanner->prescan) ? SANE_TRUE : SANE_FALSE;
return SANE_STATUS_GOOD;
- case OPT_PRESCAN_NOW:
+ case OPT_PRESCAN_NOW:
return SANE_STATUS_GOOD;
case OPT_RGB_CONTROL:
@@ -3598,7 +3598,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_ANALOG_GAMMA:
- *(SANE_Word *) val =
+ *(SANE_Word *) val =
(scanner->analog_gamma_r) ? SANE_TRUE : SANE_FALSE;
return SANE_STATUS_GOOD;
@@ -3692,7 +3692,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_PRESCAN_NOW:
- do_prescan_now(scanner);
+ do_prescan_now(scanner);
return SANE_STATUS_GOOD;
case OPT_BIT_DEPTH:
@@ -3811,16 +3811,16 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_AUTOFOCUS:
- if(strcmp(val,neverStr)==0)
+ if(strcmp(val,neverStr)==0)
{ scanner->autofocus=AF_NEVER;
}
- if(strcmp(val,previewStr)==0)
+ if(strcmp(val,previewStr)==0)
{ scanner->autofocus=AF_PREVIEW;
}
- if(strcmp(val,scanStr)==0)
+ if(strcmp(val,scanStr)==0)
{ scanner->autofocus=AF_SCAN;
}
- if(strcmp(val,preandscanStr)==0)
+ if(strcmp(val,preandscanStr)==0)
{ scanner->autofocus=AF_PREANDSCAN;;
}
return SANE_STATUS_GOOD;
@@ -3877,7 +3877,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_IRED_RED:
- scanner->ired_red= *(SANE_Word *) val;
+ scanner->ired_red= *(SANE_Word *) val;
return SANE_STATUS_GOOD;
case OPT_SOURCE:
@@ -3892,11 +3892,11 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
}
return SANE_STATUS_GOOD;
case OPT_MODE:
- if(strcmp(val,colorStr)==0)
+ if(strcmp(val,colorStr)==0)
{ scanner->colormode=RGB;
scanner->colormode_p=RGB;
}
- if(strcmp(val,grayStr)==0)
+ if(strcmp(val,grayStr)==0)
{ scanner->colormode=GREYSCALE;
scanner->colormode_p=GREYSCALE;
}
@@ -3904,7 +3904,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{ scanner->colormode=RGBI;
scanner->colormode_p=RGB;
}
- if(strcmp(val,iredStr)==0)
+ if(strcmp(val,iredStr)==0)
{ scanner->colormode=IRED;
scanner->colormode_p=GREYSCALE;
}
@@ -3951,8 +3951,8 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
break;
#ifdef HAS_IRED
case RGBI:
- params->format = SANE_FRAME_RGBA;
- break;
+ params->format = SANE_FRAME_RGBA;
+ break;
#endif /* HAS_RGBI */
case GREYSCALE:
params->format = SANE_FRAME_GRAY;
@@ -4039,12 +4039,12 @@ sane_start (SANE_Handle handle)
}
}
else
- {
+ {
if(scanner->autofocus & 0x01)
{ coolscan_autofocus (scanner);
}
if (scanner->prescan) {
- prescan (scanner);
+ prescan (scanner);
if(scanner->LS<2)
{ get_internal_info(scanner);
}
@@ -4155,7 +4155,7 @@ sane_cancel (SANE_Handle handle)
{
sanei_thread_kill ( s->reader_pid );
sanei_thread_waitpid( s->reader_pid, NULL );
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
}
swap_res (s);
s->scanning = SANE_FALSE;
diff --git a/backend/coolscan.h b/backend/coolscan.h
index d3e4154..4f40aa4 100644
--- a/backend/coolscan.h
+++ b/backend/coolscan.h
@@ -110,7 +110,7 @@ typedef struct Image_Pos
{ int start; /* start position of image on film strip */
int end; /* end position of image on film strip */
int offset /* always 0 */;
- int height; /* image height always 2591 */
+ int height; /* image height always 2591 */
} Image_Pos_t;
@@ -213,19 +213,19 @@ typedef struct Coolscan
int adbits; /* Number of A/D bits [8 or 12] */
int outputbits; /* Number of output image data bits [8] */
int maxres; /* Maximum resolution [2700] (dpi) */
- int xmax; /* X-axis coordinate maximum value
- (basic measurement unit when measurement
+ int xmax; /* X-axis coordinate maximum value
+ (basic measurement unit when measurement
unit divisor = 1200) [1151] */
- int ymax; /* Y-axis coordinate maximum value
- (basic measurement unit when measurement
+ int ymax; /* Y-axis coordinate maximum value
+ (basic measurement unit when measurement
unit divisor = 1200) [1727] */
- int xmaxpix; /* X-axis coordinate maximum value (pixel
+ int xmaxpix; /* X-axis coordinate maximum value (pixel
address value) [2591] */
- int ymaxpix; /* Y-axis coordinate maximum value (pixel
+ int ymaxpix; /* Y-axis coordinate maximum value (pixel
address value) [3887] */
- int ycurrent; /* Current stage position (Y-axis direction
+ int ycurrent; /* Current stage position (Y-axis direction
pixel address) [0-7652] */
- int currentfocus; /* Current focus position (focus direction
+ int currentfocus; /* Current focus position (focus direction
address) [0-200] */
int currentscanpitch; /* Current scan pitch [1-25] */
int autofeeder; /* Provision of auto feeder [Yes: 1, No: 0] */
@@ -276,7 +276,7 @@ typedef struct Coolscan
int analog_gamma_g; /* analog gamma green */
int analog_gamma_b; /* analog gamma blue */
- /* Infrared correction values */
+ /* Infrared correction values */
int ired_red;
int ired_green;
int ired_blue;
diff --git a/backend/coolscan2.c b/backend/coolscan2.c
index d54bf39..04c4d10 100644
--- a/backend/coolscan2.c
+++ b/backend/coolscan2.c
@@ -36,14 +36,14 @@
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
This file implements a SANE backend for Nikon Coolscan film scanners.
- Written by Andrs Major (andras@users.sourceforge.net), 2001-2002.
+ Written by András Major (andras@users.sourceforge.net), 2001-2002.
The developers wish to express their thanks to Nikon Corporation
for providing technical information and thus making this backend
diff --git a/backend/coolscan3.c b/backend/coolscan3.c
index 42814d1..6163ec9 100644
--- a/backend/coolscan3.c
+++ b/backend/coolscan3.c
@@ -4,7 +4,7 @@
*
* This file implements a SANE backend for Nikon Coolscan film scanners.
*
- * coolscan3.c is based on coolscan2.c, a work of Andrs Major, Ariel Garcia
+ * coolscan3.c is based on coolscan2.c, a work of András Major, Ariel Garcia
* and Giuseppe Sacco.
*
* Copyright (C) 2007-08 Tower Technologies
diff --git a/backend/dc210.c b/backend/dc210.c
index 32da710..85ffb20 100644
--- a/backend/dc210.c
+++ b/backend/dc210.c
@@ -1,7 +1,7 @@
/***************************************************************************
* SANE - Scanner Access Now Easy.
- dc210.c
+ dc210.c
11/11/98
@@ -43,17 +43,17 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
This file implements a SANE backend for the Kodak DC-210
- digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+ digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: sane-dc210@interlinx.bc.ca
This backend is based somewhat on the dc25 backend included in this
- package by Peter Fales
+ package by Peter Fales
***************************************************************************/
@@ -395,7 +395,7 @@ init_dc210 (DC210 * camera)
}
/* send a break to get it back to a known state */
- /* Used to supply a non-zero argument to tcsendbreak(), TCSBRK,
+ /* Used to supply a non-zero argument to tcsendbreak(), TCSBRK,
* and TCSBRKP, but that is system dependent. e.g. on irix a non-zero
* value does a drain instead of a break. A zero value is universally
* used to send a break.
@@ -423,8 +423,8 @@ init_dc210 (DC210 * camera)
if (send_pck (camera->fd, init_pck) == -1)
{
/*
- * The camera always powers up at 9600, so we try
- * that first. However, it may be already set to
+ * The camera always powers up at 9600, so we try
+ * that first. However, it may be already set to
* a different speed. Try the entries in the table:
*/
@@ -455,7 +455,7 @@ init_dc210 (DC210 * camera)
}
}
/*
- Set speed to requested speed.
+ Set speed to requested speed.
*/
cfsetospeed (&tty_new, Camera.baud);
cfsetispeed (&tty_new, Camera.baud);
@@ -954,7 +954,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (dc210_opt_thumbnails)
{
- /*
+ /*
* DC210 thumbnail are 96x72x8x3
*/
parms.bytes_per_line = 96 * 3;
@@ -1190,7 +1190,7 @@ sane_start (SANE_Handle handle)
{
/*
- * Don't allow picture unless there is room in the
+ * Don't allow picture unless there is room in the
* camera.
*/
if (Camera.pic_left == 0)
diff --git a/backend/dc210.conf.in b/backend/dc210.conf.in
index 9281043..8293170 100644
--- a/backend/dc210.conf.in
+++ b/backend/dc210.conf.in
@@ -18,7 +18,7 @@ port=/dev/ttyS0
## This works for most UNIX's
baud=38400
# Prints some extra information during the init phase. This can be
-# handy, but note that printing anything to stderr breaks the saned
+# handy, but note that printing anything to stderr breaks the saned
# network scanning.
#dumpinquiry
# How many usec (1,000,000ths of a) between writing the command and reading the
diff --git a/backend/dc210.h b/backend/dc210.h
index fe2b633..2cbbf46 100644
--- a/backend/dc210.h
+++ b/backend/dc210.h
@@ -1,7 +1,7 @@
/***************************************************************************
* SANE - Scanner Access Now Easy.
- dc210.c
+ dc210.c
11/11/98
@@ -43,17 +43,17 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
This file implements a SANE backend for the Kodak DC-210
- digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+ digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: sane-dc210@interlinx.bc.ca
This backend is based somewhat on the dc25 backend included in this
- package by Peter Fales
+ package by Peter Fales
***************************************************************************/
diff --git a/backend/dc240.c b/backend/dc240.c
index 74ab2e0..0a53405 100644
--- a/backend/dc240.c
+++ b/backend/dc240.c
@@ -1,13 +1,13 @@
/***************************************************************************
* _S_A_N_E - Scanner Access Now Easy.
- dc240.c
+ dc240.c
03/12/01 - Peter Fales
Based on the dc210 driver, (C) 1998 Brian J. Murrell (which is
based on dc25 driver (C) 1998 by Peter Fales)
-
+
This file (C) 2001 by Peter Fales
This file is part of the SANE package.
@@ -46,12 +46,12 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
This file implements a SANE backend for the Kodak DC-240
- digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+ digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: dc240-devel@fales-lorenz.net)
@@ -440,7 +440,7 @@ init_dc240 (DC240 * camera)
}
/* send a break to get it back to a known state */
- /* Used to supply a non-zero argument to tcsendbreak(), TCSBRK,
+ /* Used to supply a non-zero argument to tcsendbreak(), TCSBRK,
* and TCSBRKP, but that is system dependent. e.g. on irix a non-zero
* value does a drain instead of a break. A zero value is universally
* used to send a break.
@@ -465,7 +465,7 @@ init_dc240 (DC240 * camera)
sleep (1);
#endif
- /* We seem to get some garbage following the break, so
+ /* We seem to get some garbage following the break, so
* read anything pending */
n = read (camera->fd, buf, 5);
@@ -476,8 +476,8 @@ init_dc240 (DC240 * camera)
if (send_pck (camera->fd, init_pck) == -1)
{
/*
- * The camera always powers up at 9600, so we try
- * that first. However, it may be already set to
+ * The camera always powers up at 9600, so we try
+ * that first. However, it may be already set to
* a different speed. Try the entries in the table:
*/
@@ -491,7 +491,7 @@ init_dc240 (DC240 * camera)
buf[1], buf[2], buf[3], buf[4]);
/*
- Set speed to requested speed.
+ Set speed to requested speed.
*/
cfsetospeed (&tty_new, Camera.baud);
cfsetispeed (&tty_new, Camera.baud);
@@ -597,7 +597,7 @@ get_info (DC240 * camera)
n = read_dir ("\\PCCARD\\DCIM\\*.*");
/* If we've already got a folder_list, free it up before starting
- * the new one
+ * the new one
*/
if (folder_list != NULL)
{
@@ -1083,8 +1083,8 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
myinfo |= SANE_INFO_RELOAD_PARAMS;
- /* get the image's resolution, unless the camera has no
- * pictures yet
+ /* get the image's resolution, unless the camera has no
+ * pictures yet
*/
if (Camera.pic_taken != 0)
{
@@ -1367,7 +1367,7 @@ sane_start (SANE_Handle handle)
if (dc240_opt_snap)
{
/*
- * Don't allow picture unless there is room in the
+ * Don't allow picture unless there is room in the
* camera.
*/
if (Camera.pic_left == 0)
@@ -1719,7 +1719,7 @@ get_picture_info (PictureInfo * pic, SANE_Int p)
read_info (e->name);
- /* Validate picture info
+ /* Validate picture info
* byte 0 - 1 == picture info
* byte 1 - 5 == DC240 Camera
* byte 2 - 3 == JFIF file
@@ -1736,7 +1736,7 @@ get_picture_info (PictureInfo * pic, SANE_Int p)
pic->low_res = info_buf[3] == 0 ? SANE_TRUE : SANE_FALSE;
- /*
+ /*
* byte 12 - Year MSB
* byte 13 - Year LSB
* byte 14 - Month
@@ -1991,8 +1991,8 @@ read_info (SANE_String fname)
/*
- * send_data - Send a data block - assumes all data blocks to camera
- * are 60 bytes long
+ * send_data - Send a data block - assumes all data blocks to camera
+ * are 60 bytes long
*/
static SANE_Int
@@ -2090,7 +2090,7 @@ dir_insert (struct cam_dirent *entry)
}
/*
- * dir_delete - Delete a directory entry from the linked list of file
+ * dir_delete - Delete a directory entry from the linked list of file
* names
*/
static SANE_Int
@@ -2123,7 +2123,7 @@ dir_delete (SANE_String fname)
}
/*
- * set_res - set picture size depending on resolution settings
+ * set_res - set picture size depending on resolution settings
*/
static void
set_res (SANE_Int lowres)
diff --git a/backend/dc240.conf.in b/backend/dc240.conf.in
index 9281043..8293170 100644
--- a/backend/dc240.conf.in
+++ b/backend/dc240.conf.in
@@ -18,7 +18,7 @@ port=/dev/ttyS0
## This works for most UNIX's
baud=38400
# Prints some extra information during the init phase. This can be
-# handy, but note that printing anything to stderr breaks the saned
+# handy, but note that printing anything to stderr breaks the saned
# network scanning.
#dumpinquiry
# How many usec (1,000,000ths of a) between writing the command and reading the
diff --git a/backend/dc240.h b/backend/dc240.h
index fae3628..27e2ee9 100644
--- a/backend/dc240.h
+++ b/backend/dc240.h
@@ -46,12 +46,12 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
This file implements a SANE backend for the Kodak DC-240
- digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+ digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: dc240-devel@fales-lorenz.net)
@@ -143,16 +143,16 @@ static SANE_Int get_info (DC240 *);
* Resolution: 0x00 = low, 0x01 = high
*/
#define THUMBS_PCK {0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x1A}
-/*
- *
+/*
+ *
*/
#define PICS_PCK {0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A}
-/*
- *
+/*
+ *
*/
#define PICS_INFO_PCK {0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A}
-/*
- *
+/*
+ *
*/
#define OPEN_CARD_PCK {0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A}
#define READ_DIR_PCK {0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A}
diff --git a/backend/dc25.c b/backend/dc25.c
index fd7a0db..3bb81f5 100644
--- a/backend/dc25.c
+++ b/backend/dc25.c
@@ -1,7 +1,7 @@
/***************************************************************************
* SANE - Scanner Access Now Easy.
- dc25.c
+ dc25.c
$Id$
@@ -43,13 +43,13 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
- This file implements a SANE backend for the Kodak DC-25 (and
+ This file implements a SANE backend for the Kodak DC-25 (and
probably the DC-20) digital cameras. THIS IS EXTREMELY ALPHA CODE!
- USE AT YOUR OWN RISK!!
+ USE AT YOUR OWN RISK!!
(feedback to: dc25-devel@fales-lorenz.net)
@@ -73,7 +73,7 @@
* conversion routine written by YOSHIDA Hideki <hideki@yk.rim.or.jp>
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
+ * it under the terms of the GNU General Public License as published
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
@@ -148,12 +148,6 @@ static SANE_Byte contrast_table[256];
static struct pixmap *pp;
-static const SANE_Range percentage_range = {
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 0 << SANE_FIXED_SCALE_SHIFT /* quantization */
-};
-
static const SANE_Range contrast_range = {
0 << SANE_FIXED_SCALE_SHIFT, /* minimum */
3 << SANE_FIXED_SCALE_SHIFT, /* maximum */
@@ -352,9 +346,9 @@ static SANE_Parameters parms = {
static unsigned char init_pck[] = INIT_PCK;
/*
- * List of speeds to try to establish connection with the camera.
+ * List of speeds to try to establish connection with the camera.
* Check 9600 first, as it's the speed the camera comes up in, then
- * 115200, as that is the one most likely to be configured from a
+ * 115200, as that is the one most likely to be configured from a
* previous run
*/
static struct pkt_speed speeds[] = { {B9600, {0x96, 0x00}},
@@ -468,8 +462,8 @@ init_dc20 (char *device, speed_t speed)
if (send_pck (tfd, init_pck) == -1)
{
/*
- * The camera always powers up at 9600, so we try
- * that first. However, it may be already set to
+ * The camera always powers up at 9600, so we try
+ * that first. However, it may be already set to
* a different speed. Try the entries in the table:
*/
@@ -594,7 +588,7 @@ get_info (int fd)
{
/* Not sure where the previous line came from. All the
* information I have says that even on the DC20 the number of
- * standard res pics left is in byte 23 and the number of high res
+ * standard res pics left is in byte 23 and the number of high res
* pics left is in byte 21. It seems to me that the conservative
* approach is to report the number of high res pics left.
*/
@@ -1114,7 +1108,7 @@ if (verbose) printf ("%s: determine_limits: low_i = %d, high_i = %d\n", __progna
/*
* The original dc20ctrl program used a default gamma of 0.35, but I thougt
- * 0.45 looks better. In addition, since xscanimage seems to always force
+ * 0.45 looks better. In addition, since xscanimage seems to always force
* a resolution of 0.1, I multiply everything by 10 and make the default
* 4.5.
*/
@@ -1689,8 +1683,8 @@ shoot (int fd)
cfsetispeed (&tty_temp, B9600);
cfsetospeed (&tty_temp, B9600);
- /*
- * Apparently there is a bug in the DC20 where the response to
+ /*
+ * Apparently there is a bug in the DC20 where the response to
* the shoot request is always at 9600. The DC25 does not have
* this bug, so we skip this block.
*/
@@ -1728,7 +1722,7 @@ shoot (int fd)
{
if (CameraInfo.model == 0x25)
{
- /*
+ /*
* If we don't put this in, the next read will time out
* and return failure. Does the DC-20 need it too?
*/
@@ -1771,7 +1765,7 @@ erase (int fd)
* This block may really apply to the DC20 also, but since I
* don't have one, it's hard to say for sure. On the DC25, erase
* takes long enought that the read may timeout without returning
- * any data before the erase is complete. We let this happen
+ * any data before the erase is complete. We let this happen
* up to 4 times, then give up.
*/
while (count < 4)
@@ -2121,7 +2115,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (dc25_opt_thumbnails)
{
- /*
+ /*
* DC20 thumbnail are 80x60 grayscale, DC25
* thumbnails are color.
*/
@@ -2200,7 +2194,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
/*
* erase and erase_one are mutually exclusive. If
- * this one is turned on, the other must be off
+ * this one is turned on, the other must be off
*/
if (dc25_opt_erase && dc25_opt_erase_one)
{
@@ -2214,7 +2208,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
/*
* erase and erase_one are mutually exclusive. If
- * this one is turned on, the other must be off
+ * this one is turned on, the other must be off
*/
if (dc25_opt_erase_one && dc25_opt_erase)
{
@@ -2350,7 +2344,7 @@ sane_start (SANE_Handle handle)
{
/*
- * Don't allow picture unless there is room in the
+ * Don't allow picture unless there is room in the
* camera.
*/
if (CameraInfo.pic_left == 0)
@@ -2359,7 +2353,7 @@ sane_start (SANE_Handle handle)
return SANE_STATUS_INVAL;
}
- /*
+ /*
* DC-20 can only change resolution when camer is empty.
* DC-25 can do it any time.
*/
@@ -2403,7 +2397,7 @@ sane_start (SANE_Handle handle)
/*
* For thumbnails, we can do things right where we
- * start the download, and grab the first block
+ * start the download, and grab the first block
* from the camera. The reamining blocks will be
* fetched as necessary by sane_read().
*/
@@ -2421,7 +2415,7 @@ sane_start (SANE_Handle handle)
return SANE_STATUS_INVAL;
}
- /*
+ /*
* DC20 thumbnail are 80x60 grayscale, DC25
* thumbnails are color.
*/
@@ -2439,10 +2433,10 @@ sane_start (SANE_Handle handle)
{
/*
* We do something a little messy, and violates the SANE
- * philosophy. However, since it is fairly tricky to
+ * philosophy. However, since it is fairly tricky to
* convert the DC2x "comet" files on the fly, we read in
* the entire data stream in sane_open(), and use convert_pic
- * to convert it to an in-memory pixpmap. Then when
+ * to convert it to an in-memory pixpmap. Then when
* sane_read() is called, we fill the requests from
* memory. A good project for me (or some kind volunteer)
* would be to rewrite this and move the actual download
@@ -2450,7 +2444,7 @@ sane_start (SANE_Handle handle)
* this way is that the data comes down pretty fast, and
* it helps to dedicate the processor to this task. We
* might get serial port overruns if we try to do other
- * things at the same time.
+ * things at the same time.
*
* Also, as a side note, I was constantly getting serial
* port overruns on a 90MHz pentium until I used hdparm
@@ -2634,7 +2628,7 @@ sane_read (SANE_Handle __sane_unused__ handle, SANE_Byte * data,
int i;
int filesize = parms.bytes_per_line * parms.lines;
- /*
+ /*
* If outbytes is zero, then this is the first time
* we've been called, so update the contrast table.
* The formula is something I came up with that has the
@@ -2642,10 +2636,10 @@ sane_read (SANE_Handle __sane_unused__ handle, SANE_Byte * data,
* 1) It's a smooth curve that provides the effect I wanted
* (bright pixels are made brighter, dim pixels are made
* dimmer)
- * 2) The contrast parameter can be adjusted to provide
+ * 2) The contrast parameter can be adjusted to provide
* different amounts of contrast.
* 3) A parameter of 1.0 can be used to pass the data
- * through unchanged (but values around 1.75 look
+ * through unchanged (but values around 1.75 look
* a lot better
*/
if (outbytes == 0)
diff --git a/backend/dc25.conf.in b/backend/dc25.conf.in
index 33cfd89..af2cfb1 100644
--- a/backend/dc25.conf.in
+++ b/backend/dc25.conf.in
@@ -18,6 +18,6 @@ port=/dev/ttyS0
## This works for most UNIX's
baud=38400
# Prints some extra information during the init phase. This can be
-# handy, but note that printing anything to stderr breaks the saned
+# handy, but note that printing anything to stderr breaks the saned
# network scanning.
#dumpinquiry
diff --git a/backend/dc25.h b/backend/dc25.h
index fe12f74..b323835 100644
--- a/backend/dc25.h
+++ b/backend/dc25.h
@@ -43,13 +43,13 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
- This file implements a SANE backend for the Kodak DC-25 (and
+ This file implements a SANE backend for the Kodak DC-25 (and
probably the DC-20) digital cameras. THIS IS EXTREMELY ALPHA CODE!
- USE AT YOUR OWN RISK!!
+ USE AT YOUR OWN RISK!!
(feedback to: dc25-devel@fales-lorenz.net)
@@ -73,7 +73,7 @@
* conversion routine written by YOSHIDA Hideki <hideki@yk.rim.or.jp>
*
* This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
+ * it under the terms of the GNU General Public License as published
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
@@ -97,7 +97,7 @@
#include <string.h>
#ifndef TRUE
-#define TRUE (1==1)
+#define TRUE (1==1)
#endif
#ifndef FALSE
@@ -255,7 +255,7 @@ static int read_data (int fd, unsigned char *buf, int sz);
static int end_of_data (int fd);
-static int set_pixel_rgb (struct pixmap *, int, int, unsigned char, unsigned char, unsigned char);
+static int set_pixel_rgb (struct pixmap *, int, int, unsigned char, unsigned char, unsigned char);
static struct pixmap *alloc_pixmap (int x, int y, int d);
@@ -266,5 +266,3 @@ static int zoom_x (struct pixmap *source, struct pixmap *dest);
static int zoom_y (struct pixmap *source, struct pixmap *dest);
static int comet_to_pixmap (unsigned char *, struct pixmap *);
-
-
diff --git a/backend/dell1600n_net.c b/backend/dell1600n_net.c
index 3586215..c8717d4 100644
--- a/backend/dell1600n_net.c
+++ b/backend/dell1600n_net.c
@@ -1,47 +1,47 @@
/*
sane - Scanner Access Now Easy.
Copyright (C) 2006 Jon Chambers <jon@jon.demon.co.uk>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
-
+
Dell 1600n network scan driver for SANE.
-
+
To debug:
SANE_DEBUG_DELL1600N_NET=255 scanimage --verbose 2>scan.errs 1>scan.png
*/
@@ -136,8 +136,8 @@ struct ScannerState
unsigned int m_currentPageBytes;/* number of bytes of current page read (host byte order) */
};
-/* state data for a single page
- NOTE: all ints are in host byte order
+/* state data for a single page
+ NOTE: all ints are in host byte order
*/
struct PageInfo
{
@@ -199,7 +199,7 @@ static void FinalisePacket (struct ComBuf *pBuf);
static int MessageIsComplete (unsigned char *pData, size_t size);
/* process a registration broadcast response
- \return DeviceRecord pointer on success (caller frees), NULL on failure
+ \return DeviceRecord pointer on success (caller frees), NULL on failure
*/
static struct DeviceRecord *ProcessFindResponse (unsigned char *pData, size_t size);
@@ -400,7 +400,7 @@ sane_get_devices (const SANE_Device *** device_list,
remoteAddr.sin_addr.s_addr = 0xFFFFFFFF; /* broadcast */
if (sendto (sock, queryPacket.m_pBuf, queryPacket.m_used, 0,
- &remoteAddr, sizeof (remoteAddr)) == -1)
+ (struct sockaddr *) &remoteAddr, sizeof (remoteAddr)) == -1)
{
DBG (1, "Error sending broadcast packet\n");
ret = SANE_STATUS_NO_MEM;
@@ -638,7 +638,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
height = pageInfo.m_height;
imageSize = width * height * 3;
- DBG( 5, "sane_get_parameters: bytes remaining on this page: %d, num pages: %d, size: %dx%d\n",
+ DBG( 5, "sane_get_parameters: bytes remaining on this page: %d, num pages: %d, size: %dx%d\n",
pageInfo.m_bytesRemaining,
gOpenScanners[iHandle]->m_numPages,
width,
@@ -705,7 +705,7 @@ sane_start (SANE_Handle handle)
/* determine local IP address */
addrSize = sizeof (myAddr);
- if (getsockname (gOpenScanners[iHandle]->m_udpFd, &myAddr, &addrSize))
+ if (getsockname (gOpenScanners[iHandle]->m_udpFd, (struct sockaddr *) &myAddr, &addrSize))
{
DBG (1, "sane_start: Error getting own IP address\n");
return SANE_STATUS_IO_ERROR;
@@ -781,7 +781,7 @@ sane_start (SANE_Handle handle)
cleanup:
FreeComBuf (&buf);
-
+
return status;
} /* sane_start */
@@ -805,7 +805,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
return SANE_STATUS_INVAL;
/* check for end of data (no further pages) */
- if ( ( ! gOpenScanners[iHandle]->m_imageData.m_used )
+ if ( ( ! gOpenScanners[iHandle]->m_imageData.m_used )
|| ( ! gOpenScanners[iHandle]->m_numPages ) )
{
/* remove empty page if there are no more cached pages */
@@ -845,7 +845,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
DBG (5,
"sane_read: sending %d bytes, image total %d, %d page bytes remaining, %lu total remaining, image: %dx%d\n",
dataSize, gOpenScanners[iHandle]->m_bytesRead, pageInfo.m_bytesRemaining ,
- (unsigned long)(gOpenScanners[iHandle]->m_imageData.m_used - dataSize),
+ (unsigned long)(gOpenScanners[iHandle]->m_imageData.m_used - dataSize),
pageInfo.m_width,
pageInfo.m_height);
@@ -1037,7 +1037,7 @@ FreeComBuf (struct ComBuf *pBuf)
/* add data to a ComBuf struct
\return 0 on success, >0 on failure
\note If pData is NULL then buffer size will be increased but no copying will take place
- \note In case of failure pBuf will be released using FreeComBuf
+ \note In case of failure pBuf will be released using FreeComBuf
*/
int
AppendToComBuf (struct ComBuf *pBuf, const unsigned char *pData,
@@ -1178,7 +1178,7 @@ MessageIsComplete (unsigned char *pData, size_t size)
/***********************************************************/
/* process a registration broadcast response
- \return struct DeviceRecord pointer on success (caller frees), NULL on failure
+ \return struct DeviceRecord pointer on success (caller frees), NULL on failure
*/
struct DeviceRecord *
ProcessFindResponse (unsigned char *pData, size_t size)
@@ -1730,7 +1730,7 @@ ProcessTcpResponse (struct ScannerState *pState, struct ComBuf *pTcpBuf)
} /* if */
} /* while */
- /* process page data if required */
+ /* process page data if required */
if ( bProcessImage ) errorCheck |= ProcessPageData (pState);
cleanup:
@@ -1824,10 +1824,10 @@ ProcessPageData (struct ScannerState *pState)
jpegCinfo.m_cinfo.src = &jpegSrcMgr;
jpegCinfo.m_bytesRemaining = pState->m_buf.m_used;
jpegCinfo.m_pData = pState->m_buf.m_pBuf;
-
+
jpeg_read_header (&jpegCinfo.m_cinfo, TRUE);
jpeg_start_decompress (&jpegCinfo.m_cinfo);
-
+
/* allocate space for a single scanline */
scanLineSize = jpegCinfo.m_cinfo.output_width
* jpegCinfo.m_cinfo.output_components;
diff --git a/backend/dell1600n_net.conf.in b/backend/dell1600n_net.conf.in
index 35d4eae..615549b 100644
--- a/backend/dell1600n_net.conf.in
+++ b/backend/dell1600n_net.conf.in
@@ -10,5 +10,3 @@
#named_scanner: printer
#named_scanner: 192.168.0.20
#named_scanner: myscanner.somewhere.else.org
-
-
diff --git a/backend/dll.c b/backend/dll.c
index 5eaa046..8f0983d 100644
--- a/backend/dll.c
+++ b/backend/dll.c
@@ -42,7 +42,7 @@
allows managing an arbitrary number of SANE backends by using
dynamic linking to load backends on demand. */
-/* Please increase version number with every change
+/* Please increase version number with every change
(don't forget to update dll.desc) */
#define DLL_VERSION "1.0.13"
@@ -353,7 +353,7 @@ load (struct backend *be)
image_id id = -1;
int i, w;
directory_which which[3] = { B_USER_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, B_BEOS_ADDONS_DIRECTORY };
-
+
/* look for config files in SANE/conf */
for (w = 0; (w < 3) && (id < 0) && (find_directory(which[w],0,true,path,PATH_MAX) == 0); w++)
{
@@ -373,7 +373,7 @@ load (struct backend *be)
continue; /* try next path */
}
be->handle=(void *)id;
-
+
for (i = 0; i < NUM_OPS; ++i)
{
void *(*op) ();
@@ -492,7 +492,7 @@ load (struct backend *be)
break;
DBG (4, "load: couldn't open `%s' (%s)\n", libname, strerror (errno));
-#ifdef ALT_POSTFIX
+#ifdef ALT_POSTFIX
/* Some platforms have two ways of storing their libraries, try both
postfixes */
snprintf (libname, sizeof (libname), "%s/" PREFIX "%s" ALT_POSTFIX,
@@ -882,7 +882,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char path[1024];
directory_which which[3] = { B_USER_ADDONS_DIRECTORY, B_COMMON_ADDONS_DIRECTORY, B_BEOS_ADDONS_DIRECTORY };
int i;
-#endif
+#endif
DBG_INIT ();
@@ -934,7 +934,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
}
fclose (fp);
-#else
+#else
/* no ugly config files, just get scanners from their ~/config/add-ons/SANE */
/* look for drivers */
for (i = 0; i < 3; i++)
@@ -943,13 +943,13 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
continue;
strcat(path,"/SANE/");
dir=opendir(path);
- if(!dir) continue;
+ if(!dir) continue;
while((dirent=readdir(dir)))
{
if((strcmp(dirent->d_name,".")==0) || (strcmp(dirent->d_name,"..")==0)) continue;
if((strcmp(dirent->d_name,"dll")==0)) continue;
- add_backend(dirent->d_name,0);
+ add_backend(dirent->d_name,0);
}
closedir(dir);
}
@@ -1155,7 +1155,8 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
SANE_Status
sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
{
- const char *be_name, *dev_name;
+ char *be_name;
+ const char *dev_name;
struct meta_scanner *s;
SANE_Handle handle;
struct backend *be;
@@ -1178,16 +1179,7 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
dev_name = strchr (full_name, ':');
if (dev_name)
{
-#ifdef strndupa
- be_name = strndupa (full_name, dev_name - full_name);
-#else
- char *tmp;
-
- tmp = alloca (dev_name - full_name + 1);
- memcpy (tmp, full_name, dev_name - full_name);
- tmp[dev_name - full_name] = '\0';
- be_name = tmp;
-#endif
+ be_name = strndup(full_name, dev_name - full_name);
++dev_name; /* skip colon */
}
else
@@ -1195,10 +1187,13 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
/* if no colon interpret full_name as the backend name; an empty
backend device name will cause us to open the first device of
that backend. */
- be_name = full_name;
+ be_name = strdup(full_name);
dev_name = "";
}
+ if (!be_name)
+ return SANE_STATUS_NO_MEM;
+
if (!be_name[0])
be = first_backend;
else
@@ -1210,8 +1205,12 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
{
status = add_backend (be_name, &be);
if (status != SANE_STATUS_GOOD)
- return status;
+ {
+ free(be_name);
+ return status;
+ }
}
+ free(be_name);
if (!be->inited)
{
diff --git a/backend/dll.conf.in b/backend/dll.conf.in
index 3ee5428..8d459ab 100644
--- a/backend/dll.conf.in
+++ b/backend/dll.conf.in
@@ -73,6 +73,7 @@ plustek
#pnm
qcam
ricoh
+ricoh2
rts8891
s9036
sceptre
diff --git a/backend/dmc.c b/backend/dmc.c
index c5c57c4..ddc76c3 100644
--- a/backend/dmc.c
+++ b/backend/dmc.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 1998 David F. Skoll
- Heavily based on "hp.c" driver for HP Scanners, by
+ Heavily based on "hp.c" driver for HP Scanners, by
David Mosberger-Tang.
This file is part of the SANE package.
@@ -425,7 +425,7 @@ DMCInitOptions(DMC_Camera *c)
c->opt[OPT_TL_X].constraint_type = SANE_CONSTRAINT_RANGE;
c->opt[OPT_TL_X].constraint.range = &c->tl_x_range;
c->val[OPT_TL_X].w = c->tl_x_range.min;
-
+
/* top-left y */
c->opt[OPT_TL_Y].name = SANE_NAME_SCAN_TL_Y;
c->opt[OPT_TL_Y].title = SANE_TITLE_SCAN_TL_Y;
@@ -435,7 +435,7 @@ DMCInitOptions(DMC_Camera *c)
c->opt[OPT_TL_Y].constraint_type = SANE_CONSTRAINT_RANGE;
c->opt[OPT_TL_Y].constraint.range = &c->tl_y_range;
c->val[OPT_TL_Y].w = c->tl_y_range.min;
-
+
/* bottom-right x */
c->opt[OPT_BR_X].name = SANE_NAME_SCAN_BR_X;
c->opt[OPT_BR_X].title = SANE_TITLE_SCAN_BR_X;
@@ -445,7 +445,7 @@ DMCInitOptions(DMC_Camera *c)
c->opt[OPT_BR_X].constraint_type = SANE_CONSTRAINT_RANGE;
c->opt[OPT_BR_X].constraint.range = &c->br_x_range;
c->val[OPT_BR_X].w = c->br_x_range.min;
-
+
/* bottom-right y */
c->opt[OPT_BR_Y].name = SANE_NAME_SCAN_BR_Y;
c->opt[OPT_BR_Y].title = SANE_TITLE_SCAN_BR_Y;
@@ -485,7 +485,7 @@ DMCInitOptions(DMC_Camera *c)
c->opt[OPT_SHUTTER_SPEED].constraint_type = SANE_CONSTRAINT_RANGE;
c->opt[OPT_SHUTTER_SPEED].constraint.range = &c->hw->shutterSpeedRange;
c->val[OPT_SHUTTER_SPEED].w = c->hw->shutterSpeed;
-
+
c->opt[OPT_WHITE_BALANCE].name = "whitebalance";
c->opt[OPT_WHITE_BALANCE].title = "White Balance";
c->opt[OPT_WHITE_BALANCE].desc = "Selects white balance";
@@ -618,7 +618,7 @@ DMCSetASA(int fd, unsigned int asa)
if (i > ASA_100+1) return SANE_STATUS_INVAL;
- status = DMCRead(fd, 0x87, 0x4, exposureCalculationResults,
+ status = DMCRead(fd, 0x87, 0x4, exposureCalculationResults,
sizeof(exposureCalculationResults), &len);
if (status != SANE_STATUS_GOOD) return status;
if (len < sizeof(exposureCalculationResults)) return SANE_STATUS_IO_ERROR;
@@ -647,7 +647,7 @@ DMCSetWhiteBalance(int fd, int mode)
size_t len;
DBG(3, "DMCSetWhiteBalance: %d\n", mode);
- status = DMCRead(fd, 0x82, 0x0, userInterfaceSettings,
+ status = DMCRead(fd, 0x82, 0x0, userInterfaceSettings,
sizeof(userInterfaceSettings), &len);
if (status != SANE_STATUS_GOOD) return status;
if (len < sizeof(userInterfaceSettings)) return SANE_STATUS_IO_ERROR;
@@ -749,7 +749,7 @@ DMCReadTwoSuperResolutionLines(DMC_Camera *c, SANE_Byte *buf, int lastLine)
greenCoeff = ADVANCE_COEFF(greenCoeff);
blueCoeff = ADVANCE_COEFF(blueCoeff);
}
-
+
/* Do the next super-resolution line and interpolate vertically */
if (lastLine) {
memcpy(buf+BYTES_PER_RAW_LINE*3, buf, BYTES_PER_RAW_LINE*3);
@@ -868,7 +868,7 @@ sane_exit(void)
free(dev);
dev = next;
}
-
+
if (devlist)
free (devlist);
}
@@ -1103,7 +1103,7 @@ sane_control_option(SANE_Handle handle, SANE_Int option,
if (c->val[OPT_SHUTTER_SPEED].w != * (SANE_Int *) val) {
if (info) *info |= SANE_INFO_INEXACT;
}
-
+
return SANE_STATUS_GOOD;
default:
@@ -1328,7 +1328,7 @@ sane_read(SANE_Handle handle, SANE_Byte *buf, SANE_Int max_len, SANE_Int *len)
*len = max_len;
return SANE_STATUS_GOOD;
}
-
+
if (c->imageMode == IMAGE_MFI || c->imageMode == IMAGE_RAW) {
/* We have to read complete rows... */
max_len = (max_len / c->params.bytes_per_line) * c->params.bytes_per_line;
diff --git a/backend/epjitsu-cmd.h b/backend/epjitsu-cmd.h
index 40a5c1a..b71c7b0 100644
--- a/backend/epjitsu-cmd.h
+++ b/backend/epjitsu-cmd.h
@@ -720,4 +720,3 @@ static unsigned char setWindowScan_S1100_600_U[] = {
0x00, 0x80, 0x80, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
-
diff --git a/backend/epjitsu.c b/backend/epjitsu.c
index ce79a20..bee4310 100644
--- a/backend/epjitsu.c
+++ b/backend/epjitsu.c
@@ -1,7 +1,7 @@
/* sane - Scanner Access Now Easy.
This file implements a SANE backend for the Fujitsu fi-60F, the
- ScanSnap S300/S1300, and (hopefully) other Epson-based scanners.
+ ScanSnap S300/S1300, and (hopefully) other Epson-based scanners.
Copyright 2007-2015 by m. allan noah <kitno455 at gmail dot com>
Copyright 2009 by Richard Goedeken <richard at fascinationsoftware dot com>
@@ -174,7 +174,7 @@
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times; after sane_read returns EOF,
+ . . (sane_read called multiple times; after sane_read returns EOF,
. . loop may continue with sane_start which may return a 2nd page
. . when doing duplex scans, or load the next page from the ADF)
. .
@@ -218,7 +218,7 @@ unsigned char global_firmware_filename[PATH_MAX];
- function trace 10
- function detail 15
- get/setopt cmds 20
- - usb cmd trace 25
+ - usb cmd trace 25
- usb cmd detail 30
- useless noise 35
*/
@@ -253,7 +253,7 @@ static struct scanner *scanner_devList = NULL;
/*
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -271,21 +271,21 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG_INIT ();
DBG (10, "sane_init: start\n");
-
+
if (version_code)
*version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, BUILD);
-
+
DBG (5, "sane_init: epjitsu backend %d.%d.%d, from %s\n",
SANE_CURRENT_MAJOR, V_MINOR, BUILD, PACKAGE_STRING);
DBG (10, "sane_init: finish\n");
-
+
return SANE_STATUS_GOOD;
}
/*
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -298,7 +298,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -318,36 +318,36 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
FILE *fp;
int num_devices=0;
int i=0;
-
+
local_only = local_only; /* get rid of compiler warning */
-
+
DBG (10, "sane_get_devices: start\n");
-
+
/* mark all existing scanners as missing, attach_one will remove mark */
for (s = scanner_devList; s; s = s->next) {
s->missing = 1;
}
sanei_usb_init();
-
+
fp = sanei_config_open (CONFIG_FILE);
-
+
if (fp) {
-
+
DBG (15, "sane_get_devices: reading config file %s\n", CONFIG_FILE);
-
+
while (sanei_config_read (line, PATH_MAX, fp)) {
-
+
lp = line;
/* ignore comments */
if (*lp == '#')
continue;
-
+
/* skip empty lines */
if (*lp == 0)
continue;
-
+
if ((strncmp ("firmware", lp, 8) == 0) && isspace (lp[8])) {
lp += 8;
lp = sanei_config_skip_whitespace (lp);
@@ -364,7 +364,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
}
fclose (fp);
}
-
+
else {
DBG (5, "sane_get_devices: no config file '%s'!\n",
CONFIG_FILE);
@@ -374,7 +374,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
for (s = scanner_devList; s;) {
if(s->missing){
DBG (5, "sane_get_devices: missing scanner %s\n",s->sane.name);
-
+
/*splice s out of list by changing pointer in prev to next*/
if(prev){
prev->next = s->next;
@@ -387,7 +387,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
s = s->next;
free(prev);
prev=NULL;
-
+
/*reset head to next s*/
scanner_devList = s;
}
@@ -397,21 +397,21 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
s=prev->next;
}
}
-
+
for (s = scanner_devList; s; s=s->next) {
DBG (15, "sane_get_devices: found scanner %s\n",s->sane.name);
num_devices++;
}
-
+
DBG (15, "sane_get_devices: found %d scanner(s)\n",num_devices);
if (sane_devArray)
free (sane_devArray);
-
+
sane_devArray = calloc (num_devices + 1, sizeof (SANE_Device*));
if (!sane_devArray)
return SANE_STATUS_NO_MEM;
-
+
for (s = scanner_devList; s; s=s->next) {
sane_devArray[i++] = (SANE_Device *)&s->sane;
}
@@ -420,24 +420,24 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
if(device_list){
*device_list = sane_devArray;
}
-
+
DBG (10, "sane_get_devices: finish\n");
-
+
return ret;
}
/* callback used by sane_init
- * build the scanner struct and link to global list
- * unless struct is already loaded, then pretend
+ * build the scanner struct and link to global list
+ * unless struct is already loaded, then pretend
*/
static SANE_Status
attach_one (const char *name)
{
struct scanner *s;
int ret, i;
-
+
DBG (10, "attach_one: start '%s'\n", name);
-
+
for (s = scanner_devList; s; s = s->next) {
if (strcmp (s->sane.name, name) == 0) {
DBG (10, "attach_one: already attached!\n");
@@ -445,30 +445,30 @@ attach_one (const char *name)
return SANE_STATUS_GOOD;
}
}
-
+
/* build a scanner struct to hold it */
DBG (15, "attach_one: init struct\n");
-
+
if ((s = calloc (sizeof (*s), 1)) == NULL)
return SANE_STATUS_NO_MEM;
-
+
/* copy the device name */
s->sane.name = strdup (name);
if (!s->sane.name){
destroy(s);
return SANE_STATUS_NO_MEM;
}
-
+
/* connect the fd */
DBG (15, "attach_one: connect fd\n");
-
+
s->fd = -1;
ret = connect_fd(s);
if(ret != SANE_STATUS_GOOD){
destroy(s);
return ret;
}
-
+
/* load the firmware file into scanner */
ret = load_fw(s);
if (ret != SANE_STATUS_GOOD) {
@@ -487,7 +487,7 @@ attach_one (const char *name)
DBG (15, "attach_one: Found %s scanner %s at %s\n",
s->sane.vendor, s->sane.model, s->sane.name);
-
+
if (strstr (s->sane.model, "S1300i")){
unsigned char stat;
@@ -498,7 +498,7 @@ attach_one (const char *name)
DBG (5, "attach_one: on USB power?\n");
s->usb_power=1;
}
-
+
s->model = MODEL_S1300i;
s->has_adf = 1;
@@ -530,7 +530,7 @@ attach_one (const char *name)
DBG (5, "attach_one: on USB power?\n");
s->usb_power=1;
}
-
+
s->model = MODEL_S300;
s->has_adf = 1;
@@ -624,13 +624,13 @@ attach_one (const char *name)
else{
DBG (15, "attach_one: Found other\n");
}
-
+
/* set SANE option 'values' to good defaults */
DBG (15, "attach_one: init options\n");
-
- /* go ahead and setup the first opt, because
- * frontend may call control_option on it
- * before calling get_option_descriptor
+
+ /* go ahead and setup the first opt, because
+ * frontend may call control_option on it
+ * before calling get_option_descriptor
*/
memset (s->opt, 0, sizeof (s->opt));
for (i = 0; i < NUM_OPTIONS; ++i) {
@@ -638,23 +638,23 @@ attach_one (const char *name)
s->opt[i].size = sizeof (SANE_Word);
s->opt[i].cap = SANE_CAP_INACTIVE;
}
-
+
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;
-
+
DBG (15, "attach_one: init settings\n");
ret = change_params(s);
/* we close the connection, so that another backend can talk to scanner */
disconnect_fd(s);
-
+
s->next = scanner_devList;
scanner_devList = s;
-
+
DBG (10, "attach_one: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -665,9 +665,9 @@ static SANE_Status
connect_fd (struct scanner *s)
{
SANE_Status ret;
-
+
DBG (10, "connect_fd: start\n");
-
+
if(s->fd > -1){
DBG (5, "connect_fd: already open\n");
ret = SANE_STATUS_GOOD;
@@ -676,13 +676,13 @@ connect_fd (struct scanner *s)
DBG (15, "connect_fd: opening USB device\n");
ret = sanei_usb_open (s->sane.name, &(s->fd));
}
-
+
if(ret != SANE_STATUS_GOOD){
DBG (5, "connect_fd: could not open device: %d\n", ret);
}
-
+
DBG (10, "connect_fd: finish\n");
-
+
return ret;
}
@@ -701,7 +701,7 @@ load_fw (struct scanner *s)
size_t cmdLen;
unsigned char stat[2];
size_t statLen;
-
+
DBG (10, "load_fw: start\n");
/*check status*/
@@ -712,7 +712,7 @@ load_fw (struct scanner *s)
DBG (5, "load_fw: firmware already loaded?\n");
return SANE_STATUS_GOOD;
}
-
+
if(!global_firmware_filename[0]){
DBG (5, "load_fw: missing filename\n");
return SANE_STATUS_NO_DOCS;
@@ -757,7 +757,7 @@ load_fw (struct scanner *s)
cmd[1] = 0x06;
cmdLen = 2;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -774,14 +774,14 @@ load_fw (struct scanner *s)
free(buf);
return SANE_STATUS_IO_ERROR;
}
-
+
/*length/data*/
cmd[0] = 0x01;
cmd[1] = 0x00;
cmd[2] = 0x01;
cmd[3] = 0x00;
cmdLen = 4;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -803,7 +803,7 @@ load_fw (struct scanner *s)
cmdLen = 1;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -818,13 +818,13 @@ load_fw (struct scanner *s)
DBG (5, "load_fw: bad stat on cmd 3\n");
return SANE_STATUS_IO_ERROR;
}
-
+
/*reinit*/
cmd[0] = 0x1b;
cmd[1] = 0x16;
cmdLen = 2;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -843,7 +843,7 @@ load_fw (struct scanner *s)
cmd[0] = 0x80;
cmdLen = 1;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -882,7 +882,7 @@ get_stat(struct scanner *s)
size_t cmdLen;
unsigned char stat[2];
size_t statLen;
-
+
DBG (10, "get_stat: start\n");
/*check status*/
@@ -890,7 +890,7 @@ get_stat(struct scanner *s)
cmd[1] = 0x03;
cmdLen = 2;
statLen = 2;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -928,7 +928,7 @@ get_ident(struct scanner *s)
NULL, 0,
in, &inLen
);
-
+
if (ret != SANE_STATUS_GOOD){
return ret;
}
@@ -945,7 +945,7 @@ get_ident(struct scanner *s)
s->sane.model= strndup((char *)in+8, 24);
s->sane.type = "scanner";
-
+
DBG (10, "get_ident: finish\n");
return ret;
}
@@ -965,7 +965,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
struct scanner *dev = NULL;
struct scanner *s = NULL;
SANE_Status ret;
-
+
DBG (10, "sane_open: start\n");
if(scanner_devList){
@@ -973,13 +973,13 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
else{
DBG (15, "sane_open: no scanners currently attached, attaching\n");
-
+
ret = sane_get_devices(NULL,0);
if(ret != SANE_STATUS_GOOD){
return ret;
}
}
-
+
if(name[0] == 0){
DBG (15, "sane_open: no device requested, using default\n");
s = scanner_devList;
@@ -994,24 +994,24 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
}
}
-
+
if (!s) {
DBG (5, "sane_open: no device found\n");
return SANE_STATUS_INVAL;
}
-
+
DBG (15, "sane_open: device %s found\n", s->sane.name);
-
+
*handle = s;
-
+
/* connect the fd so we can talk to scanner */
ret = connect_fd(s);
if(ret != SANE_STATUS_GOOD){
return ret;
}
-
+
DBG (10, "sane_open: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -1086,7 +1086,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->mode_list[i++]=STRING_GRAYSCALE;
s->mode_list[i++]=STRING_COLOR;
s->mode_list[i]=NULL;
-
+
opt->name = SANE_NAME_SCAN_MODE;
opt->title = SANE_TITLE_SCAN_MODE;
opt->desc = SANE_DESC_SCAN_MODE;
@@ -1130,7 +1130,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_X;
opt->title = SANE_TITLE_SCAN_TL_X;
opt->desc = SANE_DESC_SCAN_TL_X;
@@ -1149,7 +1149,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_Y;
opt->title = SANE_TITLE_SCAN_TL_Y;
opt->desc = SANE_DESC_SCAN_TL_Y;
@@ -1167,7 +1167,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_X;
opt->title = SANE_TITLE_SCAN_BR_X;
opt->desc = SANE_DESC_SCAN_BR_X;
@@ -1186,7 +1186,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_Y;
opt->title = SANE_TITLE_SCAN_BR_Y;
opt->desc = SANE_DESC_SCAN_BR_Y;
@@ -1377,7 +1377,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_adf)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -1389,7 +1389,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_adf)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -1401,7 +1401,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_adf)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -1413,7 +1413,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_adf)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -1425,7 +1425,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_adf)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -1434,7 +1434,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -1445,7 +1445,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -1574,22 +1574,22 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
get_hardware_status(s);
*val_p = s->hw_scan_sw;
return SANE_STATUS_GOOD;
-
+
case OPT_HOPPER:
get_hardware_status(s);
*val_p = s->hw_hopper;
return SANE_STATUS_GOOD;
-
+
case OPT_TOP:
get_hardware_status(s);
*val_p = s->hw_top;
return SANE_STATUS_GOOD;
-
+
case OPT_ADF_OPEN:
get_hardware_status(s);
*val_p = s->hw_adf_open;
return SANE_STATUS_GOOD;
-
+
case OPT_SLEEP:
get_hardware_status(s);
*val_p = s->hw_sleep;
@@ -1630,7 +1630,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* below.
*/
switch (option) {
-
+
/* Mode Group */
case OPT_SOURCE:
if (!strcmp (val, STRING_ADFFRONT)) {
@@ -1766,7 +1766,7 @@ static void
update_transfer_totals(struct transfer * t)
{
if (t->image == NULL) return;
-
+
t->total_bytes = t->line_stride * t->image->height;
t->rx_bytes = 0;
t->done = 0;
@@ -1810,7 +1810,7 @@ static struct model_res settings[] = {
/*S300 AC*/
/* model mode xres yres u mxx mnx mxy mny lin_s pln_s pln_w bh cls cps cpw */
- { MODEL_S300, MODE_COLOR, 150, 150, 0, 1296, 32, 2662, 32, 4256*3, 1480*3, 1296, 41, 8512*3, 2960*3, 2592,
+ { MODEL_S300, MODE_COLOR, 150, 150, 0, 1296, 32, 2662, 32, 4256*3, 1480*3, 1296, 41, 8512*3, 2960*3, 2592,
setWindowCoarseCal_S300_150, setWindowFineCal_S300_150,
setWindowSendCal_S300_150, sendCal1Header_S300_150,
sendCal2Header_S300_150, setWindowScan_S300_150 },
@@ -2056,7 +2056,7 @@ change_params(struct scanner *s)
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;
-
+
/*=============================================================*/
/* set up the calibration scan structs */
/* generally full width, short height, full resolution */
@@ -2102,7 +2102,7 @@ change_params(struct scanner *s)
s->sendcal.y_res = settings[i].y_res;
s->sendcal.pages = img_pages;
s->sendcal.buffer = NULL;
-
+
/*=============================================================*/
/* set up the fullscan parameters */
/* this is bookkeeping for what we actually pull from the scanner */
@@ -2230,7 +2230,7 @@ change_params(struct scanner *s)
s->pages[SIDE_BACK].done = 0;
DBG (10, "change_params: finish\n");
-
+
return ret;
}
@@ -2238,7 +2238,7 @@ change_params(struct scanner *s)
used by scanners to implement brightness/contrast/gamma
or by backends to speed binarization/thresholding
- offset and slope inputs are -127 to +127
+ offset and slope inputs are -127 to +127
slope rotates line around central input/output val,
0 makes horizontal line
@@ -2254,9 +2254,9 @@ change_params(struct scanner *s)
offset moves line vertically, and clamps to output range
0 keeps the line crossing the center of the table
- high low
+ high low
. xxxxxxxx .
- . x .
+ . x .
out x . x
. . x
............ xxxxxxxx....
@@ -2285,7 +2285,7 @@ load_lut (unsigned char * lut,
* first [-127,127] to [-1,1]
* then multiply by PI/2 to convert to radians
* then take the tangent (T.O.A)
- * then multiply by the normal linear slope
+ * then multiply by the normal linear slope
* because the table may not be square, i.e. 1024x256*/
rise = tan((double)slope/127 * M_PI/2) * max_out_val / max_in_val;
@@ -2332,7 +2332,7 @@ load_lut (unsigned char * lut,
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -2389,9 +2389,9 @@ sane_start (SANE_Handle handle)
struct scanner *s = handle;
SANE_Status ret;
int i;
-
+
DBG (10, "sane_start: start\n");
-
+
/* set side marker on first page */
if(!s->started){
if(s->source == SOURCE_ADF_BACK){
@@ -2462,7 +2462,7 @@ sane_start (SANE_Handle handle)
sane_cancel((SANE_Handle)s);
return ret;
}
-
+
ret = finecal(s);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: failed to finecal\n");
@@ -2476,14 +2476,14 @@ sane_start (SANE_Handle handle)
sane_cancel((SANE_Handle)s);
return ret;
}
-
+
ret = lamp(s,1);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: failed to heat lamp\n");
sane_cancel((SANE_Handle)s);
return ret;
}
-
+
/*should this be between each page*/
ret = set_window(s,WINDOW_SCAN);
if (ret != SANE_STATUS_GOOD) {
@@ -2491,7 +2491,7 @@ sane_start (SANE_Handle handle)
sane_cancel((SANE_Handle)s);
return ret;
}
-
+
}
/* reset everything when starting any front, or just back */
@@ -2503,7 +2503,7 @@ sane_start (SANE_Handle handle)
s->fullscan.done = 0;
s->fullscan.rx_bytes = 0;
s->fullscan.total_bytes = s->fullscan.width_bytes * s->fullscan.height;
-
+
/* reset block */
update_transfer_totals(&s->block_xfr);
@@ -2532,7 +2532,7 @@ sane_start (SANE_Handle handle)
}
DBG (10, "sane_start: finish\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -2644,7 +2644,7 @@ coarsecal_send_cal(struct scanner *s, unsigned char *pay)
unsigned char cmd[2];
unsigned char stat[1];
size_t cmdLen,statLen,payLen;
-
+
DBG (5, "coarsecal_send_cal: start\n");
/* send coarse cal (c6) */
cmd[0] = 0x1b;
@@ -2652,7 +2652,7 @@ coarsecal_send_cal(struct scanner *s, unsigned char *pay)
cmdLen = 2;
stat[0] = 0;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -2667,7 +2667,7 @@ coarsecal_send_cal(struct scanner *s, unsigned char *pay)
DBG (5, "coarsecal_send_cal: cmd bad c6 status?\n");
return SANE_STATUS_IO_ERROR;
}
-
+
/*send coarse cal payload*/
stat[0] = 0;
statLen = 1;
@@ -2708,7 +2708,7 @@ coarsecal_get_line(struct scanner *s, struct image *img)
cmdLen = 2;
stat[0] = 0;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -2726,7 +2726,7 @@ coarsecal_get_line(struct scanner *s, struct image *img)
s->cal_image.image = img;
update_transfer_totals(&s->cal_image);
-
+
while(!s->cal_image.done){
ret = read_from_scanner(s,&s->cal_image);
if(ret){
@@ -2782,7 +2782,7 @@ coarsecal_dark(struct scanner *s, unsigned char *pay)
}
ret = coarsecal_send_cal(s, pay);
-
+
DBG(15, "coarsecal_dark offset: parameter front: %i back: %i\n", param[0], param[1]);
ret = coarsecal_get_line(s, &s->coarsecal);
@@ -2857,7 +2857,7 @@ coarsecal_light(struct scanner *s, unsigned char *pay)
return ret;
}
- try_count = 8;
+ try_count = 8;
param[0] = pay[11];
param[1] = pay[13];
low_param[0] = low_param[1] = 0;
@@ -2872,7 +2872,7 @@ coarsecal_light(struct scanner *s, unsigned char *pay)
DBG(15, "coarsecal_light gain: parameter front: %i back: %i\n", param[0], param[1]);
ret = coarsecal_get_line(s, &s->coarsecal);
-
+
/* gather statistics: count the proportion of 255-valued pixels in each color channel */
/* count the average pixel value in each color channel */
for (i = 0; i < s->coarsecal.pages; i++)
@@ -3119,7 +3119,7 @@ finecal_send_cal(struct scanner *s)
/*second unknown cal block*/
cmd[1] = 0xc4;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -3441,13 +3441,13 @@ lamp(struct scanner *s, unsigned char set)
size_t cmdLen = 2;
unsigned char stat[1];
size_t statLen = 1;
-
+
DBG (10, "lamp: start (%d)\n", set);
/*send cmd*/
cmd[0] = 0x1b;
cmd[1] = 0xd0;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -3467,7 +3467,7 @@ lamp(struct scanner *s, unsigned char set)
cmd[0] = set;
cmdLen = 1;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -3542,7 +3542,7 @@ set_window(struct scanner *s, int window)
/*send payload*/
statLen = 1;
-
+
ret = do_cmd(
s, 0,
payload, paylen,
@@ -3565,7 +3565,7 @@ set_window(struct scanner *s, int window)
/* instead of internal brightness/contrast/gamma
scanners uses 12bit x 12bit LUT
default is linear table of slope 1
- brightness and contrast inputs are -127 to +127
+ brightness and contrast inputs are -127 to +127
contrast rotates slope of line around central input val
@@ -3581,7 +3581,7 @@ set_window(struct scanner *s, int window)
bright dark
. xxxxxxxx .
- . x .
+ . x .
out x . x
. . x
............ xxxxxxxx....
@@ -3598,12 +3598,12 @@ send_lut (struct scanner *s)
size_t statLen = 1;
unsigned char *out;
size_t outLen;
-
+
int i, j;
double b, slope, offset;
int width;
int height;
-
+
DBG (10, "send_lut: start\n");
if (s->model == MODEL_S1100){
@@ -3630,7 +3630,7 @@ send_lut (struct scanner *s)
* first [-127,127] to [0,254] then to [0,1]
* then multiply by PI/2 to convert to radians
* then take the tangent to get slope (T.O.A)
- * then multiply by the normal linear slope
+ * then multiply by the normal linear slope
* because the table may not be square, i.e. 1024x256*/
slope = tan(((double)s->contrast+127)/254 * M_PI/2);
@@ -3642,17 +3642,17 @@ send_lut (struct scanner *s)
* into a scale that covers the range required
* to slide the contrast curve entirely off the table */
b = ((double)s->brightness/127) * (slope*(width-1) + offset);
-
+
DBG (15, "send_lut: %d %f %d %f %f\n", s->brightness, b,
s->contrast, slope, offset);
-
+
for(i=0;i<width;i++){
j=slope*i + offset + b;
-
+
if(j<0){
j=0;
}
-
+
if(j>(height-1)){
j=height-1;
}
@@ -3675,7 +3675,7 @@ send_lut (struct scanner *s)
out[width*4 + i*2] = (j >> 8) & 0xff;
out[width*4 + i*2+1] = j & 0xff;
}
- else {
+ else {
/*first table, le order*/
out[i*2] = j & 0xff;
out[i*2+1] = (j >> 8) & 0x0f;
@@ -3745,7 +3745,7 @@ get_hardware_status (struct scanner *s)
cmd[0] = 0x1b;
cmd[1] = 0x33;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -3790,12 +3790,12 @@ object_position(struct scanner *s, int ingest)
i = (ingest)?5:1;
- while(i--){
+ while(i--){
/*send paper load cmd*/
cmd[0] = 0x1b;
cmd[1] = 0xd4;
statLen = 1;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -3810,12 +3810,12 @@ object_position(struct scanner *s, int ingest)
DBG (5, "object_position: cmd bad status? %d\n",stat[0]);
continue;
}
-
+
/*send payload*/
statLen = 1;
payLen = 1;
pay[0] = ingest;
-
+
ret = do_cmd(
s, 0,
pay, payLen,
@@ -3853,7 +3853,7 @@ scan(struct scanner *s)
size_t cmdLen = 2;
unsigned char stat[1];
size_t statLen = 1;
-
+
DBG (10, "scan: start\n");
if(s->model == MODEL_S300 || s->model == MODEL_S1100 || s->model == MODEL_S1300i){
@@ -3876,13 +3876,13 @@ scan(struct scanner *s)
}
DBG (10, "scan: finish\n");
-
+
return ret;
}
/*
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -3890,7 +3890,7 @@ scan(struct scanner *s)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -3900,7 +3900,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
struct scanner *s = (struct scanner *) handle;
SANE_Status ret=SANE_STATUS_GOOD;
struct page * page;
-
+
DBG (10, "sane_read: start si:%d len:%d max:%d\n",s->side,*len,max_len);
*len = 0;
@@ -3910,7 +3910,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
DBG (5, "sane_read: call sane_start first\n");
return SANE_STATUS_CANCELLED;
}
-
+
page = &s->pages[s->side];
/* have sent all of current buffer */
@@ -3920,14 +3920,14 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
/*S1100 needs help to turn off button*/
if(s->model == MODEL_S1100){
usleep(15000);
-
+
/* eject paper */
ret = object_position(s,EPJITSU_PAPER_EJECT);
if (ret != SANE_STATUS_GOOD && ret != SANE_STATUS_NO_DOCS) {
DBG (5, "sane_read: ERROR: failed to eject\n");
return ret;
}
-
+
/* reset flashing button? */
ret = six5(s);
if (ret != SANE_STATUS_GOOD) {
@@ -3937,12 +3937,12 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
}
return SANE_STATUS_EOF;
- }
+ }
/* scan not finished, get more into block buffer */
if(!s->fullscan.done)
{
- /* block buffer currently empty, clean up */
+ /* block buffer currently empty, clean up */
if(!s->block_xfr.rx_bytes)
{
/* block buffer bigger than remainder of scan, shrink block */
@@ -3959,9 +3959,9 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
size_t cmdLen = 2;
unsigned char stat[1];
size_t statLen = 1;
-
+
DBG (15, "sane_read: d3\n");
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -4002,7 +4002,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
size_t cmdLen = 2;
unsigned char in[10];
size_t inLen = 10;
-
+
ret = do_cmd(
s, 0,
cmd, cmdLen,
@@ -4010,7 +4010,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
in, &inLen
);
hexdump(15, "cmd 43: ", in, inLen);
-
+
if(ret){
DBG (5, "sane_read: error sending 43 cmd\n");
return ret;
@@ -4076,19 +4076,19 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
if(*len){
DBG (10, "sane_read: copy rx:%d tx:%d tot:%d len:%d\n",
page->bytes_scanned, page->bytes_read, page->bytes_total,*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;
}
- }
+ }
DBG (10, "sane_read: finish si:%d len:%d max:%d\n",s->side,*len,max_len);
-
+
return ret;
}
@@ -4152,39 +4152,39 @@ 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;
-
+
for (k = 0; k <= tp->plane_width; k++){ /* column (x) */
int this_col = k*tp->image->x_res/tp->x_res;
-
+
/* going to change output pixel, dump rgb and reset */
if(ppc && curr_col != this_col){
*p_out = r/ppc;
p_out++;
-
+
*p_out = g/ppc;
p_out++;
-
+
*p_out = b/ppc;
p_out++;
-
+
r = g = b = ppc = 0;
-
+
curr_col = this_col;
}
-
+
if(k == tp->plane_width || this_col >= tp->image->width_pix){
break;
}
-
+
/*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];
-
+
/*blue is third*/
b += tp->raw_data[j*tp->line_stride + 2*tp->plane_stride + k*3 + i];
-
+
ppc++;
}
}
@@ -4194,39 +4194,39 @@ 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;
-
+
for (k = 0; k <= tp->plane_width; k++){ /* column (x) */
int this_col = k*tp->image->x_res/tp->x_res;
-
+
/* going to change output pixel, dump rgb and reset */
if(ppc && curr_col != this_col){
*p_out = r/ppc;
p_out++;
-
+
*p_out = g/ppc;
p_out++;
-
+
*p_out = b/ppc;
p_out++;
-
+
r = g = b = ppc = 0;
-
+
curr_col = this_col;
}
-
+
if(k == tp->plane_width || this_col >= tp->image->width_pix){
break;
}
/*red is second*/
r += tp->raw_data[j*tp->line_stride + tp->plane_stride + k];
-
+
/*green is third*/
g += tp->raw_data[j*tp->line_stride + 2*tp->plane_stride + k];
-
+
/*blue is first*/
b += tp->raw_data[j*tp->line_stride + k];
-
+
ppc++;
}
}
@@ -4238,39 +4238,39 @@ descramble_raw(struct scanner *s, struct transfer * tp)
for (i = 0; i < 3; i++){ /* read head */
int r=0, g=0, b=0, ppc=0;
-
+
for (k = 0; k <= tp->plane_width; k++){ /* column (x) within the read head */
int this_col = (k+i*tp->plane_width)*tp->image->x_res/tp->x_res;
-
+
/* going to change output pixel, dump rgb and reset */
if(ppc && curr_col != this_col){
*p_out = r/ppc;
p_out++;
-
+
*p_out = g/ppc;
p_out++;
-
+
*p_out = b/ppc;
p_out++;
-
+
r = g = b = ppc = 0;
-
+
curr_col = this_col;
}
-
+
if(k == tp->plane_width || this_col >= tp->image->width_pix){
break;
}
-
+
/*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];
-
+
/*blue is third*/
b += tp->raw_data[j*tp->line_stride + 2*tp->plane_stride + k*3 + i];
-
+
ppc++;
}
}
@@ -4297,15 +4297,15 @@ descramble_raw_gray(struct scanner *s, struct transfer * tp)
if (s->model == MODEL_FI60F || s->model == MODEL_FI65F) {
for (row = 0; row < height; row++){
-
+
unsigned char *p_in = tp->raw_data + row * tp->line_stride;
unsigned char *p_out = tp->image->buffer + row * tp->image->width_pix;
-
+
for (col_out = 0; col_out < tp->image->width_pix; col_out++){
int col_in = col_out * tp->x_res/tp->image->x_res;
int offset = col_in%tp->plane_width;
int step = col_in/tp->plane_width;
-
+
*p_out = *(p_in + offset*3 + step);
p_out++;
}
@@ -4388,12 +4388,12 @@ read_from_scanner(struct scanner *s, struct transfer * tp)
else {
DBG(5, "read_from_scanner: error reading status = %d\n", ret);
}
-
+
free(buf);
DBG (10, "read_from_scanner: finish rB:%lu len:%lu\n",
(unsigned long)(tp->total_bytes - tp->rx_bytes + 8), (unsigned long)bytes);
-
+
return ret;
}
@@ -4439,7 +4439,7 @@ copy_block_to_page(struct scanner *s,int side)
int this_out_row = (this_in_row - page->image->y_skip_offset) * page->image->y_res / s->fullscan.y_res;
DBG (15, "copy_block_to_page: in %d out %d lastout %d\n", this_in_row, this_out_row, last_out_row);
DBG (15, "copy_block_to_page: bs %d wb %d\n", page->bytes_scanned, page->image->width_bytes);
-
+
/* don't walk off the end of the output buffer */
if(this_out_row >= page->image->height || this_out_row < 0){
DBG (10, "copy_block_to_page: out of space? %d\n", side);
@@ -4447,7 +4447,7 @@ copy_block_to_page(struct scanner *s,int side)
page->bytes_scanned, page->bytes_read, page->bytes_total,page->image->width_bytes);
return ret;
}
-
+
/* ok, different output row, so we do the math */
if(this_out_row > last_out_row){
@@ -4459,11 +4459,11 @@ copy_block_to_page(struct scanner *s,int side)
last_out_row = this_out_row;
if (block->mode == MODE_COLOR){
-
+
/* reverse order for back side or FI-60F scanner */
if (line_reverse)
p_in += (page_width - 1) * 3;
-
+
/* convert all of the pixels in this row */
for (j = 0; j < page_width; j++)
{
@@ -4492,18 +4492,18 @@ copy_block_to_page(struct scanner *s,int side)
p_in += 3;
}
}
-
+
/* grayscale input */
else{
unsigned char * p_in = block->image->buffer + (side * block_page_stride)
+ (i * block->image->width_bytes) + page->image->x_start_offset;
-
+
/* reverse order for back side or FI-60F scanner */
if (line_reverse)
p_in += (page_width - 1);
-
+
//memcpy(p_out,p_in,page->image->width_bytes);
-
+
for (j = 0; j < page_width; j++)
{
if (s->mode == MODE_GRAYSCALE)
@@ -4570,7 +4570,7 @@ binarize_line(struct scanner *s, unsigned char *lineOut, int width)
{
int addCol = j + windowX/2;
int dropCol = addCol - windowX;
-
+
if (dropCol >= 0 && addCol < width)
{
sum -= s->dt.buffer[dropCol];
@@ -4584,7 +4584,7 @@ binarize_line(struct scanner *s, unsigned char *lineOut, int width)
*lineOut &= ~mask; /* white */
else
*lineOut |= mask; /* black */
-
+
if (offset == 7)
lineOut++;
}
@@ -4596,7 +4596,7 @@ binarize_line(struct scanner *s, unsigned char *lineOut, int width)
* @@ Section 4 - SANE cleanup functions
*/
/*
- * Cancels a scan.
+ * Cancels a scan.
*
* From the SANE spec:
* This function is used to immediately or as quickly as possible
@@ -4626,7 +4626,7 @@ sane_cancel (SANE_Handle handle)
/*
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -4684,7 +4684,7 @@ destroy(struct scanner *s)
if(s->sane.model){
free((void *) s->sane.model);
}
-
+
free(s);
DBG (10, "destroy: finish\n");
@@ -4758,7 +4758,7 @@ teardown_buffers(struct scanner *s)
/*
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -4828,13 +4828,13 @@ do_cmd(struct scanner *s, int shortTime,
/* change timeout */
sanei_usb_set_timeout(cmdTime);
-
+
/* write the command out */
DBG(25, "cmd: writing %ld bytes, timeout %d\n", (long)cmdLen, cmdTime);
hexdump(30, "cmd: >>", cmdBuff, cmdLen);
ret = sanei_usb_write_bulk(s->fd, cmdBuff, &cmdLen);
DBG(25, "cmd: wrote %ld bytes, retVal %d\n", (long)cmdLen, ret);
-
+
if(ret == SANE_STATUS_EOF){
DBG(5,"cmd: got EOF, returning IO_ERROR\n");
return SANE_STATUS_IO_ERROR;
@@ -4993,7 +4993,7 @@ sane_get_select_fd (SANE_Handle h, SANE_Int *fdp)
* due to using FB
*/
static int
-get_page_width(struct scanner *s)
+get_page_width(struct scanner *s)
{
/* scanner max for fb */
if(s->source == SOURCE_FLATBED){
@@ -5009,7 +5009,7 @@ get_page_width(struct scanner *s)
* due to using FB.
*/
static int
-get_page_height(struct scanner *s)
+get_page_height(struct scanner *s)
{
/* scanner max for fb */
if(s->source == SOURCE_FLATBED){
@@ -5018,4 +5018,3 @@ get_page_height(struct scanner *s)
return s->page_height;
}
-
diff --git a/backend/epjitsu.conf.in b/backend/epjitsu.conf.in
index 3ba1c15..4dc9dfc 100644
--- a/backend/epjitsu.conf.in
+++ b/backend/epjitsu.conf.in
@@ -12,7 +12,7 @@
# extracted from the Fujitsu Windows driver. Presumably the Mac versions
# contain the firmware as well, but the author has no access such a machine.
-# Firmware is installed in several different locations by the fujitsu software,
+# Firmware is installed in several different locations by the fujitsu software,
# using the windows 'search' feature to look for '*.nal' is the easiest way to
# find them. They should be ~65K, and have the scanner's name as part of the
# file name. They are often inside a .cab file.
@@ -80,4 +80,3 @@ usb 0x04c5 0x128d
# Fujitsu S1100i
firmware @DATADIR@/sane/epjitsu/1100i_0A00.nal
usb 0x04c5 0x1447
-
diff --git a/backend/epjitsu.h b/backend/epjitsu.h
index 6dfaf67..87d6836 100644
--- a/backend/epjitsu.h
+++ b/backend/epjitsu.h
@@ -1,12 +1,12 @@
#ifndef EPJITSU_H
#define EPJITSU_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comment in epjitsu.c
*/
-/* -------------------------------------------------------------------------
+/* -------------------------------------------------------------------------
* This option list has to contain all options for all scanners supported by
* this driver. If a certain scanner cannot handle a certain option, there's
* still the possibility to say so, later.
@@ -197,7 +197,7 @@ struct scanner
unsigned char * setWindowScan; /* sent before scan */
size_t setWindowScanLen;
-
+
/* --------------------------------------------------------------------- */
/* values which are set by scanning functions to keep track of pages, etc */
int started;
diff --git a/backend/epson.c b/backend/epson.c
index 3fc264f..20cafc4 100644
--- a/backend/epson.c
+++ b/backend/epson.c
@@ -1,4 +1,4 @@
-/*
+/*
epson.c - SANE library for Epson flatbed scanners.
Based on Kazuhiro Sasayama previous
@@ -63,7 +63,7 @@
2006-08-21 Fix buffer overflow error (submitted by Johannes Meixner)
2006-06-11 Applied patch from Henning. Fixed a number of compiler warnings
2006-03-12 Added support for perfetion 4990 photo 4800 dpi
- 2005-01-09 "flaming hack to get USB scanners working without timeouts under linux"
+ 2005-01-09 "flaming hack to get USB scanners working without timeouts under linux"
submitted by "Steve" (in comment to bug #300830)
2004-12-18 Added USB IDs for CX-4600 and CX-3650
2004-10-16 Added USB ID for Expression 10000XL
@@ -78,7 +78,7 @@
Added EPSON Kowa copyright message
2003-08-15 Added support for GT-30000, with support for the ADF in simplex mode
Borrowed some code from the EPSON Kowa IScan version of the backend
- Use sanei_scsi_cmd2() to send commands. This makes this backend
+ Use sanei_scsi_cmd2() to send commands. This makes this backend
useable for SBP-2 under FreeBSD
2003-05-11 Initialize OPT_LIMIT_RESOLUTION before first call to filter_resolution_list()
Fix memory problem in get_identity_information(). Both problems were
@@ -88,14 +88,14 @@
2003-02-15 Move sanei_usb_init() to sane_init(). Thanks to Ron Cemer
for providing the patch.
2003-02-15 Fix problem with "usb <vendor> <product> syntax in config file
- 2002-12-28 Added advanced option to display only short resolution list for
+ 2002-12-28 Added advanced option to display only short resolution list for
displays that can not show the complete list.
2002-11-23 Fixed problem with dropout color.
2002-11-03 Full libusb support.
2002-10-05 Fixed problem with incorrect response to sane_get_parameters()
in certain situations.
2002-09-01 USB scanners are now using libsane-usb funtions
- 2002-08-17 Fixed typo in variable name.
+ 2002-08-17 Fixed typo in variable name.
Fixed IEEE-1394 problem with Perfection-2450.
Fixed problem with older B3 level SCSI scanners that do
not support the extended status request.
@@ -104,12 +104,12 @@
2002-04-13 Check if scanner needs to be opened for the reset call.
(Thanks to Thomas Wenrich for pointing this out)
Added product IDs for Perfection 1650 and 2450
- 2002-01-18 Recognize GT-xxxx type scanners also when using the SCSI
+ 2002-01-18 Recognize GT-xxxx type scanners also when using the SCSI
or IEEE-1394 interface
2002-01-06 Disable TEST_IOCTL again, which was enabled by accident. Also
protect the ioctl portion with an #ifdef __linux__
2002-01-05 Version 0.2.17
- Check for and set s->fd to -1 when device is closed.
+ Check for and set s->fd to -1 when device is closed.
Removed black gamma table - only use RGB even for grayscale
2002-01-01 Do not call access() for OS/2 systems
2001-11-13 Version 0.2.16
@@ -126,8 +126,8 @@
2001-06-09 Version 0.2.09
Changed debug level for sense handler from 0 to 2
2001-05-25 Version 0.2.07
- Allow more than 8 bit color depth even for preview mode
- since Xsane can handle this. Some code cleanup.
+ Allow more than 8 bit color depth even for preview mode
+ since Xsane can handle this. Some code cleanup.
2001-05-24 Removed ancient code that was used to determine the resolution
back when the backend still had a slider for the resolution
selection.
@@ -156,12 +156,12 @@
Fixed problem with bilevel scanning with Perfection610: The
line count has to be an even number with this scanner.
Several initialization fixes regarding bit depth selection.
- This version goes back into the CVS repository, the 1.0.4
+ This version goes back into the CVS repository, the 1.0.4
release is out and therefore the code freeze is over.
Some general cleanup, added more comments.
2000-12-09 Version 0.2.00
Cleaned up printing of gamma table data. 16 elements
- are now printed in one line without the [epson] in
+ are now printed in one line without the [epson] in
between the values. Values are only printed for
Debug levels >= 10.
2000-12-04 We've introduced the concept of inverting images
@@ -175,7 +175,7 @@
2000-12-03 added the 12/14/16 bit support again.
2000-12-03 Version 0.1.38
removed changes regarding 12/14 bit support because
- of SANE feature freeze for 1.0.4. The D1 fix for
+ of SANE feature freeze for 1.0.4. The D1 fix for
reading the values from the scanner instead of using
hardcoded values and the fix for the off-by-one error
in the reorder routine are still in the code base.
@@ -194,13 +194,13 @@
sane/... include files.
2000-07-26 Fixed problem with Perfection610: The variable
s->color_shuffle_line was never correctly initialized
- 2000-06-28 When closing the scanner device the data that's
+ 2000-06-28 When closing the scanner device the data that's
still in the scanner, waiting to be transferred
is flushed. This fixes the problem with scanimage -T
2000-06-13 Invert image when scanning negative with TPU,
Show film type only when TPU is selected
2000-06-13 Initialize optical_res to 0 (Dave Hill)
- 2000-06-07 Fix in sane_close() - found by Henning Meier-Geinitz
+ 2000-06-07 Fix in sane_close() - found by Henning Meier-Geinitz
2000-06-01 Threshhold should only be active when scan depth
is 1 and halftoning is off. (mjp)
2000-05-28 Turned on scanner based color correction.
@@ -212,16 +212,16 @@
Help prevent extraneous option reloads. Split
sane_control_option in getvalue and setvalue.
Further split up setvalue into several different
- routines. (mjp)
- 2000-05-21 In sane_close use close_scanner instead of just the
+ routines. (mjp)
+ 2000-05-21 In sane_close use close_scanner instead of just the
SCSI close function.
2000-05-20 ... finally fixed the problem with the 610
Added resolution_list to Epson_Device structure in
- epson.h - this fixes a bug that caused problems when
+ epson.h - this fixes a bug that caused problems when
more than one EPSON scanner was connected.
2000-05-13 Fixed the color problem with the Perfection 610. The few
lines with "garbage" at the beginning of the scan are not
- yet removed.
+ yet removed.
2000-05-06 Added support for multiple EPSON scanners. At this time
this may not be bug free, but it's a start and it seems
to work well with just one scanner.
@@ -235,21 +235,21 @@
fix an OS/2 bug. It now turned out that they are not
necessary. The real fix was in the repository for a
long time (2000-01-25).
- 2000-03-19 Fixed problem with A4 level devices - they use the
- line mode instead of the block mode. The routine to
- handle this was screwed up pretty bad. Now I have
+ 2000-03-19 Fixed problem with A4 level devices - they use the
+ line mode instead of the block mode. The routine to
+ handle this was screwed up pretty bad. Now I have
a solid version that handles all variations of line
mode (automatically deals with the order the color
lines are sent).
2000-03-06 Fixed occasional crash after warm up when the "in warmup
state" went away in between doing ESC G and getting the
- extended status message.
- 2000-03-02 Code cleanup, disabled ZOOM until I have time to
+ extended status message.
+ 2000-03-02 Code cleanup, disabled ZOOM until I have time to
deal with all the side effects.
2000-03-01 More D1 fixes. In the future I have to come up with
a more elegant solution to destinguish between different
function levels. The level > n does not work anymore with
- D1.
+ D1.
Added support for "set threshold" and "set zoom".
2000-02-23 First stab at level D1 support, also added a test
for valid "set halftone" command to enable OPT_HALFTONE
@@ -275,11 +275,11 @@
because of hte changes to attach a few days ago. (KHK)
2000-01-29 fixed core dump with xscanimage by moving the gamma
curves to the standard interface (no longer advanced)
- Removed pragma pack() from source code to make it
+ Removed pragma pack() from source code to make it
easier to compile on non-gcc compilers (KHK)
2000-01-26 fixed problem with resolution selection when using the
resolution list in xsane (KHK)
- 2000-01-25 moved the section where the device name is assigned
+ 2000-01-25 moved the section where the device name is assigned
in attach. This avoids the core dump of frontend
applications when no scanner is found (Dave Hill)
2000-01-24 reorganization of SCSI related "helper" functions
@@ -395,7 +395,7 @@
#define EPSON_LEVEL_D7 12
#define EPSON_LEVEL_D8 13
-/* there is also a function level "A5", which I'm igoring here until somebody can
+/* there is also a function level "A5", which I'm igoring here until somebody can
convince me that this is still needed. The A5 level was for the GT-300, which
was (is) a monochrome only scanner. So if somebody really wants to use this
scanner with SANE get in touch with me and we can work something out - khk */
@@ -437,7 +437,7 @@ static EpsonCmdRec epson_cmd[] = {
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set bay
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set threshold
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set focus position
- * | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request focus position
+ * | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request focus position
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
*/
@@ -460,7 +460,7 @@ static EpsonCmdRec epson_cmd[] = {
/*
- * Definition of the mode_param struct, that is used to
+ * Definition of the mode_param struct, that is used to
* specify the valid parameters for the different scan modes.
*
* The depth variable gets updated when the bit depth is modified.
@@ -508,10 +508,10 @@ static const SANE_String_Const adf_mode_list[] = {
* of the scanner.
*/
-static SANE_String_Const source_list[] = {
- FBF_STR,
- NULL,
- NULL,
+static SANE_String_Const source_list[] = {
+ FBF_STR,
+ NULL,
+ NULL,
NULL
};
@@ -519,9 +519,9 @@ static SANE_String_Const source_list[] = {
#define FILM_TYPE_POSITIVE (0)
#define FILM_TYPE_NEGATIVE (1)
-static const SANE_String_Const film_list[] = {
- SANE_I18N ("Positive Film"),
- SANE_I18N ("Negative Film"),
+static const SANE_String_Const film_list[] = {
+ SANE_I18N ("Positive Film"),
+ SANE_I18N ("Negative Film"),
NULL
};
@@ -538,67 +538,67 @@ static const SANE_String_Const focus_list[] = {
#define HALFTONE_NONE 0x01
#define HALFTONE_TET 0x03
-static int halftone_params[] = {
- HALFTONE_NONE,
- 0x00,
- 0x10,
- 0x20,
- 0x80,
- 0x90,
- 0xa0,
- 0xb0,
+static int halftone_params[] = {
+ HALFTONE_NONE,
+ 0x00,
+ 0x10,
+ 0x20,
+ 0x80,
+ 0x90,
+ 0xa0,
+ 0xb0,
HALFTONE_TET,
- 0xc0,
+ 0xc0,
0xd0
};
-static const SANE_String_Const halftone_list[] = {
- SANE_I18N ("None"),
+static const SANE_String_Const halftone_list[] = {
+ SANE_I18N ("None"),
SANE_I18N ("Halftone A (Hard Tone)"),
- SANE_I18N ("Halftone B (Soft Tone)"),
+ SANE_I18N ("Halftone B (Soft Tone)"),
SANE_I18N ("Halftone C (Net Screen)"),
NULL
};
-static const SANE_String_Const halftone_list_4[] = {
- SANE_I18N ("None"),
+static const SANE_String_Const halftone_list_4[] = {
+ SANE_I18N ("None"),
SANE_I18N ("Halftone A (Hard Tone)"),
- SANE_I18N ("Halftone B (Soft Tone)"),
+ SANE_I18N ("Halftone B (Soft Tone)"),
SANE_I18N ("Halftone C (Net Screen)"),
SANE_I18N ("Dither A (4x4 Bayer)"),
SANE_I18N ("Dither B (4x4 Spiral)"),
SANE_I18N ("Dither C (4x4 Net Screen)"),
- SANE_I18N ("Dither D (8x4 Net Screen)"),
+ SANE_I18N ("Dither D (8x4 Net Screen)"),
NULL
};
-static const SANE_String_Const halftone_list_7[] = {
- SANE_I18N ("None"),
+static const SANE_String_Const halftone_list_7[] = {
+ SANE_I18N ("None"),
SANE_I18N ("Halftone A (Hard Tone)"),
- SANE_I18N ("Halftone B (Soft Tone)"),
+ SANE_I18N ("Halftone B (Soft Tone)"),
SANE_I18N ("Halftone C (Net Screen)"),
SANE_I18N ("Dither A (4x4 Bayer)"),
SANE_I18N ("Dither B (4x4 Spiral)"),
SANE_I18N ("Dither C (4x4 Net Screen)"),
SANE_I18N ("Dither D (8x4 Net Screen)"),
- SANE_I18N ("Text Enhanced Technology"),
+ SANE_I18N ("Text Enhanced Technology"),
SANE_I18N ("Download pattern A"),
- SANE_I18N ("Download pattern B"),
+ SANE_I18N ("Download pattern B"),
NULL
};
-static int dropout_params[] = {
+static int dropout_params[] = {
0x00, /* none */
0x10, /* red */
0x20, /* green */
0x30 /* blue */
};
-static const SANE_String_Const dropout_list[] = {
- SANE_I18N ("None"),
- SANE_I18N ("Red"),
+static const SANE_String_Const dropout_list[] = {
+ SANE_I18N ("None"),
+ SANE_I18N ("Red"),
SANE_I18N ("Green"),
- SANE_I18N ("Blue"),
+ SANE_I18N ("Blue"),
NULL
};
@@ -606,34 +606,34 @@ static const SANE_String_Const dropout_list[] = {
* Color correction:
* One array for the actual parameters that get sent to the scanner (color_params[]),
* one array for the strings that get displayed in the user interface (color_list[])
- * and one array to mark the user defined color correction (dolor_userdefined[]).
+ * and one array to mark the user defined color correction (dolor_userdefined[]).
*/
-static int color_params[] = {
- 0x00,
- 0x01,
- 0x10,
- 0x20,
- 0x40,
+static int color_params[] = {
+ 0x00,
+ 0x01,
+ 0x10,
+ 0x20,
+ 0x40,
0x80
};
-static SANE_Bool color_userdefined[] = {
- SANE_FALSE,
- SANE_TRUE,
- SANE_FALSE,
- SANE_FALSE,
- SANE_FALSE,
+static SANE_Bool color_userdefined[] = {
+ SANE_FALSE,
+ SANE_TRUE,
+ SANE_FALSE,
+ SANE_FALSE,
+ SANE_FALSE,
SANE_FALSE
};
-static const SANE_String_Const color_list[] = {
- SANE_I18N ("No Correction"),
+static const SANE_String_Const color_list[] = {
+ SANE_I18N ("No Correction"),
SANE_I18N ("User defined"),
- SANE_I18N ("Impact-dot printers"),
+ SANE_I18N ("Impact-dot printers"),
SANE_I18N ("Thermal printers"),
SANE_I18N ("Ink-jet printers"),
- SANE_I18N ("CRT monitors"),
+ SANE_I18N ("CRT monitors"),
NULL
};
@@ -644,20 +644,20 @@ static const SANE_String_Const color_list[] = {
* the actally used params and list arrays at runtime.
*/
-static int gamma_params_ab[] = {
- 0x01,
- 0x03,
- 0x00,
- 0x10,
+static int gamma_params_ab[] = {
+ 0x01,
+ 0x03,
+ 0x00,
+ 0x10,
0x20
};
-static const SANE_String_Const gamma_list_ab[] = {
- SANE_I18N ("Default"),
+static const SANE_String_Const gamma_list_ab[] = {
+ SANE_I18N ("Default"),
SANE_I18N ("User defined"),
- SANE_I18N ("High density printing"),
+ SANE_I18N ("High density printing"),
SANE_I18N ("Low density printing"),
- SANE_I18N ("High contrast printing"),
+ SANE_I18N ("High contrast printing"),
NULL
};
@@ -669,14 +669,14 @@ static SANE_Bool gamma_userdefined_ab[] = {
SANE_FALSE,
};
-static int gamma_params_d[] = {
- 0x03,
+static int gamma_params_d[] = {
+ 0x03,
0x04
};
-static const SANE_String_Const gamma_list_d[] = {
+static const SANE_String_Const gamma_list_d[] = {
SANE_I18N ("User defined (Gamma=1.0)"),
- SANE_I18N ("User defined (Gamma=1.8)"),
+ SANE_I18N ("User defined (Gamma=1.8)"),
NULL
};
@@ -701,13 +701,13 @@ static unsigned int w_cmd_count = 0;
* this is used for the FilmScan
*/
-static const SANE_String_Const bay_list[] = {
- " 1 ",
- " 2 ",
- " 3 ",
- " 4 ",
- " 5 ",
- " 6 ",
+static const SANE_String_Const bay_list[] = {
+ " 1 ",
+ " 2 ",
+ " 3 ",
+ " 4 ",
+ " 5 ",
+ " 6 ",
NULL
};
@@ -744,7 +744,7 @@ struct qf_param
};
/* gcc don't like to overwrite const field */
-static /*const */ struct qf_param qf_params[] = {
+static /*const */ struct qf_param qf_params[] = {
{0, 0, SANE_FIX (120.0), SANE_FIX (120.0)},
{0, 0, SANE_FIX (148.5), SANE_FIX (210.0)},
{0, 0, SANE_FIX (210.0), SANE_FIX (148.5)},
@@ -753,13 +753,13 @@ static /*const */ struct qf_param qf_params[] = {
{0, 0, 0, 0}
};
-static const SANE_String_Const qf_list[] = {
- SANE_I18N ("CD"),
- SANE_I18N ("A5 portrait"),
+static const SANE_String_Const qf_list[] = {
+ SANE_I18N ("CD"),
+ SANE_I18N ("A5 portrait"),
SANE_I18N ("A5 landscape"),
- SANE_I18N ("Letter"),
- SANE_I18N ("A4"),
- SANE_I18N ("Max"),
+ SANE_I18N ("Letter"),
+ SANE_I18N ("A4"),
+ SANE_I18N ("Max"),
NULL
};
@@ -770,7 +770,7 @@ static SANE_Word *bitDepthList = NULL;
/*
* List of pointers to devices - will be dynamically allocated depending
- * on the number of devices found.
+ * on the number of devices found.
*/
static const SANE_Device **devlist = 0;
@@ -1199,10 +1199,10 @@ set_resolution (Epson_Scanner * s, int xres, int yres)
}
/*
- * set_scan_area()
+ * set_scan_area()
*
- * Sends the "set scan area" command to the scanner with the currently selected
- * scan area. This scan area is already corrected for "color shuffling" if
+ * Sends the "set scan area" command to the scanner with the currently selected
+ * scan area. This scan area is already corrected for "color shuffling" if
* necessary.
*/
static SANE_Status
@@ -1472,7 +1472,7 @@ DetectSize:
* is reported as a warning (only visible if debug level is set to 10 or greater) -
* every other condition is reported as an error.
*
- * This function only gets called when we are dealing with a scanner that supports the
+ * This function only gets called when we are dealing with a scanner that supports the
* "warming up" code, so it's not a problem for B3 level scanners, that don't handle
* request extended status commands.
*/
@@ -1650,7 +1650,7 @@ close_scanner (Epson_Scanner * s)
if (s->fd == -1)
return;
- if (r_cmd_count % 2)
+ if (r_cmd_count % 2)
{
/* send a request_status. This toggles w_cmd_count and r_cmd_count */
u_char param[3];
@@ -1668,7 +1668,7 @@ close_scanner (Epson_Scanner * s)
DBG (5, "w_cmd_count = %d\n",w_cmd_count);
DBG (5, "r_cmd_count = %d\n",r_cmd_count);
- if (w_cmd_count % 2)
+ if (w_cmd_count % 2)
{
int junk1,junk2;
@@ -1700,8 +1700,8 @@ close_scanner (Epson_Scanner * s)
/*
* open_scanner()
*
- * Open the scanner device. Depending on the connection method,
- * different open functions are called.
+ * Open the scanner device. Depending on the connection method,
+ * different open functions are called.
*/
static SANE_Status
@@ -1798,7 +1798,7 @@ feed (Epson_Scanner * s)
/*
* eject()
- *
+ *
* Eject the current page from the ADF. The scanner is opened prior to
* sending the command and closed afterwards.
*
@@ -2011,7 +2011,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
}
/* check for PIO devices */
- /* can we convert the device name to an integer? This is only possible
+ /* can we convert the device name to an integer? This is only possible
with PIO devices */
port = atoi (dev_name);
if (port != 0)
@@ -2088,7 +2088,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
buf[INQUIRY_BUF_SIZE] = 0;
DBG (1, ">%s<\n", buf + 8);
- /*
+ /*
* For USB and PIO scanners this will be done later, once
* we have communication established with the device.
*/
@@ -2140,7 +2140,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
status = sanei_usb_find_devices (vendor, product, attach_one_usb);
}
- return SANE_STATUS_INVAL; /* return - the attach_one_usb()
+ return SANE_STATUS_INVAL; /* return - the attach_one_usb()
will take care of this */
}
@@ -2179,7 +2179,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
is_valid = SANE_FALSE;
i = 0;
- /* check all known product IDs to verify that we know
+ /* check all known product IDs to verify that we know
about the device */
while (i != numIds && !is_valid)
{
@@ -2287,7 +2287,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
/*
- * Check for "request focus position" command. If this command is
+ * Check for "request focus position" command. If this command is
* supported, then the scanner does also support the "set focus
* position" command.
*/
@@ -2350,10 +2350,10 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
* this also requests the scanner device name from the scanner
*/
/*
- * because we are also using the device name from this command,
+ * because we are also using the device name from this command,
* we have to run this block even if the scanner does not report
* an extension. The extensions are only reported if the ADF or
- * the TPU are actually detected.
+ * the TPU are actually detected.
*/
if (s->hw->cmd->request_extended_status != 0)
{
@@ -2493,7 +2493,7 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
SANE_FIX ((buf[10] << 8 | buf[9]) * 25.4 / dev->dpi_range.max);
dev->tpu_y_range.quant = 0;
- /*
+ /*
* Check for Perfection 4990 photo/GT-X800 scanner.
* This scanner only report 3200 dpi back.
* The scanner fysical supports 4800 dpi.
@@ -2503,11 +2503,11 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
*/
if (strncmp((char *) buf + 0x1A,"GT-X800",7) == 0)
{
- dev->tpu_x_range.max = (dev->tpu_x_range.max/32)*48;
- dev->tpu_y_range.max = (dev->tpu_y_range.max/32)*48;
+ dev->tpu_x_range.max = (dev->tpu_x_range.max/32)*48;
+ dev->tpu_y_range.max = (dev->tpu_y_range.max/32)*48;
DBG (5, "dpi_range.max %x \n", dev->dpi_range.max);
}
-
+
DBG (5, "tpu tlx %f tly %f brx %f bry %f [mm]\n",
SANE_UNFIX (dev->tpu_x_range.min),
SANE_UNFIX (dev->tpu_y_range.min),
@@ -2597,8 +2597,8 @@ attach (const char *dev_name, Epson_Device * *devp, int type)
close_scanner (s);
- /*
- * we are done with this one, prepare for the next scanner:
+ /*
+ * we are done with this one, prepare for the next scanner:
*/
++num_devices;
@@ -2689,7 +2689,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
int numIds;
- /* add the vendor and product IDs to the list of
+ /* add the vendor and product IDs to the list of
known devices before we call the attach function */
numIds = sanei_epson_getNumberOfUSBProductIds ();
if (vendor != 0x4b8)
@@ -2723,7 +2723,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/*
* void sane_exit(void)
*
- * Clean up the list of attached scanners.
+ * Clean up the list of attached scanners.
*/
void
@@ -2914,11 +2914,11 @@ init_options (Epson_Scanner * s)
s->opt[OPT_GAMMA_CORRECTION].type = SANE_TYPE_STRING;
s->opt[OPT_GAMMA_CORRECTION].constraint_type = SANE_CONSTRAINT_STRING_LIST;
- /*
+ /*
* special handling for D1 function level - at this time I'm not
* testing for D1, I'm just assuming that all D level scanners will
* behave the same way. This has to be confirmed with the next D-level
- * scanner
+ * scanner
*/
if (s->hw->cmd->level[0] == 'D')
{
@@ -2944,7 +2944,7 @@ init_options (Epson_Scanner * s)
/* gamma vector */
-/*
+/*
s->opt[ OPT_GAMMA_VECTOR].name = SANE_NAME_GAMMA_VECTOR;
s->opt[ OPT_GAMMA_VECTOR].title = SANE_TITLE_GAMMA_VECTOR;
s->opt[ OPT_GAMMA_VECTOR].desc = SANE_DESC_GAMMA_VECTOR;
@@ -3585,7 +3585,7 @@ sane_close (SANE_Handle handle)
Epson_Scanner *s, *prev;
/*
- * Test if there is still data pending from
+ * Test if there is still data pending from
* the scanner. If so, then do a cancel
*/
@@ -3828,14 +3828,14 @@ handle_source (Epson_Scanner * s, SANE_Int optindex, char *value)
Handles setting the source (flatbed, transparency adapter (TPU),
or auto document feeder (ADF)).
- For newer scanners it also sets the focus according to the
+ For newer scanners it also sets the focus according to the
glass / TPU settings.
*/
{
int force_max = SANE_FALSE;
SANE_Bool dummy;
- /* reset the scanner when we are changing the source setting -
+ /* reset the scanner when we are changing the source setting -
this is necessary for the Perfection 1650 */
if (s->hw->need_reset_on_source_change)
reset (s);
@@ -4237,7 +4237,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
DBG (5, "sane_get_parameters()\n");
- /*
+ /*
* If sane_start was already called, then just retrieve the parameters
* from the scanner data structure
*/
@@ -4275,7 +4275,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
s->params.lines =
SANE_UNFIX (s->val[OPT_BR_Y].w - s->val[OPT_TL_Y].w) / 25.4 * ndpi + 0.5;
- /*
+ /*
* Make sure that the number of lines is correct for color shuffling:
* The shuffling alghorithm produces 2xline_distance lines at the
* beginning and the same amount at the end of the scan that are not
@@ -4302,10 +4302,10 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
SANE_UNFIX (s->val[OPT_BR_Y].w));
- /*
- * Calculate bytes_per_pixel and bytes_per_line for
+ /*
+ * Calculate bytes_per_pixel and bytes_per_line for
* any color depths.
- *
+ *
* The default color depth is stored in mode_params.depth:
*/
@@ -4320,8 +4320,8 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
if (s->params.depth > 8)
{
- s->params.depth = 16; /*
- * The frontends can only handle 8 or 16 bits
+ s->params.depth = 16; /*
+ * The frontends can only handle 8 or 16 bits
* for gray or color - so if it's more than 8,
* it gets automatically set to 16. This works
* as long as EPSON does not come out with a
@@ -4366,7 +4366,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
/*
* sane_start()
*
- * This function is part of the SANE API and gets called from the front end to
+ * This function is part of the SANE API and gets called from the front end to
* start the scan process.
*
*/
@@ -4396,7 +4396,7 @@ sane_start (SANE_Handle handle)
* off 0 ACK
* off 1 NAK
*
- * It makes no sense to scan with TPU powered on and source flatbed, because
+ * It makes no sense to scan with TPU powered on and source flatbed, because
* light will come from both sides.
*/
@@ -4447,7 +4447,7 @@ sane_start (SANE_Handle handle)
}
- /*
+ /*
* set the focus position according to the extension used:
* if the TPU is selected, then focus 2.5mm above the glass,
* otherwise focus on the glass. Scanners that don't support
@@ -4499,7 +4499,7 @@ sane_start (SANE_Handle handle)
}
/*
- * The byte sequence mode was introduced in B5, for B[34] we need line sequence mode
+ * The byte sequence mode was introduced in B5, for B[34] we need line sequence mode
*/
if ((s->hw->cmd->level[0] == 'D' ||
@@ -4641,7 +4641,7 @@ sane_start (SANE_Handle handle)
if (s->hw->cmd->level[0] == 'D')
{
/*
- * The D1 level has only the two user defined gamma
+ * The D1 level has only the two user defined gamma
* settings.
*/
val = gamma_params[s->val[OPT_GAMMA_CORRECTION].w];
@@ -4652,8 +4652,8 @@ sane_start (SANE_Handle handle)
/*
* If "Default" is selected then determine the actual value
- * to send to the scanner: If bilevel mode, just send the
- * value from the table (0x01), for grayscale or color mode
+ * to send to the scanner: If bilevel mode, just send the
+ * value from the table (0x01), for grayscale or color mode
* add one and send 0x02.
*/
/* if( s->val[ OPT_GAMMA_CORRECTION].w <= 1) { */
@@ -4766,7 +4766,7 @@ sane_start (SANE_Handle handle)
/*
- * If WAIT_FOR_BUTTON is active, then do just that: Wait until the button is
+ * If WAIT_FOR_BUTTON is active, then do just that: Wait until the button is
* pressed. If the button was already pressed, then we will get the button
* Pressed event right away.
*/
@@ -4841,8 +4841,8 @@ sane_start (SANE_Handle handle)
s->hw->color_shuffle = SANE_FALSE;
}
-/*
- * for debugging purposes:
+/*
+ * for debugging purposes:
*/
#ifdef FORCE_COLOR_SHUFFLE
DBG (1, "Test mode: FORCE_COLOR_SHUFFLE = TRUE\n");
@@ -4850,7 +4850,7 @@ sane_start (SANE_Handle handle)
#endif
- /*
+ /*
* Modify the scan area: If the scanner requires color shuffling, then we try to
* scan more lines to compensate for the lines that will be removed from the scan
* due to the color shuffling alghorithm.
@@ -4872,7 +4872,7 @@ sane_start (SANE_Handle handle)
s->params.lines += 4 * s->line_distance;
}
- /*
+ /*
* If (top + s->params.lines) is larger than the max scan area, reset
* the number of scan lines:
*/
@@ -4897,7 +4897,7 @@ sane_start (SANE_Handle handle)
lcount = 1;
/*
- * The set line count commands needs to be sent for certain scanners in
+ * The set line count commands needs to be sent for certain scanners in
* color mode. The D1 level requires it, we are however only testing for
* 'D' and not for the actual numeric level.
*/
@@ -5167,7 +5167,7 @@ read_data_block (Epson_Scanner * s, EpsonDataRec * result)
/*
* Hack Alert!!!
- * If the status is SANE_STATUS_DEVICE_BUSY then we need to
+ * If the status is SANE_STATUS_DEVICE_BUSY then we need to
* re-issue the command again. We can assume that the command that
* caused this problem was ESC G, so in a loop with a sleep 1 we
* are testing this over and over and over again, until the lamp
@@ -5319,7 +5319,7 @@ START_READ:
*/
- /*
+ /*
* read the first color line - the number of bytes to read
* is already known (from last call to read_data_block()
* We determine where to write the line from the color information
@@ -5345,7 +5345,7 @@ START_READ:
if (SANE_STATUS_GOOD != status)
return status;
- /*
+ /*
* send the ACK signal to the scanner in order to make
* it ready for the next data block.
*/
@@ -5484,7 +5484,7 @@ START_READ:
*/
/*
- * Some scaners (e.g. the Perfection 1640 and GT-2200) seem
+ * Some scaners (e.g. the Perfection 1640 and GT-2200) seem
* to have the R and G channels swapped.
* The GT-8700 is the Asian version of the Perfection1640.
* If the scanner name is one of these, and the scan mode is
@@ -5499,9 +5499,9 @@ START_READ:
s->params.format == SANE_FRAME_RGB;
/*
- * Certain Perfection 1650 also need this re-ordering of the two
- * color channels. These scanners are identified by the problem
- * with the half vertical scanning area. When we corrected this,
+ * Certain Perfection 1650 also need this re-ordering of the two
+ * color channels. These scanners are identified by the problem
+ * with the half vertical scanning area. When we corrected this,
* we also set the variable s->hw->need_color_reorder
*/
if (s->hw->need_color_reorder)
@@ -5551,7 +5551,7 @@ START_READ:
}
}
- /*
+ /*
* Do the color_shuffle if everything else is correct - at this time
* most of the stuff is hardcoded for the Perfection 610
*/
@@ -5562,8 +5562,8 @@ START_READ:
status = color_shuffle (s, &new_length);
- /*
- * If no bytes are returned, check if the scanner is already done, if so,
+ /*
+ * If no bytes are returned, check if the scanner is already done, if so,
* we'll probably just return, but if there is more data to process get
* the next batch.
*/
@@ -5584,7 +5584,7 @@ START_READ:
- /*
+ /*
* copy the image data to the data memory area
*/
@@ -5689,10 +5689,10 @@ color_shuffle (SANE_Handle handle, int *new_length)
/*
- * Initialize the variables we are going to use for the
+ * Initialize the variables we are going to use for the
* copying of the data. data_ptr is the pointer to
* the currently worked on scan line. data_end is the
- * end of the data area as calculated from adding *length
+ * end of the data area as calculated from adding *length
* to the start of data.
* out_data_ptr is used when writing out the processed data
* and always points to the beginning of the next line to
@@ -5709,7 +5709,7 @@ color_shuffle (SANE_Handle handle, int *new_length)
/*
* The buffer area is supposed to have a number of full scan
- * lines, let's test if this is the case.
+ * lines, let's test if this is the case.
*/
if (length % s->params.bytes_per_line != 0)
@@ -5785,7 +5785,7 @@ color_shuffle (SANE_Handle handle, int *new_length)
*/
/*
- * Strip the first and last n lines and limit to
+ * Strip the first and last n lines and limit to
*/
if ((s->current_output_line >= s->line_distance) &&
(s->current_output_line < s->params.lines + s->line_distance))
@@ -5800,9 +5800,9 @@ color_shuffle (SANE_Handle handle, int *new_length)
/*
- * Now remove the 0-entry and move all other
- * lines up by one. There are 2*line_distance + 1
- * buffers, * therefore the loop has to run from 0
+ * Now remove the 0-entry and move all other
+ * lines up by one. There are 2*line_distance + 1
+ * buffers, * therefore the loop has to run from 0
* to * 2*line_distance, and because we want to
* copy every n+1st entry to n the loop runs
* from - to 2*line_distance-1!
@@ -6008,7 +6008,7 @@ get_identity_information (SANE_Handle handle)
DBG (1, "maximum scan area: x %d y %d\n", x, y);
k = 5;
- /*
+ /*
* Check for Perfection 4990 photo/GT-X800 scanner.
* This scanner only report 3200 dpi back.
* The scanner fysical supports 4800 dpi.
@@ -6031,8 +6031,8 @@ get_identity_information (SANE_Handle handle)
DBG (1, "product name %x %x %x %x %x %x %x %x \n", buf[0], buf[1],buf[2],buf[3],buf[4], buf[5],buf[6], buf[7] );
if (strncmp((char *) buf,"GT-X800",7) == 0)
{
- int val = 0x12 << 8 | 0xC0;
-
+ int val = 0x12 << 8 | 0xC0;
+
s->hw->res_list_size++;
s->hw->res_list =
(SANE_Int *) realloc (s->hw->res_list,
@@ -6169,7 +6169,7 @@ get_identity2_information (SANE_Handle handle)
/*
* void sane_cancel(SANE_Handle handle)
- *
+ *
* Set the cancel flag to true. The next time the backend requests data
* from the scanner the CAN message will be sent.
*/
@@ -6260,7 +6260,7 @@ request_focus_position (SANE_Handle handle, u_char * position)
/*
- * Request the push button status
+ * Request the push button status
* returns SANE_TRUE if the button was pressed
* and SANE_FALSE if the button was not pressed
* it also returns SANE_TRUE in case of an error.
diff --git a/backend/epson.conf.in b/backend/epson.conf.in
index 2cd505f..796541b 100644
--- a/backend/epson.conf.in
+++ b/backend/epson.conf.in
@@ -16,7 +16,7 @@ scsi "EPSON SC"
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner (or to be more
-# accurate, it's device ID) is known to the backend.
+# accurate, it's device ID) is known to the backend.
usb
# For libusb support for unknown scanners use the following command
# usb <product ID> <device ID>
diff --git a/backend/epson2-commands.c b/backend/epson2-commands.c
index eccd4ba..836080a 100644
--- a/backend/epson2-commands.c
+++ b/backend/epson2-commands.c
@@ -199,7 +199,7 @@ round_cct(double org_cct[], int rnd_cct[])
mult_cct[i] = org_cct[i] * 32;
rnd_cct[i] = (int) floor(mult_cct[i] + 0.5);
}
-
+
do {
for (i = 0; i < 3; i++) {
@@ -265,8 +265,8 @@ profile_to_colorcoeff(double *profile, unsigned char *color_coeff)
for (i = 0; i < 9; i++)
color_coeff[i] = int2cpt(color_table[cc_idx[i]]);
}
-
-
+
+
/*
* Sends the "set color correction coefficients" command with the
* currently selected parameters to the scanner.
@@ -825,7 +825,7 @@ esci_request_command_parameter(SANE_Handle handle, unsigned char *buf)
return status;
}
-/* ESC q - Request Focus Position
+/* ESC q - Request Focus Position
* -> ESC q
* <- Information block
* <- Focus position status (2)
diff --git a/backend/epson2-ops.c b/backend/epson2-ops.c
index 1ba2292..ba0d9cb 100644
--- a/backend/epson2-ops.c
+++ b/backend/epson2-ops.c
@@ -66,7 +66,7 @@
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set bay
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set threshold
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | set focus position
- * | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request focus position
+ * | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request focus position
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request extended identity
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request scanner status
* | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
@@ -160,7 +160,7 @@ e2_dev_init(Epson_Device *dev, const char *devname, int conntype)
dev->need_double_vertical = SANE_FALSE;
dev->cct_profile = &epson_cct_profiles[0]; /* default profile */
-
+
dev->cmd = &epson_cmd[EPSON_LEVEL_DEFAULT];
/* Change default level when using a network connection */
@@ -936,8 +936,8 @@ e2_set_extended_scanning_parameters(Epson_Scanner * s)
}
if (s->val[OPT_MODE].w == MODE_INFRARED) {
- /* only infrared in TPU mode (NOT in TPU2 or flatbeth)
- * XXX investigate this ... only tested on GT-X800
+ /* only infrared in TPU mode (NOT in TPU2 or flatbeth)
+ * XXX investigate this ... only tested on GT-X800
*/
if (extensionCtrl == 1) /* test for TPU */
diff --git a/backend/epson2.c b/backend/epson2.c
index df84b1d..f119018 100644
--- a/backend/epson2.c
+++ b/backend/epson2.c
@@ -241,7 +241,7 @@ enum {
* therefore I define two different sets of arrays, plus one set of
* variables that get set to the actally used params and list arrays at runtime.
*/
-
+
static int gamma_params_ab[] = {
0x01,
0x03,
@@ -303,7 +303,6 @@ static const SANE_String_Const bay_list[] = {
/* minimum, maximum, quantization */
static const SANE_Range u8_range = { 0, 255, 0 };
-static const SANE_Range s8_range = { -127, 127, 0 };
static const SANE_Range fx_range = { SANE_FIX(-2.0), SANE_FIX(2.0), 0 };
static const SANE_Range outline_emphasis_range = { -2, 2, 0 };
@@ -497,7 +496,7 @@ open_scanner(Epson_Scanner *s)
DBG(32, "scanner locked\n");
}
-
+
} else if (s->hw->connection == SANE_EPSON_SCSI)
status = sanei_scsi_open(s->hw->sane.name, &s->fd,
sanei_epson2_scsi_sense_handler,
@@ -515,7 +514,7 @@ open_scanner(Epson_Scanner *s)
DBG(1, "disable any conflicting driver (like usblp).\n");
}
- if (status != SANE_STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
DBG(1, "%s open failed: %s\n", s->hw->sane.name,
sane_strstatus(status));
else
@@ -604,7 +603,7 @@ detect_usb(struct Epson_Scanner *s, SANE_Bool assume_valid)
DBG(1, "the device cannot be verified - will continue\n");
return SANE_STATUS_GOOD;
}
-
+
/* check the vendor ID to see if we are dealing with an EPSON device */
if (vendor != SANE_EPSON_VENDOR_ID) {
/* this is not a supported vendor ID */
@@ -631,11 +630,11 @@ detect_usb(struct Epson_Scanner *s, SANE_Bool assume_valid)
s->hw->sane.name, product);
return SANE_STATUS_INVAL;
}
-
+
DBG(1, "found valid Epson scanner: 0x%x/0x%x (vendorID/productID)\n",
vendor, product);
- return SANE_STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
static int num_devices; /* number of scanners attached to backend */
@@ -684,7 +683,7 @@ device_detect(const char *name, int type, SANE_Bool assume_valid, SANE_Status *s
*status = SANE_STATUS_INVAL;
return NULL;
}
-
+
/* alloc and clear our device structure */
dev = malloc(sizeof(*dev));
if (!dev) {
@@ -797,7 +796,7 @@ attach_one_usb(const char *dev)
static SANE_Status
attach_one_net(const char *dev)
{
- char name[39+4];
+ char name[39+4];
DBG(7, "%s: dev = %s\n", __func__, dev);
@@ -821,7 +820,7 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
int len = strlen(line);
DBG(7, "%s: len = %d, line = %s\n", __func__, len, line);
-
+
if (sscanf(line, "usb %i %i", &vendor, &product) == 2) {
/* add the vendor and product IDs to the list of
@@ -1248,7 +1247,7 @@ init_options(Epson_Scanner *s)
/* if (!s->hw->cmd->set_color_correction)
s->opt[OPT_FILM_TYPE].cap |= SANE_CAP_INACTIVE;
-*/
+*/
/* mirror */
s->opt[OPT_MIRROR].name = "mirror";
@@ -1501,12 +1500,12 @@ sane_open(SANE_String_Const name, SANE_Handle *handle)
if (s == NULL)
return status;
} else {
-
+
/* as a last resort, check for a match
* in the device list. This should handle SCSI
* devices and platforms without libusb.
*/
-
+
if (first_dev == NULL)
probe_devices();
@@ -1515,7 +1514,7 @@ sane_open(SANE_String_Const name, SANE_Handle *handle)
DBG(1, "invalid device name: %s\n", name);
return SANE_STATUS_INVAL;
}
- }
+ }
}
@@ -1538,7 +1537,7 @@ sane_open(SANE_String_Const name, SANE_Handle *handle)
}
*handle = (SANE_Handle)s;
-
+
return SANE_STATUS_GOOD;
}
@@ -2132,7 +2131,7 @@ sane_start(SANE_Handle handle)
return status;
}
-
+
if (s->val[OPT_COLOR_CORRECTION].w == CORR_AUTO) { /* Automatic */
DBG(1, "using built in CCT profile\n");
@@ -2142,7 +2141,7 @@ sane_start(SANE_Handle handle)
if (0) { /* XXX TPU */
-
+
/* XXX check this */
if (s->val[OPT_FILM_TYPE].w == 0)
e2_load_cct_profile(s, CCTP_COLORPOS);
@@ -2153,7 +2152,7 @@ sane_start(SANE_Handle handle)
e2_load_cct_profile(s, CCTP_REFLECTIVE);
}
}
-
+
/* ESC m, user defined color correction */
if (s->hw->cmd->set_color_correction_coefficients
&& correction_userdefined[s->val[OPT_COLOR_CORRECTION].w]) {
diff --git a/backend/epson2.conf.in b/backend/epson2.conf.in
index 797df2d..b41c862 100644
--- a/backend/epson2.conf.in
+++ b/backend/epson2.conf.in
@@ -21,7 +21,6 @@ usb
# usb 0x4b8 0x110
# Network
-#
+#
# net 192.168.1.123
net autodiscovery
-
diff --git a/backend/epson2_net.c b/backend/epson2_net.c
index 4b3e7e9..8d0fe9e 100644
--- a/backend/epson2_net.c
+++ b/backend/epson2_net.c
@@ -124,7 +124,7 @@ sanei_epson_net_read(Epson_Scanner *s, unsigned char *buf, ssize_t wanted,
if (read < 0) {
return 0;
}
-
+
/* } else if (wanted < size && s->netlen == size) { */
} else {
DBG(23, "%s: partial read\n", __func__);
@@ -187,7 +187,7 @@ sanei_epson_net_write(Epson_Scanner *s, unsigned int cmd, const unsigned char *b
DBG(24, "H1[0]: %02x %02x %02x %02x\n", h1[0], h1[1], h1[2], h1[3]);
if((cmd >> 8) == 0x20) {
- htobe32a(&h1[6], buf_size + 8);
+ htobe32a(&h1[6], buf_size + 8);
htobe32a(&h2[0], buf_size);
htobe32a(&h2[4], reply_len);
diff --git a/backend/epson2_usb.c b/backend/epson2_usb.c
index 8e29943..87830c6 100644
--- a/backend/epson2_usb.c
+++ b/backend/epson2_usb.c
@@ -17,7 +17,11 @@ SANE_Word sanei_epson_usb_product_ids[] = {
0x10c, /* GT-6700U, Perfection 640U */
0x10e, /* ES-2200, Expression 1680 */
0x110, /* GT-8200U, GT-8200UF, Perfection 1650, Perfection 1650 PHOTO */
+ 0x1116, /* XP-243 245 247 Series, XP-427 */
0x112, /* GT-9700F, Perfection 2450 PHOTO */
+ 0x1120, /* L380 */
+ 0x1121, /* ET-2650, L495 */
+ 0x113d, /* XP-255 */
0x11b, /* GT-9300UF, Perfection 2400 PHOTO */
0x11c, /* GT-9800F, Perfection 3200 PHOTO */
0x11e, /* GT-8300UF, Perfection 1660 PHOTO */
@@ -31,6 +35,7 @@ SANE_Word sanei_epson_usb_product_ids[] = {
0x138, /* ES-H7200, GT-20000 */
0x14b, /* ES-G11000, Expression 11000XL */
0x151, /* GT-X980, Perfection V800 Photo, Perfection V850 Pro */
+ 0x15b, /* DS-G20000, Expression 12000XL */
0x801, /* CC-600PX, Stylus CX5100, Stylus CX5200 */
0x802, /* CC-570L, Stylus CX3100, Stylus CX3200 */
0x805, /* Stylus CX6300, Stylus CX6400 */
@@ -171,7 +176,7 @@ SANE_Word sanei_epson_usb_product_ids[] = {
0x8ca, /* L850 Series */
0x8cd, /* WF-R4640 Series, WF-R5690 Series */
0x8d0, /* PX-M350F, WF-M5690 Series */
- 0 /* last entry - this is used for devices that are specified
+ 0 /* last entry - this is used for devices that are specified
in the config file as "usb <vendor> <product>" */
};
diff --git a/backend/epson_usb.c b/backend/epson_usb.c
index 520b49f..7fc5c91 100644
--- a/backend/epson_usb.c
+++ b/backend/epson_usb.c
@@ -41,7 +41,7 @@ SANE_Word sanei_epson_usb_product_ids[] = {
0x82e, /* DX-6000 */
0x82f, /* DX-4050 */
0x838, /* DX-7400 */
- 0 /* last entry - this is used for devices that are specified
+ 0 /* last entry - this is used for devices that are specified
in the config file as "usb <vendor> <product>" */
};
diff --git a/backend/epsonds-cmd.h b/backend/epsonds-cmd.h
index 923e811..973609a 100644
--- a/backend/epsonds-cmd.h
+++ b/backend/epsonds-cmd.h
@@ -26,4 +26,3 @@ SANE_Status esci2_trdt(epsonds_scanner *s);
SANE_Status esci2_img(struct epsonds_scanner *s, SANE_Int *length) ;
#endif
-
diff --git a/backend/epsonds-io.c b/backend/epsonds-io.c
index e153ad4..0baa125 100644
--- a/backend/epsonds-io.c
+++ b/backend/epsonds-io.c
@@ -186,5 +186,3 @@ SANE_Status eds_lock(epsonds_scanner *s)
return status;
}
-
-
diff --git a/backend/epsonds-io.h b/backend/epsonds-io.h
index 1bb67c6..b3b3735 100644
--- a/backend/epsonds-io.h
+++ b/backend/epsonds-io.h
@@ -30,4 +30,3 @@ SANE_Status eds_fsx(epsonds_scanner *s);
SANE_Status eds_lock(epsonds_scanner *s);
#endif
-
diff --git a/backend/epsonds-jpeg.c b/backend/epsonds-jpeg.c
index 62e8bb5..244f442 100644
--- a/backend/epsonds-jpeg.c
+++ b/backend/epsonds-jpeg.c
@@ -224,5 +224,3 @@ eds_jpeg_read(SANE_Handle handle, SANE_Byte *data,
memcpy(data, src->linebuffer + src->linebuffer_index, *length);
src->linebuffer_index += *length;
}
-
-
diff --git a/backend/epsonds-ops.c b/backend/epsonds-ops.c
index f7a07fb..8b9d115 100644
--- a/backend/epsonds-ops.c
+++ b/backend/epsonds-ops.c
@@ -490,5 +490,3 @@ void eds_ring_flush(ring_buffer *ring)
{
eds_ring_skip(ring, ring->fill);
}
-
-
diff --git a/backend/epsonds-ops.h b/backend/epsonds-ops.h
index ac5e71b..fe503d6 100644
--- a/backend/epsonds-ops.h
+++ b/backend/epsonds-ops.h
@@ -38,4 +38,3 @@ extern SANE_Int eds_ring_read(ring_buffer *ring, SANE_Byte *buf, SANE_Int size);
extern SANE_Int eds_ring_skip(ring_buffer *ring, SANE_Int size);
extern SANE_Int eds_ring_avail(ring_buffer *ring);
extern void eds_ring_flush(ring_buffer *ring) ;
-
diff --git a/backend/epsonds.c b/backend/epsonds.c
index 218e08c..d402f58 100644
--- a/backend/epsonds.c
+++ b/backend/epsonds.c
@@ -41,6 +41,12 @@
#include "sane/config.h"
#include <ctype.h>
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
#include <unistd.h>
#include "sane/saneopts.h"
diff --git a/backend/fujitsu-scsi.h b/backend/fujitsu-scsi.h
index 42598cb..38425a6 100644
--- a/backend/fujitsu-scsi.h
+++ b/backend/fujitsu-scsi.h
@@ -1,9 +1,9 @@
#ifndef FUJITSU_SCSI_H
#define FUJITSU_SCSI_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
- *
+ *
* Please see to opening comments in fujitsu.c
*/
@@ -233,7 +233,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_IN_has_cmd_sdiag(in) getbitfield(in+0x28, 1, 2)
#define get_IN_has_cmd_rdiag(in) getbitfield(in+0x28, 1, 1)
#define get_IN_has_cmd_scan(in) getbitfield(in+0x28, 1, 0)
-
+
#define get_IN_has_cmd_msen6(in) getbitfield(in+0x29, 1, 7)
#define get_IN_has_cmd_copy(in) getbitfield(in+0x29, 1, 6)
#define get_IN_has_cmd_rel(in) getbitfield(in+0x29, 1, 5)
@@ -244,7 +244,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_IN_has_cmd_tur(in) getbitfield(in+0x29, 1, 0)
/* more stuff here? (vendor commands) */
-#define get_IN_has_cmd_subwindow(in) getbitfield(in+0x2b, 1, 0)
+#define get_IN_has_cmd_subwindow(in) getbitfield(in+0x2b, 1, 0)
#define get_IN_has_cmd_endorser(in) getbitfield(in+0x2b, 1, 1)
#define get_IN_has_cmd_hw_status(in) getbitfield(in+0x2b, 1, 2)
#define get_IN_has_cmd_hw_status_2(in) getbitfield(in+0x2b, 1, 3)
@@ -276,7 +276,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_IN_ipc_ipc3(in) getbitfield(in+0x59, 1, 5)
#define get_IN_ipc_rotation(in) getbitfield(in+0x59, 1, 4)
#define get_IN_ipc_hybrid_crop_deskew(in) getbitfield(in+0x59, 1, 3)
-#define get_IN_ipc_ipc2_byte67(in) getbitfield(in+0x59, 1, 0)
+#define get_IN_vpd_thru_byte_6f(in) getbitfield(in+0x59, 1, 0)
#define get_IN_compression_MH(in) getbitfield(in+0x5a, 1, 7)
#define get_IN_compression_MR(in) getbitfield(in+0x5a, 1, 6)
@@ -383,9 +383,6 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_IN_op_halt(in) getbitfield(in+0x7a, 1, 7)
-/* some scanners need evpd inquiry data manipulated */
-#define set_IN_page_length(in,val) in[0x04]=val
-
/* ==================================================================== */
/* page codes used by mode_sense and mode_select */
#define MS_pc_unk 0x2c /* Used by iX500 */
@@ -413,7 +410,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define set_MSEL_pf(sb, val) setbitfield(sb + 1, 1, 4, val)
#define set_MSEL_xferlen(sb, val) sb[0x04] = (unsigned char)val
-/* MS payloads are combined 4 byte header and 8 or 10 byte page
+/* MS payloads are combined 4 byte header and 8 or 10 byte page
* there is also 'descriptor block' & 'vendor-specific block'
* but fujitsu seems not to use these */
/* 10 byte page only used by dropout? */
@@ -439,7 +436,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define set_MSEL_df_thickness(sb, val) setbitfield(sb + 2, 1, 4, val)
#define set_MSEL_df_length(sb, val) setbitfield(sb + 2, 1, 3, val)
#define set_MSEL_df_diff(sb, val) setbitfield(sb + 2, 3, 0, val)
-#define MSEL_df_diff_DEFAULT 0
+#define MSEL_df_diff_DEFAULT 0
#define MSEL_df_diff_10MM 1
#define MSEL_df_diff_15MM 2
#define MSEL_df_diff_20MM 3
@@ -940,7 +937,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_WD_contrast(sb) sb[0x18]
/* 0x19 - Image Composition (color mode)
- * 3091 - use 0x00 for line art, 0x01 for halftone,
+ * 3091 - use 0x00 for line art, 0x01 for halftone,
* 0x02 for grayscale, 0x05 for color.
* 3096 - same but minus color.
*/
@@ -961,9 +958,9 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_WD_bitsperpixel(sb) sb[0x1a]
/* 0x1b,0x1c - Halftone Pattern
- * 3091 byte 1b: 00h default(=dither), 01h dither,
+ * 3091 byte 1b: 00h default(=dither), 01h dither,
* 02h error dispersion
- * 1c: 00 dark images, 01h dark text+images,
+ * 1c: 00 dark images, 01h dark text+images,
* 02h light images,
* 03h light text+images, 80h download pattern
* 3096: 1b unused; 1c bit 7=1: use downloadable pattern,
@@ -983,8 +980,8 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/* 0x1d - Reverse image, padding type
* 3091: bit 7=1: reverse black&white
* bits 0-2: padding type, must be 0
- * 3096: the same; bit 7 must be set for gray and not
- * set for b/w.
+ * 3096: the same; bit 7 must be set for gray and not
+ * set for b/w.
*/
#define set_WD_rif(sb, val) setbitfield(sb + 0x1d, 1, 7, val)
#define get_WD_rif(sb) getbitfield(sb + 0x1d, 1, 7)
diff --git a/backend/fujitsu.c b/backend/fujitsu.c
index 433f75a..3ac4c8e 100644
--- a/backend/fujitsu.c
+++ b/backend/fujitsu.c
@@ -107,7 +107,7 @@
- removed SP15 code
- sane_open actually opens the device you request
v11 2003-06-11, MAN
- - fixed bug in that code when a scanner is disconnected
+ - fixed bug in that code when a scanner is disconnected
v12 2003-10-06, MAN
- added code to support color modes of more recent scanners
v13 2003-11-07, OS
@@ -136,7 +136,7 @@
v19 2004-06-28, MAN
- 4220 use model code not strcmp (stan a t saticed.me.uk)
v20 2004-08-24, OS
- - bugfix: 3091 did not work since 15.12.2003
+ - bugfix: 3091 did not work since 15.12.2003
- M4099 supported (bw only)
v21 2006-05-01, MAN
- Complete rewrite, half code size
@@ -264,7 +264,7 @@
- change window_gamma determination
- add fi-5650C usb id and color mode
v48 2007-04-16, MAN
- - re-enable brightness/contrast for built-in models
+ - re-enable brightness/contrast for built-in models
v49 2007-06-28, MAN
- add fi-5750C usb id and color mode
v50 2007-07-10, MAN
@@ -600,6 +600,9 @@
- initial support for fi-7600/7700
- autodetect various double feed capabilities using VPD
- call send_lut if we are using a downloaded gamma table
+ v134 2019-02-23, MAN
+ - rewrite init_vpd for scanners which fail to report
+ overscan correctly
SANE FLOW DIAGRAM
@@ -617,7 +620,7 @@
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times; after sane_read returns EOF,
+ . . (sane_read called multiple times; after sane_read returns EOF,
. . loop may continue with sane_start which may return a 2nd page
. . when doing duplex scans, or load the next page from the ADF)
. .
@@ -649,14 +652,14 @@
#include "fujitsu.h"
#define DEBUG 1
-#define BUILD 133
+#define BUILD 134
/* values for SANE_DEBUG_FUJITSU env var:
- errors 5
- function trace 10
- function detail 15
- get/setopt cmds 20
- - scsi/usb trace 25
+ - scsi/usb trace 25
- scsi/usb writes 30
- scsi/usb reads 31
- useless noise 35
@@ -736,7 +739,7 @@ static struct fujitsu *fujitsu_devList = NULL;
/*
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -770,7 +773,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/*
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -783,7 +786,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -827,39 +830,39 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
FUJITSU_CONFIG_FILE);
while (sanei_config_read (line, PATH_MAX, fp)) {
-
+
lp = line;
-
+
/* ignore comments */
if (*lp == '#')
continue;
-
+
/* skip empty lines */
if (*lp == 0)
continue;
-
+
if ((strncmp ("option", lp, 6) == 0) && isspace (lp[6])) {
-
+
lp += 6;
lp = sanei_config_skip_whitespace (lp);
-
+
/* we allow setting buffersize too big */
if ((strncmp (lp, "buffer-size", 11) == 0) && isspace (lp[11])) {
-
+
int buf;
lp += 11;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf < 4096) {
DBG (5, "sane_get_devices: config option \"buffer-size\" (%d) is < 4096, ignoring!\n", buf);
continue;
}
-
+
if (buf > 64*1024) {
DBG (5, "sane_get_devices: config option \"buffer-size\" (%d) is > %d, warning!\n", buf, 64*1024);
}
-
+
DBG (15, "sane_get_devices: setting \"buffer-size\" to %d\n", buf);
global_buffer_size = buf;
}
@@ -956,8 +959,8 @@ attach_one_usb (const char *device_name)
return attach_one(device_name,CONNECTION_USB);
}
-/* build the scanner struct and link to global list
- * unless struct is already loaded, then pretend
+/* build the scanner struct and link to global list
+ * unless struct is already loaded, then pretend
*/
static SANE_Status
attach_one (const char *device_name, int connType)
@@ -1105,7 +1108,7 @@ connect_fd (struct fujitsu *s)
}
else {
DBG (15, "connect_fd: opening SCSI device\n");
- ret = sanei_scsi_open_extended (s->device_name, &(s->fd), sense_handler, s,
+ ret = sanei_scsi_open_extended (s->device_name, &(s->fd), sense_handler, s,
&s->buffer_size);
if(!ret && buffer_size != s->buffer_size){
DBG (5, "connect_fd: cannot get requested buffer size (%d/%d)\n",
@@ -1115,8 +1118,8 @@ connect_fd (struct fujitsu *s)
if(ret == SANE_STATUS_GOOD){
- /* first generation usb scanners can get flaky if not closed
- * properly after last use. very first commands sent to device
+ /* first generation usb scanners can get flaky if not closed
+ * properly after last use. very first commands sent to device
* must be prepared to correct this- see wait_scanner() */
ret = wait_scanner(s);
if (ret != SANE_STATUS_GOOD) {
@@ -1157,9 +1160,9 @@ init_inquire (struct fujitsu *s)
set_IN_return_size (cmd, inLen);
set_IN_evpd (cmd, 0);
set_IN_page_code (cmd, 0);
-
+
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
NULL, 0,
in, &inLen
@@ -1238,6 +1241,8 @@ init_vpd (struct fujitsu *s)
unsigned char in[INQUIRY_vpd_len];
size_t inLen = INQUIRY_vpd_len;
+ int payload_len, payload_off;
+
DBG (10, "init_vpd: start\n");
/* get EVPD */
@@ -1254,531 +1259,573 @@ init_vpd (struct fujitsu *s)
in, &inLen
);
+ /*FIXME no vpd, set some defaults? */
+ if (ret != SANE_STATUS_GOOD && ret != SANE_STATUS_EOF) {
+ DBG (5, "init_vpd: Your scanner does not support VPD?\n");
+ DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
+ DBG (5, "init_vpd: with details of your scanner model.\n");
+ return ret;
+ }
+
+ /* In byte 4, the scanner sends the length of the remainder of
+ * the payload. But, this value is often bogus. */
+ payload_len = get_IN_page_length(in);
+
+ DBG (15, "init_vpd: length=%0x\n", payload_len);
+
/* M3099 gives all data, but wrong length */
- if (strstr (s->model_name, "M3099")
- && (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF)
- && get_IN_page_length (in) == 0x19){
- DBG (5, "init_vpd: M3099 repair\n");
- set_IN_page_length(in,0x5f);
+ if (strstr (s->model_name, "M3099") && payload_len == 0x19){
+ DBG (5, "init_vpd: M3099 repair\n");
+ payload_len = 0x5f;
}
/* M3097G has short vpd, fill in missing part */
- else if (strstr (s->model_name, "M3097G")
- && (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF)
- && get_IN_page_length (in) == 0x19){
- unsigned char vpd3097g[] = {
+ else if (strstr (s->model_name, "M3097G") && payload_len == 0x19){
+ unsigned char vpd3097g[] = {
0, 0,
0xc2, 0x08, 0, 0, 0, 0, 0, 0, 0xed, 0xbf, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0xff, 0xff, 0xff, 0, 0x45, 0x35, 0, 0xe0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0
- };
- DBG (5, "init_vpd: M3097G repair\n");
- set_IN_page_length(in,0x5f);
- memcpy(in+0x1e,vpd3097g,sizeof(vpd3097g));
+ };
- /*IPC*/
- if(strstr (s->model_name, "i")){
- DBG (5, "init_vpd: M3097G IPC repair\n");
+ DBG (5, "init_vpd: M3097G repair\n");
+ payload_len = 0x5f;
+ memcpy(in+0x1e,vpd3097g,sizeof(vpd3097g));
- /*subwin cmd*/
- in[0x2b] = 1;
+ /*IPC*/
+ if(strstr (s->model_name, "i")){
+ DBG (5, "init_vpd: M3097G IPC repair\n");
- /*rif/dtc/sdtc/outline/emph/sep/mirr/wlf*/
- in[0x58] = 0xff;
+ /*subwin cmd*/
+ in[0x2b] = 1;
- /*subwin/diffusion*/
- in[0x59] = 0xc0;
- }
+ /*rif/dtc/sdtc/outline/emph/sep/mirr/wlf*/
+ in[0x58] = 0xff;
- /*CMP*/
- if(strstr (s->model_name, "m")){
- DBG (5, "init_vpd: M3097G CMP repair\n");
+ /*subwin/diffusion*/
+ in[0x59] = 0xc0;
+ }
- /*4megs*/
- in[0x23] = 0x40;
+ /*CMP*/
+ if(strstr (s->model_name, "m")){
+ DBG (5, "init_vpd: M3097G CMP repair\n");
- /*mh/mr/mmr*/
- in[0x5a] = 0xe0;
- }
+ /*4megs*/
+ in[0x23] = 0x40;
+
+ /*mh/mr/mmr*/
+ in[0x5a] = 0xe0;
+ }
}
- DBG (15, "init_vpd: length=%0x\n",get_IN_page_length (in));
+ /* all other known scanners have at least 0x5f,
+ * less would require software changes like above */
+ else if (payload_len < 0x5f) {
+ DBG (5, "init_vpd: Your scanner supports only partial VPD?\n");
+ DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
+ DBG (5, "init_vpd: with details of your scanner model.\n");
+ return SANE_STATUS_INVAL;
+ }
- /* This scanner supports vital product data.
- * Use this data to set dpi-lists etc. */
- if (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF) {
+ /* Special case- some scanners will under-report the amount of
+ * valid vpd that they send, and return the default length.
+ * Adding 4 more bytes allows us to include the overscan info.
+ * Scanners that don't support overscan seem to have all zeros
+ * in these bytes, so no harm is done.
+ * This may be an 'off-by-four' error in the firmware. */
+ else if (payload_len == 0x5f){
+ payload_len += 4;
+ }
- DBG (15, "standard options\n");
+ /* Having an offset from the beginning of the payload
+ * is more useful than from byte 4, as that matches the
+ * documentation more closely. */
+ payload_off = payload_len + 4;
- s->basic_x_res = get_IN_basic_x_res (in);
- DBG (15, " basic x res: %d dpi\n",s->basic_x_res);
+ /* everything that appears in bytes 0 to 0x1d */
+ DBG (15, "standard options\n");
- s->basic_y_res = get_IN_basic_y_res (in);
- DBG (15, " basic y res: %d dpi\n",s->basic_y_res);
+ s->basic_x_res = get_IN_basic_x_res (in);
+ DBG (15, " basic x res: %d dpi\n",s->basic_x_res);
- s->step_x_res[MODE_LINEART] = get_IN_step_x_res (in);
- DBG (15, " step x res: %d dpi\n", s->step_x_res[MODE_LINEART]);
+ s->basic_y_res = get_IN_basic_y_res (in);
+ DBG (15, " basic y res: %d dpi\n",s->basic_y_res);
- s->step_y_res[MODE_LINEART] = get_IN_step_y_res (in);
- DBG (15, " step y res: %d dpi\n", s->step_y_res[MODE_LINEART]);
+ s->step_x_res[MODE_LINEART] = get_IN_step_x_res (in);
+ DBG (15, " step x res: %d dpi\n", s->step_x_res[MODE_LINEART]);
- s->max_x_res = get_IN_max_x_res (in);
- DBG (15, " max x res: %d dpi\n", s->max_x_res);
+ s->step_y_res[MODE_LINEART] = get_IN_step_y_res (in);
+ DBG (15, " step y res: %d dpi\n", s->step_y_res[MODE_LINEART]);
- s->max_y_res = get_IN_max_y_res (in);
- DBG (15, " max y res: %d dpi\n", s->max_y_res);
+ s->max_x_res = get_IN_max_x_res (in);
+ DBG (15, " max x res: %d dpi\n", s->max_x_res);
- s->min_x_res = get_IN_min_x_res (in);
- DBG (15, " min x res: %d dpi\n", s->min_x_res);
+ s->max_y_res = get_IN_max_y_res (in);
+ DBG (15, " max y res: %d dpi\n", s->max_y_res);
- s->min_y_res = get_IN_min_y_res (in);
- DBG (15, " min y res: %d dpi\n", s->min_y_res);
+ s->min_x_res = get_IN_min_x_res (in);
+ DBG (15, " min x res: %d dpi\n", s->min_x_res);
- /* some scanners list B&W resolutions. */
- s->std_res[0] = get_IN_std_res_60 (in);
- DBG (15, " 60 dpi: %d\n", s->std_res[0]);
+ s->min_y_res = get_IN_min_y_res (in);
+ DBG (15, " min y res: %d dpi\n", s->min_y_res);
- s->std_res[1] = get_IN_std_res_75 (in);
- DBG (15, " 75 dpi: %d\n", s->std_res[1]);
+ /* some scanners list B&W resolutions. */
+ s->std_res[0] = get_IN_std_res_60 (in);
+ DBG (15, " 60 dpi: %d\n", s->std_res[0]);
- s->std_res[2] = get_IN_std_res_100 (in);
- DBG (15, " 100 dpi: %d\n", s->std_res[2]);
+ s->std_res[1] = get_IN_std_res_75 (in);
+ DBG (15, " 75 dpi: %d\n", s->std_res[1]);
- s->std_res[3] = get_IN_std_res_120 (in);
- DBG (15, " 120 dpi: %d\n", s->std_res[3]);
+ s->std_res[2] = get_IN_std_res_100 (in);
+ DBG (15, " 100 dpi: %d\n", s->std_res[2]);
- s->std_res[4] = get_IN_std_res_150 (in);
- DBG (15, " 150 dpi: %d\n", s->std_res[4]);
+ s->std_res[3] = get_IN_std_res_120 (in);
+ DBG (15, " 120 dpi: %d\n", s->std_res[3]);
- s->std_res[5] = get_IN_std_res_160 (in);
- DBG (15, " 160 dpi: %d\n", s->std_res[5]);
+ s->std_res[4] = get_IN_std_res_150 (in);
+ DBG (15, " 150 dpi: %d\n", s->std_res[4]);
- s->std_res[6] = get_IN_std_res_180 (in);
- DBG (15, " 180 dpi: %d\n", s->std_res[6]);
+ s->std_res[5] = get_IN_std_res_160 (in);
+ DBG (15, " 160 dpi: %d\n", s->std_res[5]);
- s->std_res[7] = get_IN_std_res_200 (in);
- DBG (15, " 200 dpi: %d\n", s->std_res[7]);
+ s->std_res[6] = get_IN_std_res_180 (in);
+ DBG (15, " 180 dpi: %d\n", s->std_res[6]);
- s->std_res[8] = get_IN_std_res_240 (in);
- DBG (15, " 240 dpi: %d\n", s->std_res[8]);
+ s->std_res[7] = get_IN_std_res_200 (in);
+ DBG (15, " 200 dpi: %d\n", s->std_res[7]);
- s->std_res[9] = get_IN_std_res_300 (in);
- DBG (15, " 300 dpi: %d\n", s->std_res[9]);
+ s->std_res[8] = get_IN_std_res_240 (in);
+ DBG (15, " 240 dpi: %d\n", s->std_res[8]);
- s->std_res[10] = get_IN_std_res_320 (in);
- DBG (15, " 320 dpi: %d\n", s->std_res[10]);
+ s->std_res[9] = get_IN_std_res_300 (in);
+ DBG (15, " 300 dpi: %d\n", s->std_res[9]);
- s->std_res[11] = get_IN_std_res_400 (in);
- DBG (15, " 400 dpi: %d\n", s->std_res[11]);
+ s->std_res[10] = get_IN_std_res_320 (in);
+ DBG (15, " 320 dpi: %d\n", s->std_res[10]);
- s->std_res[12] = get_IN_std_res_480 (in);
- DBG (15, " 480 dpi: %d\n", s->std_res[12]);
+ s->std_res[11] = get_IN_std_res_400 (in);
+ DBG (15, " 400 dpi: %d\n", s->std_res[11]);
- s->std_res[13] = get_IN_std_res_600 (in);
- DBG (15, " 600 dpi: %d\n", s->std_res[13]);
+ s->std_res[12] = get_IN_std_res_480 (in);
+ DBG (15, " 480 dpi: %d\n", s->std_res[12]);
- s->std_res[14] = get_IN_std_res_800 (in);
- DBG (15, " 800 dpi: %d\n", s->std_res[14]);
+ s->std_res[13] = get_IN_std_res_600 (in);
+ DBG (15, " 600 dpi: %d\n", s->std_res[13]);
- s->std_res[15] = get_IN_std_res_1200 (in);
- DBG (15, " 1200 dpi: %d\n", s->std_res[15]);
+ s->std_res[14] = get_IN_std_res_800 (in);
+ DBG (15, " 800 dpi: %d\n", s->std_res[14]);
- /* maximum window width and length are reported in basic units.*/
- s->max_x_basic = get_IN_window_width(in);
- DBG(15, " max width: %2.2f inches\n",(float)s->max_x_basic/s->basic_x_res);
+ s->std_res[15] = get_IN_std_res_1200 (in);
+ DBG (15, " 1200 dpi: %d\n", s->std_res[15]);
- s->max_y_basic = get_IN_window_length(in);
- DBG(15, " max length: %2.2f inches\n",(float)s->max_y_basic/s->basic_y_res);
+ /* maximum window width and length are reported in basic units.*/
+ s->max_x_basic = get_IN_window_width(in);
+ DBG(15, " max width: %2.2f inches\n",(float)s->max_x_basic/s->basic_x_res);
- /* known modes */
- s->can_overflow = get_IN_overflow(in);
- DBG (15, " overflow: %d\n", s->can_overflow);
+ s->max_y_basic = get_IN_window_length(in);
+ DBG(15, " max length: %2.2f inches\n",(float)s->max_y_basic/s->basic_y_res);
- s->can_mode[MODE_LINEART] = get_IN_monochrome (in);
- DBG (15, " monochrome: %d\n", s->can_mode[MODE_LINEART]);
+ /* known modes */
+ s->can_overflow = get_IN_overflow(in);
+ DBG (15, " overflow: %d\n", s->can_overflow);
- s->can_mode[MODE_HALFTONE] = get_IN_half_tone (in);
- DBG (15, " halftone: %d\n", s->can_mode[MODE_HALFTONE]);
+ s->can_mode[MODE_LINEART] = get_IN_monochrome (in);
+ DBG (15, " monochrome: %d\n", s->can_mode[MODE_LINEART]);
- s->can_mode[MODE_GRAYSCALE] = get_IN_multilevel (in);
- DBG (15, " grayscale: %d\n", s->can_mode[MODE_GRAYSCALE]);
+ s->can_mode[MODE_HALFTONE] = get_IN_half_tone (in);
+ DBG (15, " halftone: %d\n", s->can_mode[MODE_HALFTONE]);
- DBG (15, " color_monochrome: %d\n", get_IN_monochrome_rgb(in));
- DBG (15, " color_halftone: %d\n", get_IN_half_tone_rgb(in));
+ s->can_mode[MODE_GRAYSCALE] = get_IN_multilevel (in);
+ DBG (15, " grayscale: %d\n", s->can_mode[MODE_GRAYSCALE]);
- s->can_mode[MODE_COLOR] = get_IN_multilevel_rgb (in);
- DBG (15, " color_grayscale: %d\n", s->can_mode[MODE_COLOR]);
+ DBG (15, " color_monochrome: %d\n", get_IN_monochrome_rgb(in));
+ DBG (15, " color_halftone: %d\n", get_IN_half_tone_rgb(in));
- /* now we look at vendor specific data */
- if (get_IN_page_length (in) >= 0x5f) {
+ s->can_mode[MODE_COLOR] = get_IN_multilevel_rgb (in);
+ DBG (15, " color_grayscale: %d\n", s->can_mode[MODE_COLOR]);
- DBG (15, "vendor options\n");
+ /* now we look at vendor specific data in bytes 0x1e onward */
+ DBG (15, "vendor options\n");
- s->has_adf = get_IN_adf(in);
- DBG (15, " adf: %d\n", s->has_adf);
+ s->has_adf = get_IN_adf(in);
+ DBG (15, " adf: %d\n", s->has_adf);
- s->has_flatbed = get_IN_flatbed(in);
- DBG (15, " flatbed: %d\n", s->has_flatbed);
+ s->has_flatbed = get_IN_flatbed(in);
+ DBG (15, " flatbed: %d\n", s->has_flatbed);
- s->has_transparency = get_IN_transparency(in);
- DBG (15, " transparency: %d\n", s->has_transparency);
+ s->has_transparency = get_IN_transparency(in);
+ DBG (15, " transparency: %d\n", s->has_transparency);
- s->has_duplex = get_IN_duplex(in);
- s->has_back = s->has_duplex;
- DBG (15, " duplex: %d\n", s->has_duplex);
+ s->has_duplex = get_IN_duplex(in);
+ s->has_back = s->has_duplex;
+ DBG (15, " duplex: %d\n", s->has_duplex);
- s->has_endorser_b = get_IN_endorser_b(in);
- DBG (15, " back endorser: %d\n", s->has_endorser_b);
+ s->has_endorser_b = get_IN_endorser_b(in);
+ DBG (15, " back endorser: %d\n", s->has_endorser_b);
- s->has_barcode = get_IN_barcode(in);
- DBG (15, " barcode: %d\n", s->has_barcode);
+ s->has_barcode = get_IN_barcode(in);
+ DBG (15, " barcode: %d\n", s->has_barcode);
- s->has_operator_panel = get_IN_operator_panel(in);
- DBG (15, " operator panel: %d\n", s->has_operator_panel);
+ s->has_operator_panel = get_IN_operator_panel(in);
+ DBG (15, " operator panel: %d\n", s->has_operator_panel);
- s->has_endorser_f = get_IN_endorser_f(in);
- DBG (15, " front endorser: %d\n", s->has_endorser_f);
+ s->has_endorser_f = get_IN_endorser_f(in);
+ DBG (15, " front endorser: %d\n", s->has_endorser_f);
- DBG (15, " multi-purpose stacker: %d\n", get_IN_mp_stacker(in));
+ DBG (15, " multi-purpose stacker: %d\n", get_IN_mp_stacker(in));
- DBG (15, " prepick: %d\n", get_IN_prepick(in));
- DBG (15, " mf detect: %d\n", get_IN_mf_detect(in));
+ DBG (15, " prepick: %d\n", get_IN_prepick(in));
+ DBG (15, " mf detect: %d\n", get_IN_mf_detect(in));
- s->has_paper_protect = get_IN_paperprot(in);
- DBG (15, " paper protection: %d\n", s->has_paper_protect);
+ s->has_paper_protect = get_IN_paperprot(in);
+ DBG (15, " paper protection: %d\n", s->has_paper_protect);
- s->adbits = get_IN_adbits(in);
- DBG (15, " A/D bits: %d\n",s->adbits);
+ s->adbits = get_IN_adbits(in);
+ DBG (15, " A/D bits: %d\n",s->adbits);
- s->buffer_bytes = get_IN_buffer_bytes(in);
- DBG (15, " buffer bytes: %d\n",s->buffer_bytes);
+ s->buffer_bytes = get_IN_buffer_bytes(in);
+ DBG (15, " buffer bytes: %d\n",s->buffer_bytes);
- DBG (15, "Standard commands\n");
+ DBG (15, "Standard commands\n");
- /* std scsi command support byte 26*/
- s->has_cmd_msen10 = get_IN_has_cmd_msen10(in);
- DBG (15, " mode_sense_10 cmd: %d\n", s->has_cmd_msen10);
+ /* std scsi command support byte 26*/
+ s->has_cmd_msen10 = get_IN_has_cmd_msen10(in);
+ DBG (15, " mode_sense_10 cmd: %d\n", s->has_cmd_msen10);
- s->has_cmd_msel10 = get_IN_has_cmd_msel10(in);
- DBG (15, " mode_select_10 cmd: %d\n", s->has_cmd_msel10);
+ s->has_cmd_msel10 = get_IN_has_cmd_msel10(in);
+ DBG (15, " mode_select_10 cmd: %d\n", s->has_cmd_msel10);
- /* std scsi command support byte 27*/
- s->has_cmd_lsen = get_IN_has_cmd_lsen(in);
- DBG (15, " log_sense cmd: %d\n", s->has_cmd_lsen);
+ /* std scsi command support byte 27*/
+ s->has_cmd_lsen = get_IN_has_cmd_lsen(in);
+ DBG (15, " log_sense cmd: %d\n", s->has_cmd_lsen);
- s->has_cmd_lsel = get_IN_has_cmd_lsel(in);
- DBG (15, " log_select cmd: %d\n", s->has_cmd_lsel);
+ s->has_cmd_lsel = get_IN_has_cmd_lsel(in);
+ DBG (15, " log_select cmd: %d\n", s->has_cmd_lsel);
- s->has_cmd_change = get_IN_has_cmd_change(in);
- DBG (15, " change cmd: %d\n", s->has_cmd_change);
+ s->has_cmd_change = get_IN_has_cmd_change(in);
+ DBG (15, " change cmd: %d\n", s->has_cmd_change);
- s->has_cmd_rbuff = get_IN_has_cmd_rbuff(in);
- DBG (15, " read_buffer cmd: %d\n", s->has_cmd_rbuff);
+ s->has_cmd_rbuff = get_IN_has_cmd_rbuff(in);
+ DBG (15, " read_buffer cmd: %d\n", s->has_cmd_rbuff);
- s->has_cmd_wbuff = get_IN_has_cmd_wbuff(in);
- DBG (15, " write_buffer cmd: %d\n", s->has_cmd_wbuff);
+ s->has_cmd_wbuff = get_IN_has_cmd_wbuff(in);
+ DBG (15, " write_buffer cmd: %d\n", s->has_cmd_wbuff);
- s->has_cmd_cav = get_IN_has_cmd_cav(in);
- DBG (15, " copy_and_verify cmd: %d\n", s->has_cmd_cav);
+ s->has_cmd_cav = get_IN_has_cmd_cav(in);
+ DBG (15, " copy_and_verify cmd: %d\n", s->has_cmd_cav);
- s->has_cmd_comp = get_IN_has_cmd_comp(in);
- DBG (15, " compare cmd: %d\n", s->has_cmd_comp);
+ s->has_cmd_comp = get_IN_has_cmd_comp(in);
+ DBG (15, " compare cmd: %d\n", s->has_cmd_comp);
- s->has_cmd_gdbs = get_IN_has_cmd_gdbs(in);
- DBG (15, " get_d_b_status cmd: %d\n", s->has_cmd_gdbs);
+ s->has_cmd_gdbs = get_IN_has_cmd_gdbs(in);
+ DBG (15, " get_d_b_status cmd: %d\n", s->has_cmd_gdbs);
- /* std scsi command support byte 28*/
- s->has_cmd_op = get_IN_has_cmd_op(in);
- DBG (15, " object_pos cmd: %d\n", s->has_cmd_op);
+ /* std scsi command support byte 28*/
+ s->has_cmd_op = get_IN_has_cmd_op(in);
+ DBG (15, " object_pos cmd: %d\n", s->has_cmd_op);
- s->has_cmd_send = get_IN_has_cmd_send(in);
- DBG (15, " send cmd: %d\n", s->has_cmd_send);
+ s->has_cmd_send = get_IN_has_cmd_send(in);
+ DBG (15, " send cmd: %d\n", s->has_cmd_send);
- s->has_cmd_read = get_IN_has_cmd_read(in);
- DBG (15, " read cmd: %d\n", s->has_cmd_read);
+ s->has_cmd_read = get_IN_has_cmd_read(in);
+ DBG (15, " read cmd: %d\n", s->has_cmd_read);
- s->has_cmd_gwin = get_IN_has_cmd_gwin(in);
- DBG (15, " get_window cmd: %d\n", s->has_cmd_gwin);
+ s->has_cmd_gwin = get_IN_has_cmd_gwin(in);
+ DBG (15, " get_window cmd: %d\n", s->has_cmd_gwin);
- s->has_cmd_swin = get_IN_has_cmd_swin(in);
- DBG (15, " set_window cmd: %d\n", s->has_cmd_swin);
+ s->has_cmd_swin = get_IN_has_cmd_swin(in);
+ DBG (15, " set_window cmd: %d\n", s->has_cmd_swin);
- s->has_cmd_sdiag = get_IN_has_cmd_sdiag(in);
- DBG (15, " send_diag cmd: %d\n", s->has_cmd_sdiag);
+ s->has_cmd_sdiag = get_IN_has_cmd_sdiag(in);
+ DBG (15, " send_diag cmd: %d\n", s->has_cmd_sdiag);
- s->has_cmd_rdiag = get_IN_has_cmd_rdiag(in);
- DBG (15, " read_diag cmd: %d\n", s->has_cmd_rdiag);
+ s->has_cmd_rdiag = get_IN_has_cmd_rdiag(in);
+ DBG (15, " read_diag cmd: %d\n", s->has_cmd_rdiag);
- s->has_cmd_scan = get_IN_has_cmd_scan(in);
- DBG (15, " scan cmd: %d\n", s->has_cmd_scan);
+ s->has_cmd_scan = get_IN_has_cmd_scan(in);
+ DBG (15, " scan cmd: %d\n", s->has_cmd_scan);
- /* std scsi command support byte 29*/
- s->has_cmd_msen6 = get_IN_has_cmd_msen6(in);
- DBG (15, " mode_sense_6 cmd: %d\n", s->has_cmd_msen6);
+ /* std scsi command support byte 29*/
+ s->has_cmd_msen6 = get_IN_has_cmd_msen6(in);
+ DBG (15, " mode_sense_6 cmd: %d\n", s->has_cmd_msen6);
- s->has_cmd_copy = get_IN_has_cmd_copy(in);
- DBG (15, " copy cmd: %d\n", s->has_cmd_copy);
+ s->has_cmd_copy = get_IN_has_cmd_copy(in);
+ DBG (15, " copy cmd: %d\n", s->has_cmd_copy);
- s->has_cmd_rel = get_IN_has_cmd_rel(in);
- DBG (15, " release cmd: %d\n", s->has_cmd_rel);
+ s->has_cmd_rel = get_IN_has_cmd_rel(in);
+ DBG (15, " release cmd: %d\n", s->has_cmd_rel);
- s->has_cmd_runit = get_IN_has_cmd_runit(in);
- DBG (15, " reserve_unit cmd: %d\n", s->has_cmd_runit);
+ s->has_cmd_runit = get_IN_has_cmd_runit(in);
+ DBG (15, " reserve_unit cmd: %d\n", s->has_cmd_runit);
- s->has_cmd_msel6 = get_IN_has_cmd_msel6(in);
- DBG (15, " mode_select_6 cmd: %d\n", s->has_cmd_msel6);
+ s->has_cmd_msel6 = get_IN_has_cmd_msel6(in);
+ DBG (15, " mode_select_6 cmd: %d\n", s->has_cmd_msel6);
- s->has_cmd_inq = get_IN_has_cmd_inq(in);
- DBG (15, " inquiry cmd: %d\n", s->has_cmd_inq);
+ s->has_cmd_inq = get_IN_has_cmd_inq(in);
+ DBG (15, " inquiry cmd: %d\n", s->has_cmd_inq);
- s->has_cmd_rs = get_IN_has_cmd_rs(in);
- DBG (15, " request_sense cmd: %d\n", s->has_cmd_rs);
+ s->has_cmd_rs = get_IN_has_cmd_rs(in);
+ DBG (15, " request_sense cmd: %d\n", s->has_cmd_rs);
- s->has_cmd_tur = get_IN_has_cmd_tur(in);
- DBG (15, " test_unit_ready cmd: %d\n", s->has_cmd_tur);
+ s->has_cmd_tur = get_IN_has_cmd_tur(in);
+ DBG (15, " test_unit_ready cmd: %d\n", s->has_cmd_tur);
- /* vendor added scsi command support */
- /* FIXME: there are more of these... */
- DBG (15, "Vendor commands\n");
+ /* vendor added scsi command support */
+ /* FIXME: there are more of these... */
+ DBG (15, "Vendor commands\n");
- s->has_cmd_subwindow = get_IN_has_cmd_subwindow(in);
- DBG (15, " subwindow cmd: %d\n", s->has_cmd_subwindow);
+ s->has_cmd_subwindow = get_IN_has_cmd_subwindow(in);
+ DBG (15, " subwindow cmd: %d\n", s->has_cmd_subwindow);
- s->has_cmd_endorser = get_IN_has_cmd_endorser(in);
- DBG (15, " endorser cmd: %d\n", s->has_cmd_endorser);
+ s->has_cmd_endorser = get_IN_has_cmd_endorser(in);
+ DBG (15, " endorser cmd: %d\n", s->has_cmd_endorser);
- s->has_cmd_hw_status = get_IN_has_cmd_hw_status (in);
- DBG (15, " hardware status cmd: %d\n", s->has_cmd_hw_status);
+ s->has_cmd_hw_status = get_IN_has_cmd_hw_status (in);
+ DBG (15, " hardware status cmd: %d\n", s->has_cmd_hw_status);
- s->has_cmd_hw_status_2 = get_IN_has_cmd_hw_status_2 (in);
- DBG (15, " hardware status 2 cmd: %d\n", s->has_cmd_hw_status_2);
+ s->has_cmd_hw_status_2 = get_IN_has_cmd_hw_status_2 (in);
+ DBG (15, " hardware status 2 cmd: %d\n", s->has_cmd_hw_status_2);
- s->has_cmd_hw_status_3 = get_IN_has_cmd_hw_status_3 (in);
- DBG (15, " hardware status 3 cmd: %d\n", s->has_cmd_hw_status_3);
+ s->has_cmd_hw_status_3 = get_IN_has_cmd_hw_status_3 (in);
+ DBG (15, " hardware status 3 cmd: %d\n", s->has_cmd_hw_status_3);
- s->has_cmd_scanner_ctl = get_IN_has_cmd_scanner_ctl(in);
- DBG (15, " scanner control cmd: %d\n", s->has_cmd_scanner_ctl);
+ s->has_cmd_scanner_ctl = get_IN_has_cmd_scanner_ctl(in);
+ DBG (15, " scanner control cmd: %d\n", s->has_cmd_scanner_ctl);
- s->has_cmd_device_restart = get_IN_has_cmd_device_restart(in);
- DBG (15, " device restart cmd: %d\n", s->has_cmd_device_restart);
+ s->has_cmd_device_restart = get_IN_has_cmd_device_restart(in);
+ DBG (15, " device restart cmd: %d\n", s->has_cmd_device_restart);
- /* get threshold, brightness and contrast ranges. */
- s->brightness_steps = get_IN_brightness_steps(in);
- DBG (15, " brightness steps: %d\n", s->brightness_steps);
+ /* get threshold, brightness and contrast ranges. */
+ s->brightness_steps = get_IN_brightness_steps(in);
+ DBG (15, " brightness steps: %d\n", s->brightness_steps);
- s->threshold_steps = get_IN_threshold_steps(in);
- DBG (15, " threshold steps: %d\n", s->threshold_steps);
+ s->threshold_steps = get_IN_threshold_steps(in);
+ DBG (15, " threshold steps: %d\n", s->threshold_steps);
- s->contrast_steps = get_IN_contrast_steps(in);
- DBG (15, " contrast steps: %d\n", s->contrast_steps);
+ s->contrast_steps = get_IN_contrast_steps(in);
+ DBG (15, " contrast steps: %d\n", s->contrast_steps);
- /* dither/gamma patterns */
- s->num_internal_gamma = get_IN_num_gamma_internal (in);
- DBG (15, " built in gamma patterns: %d\n", s->num_internal_gamma);
+ /* dither/gamma patterns */
+ s->num_internal_gamma = get_IN_num_gamma_internal (in);
+ DBG (15, " built in gamma patterns: %d\n", s->num_internal_gamma);
- s->num_download_gamma = get_IN_num_gamma_download (in);
- DBG (15, " download gamma patterns: %d\n", s->num_download_gamma);
+ s->num_download_gamma = get_IN_num_gamma_download (in);
+ DBG (15, " download gamma patterns: %d\n", s->num_download_gamma);
- s->num_internal_dither = get_IN_num_dither_internal (in);
- DBG (15, " built in dither patterns: %d\n", s->num_internal_dither);
+ s->num_internal_dither = get_IN_num_dither_internal (in);
+ DBG (15, " built in dither patterns: %d\n", s->num_internal_dither);
- s->num_download_dither = get_IN_num_dither_download (in);
- DBG (15, " download dither patterns: %d\n", s->num_download_dither);
+ s->num_download_dither = get_IN_num_dither_download (in);
+ DBG (15, " download dither patterns: %d\n", s->num_download_dither);
- /* ipc functions */
- s->has_rif = get_IN_ipc_bw_rif (in);
- DBG (15, " RIF: %d\n", s->has_rif);
+ /* ipc functions */
+ s->has_rif = get_IN_ipc_bw_rif (in);
+ DBG (15, " RIF: %d\n", s->has_rif);
- s->has_dtc = get_IN_ipc_dtc(in);
- DBG (15, " DTC (AutoI): %d\n", s->has_dtc);
+ s->has_dtc = get_IN_ipc_dtc(in);
+ DBG (15, " DTC (AutoI): %d\n", s->has_dtc);
- s->has_sdtc = get_IN_ipc_sdtc(in);
- DBG (15, " SDTC (AutoII): %d\n", s->has_sdtc);
+ s->has_sdtc = get_IN_ipc_sdtc(in);
+ DBG (15, " SDTC (AutoII): %d\n", s->has_sdtc);
- s->has_outline = get_IN_ipc_outline_extraction (in);
- DBG (15, " outline extraction: %d\n", s->has_outline);
+ s->has_outline = get_IN_ipc_outline_extraction (in);
+ DBG (15, " outline extraction: %d\n", s->has_outline);
- s->has_emphasis = get_IN_ipc_image_emphasis (in);
- DBG (15, " image emphasis: %d\n", s->has_emphasis);
+ s->has_emphasis = get_IN_ipc_image_emphasis (in);
+ DBG (15, " image emphasis: %d\n", s->has_emphasis);
- s->has_autosep = get_IN_ipc_auto_separation (in);
- DBG (15, " automatic separation: %d\n", s->has_autosep);
+ s->has_autosep = get_IN_ipc_auto_separation (in);
+ DBG (15, " automatic separation: %d\n", s->has_autosep);
- s->has_mirroring = get_IN_ipc_mirroring (in);
- DBG (15, " mirror image: %d\n", s->has_mirroring);
+ s->has_mirroring = get_IN_ipc_mirroring (in);
+ DBG (15, " mirror image: %d\n", s->has_mirroring);
- s->has_wl_follow = get_IN_ipc_wl_follow (in);
- DBG (15, " white level follower: %d\n", s->has_wl_follow);
+ s->has_wl_follow = get_IN_ipc_wl_follow (in);
+ DBG (15, " white level follower: %d\n", s->has_wl_follow);
- /* byte 58 */
- s->has_subwindow = get_IN_ipc_subwindow (in);
- DBG (15, " subwindow: %d\n", s->has_subwindow);
+ /* byte 58 */
+ s->has_subwindow = get_IN_ipc_subwindow (in);
+ DBG (15, " subwindow: %d\n", s->has_subwindow);
- s->has_diffusion = get_IN_ipc_diffusion (in);
- DBG (15, " diffusion: %d\n", s->has_diffusion);
+ s->has_diffusion = get_IN_ipc_diffusion (in);
+ DBG (15, " diffusion: %d\n", s->has_diffusion);
- s->has_ipc3 = get_IN_ipc_ipc3 (in);
- DBG (15, " ipc3: %d\n", s->has_ipc3);
+ s->has_ipc3 = get_IN_ipc_ipc3 (in);
+ DBG (15, " ipc3: %d\n", s->has_ipc3);
- s->has_rotation = get_IN_ipc_rotation (in);
- DBG (15, " rotation: %d\n", s->has_rotation);
+ s->has_rotation = get_IN_ipc_rotation (in);
+ DBG (15, " rotation: %d\n", s->has_rotation);
- s->has_hybrid_crop_deskew = get_IN_ipc_hybrid_crop_deskew(in);
- DBG (15, " hybrid crop deskew: %d\n", s->has_hybrid_crop_deskew);
+ s->has_hybrid_crop_deskew = get_IN_ipc_hybrid_crop_deskew(in);
+ DBG (15, " hybrid crop deskew: %d\n", s->has_hybrid_crop_deskew);
- DBG (15, " ipc2 byte 67: %d\n", get_IN_ipc_ipc2_byte67(in));
+ /* this one is weird, overrides the payload length from scanner */
+ DBG (15, " vpd extends to byte 6f: %d\n", get_IN_vpd_thru_byte_6f(in));
+ if(get_IN_vpd_thru_byte_6f(in) && payload_off < 0x6f){
+ payload_off = 0x6f;
+ }
- /* compression modes */
- s->has_comp_MH = get_IN_compression_MH (in);
- DBG (15, " compression MH: %d\n", s->has_comp_MH);
+ /* compression modes */
+ s->has_comp_MH = get_IN_compression_MH (in);
+ DBG (15, " compression MH: %d\n", s->has_comp_MH);
- s->has_comp_MR = get_IN_compression_MR (in);
- DBG (15, " compression MR: %d\n", s->has_comp_MR);
+ s->has_comp_MR = get_IN_compression_MR (in);
+ DBG (15, " compression MR: %d\n", s->has_comp_MR);
- s->has_comp_MMR = get_IN_compression_MMR (in);
- DBG (15, " compression MMR: %d\n", s->has_comp_MMR);
+ s->has_comp_MMR = get_IN_compression_MMR (in);
+ DBG (15, " compression MMR: %d\n", s->has_comp_MMR);
- s->has_comp_JBIG = get_IN_compression_JBIG (in);
- DBG (15, " compression JBIG: %d\n", s->has_comp_JBIG);
+ s->has_comp_JBIG = get_IN_compression_JBIG (in);
+ DBG (15, " compression JBIG: %d\n", s->has_comp_JBIG);
- s->has_comp_JPG1 = get_IN_compression_JPG_BASE (in);
- DBG (15, " compression JPG1: %d\n", s->has_comp_JPG1);
+ s->has_comp_JPG1 = get_IN_compression_JPG_BASE (in);
+ DBG (15, " compression JPG1: %d\n", s->has_comp_JPG1);
#ifdef SANE_JPEG_DISABLED
- DBG (15, " (Disabled)\n");
+ DBG (15, " (Disabled)\n");
#endif
- s->has_comp_JPG2 = get_IN_compression_JPG_EXT (in);
- DBG (15, " compression JPG2: %d\n", s->has_comp_JPG2);
-
- s->has_comp_JPG3 = get_IN_compression_JPG_INDEP (in);
- DBG (15, " compression JPG3: %d\n", s->has_comp_JPG3);
-
- /* FIXME: we dont store these? */
- DBG (15, " back endorser mech: %d\n", get_IN_endorser_b_mech(in));
- DBG (15, " back endorser stamp: %d\n", get_IN_endorser_b_stamp(in));
- DBG (15, " back endorser elec: %d\n", get_IN_endorser_b_elec(in));
- DBG (15, " endorser max id: %d\n", get_IN_endorser_max_id(in));
-
- DBG (15, " front endorser mech: %d\n", get_IN_endorser_f_mech(in));
- DBG (15, " front endorser stamp: %d\n", get_IN_endorser_f_stamp(in));
- DBG (15, " front endorser elec: %d\n", get_IN_endorser_f_elec(in));
-
- s->endorser_type_b = get_IN_endorser_b_type(in);
- DBG (15, " back endorser type: %d\n", s->endorser_type_b);
-
- s->endorser_type_f = get_IN_endorser_f_type(in);
- DBG (15, " back endorser type: %d\n", s->endorser_type_f);
-
- /*not all scanners go this far*/
- if (get_IN_page_length (in) >= 0x67-5) {
- DBG (15, " connection type: %d\n", get_IN_connection(in));
-
- DBG (15, " endorser ext: %d\n", get_IN_endorser_type_ext(in));
- DBG (15, " endorser pr_b: %d\n", get_IN_endorser_pre_back(in));
- DBG (15, " endorser pr_f: %d\n", get_IN_endorser_pre_front(in));
- DBG (15, " endorser po_b: %d\n", get_IN_endorser_post_back(in));
- DBG (15, " endorser po_f: %d\n", get_IN_endorser_post_front(in));
-
- s->os_x_basic = get_IN_x_overscan_size(in);
- DBG (15, " horizontal overscan: %d\n", s->os_x_basic);
-
- s->os_y_basic = get_IN_y_overscan_size(in);
- DBG (15, " vertical overscan: %d\n", s->os_y_basic);
- }
+ s->has_comp_JPG2 = get_IN_compression_JPG_EXT (in);
+ DBG (15, " compression JPG2: %d\n", s->has_comp_JPG2);
- if (get_IN_page_length (in) >= 0x70-5) {
- DBG (15, " default bg adf b: %d\n", get_IN_default_bg_adf_b(in));
- DBG (15, " default bg adf f: %d\n", get_IN_default_bg_adf_f(in));
- DBG (15, " default bg fb: %d\n", get_IN_default_bg_fb(in));
+ s->has_comp_JPG3 = get_IN_compression_JPG_INDEP (in);
+ DBG (15, " compression JPG3: %d\n", s->has_comp_JPG3);
- DBG (15, " auto color: %d\n", get_IN_auto_color(in));
- DBG (15, " blank skip: %d\n", get_IN_blank_skip(in));
- DBG (15, " multi image: %d\n", get_IN_multi_image(in));
- DBG (15, " f b type indep: %d\n", get_IN_f_b_type_indep(in));
- DBG (15, " f b res indep: %d\n", get_IN_f_b_res_indep(in));
+ /* FIXME: we dont store these? */
+ DBG (15, " back endorser mech: %d\n", get_IN_endorser_b_mech(in));
+ DBG (15, " back endorser stamp: %d\n", get_IN_endorser_b_stamp(in));
+ DBG (15, " back endorser elec: %d\n", get_IN_endorser_b_elec(in));
+ DBG (15, " endorser max id: %d\n", get_IN_endorser_max_id(in));
- DBG (15, " dropout spec: %d\n", get_IN_dropout_spec(in));
- DBG (15, " dropout non: %d\n", get_IN_dropout_non(in));
- DBG (15, " dropout white: %d\n", get_IN_dropout_white(in));
+ DBG (15, " front endorser mech: %d\n", get_IN_endorser_f_mech(in));
+ DBG (15, " front endorser stamp: %d\n", get_IN_endorser_f_stamp(in));
+ DBG (15, " front endorser elec: %d\n", get_IN_endorser_f_elec(in));
- DBG (15, " skew check: %d\n", get_IN_skew_check(in));
- DBG (15, " new feed roller: %d\n", get_IN_new_fd_roll(in));
+ s->endorser_type_b = get_IN_endorser_b_type(in);
+ DBG (15, " back endorser type: %d\n", s->endorser_type_b);
- s->has_adv_paper_prot = get_IN_paper_prot_2(in);
- DBG (15, " paper protection: %d\n", s->has_adv_paper_prot);
- }
+ s->endorser_type_f = get_IN_endorser_f_type(in);
+ DBG (15, " back endorser type: %d\n", s->endorser_type_f);
- if (get_IN_page_length (in) > 0x70-5) {
+ DBG (15, " connection type: %d\n", get_IN_connection(in));
- DBG (15, " paper count: %d\n", get_IN_paper_count(in));
- DBG (15, " paper number: %d\n", get_IN_paper_number(in));
- DBG (15, " ext send to: %d\n", get_IN_ext_send_to(in));
+ DBG (15, " endorser ext: %d\n", get_IN_endorser_type_ext(in));
+ DBG (15, " endorser pr_b: %d\n", get_IN_endorser_pre_back(in));
+ DBG (15, " endorser pr_f: %d\n", get_IN_endorser_pre_front(in));
+ DBG (15, " endorser po_b: %d\n", get_IN_endorser_post_back(in));
+ DBG (15, " endorser po_f: %d\n", get_IN_endorser_post_front(in));
- s->has_staple_detect = get_IN_staple_det(in);
- DBG (15, " staple det: %d\n", s->has_staple_detect);
+ s->os_x_basic = get_IN_x_overscan_size(in);
+ DBG (15, " horizontal overscan: %d\n", s->os_x_basic);
- DBG (15, " pause host: %d\n", get_IN_pause_host(in));
- DBG (15, " pause panel: %d\n", get_IN_pause_panel(in));
- DBG (15, " pause conf: %d\n", get_IN_pause_conf(in));
- DBG (15, " hq print: %d\n", get_IN_hq_print(in));
+ s->os_y_basic = get_IN_y_overscan_size(in);
+ DBG (15, " vertical overscan: %d\n", s->os_y_basic);
- DBG (15, " ext GHS len: %d\n", get_IN_ext_GHS_len(in));
+ /* not all scanners go this far */
+ if (payload_off >= 0x68) {
+ DBG (15, " default bg adf b: %d\n", get_IN_default_bg_adf_b(in));
+ DBG (15, " default bg adf f: %d\n", get_IN_default_bg_adf_f(in));
+ DBG (15, " default bg fb: %d\n", get_IN_default_bg_fb(in));
+ }
- DBG (15, " smbc func: %d\n", get_IN_smbc_func(in));
- DBG (15, " imprint chk b: %d\n", get_IN_imprint_chk_b(in));
- DBG (15, " imprint chk f: %d\n", get_IN_imprint_chk_f(in));
- DBG (15, " force w bg: %d\n", get_IN_force_w_bg(in));
+ if (payload_off >= 0x69) {
+ DBG (15, " auto color: %d\n", get_IN_auto_color(in));
+ DBG (15, " blank skip: %d\n", get_IN_blank_skip(in));
+ DBG (15, " multi image: %d\n", get_IN_multi_image(in));
+ DBG (15, " f b type indep: %d\n", get_IN_f_b_type_indep(in));
+ DBG (15, " f b res indep: %d\n", get_IN_f_b_res_indep(in));
+ }
- s->has_df_recovery = get_IN_mf_recover_lvl(in);
- DBG (15, " mf recover lvl: %d\n", s->has_df_recovery);
+ if (payload_off >= 0x6a) {
+ DBG (15, " dropout spec: %d\n", get_IN_dropout_spec(in));
+ DBG (15, " dropout non: %d\n", get_IN_dropout_non(in));
+ DBG (15, " dropout white: %d\n", get_IN_dropout_white(in));
+ }
- DBG (15, " first read time: %d\n", get_IN_first_read_time(in));
- DBG (15, " div scanning: %d\n", get_IN_div_scanning(in));
- DBG (15, " start job: %d\n", get_IN_start_job(in));
- DBG (15, " lifetime log: %d\n", get_IN_lifetime_log(in));
- DBG (15, " imff save rest: %d\n", get_IN_imff_save_rest(in));
- DBG (15, " wide scsi type: %d\n", get_IN_wide_scsi_type(in));
+ if (payload_off >= 0x6d) {
+ DBG (15, " skew check: %d\n", get_IN_skew_check(in));
+ DBG (15, " new feed roller: %d\n", get_IN_new_fd_roll(in));
+ s->has_adv_paper_prot = get_IN_paper_prot_2(in);
+ DBG (15, " paper protection: %d\n", s->has_adv_paper_prot);
+ }
- DBG (15, " lut hybrid crop: %d\n", get_IN_lut_hybrid_crop(in));
- DBG (15, " over under amt: %d\n", get_IN_over_under_amt(in));
- DBG (15, " rgb lut: %d\n", get_IN_rgb_lut(in));
- DBG (15, " num lut dl: %d\n", get_IN_num_lut_dl(in));
+ /* this one is weird, overrides the payload length from scanner,
+ * but the enlarged area is just null bytes, so we ignore this */
+ if (payload_off >= 0x6f) {
+ DBG (15, " extra evpd length: %d\n", get_IN_evpd_len(in));
+ }
- s->has_off_mode = get_IN_erp_lot6_supp(in);
- DBG (15, " ErP Lot6 (power off timer): %d\n", s->has_off_mode);
- DBG (15, " sync next feed: %d\n", get_IN_sync_next_feed(in));
+ if (payload_off >= 0x70) {
+ DBG (15, " paper count: %d\n", get_IN_paper_count(in));
+ DBG (15, " paper number: %d\n", get_IN_paper_number(in));
+ DBG (15, " ext send to: %d\n", get_IN_ext_send_to(in));
- s->has_op_halt = get_IN_op_halt(in);
- DBG (15, " object position halt: %d\n", s->has_op_halt);
- }
+ s->has_staple_detect = get_IN_staple_det(in);
+ DBG (15, " staple det: %d\n", s->has_staple_detect);
- ret = SANE_STATUS_GOOD;
- }
+ DBG (15, " pause host: %d\n", get_IN_pause_host(in));
+ DBG (15, " pause panel: %d\n", get_IN_pause_panel(in));
+ DBG (15, " pause conf: %d\n", get_IN_pause_conf(in));
+ DBG (15, " hq print: %d\n", get_IN_hq_print(in));
+ }
- /*FIXME no vendor vpd, set some defaults? */
- else{
- DBG (5, "init_vpd: Your scanner supports only partial VPD?\n");
- DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
- DBG (5, "init_vpd: with details of your scanner model.\n");
- ret = SANE_STATUS_INVAL;
- }
+ if (payload_off >= 0x71) {
+ DBG (15, " ext GHS len: %d\n", get_IN_ext_GHS_len(in));
}
- /*FIXME no vpd, set some defaults? */
- else{
- DBG (5, "init_vpd: Your scanner does not support VPD?\n");
- DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
- DBG (5, "init_vpd: with details of your scanner model.\n");
+
+ if (payload_off >= 0x72) {
+ DBG (15, " smbc func: %d\n", get_IN_smbc_func(in));
+ DBG (15, " imprint chk b: %d\n", get_IN_imprint_chk_b(in));
+ DBG (15, " imprint chk f: %d\n", get_IN_imprint_chk_f(in));
+ DBG (15, " force w bg: %d\n", get_IN_force_w_bg(in));
+
+ s->has_df_recovery = get_IN_mf_recover_lvl(in);
+ DBG (15, " mf recover lvl: %d\n", s->has_df_recovery);
+ }
+
+ if (payload_off >= 0x73) {
+ DBG (15, " first read time: %d\n", get_IN_first_read_time(in));
+ DBG (15, " div scanning: %d\n", get_IN_div_scanning(in));
+ DBG (15, " start job: %d\n", get_IN_start_job(in));
+ DBG (15, " lifetime log: %d\n", get_IN_lifetime_log(in));
+ DBG (15, " imff save rest: %d\n", get_IN_imff_save_rest(in));
+ DBG (15, " wide scsi type: %d\n", get_IN_wide_scsi_type(in));
+ }
+
+ if (payload_off >= 0x74) {
+ DBG (15, " lut hybrid crop: %d\n", get_IN_lut_hybrid_crop(in));
+ DBG (15, " over under amt: %d\n", get_IN_over_under_amt(in));
+ DBG (15, " rgb lut: %d\n", get_IN_rgb_lut(in));
+ DBG (15, " num lut dl: %d\n", get_IN_num_lut_dl(in));
+ }
+
+ /* Various items below are poorly documented or missing */
+
+ if (payload_off >= 0x76) {
+ s->has_off_mode = get_IN_erp_lot6_supp(in);
+ DBG (15, " ErP Lot6 (power off timer): %d\n", s->has_off_mode);
+ DBG (15, " sync next feed: %d\n", get_IN_sync_next_feed(in));
+ }
+
+ if (payload_off >= 0x79) {
+ DBG (15, " battery: %d\n", get_IN_battery(in));
+ DBG (15, " battery save: %d\n", get_IN_battery_save(in));
+ DBG (15, " object position reverse: %d\n", get_IN_op_reverse(in));
+ }
+
+ if (payload_off >= 0x7a) {
+ s->has_op_halt = get_IN_op_halt(in);
+ DBG (15, " object position halt: %d\n", s->has_op_halt);
}
DBG (10, "init_vpd: finish\n");
- return ret;
+ return SANE_STATUS_GOOD;
}
static SANE_Status
-init_ms(struct fujitsu *s)
+init_ms(struct fujitsu *s)
{
int ret;
int oldDbg=0;
@@ -2543,9 +2590,9 @@ init_options (struct fujitsu *s)
s->opt[i].cap = SANE_CAP_INACTIVE;
}
- /* go ahead and setup the first opt, because
- * frontend may call control_option on it
- * before calling get_option_descriptor
+ /* go ahead and setup the first opt, because
+ * frontend may call control_option on it
+ * before calling get_option_descriptor
*/
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
@@ -2660,11 +2707,11 @@ init_serial (struct fujitsu *s)
set_SCSI_opcode(cmd, SEND_DIAGNOSTIC_code);
set_SD_slftst(cmd, 0);
set_SD_xferlen(cmd, outLen);
-
+
memcpy(out,SD_gdi_string,outLen);
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
out, outLen,
NULL, NULL
@@ -2680,7 +2727,7 @@ init_serial (struct fujitsu *s)
set_RD_xferlen(cmd, inLen);
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
NULL, 0,
in, &inLen
@@ -2719,7 +2766,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
struct fujitsu *dev = NULL;
struct fujitsu *s = NULL;
SANE_Status ret;
-
+
DBG (10, "sane_open: start\n");
if(fujitsu_devList){
@@ -2740,7 +2787,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
else{
DBG (15, "sane_open: device %s requested\n", name);
-
+
for (dev = fujitsu_devList; dev; dev = dev->next) {
if (strcmp (dev->sane.name, name) == 0
|| strcmp (dev->device_name, name) == 0) { /*always allow sanei devname*/
@@ -2816,7 +2863,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
}
if(s->has_adf){
s->source_list[i++]=STRING_ADFFRONT;
-
+
if(s->has_back){
s->source_list[i++]=STRING_ADFBACK;
}
@@ -2852,7 +2899,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->mode_list[i++]=STRING_COLOR;
}
s->mode_list[i]=NULL;
-
+
opt->name = SANE_NAME_SCAN_MODE;
opt->title = SANE_TITLE_SCAN_MODE;
opt->desc = SANE_DESC_SCAN_MODE;
@@ -2873,7 +2920,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->type = SANE_TYPE_INT;
opt->unit = SANE_UNIT_DPI;
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
-
+
if(s->step_x_res[s->s_mode] && s->step_y_res[s->s_mode]){
s->res_range.min = s->min_x_res;
s->res_range.max = s->max_x_res;
@@ -2895,7 +2942,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
}
}
s->res_list[0] = i;
-
+
opt->constraint_type = SANE_CONSTRAINT_WORD_LIST;
opt->constraint.word_list = s->res_list;
}
@@ -2917,7 +2964,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->tl_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_x);
s->tl_x_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_width(s));
s->tl_x_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_X;
opt->title = SANE_TITLE_SCAN_TL_X;
opt->desc = SANE_DESC_SCAN_TL_X;
@@ -2935,7 +2982,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->tl_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_y);
s->tl_y_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_height(s));
s->tl_y_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_Y;
opt->title = SANE_TITLE_SCAN_TL_Y;
opt->desc = SANE_DESC_SCAN_TL_Y;
@@ -2953,7 +3000,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_X;
opt->title = SANE_TITLE_SCAN_BR_X;
opt->desc = SANE_DESC_SCAN_BR_X;
@@ -2971,7 +3018,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
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.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_Y;
opt->title = SANE_TITLE_SCAN_BR_Y;
opt->desc = SANE_DESC_SCAN_BR_Y;
@@ -3160,7 +3207,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->ht_type_list[i++]=STRING_DITHER;
s->ht_type_list[i++]=STRING_DIFFUSION;
s->ht_type_list[i]=NULL;
-
+
opt->name = "ht-type";
opt->title = SANE_I18N ("Halftone type");
opt->desc = SANE_I18N ("Control type of halftone filter");
@@ -3265,7 +3312,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->wl_follow_list[i++]=STRING_ON;
s->wl_follow_list[i++]=STRING_OFF;
s->wl_follow_list[i]=NULL;
-
+
opt->name = "wl-follow";
opt->title = SANE_I18N ("White level follower");
opt->desc = SANE_I18N ("Control white level follower");
@@ -3503,7 +3550,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*automatic width detection */
if(option==OPT_AWD){
-
+
opt->name = "awd";
opt->title = SANE_I18N ("Auto width detection");
opt->desc = SANE_I18N ("Scanner detects paper sides. May reduce scanning speed.");
@@ -3521,7 +3568,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*automatic length detection */
if(option==OPT_ALD){
-
+
opt->name = "ald";
opt->title = SANE_I18N ("Auto length detection");
opt->desc = SANE_I18N ("Scanner detects paper lower edge. May confuse some frontends.");
@@ -3600,7 +3647,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->df_action_list[1] = STRING_CONTINUE;
s->df_action_list[2] = STRING_STOP;
s->df_action_list[3] = NULL;
-
+
opt->name = "df-action";
opt->title = SANE_I18N ("DF action");
opt->desc = SANE_I18N ("Action following double feed error");
@@ -3617,7 +3664,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*double feed by skew*/
if(option==OPT_DF_SKEW){
-
+
opt->name = "df-skew";
opt->title = SANE_I18N ("DF skew");
opt->desc = SANE_I18N ("Enable double feed error due to skew");
@@ -3636,7 +3683,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*double feed by thickness */
if(option==OPT_DF_THICKNESS){
-
+
opt->name = "df-thickness";
opt->title = SANE_I18N ("DF thickness");
opt->desc = SANE_I18N ("Enable double feed error due to paper thickness");
@@ -3655,7 +3702,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/*double feed by length*/
if(option==OPT_DF_LENGTH){
-
+
opt->name = "df-length";
opt->title = SANE_I18N ("DF length");
opt->desc = SANE_I18N ("Enable double feed error due to paper length");
@@ -3679,7 +3726,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->df_diff_list[2] = STRING_15MM;
s->df_diff_list[3] = STRING_20MM;
s->df_diff_list[4] = NULL;
-
+
opt->name = "df-diff";
opt->title = SANE_I18N ("DF length difference");
opt->desc = SANE_I18N ("Difference in page length to trigger double feed error");
@@ -3703,7 +3750,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->df_recovery_list[1] = STRING_OFF;
s->df_recovery_list[2] = STRING_ON;
s->df_recovery_list[3] = NULL;
-
+
opt->name = "df-recovery";
opt->title = SANE_I18N ("DF recovery mode");
opt->desc = SANE_I18N ("Request scanner to reverse feed on paper jam");
@@ -3723,7 +3770,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->paper_protect_list[1] = STRING_OFF;
s->paper_protect_list[2] = STRING_ON;
s->paper_protect_list[3] = NULL;
-
+
opt->name = "paper-protect";
opt->title = SANE_I18N ("Paper protection");
opt->desc = SANE_I18N ("Request scanner to predict jams in the ADF");
@@ -3743,7 +3790,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->adv_paper_prot_list[1] = STRING_OFF;
s->adv_paper_prot_list[2] = STRING_ON;
s->adv_paper_prot_list[3] = NULL;
-
+
opt->name = "adv-paper-protect";
opt->title = SANE_I18N ("Advanced paper protection");
opt->desc = SANE_I18N ("Request scanner to predict jams in the ADF using improved sensors");
@@ -3763,7 +3810,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->staple_detect_list[1] = STRING_OFF;
s->staple_detect_list[2] = STRING_ON;
s->staple_detect_list[3] = NULL;
-
+
opt->name = "staple-detect";
opt->title = SANE_I18N ("Staple detection");
opt->desc = SANE_I18N ("Request scanner to detect jams in the ADF caused by staples");
@@ -3783,7 +3830,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->bg_color_list[1] = STRING_WHITE;
s->bg_color_list[2] = STRING_BLACK;
s->bg_color_list[3] = NULL;
-
+
opt->name = "bgcolor";
opt->title = SANE_I18N ("Background color");
opt->desc = SANE_I18N ("Set color of background for scans. May conflict with overscan option");
@@ -3804,7 +3851,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->do_color_list[2] = STRING_GREEN;
s->do_color_list[3] = STRING_BLUE;
s->do_color_list[4] = NULL;
-
+
opt->name = "dropoutcolor";
opt->title = SANE_I18N ("Dropout color");
opt->desc = SANE_I18N ("One-pass scanners use only one color during gray or binary scanning, useful for colored paper or ink");
@@ -3828,7 +3875,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->buff_mode_list[1] = STRING_OFF;
s->buff_mode_list[2] = STRING_ON;
s->buff_mode_list[3] = NULL;
-
+
opt->name = "buffermode";
opt->title = SANE_I18N ("Buffer mode");
opt->desc = SANE_I18N ("Request scanner to read pages quickly from ADF into internal memory");
@@ -3848,7 +3895,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->prepick_list[1] = STRING_OFF;
s->prepick_list[2] = STRING_ON;
s->prepick_list[3] = NULL;
-
+
opt->name = "prepick";
opt->title = SANE_I18N ("Prepick");
opt->desc = SANE_I18N ("Request scanner to grab next page from ADF");
@@ -3868,7 +3915,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->overscan_list[1] = STRING_OFF;
s->overscan_list[2] = STRING_ON;
s->overscan_list[3] = NULL;
-
+
opt->name = "overscan";
opt->title = SANE_I18N ("Overscan");
opt->desc = SANE_I18N ("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");
@@ -3887,10 +3934,10 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->sleep_time_range.min = 0;
s->sleep_time_range.max = 60;
s->sleep_time_range.quant = 1;
-
+
opt->name = "sleeptimer";
opt->title = SANE_I18N ("Sleep timer");
- opt->desc = SANE_I18N ("Time in minutes until the internal power supply switches to sleep mode");
+ opt->desc = SANE_I18N ("Time in minutes until the internal power supply switches to sleep mode");
opt->type = SANE_TYPE_INT;
opt->unit = SANE_UNIT_NONE;
opt->constraint_type = SANE_CONSTRAINT_RANGE;
@@ -3906,10 +3953,10 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->off_time_range.min = 0;
s->off_time_range.max = 960;
s->off_time_range.quant = 1;
-
+
opt->name = "offtimer";
opt->title = SANE_I18N ("Off timer");
- opt->desc = SANE_I18N ("Time in minutes until the internal power supply switches the scanner off. Will be rounded to nearest 15 minutes. Zero means never power off.");
+ opt->desc = SANE_I18N ("Time in minutes until the internal power supply switches the scanner off. Will be rounded to nearest 15 minutes. Zero means never power off.");
opt->type = SANE_TYPE_INT;
opt->unit = SANE_UNIT_NONE;
opt->constraint_type = SANE_CONSTRAINT_RANGE;
@@ -3925,7 +3972,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->duplex_offset_range.min = -16;
s->duplex_offset_range.max = 16;
s->duplex_offset_range.quant = 1;
-
+
opt->name = "duplexoffset";
opt->title = SANE_I18N ("Duplex offset");
opt->desc = SANE_I18N ("Adjust front/back offset");
@@ -3943,7 +3990,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->green_offset_range.min = -16;
s->green_offset_range.max = 16;
s->green_offset_range.quant = 1;
-
+
opt->name = "greenoffset";
opt->title = SANE_I18N ("Green offset");
opt->desc = SANE_I18N ("Adjust green/red offset");
@@ -3956,12 +4003,12 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
else
opt->cap = SANE_CAP_INACTIVE;
}
-
+
if(option==OPT_BLUE_OFFSET){
s->blue_offset_range.min = -16;
s->blue_offset_range.max = 16;
s->blue_offset_range.quant = 1;
-
+
opt->name = "blueoffset";
opt->title = SANE_I18N ("Blue offset");
opt->desc = SANE_I18N ("Adjust blue/red offset");
@@ -3974,7 +4021,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
else
opt->cap = SANE_CAP_INACTIVE;
}
-
+
if(option==OPT_LOW_MEM){
opt->name = "lowmemory";
opt->title = SANE_I18N ("Low Memory");
@@ -3985,7 +4032,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
if (1)
opt->cap= SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
opt->constraint_type = SANE_CONSTRAINT_NONE;
@@ -4112,7 +4159,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
if (s->has_endorser_f || s->has_endorser_b)
opt->cap= SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
opt->constraint_type = SANE_CONSTRAINT_NONE;
@@ -4335,7 +4382,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4347,7 +4394,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4359,7 +4406,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4371,7 +4418,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4383,7 +4430,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4395,7 +4442,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4407,7 +4454,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4419,7 +4466,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4431,7 +4478,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4443,7 +4490,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4455,7 +4502,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4467,7 +4514,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4479,7 +4526,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4491,7 +4538,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status && (s->has_endorser_f || s->has_endorser_b))
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4503,7 +4550,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status || s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4515,7 +4562,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4527,7 +4574,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4539,7 +4586,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->has_cmd_hw_status && (s->has_endorser_f || s->has_endorser_b))
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4551,7 +4598,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4563,7 +4610,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->unit = SANE_UNIT_NONE;
if (s->ghs_in_rs)
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- else
+ else
opt->cap = SANE_CAP_INACTIVE;
}
@@ -4572,7 +4619,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -4583,7 +4630,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -5056,23 +5103,23 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_ENDORSER:
*val_p = s->u_endorser;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_BITS:
*val_p = s->u_endorser_bits;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_VAL:
*val_p = s->u_endorser_val;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_STEP:
*val_p = s->u_endorser_step;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_Y:
*val_p = SCANNER_UNIT_TO_FIXED_MM(s->u_endorser_y);
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_FONT:
switch (s->u_endorser_font) {
case FONT_H:
@@ -5092,7 +5139,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
break;
}
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_DIR:
switch (s->u_endorser_dir) {
case DIR_TTB:
@@ -5103,7 +5150,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
break;
}
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_SIDE:
switch (s->u_endorser_side) {
case ED_front:
@@ -5114,7 +5161,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
break;
}
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_STRING:
strncpy(
(SANE_String)val,
@@ -5128,102 +5175,102 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
ret = get_hardware_status(s,option);
*val_p = s->hw_top;
return ret;
-
+
case OPT_A3:
ret = get_hardware_status(s,option);
*val_p = s->hw_A3;
return ret;
-
+
case OPT_B4:
ret = get_hardware_status(s,option);
*val_p = s->hw_B4;
return ret;
-
+
case OPT_A4:
ret = get_hardware_status(s,option);
*val_p = s->hw_A4;
return ret;
-
+
case OPT_B5:
ret = get_hardware_status(s,option);
*val_p = s->hw_B5;
return ret;
-
+
case OPT_HOPPER:
ret = get_hardware_status(s,option);
*val_p = s->hw_hopper;
return ret;
-
+
case OPT_OMR:
ret = get_hardware_status(s,option);
*val_p = s->hw_omr;
return ret;
-
+
case OPT_ADF_OPEN:
ret = get_hardware_status(s,option);
*val_p = s->hw_adf_open;
return ret;
-
+
case OPT_SLEEP:
ret = get_hardware_status(s,option);
*val_p = s->hw_sleep;
return ret;
-
+
case OPT_SEND_SW:
ret = get_hardware_status(s,option);
*val_p = s->hw_send_sw;
return ret;
-
+
case OPT_MANUAL_FEED:
ret = get_hardware_status(s,option);
*val_p = s->hw_manual_feed;
return ret;
-
+
case OPT_SCAN_SW:
ret = get_hardware_status(s,option);
*val_p = s->hw_scan_sw;
return ret;
-
+
case OPT_FUNCTION:
ret = get_hardware_status(s,option);
*val_p = s->hw_function;
return ret;
-
+
case OPT_INK_EMPTY:
ret = get_hardware_status(s,option);
*val_p = s->hw_ink_empty;
return ret;
-
+
case OPT_DOUBLE_FEED:
ret = get_hardware_status(s,option);
*val_p = s->hw_double_feed;
return ret;
-
+
case OPT_ERROR_CODE:
ret = get_hardware_status(s,option);
*val_p = s->hw_error_code;
return ret;
-
+
case OPT_SKEW_ANGLE:
ret = get_hardware_status(s,option);
*val_p = s->hw_skew_angle;
return ret;
-
+
case OPT_INK_REMAIN:
ret = get_hardware_status(s,option);
*val_p = s->hw_ink_remain;
return ret;
-
+
case OPT_DENSITY_SW:
ret = get_hardware_status(s,option);
*val_p = s->hw_density_sw;
return ret;
-
+
case OPT_DUPLEX_SW:
ret = get_hardware_status(s,option);
*val_p = s->hw_duplex_sw;
return ret;
-
+
}
}
else if (action == SANE_ACTION_SET_VALUE) {
@@ -5260,7 +5307,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* below.
*/
switch (option) {
-
+
/* Mode Group */
case OPT_SOURCE:
if (!strcmp (val, STRING_ADFFRONT)) {
@@ -5276,7 +5323,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
tmp = SOURCE_FLATBED;
}
- if (s->source == tmp)
+ if (s->source == tmp)
return SANE_STATUS_GOOD;
s->source = tmp;
@@ -5307,7 +5354,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_RES:
- if (s->resolution_x == val_c)
+ if (s->resolution_x == val_c)
return SANE_STATUS_GOOD;
s->resolution_x = val_c;
@@ -5703,24 +5750,24 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->u_endorser = val_c;
*info |= SANE_INFO_RELOAD_OPTIONS;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_BITS:
s->u_endorser_bits = val_c;
return SANE_STATUS_GOOD;
-
+
/*this val not used in send_endorser*/
case OPT_ENDORSER_VAL:
s->u_endorser_val = val_c;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_STEP:
s->u_endorser_step = val_c;
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_Y:
s->u_endorser_y = FIXED_MM_TO_SCANNER_UNIT(val_c);
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_FONT:
if (!strcmp (val, STRING_HORIZONTAL)){
@@ -5739,7 +5786,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->u_endorser_font = FONT_VB;
}
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_DIR:
if (!strcmp (val, STRING_TOPTOBOTTOM)){
s->u_endorser_dir = DIR_TTB;
@@ -5748,7 +5795,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->u_endorser_dir = DIR_BTT;
}
return SANE_STATUS_GOOD;
-
+
/*this val not used in send_endorser*/
case OPT_ENDORSER_SIDE:
if (!strcmp (val, STRING_FRONT)){
@@ -5758,7 +5805,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->u_endorser_side = ED_back;
}
return SANE_STATUS_GOOD;
-
+
case OPT_ENDORSER_STRING:
strncpy(
(SANE_String)s->u_endorser_string,
@@ -5773,7 +5820,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
}
static SANE_Status
-set_sleep_mode(struct fujitsu *s)
+set_sleep_mode(struct fujitsu *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
@@ -5830,13 +5877,13 @@ set_off_mode(struct fujitsu *s)
set_SCSI_opcode(cmd, SEND_DIAGNOSTIC_code);
set_SD_slftst(cmd, 0);
set_SD_xferlen(cmd, outLen);
-
+
memcpy(out,SD_powoff_string,SD_powoff_stringlen);
set_SD_powoff_disable(out,!s->off_time);
set_SD_powoff_interval(out,s->off_time/15);
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
out, outLen,
NULL, NULL
@@ -5880,14 +5927,14 @@ get_hardware_status (struct fujitsu *s, SANE_Int option)
set_GHS_allocation_length(cmd, inLen);
DBG (15, "get_hardware_status: calling ghs\n");
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
NULL, 0,
in, &inLen
);
-
+
if (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF) {
s->hw_top = get_GHS_top(in);
@@ -5895,23 +5942,23 @@ get_hardware_status (struct fujitsu *s, SANE_Int option)
s->hw_B4 = get_GHS_B4(in);
s->hw_A4 = get_GHS_A4(in);
s->hw_B5 = get_GHS_B5(in);
-
+
s->hw_hopper = get_GHS_hopper(in);
s->hw_omr = get_GHS_omr(in);
s->hw_adf_open = get_GHS_adf_open(in);
-
+
s->hw_sleep = get_GHS_sleep(in);
s->hw_send_sw = get_GHS_send_sw(in);
s->hw_manual_feed = get_GHS_manual_feed(in);
s->hw_scan_sw = get_GHS_scan_sw(in);
-
+
s->hw_function = get_GHS_function(in);
s->hw_ink_empty = get_GHS_ink_empty(in);
s->hw_double_feed = get_GHS_double_feed(in);
-
+
s->hw_error_code = get_GHS_error_code(in);
-
+
s->hw_skew_angle = get_GHS_skew_angle(in);
if(inLen > 9){
@@ -5942,7 +5989,7 @@ get_hardware_status (struct fujitsu *s, SANE_Int option)
NULL,0,
in, &inLen
);
-
+
/* parse the rs data */
if(ret == SANE_STATUS_GOOD){
if(get_RS_sense_key(in)==0 && get_RS_ASC(in)==0x80){
@@ -5972,13 +6019,13 @@ get_hardware_status (struct fujitsu *s, SANE_Int option)
}
static SANE_Status
-send_endorser(struct fujitsu *s)
+send_endorser(struct fujitsu *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
unsigned char cmd[SEND_len];
size_t cmdLen = SEND_len;
-
+
size_t strLen = strlen(s->u_endorser_string);
unsigned char out[S_e_data_max_len]; /*we probably send less below*/
@@ -6080,7 +6127,7 @@ send_endorser(struct fujitsu *s)
/* instead of internal brightness/contrast/gamma
most scanners use a 256x256 or 1024x256 LUT
default is linear table of slope 1 or 1/4 resp.
- brightness and contrast inputs are -127 to +127
+ brightness and contrast inputs are -127 to +127
contrast rotates slope of line around central input val
@@ -6096,7 +6143,7 @@ send_endorser(struct fujitsu *s)
bright dark
. xxxxxxxx .
- . x .
+ . x .
out x . x
. . x
............ xxxxxxxx....
@@ -6128,7 +6175,7 @@ send_lut (struct fujitsu *s)
* first [-127,127] to [0,254] then to [0,1]
* then multiply by PI/2 to convert to radians
* then take the tangent to get slope (T.O.A)
- * then multiply by the normal linear slope
+ * then multiply by the normal linear slope
* because the table may not be square, i.e. 1024x256*/
slope = tan(((double)s->contrast+127)/254 * M_PI/2) * 256/bytes;
@@ -6156,7 +6203,7 @@ send_lut (struct fujitsu *s)
set_S_lut_order (out, S_lut_order_single);
set_S_lut_ssize (out, bytes);
set_S_lut_dsize (out, 256);
-
+
for(i=0;i<bytes;i++){
j=slope*i + offset + b;
@@ -6274,7 +6321,7 @@ mode_select_unk (struct fujitsu *s, int foo)
set_MSEL_page_len(page, MSEL_data_min_len-2);
*(page + 0x02) = foo;
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6311,7 +6358,7 @@ diag_preread (struct fujitsu *s)
set_SCSI_opcode(cmd, SEND_DIAGNOSTIC_code);
set_SD_slftst(cmd, 0);
set_SD_xferlen(cmd, outLen);
-
+
memcpy(out,SD_preread_string,SD_preread_stringlen);
set_SD_preread_xres(out,s->resolution_x);
set_SD_preread_yres(out,s->resolution_y);
@@ -6322,7 +6369,7 @@ diag_preread (struct fujitsu *s)
set_SD_preread_composition(out, s->s_mode);
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
out, outLen,
NULL, NULL
@@ -6374,17 +6421,17 @@ mode_select_df (struct fujitsu *s)
if(s->df_action == DF_CONTINUE){
set_MSEL_df_continue (page, 1);
}
-
+
/* skew */
if(s->df_skew){
set_MSEL_df_skew (page, 1);
}
-
+
/* thickness */
if(s->df_thickness){
set_MSEL_df_thickness (page, 1);
}
-
+
/* length */
if(s->df_length){
set_MSEL_df_length (page, 1);
@@ -6446,7 +6493,7 @@ mode_select_bg (struct fujitsu *s)
set_MSEL_bg_fb (page, 1);
}
}
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6489,7 +6536,7 @@ mode_select_dropout (struct fujitsu *s)
set_MSEL_dropout_front (page, s->dropout_color);
set_MSEL_dropout_back (page, s->dropout_color);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6574,7 +6621,7 @@ mode_select_prepick (struct fujitsu *s)
set_MSEL_page_len(page, MSEL_data_min_len-2);
set_MSEL_prepick(page, s->prepick);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6620,7 +6667,7 @@ mode_select_auto (struct fujitsu *s)
set_MSEL_awd(page, s->awd || s->hwdeskewcrop);
set_MSEL_req_driv_crop(page, s->hwdeskewcrop && (s->swcrop || s->swdeskew));
set_MSEL_deskew(page, s->hwdeskewcrop);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -6648,7 +6695,7 @@ mode_select_auto (struct fujitsu *s)
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -6660,9 +6707,9 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
{
SANE_Status ret = SANE_STATUS_GOOD;
struct fujitsu *s = (struct fujitsu *) handle;
-
+
DBG (10, "sane_get_parameters: start\n");
-
+
/* not started? update param data from user settings */
if(!s->started){
ret = update_params(s);
@@ -6760,10 +6807,10 @@ update_params (struct fujitsu * s)
DBG(15,"update_params: area: tlx=%d, brx=%d, tly=%d, bry=%d\n",
s->tl_x, s->br_x, s->tl_y, s->br_y);
- DBG(15,"update_params: params: ppl=%d, Bpl=%d, lines=%d\n",
+ DBG(15,"update_params: params: ppl=%d, Bpl=%d, lines=%d\n",
params->pixels_per_line, params->bytes_per_line, params->lines);
- DBG(15,"update_params: params: format=%d, depth=%d, last=%d\n",
+ DBG(15,"update_params: params: format=%d, depth=%d, last=%d\n",
params->format, params->depth, params->last_frame);
/* second, we setup u_params to describe the image to the user */
@@ -6801,20 +6848,20 @@ update_u_params (struct fujitsu * s)
params->format = SANE_FRAME_GRAY;
params->bytes_per_line = params->pixels_per_line / 8;
}
-
+
DBG(15,"update_u_params: x: max=%d, page=%d, gpw=%d, res=%d\n",
s->max_x, s->page_width, get_page_width(s), s->resolution_x);
-
+
DBG(15,"update_u_params: y: max=%d, page=%d, gph=%d, res=%d\n",
s->max_y, s->page_height, get_page_height(s), s->resolution_y);
-
+
DBG(15,"update_u_params: area: tlx=%d, brx=%d, tly=%d, bry=%d\n",
s->tl_x, s->br_x, s->tl_y, s->br_y);
-
- DBG(15,"update_u_params: params: ppl=%d, Bpl=%d, lines=%d\n",
+
+ DBG(15,"update_u_params: params: ppl=%d, Bpl=%d, lines=%d\n",
params->pixels_per_line, params->bytes_per_line, params->lines);
-
- DBG(15,"update_u_params: params: format=%d, depth=%d, last=%d\n",
+
+ DBG(15,"update_u_params: params: format=%d, depth=%d, last=%d\n",
params->format, params->depth, params->last_frame);
}
@@ -6939,14 +6986,14 @@ sane_start (SANE_Handle handle)
if (ret != SANE_STATUS_GOOD)
DBG (5, "sane_start: WARNING: cannot early send_lut %d\n", ret);
}
-
+
/* set window command */
ret = set_window(s);
if (ret != SANE_STATUS_GOOD) {
DBG (5, "sane_start: ERROR: cannot set window\n");
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->late_lut && (!s->brightness_steps || !s->contrast_steps || s->window_gamma & 0x80)){
@@ -6954,7 +7001,7 @@ sane_start (SANE_Handle handle)
if (ret != SANE_STATUS_GOOD)
DBG (5, "sane_start: WARNING: cannot late send_lut %d\n", ret);
}
-
+
/* some scanners need the q table sent, even when not scanning jpeg */
if (s->need_q_table){
ret = send_q_table(s);
@@ -6968,7 +7015,7 @@ sane_start (SANE_Handle handle)
DBG (5, "sane_start: ERROR: cannot start/stop endorser\n");
goto errors;
}
-
+
/* turn lamp on */
ret = scanner_control(s, SC_function_lamp_on);
if (ret != SANE_STATUS_GOOD) {
@@ -7043,7 +7090,7 @@ sane_start (SANE_Handle handle)
goto errors;
}
- /* store the number of front bytes */
+ /* store the number of front bytes */
if ( s->source != SOURCE_ADF_BACK ){
s->bytes_tot[SIDE_FRONT] = s->s_params.bytes_per_line * s->s_params.lines;
s->buff_tot[SIDE_FRONT] = s->buffer_size;
@@ -7062,7 +7109,7 @@ sane_start (SANE_Handle handle)
s->buff_tot[SIDE_FRONT] = 0;
}
- /* store the number of back bytes */
+ /* store the number of back bytes */
if ( s->source == SOURCE_ADF_DUPLEX || s->source == SOURCE_ADF_BACK ){
s->bytes_tot[SIDE_BACK] = s->s_params.bytes_per_line * s->s_params.lines;
s->buff_tot[SIDE_BACK] = s->bytes_tot[SIDE_BACK];
@@ -7087,7 +7134,7 @@ sane_start (SANE_Handle handle)
DBG (5, "sane_start: ERROR: cannot load buffers\n");
goto errors;
}
-
+
s->started=1;
}
}
@@ -7102,9 +7149,9 @@ sane_start (SANE_Handle handle)
DBG (15, "started=%d, side=%d, source=%d\n", s->started, s->side, s->source);
- /* certain options require the entire image to
+ /* certain options require the entire image to
* be collected from the scanner before we can
- * tell the user the size of the image. the sane
+ * tell the user the size of the image. the sane
* API has no way to inform the frontend of this,
* so we block and buffer. yuck */
if( must_fully_buffer(s) ){
@@ -7142,7 +7189,7 @@ sane_start (SANE_Handle handle)
}
if(s->swskip){
/* Skipping means throwing out this image.
- * Pretend the user read the whole thing
+ * Pretend the user read the whole thing
* and call sane_start again.
* This assumes we are running in batch mode. */
if(buffer_isblank(s,s->side)){
@@ -7166,7 +7213,7 @@ sane_start (SANE_Handle handle)
errors:
DBG (10, "sane_start: error %d\n", ret);
- /* if we are started, but something went wrong,
+ /* if we are started, but something went wrong,
* chances are there is image data inside scanner,
* which should be discarded via cancel command */
if(s->started){
@@ -7181,7 +7228,7 @@ sane_start (SANE_Handle handle)
}
static SANE_Status
-endorser(struct fujitsu *s)
+endorser(struct fujitsu *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
@@ -7243,7 +7290,7 @@ endorser(struct fujitsu *s)
}
static SANE_Status
-scanner_control (struct fujitsu *s, int function)
+scanner_control (struct fujitsu *s, int function)
{
SANE_Status ret = SANE_STATUS_GOOD;
int tries = 0;
@@ -7283,7 +7330,7 @@ scanner_control (struct fujitsu *s, int function)
}
usleep(500000);
- }
+ }
if(ret == SANE_STATUS_GOOD){
DBG (15, "scanner_control: success, tries %d, ret %d\n",tries,ret);
@@ -7299,7 +7346,7 @@ scanner_control (struct fujitsu *s, int function)
}
static SANE_Status
-scanner_control_ric (struct fujitsu *s, int bytes, int side)
+scanner_control_ric (struct fujitsu *s, int bytes, int side)
{
SANE_Status ret = SANE_STATUS_GOOD;
int tries = 0;
@@ -7325,7 +7372,7 @@ scanner_control_ric (struct fujitsu *s, int bytes, int side)
set_SC_ric_len(cmd, bytes);
DBG (15, "scanner_control_ric: %d %d\n",bytes,side);
-
+
/* extremely long retry period */
while(tries++ < 120){
@@ -7341,7 +7388,7 @@ scanner_control_ric (struct fujitsu *s, int bytes, int side)
}
usleep(500000);
- }
+ }
if(ret == SANE_STATUS_GOOD){
DBG (15, "scanner_control_ric: success, tries %d, ret %d\n",tries,ret);
@@ -7408,14 +7455,14 @@ set_window (struct fujitsu *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
- /* The command specifies the number of bytes in the data phase
- * the data phase has a header, followed by 1 or 2 window desc blocks
+ /* The command specifies the number of bytes in the data phase
+ * the data phase has a header, followed by 1 or 2 window desc blocks
* the header specifies the number of bytes in 1 window desc block
*/
unsigned char cmd[SET_WINDOW_len];
size_t cmdLen = SET_WINDOW_len;
-
+
/*this is max size, we might send less below*/
unsigned char out[SW_header_len + SW_desc_len + SW_desc_len];
size_t outLen = SW_header_len + SW_desc_len + SW_desc_len;
@@ -7687,7 +7734,7 @@ get_pixelsize(struct fujitsu *s, int actual)
set_R_window_id (cmd, WD_wid_front);
}
set_R_xfer_length (cmd, inLen);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -7732,7 +7779,7 @@ get_pixelsize(struct fujitsu *s, int actual)
else {
s->s_params.bytes_per_line = s->s_params.pixels_per_line / 8;
}
-
+
/* some scanners can request that the driver clean img */
if(!s->has_short_pixelsize && get_PSIZE_req_driv_valid(in)){
s->req_driv_crop = get_PSIZE_req_driv_crop(in);
@@ -7741,7 +7788,7 @@ get_pixelsize(struct fujitsu *s, int actual)
s->req_driv_crop,s->req_driv_lut);
}
- DBG (15, "get_pixelsize: scan_x=%d, Bpl=%d, scan_y=%d\n",
+ DBG (15, "get_pixelsize: scan_x=%d, Bpl=%d, scan_y=%d\n",
s->s_params.pixels_per_line, s->s_params.bytes_per_line, s->s_params.lines );
/* the user params are usually the same */
@@ -7758,7 +7805,7 @@ get_pixelsize(struct fujitsu *s, int actual)
else {
s->u_params.bytes_per_line = s->u_params.pixels_per_line / 8;
}
-
+
}
else{
DBG (10, "get_pixelsize: got bad status %d, ignoring\n", ret);
@@ -7812,7 +7859,7 @@ object_position (struct fujitsu *s, int action)
/*
* Issues SCAN command.
- *
+ *
* (This doesn't actually read anything, it just tells the scanner
* to start scanning.)
*/
@@ -7897,7 +7944,7 @@ check_for_cancel(struct fujitsu *s)
/*
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -7905,7 +7952,7 @@ check_for_cancel(struct fujitsu *s)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -7963,7 +8010,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
/* alternating jpeg duplex interlacing */
else if(s->source == SOURCE_ADF_DUPLEX
- && s->s_params.format == SANE_FRAME_JPEG
+ && s->s_params.format == SANE_FRAME_JPEG
&& s->jpeg_interlace == JPEG_INTERLACE_ALT
){
ret = read_from_JPEGduplex(s);
@@ -7985,7 +8032,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
DBG(5,"sane_read: front returning %d\n",ret);
return ret;
}
-
+
/* buffer back side, but don't get too far ahead of the front! */
if(s->bytes_rx[SIDE_BACK] < s->bytes_rx[SIDE_FRONT] + s->buffer_size){
ret = read_from_scanner(s, SIDE_BACK);
@@ -8084,9 +8131,9 @@ read_from_JPEGduplex(struct fujitsu *s)
int bytes = s->buffer_size;
int i = 0;
-
+
DBG (10, "read_from_JPEGduplex: start\n");
-
+
if(s->eof_rx[SIDE_FRONT] && s->eof_rx[SIDE_BACK]){
DBG (10, "read_from_JPEGduplex: already have eofs, done\n");
return ret;
@@ -8112,7 +8159,7 @@ read_from_JPEGduplex(struct fujitsu *s)
bytes -= JFIF_APP0_LENGTH;
}
}
-
+
DBG(15, "read_from_JPEGduplex: fto:%d frx:%d bto:%d brx:%d pa:%d\n",
s->bytes_tot[SIDE_FRONT], s->bytes_rx[SIDE_FRONT],
s->bytes_tot[SIDE_BACK], s->bytes_rx[SIDE_BACK],
@@ -8123,7 +8170,7 @@ read_from_JPEGduplex(struct fujitsu *s)
DBG(5, "read_from_JPEGduplex: Warning: no bytes this pass\n");
return ret;
}
-
+
/* fi-6770A gets mad if you 'read' too soon on usb, see if it is ready */
if(!s->bytes_rx[SIDE_FRONT] && s->connection == CONNECTION_USB){
DBG (15, "read: start of usb page, checking RIC\n");
@@ -8147,14 +8194,14 @@ read_from_JPEGduplex(struct fujitsu *s)
/* interlaced jpeg duplex always reads from front */
set_R_window_id (cmd, WD_wid_front);
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) {
DBG(15, "read_from_JPEGduplex: got GOOD/EOF, returning GOOD\n");
}
@@ -8167,7 +8214,7 @@ read_from_JPEGduplex(struct fujitsu *s)
DBG(5, "read_from_JPEGduplex: error reading data status = %d\n", ret);
inLen = 0;
}
-
+
for(i=0;i<(int)inLen;i++){
/* about to change stage */
@@ -8359,9 +8406,9 @@ read_from_JPEGduplex(struct fujitsu *s)
s->eof_rx[SIDE_BACK] = 1;
}
}
-
+
free(in);
-
+
/* jpeg uses in-band EOI marker, so this is ususally redundant */
if(ret == SANE_STATUS_EOF){
DBG(15, "read_from_JPEGduplex: got EOF, finishing\n");
@@ -8372,7 +8419,7 @@ read_from_JPEGduplex(struct fujitsu *s)
}
DBG (10, "read_from_JPEGduplex: finish\n");
-
+
return ret;
}
@@ -8411,7 +8458,7 @@ read_from_3091duplex(struct fujitsu *s)
if(bytes > avail)
bytes = avail;
}
-
+
/* all requests must end on a line boundary */
bytes -= (bytes % s->s_params.bytes_per_line);
@@ -8534,9 +8581,9 @@ read_from_scanner(struct fujitsu *s, int side)
int bytes = s->buffer_size;
int avail = s->buff_tot[side] - s->buff_rx[side];
int remain = s->bytes_tot[side] - s->bytes_rx[side];
-
+
DBG (10, "read_from_scanner: start %d\n", side);
-
+
if(s->eof_rx[side]){
DBG (10, "read_from_scanner: already have eof, done\n");
return ret;
@@ -8545,7 +8592,7 @@ read_from_scanner(struct fujitsu *s, int side)
/* figure out the max amount to transfer */
if(bytes > avail)
bytes = avail;
-
+
/* all requests must end on line boundary */
bytes -= (bytes % s->s_params.bytes_per_line);
@@ -8559,7 +8606,7 @@ read_from_scanner(struct fujitsu *s, int side)
/* jpeg scans leave space for JFIF header at start of image */
if(s->s_params.format == SANE_FRAME_JPEG && s->bytes_rx[side] < 2)
bytes -= JFIF_APP0_LENGTH;
-
+
DBG(15, "read_from_scanner: si:%d re:%d bs:%d by:%d av:%d\n",
side, remain, s->buffer_size, bytes, avail);
@@ -8569,13 +8616,13 @@ read_from_scanner(struct fujitsu *s, int side)
DBG(15, "read_from_scanner: buf to:%d rx:%d tx:%d\n",
s->buff_tot[side], s->buff_rx[side], s->buff_tx[side]);
-
+
/* this will happen if buffer is not drained yet */
if(bytes < 1){
DBG(5, "read_from_scanner: no bytes this pass\n");
return ret;
}
-
+
/* fi-6770A gets mad if you 'read' too soon on usb, see if it is ready */
if(!s->bytes_rx[side] && s->connection == CONNECTION_USB){
DBG (15, "read_from_scanner: start of usb page, checking RIC\n");
@@ -8592,27 +8639,27 @@ read_from_scanner(struct fujitsu *s, int side)
DBG(5, "read_from_scanner: not enough mem for buffer: %d\n",(int)inLen);
return SANE_STATUS_NO_MEM;
}
-
+
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd, READ_code);
set_R_datatype_code (cmd, R_datatype_imagedata);
-
+
if (side == SIDE_BACK) {
set_R_window_id (cmd, WD_wid_back);
}
else{
set_R_window_id (cmd, WD_wid_front);
}
-
+
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) {
DBG(15, "read_from_scanner: got GOOD/EOF, returning GOOD\n");
ret = SANE_STATUS_GOOD;
@@ -8626,7 +8673,7 @@ read_from_scanner(struct fujitsu *s, int side)
DBG(5, "read_from_scanner: error reading data block status = %d\n",ret);
inLen = 0;
}
-
+
DBG(15, "read_from_scanner: read %lu bytes\n",(unsigned long)inLen);
if(inLen){
@@ -8640,7 +8687,7 @@ read_from_scanner(struct fujitsu *s, int side)
copy_buffer (s, in, inLen, side);
}
}
-
+
free(in);
/* if this was a short read or not, log it */
@@ -8655,7 +8702,7 @@ read_from_scanner(struct fujitsu *s, int side)
s->eom_rx = 1;
}
- /* paper ran out. lets try to set the eof flag on both sides,
+ /* paper ran out. lets try to set the eof flag on both sides,
* but only if that side had a short read last time */
if(s->eom_rx){
int i;
@@ -8668,7 +8715,7 @@ read_from_scanner(struct fujitsu *s, int side)
}
DBG (10, "read_from_scanner: finish\n");
-
+
return ret;
}
@@ -8682,7 +8729,7 @@ copy_3091(struct fujitsu *s, unsigned char * buf, int len, int side)
/* Data is RR...GG...BB... on each line,
* green is back 8 lines from red at 300 dpi
- * blue is back 4 lines from red at 300 dpi.
+ * blue is back 4 lines from red at 300 dpi.
*
* Here, we get things on correct line, and
* interlace to make RGBRGB.
@@ -8726,12 +8773,12 @@ copy_3091(struct fujitsu *s, unsigned char * buf, int len, int side)
s->lines_rx[side]++;
}
- /* even if we have read data, we may not have any
+ /* even if we have read data, we may not have any
* full lines loaded yet, so we may have to lie */
i = (s->lines_rx[side]-goff) * s->s_params.bytes_per_line;
if(i < 0){
i = 0;
- }
+ }
s->bytes_rx[side] = i;
s->buff_rx[side] = i;
@@ -8753,11 +8800,11 @@ copy_JPEG(struct fujitsu *s, unsigned char * buf, int len, int side)
{
SANE_Status ret=SANE_STATUS_GOOD;
int i, seen = 0;
-
+
DBG (10, "copy_JPEG: start\n");
/* A jpeg image starts with the SOI marker, FF D8.
- * This is optionally followed by the JFIF APP0
+ * This is optionally followed by the JFIF APP0
* marker, FF E0. If that marker is not present,
* we add it, so we can insert the resolution */
@@ -8797,7 +8844,7 @@ copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
int i, j;
int bwidth = s->s_params.bytes_per_line;
int pwidth = s->s_params.pixels_per_line;
-
+
DBG (10, "copy_buffer: start\n");
/* invert image if scanner needs it for this mode */
@@ -8810,9 +8857,9 @@ copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
/* scanners interlace colors in many different ways */
if(s->s_params.format == SANE_FRAME_RGB){
-
+
switch (s->color_interlace) {
-
+
/* scanner returns pixel data as bgrbgr... */
case COLOR_INTERLACE_BGR:
for(i=0; i<len; i+=bwidth){
@@ -8823,7 +8870,7 @@ copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
}
}
break;
-
+
/* one line has the following format: rrr...rrrggg...gggbbb...bbb */
case COLOR_INTERLACE_RRGGBB:
for(i=0; i<len; i+=bwidth){
@@ -8834,7 +8881,7 @@ copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
}
}
break;
-
+
default:
memcpy(s->buffers[side]+s->buff_rx[side],buf,len);
s->buff_rx[side] += len;
@@ -8847,7 +8894,7 @@ copy_buffer(struct fujitsu *s, unsigned char * buf, int len, int side)
memcpy(s->buffers[side]+s->buff_rx[side],buf,len);
s->buff_rx[side] += len;
}
-
+
s->bytes_rx[side] += len;
s->lines_rx[side] += len/s->s_params.bytes_per_line;
@@ -8867,16 +8914,16 @@ read_from_buffer(struct fujitsu *s, SANE_Byte * buf,
SANE_Status ret=SANE_STATUS_GOOD;
int bytes = max_len;
int remain = s->buff_rx[side] - s->buff_tx[side];
-
+
DBG (10, "read_from_buffer: start\n");
-
+
/* figure out the max amount to transfer */
if(bytes > remain){
bytes = remain;
}
-
+
*len = bytes;
-
+
DBG(15, "read_from_buffer: si:%d re:%d ml:%d by:%d\n",
side, remain, max_len, bytes);
@@ -8885,19 +8932,19 @@ read_from_buffer(struct fujitsu *s, SANE_Byte * buf,
DBG(15, "read_from_buffer: buf to:%d rx:%d tx:%d\n",
s->buff_tot[side], s->buff_rx[side], s->buff_tx[side]);
-
+
/*FIXME this needs to timeout eventually */
if(!bytes){
DBG(5,"read_from_buffer: nothing to do\n");
return SANE_STATUS_GOOD;
}
-
+
memcpy(buf,s->buffers[side]+s->buff_tx[side],bytes);
s->buff_tx[side] += bytes;
s->bytes_tx[side] += bytes;
DBG (10, "read_from_buffer: finish\n");
-
+
return ret;
}
@@ -8911,7 +8958,7 @@ downsample_from_buffer(struct fujitsu *s, SANE_Byte * buf,
SANE_Status ret=SANE_STATUS_GOOD;
DBG (10, "downsample_from_buffer: start %d %d %d %d\n", s->bytes_rx[side], s->bytes_tx[side], s->buff_rx[side], s->buff_tx[side]);
-
+
if(s->s_mode == MODE_COLOR && s->u_mode == MODE_GRAYSCALE){
while(*len < max_len && s->buff_rx[side] - s->buff_tx[side] >= 3){
@@ -8959,7 +9006,7 @@ downsample_from_buffer(struct fujitsu *s, SANE_Byte * buf,
for(i=0; i<8; i++){
int gray = 0;
-
+
switch (s->dropout_color) {
case COLOR_RED:
gray = *(s->buffers[side]+s->buff_tx[side]) * 3;
@@ -8999,7 +9046,7 @@ downsample_from_buffer(struct fujitsu *s, SANE_Byte * buf,
}
DBG (10, "downsample_from_buffer: finish %d %d %d %d\n", s->bytes_rx[side], s->bytes_tx[side], s->buff_rx[side], s->buff_tx[side]);
-
+
return ret;
}
@@ -9008,26 +9055,26 @@ downsample_from_buffer(struct fujitsu *s, SANE_Byte * buf,
* @@ Section 5 - SANE cleanup functions
*/
/*
- * Cancels a scan.
+ * Cancels a scan.
*
* It has been said on the mailing list that sane_cancel is a bit of a
* misnomer because it is routinely called to signal the end of a
* batch - quoting David Mosberger-Tang:
- *
+ *
* > In other words, the idea is to have sane_start() be called, and
* > collect as many images as the frontend wants (which could in turn
* > consist of multiple frames each as indicated by frame-type) and
- * > when the frontend is done, it should call sane_cancel().
+ * > when the frontend is done, it should call sane_cancel().
* > Sometimes it's better to think of sane_cancel() as "sane_stop()"
* > but that name would have had some misleading connotations as
* > well, that's why we stuck with "cancel".
- *
+ *
* The current consensus regarding duplex and ADF scans seems to be
* the following call sequence: sane_start; sane_read (repeat until
* EOF); sane_start; sane_read... and then call sane_cancel if the
* batch is at an end. I.e. do not call sane_cancel during the run but
* as soon as you get a SANE_STATUS_NO_DOCS.
- *
+ *
* From the SANE spec:
* This function is used to immediately or as quickly as possible
* cancel the currently pending operation of the device represented by
@@ -9061,7 +9108,7 @@ sane_cancel (SANE_Handle handle)
/*
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -9104,7 +9151,7 @@ disconnect_fd (struct fujitsu *s)
/*
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -9703,7 +9750,7 @@ do_usb_cmd(struct fujitsu *s, int runRS, int shortTime,
rs_in, &rs_inLen
);
DBG(25,"rs sub call <<\n");
-
+
if(ret2 == SANE_STATUS_EOF){
DBG(5,"rs: got EOF, returning IO_ERROR\n");
return SANE_STATUS_IO_ERROR;
@@ -9736,7 +9783,7 @@ do_usb_cmd(struct fujitsu *s, int runRS, int shortTime,
}
static SANE_Status
-wait_scanner(struct fujitsu *s)
+wait_scanner(struct fujitsu *s)
{
SANE_Status ret = SANE_STATUS_GOOD;
@@ -9754,7 +9801,7 @@ wait_scanner(struct fujitsu *s)
NULL, 0,
NULL, NULL
);
-
+
if (ret != SANE_STATUS_GOOD) {
DBG(5,"WARNING: Brain-dead scanner. Hitting with stick\n");
ret = do_cmd (
@@ -9783,7 +9830,7 @@ wait_scanner(struct fujitsu *s)
return ret;
}
-/* certain options require the entire image to
+/* certain options require the entire image to
* be collected from the scanner before we can
* tell the user the size of the image. */
static int
@@ -9803,7 +9850,7 @@ must_fully_buffer(struct fujitsu *s)
return 0;
}
-/* certain scanners require the mode of the
+/* certain scanners require the mode of the
* image to be changed in software. */
static int
must_downsample(struct fujitsu *s)
@@ -9823,7 +9870,7 @@ must_downsample(struct fujitsu *s)
* due to using FB or overscan.
*/
static int
-get_page_width(struct fujitsu *s)
+get_page_width(struct fujitsu *s)
{
int width = s->page_width + 2 * (s->os_x_basic*1200/s->basic_x_res);
@@ -9852,7 +9899,7 @@ get_page_width(struct fujitsu *s)
* due to using FB or overscan.
*/
static int
-get_page_height(struct fujitsu *s)
+get_page_height(struct fujitsu *s)
{
int height = s->page_height + 2 * (s->os_y_basic*1200/s->basic_y_res);
@@ -9883,7 +9930,7 @@ get_page_height(struct fujitsu *s)
* and pick the right mode to match.
*/
static int
-get_ipc_mode(struct fujitsu *s)
+get_ipc_mode(struct fujitsu *s)
{
if ( s->bp_filter
|| s->smoothing
@@ -9912,10 +9959,10 @@ get_ipc_mode(struct fujitsu *s)
return WD_ipc_DEFAULT;
}
-/* s->max_y gives the maximum height of paper which can be scanned
+/* s->max_y gives the maximum height of paper which can be scanned
* this actually varies by resolution, so a helper to change it */
static int
-set_max_y(struct fujitsu *s)
+set_max_y(struct fujitsu *s)
{
int i;
@@ -10046,7 +10093,7 @@ buffer_deskew(struct fujitsu *s, int side)
s->deskew_stat = sanei_magic_findSkew(
&s->s_params,s->buffers[side],s->resolution_x,s->resolution_y,
&s->deskew_vals[0],&s->deskew_vals[1],&s->deskew_slope);
-
+
if(s->deskew_stat){
DBG (5, "buffer_deskew: bad findSkew, bailing\n");
goto cleanup;
@@ -10101,7 +10148,7 @@ buffer_crop(struct fujitsu *s, int side)
ret = SANE_STATUS_GOOD;
goto cleanup;
}
-
+
DBG (15, "buffer_crop: t:%d b:%d l:%d r:%d\n",
s->crop_vals[0],s->crop_vals[1],s->crop_vals[2],s->crop_vals[3]);
@@ -10127,7 +10174,7 @@ buffer_crop(struct fujitsu *s, int side)
/* update image size counter to new, smaller size */
s->bytes_rx[side] = s->s_params.lines * s->s_params.bytes_per_line;
s->buff_rx[side] = s->bytes_rx[side];
-
+
cleanup:
DBG (10, "buffer_crop: finish\n");
return ret;
@@ -10178,4 +10225,3 @@ buffer_isblank(struct fujitsu *s, int side)
DBG (10, "buffer_isblank: finished\n");
return status;
}
-
diff --git a/backend/fujitsu.conf.in b/backend/fujitsu.conf.in
index 5fa0003..cb33f15 100644
--- a/backend/fujitsu.conf.in
+++ b/backend/fujitsu.conf.in
@@ -121,12 +121,6 @@ usb 0x04c5 0x119e
#S1500 & S1500M
usb 0x04c5 0x11a2
-#fi-6125
-usb 0x04c5 0x11ee
-
-#fi-6225
-usb 0x04c5 0x11ef
-
#fi-6140Z/fi-6160ZLA
usb 0x04c5 0x11f1
@@ -169,15 +163,6 @@ usb 0x04c5 0x13f3
#ScanSnap iX100
usb 0x04c5 0x13f4
-#ScanPartner SP25
-usb 0x04c5 0x1409
-
-#ScanPartner SP30
-usb 0x04c5 0x140a
-
-#ScanPartner SP30F
-usb 0x04c5 0x140c
-
#fi-6140ZLA
usb 0x04c5 0x145f
@@ -267,4 +252,3 @@ usb 0x04c5 0x1521
#fi-7700S
usb 0x04c5 0x1522
-
diff --git a/backend/fujitsu.h b/backend/fujitsu.h
index 916f069..4c20474 100644
--- a/backend/fujitsu.h
+++ b/backend/fujitsu.h
@@ -1,12 +1,12 @@
#ifndef FUJITSU_H
#define FUJITSU_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comment in fujitsu.c
*/
-/* -------------------------------------------------------------------------
+/* -------------------------------------------------------------------------
* This option list has to contain all options for all scanners supported by
* this driver. If a certain scanner cannot handle a certain option, there's
* still the possibility to say so, later.
@@ -219,7 +219,7 @@ struct fujitsu
int has_cmd_sdiag;
int has_cmd_rdiag;
int has_cmd_scan;
-
+
int has_cmd_msen6;
int has_cmd_copy;
int has_cmd_rel;
@@ -330,8 +330,8 @@ struct fujitsu
int broken_diag_serial; /* some scanners are just plain borked */
int need_q_table; /* some scanners wont work without these */
- int need_diag_preread;
- int late_lut;
+ int need_diag_preread;
+ int late_lut;
int hopper_before_op; /* some scanners dont like OP when hopper empty */
int no_wait_after_op; /* some scanners dont like TUR after OP */
@@ -669,15 +669,15 @@ struct fujitsu
#define COLOR_INTERLACE_RRGGBB 3
#define COLOR_INTERLACE_3091 4
-#define DUPLEX_INTERLACE_ALT 0
-#define DUPLEX_INTERLACE_NONE 1
-#define DUPLEX_INTERLACE_3091 2
+#define DUPLEX_INTERLACE_ALT 0
+#define DUPLEX_INTERLACE_NONE 1
+#define DUPLEX_INTERLACE_3091 2
-#define JPEG_INTERLACE_ALT 0
-#define JPEG_INTERLACE_NONE 1
+#define JPEG_INTERLACE_ALT 0
+#define JPEG_INTERLACE_NONE 1
-#define CROP_RELATIVE 0
-#define CROP_ABSOLUTE 1
+#define CROP_RELATIVE 0
+#define CROP_ABSOLUTE 1
#define DF_DEFAULT 0
#define DF_CONTINUE 1
diff --git a/backend/genesys.c b/backend/genesys.cc
index db0a2b2..0368e21 100644
--- a/backend/genesys.c
+++ b/backend/genesys.cc
@@ -2,7 +2,7 @@
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
Copyright (C) 2004, 2005 Gerhard Jaeger <gerhard@gjaeger.de>
- Copyright (C) 2004-2016 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2004-2016 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
Copyright (C) 2006 Laurent Charpentier <laurent_pubs@yahoo.com>
Copyright (C) 2007 Luke <iceyfor@gmail.com>
@@ -58,24 +58,24 @@
* SANE backend for Genesys Logic GL646/GL841/GL842/GL843/GL846/GL847/GL124 based scanners
*/
-#define BUILD 2511
-#define BACKEND_NAME genesys
+#define DEBUG_NOT_STATIC
#include "genesys.h"
+#include "genesys_sanei.h"
#include "../include/sane/sanei_config.h"
#include "../include/sane/sanei_magic.h"
-#include "genesys_devices.c"
-
-static SANE_Int num_devices = 0;
-static Genesys_Device *first_dev = 0;
-static Genesys_Scanner *first_handle = 0;
-static const SANE_Device **devlist = 0;
-/* Array of newly attached devices */
-static Genesys_Device **new_dev = 0;
-/* Length of new_dev array */
-static SANE_Int new_dev_len = 0;
-/* Number of entries alloced for new_dev */
-static SANE_Int new_dev_alloced = 0;
+#include "genesys_devices.cc"
+
+#include <cstring>
+#include <fstream>
+#include <list>
+#include <exception>
+#include <vector>
+
+StaticInit<std::list<Genesys_Scanner>> s_scanners;
+StaticInit<std::vector<SANE_Device>> s_sane_devices;
+StaticInit<std::vector<SANE_Device*>> s_sane_devices_ptrs;
+StaticInit<std::list<Genesys_Device>> s_devices;
static SANE_String_Const mode_list[] = {
SANE_VALUE_SCAN_MODE_COLOR,
@@ -101,11 +101,18 @@ static SANE_String_Const cis_color_filter_list[] = {
};
static SANE_String_Const source_list[] = {
- SANE_I18N (FLATBED),
- SANE_I18N (TRANSPARENCY_ADAPTER),
+ SANE_I18N (STR_FLATBED),
+ SANE_I18N (STR_TRANSPARENCY_ADAPTER),
0
};
+static const char* source_list_infrared[] = {
+ SANE_I18N(STR_FLATBED),
+ SANE_I18N(STR_TRANSPARENCY_ADAPTER),
+ SANE_I18N(STR_TRANSPARENCY_ADAPTER_INFRARED),
+ 0
+};
+
static SANE_Range swdespeck_range = {
1,
9,
@@ -166,27 +173,67 @@ static const SANE_Range expiration_range = {
1 /* quantization */
};
-void
-sanei_genesys_init_structs (Genesys_Device * dev)
+Genesys_Sensor& sanei_genesys_find_sensor_any_for_write(Genesys_Device* dev)
{
- unsigned int i, sensor_ok = 0, gpo_ok = 0, motor_ok = 0;
+ for (auto& sensor : *s_sensors) {
+ if (dev->model->ccd_type == sensor.sensor_id) {
+ return sensor;
+ }
+ }
+ throw std::runtime_error("Given device does not have sensor defined");
+}
- /* initialize the sensor data stuff */
- for (i = 0; i < sizeof (Sensor) / sizeof (Genesys_Sensor); i++)
- {
- if (dev->model->ccd_type == Sensor[i].sensor_id)
- {
- memcpy (&dev->sensor, &Sensor[i], sizeof (Genesys_Sensor));
- sensor_ok = 1;
- }
+const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev)
+{
+ for (const auto& sensor : *s_sensors) {
+ if (dev->model->ccd_type == sensor.sensor_id) {
+ return sensor;
+ }
+ }
+ throw std::runtime_error("Given device does not have sensor defined");
+}
+
+const Genesys_Sensor& sanei_genesys_find_sensor(Genesys_Device* dev, int dpi,
+ ScanMethod scan_method)
+{
+ for (const auto& sensor : *s_sensors) {
+ if (dev->model->ccd_type == sensor.sensor_id &&
+ (sensor.min_resolution == -1 || dpi >= sensor.min_resolution) &&
+ (sensor.max_resolution == -1 || dpi <= sensor.max_resolution) &&
+ sensor.method == scan_method) {
+ return sensor;
+ }
+ }
+ throw std::runtime_error("Given device does not have sensor defined");
+}
+
+Genesys_Sensor& sanei_genesys_find_sensor_for_write(Genesys_Device* dev, int dpi,
+ ScanMethod scan_method)
+{
+ for (auto& sensor : *s_sensors) {
+ if (dev->model->ccd_type == sensor.sensor_id &&
+ (sensor.min_resolution == -1 || dpi >= sensor.min_resolution) &&
+ (sensor.max_resolution == -1 || dpi <= sensor.max_resolution) &&
+ sensor.method == scan_method) {
+ return sensor;
+ }
}
+ throw std::runtime_error("Given device does not have sensor defined");
+}
+
+
+void
+sanei_genesys_init_structs (Genesys_Device * dev)
+{
+ unsigned int i, gpo_ok = 0, motor_ok = 0;
+ bool fe_ok = false;
/* initialize the GPO data stuff */
for (i = 0; i < sizeof (Gpo) / sizeof (Genesys_Gpo); i++)
{
if (dev->model->gpo_type == Gpo[i].gpo_id)
{
- memcpy (&dev->gpo, &Gpo[i], sizeof (Genesys_Gpo));
+ dev->gpo = Gpo[i];
gpo_ok = 1;
}
}
@@ -196,18 +243,24 @@ sanei_genesys_init_structs (Genesys_Device * dev)
{
if (dev->model->motor_type == Motor[i].motor_id)
{
- memcpy (&dev->motor, &Motor[i], sizeof (Genesys_Motor));
+ dev->motor = Motor[i];
motor_ok = 1;
}
}
+ for (const auto& frontend : *s_frontends) {
+ if (dev->model->dac_type == frontend.fe_id) {
+ dev->frontend_initial = frontend;
+ fe_ok = true;
+ break;
+ }
+ }
+
/* sanity check */
- if (sensor_ok == 0 || motor_ok == 0 || gpo_ok == 0)
+ if (motor_ok == 0 || gpo_ok == 0 || !fe_ok)
{
- DBG (DBG_error0,
- "sanei_genesys_init_structs: bad description(s) for ccd/gpo/motor=%d/%d/%d\n",
- dev->model->ccd_type, dev->model->gpo_type,
- dev->model->motor_type);
+ DBG(DBG_error0, "%s: bad description(s) for fe/gpo/motor=%d/%d/%d\n", __func__,
+ dev->model->ccd_type, dev->model->gpo_type, dev->model->motor_type);
}
/* set up initial line distance shift */
@@ -216,28 +269,6 @@ sanei_genesys_init_structs (Genesys_Device * dev)
dev->ld_shift_b = dev->model->ld_shift_b;
}
-void
-sanei_genesys_init_fe (Genesys_Device * dev)
-{
- unsigned int i;
-
- DBGSTART;
- for (i = 0; i < sizeof (Wolfson) / sizeof (Genesys_Frontend); i++)
- {
- if (dev->model->dac_type == Wolfson[i].fe_id)
- {
- memcpy (&dev->frontend, &Wolfson[i], sizeof (Genesys_Frontend));
- return;
- }
- }
- DBG (DBG_error0,
- "sanei_genesys_init_fe: failed to find description for dac_type %d\n",
- dev->model->dac_type);
- DBG (DBG_info, "sanei_genesys_init_fe: dac_type %d set up\n",
- dev->model->dac_type);
- DBGCOMPLETED;
-}
-
/* main function for slope creation */
/**
* This function generates a slope table using the given slope
@@ -284,16 +315,12 @@ sanei_genesys_generate_slope_table (uint16_t * slope_table,
if (!vfinal)
vfinal = &_vfinal;
- DBG (DBG_proc, "sanei_genesys_generate_slope_table: table size: %d\n",
- max_steps);
+ DBG(DBG_proc, "%s: table size: %d\n", __func__, max_steps);
- DBG (DBG_proc,
- "sanei_genesys_generate_slope_table: stop at time: %d, use %d steps max\n",
- stop_at, use_steps);
+ DBG(DBG_proc, "%s: stop at time: %d, use %d steps max\n", __func__, stop_at, use_steps);
- DBG (DBG_proc,
- "sanei_genesys_generate_slope_table: target slope: "
- "vstart: %d, vend: %d, steps: %d, g: %g\n", vstart, vend, steps, g);
+ DBG(DBG_proc, "%s: target slope: vstart: %d, vend: %d, steps: %d, g: %g\n", __func__, vstart,
+ vend, steps, g);
sum = 0;
c = 0;
@@ -317,10 +344,8 @@ sanei_genesys_generate_slope_table (uint16_t * slope_table,
}
if (t2 > stop_at)
{
- DBG (DBG_warn, "Can not reach target speed(%d) in %d steps.\n",
- stop_at, use_steps);
- DBG (DBG_warn, "Expect image to be distorted. "
- "Ignore this if only feeding.\n");
+ DBG(DBG_warn, "Can not reach target speed(%d) in %d steps.\n", stop_at, use_steps);
+ DBG(DBG_warn, "Expect image to be distorted. Ignore this if only feeding.\n");
}
*vfinal = t2;
*used_steps += i;
@@ -338,9 +363,7 @@ sanei_genesys_generate_slope_table (uint16_t * slope_table,
(*used_steps)++;
sum += *vfinal;
- DBG (DBG_proc,
- "sanei_genesys_generate_slope_table: returns sum=%d, used %d steps, completed\n",
- sum, *used_steps);
+ DBG(DBG_proc, "%s: returns sum=%d, used %d steps, completed\n", __func__, sum, *used_steps);
return sum;
}
@@ -385,10 +408,8 @@ sanei_genesys_create_slope_table3 (Genesys_Device * dev,
unsigned int vstart;
unsigned int vfinal;
- DBG (DBG_proc,
- "%s: step_type = %d, "
- "exposure_time = %d, yres = %g, power_mode = %d\n", __func__, step_type,
- exposure_time, yres, power_mode);
+ DBG(DBG_proc, "%s: step_type = %d, exposure_time = %d, yres = %g, power_mode = %d\n", __func__,
+ step_type, exposure_time, yres, power_mode);
/* final speed */
vtarget = (exposure_time * yres) / dev->motor.base_ydpi;
@@ -422,9 +443,7 @@ sanei_genesys_create_slope_table3 (Genesys_Device * dev,
if (final_exposure)
*final_exposure = (vfinal * dev->motor.base_ydpi) / yres;
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table: returns sum_time=%d, completed\n",
- sum_time);
+ DBG(DBG_proc, "%s: returns sum_time=%d, completed\n", __func__, sum_time);
return sum_time;
}
@@ -444,10 +463,9 @@ genesys_create_slope_table2 (Genesys_Device * dev,
int vstart, vend;
int i;
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table2: %d steps, step_type = %d, "
- "exposure_time = %d, same_speed = %d, yres = %.2f, power_mode = %d\n",
- steps, step_type, exposure_time, same_speed, yres, power_mode);
+ DBG(DBG_proc, "%s: %d steps, step_type = %d, "
+ "exposure_time = %d, same_speed = %d, yres = %.2f, power_mode = %d\n", __func__, steps,
+ step_type, exposure_time, same_speed, yres, power_mode);
/* start speed */
if (dev->model->motor_type == MOTOR_5345)
@@ -546,8 +564,7 @@ genesys_create_slope_table2 (Genesys_Device * dev,
}
}
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table2: returns sum=%d, completed\n", sum);
+ DBG(DBG_proc, "%s: returns sum=%d, completed\n", __func__, sum);
return sum;
}
@@ -576,11 +593,9 @@ sanei_genesys_create_slope_table (Genesys_Device * dev,
step_type, exposure_time,
same_speed, yres, power_mode);
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table: %d steps, step_type = %d, "
- "exposure_time = %d, same_speed =%d\n", steps, step_type,
- exposure_time, same_speed);
- DBG (DBG_proc, "sanei_genesys_create_slope_table: yres = %.2f\n", yres);
+ DBG(DBG_proc, "%s: %d steps, step_type = %d, exposure_time = %d, same_speed =%d\n", __func__,
+ steps, step_type, exposure_time, same_speed);
+ DBG(DBG_proc, "%s: yres = %.2f\n", __func__, yres);
g = 0.6;
start_speed = 0.01;
@@ -603,9 +618,7 @@ sanei_genesys_create_slope_table (Genesys_Device * dev,
DBG (DBG_io, "slope_table[%d] = %d\n", i, time_period);
}
- DBG (DBG_info,
- "sanei_genesys_create_slope_table: returns sum_time=%d, completed\n",
- sum_time);
+ DBG(DBG_info, "%s: returns sum_time=%d, completed\n", __func__, sum_time);
return sum_time;
}
@@ -688,9 +701,7 @@ sanei_genesys_create_slope_table (Genesys_Device * dev,
DBG (DBG_io, "slope_table[%d] = %d\n", i, time_period);
}
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table: returns sum_time=%d, completed\n",
- sum_time);
+ DBG(DBG_proc, "%s: returns sum_time=%d, completed\n", __func__, sum_time);
return sum_time;
}
@@ -718,9 +729,7 @@ sanei_genesys_create_slope_table (Genesys_Device * dev,
DBG (DBG_io, "slope_table[%d] = %d\n", i, slope_table[i]);
}
- DBG (DBG_proc,
- "sanei_genesys_create_slope_table: returns sum_time=%d, completed\n",
- sum_time);
+ DBG(DBG_proc, "%s: returns sum_time=%d, completed\n", __func__, sum_time);
return sum_time;
}
@@ -736,21 +745,17 @@ sanei_genesys_create_slope_table (Genesys_Device * dev,
* @return a gamma table filled with the computed values
* */
void
-sanei_genesys_create_gamma_table (uint16_t * gamma_table, int size,
- float maximum, float gamma_max, float gamma)
+sanei_genesys_create_gamma_table (std::vector<uint16_t>& gamma_table, int size,
+ float maximum, float gamma_max, float gamma)
{
+ gamma_table.clear();
+ gamma_table.resize(size, 0);
+
int i;
float value;
- if(gamma_table==NULL)
- {
- DBG (DBG_proc, "sanei_genesys_create_gamma_table: gamma table is NULL\n");
- return;
- }
- DBG (DBG_proc,
- "sanei_genesys_create_gamma_table: size = %d, "
- "maximum = %g, gamma_max = %g, gamma = %g\n",
- size, maximum, gamma_max, gamma);
+ DBG(DBG_proc, "%s: size = %d, ""maximum = %g, gamma_max = %g, gamma = %g\n", __func__, size,
+ maximum, gamma_max, gamma);
for (i = 0; i < size; i++)
{
value = gamma_max * pow ((float) i / size, 1.0 / gamma);
@@ -758,9 +763,27 @@ sanei_genesys_create_gamma_table (uint16_t * gamma_table, int size,
value = maximum;
gamma_table[i] = value;
}
- DBG (DBG_proc, "sanei_genesys_create_gamma_table: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
}
+void sanei_genesys_create_default_gamma_table(Genesys_Device* dev,
+ std::vector<uint16_t>& gamma_table, float gamma)
+{
+ int size = 0;
+ int max = 0;
+ if (dev->model->asic_type == GENESYS_GL646) {
+ if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA) {
+ size = 16384;
+ } else {
+ size = 4096;
+ }
+ max = size - 1;
+ } else {
+ size = 256;
+ max = 65535;
+ }
+ sanei_genesys_create_gamma_table(gamma_table, size, max, max, gamma);
+}
/* computes the exposure_time on the basis of the given vertical dpi,
the number of pixels the ccd needs to send,
@@ -791,8 +814,8 @@ sanei_genesys_exposure_time2 (Genesys_Device * dev, float ydpi,
if (exposure < exposure_by_led && dev->model->is_cis)
exposure = exposure_by_led;
- DBG (DBG_info, "%s: ydpi=%d, step=%d, endpixel=%d led=%d, power=%d => exposure=%d\n",
- __func__, (int)ydpi, step_type, endpixel, exposure_by_led, power_mode, exposure);
+ DBG(DBG_info, "%s: ydpi=%d, step=%d, endpixel=%d led=%d, power=%d => exposure=%d\n", __func__,
+ (int)ydpi, step_type, endpixel, exposure_by_led, power_mode, exposure);
return exposure;
}
@@ -903,7 +926,7 @@ sanei_genesys_exposure_time (Genesys_Device * dev, Genesys_Register_Set * reg,
}
}
}
- return dev->settings.exposure_time;
+ return 11000;
}
@@ -917,41 +940,41 @@ sanei_genesys_exposure_time (Genesys_Device * dev, Genesys_Register_Set * reg,
The data needs to be of size "size", and in little endian byte order.
*/
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-genesys_send_offset_and_shading (Genesys_Device * dev, uint8_t * data,
+static SANE_Status
+genesys_send_offset_and_shading (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data,
int size)
{
int dpihw;
int start_address;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "%s: (size = %d)\n", __func__, size);
+ DBG(DBG_proc, "%s: (size = %d)\n", __func__, size);
/* ASIC higher than gl843 doesn't have register 2A/2B, so we route to
* a per ASIC shading data loading function if available.
* It is also used for scanners using SHDAREA */
if(dev->model->cmd_set->send_shading_data!=NULL)
{
- status=dev->model->cmd_set->send_shading_data(dev, data, size);
+ status=dev->model->cmd_set->send_shading_data(dev, sensor, data, size);
DBGCOMPLETED;
return status;
}
/* gl646, gl84[123] case */
- dpihw = sanei_genesys_read_reg_from_set (dev->reg, 0x05) >> 6;
+ dpihw = dev->reg.get8(0x05) >> 6;
/* TODO invert the test so only the 2 models behaving like that are
* tested instead of adding all the others */
/* many scanners send coefficient for lineart/gray like in color mode */
- if (dev->settings.scan_mode < 2
+ if ((dev->settings.scan_mode == ScanColorMode::LINEART ||
+ dev->settings.scan_mode == ScanColorMode::HALFTONE)
&& dev->model->ccd_type != CCD_PLUSTEK3800
&& dev->model->ccd_type != CCD_KVSS080
&& dev->model->ccd_type != CCD_G4050
&& dev->model->ccd_type != CCD_CS4400F
&& dev->model->ccd_type != CCD_CS8400F
+ && dev->model->ccd_type != CCD_CS8600F
&& dev->model->ccd_type != CCD_DSMOBILE600
&& dev->model->ccd_type != CCD_XP300
&& dev->model->ccd_type != CCD_DP665
@@ -978,16 +1001,14 @@ genesys_send_offset_and_shading (Genesys_Device * dev, uint8_t * data,
status = sanei_genesys_set_buffer_address (dev, start_address);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to set buffer address: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
return status;
}
status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, data, size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to send shading table: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading table: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -998,10 +1019,10 @@ genesys_send_offset_and_shading (Genesys_Device * dev, uint8_t * data,
/* ? */
SANE_Status
-sanei_genesys_init_shading_data (Genesys_Device * dev, int pixels_per_line)
+sanei_genesys_init_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ int pixels_per_line)
{
- SANE_Status status;
- uint8_t *shading_data, *shading_data_ptr;
+ SANE_Status status = SANE_STATUS_GOOD;
int channels;
int i;
@@ -1014,23 +1035,21 @@ sanei_genesys_init_shading_data (Genesys_Device * dev, int pixels_per_line)
|| dev->model->cmd_set->send_shading_data!=NULL)
return SANE_STATUS_GOOD;
- DBG (DBG_proc, "sanei_genesys_init_shading_data (pixels_per_line = %d)\n",
- pixels_per_line);
-
- if (dev->settings.scan_mode >= 2) /* 3 pass or single pass color */
- channels = 3;
- else
- channels = 1;
+ DBG(DBG_proc, "%s (pixels_per_line = %d)\n", __func__, pixels_per_line);
- shading_data = malloc (pixels_per_line * 4 * channels); /* 16 bit black, 16 bit white */
- if (!shading_data)
+ // BUG: GRAY shouldn't probably be in the if condition below. Discovered when refactoring
+ if (dev->settings.scan_mode == ScanColorMode::GRAY ||
+ dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
- DBG (DBG_error,
- "sanei_genesys_init_shading_data: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
+ channels = 3;
+ } else {
+ channels = 1;
}
- shading_data_ptr = shading_data;
+ // 16 bit black, 16 bit white
+ std::vector<uint8_t> shading_data(pixels_per_line * 4 * channels, 0);
+
+ uint8_t* shading_data_ptr = shading_data.data();
for (i = 0; i < pixels_per_line * channels; i++)
{
@@ -1040,13 +1059,12 @@ sanei_genesys_init_shading_data (Genesys_Device * dev, int pixels_per_line)
*shading_data_ptr++ = 0x40; /* white hi -> 0x4000 */
}
- status = genesys_send_offset_and_shading (dev,
- shading_data,
+ status = genesys_send_offset_and_shading (dev, sensor,
+ shading_data.data(),
pixels_per_line * 4 * channels);
- free (shading_data);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to send shading data: %s\n", __func__,
+ DBG(DBG_error, "%s: failed to send shading data: %s\n", __func__,
sane_strstatus (status));
}
@@ -1059,13 +1077,13 @@ sanei_genesys_init_shading_data (Genesys_Device * dev, int pixels_per_line)
takes gray level 8 bits data and find
first CCD usable pixel and top of scanning area */
SANE_Status
-sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
+sanei_genesys_search_reference_point (Genesys_Device * dev, Genesys_Sensor& sensor,
+ uint8_t * data,
int start_pixel, int dpi, int width,
int height)
{
int x, y;
int current, left, top = 0;
- uint8_t *image;
int size, count;
int level = 80; /* edge threshold level */
@@ -1075,16 +1093,10 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
/* transformed image data */
size = width * height;
- image = malloc (size);
- if (!image)
- {
- DBG (DBG_error,
- "sanei_genesys_search_reference_point: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> image(size, 0);
/* laplace filter to denoise picture */
- memcpy (image, data, size); /* to initialize unprocessed part of the image buffer */
+ memcpy(image.data(), data, size); // to initialize unprocessed part of the image buffer
for (y = 1; y < height - 1; y++)
for (x = 1; x < width - 1; x++)
{
@@ -1096,9 +1108,9 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
data[(y + 1) * width + x - 1]) / 16;
}
- memcpy (data, image, size);
+ memcpy (data, image.data(), size);
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("laplace.pnm", image, 8, 1, width, height);
+ sanei_genesys_write_pnm_file("gl_laplace.pnm", image.data(), 8, 1, width, height);
/* apply X direction sobel filter
-1 0 1
@@ -1123,7 +1135,7 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
level = current;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("xsobel.pnm", image, 8, 1, width, height);
+ sanei_genesys_write_pnm_file("gl_xsobel.pnm", image.data(), 8, 1, width, height);
/* set up detection level */
level = level / 3;
@@ -1145,13 +1157,11 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
left += x;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("detected-xsobel.pnm", image, 8, 1, width,
- height);
+ sanei_genesys_write_pnm_file("gl_detected-xsobel.pnm", image.data(), 8, 1, width, height);
left = left / count;
/* turn it in CCD pixel at full sensor optical resolution */
- dev->sensor.CCD_start_xoffset =
- start_pixel + (left * dev->sensor.optical_res) / dpi;
+ sensor.CCD_start_xoffset = start_pixel + (left * sensor.optical_res) / dpi;
/* find top edge by detecting black strip */
/* apply Y direction sobel filter
@@ -1176,7 +1186,7 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
level = current;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("ysobel.pnm", image, 8, 1, width, height);
+ sanei_genesys_write_pnm_file("gl_ysobel.pnm", image.data(), 8, 1, width, height);
/* set up detection level */
level = level / 3;
@@ -1199,17 +1209,15 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
top += y;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("detected-ysobel.pnm", image, 8, 1,
- width, height);
+ sanei_genesys_write_pnm_file("gl_detected-ysobel.pnm", image.data(), 8, 1, width, height);
top = top / count;
/* bottom of black stripe is of fixed witdh, this hardcoded value
* will be moved into device struct if more such values are needed */
top += 10;
dev->model->y_offset_calib = SANE_FIX ((top * MM_PER_INCH) / dpi);
- DBG (DBG_info,
- "sanei_genesys_search_reference_point: black stripe y_offset = %f mm \n",
- SANE_UNFIX (dev->model->y_offset_calib));
+ DBG(DBG_info, "%s: black stripe y_offset = %f mm \n", __func__,
+ SANE_UNFIX (dev->model->y_offset_calib));
}
/* find white corner in dark area : TODO yet another flag */
@@ -1232,15 +1240,12 @@ sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
}
top = top / count;
dev->model->y_offset_calib = SANE_FIX ((top * MM_PER_INCH) / dpi);
- DBG (DBG_info,
- "sanei_genesys_search_reference_point: white corner y_offset = %f mm\n",
- SANE_UNFIX (dev->model->y_offset_calib));
+ DBG(DBG_info, "%s: white corner y_offset = %f mm\n", __func__,
+ SANE_UNFIX (dev->model->y_offset_calib));
}
- free (image);
- DBG (DBG_proc,
- "sanei_genesys_search_reference_point: CCD_start_xoffset = %d, left = %d, top = %d\n",
- dev->sensor.CCD_start_xoffset, left, top);
+ DBG(DBG_proc, "%s: CCD_start_xoffset = %d, left = %d, top = %d\n", __func__,
+ sensor.CCD_start_xoffset, left, top);
return SANE_STATUS_GOOD;
}
@@ -1256,7 +1261,7 @@ sanei_genesys_calculate_zmode2 (SANE_Bool two_table,
{
int i;
int sum;
- DBG (DBG_info, "sanei_genesys_calculate_zmode2: two_table=%d\n", two_table);
+ DBG(DBG_info, "%s: two_table=%d\n", __func__, two_table);
/* acceleration total time */
sum = 0;
@@ -1321,54 +1326,50 @@ sanei_genesys_calculate_zmode (uint32_t exposure_time,
}
-static void
-genesys_adjust_gain (double *applied_multi,
- uint8_t * new_gain, double multi, uint8_t gain)
+static uint8_t genesys_adjust_gain(double* applied_multi, double multi, uint8_t gain)
{
double voltage, original_voltage;
+ uint8_t new_gain = 0;
- DBG (DBG_proc, "genesys_adjust_gain: multi=%f, gain=%d\n", multi, gain);
+ DBG(DBG_proc, "%s: multi=%f, gain=%d\n", __func__, multi, gain);
voltage = 0.5 + gain * 0.25;
original_voltage = voltage;
voltage *= multi;
- *new_gain = (uint8_t) ((voltage - 0.5) * 4);
- if (*new_gain > 0x0e)
- *new_gain = 0x0e;
+ new_gain = (uint8_t) ((voltage - 0.5) * 4);
+ if (new_gain > 0x0e)
+ new_gain = 0x0e;
- voltage = 0.5 + (*new_gain) * 0.25;
+ voltage = 0.5 + (new_gain) * 0.25;
*applied_multi = voltage / original_voltage;
- DBG (DBG_proc,
- "genesys_adjust_gain: orig voltage=%.2f, new voltage=%.2f, "
- "*applied_multi=%f, *new_gain=%d\n", original_voltage, voltage,
- *applied_multi, *new_gain);
- return;
+ DBG(DBG_proc, "%s: orig voltage=%.2f, new voltage=%.2f, *applied_multi=%f, new_gain=%d\n",
+ __func__, original_voltage, voltage, *applied_multi, new_gain);
+
+ return new_gain;
}
/* todo: is return status necessary (unchecked?) */
static SANE_Status
-genesys_average_white (Genesys_Device * dev, int channels, int channel,
+genesys_average_white (Genesys_Device * dev, Genesys_Sensor& sensor, int channels, int channel,
uint8_t * data, int size, int *max_average)
{
int gain_white_ref, sum, range;
int average;
int i;
- DBG (DBG_proc,
- "genesys_average_white: channels=%d, channel=%d, size=%d\n",
- channels, channel, size);
+ DBG(DBG_proc, "%s: channels=%d, channel=%d, size=%d\n", __func__, channels, channel, size);
range = size / 50;
- if (dev->settings.scan_method == SCAN_METHOD_TRANSPARENCY) /* transparency mode */
- gain_white_ref = dev->sensor.fau_gain_white_ref * 256;
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY) /* transparency mode */
+ gain_white_ref = sensor.fau_gain_white_ref * 256;
else
- gain_white_ref = dev->sensor.gain_white_ref * 256;
+ gain_white_ref = sensor.gain_white_ref * 256;
if (range < 1)
range = 1;
@@ -1394,9 +1395,8 @@ genesys_average_white (Genesys_Device * dev, int channels, int channel,
*max_average = average;
}
- DBG (DBG_proc,
- "genesys_average_white: max_average=%d, gain_white_ref = %d, finished\n",
- *max_average, gain_white_ref);
+ DBG(DBG_proc, "%s: max_average=%d, gain_white_ref = %d, finished\n", __func__, *max_average,
+ gain_white_ref);
if (*max_average >= gain_white_ref)
return SANE_STATUS_INVAL;
@@ -1413,12 +1413,11 @@ genesys_average_black (Genesys_Device * dev, int channel,
int sum;
int pixel_step;
- DBG (DBG_proc, "genesys_average_black: channel=%d, pixels=%d\n",
- channel, pixels);
+ DBG(DBG_proc, "%s: channel=%d, pixels=%d\n", __func__, channel, pixels);
sum = 0;
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
data += (channel * 2);
pixel_step = 3 * 2;
@@ -1436,7 +1435,7 @@ genesys_average_black (Genesys_Device * dev, int channel,
data += pixel_step;
}
- DBG (DBG_proc, "genesys_average_black = %d\n", sum / pixels);
+ DBG(DBG_proc, "%s = %d\n", __func__, sum / pixels);
return (int) (sum / pixels);
}
@@ -1444,75 +1443,58 @@ genesys_average_black (Genesys_Device * dev, int channel,
/* todo: check; it works but the lines 1, 2, and 3 are too dark even with the
same offset and gain settings? */
-static SANE_Status
-genesys_coarse_calibration (Genesys_Device * dev)
+static SANE_Status genesys_coarse_calibration(Genesys_Device * dev, Genesys_Sensor& sensor)
{
int size;
int black_pixels;
int white_average;
int channels;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t offset[4] = { 0xa0, 0x00, 0xa0, 0x40 }; /* first value isn't used */
uint16_t white[12], dark[12];
int i, j;
- uint8_t *calibration_data, *all_data;
- DBG (DBG_info, "genesys_coarse_calibration (scan_mode = %d)\n",
- dev->settings.scan_mode);
+ DBG(DBG_info, "%s (scan_mode = %d)\n", __func__, static_cast<unsigned>(dev->settings.scan_mode));
- black_pixels = dev->sensor.black_pixels
- * dev->settings.xres / dev->sensor.optical_res;
+ black_pixels = sensor.black_pixels
+ * dev->settings.xres / sensor.optical_res;
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
- DBG (DBG_info, "channels %d y_size %d xres %d\n",
- channels, dev->model->y_size, dev->settings.xres);
+ DBG(DBG_info, "channels %d y_size %d xres %d\n", channels, dev->model->y_size,
+ dev->settings.xres);
size =
channels * 2 * SANE_UNFIX (dev->model->y_size) * dev->settings.xres /
25.4;
/* 1 1 mm 1/inch inch/mm */
- calibration_data = malloc (size);
- if (!calibration_data)
- {
- DBG (DBG_error,
- "genesys_coarse_calibration: failed to allocate memory(%d bytes)\n",
- size);
- return SANE_STATUS_NO_MEM;
- }
-
- all_data = calloc (1, size * 4);
+ std::vector<uint8_t> calibration_data(size);
+ std::vector<uint8_t> all_data(size * 4, 1);
- status = dev->model->cmd_set->set_fe (dev, AFE_INIT);
+ status = dev->model->cmd_set->set_fe(dev, sensor, AFE_INIT);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to set frontend: %s\n", __func__,
- sane_strstatus (status));
- free(all_data);
- free(calibration_data);
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
- dev->frontend.sign[0] = 0;
- dev->frontend.sign[1] = 0;
- dev->frontend.sign[2] = 0;
- dev->frontend.gain[0] = 2;
- dev->frontend.gain[1] = 2;
- dev->frontend.gain[2] = 2; /* todo: ? was 2 */
- dev->frontend.offset[0] = offset[0];
- dev->frontend.offset[1] = offset[0];
- dev->frontend.offset[2] = offset[0];
+ dev->frontend.set_gain(0, 2);
+ dev->frontend.set_gain(1, 2);
+ dev->frontend.set_gain(2, 2); // TODO: ? was 2
+ dev->frontend.set_offset(0, offset[0]);
+ dev->frontend.set_offset(1, offset[0]);
+ dev->frontend.set_offset(2, offset[0]);
for (i = 0; i < 4; i++) /* read 4 lines */
{
if (i < 3) /* first 3 lines */
{
- dev->frontend.offset[0] = offset[i];
- dev->frontend.offset[1] = offset[i];
- dev->frontend.offset[2] = offset[i];
+ dev->frontend.set_offset(0, offset[i]);
+ dev->frontend.set_offset(1, offset[i]);
+ dev->frontend.set_offset(2, offset[i]);
}
if (i == 1) /* second line */
@@ -1520,55 +1502,51 @@ genesys_coarse_calibration (Genesys_Device * dev)
double applied_multi;
double gain_white_ref;
- if (dev->settings.scan_method == SCAN_METHOD_TRANSPARENCY) /* Transparency */
- gain_white_ref = dev->sensor.fau_gain_white_ref * 256;
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY) /* Transparency */
+ gain_white_ref = sensor.fau_gain_white_ref * 256;
else
- gain_white_ref = dev->sensor.gain_white_ref * 256;
+ gain_white_ref = sensor.gain_white_ref * 256;
/* white and black are defined downwards */
- genesys_adjust_gain (&applied_multi,
- &dev->frontend.gain[0],
- gain_white_ref / (white[0] - dark[0]),
- dev->frontend.gain[0]);
- genesys_adjust_gain (&applied_multi,
- &dev->frontend.gain[1],
- gain_white_ref / (white[1] - dark[1]),
- dev->frontend.gain[1]);
- genesys_adjust_gain (&applied_multi,
- &dev->frontend.gain[2],
- gain_white_ref / (white[2] - dark[2]),
- dev->frontend.gain[2]);
-
- dev->frontend.gain[0] = dev->frontend.gain[1] =
- dev->frontend.gain[2] = 2;
+ uint8_t gain0 = genesys_adjust_gain(&applied_multi,
+ gain_white_ref / (white[0] - dark[0]),
+ dev->frontend.get_gain(0));
+ uint8_t gain1 = genesys_adjust_gain(&applied_multi,
+ gain_white_ref / (white[1] - dark[1]),
+ dev->frontend.get_gain(1));
+ uint8_t gain2 = genesys_adjust_gain(&applied_multi,
+ gain_white_ref / (white[2] - dark[2]),
+ dev->frontend.get_gain(2));
+ // FIXME: looks like overwritten data. Are the above calculations doing
+ // anything at all?
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain1);
+ dev->frontend.set_gain(2, gain2);
+ dev->frontend.set_gain(0, 2);
+ dev->frontend.set_gain(1, 2);
+ dev->frontend.set_gain(2, 2);
status =
- sanei_genesys_fe_write_data (dev, 0x28, dev->frontend.gain[0]);
+ sanei_genesys_fe_write_data(dev, 0x28, dev->frontend.get_gain(0));
if (status != SANE_STATUS_GOOD) /* todo: this was 0x28 + 3 ? */
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write gain[0]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write gain[0]: %s\n", __func__, sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x29, dev->frontend.gain[1]);
+ sanei_genesys_fe_write_data(dev, 0x29, dev->frontend.get_gain(1));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write gain[1]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write gain[1]: %s\n", __func__, sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x2a, dev->frontend.gain[2]);
+ sanei_genesys_fe_write_data(dev, 0x2a, dev->frontend.get_gain(2));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write gain[2]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write gain[2]: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -1587,127 +1565,114 @@ genesys_coarse_calibration (Genesys_Device * dev)
y = x - x * (offset[i - 1] / 2) / 254 - dark[(i - 1) * 3 + j];
rate = (x - DARK_VALUE - y) * 254 / x + 0.5;
- dev->frontend.offset[j] = (uint8_t) (rate);
+ uint8_t curr_offset = static_cast<uint8_t>(rate);
- if (dev->frontend.offset[j] > 0x7f)
- dev->frontend.offset[j] = 0x7f;
- dev->frontend.offset[j] <<= 1;
+ if (curr_offset > 0x7f) {
+ curr_offset = 0x7f;
+ }
+ curr_offset <<= 1;
+ dev->frontend.set_offset(j, curr_offset);
}
}
status =
- sanei_genesys_fe_write_data (dev, 0x20, dev->frontend.offset[0]);
+ sanei_genesys_fe_write_data(dev, 0x20, dev->frontend.get_offset(0));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write offset[0]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write offset[0]: %s\n", __func__, sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x21, dev->frontend.offset[1]);
+ sanei_genesys_fe_write_data(dev, 0x21, dev->frontend.get_offset(1));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write offset[1]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write offset[1]: %s\n", __func__, sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x22, dev->frontend.offset[2]);
+ sanei_genesys_fe_write_data(dev, 0x22, dev->frontend.get_offset(2));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to write offset[2]: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to write offset[2]: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "genesys_coarse_calibration: doing scan: sign: %d/%d/%d, gain: %d/%d/%d, offset: %d/%d/%d\n",
- dev->frontend.sign[0], dev->frontend.sign[1],
- dev->frontend.sign[2], dev->frontend.gain[0],
- dev->frontend.gain[1], dev->frontend.gain[2],
- dev->frontend.offset[0], dev->frontend.offset[1],
- dev->frontend.offset[2]);
+ DBG(DBG_info,
+ "%s: doing scan: gain: %d/%d/%d, offset: %d/%d/%d\n", __func__,
+ dev->frontend.get_gain(0),
+ dev->frontend.get_gain(1),
+ dev->frontend.get_gain(2),
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
status =
- dev->model->cmd_set->begin_scan (dev, dev->calib_reg, SANE_FALSE);
+ dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
status =
- sanei_genesys_read_data_from_scanner (dev, calibration_data, size);
+ sanei_genesys_read_data_from_scanner (dev, calibration_data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
- memcpy (all_data + i * size, calibration_data, size);
+ std::memcpy(all_data.data() + i * size, calibration_data.data(), size);
if (i == 3) /* last line */
{
- SANE_Byte *all_data_8 = malloc (size * 4 / 2);
+ std::vector<uint8_t> all_data_8(size * 4 / 2);
unsigned int count;
for (count = 0; count < (unsigned int) (size * 4 / 2); count++)
all_data_8[count] = all_data[count * 2 + 1];
status =
- sanei_genesys_write_pnm_file ("coarse.pnm", all_data_8, 8,
- channels, size / 6, 4);
+ sanei_genesys_write_pnm_file("gl_coarse.pnm", all_data_8.data(), 8, channels, size / 6, 4);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: sanei_genesys_write_pnm_file failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
- status = dev->model->cmd_set->end_scan (dev, dev->calib_reg, SANE_TRUE);
+ status = dev->model->cmd_set->end_scan(dev, &dev->calib_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_coarse_calibration: Failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
for (j = 0; j < 3; j++)
{
- genesys_average_white (dev, 3, j, calibration_data, size,
+ genesys_average_white (dev, sensor, 3, j, calibration_data.data(), size,
&white_average);
white[i * 3 + j] = white_average;
dark[i * 3 + j] =
- genesys_average_black (dev, j, calibration_data,
+ genesys_average_black (dev, j, calibration_data.data(),
black_pixels);
- DBG (DBG_info,
- "genesys_coarse_calibration: white[%d]=%d, black[%d]=%d\n",
- i * 3 + j, white[i * 3 + j], i * 3 + j, dark[i * 3 + j]);
+ DBG(DBG_info, "%s: white[%d]=%d, black[%d]=%d\n", __func__,
+ i * 3 + j, white[i * 3 + j], i * 3 + j, dark[i * 3 + j]);
}
}
else /* one color-component modes */
{
- genesys_average_white (dev, 1, 0, calibration_data, size,
+ genesys_average_white (dev, sensor, 1, 0, calibration_data.data(), size,
&white_average);
white[i * 3 + 0] = white[i * 3 + 1] = white[i * 3 + 2] =
white_average;
dark[i * 3 + 0] = dark[i * 3 + 1] = dark[i * 3 + 2] =
- genesys_average_black (dev, 0, calibration_data, black_pixels);
+ genesys_average_black (dev, 0, calibration_data.data(), black_pixels);
}
if (i == 3)
{
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
/* todo: huh? */
dev->dark[0] =
@@ -1721,7 +1686,7 @@ genesys_coarse_calibration (Genesys_Device * dev)
{
switch (dev->settings.color_filter)
{
- case 0:
+ case ColorFilter::RED:
default:
dev->dark[0] =
(uint16_t) (1.6925 * dark[i * 3 + 0] +
@@ -1729,14 +1694,14 @@ genesys_coarse_calibration (Genesys_Device * dev)
dev->dark[1] = dev->dark[2] = dev->dark[0];
break;
- case 1:
+ case ColorFilter::GREEN:
dev->dark[1] =
(uint16_t) (1.4013 * dark[i * 3 + 1] +
(1.3147 - 1.0) * 256);
dev->dark[0] = dev->dark[2] = dev->dark[1];
break;
- case 2:
+ case ColorFilter::BLUE:
dev->dark[2] =
(uint16_t) (1.2931 * dark[i * 3 + 2] +
(1.1558 - 1.0) * 256);
@@ -1747,13 +1712,13 @@ genesys_coarse_calibration (Genesys_Device * dev)
}
} /* for (i = 0; i < 4; i++) */
- free(all_data);
- DBG (DBG_info,
- "genesys_coarse_calibration: final: sign: %d/%d/%d, gain: %d/%d/%d, offset: %d/%d/%d\n",
- dev->frontend.sign[0], dev->frontend.sign[1], dev->frontend.sign[2],
- dev->frontend.gain[0], dev->frontend.gain[1], dev->frontend.gain[2],
- dev->frontend.offset[0], dev->frontend.offset[1],
- dev->frontend.offset[2]);
+ DBG(DBG_info, "%s: final: gain: %d/%d/%d, offset: %d/%d/%d\n", __func__,
+ dev->frontend.get_gain(0),
+ dev->frontend.get_gain(1),
+ dev->frontend.get_gain(2),
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
DBGCOMPLETED;
return status;
@@ -1762,10 +1727,7 @@ genesys_coarse_calibration (Genesys_Device * dev)
/* Averages image data.
average_data and calibration_data are little endian 16 bit words.
*/
-#ifndef UNIT_TESTING
-static
-#endif
-void
+static void
genesys_average_data (uint8_t * average_data,
uint8_t * calibration_data,
uint32_t lines,
@@ -1797,13 +1759,12 @@ genesys_average_data (uint8_t * average_data,
* @return SANE_STATUS_GOOD if OK, else an error
*/
static SANE_Status
-genesys_dark_shading_calibration (Genesys_Device * dev)
+genesys_dark_shading_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
size_t size;
uint32_t pixels_per_line;
uint8_t channels;
- uint8_t *calibration_data;
SANE_Bool motor;
DBGSTART;
@@ -1812,28 +1773,23 @@ genesys_dark_shading_calibration (Genesys_Device * dev)
pixels_per_line = dev->calib_pixels;
channels = dev->calib_channels;
- FREE_IFNOT_NULL (dev->dark_average_data);
+ uint32_t out_pixels_per_line = pixels_per_line + dev->calib_pixels_offset;
+ dev->average_size = channels * 2 * out_pixels_per_line;
- dev->average_size = channels * 2 * pixels_per_line;
+ dev->dark_average_data.clear();
+ dev->dark_average_data.resize(dev->average_size);
- dev->dark_average_data = malloc (dev->average_size);
- if (!dev->dark_average_data)
- {
- DBG (DBG_error,
- "genesys_dark_shading_calibration: failed to allocate average memory\n");
- return SANE_STATUS_NO_MEM;
+ // FIXME: the current calculation is likely incorrect on non-GENESYS_GL843 implementations,
+ // but this needs checking
+ if (dev->calib_total_bytes_to_read > 0) {
+ size = dev->calib_total_bytes_to_read;
+ } else if (dev->model->asic_type == GENESYS_GL843) {
+ size = channels * 2 * pixels_per_line * dev->calib_lines;
+ } else {
+ size = channels * 2 * pixels_per_line * (dev->calib_lines + 1);
}
- /* size is size in bytes for scanarea: bytes_per_line * lines */
- size = channels * 2 * pixels_per_line * (dev->calib_lines + 1);
-
- calibration_data = malloc (size);
- if (!calibration_data)
- {
- DBG (DBG_error,
- "genesys_dark_shading_calibration: failed to allocate calibration data memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> calibration_data(size);
motor=SANE_TRUE;
if (dev->model->flags & GENESYS_FLAG_SHADING_NO_MOVE)
@@ -1845,76 +1801,63 @@ genesys_dark_shading_calibration (Genesys_Device * dev)
* because they have a calibration sheet with a sufficient black strip */
if (dev->model->is_sheetfed == SANE_FALSE)
{
- dev->model->cmd_set->set_lamp_power (dev, dev->calib_reg, SANE_FALSE);
- dev->model->cmd_set->set_motor_power (dev->calib_reg, motor);
+ sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, false);
+ sanei_genesys_set_motor_power(dev->calib_reg, motor);
}
else
{
- dev->model->cmd_set->set_lamp_power (dev, dev->calib_reg, SANE_TRUE);
- dev->model->cmd_set->set_motor_power (dev->calib_reg, motor);
+ sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true);
+ sanei_genesys_set_motor_power(dev->calib_reg, motor);
}
status =
- dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg,
- dev->model->
- cmd_set->bulk_full_size ());
+ dev->model->cmd_set->bulk_write_register(dev, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_dark_shading_calibration: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- usleep (200 * 1000); /* wait 200 ms: lamp needs some time to get dark */
+ // wait some time to let lamp to get dark
+ sanei_genesys_sleep_ms(200);
- status = dev->model->cmd_set->begin_scan (dev, dev->calib_reg, SANE_FALSE);
+ status = dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_dark_shading_calibration: Failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_read_data_from_scanner (dev, calibration_data, size);
+ status = sanei_genesys_read_data_from_scanner (dev, calibration_data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_dark_shading_calibration: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->end_scan (dev, dev->calib_reg, SANE_TRUE);
+ status = dev->model->cmd_set->end_scan(dev, &dev->calib_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_dark_shading_calibration: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- genesys_average_data (dev->dark_average_data, calibration_data,
- dev->calib_lines,
- pixels_per_line * channels);
+ std::fill(dev->dark_average_data.begin(),
+ dev->dark_average_data.begin() + dev->calib_pixels_offset * channels,
+ 0x00);
+
+ genesys_average_data(dev->dark_average_data.data() + dev->calib_pixels_offset * channels,
+ calibration_data.data(),
+ dev->calib_lines, pixels_per_line * channels);
if (DBG_LEVEL >= DBG_data)
{
- sanei_genesys_write_pnm_file ("black_shading.pnm", calibration_data, 16,
- channels, pixels_per_line,
- dev->calib_lines);
- sanei_genesys_write_pnm_file ("black_average.pnm",
- dev->dark_average_data, 16, channels,
- pixels_per_line, 1);
+ sanei_genesys_write_pnm_file("gl_black_shading.pnm", calibration_data.data(), 16,
+ channels, pixels_per_line, dev->calib_lines);
+ sanei_genesys_write_pnm_file("gl_black_average.pnm", dev->dark_average_data.data(), 16,
+ channels, out_pixels_per_line, 1);
}
- free (calibration_data);
-
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -1928,7 +1871,7 @@ genesys_dark_shading_calibration (Genesys_Device * dev)
* calibration ?)
*/
static SANE_Status
-genesys_dummy_dark_shading (Genesys_Device * dev)
+genesys_dummy_dark_shading (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
uint32_t pixels_per_line;
uint8_t channels;
@@ -1940,21 +1883,15 @@ genesys_dummy_dark_shading (Genesys_Device * dev)
pixels_per_line = dev->calib_pixels;
channels = dev->calib_channels;
- FREE_IFNOT_NULL (dev->dark_average_data);
+ uint32_t out_pixels_per_line = pixels_per_line + dev->calib_pixels_offset;
- dev->average_size = channels * 2 * pixels_per_line;
- dev->dark_average_data = malloc (dev->average_size);
- if (!dev->dark_average_data)
- {
- DBG (DBG_error,
- "genesys_dummy_dark_shading: failed to allocate average memory\n");
- return SANE_STATUS_NO_MEM;
- }
- memset (dev->dark_average_data, 0x00, channels * 2 * pixels_per_line);
+ dev->average_size = channels * 2 * out_pixels_per_line;
+ dev->dark_average_data.clear();
+ dev->dark_average_data.resize(dev->average_size, 0);
/* we average values on 'the left' where CCD pixels are under casing and
give darkest values. We then use these as dummy dark calibration */
- if (dev->settings.xres <= dev->sensor.optical_res / 2)
+ if (dev->settings.xres <= sensor.optical_res / 2)
{
skip = 4;
xend = 36;
@@ -1970,7 +1907,7 @@ genesys_dummy_dark_shading (Genesys_Device * dev)
|| dev->model->ccd_type==CCD_KVSS080)
{
skip = 2;
- xend = dev->sensor.black_pixels;
+ xend = sensor.black_pixels;
}
/* average each channels on half left margin */
@@ -2000,12 +1937,10 @@ genesys_dummy_dark_shading (Genesys_Device * dev)
dummy2 /= (xend - skip);
dummy3 /= (xend - skip);
}
- DBG (DBG_proc,
- "genesys_dummy_dark_shading: dummy1=%d, dummy2=%d, dummy3=%d \n",
- dummy1, dummy2, dummy3);
+ DBG(DBG_proc, "%s: dummy1=%d, dummy2=%d, dummy3=%d \n", __func__, dummy1, dummy2, dummy3);
/* fill dark_average */
- for (x = 0; x < pixels_per_line; x++)
+ for (x = 0; x < out_pixels_per_line; x++)
{
dev->dark_average_data[channels * 2 * x] = dummy1 & 0xff;
dev->dark_average_data[channels * 2 * x + 1] = dummy1 >> 8;
@@ -2024,130 +1959,117 @@ genesys_dummy_dark_shading (Genesys_Device * dev)
static SANE_Status
-genesys_white_shading_calibration (Genesys_Device * dev)
+genesys_white_shading_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
size_t size;
uint32_t pixels_per_line;
- uint8_t *calibration_data;
uint8_t channels;
SANE_Bool motor;
- DBG (DBG_proc, "genesys_white_shading_calibration (lines = %d)\n",
- (unsigned int)dev->calib_lines);
+ DBG(DBG_proc, "%s (lines = %d)\n", __func__, (unsigned int)dev->calib_lines);
pixels_per_line = dev->calib_pixels;
channels = dev->calib_channels;
- if (dev->white_average_data)
- free (dev->white_average_data);
-
- dev->white_average_data = malloc (channels * 2 * pixels_per_line);
- if (!dev->white_average_data)
- {
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to allocate average memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ uint32_t out_pixels_per_line = pixels_per_line + dev->calib_pixels_offset;
- size = channels * 2 * pixels_per_line * (dev->calib_lines + 1);
+ dev->white_average_data.clear();
+ dev->white_average_data.resize(channels * 2 * out_pixels_per_line);
- calibration_data = malloc (size);
- if (!calibration_data)
- {
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to allocate calibration memory\n");
- return SANE_STATUS_NO_MEM;
+ // FIXME: the current calculation is likely incorrect on non-GENESYS_GL843 implementations,
+ // but this needs checking
+ if (dev->calib_total_bytes_to_read > 0) {
+ size = dev->calib_total_bytes_to_read;
+ } else if (dev->model->asic_type == GENESYS_GL843) {
+ size = channels * 2 * pixels_per_line * dev->calib_lines;
+ } else {
+ size = channels * 2 * pixels_per_line * (dev->calib_lines + 1);
}
+ std::vector<uint8_t> calibration_data(size);
+
motor=SANE_TRUE;
if (dev->model->flags & GENESYS_FLAG_SHADING_NO_MOVE)
{
motor=SANE_FALSE;
}
- /* turn on motor and lamp power */
- dev->model->cmd_set->set_lamp_power (dev, dev->calib_reg, SANE_TRUE);
- dev->model->cmd_set->set_motor_power (dev->calib_reg, motor);
+ // turn on motor and lamp power
+ sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true);
+ sanei_genesys_set_motor_power(dev->calib_reg, motor);
- /* if needed, go back before doin next scan, by using rewind, registers and
- * slopes table are kept intact from previous scan */
- if (dev->model->flags & GENESYS_FLAG_SHADING_REPARK && dev->model->cmd_set->rewind)
+ /* if needed, go back before doing next scan */
+ if (dev->model->flags & GENESYS_FLAG_SHADING_REPARK)
{
- status = dev->model->cmd_set->rewind (dev);
+ /* rewind keeps registers and slopes table intact from previous
+ scan but is not available on all supported chipsets (or may
+ cause scan artifacts, see #7) */
+ status = (dev->model->cmd_set->rewind
+ ? dev->model->cmd_set->rewind (dev)
+ : dev->model->cmd_set->slow_back_home (dev, SANE_TRUE));
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ dev->model->cmd_set->move_to_ta(dev);
+ }
}
status =
- dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg,
- dev->model->
- cmd_set->bulk_full_size ());
+ dev->model->cmd_set->bulk_write_register(dev, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION)
- usleep (500 * 1000); /* wait 500ms to make sure lamp is bright again */
+ sanei_genesys_sleep_ms(500); // make sure lamp is bright again
- status = dev->model->cmd_set->begin_scan (dev, dev->calib_reg, SANE_TRUE);
+ status = dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_white_shading_calibration: Failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_read_data_from_scanner (dev, calibration_data, size);
+ status = sanei_genesys_read_data_from_scanner (dev, calibration_data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->end_scan (dev, dev->calib_reg, SANE_TRUE);
+ status = dev->model->cmd_set->end_scan(dev, &dev->calib_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("white_shading.pnm", calibration_data, 16,
- channels, pixels_per_line,
- dev->calib_lines);
+ sanei_genesys_write_pnm_file("gl_white_shading.pnm", calibration_data.data(), 16,
+ channels, pixels_per_line, dev->calib_lines);
+
+ std::fill(dev->dark_average_data.begin(),
+ dev->dark_average_data.begin() + dev->calib_pixels_offset * channels,
+ 0x00);
- genesys_average_data (dev->white_average_data, calibration_data,
- dev->calib_lines,
+ genesys_average_data (dev->white_average_data.data() + dev->calib_pixels_offset * channels,
+ calibration_data.data(), dev->calib_lines,
pixels_per_line * channels);
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("white_average.pnm",
- dev->white_average_data, 16, channels,
- pixels_per_line, 1);
-
- free (calibration_data);
+ sanei_genesys_write_pnm_file("gl_white_average.pnm", dev->white_average_data.data(), 16,
+ channels, out_pixels_per_line, 1);
/* in case we haven't done dark calibration, build dummy data from white_average */
if (!(dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION))
{
- status = genesys_dummy_dark_shading (dev);
+ status = genesys_dummy_dark_shading(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_white_shading_calibration: failed to do dummy dark shading calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do dummy dark shading calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -2165,16 +2087,13 @@ genesys_white_shading_calibration (Genesys_Device * dev)
/* This calibration uses a scan over the calibration target, comprising a
* black and a white strip. (So the motor must be on.)
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-genesys_dark_white_shading_calibration (Genesys_Device * dev)
+static SANE_Status
+genesys_dark_white_shading_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
size_t size;
uint32_t pixels_per_line;
- uint8_t *calibration_data, *average_white, *average_dark;
+ uint8_t *average_white, *average_dark;
uint8_t channels;
unsigned int x;
int y;
@@ -2183,41 +2102,27 @@ genesys_dark_white_shading_calibration (Genesys_Device * dev)
SANE_Bool motor;
- DBG (DBG_proc, "%s: (lines = %d)\n", __func__, (unsigned int)dev->calib_lines);
+ DBG(DBG_proc, "%s: (lines = %d)\n", __func__, (unsigned int)dev->calib_lines);
pixels_per_line = dev->calib_pixels;
channels = dev->calib_channels;
- if (dev->white_average_data)
- free (dev->white_average_data);
+ uint32_t out_pixels_per_line = pixels_per_line + dev->calib_pixels_offset;
- dev->average_size = channels * 2 * pixels_per_line;
+ dev->average_size = channels * 2 * out_pixels_per_line;
- dev->white_average_data = malloc (dev->average_size);
- if (!dev->white_average_data)
- {
- DBG (DBG_error, "%s: failed to allocate white average memory\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
+ dev->white_average_data.clear();
+ dev->white_average_data.resize(dev->average_size);
- if (dev->dark_average_data)
- free (dev->dark_average_data);
+ dev->dark_average_data.clear();
+ dev->dark_average_data.resize(dev->average_size);
- dev->dark_average_data = malloc (channels * 2 * pixels_per_line);
- if (!dev->dark_average_data)
- {
- DBG (DBG_error, "%s: failed to allocate dark average memory\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
+ if (dev->calib_total_bytes_to_read > 0)
+ size = dev->calib_total_bytes_to_read;
+ else
+ size = channels * 2 * pixels_per_line * dev->calib_lines;
- size = channels * 2 * pixels_per_line * dev->calib_lines;
-
- calibration_data = malloc (size);
- if (!calibration_data)
- {
- DBG (DBG_error, "%s: failed to allocate calibration memory\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> calibration_data(size);
motor=SANE_TRUE;
if (dev->model->flags & GENESYS_FLAG_SHADING_NO_MOVE)
@@ -2225,47 +2130,37 @@ genesys_dark_white_shading_calibration (Genesys_Device * dev)
motor=SANE_FALSE;
}
- /* turn on motor and lamp power */
- dev->model->cmd_set->set_lamp_power (dev, dev->calib_reg, SANE_TRUE);
- dev->model->cmd_set->set_motor_power (dev->calib_reg, motor);
+ // turn on motor and lamp power
+ sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true);
+ sanei_genesys_set_motor_power(dev->calib_reg, motor);
status =
- dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg,
- dev->model->
- cmd_set->bulk_full_size ());
+ dev->model->cmd_set->bulk_write_register(dev, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->begin_scan (dev, dev->calib_reg, SANE_FALSE);
+ status = dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error, "%s: failed to begin scan: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_read_data_from_scanner (dev, calibration_data, size);
+ status = sanei_genesys_read_data_from_scanner (dev, calibration_data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error, "%s: failed to read data: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->end_scan (dev, dev->calib_reg, SANE_TRUE);
+ status = dev->model->cmd_set->end_scan(dev, &dev->calib_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (calibration_data);
- DBG (DBG_error, "%s: Failed to end scan: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2273,21 +2168,28 @@ genesys_dark_white_shading_calibration (Genesys_Device * dev)
{
if (dev->model->is_cis)
{
- sanei_genesys_write_pnm_file ("black_white_shading.pnm", calibration_data,
- 16, 1, pixels_per_line*channels,
- dev->calib_lines);
+ sanei_genesys_write_pnm_file("gl_black_white_shading.pnm", calibration_data.data(),
+ 16, 1, pixels_per_line*channels,
+ dev->calib_lines);
}
else
{
- sanei_genesys_write_pnm_file ("black_white_shading.pnm", calibration_data,
- 16, channels, pixels_per_line,
- dev->calib_lines);
+ sanei_genesys_write_pnm_file("gl_black_white_shading.pnm", calibration_data.data(),
+ 16, channels, pixels_per_line,
+ dev->calib_lines);
}
}
- average_white = dev->white_average_data;
- average_dark = dev->dark_average_data;
+ std::fill(dev->dark_average_data.begin(),
+ dev->dark_average_data.begin() + dev->calib_pixels_offset * channels,
+ 0x00);
+ std::fill(dev->white_average_data.begin(),
+ dev->white_average_data.begin() + dev->calib_pixels_offset * channels,
+ 0x00);
+
+ average_white = dev->white_average_data.data() + dev->calib_pixels_offset * channels;
+ average_dark = dev->dark_average_data.data() + dev->calib_pixels_offset * channels;
for (x = 0; x < pixels_per_line * channels; x++)
{
@@ -2350,16 +2252,14 @@ genesys_dark_white_shading_calibration (Genesys_Device * dev)
if (DBG_LEVEL >= DBG_data)
{
- sanei_genesys_write_pnm_file ("white_average.pnm",
- dev->white_average_data, 16, channels,
- pixels_per_line, 1);
- sanei_genesys_write_pnm_file ("dark_average.pnm",
- dev->dark_average_data, 16, channels,
- pixels_per_line, 1);
+ sanei_genesys_write_pnm_file("gl_white_average.pnm",
+ dev->white_average_data.data(), 16, channels,
+ out_pixels_per_line, 1);
+ sanei_genesys_write_pnm_file("gl_dark_average.pnm",
+ dev->dark_average_data.data(), 16, channels,
+ out_pixels_per_line, 1);
}
- free (calibration_data);
-
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -2420,11 +2320,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
*/
-#ifndef UNIT_TESTING
-static
-#endif
-void
-compute_averaged_planar (Genesys_Device * dev,
+static void
+compute_averaged_planar (Genesys_Device * dev, const Genesys_Sensor& sensor,
uint8_t * shading_data,
unsigned int pixels_per_line,
unsigned int words_per_color,
@@ -2437,7 +2334,7 @@ compute_averaged_planar (Genesys_Device * dev,
unsigned int x, i, j, br, dk, res, avgpixels, basepixels, val;
unsigned int fill,factor;
- DBG (DBG_info, "%s: pixels=%d, offset=%d\n", __func__, pixels_per_line, o);
+ DBG(DBG_info, "%s: pixels=%d, offset=%d\n", __func__, pixels_per_line, o);
/* initialize result */
memset (shading_data, 0xff, words_per_color * 3 * 2);
@@ -2471,13 +2368,13 @@ compute_averaged_planar (Genesys_Device * dev,
*/
res = dev->settings.xres;
- /* duplicate half-ccd logic */
- if ((dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE) &&
- dev->settings.xres <= dev->sensor.optical_res / 2)
- res *= 2;
+ if (sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres) > 1)
+ {
+ res *= 2;
+ }
/* this should be evenly dividable */
- basepixels = dev->sensor.optical_res / res;
+ basepixels = sensor.optical_res / res;
/* gl841 supports 1/1 1/2 1/3 1/4 1/5 1/6 1/8 1/10 1/12 1/15 averaging */
if (basepixels < 1)
@@ -2507,9 +2404,9 @@ compute_averaged_planar (Genesys_Device * dev,
fill=1;
}
- DBG (DBG_info, "%s: averaging over %d pixels\n", __func__, avgpixels);
- DBG (DBG_info, "%s: packing factor is %d\n", __func__, factor);
- DBG (DBG_info, "%s: fill length is %d\n", __func__, fill);
+ DBG(DBG_info, "%s: averaging over %d pixels\n", __func__, avgpixels);
+ DBG(DBG_info, "%s: packing factor is %d\n", __func__, factor);
+ DBG(DBG_info, "%s: fill length is %d\n", __func__, fill);
for (x = 0; x <= pixels_per_line - avgpixels; x += avgpixels)
{
@@ -2606,10 +2503,7 @@ compute_averaged_planar (Genesys_Device * dev,
* @param coeff 4000h or 2000h depending on fast scan mode or not
* @param target value of the target code
*/
-#ifndef UNIT_TESTING
-static
-#endif
-void
+static void
compute_coefficients (Genesys_Device * dev,
uint8_t * shading_data,
unsigned int pixels_per_line,
@@ -2624,8 +2518,7 @@ compute_coefficients (Genesys_Device * dev,
unsigned int val, br, dk;
unsigned int start, end;
- DBG (DBG_io,
- "compute_coefficients: pixels_per_line=%d, coeff=0x%04x\n", pixels_per_line, coeff);
+ DBG(DBG_io, "%s: pixels_per_line=%d, coeff=0x%04x\n", __func__, pixels_per_line, coeff);
/* compute start & end values depending of the offset */
if (offset < 0)
@@ -2683,10 +2576,7 @@ compute_coefficients (Genesys_Device * dev,
* @param coeff 4000h or 2000h depending on fast scan mode or not
* @param target white target value
*/
-#ifndef UNIT_TESTING
-static
-#endif
-void
+static void
compute_planar_coefficients (Genesys_Device * dev,
uint8_t * shading_data,
unsigned int factor,
@@ -2702,9 +2592,8 @@ compute_planar_coefficients (Genesys_Device * dev,
uint32_t x, c, i;
uint32_t val, dk, br;
- DBG (DBG_io,
- "compute_planar_coefficients: factor=%d, pixels_per_line=%d, words=0x%X, coeff=0x%04x\n", factor,
- pixels_per_line, words_per_color, coeff);
+ 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++)
{
/* shading data is larger than pixels_per_line so offset can be neglected */
@@ -2755,11 +2644,9 @@ compute_planar_coefficients (Genesys_Device * dev,
}
}
-#ifndef UNIT_TESTING
-static
-#endif
-void
+static void
compute_shifted_coefficients (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
uint8_t * shading_data,
unsigned int pixels_per_line,
unsigned int channels,
@@ -2776,10 +2663,9 @@ compute_shifted_coefficients (Genesys_Device * dev,
unsigned int patch_cnt = offset * 3; /* at start, offset of first patch */
x = dev->settings.xres;
- if ((dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE) &&
- (dev->settings.xres <= dev->sensor.optical_res / 2))
+ if (sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres) > 1)
x *= 2; /* scanner is using half-ccd mode */
- basepixels = dev->sensor.optical_res / x; /*this should be evenly dividable */
+ basepixels = sensor.optical_res / x; /*this should be evenly dividable */
/* gl841 supports 1/1 1/2 1/3 1/4 1/5 1/6 1/8 1/10 1/12 1/15 averaging */
if (basepixels < 1)
@@ -2796,7 +2682,8 @@ compute_shifted_coefficients (Genesys_Device * dev,
avgpixels = 12;
else
avgpixels = 15;
- DBG (DBG_info, "compute_shifted_coefficients: pixels_per_line=%d, coeff=0x%04x, averaging over %d pixels\n", pixels_per_line, coeff, avgpixels);
+ DBG(DBG_info, "%s: pixels_per_line=%d, coeff=0x%04x, averaging over %d pixels\n", __func__,
+ pixels_per_line, coeff, avgpixels);
for (x = 0; x <= pixels_per_line - avgpixels; x += avgpixels) {
memset (&br_tmp, 0, sizeof(br_tmp));
@@ -2849,12 +2736,11 @@ compute_shifted_coefficients (Genesys_Device * dev,
}
}
-GENESYS_STATIC SANE_Status
-genesys_send_shading_coefficient (Genesys_Device * dev)
+static SANE_Status
+genesys_send_shading_coefficient(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint32_t pixels_per_line;
- uint8_t *shading_data; /**> contains 16bit words in little endian */
uint8_t channels;
int o;
unsigned int length; /**> number of shading calibration data words */
@@ -2864,7 +2750,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
DBGSTART;
- pixels_per_line = dev->calib_pixels;
+ pixels_per_line = dev->calib_pixels + dev->calib_pixels_offset;
channels = dev->calib_channels;
/* we always build data for three channels, even for gray
@@ -2872,7 +2758,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
* to the next one, which allow to write the 3 channels in 1 write
* during genesys_send_shading_coefficient, some values are words, other bytes
* hence the x2 factor */
- switch (sanei_genesys_read_reg_from_set (dev->reg, 0x05) >> 6)
+ switch (dev->reg.get8(0x05) >> 6)
{
/* 600 dpi */
case 0:
@@ -2903,32 +2789,27 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
length = words_per_color * 3 * 2;
/* allocate computed size */
- shading_data = malloc (length);
- if (!shading_data)
- {
- DBG (DBG_error, "%s: failed to allocate memory\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
- memset (shading_data, 0, length);
+ // contains 16bit words in little endian
+ std::vector<uint8_t> shading_data(length, 0);
/* TARGET/(Wn-Dn) = white gain -> ~1.xxx then it is multiplied by 0x2000
or 0x4000 to give an integer
Wn = white average for column n
Dn = dark average for column n
*/
- if (dev->model->cmd_set->get_gain4_bit (dev->calib_reg))
+ if (dev->model->cmd_set->get_gain4_bit(&dev->calib_reg))
coeff = 0x4000;
else
coeff = 0x2000;
/* compute avg factor */
- if(dev->settings.xres>dev->sensor.optical_res)
+ if(dev->settings.xres>sensor.optical_res)
{
factor=1;
}
else
{
- factor=dev->sensor.optical_res/dev->settings.xres;
+ factor=sensor.optical_res/dev->settings.xres;
}
/* for GL646, shading data is planar if REG01_FASTMOD is set and
@@ -2952,7 +2833,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
target_code = 0xdc00;
o = 4;
compute_planar_coefficients (dev,
- shading_data,
+ shading_data.data(),
factor,
pixels_per_line,
words_per_color,
@@ -2969,7 +2850,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
cmat[1] = 0; /* green is first */
cmat[2] = 1; /* blue is second */
compute_planar_coefficients (dev,
- shading_data,
+ shading_data.data(),
1,
pixels_per_line,
words_per_color,
@@ -2982,12 +2863,12 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
case CCD_HP2300:
target_code = 0xdc00;
o = 2;
- if(dev->settings.xres<=dev->sensor.optical_res/2)
+ if(dev->settings.xres<=sensor.optical_res/2)
{
- o = o - dev->sensor.dummy_pixel / 2;
+ o = o - sensor.dummy_pixel / 2;
}
compute_coefficients (dev,
- shading_data,
+ shading_data.data(),
pixels_per_line,
3,
cmat,
@@ -2998,12 +2879,12 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
case CCD_5345:
target_code = 0xe000;
o = 4;
- if(dev->settings.xres<=dev->sensor.optical_res/2)
+ if(dev->settings.xres<=sensor.optical_res/2)
{
- o = o - dev->sensor.dummy_pixel;
+ o = o - sensor.dummy_pixel;
}
compute_coefficients (dev,
- shading_data,
+ shading_data.data(),
pixels_per_line,
3,
cmat,
@@ -3028,7 +2909,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
o = +2;
}
compute_coefficients (dev,
- shading_data,
+ shading_data.data(),
pixels_per_line,
3,
cmat,
@@ -3041,10 +2922,11 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
case CCD_G4050:
case CCD_CS4400F:
case CCD_CS8400F:
+ case CCD_CS8600F:
target_code = 0xe000;
o = 0;
compute_coefficients (dev,
- shading_data,
+ shading_data.data(),
pixels_per_line,
3,
cmat,
@@ -3061,25 +2943,26 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
case CIS_CANONLIDE220:
/* TODO store this in a data struct so we avoid
* growing this switch */
- if(dev->model->ccd_type!=CIS_CANONLIDE110
- && dev->model->ccd_type!=CIS_CANONLIDE210
- && dev->model->ccd_type!=CIS_CANONLIDE120
- && dev->model->ccd_type!=CIS_CANONLIDE220)
- target_code=0xdc00;
- else
- target_code=0xf000;
- words_per_color=pixels_per_line*2;
- length = words_per_color * 3 * 2;
- free(shading_data);
- shading_data = malloc (length);
- if (!shading_data)
+ switch(dev->model->ccd_type)
{
- DBG (DBG_error, "%s: failed to allocate memory\n", __func__);
- return SANE_STATUS_NO_MEM;
+ case CIS_CANONLIDE110:
+ case CIS_CANONLIDE120:
+ case CIS_CANONLIDE210:
+ case CIS_CANONLIDE220:
+ target_code = 0xf000;
+ break;
+ case CIS_CANONLIDE700:
+ target_code = 0xc000; /* from experimentation */
+ break;
+ default:
+ target_code = 0xdc00;
}
- memset (shading_data, 0, length);
+ words_per_color=pixels_per_line*2;
+ length = words_per_color * 3 * 2;
+ shading_data.clear();
+ shading_data.resize(length, 0);
compute_planar_coefficients (dev,
- shading_data,
+ shading_data.data(),
1,
pixels_per_line,
words_per_color,
@@ -3090,8 +2973,8 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
target_code);
break;
case CCD_CANONLIDE35:
- compute_averaged_planar (dev,
- shading_data,
+ compute_averaged_planar (dev, sensor,
+ shading_data.data(),
pixels_per_line,
words_per_color,
channels,
@@ -3101,19 +2984,19 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
0x0a00);
break;
case CIS_CANONLIDE80:
- compute_averaged_planar (dev,
- shading_data,
+ compute_averaged_planar (dev, sensor,
+ shading_data.data(),
pixels_per_line,
words_per_color,
channels,
0,
coeff,
- 0xd000,
+ 0xe000,
0x0800);
break;
case CCD_PLUSTEK_3600:
- compute_shifted_coefficients (dev,
- shading_data,
+ compute_shifted_coefficients (dev, sensor,
+ shading_data.data(),
pixels_per_line,
channels,
cmat,
@@ -3130,8 +3013,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
}
/* do the actual write of shading calibration data to the scanner */
- status = genesys_send_offset_and_shading (dev, shading_data, length);
- free (shading_data);
+ status = genesys_send_offset_and_shading (dev, sensor, shading_data.data(), length);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to send shading data: %s\n", __func__,
@@ -3147,90 +3029,53 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
* search calibration cache list for an entry matching required scan.
* If one is found, set device calibration with it
* @param dev scanner's device
- * @return SANE_STATUS_UNSUPPORTED if no matching cache entry has been
- * found, SANE_STATUS_GOOD if one has been found and used.
+ * @return false if no matching cache entry has been
+ * found, true if one has been found and used.
*/
-static SANE_Status
-genesys_restore_calibration (Genesys_Device * dev)
+static bool
+genesys_restore_calibration(Genesys_Device * dev, Genesys_Sensor& sensor)
{
- SANE_Status status;
- Genesys_Calibration_Cache *cache;
-
DBGSTART;
/* if no cache or no function to evaluate cache entry ther can be no match */
if (!dev->model->cmd_set->is_compatible_calibration
- || dev->calibration_cache == NULL)
- return SANE_STATUS_UNSUPPORTED;
+ || dev->calibration_cache.empty())
+ return false;
/* we walk the link list of calibration cache in search for a
* matching one */
- for (cache = dev->calibration_cache; cache; cache = cache->next)
+ for (auto& cache : dev->calibration_cache)
{
- status = dev->model->cmd_set->is_compatible_calibration (dev, cache, SANE_FALSE);
- /* SANE_STATUS_GOOD, a matching cache has been found
- * so we use it to populate calibration data
- */
- if (status == SANE_STATUS_GOOD)
+ if (dev->model->cmd_set->is_compatible_calibration(dev, sensor, &cache, SANE_FALSE))
{
- memcpy (&dev->frontend, &cache->frontend, sizeof (dev->frontend));
+ dev->frontend = cache.frontend;
/* we don't restore the gamma fields */
- memcpy (dev->sensor.regs_0x10_0x1d, cache->sensor.regs_0x10_0x1d, 6);
- free (dev->dark_average_data);
- free (dev->white_average_data);
-
- dev->average_size = cache->average_size;
- dev->calib_pixels = cache->calib_pixels;
- dev->calib_channels = cache->calib_channels;
-
- dev->dark_average_data = (uint8_t *) malloc (cache->average_size);
- dev->white_average_data = (uint8_t *) malloc (cache->average_size);
+ sensor.exposure = cache.sensor.exposure;
- if (!dev->dark_average_data || !dev->white_average_data)
- return SANE_STATUS_NO_MEM;
-
- memcpy (dev->dark_average_data,
- cache->dark_average_data, dev->average_size);
- memcpy (dev->white_average_data,
- cache->white_average_data, dev->average_size);
+ dev->average_size = cache.average_size;
+ dev->calib_pixels = cache.calib_pixels;
+ dev->calib_channels = cache.calib_channels;
+ dev->dark_average_data = cache.dark_average_data;
+ dev->white_average_data = cache.white_average_data;
if(dev->model->cmd_set->send_shading_data==NULL)
{
- status = genesys_send_shading_coefficient (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_restore_calibration: failed to send shading calibration coefficients: %s\n",
- sane_strstatus (status));
- return status;
- }
+ TIE(genesys_send_shading_coefficient(dev, sensor));
}
- DBG (DBG_proc, "genesys_restore_calibration: restored\n");
- return SANE_STATUS_GOOD;
- }
-
- /* here status is either SANE_STATUS_UNSUPPORTED which mean tested cache
- * entry doesn't match, or an fatal error */
- if (status != SANE_STATUS_UNSUPPORTED)
- {
- DBG (DBG_error,
- "genesys_restore_calibration: fail while checking compatibility: %s\n",
- sane_strstatus (status));
- return status;
+ DBG(DBG_proc, "%s: restored\n", __func__);
+ return true;
}
}
- DBG (DBG_proc, "genesys_restore_calibration: completed(nothing found)\n");
- return SANE_STATUS_UNSUPPORTED;
+ DBG(DBG_proc, "%s: completed(nothing found)\n", __func__);
+ return false;
}
static SANE_Status
-genesys_save_calibration (Genesys_Device * dev)
+genesys_save_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
- SANE_Status status = SANE_STATUS_UNSUPPORTED;
- Genesys_Calibration_Cache *cache = NULL;
#ifdef HAVE_SYS_TIME_H
struct timeval time;
#endif
@@ -3240,65 +3085,40 @@ genesys_save_calibration (Genesys_Device * dev)
if (!dev->model->cmd_set->is_compatible_calibration)
return SANE_STATUS_UNSUPPORTED;
- if (dev->calibration_cache != NULL)
+ auto found_cache_it = dev->calibration_cache.end();
+ for (auto cache_it = dev->calibration_cache.begin(); cache_it != dev->calibration_cache.end();
+ cache_it++)
{
- for (cache = dev->calibration_cache; cache; cache = cache->next)
- {
- status = dev->model->cmd_set->is_compatible_calibration (dev, cache, SANE_TRUE);
- if (status == SANE_STATUS_UNSUPPORTED)
- {
- continue;
- }
- else if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_save_calibration: fail while checking compatibility: %s\n",
- sane_strstatus (status));
- return status;
- }
- break;
- }
+ if (dev->model->cmd_set->is_compatible_calibration(dev, sensor, &*cache_it, SANE_TRUE))
+ {
+ found_cache_it = cache_it;
+ break;
+ }
}
/* if we found on overridable cache, we reuse it */
- if (cache)
- {
- free(cache->dark_average_data);
- free(cache->white_average_data);
- }
- else
+ if (found_cache_it == dev->calibration_cache.end())
{
/* create a new cache entry and insert it in the linked list */
- cache = malloc (sizeof (Genesys_Calibration_Cache));
- if (!cache)
- return SANE_STATUS_NO_MEM;
-
- memset (cache, 0, sizeof (Genesys_Calibration_Cache));
-
- cache->next = dev->calibration_cache;
- dev->calibration_cache = cache;
+ dev->calibration_cache.push_back(Genesys_Calibration_Cache());
+ found_cache_it = std::prev(dev->calibration_cache.end());
}
- cache->average_size = dev->average_size;
+ found_cache_it->average_size = dev->average_size;
- cache->dark_average_data = (uint8_t *) malloc (cache->average_size);
- if (!cache->dark_average_data)
- return SANE_STATUS_NO_MEM;
- cache->white_average_data = (uint8_t *) malloc (cache->average_size);
- if (!cache->white_average_data)
- return SANE_STATUS_NO_MEM;
+ found_cache_it->dark_average_data = dev->dark_average_data;
+ found_cache_it->white_average_data = dev->white_average_data;
+
+ found_cache_it->used_setup = dev->current_setup;
+ found_cache_it->frontend = dev->frontend;
+ found_cache_it->sensor = sensor;
- memcpy (&cache->used_setup, &dev->current_setup, sizeof (cache->used_setup));
- memcpy (&cache->frontend, &dev->frontend, sizeof (cache->frontend));
- memcpy (&cache->sensor, &dev->sensor, sizeof (cache->sensor));
+ found_cache_it->calib_pixels = dev->calib_pixels;
+ found_cache_it->calib_channels = dev->calib_channels;
- cache->calib_pixels = dev->calib_pixels;
- cache->calib_channels = dev->calib_channels;
- memcpy (cache->dark_average_data, dev->dark_average_data, cache->average_size);
- memcpy (cache->white_average_data, dev->white_average_data, cache->average_size);
#ifdef HAVE_SYS_TIME_H
gettimeofday(&time,NULL);
- cache->last_calibration = time.tv_sec;
+ found_cache_it->last_calibration = time.tv_sec;
#endif
DBGCOMPLETED;
@@ -3313,38 +3133,37 @@ genesys_save_calibration (Genesys_Device * dev)
* @param dev device to calibrate
* @return SANE_STATUS_GOOD if everything when all right, else the error code.
*/
-GENESYS_STATIC SANE_Status
-genesys_flatbed_calibration (Genesys_Device * dev)
+static SANE_Status
+genesys_flatbed_calibration(Genesys_Device * dev, Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint32_t pixels_per_line;
int yres;
- DBG (DBG_info, "genesys_flatbed_calibration\n");
+ DBG(DBG_info, "%s\n", __func__);
- yres = dev->sensor.optical_res;
- if (dev->settings.yres <= dev->sensor.optical_res / 2)
+ yres = sensor.optical_res;
+ if (dev->settings.yres <= sensor.optical_res / 2)
yres /= 2;
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ yres = 1200;
+
/* do offset calibration if needed */
if (dev->model->flags & GENESYS_FLAG_OFFSET_CALIBRATION)
{
- status = dev->model->cmd_set->offset_calibration (dev);
+ status = dev->model->cmd_set->offset_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: offset calibration failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: offset calibration failed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* since all the registers are set up correctly, just use them */
- status = dev->model->cmd_set->coarse_gain_calibration (dev, yres);
+ status = dev->model->cmd_set->coarse_gain_calibration(dev, sensor, dev->calib_reg, yres);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: coarse gain calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: coarse gain calibration: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3353,21 +3172,19 @@ genesys_flatbed_calibration (Genesys_Device * dev)
/* since we have 2 gain calibration proc, skip second if first one was
used. */
{
- status = dev->model->cmd_set->init_regs_for_coarse_calibration (dev);
+ status = dev->model->cmd_set->init_regs_for_coarse_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to send calibration registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send calibration registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- status = genesys_coarse_calibration (dev);
+ status = genesys_coarse_calibration(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to do coarse gain calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do coarse gain calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
@@ -3376,35 +3193,29 @@ genesys_flatbed_calibration (Genesys_Device * dev)
if (dev->model->is_cis)
{
/* the afe now sends valid data for doing led calibration */
- status = dev->model->cmd_set->led_calibration (dev);
+ status = dev->model->cmd_set->led_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: led calibration failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: led calibration failed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* calibrate afe again to match new exposure */
if (dev->model->flags & GENESYS_FLAG_OFFSET_CALIBRATION)
{
- status = dev->model->cmd_set->offset_calibration (dev);
+ status = dev->model->cmd_set->offset_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: offset calibration failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: offset calibration failed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* since all the registers are set up correctly, just use them */
- status = dev->model->cmd_set->coarse_gain_calibration (dev, yres);
+ status = dev->model->cmd_set->coarse_gain_calibration(dev, sensor, dev->calib_reg, yres);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: coarse gain calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: coarse gain calibration: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -3412,22 +3223,20 @@ genesys_flatbed_calibration (Genesys_Device * dev)
/* since we have 2 gain calibration proc, skip second if first one was
used. */
{
- status =
- dev->model->cmd_set->init_regs_for_coarse_calibration (dev);
+ status = dev->model->cmd_set->init_regs_for_coarse_calibration(dev, sensor,
+ dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to send calibration registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send calibration registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- status = genesys_coarse_calibration (dev);
+ status = genesys_coarse_calibration(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to do static calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do static calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -3440,36 +3249,37 @@ genesys_flatbed_calibration (Genesys_Device * dev)
}
else
{
- pixels_per_line = dev->sensor.sensor_pixels;
+ pixels_per_line = sensor.sensor_pixels;
}
/* send default shading data */
- status = sanei_genesys_init_shading_data (dev, pixels_per_line);
+ status = sanei_genesys_init_shading_data(dev, sensor, pixels_per_line);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to init shading process: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to init shading process: %s\n", __func__, sane_strstatus(status));
return status;
}
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY) {
+ RIE(dev->model->cmd_set->move_to_ta(dev));
+ }
+
/* shading calibration */
- status = dev->model->cmd_set->init_regs_for_shading (dev);
+ status = dev->model->cmd_set->init_regs_for_shading(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "genesys_flatbed_calibration: failed to send shading "
- "registers: %s\n", sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
if (dev->model->flags & GENESYS_FLAG_DARK_WHITE_CALIBRATION)
{
- status = genesys_dark_white_shading_calibration (dev);
+ status = genesys_dark_white_shading_calibration (dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to do dark+white shading calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do dark+white shading calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -3477,39 +3287,36 @@ genesys_flatbed_calibration (Genesys_Device * dev)
{
if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION)
{
- status = genesys_dark_shading_calibration (dev);
+ status = genesys_dark_shading_calibration(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to do dark shading calibration: %s\n",
- sane_strstatus (status));
- return status;
+ DBG(DBG_error, "%s: failed to do dark shading calibration: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
}
}
- status = genesys_white_shading_calibration (dev);
+ status = genesys_white_shading_calibration (dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to do white shading calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do white shading calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
if(dev->model->cmd_set->send_shading_data==NULL)
{
- status = genesys_send_shading_coefficient (dev);
+ status = genesys_send_shading_coefficient(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_flatbed_calibration: failed to send shading calibration coefficients: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading calibration coefficients: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
- DBG (DBG_info, "genesys_flatbed_calibration: completed\n");
+ DBG(DBG_info, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -3524,8 +3331,7 @@ genesys_flatbed_calibration (Genesys_Device * dev)
* @param dev device to calibrate
* @return SANE_STATUS_GOOD if everything when all right, else the error code.
*/
-static SANE_Status
-genesys_sheetfed_calibration (Genesys_Device * dev)
+static SANE_Status genesys_sheetfed_calibration(Genesys_Device * dev, Genesys_Sensor& sensor)
{
SANE_Status status = SANE_STATUS_GOOD;
SANE_Bool forward = SANE_TRUE;
@@ -3534,8 +3340,7 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
DBGSTART;
if (dev->model->cmd_set->search_strip == NULL)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: no strip searching function available\n");
+ DBG(DBG_error, "%s: no strip searching function available\n", __func__);
return SANE_STATUS_UNSUPPORTED;
}
@@ -3543,45 +3348,44 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
status = dev->model->cmd_set->load_document (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to load document: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to load document: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info, "genesys_sheetfed_calibration\n");
+ DBG(DBG_info, "%s\n", __func__);
/* led, offset and gain calibration are influenced by scan
* settings. So we set it to sensor resolution */
- xres = dev->sensor.optical_res;
- dev->settings.xres = dev->sensor.optical_res;
+ xres = sensor.optical_res;
+ dev->settings.xres = sensor.optical_res;
/* XP200 needs to calibrate a full and half sensor's resolution */
if (dev->model->ccd_type == CIS_XP200
- && dev->settings.xres <= dev->sensor.optical_res / 2)
+ && dev->settings.xres <= sensor.optical_res / 2)
dev->settings.xres /= 2;
/* the afe needs to sends valid data even before calibration */
/* go to a white area */
- status = dev->model->cmd_set->search_strip (dev, forward, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to find white strip: %s\n",
- sane_strstatus (status));
- dev->model->cmd_set->eject_document (dev);
- return status;
+ try {
+ status = dev->model->cmd_set->search_strip(dev, sensor, forward, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: failed to find white strip: %s\n", __func__,
+ sane_strstatus(status));
+ dev->model->cmd_set->eject_document (dev);
+ return status;
+ }
+ } catch (...) {
+ dev->model->cmd_set->eject_document(dev);
+ throw;
}
if (dev->model->is_cis)
{
- status = dev->model->cmd_set->led_calibration (dev);
+ status = dev->model->cmd_set->led_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: led calibration failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: led calibration failed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -3589,23 +3393,19 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
/* calibrate afe */
if (dev->model->flags & GENESYS_FLAG_OFFSET_CALIBRATION)
{
- status = dev->model->cmd_set->offset_calibration (dev);
+ status = dev->model->cmd_set->offset_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: offset calibration failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: offset calibration failed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* since all the registers are set up correctly, just use them */
- status = dev->model->cmd_set->coarse_gain_calibration (dev, xres);
+ status = dev->model->cmd_set->coarse_gain_calibration(dev, sensor, dev->calib_reg, xres);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: coarse gain calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: coarse gain calibration: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -3613,22 +3413,18 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
/* since we have 2 gain calibration proc, skip second if first one was
used. */
{
- status =
- dev->model->cmd_set->init_regs_for_coarse_calibration (dev);
+ status = dev->model->cmd_set->init_regs_for_coarse_calibration(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to send calibration registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send calibration registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- status = genesys_coarse_calibration (dev);
+ status = genesys_coarse_calibration(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to do static calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do static calibration: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -3638,77 +3434,87 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION)
{
/* seek black/white reverse/forward */
- status = dev->model->cmd_set->search_strip (dev, forward, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to find black strip: %s\n",
- sane_strstatus (status));
- dev->model->cmd_set->eject_document (dev);
- return status;
- }
+ try {
+ status = dev->model->cmd_set->search_strip(dev, sensor, forward, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: failed to find black strip: %s\n", __func__,
+ sane_strstatus(status));
+ dev->model->cmd_set->eject_document(dev);
+ return status;
+ }
+ } catch (...) {
+ dev->model->cmd_set->eject_document(dev);
+ throw;
+ }
- status = dev->model->cmd_set->init_regs_for_shading (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to do set up registers for shading calibration: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = genesys_dark_shading_calibration (dev);
+ status = dev->model->cmd_set->init_regs_for_shading(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- dev->model->cmd_set->eject_document (dev);
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to do dark shading calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do set up registers for shading calibration: %s\n",
+ __func__, sane_strstatus(status));
return status;
}
+ try {
+ status = genesys_dark_shading_calibration(dev, sensor);
+ if (status != SANE_STATUS_GOOD) {
+ dev->model->cmd_set->eject_document(dev);
+ DBG(DBG_error, "%s: failed to do dark shading calibration: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ } catch (...) {
+ dev->model->cmd_set->eject_document(dev);
+ throw;
+ }
forward = SANE_FALSE;
}
/* go to a white area */
- status = dev->model->cmd_set->search_strip (dev, forward, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to find white strip: %s\n",
- sane_strstatus (status));
- dev->model->cmd_set->eject_document (dev);
- return status;
+ try {
+ status = dev->model->cmd_set->search_strip(dev, sensor, forward, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: failed to find white strip: %s\n", __func__,
+ sane_strstatus(status));
+ dev->model->cmd_set->eject_document (dev);
+ return status;
+ }
+ } catch (...) {
+ dev->model->cmd_set->eject_document (dev);
+ throw;
}
- status = dev->model->cmd_set->init_regs_for_shading (dev);
+ status = dev->model->cmd_set->init_regs_for_shading(dev, sensor, dev->calib_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to do set up registers for shading calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do set up registers for shading calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- status = genesys_white_shading_calibration (dev);
- if (status != SANE_STATUS_GOOD)
- {
- dev->model->cmd_set->eject_document (dev);
- DBG (DBG_error, "%s: failed eject target: %s\n", __func__,
- sane_strstatus (status));
- return status;
+
+ try {
+ status = genesys_white_shading_calibration(dev, sensor);
+ if (status != SANE_STATUS_GOOD) {
+ dev->model->cmd_set->eject_document(dev);
+ DBG(DBG_error, "%s: failed eject target: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ } catch (...) {
+ dev->model->cmd_set->eject_document (dev);
+ throw;
}
/* in case we haven't black shading data, build it from black pixels
* of white calibration */
if (!(dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION))
{
- FREE_IFNOT_NULL (dev->dark_average_data);
- dev->dark_average_data = malloc (dev->average_size);
- memset (dev->dark_average_data, 0x0f, dev->average_size);
+ dev->dark_average_data.clear();
+ dev->dark_average_data.resize(dev->average_size, 0x0f);
/* XXX STEF XXX
* with black point in white shading, build an average black
* pixel and use it to fill the dark_average
* dev->calib_pixels
- (dev->sensor.sensor_pixels * dev->settings.xres) / dev->sensor.optical_res,
+ (sensor.sensor_pixels * dev->settings.xres) / sensor.optical_res,
dev->calib_lines,
*/
}
@@ -3717,26 +3523,23 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
* but not when using SHDAREA like GL124 */
if(dev->model->cmd_set->send_shading_data==NULL)
{
- status = genesys_send_shading_coefficient (dev);
+ status = genesys_send_shading_coefficient(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to send shading calibration coefficients: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading calibration coefficients: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
/* save the calibration data */
- genesys_save_calibration (dev);
+ genesys_save_calibration (dev, sensor);
/* and finally eject calibration sheet */
status = dev->model->cmd_set->eject_document (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_sheetfed_calibration: failed to eject document: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to eject document: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3751,13 +3554,13 @@ genesys_sheetfed_calibration (Genesys_Device * dev)
* @param dev device to calibrate
*/
static SANE_Status
-genesys_scanner_calibration (Genesys_Device * dev)
+genesys_scanner_calibration(Genesys_Device * dev, Genesys_Sensor& sensor)
{
if (dev->model->is_sheetfed == SANE_FALSE)
{
- return genesys_flatbed_calibration (dev);
+ return genesys_flatbed_calibration (dev, sensor);
}
- return genesys_sheetfed_calibration (dev);
+ return genesys_sheetfed_calibration(dev, sensor);
}
/* unused function kept in case it may be usefull in the futur */
@@ -3766,33 +3569,27 @@ static SANE_Status
genesys_wait_not_moving (Genesys_Device * dev, int mseconds)
{
uint8_t value;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc,
- "genesys_wait_not_moving: waiting %d mseconds for motor to stop\n",
- mseconds);
+ DBG(DBG_proc, "%s: waiting %d mseconds for motor to stop\n", __func__, mseconds);
while (mseconds > 0)
{
RIE (sanei_genesys_get_status (dev, &value));
if (dev->model->cmd_set->test_motor_flag_bit (value))
{
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
mseconds -= 100;
- DBG (DBG_io,
- "genesys_wait_not_moving: motor is moving, %d mseconds to go\n",
- mseconds);
+ DBG(DBG_io, "%s: motor is moving, %d mseconds to go\n", __func__, mseconds);
}
else
{
- DBG (DBG_info,
- "genesys_wait_not_moving: motor is not moving, exiting\n");
+ DBG(DBG_info, "%s: motor is not moving, exiting\n", __func__);
return SANE_STATUS_GOOD;
}
}
- DBG (DBG_error,
- "genesys_wait_not_moving: motor is still moving, timeout exceeded\n");
+ DBG(DBG_error, "%s: motor is still moving, timeout exceeded\n", __func__);
return SANE_STATUS_DEVICE_BUSY;
}
#endif
@@ -3809,7 +3606,6 @@ genesys_wait_not_moving (Genesys_Device * dev, int mseconds)
static SANE_Status
genesys_warmup_lamp (Genesys_Device * dev)
{
- uint8_t *first_line, *second_line;
int seconds = 0;
int pixel;
int channels, total_size;
@@ -3824,60 +3620,55 @@ genesys_warmup_lamp (Genesys_Device * dev)
/* check if the current chipset implements warmup */
if(dev->model->cmd_set->init_regs_for_warmup==NULL)
{
- DBG (DBG_error, "%s: init_regs_for_warmup not implemented\n", __func__);
+ DBG(DBG_error,"%s: init_regs_for_warmup not implemented\n", __func__);
return status;
}
- dev->model->cmd_set->init_regs_for_warmup (dev, dev->reg, &channels, &total_size);
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
- second_line = malloc (total_size);
- if (!second_line)
- {
- free(first_line);
- DBGCOMPLETED;
- return SANE_STATUS_NO_MEM;
- }
+ dev->model->cmd_set->init_regs_for_warmup(dev, sensor, &dev->reg, &channels, &total_size);
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
do
{
- DBG (DBG_info, "genesys_warmup_lamp: one more loop\n");
- RIEF2 (dev->model->cmd_set->begin_scan (dev, dev->reg, SANE_FALSE), first_line, second_line);
+ DBG(DBG_info, "%s: one more loop\n", __func__);
+ RIE(dev->model->cmd_set->begin_scan(dev, sensor, &dev->reg, SANE_FALSE));
do
{
sanei_genesys_test_buffer_empty (dev, &empty);
}
while (empty);
- status = sanei_genesys_read_data_from_scanner (dev, first_line, total_size);
- if (status != SANE_STATUS_GOOD)
- {
- RIEF2 (sanei_genesys_read_data_from_scanner
- (dev, first_line, total_size), first_line, second_line);
- }
+ try {
+ status = sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size);
+ if (status != SANE_STATUS_GOOD) {
+ RIE(sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size));
+ }
+ } catch (...) {
+ RIE(sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size));
+ }
- RIEF2 (dev->model->cmd_set->end_scan (dev, dev->reg, SANE_TRUE), first_line, second_line);
+ RIE(dev->model->cmd_set->end_scan(dev, &dev->reg, SANE_TRUE));
- sleep (1); /* sleep 1 s */
+ sanei_genesys_sleep_ms(1000);
seconds++;
- RIEF2 (dev->model->cmd_set->begin_scan (dev, dev->reg, SANE_FALSE), first_line, second_line);
+ RIE(dev->model->cmd_set->begin_scan(dev, sensor, &dev->reg, SANE_FALSE));
do
{
sanei_genesys_test_buffer_empty (dev, &empty);
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
}
while (empty);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
- RIEF2 (dev->model->cmd_set->end_scan (dev, dev->reg, SANE_TRUE), first_line, second_line);
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
+ RIE(dev->model->cmd_set->end_scan(dev, &dev->reg, SANE_TRUE));
/* compute difference between the two scans */
for (pixel = 0; pixel < total_size; pixel++)
{
/* 16 bit data */
- if (dev->model->cmd_set->get_bitset_bit (dev->reg))
+ if (dev->model->cmd_set->get_bitset_bit(&dev->reg))
{
first_average += (first_line[pixel] + first_line[pixel + 1] * 256);
second_average += (second_line[pixel] + second_line[pixel + 1] * 256);
@@ -3889,15 +3680,14 @@ genesys_warmup_lamp (Genesys_Device * dev)
second_average += second_line[pixel];
}
}
- if (dev->model->cmd_set->get_bitset_bit (dev->reg))
+ if (dev->model->cmd_set->get_bitset_bit(&dev->reg))
{
first_average /= pixel;
second_average /= pixel;
difference = fabs (first_average - second_average);
- DBG (DBG_info,
- "genesys_warmup_lamp: average = %.2f, diff = %.3f\n",
- 100 * ((second_average) / (256 * 256)),
- 100 * (difference / second_average));
+ DBG(DBG_info, "%s: average = %.2f, diff = %.3f\n", __func__,
+ 100 * ((second_average) / (256 * 256)),
+ 100 * (difference / second_average));
if (second_average > (100 * 256)
&& (difference / second_average) < 0.002)
@@ -3909,16 +3699,13 @@ genesys_warmup_lamp (Genesys_Device * dev)
second_average /= pixel;
if (DBG_LEVEL >= DBG_data)
{
- sanei_genesys_write_pnm_file ("warmup1.pnm", first_line, 8,
- channels,
- total_size / (lines * channels),
- lines);
- sanei_genesys_write_pnm_file ("warmup2.pnm", second_line, 8,
- channels,
- total_size / (lines * channels),
- lines);
+ sanei_genesys_write_pnm_file("gl_warmup1.pnm", first_line.data(), 8, channels,
+ total_size / (lines * channels), lines);
+ sanei_genesys_write_pnm_file("gl_warmup2.pnm", second_line.data(), 8, channels,
+ total_size / (lines * channels), lines);
}
- DBG (DBG_info, "genesys_warmup_lamp: average 1 = %.2f, average 2 = %.2f\n", first_average, second_average);
+ DBG(DBG_info, "%s: average 1 = %.2f, average 2 = %.2f\n", __func__, first_average,
+ second_average);
/* if delta below 15/255 ~= 5.8%, lamp is considred warm enough */
if (fabs (first_average - second_average) < 15
&& second_average > 55)
@@ -3926,28 +3713,21 @@ genesys_warmup_lamp (Genesys_Device * dev)
}
/* sleep another second before next loop */
- sleep (1);
+ sanei_genesys_sleep_ms(1000);
seconds++;
}
while (seconds < WARMUP_TIME);
if (seconds >= WARMUP_TIME)
{
- DBG (DBG_error,
- "genesys_warmup_lamp: warmup timed out after %d seconds. Lamp defective?\n",
- seconds);
+ DBG(DBG_error, "%s: warmup timed out after %d seconds. Lamp defective?\n", __func__, seconds);
status = SANE_STATUS_IO_ERROR;
}
else
{
- DBG (DBG_info,
- "genesys_warmup_lamp: warmup succeeded after %d seconds\n",
- seconds);
+ DBG(DBG_info, "%s: warmup succeeded after %d seconds\n", __func__, seconds);
}
- free (first_line);
- free (second_line);
-
DBGCOMPLETED;
return status;
@@ -3958,7 +3738,7 @@ genesys_warmup_lamp (Genesys_Device * dev)
static SANE_Status
genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int steps, expected;
SANE_Bool empty;
@@ -3971,9 +3751,8 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = sanei_genesys_wait_for_home (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to wait for head to park: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to wait for head to park: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -3982,16 +3761,15 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = dev->model->cmd_set->save_power (dev, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to disable power saving mode: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to disable power saving mode: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
/* wait for lamp warmup : until a warmup for TRANSPARENCY is designed, skip
* it when scanning from XPA. */
if (!(dev->model->flags & GENESYS_FLAG_SKIP_WARMUP)
- && (dev->settings.scan_method == SCAN_METHOD_FLATBED))
+ && (dev->settings.scan_method == ScanMethod::FLATBED))
{
RIE (genesys_warmup_lamp (dev));
}
@@ -4006,9 +3784,8 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = dev->model->cmd_set->search_start_position (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to search start position: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to search start position: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
@@ -4016,9 +3793,8 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = dev->model->cmd_set->slow_back_home (dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to move scanhead to "
- "home position: %s\n", sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to move scanhead to home position: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
dev->scanhead_position_in_steps = 0;
@@ -4032,9 +3808,8 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = dev->model->cmd_set->slow_back_home (dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to move scanhead to "
- "home position: %s\n", sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to move scanhead to home position: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
dev->scanhead_position_in_steps = 0;
@@ -4042,15 +3817,14 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
}
/* move to calibration area for transparency adapter */
- if ((dev->settings.scan_method == SCAN_METHOD_TRANSPARENCY)
+ if ((dev->settings.scan_method == ScanMethod::TRANSPARENCY)
&& dev->model->cmd_set->move_to_ta != NULL)
{
status=dev->model->cmd_set->move_to_ta(dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to move to start of transparency adapter: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to move to start of transparency adapter: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -4062,56 +3836,46 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
status = dev->model->cmd_set->load_document (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to load document: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to load document: %s\n", __func__, sane_strstatus(status));
return status;
}
}
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dev->settings.xres,
+ dev->settings.scan_method);
+
/* send gamma tables. They have been set to device or user value
* when setting option value */
- status = dev->model->cmd_set->send_gamma_table (dev);
+ status = dev->model->cmd_set->send_gamma_table(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to init gamma table: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to init gamma table: %s\n", __func__, sane_strstatus(status));
return status;
}
/* try to use cached calibration first */
- status = genesys_restore_calibration (dev);
- if (status == SANE_STATUS_UNSUPPORTED)
+ if (!genesys_restore_calibration (dev, sensor))
{
/* calibration : sheetfed scanners can't calibrate before each scan */
/* and also those who have the NO_CALIBRATION flag */
if (!(dev->model->flags & GENESYS_FLAG_NO_CALIBRATION)
&&dev->model->is_sheetfed == SANE_FALSE)
{
- status = genesys_scanner_calibration (dev);
+ status = genesys_scanner_calibration(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to do scanner calibration: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do scanner calibration: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- genesys_save_calibration (dev);
+ genesys_save_calibration (dev, sensor);
}
else
{
- DBG (DBG_warn, "genesys_start_scan: no calibration done\n");
+ DBG(DBG_warn, "%s: no calibration done\n", __func__);
}
}
- else if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_start_scan: failed to restore calibration: %s\n",
- sane_strstatus (status));
- return status;
- }
/* build look up table for dynamic lineart */
if(dev->settings.dynamic_lineart==SANE_TRUE)
@@ -4121,24 +3885,38 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
dev->settings.threshold-127);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "genesys_start_scan: failed to build lut\n");
+ DBG(DBG_error, "%s: failed to build lut\n", __func__);
return status;
}
}
- status = dev->model->cmd_set->init_regs_for_scan (dev);
+ if (dev->model->cmd_set->wait_for_motor_stop) {
+ dev->model->cmd_set->wait_for_motor_stop(dev);
+ }
+
+ if (dev->model->cmd_set->needs_home_before_init_regs_for_scan &&
+ dev->model->cmd_set->needs_home_before_init_regs_for_scan(dev) &&
+ dev->model->cmd_set->slow_back_home)
+ {
+ RIE(dev->model->cmd_set->slow_back_home(dev, SANE_TRUE));
+ }
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY) {
+ RIE(dev->model->cmd_set->move_to_ta(dev));
+ }
+
+ status = dev->model->cmd_set->init_regs_for_scan(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to do init registers for scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do init registers for scan: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
/* no lamp during scan */
if(lamp_off == SANE_TRUE)
{
- dev->model->cmd_set->set_lamp_power (dev, dev->reg, SANE_FALSE);
+ sanei_genesys_set_lamp_power(dev, sensor, dev->reg, false);
}
/* GL124 is using SHDAREA, so we have to wait for scan to be set up before
@@ -4146,55 +3924,45 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
if( (dev->model->cmd_set->send_shading_data!=NULL)
&& !(dev->model->flags & GENESYS_FLAG_NO_CALIBRATION))
{
- status = genesys_send_shading_coefficient (dev);
+ status = genesys_send_shading_coefficient(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to send shading calibration coefficients: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading calibration coefficients: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
/* now send registers for scan */
status =
- dev->model->cmd_set->bulk_write_register (dev, dev->reg,
- dev->model->
- cmd_set->bulk_full_size ());
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to bulk write registers, status = %d\n",
- status);
+ DBG(DBG_error, "%s: failed to bulk write registers, status = %d\n", __func__, status);
return status;
}
/* start effective scan */
- status = dev->model->cmd_set->begin_scan (dev, dev->reg, SANE_TRUE);
+ status = dev->model->cmd_set->begin_scan(dev, sensor, &dev->reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
/*do we really need this? the valid data check should be sufficent -- pierre*/
/* waits for head to reach scanning position */
- expected = sanei_genesys_read_reg_from_set (dev->reg, 0x3d) * 65536
- + sanei_genesys_read_reg_from_set (dev->reg, 0x3e) * 256
- + sanei_genesys_read_reg_from_set (dev->reg, 0x3f);
+ expected = dev->reg.get8(0x3d) * 65536
+ + dev->reg.get8(0x3e) * 256
+ + dev->reg.get8(0x3f);
do
{
- /* wait 1/10th of second between each test to avoid
- overloading USB and CPU */
- usleep (100 * 1000);
+ // wait some time between each test to avoid overloading USB and CPU
+ sanei_genesys_sleep_ms(100);
status = sanei_genesys_read_feed_steps (dev, &steps);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: Failed to read feed steps: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to read feed steps: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -4211,9 +3979,9 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
/* and scanning start before reading data */
/* the valid data check already waits until the scanner delivers data. this here leads to unnecessary buffer full conditions in the scanner.
if (dev->model->cmd_set->get_fast_feed_bit (dev->reg))
- usleep (1000 * 1000);
+ sanei_genesys_sleep_ms(1000);
else
- usleep (500 * 1000);
+ sanei_genesys_sleep_ms(500);
*/
/* then we wait for at least one word of valid scan data
@@ -4222,13 +3990,12 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
{
do
{
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
status = sanei_genesys_read_valid_words (dev, &steps);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_start_scan: failed to read valid words: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read valid words: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
@@ -4244,89 +4011,77 @@ genesys_start_scan (Genesys_Device * dev, SANE_Bool lamp_off)
we move the available data to the beginning.
*/
-SANE_Status
-sanei_genesys_buffer_alloc (Genesys_Buffer * buf, size_t size)
+void Genesys_Buffer::alloc(size_t size)
{
- buf->buffer = (SANE_Byte *) malloc (size);
- if (!buf->buffer)
- return SANE_STATUS_NO_MEM;
- buf->avail = 0;
- buf->pos = 0;
- buf->size = size;
- return SANE_STATUS_GOOD;
+ buffer_.resize(size);
+ avail_ = 0;
+ pos_ = 0;
}
-SANE_Status
-sanei_genesys_buffer_free (Genesys_Buffer * buf)
+void Genesys_Buffer::clear()
{
- SANE_Byte *tmp = buf->buffer;
- buf->avail = 0;
- buf->size = 0;
- buf->pos = 0;
- buf->buffer = NULL;
- if (tmp)
- free (tmp);
- return SANE_STATUS_GOOD;
+ buffer_.clear();
+ avail_ = 0;
+ pos_ = 0;
}
-SANE_Byte *
-sanei_genesys_buffer_get_write_pos (Genesys_Buffer * buf, size_t size)
+void Genesys_Buffer::reset()
{
- if (buf->avail + size > buf->size)
- return NULL;
- if (buf->pos + buf->avail + size > buf->size)
+ avail_ = 0;
+ pos_ = 0;
+}
+
+uint8_t* Genesys_Buffer::get_write_pos(size_t size)
+{
+ if (avail_ + size > buffer_.size())
+ return nullptr;
+ if (pos_ + avail_ + size > buffer_.size())
{
- memmove (buf->buffer, buf->buffer + buf->pos, buf->avail);
- buf->pos = 0;
+ std::memmove(buffer_.data(), buffer_.data() + pos_, avail_);
+ pos_ = 0;
}
- return buf->buffer + buf->pos + buf->avail;
+ return buffer_.data() + pos_ + avail_;
}
-SANE_Byte *
-sanei_genesys_buffer_get_read_pos (Genesys_Buffer * buf)
+uint8_t* Genesys_Buffer::get_read_pos()
{
- return buf->buffer + buf->pos;
+ return buffer_.data() + pos_;
}
-SANE_Status
-sanei_genesys_buffer_produce (Genesys_Buffer * buf, size_t size)
+void Genesys_Buffer::produce(size_t size)
{
- if (size > buf->size - buf->avail)
- return SANE_STATUS_INVAL;
- buf->avail += size;
- return SANE_STATUS_GOOD;
+ if (size > buffer_.size() - avail_)
+ throw std::runtime_error("buffer size exceeded");
+ avail_ += size;
}
-SANE_Status
-sanei_genesys_buffer_consume (Genesys_Buffer * buf, size_t size)
+void Genesys_Buffer::consume(size_t size)
{
- if (size > buf->avail)
- return SANE_STATUS_INVAL;
- buf->avail -= size;
- buf->pos += size;
- return SANE_STATUS_GOOD;
+ if (size > avail_)
+ throw std::runtime_error("no more data in buffer");
+ avail_ -= size;
+ pos_ += size;
}
-#include "genesys_conv.c"
+#include "genesys_conv.cc"
static SANE_Status accurate_line_read(Genesys_Device * dev,
- SANE_Byte *buffer,
- size_t size)
+ Genesys_Buffer& buffer)
{
- SANE_Status status;
- status = dev->model->cmd_set->bulk_read_data (dev, 0x45, buffer, size);
+ buffer.reset();
+
+ SANE_Status status = SANE_STATUS_GOOD;
+ status = dev->model->cmd_set->bulk_read_data(dev, 0x45, buffer.get_write_pos(buffer.size()),
+ buffer.size());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "accurate_line_read: failed to read %lu bytes (%s)\n",
- (u_long) size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__, (u_long) buffer.size(),
+ sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
- /* done reading */
- dev->oe_buffer.avail = size;
- dev->oe_buffer.pos = 0;
+ buffer.produce(buffer.size());
return status;
}
@@ -4340,17 +4095,16 @@ static SANE_Status
genesys_fill_line_interp_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, size_t size)
{
size_t count;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
/* fill buffer if needed */
- if (dev->oe_buffer.avail == 0)
+ if (dev->oe_buffer.avail() == 0)
{
- status = accurate_line_read(dev,dev->oe_buffer.buffer,dev->oe_buffer.size);
+ status = accurate_line_read(dev, dev->oe_buffer);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read %lu bytes (%s)\n", __func__,
- (u_long) dev->oe_buffer.size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
+ (u_long) dev->oe_buffer.size(), sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
}
@@ -4364,7 +4118,7 @@ genesys_fill_line_interp_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst,
if(((dev->line_count/dev->current_setup.channels) % dev->line_interp)==0)
{
/* copy pixel when line matches */
- work_buffer_dst[count] = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos];
+ work_buffer_dst[count] = dev->oe_buffer.get_read_pos()[dev->cur];
count++;
}
@@ -4374,20 +4128,19 @@ genesys_fill_line_interp_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst,
/* go to next line if needed */
if (dev->cur == dev->len)
{
- dev->oe_buffer.pos += dev->bpl;
+ dev->oe_buffer.set_pos(dev->oe_buffer.pos() + dev->bpl);
dev->cur = 0;
dev->line_count++;
}
/* read a new buffer if needed */
- if (dev->oe_buffer.pos >= dev->oe_buffer.avail)
+ if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
{
- status = accurate_line_read(dev,dev->oe_buffer.buffer,dev->oe_buffer.size);
+ status = accurate_line_read(dev, dev->oe_buffer);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read %lu bytes (%s)\n", __func__,
- (u_long) dev->oe_buffer.size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
+ (u_long) dev->oe_buffer.size(), sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
}
@@ -4406,22 +4159,21 @@ static SANE_Status
genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, size_t size)
{
size_t count;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int depth,i,n,k;
depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART && dev->settings.dynamic_lineart==SANE_FALSE)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART && dev->settings.dynamic_lineart==SANE_FALSE)
depth = 1;
/* fill buffer if needed */
- if (dev->oe_buffer.avail == 0)
+ if (dev->oe_buffer.avail() == 0)
{
- status = accurate_line_read(dev,dev->oe_buffer.buffer,dev->oe_buffer.size);
+ status = accurate_line_read(dev, dev->oe_buffer);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read %lu bytes (%s)\n", __func__,
- (u_long) dev->oe_buffer.size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
+ (u_long) dev->oe_buffer.size(), sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
}
@@ -4431,88 +4183,64 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
count = 0;
while (count < size)
{
- if(dev->settings.double_xres==SANE_TRUE)
- {
- /* copy only even pixel */
- work_buffer_dst[count] = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos];
- /* update counter and pointer */
- count++;
- dev->cur++;
- }
- else
- {
- if(depth==1)
- {
- while (dev->cur < dev->len && count < size)
- {
- for(n=0;n<dev->segnb;n++)
- {
- work_buffer_dst[count+n] = 0;
- }
- /* interleaving is at bit level */
- for(i=0;i<8;i++)
- {
- k=count+(i*dev->segnb)/8;
- for(n=0;n<dev->segnb;n++)
- {
- work_buffer_dst[k] = work_buffer_dst[k] << 1;
- if((dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist*dev->order[n] + dev->oe_buffer.pos])&(128>>i))
- {
- work_buffer_dst[k] |= 1;
- }
- }
- }
-
- /* update counter and pointer */
- count += dev->segnb;
- dev->cur++;
- }
+ if (depth==1) {
+ while (dev->cur < dev->len && count < size) {
+ for (n=0; n<dev->segnb; n++) {
+ work_buffer_dst[count+n] = 0;
}
- if(depth==8)
- {
- while (dev->cur < dev->len && count < size)
- {
- for(n=0;n<dev->segnb;n++)
- {
- work_buffer_dst[count+n] = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist*dev->order[n] + dev->oe_buffer.pos];
+ /* interleaving is at bit level */
+ for (i=0;i<8;i++) {
+ k=count+(i*dev->segnb)/8;
+ for (n=0;n<dev->segnb;n++) {
+ work_buffer_dst[k] = work_buffer_dst[k] << 1;
+ if ((dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->order[n]])&(128>>i)) {
+ work_buffer_dst[k] |= 1;
}
- /* update counter and pointer */
- count += dev->segnb;
- dev->cur++;
}
}
- if(depth==16)
- {
- while (dev->cur < dev->len && count < size)
- {
- for(n=0;n<dev->segnb;n++)
- {
- work_buffer_dst[count+n*2] = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist*dev->order[n] + dev->oe_buffer.pos];
- work_buffer_dst[count+n*2+1] = dev->oe_buffer.buffer[dev->cur + dev->skip + dev->dist*dev->order[n] + dev->oe_buffer.pos+1];
- }
- /* update counter and pointer */
- count += dev->segnb*2;
- dev->cur+=2;
- }
+
+ /* update counter and pointer */
+ count += dev->segnb;
+ dev->cur++;
+ }
+ }
+ if (depth==8) {
+ while (dev->cur < dev->len && count < size) {
+ for (n=0;n<dev->segnb;n++) {
+ work_buffer_dst[count+n] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->order[n]];
+ }
+ /* update counter and pointer */
+ count += dev->segnb;
+ dev->cur++;
+ }
+ }
+ if (depth==16) {
+ while (dev->cur < dev->len && count < size) {
+ for (n=0;n<dev->segnb;n++) {
+ work_buffer_dst[count+n*2] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->order[n]];
+ work_buffer_dst[count+n*2+1] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->order[n] + 1];
}
+ /* update counter and pointer */
+ count += dev->segnb*2;
+ dev->cur+=2;
+ }
}
/* go to next line if needed */
if (dev->cur == dev->len)
{
- dev->oe_buffer.pos += dev->bpl;
+ dev->oe_buffer.set_pos(dev->oe_buffer.pos() + dev->bpl);
dev->cur = 0;
}
/* read a new buffer if needed */
- if (dev->oe_buffer.pos >= dev->oe_buffer.avail)
+ if (dev->oe_buffer.pos() >= dev->oe_buffer.avail())
{
- status = accurate_line_read(dev,dev->oe_buffer.buffer,dev->oe_buffer.size);
+ status = accurate_line_read(dev, dev->oe_buffer);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read %lu bytes (%s)\n", __func__,
- (u_long) dev->oe_buffer.size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__,
+ (u_long) dev->oe_buffer.size(), sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
}
@@ -4529,7 +4257,7 @@ genesys_fill_read_buffer (Genesys_Device * dev)
{
size_t size;
size_t space;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t *work_buffer_dst;
DBGSTART;
@@ -4543,10 +4271,9 @@ genesys_fill_read_buffer (Genesys_Device * dev)
return status;
}
- space = dev->read_buffer.size - dev->read_buffer.avail;
+ space = dev->read_buffer.size() - dev->read_buffer.avail();
- work_buffer_dst = sanei_genesys_buffer_get_write_pos (&(dev->read_buffer),
- space);
+ work_buffer_dst = dev->read_buffer.get_write_pos(space);
size = space;
@@ -4568,8 +4295,7 @@ genesys_fill_read_buffer (Genesys_Device * dev)
if (size == 0)
return SANE_STATUS_GOOD;
- DBG (DBG_io, "genesys_fill_read_buffer: reading %lu bytes\n",
- (u_long) size);
+ DBG(DBG_io, "%s: reading %lu bytes\n", __func__, (u_long) size);
/* size is already maxed to our needs. for most models bulk_read_data
will read as much data as requested. */
@@ -4600,9 +4326,8 @@ genesys_fill_read_buffer (Genesys_Device * dev)
}
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_fill_read_buffer: failed to read %lu bytes (%s)\n",
- (u_long) size, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read %lu bytes (%s)\n", __func__, (u_long) size,
+ sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
@@ -4611,7 +4336,7 @@ genesys_fill_read_buffer (Genesys_Device * dev)
dev->read_bytes_left -= size;
- RIE (sanei_genesys_buffer_produce (&(dev->read_buffer), size));
+ dev->read_buffer.produce(size);
DBGCOMPLETED;
@@ -4626,7 +4351,7 @@ static SANE_Status
genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination,
size_t * len)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
size_t bytes, extra;
unsigned int channels, depth, src_pixels;
unsigned int ccd_shift[12], shift_count;
@@ -4644,32 +4369,13 @@ genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination,
DBGSTART;
if (dev->read_active != SANE_TRUE)
{
- DBG (DBG_error, "genesys_read_ordered_data: read not active!\n");
+ DBG(DBG_error, "%s: read not active!\n", __func__);
*len = 0;
return SANE_STATUS_INVAL;
}
-
- DBG (DBG_info, "genesys_read_ordered_data: dumping current_setup:\n"
- "\tpixels: %d\n"
- "\tlines: %d\n"
- "\tdepth: %d\n"
- "\tchannels: %d\n"
- "\texposure_time: %d\n"
- "\txres: %g\n"
- "\tyres: %g\n"
- "\thalf_ccd: %s\n"
- "\tstagger: %d\n"
- "\tmax_shift: %d\n",
- dev->current_setup.pixels,
- dev->current_setup.lines,
- dev->current_setup.depth,
- dev->current_setup.channels,
- dev->current_setup.exposure_time,
- dev->current_setup.xres,
- dev->current_setup.yres,
- dev->current_setup.half_ccd ? "yes" : "no",
- dev->current_setup.stagger, dev->current_setup.max_shift);
+ DBG(DBG_info, "%s: ", __func__);
+ debug_dump(DBG_info, dev->current_setup);
/* prepare conversion */
/* current settings */
@@ -4696,25 +4402,20 @@ genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination,
needs_shrink = dev->settings.pixels != src_pixels;
needs_reverse = depth == 1;
- DBG (DBG_info,
- "genesys_read_ordered_data: using filters:%s%s%s%s\n",
- needs_reorder ? " reorder" : "",
- needs_ccd ? " ccd" : "",
- needs_shrink ? " shrink" : "",
- needs_reverse ? " reverse" : "");
+ DBG(DBG_info, "%s: using filters:%s%s%s%s\n", __func__,
+ needs_reorder ? " reorder" : "",
+ needs_ccd ? " ccd" : "",
+ needs_shrink ? " shrink" : "",
+ needs_reverse ? " reverse" : "");
- DBG (DBG_info,
- "genesys_read_ordered_data: frontend requested %lu bytes\n",
- (u_long) * len);
+ DBG(DBG_info, "%s: frontend requested %lu bytes\n", __func__, (u_long) * len);
- DBG (DBG_info,
- "genesys_read_ordered_data: bytes_to_read=%lu, total_bytes_read=%lu\n",
- (u_long) dev->total_bytes_to_read, (u_long) dev->total_bytes_read);
+ DBG(DBG_info, "%s: bytes_to_read=%lu, total_bytes_read=%lu\n", __func__,
+ (u_long) dev->total_bytes_to_read, (u_long) dev->total_bytes_read);
/* is there data left to scan */
if (dev->total_bytes_read >= dev->total_bytes_to_read)
{
- DBG (DBG_proc,
- "genesys_read_ordered_data: nothing more to scan: EOF\n");
+ DBG(DBG_proc, "%s: nothing more to scan: EOF\n", __func__);
*len = 0;
/* issue park command immediatly in case scanner can handle it
@@ -4729,11 +4430,11 @@ genesys_read_ordered_data (Genesys_Device * dev, SANE_Byte * destination,
return SANE_STATUS_EOF;
}
- DBG (DBG_info, "genesys_read_ordered_data: %lu lines left by output\n",
+ DBG(DBG_info, "%s: %lu lines left by output\n", __func__,
((dev->total_bytes_to_read - dev->total_bytes_read) * 8UL) /
(dev->settings.pixels * channels * depth));
- DBG (DBG_info, "genesys_read_ordered_data: %lu lines left by input\n",
- ((dev->read_bytes_left + dev->read_buffer.avail) * 8UL) /
+ DBG(DBG_info, "%s: %lu lines left by input\n", __func__,
+ ((dev->read_bytes_left + dev->read_buffer.avail()) * 8UL) /
(src_pixels * channels * depth));
if (channels == 1)
@@ -4793,8 +4494,7 @@ Problems with the first approach:
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_read_ordered_data: genesys_fill_read_buffer failed\n");
+ DBG(DBG_error, "%s: genesys_fill_read_buffer failed\n", __func__);
return status;
}
@@ -4806,28 +4506,26 @@ Problems with the first approach:
/*not implemented for depth == 1.*/
if (depth == 1)
{
- DBG (DBG_error, "Can't reorder single bit data\n");
+ DBG(DBG_error, "Can't reorder single bit data\n");
return SANE_STATUS_INVAL;
}
dst_buffer = &(dev->lines_buffer);
- work_buffer_src = sanei_genesys_buffer_get_read_pos (src_buffer);
- bytes = src_buffer->avail;
+ work_buffer_src = src_buffer->get_read_pos();
+ bytes = src_buffer->avail();
/*how many bytes can be processed here?*/
/*we are greedy. we work as much as possible*/
- if (bytes > dst_buffer->size - dst_buffer->avail)
- bytes = dst_buffer->size - dst_buffer->avail;
+ if (bytes > dst_buffer->size() - dst_buffer->avail())
+ bytes = dst_buffer->size() - dst_buffer->avail();
dst_lines = (bytes * 8) / (src_pixels * channels * depth);
bytes = (dst_lines * src_pixels * channels * depth) / 8;
- work_buffer_dst = sanei_genesys_buffer_get_write_pos (dst_buffer,
- bytes);
+ work_buffer_dst = dst_buffer->get_write_pos(bytes);
- DBG (DBG_info, "genesys_read_ordered_data: reordering %d lines\n",
- dst_lines);
+ DBG(DBG_info, "%s: reordering %d lines\n", __func__, dst_lines);
if (dst_lines != 0)
{
@@ -4921,15 +4619,13 @@ Problems with the first approach:
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_read_ordered_data: failed to convert byte ordering(%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to convert byte ordering(%s)\n", __func__,
+ sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
- RIE (sanei_genesys_buffer_produce (dst_buffer, bytes));
-
- RIE (sanei_genesys_buffer_consume (src_buffer, bytes));
+ dst_buffer->produce(bytes);
+ src_buffer->consume(bytes);
}
src_buffer = dst_buffer;
}
@@ -4940,14 +4636,14 @@ Problems with the first approach:
/*should not happen with depth == 1.*/
if (depth == 1)
{
- DBG (DBG_error, "Can't reverse ccd for single bit data\n");
+ DBG(DBG_error, "Can't reverse ccd for single bit data\n");
return SANE_STATUS_INVAL;
}
dst_buffer = &(dev->shrink_buffer);
- work_buffer_src = sanei_genesys_buffer_get_read_pos (src_buffer);
- bytes = src_buffer->avail;
+ work_buffer_src = src_buffer->get_read_pos();
+ bytes = src_buffer->avail();
extra =
(dev->current_setup.max_shift * src_pixels * channels * depth) / 8;
@@ -4960,17 +4656,15 @@ Problems with the first approach:
/*how many bytes can be processed here?*/
/*we are greedy. we work as much as possible*/
- if (bytes > dst_buffer->size - dst_buffer->avail)
- bytes = dst_buffer->size - dst_buffer->avail;
+ if (bytes > dst_buffer->size() - dst_buffer->avail())
+ bytes = dst_buffer->size() - dst_buffer->avail();
dst_lines = (bytes * 8) / (src_pixels * channels * depth);
bytes = (dst_lines * src_pixels * channels * depth) / 8;
- work_buffer_dst =
- sanei_genesys_buffer_get_write_pos (dst_buffer, bytes);
+ work_buffer_dst = dst_buffer->get_write_pos(bytes);
- DBG (DBG_info, "genesys_read_ordered_data: un-ccd-ing %d lines\n",
- dst_lines);
+ DBG(DBG_info, "%s: un-ccd-ing %d lines\n", __func__, dst_lines);
if (dst_lines != 0)
{
@@ -4988,15 +4682,13 @@ Problems with the first approach:
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_read_ordered_data: failed to reverse ccd effects(%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to reverse ccd effects(%s)\n", __func__,
+ sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
- RIE (sanei_genesys_buffer_produce (dst_buffer, bytes));
-
- RIE (sanei_genesys_buffer_consume (src_buffer, bytes));
+ dst_buffer->produce(bytes);
+ src_buffer->consume(bytes);
}
src_buffer = dst_buffer;
}
@@ -5007,26 +4699,24 @@ Problems with the first approach:
dst_buffer = &(dev->out_buffer);
- work_buffer_src = sanei_genesys_buffer_get_read_pos (src_buffer);
- bytes = src_buffer->avail;
+ work_buffer_src = src_buffer->get_read_pos();
+ bytes = src_buffer->avail();
/*lines in input*/
dst_lines = (bytes * 8) / (src_pixels * channels * depth);
/* how many lines can be processed here? */
/* we are greedy. we work as much as possible */
- bytes = dst_buffer->size - dst_buffer->avail;
+ bytes = dst_buffer->size() - dst_buffer->avail();
if (dst_lines > (bytes * 8) / (dev->settings.pixels * channels * depth))
dst_lines = (bytes * 8) / (dev->settings.pixels * channels * depth);
bytes = (dst_lines * dev->settings.pixels * channels * depth) / 8;
- work_buffer_dst =
- sanei_genesys_buffer_get_write_pos (dst_buffer, bytes);
+ work_buffer_dst = dst_buffer->get_write_pos(bytes);
- DBG (DBG_info, "genesys_read_ordered_data: shrinking %d lines\n",
- dst_lines);
+ DBG(DBG_info, "%s: shrinking %d lines\n", __func__, dst_lines);
if (dst_lines != 0)
{
@@ -5052,38 +4742,33 @@ Problems with the first approach:
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_read_ordered_data: failed to shrink lines(%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to shrink lines(%s)\n", __func__, sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
/* we just consumed this many bytes*/
bytes = (dst_lines * src_pixels * channels * depth) / 8;
- RIE (sanei_genesys_buffer_consume (src_buffer, bytes));
+ src_buffer->consume(bytes);
/* we just created this many bytes*/
bytes = (dst_lines * dev->settings.pixels * channels * depth) / 8;
- RIE (sanei_genesys_buffer_produce (dst_buffer, bytes));
-
+ dst_buffer->produce(bytes);
}
src_buffer = dst_buffer;
}
/* move data to destination */
- bytes = src_buffer->avail;
+ bytes = src_buffer->avail();
if (bytes > *len)
bytes = *len;
- work_buffer_src = sanei_genesys_buffer_get_read_pos (src_buffer);
+ work_buffer_src = src_buffer->get_read_pos();
if (needs_reverse)
{
status = genesys_reverse_bits (work_buffer_src, destination, bytes);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "genesys_read_ordered_data: failed to reverse bits(%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to reverse bits(%s)\n", __func__, sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
*len = bytes;
@@ -5102,20 +4787,19 @@ Problems with the first approach:
/* count bytes sent to frontend */
dev->total_bytes_read += *len;
- RIE (sanei_genesys_buffer_consume (src_buffer, bytes));
+ src_buffer->consume(bytes);
/* end scan if all needed data have been read */
if(dev->total_bytes_read >= dev->total_bytes_to_read)
{
- dev->model->cmd_set->end_scan (dev, dev->reg, SANE_TRUE);
+ dev->model->cmd_set->end_scan(dev, &dev->reg, SANE_TRUE);
if (dev->model->is_sheetfed == SANE_TRUE)
{
dev->model->cmd_set->eject_document (dev);
}
}
- DBG (DBG_proc, "genesys_read_ordered_data: completed, %lu bytes read\n",
- (u_long) bytes);
+ DBG(DBG_proc, "%s: completed, %lu bytes read\n", __func__, (u_long) bytes);
return SANE_STATUS_GOOD;
}
@@ -5143,50 +4827,46 @@ max_string_size (const SANE_String_Const strings[])
static SANE_Status
calc_parameters (Genesys_Scanner * s)
{
- SANE_String mode, source, color_filter;
SANE_Status status = SANE_STATUS_GOOD;
- SANE_Int depth = 0, resolution = 0;
double tl_x = 0, tl_y = 0, br_x = 0, br_y = 0;
- mode = s->val[OPT_MODE].s;
- source = s->val[OPT_SOURCE].s;
- color_filter = s->val[OPT_COLOR_FILTER].s;
- depth = s->val[OPT_BIT_DEPTH].w;
- resolution = s->val[OPT_RESOLUTION].w;
- tl_x = SANE_UNFIX (s->val[OPT_TL_X].w);
- tl_y = SANE_UNFIX (s->val[OPT_TL_Y].w);
- br_x = SANE_UNFIX (s->val[OPT_BR_X].w);
- br_y = SANE_UNFIX (s->val[OPT_BR_Y].w);
+ tl_x = SANE_UNFIX(s->pos_top_left_x);
+ tl_y = SANE_UNFIX(s->pos_top_left_y);
+ br_x = SANE_UNFIX(s->pos_bottom_right_x);
+ br_y = SANE_UNFIX(s->pos_bottom_right_y);
s->params.last_frame = SANE_TRUE; /* only single pass scanning supported */
- if (strcmp (mode, SANE_VALUE_SCAN_MODE_GRAY) == 0
- || strcmp (mode, SANE_VALUE_SCAN_MODE_LINEART) == 0)
- s->params.format = SANE_FRAME_GRAY;
- else /* Color */
- s->params.format = SANE_FRAME_RGB;
+ if (s->mode == SANE_VALUE_SCAN_MODE_GRAY || s->mode == SANE_VALUE_SCAN_MODE_LINEART) {
+ s->params.format = SANE_FRAME_GRAY;
+ } else {
+ s->params.format = SANE_FRAME_RGB;
+ }
- if (strcmp (mode, SANE_VALUE_SCAN_MODE_LINEART) == 0)
- s->params.depth = 1;
- else
- s->params.depth = depth;
- s->dev->settings.depth = depth;
+ if (s->mode == SANE_VALUE_SCAN_MODE_LINEART) {
+ s->params.depth = 1;
+ } else {
+ s->params.depth = s->bit_depth;
+ }
+
+ s->dev->settings.depth = s->bit_depth;
/* interpolation */
- s->dev->settings.disable_interpolation =
- s->val[OPT_DISABLE_INTERPOLATION].w == SANE_TRUE;
+ s->dev->settings.disable_interpolation = s->disable_interpolation;
- /* hardware settings */
- if (resolution > s->dev->sensor.optical_res &&
- s->dev->settings.disable_interpolation)
- s->dev->settings.xres = s->dev->sensor.optical_res;
- else
- s->dev->settings.xres = resolution;
- s->dev->settings.yres = resolution;
+ // FIXME: use correct sensor
+ const auto& sensor = sanei_genesys_find_sensor_any(s->dev);
+
+ // hardware settings
+ if (s->resolution > sensor.optical_res && s->dev->settings.disable_interpolation) {
+ s->dev->settings.xres = sensor.optical_res;
+ } else {
+ s->dev->settings.xres = s->resolution;
+ }
+ s->dev->settings.yres = s->resolution;
- s->params.lines = ((br_y - tl_y) * s->dev->settings.yres) / MM_PER_INCH;
- s->params.pixels_per_line =
- ((br_x - tl_x) * resolution) / MM_PER_INCH;
+ s->params.lines = ((br_y - tl_y) * s->dev->settings.yres) / MM_PER_INCH;
+ s->params.pixels_per_line = ((br_x - tl_x) * s->resolution) / MM_PER_INCH;
/* we need an even pixels number
* TODO invert test logic or generalize behaviour across all ASICs */
@@ -5229,80 +4909,80 @@ calc_parameters (Genesys_Scanner * s)
s->params.pixels_per_line = 8 * s->params.bytes_per_line;
}
- if (s->params.format == SANE_FRAME_RGB)
- s->params.bytes_per_line *= 3;
+ if (s->params.format == SANE_FRAME_RGB) {
+ s->params.bytes_per_line *= 3;
+ }
- if (strcmp (mode, SANE_VALUE_SCAN_MODE_COLOR) == 0)
- s->dev->settings.scan_mode = SCAN_MODE_COLOR;
- else if (strcmp (mode, SANE_VALUE_SCAN_MODE_GRAY) == 0)
- s->dev->settings.scan_mode = SCAN_MODE_GRAY;
- else if (strcmp (mode, SANE_TITLE_HALFTONE) == 0)
- s->dev->settings.scan_mode = SCAN_MODE_HALFTONE;
- else /* Lineart */
- s->dev->settings.scan_mode = SCAN_MODE_LINEART;
+ if (s->mode == SANE_VALUE_SCAN_MODE_COLOR) {
+ s->dev->settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ } else if (s->mode == SANE_VALUE_SCAN_MODE_GRAY) {
+ s->dev->settings.scan_mode = ScanColorMode::GRAY;
+ } else if (s->mode == SANE_TITLE_HALFTONE) {
+ s->dev->settings.scan_mode = ScanColorMode::HALFTONE;
+ } else { /* Lineart */
+ s->dev->settings.scan_mode = ScanColorMode::LINEART;
+ }
- /* TODO: change and check */
- if (strcmp (source, FLATBED) == 0)
- s->dev->settings.scan_method = SCAN_METHOD_FLATBED;
- else /* transparency */
- s->dev->settings.scan_method = SCAN_METHOD_TRANSPARENCY;
+ if (s->source == STR_FLATBED) {
+ s->dev->settings.scan_method = ScanMethod::FLATBED;
+ } else if (s->source == STR_TRANSPARENCY_ADAPTER) {
+ s->dev->settings.scan_method = ScanMethod::TRANSPARENCY;
+ } else if (s->source == STR_TRANSPARENCY_ADAPTER_INFRARED) {
+ s->dev->settings.scan_method = ScanMethod::TRANSPARENCY_INFRARED;
+ }
s->dev->settings.lines = s->params.lines;
s->dev->settings.pixels = s->params.pixels_per_line;
s->dev->settings.tl_x = tl_x;
s->dev->settings.tl_y = tl_y;
- /* threshold setting */
- s->dev->settings.threshold = 2.55 * (SANE_UNFIX (s->val[OPT_THRESHOLD].w));
+ // threshold setting
+ s->dev->settings.threshold = 2.55 * (SANE_UNFIX(s->threshold));
- /* color filter */
- if (strcmp (color_filter, "Red") == 0)
- s->dev->settings.color_filter = 0;
- else if (strcmp (color_filter, "Green") == 0)
- s->dev->settings.color_filter = 1;
- else if (strcmp (color_filter, "Blue") == 0)
- s->dev->settings.color_filter = 2;
- else
- s->dev->settings.color_filter = 3;
+ // color filter
+ if (s->color_filter == "Red") {
+ s->dev->settings.color_filter = ColorFilter::RED;
+ } else if (s->color_filter == "Green") {
+ s->dev->settings.color_filter = ColorFilter::GREEN;
+ } else if (s->color_filter == "Blue") {
+ s->dev->settings.color_filter = ColorFilter::BLUE;
+ } else {
+ s->dev->settings.color_filter = ColorFilter::NONE;
+ }
- /* true gray */
- if (strcmp (color_filter, "None") == 0)
- s->dev->settings.true_gray = 1;
- else
- s->dev->settings.true_gray = 0;
+ // true gray
+ if (s->color_filter == "None") {
+ s->dev->settings.true_gray = 1;
+ } else {
+ s->dev->settings.true_gray = 0;
+ }
/* dynamic lineart */
s->dev->settings.dynamic_lineart = SANE_FALSE;
s->dev->settings.threshold_curve=0;
- if(s->val[OPT_DISABLE_DYNAMIC_LINEART].w ==SANE_FALSE
- &&s->dev->settings.scan_mode == SCAN_MODE_LINEART)
- {
- s->dev->settings.dynamic_lineart = SANE_TRUE;
- }
+ if (!s->disable_dynamic_lineart && s->dev->settings.scan_mode == ScanColorMode::LINEART) {
+ s->dev->settings.dynamic_lineart = SANE_TRUE;
+ }
/* hardware lineart works only when we don't have interleave data
* for GL847 scanners, ie up to 600 DPI, then we have to rely on
* dynamic_lineart */
if(s->dev->settings.xres > 600
&& s->dev->model->asic_type==GENESYS_GL847
- && s->dev->settings.scan_mode == SCAN_MODE_LINEART)
+ && s->dev->settings.scan_mode == ScanColorMode::LINEART)
{
s->dev->settings.dynamic_lineart = SANE_TRUE;
}
- /* threshold curve for dynamic rasterization */
- s->dev->settings.threshold_curve=s->val[OPT_THRESHOLD_CURVE].w;
+ // threshold curve for dynamic rasterization
+ s->dev->settings.threshold_curve = s->threshold_curve;
/* some digital processing requires the whole picture to be buffered */
/* no digital processing takes place when doing preview, or when bit depth is
* higher than 8 bits */
- if ((s->val[OPT_SWDESPECK].b
- || s->val[OPT_SWCROP].b
- || s->val[OPT_SWDESKEW].b
- || s->val[OPT_SWDEROTATE].b
- ||(SANE_UNFIX(s->val[OPT_SWSKIP].w)>0))
- && (!s->val[OPT_PREVIEW].b)
- && (s->val[OPT_BIT_DEPTH].w <= 8))
+ if ((s->swdespeck || s->swcrop || s->swdeskew || s->swderotate ||(SANE_UNFIX(s->swskip)>0))
+ && (!s->preview)
+ && (s->bit_depth <= 8))
{
s->dev->buffer_image=SANE_TRUE;
}
@@ -5312,10 +4992,10 @@ calc_parameters (Genesys_Scanner * s)
}
/* brigthness and contrast only for for 8 bit scans */
- if(s->val[OPT_BIT_DEPTH].w <= 8)
+ if(s->bit_depth <= 8)
{
- s->dev->settings.contrast=(s->val[OPT_CONTRAST].w*127)/100;
- s->dev->settings.brightness=(s->val[OPT_BRIGHTNESS].w*127)/100;
+ s->dev->settings.contrast = (s->contrast * 127) / 100;
+ s->dev->settings.brightness = (s->brightness * 127) / 100;
}
else
{
@@ -5324,7 +5004,7 @@ calc_parameters (Genesys_Scanner * s)
}
/* cache expiration time */
- s->dev->settings.expiration_time=s->val[OPT_EXPIRATION_TIME].w;
+ s->dev->settings.expiration_time = s->expiration_time;
return status;
}
@@ -5380,8 +5060,6 @@ init_gamma_vector_option (Genesys_Scanner * scanner, int option)
scanner->opt[option].size = 256 * sizeof (SANE_Word);
scanner->opt[option].constraint.range = &u16_range;
}
- /* default value is NULL */
- scanner->val[option].wa = NULL;
}
/**
@@ -5413,17 +5091,16 @@ SANE_Range *range=NULL;
* @param currdev current scanner device
* @return an allocated string containing a file name
*/
-GENESYS_STATIC char *calibration_filename(Genesys_Device *currdev)
+static char *calibration_filename(Genesys_Device *currdev)
{
char *tmpstr;
char *ptr;
char filename[80];
- Genesys_Device *dev;
unsigned int count;
unsigned int i;
/* allocate space for result */
- tmpstr=malloc(PATH_MAX);
+ tmpstr = (char*) malloc(PATH_MAX);
if(tmpstr==NULL)
{
return NULL;
@@ -5458,13 +5135,10 @@ GENESYS_STATIC char *calibration_filename(Genesys_Device *currdev)
*/
count=0;
/* count models of the same names if several scanners attached */
- if(num_devices>1)
- {
- for (dev = first_dev; dev; dev = dev->next)
- {
- if(strcmp(dev->model->name,currdev->model->name)==0)
- {
- count++;
+ if(s_devices->size() > 1) {
+ for (const auto& dev : *s_devices) {
+ if (dev.model->model_id == currdev->model->model_id) {
+ count++;
}
}
}
@@ -5499,7 +5173,7 @@ GENESYS_STATIC char *calibration_filename(Genesys_Device *currdev)
snprintf (tmpstr, PATH_MAX, "%s%c.sane%c%s", ptr, PATH_SEP, PATH_SEP, filename);
}
- DBG (DBG_info, "%s: calibration filename >%s<\n", __func__, tmpstr);
+ DBG(DBG_info, "%s: calibration filename >%s<\n", __func__, tmpstr);
return tmpstr;
}
@@ -5509,7 +5183,7 @@ static SANE_Status
init_options (Genesys_Scanner * s)
{
SANE_Int option, count, min_dpi;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Word *dpi_list;
Genesys_Model *model = s->dev->model;
SANE_Range *x_range, *y_range;
@@ -5517,7 +5191,6 @@ init_options (Genesys_Scanner * s)
DBGSTART;
memset (s->opt, 0, sizeof (s->opt));
- memset (s->val, 0, sizeof (s->val));
for (option = 0; option < NUM_OPTIONS; ++option)
{
@@ -5529,7 +5202,6 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;
s->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT;
- s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;
/* "Mode" group: */
s->opt[OPT_MODE_GROUP].title = SANE_I18N ("Scan Mode");
@@ -5547,7 +5219,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_MODE].size = max_string_size (mode_list);
s->opt[OPT_MODE].constraint.string_list = mode_list;
- s->val[OPT_MODE].s = strdup (SANE_VALUE_SCAN_MODE_GRAY);
+ s->mode = SANE_VALUE_SCAN_MODE_GRAY;
/* scan source */
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
@@ -5557,10 +5229,14 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_SOURCE].size = max_string_size (source_list);
s->opt[OPT_SOURCE].constraint.string_list = source_list;
- s->val[OPT_SOURCE].s = strdup (FLATBED);
+ s->source = STR_FLATBED;
if (model->flags & GENESYS_FLAG_HAS_UTA)
{
- ENABLE (OPT_SOURCE);
+ ENABLE (OPT_SOURCE);
+ if (model->flags & GENESYS_FLAG_HAS_UTA_INFRARED) {
+ s->opt[OPT_SOURCE].size = max_string_size(source_list_infrared);
+ s->opt[OPT_SOURCE].constraint.string_list = source_list_infrared;
+ }
}
else
{
@@ -5574,7 +5250,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_PREVIEW].type = SANE_TYPE_BOOL;
s->opt[OPT_PREVIEW].unit = SANE_UNIT_NONE;
s->opt[OPT_PREVIEW].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_PREVIEW].w = SANE_FALSE;
+ s->preview = false;
/* bit depth */
s->opt[OPT_BIT_DEPTH].name = SANE_NAME_BIT_DEPTH;
@@ -5586,7 +5262,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_BIT_DEPTH].constraint.word_list = 0;
s->opt[OPT_BIT_DEPTH].constraint.word_list = s->bpp_list;
create_bpp_list (s, model->bpp_gray_values);
- s->val[OPT_BIT_DEPTH].w = 8;
+ s->bit_depth = 8;
if (s->opt[OPT_BIT_DEPTH].constraint.word_list[0] < 2)
DISABLE (OPT_BIT_DEPTH);
@@ -5599,7 +5275,7 @@ init_options (Genesys_Scanner * s)
min_dpi=model->xdpi_values[count];
}
}
- dpi_list = malloc ((count + 1) * sizeof (SANE_Word));
+ dpi_list = (SANE_Word*) malloc((count + 1) * sizeof(SANE_Word));
if (!dpi_list)
return SANE_STATUS_NO_MEM;
dpi_list[0] = count;
@@ -5612,7 +5288,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_RESOLUTION].unit = SANE_UNIT_DPI;
s->opt[OPT_RESOLUTION].constraint_type = SANE_CONSTRAINT_WORD_LIST;
s->opt[OPT_RESOLUTION].constraint.word_list = dpi_list;
- s->val[OPT_RESOLUTION].w = min_dpi;
+ s->resolution = min_dpi;
/* "Geometry" group: */
s->opt[OPT_GEOMETRY_GROUP].title = SANE_I18N ("Geometry");
@@ -5642,7 +5318,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_TL_X].unit = SANE_UNIT_MM;
s->opt[OPT_TL_X].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_TL_X].constraint.range = x_range;
- s->val[OPT_TL_X].w = 0;
+ s->pos_top_left_x = 0;
/* top-left y */
s->opt[OPT_TL_Y].name = SANE_NAME_SCAN_TL_Y;
@@ -5652,7 +5328,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_TL_Y].unit = SANE_UNIT_MM;
s->opt[OPT_TL_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_TL_Y].constraint.range = y_range;
- s->val[OPT_TL_Y].w = 0;
+ s->pos_top_left_y = 0;
/* bottom-right x */
s->opt[OPT_BR_X].name = SANE_NAME_SCAN_BR_X;
@@ -5662,7 +5338,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_BR_X].unit = SANE_UNIT_MM;
s->opt[OPT_BR_X].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_X].constraint.range = x_range;
- s->val[OPT_BR_X].w = x_range->max;
+ s->pos_bottom_right_x = x_range->max;
/* bottom-right y */
s->opt[OPT_BR_Y].name = SANE_NAME_SCAN_BR_Y;
@@ -5672,7 +5348,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_BR_Y].unit = SANE_UNIT_MM;
s->opt[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_Y].constraint.range = y_range;
- s->val[OPT_BR_Y].w = y_range->max;
+ s->pos_bottom_right_y = y_range->max;
/* "Enhancement" group: */
s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N ("Enhancement");
@@ -5688,7 +5364,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_CUSTOM_GAMMA].desc = SANE_DESC_CUSTOM_GAMMA;
s->opt[OPT_CUSTOM_GAMMA].type = SANE_TYPE_BOOL;
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_ADVANCED;
- s->val[OPT_CUSTOM_GAMMA].b = SANE_FALSE;
+ s->custom_gamma = false;
/* grayscale gamma vector */
s->opt[OPT_GAMMA_VECTOR].name = SANE_NAME_GAMMA_VECTOR;
@@ -5721,7 +5397,7 @@ init_options (Genesys_Scanner * s)
{
s->opt[OPT_ENHANCEMENT_GROUP].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
- DBG (DBG_info, "init_options: custom gamma disabled\n");
+ DBG(DBG_info, "%s: custom gamma disabled\n", __func__);
}
/* software base image enhancements, these are consuming as many
@@ -5734,7 +5410,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SWDESKEW].desc = "Request backend to rotate skewed pages digitally";
s->opt[OPT_SWDESKEW].type = SANE_TYPE_BOOL;
s->opt[OPT_SWDESKEW].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
- s->val[OPT_SWDESKEW].b = SANE_FALSE;
+ s->swdeskew = false;
/* software deskew */
s->opt[OPT_SWDESPECK].name = "swdespeck";
@@ -5742,7 +5418,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SWDESPECK].desc = "Request backend to remove lone dots digitally";
s->opt[OPT_SWDESPECK].type = SANE_TYPE_BOOL;
s->opt[OPT_SWDESPECK].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
- s->val[OPT_SWDESPECK].b = SANE_FALSE;
+ s->swdespeck = false;
/* software despeckle radius */
s->opt[OPT_DESPECK].name = "despeck";
@@ -5753,7 +5429,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_DESPECK].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_DESPECK].constraint.range = &swdespeck_range;
s->opt[OPT_DESPECK].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED | SANE_CAP_INACTIVE;
- s->val[OPT_DESPECK].w = 1;
+ s->despeck = 1;
/* crop by software */
s->opt[OPT_SWCROP].name = "swcrop";
@@ -5762,7 +5438,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SWCROP].type = SANE_TYPE_BOOL;
s->opt[OPT_SWCROP].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
s->opt[OPT_SWCROP].unit = SANE_UNIT_NONE;
- s->val[OPT_SWCROP].b = SANE_FALSE;
+ s->swcrop = false;
/* Software blank page skip */
s->opt[OPT_SWSKIP].name = "swskip";
@@ -5773,8 +5449,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SWSKIP].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_SWSKIP].constraint.range = &(percentage_range);
s->opt[OPT_SWSKIP].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
- /* disable by default */
- s->val[OPT_SWSKIP].w = 0;
+ s->swskip = 0; // disable by default
/* Software Derotate */
s->opt[OPT_SWDEROTATE].name = "swderotate";
@@ -5783,7 +5458,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_SWDEROTATE].type = SANE_TYPE_BOOL;
s->opt[OPT_SWDEROTATE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
s->opt[OPT_SWDEROTATE].unit = SANE_UNIT_NONE;
- s->val[OPT_SWDEROTATE].b = SANE_FALSE;
+ s->swderotate = false;
/* Software brightness */
s->opt[OPT_BRIGHTNESS].name = SANE_NAME_BRIGHTNESS;
@@ -5794,8 +5469,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_BRIGHTNESS].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BRIGHTNESS].constraint.range = &(enhance_range);
s->opt[OPT_BRIGHTNESS].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
- /* disable by default */
- s->val[OPT_BRIGHTNESS].w = 0;
+ s->brightness = 0; // disable by default
/* Sowftware contrast */
s->opt[OPT_CONTRAST].name = SANE_NAME_CONTRAST;
@@ -5806,8 +5480,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_CONTRAST].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_CONTRAST].constraint.range = &(enhance_range);
s->opt[OPT_CONTRAST].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
- /* disable by default */
- s->val[OPT_CONTRAST].w = 0;
+ s->contrast = 0; // disable by default
/* "Extras" group: */
s->opt[OPT_EXTRAS_GROUP].title = SANE_I18N ("Extras");
@@ -5825,7 +5498,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_THRESHOLD].unit = SANE_UNIT_PERCENT;
s->opt[OPT_THRESHOLD].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_THRESHOLD].constraint.range = &percentage_range;
- s->val[OPT_THRESHOLD].w = SANE_FIX (50);
+ s->threshold = SANE_FIX(50);
/* BW threshold curve */
s->opt[OPT_THRESHOLD_CURVE].name = "threshold-curve";
@@ -5835,7 +5508,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_THRESHOLD_CURVE].unit = SANE_UNIT_NONE;
s->opt[OPT_THRESHOLD_CURVE].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_THRESHOLD_CURVE].constraint.range = &threshold_curve_range;
- s->val[OPT_THRESHOLD_CURVE].w = 50;
+ s->threshold_curve = 50;
/* dynamic linart */
s->opt[OPT_DISABLE_DYNAMIC_LINEART].name = "disable-dynamic-lineart";
@@ -5845,7 +5518,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_DISABLE_DYNAMIC_LINEART].type = SANE_TYPE_BOOL;
s->opt[OPT_DISABLE_DYNAMIC_LINEART].unit = SANE_UNIT_NONE;
s->opt[OPT_DISABLE_DYNAMIC_LINEART].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_DISABLE_DYNAMIC_LINEART].w = SANE_FALSE;
+ s->disable_dynamic_lineart = false;
/* fastmod is required for hw lineart to work */
if ((s->dev->model->asic_type == GENESYS_GL646)
@@ -5865,7 +5538,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_DISABLE_INTERPOLATION].type = SANE_TYPE_BOOL;
s->opt[OPT_DISABLE_INTERPOLATION].unit = SANE_UNIT_NONE;
s->opt[OPT_DISABLE_INTERPOLATION].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_DISABLE_INTERPOLATION].w = SANE_FALSE;
+ s->disable_interpolation = false;
/* color filter */
s->opt[OPT_COLOR_FILTER].name = "color-filter";
@@ -5880,14 +5553,14 @@ init_options (Genesys_Scanner * s)
{
s->opt[OPT_COLOR_FILTER].size = max_string_size (color_filter_list);
s->opt[OPT_COLOR_FILTER].constraint.string_list = color_filter_list;
- s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[1]);
+ s->color_filter = s->opt[OPT_COLOR_FILTER].constraint.string_list[1];
}
else
{
s->opt[OPT_COLOR_FILTER].size = max_string_size (cis_color_filter_list);
s->opt[OPT_COLOR_FILTER].constraint.string_list = cis_color_filter_list;
/* default to "None" ie true gray */
- s->val[OPT_COLOR_FILTER].s = strdup (s->opt[OPT_COLOR_FILTER].constraint.string_list[3]);
+ s->color_filter = s->opt[OPT_COLOR_FILTER].constraint.string_list[3];
}
/* no support for color filter for cis+gl646 scanners */
@@ -5905,7 +5578,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_CALIBRATION_FILE].size = PATH_MAX;
s->opt[OPT_CALIBRATION_FILE].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
s->opt[OPT_CALIBRATION_FILE].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_CALIBRATION_FILE].s = NULL;
+ s->calibration_file.clear();
/* disable option if ran as root */
#ifdef HAVE_GETUID
if(geteuid()==0)
@@ -5923,7 +5596,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_EXPIRATION_TIME].unit = SANE_UNIT_NONE;
s->opt[OPT_EXPIRATION_TIME].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_EXPIRATION_TIME].constraint.range = &expiration_range;
- s->val[OPT_EXPIRATION_TIME].w = 60; /* 60 minutes by default */
+ s->expiration_time = 60; // 60 minutes by default
/* Powersave time (turn lamp off) */
s->opt[OPT_LAMP_OFF_TIME].name = "lamp-off-time";
@@ -5936,7 +5609,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_LAMP_OFF_TIME].unit = SANE_UNIT_NONE;
s->opt[OPT_LAMP_OFF_TIME].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_LAMP_OFF_TIME].constraint.range = &time_range;
- s->val[OPT_LAMP_OFF_TIME].w = 15; /* 15 minutes */
+ s->lamp_off_time = 15; // 15 minutes
/* turn lamp off during scan */
s->opt[OPT_LAMP_OFF].name = "lamp-off-scan";
@@ -5945,7 +5618,7 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_LAMP_OFF].type = SANE_TYPE_BOOL;
s->opt[OPT_LAMP_OFF].unit = SANE_UNIT_NONE;
s->opt[OPT_LAMP_OFF].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_LAMP_OFF].w = SANE_FALSE;
+ s->lamp_off = false;
s->opt[OPT_SENSOR_GROUP].title = SANE_TITLE_SENSORS;
s->opt[OPT_SENSOR_GROUP].desc = SANE_DESC_SENSORS;
@@ -5964,8 +5637,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_SCAN_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_SCAN_SW].b = 0;
- s->last_val[OPT_SCAN_SW].b = 0;
/* SANE_NAME_FILE is not for buttons */
s->opt[OPT_FILE_SW].name = "file";
@@ -5978,8 +5649,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_FILE_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_FILE_SW].b = 0;
- s->last_val[OPT_FILE_SW].b = 0;
s->opt[OPT_EMAIL_SW].name = SANE_NAME_EMAIL;
s->opt[OPT_EMAIL_SW].title = SANE_TITLE_EMAIL;
@@ -5991,8 +5660,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_EMAIL_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_EMAIL_SW].b = 0;
- s->last_val[OPT_EMAIL_SW].b = 0;
s->opt[OPT_COPY_SW].name = SANE_NAME_COPY;
s->opt[OPT_COPY_SW].title = SANE_TITLE_COPY;
@@ -6004,8 +5671,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_COPY_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_COPY_SW].b = 0;
- s->last_val[OPT_COPY_SW].b = 0;
s->opt[OPT_PAGE_LOADED_SW].name = SANE_NAME_PAGE_LOADED;
s->opt[OPT_PAGE_LOADED_SW].title = SANE_TITLE_PAGE_LOADED;
@@ -6017,8 +5682,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_PAGE_LOADED_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_PAGE_LOADED_SW].b = 0;
- s->last_val[OPT_PAGE_LOADED_SW].b = 0;
/* OCR button */
s->opt[OPT_OCR_SW].name = "ocr";
@@ -6031,8 +5694,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_OCR_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_OCR_SW].b = 0;
- s->last_val[OPT_OCR_SW].b = 0;
/* power button */
s->opt[OPT_POWER_SW].name = "power";
@@ -6045,8 +5706,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_POWER_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_POWER_SW].b = 0;
- s->last_val[OPT_POWER_SW].b = 0;
/* extra button */
s->opt[OPT_EXTRA_SW].name = "extra";
@@ -6059,8 +5718,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_EXTRA_SW].b = 0;
- s->last_val[OPT_EXTRA_SW].b = 0;
/* calibration needed */
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
@@ -6073,8 +5730,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
else
s->opt[OPT_NEED_CALIBRATION_SW].cap = SANE_CAP_INACTIVE;
- s->val[OPT_NEED_CALIBRATION_SW].b = 0;
- s->last_val[OPT_NEED_CALIBRATION_SW].b = 0;
/* button group */
s->opt[OPT_BUTTON_GROUP].title = SANE_I18N ("Buttons");
@@ -6097,8 +5752,6 @@ init_options (Genesys_Scanner * s)
SANE_CAP_AUTOMATIC;
else
s->opt[OPT_CALIBRATE].cap = SANE_CAP_INACTIVE;
- s->val[OPT_CALIBRATE].b = 0;
- s->last_val[OPT_CALIBRATE].b = 0;
/* clear calibration cache button */
s->opt[OPT_CLEAR_CALIBRATION].name = "clear-calibration";
@@ -6110,8 +5763,17 @@ init_options (Genesys_Scanner * s)
s->opt[OPT_CLEAR_CALIBRATION].constraint_type = SANE_CONSTRAINT_NONE;
s->opt[OPT_CLEAR_CALIBRATION].cap =
SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
- s->val[OPT_CLEAR_CALIBRATION].b = 0;
- s->last_val[OPT_CLEAR_CALIBRATION].b = 0;
+
+ /* force calibration cache button */
+ s->opt[OPT_FORCE_CALIBRATION].name = "force-calibration";
+ s->opt[OPT_FORCE_CALIBRATION].title = SANE_I18N("Force calibration");
+ s->opt[OPT_FORCE_CALIBRATION].desc = SANE_I18N("Force calibration ignoring all and any calibration caches");
+ s->opt[OPT_FORCE_CALIBRATION].type = SANE_TYPE_BUTTON;
+ s->opt[OPT_FORCE_CALIBRATION].unit = SANE_UNIT_NONE;
+ s->opt[OPT_FORCE_CALIBRATION].size = 0;
+ s->opt[OPT_FORCE_CALIBRATION].constraint_type = SANE_CONSTRAINT_NONE;
+ s->opt[OPT_FORCE_CALIBRATION].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
RIE (calc_parameters (s));
@@ -6120,78 +5782,54 @@ init_options (Genesys_Scanner * s)
}
static SANE_Bool present;
+
+// this function is passed to C API, it must not throw
static SANE_Status
-check_present (SANE_String_Const devname)
+check_present (SANE_String_Const devname) noexcept
{
present=SANE_TRUE;
- DBG (DBG_io, "check_present: %s detected.\n",devname);
+ DBG(DBG_io, "%s: %s detected.\n", __func__, devname);
return SANE_STATUS_GOOD;
}
-/** @brief add a scanner device
- * Insert the given device into the backend list of devices.
- * @param dev device to add
- */
-GENESYS_STATIC void add_device(Genesys_Device *dev)
-{
- ++num_devices;
- dev->next = first_dev;
- first_dev = dev;
-}
-
static SANE_Status
attach (SANE_String_Const devname, Genesys_Device ** devp, SANE_Bool may_wait)
{
+ DBG_HELPER(dbg);
+
Genesys_Device *dev = 0;
- SANE_Int dn, vendor, product;
- SANE_Status status;
unsigned int i;
- DBG (DBG_proc, "attach: start: devp %s NULL, may_wait = %d\n",
- devp ? "!=" : "==", may_wait);
+ DBG(DBG_proc, "%s: start: devp %s NULL, may_wait = %d\n", __func__, devp ? "!=" : "==", may_wait);
if (devp)
*devp = 0;
if (!devname)
{
- DBG (DBG_error, "attach: devname == NULL\n");
+ DBG(DBG_error, "%s: devname == NULL\n", __func__);
return SANE_STATUS_INVAL;
}
- for (dev = first_dev; dev; dev = dev->next)
- {
- if (strcmp (dev->file_name, devname) == 0)
- {
+ for (auto& dev : *s_devices) {
+ if (strcmp(dev.file_name, devname) == 0) {
if (devp)
- *devp = dev;
- DBG (DBG_info, "attach: device `%s' was already in device list\n",
- devname);
+ *devp = &dev;
+ DBG(DBG_info, "%s: device `%s' was already in device list\n", __func__, devname);
return SANE_STATUS_GOOD;
}
}
- DBG (DBG_info, "attach: trying to open device `%s'\n", devname);
+ DBG(DBG_info, "%s: trying to open device `%s'\n", __func__, devname);
- status = sanei_usb_open (devname, &dn);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_warn, "attach: couldn't open device `%s': %s\n", devname,
- sane_strstatus (status));
- return status;
- }
- else
- DBG (DBG_info, "attach: device `%s' successfully opened\n", devname);
+ UsbDevice usb_dev;
- status = sanei_usb_get_vendor_product (dn, &vendor, &product);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "attach: couldn't get vendor and product ids of device `%s': %s\n",
- devname, sane_strstatus (status));
- return status;
- }
+ usb_dev.open(devname);
+ DBG(DBG_info, "%s: device `%s' successfully opened\n", __func__, devname);
+
+ int vendor, product;
+ usb_dev.get_vendor_product(vendor, product);
/* KV-SS080 is an auxiliary device which requires a master device to be here */
if(vendor == 0x04da && product == 0x100f)
@@ -6200,99 +5838,78 @@ attach (SANE_String_Const devname, Genesys_Device ** devp, SANE_Bool may_wait)
sanei_usb_find_devices (vendor, 0x1006, check_present);
sanei_usb_find_devices (vendor, 0x1007, check_present);
sanei_usb_find_devices (vendor, 0x1010, check_present);
- if(present==SANE_FALSE)
- {
- DBG (DBG_error,"attach: master device not present\n");
- return SANE_STATUS_INVAL;
+ if (present == SANE_FALSE) {
+ throw SaneException("master device not present");
}
}
+ bool found_dev = false;
for (i = 0; i < MAX_SCANNERS && genesys_usb_device_list[i].model != 0; i++)
{
if (vendor == genesys_usb_device_list[i].vendor &&
product == genesys_usb_device_list[i].product)
{
- dev = malloc (sizeof (*dev));
- if (!dev)
- return SANE_STATUS_NO_MEM;
- break;
+ found_dev = true;
+ break;
}
}
- if (!dev)
- {
- DBG (DBG_error,
- "attach: vendor %d product %d is not supported by this backend\n",
+ if (!found_dev) {
+ DBG(DBG_error, "%s: vendor 0x%xd product 0x%xd is not supported by this backend\n", __func__,
vendor, product);
return SANE_STATUS_INVAL;
}
- dev->file_name = strdup (devname);
- if (!dev->file_name)
- {
- free(dev);
- return SANE_STATUS_NO_MEM;
+ char* new_devname = strdup (devname);
+ if (!new_devname) {
+ return SANE_STATUS_NO_MEM;
}
+ s_devices->emplace_back();
+ dev = &s_devices->back();
+ dev->file_name = new_devname;
+
dev->model = genesys_usb_device_list[i].model;
dev->vendorId = genesys_usb_device_list[i].vendor;
dev->productId = genesys_usb_device_list[i].product;
+ dev->usb_mode = 0; /* i.e. unset */
dev->already_initialized = SANE_FALSE;
- DBG (DBG_info, "attach: found %s flatbed scanner %s at %s\n",
- dev->model->vendor, dev->model->model, dev->file_name);
- add_device(dev);
+ DBG(DBG_info, "%s: found %s flatbed scanner %s at %s\n", __func__, dev->model->vendor,
+ dev->model->model, dev->file_name);
- if (devp)
- *devp = dev;
- sanei_usb_close (dn);
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
+ if (devp) {
+ *devp = dev;
+ }
+
+ usb_dev.close();
+ return SANE_STATUS_GOOD;
}
static SANE_Status
-attach_one_device (SANE_String_Const devname)
+attach_one_device_impl(SANE_String_Const devname)
{
Genesys_Device *dev;
- SANE_Status status;
- Genesys_Device **tmp_dev;
+ SANE_Status status = SANE_STATUS_GOOD;
RIE (attach (devname, &dev, SANE_FALSE));
- if (dev)
- {
- /* Keep track of newly attached devices so we can set options as
- necessary. */
- tmp_dev=NULL;
- /* increase device list capacity if needed */
- if (new_dev_len >= new_dev_alloced)
- {
- new_dev_alloced += 4;
- if (new_dev)
- {
- tmp_dev = new_dev;
- new_dev = realloc (new_dev, new_dev_alloced * sizeof (new_dev[0]));
- }
- else
- {
- new_dev = malloc (new_dev_alloced * sizeof (new_dev[0]));
- tmp_dev = NULL;
- }
- if (!new_dev)
- {
- FREE_IFNOT_NULL(tmp_dev)
- DBG (DBG_error, "attach_one_device: out of memory\n");
- return SANE_STATUS_NO_MEM;
- }
- }
- new_dev[new_dev_len++] = dev;
- }
return SANE_STATUS_GOOD;
}
+static SANE_Status attach_one_device(SANE_String_Const devname)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return attach_one_device_impl(devname);
+ });
+}
+
/* configuration framework functions */
+
+// 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)
+config_attach_genesys(SANEI_Config __sane_unused__ *config, const char *devname) noexcept
{
/* the devname has been processed and is ready to be used
* directly. Since the backend is an USB only one, we can
@@ -6303,21 +5920,14 @@ config_attach_genesys (SANEI_Config __sane_unused__ *config, const char *devname
}
/* probes for scanner to attach to the backend */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
probe_genesys_devices (void)
{
SANEI_Config config;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
- new_dev = 0;
- new_dev_len = 0;
- new_dev_alloced = 0;
-
/* set configuration options structure : no option for this backend */
config.descriptors = NULL;
config.values = NULL;
@@ -6327,13 +5937,7 @@ probe_genesys_devices (void)
status = sanei_configure_attach (GENESYS_CONFIG_FILE, &config,
config_attach_genesys);
- if (new_dev_alloced > 0)
- {
- new_dev_len = new_dev_alloced = 0;
- free (new_dev);
- }
-
- DBG(DBG_info, "%s: %d devices currently attached\n", __func__, num_devices);
+ DBG(DBG_info, "%s: %d devices currently attached\n", __func__, (int) s_devices->size());
DBGCOMPLETED;
@@ -6346,179 +5950,72 @@ probe_genesys_devices (void)
changes that don't change size -- at least for now, as we store most
of Genesys_Calibration_Cache as is.
*/
-#define CALIBRATION_VERSION 1
+static const char* CALIBRATION_IDENT = "sane_genesys";
+static const int CALIBRATION_VERSION = 2;
-/**
- * reads previously cached calibration data
- * from file define in dev->calib_file
- */
-SANE_Status
-sanei_genesys_read_calibration (Genesys_Device * dev)
+bool read_calibration(std::istream& str, Genesys_Device::Calibration& calibration,
+ const std::string& path)
{
- FILE *fp;
- uint8_t vers = 0;
- uint32_t size = 0;
- struct Genesys_Calibration_Cache *cache;
- SANE_Status status=SANE_STATUS_GOOD;
-
- DBGSTART;
+ std::string ident;
+ serialize(str, ident);
- /* open calibration cache file */
- fp = fopen (dev->calib_file, "rb");
- if (!fp)
- {
- DBG (DBG_info, "Calibration: Cannot open %s\n", dev->calib_file);
- DBGCOMPLETED;
- return SANE_STATUS_IO_ERROR;
+ if (ident != CALIBRATION_IDENT) {
+ DBG(DBG_info, "%s: Incorrect calibration file '%s' header\n", __func__, path.c_str());
+ return false;
}
- /* these two checks ensure that most bad things cannot happen */
- fread (&vers, 1, 1, fp);
- if (vers != CALIBRATION_VERSION)
- {
- DBG (DBG_info, "Calibration: Bad version\n");
- fclose (fp);
- DBGCOMPLETED;
- return SANE_STATUS_INVAL;
- }
- fread (&size, 4, 1, fp);
- if (size != sizeof (struct Genesys_Calibration_Cache))
- {
- DBG (DBG_info,
- "Calibration: Size of calibration cache struct differs\n");
- fclose (fp);
- DBGCOMPLETED;
- return SANE_STATUS_INVAL;
- }
+ size_t version;
+ serialize(str, version);
- /* clear device calibration cache */
- while(dev->calibration_cache!=NULL)
- {
- cache=dev->calibration_cache;
- dev->calibration_cache=dev->calibration_cache->next;
- free(cache);
+ if (version != CALIBRATION_VERSION) {
+ DBG(DBG_info, "%s: Incorrect calibration file '%s' version\n", __func__, path.c_str());
+ return false;
}
- /* loop on cache records in file */
- while (!feof (fp) && status==SANE_STATUS_GOOD)
- {
- DBG (DBG_info, "sanei_genesys_read_calibration: reading one record\n");
- cache = (struct Genesys_Calibration_Cache *) malloc (sizeof (*cache));
-
- if (!cache)
- {
- DBG (DBG_error,
- "sanei_genesys_read_calibration: could not allocate cache struct\n");
- break;
- }
+ calibration.clear();
+ serialize(str, calibration);
+ return true;
+}
-#define BILT1( x ) \
- do \
- { \
- if ((x) < 1) \
- { \
- free(cache); \
- DBG (DBG_warn, "sanei_genesys_read_calibration: partial calibration record\n"); \
- status=SANE_STATUS_EOF; \
- break; \
- } \
- } while(0)
-
-
- if (fread (&cache->used_setup, sizeof (cache->used_setup), 1, fp) < 1)
- { /* eof is only detected here */
- free (cache);
- status=SANE_STATUS_GOOD;
- break;
- }
- BILT1 (fread (&cache->last_calibration, sizeof (cache->last_calibration), 1, fp));
- BILT1 (fread (&cache->frontend, sizeof (cache->frontend), 1, fp));
- /* the gamma (and later) fields are not stored */
- BILT1 (fread (&cache->sensor, offsetof (Genesys_Sensor, gamma[0]), 1, fp));
- BILT1 (fread (&cache->calib_pixels, sizeof (cache->calib_pixels), 1, fp));
- BILT1 (fread (&cache->calib_channels, sizeof (cache->calib_channels), 1, fp));
- BILT1 (fread (&cache->average_size, sizeof (cache->average_size), 1, fp));
-
- cache->white_average_data = (uint8_t *) malloc (cache->average_size);
- cache->dark_average_data = (uint8_t *) malloc (cache->average_size);
-
- if (!cache->white_average_data || !cache->dark_average_data)
- {
- status=SANE_STATUS_NO_MEM;
- FREE_IFNOT_NULL (cache->white_average_data);
- FREE_IFNOT_NULL (cache->dark_average_data);
- free (cache);
- DBG (DBG_error,
- "sanei_genesys_read_calibration: could not allocate space for average data\n");
- break;
- }
+/**
+ * reads previously cached calibration data
+ * from file defined in dev->calib_file
+ */
+static bool sanei_genesys_read_calibration(Genesys_Device::Calibration& calibration,
+ const std::string& path)
+{
+ DBG_HELPER(dbg);
- if (fread (cache->white_average_data, cache->average_size, 1, fp) < 1)
- {
- status=SANE_STATUS_EOF;
- DBG (DBG_warn, "sanei_genesys_read_calibration: partial calibration record\n");
- free (cache->white_average_data);
- free (cache->dark_average_data);
- free (cache);
- break;
- }
- if (fread (cache->dark_average_data, cache->average_size, 1, fp) < 1)
- {
- DBG (DBG_warn, "sanei_genesys_read_calibration: partial calibration record\n");
- free (cache->white_average_data);
- free (cache->dark_average_data);
- free (cache);
- status=SANE_STATUS_EOF;
- break;
- }
-#undef BILT1
- DBG (DBG_info, "sanei_genesys_read_calibration: adding record to list\n");
- cache->next = dev->calibration_cache;
- dev->calibration_cache = cache;
+ std::ifstream str;
+ str.open(path);
+ if (!str.is_open()) {
+ DBG(DBG_info, "%s: Cannot open %s\n", __func__, path.c_str());
+ return false;
}
- fclose (fp);
- DBGCOMPLETED;
- return status;
+ return read_calibration(str, calibration, path);
}
-static void
-write_calibration (Genesys_Device * dev)
+void write_calibration(std::ostream& str, Genesys_Device::Calibration& calibration)
{
- FILE *fp;
- uint8_t vers = 0;
- uint32_t size = 0;
- struct Genesys_Calibration_Cache *cache;
-
- DBGSTART;
- fp = fopen (dev->calib_file, "wb");
- if (!fp)
- {
- DBG (DBG_info, "write_calibration: Cannot open %s for writing\n", dev->calib_file);
- return;
- }
-
- vers = CALIBRATION_VERSION;
- fwrite (&vers, 1, 1, fp);
- size = sizeof (struct Genesys_Calibration_Cache);
- fwrite (&size, 4, 1, fp);
+ std::string ident = CALIBRATION_IDENT;
+ serialize(str, ident);
+ size_t version = CALIBRATION_VERSION;
+ serialize(str, version);
+ serialize_newline(str);
+ serialize(str, calibration);
+}
- for (cache = dev->calibration_cache; cache; cache = cache->next)
- {
- fwrite (&cache->used_setup, sizeof (cache->used_setup), 1, fp);
- fwrite (&cache->last_calibration, sizeof (cache->last_calibration), 1, fp);
- fwrite (&cache->frontend, sizeof (cache->frontend), 1, fp);
- /* the gamma (and later) fields are not stored */
- fwrite (&cache->sensor, offsetof (Genesys_Sensor, gamma[0]), 1, fp);
+static void write_calibration(Genesys_Device::Calibration& calibration, const std::string& path)
+{
+ DBG_HELPER(dbg);
- fwrite (&cache->calib_pixels, sizeof (cache->calib_pixels), 1, fp);
- fwrite (&cache->calib_channels, sizeof (cache->calib_channels), 1, fp);
- fwrite (&cache->average_size, sizeof (cache->average_size), 1, fp);
- fwrite (cache->white_average_data, cache->average_size, 1, fp);
- fwrite (cache->dark_average_data, cache->average_size, 1, fp);
+ std::ofstream str;
+ str.open(path);
+ if (!str.is_open()) {
+ throw SaneException("Cannot open calibration for writing");
}
- DBGCOMPLETED;
- fclose (fp);
+ write_calibration(str, calibration);
}
/** @brief buffer scanned picture
@@ -6536,7 +6033,6 @@ genesys_buffer_image(Genesys_Scanner *s)
size_t read_size; /**> size of reads */
int lines; /** number of lines of the scan */
Genesys_Device *dev = s->dev;
- SANE_Byte *lineart=NULL;
/* compute maximum number of lines for the scan */
if (s->params.lines > 0)
@@ -6548,8 +6044,8 @@ genesys_buffer_image(Genesys_Scanner *s)
lines =
(SANE_UNFIX (dev->model->y_size) * dev->settings.yres) / MM_PER_INCH;
}
- DBG (DBG_info, "%s: buffering %d lines of %d bytes\n", __func__, lines,
- s->params.bytes_per_line);
+ DBG(DBG_info, "%s: buffering %d lines of %d bytes\n", __func__, lines,
+ s->params.bytes_per_line);
/* maximum bytes to read */
maximum = s->params.bytes_per_line * lines;
@@ -6565,15 +6061,7 @@ genesys_buffer_image(Genesys_Scanner *s)
/* read size */
read_size = size / 2;
- /* allocate memory */
- dev->img_buffer = (SANE_Byte *) malloc (size);
- if (dev->img_buffer == NULL)
- {
- DBG (DBG_error,
- "%s: digital processing requires too much memory.\nConsider disabling it\n",
- __func__);
- return SANE_STATUS_NO_MEM;
- }
+ dev->img_buffer.resize(size);
/* loop reading data until we reach maximum or EOF */
total = 0;
@@ -6584,13 +6072,12 @@ genesys_buffer_image(Genesys_Scanner *s)
{
len = read_size;
}
- status = genesys_read_ordered_data (dev, dev->img_buffer + total, &len);
+
+ status = genesys_read_ordered_data(dev, dev->img_buffer.data() + total, &len);
if (status != SANE_STATUS_EOF && status != SANE_STATUS_GOOD)
- {
- free (s->dev->img_buffer);
- DBG (DBG_error, "%s: %s buffering failed\n", __func__,
- sane_strstatus (status));
- return status;
+ {
+ DBG(DBG_error, "%s: %s buffering failed\n", __func__, sane_strstatus(status));
+ return status;
}
total += len;
@@ -6598,14 +6085,7 @@ genesys_buffer_image(Genesys_Scanner *s)
if (total + read_size > size && status != SANE_STATUS_EOF)
{
size += read_size;
- dev->img_buffer = (SANE_Byte *) realloc (dev->img_buffer, size);
- if (dev->img_buffer == NULL)
- {
- DBG (DBG_error0,
- "%s: digital processing requires too much memory.\nConsider disabling it\n",
- __func__);
- return SANE_STATUS_NO_MEM;
- }
+ dev->img_buffer.resize(size);
}
}
@@ -6625,21 +6105,14 @@ genesys_buffer_image(Genesys_Scanner *s)
if(s->dev->settings.dynamic_lineart==SANE_TRUE)
{
total/=8;
- lineart=(SANE_Byte *)malloc(total);
- if (lineart == NULL)
- {
- DBG (DBG_error0,
- "%s: digital processing requires too much memory.\nConsider disabling it\n",
- __func__);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> lineart(total);
+
genesys_gray_lineart (dev,
- dev->img_buffer,
- lineart,
+ dev->img_buffer.data(),
+ lineart.data(),
dev->settings.pixels,
(total*8)/dev->settings.pixels,
dev->settings.threshold);
- free(dev->img_buffer);
dev->img_buffer = lineart;
}
@@ -6651,12 +6124,9 @@ genesys_buffer_image(Genesys_Scanner *s)
s->params.lines = total / s->params.bytes_per_line;
if (DBG_LEVEL >= DBG_io2)
{
- sanei_genesys_write_pnm_file ("unprocessed.pnm",
- dev->img_buffer,
- s->params.depth,
- s->params.format==SANE_FRAME_RGB ? 3:1,
- s->params.pixels_per_line,
- s->params.lines);
+ sanei_genesys_write_pnm_file("gl_unprocessed.pnm", dev->img_buffer.data(), s->params.depth,
+ s->params.format==SANE_FRAME_RGB ? 3 : 1,
+ s->params.pixels_per_line, s->params.lines);
}
return SANE_STATUS_GOOD;
@@ -6665,24 +6135,24 @@ genesys_buffer_image(Genesys_Scanner *s)
/* -------------------------- SANE API functions ------------------------- */
SANE_Status
-sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
+sane_init_impl(SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG_INIT ();
- DBG (DBG_init, "SANE Genesys backend version %d.%d build %d from %s\n",
- SANE_CURRENT_MAJOR, V_MINOR, BUILD, PACKAGE_STRING);
+ DBG(DBG_init, "SANE Genesys backend version %d.%d from %s\n",
+ SANE_CURRENT_MAJOR, V_MINOR, PACKAGE_STRING);
#ifdef HAVE_LIBUSB
- DBG (DBG_init, "SANE Genesys backend built with libusb-1.0\n");
+ DBG(DBG_init, "SANE Genesys backend built with libusb-1.0\n");
#endif
#ifdef HAVE_LIBUSB_LEGACY
- DBG (DBG_init, "SANE Genesys backend built with libusb\n");
+ DBG(DBG_init, "SANE Genesys backend built with libusb\n");
#endif
if (version_code)
- *version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, BUILD);
+ *version_code = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, 0);
- DBG (DBG_proc, "sane_init: authorize %s null\n", authorize ? "!=" : "==");
+ DBG(DBG_proc, "%s: authorize %s null\n", __func__, authorize ? "!=" : "==");
/* init usb use */
sanei_usb_init ();
@@ -6690,7 +6160,14 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/* init sanei_magic */
sanei_magic_init();
- DBG (DBG_info, "sane_init: %s endian machine\n",
+ s_scanners.init();
+ s_devices.init();
+ s_sane_devices.init();
+ s_sane_devices_ptrs.init();
+ genesys_init_sensor_tables();
+ genesys_init_frontend_tables();
+
+ DBG(DBG_info, "%s: %s endian machine\n", __func__,
#ifdef WORDS_BIGENDIAN
"big"
#else
@@ -6698,12 +6175,6 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
#endif
);
- /* set up to no devices at first */
- num_devices = 0;
- first_dev = 0;
- first_handle = 0;
- devlist = 0;
-
/* cold-plug case :detection of allready connected scanners */
status = probe_genesys_devices ();
@@ -6712,129 +6183,89 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
return status;
}
-void
-sane_exit (void)
+
+extern "C" SANE_Status sane_init(SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- Genesys_Device *dev, *next;
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_init_impl(version_code, authorize);
+ });
+}
+void
+sane_exit_impl(void)
+{
DBGSTART;
- for (dev = first_dev; dev; dev = next)
- {
- /* sane_close() free many fields, not much things left to
- * do here */
- next = dev->next;
- free (dev->file_name);
- free (dev);
- }
- first_dev = 0;
- first_handle = 0;
- if (devlist)
- free (devlist);
- devlist = 0;
sanei_usb_exit();
+ run_functions_at_backend_exit();
+
DBGCOMPLETED;
}
-SANE_Status
-sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
+void sane_exit()
{
- Genesys_Device *dev, *prev;
- SANE_Int index;
- SANE_Device *sane_device;
+ catch_all_exceptions(__func__, [](){ sane_exit_impl(); });
+}
- DBG (DBG_proc, "sane_get_devices: start: local_only = %s\n",
- local_only == SANE_TRUE ? "true" : "false");
+SANE_Status
+sane_get_devices_impl(const SANE_Device *** device_list, SANE_Bool local_only)
+{
+ DBG(DBG_proc, "%s: start: local_only = %s\n", __func__,
+ local_only == SANE_TRUE ? "true" : "false");
/* hot-plug case : detection of newly connected scanners */
sanei_usb_scan_devices ();
probe_genesys_devices ();
- if (devlist)
- free (devlist);
-
- devlist = malloc ((num_devices + 1) * sizeof (devlist[0]));
- if (!devlist)
- return SANE_STATUS_NO_MEM;
-
- prev = NULL;
- index = 0;
- dev = first_dev;
- while (dev != NULL)
- {
- /* check if device removed */
- present = SANE_FALSE;
- sanei_usb_find_devices (dev->vendorId, dev->productId, check_present);
- if (present)
- {
- sane_device = malloc (sizeof (*sane_device));
- if (!sane_device)
- return SANE_STATUS_NO_MEM;
- sane_device->name = dev->file_name;
- sane_device->vendor = dev->model->vendor;
- sane_device->model = dev->model->model;
- sane_device->type = strdup ("flatbed scanner");
- devlist[index] = sane_device;
- index++;
- prev = dev;
- dev = dev->next;
- }
- else
- {
- /* remove device from internal list */
- /* case 1 : removed device is first_dev */
- if (prev == NULL)
- {
- /* test for another dev */
- if (dev->next == NULL)
- {
- /* empty the whole list */
- free (dev);
- first_dev = NULL;
- num_devices = 0;
- dev = NULL;
- }
- else
- {
- /* assign new start */
- first_dev = dev->next;
- num_devices--;
- free (dev);
- dev = first_dev;
- }
- }
- /* case 2 : removed device is not first_dev */
- else
- {
- /* link previous dev to next dev */
- prev->next = dev->next;
- free (dev);
- num_devices--;
-
- /* next loop */
- dev = prev->next;
- }
- }
+ s_sane_devices->clear();
+ s_sane_devices_ptrs->clear();
+ s_sane_devices->reserve(s_devices->size());
+ s_sane_devices_ptrs->reserve(s_devices->size() + 1);
+
+ for (auto dev_it = s_devices->begin(); dev_it != s_devices->end();) {
+ present = SANE_FALSE;
+ sanei_usb_find_devices(dev_it->vendorId, dev_it->productId, check_present);
+ if (present) {
+ s_sane_devices->emplace_back();
+ auto& sane_device = s_sane_devices->back();
+ sane_device.name = dev_it->file_name;
+ sane_device.vendor = dev_it->model->vendor;
+ sane_device.model = dev_it->model->model;
+ sane_device.type = "flatbed scanner";
+ s_sane_devices_ptrs->push_back(&sane_device);
+ dev_it++;
+ } else {
+ dev_it = s_devices->erase(dev_it);
+ }
}
- devlist[index] = 0;
+ s_sane_devices_ptrs->push_back(nullptr);
- *device_list = devlist;
+ *((SANE_Device ***)device_list) = s_sane_devices_ptrs->data();
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
+SANE_Status sane_get_devices(const SANE_Device *** device_list, SANE_Bool local_only)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_get_devices_impl(device_list, local_only);
+ });
+}
+
SANE_Status
-sane_open (SANE_String_Const devicename, SANE_Handle * handle)
+sane_open_impl(SANE_String_Const devicename, SANE_Handle * handle)
{
- Genesys_Device *dev;
- SANE_Status status;
- Genesys_Scanner *s;
+ DBG_HELPER(dbg);
+ Genesys_Device *dev = nullptr;
+ SANE_Status status = SANE_STATUS_GOOD;
char *tmpstr;
- DBG (DBG_proc, "sane_open: start (devicename = `%s')\n", devicename);
+ DBG(DBG_proc, "%s: devicename = `%s')\n", __func__, devicename);
/* devicename="" or devicename="genesys" are default values that use
* first available device
@@ -6842,30 +6273,28 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
if (devicename[0] && strcmp ("genesys", devicename) != 0)
{
/* search for the given devicename in the device list */
- for (dev = first_dev; dev; dev = dev->next)
- if (strcmp (dev->file_name, devicename) == 0)
- break;
+ for (auto& d : *s_devices) {
+ if (strcmp(d.file_name, devicename) == 0) {
+ dev = &d;
+ break;
+ }
+ }
if (!dev)
{
- DBG (DBG_info,
- "sane_open: couldn't find `%s' in devlist, trying attach\n",
- devicename);
+ DBG(DBG_info, "%s: couldn't find `%s' in devlist, trying attach\n", __func__, devicename);
RIE (attach (devicename, &dev, SANE_TRUE));
}
else
- DBG (DBG_info, "sane_open: found `%s' in devlist\n",
- dev->model->name);
+ DBG(DBG_info, "%s: found `%s' in devlist\n", __func__, dev->model->name);
}
else
{
- /* empty devicename or "genesys" -> use first device */
- dev = first_dev;
- if (dev)
- {
- devicename = dev->file_name;
- DBG (DBG_info, "sane_open: empty devicename, trying `%s'\n",
- devicename);
+ // empty devicename or "genesys" -> use first device
+ if (!s_devices->empty()) {
+ dev = &s_devices->front();
+ devicename = dev->file_name;
+ DBG(DBG_info, "%s: empty devicename, trying `%s'\n", __func__, devicename);
}
}
@@ -6874,55 +6303,32 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
if (dev->model->flags & GENESYS_FLAG_UNTESTED)
{
- DBG (DBG_error0,
- "WARNING: Your scanner is not fully supported or at least \n");
- DBG (DBG_error0,
- " had only limited testing. Please be careful and \n");
- DBG (DBG_error0, " report any failure/success to \n");
- DBG (DBG_error0,
- " sane-devel@lists.alioth.debian.org. Please provide as many\n");
- DBG (DBG_error0,
- " details as possible, e.g. the exact name of your\n");
- DBG (DBG_error0, " scanner and what does (not) work.\n");
+ DBG(DBG_error0, "WARNING: Your scanner is not fully supported or at least \n");
+ DBG(DBG_error0, " had only limited testing. Please be careful and \n");
+ DBG(DBG_error0, " report any failure/success to \n");
+ DBG(DBG_error0, " sane-devel@alioth-lists.debian.net. Please provide as many\n");
+ DBG(DBG_error0, " details as possible, e.g. the exact name of your\n");
+ DBG(DBG_error0, " scanner and what does (not) work.\n");
}
- status = sanei_usb_open (dev->file_name, &dev->dn);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_warn, "sane_open: couldn't open device `%s': %s\n",
- dev->file_name, sane_strstatus (status));
- return status;
- }
+ dbg.vstatus("open device '%s'", dev->file_name);
+ dev->usb_dev.open(dev->file_name);
+ dbg.clear();
- s = malloc (sizeof (*s));
- if (!s)
- return SANE_STATUS_NO_MEM;
+ s_scanners->push_back(Genesys_Scanner());
+ auto* s = &s_scanners->back();
s->dev = dev;
s->scanning = SANE_FALSE;
- s->dev->read_buffer.buffer = NULL;
- s->dev->lines_buffer.buffer = NULL;
- s->dev->shrink_buffer.buffer = NULL;
- s->dev->out_buffer.buffer = NULL;
- s->dev->binarize_buffer.buffer = NULL;
- s->dev->local_buffer.buffer = NULL;
s->dev->parking = SANE_FALSE;
s->dev->read_active = SANE_FALSE;
- s->dev->white_average_data = NULL;
- s->dev->dark_average_data = NULL;
- s->dev->calibration_cache = NULL;
- s->dev->calib_file = NULL;
- s->dev->img_buffer = NULL;
+ s->dev->force_calibration = 0;
s->dev->line_interp = 0;
s->dev->line_count = 0;
s->dev->segnb = 0;
- s->dev->oe_buffer.buffer=NULL;
s->dev->binary=NULL;
- /* insert newly opened handle into list of open handles: */
- s->next = first_handle;
- first_handle = s;
*handle = s;
if (!dev->already_initialized)
@@ -6932,54 +6338,68 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
if (sanei_genesys_init_cmd_set (s->dev) != SANE_STATUS_GOOD)
{
- DBG (DBG_error0, "This device doesn't have a valid command set!!\n");
+ DBG(DBG_error0, "This device doesn't have a valid command set!!\n");
return SANE_STATUS_IO_ERROR;
}
- RIE (dev->model->cmd_set->init (dev));
+ // FIXME: we create sensor tables for the sensor, this should happen when we know which sensor
+ // we will select
+ RIE (dev->model->cmd_set->init(dev));
/* some hardware capabilities are detected through sensors */
RIE (s->dev->model->cmd_set->update_hardware_sensors (s));
/* here is the place to fetch a stored calibration cache */
- tmpstr=calibration_filename(s->dev);
- s->val[OPT_CALIBRATION_FILE].s = strdup (tmpstr);
- s->dev->calib_file = strdup (tmpstr);
- DBG (DBG_info, "%s: Calibration filename set to:\n", __func__);
- DBG (DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file);
- free(tmpstr);
+ if (s->dev->force_calibration == 0)
+ {
+ tmpstr=calibration_filename(s->dev);
+ s->calibration_file = tmpstr;
+ s->dev->calib_file = tmpstr;
+ DBG(DBG_info, "%s: Calibration filename set to:\n", __func__);
+ DBG(DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file.c_str());
+ free(tmpstr);
- /* now open file, fetch calibration records */
+ catch_all_exceptions(__func__, [&]()
+ {
+ sanei_genesys_read_calibration(s->dev->calibration_cache, s->dev->calib_file);
+ });
+ }
- sanei_genesys_read_calibration (s->dev);
+ return SANE_STATUS_GOOD;
+}
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
+SANE_Status sane_open(SANE_String_Const devicename, SANE_Handle* handle)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_open_impl(devicename, handle);
+ });
}
void
-sane_close (SANE_Handle handle)
+sane_close_impl(SANE_Handle handle)
{
- Genesys_Scanner *prev, *s;
- Genesys_Calibration_Cache *cache, *next_cache;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
/* remove handle from list of open handles: */
- prev = 0;
- for (s = first_handle; s; s = s->next)
+ auto it = s_scanners->end();
+ for (auto it2 = s_scanners->begin(); it2 != s_scanners->end(); it2++)
{
- if (s == handle)
- break;
- prev = s;
+ if (&*it2 == handle) {
+ it = it2;
+ break;
+ }
}
- if (!s)
+ if (it == s_scanners->end())
{
- DBG (DBG_error, "sane_close: invalid handle %p\n", handle);
+ DBG(DBG_error, "%s: invalid handle %p\n", __func__, handle);
return; /* oops, not a handle we know about */
}
+ Genesys_Scanner* s = &*it;
+
/* eject document for sheetfed scanners */
if (s->dev->model->is_sheetfed == SANE_TRUE)
{
@@ -6994,9 +6414,8 @@ sane_close (SANE_Handle handle)
status = sanei_genesys_wait_for_home (s->dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sane_close: failed to wait for head to park: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to wait for head to park: %s\n", __func__,
+ sane_strstatus(status));
}
}
}
@@ -7005,186 +6424,226 @@ sane_close (SANE_Handle handle)
status = s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sane_close: failed to enable power saving mode: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to enable power saving mode: %s\n", __func__,
+ sane_strstatus(status));
}
- /* here is the place to store calibration cache */
- write_calibration (s->dev);
-
- for (cache = s->dev->calibration_cache; cache; cache = next_cache)
- {
- next_cache = cache->next;
- free (cache->dark_average_data);
- free (cache->white_average_data);
- free (cache);
+ // here is the place to store calibration cache
+ if (s->dev->force_calibration == 0) {
+ catch_all_exceptions(__func__, [&](){ write_calibration(s->dev->calibration_cache,
+ s->dev->calib_file); });
}
- sanei_genesys_buffer_free (&(s->dev->read_buffer));
- sanei_genesys_buffer_free (&(s->dev->lines_buffer));
- sanei_genesys_buffer_free (&(s->dev->shrink_buffer));
- sanei_genesys_buffer_free (&(s->dev->out_buffer));
- sanei_genesys_buffer_free (&(s->dev->binarize_buffer));
- sanei_genesys_buffer_free (&(s->dev->local_buffer));
- FREE_IFNOT_NULL (s->dev->white_average_data);
- FREE_IFNOT_NULL (s->dev->dark_average_data);
- FREE_IFNOT_NULL (s->dev->calib_file);
-
- /* free allocated gamma tables */
- FREE_IFNOT_NULL (s->dev->sensor.gamma_table[0]);
- FREE_IFNOT_NULL (s->dev->sensor.gamma_table[1]);
- FREE_IFNOT_NULL (s->dev->sensor.gamma_table[2]);
-
s->dev->already_initialized = SANE_FALSE;
/* for an handful of bytes .. */
free ((void *)(size_t)s->opt[OPT_RESOLUTION].constraint.word_list);
- free (s->val[OPT_SOURCE].s);
- free (s->val[OPT_MODE].s);
- free (s->val[OPT_COLOR_FILTER].s);
free ((void *)(size_t)s->opt[OPT_TL_X].constraint.range);
free ((void *)(size_t)s->opt[OPT_TL_Y].constraint.range);
- if (prev)
- prev->next = s->next;
- else
- first_handle = s->next;
+ s->dev->clear();
/* LAMP OFF : same register across all the ASICs */
sanei_genesys_write_register (s->dev, 0x03, 0x00);
- /* clear before closing */
- sanei_usb_clear_halt (s->dev->dn);
+ catch_all_exceptions(__func__, [&](){ s->dev->usb_dev.clear_halt(); });
- /* we need this to avoid these ASIC getting stuck
- * in bulk writes */
- sanei_usb_reset (s->dev->dn);
+ // we need this to avoid these ASIC getting stuck in bulk writes
+ catch_all_exceptions(__func__, [&](){ s->dev->usb_dev.reset(); });
- sanei_usb_close (s->dev->dn);
- free (s);
+ // not freeing s->dev because it's in the dev list
+ catch_all_exceptions(__func__, [&](){ s->dev->usb_dev.close(); });
+
+ s_scanners->erase(it);
DBGCOMPLETED;
}
+void sane_close(SANE_Handle handle)
+{
+ catch_all_exceptions(__func__, [=]()
+ {
+ sane_close_impl(handle);
+ });
+}
+
const SANE_Option_Descriptor *
-sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
+sane_get_option_descriptor_impl(SANE_Handle handle, SANE_Int option)
{
- Genesys_Scanner *s = handle;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
if ((unsigned) option >= NUM_OPTIONS)
return 0;
- DBG (DBG_io2, "sane_get_option_descriptor: option = %s (%d)\n",
- s->opt[option].name, option);
+ DBG(DBG_io2, "%s: option = %s (%d)\n", __func__, s->opt[option].name, option);
return s->opt + option;
}
+
+const SANE_Option_Descriptor *
+sane_get_option_descriptor(SANE_Handle handle, SANE_Int option)
+{
+ const SANE_Option_Descriptor* ret = NULL;
+ catch_all_exceptions(__func__, [&]()
+ {
+ ret = sane_get_option_descriptor_impl(handle, option);
+ });
+ return ret;
+}
+
/* gets an option , called by sane_control_option */
static SANE_Status
get_option_value (Genesys_Scanner * s, int option, void *val)
{
unsigned int i;
- SANE_Word *table ,tmp;
- uint16_t *gamma;
+ SANE_Word* table = nullptr;
+ std::vector<uint16_t> gamma_table;
+ unsigned option_size = 0;
SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Calibration_Cache *cache;
+
+ // FIXME: we should pick correct sensor here
+ const Genesys_Sensor& sensor = sanei_genesys_find_sensor_any(s->dev);
switch (option)
{
/* geometry */
case OPT_TL_X:
+ *reinterpret_cast<SANE_Word*>(val) = s->pos_top_left_x;
+ break;
case OPT_TL_Y:
+ *reinterpret_cast<SANE_Word*>(val) = s->pos_top_left_y;
+ break;
case OPT_BR_X:
+ *reinterpret_cast<SANE_Word*>(val) = s->pos_bottom_right_x;
+ break;
case OPT_BR_Y:
- *(SANE_Word *) val = s->val[option].w;
- /* switch coordinate to keep them coherent */
- if (s->val[OPT_TL_X].w >= s->val[OPT_BR_X].w)
- {
- tmp=s->val[OPT_BR_X].w;
- s->val[OPT_BR_X].w=s->val[OPT_TL_X].w;
- s->val[OPT_TL_X].w=tmp;
- }
- if (s->val[OPT_TL_Y].w >= s->val[OPT_BR_Y].w)
- {
- tmp=s->val[OPT_BR_Y].w;
- s->val[OPT_BR_Y].w=s->val[OPT_TL_Y].w;
- s->val[OPT_TL_Y].w=tmp;
- }
- break;
+ *reinterpret_cast<SANE_Word*>(val) = s->pos_bottom_right_y;
+ break;
/* word options: */
case OPT_NUM_OPTS:
+ *reinterpret_cast<SANE_Word*>(val) = NUM_OPTIONS;
+ break;
case OPT_RESOLUTION:
+ *reinterpret_cast<SANE_Word*>(val) = s->resolution;
+ break;
case OPT_BIT_DEPTH:
+ *reinterpret_cast<SANE_Word*>(val) = s->bit_depth;
+ break;
case OPT_PREVIEW:
+ *reinterpret_cast<SANE_Word*>(val) = s->preview;
+ break;
case OPT_THRESHOLD:
+ *reinterpret_cast<SANE_Word*>(val) = s->threshold;
+ break;
case OPT_THRESHOLD_CURVE:
+ *reinterpret_cast<SANE_Word*>(val) = s->threshold_curve;
+ break;
case OPT_DISABLE_DYNAMIC_LINEART:
+ *reinterpret_cast<SANE_Word*>(val) = s->disable_dynamic_lineart;
+ break;
case OPT_DISABLE_INTERPOLATION:
+ *reinterpret_cast<SANE_Word*>(val) = s->disable_interpolation;
+ break;
case OPT_LAMP_OFF:
+ *reinterpret_cast<SANE_Word*>(val) = s->lamp_off;
+ break;
case OPT_LAMP_OFF_TIME:
+ *reinterpret_cast<SANE_Word*>(val) = s->lamp_off_time;
+ break;
case OPT_SWDESKEW:
+ *reinterpret_cast<SANE_Word*>(val) = s->swdeskew;
+ break;
case OPT_SWCROP:
+ *reinterpret_cast<SANE_Word*>(val) = s->swcrop;
+ break;
case OPT_SWDESPECK:
+ *reinterpret_cast<SANE_Word*>(val) = s->swdespeck;
+ break;
case OPT_SWDEROTATE:
+ *reinterpret_cast<SANE_Word*>(val) = s->swderotate;
+ break;
case OPT_SWSKIP:
+ *reinterpret_cast<SANE_Word*>(val) = s->swskip;
+ break;
case OPT_DESPECK:
+ *reinterpret_cast<SANE_Word*>(val) = s->despeck;
+ break;
case OPT_CONTRAST:
+ *reinterpret_cast<SANE_Word*>(val) = s->contrast;
+ break;
case OPT_BRIGHTNESS:
+ *reinterpret_cast<SANE_Word*>(val) = s->brightness;
+ break;
case OPT_EXPIRATION_TIME:
- *(SANE_Word *) val = s->val[option].w;
- break;
+ *reinterpret_cast<SANE_Word*>(val) = s->expiration_time;
+ break;
case OPT_CUSTOM_GAMMA:
- *(SANE_Word *) val = s->val[option].w;
- break;
+ *reinterpret_cast<SANE_Word*>(val) = s->custom_gamma;
+ break;
/* string options: */
case OPT_MODE:
+ std::strcpy(reinterpret_cast<char*>(val), s->mode.c_str());
+ break;
case OPT_COLOR_FILTER:
+ std::strcpy(reinterpret_cast<char*>(val), s->color_filter.c_str());
+ break;
case OPT_CALIBRATION_FILE:
+ std::strcpy(reinterpret_cast<char*>(val), s->calibration_file.c_str());
+ break;
case OPT_SOURCE:
- strcpy (val, s->val[option].s);
- break;
+ std::strcpy(reinterpret_cast<char*>(val), s->source.c_str());
+ break;
/* word array options */
case OPT_GAMMA_VECTOR:
table = (SANE_Word *) val;
- if (strcmp (s->val[OPT_COLOR_FILTER].s, "Red") == 0)
- {
- gamma = s->dev->sensor.gamma_table[GENESYS_RED];
- }
- else if (strcmp (s->val[OPT_COLOR_FILTER].s, "Blue") == 0)
- {
- gamma = s->dev->sensor.gamma_table[GENESYS_BLUE];
- }
- else
- {
- gamma = s->dev->sensor.gamma_table[GENESYS_GREEN];
- }
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- table[i] = gamma[i];
- }
- break;
+ if (s->color_filter == "Red") {
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_RED);
+ } else if (s->color_filter == "Blue") {
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_BLUE);
+ } else {
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
+ }
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ if (gamma_table.size() != option_size) {
+ throw std::runtime_error("The size of the gamma tables does not match");
+ }
+ for (i = 0; i < option_size; i++) {
+ table[i] = gamma_table[i];
+ }
+ break;
case OPT_GAMMA_VECTOR_R:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- table[i] = s->dev->sensor.gamma_table[GENESYS_RED][i];
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_RED);
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ if (gamma_table.size() != option_size) {
+ throw std::runtime_error("The size of the gamma tables does not match");
+ }
+ for (i = 0; i < option_size; i++) {
+ table[i] = gamma_table[i];
}
break;
case OPT_GAMMA_VECTOR_G:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- table[i] = s->dev->sensor.gamma_table[GENESYS_GREEN][i];
- }
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_GREEN);
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ if (gamma_table.size() != option_size) {
+ throw std::runtime_error("The size of the gamma tables does not match");
+ }
+ for (i = 0; i < option_size; i++) {
+ table[i] = gamma_table[i];
+ }
break;
case OPT_GAMMA_VECTOR_B:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- table[i] = s->dev->sensor.gamma_table[GENESYS_BLUE][i];
- }
+ gamma_table = get_gamma_table(s->dev, sensor, GENESYS_BLUE);
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ if (gamma_table.size() != option_size) {
+ throw std::runtime_error("The size of the gamma tables does not match");
+ }
+ for (i = 0; i < option_size; i++) {
+ table[i] = gamma_table[i];
+ }
break;
/* sensors */
case OPT_SCAN_SW:
@@ -7196,25 +6655,22 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
case OPT_POWER_SW:
case OPT_EXTRA_SW:
RIE (s->dev->model->cmd_set->update_hardware_sensors (s));
- *(SANE_Bool *) val = s->val[option].b;
- s->last_val[option].b = *(SANE_Bool *) val;
+ *(SANE_Bool *) val = s->buttons[genesys_option_to_button(option)].read();
break;
case OPT_NEED_CALIBRATION_SW:
/* scanner needs calibration for current mode unless a matching
* calibration cache is found */
*(SANE_Bool *) val = SANE_TRUE;
- for (cache = s->dev->calibration_cache; cache; cache = cache->next)
+ for (auto& cache : s->dev->calibration_cache)
{
- if (s->dev->model->
- cmd_set->is_compatible_calibration (s->dev, cache, SANE_FALSE) == SANE_STATUS_GOOD)
+ if (s->dev->model->cmd_set->is_compatible_calibration(s->dev, sensor, &cache, SANE_FALSE))
{
*(SANE_Bool *) val = SANE_FALSE;
}
}
break;
default:
- DBG (DBG_warn, "get_option_value: can't get unknown option %d\n",
- option);
+ DBG(DBG_warn, "%s: can't get unknown option %d\n", __func__, option);
}
return status;
}
@@ -7222,40 +6678,27 @@ get_option_value (Genesys_Scanner * s, int option, void *val)
/** @brief set calibration file value
* Set calibration file value. Load new cache values from file if it exists,
* else creates the file*/
-static SANE_Status set_calibration_value (Genesys_Scanner * s, int option, void *val)
+static void set_calibration_value(Genesys_Scanner* s, const char* val)
{
- SANE_Status status=SANE_STATUS_GOOD;
- char *tmp;
- Genesys_Device *dev=s->dev;
-
- DBGSTART;
+ DBG_HELPER(dbg);
- /* try to load file */
- tmp=dev->calib_file;
- dev->calib_file=val;
- status=sanei_genesys_read_calibration (dev);
+ std::string new_calib_path = val;
+ Genesys_Device::Calibration new_calibration;
- /* file exists but is invalid, so fall back to previous cache file
- * an re-read it */
- if (status!=SANE_STATUS_IO_ERROR && status!=SANE_STATUS_GOOD)
+ bool is_calib_success = false;
+ catch_all_exceptions(__func__, [&]()
{
- dev->calib_file=tmp;
- status=sanei_genesys_read_calibration (dev);
- return status;
- }
+ is_calib_success = sanei_genesys_read_calibration(new_calibration, new_calib_path);
+ });
- /* now we can set file name value */
- if (s->val[option].s)
- free (s->val[option].s);
- s->val[option].s = strdup (val);
- if (tmp)
- free (tmp);
- dev->calib_file = strdup (val);
- DBG (DBG_info, "%s: Calibration filename set to:\n", __func__);
- DBG (DBG_info, "%s: >%s<\n", __func__, s->dev->calib_file);
+ if (!is_calib_success) {
+ return;
+ }
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
+ s->dev->calibration_cache = std::move(new_calibration);
+ s->dev->calib_file = new_calib_path;
+ s->calibration_file = new_calib_path;
+ DBG(DBG_info, "%s: Calibration filename set to '%s':\n", __func__, new_calib_path.c_str());
}
/* sets an option , called by sane_control_option */
@@ -7267,53 +6710,117 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
SANE_Word *table;
unsigned int i;
SANE_Range *x_range, *y_range;
- Genesys_Calibration_Cache *cache, *next_cache;
+ unsigned option_size = 0;
+
+ // FIXME: we should modify device-specific sensor
+ auto& sensor = sanei_genesys_find_sensor_any_for_write(s->dev);
switch (option)
{
case OPT_TL_X:
+ s->pos_top_left_x = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_TL_Y:
+ s->pos_top_left_y = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_BR_X:
+ s->pos_bottom_right_x = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_BR_Y:
- s->val[option].w = *(SANE_Word *) val;
- RIE (calc_parameters (s));
- *myinfo |= SANE_INFO_RELOAD_PARAMS;
- break;
+ s->pos_bottom_right_y = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_RESOLUTION:
+ s->resolution = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_THRESHOLD:
+ s->threshold = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_THRESHOLD_CURVE:
+ s->threshold_curve = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_DISABLE_DYNAMIC_LINEART:
+ s->disable_dynamic_lineart = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_SWCROP:
+ s->swcrop = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_SWDESKEW:
+ s->swdeskew = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_DESPECK:
+ s->despeck = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_SWDEROTATE:
+ s->swderotate = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_SWSKIP:
+ s->swskip = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_DISABLE_INTERPOLATION:
+ s->disable_interpolation = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_LAMP_OFF:
+ s->lamp_off = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_PREVIEW:
+ s->preview = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_BRIGHTNESS:
+ s->brightness = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_CONTRAST:
- s->val[option].w = *(SANE_Word *) val;
- RIE (calc_parameters (s));
- *myinfo |= SANE_INFO_RELOAD_PARAMS;
- break;
+ s->contrast = *reinterpret_cast<SANE_Word*>(val);
+ RIE (calc_parameters(s));
+ *myinfo |= SANE_INFO_RELOAD_PARAMS;
+ break;
case OPT_SWDESPECK:
- s->val[option].w = *(SANE_Word *) val;
- if (s->val[OPT_SWDESPECK].b == SANE_TRUE)
- {
- ENABLE(OPT_DESPECK);
- }
- else
- {
- DISABLE(OPT_DESPECK);
+ s->swdespeck = *reinterpret_cast<SANE_Word*>(val);
+ if (s->swdespeck) {
+ ENABLE(OPT_DESPECK);
+ } else {
+ DISABLE(OPT_DESPECK);
}
RIE (calc_parameters (s));
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
/* software enhancement functions only apply to 8 or 1 bits data */
case OPT_BIT_DEPTH:
- s->val[option].w = *(SANE_Word *) val;
- if(s->val[OPT_BIT_DEPTH].w>8)
+ s->bit_depth = *reinterpret_cast<SANE_Word*>(val);
+ if(s->bit_depth>8)
{
DISABLE(OPT_SWDESKEW);
DISABLE(OPT_SWDESPECK);
@@ -7339,14 +6846,11 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_SOURCE:
- if (strcmp (s->val[option].s, val) != 0)
- { /* something changed */
- if (s->val[option].s)
- free (s->val[option].s);
- s->val[option].s = strdup (val);
-
- /* change geometry constraint to the new source value */
- if (strcmp (s->val[option].s, FLATBED) == 0)
+ if (s->source != reinterpret_cast<const char*>(val)) {
+ s->source = reinterpret_cast<const char*>(val);
+
+ // change geometry constraint to the new source value
+ if (s->source == STR_FLATBED)
{
x_range=create_range(s->dev->model->x_size);
y_range=create_range(s->dev->model->y_size);
@@ -7365,24 +6869,22 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
free((void *)(size_t)s->opt[OPT_TL_X].constraint.range);
free((void *)(size_t)s->opt[OPT_TL_Y].constraint.range);
s->opt[OPT_TL_X].constraint.range = x_range;
- s->val[OPT_TL_X].w = 0;
+ s->pos_top_left_x = 0;
s->opt[OPT_TL_Y].constraint.range = y_range;
- s->val[OPT_TL_Y].w = 0;
+ s->pos_top_left_y = 0;
s->opt[OPT_BR_X].constraint.range = x_range;
- s->val[OPT_BR_Y].w = y_range->max;
+ s->pos_bottom_right_x = x_range->max;
s->opt[OPT_BR_Y].constraint.range = y_range;
- s->val[OPT_BR_X].w = x_range->max;
+ s->pos_bottom_right_y = y_range->max;
/* signals reload */
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
}
break;
case OPT_MODE:
- if (s->val[option].s)
- free (s->val[option].s);
- s->val[option].s = strdup (val);
+ s->mode = reinterpret_cast<const char*>(val);
- if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_LINEART) == 0)
+ if (s->mode == SANE_VALUE_SCAN_MODE_LINEART)
{
ENABLE (OPT_THRESHOLD);
ENABLE (OPT_THRESHOLD_CURVE);
@@ -7398,7 +6900,7 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
DISABLE (OPT_THRESHOLD);
DISABLE (OPT_THRESHOLD_CURVE);
DISABLE (OPT_DISABLE_DYNAMIC_LINEART);
- if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_GRAY) == 0)
+ if (s->mode == SANE_VALUE_SCAN_MODE_GRAY)
{
if (s->dev->model->asic_type != GENESYS_GL646 || !s->dev->model->is_cis)
{
@@ -7419,9 +6921,9 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
RIE (calc_parameters (s));
/* if custom gamma, toggle gamma table options according to the mode */
- if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
+ if (s->custom_gamma)
{
- if (strcmp (s->val[option].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
+ if (s->mode == SANE_VALUE_SCAN_MODE_COLOR)
{
DISABLE (OPT_GAMMA_VECTOR);
ENABLE (OPT_GAMMA_VECTOR_R);
@@ -7440,31 +6942,34 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_COLOR_FILTER:
- if (s->val[option].s)
- free (s->val[option].s);
- s->val[option].s = strdup (val);
+ s->color_filter = reinterpret_cast<const char*>(val);
RIE (calc_parameters (s));
break;
case OPT_CALIBRATION_FILE:
- RIE(set_calibration_value (s, option, val));
- break;
+ if (s->dev->force_calibration == 0) {
+ set_calibration_value(s, reinterpret_cast<const char*>(val));
+ }
+ break;
case OPT_LAMP_OFF_TIME:
+ if (*reinterpret_cast<SANE_Word*>(val) != s->lamp_off_time) {
+ s->lamp_off_time = *reinterpret_cast<SANE_Word*>(val);
+ RIE(s->dev->model->cmd_set->set_powersaving(s->dev, s->lamp_off_time));
+ }
+ break;
case OPT_EXPIRATION_TIME:
- if (*(SANE_Word *) val != s->val[option].w)
- {
- s->val[option].w = *(SANE_Word *) val;
- RIE (s->dev->model->cmd_set->
- set_powersaving (s->dev, s->val[option].w));
+ if (*reinterpret_cast<SANE_Word*>(val) != s->expiration_time) {
+ s->expiration_time = *reinterpret_cast<SANE_Word*>(val);
+ // BUG: this is most likely not intended behavior, found out during refactor
+ RIE(s->dev->model->cmd_set->set_powersaving(s->dev, s->expiration_time));
}
- break;
+ break;
case OPT_CUSTOM_GAMMA:
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
- s->val[OPT_CUSTOM_GAMMA].b = *(SANE_Bool *) val;
+ s->custom_gamma = *reinterpret_cast<SANE_Bool*>(val);
- if (s->val[OPT_CUSTOM_GAMMA].b == SANE_TRUE)
- {
- if (strcmp (s->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
+ if (s->custom_gamma) {
+ if (s->mode == SANE_VALUE_SCAN_MODE_COLOR)
{
DISABLE (OPT_GAMMA_VECTOR);
ENABLE (OPT_GAMMA_VECTOR_R);
@@ -7485,94 +6990,82 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
DISABLE (OPT_GAMMA_VECTOR_R);
DISABLE (OPT_GAMMA_VECTOR_G);
DISABLE (OPT_GAMMA_VECTOR_B);
- /* restore default sensor gamma table */
- /* currently there is no sensor's specific gamma table,
- * tables are built by sanei_genesys_create_gamma_table */
- sanei_genesys_create_gamma_table (s->dev->sensor.gamma_table[GENESYS_RED],
- s->opt[OPT_GAMMA_VECTOR_R].size / sizeof (SANE_Word),
- s->opt[OPT_GAMMA_VECTOR_R].constraint.range->max,
- s->opt[OPT_GAMMA_VECTOR_R].constraint.range->max,
- s->dev->sensor.gamma[GENESYS_RED]);
- sanei_genesys_create_gamma_table (s->dev->sensor.gamma_table[GENESYS_GREEN],
- s->opt[OPT_GAMMA_VECTOR_G].size / sizeof (SANE_Word),
- s->opt[OPT_GAMMA_VECTOR_G].constraint.range->max,
- s->opt[OPT_GAMMA_VECTOR_G].constraint.range->max,
- s->dev->sensor.gamma[GENESYS_GREEN]);
- sanei_genesys_create_gamma_table (s->dev->sensor.gamma_table[GENESYS_BLUE],
- s->opt[OPT_GAMMA_VECTOR_B].size / sizeof (SANE_Word),
- s->opt[OPT_GAMMA_VECTOR_B].constraint.range->max,
- s->opt[OPT_GAMMA_VECTOR_B].constraint.range->max,
- s->dev->sensor.gamma[GENESYS_BLUE]);
+ for (auto& table : s->dev->gamma_override_tables) {
+ table.clear();
+ }
}
break;
case OPT_GAMMA_VECTOR:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- s->dev->sensor.gamma_table[GENESYS_RED][i] = table[i];
- s->dev->sensor.gamma_table[GENESYS_GREEN][i] = table[i];
- s->dev->sensor.gamma_table[GENESYS_BLUE][i] = table[i];
- }
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+
+ s->dev->gamma_override_tables[GENESYS_RED].resize(option_size);
+ s->dev->gamma_override_tables[GENESYS_GREEN].resize(option_size);
+ s->dev->gamma_override_tables[GENESYS_BLUE].resize(option_size);
+ for (i = 0; i < option_size; i++) {
+ s->dev->gamma_override_tables[GENESYS_RED][i] = table[i];
+ s->dev->gamma_override_tables[GENESYS_GREEN][i] = table[i];
+ s->dev->gamma_override_tables[GENESYS_BLUE][i] = table[i];
+ }
break;
case OPT_GAMMA_VECTOR_R:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- s->dev->sensor.gamma_table[GENESYS_RED][i] = table[i];
- }
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ s->dev->gamma_override_tables[GENESYS_RED].resize(option_size);
+ for (i = 0; i < option_size; i++) {
+ s->dev->gamma_override_tables[GENESYS_RED][i] = table[i];
+ }
break;
case OPT_GAMMA_VECTOR_G:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- s->dev->sensor.gamma_table[GENESYS_GREEN][i] = table[i];
- }
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ s->dev->gamma_override_tables[GENESYS_GREEN].resize(option_size);
+ for (i = 0; i < option_size; i++) {
+ s->dev->gamma_override_tables[GENESYS_GREEN][i] = table[i];
+ }
break;
case OPT_GAMMA_VECTOR_B:
table = (SANE_Word *) val;
- for (i = 0; i < s->opt[option].size / sizeof (SANE_Word); i++)
- {
- s->dev->sensor.gamma_table[GENESYS_BLUE][i] = table[i];
- }
+ option_size = s->opt[option].size / sizeof (SANE_Word);
+ s->dev->gamma_override_tables[GENESYS_BLUE].resize(option_size);
+ for (i = 0; i < option_size; i++) {
+ s->dev->gamma_override_tables[GENESYS_BLUE][i] = table[i];
+ }
break;
case OPT_CALIBRATE:
status = s->dev->model->cmd_set->save_power (s->dev, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to disable power saving mode: %s\n",
- __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to disable power saving mode: %s\n", __func__,
+ sane_strstatus(status));
}
else
- status = genesys_scanner_calibration (s->dev);
+ status = genesys_scanner_calibration(s->dev, sensor);
/* not critical if this fails*/
s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE);
/* signals that sensors will have to be read again */
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
case OPT_CLEAR_CALIBRATION:
- /* clear calibration cache */
- if (s->dev->calibration_cache != NULL)
- {
- for (cache = s->dev->calibration_cache; cache; cache = next_cache)
- {
- next_cache = cache->next;
- free (cache->dark_average_data);
- free (cache->white_average_data);
- free (cache);
- }
- }
- s->dev->calibration_cache = NULL;
+ s->dev->calibration_cache.clear();
+
/* remove file */
- unlink (s->dev->calib_file);
+ unlink(s->dev->calib_file.c_str());
+ /* signals that sensors will have to be read again */
+ *myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
+ break;
+ case OPT_FORCE_CALIBRATION:
+ s->dev->force_calibration = 1;
+ s->dev->calibration_cache.clear();
+ s->dev->calib_file.clear();
+
/* signals that sensors will have to be read again */
*myinfo |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
break;
default:
- DBG (DBG_warn, "set_option_value: can't set unknown option %d\n",
- option);
+ DBG(DBG_warn, "%s: can't set unknown option %d\n", __func__, option);
}
return status;
}
@@ -7580,18 +7073,16 @@ set_option_value (Genesys_Scanner * s, int option, void *val,
/* sets and gets scanner option values */
SANE_Status
-sane_control_option (SANE_Handle handle, SANE_Int option,
- SANE_Action action, void *val, SANE_Int * info)
+sane_control_option_impl(SANE_Handle handle, SANE_Int option,
+ SANE_Action action, void *val, SANE_Int * info)
{
- Genesys_Scanner *s = handle;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
SANE_Status status = SANE_STATUS_GOOD;
SANE_Word cap;
SANE_Int myinfo = 0;
- DBG (DBG_io2,
- "sane_control_option: start: action = %s, option = %s (%d)\n",
- (action == SANE_ACTION_GET_VALUE) ? "get" : (action ==
- SANE_ACTION_SET_VALUE) ?
+ DBG(DBG_io2, "%s: start: action = %s, option = %s (%d)\n", __func__,
+ (action == SANE_ACTION_GET_VALUE) ? "get" : (action == SANE_ACTION_SET_VALUE) ?
"set" : (action == SANE_ACTION_SET_AUTO) ? "set_auto" : "unknown",
s->opt[option].name, option);
@@ -7600,16 +7091,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (s->scanning)
{
- DBG (DBG_warn, "sane_control_option: don't call this function while "
- "scanning (option = %s (%d))\n", s->opt[option].name, option);
+ DBG(DBG_warn, "%s: don't call this function while scanning (option = %s (%d))\n", __func__,
+ s->opt[option].name, option);
return SANE_STATUS_DEVICE_BUSY;
}
if (option >= NUM_OPTIONS || option < 0)
{
- DBG (DBG_warn,
- "sane_control_option: option %d >= NUM_OPTIONS || option < 0\n",
- option);
+ DBG(DBG_warn, "%s: option %d >= NUM_OPTIONS || option < 0\n", __func__, option);
return SANE_STATUS_INVAL;
}
@@ -7617,7 +7106,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (!SANE_OPTION_IS_ACTIVE (cap))
{
- DBG (DBG_warn, "sane_control_option: option %d is inactive\n", option);
+ DBG(DBG_warn, "%s: option %d is inactive\n", __func__, option);
return SANE_STATUS_INVAL;
}
@@ -7630,17 +7119,15 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case SANE_ACTION_SET_VALUE:
if (!SANE_OPTION_IS_SETTABLE (cap))
{
- DBG (DBG_warn, "sane_control_option: option %d is not settable\n",
- option);
+ DBG(DBG_warn, "%s: option %d is not settable\n", __func__, option);
return SANE_STATUS_INVAL;
}
status = sanei_constrain_value (s->opt + option, val, &myinfo);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_warn,
- "sane_control_option: sanei_constrain_value returned %s\n",
- sane_strstatus (status));
+ DBG(DBG_warn, "%s: sanei_constrain_value returned %s\n", __func__,
+ sane_strstatus(status));
return status;
}
@@ -7648,14 +7135,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
break;
case SANE_ACTION_SET_AUTO:
- DBG (DBG_error,
- "sane_control_option: SANE_ACTION_SET_AUTO unsupported since no option has SANE_CAP_AUTOMATIC\n");
+ DBG(DBG_error,
+ "%s: SANE_ACTION_SET_AUTO unsupported since no option has SANE_CAP_AUTOMATIC\n",
+ __func__);
status = SANE_STATUS_INVAL;
break;
default:
- DBG (DBG_warn, "sane_control_option: unknown action %d for option %d\n",
- action, option);
+ DBG(DBG_warn, "%s: unknown action %d for option %d\n", __func__, action, option);
status = SANE_STATUS_INVAL;
break;
}
@@ -7663,17 +7150,23 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (info)
*info = myinfo;
- DBG (DBG_io2, "sane_control_option: exit\n");
+ DBG(DBG_io2, "%s: exit\n", __func__);
return status;
}
+SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option,
+ SANE_Action action, void *val, SANE_Int * info)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_control_option_impl(handle, option, action, val, info);
+ });
+}
-
-SANE_Status
-sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
+SANE_Status sane_get_parameters_impl(SANE_Handle handle, SANE_Parameters* params)
{
- Genesys_Scanner *s = handle;
- SANE_Status status;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
+ SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
@@ -7693,7 +7186,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
*/
if (s->dev->model->is_sheetfed == SANE_TRUE
&& s->dev->buffer_image == SANE_FALSE
- && s->val[OPT_BR_Y].w == s->opt[OPT_BR_Y].constraint.range->max)
+ && s->pos_bottom_right_y == s->opt[OPT_BR_Y].constraint.range->max)
{
params->lines = -1;
}
@@ -7704,24 +7197,29 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
return SANE_STATUS_GOOD;
}
-SANE_Status
-sane_start (SANE_Handle handle)
+SANE_Status sane_get_parameters(SANE_Handle handle, SANE_Parameters* params)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_get_parameters_impl(handle, params);
+ });
+}
+
+SANE_Status sane_start_impl(SANE_Handle handle)
{
- Genesys_Scanner *s = handle;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
SANE_Status status=SANE_STATUS_GOOD;
DBGSTART;
- if (s->val[OPT_TL_X].w >= s->val[OPT_BR_X].w)
+ if (s->pos_top_left_x >= s->pos_bottom_right_x)
{
- DBG (DBG_error0,
- "sane_start: top left x >= bottom right x --- exiting\n");
+ DBG(DBG_error0, "%s: top left x >= bottom right x --- exiting\n", __func__);
return SANE_STATUS_INVAL;
}
- if (s->val[OPT_TL_Y].w >= s->val[OPT_BR_Y].w)
+ if (s->pos_top_left_y >= s->pos_bottom_right_y)
{
- DBG (DBG_error0,
- "sane_start: top left y >= bottom right y --- exiting\n");
+ DBG(DBG_error0, "%s: top left y >= bottom right y --- exiting\n", __func__);
return SANE_STATUS_INVAL;
}
@@ -7729,17 +7227,17 @@ sane_start (SANE_Handle handle)
parameters will be overwritten below, but that's OK. */
RIE (calc_parameters (s));
- RIE (genesys_start_scan (s->dev, s->val[OPT_LAMP_OFF].w));
+ RIE(genesys_start_scan(s->dev, s->lamp_off));
s->scanning = SANE_TRUE;
/* allocate intermediate buffer when doing dynamic lineart */
if(s->dev->settings.dynamic_lineart==SANE_TRUE)
{
- RIE (sanei_genesys_buffer_free (&(s->dev->binarize_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(s->dev->binarize_buffer), s->dev->settings.pixels));
- RIE (sanei_genesys_buffer_free (&(s->dev->local_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(s->dev->local_buffer), s->dev->binarize_buffer.size * 8));
+ s->dev->binarize_buffer.clear();
+ s->dev->binarize_buffer.alloc(s->dev->settings.pixels);
+ s->dev->local_buffer.clear();
+ s->dev->local_buffer.alloc(s->dev->binarize_buffer.size() * 8);
}
/* if one of the software enhancement option is selected,
@@ -7752,44 +7250,37 @@ sane_start (SANE_Handle handle)
/* check if we need to skip this page, sheetfed scanners
* can go to next doc while flatbed ones can't */
- if (s->val[OPT_SWSKIP].w && IS_ACTIVE(OPT_SWSKIP))
- {
+ if (s->swskip > 0 && IS_ACTIVE(OPT_SWSKIP)) {
status = sanei_magic_isBlank(&s->params,
- s->dev->img_buffer,
- SANE_UNFIX(s->val[OPT_SWSKIP].w));
+ s->dev->img_buffer.data(),
+ SANE_UNFIX(s->swskip));
if(status == SANE_STATUS_NO_DOCS)
{
if (s->dev->model->is_sheetfed == SANE_TRUE)
{
- DBG (DBG_info, "sane_start: blank page, recurse\n");
+ DBG(DBG_info, "%s: blank page, recurse\n", __func__);
return sane_start(handle);
}
return status;
}
}
- /* deskew image if required */
- if(s->val[OPT_SWDESKEW].b == SANE_TRUE)
- {
- RIE(genesys_deskew(s));
+ if (s->swdeskew) {
+ const auto& sensor = sanei_genesys_find_sensor(s->dev, s->dev->settings.xres,
+ s->dev->settings.scan_method);
+ RIE(genesys_deskew(s, sensor));
}
- /* despeck image if required */
- if(s->val[OPT_SWDESPECK].b == SANE_TRUE)
- {
- RIE(genesys_despeck(s));
+ if (s->swdespeck) {
+ RIE(genesys_despeck(s));
}
- /* crop image if required */
- if(s->val[OPT_SWCROP].b == SANE_TRUE)
- {
- RIE(genesys_crop(s));
+ if(s->swcrop) {
+ RIE(genesys_crop(s));
}
- /* de-rotate image if required */
- if(s->val[OPT_SWDEROTATE].b == SANE_TRUE)
- {
- RIE(genesys_derotate(s));
+ if(s->swderotate) {
+ RIE(genesys_derotate(s));
}
}
@@ -7797,37 +7288,44 @@ sane_start (SANE_Handle handle)
return status;
}
+SANE_Status sane_start(SANE_Handle handle)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_start_impl(handle);
+ });
+}
+
SANE_Status
-sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
- SANE_Int * len)
+sane_read_impl(SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int* len)
{
- Genesys_Scanner *s = handle;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
Genesys_Device *dev;
SANE_Status status=SANE_STATUS_GOOD;
size_t local_len;
if (!s)
{
- DBG (DBG_error, "sane_read: handle is null!\n");
+ DBG(DBG_error, "%s: handle is null!\n", __func__);
return SANE_STATUS_INVAL;
}
dev=s->dev;
if (!dev)
{
- DBG (DBG_error, "sane_read: dev is null!\n");
+ DBG(DBG_error, "%s: dev is null!\n", __func__);
return SANE_STATUS_INVAL;
}
if (!buf)
{
- DBG (DBG_error, "sane_read: buf is null!\n");
+ DBG(DBG_error, "%s: buf is null!\n", __func__);
return SANE_STATUS_INVAL;
}
if (!len)
{
- DBG (DBG_error, "sane_read: len is null!\n");
+ DBG(DBG_error, "%s: len is null!\n", __func__);
return SANE_STATUS_INVAL;
}
@@ -7835,19 +7333,18 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
if (!s->scanning)
{
- DBG (DBG_warn, "sane_read: scan was cancelled, is over or has not been "
- "initiated yet\n");
+ DBG(DBG_warn, "%s: scan was cancelled, is over or has not been initiated yet\n", __func__);
return SANE_STATUS_CANCELLED;
}
- DBG (DBG_proc, "sane_read: start, %d maximum bytes required\n", max_len);
- DBG (DBG_io2, "sane_read: bytes_to_read=%lu, total_bytes_read=%lu\n",
- (u_long) dev->total_bytes_to_read, (u_long) dev->total_bytes_read);
- DBG (DBG_io2, "sane_read: physical bytes to read = %lu\n", (u_long) dev->read_bytes_left);
+ DBG(DBG_proc, "%s: start, %d maximum bytes required\n", __func__, max_len);
+ DBG(DBG_io2, "%s: bytes_to_read=%lu, total_bytes_read=%lu\n", __func__,
+ (u_long) dev->total_bytes_to_read, (u_long) dev->total_bytes_read);
+ DBG(DBG_io2, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
if(dev->total_bytes_read>=dev->total_bytes_to_read)
{
- DBG (DBG_proc, "sane_read: nothing more to scan: EOF\n");
+ DBG(DBG_proc, "%s: nothing more to scan: EOF\n", __func__);
/* issue park command immediatly in case scanner can handle it
* so we save time */
@@ -7872,39 +7369,40 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
if(dev->settings.dynamic_lineart==SANE_TRUE)
{
/* if buffer is empty, fill it with genesys_read_ordered_data */
- if(dev->binarize_buffer.avail==0)
+ if(dev->binarize_buffer.avail() == 0)
{
/* store gray data */
- local_len=dev->local_buffer.size;
- status = genesys_read_ordered_data (dev, dev->local_buffer.buffer, &local_len);
+ local_len=dev->local_buffer.size();
+ dev->local_buffer.reset();
+ status = genesys_read_ordered_data (dev, dev->local_buffer.get_write_pos(local_len),
+ &local_len);
+ dev->local_buffer.produce(local_len);
/* binarize data is read successful */
if(status==SANE_STATUS_GOOD)
{
- dev->local_buffer.avail=local_len;
- dev->local_buffer.pos=0;
- dev->binarize_buffer.avail=local_len/8;
- dev->binarize_buffer.pos=0;
+ dev->binarize_buffer.reset();
genesys_gray_lineart (dev,
- dev->local_buffer.buffer,
- dev->binarize_buffer.buffer,
+ dev->local_buffer.get_read_pos(),
+ dev->binarize_buffer.get_write_pos(local_len / 8),
dev->settings.pixels,
local_len/dev->settings.pixels,
dev->settings.threshold);
+ dev->binarize_buffer.produce(local_len / 8);
}
}
/* return data from lineart buffer if any, up to the available amount */
local_len = max_len;
- if((size_t)max_len>dev->binarize_buffer.avail)
+ if((size_t)max_len>dev->binarize_buffer.avail())
{
- local_len=dev->binarize_buffer.avail;
+ local_len=dev->binarize_buffer.avail();
}
if(local_len)
{
- memcpy(buf,sanei_genesys_buffer_get_read_pos (&(dev->binarize_buffer)),local_len);
- RIE (sanei_genesys_buffer_consume (&(dev->binarize_buffer), local_len));
+ memcpy(buf, dev->binarize_buffer.get_read_pos(), local_len);
+ dev->binarize_buffer.consume(local_len);
}
}
else
@@ -7919,7 +7417,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
{
local_len=dev->total_bytes_to_read-dev->total_bytes_read;
}
- memcpy(buf,dev->img_buffer+dev->total_bytes_read,local_len);
+ memcpy(buf, dev->img_buffer.data() + dev->total_bytes_read, local_len);
dev->total_bytes_read+=local_len;
}
@@ -7928,14 +7426,21 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
{
fprintf (stderr, "[genesys] sane_read: returning incorrect length!!\n");
}
- DBG (DBG_proc, "sane_read: %d bytes returned\n", *len);
+ DBG(DBG_proc, "%s: %d bytes returned\n", __func__, *len);
return status;
}
-void
-sane_cancel (SANE_Handle handle)
+SANE_Status sane_read(SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int* len)
{
- Genesys_Scanner *s = handle;
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_read_impl(handle, buf, max_len, len);
+ });
+}
+
+void sane_cancel_impl(SANE_Handle handle)
+{
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
@@ -7949,20 +7454,15 @@ sane_cancel (SANE_Handle handle)
s->scanning = SANE_FALSE;
s->dev->read_active = SANE_FALSE;
- if(s->dev->img_buffer!=NULL)
- {
- free(s->dev->img_buffer);
- s->dev->img_buffer=NULL;
- }
+ s->dev->img_buffer.clear();
/* no need to end scan if we are parking the head */
if(s->dev->parking==SANE_FALSE)
{
- status = s->dev->model->cmd_set->end_scan (s->dev, s->dev->reg, SANE_TRUE);
+ status = s->dev->model->cmd_set->end_scan(s->dev, &s->dev->reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sane_cancel: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return;
}
}
@@ -7975,9 +7475,8 @@ sane_cancel (SANE_Handle handle)
status = s->dev->model->cmd_set->slow_back_home (s->dev, s->dev->model->flags & GENESYS_FLAG_MUST_WAIT);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sane_cancel: failed to move scanhead to home position: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to move scanhead to home position: %s\n", __func__,
+ sane_strstatus(status));
return;
}
s->dev->parking = !(s->dev->model->flags & GENESYS_FLAG_MUST_WAIT);
@@ -7988,8 +7487,7 @@ sane_cancel (SANE_Handle handle)
status = s->dev->model->cmd_set->eject_document (s->dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sane_cancel: failed to eject document: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to eject document: %s\n", __func__, sane_strstatus(status));
return;
}
}
@@ -8000,8 +7498,8 @@ sane_cancel (SANE_Handle handle)
status = s->dev->model->cmd_set->save_power (s->dev, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sane_cancel: failed to enable power saving mode: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to enable power saving mode: %s\n", __func__,
+ sane_strstatus(status));
return;
}
}
@@ -8010,17 +7508,22 @@ sane_cancel (SANE_Handle handle)
return;
}
+void sane_cancel(SANE_Handle handle)
+{
+ catch_all_exceptions(__func__, [=]() { sane_cancel_impl(handle); });
+}
+
SANE_Status
-sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
+sane_set_io_mode_impl(SANE_Handle handle, SANE_Bool non_blocking)
{
- Genesys_Scanner *s = handle;
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
- DBG (DBG_proc, "sane_set_io_mode: handle = %p, non_blocking = %s\n",
- handle, non_blocking == SANE_TRUE ? "true" : "false");
+ DBG(DBG_proc, "%s: handle = %p, non_blocking = %s\n", __func__, handle,
+ non_blocking == SANE_TRUE ? "true" : "false");
if (!s->scanning)
{
- DBG (DBG_error, "sane_set_io_mode: not scanning\n");
+ DBG(DBG_error, "%s: not scanning\n", __func__);
return SANE_STATUS_INVAL;
}
if (non_blocking)
@@ -8029,19 +7532,49 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
}
SANE_Status
-sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
+sane_set_io_mode(SANE_Handle handle, SANE_Bool non_blocking)
{
- Genesys_Scanner *s = handle;
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_set_io_mode_impl(handle, non_blocking);
+ });
+}
- DBG (DBG_proc, "sane_get_select_fd: handle = %p, fd = %p\n", handle,
- (void *) fd);
+SANE_Status
+sane_get_select_fd_impl(SANE_Handle handle, SANE_Int * fd)
+{
+ Genesys_Scanner *s = (Genesys_Scanner*) handle;
+
+ DBG(DBG_proc, "%s: handle = %p, fd = %p\n", __func__, handle, (void *) fd);
if (!s->scanning)
{
- DBG (DBG_error, "sane_get_select_fd: not scanning\n");
+ DBG(DBG_error, "%s: not scanning\n", __func__);
return SANE_STATUS_INVAL;
}
return SANE_STATUS_UNSUPPORTED;
}
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
+SANE_Status
+sane_get_select_fd(SANE_Handle handle, SANE_Int * fd)
+{
+ return wrap_exceptions_to_status_code(__func__, [=]()
+ {
+ return sane_get_select_fd_impl(handle, fd);
+ });
+}
+
+GenesysButtonName genesys_option_to_button(int option)
+{
+ switch (option) {
+ case OPT_SCAN_SW: return BUTTON_SCAN_SW;
+ case OPT_FILE_SW: return BUTTON_FILE_SW;
+ case OPT_EMAIL_SW: return BUTTON_EMAIL_SW;
+ case OPT_COPY_SW: return BUTTON_COPY_SW;
+ case OPT_PAGE_LOADED_SW: return BUTTON_PAGE_LOADED_SW;
+ case OPT_OCR_SW: return BUTTON_OCR_SW;
+ case OPT_POWER_SW: return BUTTON_POWER_SW;
+ case OPT_EXTRA_SW: return BUTTON_EXTRA_SW;
+ default: throw std::runtime_error("Unknown option to convert to button index");
+ }
+}
diff --git a/backend/genesys.conf.in b/backend/genesys.conf.in
index 5273d51..b1a0861 100644
--- a/backend/genesys.conf.in
+++ b/backend/genesys.conf.in
@@ -69,6 +69,9 @@ usb 0x04a9 0x190f
# Canon 5600f
usb 0x04a9 0x1906
+# Canon 8600F
+usb 0x04a9 0x2229
+
# Visioneer Strobe XP200
usb 0x04a7 0x0426
diff --git a/backend/genesys.h b/backend/genesys.h
index eab92bb..47a684c 100644
--- a/backend/genesys.h
+++ b/backend/genesys.h
@@ -47,7 +47,12 @@
#ifndef GENESYS_H
#define GENESYS_H
+#ifndef BACKEND_NAME
+# define BACKEND_NAME genesys
+#endif
+
#include "genesys_low.h"
+#include <queue>
#ifndef PATH_MAX
# define PATH_MAX 1024
@@ -69,8 +74,9 @@
/* Maximum time for lamp warm-up */
#define WARMUP_TIME 65
-#define FLATBED "Flatbed"
-#define TRANSPARENCY_ADAPTER "Transparency Adapter"
+#define STR_FLATBED "Flatbed"
+#define STR_TRANSPARENCY_ADAPTER "Transparency Adapter"
+#define STR_TRANSPARENCY_ADAPTER_INFRARED "Transparency Adapter Infrared"
#ifndef SANE_I18N
#define SANE_I18N(text) text
@@ -135,31 +141,110 @@ enum Genesys_Option
OPT_BUTTON_GROUP,
OPT_CALIBRATE,
OPT_CLEAR_CALIBRATION,
+ OPT_FORCE_CALIBRATION,
/* must come last: */
NUM_OPTIONS
};
+enum GenesysButtonName : unsigned {
+ BUTTON_SCAN_SW = 0,
+ BUTTON_FILE_SW,
+ BUTTON_EMAIL_SW,
+ BUTTON_COPY_SW,
+ BUTTON_PAGE_LOADED_SW,
+ BUTTON_OCR_SW,
+ BUTTON_POWER_SW,
+ BUTTON_EXTRA_SW,
+ NUM_BUTTONS
+};
+
+GenesysButtonName genesys_option_to_button(int option);
+
+class GenesysButton {
+public:
+ void write(bool value)
+ {
+ if (value == value_) {
+ return;
+ }
+ values_to_read_.push(value);
+ value_ = value;
+ }
+
+ bool read()
+ {
+ if (values_to_read_.empty()) {
+ return value_;
+ }
+ bool ret = values_to_read_.front();
+ values_to_read_.pop();
+ return ret;
+ }
+
+private:
+ bool value_ = false;
+ std::queue<bool> values_to_read_;
+};
/** Scanner object. Should have better be called Session than Scanner
*/
-typedef struct Genesys_Scanner
+struct Genesys_Scanner
{
- struct Genesys_Scanner *next; /**< Next scanner in list */
- Genesys_Device *dev; /**< Low-level device object */
-
- /* SANE data */
- SANE_Bool scanning; /**< We are currently scanning */
- SANE_Option_Descriptor opt[NUM_OPTIONS]; /**< Option descriptors */
- Option_Value val[NUM_OPTIONS]; /**< Option values */
- Option_Value last_val[NUM_OPTIONS]; /**< Option values as read by the frontend. used for sensors. */
- SANE_Parameters params; /**< SANE Parameters */
- SANE_Int bpp_list[5]; /**< */
-} Genesys_Scanner;
-
-#ifdef UNIT_TESTING
-SANE_Status genesys_dark_white_shading_calibration (Genesys_Device * dev);
-char *calibration_filename(Genesys_Device *currdev);
-void add_device(Genesys_Device *dev);
-#endif
+ Genesys_Scanner() = default;
+ ~Genesys_Scanner() = default;
+
+ // Next scanner in list
+ struct Genesys_Scanner *next;
+
+ // Low-level device object
+ Genesys_Device* dev = nullptr;
+
+ // SANE data
+ // We are currently scanning
+ SANE_Bool scanning;
+ // Option descriptors
+ SANE_Option_Descriptor opt[NUM_OPTIONS];
+
+ // Option values
+ SANE_Word bit_depth = 0;
+ SANE_Word resolution = 0;
+ bool preview = false;
+ SANE_Word threshold = 0;
+ SANE_Word threshold_curve = 0;
+ bool disable_dynamic_lineart = false;
+ bool disable_interpolation = false;
+ bool lamp_off = false;
+ SANE_Word lamp_off_time = 0;
+ bool swdeskew = false;
+ bool swcrop = false;
+ bool swdespeck = false;
+ bool swderotate = false;
+ SANE_Word swskip = 0;
+ SANE_Word despeck = 0;
+ SANE_Word contrast = 0;
+ SANE_Word brightness = 0;
+ SANE_Word expiration_time = 0;
+ bool custom_gamma = false;
+
+ SANE_Word pos_top_left_y = 0;
+ SANE_Word pos_top_left_x = 0;
+ SANE_Word pos_bottom_right_y = 0;
+ SANE_Word pos_bottom_right_x = 0;
+
+ std::string mode, source, color_filter;
+
+ std::string calibration_file;
+ // Button states
+ GenesysButton buttons[NUM_BUTTONS];
+
+ // SANE Parameters
+ SANE_Parameters params = {};
+ SANE_Int bpp_list[5] = {};
+};
+
+void write_calibration(std::ostream& str, Genesys_Device::Calibration& cache);
+bool read_calibration(std::istream& str, Genesys_Device::Calibration& cache,
+ const std::string& path);
+
#endif /* not GENESYS_H */
diff --git a/backend/genesys_conv.c b/backend/genesys_conv.cc
index 61f466e..06fd4e0 100644
--- a/backend/genesys_conv.c
+++ b/backend/genesys_conv.cc
@@ -54,7 +54,7 @@
#define FUNC_NAME(f) f ## _8
-#include "genesys_conv_hlp.c"
+#include "genesys_conv_hlp.cc"
#undef FUNC_NAME
@@ -69,7 +69,7 @@
#define FUNC_NAME(f) f ## _16
-#include "genesys_conv_hlp.c"
+#include "genesys_conv_hlp.cc"
#undef FUNC_NAME
@@ -194,9 +194,9 @@ genesys_gray_lineart(
{
size_t y;
- DBG (DBG_io2, "genesys_gray_lineart: converting %lu lines of %lu pixels\n",
- (unsigned long)lines, (unsigned long)pixels);
- DBG (DBG_io2, "genesys_gray_lineart: threshold=%d\n",threshold);
+ DBG(DBG_io2, "%s: converting %lu lines of %lu pixels\n", __func__, (unsigned long)lines,
+ (unsigned long)pixels);
+ DBG(DBG_io2, "%s: threshold=%d\n", __func__, threshold);
for (y = 0; y < lines; y++)
{
@@ -325,7 +325,7 @@ genesys_shrink_lines_1 (
static SANE_Status
genesys_crop(Genesys_Scanner *s)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
Genesys_Device *dev = s->dev;
int top = 0;
int bottom = 0;
@@ -336,7 +336,7 @@ genesys_crop(Genesys_Scanner *s)
/* first find edges if any */
status = sanei_magic_findEdges (&s->params,
- dev->img_buffer,
+ dev->img_buffer.data(),
dev->settings.xres,
dev->settings.yres,
&top,
@@ -346,24 +346,23 @@ genesys_crop(Genesys_Scanner *s)
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_info, "%s: bad or no edges, bailing\n", __func__);
- goto cleanup;
+ return SANE_STATUS_GOOD;
}
DBG (DBG_io, "%s: t:%d b:%d l:%d r:%d\n", __func__, top, bottom, left,
right);
/* now crop the image */
status =
- sanei_magic_crop (&(s->params), dev->img_buffer, top, bottom, left, right);
+ sanei_magic_crop (&(s->params), dev->img_buffer.data(), top, bottom, left, right);
if (status)
{
DBG (DBG_warn, "%s: failed to crop\n", __func__);
- goto cleanup;
+ return SANE_STATUS_GOOD;
}
/* update counters to new image size */
dev->total_bytes_to_read = s->params.bytes_per_line * s->params.lines;
-cleanup:
DBG (DBG_proc, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -374,9 +373,9 @@ cleanup:
* SANE_STATUS_GOOD
*/
static SANE_Status
-genesys_deskew(Genesys_Scanner *s)
+genesys_deskew(Genesys_Scanner *s, const Genesys_Sensor& sensor)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
Genesys_Device *dev = s->dev;
int x = 0, y = 0, bg;
@@ -390,9 +389,9 @@ genesys_deskew(Genesys_Scanner *s)
bg=0xff;
}
status = sanei_magic_findSkew (&s->params,
- dev->img_buffer,
- dev->sensor.optical_res,
- dev->sensor.optical_res,
+ dev->img_buffer.data(),
+ sensor.optical_res,
+ sensor.optical_res,
&x,
&y,
&slope);
@@ -405,7 +404,7 @@ genesys_deskew(Genesys_Scanner *s)
/* rotate image slope is in [-PI/2,PI/2]
* positive values rotate trigonometric direction wise */
status = sanei_magic_rotate (&s->params,
- dev->img_buffer,
+ dev->img_buffer.data(),
x,
y,
slope,
@@ -427,8 +426,8 @@ static SANE_Status
genesys_despeck(Genesys_Scanner *s)
{
if(sanei_magic_despeck(&s->params,
- s->dev->img_buffer,
- s->val[OPT_DESPECK].w)!=SANE_STATUS_GOOD)
+ s->dev->img_buffer.data(),
+ s->despeck)!=SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: bad despeck, bailing\n",__func__);
}
@@ -441,15 +440,14 @@ genesys_despeck(Genesys_Scanner *s)
static SANE_Status
genesys_derotate (Genesys_Scanner * s)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int angle = 0;
- int resolution = s->val[OPT_RESOLUTION].w;
DBGSTART;
status = sanei_magic_findTurn (&s->params,
- s->dev->img_buffer,
- resolution,
- resolution,
+ s->dev->img_buffer.data(),
+ s->resolution,
+ s->resolution,
&angle);
if (status)
@@ -460,7 +458,7 @@ genesys_derotate (Genesys_Scanner * s)
}
/* apply rotation angle found */
- status = sanei_magic_turn (&s->params, s->dev->img_buffer, angle);
+ status = sanei_magic_turn (&s->params, s->dev->img_buffer.data(), angle);
if (status)
{
DBG (DBG_warn, "%s: failed : %d\n", __func__, status);
@@ -474,5 +472,3 @@ genesys_derotate (Genesys_Scanner * s)
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_conv_hlp.c b/backend/genesys_conv_hlp.cc
index 7663a87..7663a87 100644
--- a/backend/genesys_conv_hlp.c
+++ b/backend/genesys_conv_hlp.cc
diff --git a/backend/genesys_devices.c b/backend/genesys_devices.cc
index 11f2579..b4ae5ca 100644
--- a/backend/genesys_devices.c
+++ b/backend/genesys_devices.cc
@@ -8,7 +8,7 @@
Copyright (C) 2007 Luke <iceyfor@gmail.com>
Copyright (C) 2010 Jack McGill <jmcgill85258@yahoo.com>
Copyright (C) 2010 Andrey Loginov <avloginov@gmail.com>,
- xerox travelscan device entry
+ xerox travelscan device entry
Copyright (C) 2010 Chris Berry <s0457957@sms.ed.ac.uk> and Michael Rickmann <mrickma@gwdg.de>
for Plustek Opticbook 3600 support
@@ -55,191 +55,532 @@
/* Some setup DAC and CCD tables */
/* ------------------------------------------------------------------------ */
-/** Setup table for various scanners using a Wolfson DAC
- */
-static Genesys_Frontend Wolfson[] = {
- { DAC_WOLFSON_UMAX, {0x00, 0x03, 0x05, 0x11}
- , {0x00, 0x00, 0x00}
- , {0x80, 0x80, 0x80}
- , {0x02, 0x02, 0x02}
- , {0x00, 0x00, 0x00}
- }
- , /* 0: UMAX */
- {DAC_WOLFSON_ST12, {0x00, 0x03, 0x05, 0x03}
- , {0x00, 0x00, 0x00}
- , {0xc8, 0xc8, 0xc8}
- , {0x04, 0x04, 0x04}
- , {0x00, 0x00, 0x00}
- }
- , /* 1: ST12 */
- {DAC_WOLFSON_ST24,{0x00, 0x03, 0x05, 0x21}
- , {0x00, 0x00, 0x00}
- , {0xc8, 0xc8, 0xc8}
- , {0x06, 0x06, 0x06}
- , {0x00, 0x00, 0x00}
- }
- , /* 2: ST24 */
- {DAC_WOLFSON_5345,{0x00, 0x03, 0x05, 0x12}
- , {0x00, 0x00, 0x00}
- , {0xb8, 0xb8, 0xb8}
- , {0x04, 0x04, 0x04}
- , {0x00, 0x00, 0x00}
- }
- , /* 3: MD6228/MD6471 */
- {DAC_WOLFSON_HP2400,
- /* reg0 reg1 reg2 reg3 */
- {0x00, 0x03, 0x05, 0x02} /* reg3=0x02 for 50-600 dpi, 0x32 (0x12 also works well) at 1200 */
- , {0x00, 0x00, 0x00}
- , {0xb4, 0xb6, 0xbc}
- , {0x06, 0x09, 0x08}
- , {0x00, 0x00, 0x00}
- }
- , /* 4: HP2400c */
- {DAC_WOLFSON_HP2300,
- {0x00, 0x03, 0x04, 0x02}
- , {0x00, 0x00, 0x00}
- , {0xbe, 0xbe, 0xbe}
- , {0x04, 0x04, 0x04}
- , {0x00, 0x00, 0x00}
- }
- , /* 5: HP2300c */
- {DAC_CANONLIDE35,{0x00, 0x3d, 0x08, 0x00}
- , {0x00, 0x00, 0x00}
- , {0xe1, 0xe1, 0xe1}
- , {0x93, 0x93, 0x93}
- , {0x00, 0x19, 0x06}
- }
- , /* 6: CANONLIDE35 */
- {DAC_AD_XP200,
- {0x58, 0x80, 0x00, 0x00} /* reg1=0x80 ? */
- , {0x00, 0x00, 0x00}
- , {0x09, 0x09, 0x09}
- , {0x09, 0x09, 0x09}
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_WOLFSON_XP300,{0x00, 0x35, 0x20, 0x14} /* 7: XP300 */
- , {0x00, 0x00, 0x00}
- , {0xe1, 0xe1, 0xe1}
- , {0x93, 0x93, 0x93}
- , {0x07, 0x00, 0x00}
- }
- , /* 8: HP3670 */
- {DAC_WOLFSON_HP3670,
- /* reg0 reg1 reg2 reg3 */
- {0x00, 0x03, 0x05, 0x32} /* reg3=0x32 for 100-300 dpi, 0x12 at 1200 */
- , {0x00, 0x00, 0x00} /* sign */
- , {0xba, 0xb8, 0xb8} /* offset */
- , {0x06, 0x05, 0x04} /* gain 4,3,2 at 1200 ?*/
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_WOLFSON_DSM600,{0x00, 0x35, 0x20, 0x14} /* 9: DSMOBILE600 */
- , {0x00, 0x00, 0x00}
- , {0x85, 0x85, 0x85}
- , {0xa0, 0xa0, 0xa0}
- , {0x07, 0x00, 0x00}
- }
- ,
- {DAC_CANONLIDE200,
- {0x9d, 0x91, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x3f, 0x00} /* 0x00 0x3f 0x00 : offset/brigthness ? */
- , {0x32, 0x04, 0x00}
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_CANONLIDE700,
- {0x9d, 0x9e, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x3f, 0x00} /* 0x00 0x3f 0x00 : offset/brigthness ? */
- , {0x2f, 0x04, 0x00}
- , {0x00, 0x00, 0x00}
- }
- , /* KV-SS080 */
- {DAC_KVSS080,
- {0x00, 0x23, 0x24, 0x0f}
- , {0x00, 0x00, 0x00}
- , {0x80, 0x80, 0x80}
- , {0x4b, 0x4b, 0x4b}
- , {0x00,0x00,0x00}
- }
- ,
- {DAC_G4050,
- {0x00, 0x23, 0x24, 0x1f}
- , {0x00, 0x00, 0x00}
- , {0x45, 0x45, 0x45} /* 0x20, 0x21, 0x22 */
- , {0x4b, 0x4b, 0x4b} /* 0x28, 0x29, 0x2a */
- , {0x00,0x00,0x00}
- }
- ,
- {DAC_CANONLIDE110,
- {0x80, 0x8a, 0x23, 0x4c}
- , {0x00, 0xca, 0x94}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- }
- ,
- /** @brief GL124 special case
- * for GL124 based scanners, this struct is "abused"
- * in fact the fields are map like below to AFE registers
- * (from Texas Instrument or alike ?)
- */
- {DAC_CANONLIDE120,
- {0x80,
- /* 0001 0002 0003 */
- 0xa3, 0x2b, 0x4c}
- /* 0005 0006 0007 */
- , {0x00, 0xca, 0x95}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_PLUSTEK_3600,
- {0x70, 0x80, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x3f, 0x3d, 0x3d}
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_CS8400F,
- {0x00, 0x23, 0x24, 0x0f}
- , {0x00, 0x00, 0x00}
- , {0x60, 0x5c, 0x6c} /* 0x20, 0x21, 0x22 */
- , {0x8a, 0x9f, 0xc2} /* 0x28, 0x29, 0x2a */
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_IMG101,
- {0x78, 0xf0, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00} /* 0x20, 0x21, 0x22 */
- , {0x00, 0x00, 0x00} /* 0x28, 0x29, 0x2a */
- , {0x00, 0x00, 0x00}
- }
- ,
- {DAC_PLUSTEK3800,
- {0x78, 0xf0, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00} /* 0x20, 0x21, 0x22 */
- , {0x00, 0x00, 0x00} /* 0x28, 0x29, 0x2a */
- , {0x00, 0x00, 0x00}
- },
- {DAC_CANONLIDE80,
- /* reg0: control 74 data, 70 no data
- * reg3: offset
- * reg6: gain
- * reg0 , reg3, reg6 */
- {0x70, 0x16, 0x60, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- , {0x00, 0x00, 0x00}
- }
-};
+#include "genesys_low.h"
+
+StaticInit<std::vector<Genesys_Frontend>> s_frontends;
+
+void genesys_init_frontend_tables()
+{
+ s_frontends.init();
+
+ GenesysFrontendLayout wolfson_layout;
+ wolfson_layout.offset_addr = { 0x20, 0x21, 0x22 };
+ wolfson_layout.gain_addr = { 0x28, 0x29, 0x2a };
+
+ Genesys_Frontend fe;
+ fe.fe_id = DAC_WOLFSON_UMAX;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x11 },
+ { 0x20, 0x80 },
+ { 0x21, 0x80 },
+ { 0x22, 0x80 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x02 },
+ { 0x29, 0x02 },
+ { 0x2a, 0x02 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_ST12;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x03 },
+ { 0x20, 0xc8 },
+ { 0x21, 0xc8 },
+ { 0x22, 0xc8 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x04 },
+ { 0x29, 0x04 },
+ { 0x2a, 0x04 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_ST24;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x21 },
+ { 0x20, 0xc8 },
+ { 0x21, 0xc8 },
+ { 0x22, 0xc8 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x06 },
+ { 0x29, 0x06 },
+ { 0x2a, 0x06 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_5345;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x12 },
+ { 0x20, 0xb8 },
+ { 0x21, 0xb8 },
+ { 0x22, 0xb8 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x04 },
+ { 0x29, 0x04 },
+ { 0x2a, 0x04 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ // reg3=0x02 for 50-600 dpi, 0x32 (0x12 also works well) at 1200
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_HP2400;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x02 },
+ { 0x20, 0xb4 },
+ { 0x21, 0xb6 },
+ { 0x22, 0xbc },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x06 },
+ { 0x29, 0x09 },
+ { 0x2a, 0x08 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_HP2300;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x04 },
+ { 0x03, 0x02 },
+ { 0x20, 0xbe },
+ { 0x21, 0xbe },
+ { 0x22, 0xbe },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x04 },
+ { 0x29, 0x04 },
+ { 0x2a, 0x04 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE35;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x3d },
+ { 0x02, 0x08 },
+ { 0x03, 0x00 },
+ { 0x20, 0xe1 },
+ { 0x21, 0xe1 },
+ { 0x22, 0xe1 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x93 },
+ { 0x29, 0x93 },
+ { 0x2a, 0x93 },
+ };
+ fe.reg2 = {0x00, 0x19, 0x06};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_AD_XP200;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x58 },
+ { 0x01, 0x80 },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x09 },
+ { 0x21, 0x09 },
+ { 0x22, 0x09 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x09 },
+ { 0x29, 0x09 },
+ { 0x2a, 0x09 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_XP300;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x35 },
+ { 0x02, 0x20 },
+ { 0x03, 0x14 },
+ { 0x20, 0xe1 },
+ { 0x21, 0xe1 },
+ { 0x22, 0xe1 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x93 },
+ { 0x29, 0x93 },
+ { 0x2a, 0x93 },
+ };
+ fe.reg2 = {0x07, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_HP3670;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x32 },
+ { 0x20, 0xba },
+ { 0x21, 0xb8 },
+ { 0x22, 0xb8 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x06 },
+ { 0x29, 0x05 },
+ { 0x2a, 0x04 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_WOLFSON_DSM600;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x35 },
+ { 0x02, 0x20 },
+ { 0x03, 0x14 },
+ { 0x20, 0x85 },
+ { 0x21, 0x85 },
+ { 0x22, 0x85 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0xa0 },
+ { 0x29, 0xa0 },
+ { 0x2a, 0xa0 },
+ };
+ fe.reg2 = {0x07, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE200;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x9d },
+ { 0x01, 0x91 },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x3f },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x32 },
+ { 0x29, 0x04 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE700;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x9d },
+ { 0x01, 0x9e },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x3f },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x2f },
+ { 0x29, 0x04 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_KVSS080;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x23 },
+ { 0x02, 0x24 },
+ { 0x03, 0x0f },
+ { 0x20, 0x80 },
+ { 0x21, 0x80 },
+ { 0x22, 0x80 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x4b },
+ { 0x29, 0x4b },
+ { 0x2a, 0x4b },
+ };
+ fe.reg2 = {0x00,0x00,0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_G4050;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x23 },
+ { 0x02, 0x24 },
+ { 0x03, 0x1f },
+ { 0x20, 0x45 },
+ { 0x21, 0x45 },
+ { 0x22, 0x45 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x4b },
+ { 0x29, 0x4b },
+ { 0x2a, 0x4b },
+ };
+ fe.reg2 = {0x00,0x00,0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE110;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x80 },
+ { 0x01, 0x8a },
+ { 0x02, 0x23 },
+ { 0x03, 0x4c },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0xca },
+ { 0x26, 0x94 },
+ { 0x28, 0x00 },
+ { 0x29, 0x00 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+ /** @brief GL124 special case
+ * for GL124 based scanners, this struct is "abused"
+ * in fact the fields are map like below to AFE registers
+ * (from Texas Instrument or alike ?)
+ */
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE120;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x80 },
+ { 0x01, 0xa3 },
+ { 0x02, 0x2b },
+ { 0x03, 0x4c },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 }, // actual address 0x05
+ { 0x25, 0xca }, // actual address 0x06
+ { 0x26, 0x95 }, // actual address 0x07
+ { 0x28, 0x00 },
+ { 0x29, 0x00 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_PLUSTEK_3600;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x70 },
+ { 0x01, 0x80 },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x3f },
+ { 0x29, 0x3d },
+ { 0x2a, 0x3d },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CS8400F;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x23 },
+ { 0x02, 0x24 },
+ { 0x03, 0x0f },
+ { 0x20, 0x60 },
+ { 0x21, 0x5c },
+ { 0x22, 0x6c },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x8a },
+ { 0x29, 0x9f },
+ { 0x2a, 0xc2 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CS8600F;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x23 },
+ { 0x02, 0x24 },
+ { 0x03, 0x2f },
+ { 0x20, 0x67 },
+ { 0x21, 0x69 },
+ { 0x22, 0x68 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0xdb },
+ { 0x29, 0xda },
+ { 0x2a, 0xd7 },
+ };
+ fe.reg2 = { 0x00, 0x00, 0x00 };
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_IMG101;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x78 },
+ { 0x01, 0xf0 },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x00 },
+ { 0x29, 0x00 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_PLUSTEK3800;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x78 },
+ { 0x01, 0xf0 },
+ { 0x02, 0x00 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x00 },
+ { 0x29, 0x00 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+
+
+ /* reg0: control 74 data, 70 no data
+ * reg3: offset
+ * reg6: gain
+ * reg0 , reg3, reg6 */
+ fe = Genesys_Frontend();
+ fe.fe_id = DAC_CANONLIDE80;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x70 },
+ { 0x01, 0x16 },
+ { 0x02, 0x60 },
+ { 0x03, 0x00 },
+ { 0x20, 0x00 },
+ { 0x21, 0x00 },
+ { 0x22, 0x00 },
+ { 0x24, 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x00 },
+ { 0x29, 0x00 },
+ { 0x2a, 0x00 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ s_frontends->push_back(fe);
+}
/** for setting up the sensor-specific settings:
@@ -247,601 +588,1567 @@ static Genesys_Frontend Wolfson[] = {
* CCD_start_xoffset, and overall number of sensor pixels
* registers 0x08-0x0b, 0x10-0x1d and 0x52-0x5e
*/
-static Genesys_Sensor Sensor[] = {
- /* 0: UMAX */
- {CCD_UMAX,
- 1200, 48, 64, 0, 10800, 210, 230,
- {0x01, 0x03, 0x05, 0x07}
- ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x05, 0x31, 0x2a, 0x00, 0x00,
- 0x00, 0x02}
- ,
- {0x13, 0x17, 0x03, 0x07, 0x0b, 0x0f, 0x23, 0x00, 0xc1, 0x00, 0x00, 0x00,
- 0x00}
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}}
- ,
- /* 1: Plustek OpticPro S12/ST12 */
- {CCD_ST12,
- 600, 48, 85, 152, 5416, 210, 230,
- {0x02, 0x00, 0x06, 0x04} ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x08, 0x20, 0x2a, 0x00, 0x00, 0x0c, 0x03} ,
- {0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* 2: Plustek OpticPro S24/ST24 */
- {CCD_ST24,
- 1200,
- 48, 64, 0, 10800, 210, 230,
- {0x0e, 0x0c, 0x00, 0x0c} ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x08, 0x31, 0x2a, 0x00, 0x00, 0x00, 0x02} ,
- {0x17, 0x03, 0x07, 0x0b, 0x0f, 0x13, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* 3: MD6471 */
- {CCD_5345,
- 1200,
- 48,
- 16, 0, 10872,
- 190, 190,
- {0x0d, 0x0f, 0x11, 0x13} ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0a, 0x30, 0x2a, 0x00, 0x00, 0x00, 0x03} ,
- {0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x23, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00} ,
- {2.38, 2.35, 2.34},
- {NULL, NULL, NULL}
- }
- ,
- /* 4: HP2400c */
- {CCD_HP2400,
- 1200,
- 48,
- 15, 0, 10872, 210, 200,
- {0x14, 0x15, 0x00, 0x00} /* registers 0x08-0x0b */ ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x08, 0x3f, 0x2a, 0x00, 0x00, 0x00, 0x02} ,
- {0x0b, 0x0f, 0x13, 0x17, 0x03, 0x07, 0x63, 0x00, 0xc1, 0x00, 0x0e, 0x00, 0x00} ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}
- }
- ,
- /* 5: HP2300c */
- {CCD_HP2300,
- 600,
- 48,
- 20, 0, 5368, 180, 180, /* 5376 */
- {0x16, 0x00, 0x01, 0x03} ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x0a, 0x20, 0x2a, 0x6a, 0x8a, 0x00, 0x05} ,
- {0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x00, 0xc1, 0x06, 0x0b, 0x10, 0x16} ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}
- }
- ,
- /* CANOLIDE35 */
- {CCD_CANONLIDE35,
- 1200,
- 87, /* (black) */
- 87, /* (dummy) */
- 0, /* (startxoffset) */
- 10400, /* sensor_pixels */
- 0,
- 0,
- {0x00, 0x00, 0x00, 0x00},
- {0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x02, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x02 /* TODO(these do no harm, but may be neccessery for CCD) */
- },
- {0x05, 0x07,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x3a, 0x03,
- 0x40, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x00 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* 7: Strobe XP200 */
- {CIS_XP200, 600,
- 5,
- 38, 0, 5200, 200, 200, /* 5125 */
- {0x16, 0x00, 0x01, 0x03} ,
- {0x14, 0x50, 0x0c, 0x80, 0x0a, 0x28, 0xb7, 0x0a, 0x20, 0x2a, 0x6a, 0x8a, 0x00, 0x05} ,
- {0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x00, 0xc1, 0x06, 0x0b, 0x10, 0x16} ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}
- }
- ,
- /* HP3670 */
- {CCD_HP3670,1200,
- 48,
- 16, 0, 10872,
- 210, 200,
- {0x00, 0x0a, 0x0b, 0x0d} ,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x07, 0x20, 0x2a, 0x00, 0x00, 0xc0, 0x43} ,
- {0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x00, 0x15, 0x05, 0x0a, 0x0f, 0x00},
- {1.00, 1.00, 1.00},
- {NULL, NULL, NULL}
- }
- ,
- /* Syscan DP 665 */
- {CCD_DP665, 600,
- 27, /*(black) */
- 27, /* (dummy) */
- 0, /* (startxoffset) */
- 2496, /*sensor_pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- {0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x02, 0x04, 0x50,
- 0x10, 0x00, 0x20, 0x02
- },
- {0x04, 0x05,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x54, 0x03,
- 0x00, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x01 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* Visioneer Roadwarrior */
- {CCD_ROADWARRIOR, 600,
- 27, /*(black) */
- 27, /* (dummy) */
- 0, /* (startxoffset) */
- 5200, /*sensor_pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- {0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x02, 0x04, 0x50,
- 0x10, 0x00, 0x20, 0x02
- },
- {0x04, 0x05,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x54, 0x03,
- 0x00, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x01 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
-,
- /* Pentax DS Mobile 600 */
- {CCD_DSMOBILE600, 600,
- 28, /*(black) */
- 28, /* (dummy) */
- 0, /* (startxoffset) */
- 5200, /*sensor_pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- {0x15, 0x44, 0x15, 0x44, 0x15, 0x44, 0x00, 0x02, 0x04, 0x50,
- 0x10, 0x00, 0x20, 0x02
- },
- {0x04, 0x05,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x54, 0x03,
- 0x00, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x01 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* 13: Strobe XP300 */
- {CCD_XP300, 600,
- 27, /*(black) */
- 27, /* (dummy) */
- 0, /* (startxoffset) */
- 10240, /*sensor_pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- {0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x02, 0x04, 0x50,
- 0x10, 0x00, 0x20, 0x02
- },
- {0x04, 0x05,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x54, 0x03,
- 0x00, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x01 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* 13: Strobe XP300 */
- {CCD_DP685, 600,
- 27, /*(black) */
- 27, /* (dummy) */
- 0, /* (startxoffset) */
- 5020, /*sensor_pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- {0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x02, 0x04, 0x50,
- 0x10, 0x00, 0x20, 0x02
- },
- {0x04, 0x05,
- 0x00, 0x00, 0x00, 0x00, /*[GB](HI|LOW) not needed for cis */
- 0x54, 0x03,
- 0x00, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x01 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* CANONLIDE200 */
- {CIS_CANONLIDE200,
- 4800, /* optical resolution */
- 87*4, /* black pixels */
- 16*4, /* dummy pixels */
- 320*8, /* CCD_startx_offset 323 */
- 5136*8,
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x1d */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* EXPR/EXPG/EXPB */
- 0x10, 0x08, 0x00, 0xff, 0x34, 0x00, 0x02, 0x04 },
- /* reg 0x52 - 0x5e */
- {0x03, 0x07,
- 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0xe1,
- 0x55,
- 0x00, 0x00, 0x00,
- 0x41
- }
- ,
- {1.7, 1.7, 1.7},
- {NULL, NULL, NULL}
- }
- ,
- /* CANONLIDE700 */
- {CIS_CANONLIDE700,
- 4800, /* optical resolution */
- 73*8, /* black pixels 73 at 600 dpi */
- 16*8, /* dummy pixels */
- 384*8, /* CCD_startx_offset 384 at 600 dpi */
- 5188*8, /* 8x5570 segments , 5187+1 for rounding */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x1d */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* EXPR/EXPG/EXPB */
- 0x10, 0x08, 0x00, 0xff, 0x34, 0x00, 0x02, 0x04 },
- /* reg 0x52 - 0x5e */
- {0x07, 0x03,
- 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0xe1,
- 0x55,
- 0x00, 0x00, 0x00,
- 0x41
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* CANONLIDE100 */
- {CIS_CANONLIDE100,
- 2400, /* optical resolution */
- 87*4, /* black pixels */
- 16*4, /* dummy pixels 16 */
- 320*4, /* 323 */
- 5136*4, /* 10272 */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x15 */
- {0x01, 0xc1, 0x01, 0x26, 0x00, 0xe5, /* EXPR/EXPG/EXPB */
- /* reg 0x16 - 0x1d 0x19=0x50*/
- 0x10, 0x08, 0x00, 0x50, 0x34, 0x00, 0x02, 0x04 },
- /* reg 0x52 - 0x5e */
- {0x03, 0x07,
- 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0xe1,
- 0x55,
- 0x00, 0x00, 0x00,
- 0x41
- }
- ,
- {1.7, 1.7, 1.7},
- {NULL, NULL, NULL}
- }
- ,
- {CCD_KVSS080,
- 600,
- 38, /* black pixels on left */
- 38, /* 36 dummy pixels */
- 152,
- 5376, /* 5100-> 5200 */
- 160, /* TAU white ref */
- 160, /* gain white ref */
- /* 08 09 0a 0b */
- {0x00, 0x00, 0x00, 0x6a} ,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1c, 0x00, 0x2a, 0x2c, 0x00, 0x20, 0x04} , /* 18=00 at 600 dpi */
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0c, 0x0f, 0x00, 0x03, 0x06, 0x09, 0x6b, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x23} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- {CCD_G4050,
- 4800,
- 50*8, /* black_pixels */
- 58, /* 31 at 600 dpi dummy_pixels 58 at 1200 */
- 152,
- 5360*8, /* 5360 max at 600 dpi */
- 160,
- 160,
- /* 08 09 0a 0b */
- {0x00, 0x00, 0x18, 0x69} ,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x33, 0x0c, 0x00, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0b, 0x0e, 0x11, 0x02, 0x05, 0x08, 0x63, 0x00, 0x40, 0x00, 0x00, 0x00, 0x6f} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- {CCD_CS4400F,
- 4800,
- 50*8, /* black_pixels */
- 20, /* 31 at 600 dpi dummy_pixels 58 at 1200 */
- 152,
- 5360*8, /* 5360 max at 600 dpi */
- 160,
- 160,
- /* 08 09 0a 0b */
- {0x00, 0x00, 0x18, 0x69} ,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x9c, 0x40, 0x9c, 0x40, 0x9c, 0x40, 0x13, 0x0a, 0x10, 0x2a, 0x30, 0x00, 0x00, 0x6b},
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0a, 0x0d, 0x00, 0x03, 0x06, 0x08, 0x5b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f},
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- {CCD_CS8400F,
- 4800,
- 50*8, /* black_pixels */
- 20, /* 31 at 600 dpi dummy_pixels 58 at 1200 */
- 152,
- 5360*8, /* 5360 max at 600 dpi */
- 160,
- 160,
- /* 08 09 0a 0b */
- {0x00, 0x00, 0x18, 0x69} ,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x9c, 0x40, 0x9c, 0x40, 0x9c, 0x40, 0x13, 0x0a, 0x10, 0x2a, 0x30, 0x00, 0x00, 0x6b},
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0a, 0x0d, 0x00, 0x03, 0x06, 0x08, 0x5b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f},
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
- /* HP N6310 */
- {CCD_HP_N6310,
- 2400,
- 96,
- 26,
- 128,
- 42720,
- 210,
- 230,
- /* 08 09 0a 0b */
- {0x00, 0x10, 0x10, 0x0c} ,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x02, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0b, 0x0e, 0x11, 0x02, 0x05, 0x08, 0x63, 0x00, 0x40, 0x00, 0x00, 0x06, 0x6f} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}
- }
- ,
+StaticInit<std::vector<Genesys_Sensor>> s_sensors;
+
+void genesys_init_sensor_tables()
+{
+ s_sensors.init();
+
+ Genesys_Sensor sensor;
+ sensor.sensor_id = CCD_UMAX;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 64;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10800;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x01 },
+ { 0x09, 0x03 },
+ { 0x0a, 0x05 },
+ { 0x0b, 0x07 },
+ { 0x16, 0x33 },
+ { 0x17, 0x05 },
+ { 0x18, 0x31 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x13 },
+ { 0x53, 0x17 },
+ { 0x54, 0x03 },
+ { 0x55, 0x07 },
+ { 0x56, 0x0b },
+ { 0x57, 0x0f },
+ { 0x58, 0x23 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_ST12;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 85;
+ sensor.CCD_start_xoffset = 152;
+ sensor.sensor_pixels = 5416;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x02 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x06 },
+ { 0x0b, 0x04 },
+ { 0x16, 0x2b },
+ { 0x17, 0x08 },
+ { 0x18, 0x20 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x0c },
+ { 0x1d, 0x03 },
+ { 0x52, 0x0f },
+ { 0x53, 0x13 },
+ { 0x54, 0x17 },
+ { 0x55, 0x03 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0b },
+ { 0x58, 0x83 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_ST24;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 64;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10800;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x0e },
+ { 0x09, 0x0c },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x0c },
+ { 0x16, 0x33 },
+ { 0x17, 0x08 },
+ { 0x18, 0x31 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x17 },
+ { 0x53, 0x03 },
+ { 0x54, 0x07 },
+ { 0x55, 0x0b },
+ { 0x56, 0x0f },
+ { 0x57, 0x13 },
+ { 0x58, 0x03 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_5345;
+ sensor.optical_res = 1200;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10872;
+ sensor.fau_gain_white_ref = 190;
+ sensor.gain_white_ref = 190;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x0d },
+ { 0x09, 0x0f },
+ { 0x0a, 0x11 },
+ { 0x0b, 0x13 },
+ { 0x16, 0x0b },
+ { 0x17, 0x0a },
+ { 0x18, 0x30 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x03 },
+ { 0x52, 0x0f },
+ { 0x53, 0x13 },
+ { 0x54, 0x17 },
+ { 0x55, 0x03 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0b },
+ { 0x58, 0x23 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {2.38, 2.35, 2.34};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_HP2400;
+ sensor.optical_res = 1200,
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 15;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10872;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x14 },
+ { 0x09, 0x15 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0xbf },
+ { 0x17, 0x08 },
+ { 0x18, 0x3f },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x0b },
+ { 0x53, 0x0f },
+ { 0x54, 0x13 },
+ { 0x55, 0x17 },
+ { 0x56, 0x03 },
+ { 0x57, 0x07 },
+ { 0x58, 0x63 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x0e },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_HP2300;
+ sensor.optical_res = 600;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 20;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 5368;
+ sensor.fau_gain_white_ref = 180;
+ sensor.gain_white_ref = 180;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x16 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x01 },
+ { 0x0b, 0x03 },
+ { 0x16, 0xb7 },
+ { 0x17, 0x0a },
+ { 0x18, 0x20 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x6a },
+ { 0x1b, 0x8a },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x05 },
+ { 0x52, 0x0f },
+ { 0x53, 0x13 },
+ { 0x54, 0x17 },
+ { 0x55, 0x03 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0b },
+ { 0x58, 0x83 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x06 },
+ { 0x5c, 0x0b },
+ { 0x5d, 0x10 },
+ { 0x5e, 0x16 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_CANONLIDE35;
+ sensor.optical_res = 1200;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 87;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10400;
+ sensor.fau_gain_white_ref = 0;
+ sensor.gain_white_ref = 0;
+ sensor.exposure = { 0x0400, 0x0400, 0x0400 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x00 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x00 }, // TODO: 1a-1d: these do no harm, but may be neccessery for CCD
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x05 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x07 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x3a },
+ { 0x59, 0x03 },
+ { 0x5a, 0x40 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_XP200;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 5;
+ sensor.dummy_pixel = 38;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 5200;
+ sensor.fau_gain_white_ref = 200;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1450, 0x0c80, 0x0a28 };
+ sensor.custom_regs = {
+ { 0x08, 0x16 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x01 },
+ { 0x0b, 0x03 },
+ { 0x16, 0xb7 },
+ { 0x17, 0x0a },
+ { 0x18, 0x20 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x6a },
+ { 0x1b, 0x8a },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x05 },
+ { 0x52, 0x0f },
+ { 0x53, 0x13 },
+ { 0x54, 0x17 },
+ { 0x55, 0x03 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0b },
+ { 0x58, 0x83 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x06 },
+ { 0x5c, 0x0b },
+ { 0x5d, 0x10 },
+ { 0x5e, 0x16 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_HP3670;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10872;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x0a },
+ { 0x0a, 0x0b },
+ { 0x0b, 0x0d },
+ { 0x16, 0x33 },
+ { 0x17, 0x07 },
+ { 0x18, 0x20 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0xc0 },
+ { 0x1d, 0x43 },
+ { 0x52, 0x0f },
+ { 0x53, 0x13 },
+ { 0x54, 0x17 },
+ { 0x55, 0x03 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0b },
+ { 0x58, 0x83 },
+ { 0x59, 0x00 },
+ { 0x5a, 0x15 },
+ { 0x5b, 0x05 },
+ { 0x5c, 0x0a },
+ { 0x5d, 0x0f },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_DP665;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 27;
+ sensor.dummy_pixel = 27;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 2496;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1100, 0x1100, 0x1100 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x04 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x10 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x04 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x05 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x54 },
+ { 0x59, 0x03 },
+ { 0x5a, 0x00 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x01 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_ROADWARRIOR;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 27;
+ sensor.dummy_pixel = 27;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 5200;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1100, 0x1100, 0x1100 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x04 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x10 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x04 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x05 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x54 },
+ { 0x59, 0x03 },
+ { 0x5a, 0x00 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x01 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_DSMOBILE600;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 28;
+ sensor.dummy_pixel = 28;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 5200;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1544, 0x1544, 0x1544 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x04 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x10 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x04 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x05 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x54 },
+ { 0x59, 0x03 },
+ { 0x5a, 0x00 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x01 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_XP300;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 27;
+ sensor.dummy_pixel = 27;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10240;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1100, 0x1100, 0x1100 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x04 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x10 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x04 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x05 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x54 },
+ { 0x59, 0x03 },
+ { 0x5a, 0x00 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x01 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_DP685;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 27;
+ sensor.dummy_pixel = 27;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 5020;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x1100, 0x1100, 0x1100 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x00 },
+ { 0x17, 0x02 },
+ { 0x18, 0x04 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x10 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x04 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x05 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x54 },
+ { 0x59, 0x03 },
+ { 0x5a, 0x00 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x01 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE200;
+ sensor.optical_res = 4800;
+ sensor.black_pixels = 87*4;
+ sensor.dummy_pixel = 16*4;
+ sensor.CCD_start_xoffset = 320*8;
+ sensor.sensor_pixels = 5136*8;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x08 },
+ { 0x18, 0x00 },
+ { 0x19, 0xff },
+ { 0x1a, 0x34 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x04 },
+ { 0x52, 0x03 },
+ { 0x53, 0x07 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x2a },
+ { 0x59, 0xe1 },
+ { 0x5a, 0x55 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x41 },
+ };
+ sensor.gamma = {1.7, 1.7, 1.7};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE700;
+ sensor.optical_res = 4800;
+ sensor.black_pixels = 73*8; // black pixels 73 at 600 dpi
+ sensor.dummy_pixel = 16*8;
+ // 384 at 600 dpi
+ sensor.CCD_start_xoffset = 384*8;
+ // 8x5570 segments, 5187+1 for rounding
+ sensor.sensor_pixels = 5188*8;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x08 },
+ { 0x18, 0x00 },
+ { 0x19, 0xff },
+ { 0x1a, 0x34 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x04 },
+ { 0x52, 0x07 },
+ { 0x53, 0x03 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x2a },
+ { 0x59, 0xe1 },
+ { 0x5a, 0x55 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x41 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE100;
+ sensor.optical_res = 2400;
+ sensor.black_pixels = 87*4, /* black pixels */
+ sensor.dummy_pixel = 16*4;
+ sensor.CCD_start_xoffset = 320*4;
+ sensor.sensor_pixels = 5136*4;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x01c1, 0x0126, 0x00e5 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x08 },
+ { 0x18, 0x00 },
+ { 0x19, 0x50 },
+ { 0x1a, 0x34 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x04 },
+ { 0x52, 0x03 },
+ { 0x53, 0x07 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x2a },
+ { 0x59, 0xe1 },
+ { 0x5a, 0x55 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x41 },
+ };
+ sensor.gamma = {1.7, 1.7, 1.7};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_KVSS080;
+ sensor.optical_res = 600;
+ sensor.black_pixels = 38;
+ sensor.dummy_pixel = 38;
+ sensor.CCD_start_xoffset = 152;
+ sensor.sensor_pixels = 5376;
+ sensor.fau_gain_white_ref = 160;
+ sensor.gain_white_ref = 160;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.exposure_lperiod = 8000;
+ sensor.custom_regs = {
+ { 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x00 },
+ { 0x77, 0x00 }, { 0x78, 0xff }, { 0x79, 0xff },
+ { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
+ { 0x0c, 0x00 },
+ { 0x70, 0x01 },
+ { 0x71, 0x03 },
+ { 0x9e, 0x00 },
+ { 0xaa, 0x00 },
+ { 0x16, 0x33 },
+ { 0x17, 0x1c },
+ { 0x18, 0x00 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x2c },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x04 },
+ { 0x52, 0x0c },
+ { 0x53, 0x0f },
+ { 0x54, 0x00 },
+ { 0x55, 0x03 },
+ { 0x56, 0x06 },
+ { 0x57, 0x09 },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc0 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_G4050;
+ sensor.optical_res = 4800;
+ sensor.black_pixels = 50*8;
+ // 31 at 600 dpi dummy_pixels 58 at 1200
+ sensor.dummy_pixel = 58;
+ sensor.CCD_start_xoffset = 152;
+ sensor.sensor_pixels = 5360*8;
+ sensor.fau_gain_white_ref = 160;
+ sensor.gain_white_ref = 160;
+ sensor.exposure = { 0x2c09, 0x22b8, 0x10f0 };
+ sensor.custom_regs = {};
+ sensor.gamma = {1.0, 1.0, 1.0};
- /* CANONLIDE110 */
- {CIS_CANONLIDE110,
- 2400, /* optical resolution */
- 87, /* black pixels */
- 16, /* dummy pixels 16 */
- 303, /* 303 */
- 5168*4, /* total pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x15 : EXPR, EXPG and EXPB */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* reg 0x16 - 0x1d */
- 0x10, 0x04, 0x00, 0x01, 0x30, 0x00, 0x02, 0x01 },
- /* reg 0x52 - 0x5e */
- {
- 0x00, 0x02, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04,
- 0x1a, 0x00, 0xc0, 0x00, 0x00
+ {
+ struct CustomSensorSettings {
+ int min_resolution;
+ int max_resolution;
+ int exposure_lperiod;
+ ScanMethod method;
+ GenesysRegisterSettingSet extra_custom_regs;
+ };
+
+ CustomSensorSettings custom_settings[] = {
+ { -1, 600, 8016, ScanMethod::FLATBED, {
+ { 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
+ { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
+ { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x00 },
+ { 0xaa, 0x00 },
+ { 0x16, 0x33 },
+ { 0x17, 0x0c },
+ { 0x18, 0x00 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x0b },
+ { 0x53, 0x0e },
+ { 0x54, 0x11 },
+ { 0x55, 0x02 },
+ { 0x56, 0x05 },
+ { 0x57, 0x08 },
+ { 0x58, 0x63 },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ }
+ },
+ { 1200, 1200, 56064, ScanMethod::FLATBED, {
+ { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
+ { 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff },
+ { 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff },
+ { 0x0c, 0x20 },
+ { 0x70, 0x08 },
+ { 0x71, 0x0c },
+ { 0x9e, 0xc0 },
+ { 0xaa, 0x05 },
+ { 0x16, 0x3b },
+ { 0x17, 0x0c },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x38 },
+ { 0x1b, 0x10 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x02 },
+ { 0x53, 0x05 },
+ { 0x54, 0x08 },
+ { 0x55, 0x0b },
+ { 0x56, 0x0e },
+ { 0x57, 0x11 },
+ { 0x58, 0x1b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ }
+ },
+ { 2400, 2400, 56064, ScanMethod::FLATBED, {
+ { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
+ { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
+ { 0x0c, 0x20 },
+ { 0x70, 0x08 },
+ { 0x71, 0x0a },
+ { 0x9e, 0xc0 },
+ { 0xaa, 0x05 },
+ { 0x16, 0x3b },
+ { 0x17, 0x0c },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x38 },
+ { 0x1b, 0x10 },
+ { 0x1c, 0xc0 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x02 },
+ { 0x53, 0x05 },
+ { 0x54, 0x08 },
+ { 0x55, 0x0b },
+ { 0x56, 0x0e },
+ { 0x57, 0x11 },
+ { 0x58, 0x1b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ }
+ },
+ { 4800, 4800, 42752, ScanMethod::FLATBED, {
+ { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff },
+ { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 },
+ { 0x0c, 0x21 },
+ { 0x70, 0x08 },
+ { 0x71, 0x0a },
+ { 0x9e, 0xc0 },
+ { 0xaa, 0x07 },
+ { 0x16, 0x3b },
+ { 0x17, 0x0c },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x38 },
+ { 0x1b, 0x10 },
+ { 0x1c, 0xc1 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x02 },
+ { 0x53, 0x05 },
+ { 0x54, 0x08 },
+ { 0x55, 0x0b },
+ { 0x56, 0x0e },
+ { 0x57, 0x11 },
+ { 0x58, 0x1b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ }
+ },
+ { -1, -1, 15624, ScanMethod::TRANSPARENCY, {
+ { 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f },
+ { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
+ { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x00 },
+ { 0xaa, 0x00 },
+ { 0x16, 0x33 },
+ { 0x17, 0x4c },
+ { 0x18, 0x01 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x0e },
+ { 0x53, 0x11 },
+ { 0x54, 0x02 },
+ { 0x55, 0x05 },
+ { 0x56, 0x08 },
+ { 0x57, 0x0b },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc0 },
+ }
+ }
+ };
+
+ auto base_custom_regs = sensor.custom_regs;
+ for (const CustomSensorSettings& setting : custom_settings)
+ {
+ sensor.min_resolution = setting.min_resolution;
+ sensor.max_resolution = setting.max_resolution;
+ sensor.exposure_lperiod = setting.exposure_lperiod;
+ sensor.method = setting.method;
+ sensor.custom_regs = base_custom_regs;
+ sensor.custom_regs.merge(setting.extra_custom_regs);
+ s_sensors->push_back(sensor);
+ }
}
- ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}}
- ,
- /* CANONLIDE120 */
- {CIS_CANONLIDE120,
- 2400, /* optical resolution */
- 87, /* black pixels */
- 16, /* dummy pixels 16 */
- 303,
- /* SEGCNT at 600 DPI by number of segments */
- 5104*4, /* total pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x15 : EXPR, EXPG and EXPB */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* reg 0x16 - 0x1d */
- 0x15, 0x04, 0x00, 0x01, 0x30, 0x00, 0x02, 0x01 },
- /* reg 0x52 - 0x5e */
- {
- /* 52 53 54 55 56 57 58 59 */
- 0x04, 0x06, 0x00, 0x02, 0x04, 0x04, 0x04, 0x04,
- /* 5a 5b 5c 5d 5e */
- 0x3a, 0x00, 0x00, 0x00, 0x1f
- }
- ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}}
- ,
- /* CANON LIDE 210 sensor */
- {CIS_CANONLIDE210,
- 2400, /* optical resolution */
- 87, /* black pixels */
- 16, /* dummy pixels 16 */
- 303, /* 303 */
- 5168*4, /* total pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x15 : EXPR, EXPG and EXPB */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* reg 0x16 - 0x1d */
- 0x10, 0x04, 0x00, 0x01, 0x30, 0x00, 0x02, 0x01 },
- /* reg 0x52 - 0x5e */
- {
- 0x00, 0x02, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04,
- 0x1a, 0x00, 0xc0, 0x00, 0x00
- }
- ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}}
- ,
- /* CANON LIDE 220 sensor */
- {CIS_CANONLIDE220,
- 2400, /* optical resolution */
- 87, /* black pixels */
- 16, /* dummy pixels 16 */
- 303, /* 303 */
- 5168*4, /* total pixels */
- 210,
- 200,
- {0x00, 0x00, 0x00, 0x00},
- /* reg 0x10 - 0x15 : EXPR, EXPG and EXPB */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /* reg 0x16 - 0x1d */
- 0x10, 0x04, 0x00, 0x01, 0x30, 0x00, 0x02, 0x01 },
- /* reg 0x52 - 0x5e */
- {
- 0x00, 0x02, 0x04, 0x06, 0x04, 0x04, 0x04, 0x04,
- 0x1a, 0x00, 0xc0, 0x00, 0x00
- }
- ,
- {2.1, 2.1, 2.1},
- {NULL, NULL, NULL}}
- ,
- {CCD_PLUSTEK_3600,
- 1200,
- 87, /*(black) */
- 87, /* (dummy) */
- 0, /* (startxoffset) */
- 10100, /*sensor_pixels */
- 210,
- 230,
- {0x00, 0x00, 0x00, 0x00},
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0b, 0x11, 0x2a,
- 0x00, 0x00, 0x00, 0xc4 /* TODO(these do no harm, but may be neccessery for CCD) */
- },
- {0x07, 0x0a,
- 0x0c, 0x00, 0x02, 0x06, /*[GB](HI|LOW) not needed for cis */
- 0x22, 0x69,
- 0x40, /*TODO: bit7 */
- 0x00, 0x00, 0x00, 0x02 /*TODO (these do no harm, but may be neccessery for CCD) */
- }
- ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}}
- ,
- /* Canon Image formula 101 */
- {CCD_IMG101,
- 1200, /* optical resolution */
- 31,
- 31,
- 0,
- 10800,
- 210,
- 200,
- {0x60, 0x00, 0x00, 0x8b},
- /* reg 0x10 - 0x15 */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* EXPR/EXPG/EXPB */
- /* reg 0x16 - 0x1d 0x19=0x50*/
- 0xbb, 0x13, 0x10, 0x2a, 0x34, 0x00, 0x20, 0x06 },
- /* reg 0x52 - 0x5e */
- {0x02, 0x04,
- 0x06, 0x08, 0x0a, 0x00,
- 0x59, 0x31,
- 0x40,
- 0x00, 0x00, 0x00,
- 0x1f
- }
- ,
- {1.7, 1.7, 1.7},
- {NULL, NULL, NULL}
- }
- ,
- /* Plustek OpticBook 3800 */
- {CCD_PLUSTEK3800,
- 1200, /* optical resolution */
- 31,
- 31,
- 0,
- 10200,
- 210,
- 200,
- {0x60, 0x00, 0x00, 0x8b},
- /* reg 0x10 - 0x15 */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* EXPR/EXPG/EXPB */
- /* reg 0x16 - 0x1d 0x19=0x50*/
- 0xbb, 0x13, 0x10, 0x2a, 0x34, 0x00, 0x20, 0x06 },
- /* reg 0x52 - 0x5e */
- {0x02, 0x04,
- 0x06, 0x08, 0x0a, 0x00,
- 0x59, 0x31,
- 0x40,
- 0x00, 0x00, 0x00,
- 0x1f
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_CS4400F;
+ sensor.optical_res = 4800;
+ sensor.ccd_size_divisor = 4;
+ sensor.black_pixels = 50*8;
+ // 31 at 600 dpi, 58 at 1200 dpi
+ sensor.dummy_pixel = 20;
+ sensor.CCD_start_xoffset = 152;
+ // 5360 max at 600 dpi
+ sensor.sensor_pixels = 5360*8;
+ sensor.fau_gain_white_ref = 160;
+ sensor.gain_white_ref = 160;
+ sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
+ sensor.exposure_lperiod = 11640;
+ sensor.custom_regs = {
+ { 0x74, 0x00 }, { 0x75, 0xf8 }, { 0x76, 0x38 },
+ { 0x77, 0x00 }, { 0x78, 0xfc }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x92 }, { 0x7c, 0xa4 },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x2d },
+ { 0xaa, 0x00 },
+ { 0x16, 0x13 },
+ { 0x17, 0x0a },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x6b },
+ { 0x52, 0x0a },
+ { 0x53, 0x0d },
+ { 0x54, 0x00 },
+ { 0x55, 0x03 },
+ { 0x56, 0x06 },
+ { 0x57, 0x08 },
+ { 0x58, 0x5b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_CS8400F;
+ sensor.optical_res = 4800;
+ sensor.black_pixels = 50*8;
+ // 31 at 600 dpi, 58 at 1200 dpi
+ sensor.dummy_pixel = 20;
+ sensor.CCD_start_xoffset = 152;
+ // 5360 max at 600 dpi
+ sensor.sensor_pixels = 5360*8;
+ sensor.fau_gain_white_ref = 160;
+ sensor.gain_white_ref = 160;
+ sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
+ sensor.exposure_lperiod = 7200;
+ sensor.custom_regs = {
+ { 0x74, 0x00 }, { 0x75, 0x0e }, { 0x76, 0x3f },
+ { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
+ { 0x7a, 0x01 }, { 0x7b, 0xb6 }, { 0x7c, 0xdb },
+ { 0x0c, 0x00 },
+ { 0x70, 0x01 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x00 },
+ { 0xaa, 0x00 },
+ { 0x16, 0x33 },
+ { 0x17, 0x0c },
+ { 0x18, 0x13 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x84 },
+ { 0x52, 0x0d },
+ { 0x53, 0x10 },
+ { 0x54, 0x01 },
+ { 0x55, 0x04 },
+ { 0x56, 0x07 },
+ { 0x57, 0x0a },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_CS8600F;
+ sensor.optical_res = 4800;
+ sensor.ccd_size_divisor = 4;
+ sensor.black_pixels = 31;
+ sensor.dummy_pixel = 20;
+ sensor.CCD_start_xoffset = 0; // not used at the moment
+ // 11372 pixels at 1200 dpi
+ sensor.sensor_pixels = 11372*4;
+ sensor.fau_gain_white_ref = 160;
+ sensor.gain_white_ref = 160;
+ sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
+ sensor.custom_regs = {};
+ sensor.gamma = {1.0, 1.0, 1.0};
+
+ {
+ struct CustomSensorSettings {
+ int min_resolution;
+ int max_resolution;
+ int exposure_lperiod;
+ ScanMethod method;
+ GenesysRegisterSettingSet extra_custom_regs;
+ GenesysRegisterSettingSet custom_fe_regs;
+ };
+
+ CustomSensorSettings custom_settings[] = {
+ { -1, 1200, 24000, ScanMethod::FLATBED, {
+ { 0x74, 0x03 }, { 0x75, 0xf0 }, { 0x76, 0xf0 },
+ { 0x77, 0x03 }, { 0x78, 0xfe }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x92 }, { 0x7c, 0x49 },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x2d },
+ { 0xaa, 0x00 },
+ { 0x16, 0x13 },
+ { 0x17, 0x0a },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x6b },
+ { 0x52, 0x0c },
+ { 0x53, 0x0f },
+ { 0x54, 0x00 },
+ { 0x55, 0x03 },
+ { 0x56, 0x06 },
+ { 0x57, 0x09 },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ },
+ {},
+ },
+ { -1, 1200, 24000, ScanMethod::TRANSPARENCY, {
+ { 0x74, 0x03 }, { 0x75, 0xf0 }, { 0x76, 0xf0 },
+ { 0x77, 0x03 }, { 0x78, 0xfe }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x92 }, { 0x7c, 0x49 },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x2d },
+ { 0xaa, 0x00 },
+ { 0x16, 0x13 },
+ { 0x17, 0x0a },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x6b },
+ { 0x52, 0x0c },
+ { 0x53, 0x0f },
+ { 0x54, 0x00 },
+ { 0x55, 0x03 },
+ { 0x56, 0x06 },
+ { 0x57, 0x09 },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ },
+ {},
+ },
+ { 2400, 2400, 24000, ScanMethod::TRANSPARENCY, {
+ { 0x74, 0x03 }, { 0x75, 0xfe }, { 0x76, 0x00 },
+ { 0x77, 0x03 }, { 0x78, 0xfe }, { 0x79, 0x00 },
+ { 0x7a, 0x00 }, { 0x7b, 0x92 }, { 0x7c, 0x49 },
+ { 0x0c, 0x00 },
+ { 0x70, 0x00 },
+ { 0x71, 0x02 },
+ { 0x9e, 0x2d },
+ { 0xaa, 0x00 },
+ { 0x16, 0x13 },
+ { 0x17, 0x15 },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x01 },
+ { 0x1d, 0x75 },
+ { 0x52, 0x0c },
+ { 0x53, 0x0f },
+ { 0x54, 0x00 },
+ { 0x55, 0x03 },
+ { 0x56, 0x06 },
+ { 0x57, 0x09 },
+ { 0x58, 0x6b },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ },
+ {},
+ },
+ { 4800, 4800, 24000, ScanMethod::TRANSPARENCY, {
+ { 0x74, 0x03 }, { 0x75, 0xff }, { 0x76, 0xff },
+ { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff },
+ { 0x7a, 0x00 }, { 0x7b, 0x92 }, { 0x7c, 0x49 },
+ { 0x0c, 0x00 },
+ { 0x70, 0x0a },
+ { 0x71, 0x0c },
+ { 0x72, 0x0c },
+ { 0x73, 0x0e },
+ { 0x9e, 0x2d },
+ { 0xaa, 0x00 },
+ { 0x16, 0x13 },
+ { 0x17, 0x15 },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x61 },
+ { 0x1d, 0x75 },
+ { 0x52, 0x03 },
+ { 0x53, 0x06 },
+ { 0x54, 0x09 },
+ { 0x55, 0x0c },
+ { 0x56, 0x0f },
+ { 0x57, 0x00 },
+ { 0x58, 0x23 },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ },
+ { { 0x03, 0x1f },
+ },
+ },
+ };
+
+ auto base_custom_regs = sensor.custom_regs;
+ for (const CustomSensorSettings& setting : custom_settings)
+ {
+ sensor.min_resolution = setting.min_resolution;
+ sensor.max_resolution = setting.max_resolution;
+ sensor.method = setting.method;
+ sensor.exposure_lperiod = setting.exposure_lperiod;
+ sensor.custom_regs = base_custom_regs;
+ sensor.custom_regs.merge(setting.extra_custom_regs);
+ sensor.custom_fe_regs = setting.custom_fe_regs;
+ s_sensors->push_back(sensor);
+ }
}
- ,
- {1.7, 1.7, 1.7},
- {NULL, NULL, NULL}
- },
- /* CANOLIDE80 */
- {CIS_CANONLIDE80,
- 1200, /* real hardware limit is 2400 */
- 20, /* black pixels */
- 6, /* expdummy 6 */
- /* tuned to give 3*8 multiple startx coordinate during shading calibration */
- 34, /* CCD_start_xoffset 14=>3, 20=>2 */
- 10240, /* 10400, too wide=>10288 in shading data 10240~, 10208 too short for shading, max shading data = 10240 pixels, endpix-startpix=10208 */
- 150,
- 150,
- {0x00, 0x05, 0x07, 0x09}, /* in fact ,maps to 0x70-0x73 for GL841 */
- /* [0x10-0x15] values are initial led exposure values */
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d*/
- {0x10, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04},
- {0x03, 0x07, 0x00, 0x00, 0x00, 0x00, 0x29, 0x69, 0x55, 0x00, 0x00, 0x20, 0x41} ,
- {1.0, 1.0, 1.0},
- {NULL, NULL, NULL}}
-};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_HP_N6310;
+ sensor.optical_res = 2400;
+ // sensor.ccd_size_divisor = 2; Possibly half CCD, needs checking
+ sensor.black_pixels = 96;
+ sensor.dummy_pixel = 26;
+ sensor.CCD_start_xoffset = 128;
+ sensor.sensor_pixels = 42720;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x10 },
+ { 0x0a, 0x10 },
+ { 0x0b, 0x0c },
+ { 0x16, 0x33 },
+ { 0x17, 0x0c },
+ { 0x18, 0x02 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x08 },
+ { 0x52, 0x0b },
+ { 0x53, 0x0e },
+ { 0x54, 0x11 },
+ { 0x55, 0x02 },
+ { 0x56, 0x05 },
+ { 0x57, 0x08 },
+ { 0x58, 0x63 },
+ { 0x59, 0x00 },
+ { 0x5a, 0x40 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x06 },
+ { 0x5e, 0x6f },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE110;
+ sensor.optical_res = 2400;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 303;
+ sensor.sensor_pixels = 5168*4;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x04 },
+ { 0x18, 0x00 },
+ { 0x19, 0x01 },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x01 },
+ { 0x52, 0x00 },
+ { 0x53, 0x02 },
+ { 0x54, 0x04 },
+ { 0x55, 0x06 },
+ { 0x56, 0x04 },
+ { 0x57, 0x04 },
+ { 0x58, 0x04 },
+ { 0x59, 0x04 },
+ { 0x5a, 0x1a },
+ { 0x5b, 0x00 },
+ { 0x5c, 0xc0 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE120;
+ sensor.optical_res = 2400;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 303;
+ // SEGCNT at 600 DPI by number of segments
+ sensor.sensor_pixels = 5104*4;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x15 },
+ { 0x17, 0x04 },
+ { 0x18, 0x00 },
+ { 0x19, 0x01 },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x01 },
+ { 0x52, 0x04 },
+ { 0x53, 0x06 },
+ { 0x54, 0x00 },
+ { 0x55, 0x02 },
+ { 0x56, 0x04 },
+ { 0x57, 0x04 },
+ { 0x58, 0x04 },
+ { 0x59, 0x04 },
+ { 0x5a, 0x3a },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x1f },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE210;
+ sensor.optical_res = 2400;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 303;
+ sensor.sensor_pixels = 5168*4;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x04 },
+ { 0x18, 0x00 },
+ { 0x19, 0x01 },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x01 },
+ { 0x52, 0x00 },
+ { 0x53, 0x02 },
+ { 0x54, 0x04 },
+ { 0x55, 0x06 },
+ { 0x56, 0x04 },
+ { 0x57, 0x04 },
+ { 0x58, 0x04 },
+ { 0x59, 0x04 },
+ { 0x5a, 0x1a },
+ { 0x5b, 0x00 },
+ { 0x5c, 0xc0 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE220;
+ sensor.optical_res = 2400;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 16;
+ sensor.CCD_start_xoffset = 303;
+ sensor.sensor_pixels = 5168*4;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x10 },
+ { 0x17, 0x04 },
+ { 0x18, 0x00 },
+ { 0x19, 0x01 },
+ { 0x1a, 0x30 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x02 },
+ { 0x1d, 0x01 },
+ { 0x52, 0x00 },
+ { 0x53, 0x02 },
+ { 0x54, 0x04 },
+ { 0x55, 0x06 },
+ { 0x56, 0x04 },
+ { 0x57, 0x04 },
+ { 0x58, 0x04 },
+ { 0x59, 0x04 },
+ { 0x5a, 0x1a },
+ { 0x5b, 0x00 },
+ { 0x5c, 0xc0 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {2.1, 2.1, 2.1};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_PLUSTEK_3600;
+ sensor.optical_res = 1200;
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 87;
+ sensor.dummy_pixel = 87;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10100;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x00 },
+ { 0x16, 0x33 },
+ { 0x17, 0x0b },
+ { 0x18, 0x11 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0xc4 },
+ { 0x52, 0x07 }, // [GB](HI|LOW) not needed for cis
+ { 0x53, 0x0a },
+ { 0x54, 0x0c },
+ { 0x55, 0x00 },
+ { 0x56, 0x02 },
+ { 0x57, 0x06 },
+ { 0x58, 0x22 },
+ { 0x59, 0x69 },
+ { 0x5a, 0x40 },
+ { 0x5b, 0x00 }, // TODO: 5b-5e
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x02 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_IMG101;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 31;
+ sensor.dummy_pixel = 31;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10800;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x60 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x8b },
+ { 0x16, 0xbb },
+ { 0x17, 0x13 },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x34 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x06 },
+ { 0x52, 0x02 },
+ { 0x53, 0x04 },
+ { 0x54, 0x06 },
+ { 0x55, 0x08 },
+ { 0x56, 0x0a },
+ { 0x57, 0x00 },
+ { 0x58, 0x59 },
+ { 0x59, 0x31 },
+ { 0x5a, 0x40 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x1f },
+ };
+ sensor.gamma = {1.7, 1.7, 1.7};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CCD_PLUSTEK3800;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 31;
+ sensor.dummy_pixel = 31;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10200;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 200;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x60 },
+ { 0x09, 0x00 },
+ { 0x0a, 0x00 },
+ { 0x0b, 0x8b },
+ { 0x16, 0xbb },
+ { 0x17, 0x13 },
+ { 0x18, 0x10 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x34 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x20 },
+ { 0x1d, 0x06 },
+ { 0x52, 0x02 },
+ { 0x53, 0x04 },
+ { 0x54, 0x06 },
+ { 0x55, 0x08 },
+ { 0x56, 0x0a },
+ { 0x57, 0x00 },
+ { 0x58, 0x59 },
+ { 0x59, 0x31 },
+ { 0x5a, 0x40 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x1f },
+ };
+ sensor.gamma = {1.7, 1.7, 1.7};
+ s_sensors->push_back(sensor);
+
+
+ sensor = Genesys_Sensor();
+ sensor.sensor_id = CIS_CANONLIDE80,
+ sensor.optical_res = 1200; // real hardware limit is 2400
+ sensor.ccd_size_divisor = 2;
+ sensor.black_pixels = 20;
+ sensor.dummy_pixel = 6;
+ // tuned to give 3*8 multiple startx coordinate during shading calibration
+ sensor.CCD_start_xoffset = 34; // 14=>3, 20=>2
+ // 10400, too wide=>10288 in shading data 10240~
+ // 10208 too short for shading, max shading data = 10240 pixels, endpix-startpix=10208
+ sensor.sensor_pixels = 10240;
+ sensor.fau_gain_white_ref = 150;
+ sensor.gain_white_ref = 150;
+ // maps to 0x70-0x73 for GL841
+ sensor.exposure = { 0x1000, 0x1000, 0x0500 };
+ sensor.custom_regs = {
+ { 0x08, 0x00 },
+ { 0x09, 0x05 },
+ { 0x0a, 0x07 },
+ { 0x0b, 0x09 },
+ { 0x16, 0x00 },
+ { 0x17, 0x01 },
+ { 0x18, 0x00 },
+ { 0x19, 0x06 },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x04 },
+ { 0x52, 0x03 },
+ { 0x53, 0x07 },
+ { 0x54, 0x00 },
+ { 0x55, 0x00 },
+ { 0x56, 0x00 },
+ { 0x57, 0x00 },
+ { 0x58, 0x29 },
+ { 0x59, 0x69 },
+ { 0x5a, 0x55 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x20 },
+ { 0x5e, 0x41 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ s_sensors->push_back(sensor);
+}
/** for General Purpose Output specific settings:
* initial GPO value (registers 0x66-0x67/0x6c-0x6d)
@@ -999,6 +2306,12 @@ static Genesys_Gpo Gpo[] = {
{0x9a, 0xdf},
{0xfe, 0x60},
}
+ /* CanoScan 8600F */
+ ,
+ { GPO_CS8600F,
+ { 0x20, 0x7c },
+ { 0xff, 0x00 },
+ }
/* Canon Image formula 101 */
,
{GPO_IMG101,
@@ -1014,8 +2327,8 @@ static Genesys_Gpo Gpo[] = {
/* Canon LiDE 80 */
{
GPO_CANONLIDE80,
- {0x28, 0x90}, /* 6c, 6d */
- {0x75, 0x80}, /* 6e, 6f */
+ {0x28, 0x90},
+ {0x75, 0x80},
}
};
@@ -1305,6 +2618,20 @@ static Genesys_Motor Motor[] = {
},
},
},
+ {
+ MOTOR_CS8600F,
+ 2400,
+ 9600,
+ 2,
+ 1,
+ { /* motor slopes */
+ { /* power mode 0 */
+ { 3961, 240, 246, 0.8 }, /* full step */
+ { 3961, 240, 246, 0.8 }, /* half step */
+ { 3961, 240, 246, 0.8 }, /* quarter step */
+ },
+ },
+ },
{MOTOR_CANONLIDE110, /* Canon LiDE 110 */
4800,
9600,
@@ -1394,6 +2721,7 @@ static Genesys_Model umax_astra_4500_model = {
"umax-astra-4500", /* Name */
"UMAX", /* Device vendor string */
"Astra 4500", /* Device model name */
+ MODEL_UMAX_ASTRA_4500,
GENESYS_GL646,
NULL,
@@ -1436,6 +2764,7 @@ static Genesys_Model umax_astra_4500_model = {
/* untested, values set by hmg */
GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
20,
+ 0, // shading_ta_lines
200
};
@@ -1443,6 +2772,7 @@ static Genesys_Model canon_lide_50_model = {
"canon-lide-50", /* Name */
"Canon", /* Device vendor string */
"LiDE 35/40/50", /* Device model name */
+ MODEL_CANON_LIDE_50,
GENESYS_GL841,
NULL,
@@ -1485,13 +2815,13 @@ static Genesys_Model canon_lide_50_model = {
GENESYS_FLAG_SKIP_WARMUP |
GENESYS_FLAG_OFFSET_CALIBRATION |
GENESYS_FLAG_DARK_WHITE_CALIBRATION |
- GENESYS_FLAG_CUSTOM_GAMMA |
- GENESYS_FLAG_HALF_CCD_MODE,
+ GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW |
GENESYS_HAS_FILE_SW |
GENESYS_HAS_EMAIL_SW |
GENESYS_HAS_COPY_SW,
280,
+ 0, // shading_ta_lines
400
};
@@ -1499,6 +2829,7 @@ static Genesys_Model panasonic_kvss080_model = {
"panasonic-kv-ss080", /* Name */
"Panasonic", /* Device vendor string */
"KV-SS080", /* Device model name */
+ MODEL_PANASONIC_KV_SS080,
GENESYS_GL843,
NULL,
@@ -1543,6 +2874,7 @@ static Genesys_Model panasonic_kvss080_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW ,
100,
+ 0, // shading_ta_lines
100
};
@@ -1550,6 +2882,7 @@ static Genesys_Model hp4850c_model = {
"hewlett-packard-scanjet-4850c", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet 4850C", /* Device model name */
+ MODEL_HP_SCANJET_4850C,
GENESYS_GL843,
NULL,
@@ -1598,6 +2931,7 @@ static Genesys_Model hp4850c_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
100,
+ 0, // shading_ta_lines
100
};
@@ -1605,6 +2939,7 @@ static Genesys_Model hpg4010_model = {
"hewlett-packard-scanjet-g4010", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet G4010", /* Device model name */
+ MODEL_HP_SCANJET_G4010,
GENESYS_GL843,
NULL,
@@ -1653,6 +2988,7 @@ static Genesys_Model hpg4010_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
100,
+ 0, // shading_ta_lines
100
};
@@ -1660,6 +2996,7 @@ static Genesys_Model hpg4050_model = {
"hewlett-packard-scanjet-g4050", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet G4050", /* Device model name */
+ MODEL_HP_SCANJET_G4050,
GENESYS_GL843,
NULL,
@@ -1708,6 +3045,7 @@ static Genesys_Model hpg4050_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
100,
+ 0, // shading_ta_lines
100
};
@@ -1716,6 +3054,7 @@ static Genesys_Model canon_4400f_model = {
"canon-canoscan-4400f", /* Name */
"Canon", /* Device vendor string */
"Canoscan 4400f", /* Device model name */
+ MODEL_CANON_CANOSCAN_4400F,
GENESYS_GL843,
NULL,
@@ -1763,10 +3102,10 @@ static Genesys_Model canon_4400f_model = {
GENESYS_FLAG_SKIP_WARMUP |
GENESYS_FLAG_DARK_CALIBRATION |
GENESYS_FLAG_FULL_HWDPI_MODE |
- GENESYS_FLAG_HALF_CCD_MODE | /* actually quarter CCD mode ... */
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
100,
+ 0, // shading_ta_lines
100
};
@@ -1775,6 +3114,7 @@ static Genesys_Model canon_8400f_model = {
"canon-canoscan-8400f", /* Name */
"Canon", /* Device vendor string */
"Canoscan 8400f", /* Device model name */
+ MODEL_CANON_CANOSCAN_8400F,
GENESYS_GL843,
NULL,
@@ -1825,15 +3165,75 @@ static Genesys_Model canon_8400f_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
100,
+ 0, // shading_ta_lines
100
};
+static Genesys_Model canon_8600f_model = {
+ "canon-canoscan-8600f", // name
+ "Canon", // Device vendor string
+ "Canoscan 8600f", // Device model name
+ MODEL_CANON_CANOSCAN_8600F,
+ GENESYS_GL843, // ASIC type
+ NULL,
+
+ { 4800, 2400, 1200, 600, 400, 300, 0}, // TODO: resolutions for non-XPA mode
+ { 4800, 2400, 1200, 600, 400, 300, 0}, // TODO: resolutions for non-XPA mode
+ { 16, 8, 0 }, // possible depths in gray mode
+ { 16, 8, 0 }, // possible depths in color mode
+
+ SANE_FIX(24.0), // Start of scan area in mm (x)
+ SANE_FIX(10.0), // Start of scan area in mm (y)
+ SANE_FIX(216.0), // Size of scan area in mm (x)
+ SANE_FIX(297.0), // Size of scan area in mm (y)
+
+ SANE_FIX(0.0), // Start of white strip in mm (y)
+ SANE_FIX(8.0), // Start of black mark in mm (x)
+
+ SANE_FIX(95.0), // x_offset_ta
+ SANE_FIX(26.0), // y_offset_ta
+ SANE_FIX(70.0), // x_size_ta
+ SANE_FIX(230.0), // y_size_ta
+
+ SANE_FIX(12.5), // y_offset_calib
+
+ SANE_FIX(0.0), // Size of scan area after paper sensor stops
+ // sensing document in mm
+ SANE_FIX(0.0), // Amount of feeding needed to eject document
+ // after finishing scanning in mm
+
+ 0, 48, 96, // RGB CCD Line-distance correction in line number
+
+ COLOR_ORDER_RGB, // Order of the CCD/CIS colors
+
+ SANE_FALSE, // Is this a CIS scanner?
+ SANE_FALSE, // Is this a sheetfed scanner?
+ CCD_CS8600F,
+ DAC_CS8600F,
+ GPO_CS8600F,
+ MOTOR_CS8600F,
+ GENESYS_FLAG_HAS_UTA |
+ GENESYS_FLAG_LAZY_INIT |
+ GENESYS_FLAG_OFFSET_CALIBRATION |
+ GENESYS_FLAG_STAGGERED_LINE |
+ GENESYS_FLAG_SKIP_WARMUP |
+ GENESYS_FLAG_DARK_CALIBRATION |
+ GENESYS_FLAG_FULL_HWDPI_MODE |
+ GENESYS_FLAG_CUSTOM_GAMMA |
+ GENESYS_FLAG_SHADING_REPARK,
+ GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW,
+ 50, // shading_lines
+ 50, // shading_ta_lines
+ 100
+};
+
static Genesys_Model canon_lide_100_model = {
"canon-lide-100", /* Name */
"Canon", /* Device vendor string */
"LiDE 100", /* Device model name */
+ MODEL_CANON_LIDE_100,
GENESYS_GL847,
NULL,
@@ -1881,6 +3281,7 @@ static Genesys_Model canon_lide_100_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
50,
+ 0, // shading_ta_lines
400
};
@@ -1888,6 +3289,7 @@ static Genesys_Model canon_lide_110_model = {
"canon-lide-110", /* Name */
"Canon", /* Device vendor string */
"LiDE 110", /* Device model name */
+ MODEL_CANON_LIDE_110,
GENESYS_GL124,
NULL,
@@ -1929,11 +3331,11 @@ static Genesys_Model canon_lide_110_model = {
GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_SHADING_REPARK
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
50,
+ 0, // shading_ta_lines
400
};
@@ -1941,6 +3343,7 @@ static Genesys_Model canon_lide_120_model = {
"canon-lide-120", /* Name */
"Canon", /* Device vendor string */
"LiDE 120", /* Device model name */
+ MODEL_CANON_LIDE_120,
GENESYS_GL124,
NULL,
@@ -1982,11 +3385,11 @@ static Genesys_Model canon_lide_120_model = {
GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_SHADING_REPARK
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
50,
+ 0, // shading_ta_lines
400
};
@@ -1995,6 +3398,7 @@ static Genesys_Model canon_lide_210_model = {
"canon-lide-210", /* Name */
"Canon", /* Device vendor string */
"LiDE 210", /* Device model name */
+ MODEL_CANON_LIDE_210,
GENESYS_GL124,
NULL,
@@ -2036,11 +3440,11 @@ static Genesys_Model canon_lide_210_model = {
GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_SHADING_REPARK
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_EXTRA_SW,
60,
+ 0, // shading_ta_lines
400
};
@@ -2048,6 +3452,7 @@ static Genesys_Model canon_lide_220_model = {
"canon-lide-220", /* Name */
"Canon", /* Device vendor string */
"LiDE 220", /* Device model name */
+ MODEL_CANON_LIDE_220,
GENESYS_GL124, /* or a compatible one */
NULL,
@@ -2089,11 +3494,11 @@ static Genesys_Model canon_lide_220_model = {
GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_SHADING_REPARK
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_EXTRA_SW,
60,
+ 0, // shading_ta_lines
400
};
@@ -2101,6 +3506,7 @@ static Genesys_Model canon_5600f_model = {
"canon-5600f", /* Name */
"Canon", /* Device vendor string */
"5600F", /* Device model name */
+ MODEL_CANON_CANOSCAN_5600F,
GENESYS_GL847,
NULL,
@@ -2147,6 +3553,7 @@ static Genesys_Model canon_5600f_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
50,
+ 0, // shading_ta_lines
400
};
@@ -2154,6 +3561,7 @@ static Genesys_Model canon_lide_700f_model = {
"canon-lide-700f", /* Name */
"Canon", /* Device vendor string */
"LiDE 700F", /* Device model name */
+ MODEL_CANON_LIDE_700F,
GENESYS_GL847,
NULL,
@@ -2200,6 +3608,7 @@ static Genesys_Model canon_lide_700f_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
70,
+ 0, // shading_ta_lines
400
};
@@ -2209,6 +3618,7 @@ static Genesys_Model canon_lide_200_model = {
"canon-lide-200", /* Name */
"Canon", /* Device vendor string */
"LiDE 200", /* Device model name */
+ MODEL_CANON_LIDE_200,
GENESYS_GL847,
NULL,
@@ -2255,6 +3665,7 @@ static Genesys_Model canon_lide_200_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
50,
+ 0, // shading_ta_lines
400
};
@@ -2263,6 +3674,7 @@ static Genesys_Model canon_lide_60_model = {
"canon-lide-60", /* Name */
"Canon", /* Device vendor string */
"LiDE 60", /* Device model name */
+ MODEL_CANON_LIDE_60,
GENESYS_GL841,
NULL,
@@ -2305,11 +3717,14 @@ static Genesys_Model canon_lide_60_model = {
| GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_DARK_WHITE_CALIBRATION
- | GENESYS_FLAG_CUSTOM_GAMMA
- | GENESYS_FLAG_HALF_CCD_MODE,
+ | GENESYS_FLAG_CUSTOM_GAMMA,
- GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
+ GENESYS_HAS_COPY_SW /* Has four buttons: COPY, SCAN, PDF, EMAIL */
+ | GENESYS_HAS_SCAN_SW
+ | GENESYS_HAS_FILE_SW
+ | GENESYS_HAS_EMAIL_SW,
300,
+ 0, // shading_ta_lines
400
}; /* this is completely untested -- hmg */
@@ -2317,6 +3732,7 @@ static Genesys_Model canon_lide_80_model = {
"canon-lide-80", /* Name */
"Canon", /* Device vendor string */
"LiDE 80", /* Device model name */
+ MODEL_CANON_LIDE_80,
GENESYS_GL841,
NULL,
@@ -2358,13 +3774,13 @@ static Genesys_Model canon_lide_80_model = {
GENESYS_FLAG_SKIP_WARMUP |
GENESYS_FLAG_OFFSET_CALIBRATION |
GENESYS_FLAG_DARK_WHITE_CALIBRATION |
- GENESYS_FLAG_CUSTOM_GAMMA |
- GENESYS_FLAG_HALF_CCD_MODE,
+ GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW |
GENESYS_HAS_FILE_SW |
GENESYS_HAS_EMAIL_SW |
GENESYS_HAS_COPY_SW,
160, /* 280 @2400 */
+ 0, // shading_ta_lines
400
};
@@ -2373,6 +3789,7 @@ static Genesys_Model hp2300c_model = {
"hewlett-packard-scanjet-2300c", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet 2300c", /* Device model name */
+ MODEL_HP_SCANJET_2300C,
GENESYS_GL646,
NULL,
@@ -2417,10 +3834,10 @@ static Genesys_Model hp2300c_model = {
| GENESYS_FLAG_SEARCH_START
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW,
40,
+ 0, // shading_ta_lines
132
};
@@ -2429,6 +3846,7 @@ Genesys_Model hp2400c_model = {
"hewlett-packard-scanjet-2400c", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet 2400c", /* Device model name */
+ MODEL_HP_SCANJET_2400C,
GENESYS_GL646,
NULL,
@@ -2476,6 +3894,7 @@ Genesys_Model hp2400c_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_SCAN_SW,
20,
+ 0, // shading_ta_lines
132
};
@@ -2484,6 +3903,7 @@ Genesys_Model visioneer_xp200_model = {
"visioneer-strobe-xp200", /* Name */
"Visioneer", /* Device vendor string */
"Strobe XP200", /* Device model name */
+ MODEL_VISIONEER_STROBE_XP200,
GENESYS_GL646,
NULL,
@@ -2530,6 +3950,7 @@ Genesys_Model visioneer_xp200_model = {
| GENESYS_FLAG_OFFSET_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
120,
+ 0, // shading_ta_lines
132
};
@@ -2537,6 +3958,7 @@ static Genesys_Model hp3670c_model = {
"hewlett-packard-scanjet-3670c", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet 3670c", /* Device model name */
+ MODEL_HP_SCANJET_3670C,
GENESYS_GL646,
NULL,
@@ -2584,6 +4006,7 @@ static Genesys_Model hp3670c_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_SCAN_SW,
20,
+ 0, // shading_ta_lines
200
};
@@ -2591,6 +4014,7 @@ static Genesys_Model plustek_st12_model = {
"plustek-opticpro-st12", /* Name */
"Plustek", /* Device vendor string */
"OpticPro ST12", /* Device model name */
+ MODEL_PLUSTEK_OPTICPRO_ST12,
GENESYS_GL646,
NULL,
@@ -2632,6 +4056,7 @@ static Genesys_Model plustek_st12_model = {
GENESYS_FLAG_UNTESTED | GENESYS_FLAG_14BIT_GAMMA, /* Which flags are needed for this scanner? */
GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
20,
+ 0, // shading_ta_lines
200
};
@@ -2639,6 +4064,7 @@ static Genesys_Model plustek_st24_model = {
"plustek-opticpro-st24", /* Name */
"Plustek", /* Device vendor string */
"OpticPro ST24", /* Device model name */
+ MODEL_PLUSTEK_OPTICPRO_ST24,
GENESYS_GL646,
NULL,
@@ -2685,6 +4111,7 @@ static Genesys_Model plustek_st24_model = {
| GENESYS_FLAG_OFFSET_CALIBRATION,
GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
20,
+ 0, // shading_ta_lines
200
};
@@ -2692,6 +4119,7 @@ static Genesys_Model medion_md5345_model = {
"medion-md5345-model", /* Name */
"Medion", /* Device vendor string */
"MD5345/MD6228/MD6471", /* Device model name */
+ MODEL_MEDION_MD5345,
GENESYS_GL646,
NULL,
@@ -2735,11 +4163,11 @@ static Genesys_Model medion_md5345_model = {
| GENESYS_FLAG_STAGGERED_LINE
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_SHADING_NO_MOVE
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_POWER_SW | GENESYS_HAS_OCR_SW | GENESYS_HAS_SCAN_SW,
40,
+ 0, // shading_ta_lines
200
};
@@ -2747,6 +4175,7 @@ static Genesys_Model visioneer_xp300_model = {
"visioneer-strobe-xp300", /* Name */
"Visioneer", /* Device vendor string */
"Strobe XP300", /* Device model name */
+ MODEL_VISIONEER_STROBE_XP300,
GENESYS_GL841,
NULL,
@@ -2793,6 +4222,7 @@ static Genesys_Model visioneer_xp300_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -2800,6 +4230,7 @@ static Genesys_Model syscan_docketport_665_model = {
"syscan-docketport-665", /* Name */
"Syscan/Ambir", /* Device vendor string */
"DocketPORT 665", /* Device model name */
+ MODEL_SYSCAN_DOCKETPORT_665,
GENESYS_GL841,
NULL,
@@ -2845,6 +4276,7 @@ static Genesys_Model syscan_docketport_665_model = {
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -2852,6 +4284,7 @@ static Genesys_Model visioneer_roadwarrior_model = {
"visioneer-roadwarrior", /* Name */
"Visioneer", /* Device vendor string */
"Readwarrior", /* Device model name */
+ MODEL_VISIONEER_ROADWARRIOR,
GENESYS_GL841,
NULL,
@@ -2897,6 +4330,7 @@ static Genesys_Model visioneer_roadwarrior_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -2904,6 +4338,7 @@ static Genesys_Model syscan_docketport_465_model = {
"syscan-docketport-465", /* Name */
"Syscan", /* Device vendor string */
"DocketPORT 465", /* Device model name */
+ MODEL_SYSCAN_DOCKETPORT_465,
GENESYS_GL841,
NULL,
@@ -2949,6 +4384,7 @@ static Genesys_Model syscan_docketport_465_model = {
| GENESYS_FLAG_UNTESTED,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW,
300,
+ 0, // shading_ta_lines
400
};
@@ -2956,6 +4392,7 @@ static Genesys_Model visioneer_xp100_r3_model = {
"visioneer-xp100-revision3", /* Name */
"Visioneer", /* Device vendor string */
"XP100 Revision 3", /* Device model name */
+ MODEL_VISIONEER_STROBE_XP100_REVISION3,
GENESYS_GL841,
NULL,
@@ -3001,6 +4438,7 @@ static Genesys_Model visioneer_xp100_r3_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3008,6 +4446,7 @@ static Genesys_Model pentax_dsmobile_600_model = {
"pentax-dsmobile-600", /* Name */
"Pentax", /* Device vendor string */
"DSmobile 600", /* Device model name */
+ MODEL_PENTAX_DSMOBILE_600,
GENESYS_GL841,
NULL,
@@ -3053,6 +4492,7 @@ static Genesys_Model pentax_dsmobile_600_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3060,6 +4500,7 @@ static Genesys_Model syscan_docketport_467_model = {
"syscan-docketport-467", /* Name */
"Syscan", /* Device vendor string */
"DocketPORT 467", /* Device model name */
+ MODEL_SYSCAN_DOCKETPORT_467,
GENESYS_GL841,
NULL,
@@ -3105,6 +4546,7 @@ static Genesys_Model syscan_docketport_467_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3112,6 +4554,7 @@ static Genesys_Model syscan_docketport_685_model = {
"syscan-docketport-685", /* Name */
"Syscan/Ambir", /* Device vendor string */
"DocketPORT 685", /* Device model name */
+ MODEL_SYSCAN_DOCKETPORT_685,
GENESYS_GL841,
NULL,
@@ -3158,6 +4601,7 @@ static Genesys_Model syscan_docketport_685_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3165,6 +4609,7 @@ static Genesys_Model syscan_docketport_485_model = {
"syscan-docketport-485", /* Name */
"Syscan/Ambir", /* Device vendor string */
"DocketPORT 485", /* Device model name */
+ MODEL_SYSCAN_DOCKETPORT_485,
GENESYS_GL841,
NULL,
@@ -3211,6 +4656,7 @@ static Genesys_Model syscan_docketport_485_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3218,6 +4664,7 @@ static Genesys_Model dct_docketport_487_model = {
"dct-docketport-487", /* Name */
"DCT", /* Device vendor string */
"DocketPORT 487", /* Device model name */
+ MODEL_DCT_DOCKETPORT_487,
GENESYS_GL841,
NULL,
@@ -3265,6 +4712,7 @@ static Genesys_Model dct_docketport_487_model = {
| GENESYS_FLAG_UNTESTED,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3272,6 +4720,7 @@ static Genesys_Model visioneer_7100_model = {
"visioneer-7100-model", /* Name */
"Visioneer", /* Device vendor string */
"OneTouch 7100", /* Device model name */
+ MODEL_VISIONEER_7100,
GENESYS_GL646,
NULL,
@@ -3316,10 +4765,10 @@ static Genesys_Model visioneer_7100_model = {
| GENESYS_FLAG_STAGGERED_LINE
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_POWER_SW | GENESYS_HAS_OCR_SW | GENESYS_HAS_SCAN_SW,
40,
+ 0, // shading_ta_lines
200
};
@@ -3327,6 +4776,7 @@ static Genesys_Model xerox_2400_model = {
"xerox-2400-model", /* Name */
"Xerox", /* Device vendor string */
"OneTouch 2400", /* Device model name */
+ MODEL_XEROX_2400,
GENESYS_GL646,
NULL,
@@ -3371,10 +4821,10 @@ static Genesys_Model xerox_2400_model = {
| GENESYS_FLAG_STAGGERED_LINE
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
- | GENESYS_FLAG_HALF_CCD_MODE
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_POWER_SW | GENESYS_HAS_OCR_SW | GENESYS_HAS_SCAN_SW,
40,
+ 0, // shading_ta_lines
200
};
@@ -3383,6 +4833,7 @@ static Genesys_Model xerox_travelscanner_model = {
"xerox-travelscanner", /* Name */
"Xerox", /* Device vendor string */
"Travelscanner 100", /* Device model name */
+ MODEL_XEROX_TRAVELSCANNER_100,
GENESYS_GL841,
NULL,
@@ -3428,6 +4879,7 @@ static Genesys_Model xerox_travelscanner_model = {
| GENESYS_FLAG_DARK_CALIBRATION,
GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE,
100,
+ 0, // shading_ta_lines
400
};
@@ -3435,6 +4887,7 @@ static Genesys_Model plustek_3600_model = {
"plustek-opticbook-3600", /* Name */
"PLUSTEK", /* Device vendor string */
"OpticBook 3600", /* Device model name */
+ MODEL_PLUSTEK_OPTICPRO_3600,
GENESYS_GL841,
NULL,
{/*1200,*/ 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */
@@ -3477,11 +4930,11 @@ static Genesys_Model plustek_3600_model = {
| GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
- | GENESYS_FLAG_LAZY_INIT
- | GENESYS_FLAG_HALF_CCD_MODE,/*
+ | GENESYS_FLAG_LAZY_INIT,/*
| GENESYS_FLAG_NO_CALIBRATION,*/
GENESYS_HAS_NO_BUTTONS,
7,
+ 0, // shading_ta_lines
200
};
@@ -3489,6 +4942,7 @@ static Genesys_Model hpn6310_model = {
"hewlett-packard-scanjet-N6310", /* Name */
"Hewlett Packard", /* Device vendor string */
"ScanJet N6310", /* Device model name */
+ MODEL_HP_SCANJET_N6310,
GENESYS_GL847,
NULL,
@@ -3536,10 +4990,10 @@ static Genesys_Model hpn6310_model = {
| GENESYS_FLAG_CUSTOM_GAMMA
| GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_NO_CALIBRATION,
-/* | GENESYS_FLAG_HALF_CCD_MODE,*/
GENESYS_HAS_NO_BUTTONS,
100,
+ 0, // shading_ta_lines
100
};
@@ -3548,6 +5002,7 @@ static Genesys_Model plustek_3800_model = {
"plustek-opticbook-3800", /* Name */
"PLUSTEK", /* Device vendor string */
"OpticBook 3800", /* Device model name */
+ MODEL_PLUSTEK_OPTICBOOK_3800,
GENESYS_GL845,
NULL,
@@ -3592,6 +5047,7 @@ static Genesys_Model plustek_3800_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_NO_BUTTONS, /* TODO there are 4 buttons to support */
100,
+ 0, // shading_ta_lines
100
};
@@ -3600,6 +5056,7 @@ static Genesys_Model canon_formula101_model = {
"canon-image-formula-101", /* Name */
"Canon", /* Device vendor string */
"Image Formula 101", /* Device model name */
+ MODEL_CANON_IMAGE_FORMULA_101,
GENESYS_GL846,
NULL,
@@ -3644,6 +5101,7 @@ static Genesys_Model canon_formula101_model = {
GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_NO_BUTTONS ,
100,
+ 0, // shading_ta_lines
100
};
@@ -3684,6 +5142,7 @@ static Genesys_USB_Device_Entry genesys_usb_device_list[] = {
{0x03f0, 0x4605, &hpg4050_model},
{0x04a9, 0x2228, &canon_4400f_model},
{0x04a9, 0x221e, &canon_8400f_model},
+ {0x04a9, 0x2229, &canon_8600f_model},
/* GL845 devices */
{0x07b3, 0x1300, &plustek_3800_model},
/* GL846 devices */
diff --git a/backend/genesys_error.cc b/backend/genesys_error.cc
new file mode 100644
index 0000000..c98a490
--- /dev/null
+++ b/backend/genesys_error.cc
@@ -0,0 +1,115 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#define DEBUG_DECLARE_ONLY
+
+#include "genesys_error.h"
+#include <cstdarg>
+#include <cstdio>
+
+extern "C" void sanei_debug_msg(int level, int max_level, const char *be, const char *fmt,
+ va_list ap);
+
+#if (defined(__GNUC__) || defined(__CLANG__)) && (defined(__linux__) || defined(__APPLE__))
+extern "C" char* __cxa_get_globals();
+#endif
+
+static unsigned num_uncaught_exceptions()
+{
+#if __cplusplus >= 201703L
+ int count = std::uncaught_exceptions();
+ return count >= 0 ? count : 0;
+#elif (defined(__GNUC__) || defined(__CLANG__)) && (defined(__linux__) || defined(__APPLE__))
+ // the format of the __cxa_eh_globals struct is enshrined into the Itanium C++ ABI and it's
+ // very unlikely we'll get issues referencing it directly
+ char* cxa_eh_globals_ptr = __cxa_get_globals();
+ return *reinterpret_cast<unsigned*>(cxa_eh_globals_ptr + sizeof(void*));
+#else
+ return std::uncaught_exception() ? 1 : 0;
+#endif
+}
+
+DebugMessageHelper::DebugMessageHelper(const char* func)
+{
+ func_ = func;
+ num_exceptions_on_enter_ = num_uncaught_exceptions();
+ msg_[0] = '\0';
+ DBG(DBG_proc, "%s: start\n", func_);
+}
+
+DebugMessageHelper::DebugMessageHelper(const char* func, const char* format, ...)
+{
+ func_ = func;
+ num_exceptions_on_enter_ = num_uncaught_exceptions();
+ msg_[0] = '\0';
+ DBG(DBG_proc, "%s: start\n", func_);
+ DBG(DBG_proc, "%s: ", func_);
+
+ std::va_list args;
+ va_start(args, format);
+ sanei_debug_msg(DBG_proc, DBG_LEVEL, STRINGIFY(BACKEND_NAME), format, args);
+ va_end(args);
+ DBG(DBG_proc, "\n");
+}
+
+
+DebugMessageHelper::~DebugMessageHelper()
+{
+ if (num_exceptions_on_enter_ < num_uncaught_exceptions()) {
+ if (msg_[0] != '\0') {
+ DBG(DBG_error, "%s: failed during %s\n", func_, msg_);
+ } else {
+ DBG(DBG_error, "%s: failed\n", func_);
+ }
+ } else {
+ DBG(DBG_proc, "%s: completed\n", func_);
+ }
+}
+
+void DebugMessageHelper::vstatus(const char* format, ...)
+{
+ std::va_list args;
+ va_start(args, format);
+ std::vsnprintf(msg_, MAX_BUF_SIZE, format, args);
+ va_end(args);
+}
diff --git a/backend/genesys_error.h b/backend/genesys_error.h
new file mode 100644
index 0000000..d456581
--- /dev/null
+++ b/backend/genesys_error.h
@@ -0,0 +1,202 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#ifndef BACKEND_GENESYS_ERROR_H
+#define BACKEND_GENESYS_ERROR_H
+
+#include "../include/sane/config.h"
+#include "../include/sane/sane.h"
+#include "../include/sane/sanei_backend.h"
+
+#include <stdexcept>
+#include <cstring>
+#include <string>
+
+#define DBG_error0 0 /* errors/warnings printed even with devuglevel 0 */
+#define DBG_error 1 /* fatal errors */
+#define DBG_init 2 /* initialization and scanning time messages */
+#define DBG_warn 3 /* warnings and non-fatal errors */
+#define DBG_info 4 /* informational messages */
+#define DBG_proc 5 /* starting/finishing functions */
+#define DBG_io 6 /* io functions */
+#define DBG_io2 7 /* io functions that are called very often */
+#define DBG_data 8 /* log image data */
+
+class SaneException : std::exception {
+public:
+ SaneException(SANE_Status status) : status_(status)
+ {
+ set_msg(nullptr);
+ }
+
+ SaneException(SANE_Status status, const char* msg) : status_(status)
+ {
+ set_msg(msg);
+ }
+
+ SaneException(const char* msg) : SaneException(SANE_STATUS_INVAL, msg) {}
+
+ SANE_Status status() const { return status_; }
+ virtual const char* what() const noexcept override { return msg_.c_str(); }
+
+private:
+
+ void set_msg(const char* msg)
+ {
+ const char* status_msg = sane_strstatus(status_);
+ std::size_t status_msg_len = std::strlen(status_msg);
+
+ if (msg) {
+ std::size_t msg_len = std::strlen(msg);
+ msg_.reserve(msg_len + status_msg_len + 3);
+ msg_ = msg;
+ msg_ += " : ";
+ msg_ += status_msg;
+ return;
+ }
+
+ msg_.reserve(status_msg_len);
+ msg_ = status_msg;
+ }
+
+ std::string msg_;
+ SANE_Status status_;
+};
+
+/**
+ * call a function and return on error
+ */
+#define RIE(function) \
+ do { status = function; \
+ if (status != SANE_STATUS_GOOD) \
+ { \
+ DBG(DBG_error, "%s: %s\n", __func__, sane_strstatus (status)); \
+ return status; \
+ } \
+ } while (SANE_FALSE)
+
+// call a function and throw an exception on error
+#define TIE(function) \
+ do { \
+ SANE_Status tmp_status = function; \
+ if (tmp_status != SANE_STATUS_GOOD) { \
+ throw SaneException(tmp_status); \
+ } \
+ } while (false)
+
+#define DBGSTART DBG (DBG_proc, "%s start\n", __func__);
+#define DBGCOMPLETED DBG (DBG_proc, "%s completed\n", __func__);
+
+class DebugMessageHelper {
+public:
+ static constexpr unsigned MAX_BUF_SIZE = 120;
+
+ DebugMessageHelper(const char* func);
+ DebugMessageHelper(const char* func, const char* format, ...)
+ #ifdef __GNUC__
+ __attribute__((format(printf, 3, 4)))
+ #endif
+ ;
+
+ ~DebugMessageHelper();
+
+ void status(const char* msg) { vstatus("%s", msg); }
+ void vstatus(const char* format, ...)
+ #ifdef __GNUC__
+ __attribute__((format(printf, 2, 3)))
+ #endif
+ ;
+
+ void clear() { msg_[0] = '\n'; }
+
+private:
+ const char* func_ = nullptr;
+ char msg_[MAX_BUF_SIZE];
+ unsigned num_exceptions_on_enter_ = 0;
+};
+
+#define DBG_HELPER(var) DebugMessageHelper var(__func__)
+#define DBG_HELPER_ARGS(var, ...) DebugMessageHelper var(__func__, __VA_ARGS__)
+
+template<class F>
+SANE_Status wrap_exceptions_to_status_code(const char* func, F&& function)
+{
+ try {
+ return function();
+ } catch (const SaneException& exc) {
+ return exc.status();
+ } catch (const std::bad_alloc& exc) {
+ return SANE_STATUS_NO_MEM;
+ } catch (const std::exception& exc) {
+ DBG(DBG_error, "%s: got uncaught exception: %s\n", func, exc.what());
+ return SANE_STATUS_INVAL;
+ } catch (...) {
+ DBG(DBG_error, "%s: got unknown uncaught exception\n", func);
+ return SANE_STATUS_INVAL;
+ }
+}
+
+template<class F>
+void catch_all_exceptions(const char* func, F&& function)
+{
+ try {
+ function();
+ } catch (const SaneException& exc) {
+ DBG(DBG_error, "%s: got exception: %s\n", func, exc.what());
+ } catch (const std::bad_alloc& exc) {
+ DBG(DBG_error, "%s: got exception: could not allocate memory: %s\n", func, exc.what());
+ } catch (const std::exception& exc) {
+ DBG(DBG_error, "%s: got uncaught exception: %s\n", func, exc.what());
+ } catch (...) {
+ DBG(DBG_error, "%s: got unknown uncaught exception\n", func);
+ }
+}
+
+inline void wrap_status_code_to_exception(SANE_Status status)
+{
+ if (status == SANE_STATUS_GOOD)
+ return;
+ throw SaneException(status);
+}
+
+#endif // BACKEND_GENESYS_ERROR_H
diff --git a/backend/genesys_gl124.c b/backend/genesys_gl124.cc
index a98d3d4..a535d58 100644
--- a/backend/genesys_gl124.c
+++ b/backend/genesys_gl124.cc
@@ -42,192 +42,39 @@
If you do not wish that, delete this exception notice.
*/
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl124
+#define DEBUG_DECLARE_ONLY
#include "genesys_gl124.h"
-/****************************************************************************
- Low level function
- ****************************************************************************/
-
-/* ------------------------------------------------------------------------ */
-/* Read and write RAM, registers and AFE */
-/* ------------------------------------------------------------------------ */
-
-
-/** @brief read scanned data
- * Read in 0xeff0 maximum sized blocks. This read is done in 2
- * parts if not multple of 512. First read is rounded to a multiple of 512 bytes, last read fetches the
- * remainder. Read addr is always 0x10000000 with the memory layout setup.
- * @param dev device to read data from
- * @param addr address within ASIC emory space
- * @param data pointer where to store the read data
- * @param len size to read
- */
-static SANE_Status
-gl124_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size, target, read, done;
- uint8_t outdata[8], *buffer;
-
- DBG (DBG_io, "gl124_bulk_read_data: requesting %lu bytes (unused addr=0x%02x)\n", (u_long) len,addr);
-
- if (len == 0)
- return SANE_STATUS_GOOD;
-
- target = len;
- buffer = data;
-
- /* loop until computed data size is read */
- while (target)
- {
- if (target > 0xeff0)
- {
- size = 0xeff0;
- }
- else
- {
- size = target;
- }
-
- /* hard coded 0x10000000 addr */
- outdata[0] = 0;
- outdata[1] = 0;
- outdata[2] = 0;
- outdata[3] = 0x10;
-
- /* data size to transfer */
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, 0x00, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s failed while writing command: %s\n",
- __func__, sane_strstatus (status));
- return status;
- }
-
- /* blocks must be multiple of 512 but not last block */
- read = size;
- read /= 512;
- read *= 512;
-
- if(read>0)
- {
- DBG (DBG_io2,
- "gl124_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, data, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl124_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
-
- /* read less than 512 bytes remainder */
- if (read < size)
- {
- done = read;
- read = size - read;
- DBG (DBG_io2,
- "gl124_bulk_read_data: trying to read remaining %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, data+done, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl124_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
-
- DBG (DBG_io2, "%s: read %lu bytes, %lu remaining\n", __func__,
- (u_long) size, (u_long) (target - size));
-
- target -= size;
- data += size;
- }
-
- if (DBG_LEVEL >= DBG_data && dev->binary!=NULL)
- {
- fwrite(buffer, len, 1, dev->binary);
- }
-
- DBGCOMPLETED;
-
- return SANE_STATUS_GOOD;
-}
+#include <vector>
/****************************************************************************
Mid level functions
****************************************************************************/
-static SANE_Bool
-gl124_get_fast_feed_bit (Genesys_Register_Set * regs)
+static SANE_Bool gl124_get_fast_feed_bit(Genesys_Register_Set* regs)
{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG02);
- if (r && (r->value & REG02_FASTFED))
- return SANE_TRUE;
- return SANE_FALSE;
+ return (bool)(regs->get8(REG02) & REG02_FASTFED);
}
-static SANE_Bool
-gl124_get_filter_bit (Genesys_Register_Set * regs)
+static SANE_Bool gl124_get_filter_bit(Genesys_Register_Set* regs)
{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_FILTER))
- return SANE_TRUE;
- return SANE_FALSE;
+ return (bool)(regs->get8(REG04) & REG04_FILTER);
}
-static SANE_Bool
-gl124_get_lineart_bit (Genesys_Register_Set * regs)
+static SANE_Bool gl124_get_lineart_bit(Genesys_Register_Set* regs)
{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_LINEART))
- return SANE_TRUE;
- return SANE_FALSE;
+ return (bool)(regs->get8(REG04) & REG04_LINEART);
}
-static SANE_Bool
-gl124_get_bitset_bit (Genesys_Register_Set * regs)
+static SANE_Bool gl124_get_bitset_bit(Genesys_Register_Set* regs)
{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_BITSET))
- return SANE_TRUE;
- return SANE_FALSE;
+ return (bool)(regs->get8(REG04) & REG04_BITSET);
}
-static SANE_Bool
-gl124_get_gain4_bit (Genesys_Register_Set * regs)
+static SANE_Bool gl124_get_gain4_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG06);
- if (r && (r->value & REG06_GAIN4))
- return SANE_TRUE;
- return SANE_FALSE;
+ return (bool)(regs->get8(REG06) & REG06_GAIN4);
}
static SANE_Bool
@@ -302,13 +149,6 @@ static Sensor_Profile *get_sensor_profile(int sensor_type, int dpi, int half_ccd
}
-/* returns the max register bulk size */
-static int
-gl124_bulk_full_size (void)
-{
- return GENESYS_GL124_MAX_REGS;
-}
-
static SANE_Status
gl124_homsnr_gpio(Genesys_Device *dev)
{
@@ -328,10 +168,10 @@ SANE_Status status=SANE_STATUS_GOOD;
* @param xres required horizontal resolution
* @return SANE_TRUE if half CCD mode enabled
*/
-static SANE_Bool compute_half_ccd(Genesys_Model *model, int xres)
+static SANE_Bool compute_half_ccd(const Genesys_Sensor& sensor, int xres)
{
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if (xres<=300 && (model->flags & GENESYS_FLAG_HALF_CCD_MODE))
+ if (xres<=300 && sensor.ccd_size_divisor > 1)
{
return SANE_TRUE;
}
@@ -350,7 +190,7 @@ gl124_init_registers (Genesys_Device * dev)
{
DBGSTART;
- memset (dev->reg, 0, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg.clear();
/* default to LiDE 110 */
SETREG (0x01,0xa2); /* + REG01_SHDAREA */
@@ -623,26 +463,24 @@ gl124_init_registers (Genesys_Device * dev)
SETREG (0xff,0x00);
/* fine tune upon device description */
- dev->reg[reg_0x05].value &= ~REG05_DPIHW;
- switch (dev->sensor.optical_res)
+ dev->reg.find_reg(0x05).value &= ~REG05_DPIHW;
+ switch (sanei_genesys_find_sensor_any(dev).optical_res)
{
case 600:
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
break;
case 1200:
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
break;
case 2400:
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
break;
case 4800:
- dev->reg[reg_0x05].value |= REG05_DPIHW_4800;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_4800;
break;
}
- /* initalize calibration reg */
- memcpy (dev->calib_reg, dev->reg,
- GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->calib_reg = dev->reg;
DBGCOMPLETED;
}
@@ -655,12 +493,11 @@ gl124_init_registers (Genesys_Device * dev)
* @param slope_table pointer to 16 bit values array of the slope table
* @param steps number of elemnts in the slope table
*/
-GENESYS_STATIC SANE_Status
+static SANE_Status
gl124_send_slope_table (Genesys_Device * dev, int table_nr,
uint16_t * slope_table, int steps)
{
- SANE_Status status;
- uint8_t *table;
+ SANE_Status status = SANE_STATUS_GOOD;
int i;
char msg[10000];
@@ -674,7 +511,7 @@ gl124_send_slope_table (Genesys_Device * dev, int table_nr,
return SANE_STATUS_INVAL;
}
- table = (uint8_t *) malloc (steps * 2);
+ std::vector<uint8_t> table(steps * 2);
for (i = 0; i < steps; i++)
{
table[i * 2] = slope_table[i] & 0xff;
@@ -692,8 +529,7 @@ gl124_send_slope_table (Genesys_Device * dev, int table_nr,
}
/* slope table addresses are fixed */
- status =
- sanei_genesys_write_ahb (dev->dn, dev->usb_mode, 0x10000000 + 0x4000 * table_nr, steps * 2, table);
+ status = sanei_genesys_write_ahb(dev, 0x10000000 + 0x4000 * table_nr, steps * 2, table.data());
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@@ -701,7 +537,6 @@ gl124_send_slope_table (Genesys_Device * dev, int table_nr,
__func__, table_nr, sane_strstatus (status));
}
- free (table);
DBGCOMPLETED;
return status;
}
@@ -717,15 +552,13 @@ gl124_set_ti_fe (Genesys_Device * dev, uint8_t set)
{
SANE_Status status = SANE_STATUS_GOOD;
int i;
- uint16_t val;
DBGSTART;
if (set == AFE_INIT)
{
DBG (DBG_proc, "%s: setting DAC %u\n", __func__, dev->model->dac_type);
- /* sets to default values */
- sanei_genesys_init_fe (dev);
+ dev->frontend = dev->frontend_initial;
}
/* start writing to DAC */
@@ -738,15 +571,13 @@ gl124_set_ti_fe (Genesys_Device * dev, uint8_t set)
}
/* write values to analog frontend */
- for (i = 1; i < 4; i++)
+ for (uint16_t addr = 0x01; addr < 0x04; addr++)
{
- val = dev->frontend.reg[i];
- status = sanei_genesys_fe_write_data (dev, i, val);
+ status = sanei_genesys_fe_write_data(dev, addr, dev->frontend.regs.get_value(addr));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to write reg %d: %s\n", __func__, i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write reg %d: %s\n", __func__, addr,
+ sane_strstatus(status));
return status;
}
}
@@ -762,8 +593,7 @@ gl124_set_ti_fe (Genesys_Device * dev, uint8_t set)
/* these are not really sign for this AFE */
for (i = 0; i < 3; i++)
{
- val = dev->frontend.sign[i];
- status = sanei_genesys_fe_write_data (dev, 0x05 + i, val);
+ status = sanei_genesys_fe_write_data(dev, 0x05 + i, dev->frontend.regs.get_value(0x24 + i));
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@@ -797,29 +627,23 @@ gl124_set_ti_fe (Genesys_Device * dev, uint8_t set)
/* Set values of analog frontend */
static SANE_Status
-gl124_set_fe (Genesys_Device * dev, uint8_t set)
+gl124_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
{
- SANE_Status status;
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
- DBG (DBG_proc, "gl124_set_fe (%s)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
- AFE_POWER_SAVE ? "powersave" : "huh?");
+ DBG(DBG_proc, "%s (%s)\n", __func__, set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
+ AFE_POWER_SAVE ? "powersave" : "huh?");
if (set == AFE_INIT)
{
- DBG (DBG_proc, "gl124_set_fe(): setting DAC %u\n",
- dev->model->dac_type);
- sanei_genesys_init_fe (dev);
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
+ dev->frontend = dev->frontend_initial;
}
RIE (sanei_genesys_read_register (dev, REG0A, &val));
- if(dev->usb_mode<0)
- {
- val=3<<REG0AS_SIFSEL;
- }
-
/* route to correct analog FE */
switch ((val & REG0A_SIFSEL)>>REG0AS_SIFSEL)
{
@@ -830,7 +654,7 @@ gl124_set_fe (Genesys_Device * dev, uint8_t set)
case 1:
case 2:
default:
- DBG (DBG_error, "%s: unsupported analog FE 0x%02x\n",__func__,val);
+ DBG(DBG_error, "%s: unsupported analog FE 0x%02x\n", __func__, val);
status=SANE_STATUS_INVAL;
break;
}
@@ -848,15 +672,14 @@ gl124_set_fe (Genesys_Device * dev, uint8_t set)
*/
static int gl124_compute_exposure(Genesys_Device *dev, int xres, int half_ccd)
{
- Sensor_Profile *sensor;
-
- sensor=get_sensor_profile(dev->model->ccd_type, xres, half_ccd);
- return sensor->exposure;
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, xres, half_ccd);
+ return sensor_profile->exposure;
}
static SANE_Status
gl124_init_motor_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int scan_exposure_time,
float scan_yres,
@@ -864,30 +687,26 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
unsigned int scan_lines,
unsigned int scan_dummy,
unsigned int feed_steps,
- int scan_mode,
+ ScanColorMode scan_mode,
unsigned int flags)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int use_fast_fed;
unsigned int lincnt, fast_dpi;
uint16_t scan_table[SLOPE_TABLE_SIZE];
uint16_t fast_table[SLOPE_TABLE_SIZE];
int scan_steps,fast_steps,factor;
unsigned int feedl,dist;
- Genesys_Register_Set *r;
uint32_t z1, z2;
float yres;
int min_speed;
unsigned int linesel;
DBGSTART;
- DBG (DBG_info, "gl124_init_motor_regs_scan : scan_exposure_time=%d, "
- "scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
- "feed_steps=%d, scan_mode=%d, flags=%x\n",
- scan_exposure_time,
- scan_yres,
- scan_step_type,
- scan_lines, scan_dummy, feed_steps, scan_mode, flags);
+ DBG(DBG_info, "%s : scan_exposure_time=%d, scan_yres=%g, scan_step_type=%d, scan_lines=%d, "
+ "scan_dummy=%d, feed_steps=%d, scan_mode=%d, flags=%x\n", __func__, scan_exposure_time,
+ scan_yres, scan_step_type, scan_lines, scan_dummy, feed_steps,
+ static_cast<unsigned>(scan_mode), flags);
/* we never use fast fed since we do manual feed for the scans */
use_fast_fed=0;
@@ -895,7 +714,7 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
/* enforce motor minimal scan speed
* @TODO extend motor struct for this value */
- if (scan_mode == SCAN_MODE_COLOR)
+ if (scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
{
min_speed = 900;
}
@@ -940,21 +759,25 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
DBG (DBG_io, "%s: lincnt=%d\n", __func__, lincnt);
/* compute register 02 value */
- r = sanei_genesys_get_address (reg, REG02);
- r->value = REG02_NOTHOME;
- r->value |= REG02_MTRPWR;
+ uint8_t r02 = REG02_NOTHOME;
- if (use_fast_fed)
- r->value |= REG02_FASTFED;
- else
- r->value &= ~REG02_FASTFED;
+ if (use_fast_fed) {
+ r02 |= REG02_FASTFED;
+ } else {
+ r02 &= ~REG02_FASTFED;
+ }
- if (flags & MOTOR_FLAG_AUTO_GO_HOME)
- r->value |= REG02_AGOHOME;
+ if (flags & MOTOR_FLAG_AUTO_GO_HOME)
+ r02 |= REG02_AGOHOME;
- if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
- ||(yres>=dev->sensor.optical_res))
- r->value |= REG02_ACDCDIS;
+ if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ ||(yres>=sensor.optical_res))
+ {
+ r02 |= REG02_ACDCDIS;
+ }
+
+ reg->set8(REG02, r02);
+ sanei_genesys_set_motor_power(*reg, true);
/* SCANFED */
sanei_genesys_set_double(reg,REG_SCANFED,4);
@@ -979,7 +802,7 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
fast_dpi=yres;
/*
- if (scan_mode != SCAN_MODE_COLOR)
+ if (scan_mode != ScanColorMode::COLOR_SINGLE_PASS)
{
fast_dpi*=3;
}
@@ -1037,18 +860,15 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
&z1,
&z2);
- sanei_genesys_set_triple(reg,REG_Z1MOD,z1);
- DBG (DBG_info, "gl124_init_motor_regs_scan: z1 = %d\n", z1);
+ sanei_genesys_set_triple(reg, REG_Z1MOD,z1);
+ DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
- sanei_genesys_set_triple(reg,REG_Z2MOD,z2);
- DBG (DBG_info, "gl124_init_motor_regs_scan: z2 = %d\n", z2);
+ sanei_genesys_set_triple(reg, REG_Z2MOD, z2);
+ DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
/* LINESEL */
- r = sanei_genesys_get_address (reg, REG1D);
- r->value = (r->value & ~REG1D_LINESEL) | linesel;
-
- r = sanei_genesys_get_address (reg, REGA0);
- r->value = (scan_step_type << REGA0S_STEPSEL) | (scan_step_type << REGA0S_FSTPSEL);
+ reg->set8_mask(REG1D, linesel, REG1D_LINESEL);
+ reg->set8(REGA0, (scan_step_type << REGA0S_STEPSEL) | (scan_step_type << REGA0S_FSTPSEL));
/* FMOVDEC */
sanei_genesys_set_double(reg,REG_FMOVDEC,fast_steps);
@@ -1070,112 +890,74 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
* @param dpi resolution of the sensor during scan
* @param half_ccd flag for half ccd mode
* */
-static void
-gl124_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi, int half_ccd)
+static void gl124_setup_sensor(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs, int dpi, int half_ccd)
{
- Genesys_Register_Set *r;
- int i;
- Sensor_Profile *sensor;
int dpihw;
uint32_t exp;
DBGSTART;
- /* we start at 6, 0-5 is a 16 bits cache for exposure */
- for (i = 0x06; i < 0x0e; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- if (r)
- {
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
+ // we start at 6, 0-5 is a 16 bits cache for exposure
+ for (uint16_t addr = 0x16; addr < 0x1e; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
- /* skip writing 5d,5e which is AFE address because
- * they are not deifned in register set */
- for (i = 0; i < 11; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- if (r)
- {
- r->value = dev->sensor.regs_0x52_0x5e[i];
- }
+ // skip writing 5d,5e which is AFE address because
+ // they are not defined in register set */
+ for (uint16_t addr = 0x52; addr < 0x52 + 11; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
/* set EXPDUMMY and CKxMAP */
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
+ dpihw = sanei_genesys_compute_dpihw(dev, sensor, dpi);
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
- r = sanei_genesys_get_address (regs, 0x18);
- if (r)
- {
- r->value = sensor->reg18;
- }
- r = sanei_genesys_get_address (regs, 0x20);
- if (r)
- {
- r->value = sensor->reg20;
+ regs->set8(0x18, sensor_profile->reg18);
+ regs->set8(0x20, sensor_profile->reg20);
+ regs->set8(0x61, sensor_profile->reg61);
+ regs->set8(0x98, sensor_profile->reg98);
+ if (sensor_profile->reg16 != 0) {
+ regs->set8(0x16, sensor_profile->reg16);
}
- r = sanei_genesys_get_address (regs, 0x61);
- if (r)
- {
- r->value = sensor->reg61;
- }
- r = sanei_genesys_get_address (regs, 0x98);
- if (r)
- {
- r->value = sensor->reg98;
+ if (sensor_profile->reg70 != 0) {
+ regs->set8(0x70, sensor_profile->reg70);
}
- if(sensor->reg16!=0)
- {
- r = sanei_genesys_get_address (regs, 0x16);
- if (r)
- {
- r->value = sensor->reg16;
- }
- }
- if(sensor->reg70!=0)
- {
- r = sanei_genesys_get_address (regs, 0x70);
- if (r)
- {
- r->value = sensor->reg70;
- }
- }
- sanei_genesys_set_triple(regs,REG_SEGCNT,sensor->segcnt);
- sanei_genesys_set_double(regs,REG_TG0CNT,sensor->tg0cnt);
- sanei_genesys_set_double(regs,REG_EXPDMY,sensor->expdummy);
+ sanei_genesys_set_triple(regs,REG_SEGCNT,sensor_profile->segcnt);
+ sanei_genesys_set_double(regs,REG_TG0CNT,sensor_profile->tg0cnt);
+ sanei_genesys_set_double(regs,REG_EXPDMY,sensor_profile->expdummy);
/* if no calibration has been done, set default values for exposures */
- exp=dev->sensor.regs_0x10_0x1d[0]*256+dev->sensor.regs_0x10_0x1d[1];
+ exp = sensor.exposure.red;
if(exp==0)
{
- exp=sensor->expr;
+ exp=sensor_profile->expr;
}
sanei_genesys_set_triple(regs,REG_EXPR,exp);
- exp=dev->sensor.regs_0x10_0x1d[2]*256+dev->sensor.regs_0x10_0x1d[3];
+ exp =sensor.exposure.green;
if(exp==0)
{
- exp=sensor->expg;
+ exp=sensor_profile->expg;
}
sanei_genesys_set_triple(regs,REG_EXPG,exp);
- exp=dev->sensor.regs_0x10_0x1d[4]*256+dev->sensor.regs_0x10_0x1d[5];
+ exp = sensor.exposure.blue;
if(exp==0)
{
- exp=sensor->expb;
+ exp=sensor_profile->expb;
}
sanei_genesys_set_triple(regs,REG_EXPB,exp);
- sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
- sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
- sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
+ sanei_genesys_set_triple(regs,REG_CK1MAP,sensor_profile->ck1map);
+ sanei_genesys_set_triple(regs,REG_CK3MAP,sensor_profile->ck3map);
+ sanei_genesys_set_triple(regs,REG_CK4MAP,sensor_profile->ck4map);
/* order of the sub-segments */
- dev->order=sensor->order;
+ dev->order=sensor_profile->order;
DBGCOMPLETED;
}
@@ -1200,6 +982,7 @@ gl124_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi,
*/
static SANE_Status
gl124_init_optical_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int exposure_time,
int used_res,
@@ -1208,21 +991,20 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
int channels,
int depth,
SANE_Bool half_ccd,
- int color_filter,
+ ColorFilter color_filter,
int flags)
{
unsigned int words_per_line, segcnt;
unsigned int startx, endx, used_pixels, segnb;
unsigned int dpiset, cksel, dpihw, factor;
unsigned int bytes;
- Genesys_Register_Set *r;
- SANE_Status status;
+ GenesysRegister *r;
+ SANE_Status status = SANE_STATUS_GOOD;
uint32_t expmax, exp;
- DBG (DBG_proc, "%s : exposure_time=%d, "
- "used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
- "half_ccd=%d, flags=%x\n", __func__, exposure_time,
- used_res, start, pixels, channels, depth, half_ccd, flags);
+ DBG(DBG_proc, "%s : exposure_time=%d, used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
+ "half_ccd=%d, flags=%x\n", __func__, exposure_time, used_res, start, pixels, channels, depth,
+ half_ccd, flags);
/* resolution is divided according to CKSEL */
r = sanei_genesys_get_address (reg, REG18);
@@ -1231,16 +1013,16 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
/* to manage high resolution device while keeping good
* low resolution scanning speed, we make hardware dpi vary */
- dpihw=sanei_genesys_compute_dpihw(dev, used_res * cksel);
- factor=dev->sensor.optical_res/dpihw;
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, used_res * cksel);
+ factor=sensor.optical_res/dpihw;
DBG (DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
/* sensor parameters */
- gl124_setup_sensor (dev, reg, dpihw, half_ccd);
+ gl124_setup_sensor(dev, sensor, reg, dpihw, half_ccd);
dpiset = used_res * cksel;
/* start and end coordinate in optical dpi coordinates */
- /* startx = start/cksel + dev->sensor.dummy_pixel; XXX STEF XXX */
+ /* startx = start/cksel + sensor.dummy_pixel; XXX STEF XXX */
startx = start/cksel;
used_pixels=pixels/cksel;
endx = startx + used_pixels;
@@ -1250,7 +1032,7 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
endx/=factor;
used_pixels=endx-startx;
- status = gl124_set_fe (dev, AFE_SET);
+ status = gl124_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to set frontend: %s\n", __func__,
@@ -1284,10 +1066,7 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
DBG (DBG_io, "%s: enabling AVEENB\n", __func__);
}
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value &= ~REG03_LAMPPWR;
- else
- r->value |= REG03_LAMPPWR;
+ sanei_genesys_set_lamp_power(dev, sensor, *reg, !(flags & OPTICAL_FLAG_DISABLE_LAMP));
/* BW threshold */
RIE (sanei_genesys_write_register (dev, REG114, dev->settings.threshold));
@@ -1315,15 +1094,17 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
{
switch (color_filter)
{
- case 0:
- r->value |= 0x10; /* red filter */
- break;
- case 2:
- r->value |= 0x30; /* blue filter */
- break;
- default:
- r->value |= 0x20; /* green filter */
- break;
+ case ColorFilter::RED:
+ r->value |= 0x10;
+ break;
+ case ColorFilter::BLUE:
+ r->value |= 0x30;
+ break;
+ case ColorFilter::GREEN:
+ r->value |= 0x20;
+ break;
+ default:
+ break; // should not happen
}
}
@@ -1388,9 +1169,9 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
{
expmax=exp;
}
- sanei_genesys_set_triple(dev->reg,REG_EXPR,expmax);
- sanei_genesys_set_triple(dev->reg,REG_EXPG,expmax);
- sanei_genesys_set_triple(dev->reg,REG_EXPB,expmax);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPR,expmax);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPG,expmax);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPB,expmax);
}
/* RGB weighting, REG_TRUER,G and B are to be set */
r = sanei_genesys_get_address (reg, 0x01);
@@ -1451,11 +1232,8 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
dev->wpl = words_per_line;
/* allocate buffer for odd/even pixels handling */
- if(dev->oe_buffer.buffer!=NULL)
- {
- sanei_genesys_buffer_free (&(dev->oe_buffer));
- }
- RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), dev->wpl));
+ dev->oe_buffer.clear();
+ dev->oe_buffer.alloc(dev->wpl);
/* MAXWD is expressed in 2 words unit */
sanei_genesys_set_triple(reg,REG_MAXWD,(words_per_line));
@@ -1464,7 +1242,7 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
sanei_genesys_set_triple(reg,REG_LPERIOD,exposure_time);
DBG (DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
- sanei_genesys_set_double(reg,REG_DUMMY,dev->sensor.dummy_pixel);
+ sanei_genesys_set_double(reg,REG_DUMMY,sensor.dummy_pixel);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -1474,23 +1252,12 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
*
* this function sets up the scanner to scan in normal or single line mode
*/
-GENESYS_STATIC
-SANE_Status
-gl124_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- __sane_unused__ int scan_method,
- int scan_mode,
- int color_filter,
- unsigned int flags)
+static SANE_Status
+gl124_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set* reg,
+ SetupParams& params)
{
+ params.assert_valid();
+
int used_res;
int start, used_pixels;
int bytes_per_line;
@@ -1507,36 +1274,29 @@ gl124_init_scan_regs (Genesys_Device * dev,
size_t requested_buffer_size, read_buffer_size;
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
- int optical_res;
- SANE_Status status;
+ unsigned optical_res;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_info,
- "gl124_init_scan_regs settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g/%g\n"
- "Depth/Channels: %u/%u\n"
- "Flags : %x\n\n",
- xres, yres, lines, pixels, startx, starty, depth, channels, flags);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
- half_ccd=compute_half_ccd(dev->model, xres);
+ half_ccd=compute_half_ccd(sensor, params.xres);
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
if (half_ccd)
optical_res /= 2;
DBG (DBG_info, "%s: optical_res=%d\n", __func__, optical_res);
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
DBG (DBG_info, "gl124_init_scan_regs : stagger=%d lines\n", stagger);
/** @brief compute used resolution */
- if (flags & SCAN_FLAG_USE_OPTICAL_RES)
+ if (params.flags & SCAN_FLAG_USE_OPTICAL_RES)
{
used_res = optical_res;
}
@@ -1544,10 +1304,10 @@ gl124_init_scan_regs (Genesys_Device * dev,
{
/* resolution is choosen from a fixed list and can be used directly,
* unless we have ydpi higher than sensor's maximum one */
- if(xres>optical_res)
+ if(params.xres>optical_res)
used_res=optical_res;
else
- used_res = xres;
+ used_res = params.xres;
}
/* compute scan parameters values */
@@ -1555,17 +1315,17 @@ gl124_init_scan_regs (Genesys_Device * dev,
/* use detected left margin and fixed value */
/* start */
/* add x coordinates */
- start = startx;
+ start = params.startx;
if (stagger > 0)
start |= 1;
/* compute correct pixels number */
- used_pixels = (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
DBG (DBG_info, "%s: used_pixels=%d\n", __func__, used_pixels);
/* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
+ if (used_pixels * params.xres < params.pixels * optical_res)
used_pixels++;
/* we want even number of pixels here */
@@ -1575,12 +1335,12 @@ gl124_init_scan_regs (Genesys_Device * dev,
/* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color line and a FILTER of 0 */
if (dev->model->is_cis)
- slope_dpi = yres * channels;
+ slope_dpi = params.yres * params.channels;
else
- slope_dpi = yres;
+ slope_dpi = params.yres;
/* scan_step_type */
- if(flags & SCAN_FLAG_FEEDING)
+ if(params.flags & SCAN_FLAG_FEEDING)
{
scan_step_type=0;
exposure_time=MOVE_EXPOSURE;
@@ -1591,28 +1351,27 @@ gl124_init_scan_regs (Genesys_Device * dev,
scan_step_type = sanei_genesys_compute_step_type(motors, dev->model->motor_type, exposure_time);
}
- DBG (DBG_info, "gl124_init_scan_regs : exposure_time=%d pixels\n", exposure_time);
- DBG (DBG_info, "gl124_init_scan_regs : scan_step_type=%d\n", scan_step_type);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : scan_step_type=%d\n", __func__, scan_step_type);
/*** optical parameters ***/
/* in case of dynamic lineart, we use an internal 8 bit gray scan
* to generate 1 lineart data */
- if ((flags & SCAN_FLAG_DYNAMIC_LINEART) && (scan_mode == SCAN_MODE_LINEART))
- {
- depth = 8;
+ if (params.flags & SCAN_FLAG_DYNAMIC_LINEART) {
+ params.depth = 8;
}
/* we enable true gray for cis scanners only, and just when doing
* scan since color calibration is OK for this mode
*/
oflags = 0;
- if (flags & SCAN_FLAG_DISABLE_SHADING)
+ if (params.flags & SCAN_FLAG_DISABLE_SHADING)
oflags |= OPTICAL_FLAG_DISABLE_SHADING;
- if (flags & SCAN_FLAG_DISABLE_GAMMA)
+ if (params.flags & SCAN_FLAG_DISABLE_GAMMA)
oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
- if (flags & SCAN_FLAG_DISABLE_LAMP)
+ if (params.flags & SCAN_FLAG_DISABLE_LAMP)
oflags |= OPTICAL_FLAG_DISABLE_LAMP;
- if (flags & SCAN_FLAG_CALIBRATION)
+ if (params.flags & SCAN_FLAG_CALIBRATION)
oflags |= OPTICAL_FLAG_DISABLE_DOUBLE;
if (dev->model->is_cis && dev->settings.true_gray)
@@ -1622,15 +1381,16 @@ gl124_init_scan_regs (Genesys_Device * dev,
/* now _LOGICAL_ optical values used are known, setup registers */
status = gl124_init_optical_regs_scan (dev,
+ sensor,
reg,
exposure_time,
used_res,
start,
used_pixels,
- channels,
- depth,
+ params.channels,
+ params.depth,
half_ccd,
- color_filter,
+ params.color_filter,
oflags);
if (status != SANE_STATUS_GOOD)
return status;
@@ -1638,31 +1398,31 @@ gl124_init_scan_regs (Genesys_Device * dev,
/*** motor parameters ***/
/* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,flags);
+ max_shift=sanei_genesys_compute_max_shift(dev,params.channels,params.yres,params.flags);
/* lines to scan */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
/* add tl_y to base movement */
- move = starty;
- DBG (DBG_info, "gl124_init_scan_regs: move=%d steps\n", move);
+ move = params.starty;
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
mflags=0;
- if(flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ if(params.flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
mflags|=MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE;
- if(flags & SCAN_FLAG_FEEDING)
+ if(params.flags & SCAN_FLAG_FEEDING)
mflags|=MOTOR_FLAG_FEED;
- status = gl124_init_motor_regs_scan (dev,
- reg,
- exposure_time,
- slope_dpi,
- scan_step_type,
- dev->model->is_cis ? lincnt * channels : lincnt,
- dummy,
- move,
- scan_mode,
- mflags);
+ status = gl124_init_motor_regs_scan (dev, sensor,
+ reg,
+ exposure_time,
+ slope_dpi,
+ scan_step_type,
+ dev->model->is_cis ? lincnt * params.channels : lincnt,
+ dummy,
+ move,
+ params.scan_mode,
+ mflags);
if (status != SANE_STATUS_GOOD)
return status;
@@ -1670,7 +1430,7 @@ gl124_init_scan_regs (Genesys_Device * dev,
/* words_per_line */
bytes_per_line = (used_pixels * used_res) / optical_res;
- bytes_per_line = (bytes_per_line * channels * depth) / 8;
+ bytes_per_line = (bytes_per_line * params.channels * params.depth) / 8;
/* since we don't have sheetfed scanners to handle,
* use huge read buffer */
@@ -1679,74 +1439,62 @@ gl124_init_scan_regs (Genesys_Device * dev,
read_buffer_size =
2 * requested_buffer_size +
- ((max_shift + stagger) * used_pixels * channels * depth) / 8;
-
- RIE (sanei_genesys_buffer_free (&(dev->read_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->read_buffer), read_buffer_size));
+ ((max_shift + stagger) * used_pixels * params.channels * params.depth) / 8;
- RIE (sanei_genesys_buffer_free (&(dev->lines_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->lines_buffer), read_buffer_size));
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->shrink_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->shrink_buffer),
- requested_buffer_size));
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->out_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->out_buffer),
- (8 * dev->settings.pixels * channels *
- depth) / 8));
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc((8 * dev->settings.pixels * params.channels * params.depth) / 8);
dev->read_bytes_left = bytes_per_line * lincnt;
- DBG (DBG_info,
- "gl124_init_scan_regs: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
dev->read_active = SANE_TRUE;
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
- DBG (DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
+ DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
dev->total_bytes_read = 0;
- if (depth == 1)
+ if (params.depth == 1)
dev->total_bytes_to_read =
((dev->settings.pixels * dev->settings.lines) / 8 +
(((dev->settings.pixels * dev->settings.lines) % 8) ? 1 : 0)) *
- channels;
+ params.channels;
else
dev->total_bytes_to_read =
- dev->settings.pixels * dev->settings.lines * channels * (depth / 8);
+ dev->settings.pixels * dev->settings.lines * params.channels * (params.depth / 8);
- DBG (DBG_info, "gl124_init_scan_regs: total bytes to send = %lu\n",
- (u_long) dev->total_bytes_to_read);
+ DBG(DBG_info, "%s: total bytes to send = %lu\n", __func__, (u_long) dev->total_bytes_to_read);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
-static SANE_Status
-gl124_calculate_current_setup (Genesys_Device * dev)
+static void
+gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int depth;
int start;
- float xres; /*dpi */
- float yres; /*dpi */
- float startx; /*optical_res, from dummy_pixel+1 */
- float pixels;
- float lines;
-
int used_res;
int used_pixels;
unsigned int lincnt;
@@ -1755,61 +1503,52 @@ gl124_calculate_current_setup (Genesys_Device * dev)
SANE_Bool half_ccd;
int max_shift, dpihw;
- Sensor_Profile *sensor;
int optical_res;
- DBG (DBG_info,
- "gl124_calculate_current_setup settings:\n"
- "Resolution: %ux%uDPI\n"
- "Lines : %u\n"
- "PPL : %u\n"
- "Startpos : %.3f/%.3f\n"
- "Scan mode : %d\n\n",
- dev->settings.xres,
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == 4) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == 0)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
-
- xres = dev->settings.xres;
- yres = dev->settings.yres;
- startx = start;
- pixels = dev->settings.pixels;
- lines = dev->settings.lines;
-
- half_ccd=compute_half_ccd(dev->model, xres);
-
- DBG (DBG_info,
- "gl124_calculate_current_setup settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g\n"
- "Half ccd : %d\n"
- "Depth/Channels: %u/%u\n\n",
- xres, yres, lines, pixels, startx, depth, half_ccd, channels);
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = 0; // not used
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = 0;
+
+ half_ccd=compute_half_ccd(sensor, params.xres);
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
- if(xres<=optical_res)
- used_res = xres;
+ if (params.xres <= (unsigned) optical_res)
+ used_res = params.xres;
else
used_res=optical_res;
@@ -1818,91 +1557,46 @@ gl124_calculate_current_setup (Genesys_Device * dev)
/* use detected left margin and fixed value */
/* compute correct pixels number */
- used_pixels = (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
DBG (DBG_info, "%s: used_pixels=%d\n", __func__, used_pixels);
/* exposure */
- exposure_time = gl124_compute_exposure (dev, xres, half_ccd);
+ exposure_time = gl124_compute_exposure (dev, params.xres, half_ccd);
DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
/* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,0);
+ max_shift=sanei_genesys_compute_max_shift(dev, params.channels, params.yres, 0);
/* compute hw dpi for sensor */
- dpihw=sanei_genesys_compute_dpihw(dev,used_res);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor,used_res);
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
- dev->segnb=sensor->reg98 & 0x0f;
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
+ dev->segnb=sensor_profile->reg98 & 0x0f;
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
DBG (DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
DBG (DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static void
-gl124_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
-
- DBG (DBG_proc, "gl124_set_motor_power\n");
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- | REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- & ~REG02_MTRPWR);
- }
-}
-
-static void
-gl124_set_lamp_power (Genesys_Device * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- if (dev == NULL || regs==NULL)
- return;
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set (regs,
- 0x03)
- | REG03_LAMPPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set (regs,
- 0x03)
- & ~REG03_LAMPPWR);
- }
}
/**
@@ -1913,7 +1607,7 @@ gl124_set_lamp_power (Genesys_Device * dev,
static SANE_Status
gl124_save_power (Genesys_Device * dev, SANE_Bool enable)
{
- DBG (DBG_proc, "gl124_save_power: enable = %d\n", enable);
+ DBG(DBG_proc, "%s: enable = %d\n", __func__, enable);
if (dev == NULL)
return SANE_STATUS_INVAL;
@@ -1924,11 +1618,11 @@ gl124_save_power (Genesys_Device * dev, SANE_Bool enable)
static SANE_Status
gl124_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
{
- Genesys_Register_Set *r;
+ GenesysRegister *r;
- DBG (DBG_proc, "gl124_set_powersaving (delay = %d)\n", delay);
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
- r = sanei_genesys_get_address (dev->reg, REG03);
+ r = sanei_genesys_get_address (&dev->reg, REG03);
r->value &= ~0xf0;
if(delay<15)
{
@@ -1943,22 +1637,16 @@ gl124_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
return SANE_STATUS_GOOD;
}
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl124_start_action (Genesys_Device * dev)
{
return sanei_genesys_write_register (dev, 0x0f, 0x01);
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl124_stop_action (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val40, val;
unsigned int loop;
@@ -1976,9 +1664,7 @@ gl124_stop_action (Genesys_Device * dev)
status = sanei_genesys_read_register (dev, REG100, &val40);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read reg100: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read reg100: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -1992,9 +1678,9 @@ gl124_stop_action (Genesys_Device * dev)
}
/* ends scan */
- val = sanei_genesys_read_reg_from_set (dev->reg, REG01);
+ val = dev->reg.get8(REG01);
val &= ~REG01_SCAN;
- sanei_genesys_set_reg_from_set (dev->reg, REG01, val);
+ dev->reg.set8(REG01, val);
status = sanei_genesys_write_register (dev, REG01, val);
if (status != SANE_STATUS_GOOD)
{
@@ -2003,7 +1689,7 @@ gl124_stop_action (Genesys_Device * dev)
sane_strstatus (status));
return status;
}
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop = 10;
while (loop > 0)
@@ -2031,7 +1717,7 @@ gl124_stop_action (Genesys_Device * dev)
return SANE_STATUS_GOOD;
}
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop--;
}
@@ -2050,7 +1736,7 @@ gl124_stop_action (Genesys_Device * dev)
static SANE_Status
gl124_setup_scan_gpio(Genesys_Device *dev, int resolution)
{
-SANE_Status status;
+SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
DBGSTART;
@@ -2101,14 +1787,13 @@ uint8_t val;
/* Send the low-level scan command */
/* todo : is this that useful ? */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl124_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+static SANE_Status
+gl124_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
SANE_Bool start_motor)
{
- SANE_Status status;
+ (void) sensor;
+
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
DBGSTART;
@@ -2141,16 +1826,13 @@ gl124_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl124_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
SANE_Bool check_stop)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl124_end_scan (check_stop = %d)\n", check_stop);
+ DBG(DBG_proc, "%s (check_stop = %d)\n", __func__, check_stop);
if (reg == NULL)
return SANE_STATUS_INVAL;
@@ -2163,9 +1845,7 @@ gl124_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
status = gl124_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_end_scan: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -2180,10 +1860,10 @@ gl124_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
* @param dev device to rewind
* @returns SANE_STATUS_GOOD on success
*/
-GENESYS_STATIC
+static
SANE_Status gl124_rewind(Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t byte;
DBGSTART;
@@ -2193,15 +1873,17 @@ SANE_Status gl124_rewind(Genesys_Device * dev)
byte |= 0x04;
RIE (sanei_genesys_write_register(dev, 0x02, byte));
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
/* and start scan, then wait completion */
- RIE (gl124_begin_scan (dev, dev->reg, SANE_TRUE));
+ RIE (gl124_begin_scan (dev, sensor, &dev->reg, SANE_TRUE));
do
{
- usleep(100*1000);
+ sanei_genesys_sleep_ms(100);
RIE (sanei_genesys_read_register (dev, REG100, &byte));
}
while(byte & REG100_MOTMFLG);
- RIE (gl124_end_scan (dev, dev->reg, SANE_TRUE));
+ RIE (gl124_end_scan (dev, &dev->reg, SANE_TRUE));
/* restore direction */
RIE (sanei_genesys_read_register (dev, 0x02, &byte));
@@ -2218,25 +1900,18 @@ SANE_Status gl124_rewind(Genesys_Device * dev)
* @param wait_until_home true to make the function waiting for head
* to be home before returning, if fals returne immediately
* @returns SANE_STATUS_GOO on success */
-GENESYS_STATIC
+static
SANE_Status
gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
{
- Genesys_Register_Set local_reg[GENESYS_GL124_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
uint8_t val;
float resolution;
int loop = 0;
- DBG (DBG_proc, "gl124_slow_back_home (wait_until_home = %d)\n",
- wait_until_home);
-
- if(dev->usb_mode<0)
- {
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
+ DBG(DBG_proc, "%s (wait_until_home = %d)\n", __func__, wait_until_home);
/* post scan gpio : without that HOMSNR is unreliable */
gl124_homsnr_gpio(dev);
@@ -2245,24 +1920,20 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
{
sanei_genesys_print_status (val);
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
/* second is reliable */
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
@@ -2280,40 +1951,42 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
}
/* feed a little first */
- if (strcmp (dev->model->name, "canon-lide-210") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_210)
{
status = gl124_feed (dev, 20, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to do initial feed: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to do initial feed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
- memcpy (local_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_dpi(dev);
- status = gl124_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 100,
- 30000,
- 100,
- 100,
- 8,
- 1,
- dev->settings.scan_method,
- SCAN_MODE_GRAY,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 100;
+ params.starty = 30000;
+ params.pixels = 100;
+ params.lines = 100;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_slow_back_home: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -2322,23 +1995,34 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
/* set up for reverse and no scan */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address(&local_reg, REG02);
r->value |= REG02_MTRREV;
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL124_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
RIE(gl124_setup_scan_gpio(dev,resolution));
- status = gl124_start_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl124_slow_back_home: failed to start motor: %s\n",
- sane_strstatus (status));
- gl124_stop_action (dev);
- /* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL124_MAX_REGS);
- return status;
+ try {
+ status = gl124_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl124_stop_action (dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl124_stop_action (dev);
+ } catch (...) {}
+ /* restore original registers */
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ return status;
}
/* post scan gpio : without that HOMSNR is unreliable */
@@ -2352,31 +2036,29 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
if (val & HOMESNR) /* home sensor */
{
- DBG (DBG_info, "gl124_slow_back_home: reached home position\n");
+ DBG(DBG_info, "%s: reached home position\n", __func__);
DBGCOMPLETED;
dev->scanhead_position_in_steps = 0;
return SANE_STATUS_GOOD;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
++loop;
}
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl124_stop_action (dev);
- DBG (DBG_error,
- "gl124_slow_back_home: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- DBG (DBG_info, "gl124_slow_back_home: scanhead is still moving\n");
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -2386,15 +2068,12 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
* @param steps number of steps to move
* @param reverse true is moving backward
* */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse)
{
- Genesys_Register_Set local_reg[GENESYS_GL124_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
float resolution;
uint8_t val;
@@ -2402,27 +2081,31 @@ gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse)
DBG (DBG_io, "%s: steps=%d\n", __func__, steps);
/* prepare local registers */
- memcpy (local_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_ydpi(dev);
- status = gl124_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 0,
- steps,
- 100,
- 3,
- 8,
- 3,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_FEEDING |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = steps;
+ params.pixels = 100;
+ params.lines = 3;
+ params.depth = 8;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_FEEDING |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus (status));
@@ -2431,27 +2114,27 @@ gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse)
}
/* set exposure to zero */
- sanei_genesys_set_triple(local_reg,REG_EXPR,0);
- sanei_genesys_set_triple(local_reg,REG_EXPG,0);
- sanei_genesys_set_triple(local_reg,REG_EXPB,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPR,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPG,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPB,0);
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRMCNT));
/* set up for no scan */
- r = sanei_genesys_get_address (local_reg, REG01);
+ r = sanei_genesys_get_address (&local_reg, REG01);
r->value &= ~REG01_SCAN;
/* set up for reverse if needed */
if(reverse)
{
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address (&local_reg, REG02);
r->value |= REG02_MTRREV;
}
/* send registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL124_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
status = gl124_start_action (dev);
if (status != SANE_STATUS_GOOD)
@@ -2460,7 +2143,7 @@ gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse)
gl124_stop_action (dev);
/* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL124_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
return status;
}
@@ -2486,9 +2169,8 @@ static SANE_Status
gl124_search_start_position (Genesys_Device * dev)
{
int size;
- SANE_Status status;
- uint8_t *data;
- Genesys_Register_Set local_reg[GENESYS_GL124_MAX_REGS];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg = dev->reg;
int steps;
int pixels = 600;
@@ -2496,64 +2178,54 @@ gl124_search_start_position (Genesys_Device * dev)
DBGSTART;
- memcpy (local_reg, dev->reg,
- GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
-
/* sets for a 200 lines * 600 pixels */
/* normal scan with no shading */
- status = gl124_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0, /*we should give a small offset here~60 steps */
- 600,
- dev->model->search_lines,
- 8,
- 1,
- dev->settings.scan_method,
- SCAN_MODE_GRAY,
- 1, /*green */
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE);
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dpi);
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0; /*we should give a small offset here~60 steps */
+ params.pixels = 600;
+ params.lines = dev->model->search_lines;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::GREEN;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
+
+ status = gl124_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status!=SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to init scan registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to init scan registers: %s\n", __func__, sane_strstatus(status));
return status;
}
/* send to scanner */
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL124_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_search_start_position: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
size = pixels * dev->model->search_lines;
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error,
- "gl124_search_start_position: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
- status = gl124_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl124_begin_scan (dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl124_search_start_position: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2563,47 +2235,37 @@ gl124_search_start_position (Genesys_Device * dev)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner (dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl124_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("search_position.pnm", data, 8, 1, pixels,
- dev->model->search_lines);
+ sanei_genesys_write_pnm_file("gl124_search_position.pnm", data.data(), 8, 1, pixels,
+ dev->model->search_lines);
- status = gl124_end_scan (dev, local_reg, SANE_TRUE);
+ status = gl124_end_scan (dev, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl124_search_start_position: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* update regs to copy ASIC internal state */
- memcpy (dev->reg, local_reg,
- GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg = local_reg;
status =
- sanei_genesys_search_reference_point (dev, data, 0, dpi, pixels,
+ sanei_genesys_search_reference_point (dev, sensor, data.data(), 0, dpi, pixels,
dev->model->search_lines);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl124_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- free (data);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -2612,58 +2274,57 @@ gl124_search_start_position (Genesys_Device * dev)
* sets up register for coarse gain calibration
* todo: check it for scanners using it */
static SANE_Status
-gl124_init_regs_for_coarse_calibration (Genesys_Device * dev)
+gl124_init_regs_for_coarse_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t channels;
uint8_t cksel;
DBGSTART;
- cksel = (dev->calib_reg[reg_0x18].value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
+ cksel = (regs.find_reg(0x18).value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
/* set line size */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
- channels = 3;
- else
- channels = 1;
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS) {
+ channels = 3;
+ } else {
+ channels = 1;
+ }
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = sensor.optical_res / cksel;
+ params.lines = 20;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_FEEDING |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- dev->sensor.optical_res / cksel,
- 20,
- 16,
- channels,
- dev->settings.scan_method,
- dev->settings.scan_mode,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_FEEDING |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_init_register_for_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- gl124_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
- DBG (DBG_info,
- "gl124_init_register_for_coarse_calibration: optical sensor res: %d dpi, actual res: %d\n",
- dev->sensor.optical_res / cksel, dev->settings.xres);
+ DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
+ sensor.optical_res / cksel, dev->settings.xres);
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_init_register_for_coarse_calibration: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2675,19 +2336,20 @@ gl124_init_regs_for_coarse_calibration (Genesys_Device * dev)
/* init registers for shading calibration */
/* shading calibration is done at dpihw */
static SANE_Status
-gl124_init_regs_for_shading (Genesys_Device * dev)
+gl124_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int move, resolution, dpihw, factor;
DBGSTART;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
+ regs = dev->reg;
dev->calib_channels = 3;
dev->calib_lines = dev->model->shading_lines;
- dpihw=sanei_genesys_compute_dpihw(dev,dev->settings.xres);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
if(dpihw>=2400)
{
dev->calib_lines *= 2;
@@ -2695,14 +2357,15 @@ gl124_init_regs_for_shading (Genesys_Device * dev)
resolution=dpihw;
/* if half CCD mode, use half resolution */
- if(compute_half_ccd(dev->model, dev->settings.xres)==SANE_TRUE)
+ if(compute_half_ccd(sensor, dev->settings.xres)==SANE_TRUE)
{
resolution /= 2;
dev->calib_lines /= 2;
}
dev->calib_resolution = resolution;
- factor=dev->sensor.optical_res/resolution;
- dev->calib_pixels = dev->sensor.sensor_pixels/factor;
+ dev->calib_total_bytes_to_read = 0;
+ factor=sensor.optical_res/resolution;
+ dev->calib_pixels = sensor.sensor_pixels/factor;
/* distance to move to reach white target at high resolution */
move=0;
@@ -2713,24 +2376,26 @@ gl124_init_regs_for_shading (Genesys_Device * dev)
}
DBG (DBG_io, "%s: move=%d steps\n", __func__, move);
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- move,
- dev->calib_pixels,
- dev->calib_lines,
- 16,
- dev->calib_channels,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- gl124_set_motor_power (dev->calib_reg, SANE_FALSE);
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = move;
+ params.pixels = dev->calib_pixels;
+ params.lines = dev->calib_lines;
+ params.depth = 16;
+ params.channels = dev->calib_channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
+
+ sanei_genesys_set_motor_power(regs, false);
if (status != SANE_STATUS_GOOD)
{
@@ -2741,7 +2406,7 @@ gl124_init_regs_for_shading (Genesys_Device * dev)
dev->scanhead_position_in_steps += dev->calib_lines + move;
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@@ -2754,10 +2419,29 @@ gl124_init_regs_for_shading (Genesys_Device * dev)
return SANE_STATUS_GOOD;
}
+static void gl124_wait_for_motor_stop(Genesys_Device* dev)
+{
+ DBG_HELPER(dbg);
+ uint8_t val40, val;
+
+ TIE(sanei_genesys_get_status(dev, &val));
+ TIE(sanei_genesys_read_register(dev, REG100, &val40));
+
+ if ((val & MOTORENB) == 0 && (val40 & REG100_MOTMFLG) == 0)
+ return;
+
+ do {
+ sanei_genesys_sleep_ms(10);
+ TIE(sanei_genesys_get_status(dev, &val));
+ TIE(sanei_genesys_read_register(dev, REG100, &val40));
+ } while ((val & MOTORENB) ||(val40 & REG100_MOTMFLG));
+ sanei_genesys_sleep_ms(50);
+}
+
/** @brief set up registers for the actual scan
*/
static SANE_Status
-gl124_init_regs_for_scan (Genesys_Device * dev)
+gl124_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int flags;
@@ -2765,71 +2449,21 @@ gl124_init_regs_for_scan (Genesys_Device * dev)
float move;
int move_dpi;
float start;
- uint8_t val40,val;
-
- SANE_Status status;
-
- DBG (DBG_info,
- "gl124_init_regs_for_scan settings:\nResolution: %ux%uDPI\n"
- "Lines : %u\npixels : %u\nStartpos : %.3f/%.3f\nScan mode : %d\n\n",
- dev->settings.xres,
- dev->settings.yres,
- dev->settings.lines,
- dev->settings.pixels,
- dev->settings.tl_x,
- dev->settings.tl_y,
- dev->settings.scan_mode);
-
- /* wait for motor to stop first */
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
- status = sanei_genesys_read_register (dev, REG100, &val40);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to read reg100: %s\n", __func__, sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
- if((val & MOTORENB) || (val40 & REG100_MOTMFLG))
- {
- do
- {
- usleep(10000);
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
- status = sanei_genesys_read_register (dev, REG100, &val40);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to read reg100: %s\n", __func__, sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
- } while ((val & MOTORENB) || (val40 & REG100_MOTMFLG));
- usleep(50000);
- }
-
- /* ensure head is parked in case of calibration */
- RIE (gl124_slow_back_home (dev, SANE_TRUE));
+
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR)
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
/* y (motor) distance to move to reach scanned area */
@@ -2849,40 +2483,41 @@ gl124_init_regs_for_scan (Genesys_Device * dev)
}
move=500;
}
- DBG (DBG_info, "gl124_init_regs_for_scan: move=%f steps\n", move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- if(compute_half_ccd(dev->model, dev->settings.xres)==SANE_TRUE)
+ if(compute_half_ccd(sensor, dev->settings.xres)==SANE_TRUE)
{
start /=2;
}
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
flags = 0;
/* enable emulated lineart from gray data */
- if(dev->settings.scan_mode == SCAN_MODE_LINEART
+ if(dev->settings.scan_mode == ScanColorMode::LINEART
&& dev->settings.dynamic_lineart)
{
flags |= SCAN_FLAG_DYNAMIC_LINEART;
}
- status = gl124_init_scan_regs (dev,
- dev->reg,
- dev->settings.xres,
- dev->settings.yres,
- start,
- move,
- dev->settings.pixels,
- dev->settings.lines,
- depth,
- channels,
- dev->settings.scan_method,
- dev->settings.scan_mode,
- dev->settings.color_filter,
- flags);
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = move;
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = flags;
+
+ status = gl124_init_scan_regs(dev, sensor, &dev->reg, params);
if (status != SANE_STATUS_GOOD)
return status;
@@ -2895,26 +2530,24 @@ gl124_init_regs_for_scan (Genesys_Device * dev)
* Send shading calibration data. The buffer is considered to always hold values
* for all the channels.
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
+static SANE_Status
+gl124_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size)
{
SANE_Status status = SANE_STATUS_GOOD;
uint32_t addr, length, strpixel ,endpixel, x, factor, segcnt, pixels, i;
uint32_t lines, channels;
uint16_t dpiset,dpihw;
- uint8_t val,*buffer,*ptr,*src;
+ uint8_t val,*ptr,*src;
DBGSTART;
DBG( DBG_io2, "%s: writing %d bytes of shading data\n",__func__,size);
/* logical size of a color as seen by generic code of the frontend */
length = (uint32_t) (size / 3);
- sanei_genesys_get_triple(dev->reg,REG_STRPIXEL,&strpixel);
- sanei_genesys_get_triple(dev->reg,REG_ENDPIXEL,&endpixel);
- sanei_genesys_get_triple(dev->reg,REG_SEGCNT,&segcnt);
+ sanei_genesys_get_triple(&dev->reg,REG_STRPIXEL,&strpixel);
+ sanei_genesys_get_triple(&dev->reg,REG_ENDPIXEL,&endpixel);
+ sanei_genesys_get_triple(&dev->reg,REG_SEGCNT,&segcnt);
if(endpixel==0)
{
endpixel=segcnt;
@@ -2922,8 +2555,8 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
DBG( DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d, SEGCNT=%d\n",__func__,strpixel,endpixel,endpixel-strpixel,segcnt);
/* compute deletion factor */
- sanei_genesys_get_double(dev->reg,REG_DPISET,&dpiset);
- dpihw=sanei_genesys_compute_dpihw(dev,dpiset);
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&dpiset);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpiset);
factor=dpihw/dpiset;
DBG( DBG_io2, "%s: factor=%d\n",__func__,factor);
@@ -2931,7 +2564,7 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
if(DBG_LEVEL>=DBG_data)
{
dev->binary=fopen("binary.pnm","wb");
- sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &lines);
channels=dev->current_setup.channels;
if(dev->binary!=NULL)
{
@@ -2946,15 +2579,14 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
pixels=endpixel-strpixel;
DBG( DBG_io2, "%s: using chunks of %d bytes (%d shading data pixels)\n",__func__,length, length/4);
- buffer=(uint8_t *)malloc(pixels*dev->segnb);
- memset(buffer,0,pixels*dev->segnb);
+ std::vector<uint8_t> buffer(pixels * dev->segnb, 0);
/* write actual red data */
for(i=0;i<3;i++)
{
/* copy data to work buffer and process it */
/* coefficent destination */
- ptr=buffer;
+ ptr = buffer.data();
/* iterate on both sensor segment */
for(x=0;x<pixels;x+=4*factor)
@@ -3006,16 +2638,14 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
}
RIE (sanei_genesys_read_register (dev, 0xd0+i, &val));
addr = val * 8192 + 0x10000000;
- status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, addr, pixels*dev->segnb, buffer);
+ status = sanei_genesys_write_ahb(dev, addr, pixels*dev->segnb, buffer.data());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl124_send_shading_data; write to AHB failed (%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s; write to AHB failed (%s)\n", __func__, sane_strstatus(status));
return status;
}
}
- free(buffer);
DBGCOMPLETED;
return status;
@@ -3029,38 +2659,39 @@ gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
* @return SANE_STATUS_GOOD on success, else the error code
*/
static SANE_Status
-move_to_calibration_area (Genesys_Device * dev)
+move_to_calibration_area (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
int pixels;
int size;
- uint8_t *line;
SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
- pixels = (dev->sensor.sensor_pixels*600)/dev->sensor.optical_res;
+ pixels = (sensor.sensor_pixels*600)/sensor.optical_res;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* set up for the calibration scan */
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- 600,
- 600,
- 0,
- 0,
- pixels,
- 1,
- 8,
- 3,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ regs = dev->reg;
+
+ SetupParams params;
+ params.xres = 600;
+ params.yres = 600;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = 1;
+ params.depth = 8;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
@@ -3068,28 +2699,23 @@ move_to_calibration_area (Genesys_Device * dev)
}
size = pixels * 3;
- line = malloc (size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(size);
/* write registers and scan data */
- RIEF (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS), line);
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
DBG (DBG_info, "%s: starting line reading\n", __func__);
- RIEF (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, size), line);
+ RIE(gl124_begin_scan (dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), size));
/* stop scanning */
- RIE (gl124_stop_action (dev));
+ RIE(gl124_stop_action (dev));
if (DBG_LEVEL >= DBG_data)
{
- sanei_genesys_write_pnm_file ("movetocalarea.pnm", line, 8, 3, pixels, 1);
+ sanei_genesys_write_pnm_file("gl124_movetocalarea.pnm", line.data(), 8, 3, pixels, 1);
}
- /* cleanup before return */
- free (line);
-
DBGCOMPLETED;
return status;
}
@@ -3100,35 +2726,32 @@ move_to_calibration_area (Genesys_Device * dev)
-needs working coarse/gain
*/
static SANE_Status
-gl124_led_calibration (Genesys_Device * dev)
+gl124_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
{
int num_pixels;
int total_size;
int resolution;
int dpihw;
- uint8_t *line;
int i, j;
SANE_Status status = SANE_STATUS_GOOD;
int val;
int channels, depth;
int avg[3];
int turn;
- char fn[20];
uint16_t exp[3],target;
- Sensor_Profile *sensor;
SANE_Bool acceptable;
SANE_Bool half_ccd;
DBGSTART;
/* move to calibration area */
- move_to_calibration_area(dev);
+ move_to_calibration_area(dev, sensor, regs);
/* offset calibration is always done in 16 bit depth color mode */
channels = 3;
depth=16;
- dpihw=sanei_genesys_compute_dpihw(dev, dev->settings.xres);
- half_ccd=compute_half_ccd(dev->model, dev->settings.xres);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ half_ccd=compute_half_ccd(sensor, dev->settings.xres);
if(half_ccd==SANE_TRUE)
{
resolution = dpihw/2;
@@ -3137,30 +2760,31 @@ gl124_led_calibration (Genesys_Device * dev)
{
resolution = dpihw;
}
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
- num_pixels = (dev->sensor.sensor_pixels*resolution)/dev->sensor.optical_res;
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, dpihw, half_ccd);
+ num_pixels = (sensor.sensor_pixels*resolution)/sensor.optical_res;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* set up for the calibration scan */
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- num_pixels,
- 1,
- depth,
- channels,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ regs = dev->reg;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = num_pixels;
+ params.lines = 1;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
@@ -3168,41 +2792,40 @@ gl124_led_calibration (Genesys_Device * dev)
}
total_size = num_pixels * channels * (depth/8) * 1; /* colors * bytes_per_color * scan lines */
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
/* initial loop values and boundaries */
- exp[0]=sensor->expr;
- exp[1]=sensor->expg;
- exp[2]=sensor->expb;
- target=dev->sensor.gain_white_ref*256;
+ exp[0]=sensor_profile->expr;
+ exp[1]=sensor_profile->expg;
+ exp[2]=sensor_profile->expb;
+ target=sensor.gain_white_ref*256;
turn = 0;
/* no move during led calibration */
- gl124_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
do
{
/* set up exposure */
- sanei_genesys_set_triple(dev->calib_reg,REG_EXPR,exp[0]);
- sanei_genesys_set_triple(dev->calib_reg,REG_EXPG,exp[1]);
- sanei_genesys_set_triple(dev->calib_reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_triple(&regs,REG_EXPR,exp[0]);
+ sanei_genesys_set_triple(&regs,REG_EXPG,exp[1]);
+ sanei_genesys_set_triple(&regs,REG_EXPB,exp[2]);
/* write registers and scan data */
- RIEF (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS), line);
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
- DBG (DBG_info, "gl124_led_calibration: starting line reading\n");
- RIEF (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ DBG(DBG_info, "%s: starting line reading\n", __func__);
+ RIE(gl124_begin_scan (dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, line.data(), total_size));
/* stop scanning */
- RIEF (gl124_stop_action (dev), line);
+ RIE(gl124_stop_action (dev));
if (DBG_LEVEL >= DBG_data)
{
- snprintf (fn, 20, "led_%02d.pnm", turn);
- sanei_genesys_write_pnm_file (fn, line, depth, channels, num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl124_led_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), depth, channels, num_pixels, 1);
}
/* compute average */
@@ -3225,7 +2848,7 @@ gl124_led_calibration (Genesys_Device * dev)
avg[j] /= num_pixels;
}
- DBG (DBG_info, "gl124_led_calibration: average: %d,%d,%d\n", avg[0], avg[1], avg[2]);
+ DBG(DBG_info, "%s: average: %d,%d,%d\n", __func__, avg[0], avg[1], avg[2]);
/* check if exposure gives average within the boundaries */
acceptable = SANE_TRUE;
@@ -3243,23 +2866,17 @@ gl124_led_calibration (Genesys_Device * dev)
}
while (!acceptable && turn < 100);
- DBG (DBG_info, "gl124_led_calibration: acceptable exposure: %d,%d,%d\n", exp[0], exp[1], exp[2]);
+ DBG(DBG_info, "%s: acceptable exposure: %d,%d,%d\n", __func__, exp[0], exp[1], exp[2]);
/* set these values as final ones for scan */
- sanei_genesys_set_triple(dev->reg,REG_EXPR,exp[0]);
- sanei_genesys_set_triple(dev->reg,REG_EXPG,exp[1]);
- sanei_genesys_set_triple(dev->reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPR,exp[0]);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPG,exp[1]);
+ sanei_genesys_set_triple(&dev->reg,REG_EXPB,exp[2]);
/* store in this struct since it is the one used by cache calibration */
- dev->sensor.regs_0x10_0x1d[0] = (exp[0] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = exp[0] & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (exp[1] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = exp[1] & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (exp[2] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = exp[2] & 0xff;
-
- /* cleanup before return */
- free (line);
+ sensor.exposure.red = exp[0];
+ sensor.exposure.green = exp[1];
+ sensor.exposure.blue = exp[2];
DBGCOMPLETED;
return status;
@@ -3292,24 +2909,24 @@ dark_average (uint8_t * data, unsigned int pixels, unsigned int lines,
}
if (count)
avg[k] /= count;
- DBG (DBG_info, "dark_average: avg[%d] = %d\n", k, avg[k]);
+ DBG(DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
}
average = 0;
for (i = 0; i < channels; i++)
average += avg[i];
average /= channels;
- DBG (DBG_info, "dark_average: average = %d\n", average);
+ DBG(DBG_info, "%s: average = %d\n", __func__, average);
return average;
}
static SANE_Status
-gl124_offset_calibration (Genesys_Device * dev)
+gl124_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *first_line, *second_line, reg0a;
+ uint8_t reg0a;
unsigned int channels, bpp;
- char title[32];
int pass = 0, avg, total_size;
int topavg, bottomavg, resolution, lines;
int top, bottom, black_pixels, pixels;
@@ -3326,92 +2943,85 @@ gl124_offset_calibration (Genesys_Device * dev)
/* offset calibration is always done in color mode */
channels = 3;
- resolution=dev->sensor.optical_res;
- dev->calib_pixels = dev->sensor.sensor_pixels;
+ resolution=sensor.optical_res;
+ dev->calib_pixels = sensor.sensor_pixels;
lines=1;
bpp=8;
- pixels= (dev->sensor.sensor_pixels*resolution) / dev->sensor.optical_res;
- black_pixels = (dev->sensor.black_pixels * resolution) / dev->sensor.optical_res;
- DBG (DBG_io2, "gl124_offset_calibration: black_pixels=%d\n", black_pixels);
-
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ pixels= (sensor.sensor_pixels*resolution) / sensor.optical_res;
+ black_pixels = (sensor.black_pixels * resolution) / sensor.optical_res;
+ DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- gl124_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
/* allocate memory for scans */
total_size = pixels * channels * lines * (bpp/8); /* colors * bytes_per_color * scan lines */
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
-
- second_line = malloc (total_size);
- if (!second_line)
- {
- free (first_line);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
/* init gain */
- dev->frontend.gain[0] = 0;
- dev->frontend.gain[1] = 0;
- dev->frontend.gain[2] = 0;
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
/* scan with no move */
bottom = 10;
- dev->frontend.offset[0] = bottom;
- dev->frontend.offset[1] = bottom;
- dev->frontend.offset[2] = bottom;
-
- RIEF2 (gl124_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl124_offset_calibration: starting first line reading\n");
- RIEF2 (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, first_line, total_size), first_line, second_line);
+ dev->frontend.set_offset(0, bottom);
+ dev->frontend.set_offset(1, bottom);
+ dev->frontend.set_offset(2, bottom);
+
+ RIE(gl124_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE(gl124_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
{
- snprintf(title,20,"offset%03d.pnm",bottom);
- sanei_genesys_write_pnm_file (title, first_line, bpp, channels, pixels, lines);
+ char title[30];
+ snprintf(title, 30, "gl124_offset%03d.pnm", bottom);
+ sanei_genesys_write_pnm_file(title, first_line.data(), bpp, channels, pixels, lines);
}
- bottomavg = dark_average (first_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl124_offset_calibration: bottom avg=%d\n", bottomavg);
+ bottomavg = dark_average(first_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: bottom avg=%d\n", __func__, bottomavg);
/* now top value */
top = 255;
- dev->frontend.offset[0] = top;
- dev->frontend.offset[1] = top;
- dev->frontend.offset[2] = top;
- RIEF2 (gl124_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl124_offset_calibration: starting second line reading\n");
- RIEF2 (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
-
- topavg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl124_offset_calibration: top avg=%d\n", topavg);
+ dev->frontend.set_offset(0, top);
+ dev->frontend.set_offset(1, top);
+ dev->frontend.set_offset(2, top);
+ RIE(gl124_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl124_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
+
+ topavg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: top avg=%d\n", __func__, topavg);
/* loop until acceptable level */
while ((pass < 32) && (top - bottom > 1))
@@ -3419,44 +3029,43 @@ gl124_offset_calibration (Genesys_Device * dev)
pass++;
/* settings for new scan */
- dev->frontend.offset[0] = (top + bottom) / 2;
- dev->frontend.offset[1] = (top + bottom) / 2;
- dev->frontend.offset[2] = (top + bottom) / 2;
+ dev->frontend.set_offset(0, (top + bottom) / 2);
+ dev->frontend.set_offset(1, (top + bottom) / 2);
+ dev->frontend.set_offset(2, (top + bottom) / 2);
/* scan with no move */
- RIEF2 (gl124_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl124_offset_calibration: starting second line reading\n");
- RIEF2 (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
+ RIE(gl124_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl124_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "offset%03d.pnm", dev->frontend.offset[1]);
- sanei_genesys_write_pnm_file (title, second_line, bpp, channels, pixels, lines);
+ char title[30];
+ snprintf(title, 30, "gl124_offset%03d.pnm", dev->frontend.get_offset(1));
+ sanei_genesys_write_pnm_file(title, second_line.data(), bpp, channels, pixels, lines);
}
- avg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_info, "gl124_offset_calibration: avg=%d offset=%d\n", avg,
- dev->frontend.offset[1]);
+ avg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_info, "%s: avg=%d offset=%d\n", __func__, avg, dev->frontend.get_offset(1));
/* compute new boundaries */
if (topavg == avg)
{
topavg = avg;
- top = dev->frontend.offset[1];
+ top = dev->frontend.get_offset(1);
}
else
{
bottomavg = avg;
- bottom = dev->frontend.offset[1];
+ bottom = dev->frontend.get_offset(1);
}
}
- DBG (DBG_info, "gl124_offset_calibration: offset=(%d,%d,%d)\n", dev->frontend.offset[0], dev->frontend.offset[1], dev->frontend.offset[2]);
-
- /* cleanup before return */
- free (first_line);
- free (second_line);
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -3473,11 +3082,12 @@ gl124_offset_calibration (Genesys_Device * dev)
be done with shading.
*/
static SANE_Status
-gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
+gl124_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
{
int pixels;
int total_size;
- uint8_t *line, reg0a;
+ uint8_t reg0a;
int i, j, channels;
SANE_Status status = SANE_STATUS_GOOD;
int max[3];
@@ -3486,7 +3096,7 @@ gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
int resolution;
int bpp;
- DBG (DBG_proc, "gl124_coarse_gain_calibration: dpi = %d\n", dpi);
+ DBG(DBG_proc, "%s: dpi = %d\n", __func__, dpi);
/* no gain nor offset for TI AFE */
RIE (sanei_genesys_read_register (dev, REG0A, &reg0a));
@@ -3500,63 +3110,67 @@ gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
channels = 3;
/* follow CKSEL */
- if(dev->settings.xres<dev->sensor.optical_res)
+ if(dev->settings.xres<sensor.optical_res)
{
coeff=0.9;
- /*resolution=dev->sensor.optical_res/2;*/
- resolution=dev->sensor.optical_res;
+ /*resolution=sensor.optical_res/2;*/
+ resolution=sensor.optical_res;
}
else
{
- resolution=dev->sensor.optical_res;
+ resolution=sensor.optical_res;
coeff=1.0;
}
lines=10;
bpp=8;
- pixels = (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
-
- status = gl124_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- gl124_set_motor_power (dev->calib_reg, SANE_FALSE);
+ pixels = (sensor.sensor_pixels * resolution) / sensor.optical_res;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ try {
+ status = gl124_init_scan_regs(dev, sensor, &regs, params);
+ } catch (...) {
+ try {
+ sanei_genesys_set_motor_power(regs, false);
+ } catch (...) {}
+ throw;
+ }
+
+ sanei_genesys_set_motor_power(regs, false);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL124_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, regs));
total_size = pixels * channels * (16/bpp) * lines;
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
- RIEF (gl124_set_fe(dev, AFE_SET), line);
- RIEF (gl124_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ RIE(gl124_set_fe(dev, sensor, AFE_SET));
+ RIE(gl124_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("coarse.pnm", line, bpp, channels, pixels, lines);
+ sanei_genesys_write_pnm_file("gl124_gain.pnm", line.data(), bpp, channels, pixels, lines);
/* average value on each channel */
for (j = 0; j < channels; j++)
@@ -3587,7 +3201,7 @@ gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
}
max[j] = max[j] / (pixels/2);
- gain[j] = ((float) dev->sensor.gain_white_ref*coeff) / max[j];
+ gain[j] = ((float) sensor.gain_white_ref*coeff) / max[j];
/* turn logical gain value into gain code, checking for overflow */
code = 283 - 208 / gain[j];
@@ -3595,30 +3209,30 @@ gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
code = 255;
else if (code < 0)
code = 0;
- dev->frontend.gain[j] = code;
+ dev->frontend.set_gain(j, code);
- DBG (DBG_proc,
- "gl124_coarse_gain_calibration: channel %d, max=%d, gain = %f, setting:%d\n",
- j, max[j], gain[j], dev->frontend.gain[j]);
+ DBG(DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__, j, max[j],
+ gain[j], dev->frontend.get_gain(j));
}
- if (dev->model->is_cis)
- {
- if (dev->frontend.gain[0] > dev->frontend.gain[1])
- dev->frontend.gain[0] = dev->frontend.gain[1];
- if (dev->frontend.gain[0] > dev->frontend.gain[2])
- dev->frontend.gain[0] = dev->frontend.gain[2];
- dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
+ if (dev->model->is_cis) {
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ if (gain0 > dev->frontend.get_gain(1)) {
+ gain0 = dev->frontend.get_gain(1);
+ }
+ if (gain0 > dev->frontend.get_gain(2)) {
+ gain0 = dev->frontend.get_gain(2);
+ }
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
}
- if (channels == 1)
- {
- dev->frontend.gain[0] = dev->frontend.gain[1];
- dev->frontend.gain[2] = dev->frontend.gain[1];
+ if (channels == 1) {
+ dev->frontend.set_gain(0, dev->frontend.get_gain(1));
+ dev->frontend.set_gain(2, dev->frontend.get_gain(1));
}
- free (line);
-
RIE (gl124_stop_action (dev));
status = gl124_slow_back_home (dev, SANE_TRUE);
@@ -3633,6 +3247,7 @@ gl124_coarse_gain_calibration (Genesys_Device * dev, int dpi)
*/
static SANE_Status
gl124_init_regs_for_warmup (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
int *channels, int *total_size)
{
@@ -3645,30 +3260,30 @@ gl124_init_regs_for_warmup (Genesys_Device * dev,
*channels=3;
- memcpy (reg, dev->reg, (GENESYS_GL124_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
- status = gl124_init_scan_regs (dev,
- reg,
- dev->sensor.optical_res,
- dev->motor.base_ydpi,
- dev->sensor.sensor_pixels/4,
- 0,
- dev->sensor.sensor_pixels/2,
- 1,
- 8,
- *channels,
- dev->settings.scan_method,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ *reg = dev->reg;
+
+ SetupParams params;
+ params.xres = sensor.optical_res;
+ params.yres = dev->motor.base_ydpi;
+ params.startx = sensor.sensor_pixels / 4;
+ params.starty = 0;
+ params.pixels = sensor.sensor_pixels / 2;
+ params.lines = 1;
+ params.depth = 8;
+ params.channels = *channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl124_init_scan_regs(dev, sensor, reg, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl124_init_regs_for_warmup: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3676,8 +3291,8 @@ gl124_init_regs_for_warmup (Genesys_Device * dev,
*total_size = num_pixels * 3 * 1; /* colors * bytes_per_color * scan lines */
- gl124_set_motor_power (reg, SANE_FALSE);
- RIE (dev->model->cmd_set->bulk_write_register (dev, reg, GENESYS_GL124_MAX_REGS));
+ sanei_genesys_set_motor_power(*reg, false);
+ RIE (dev->model->cmd_set->bulk_write_register(dev, *reg));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -3697,11 +3312,11 @@ gl124_init_gpio (Genesys_Device * dev)
DBGSTART;
/* per model GPIO layout */
- if (strcmp (dev->model->name, "canon-lide-110") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_110)
{
idx = 0;
}
- else if (strcmp (dev->model->name, "canon-lide-110") == 0)
+ else if (dev->model->model_id == MODEL_CANON_LIDE_120)
{
idx = 2;
}
@@ -3734,8 +3349,7 @@ gl124_init_memory_layout (Genesys_Device * dev)
DBGSTART;
/* point to per model memory layout */
- if ((strcmp (dev->model->name, "canon-lide-110") == 0)
- ||(strcmp (dev->model->name, "canon-lide-120") == 0))
+ if (dev->model->model_id == MODEL_CANON_LIDE_110 ||dev->model->model_id == MODEL_CANON_LIDE_120)
{
idx = 0;
}
@@ -3798,18 +3412,15 @@ gl124_init_memory_layout (Genesys_Device * dev)
* initialize backend and ASIC : registers, motor tables, and gamma tables
* then ensure scanner's head is at home
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl124_init (Genesys_Device * dev)
+static SANE_Status
+gl124_init(Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG_INIT ();
DBGSTART;
- status=sanei_genesys_asic_init(dev, GENESYS_GL124_MAX_REGS);
+ status=sanei_genesys_asic_init(dev, 0);
DBGCOMPLETED;
return status;
@@ -3822,7 +3433,7 @@ gl124_init (Genesys_Device * dev)
static SANE_Status
gl124_boot (Genesys_Device * dev, SANE_Bool cold)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
DBGSTART;
@@ -3847,21 +3458,19 @@ gl124_boot (Genesys_Device * dev, SANE_Bool cold)
if (val & REG100_CHKVER)
{
RIE (sanei_genesys_read_register (dev, 0x00, &val));
- DBG (DBG_info,
- "gl124_cold_boot: reported version for genesys chip is 0x%02x\n",
- val);
+ DBG(DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
}
/* Set default values for registers */
gl124_init_registers (dev);
/* Write initial registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL124_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, dev->reg));
/* tune reg 0B */
val = REG0B_30MHZ | REG0B_ENBDRAM | REG0B_64M;
RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].address = 0x00;
+ dev->reg.remove_reg(0x0b);
/* set up end access */
RIE (sanei_genesys_write_0x8c (dev, 0x10, 0x0b));
@@ -3869,7 +3478,7 @@ gl124_boot (Genesys_Device * dev, SANE_Bool cold)
/* CIS_LINE */
SETREG (0x08, REG08_CIS_LINE);
- RIE (sanei_genesys_write_register (dev, 0x08, dev->reg[reg_0x08].value));
+ RIE (sanei_genesys_write_register (dev, 0x08, dev->reg.find_reg(0x08).value));
/* setup gpio */
RIE (gl124_init_gpio (dev));
@@ -3900,27 +3509,18 @@ gl124_update_hardware_sensors (Genesys_Scanner * s)
if((s->dev->model->gpo_type == GPO_CANONLIDE110)
||(s->dev->model->gpo_type == GPO_CANONLIDE120))
{
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x01) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & 0x08) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & 0x04) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & 0x02) == 0;
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_FILE_SW].write((val & 0x08) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x04) == 0);
+ s->buttons[BUTTON_COPY_SW].write((val & 0x02) == 0);
}
else
{ /* LiDE 210 case */
- if (s->val[OPT_EXTRA_SW].b == s->last_val[OPT_EXTRA_SW].b)
- s->val[OPT_EXTRA_SW].b = (val & 0x01) == 0;
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x02) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & 0x04) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & 0x08) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & 0x10) == 0;
+ s->buttons[BUTTON_EXTRA_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x02) == 0);
+ s->buttons[BUTTON_COPY_SW].write((val & 0x04) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x08) == 0);
+ s->buttons[BUTTON_FILE_SW].write((val & 0x10) == 0);
}
return status;
}
@@ -3930,6 +3530,8 @@ gl124_update_hardware_sensors (Genesys_Scanner * s)
static Genesys_Command_Set gl124_cmd_set = {
"gl124-generic", /* the name of this set */
+ [](Genesys_Device* dev) -> bool { (void) dev; return true; },
+
gl124_init,
gl124_init_regs_for_warmup,
gl124_init_regs_for_coarse_calibration,
@@ -3944,15 +3546,10 @@ static Genesys_Command_Set gl124_cmd_set = {
gl124_test_buffer_empty_bit,
gl124_test_motor_flag_bit,
- gl124_bulk_full_size,
-
gl124_set_fe,
gl124_set_powersaving,
gl124_save_power,
- gl124_set_motor_power,
- gl124_set_lamp_power,
-
gl124_begin_scan,
gl124_end_scan,
@@ -3964,12 +3561,13 @@ static Genesys_Command_Set gl124_cmd_set = {
gl124_coarse_gain_calibration,
gl124_led_calibration,
+ gl124_wait_for_motor_stop,
gl124_slow_back_home,
gl124_rewind,
sanei_genesys_bulk_write_register,
NULL,
- gl124_bulk_read_data,
+ sanei_genesys_bulk_read_data,
gl124_update_hardware_sensors,
@@ -3983,8 +3581,7 @@ static Genesys_Command_Set gl124_cmd_set = {
NULL,
gl124_send_shading_data,
gl124_calculate_current_setup,
- gl124_boot,
- gl124_init_scan_regs
+ gl124_boot
};
SANE_Status
@@ -3993,5 +3590,3 @@ sanei_gl124_init_cmd_set (Genesys_Device * dev)
dev->model->cmd_set = &gl124_cmd_set;
return SANE_STATUS_GOOD;
}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl124.h b/backend/genesys_gl124.h
index 9ca6afd..751321d 100644
--- a/backend/genesys_gl124.h
+++ b/backend/genesys_gl124.h
@@ -301,228 +301,7 @@
#define REG_TRUEG 0x111
#define REG_TRUEB 0x112
-/**
- * writable scanner registers */
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x07,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
- reg_0x0b,
- reg_0x0c,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
- reg_0x28,
- reg_0x29,
- reg_0x2a,
- reg_0x2b,
- reg_0x2c,
- reg_0x2d,
- reg_0x3b,
- reg_0x3c,
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
- reg_0x40,
- reg_0x41,
- reg_0x42,
- reg_0x43,
- reg_0x44,
- reg_0x45,
- reg_0x46,
- reg_0x47,
- reg_0x48,
- reg_0x49,
- reg_0x4f,
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
- reg_0x5b,
- reg_0x5c,
- reg_0x5f,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x66,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x6c,
- reg_0x6d,
- reg_0x6e,
- reg_0x6f,
- reg_0x70,
- reg_0x71,
- reg_0x72,
- reg_0x73,
- reg_0x74,
- reg_0x75,
- reg_0x76,
- reg_0x77,
- reg_0x78,
- reg_0x79,
- reg_0x7a,
- reg_0x7b,
- reg_0x7c,
- reg_0x7d,
- reg_0x7e,
- reg_0x7f,
- reg_0x80,
- reg_0x81,
- reg_0x82,
- reg_0x83,
- reg_0x84,
- reg_0x85,
- reg_0x86,
- reg_0x87,
- reg_0x88,
- reg_0x89,
- reg_0x8a,
- reg_0x8b,
- reg_0x8c,
- reg_0x8d,
- reg_0x8e,
- reg_0x8f,
- reg_0x90,
- reg_0x91,
- reg_0x92,
- reg_0x93,
- reg_0x94,
- reg_0x95,
- reg_0x96,
- reg_0x97,
- reg_0x98,
- reg_0x99,
- reg_0x9a,
- reg_0x9b,
- reg_0x9c,
- reg_0x9d,
- reg_0x9e,
- reg_0x9f,
- reg_0xa0,
- reg_0xa1,
- reg_0xa2,
- reg_0xa3,
- reg_0xa4,
- reg_0xa5,
- reg_0xa6,
- reg_0xa7,
- reg_0xa8,
- reg_0xa9,
- reg_0xaa,
- reg_0xab,
- reg_0xac,
- reg_0xad,
- reg_0xae,
- reg_0xaf,
- reg_0xb0,
- reg_0xb1,
- reg_0xb2,
- reg_0xb3,
- reg_0xb4,
- reg_0xb5,
- reg_0xb6,
- reg_0xb7,
- reg_0xb8,
- reg_0xbb,
- reg_0xbc,
- reg_0xbd,
- reg_0xbe,
- reg_0xc3,
- reg_0xc4,
- reg_0xc5,
- reg_0xc6,
- reg_0xc7,
- reg_0xc8,
- reg_0xc9,
- reg_0xca,
- reg_0xcb,
- reg_0xcc,
- reg_0xcd,
- reg_0xce,
- reg_0xd0,
- reg_0xd1,
- reg_0xd2,
- reg_0xd3,
- reg_0xd4,
- reg_0xd5,
- reg_0xd6,
- reg_0xd7,
- reg_0xd8,
- reg_0xd9,
- reg_0xe0,
- reg_0xe1,
- reg_0xe2,
- reg_0xe3,
- reg_0xe4,
- reg_0xe5,
- reg_0xe6,
- reg_0xe7,
- reg_0xe8,
- reg_0xe9,
- reg_0xea,
- reg_0xeb,
- reg_0xec,
- reg_0xed,
- reg_0xee,
- reg_0xef,
- reg_0xf0,
- reg_0xf1,
- reg_0xf2,
- reg_0xf3,
- reg_0xf4,
- reg_0xf5,
- reg_0xf6,
- reg_0xf7,
- reg_0xf8,
- reg_0xf9,
- reg_0xfa,
- reg_0xfb,
- reg_0xfc,
- reg_0xff,
- GENESYS_GL124_MAX_REGS
-};
-
-#define SETREG(adr,val) {dev->reg[reg_##adr].address=adr;dev->reg[reg_##adr].value=val;}
+#define SETREG(adr,val) { dev->reg.init_reg(adr, val); }
typedef struct
{
@@ -616,8 +395,6 @@ typedef struct {
static size_t order_01[]={0,1};
static size_t order_0213[]={0,2,1,3};
-/* *INDENT-OFF* */
-
/** @brief database of sensor profiles
* database of sensor profiles giving for each sensor and a given resolution, the period, and timings
* to setup the sensor for the scan.
@@ -684,63 +461,29 @@ static Motor_Profile motors[]={
{MOTOR_CANONLIDE210, 20864, 2, lide210_max},
{0, 0, 0, NULL},
};
-/* *INDENT-ON* */
-GENESYS_STATIC
-SANE_Status gl124_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int scan_method,
- int scan_mode,
- int color_filter,
- unsigned int flags);
-
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status gl124_start_action (Genesys_Device * dev);
-#ifndef UNIT_TESTING
+
static
-#endif
- SANE_Status
-gl124_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+SANE_Status gl124_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg, SetupParams& params);
+
+static SANE_Status gl124_start_action (Genesys_Device * dev);
+static SANE_Status
+gl124_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
SANE_Bool start_motor);
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl124_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
SANE_Bool check_stop);
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl124_init (Genesys_Device * dev);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl124_send_shading_data (Genesys_Device * dev, uint8_t * data, int size);
+static SANE_Status gl124_init(Genesys_Device * dev);
+static SANE_Status gl124_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse);
+static SANE_Status gl124_feed (Genesys_Device * dev, unsigned int steps, int reverse);
-GENESYS_STATIC SANE_Status
+static SANE_Status
gl124_stop_action (Genesys_Device * dev);
-GENESYS_STATIC SANE_Status
+static SANE_Status
gl124_send_slope_table (Genesys_Device * dev, int table_nr,
uint16_t * slope_table, int steps);
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl646.c b/backend/genesys_gl646.c
deleted file mode 100644
index 58952fb..0000000
--- a/backend/genesys_gl646.c
+++ /dev/null
@@ -1,5799 +0,0 @@
-/* sane - Scanner Access Now Easy.
-
- Copyright (C) 2003 Oliver Rauch
- Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
- Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
- Copyright (C) 2004-2013 Stéphane Voltz <stef.dev@free.fr>
- Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
- Copyright (C) 2007 Luke <iceyfor@gmail.com>
- Copyright (C) 2011 Alexey Osipov <simba@lerlan.ru> for HP2400 description
- and tuning
-
- This file is part of the SANE package.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, the authors of SANE give permission for
- additional uses of the libraries contained in this release of SANE.
-
- The exception is that, if you link a SANE library with other files
- to produce an executable, this does not by itself cause the
- resulting executable to be covered by the GNU General Public
- License. Your use of that executable is in no way restricted on
- account of linking the SANE library code into it.
-
- This exception does not, however, invalidate any other reasons why
- the executable file might be covered by the GNU General Public
- License.
-
- If you submit changes to SANE to the maintainers to be included in
- a subsequent release, you agree by submitting the changes that
- those changes may be distributed with this exception intact.
-
- If you write modifications of your own for SANE, it is your choice
- whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
-*/
-
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl646
-
-#include "genesys_gl646.h"
-
-/**
- * returns the value hold by a 3 word register
- * @param regs register set from which reading the value
- * @param regnum number of the register to read
- * @return 24 bit value of the register
- */
-static uint32_t
-gl646_get_triple_reg (Genesys_Register_Set * regs, int regnum)
-{
- Genesys_Register_Set *r = NULL;
- uint32_t ret = 0;
-
- r = sanei_genesys_get_address (regs, regnum);
- ret = r->value;
- r = sanei_genesys_get_address (regs, regnum + 1);
- ret = (ret << 8) + r->value;
- r = sanei_genesys_get_address (regs, regnum + 2);
- ret = (ret << 8) + r->value;
-
- return ret;
-}
-
-/**
- * returns the value hold by a 2 word register
- * @param regs register set from which reading the value
- * @param regnum number of the register to read
- * @return 16 bit value of the register
- */
-static uint32_t
-gl646_get_double_reg (Genesys_Register_Set * regs, int regnum)
-{
- Genesys_Register_Set *r = NULL;
- uint32_t ret = 0;
-
- r = sanei_genesys_get_address (regs, regnum);
- ret = r->value;
- r = sanei_genesys_get_address (regs, regnum + 1);
- ret = (ret << 8) + r->value;
-
- return ret;
-}
-
-/* Write to many registers */
-static SANE_Status
-gl646_bulk_write_register (Genesys_Device * dev,
- Genesys_Register_Set * reg, size_t elems)
-{
- SANE_Status status;
- uint8_t outdata[8];
- uint8_t buffer[GENESYS_MAX_REGS * 2];
- size_t size;
- unsigned int i;
-
- /* handle differently sized register sets, reg[0x00] may be the last one */
- i = 0;
- while ((i < elems) && (reg[i].address != 0))
- i++;
- elems = i;
- size = i * 2;
-
- DBG (DBG_io, "gl646_bulk_write_register (elems= %lu, size = %lu)\n",
- (u_long) elems, (u_long) size);
-
-
- outdata[0] = BULK_OUT;
- outdata[1] = BULK_REGISTER;
- outdata[2] = 0x00;
- outdata[3] = 0x00;
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata), outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_write_register: failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* copy registers and values in data buffer */
- for (i = 0; i < size; i += 2)
- {
- buffer[i] = reg[i / 2].address;
- buffer[i + 1] = reg[i / 2].value;
- }
-
- status = sanei_usb_write_bulk (dev->dn, buffer, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_write_register: failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (DBG_LEVEL >= DBG_io2)
- {
- for (i = 0; i < size; i += 2)
- {
- DBG (DBG_io2, "reg[0x%02x] = 0x%02x\n", buffer[i], buffer[i + 1]);
- }
- /* when full size, decode register content */
- if (elems > 60)
- {
- DBG (DBG_io2, "DPISET =%d\n",
- gl646_get_double_reg (reg, REG_DPISET));
- DBG (DBG_io2, "DUMMY =%d\n",
- sanei_genesys_get_address (reg, REG_DUMMY)->value);
- DBG (DBG_io2, "STRPIXEL =%d\n",
- gl646_get_double_reg (reg, REG_STRPIXEL));
- DBG (DBG_io2, "ENDPIXEL =%d\n",
- gl646_get_double_reg (reg, REG_ENDPIXEL));
- DBG (DBG_io2, "LINCNT =%d\n",
- gl646_get_triple_reg (reg, REG_LINCNT));
- DBG (DBG_io2, "MAXWD =%d\n",
- gl646_get_triple_reg (reg, REG_MAXWD));
- DBG (DBG_io2, "LPERIOD =%d\n",
- gl646_get_double_reg (reg, REG_LPERIOD));
- DBG (DBG_io2, "FEEDL =%d\n",
- gl646_get_triple_reg (reg, REG_FEEDL));
- }
- }
-
- DBG (DBG_io, "gl646_bulk_write_register: wrote %lu bytes, %lu registers\n",
- (u_long) size, (u_long) elems);
- return status;
-}
-
-/* Write bulk data (e.g. shading, gamma) */
-static SANE_Status
-gl646_bulk_write_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBG (DBG_io, "gl646_bulk_write_data writing %lu bytes\n", (u_long) len);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_write_data failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if (len > BULKOUT_MAXSIZE)
- size = BULKOUT_MAXSIZE;
- else
- size = len;
-
- outdata[0] = BULK_OUT;
- outdata[1] = BULK_RAM;
- outdata[2] = 0x00;
- outdata[3] = 0x00;
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_write_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_usb_write_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_write_data failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl646_bulk_write_data wrote %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- DBG (DBG_io, "gl646_bulk_write_data: end\n");
-
- return status;
-}
-
-/**
- * reads value from gpio endpoint
- */
-static SANE_Status
-gl646_gpio_read (SANE_Int dn, uint8_t * value)
-{
- return sanei_usb_control_msg (dn, REQUEST_TYPE_IN,
- REQUEST_REGISTER, GPIO_READ, INDEX, 1, value);
-}
-
-/**
- * writes the given value to gpio endpoint
- */
-static SANE_Status
-gl646_gpio_write (SANE_Int dn, uint8_t value)
-{
- DBG (DBG_proc, "gl646_gpio_write(0x%02x)\n", value);
- return sanei_usb_control_msg (dn, REQUEST_TYPE_OUT,
- REQUEST_REGISTER, GPIO_WRITE,
- INDEX, 1, &value);
-}
-
-/**
- * writes the given value to gpio output enable endpoint
- */
-static SANE_Status
-gl646_gpio_output_enable (SANE_Int dn, uint8_t value)
-{
- DBG (DBG_proc, "gl646_gpio_output_enable(0x%02x)\n", value);
- return sanei_usb_control_msg (dn, REQUEST_TYPE_OUT,
- REQUEST_REGISTER, GPIO_OUTPUT_ENABLE,
- INDEX, 1, &value);
-}
-
-/* Read bulk data (e.g. scanned data) */
-static SANE_Status
-gl646_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBG (DBG_io, "gl646_bulk_read_data: requesting %lu bytes\n", (u_long) len);
-
- /* write requested size */
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_read_data failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- outdata[0] = BULK_IN;
- outdata[1] = BULK_RAM;
- outdata[2] = 0x00;
- outdata[3] = 0x00;
- outdata[4] = (len & 0xff);
- outdata[5] = ((len >> 8) & 0xff);
- outdata[6] = ((len >> 16) & 0xff);
- outdata[7] = ((len >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata), outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_read_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if (len > GL646_BULKIN_MAXSIZE)
- size = GL646_BULKIN_MAXSIZE;
- else
- size = len;
-
- DBG (DBG_io2,
- "gl646_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) size);
- status = sanei_usb_read_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl646_bulk_read_data read %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- gl646_detect_document_end (dev);
- }
-
- DBG (DBG_io, "gl646_bulk_read_data: end\n");
-
- return status;
-}
-
-#if 0
-static SANE_Status
-read_triple_reg (Genesys_Device * dev, int index, unsigned int *words)
-{
- SANE_Status status;
- uint8_t value;
-
- DBG (DBG_proc, "read_triple_reg\n");
-
- RIE (sanei_genesys_read_register (dev, index + 2, &value));
- *words = value;
- RIE (sanei_genesys_read_register (dev, index + 1, &value));
- *words += (value * 256);
- RIE (sanei_genesys_read_register (dev, index, &value));
- if (dev->model->asic_type == GENESYS_GL646)
- *words += ((value & 0x03) * 256 * 256);
- else
- *words += ((value & 0x0f) * 256 * 256);
-
- DBG (DBG_proc, "read_triple_reg: value=%d\n", *words);
- return status;
-}
-#endif
-
-
-static SANE_Bool
-gl646_get_fast_feed_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, 0x02);
- if (r && (r->value & REG02_FASTFED))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_get_filter_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, 0x04);
- if (r && (r->value & REG04_FILTER))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_get_lineart_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, 0x04);
- if (r && (r->value & REG04_LINEART))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_get_bitset_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, 0x04);
- if (r && (r->value & REG04_BITSET))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_get_gain4_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, 0x06);
- if (r && (r->value & REG06_GAIN4))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_test_buffer_empty_bit (SANE_Byte val)
-{
- if (val & REG41_BUFEMPTY)
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl646_test_motor_flag_bit (SANE_Byte val)
-{
- if (val & REG41_MOTMFLG)
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static void
-gl646_set_triple_reg (Genesys_Register_Set * regs, int regnum, uint32_t value)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, regnum);
- r->value = LOBYTE (HIWORD (value));
- r = sanei_genesys_get_address (regs, regnum + 1);
- r->value = HIBYTE (LOWORD (value));
- r = sanei_genesys_get_address (regs, regnum + 2);
- r->value = LOBYTE (LOWORD (value));
-}
-
-static void
-gl646_set_double_reg (Genesys_Register_Set * regs, int regnum, uint16_t value)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, regnum);
- r->value = HIBYTE (LOWORD (value));
- r = sanei_genesys_get_address (regs, regnum + 1);
- r->value = LOBYTE (LOWORD (value));
-}
-
-/**
- * decodes and prints content of status (0x41) register
- * @param val value read from reg41
- */
-static void
-print_status (uint8_t val)
-{
- char msg[80];
-
- sprintf (msg, "%s%s%s%s%s%s%s%s",
- val & REG41_PWRBIT ? "PWRBIT " : "",
- val & REG41_BUFEMPTY ? "BUFEMPTY " : "",
- val & REG41_FEEDFSH ? "FEEDFSH " : "",
- val & REG41_SCANFSH ? "SCANFSH " : "",
- val & REG41_HOMESNR ? "HOMESNR " : "",
- val & REG41_LAMPSTS ? "LAMPSTS " : "",
- val & REG41_FEBUSY ? "FEBUSY " : "",
- val & REG41_MOTMFLG ? "MOTMFLG" : "");
- DBG (DBG_info, "status=%s\n", msg);
-}
-
-/**
- * start scanner's motor
- * @param dev scanner's device
- */
-static SANE_Status
-gl646_start_motor (Genesys_Device * dev)
-{
- return sanei_genesys_write_register (dev, 0x0f, 0x01);
-}
-
-
-/**
- * stop scanner's motor
- * @param dev scanner's device
- */
-static SANE_Status
-gl646_stop_motor (Genesys_Device * dev)
-{
- return sanei_genesys_write_register (dev, 0x0f, 0x00);
-}
-
-
-/**
- * find the lowest resolution for the sensor in the given mode.
- * @param sensor id of the sensor
- * @param color true is color mode
- * @return the closest resolution for the sensor and mode
- */
-static int
-get_lowest_resolution (int sensor, SANE_Bool color)
-{
- int i, nb;
- int dpi;
-
- i = 0;
- dpi = 9600;
- nb = sizeof (sensor_master) / sizeof (Sensor_Master);
- while (i < nb)
- {
- /* computes distance and keep mode if it is closer than previous */
- if (sensor == sensor_master[i].sensor
- && sensor_master[i].color == color)
- {
- if (sensor_master[i].dpi < dpi)
- {
- dpi = sensor_master[i].dpi;
- }
- }
- i++;
- }
- DBG (DBG_info, "get_lowest_resolution: %d\n", dpi);
- return dpi;
-}
-
-/**
- * find the closest match in mode tables for the given resolution and scan mode.
- * @param sensor id of the sensor
- * @param required required resolution
- * @param color true is color mode
- * @return the closest resolution for the sensor and mode
- */
-static int
-get_closest_resolution (int sensor, int required, SANE_Bool color)
-{
- int i, nb;
- int dist, dpi;
-
- i = 0;
- dpi = 0;
- dist = 9600;
- nb = sizeof (sensor_master) / sizeof (Sensor_Master);
- while (i < nb)
- {
- /* exit on perfect match */
- if (sensor == sensor_master[i].sensor
- && sensor_master[i].dpi == required
- && sensor_master[i].color == color)
- {
- DBG (DBG_info, "get_closest_resolution: match found for %d\n",
- required);
- return required;
- }
- /* computes distance and keep mode if it is closer than previous */
- if (sensor == sensor_master[i].sensor
- && sensor_master[i].color == color)
- {
- if (abs (sensor_master[i].dpi - required) < dist)
- {
- dpi = sensor_master[i].dpi;
- dist = abs (sensor_master[i].dpi - required);
- }
- }
- i++;
- }
- DBG (DBG_info, "get_closest_resolution: closest match for %d is %d\n",
- required, dpi);
- return dpi;
-}
-
-/**
- * Computes if sensor will be set up for half ccd pixels for the given
- * scan mode.
- * @param sensor id of the sensor
- * @param required required resolution
- * @param color true is color mode
- * @return SANE_TRUE if half ccd is used
- */
-static SANE_Bool
-is_half_ccd (int sensor, int required, SANE_Bool color)
-{
- int i, nb;
-
- i = 0;
- nb = sizeof (sensor_master) / sizeof (Sensor_Master);
- while (i < nb)
- {
- /* exit on perfect match */
- if (sensor == sensor_master[i].sensor
- && sensor_master[i].dpi == required
- && sensor_master[i].color == color)
- {
- DBG (DBG_io, "is_half_ccd: match found for %d (half_ccd=%d)\n",
- required, sensor_master[i].half_ccd);
- return sensor_master[i].half_ccd;
- }
- i++;
- }
- DBG (DBG_info, "is_half_ccd: failed to find match for %d dpi\n", required);
- return SANE_FALSE;
-}
-
-/**
- * Returns the cksel values used by the required scan mode.
- * @param sensor id of the sensor
- * @param required required resolution
- * @param color true is color mode
- * @return cksel value for mode
- */
-static int
-get_cksel (int sensor, int required, SANE_Bool color)
-{
- int i, nb;
-
- i = 0;
- nb = sizeof (sensor_master) / sizeof (Sensor_Master);
- while (i < nb)
- {
- /* exit on perfect match */
- if (sensor == sensor_master[i].sensor
- && sensor_master[i].dpi == required
- && sensor_master[i].color == color)
- {
- DBG (DBG_io, "get_cksel: match found for %d (cksel=%d)\n",
- required, sensor_master[i].cksel);
- return sensor_master[i].cksel;
- }
- i++;
- }
- DBG (DBG_error, "get_cksel: failed to find match for %d dpi\n", required);
- /* fail safe fallback */
- return 1;
-}
-
-/**
- * Setup register and motor tables for a scan at the
- * given resolution and color mode. TODO try to not use any filed from
- * the device.
- * @param dev pointer to a struct describing the device
- * @param regs register set to fill
- * @param scan_settings scan's settings
- * @param slope_table1 first motor table to fill
- * @param slope_table2 second motor table to fill
- * @param resolution dpi of the scan
- * @param move distance to move (at scan's dpi) before scan
- * @param linecnt number of lines to scan at scan's dpi
- * @param startx start of scan area on CCD at CCD's optical resolution
- * @param endx end of scan area on CCD at CCD's optical resolution
- * @param color SANE_TRUE is color scan
- * @param depth 1, 8 or 16 bits data sample
- * @return SANE_STATUS_GOOD if registers could be set, SANE_STATUS_INVAL if
- * conditions can't be met.
- * @note No harcoded SENSOR or MOTOR 'names' should be present and
- * registers are set from settings tables and flags related
- * to the hardware capabilities.
- * */
-static SANE_Status
-gl646_setup_registers (Genesys_Device * dev,
- Genesys_Register_Set * regs,
- Genesys_Settings scan_settings,
- uint16_t * slope_table1,
- uint16_t * slope_table2,
- SANE_Int resolution,
- uint32_t move,
- uint32_t linecnt,
- uint16_t startx,
- uint16_t endx, SANE_Bool color,
- SANE_Int depth)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- int i, nb;
- Sensor_Master *sensor = NULL;
- Motor_Master *motor = NULL;
- Sensor_Settings *settings = NULL;
- Genesys_Register_Set *r;
- unsigned int used1, used2, vfinal;
- unsigned int bpp; /**> bytes per pixel */
- uint32_t z1, z2;
- uint16_t ex, sx;
- int channels = 1, stagger, words_per_line, max_shift;
- size_t requested_buffer_size;
- size_t read_buffer_size;
- SANE_Bool half_ccd = SANE_FALSE;
- SANE_Int xresolution;
- int feedl;
-
- DBG (DBG_proc, "gl646_setup_registers: start\n");
- DBG (DBG_info, "gl646_setup_registers: startx=%d, endx=%d, linecnt=%d\n",
- startx, endx, linecnt);
-
- /* x resolution is capped by sensor's capability */
- if (resolution > dev->sensor.optical_res)
- {
- xresolution = dev->sensor.optical_res;
- }
- else
- {
- xresolution = resolution;
- }
-
- /* for the given resolution, search for master
- * sensor mode setting */
- i = 0;
- nb = sizeof (sensor_master) / sizeof (Sensor_Master);
- while (i < nb)
- {
- if (dev->model->ccd_type == sensor_master[i].sensor
- && sensor_master[i].dpi == xresolution
- && sensor_master[i].color == color)
- {
- sensor = &sensor_master[i];
- }
- i++;
- }
- if (sensor == NULL)
- {
- DBG (DBG_error,
- "gl646_setup_registers: unable to find settings for sensor %d at %d dpi color=%d\n",
- dev->model->ccd_type, xresolution, color);
- return SANE_STATUS_INVAL;
- }
-
- /* for the given resolution, search for master
- * motor mode setting */
- i = 0;
- nb = sizeof (motor_master) / sizeof (Motor_Master);
- while (i < nb)
- {
- if (dev->model->motor_type == motor_master[i].motor
- && motor_master[i].dpi == resolution
- && motor_master[i].color == color)
- {
- motor = &motor_master[i];
- }
- i++;
- }
- if (motor == NULL)
- {
- DBG (DBG_error,
- "gl646_setup_registers: unable to find settings for motor %d at %d dpi, color=%d\n",
- dev->model->motor_type, resolution, color);
- return SANE_STATUS_INVAL;
- }
-
- /* now we can search for the specific sensor settings */
- i = 0;
- nb = sizeof (sensor_settings) / sizeof (Sensor_Settings);
- while (i < nb)
- {
- if (sensor->sensor == sensor_settings[i].sensor
- && sensor->cksel == sensor_settings[i].cksel)
- {
- settings = &sensor_settings[i];
- }
- i++;
- }
- if (settings == NULL)
- {
- DBG (DBG_error,
- "gl646_setup_registers: unable to find settings for sensor %d with '%d' ccd timing\n",
- sensor->sensor, sensor->cksel);
- return SANE_STATUS_INVAL;
- }
-
- /* half_ccd if manual clock programming or dpi is half dpiset */
- half_ccd = sensor->half_ccd;
-
- /* now apply values from settings to registers */
- if (sensor->regs_0x10_0x15 != NULL)
- {
- for (i = 0; i < 6; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- r->value = sensor->regs_0x10_0x15[i];
- }
- }
- else
- {
- for (i = 0; i < 6; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- r->value = 0;
- }
- }
-
- for (i = 0; i < 4; i++)
- {
- r = sanei_genesys_get_address (regs, 0x08 + i);
- if (half_ccd == SANE_TRUE)
- r->value = settings->manual_0x08_0x0b[i];
- else
- r->value = settings->regs_0x08_0x0b[i];
- }
-
- for (i = 0; i < 8; i++)
- {
- r = sanei_genesys_get_address (regs, 0x16 + i);
- r->value = settings->regs_0x16_0x1d[i];
- }
-
- for (i = 0; i < 13; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- r->value = settings->regs_0x52_0x5e[i];
- }
- if (half_ccd == SANE_TRUE)
- {
- for (i = 0; i < 7; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- r->value = settings->manual_0x52_0x58[i];
- }
- }
-
- /* now generate slope tables : we are not using generate_slope_table3 yet */
- sanei_genesys_generate_slope_table (slope_table1, motor->steps1,
- motor->steps1 + 1, motor->vend1,
- motor->vstart1, motor->vend1,
- motor->steps1, motor->g1, &used1,
- &vfinal);
- sanei_genesys_generate_slope_table (slope_table2, motor->steps2,
- motor->steps2 + 1, motor->vend2,
- motor->vstart2, motor->vend2,
- motor->steps2, motor->g2, &used2,
- &vfinal);
-
- if (color == SANE_TRUE)
- channels = 3;
- else
- channels = 1;
-
- /* R01 */
- /* now setup other registers for final scan (ie with shading enabled) */
- /* watch dog + shading + scan enable */
- regs[reg_0x01].value |= REG01_DOGENB | REG01_DVDSET | REG01_SCAN;
- if (dev->model->is_cis == SANE_TRUE)
- regs[reg_0x01].value |= REG01_CISSET;
- else
- regs[reg_0x01].value &= ~REG01_CISSET;
-
- /* if device has no calibration, don't enable shading correction */
- if (dev->model->flags & GENESYS_FLAG_NO_CALIBRATION)
- {
- regs[reg_0x01].value &= ~REG01_DVDSET;
- }
-
- regs[reg_0x01].value &= ~REG01_FASTMOD;
- if (motor->fastmod)
- regs[reg_0x01].value |= REG01_FASTMOD;
-
- /* R02 */
- /* allow moving when buffer full by default */
- if (dev->model->is_sheetfed == SANE_FALSE)
- dev->reg[reg_0x02].value &= ~REG02_ACDCDIS;
- else
- dev->reg[reg_0x02].value |= REG02_ACDCDIS;
-
- /* setup motor power and direction */
- regs[reg_0x02].value |= REG02_MTRPWR;
- regs[reg_0x02].value &= ~REG02_MTRREV;
-
- /* fastfed enabled (2 motor slope tables) */
- if (motor->fastfed)
- regs[reg_0x02].value |= REG02_FASTFED;
- else
- regs[reg_0x02].value &= ~REG02_FASTFED;
-
- /* step type */
- regs[reg_0x02].value &= ~REG02_STEPSEL;
- switch (motor->steptype)
- {
- case FULL_STEP:
- break;
- case HALF_STEP:
- regs[reg_0x02].value |= 1;
- break;
- case QUATER_STEP:
- regs[reg_0x02].value |= 2;
- break;
- default:
- regs[reg_0x02].value |= 3;
- break;
- }
-
- /* if sheetfed, no AGOHOME */
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- regs[reg_0x02].value &= ~REG02_AGOHOME;
- }
- else
- {
- regs[reg_0x02].value |= REG02_AGOHOME;
- }
-
- /* R03 */
- regs[reg_0x03].value &= ~REG03_AVEENB;
- /* regs[reg_0x03].value |= REG03_AVEENB; */
- regs[reg_0x03].value &= ~REG03_LAMPDOG;
-
- /* select XPA */
- regs[reg_0x03].value &= ~REG03_XPASEL;
- if (scan_settings.scan_method == SCAN_METHOD_TRANSPARENCY)
- {
- regs[reg_0x03].value |= REG03_XPASEL;
- }
-
- /* R04 */
- /* monochrome / color scan */
- switch (depth)
- {
- case 1:
- regs[reg_0x04].value &= ~REG04_BITSET;
- regs[reg_0x04].value |= REG04_LINEART;
- break;
- case 8:
- regs[reg_0x04].value &= ~(REG04_LINEART | REG04_BITSET);
- break;
- case 16:
- regs[reg_0x04].value &= ~REG04_LINEART;
- regs[reg_0x04].value |= REG04_BITSET;
- break;
- }
-
- /* R05 */
- regs[reg_0x05].value &= ~REG05_DPIHW;
- switch (dev->sensor.optical_res)
- {
- case 600:
- regs[reg_0x05].value |= REG05_DPIHW_600;
- break;
- case 1200:
- regs[reg_0x05].value |= REG05_DPIHW_1200;
- break;
- case 2400:
- regs[reg_0x05].value |= REG05_DPIHW_2400;
- break;
- default:
- regs[reg_0x05].value |= REG05_DPIHW;
- }
-
- /* gamma enable for scans */
- if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
- regs[reg_0x05].value |= REG05_GMM14BIT;
-
- regs[reg_0x05].value &= ~REG05_GMMENB;
-
- /* true CIS gray if needed */
- if (dev->model->is_cis == SANE_TRUE && color == SANE_FALSE
- && dev->settings.true_gray)
- {
- regs[reg_0x05].value |= REG05_LEDADD;
- }
- else
- {
- regs[reg_0x05].value &= ~REG05_LEDADD;
- }
-
- /* cktoggle, ckdelay and cksel at once, cktdelay=2 => half_ccd for md5345 */
- regs[reg_0x18].value = sensor->r18;
-
- /* manual CCD/2 clock programming => half_ccd for hp2300 */
- regs[reg_0x1d].value = sensor->r1d;
-
- /* HP2400 1200dpi mode tuning */
-
- if (dev->model->ccd_type == CCD_HP2400)
- {
- /* reset count of dummy lines to zero */
- regs[reg_0x1e].value &= ~REG1E_LINESEL;
- if (scan_settings.xres >= 1200)
- {
- /* there must be one dummy line */
- regs[reg_0x1e].value |= 1 & REG1E_LINESEL;
-
- /* GPO12 need to be set to zero */
- regs[reg_0x66].value &= ~0x20;
- }
- else
- {
- /* set GPO12 back to one */
- regs[reg_0x66].value |= 0x20;
- }
- }
-
- /* motor steps used */
- regs[reg_0x21].value = motor->steps1;
- regs[reg_0x22].value = motor->fwdbwd;
- regs[reg_0x23].value = motor->fwdbwd;
- regs[reg_0x24].value = motor->steps1;
-
- /* scanned area height must be enlarged by max color shift needed */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,scan_settings.yres,0);
-
- /* we adjust linecnt according to real motor dpi */
- linecnt = (linecnt * motor->ydpi) / scan_settings.yres + max_shift;
-
- /* at QUATER_STEP lines are 'staggered' and need correction */
- stagger = 0;
- if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- {
- /* for HP3670, stagger happens only at >=1200 dpi */
- if ((dev->model->motor_type != MOTOR_HP3670
- && dev->model->motor_type != MOTOR_HP2400)
- || scan_settings.yres >= dev->sensor.optical_res)
- {
- stagger = (4 * scan_settings.yres) / dev->motor.base_ydpi;
- }
- }
- linecnt += stagger;
-
- DBG (DBG_info, "gl646_setup_registers : max_shift=%d, stagger=%d lines\n",
- max_shift, stagger);
-
- /* CIS scanners read one line per color channel
- * since gray mode use 'add' we also read 3 channels even not in
- * color mode */
- if (dev->model->is_cis == SANE_TRUE)
- {
- gl646_set_triple_reg (regs, REG_LINCNT, linecnt * 3);
- linecnt *= channels;
- }
- else
- {
- gl646_set_triple_reg (regs, REG_LINCNT, linecnt);
- }
-
- /* scanner's x coordinates are expressed in physical DPI but they must be divided by cksel */
- sx = startx / sensor->cksel;
- ex = endx / sensor->cksel;
- if (half_ccd == SANE_TRUE)
- {
- sx /= 2;
- ex /= 2;
- }
- gl646_set_double_reg (regs, REG_STRPIXEL, sx);
- gl646_set_double_reg (regs, REG_ENDPIXEL, ex);
- DBG (DBG_info, "gl646_setup_registers: startx=%d, endx=%d, half_ccd=%d\n",
- sx, ex, half_ccd);
-
- /* words_per_line must be computed according to the scan's resolution */
- /* in fact, words_per_line _gives_ the actual scan resolution */
- words_per_line = (((endx - startx) * sensor->xdpi) / dev->sensor.optical_res);
- bpp=depth/8;
- if (depth == 1)
- {
- words_per_line = (words_per_line+7)/8 ;
- bpp=1;
- }
- else
- {
- words_per_line *= bpp;
- }
- dev->bpl = words_per_line;
- words_per_line *= channels;
- dev->wpl = words_per_line;
-
- DBG (DBG_info, "gl646_setup_registers: wpl=%d\n", words_per_line);
- gl646_set_triple_reg (regs, REG_MAXWD, words_per_line);
-
- gl646_set_double_reg (regs, REG_DPISET, sensor->dpiset);
- gl646_set_double_reg (regs, REG_LPERIOD, sensor->exposure);
-
- /* move distance must be adjusted to take into account the extra lines
- * read to reorder data */
- feedl = move;
- if (stagger + max_shift > 0 && feedl != 0)
- {
- if (feedl >
- ((max_shift + stagger) * dev->motor.optical_ydpi) / motor->ydpi)
- feedl =
- feedl -
- ((max_shift + stagger) * dev->motor.optical_ydpi) / motor->ydpi;
- }
-
- /* we assume all scans are done with 2 tables */
- /*
- feedl = feed_steps - fast_slope_steps*2 -
- (slow_slope_steps >> scan_step_type); */
- /* but head has moved due to shading calibration => dev->scanhead_position_in_steps */
- if (feedl > 0)
- {
- /* take into account the distance moved during calibration */
- /* feedl -= dev->scanhead_position_in_steps; */
- DBG (DBG_info, "gl646_setup_registers: initial move=%d\n", feedl);
- DBG (DBG_info, "gl646_setup_registers: scanhead_position_in_steps=%d\n",
- dev->scanhead_position_in_steps);
-
- /* TODO clean up this when I'll fully understand.
- * for now, special casing each motor */
- switch (dev->model->motor_type)
- {
- case MOTOR_5345:
- switch (motor->ydpi)
- {
- case 200:
- feedl -= 70;
- break;
- case 300:
- feedl -= 70;
- break;
- case 400:
- feedl += 130;
- break;
- case 600:
- feedl += 160;
- break;
- case 1200:
- feedl += 160;
- break;
- case 2400:
- feedl += 180;
- break;
- default:
- break;
- }
- break;
- case MOTOR_HP2300:
- switch (motor->ydpi)
- {
- case 75:
- feedl -= 180;
- break;
- case 150:
- feedl += 0;
- break;
- case 300:
- feedl += 30;
- break;
- case 600:
- feedl += 35;
- break;
- case 1200:
- feedl += 45;
- break;
- default:
- break;
- }
- break;
- case MOTOR_HP2400:
- switch (motor->ydpi)
- {
- case 150:
- feedl += 150;
- break;
- case 300:
- feedl += 220;
- break;
- case 600:
- feedl += 260;
- break;
- case 1200:
- feedl += 280; /* 300 */
- break;
- case 50:
- feedl += 0;
- break;
- case 100:
- feedl += 100;
- break;
- default:
- break;
- }
- break;
-
- /* theorical value */
- default:
- if (motor->fastfed)
- {
- feedl =
- feedl - 2 * motor->steps2 -
- (motor->steps1 >> motor->steptype);
- }
- else
- {
- feedl = feedl - (motor->steps1 >> motor->steptype);
- }
- break;
- }
- /* security */
- if (feedl < 0)
- feedl = 0;
- }
-
- DBG (DBG_info, "gl646_setup_registers: final move=%d\n", feedl);
- gl646_set_triple_reg (regs, REG_FEEDL, feedl);
-
- regs[reg_0x65].value = motor->mtrpwm;
-
- sanei_genesys_calculate_zmode2 (regs[reg_0x02].value & REG02_FASTFED,
- sensor->exposure,
- slope_table1,
- motor->steps1,
- move, motor->fwdbwd, &z1, &z2);
-
- /* no z1/z2 for sheetfed scanners */
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- z1 = 0;
- z2 = 0;
- }
- gl646_set_double_reg (regs, REG_Z1MOD, z1);
- gl646_set_double_reg (regs, REG_Z2MOD, z2);
- regs[reg_0x6b].value = motor->steps2;
- regs[reg_0x6c].value =
- (regs[reg_0x6c].value & REG6C_TGTIME) | ((z1 >> 13) & 0x38) | ((z2 >> 16)
- & 0x07);
-
- RIE (write_control (dev, xresolution));
-
- /* setup analog frontend */
- RIE (gl646_set_fe (dev, AFE_SET, xresolution));
-
- /* now we're done with registers setup values used by data transfer */
- /* we setup values needed for the data transfer */
-
- /* we must use a round number of words_per_line */
- requested_buffer_size = 8 * words_per_line;
- read_buffer_size =
- 2 * requested_buffer_size +
- ((max_shift + stagger) * scan_settings.pixels * channels * depth) / 8;
-
- RIE (sanei_genesys_buffer_free (&(dev->read_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->read_buffer), read_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->lines_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->lines_buffer), read_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->shrink_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->shrink_buffer),
- requested_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->out_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->out_buffer),
- 8 * scan_settings.pixels * channels * bpp));
-
- /* scan bytes to read */
- dev->read_bytes_left = words_per_line * linecnt;
-
- DBG (DBG_info,
- "gl646_setup_registers: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
- dev->read_active = SANE_TRUE;
-
- dev->current_setup.pixels =
- ((endx - startx) * sensor->xdpi) / dev->sensor.optical_res;
- dev->current_setup.lines = linecnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
- dev->current_setup.exposure_time = sensor->exposure;
- dev->current_setup.xres = sensor->xdpi;
- dev->current_setup.yres = motor->ydpi;
- dev->current_setup.half_ccd = half_ccd;
- dev->current_setup.stagger = stagger;
- dev->current_setup.max_shift = max_shift + stagger;
-
- /* total_bytes_to_read is the number of byte to send to frontend
- * total_bytes_read is the number of bytes sent to frontend
- * read_bytes_left is the number of bytes to read from the scanner
- */
- dev->total_bytes_read = 0;
- if (depth == 1)
- dev->total_bytes_to_read =
- ((scan_settings.pixels * scan_settings.lines) / 8 +
- (((scan_settings.pixels * scan_settings.lines) % 8) ? 1 : 0)) *
- channels;
- else
- dev->total_bytes_to_read =
- scan_settings.pixels * scan_settings.lines * channels * bpp;
-
- DBG (DBG_proc, "gl646_setup_registers: end\n");
- return SANE_STATUS_GOOD;
-}
-
-
-/** copy sensor specific settings */
-/* *dev : device infos
- *regs : regiters to be set
- extended : do extended set up
- half_ccd: set up for half ccd resolution
- all registers 08-0B, 10-1D, 52-5E are set up. They shouldn't
- appear anywhere else but in register init
-*/
-static void
-gl646_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r;
- int i;
-
- DBG (DBG_proc, "gl646_setup_sensor: start\n");
- for (i = 0; i < 4; i++)
- {
- r = sanei_genesys_get_address (regs, 0x08 + i);
- r->value = dev->sensor.regs_0x08_0x0b[i];
- }
-
- for (i = 0; i < 14; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
-
- for (i = 0; i < 13; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- r->value = dev->sensor.regs_0x52_0x5e[i];
- }
- DBG (DBG_proc, "gl646_setup_sensor: end\n");
-
-}
-
-/** Test if the ASIC works
- */
-static SANE_Status
-gl646_asic_test (Genesys_Device * dev)
-{
- SANE_Status status;
- uint8_t val;
- uint8_t *data;
- uint8_t *verify_data;
- size_t size, verify_size;
- unsigned int i;
-
- DBG (DBG_proc, "gl646_asic_test: start\n");
-
- /* set and read exposure time, compare if it's the same */
- status = sanei_genesys_write_register (dev, 0x38, 0xde);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to write register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_genesys_write_register (dev, 0x39, 0xad);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to write register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_genesys_read_register (dev, 0x4e, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to read register: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (val != 0xde) /* value of register 0x38 */
- {
- DBG (DBG_error, "gl646_asic_test: register contains invalid value\n");
- return SANE_STATUS_IO_ERROR;
- }
-
- status = sanei_genesys_read_register (dev, 0x4f, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to read register: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (val != 0xad) /* value of register 0x39 */
- {
- DBG (DBG_error, "gl646_asic_test: register contains invalid value\n");
- return SANE_STATUS_IO_ERROR;
- }
-
- /* ram test: */
- size = 0x40000;
- verify_size = size + 0x80;
- /* todo: looks like the read size must be a multiple of 128?
- otherwise the read doesn't succeed the second time after the scanner has
- been plugged in. Very strange. */
-
- data = (uint8_t *) malloc (size);
- if (!data)
- {
- DBG (DBG_error, "gl646_asic_test: could not allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
-
- verify_data = (uint8_t *) malloc (verify_size);
- if (!verify_data)
- {
- free (data);
- DBG (DBG_error, "gl646_asic_test: could not allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
-
- for (i = 0; i < (size - 1); i += 2)
- {
- data[i] = i / 512;
- data[i + 1] = (i / 2) % 256;
- }
-
- status = sanei_genesys_set_buffer_address (dev, 0x0000);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to set buffer address: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
- return status;
- }
-
- status = gl646_bulk_write_data (dev, 0x3c, data, size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to bulk write data: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
- return status;
- }
-
- status = sanei_genesys_set_buffer_address (dev, 0x0000);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to set buffer address: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
- return status;
- }
-
- status =
- gl646_bulk_read_data (dev, 0x45, (uint8_t *) verify_data, verify_size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_asic_test: failed to bulk read data: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
- return status;
- }
-
- /* i + 2 is needed as the changed address goes into effect only after one
- data word is sent. */
- for (i = 0; i < size; i++)
- {
- if (verify_data[i + 2] != data[i])
- {
- DBG (DBG_error, "gl646_asic_test: data verification error\n");
- free (data);
- free (verify_data);
- return SANE_STATUS_IO_ERROR;
- }
- }
-
- free (data);
- free (verify_data);
-
- DBG (DBG_info, "gl646_asic_test: end\n");
-
- return SANE_STATUS_GOOD;
-}
-
-/* returns the max register bulk size */
-static int
-gl646_bulk_full_size (void)
-{
- return GENESYS_GL646_MAX_REGS;
-}
-
-/**
- * Set all registers to default values after init
- * @param dev scannerr's device to set
- */
-static void
-gl646_init_regs (Genesys_Device * dev)
-{
- int nr, addr;
-
- DBG (DBG_proc, "gl646_init_regs\n");
-
- nr = 0;
- memset (dev->reg, 0, GENESYS_MAX_REGS * sizeof (Genesys_Register_Set));
-
- for (addr = 1; addr <= 0x0b; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x10; addr <= 0x29; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x2c; addr <= 0x39; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x3d; addr <= 0x3f; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x52; addr <= 0x5e; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x60; addr <= 0x6d; addr++)
- dev->reg[nr++].address = addr;
-
- dev->reg[reg_0x01].value = 0x20 /*0x22 */ ; /* enable shading, CCD, color, 1M */
- dev->reg[reg_0x02].value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
- if (dev->model->motor_type == MOTOR_5345)
- dev->reg[reg_0x02].value |= 0x01; /* half-step */
- switch (dev->model->motor_type)
- {
- case MOTOR_5345:
- dev->reg[reg_0x02].value |= 0x01; /* half-step */
- break;
- case MOTOR_XP200:
- /* for this sheetfed scanner, no AGOHOME, nor backtracking */
- dev->reg[reg_0x02].value = 0x50;
- break;
- default:
- break;
- }
- dev->reg[reg_0x03].value = 0x1f /*0x17 */ ; /* lamp on */
- dev->reg[reg_0x04].value = 0x13 /*0x03 */ ; /* 8 bits data, 16 bits A/D, color, Wolfson fe *//* todo: according to spec, 0x0 is reserved? */
- switch (dev->model->dac_type)
- {
- case DAC_AD_XP200:
- dev->reg[reg_0x04].value = 0x12;
- break;
- default:
- /* Wolfson frontend */
- dev->reg[reg_0x04].value = 0x13;
- break;
- }
-
- dev->reg[reg_0x05].value = 0x00; /* 12 bits gamma, disable gamma, 24 clocks/pixel */
- switch (dev->sensor.optical_res)
- {
- case 600:
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
- break;
- case 1200:
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
- break;
- case 2400:
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
- break;
- default:
- dev->reg[reg_0x05].value |= REG05_DPIHW;
- break;
- }
- if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
- dev->reg[reg_0x05].value |= REG05_GMM14BIT;
- if (dev->model->dac_type == DAC_AD_XP200)
- dev->reg[reg_0x05].value |= 0x01; /* 12 clocks/pixel */
-
- if (dev->model->ccd_type == CCD_HP2300)
- dev->reg[reg_0x06].value = 0x00; /* PWRBIT off, shading gain=4, normal AFE image capture */
- else
- dev->reg[reg_0x06].value = 0x18; /* PWRBIT on, shading gain=8, normal AFE image capture */
-
-
- gl646_setup_sensor (dev, dev->reg);
-
- dev->reg[reg_0x1e].value = 0xf0; /* watch-dog time */
-
- switch (dev->model->ccd_type)
- {
- case CCD_HP2300:
- dev->reg[reg_0x1e].value = 0xf0;
- dev->reg[reg_0x1f].value = 0x10;
- dev->reg[reg_0x20].value = 0x20;
- break;
- case CCD_HP2400:
- dev->reg[reg_0x1e].value = 0x80;
- dev->reg[reg_0x1f].value = 0x10;
- dev->reg[reg_0x20].value = 0x20;
- break;
- case CCD_HP3670:
- dev->reg[reg_0x19].value = 0x2a;
- dev->reg[reg_0x1e].value = 0x80;
- dev->reg[reg_0x1f].value = 0x10;
- dev->reg[reg_0x20].value = 0x20;
- break;
- case CIS_XP200:
- dev->reg[reg_0x1e].value = 0x10;
- dev->reg[reg_0x1f].value = 0x01;
- dev->reg[reg_0x20].value = 0x50;
- break;
- default:
- dev->reg[reg_0x1f].value = 0x01;
- dev->reg[reg_0x20].value = 0x50;
- break;
- }
-
- dev->reg[reg_0x21].value = 0x08 /*0x20 */ ; /* table one steps number for forward slope curve of the acc/dec */
- dev->reg[reg_0x22].value = 0x10 /*0x08 */ ; /* steps number of the forward steps for start/stop */
- dev->reg[reg_0x23].value = 0x10 /*0x08 */ ; /* steps number of the backward steps for start/stop */
- dev->reg[reg_0x24].value = 0x08 /*0x20 */ ; /* table one steps number backward slope curve of the acc/dec */
- dev->reg[reg_0x25].value = 0x00; /* scan line numbers (7000) */
- dev->reg[reg_0x26].value = 0x00 /*0x1b */ ;
- dev->reg[reg_0x27].value = 0xd4 /*0x58 */ ;
- dev->reg[reg_0x28].value = 0x01; /* PWM duty for lamp control */
- dev->reg[reg_0x29].value = 0xff;
-
- dev->reg[reg_0x2c].value = 0x02; /* set resolution (600 DPI) */
- dev->reg[reg_0x2d].value = 0x58;
- dev->reg[reg_0x2e].value = 0x78; /* set black&white threshold high level */
- dev->reg[reg_0x2f].value = 0x7f; /* set black&white threshold low level */
-
- dev->reg[reg_0x30].value = 0x00; /* begin pixel position (16) */
- dev->reg[reg_0x31].value = dev->sensor.dummy_pixel /*0x10 */ ; /* TGW + 2*TG_SHLD + x */
- dev->reg[reg_0x32].value = 0x2a /*0x15 */ ; /* end pixel position (5390) */
- dev->reg[reg_0x33].value = 0xf8 /*0x0e */ ; /* TGW + 2*TG_SHLD + y */
- dev->reg[reg_0x34].value = dev->sensor.dummy_pixel;
- dev->reg[reg_0x35].value = 0x01 /*0x00 */ ; /* set maximum word size per line, for buffer full control (10800) */
- dev->reg[reg_0x36].value = 0x00 /*0x2a */ ;
- dev->reg[reg_0x37].value = 0x00 /*0x30 */ ;
- dev->reg[reg_0x38].value = HIBYTE (dev->settings.exposure_time) /*0x2a */ ; /* line period (exposure time = 11000 pixels) */
- dev->reg[reg_0x39].value = LOBYTE (dev->settings.exposure_time) /*0xf8 */ ;
- dev->reg[reg_0x3d].value = 0x00; /* set feed steps number of motor move */
- dev->reg[reg_0x3e].value = 0x00;
- dev->reg[reg_0x3f].value = 0x01 /*0x00 */ ;
-
- dev->reg[reg_0x60].value = 0x00; /* Z1MOD, 60h:61h:(6D b5:b3), remainder for start/stop */
- dev->reg[reg_0x61].value = 0x00; /* (21h+22h)/LPeriod */
- dev->reg[reg_0x62].value = 0x00; /* Z2MODE, 62h:63h:(6D b2:b0), remainder for start scan */
- dev->reg[reg_0x63].value = 0x00; /* (3Dh+3Eh+3Fh)/LPeriod for one-table mode,(21h+1Fh)/LPeriod */
- dev->reg[reg_0x64].value = 0x00; /* motor PWM frequency */
- dev->reg[reg_0x65].value = 0x00; /* PWM duty cycle for table one motor phase (63 = max) */
- if (dev->model->motor_type == MOTOR_5345)
- dev->reg[reg_0x65].value = 0x02; /* PWM duty cycle for table one motor phase (63 = max) */
- dev->reg[reg_0x66].value = dev->gpo.value[0];
- dev->reg[reg_0x67].value = dev->gpo.value[1];
- dev->reg[reg_0x68].value = dev->gpo.enable[0];
- dev->reg[reg_0x69].value = dev->gpo.enable[1];
-
- switch (dev->model->motor_type)
- {
- case MOTOR_HP2300:
- case MOTOR_HP2400:
- dev->reg[reg_0x6a].value = 0x7f; /* table two steps number for acc/dec */
- dev->reg[reg_0x6b].value = 0x78; /* table two steps number for acc/dec */
- dev->reg[reg_0x6d].value = 0x7f;
- break;
- case MOTOR_5345:
- dev->reg[reg_0x6a].value = 0x42; /* table two fast moving step type, PWM duty for table two */
- dev->reg[reg_0x6b].value = 0xff; /* table two steps number for acc/dec */
- dev->reg[reg_0x6d].value = 0x41; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
- break;
- case MOTOR_XP200:
- dev->reg[reg_0x6a].value = 0x7f; /* table two fast moving step type, PWM duty for table two */
- dev->reg[reg_0x6b].value = 0x08; /* table two steps number for acc/dec */
- dev->reg[reg_0x6d].value = 0x01; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
- break;
- case MOTOR_HP3670:
- dev->reg[reg_0x6a].value = 0x41; /* table two steps number for acc/dec */
- dev->reg[reg_0x6b].value = 0xc8; /* table two steps number for acc/dec */
- dev->reg[reg_0x6d].value = 0x7f;
- break;
- default:
- dev->reg[reg_0x6a].value = 0x40; /* table two fast moving step type, PWM duty for table two */
- dev->reg[reg_0x6b].value = 0xff; /* table two steps number for acc/dec */
- dev->reg[reg_0x6d].value = 0x01; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
- break;
- }
- dev->reg[reg_0x6c].value = 0x00; /* peroid times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE (one period time) */
-}
-
-
-/* Send slope table for motor movement
- slope_table in machine byte order
-*/
-static SANE_Status
-gl646_send_slope_table (Genesys_Device * dev, int table_nr,
- uint16_t * slope_table, int steps)
-{
- int dpihw;
- int start_address;
- SANE_Status status;
- uint8_t *table;
-#ifdef WORDS_BIGENDIAN
- int i;
-#endif
-
- DBG (DBG_proc,
- "gl646_send_slope_table (table_nr = %d, steps = %d)=%d .. %d\n",
- table_nr, steps, slope_table[0], slope_table[steps - 1]);
-
- dpihw = dev->reg[reg_0x05].value >> 6;
-
- if (dpihw == 0) /* 600 dpi */
- start_address = 0x08000;
- else if (dpihw == 1) /* 1200 dpi */
- start_address = 0x10000;
- else if (dpihw == 2) /* 2400 dpi */
- start_address = 0x1f800;
- else /* reserved */
- return SANE_STATUS_INVAL;
-
-#ifdef WORDS_BIGENDIAN
- table = (uint8_t *) malloc (steps * 2);
- for (i = 0; i < steps; i++)
- {
- table[i * 2] = slope_table[i] & 0xff;
- table[i * 2 + 1] = slope_table[i] >> 8;
- }
-#else
- table = (uint8_t *) slope_table;
-#endif
-
- status =
- sanei_genesys_set_buffer_address (dev, start_address + table_nr * 0x100);
- if (status != SANE_STATUS_GOOD)
- {
-#ifdef WORDS_BIGENDIAN
- free (table);
-#endif
- DBG (DBG_error,
- "gl646_send_slope_table: failed to set buffer address: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl646_bulk_write_data (dev, 0x3c, (uint8_t *) table, steps * 2);
- if (status != SANE_STATUS_GOOD)
- {
-#ifdef WORDS_BIGENDIAN
- free (table);
-#endif
- DBG (DBG_error,
- "gl646_send_slope_table: failed to send slope table: %s\n",
- sane_strstatus (status));
- return status;
- }
-
-#ifdef WORDS_BIGENDIAN
- free (table);
-#endif
- DBG (DBG_proc, "gl646_send_slope_table: end\n");
- return status;
-}
-
-/* Set values of Analog Device type frontend */
-static SANE_Status
-gl646_set_ad_fe (Genesys_Device * dev, uint8_t set)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- int i;
- uint16_t val;
-
- DBG (DBG_proc, "gl646_set_ad_fe(): start\n");
- if (set == AFE_INIT)
- {
- DBG (DBG_proc, "gl646_set_ad_fe(): setting DAC %u\n",
- dev->model->dac_type);
-
- /* sets to default values */
- sanei_genesys_init_fe (dev);
-
- /* write them to analog frontend */
- val = dev->frontend.reg[0];
- status = sanei_genesys_fe_write_data (dev, 0x00, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_ad_fe: failed to write reg0: %s\n",
- sane_strstatus (status));
- return status;
- }
- val = dev->frontend.reg[1];
- status = sanei_genesys_fe_write_data (dev, 0x01, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_ad_fe: failed to write reg1: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
- if (set == AFE_SET)
- {
- for (i = 0; i < 3; i++)
- {
- val = dev->frontend.gain[i];
- status = sanei_genesys_fe_write_data (dev, 0x02 + i, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_set_ad_fe: failed to write gain %d: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
- for (i = 0; i < 3; i++)
- {
- val = dev->frontend.offset[i];
- status = sanei_genesys_fe_write_data (dev, 0x05 + i, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_set_ad_fe: failed to write offset %d: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
- }
- /*
- if (set == AFE_POWER_SAVE)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0] | 0x04);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_ad_fe: failed to write reg0: %s\n",
- sane_strstatus (status));
- return status;
- }
- } */
- DBG (DBG_proc, "gl646_set_ad_fe(): end\n");
-
- return status;
-}
-
-/** set up analog frontend
- * set up analog frontend
- * @param dev device to set up
- * @param set action from AFE_SET, AFE_INIT and AFE_POWERSAVE
- * @param dpi resolution of the scan since it affects settings
- * @return SANE_STATUS_GOOD if evrithing OK
- */
-static SANE_Status
-gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set, int dpi)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- int i;
-
- DBGSTART;
- switch (set)
- {
- case AFE_INIT:
- status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: reset failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- usleep (200000UL);
- RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
- sanei_genesys_init_fe (dev);
- status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing reg1 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing reg2 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = gl646_gpio_output_enable (dev->dn, 0x07);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: failed to enable GPIO: %s\n",
- sane_strstatus (status));
- return status;
- }
- break;
- case AFE_POWER_SAVE:
- status = sanei_genesys_fe_write_data (dev, 0x01, 0x06);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing reg1 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = sanei_genesys_fe_write_data (dev, 0x06, 0x0f);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing reg6 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- return status;
- break;
- default: /* AFE_SET */
- /* mode setup */
- i = dev->frontend.reg[3];
- if (dpi > dev->sensor.optical_res / 2)
- {
- /* fe_reg_0x03 must be 0x12 for 1200 dpi in DAC_WOLFSON_HP3670.
- * DAC_WOLFSON_HP2400 in 1200 dpi mode works well with
- * fe_reg_0x03 set to 0x32 or 0x12 but not to 0x02 */
- i = 0x12;
- }
- status = sanei_genesys_fe_write_data (dev, 0x03, i);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing reg3 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- /* offset and sign (or msb/lsb ?) */
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x20 + i,
- dev->frontend.offset[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_wm_hp3670: writing offset%d failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- status = sanei_genesys_fe_write_data (dev, 0x24 + i, dev->frontend.sign[i]); /* MSB/LSB ? */
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing sign%d failed: %s\n",
- i, sane_strstatus (status));
- return status;
- }
- }
-
- /* gain */
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x28 + i,
- dev->frontend.gain[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_wm_hp3670: writing gain%d failed: %s\n",
- i, sane_strstatus (status));
- return status;
- }
- }
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-/** Set values of analog frontend
- * @param dev device to set
- * @param set action to execute
- * @param dpi dpi to setup the AFE
- * @return error or SANE_STATUS_GOOD */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi)
-{
- SANE_Status status;
- int i;
- uint8_t val;
-
- DBG (DBG_proc, "gl646_set_fe (%s,%d)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
- AFE_POWER_SAVE ? "powersave" : "huh?", dpi);
-
- /* Analog Device type frontend */
- if ((dev->reg[reg_0x04].value & REG04_FESET) == 0x02)
- return gl646_set_ad_fe (dev, set);
-
- /* Wolfson type frontend */
- if ((dev->reg[reg_0x04].value & REG04_FESET) != 0x03)
- {
- DBG (DBG_proc, "gl646_set_fe(): unsupported frontend type %d\n",
- dev->reg[reg_0x04].value & REG04_FESET);
- return SANE_STATUS_UNSUPPORTED;
- }
-
- /* per frontend function to keep code clean */
- switch (dev->model->dac_type)
- {
- case DAC_WOLFSON_HP3670:
- case DAC_WOLFSON_HP2400:
- return gl646_wm_hp3670 (dev, set, dpi);
- break;
- default:
- DBG (DBG_proc, "gl646_set_fe(): using old method\n");
- break;
- }
-
- /* initialize analog frontend */
- if (set == AFE_INIT)
- {
- DBG (DBG_proc, "gl646_set_fe(): setting DAC %u\n",
- dev->model->dac_type);
- sanei_genesys_init_fe (dev);
-
- /* reset only done on init */
- status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: init fe failed: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* enable GPIO for some models */
- if (dev->model->ccd_type == CCD_HP2300)
- {
- val = 0x07;
- status = gl646_gpio_output_enable (dev->dn, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_set_fe: failed to enable GPIO: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
- return status;
- }
-
- /* set fontend to power saving mode */
- if (set == AFE_POWER_SAVE)
- {
- status = sanei_genesys_fe_write_data (dev, 0x01, 0x02);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing data failed: %s\n",
- sane_strstatus (status));
- }
- return status;
- }
-
- /* here starts AFE_SET */
- /* TODO : base this test on cfg reg3 or a CCD family flag to be created */
- /* if (dev->model->ccd_type != CCD_HP2300
- && dev->model->ccd_type != CCD_HP3670
- && dev->model->ccd_type != CCD_HP2400) */
- {
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing reg0 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing reg2 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
-
- /* start with reg3 */
- status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[3]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing reg3 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- switch (dev->model->ccd_type)
- {
- default:
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x24 + i,
- dev->frontend.sign[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing sign[%d] failed: %s\n",
- i, sane_strstatus (status));
- return status;
- }
-
- status =
- sanei_genesys_fe_write_data (dev, 0x28 + i,
- dev->frontend.gain[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing gain[%d] failed: %s\n",
- i, sane_strstatus (status));
- return status;
- }
-
- status =
- sanei_genesys_fe_write_data (dev, 0x20 + i,
- dev->frontend.offset[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_set_fe: writing offset[%d] failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
- break;
- /* just can't have it to work ....
- case CCD_HP2300:
- case CCD_HP2400:
- case CCD_HP3670:
-
- status =
- sanei_genesys_fe_write_data (dev, 0x23, dev->frontend.offset[1]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_set_fe: writing offset[1] failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- status = sanei_genesys_fe_write_data (dev, 0x28, dev->frontend.gain[1]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing gain[1] failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- break; */
- }
-
- /* end with reg1 */
- status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_set_fe: writing reg1 failed: %s\n",
- sane_strstatus (status));
- return status;
- }
-
-
- DBG (DBG_proc, "gl646_set_fe: end\n");
-
- return SANE_STATUS_GOOD;
-}
-
-/** Set values of analog frontend
- * this this the public interface, the gl646 as to use one more
- * parameter to work effectively, hence the redirection
- * @param dev device to set
- * @param set action to execute
- * @return error or SANE_STATUS_GOOD */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl646_public_set_fe (Genesys_Device * dev, uint8_t set)
-{
- return gl646_set_fe (dev, set, dev->settings.yres);
-}
-
-static void
-gl646_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, 0x02,
- sanei_genesys_read_reg_from_set (regs,
- 0x02) |
- REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, 0x02,
- sanei_genesys_read_reg_from_set (regs,
- 0x02) &
- ~REG02_MTRPWR);
- }
-}
-
-static void
-gl646_set_lamp_power (Genesys_Device * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- if (dev)
- {
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set
- (regs, 0x03) | REG03_LAMPPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set
- (regs, 0x03) & ~REG03_LAMPPWR);
- }
- }
-}
-
-/**
- * enters or leaves power saving mode
- * limited to AFE for now.
- * @param dev scanner's device
- * @param enable SANE_TRUE to enable power saving, SANE_FALSE to leave it
- * @return allways SANE_STATUS_GOOD
- */
-GENESYS_STATIC
-SANE_Status
-gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
-{
-
- DBGSTART;
- DBG (DBG_info, "gl646_save_power: enable = %d\n", enable);
-
- if (enable)
- {
- /* gl646_set_fe (dev, AFE_POWER_SAVE); */
- }
- else
- {
- gl646_set_fe (dev, AFE_INIT, 0);
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static SANE_Status
-gl646_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
-{
- SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Register_Set local_reg[6];
- int rate, exposure_time, tgtime, time;
-
- DBG (DBG_proc, "gl646_set_powersaving (delay = %d)\n", delay);
-
- local_reg[0].address = 0x01;
- local_reg[0].value = sanei_genesys_read_reg_from_set (dev->reg, 0x01); /* disable fastmode */
-
- local_reg[1].address = 0x03;
- local_reg[1].value = sanei_genesys_read_reg_from_set (dev->reg, 0x03); /* Lamp power control */
-
- local_reg[2].address = 0x05;
- local_reg[2].value = sanei_genesys_read_reg_from_set (dev->reg, 0x05) & ~REG05_BASESEL; /* 24 clocks/pixel */
-
- local_reg[3].address = 0x38; /* line period low */
- local_reg[3].value = 0x00;
-
- local_reg[4].address = 0x39; /* line period high */
- local_reg[4].value = 0x00;
-
- local_reg[5].address = 0x6c; /* period times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE */
- local_reg[5].value = 0x00;
-
- if (!delay)
- local_reg[1].value = local_reg[1].value & 0xf0; /* disable lampdog and set lamptime = 0 */
- else if (delay < 20)
- local_reg[1].value = (local_reg[1].value & 0xf0) | 0x09; /* enable lampdog and set lamptime = 1 */
- else
- local_reg[1].value = (local_reg[1].value & 0xf0) | 0x0f; /* enable lampdog and set lamptime = 7 */
-
- time = delay * 1000 * 60; /* -> msec */
- exposure_time =
- (uint32_t) (time * 32000.0 /
- (24.0 * 64.0 * (local_reg[1].value & REG03_LAMPTIM) *
- 1024.0) + 0.5);
- /* 32000 = system clock, 24 = clocks per pixel */
- rate = (exposure_time + 65536) / 65536;
- if (rate > 4)
- {
- rate = 8;
- tgtime = 3;
- }
- else if (rate > 2)
- {
- rate = 4;
- tgtime = 2;
- }
- else if (rate > 1)
- {
- rate = 2;
- tgtime = 1;
- }
- else
- {
- rate = 1;
- tgtime = 0;
- }
-
- local_reg[5].value |= tgtime << 6;
- exposure_time /= rate;
-
- if (exposure_time > 65535)
- exposure_time = 65535;
-
- local_reg[3].value = exposure_time / 256; /* highbyte */
- local_reg[4].value = exposure_time & 255; /* lowbyte */
-
- status = gl646_bulk_write_register (dev, local_reg,
- sizeof (local_reg) /
- sizeof (local_reg[0]));
- if (status != SANE_STATUS_GOOD)
- DBG (DBG_error,
- "gl646_set_powersaving: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
-
- DBG (DBG_proc, "gl646_set_powersaving: end\n");
- return status;
-}
-
-
-/**
- * loads document into scanner
- * currently only used by XP200
- * bit2 (0x04) of gpio is paper event (document in/out) on XP200
- * HOMESNR is set if no document in front of sensor, the sequence of events is
- * paper event -> document is in the sheet feeder
- * HOMESNR becomes 0 -> document reach sensor
- * HOMESNR becomes 1 ->document left sensor
- * paper event -> document is out
- */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl646_load_document (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Register_Set regs[11];
- unsigned int used, vfinal, count;
- uint16_t slope_table[255];
- uint8_t val;
-
- DBG (DBG_proc, "gl646_load_document: start\n");
-
- /* no need to load document is flatbed scanner */
- if (dev->model->is_sheetfed == SANE_FALSE)
- {
- DBG (DBG_proc, "gl646_load_document: nothing to load\n");
- DBG (DBG_proc, "gl646_load_document: end\n");
- return SANE_STATUS_GOOD;
- }
-
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to read status: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* HOMSNR is set if a document is inserted */
- if ((val & REG41_HOMESNR))
- {
- /* if no document, waits for a paper event to start loading */
- /* with a 60 seconde minutes timeout */
- count = 0;
- do
- {
- status = gl646_gpio_read (dev->dn, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to read paper sensor %s\n",
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_info, "gl646_load_document: GPIO=0x%02x\n", val);
- if ((val & 0x04) != 0x04)
- {
- DBG (DBG_warn, "gl646_load_document: no paper detected\n");
- }
- usleep (200000UL); /* sleep 200 ms */
- count++;
- }
- while (((val & 0x04) != 0x04) && (count < 300)); /* 1 min time out */
- if (count == 300)
- {
- DBG (DBG_error,
- "gl646_load_document: timeout waiting for document\n");
- return SANE_STATUS_NO_DOCS;
- }
- }
-
- /* set up to fast move before scan then move until document is detected */
- regs[0].address = 0x01;
- regs[0].value = 0x90;
-
- /* AGOME, 2 slopes motor moving */
- regs[1].address = 0x02;
- regs[1].value = 0x79;
-
- /* motor feeding steps to 0 */
- regs[2].address = 0x3d;
- regs[2].value = 0;
- regs[3].address = 0x3e;
- regs[3].value = 0;
- regs[4].address = 0x3f;
- regs[4].value = 0;
-
- /* 50 fast moving steps */
- regs[5].address = 0x6b;
- regs[5].value = 50;
-
- /* set GPO */
- regs[6].address = 0x66;
- regs[6].value = 0x30;
-
- /* stesp NO */
- regs[7].address = 0x21;
- regs[7].value = 4;
- regs[8].address = 0x22;
- regs[8].value = 1;
- regs[9].address = 0x23;
- regs[9].value = 1;
- regs[10].address = 0x24;
- regs[10].value = 4;
-
- /* generate slope table 2 */
- sanei_genesys_generate_slope_table (slope_table,
- 50,
- 51,
- 2400,
- 6000, 2400, 50, 0.25, &used, &vfinal);
-/* document loading:
- * send regs
- * start motor
- * wait e1 status to become e0
- */
- status = gl646_send_slope_table (dev, 1, slope_table, 50);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to send slope table 1: %s\n",
- sane_strstatus (status));
- return status;
- }
- status =
- gl646_bulk_write_register (dev, regs, sizeof (regs) / sizeof (regs[0]));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl646_start_motor (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to start motor: %s\n",
- sane_strstatus (status));
- return SANE_STATUS_IO_ERROR;
- }
-
- count = 0;
- do
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to read status: %s\n",
- sane_strstatus (status));
- return status;
- }
- usleep (200000UL); /* sleep 200 ms */
- count++;
- }
- while ((val & REG41_MOTMFLG) && (count < 300));
- if (count == 300)
- {
- DBG (DBG_error, "gl646_load_document: can't load document\n");
- return SANE_STATUS_JAMMED;
- }
-
- /* when loading OK, document is here */
- dev->document = SANE_TRUE;
-
- /* set up to idle */
- regs[1].value = 0x71;
- regs[4].value = 1;
- regs[5].value = 8;
- status =
- gl646_bulk_write_register (dev, regs, sizeof (regs) / sizeof (regs[0]));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_load_document: failed to bulk write idle registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_proc, "gl646_load_document: end\n");
-
- return status;
-}
-
-/**
- * detects end of document and adjust current scan
- * to take it into account
- * used by sheetfed scanners
- */
-static SANE_Status
-gl646_detect_document_end (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- uint8_t val, gpio;
- unsigned int bytes_left, lines;
-
- DBG (DBG_proc, "gl646_detect_document_end: start\n");
-
- /* test for document presence */
- RIE (sanei_genesys_get_status (dev, &val));
- if (DBG_LEVEL > DBG_info)
- {
- print_status (val);
- }
- status = gl646_gpio_read (dev->dn, &gpio);
- DBG (DBG_info, "gl646_detect_document_end: GPIO=0x%02x\n", gpio);
-
- /* detect document event. There one event when the document go in,
- * then another when it leaves */
- if ((dev->document == SANE_TRUE) && (gpio & 0x04)
- && (dev->total_bytes_read > 0))
- {
- DBG (DBG_info, "gl646_detect_document_end: no more document\n");
- dev->document = SANE_FALSE;
-
- /* adjust number of bytes to read:
- * total_bytes_to_read is the number of byte to send to frontend
- * total_bytes_read is the number of bytes sent to frontend
- * read_bytes_left is the number of bytes to read from the scanner
- */
- DBG (DBG_io, "gl646_detect_document_end: total_bytes_to_read=%lu\n",
- (u_long) dev->total_bytes_to_read);
- DBG (DBG_io, "gl646_detect_document_end: total_bytes_read =%lu\n",
- (u_long) dev->total_bytes_read);
- DBG (DBG_io, "gl646_detect_document_end: read_bytes_left =%lu\n",
- (u_long) dev->read_bytes_left);
-
- /* amount of data available from scanner is what to scan */
- status = sanei_genesys_read_valid_words (dev, &bytes_left);
-
- /* we add the number of lines needed to read the last part of the document in */
- lines =
- (SANE_UNFIX (dev->model->y_offset) * dev->current_setup.yres) /
- MM_PER_INCH;
- DBG (DBG_io, "gl646_detect_document_end: adding %d line to flush\n",
- lines);
- bytes_left += lines * dev->wpl;
- if (dev->current_setup.depth > 8)
- {
- bytes_left = 2 * bytes_left;
- }
- if (dev->current_setup.channels > 1)
- {
- bytes_left = 3 * bytes_left;
- }
- if (bytes_left < dev->read_bytes_left)
- {
- dev->total_bytes_to_read = dev->total_bytes_read + bytes_left;
- dev->read_bytes_left = bytes_left;
- }
- DBG (DBG_io, "gl646_detect_document_end: total_bytes_to_read=%lu\n",
- (u_long) dev->total_bytes_to_read);
- DBG (DBG_io, "gl646_detect_document_end: total_bytes_read =%lu\n",
- (u_long) dev->total_bytes_read);
- DBG (DBG_io, "gl646_detect_document_end: read_bytes_left =%lu\n",
- (u_long) dev->read_bytes_left);
- }
- DBG (DBG_proc, "gl646_detect_document_end: end\n");
-
- return status;
-}
-
-/**
- * eject document from the feeder
- * currently only used by XP200
- * TODO we currently rely on AGOHOME not being set for sheetfed scanners,
- * maybe check this flag in eject to let the document being eject automaticaly
- */
-static SANE_Status
-gl646_eject_document (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Register_Set regs[11];
- unsigned int used, vfinal, count;
- uint16_t slope_table[255];
- uint8_t gpio, state;
-
- DBG (DBG_proc, "gl646_eject_document: start\n");
-
- /* at the end there will be noe more document */
- dev->document = SANE_FALSE;
-
- /* first check for document event */
- status = gl646_gpio_read (dev->dn, &gpio);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to read paper sensor %s\n",
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_info, "gl646_eject_document: GPIO=0x%02x\n", gpio);
-
- /* test status : paper event + HOMESNR -> no more doc ? */
- status = sanei_genesys_get_status (dev, &state);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to read status: %s\n",
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_info, "gl646_eject_document: state=0x%02x\n", state);
- if (DBG_LEVEL > DBG_info)
- {
- print_status (state);
- }
-
- /* HOMSNR=0 if no document inserted */
- if ((state & REG41_HOMESNR) != 0)
- {
- dev->document = SANE_FALSE;
- DBG (DBG_info, "gl646_eject_document: no more document to eject\n");
- DBG (DBG_proc, "gl646_eject_document: end\n");
- return status;
- }
-
- /* there is a document inserted, eject it */
- status = sanei_genesys_write_register (dev, 0x01, 0xb0);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to write register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* wait for motor to stop */
- do
- {
- usleep (200000UL);
- status = sanei_genesys_get_status (dev, &state);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to read status: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
- while (state & REG41_MOTMFLG);
-
- /* set up to fast move before scan then move until document is detected */
- regs[0].address = 0x01;
- regs[0].value = 0xb0;
-
- /* AGOME, 2 slopes motor moving , eject 'backward' */
- regs[1].address = 0x02;
- regs[1].value = 0x5d;
-
- /* motor feeding steps to 119880 */
- regs[2].address = 0x3d;
- regs[2].value = 1;
- regs[3].address = 0x3e;
- regs[3].value = 0xd4;
- regs[4].address = 0x3f;
- regs[4].value = 0x48;
-
- /* 60 fast moving steps */
- regs[5].address = 0x6b;
- regs[5].value = 60;
-
- /* set GPO */
- regs[6].address = 0x66;
- regs[6].value = 0x30;
-
- /* stesp NO */
- regs[7].address = 0x21;
- regs[7].value = 4;
- regs[8].address = 0x22;
- regs[8].value = 1;
- regs[9].address = 0x23;
- regs[9].value = 1;
- regs[10].address = 0x24;
- regs[10].value = 4;
-
- /* generate slope table 2 */
- sanei_genesys_generate_slope_table (slope_table,
- 60,
- 61,
- 1600,
- 10000, 1600, 60, 0.25, &used, &vfinal);
-/* document eject:
- * send regs
- * start motor
- * wait c1 status to become c8 : HOMESNR and ~MOTFLAG
- */
- status = gl646_send_slope_table (dev, 1, slope_table, 60);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to send slope table 1: %s\n",
- sane_strstatus (status));
- return status;
- }
- status =
- gl646_bulk_write_register (dev, regs, sizeof (regs) / sizeof (regs[0]));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl646_start_motor (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to start motor: %s\n",
- sane_strstatus (status));
- return SANE_STATUS_IO_ERROR;
- }
-
- /* loop until paper sensor tells paper is out, and till motor is running */
- /* use a 30 timeout */
- count = 0;
- do
- {
- status = sanei_genesys_get_status (dev, &state);
- print_status (state);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to read status: %s\n",
- sane_strstatus (status));
- return status;
- }
- usleep (200000UL); /* sleep 200 ms */
- count++;
- }
- while (((state & REG41_HOMESNR) == 0) && (count < 150));
-
- /* read GPIO on exit */
- status = gl646_gpio_read (dev->dn, &gpio);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_eject_document: failed to read paper sensor %s\n",
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_info, "gl646_eject_document: GPIO=0x%02x\n", gpio);
-
- DBG (DBG_proc, "gl646_eject_document: end\n");
- return status;
-}
-
-/* Send the low-level scan command */
-static SANE_Status
-gl646_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool start_motor)
-{
- SANE_Status status;
- Genesys_Register_Set local_reg[3];
-
- DBG (DBG_proc, "gl646_begin_scan\n");
-
- local_reg[0].address = 0x03;
- local_reg[0].value = sanei_genesys_read_reg_from_set (reg, 0x03);
-
- local_reg[1].address = 0x01;
- local_reg[1].value = sanei_genesys_read_reg_from_set (reg, 0x01) | REG01_SCAN; /* set scan bit */
-
- local_reg[2].address = 0x0f;
- if (start_motor)
- local_reg[2].value = 0x01;
- else
- local_reg[2].value = 0x00; /* do not start motor yet */
-
- status = gl646_bulk_write_register (dev, local_reg,
- sizeof (local_reg) /
- sizeof (local_reg[0]));
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_begin_scan: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_proc, "gl646_begin_scan: end\n");
-
- return status;
-}
-
-
-/* Send the stop scan command */
-static SANE_Status
-end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool check_stop, SANE_Bool eject)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- int i = 0;
- uint8_t val, scanfsh = 0;
-
- DBG (DBG_proc, "end_scan (check_stop = %d, eject = %d)\n", check_stop,
- eject);
-
- /* we need to compute scanfsh before cancelling scan */
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "end_scan: failed to read register: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (val & REG41_SCANFSH)
- scanfsh = 1;
- if (DBG_LEVEL > DBG_io2)
- {
- print_status (val);
- }
- }
-
- /* ends scan */
- val = sanei_genesys_read_reg_from_set (reg, 0x01);
- val &= ~REG01_SCAN;
- sanei_genesys_set_reg_from_set (reg, 0x01, val);
- status = sanei_genesys_write_register (dev, 0x01, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "end_scan: failed to write register 01: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* for sheetfed scanners, we may have to eject document */
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- if (eject == SANE_TRUE && dev->document == SANE_TRUE)
- {
- status = gl646_eject_document (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "end_scan: failed to eject document\n");
- return status;
- }
- }
- if (check_stop)
- {
- for (i = 0; i < 30; i++) /* do not wait longer than wait 3 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "end_scan: failed to read register: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (val & REG41_SCANFSH)
- scanfsh = 1;
- if (DBG_LEVEL > DBG_io2)
- {
- print_status (val);
- }
-
- if (!(val & REG41_MOTMFLG) && (val & REG41_FEEDFSH) && scanfsh)
- {
- DBG (DBG_proc, "end_scan: scanfeed finished\n");
- break; /* leave for loop */
- }
-
- usleep (10000UL); /* sleep 100 ms */
- }
- }
- }
- else /* flat bed scanners */
- {
- if (check_stop)
- {
- for (i = 0; i < 300; i++) /* do not wait longer than wait 30 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "end_scan: failed to read register: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (val & REG41_SCANFSH)
- scanfsh = 1;
- if (DBG_LEVEL > DBG_io)
- {
- print_status (val);
- }
-
- if (!(val & REG41_MOTMFLG) && (val & REG41_FEEDFSH) && scanfsh)
- {
- DBG (DBG_proc, "end_scan: scanfeed finished\n");
- break; /* leave while loop */
- }
-
- if ((!(val & REG41_MOTMFLG)) && (val & REG41_HOMESNR))
- {
- DBG (DBG_proc, "end_scan: head at home\n");
- break; /* leave while loop */
- }
-
- usleep (10000UL); /* sleep 100 ms */
- }
- }
- }
-
- DBG (DBG_proc, "end_scan: end (i=%u)\n", i);
-
- return status;
-}
-
-/* Send the stop scan command */
-static SANE_Status
-gl646_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool check_stop)
-{
- return end_scan (dev, reg, check_stop, SANE_FALSE);
-}
-
-/**
- * parks head
- * @param dev scanner's device
- * @param wait_until_home true if the function waits until head parked
- */
-GENESYS_STATIC
-SANE_Status
-gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
-{
- SANE_Status status;
- Genesys_Settings settings;
- uint8_t val;
- int i;
- int loop = 0;
-
- DBG (DBG_proc, "gl646_slow_back_home: start , wait_until_home = %d\n",
- wait_until_home);
-
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (DBG_LEVEL > DBG_io)
- {
- print_status (val);
- }
-
- dev->scanhead_position_in_steps = 0;
-
- if (val & REG41_HOMESNR) /* is sensor at home? */
- {
- DBG (DBG_info, "gl646_slow_back_home: end since already at home\n");
- return SANE_STATUS_GOOD;
- }
-
- /* stop motor if needed */
- if (val & REG41_MOTMFLG)
- {
- status = gl646_stop_motor (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_slow_back_home: failed to stop motor: %s\n",
- sane_strstatus (status));
- return SANE_STATUS_IO_ERROR;
- }
- usleep (200000UL);
- }
-
- /* when scanhead is moving then wait until scanhead stops or timeout */
- DBG (DBG_info, "gl646_slow_back_home: ensuring that motor is off\n");
- val = REG41_MOTMFLG;
- for (i = 400; i > 0 && (val & REG41_MOTMFLG); i--) /* do not wait longer than 40 seconds, count down to get i = 0 when busy */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_slow_back_home: Failed to read home sensor & motor status: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (((val & (REG41_MOTMFLG | REG41_HOMESNR)) == REG41_HOMESNR)) /* at home and motor is off */
- {
- DBG (DBG_info,
- "gl646_slow_back_home: already at home and not moving\n");
- return SANE_STATUS_GOOD;
- }
- usleep (100 * 1000); /* sleep 100 ms (todo: fixed to really sleep 100 ms) */
- }
-
- if (!i) /* the loop counted down to 0, scanner still is busy */
- {
- DBG (DBG_error,
- "gl646_slow_back_home: motor is still on: device busy\n");
- return SANE_STATUS_DEVICE_BUSY;
- }
-
- /* setup for a backward scan of 65535 steps, with no actual data reading */
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres = get_lowest_resolution (dev->model->ccd_type, SANE_FALSE);
- settings.yres = settings.xres;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels = 600;
- settings.lines = 1;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- status = setup_for_scan (dev, dev->reg, settings, SANE_TRUE, SANE_TRUE, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to setup for scan: %s\n", __func__,
- sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
-
- /* backward , no actual data scanned TODO more setup flags to avoid this register manipulations ? */
- dev->reg[reg_0x02].value |= REG02_MTRREV;
- dev->reg[reg_0x01].value &= ~REG01_SCAN;
- gl646_set_triple_reg (dev->reg, REG_FEEDL, 65535);
-
- /* sets frontend */
- status = gl646_set_fe (dev, AFE_SET, settings.xres);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to set frontend: %s\n", __func__,
- sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
-
- /* write scan registers */
- status = gl646_bulk_write_register (dev, dev->reg,
- sizeof (dev->reg) /
- sizeof (dev->reg[0]));
- if (status != SANE_STATUS_GOOD)
- DBG (DBG_error,
- "gl646_slow_back_home: failed to bulk write registers: %s\n",
- sane_strstatus (status));
-
- /* registers are restored to an iddl state, give up if no head to park */
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- DBG (DBG_proc, "gl646_slow_back_home: end \n");
- return SANE_STATUS_GOOD;
- }
-
- /* starts scan */
- status = gl646_begin_scan (dev, dev->reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_slow_back_home: failed to begin scan: \n");
- return status;
- }
-
- /* loop until head parked */
- if (wait_until_home)
- {
- while (loop < 300) /* do not wait longer then 30 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_slow_back_home: Failed to read home sensor: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (val & 0x08) /* home sensor */
- {
- DBG (DBG_info, "gl646_slow_back_home: reached home position\n");
- DBG (DBG_proc, "gl646_slow_back_home: end\n");
- usleep (500000); /* sleep 500 ms before returning */
- return SANE_STATUS_GOOD;
- }
- usleep (100000); /* sleep 100 ms */
- ++loop;
- }
-
- /* when we come here then the scanner needed too much time for this, so we better stop the motor */
- gl646_stop_motor (dev);
- end_scan (dev, dev->reg, SANE_TRUE, SANE_FALSE);
- DBG (DBG_error,
- "gl646_slow_back_home: timeout while waiting for scanhead to go home\n");
- return SANE_STATUS_IO_ERROR;
- }
-
-
- DBG (DBG_info, "gl646_slow_back_home: scanhead is still moving\n");
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/**
- * Automatically set top-left edge of the scan area by scanning an
- * area at 300 dpi from very top of scanner
- * @param dev device stucture describing the scanner
- * @return SANE_STATUS_GOOD in cas of success, else failure code
- */
-static SANE_Status
-gl646_search_start_position (Genesys_Device * dev)
-{
- SANE_Status status;
- unsigned char *data = NULL;
- Genesys_Settings settings;
- unsigned int resolution, x, y;
-
- DBG (DBG_proc, "gl646_search_start_position: start\n");
-
- /* we scan at 300 dpi */
- resolution = get_closest_resolution (dev->model->ccd_type, 300, SANE_FALSE);
-
- /* fill settings for a gray level scan */
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_GRAY;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels = 600;
- settings.lines = dev->model->search_lines;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* scan the desired area */
- status =
- simple_scan (dev, settings, SANE_TRUE, SANE_TRUE, SANE_FALSE, &data);
-
- /* process data if scan is OK */
- if (status == SANE_STATUS_GOOD)
- {
- /* handle stagger case : reorder gray data and thus loose some lines */
- if (dev->current_setup.stagger > 0)
- {
- DBG (DBG_proc, "gl646_search_start_position: 'un-staggering'\n");
- for (y = 0; y < settings.lines - dev->current_setup.stagger; y++)
- {
- /* one point out of 2 is 'unaligned' */
- for (x = 0; x < settings.pixels; x += 2)
- {
- data[y * settings.pixels + x] =
- data[(y + dev->current_setup.stagger) * settings.pixels +
- x];
- }
- }
- /* correct line number */
- settings.lines -= dev->current_setup.stagger;
- }
- if (DBG_LEVEL >= DBG_data)
- {
- sanei_genesys_write_pnm_file ("search_position.pnm",
- data,
- settings.depth,
- 1, settings.pixels, settings.lines);
- }
- }
- else
- {
- DBG (DBG_error, "gl646_search_start_position: simple_scan failed\n");
- free (data);
- DBGCOMPLETED;
- return status;
- }
-
- /* now search reference points on the data */
- status =
- sanei_genesys_search_reference_point (dev, data,
- dev->sensor.CCD_start_xoffset,
- resolution, settings.pixels,
- settings.lines);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
- }
-
- free (data);
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * internally overriden during effective calibration
- * sets up register for coarse gain calibration
- */
-static SANE_Status
-gl646_init_regs_for_coarse_calibration (Genesys_Device * dev)
-{
- DBG (DBG_proc, "gl646_init_regs_for_coarse_calibration\n");
- DBG (DBG_proc, "gl646_init_register_for_coarse_calibration: end\n");
-
- /* to make compilers happy ... */
- if (!dev)
- {
- return SANE_STATUS_INVAL;
- }
-
- return SANE_STATUS_GOOD;
-}
-
-
-/**
- * init registers for shading calibration
- * we assume that scanner's head is on an area suiting shading calibration.
- * We scan a full scan width area by the shading line number for the device
- * at either at full sensor's resolution or half depending upon half_ccd
- * @param dev scanner's device
- * @return SANE_STATUS_GOOD if success, else error code
- */
-static SANE_Status
-gl646_init_regs_for_shading (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Settings settings;
- /* 1: no half_ccd, 2: use half number of pixels */
- int half_ccd = 1;
- int cksel = 1;
-
- DBG (DBG_proc, "gl646_init_register_for_shading: start\n");
-
- /* when shading all (full width) line, we must adapt to half_ccd case */
- if (dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE)
- {
- /* walk the master mode list to find if half_ccd */
- if (is_half_ccd (dev->model->ccd_type, dev->settings.xres, SANE_TRUE) ==
- SANE_TRUE)
- {
- half_ccd = 2;
- }
- }
-
- /* fill settings for scan : always a color scan */
- settings.scan_method = dev->settings.scan_method;
- settings.scan_mode = dev->settings.scan_mode;
- if (dev->model->is_cis == SANE_FALSE)
- {
- settings.scan_mode = SCAN_MODE_COLOR;
- }
- settings.xres = dev->sensor.optical_res / half_ccd;
- cksel = get_cksel (dev->model->ccd_type, dev->settings.xres, SANE_TRUE);
- settings.xres = settings.xres / cksel;
- settings.yres = settings.xres;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * settings.xres) / dev->sensor.optical_res;
- dev->calib_lines = dev->model->shading_lines;
- settings.lines = dev->calib_lines * (3 - half_ccd);
- settings.depth = 16;
- settings.color_filter = dev->settings.color_filter;
-
- settings.disable_interpolation = dev->settings.disable_interpolation;
- settings.threshold = dev->settings.threshold;
- settings.exposure_time = dev->settings.exposure_time;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* keep account of the movement for final scan move */
- dev->scanhead_position_in_steps += settings.lines;
-
- /* we don't want top offset, but we need right margin to be the same
- * than the one for the final scan */
- status = setup_for_scan (dev, dev->reg, settings, SANE_TRUE, SANE_FALSE, SANE_FALSE);
-
- /* used when sending shading calibration data */
- dev->calib_pixels = settings.pixels;
- dev->calib_channels = dev->current_setup.channels;
- if (dev->model->is_cis == SANE_FALSE)
- {
- dev->calib_channels = 3;
- }
-
- /* no shading */
- dev->reg[reg_0x01].value &= ~REG01_DVDSET;
- dev->reg[reg_0x02].value |= REG02_ACDCDIS; /* ease backtracking */
- dev->reg[reg_0x02].value &= ~(REG02_FASTFED | REG02_AGOHOME);
- dev->reg[reg_0x05].value &= ~REG05_GMMENB;
- gl646_set_motor_power (dev->reg, SANE_FALSE);
-
- /* TODO another flag to setup regs ? */
- /* enforce needed LINCNT, getting rid of extra lines for color reordering */
- if (dev->model->is_cis == SANE_FALSE)
- {
- gl646_set_triple_reg (dev->reg, REG_LINCNT, dev->calib_lines);
- }
- else
- {
- gl646_set_triple_reg (dev->reg, REG_LINCNT, dev->calib_lines * 3);
- }
-
- /* copy reg to calib_reg */
- memcpy (dev->calib_reg, dev->reg,
- GENESYS_GL646_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* this is an hack to make calibration cache working .... */
- /* if we don't do this, cache will be identified at the shading calibration
- * dpi which is different from calibration one */
- dev->current_setup.xres = dev->settings.xres;
- DBG (DBG_info,
- "gl646_init_register_for_shading:\n\tdev->settings.xres=%d\n\tdev->settings.yres=%d\n",
- dev->settings.xres, dev->settings.yres);
-
- DBG (DBG_proc, "gl646_init_register_for_shading: end\n");
- return status;
-}
-
-
-/**
- * set up registers for the actual scan. The scan's parameters are given
- * through the device settings. It allocates the scan buffers.
- */
-static SANE_Status
-gl646_init_regs_for_scan (Genesys_Device * dev)
-{
- SANE_Status status;
-
- DBGSTART;
-
- /* park head after calibration if needed */
- if (dev->scanhead_position_in_steps > 0
- && dev->settings.scan_method == SCAN_METHOD_FLATBED)
- {
- RIE(gl646_slow_back_home (dev, SANE_TRUE));
- dev->scanhead_position_in_steps = 0;
- }
-
- RIE(setup_for_scan (dev, dev->reg, dev->settings, SANE_FALSE, SANE_TRUE, SANE_TRUE));
-
- /* gamma is only enabled at final scan time */
- if (dev->settings.depth < 16)
- dev->reg[reg_0x05].value |= REG05_GMMENB;
-
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * set up registers for the actual scan. The scan's parameters are given
- * through the device settings. It allocates the scan buffers.
- * @param dev scanner's device
- * @param regs registers to set up
- * @param settings settings of scan
- * @param split SANE_TRUE if move to scan area is split from scan, SANE_FALSE is
- * scan first moves to area
- * @param xcorrection take x geometry correction into account (fixed and detected offsets)
- * @param ycorrection take y geometry correction into account
- */
-GENESYS_STATIC SANE_Status
-setup_for_scan (Genesys_Device * dev,
- Genesys_Register_Set *regs,
- Genesys_Settings settings,
- SANE_Bool split,
- SANE_Bool xcorrection,
- SANE_Bool ycorrection)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- SANE_Bool color;
- SANE_Int depth;
- int channels;
- uint16_t startx = 0, endx, pixels;
- int move = 0;
-
- DBGSTART;
- DBG (DBG_info,
- "%s settings:\nResolution: %ux%uDPI\n"
- "Lines : %u\nPixels : %u\nStartpos : %.3f/%.3f\nScan mode : %d\nScan method: %s\n\n",
- __func__,
- settings.xres, settings.yres, settings.lines, settings.pixels,
- settings.tl_x, settings.tl_y, settings.scan_mode,
- settings.scan_method == SCAN_METHOD_FLATBED ? "flatbed" : "XPA");
-
- if (settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
- {
- channels = 3;
- color = SANE_TRUE;
- }
- else
- {
- channels = 1;
- color = SANE_FALSE;
- }
-
- depth=settings.depth;
- if (settings.scan_mode == SCAN_MODE_LINEART)
- {
- if (settings.dynamic_lineart == SANE_TRUE)
- {
- depth = 8;
- }
- else
- {
- /* XXX STEF XXX : why does the common layer never send depth=1 ? */
- depth = 1;
- }
- }
-
- /* compute distance to move */
- move = 0;
- /* XXX STEF XXX MD5345 -> optical_ydpi, other base_ydpi => half/full step ? */
- if (split == SANE_FALSE)
- {
- if (dev->model->is_sheetfed == SANE_FALSE)
- {
- if (ycorrection == SANE_TRUE)
- {
- move =
- (SANE_UNFIX (dev->model->y_offset) *
- dev->motor.optical_ydpi) / MM_PER_INCH;
- }
-
- /* add tl_y to base movement */
- move += (settings.tl_y * dev->motor.optical_ydpi) / MM_PER_INCH;
-
- }
- else
- {
- move += (settings.tl_y * dev->motor.optical_ydpi) / MM_PER_INCH;
- }
-
- DBG (DBG_info, "%s: move=%d steps\n", __func__, move);
-
- /* security check */
- if (move < 0)
- {
- DBG (DBG_error, "%s: overriding negative move value %d\n", __func__, move);
- move = 0;
- }
- }
- DBG (DBG_info, "%s: move=%d steps\n", __func__, move);
-
- /* pixels are allways given at full CCD optical resolution */
- /* use detected left margin and fixed value */
- if (xcorrection == SANE_TRUE)
- {
- if (dev->sensor.CCD_start_xoffset > 0)
- startx = dev->sensor.CCD_start_xoffset;
- else
- startx = dev->sensor.dummy_pixel;
- if (settings.scan_method == SCAN_METHOD_FLATBED)
- {
- startx +=
- ((SANE_UNFIX (dev->model->x_offset) * dev->sensor.optical_res) /
- MM_PER_INCH);
- }
- else
- {
- startx +=
- ((SANE_UNFIX (dev->model->x_offset_ta) *
- dev->sensor.optical_res) / MM_PER_INCH);
- }
- }
- else
- {
- /* startx cannot be below dummy pixel value */
- startx = dev->sensor.dummy_pixel;
- }
-
- /* add x coordinates : expressed in sensor max dpi */
- startx += (settings.tl_x * dev->sensor.optical_res) / MM_PER_INCH;
-
- /* stagger works with odd start cordinates */
- if (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)
- startx |= 1;
-
- pixels = (settings.pixels * dev->sensor.optical_res) / settings.xres;
- /* special requirement for 400 dpi on 1200 dpi sensors */
- if (settings.xres == 400)
- {
- pixels = (pixels / 6) * 6;
- }
- endx = startx + pixels;
-
- /* TODO check for pixel width overflow */
-
- /* set up correct values for scan (gamma and shading enabled) */
- status = gl646_setup_registers (dev,
- regs,
- settings,
- dev->slope_table0,
- dev->slope_table1,
- settings.xres,
- move,
- settings.lines,
- startx, endx, color,
- depth);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed setup registers: %s\n", __func__, sane_strstatus (status));
- return status;
- }
-
- /* now post-process values for register and options fine tuning */
-
- /* select color filter based on settings */
- regs[reg_0x04].value &= ~REG04_FILTER;
- if (channels == 1)
- {
- switch (settings.color_filter)
- {
- /* red */
- case 0:
- regs[reg_0x04].value |= 0x04;
- break;
- /* green */
- case 1:
- regs[reg_0x04].value |= 0x08;
- break;
- /* blue */
- case 2:
- regs[reg_0x04].value |= 0x0c;
- break;
- default:
- break;
- }
- }
-
- /* send computed slope tables */
- status =
- gl646_send_slope_table (dev, 0, dev->slope_table0,
- sanei_genesys_read_reg_from_set (regs, 0x21));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to send slope table 0: %s\n", __func__, sane_strstatus (status));
- return status;
- }
-
- status =
- gl646_send_slope_table (dev, 1, dev->slope_table1,
- sanei_genesys_read_reg_from_set (regs, 0x6b));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to send slope table 1: %s\n", __func__, sane_strstatus (status));
- return status;
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * this function sen gamm table to ASIC
- */
-static SANE_Status
-gl646_send_gamma_table (Genesys_Device * dev)
-{
- int size;
- int address;
- SANE_Status status;
- uint8_t *gamma;
- int bits;
-
- DBGSTART;
-
- /* gamma table size */
- if (dev->reg[reg_0x05].value & REG05_GMMTYPE)
- {
- size = 16384;
- bits = 14;
- }
- else
- {
- size = 4096;
- bits = 12;
- }
-
- /* allocate temporary gamma tables: 16 bits words, 3 channels */
- gamma = (uint8_t *) malloc (size * 2 * 3);
- if (gamma==NULL)
- {
- return SANE_STATUS_NO_MEM;
- }
-
- RIE(sanei_genesys_generate_gamma_buffer(dev, bits, size-1, size, gamma));
-
- /* table address */
- switch (dev->reg[reg_0x05].value >> 6)
- {
- case 0: /* 600 dpi */
- address = 0x09000;
- break;
- case 1: /* 1200 dpi */
- address = 0x11000;
- break;
- case 2: /* 2400 dpi */
- address = 0x20000;
- break;
- default:
- free (gamma);
- return SANE_STATUS_INVAL;
- }
-
- /* send address */
- status = sanei_genesys_set_buffer_address (dev, address);
- if (status != SANE_STATUS_GOOD)
- {
- free (gamma);
- DBG (DBG_error,
- "gl646_send_gamma_table: failed to set buffer address: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* send data */
- status = gl646_bulk_write_data (dev, 0x3c, (uint8_t *) gamma, size * 2 * 3);
- if (status != SANE_STATUS_GOOD)
- {
- free (gamma);
- DBG (DBG_error,
- "gl646_send_gamma_table: failed to send gamma table: %s\n",
- sane_strstatus (status));
- return status;
- }
- free (gamma);
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/** @brief this function does the led calibration.
- * this function does the led calibration by scanning one line of the calibration
- * area below scanner's top on white strip. The scope of this function is
- * currently limited to the XP200
- */
-static SANE_Status
-gl646_led_calibration (Genesys_Device * dev)
-{
- int total_size;
- uint8_t *line;
- unsigned int i, j;
- SANE_Status status = SANE_STATUS_GOOD;
- int val;
- unsigned int channels;
- int avg[3], avga, avge;
- int turn;
- char fn[20];
- uint16_t expr, expg, expb;
- Genesys_Settings settings;
- SANE_Int resolution;
-
- SANE_Bool acceptable = SANE_FALSE;
-
- DBG (DBG_proc, "gl646_led_calibration\n");
- if (!dev->model->is_cis)
- {
- DBG (DBG_proc,
- "gl646_led_calibration: not a cis scanner, nothing to do...\n");
- return SANE_STATUS_GOOD;
- }
-
- /* get led calibration resolution */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR)
- {
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
- SANE_TRUE);
- settings.scan_mode = SCAN_MODE_COLOR;
- channels = 3;
- }
- else
- {
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
- SANE_FALSE);
- settings.scan_mode = SCAN_MODE_GRAY;
- channels = 1;
- }
-
- /* offset calibration is always done in color mode */
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- settings.lines = 1;
- settings.depth = 16;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* colors * bytes_per_color * scan lines */
- total_size = settings.pixels * channels * 2 * 1;
-
- line = malloc (total_size);
- if (!line)
- {
- DBG (DBG_error, "gl646_led_calibration: failed to allocate %d bytes\n",
- total_size);
- return SANE_STATUS_NO_MEM;
- }
-
-/*
- we try to get equal bright leds here:
-
- loop:
- average per color
- adjust exposure times
-
- Sensor_Master uint8_t regs_0x10_0x15[6];
- */
-
- expr = (dev->sensor.regs_0x10_0x1d[0] << 8) | dev->sensor.regs_0x10_0x1d[1];
- expg = (dev->sensor.regs_0x10_0x1d[2] << 8) | dev->sensor.regs_0x10_0x1d[3];
- expb = (dev->sensor.regs_0x10_0x1d[4] << 8) | dev->sensor.regs_0x10_0x1d[5];
-
- turn = 0;
-
- do
- {
-
- dev->sensor.regs_0x10_0x1d[0] = (expr >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = expr & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (expg >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = expg & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (expb >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = expb & 0xff;
-
- DBG (DBG_info, "gl646_led_calibration: starting first line reading\n");
-
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, &line);
- if (status != SANE_STATUS_GOOD)
- {
- free(line);
- DBG (DBG_error,
- "gl646_led_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (DBG_LEVEL >= DBG_data)
- {
- snprintf (fn, 20, "led_%02d.pnm", turn);
- sanei_genesys_write_pnm_file (fn,
- line,
- 16, channels, settings.pixels, 1);
- }
-
- acceptable = SANE_TRUE;
-
- for (j = 0; j < channels; j++)
- {
- avg[j] = 0;
- for (i = 0; i < settings.pixels; i++)
- {
- if (dev->model->is_cis)
- val =
- line[i * 2 + j * 2 * settings.pixels + 1] * 256 +
- line[i * 2 + j * 2 * settings.pixels];
- else
- val =
- line[i * 2 * channels + 2 * j + 1] * 256 +
- line[i * 2 * channels + 2 * j];
- avg[j] += val;
- }
-
- avg[j] /= settings.pixels;
- }
-
- DBG (DBG_info, "gl646_led_calibration: average: "
- "%d,%d,%d\n", avg[0], avg[1], avg[2]);
-
- acceptable = SANE_TRUE;
-
- if (!acceptable)
- {
- avga = (avg[0] + avg[1] + avg[2]) / 3;
- expr = (expr * avga) / avg[0];
- expg = (expg * avga) / avg[1];
- expb = (expb * avga) / avg[2];
-
- /* keep exposure time in a working window */
- avge = (expr + expg + expb) / 3;
- if (avge > 0x2000)
- {
- expr = (expr * 0x2000) / avge;
- expg = (expg * 0x2000) / avge;
- expb = (expb * 0x2000) / avge;
- }
- if (avge < 0x400)
- {
- expr = (expr * 0x400) / avge;
- expg = (expg * 0x400) / avge;
- expb = (expb * 0x400) / avge;
- }
- }
-
- turn++;
-
- }
- while (!acceptable && turn < 100);
-
- DBG (DBG_info,
- "gl646_led_calibration: acceptable exposure: 0x%04x,0x%04x,0x%04x\n",
- expr, expg, expb);
-
- /* cleanup before return */
- free (line);
-
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * 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)
-{
- unsigned int i, j, k, average, count;
- unsigned int avg[3];
- uint8_t val;
-
- /* computes average value on black margin */
- for (k = 0; k < channels; k++)
- {
- avg[k] = 0;
- count = 0;
- for (i = 0; i < lines; i++)
- {
- for (j = 0; j < black; j++)
- {
- val = data[i * channels * pixels + j + k];
- avg[k] += val;
- count++;
- }
- }
- if (count)
- avg[k] /= count;
- DBG (DBG_info, "dark_average: avg[%d] = %d\n", k, avg[k]);
- }
- average = 0;
- for (i = 0; i < channels; i++)
- average += avg[i];
- average /= channels;
- DBG (DBG_info, "dark_average: average = %d\n", average);
- return average;
-}
-
-
-/** @brief calibration for AD frontend devices
- * we do simple scan until all black_pixels are higher than 0,
- * raising offset at each turn.
- */
-static SANE_Status
-ad_fe_offset_calibration (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *line;
- unsigned int channels;
- char title[32];
- int pass = 0;
- SANE_Int resolution;
- Genesys_Settings settings;
- unsigned int x, y, adr, min;
- unsigned int bottom, black_pixels;
-
- DBG (DBG_proc, "ad_fe_offset_calibration: start\n");
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
- SANE_TRUE);
- channels = 3;
- black_pixels =
- (dev->sensor.black_pixels * resolution) / dev->sensor.optical_res;
- DBG (DBG_io2, "ad_fe_offset_calibration: black_pixels=%d\n", black_pixels);
-
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- settings.lines = CALIBRATION_LINES;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* scan first line of data with no gain */
- dev->frontend.gain[0] = 0;
- dev->frontend.gain[1] = 0;
- dev->frontend.gain[2] = 0;
-
- /* scan with no move */
- bottom = 1;
- do
- {
- pass++;
- dev->frontend.offset[0] = bottom;
- dev->frontend.offset[1] = bottom;
- dev->frontend.offset[2] = bottom;
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, &line);
- if (status != SANE_STATUS_GOOD)
- {
- free(line);
- DBG (DBG_error,
- "ad_fe_offset_calibration: failed to scan first line\n");
- return status;
- }
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "offset%03d.pnm", (int)bottom);
- sanei_genesys_write_pnm_file (title, line, 8, channels,
- settings.pixels, settings.lines);
- }
-
- min = 0;
- for (y = 0; y < settings.lines; y++)
- {
- for (x = 0; x < black_pixels; x++)
- {
- adr = (x + y * settings.pixels) * channels;
- if (line[adr] > min)
- min = line[adr];
- if (line[adr + 1] > min)
- min = line[adr + 1];
- if (line[adr + 2] > min)
- min = line[adr + 2];
- }
- }
-
- free (line);
- DBG (DBG_io2, "ad_fe_offset_calibration: pass=%d, min=%d\n", pass, min);
- bottom++;
- }
- while (pass < 128 && min == 0);
- if (pass == 128)
- {
- DBG (DBG_error,
- "ad_fe_offset_calibration: failed to find correct offset\n");
- return SANE_STATUS_INVAL;
- }
-
- DBG (DBG_info, "ad_fe_offset_calibration: offset=(%d,%d,%d)\n",
- dev->frontend.offset[0], dev->frontend.offset[1],
- dev->frontend.offset[2]);
- DBG (DBG_proc, "ad_fe_offset_calibration: end\n");
- return status;
-}
-
-#define DARK_TARGET 8
-/**
- * This function does the offset calibration by scanning one line of the calibration
- * area below scanner's top. There is a black margin and the remaining is white.
- * genesys_search_start() must have been called so that the offsets and margins
- * are already known.
- * @param dev scanner's device
- * @return SANE_STATUS_GOOD if success, else error code is failure
-*/
-static SANE_Status
-gl646_offset_calibration (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *first_line, *second_line;
- unsigned int channels;
- char title[32];
- int pass = 0, avg;
- SANE_Int resolution;
- Genesys_Settings settings;
- int topavg, bottomavg;
- int top, bottom, black_pixels;
-
- /* Analog Device fronted have a different calibration */
- if (dev->model->dac_type == DAC_AD_XP200)
- {
- return ad_fe_offset_calibration (dev);
- }
-
- DBG (DBG_proc, "gl646_offset_calibration: start\n");
-
- /* setup for a RGB scan, one full sensor's width line */
- /* resolution is the one from the final scan */
- if (dev->settings.xres > dev->sensor.optical_res)
- {
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
- SANE_TRUE);
- }
- else
- {
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->settings.xres,
- SANE_TRUE);
- }
- channels = 3;
- black_pixels =
- (dev->sensor.black_pixels * resolution) / dev->sensor.optical_res;
- DBG (DBG_io2, "gl646_offset_calibration: black_pixels=%d\n", black_pixels);
-
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- settings.lines = CALIBRATION_LINES;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* scan first line of data with no gain, but with offset from
- * last calibration */
- dev->frontend.gain[0] = 0;
- dev->frontend.gain[1] = 0;
- dev->frontend.gain[2] = 0;
-
- /* scan with no move */
- bottom = 90;
- dev->frontend.offset[0] = bottom;
- dev->frontend.offset[1] = bottom;
- dev->frontend.offset[2] = bottom;
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE,
- &first_line);
- if (status != SANE_STATUS_GOOD)
- {
- free(first_line);
- DBG (DBG_error,
- "gl646_offset_calibration: failed to scan first line\n");
- return status;
- }
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "offset%03d.pnm", bottom);
- sanei_genesys_write_pnm_file (title, first_line, 8, channels,
- settings.pixels, settings.lines);
- }
- bottomavg =
- dark_average (first_line, settings.pixels, settings.lines, channels,
- black_pixels);
- free (first_line);
- DBG (DBG_io2, "gl646_offset_calibration: bottom avg=%d\n", bottomavg);
-
- /* now top value */
- top = 231;
- dev->frontend.offset[0] = top;
- dev->frontend.offset[1] = top;
- dev->frontend.offset[2] = top;
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE,
- &second_line);
- if (status != SANE_STATUS_GOOD)
- {
- free(second_line);
- DBG (DBG_error,
- "gl646_offset_calibration: failed to scan first line\n");
- return status;
- }
-
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "offset%03d.pnm", top);
- sanei_genesys_write_pnm_file (title, second_line, 8, channels,
- settings.pixels, settings.lines);
- }
- topavg =
- dark_average (second_line, settings.pixels, settings.lines, channels,
- black_pixels);
- free (second_line);
- DBG (DBG_io2, "gl646_offset_calibration: top avg=%d\n", topavg);
-
- /* loop until acceptable level */
- while ((pass < 32) && (top - bottom > 1))
- {
- pass++;
-
- /* settings for new scan */
- dev->frontend.offset[0] = (top + bottom) / 2;
- dev->frontend.offset[1] = (top + bottom) / 2;
- dev->frontend.offset[2] = (top + bottom) / 2;
-
- /* scan with no move */
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE,
- &second_line);
- if (status != SANE_STATUS_GOOD)
- {
- free(second_line);
- DBG (DBG_error,
- "gl646_offset_calibration: failed to scan first line\n");
- return status;
- }
-
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "offset%03d.pnm", dev->frontend.offset[1]);
- sanei_genesys_write_pnm_file (title, second_line, 8, channels,
- settings.pixels, settings.lines);
- }
-
- avg =
- dark_average (second_line, settings.pixels, settings.lines, channels,
- black_pixels);
- DBG (DBG_info, "gl646_offset_calibration: avg=%d offset=%d\n", avg,
- dev->frontend.offset[1]);
- free (second_line);
-
- /* compute new boundaries */
- if (topavg == avg)
- {
- topavg = avg;
- top = dev->frontend.offset[1];
- }
- else
- {
- bottomavg = avg;
- bottom = dev->frontend.offset[1];
- }
- }
-
- /* in case of debug do a final scan to get result */
- if (DBG_LEVEL >= DBG_data)
- {
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE,
- &second_line);
- if (status != SANE_STATUS_GOOD)
- {
- free(second_line);
- DBG (DBG_error,
- "gl646_offset_calibration: failed to scan final line\n");
- return status;
- }
- sanei_genesys_write_pnm_file ("offset-final.pnm", second_line, 8,
- channels, settings.pixels,
- settings.lines);
- free (second_line);
- }
-
- DBG (DBG_info, "gl646_offset_calibration: offset=(%d,%d,%d)\n",
- dev->frontend.offset[0], dev->frontend.offset[1],
- dev->frontend.offset[2]);
- DBG (DBG_proc, "gl646_offset_calibration: end\n");
- return status;
-}
-
-/** @brief gain calibration for Analog Device frontends
- * Alternative coarse gain calibration
- */
-static SANE_Status
-ad_fe_coarse_gain_calibration (Genesys_Device * dev, int dpi)
-{
- uint8_t *line;
- unsigned int i, channels, val;
- unsigned int size, count, resolution, pass;
- SANE_Status status = SANE_STATUS_GOOD;
- float average;
- Genesys_Settings settings;
- char title[32];
-
- DBGSTART;
-
- /* setup for a RGB scan, one full sensor's width line */
- /* resolution is the one from the final scan */
- resolution = get_closest_resolution (dev->model->ccd_type, dpi, SANE_TRUE);
- channels = 3;
- settings.scan_mode = SCAN_MODE_COLOR;
-
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- settings.lines = CALIBRATION_LINES;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- size = channels * settings.pixels * settings.lines;
-
- /* start gain value */
- dev->frontend.gain[0] = 1;
- dev->frontend.gain[1] = 1;
- dev->frontend.gain[2] = 1;
-
- average = 0;
- pass = 0;
-
- /* loop until each channel raises to acceptable level */
- while ((average < dev->sensor.gain_white_ref) && (pass < 30))
- {
- /* scan with no move */
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, &line);
- if (status != SANE_STATUS_GOOD)
- {
- free(line);
- DBG (DBG_error,
- "ad_fe_coarse_gain_calibration: failed to scan first line\n");
- return status;
- }
-
- /* log scanning data */
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "alternative_coarse%02d.pnm", (int)pass);
- sanei_genesys_write_pnm_file (title, line, 8,
- channels, settings.pixels,
- settings.lines);
- }
- pass++;
-
- /* computes white average */
- average = 0;
- count = 0;
- for (i = 0; i < size; i++)
- {
- val = line[i];
- average += val;
- count++;
- }
- average = average / count;
-
- /* adjusts gain for the channel */
- if (average < dev->sensor.gain_white_ref)
- dev->frontend.gain[0]++;
- dev->frontend.gain[1] = dev->frontend.gain[0];
- dev->frontend.gain[2] = dev->frontend.gain[0];
-
- DBG (DBG_proc,
- "ad_fe_coarse_gain_calibration: average = %.2f, gain = %d\n",
- average, dev->frontend.gain[0]);
- free (line);
- }
-
- DBG (DBG_info, "ad_fe_coarse_gain_calibration: gains=(%d,%d,%d)\n",
- dev->frontend.gain[0], dev->frontend.gain[1], dev->frontend.gain[2]);
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * Alternative coarse gain calibration
- * this on uses the settings from offset_calibration. First scan moves so
- * we can go to calibration area for XPA.
- * @param dev device for scan
- * @param dpi resolutnio to calibrate at
- */
-static SANE_Status
-gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
-{
- uint8_t *line;
- unsigned int i, j, k, channels, val, maximum, idx;
- unsigned int count, resolution, pass;
- SANE_Status status = SANE_STATUS_GOOD;
- float average[3];
- Genesys_Settings settings;
- char title[32];
-
- if (dev->model->ccd_type == CIS_XP200)
- {
- return ad_fe_coarse_gain_calibration (dev, dev->sensor.optical_res);
- }
- DBGSTART;
-
- /* setup for a RGB scan, one full sensor's width line */
- /* resolution is the one from the final scan */
- channels = 3;
-
- /* we are searching a sensor resolution */
- if (dpi > dev->sensor.optical_res)
- {
- resolution = dev->sensor.optical_res;
- }
- else
- {
- resolution =
- get_closest_resolution (dev->model->ccd_type, dev->settings.xres,
- SANE_TRUE);
- }
-
- settings.scan_method = dev->settings.scan_method;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_y = 0;
- if (settings.scan_method == SCAN_METHOD_FLATBED)
- {
- settings.tl_x = 0;
- settings.pixels = (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- }
- else
- {
- settings.tl_x = SANE_UNFIX (dev->model->x_offset_ta);
- settings.pixels = (SANE_UNFIX (dev->model->x_size_ta) * resolution) / MM_PER_INCH;
- }
- settings.lines = CALIBRATION_LINES;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* start gain value */
- dev->frontend.gain[0] = 1;
- dev->frontend.gain[1] = 1;
- dev->frontend.gain[2] = 1;
-
- if (channels > 1)
- {
- average[0] = 0;
- average[1] = 0;
- average[2] = 0;
- idx = 0;
- }
- else
- {
- average[0] = 255;
- average[1] = 255;
- average[2] = 255;
- idx = dev->settings.color_filter;
- average[idx] = 0;
- }
- pass = 0;
-
- /* loop until each channel raises to acceptable level */
- while (((average[0] < dev->sensor.gain_white_ref)
- || (average[1] < dev->sensor.gain_white_ref)
- || (average[2] < dev->sensor.gain_white_ref)) && (pass < 30))
- {
- /* scan with no move */
- status =
- simple_scan (dev, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, &line);
- if (status != SANE_STATUS_GOOD)
- {
- free(line);
- DBG (DBG_error, "%s: failed to scan first line\n", __func__);
- return status;
- }
-
- /* log scanning data */
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "coarse_gain%02d.pnm", (int)pass);
- sanei_genesys_write_pnm_file (title, line, 8,
- channels, settings.pixels,
- settings.lines);
- }
- pass++;
-
- /* average high level for each channel and compute gain
- to reach the target code
- we only use the central half of the CCD data */
- for (k = idx; k < idx + channels; k++)
- {
- /* we find the maximum white value, so we can deduce a threshold
- to average white values */
- maximum = 0;
- for (i = 0; i < settings.lines; i++)
- {
- for (j = 0; j < settings.pixels; j++)
- {
- val = line[i * channels * settings.pixels + j + k];
- if (val > maximum)
- maximum = val;
- }
- }
-
- /* threshold */
- maximum *= 0.9;
-
- /* computes white average */
- average[k] = 0;
- count = 0;
- for (i = 0; i < settings.lines; i++)
- {
- for (j = 0; j < settings.pixels; j++)
- {
- /* averaging only white points allow us not to care about dark margins */
- val = line[i * channels * settings.pixels + j + k];
- if (val > maximum)
- {
- average[k] += val;
- count++;
- }
- }
- }
- average[k] = average[k] / count;
-
- /* adjusts gain for the channel */
- if (average[k] < dev->sensor.gain_white_ref)
- dev->frontend.gain[k]++;
-
- DBG (DBG_proc,
- "%s: channel %d, average = %.2f, gain = %d\n", __func__,
- k, average[k], dev->frontend.gain[k]);
- }
- free (line);
- }
-
- if (channels < 3)
- {
- dev->frontend.gain[1] = dev->frontend.gain[0];
- dev->frontend.gain[2] = dev->frontend.gain[0];
- }
-
- DBG (DBG_info, "%s: gains=(%d,%d,%d)\n", __func__,
- dev->frontend.gain[0], dev->frontend.gain[1], dev->frontend.gain[2]);
- DBGCOMPLETED;
- return status;
-}
-
-/**
- * sets up the scanner's register for warming up. We scan 2 lines without moving.
- *
- */
-static SANE_Status
-gl646_init_regs_for_warmup (Genesys_Device * dev,
- Genesys_Register_Set * local_reg,
- int *channels, int *total_size)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- Genesys_Settings settings;
- int resolution, lines;
-
- DBG (DBG_proc, "gl646_init_regs_for_warmup: start\n");
-
- sanei_genesys_init_fe (dev);
-
- resolution = get_closest_resolution (dev->model->ccd_type, 300, SANE_FALSE);
-
- /* set up for a half width 2 lines gray scan without moving */
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_GRAY;
- settings.xres = resolution;
- settings.yres = resolution;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
- settings.lines = 2;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* setup for scan */
- status = setup_for_scan (dev, dev->reg, settings, SANE_TRUE, SANE_FALSE, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_init_regs_for_warmup: setup_for_scan failed (%s)\n",
- sane_strstatus (status));
- return status;
- }
-
- /* we are not going to move, so clear these bits */
- dev->reg[reg_0x02].value &= ~(REG02_FASTFED | REG02_AGOHOME);
-
- /* don't enable any correction for this scan */
- dev->reg[reg_0x01].value &= ~REG01_DVDSET;
-
- /* copy to local_reg */
- memcpy (local_reg, dev->reg, (GENESYS_GL646_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
-
- /* turn off motor during this scan */
- gl646_set_motor_power (local_reg, SANE_FALSE);
-
- /* returned value to higher level warmup function */
- *channels = 1;
- lines = gl646_get_triple_reg (local_reg, REG_LINCNT) + 1;
- *total_size = lines * settings.pixels;
-
- /* now registers are ok, write them to scanner */
- RIE (gl646_set_fe (dev, AFE_SET, settings.xres));
- RIE (gl646_bulk_write_register (dev, local_reg, GENESYS_GL646_MAX_REGS));
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/*
- * this function moves head without scanning, forward, then backward
- * so that the head goes to park position.
- * as a by-product, also check for lock
- */
-static SANE_Status
-gl646_repark_head (Genesys_Device * dev)
-{
- SANE_Status status;
- Genesys_Settings settings;
- unsigned int expected, steps;
-
- DBG (DBG_proc, "gl646_repark_head: start\n");
-
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres =
- get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
- settings.yres = settings.xres;
- settings.tl_x = 0;
- settings.tl_y = 5;
- settings.pixels = 600;
- settings.lines = 4;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- status = setup_for_scan (dev, dev->reg, settings, SANE_FALSE, SANE_FALSE, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_repark_head: failed to setup for scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* TODO seems wrong ... no effective scan */
- dev->reg[reg_0x01].value &= ~REG01_SCAN;
-
- status = gl646_bulk_write_register (dev, dev->reg, GENESYS_GL646_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_repark_head: failed to send registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* start scan */
- status = gl646_begin_scan (dev, dev->reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_repark_head: failed to begin scan: \n");
- return status;
- }
-
- expected = gl646_get_triple_reg (dev->reg, REG_FEEDL);
- do
- {
- usleep (100 * 1000);
- status = sanei_genesys_read_feed_steps (dev, &steps);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_repark_head: failed to read feed steps: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
- while (steps < expected);
-
- /* toggle motor flag, put an huge step number and redo move backward */
- status = gl646_slow_back_home (dev, 1);
- DBG (DBG_proc, "gl646_repark_head: end\n");
- return status;
-}
-
-/* *
- * initialize ASIC : registers, motor tables, and gamma tables
- * then ensure scanner's head is at home
- * @param dev device description of the scanner to initailize
- * @return SANE_STATUS_GOOD if success, error code if failure
- */
-static SANE_Status
-gl646_init (Genesys_Device * dev)
-{
- SANE_Status status;
- struct timeval tv;
- uint8_t cold = 0, val = 0;
- uint32_t addr = 0xdead;
- int size, i;
- size_t len;
-
- DBG_INIT ();
- DBG (DBG_proc, "gl646_init: start\n");
-
- /* to detect real power up condition, we write to REG41
- * with pwrbit set, then read it back. When scanner is cold (just replugged)
- * PWRBIT will be set in the returned value
- */
- RIE (sanei_genesys_get_status (dev, &cold));
- DBG (DBG_info, "gl646_init: status=0x%02x\n", cold);
- cold = !(cold & REG41_PWRBIT);
- if (cold)
- {
- DBG (DBG_info, "gl646_init: device is cold\n");
- }
- else
- {
- DBG (DBG_info, "gl646_init: device is hot\n");
- }
-
- /* if scanning session hasn't been initialized, set it up */
- if (!dev->already_initialized)
- {
- dev->dark_average_data = NULL;
- dev->white_average_data = NULL;
-
- dev->settings.color_filter = 1; /* green filter by default */
- gettimeofday (&tv, NULL);
- dev->init_date = tv.tv_sec;
-
- switch (dev->model->motor_type)
- {
- /* set to 11111 to spot bugs, sanei_genesys_exposure_time should
- have obsoleted this field */
- case MOTOR_5345:
- dev->settings.exposure_time = 11111;
- break;
-
- case MOTOR_ST24:
- dev->settings.exposure_time = 11000;
- break;
- default:
- dev->settings.exposure_time = 11000;
- break;
- }
-
- /* Set default values for registers */
- gl646_init_regs (dev);
-
- /* build default gamma tables */
- if (dev->reg[reg_0x05].value & REG05_GMMTYPE)
- size = 16384;
- else
- size = 4096;
-
- for(i=0;i<3;i++)
- {
- if (dev->sensor.gamma_table[i] == NULL)
- {
- dev->sensor.gamma_table[i] = (uint16_t *) malloc (2 * size);
- if (dev->sensor.gamma_table[i] == NULL)
- {
- DBG (DBG_error, "gl646_init: could not allocate memory for gamma table %d\n",i);
- return SANE_STATUS_NO_MEM;
- }
- sanei_genesys_create_gamma_table (dev->sensor.gamma_table[i],
- size,
- size - 1,
- size - 1,
- dev->sensor.gamma[i]);
- }
- }
-
- /* Init shading data */
- RIE (sanei_genesys_init_shading_data (dev, dev->sensor.sensor_pixels));
-
- /* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg,
- (GENESYS_GL646_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
- }
-
- /* execute physical unit init only if cold */
- if (cold)
- {
- DBG (DBG_info, "gl646_init: device is cold\n");
- val = 0x04;
- RIE (sanei_usb_control_msg
- (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_INIT,
- INDEX, 1, &val));
-
- /* ASIC reset */
- RIE (sanei_genesys_write_register (dev, 0x0e, 0x00));
- usleep (100000UL); /* sleep 100 ms */
-
- /* Write initial registers */
- RIE (gl646_bulk_write_register (dev, dev->reg, GENESYS_GL646_MAX_REGS));
-
- /* Test ASIC and RAM */
- if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT))
- {
- RIE (gl646_asic_test (dev));
- }
-
- /* send gamma tables if needed */
- status = gl646_send_gamma_table (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_init: failed to send generic gamma tables: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* Set powersaving (default = 15 minutes) */
- RIE (gl646_set_powersaving (dev, 15));
- } /* end if cold */
-
- /* Set analog frontend */
- RIE (gl646_set_fe (dev, AFE_INIT, 0));
-
- /* GPO enabling for XP200 */
- if (dev->model->ccd_type == CIS_XP200)
- {
- sanei_genesys_write_register (dev, 0x68, dev->gpo.enable[0]);
- sanei_genesys_write_register (dev, 0x69, dev->gpo.enable[1]);
-
- /* enable GPIO */
- val = 6;
- status = gl646_gpio_output_enable (dev->dn, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_init: GPO enable failed ... %s\n",
- sane_strstatus (status));
- }
- val = 0;
-
- /* writes 0 to GPIO */
- status = gl646_gpio_write (dev->dn, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_init: GPO write failed ... %s\n",
- sane_strstatus (status));
- }
-
- /* clear GPIO enable */
- status = gl646_gpio_output_enable (dev->dn, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_init: GPO disable failed ... %s\n",
- sane_strstatus (status));
- }
- sanei_genesys_write_register (dev, 0x66, 0x10);
- sanei_genesys_write_register (dev, 0x66, 0x00);
- sanei_genesys_write_register (dev, 0x66, 0x10);
- }
-
- /* MD6471/G2410 and XP200 read/write data from an undocumented memory area which
- * is after the second slope table */
- if (dev->model->gpo_type != GPO_HP3670
- && dev->model->gpo_type != GPO_HP2400)
- {
- switch (dev->sensor.optical_res)
- {
- case 600:
- addr = 0x08200;
- break;
- case 1200:
- addr = 0x10200;
- break;
- case 2400:
- addr = 0x1fa00;
- break;
- }
- status = sanei_genesys_set_buffer_address (dev, addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_init: failed to set up control address\n");
- return SANE_STATUS_INVAL;
- }
- sanei_usb_set_timeout (2 * 1000);
- len = 6;
- status = gl646_bulk_read_data (dev, 0x45, dev->control, len);
- /* for some reason, read fails here for MD6471, HP2300 and XP200
- * one time out of 2 scanimage launches
- */
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_warn, "gl646_init: failed to read control\n");
- status = gl646_bulk_read_data (dev, 0x45, dev->control, len);
- }
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_warn, "gl646_init: failed to read control\n");
- return SANE_STATUS_INVAL;
- }
- else
- {
- DBG (DBG_info,
- "gl646_init: control read=0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n",
- dev->control[0], dev->control[1], dev->control[2],
- dev->control[3], dev->control[4], dev->control[5]);
- }
- sanei_usb_set_timeout (30 * 1000);
- }
- else
- /* HP2400 and HP3670 case */
- {
- dev->control[0] = 0x00;
- dev->control[1] = 0x00;
- dev->control[2] = 0x01;
- dev->control[3] = 0x00;
- dev->control[4] = 0x00;
- dev->control[5] = 0x00;
- }
-
- /* ensure head is correctly parked, and check lock */
- if (dev->model->is_sheetfed == SANE_FALSE)
- {
- if (dev->model->flags & GENESYS_FLAG_REPARK)
- {
- status = gl646_repark_head (dev);
- if (status != SANE_STATUS_GOOD)
- {
- if (status == SANE_STATUS_INVAL)
- {
- DBG (DBG_error0,
- "Your scanner is locked. Please move the lock switch "
- "to the unlocked position\n");
-#ifdef SANE_STATUS_HW_LOCKED
- return SANE_STATUS_HW_LOCKED;
-#else
- return SANE_STATUS_JAMMED;
-#endif
- }
- else
- DBG (DBG_error,
- "gl646_init: gl646_repark_head failed: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
- else
- {
- RIE (gl646_slow_back_home (dev, SANE_TRUE));
- }
- }
-
- /* here session and device are initialized */
- dev->already_initialized = SANE_TRUE;
-
- DBG (DBG_proc, "gl646_init: end\n");
- return SANE_STATUS_GOOD;
-}
-
-GENESYS_STATIC
-SANE_Status
-gl646_move_to_ta (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
-
- DBGSTART;
- if (simple_move (dev, SANE_UNFIX (dev->model->y_offset_calib_ta)) !=
- SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_move_to_ta: failed to move to calibration area\n");
- return status;
- }
- DBGCOMPLETED;
- return status;
-}
-
-
-/**
- * Does a simple scan: ie no line reordering and avanced data buffering and
- * shading correction. Memory for data is allocated in this function
- * and must be freed by caller.
- * @param dev device of the scanner
- * @param settings parameters of the scan
- * @param move SANE_TRUE if moving during scan
- * @param forward SANE_TRUE if moving forward during scan
- * @param shading SANE_TRUE to enable shading correction
- * @param data pointer for the data
- */
-GENESYS_STATIC SANE_Status
-simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
- SANE_Bool forward, SANE_Bool shading, unsigned char **data)
-{
- SANE_Status status = SANE_STATUS_INVAL;
- unsigned int size, lines, x, y, bpp;
- SANE_Bool empty, split;
- unsigned char *buffer;
- int count;
- uint8_t val;
-
- DBG (DBG_proc, "simple_scan: starting\n");
- DBG (DBG_io, "simple_scan: move=%d, forward=%d, shading=%d\n", move,
- forward, shading);
-
- /* round up to multiple of 3 in case of CIS scanner */
- if (dev->model->is_cis == SANE_TRUE)
- {
- settings.lines = ((settings.lines + 2) / 3) * 3;
- }
-
- /* setup for move then scan */
- if (move == SANE_TRUE && settings.tl_y > 0)
- {
- split = SANE_FALSE;
- }
- else
- {
- split = SANE_TRUE;
- }
- status = setup_for_scan (dev, dev->reg, settings, split, SANE_FALSE, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "simple_scan: setup_for_scan failed (%s)\n",
- sane_strstatus (status));
- return status;
- }
-
- /* allocate memory fo scan : LINCNT may have been adjusted for CCD reordering */
- if (dev->model->is_cis == SANE_TRUE)
- {
- lines = gl646_get_triple_reg (dev->reg, REG_LINCNT) / 3;
- }
- else
- {
- lines = gl646_get_triple_reg (dev->reg, REG_LINCNT) + 1;
- }
- size = lines * settings.pixels;
- if (settings.depth == 16)
- bpp = 2;
- else
- bpp = 1;
- size *= bpp;
- if (settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
- size *= 3;
- *data = malloc (size);
- if (!*data)
- {
- DBG (DBG_error,
- "simple_scan: failed to allocate %d bytes of memory\n", size);
- return SANE_STATUS_NO_MEM;
- }
- DBG (DBG_io, "simple_scan: allocated %d bytes of memory for %d lines\n",
- size, lines);
-
- /* put back real line number in settings */
- settings.lines = lines;
-
- /* initialize frontend */
- status = gl646_set_fe (dev, AFE_SET, settings.xres);
- if (status != SANE_STATUS_GOOD)
- {
- free (*data);
- DBG (DBG_error,
- "simple_scan: failed to set frontend: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* no shading correction and not watch dog for simple scan */
- dev->reg[reg_0x01].value &= ~(REG01_DVDSET | REG01_DOGENB);
- if (shading == SANE_TRUE)
- {
- dev->reg[reg_0x01].value |= REG01_DVDSET;
- }
-
- /* enable gamma table for the scan */
- dev->reg[reg_0x05].value |= REG05_GMMENB;
-
- /* one table movement for simple scan */
- dev->reg[reg_0x02].value &= ~REG02_FASTFED;
-
- if (move == SANE_FALSE)
- {
- /* clear motor power flag if no move */
- dev->reg[reg_0x02].value &= ~REG02_MTRPWR;
-
- /* no automatic go home if no movement */
- dev->reg[reg_0x02].value &= ~REG02_AGOHOME;
- }
- if (forward == SANE_FALSE)
- {
- dev->reg[reg_0x02].value |= REG02_MTRREV;
- }
- else
- {
- dev->reg[reg_0x02].value &= ~REG02_MTRREV;
- }
-
- /* no automatic go home when using XPA */
- if (settings.scan_method == SCAN_METHOD_TRANSPARENCY)
- {
- dev->reg[reg_0x02].value &= ~REG02_AGOHOME;
- }
-
- /* write scan registers */
- status = gl646_bulk_write_register (dev, dev->reg,
- sizeof (dev->reg) /
- sizeof (dev->reg[0]));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "simple_scan: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- free (*data);
- return status;
- }
-
- /* starts scan */
- status = gl646_begin_scan (dev, dev->reg, move);
- if (status != SANE_STATUS_GOOD)
- {
- free (*data);
- DBG (DBG_error, "simple_scan: failed to begin scan: \n");
- return status;
- }
-
- /* wait for buffers to be filled */
- count = 0;
- do
- {
- usleep (10000UL);
- RIE (sanei_genesys_get_status (dev, &val));
- if (DBG_LEVEL > DBG_info)
- {
- print_status (val);
- }
- RIE (sanei_genesys_test_buffer_empty (dev, &empty));
- count++;
- }
- while (empty && count < 1000);
- if (count == 1000)
- {
- free (*data);
- DBG (DBG_error, "simple_scan: failed toread data\n");
- return SANE_STATUS_IO_ERROR;
- }
-
- /* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, *data, size);
- if (status != SANE_STATUS_GOOD)
- {
- free (*data);
- DBG (DBG_error,
- "simple_scan: failed to read data: %s\n", sane_strstatus (status));
- return status;
- }
-
- /* in case of CIS scanner, we must reorder data */
- if (dev->model->is_cis == SANE_TRUE
- && settings.scan_mode == SCAN_MODE_COLOR)
- {
- /* alloc one line sized working buffer */
- buffer = (unsigned char *) malloc (settings.pixels * 3 * bpp);
- if (buffer == NULL)
- {
- DBG (DBG_error,
- "simple_scan: failed to allocate %d bytes of memory\n",
- settings.pixels * 3);
- return SANE_STATUS_NO_MEM;
- }
-
- /* reorder one line of data and put it back to buffer */
- if (bpp == 1)
- {
- for (y = 0; y < lines; y++)
- {
- /* reorder line */
- for (x = 0; x < settings.pixels; x++)
- {
- buffer[x * 3] = (*data)[y * settings.pixels * 3 + x];
- buffer[x * 3 + 1] =
- (*data)[y * settings.pixels * 3 + settings.pixels + x];
- buffer[x * 3 + 2] =
- (*data)[y * settings.pixels * 3 + 2 * settings.pixels +
- x];
- }
- /* copy line back */
- memcpy ((*data) + settings.pixels * 3 * y, buffer,
- settings.pixels * 3);
- }
- }
- else
- {
- for (y = 0; y < lines; y++)
- {
- /* reorder line */
- for (x = 0; x < settings.pixels; x++)
- {
- buffer[x * 6] = (*data)[y * settings.pixels * 6 + x * 2];
- buffer[x * 6 + 1] =
- (*data)[y * settings.pixels * 6 + x * 2 + 1];
- buffer[x * 6 + 2] =
- (*data)[y * settings.pixels * 6 + 2 * settings.pixels +
- x * 2];
- buffer[x * 6 + 3] =
- (*data)[y * settings.pixels * 6 + 2 * settings.pixels +
- x * 2 + 1];
- buffer[x * 6 + 4] =
- (*data)[y * settings.pixels * 6 + 4 * settings.pixels +
- x * 2];
- buffer[x * 6 + 5] =
- (*data)[y * settings.pixels * 6 + 4 * settings.pixels +
- x * 2 + 1];
- }
- /* copy line back */
- memcpy ((*data) + settings.pixels * 6 * y, buffer,
- settings.pixels * 6);
- }
- }
- free (buffer);
- }
-
- /* end scan , waiting the motor to stop if needed (if moving), but without ejecting doc */
- status = end_scan (dev, dev->reg, SANE_TRUE, SANE_FALSE);
- if (status != SANE_STATUS_GOOD)
- {
- free (*data);
- DBG (DBG_error,
- "simple_scan: failed to end scan: %s\n", sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_proc, "simple_scan: end\n");
- return status;
-}
-
-/**
- * Does a simple move of the given distance by doing a scan at lowest resolution
- * shading correction. Memory for data is allocated in this function
- * and must be freed by caller.
- * @param dev device of the scanner
- * @param distance distance to move in MM
- */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-simple_move (Genesys_Device * dev, SANE_Int distance)
-{
- SANE_Status status;
- unsigned char *data = NULL;
- Genesys_Settings settings;
-
- DBG (DBG_proc, "simple_move: %d mm\n", distance);
-
- /* TODO give a no AGOHOME flag */
- settings.scan_method = SCAN_METHOD_TRANSPARENCY;
- settings.scan_mode = SCAN_MODE_COLOR;
- settings.xres = get_lowest_resolution (dev->model->ccd_type, SANE_TRUE);
- settings.yres = settings.xres;
- settings.tl_y = 0;
- settings.tl_x = 0;
- settings.pixels =
- (dev->sensor.sensor_pixels * settings.xres) / dev->sensor.optical_res;
- settings.lines = (distance * settings.xres) / MM_PER_INCH;
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- status = simple_scan (dev, settings, SANE_TRUE, SANE_TRUE, SANE_FALSE, &data);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "simple_move: simple_scan failed\n");
- }
-
- free (data);
- DBGCOMPLETED
- return status;
-}
-
-/**
- * update the status of the required sensor in the scanner session
- * the last_val fileds are used to make events 'sticky'
- */
-static SANE_Status
-gl646_update_hardware_sensors (Genesys_Scanner * session)
-{
- Genesys_Device *dev = session->dev;
- uint8_t value;
- SANE_Status status;
-
- /* do what is needed to get a new set of events, but try to not loose
- any of them.
- */
- status = gl646_gpio_read (dev->dn, &value);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl646_update_hardware_sensors: failed to read GPIO %s\n",
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_io, "gl646_update_hardware_sensors: GPIO=0x%02x\n", value);
-
- /* scan button */
- if ((dev->model->buttons & GENESYS_HAS_SCAN_SW)
- && session->val[OPT_SCAN_SW].b == session->last_val[OPT_SCAN_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_XP200:
- session->val[OPT_SCAN_SW].b = ((value & 0x02) != 0);
- break;
- case GPO_5345:
- session->val[OPT_SCAN_SW].b = (value == 0x16);
- break;
- case GPO_HP2300:
- session->val[OPT_SCAN_SW].b = (value == 0x6c);
- break;
- case GPO_HP3670:
- case GPO_HP2400:
- session->val[OPT_SCAN_SW].b = ((value & 0x20) == 0);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* email button */
- if ((dev->model->buttons & GENESYS_HAS_EMAIL_SW)
- && session->val[OPT_EMAIL_SW].b == session->last_val[OPT_EMAIL_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_5345:
- session->val[OPT_EMAIL_SW].b = (value == 0x12);
- break;
- case GPO_HP3670:
- case GPO_HP2400:
- session->val[OPT_EMAIL_SW].b = ((value & 0x08) == 0);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* copy button */
- if ((dev->model->buttons & GENESYS_HAS_COPY_SW)
- && session->val[OPT_COPY_SW].b == session->last_val[OPT_COPY_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_5345:
- session->val[OPT_COPY_SW].b = (value == 0x11);
- break;
- case GPO_HP2300:
- session->val[OPT_COPY_SW].b = (value == 0x5c);
- break;
- case GPO_HP3670:
- case GPO_HP2400:
- session->val[OPT_COPY_SW].b = ((value & 0x10) == 0);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* power button */
- if ((dev->model->buttons & GENESYS_HAS_POWER_SW)
- && session->val[OPT_POWER_SW].b == session->last_val[OPT_POWER_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_5345:
- session->val[OPT_POWER_SW].b = (value == 0x14);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* ocr button */
- if ((dev->model->buttons & GENESYS_HAS_OCR_SW)
- && session->val[OPT_OCR_SW].b == session->last_val[OPT_OCR_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_5345:
- session->val[OPT_OCR_SW].b = (value == 0x13);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* document detection */
- if ((dev->model->buttons & GENESYS_HAS_PAGE_LOADED_SW)
- && session->val[OPT_PAGE_LOADED_SW].b ==
- session->last_val[OPT_PAGE_LOADED_SW].b)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_XP200:
- session->val[OPT_PAGE_LOADED_SW].b = ((value & 0x04) != 0);
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- /* XPA detection */
- if (dev->model->flags & GENESYS_FLAG_XPA)
- {
- switch (dev->model->gpo_type)
- {
- case GPO_HP3670:
- case GPO_HP2400:
- /* test if XPA is plugged-in */
- if ((value & 0x40) == 0)
- {
- DBG (DBG_io, "gl646_update_hardware_sensors: enabling XPA\n");
- session->opt[OPT_SOURCE].cap &= ~SANE_CAP_INACTIVE;
- }
- else
- {
- DBG (DBG_io, "gl646_update_hardware_sensors: disabling XPA\n");
- session->opt[OPT_SOURCE].cap |= SANE_CAP_INACTIVE;
- }
- break;
- default:
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-
- return status;
-}
-
-
-static SANE_Status
-write_control (Genesys_Device * dev, int resolution)
-{
- SANE_Status status;
- uint8_t control[4];
- uint32_t addr = 0xdead;
-
- /* 2300 does not write to 'control' */
- if (dev->model->motor_type == MOTOR_HP2300)
- return SANE_STATUS_GOOD;
-
- /* MD6471/G2410/HP2300 and XP200 read/write data from an undocumented memory area which
- * is after the second slope table */
- switch (dev->sensor.optical_res)
- {
- case 600:
- addr = 0x08200;
- break;
- case 1200:
- addr = 0x10200;
- break;
- case 2400:
- addr = 0x1fa00;
- break;
- default:
- DBG (DBG_error, "write_control: failed to compute control address\n");
- return SANE_STATUS_INVAL;
- }
-
- /* XP200 sets dpi, what other scanner put is unknown yet */
- switch (dev->model->motor_type)
- {
- case MOTOR_XP200:
- /* we put scan's dpi, not motor one */
- control[0] = LOBYTE (resolution);
- control[1] = HIBYTE (resolution);
- control[2] = dev->control[4];
- control[3] = dev->control[5];
- break;
- case MOTOR_HP3670:
- case MOTOR_HP2400:
- case MOTOR_5345:
- default:
- control[0] = dev->control[2];
- control[1] = dev->control[3];
- control[2] = dev->control[4];
- control[3] = dev->control[5];
- break;
- }
-
- DBG (DBG_info,
- "write_control: control write=0x%02x 0x%02x 0x%02x 0x%02x\n",
- control[0], control[1], control[2], control[3]);
- status = sanei_genesys_set_buffer_address (dev, addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "write_control: failed to set up control address\n");
- return SANE_STATUS_INVAL;
- }
- status = gl646_bulk_write_data (dev, 0x3c, control, 4);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "write_control: failed to set up control\n");
- return SANE_STATUS_INVAL;
- }
- return status;
-}
-
-/**
- * check if a stored calibration is compatible with requested scan.
- * @return SANE_STATUS_GOOD if compatible, SANE_STATUS_UNSUPPORTED if not.
- * Whenever an error is met, it is returned.
- * @param dev scanner device
- * @param cache cache entry to test
- * @param for_overwrite reserved for future use ...
- */
-static SANE_Status
-gl646_is_compatible_calibration (Genesys_Device * dev,
- Genesys_Calibration_Cache * cache,
- int for_overwrite)
-{
-#ifdef HAVE_SYS_TIME_H
- struct timeval time;
-#endif
- int compatible = 1;
-
- DBG (DBG_proc,
- "gl646_is_compatible_calibration: start (for_overwrite=%d)\n",
- for_overwrite);
-
- if (cache == NULL)
- return SANE_STATUS_UNSUPPORTED;
-
- /* build minimal current_setup for calibration cache use only, it will be better
- * computed when during setup for scan
- */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR)
- {
- dev->current_setup.channels = 3;
- }
- else
- {
- dev->current_setup.channels = 1;
- }
- dev->current_setup.xres = dev->settings.xres;
- dev->current_setup.scan_method = dev->settings.scan_method;
-
- DBG (DBG_io,
- "gl646_is_compatible_calibration: requested=(%d,%f), tested=(%d,%f)\n",
- dev->current_setup.channels, dev->current_setup.xres,
- cache->used_setup.channels, cache->used_setup.xres);
-
- /* a calibration cache is compatible if color mode and x dpi match the user
- * requested scan. In the case of CIS scanners, dpi isn't a criteria */
- if (dev->model->is_cis == SANE_FALSE)
- {
- compatible =
- ((dev->current_setup.channels == cache->used_setup.channels)
- && (((int) dev->current_setup.xres) ==
- ((int) cache->used_setup.xres)));
- }
- else
- {
- compatible =
- (dev->current_setup.channels == cache->used_setup.channels);
- }
- if (dev->current_setup.scan_method != cache->used_setup.scan_method)
- {
- DBG (DBG_io,
- "gl646_is_compatible_calibration: current method=%d, used=%d\n",
- dev->current_setup.scan_method, cache->used_setup.scan_method);
- compatible = 0;
- }
- if (!compatible)
- {
- DBG (DBG_proc,
- "gl646_is_compatible_calibration: completed, non compatible cache\n");
- return SANE_STATUS_UNSUPPORTED;
- }
-
- /* a cache entry expires after 30 minutes for non sheetfed scanners */
- /* this is not taken into account when overwriting cache entries */
-#ifdef HAVE_SYS_TIME_H
- if(for_overwrite == SANE_FALSE)
- {
- gettimeofday (&time, NULL);
- if ((time.tv_sec - cache->last_calibration > 30 * 60)
- && (dev->model->is_sheetfed == SANE_FALSE))
- {
- DBG (DBG_proc,
- "gl646_is_compatible_calibration: expired entry, non compatible cache\n");
- return SANE_STATUS_UNSUPPORTED;
- }
- }
-#endif
-
- DBG (DBG_proc,
- "gl646_is_compatible_calibration: completed, cache compatible\n");
- return SANE_STATUS_GOOD;
-}
-
-/**
- * search for a full width black or white strip.
- * @param dev scanner device
- * @param forward SANE_TRUE if searching forward, SANE_FALSE if searching backward
- * @param black SANE_TRUE if searching for a black strip, SANE_FALSE for a white strip
- * @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
- */
-static SANE_Status
-gl646_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- SANE_Bool half_ccd = SANE_FALSE;
- Genesys_Settings settings;
- int res = get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
- unsigned char *data = NULL;
- unsigned int pass, count, found, x, y;
- char title[80];
-
- DBG (DBG_proc, "gl646_search_strip: start\n");
- /* adapt to half_ccd case */
- if (dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE)
- {
- /* walk the master mode list to find if half_ccd */
- if (is_half_ccd (dev->model->ccd_type, res, SANE_TRUE) == SANE_TRUE)
- {
- half_ccd = SANE_TRUE;
- }
- }
-
- /* we set up for a lowest available resolution color grey scan, full width */
- settings.scan_method = SCAN_METHOD_FLATBED;
- settings.scan_mode = SCAN_MODE_GRAY;
- settings.xres = res;
- settings.yres = res;
- settings.tl_x = 0;
- settings.tl_y = 0;
- settings.pixels = (SANE_UNFIX (dev->model->x_size) * res) / MM_PER_INCH;
- if (half_ccd == SANE_TRUE)
- {
- settings.pixels /= 2;
- }
-
- /* 15 mm at at time */
- settings.lines = (15 * settings.yres) / MM_PER_INCH; /* may become a parameter from genesys_devices.c */
- settings.depth = 8;
- settings.color_filter = 0;
-
- settings.disable_interpolation = 0;
- settings.threshold = 0;
- settings.exposure_time = 0;
- settings.dynamic_lineart = SANE_FALSE;
-
- /* signals if a strip of the given color has been found */
- found = 0;
-
- /* detection pass done */
- pass = 0;
-
- /* loop until strip is found or maximum pass number done */
- while (pass < 20 && !found)
- {
- /* scan a full width strip */
- status =
- simple_scan (dev, settings, SANE_TRUE, forward, SANE_FALSE, &data);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl646_search_strip: simple_scan failed\n");
- free (data);
- return status;
- }
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "search_strip_%s%02d.pnm", forward ? "fwd" : "bwd",
- (int)pass);
- sanei_genesys_write_pnm_file (title, data, settings.depth, 1,
- settings.pixels, settings.lines);
- }
-
- /* search data to find black strip */
- /* when searching forward, we only need one line of the searched color since we
- * will scan forward. But when doing backward search, we need all the area of the
- * same color */
- if (forward)
- {
- for (y = 0; y < settings.lines && !found; y++)
- {
- count = 0;
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < settings.pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * settings.pixels + x] > 90)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * settings.pixels + x] < 60)
- {
- count++;
- }
- }
-
- /* at end of line, if count >= 3%, line is not fully of the desired color
- * so we must go to next line of the buffer */
- /* count*100/pixels < 3 */
- if ((count * 100) / settings.pixels < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl646_search_strip: strip found forward during pass %d at line %d\n",
- pass, y);
- }
- else
- {
- DBG (DBG_data, "gl646_search_strip: pixels=%d, count=%d\n",
- settings.pixels, count);
- }
- }
- }
- else /* since calibration scans are done forward, we need the whole area
- to be of the required color when searching backward */
- {
- count = 0;
- for (y = 0; y < settings.lines; y++)
- {
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < settings.pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * settings.pixels + x] > 60)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * settings.pixels + x] < 60)
- {
- count++;
- }
- }
- }
-
- /* at end of area, if count >= 3%, area is not fully of the desired color
- * so we must go to next buffer */
- if ((count * 100) / (settings.pixels * settings.lines) < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl646_search_strip: strip found backward during pass %d \n",
- pass);
- }
- else
- {
- DBG (DBG_data, "gl646_search_strip: pixels=%d, count=%d\n",
- settings.pixels, count);
- }
- }
- pass++;
- }
- free (data);
- if (found)
- {
- status = SANE_STATUS_GOOD;
- DBG (DBG_info, "gl646_search_strip: strip found\n");
- }
- else
- {
- status = SANE_STATUS_UNSUPPORTED;
- DBG (DBG_info, "gl646_search_strip: strip not found\n");
- }
- return status;
-}
-
-/** the gl646 command set */
-static Genesys_Command_Set gl646_cmd_set = {
- "gl646-generic", /* the name of this set */
-
- gl646_init,
- gl646_init_regs_for_warmup,
- gl646_init_regs_for_coarse_calibration,
- gl646_init_regs_for_shading,
- gl646_init_regs_for_scan,
-
- gl646_get_filter_bit,
- gl646_get_lineart_bit,
- gl646_get_bitset_bit,
- gl646_get_gain4_bit,
- gl646_get_fast_feed_bit,
- gl646_test_buffer_empty_bit,
- gl646_test_motor_flag_bit,
-
- gl646_bulk_full_size,
-
- gl646_public_set_fe,
- gl646_set_powersaving,
- gl646_save_power,
- gl646_set_motor_power,
- gl646_set_lamp_power,
-
- gl646_begin_scan,
- gl646_end_scan,
-
- gl646_send_gamma_table,
-
- gl646_search_start_position,
-
- gl646_offset_calibration,
- gl646_coarse_gain_calibration,
- gl646_led_calibration,
-
- gl646_slow_back_home,
- NULL,
-
- gl646_bulk_write_register,
- gl646_bulk_write_data,
- gl646_bulk_read_data,
-
- gl646_update_hardware_sensors,
-
- /* sheetfed related functions */
- gl646_load_document,
- gl646_detect_document_end,
- gl646_eject_document,
- gl646_search_strip,
-
- gl646_is_compatible_calibration,
- gl646_move_to_ta,
- NULL,
- NULL,
- NULL,
- NULL
-};
-
-SANE_Status
-sanei_gl646_init_cmd_set (Genesys_Device * dev)
-{
- dev->model->cmd_set = &gl646_cmd_set;
- return SANE_STATUS_GOOD;
-}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl646.cc b/backend/genesys_gl646.cc
new file mode 100644
index 0000000..b2b9f62
--- /dev/null
+++ b/backend/genesys_gl646.cc
@@ -0,0 +1,4911 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2003 Oliver Rauch
+ Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
+ Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
+ Copyright (C) 2004-2013 Stéphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
+ Copyright (C) 2007 Luke <iceyfor@gmail.com>
+ Copyright (C) 2011 Alexey Osipov <simba@lerlan.ru> for HP2400 description
+ and tuning
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#define DEBUG_DECLARE_ONLY
+
+#include "genesys_gl646.h"
+
+#include <vector>
+
+/**
+ * reads value from gpio endpoint
+ */
+static void gl646_gpio_read(UsbDevice& usb_dev, uint8_t* value)
+{
+ DBG_HELPER(dbg);
+ usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_REGISTER, GPIO_READ, INDEX, 1, value);
+}
+
+/**
+ * writes the given value to gpio endpoint
+ */
+static void gl646_gpio_write(UsbDevice& usb_dev, uint8_t value)
+{
+ DBG_HELPER_ARGS(dbg, "(0x%02x)", value);
+ usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, GPIO_WRITE, INDEX, 1, &value);
+}
+
+/**
+ * writes the given value to gpio output enable endpoint
+ */
+static void gl646_gpio_output_enable(UsbDevice& usb_dev, 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);
+}
+
+/* Read bulk data (e.g. scanned data) */
+static SANE_Status
+gl646_bulk_read_data (Genesys_Device * dev, uint8_t addr,
+ uint8_t * data, size_t len)
+{
+ SANE_Status status = sanei_genesys_bulk_read_data(dev, addr, data, len);
+ if (status != SANE_STATUS_GOOD) {
+ return status;
+ }
+ if (dev->model->is_sheetfed == SANE_TRUE) {
+ gl646_detect_document_end (dev);
+ }
+ return status;
+}
+
+static SANE_Bool
+gl646_get_fast_feed_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, 0x02);
+ if (r && (r->value & REG02_FASTFED))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_get_filter_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, 0x04);
+ if (r && (r->value & REG04_FILTER))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_get_lineart_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, 0x04);
+ if (r && (r->value & REG04_LINEART))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_get_bitset_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, 0x04);
+ if (r && (r->value & REG04_BITSET))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_get_gain4_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, 0x06);
+ if (r && (r->value & REG06_GAIN4))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_test_buffer_empty_bit (SANE_Byte val)
+{
+ if (val & REG41_BUFEMPTY)
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl646_test_motor_flag_bit (SANE_Byte val)
+{
+ if (val & REG41_MOTMFLG)
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+/**
+ * decodes and prints content of status (0x41) register
+ * @param val value read from reg41
+ */
+static void
+print_status (uint8_t val)
+{
+ char msg[80];
+
+ sprintf (msg, "%s%s%s%s%s%s%s%s",
+ val & REG41_PWRBIT ? "PWRBIT " : "",
+ val & REG41_BUFEMPTY ? "BUFEMPTY " : "",
+ val & REG41_FEEDFSH ? "FEEDFSH " : "",
+ val & REG41_SCANFSH ? "SCANFSH " : "",
+ val & REG41_HOMESNR ? "HOMESNR " : "",
+ val & REG41_LAMPSTS ? "LAMPSTS " : "",
+ val & REG41_FEBUSY ? "FEBUSY " : "",
+ val & REG41_MOTMFLG ? "MOTMFLG" : "");
+ DBG(DBG_info, "status=%s\n", msg);
+}
+
+/**
+ * start scanner's motor
+ * @param dev scanner's device
+ */
+static SANE_Status
+gl646_start_motor (Genesys_Device * dev)
+{
+ return sanei_genesys_write_register (dev, 0x0f, 0x01);
+}
+
+
+/**
+ * stop scanner's motor
+ * @param dev scanner's device
+ */
+static SANE_Status
+gl646_stop_motor (Genesys_Device * dev)
+{
+ return sanei_genesys_write_register (dev, 0x0f, 0x00);
+}
+
+
+/**
+ * find the lowest resolution for the sensor in the given mode.
+ * @param sensor id of the sensor
+ * @param color true is color mode
+ * @return the closest resolution for the sensor and mode
+ */
+static int
+get_lowest_resolution(int sensor_id, unsigned channels)
+{
+ int i, nb;
+ int dpi;
+
+ i = 0;
+ dpi = 9600;
+ nb = sizeof (sensor_master) / sizeof (Sensor_Master);
+ while (i < nb)
+ {
+ /* computes distance and keep mode if it is closer than previous */
+ if (sensor_id == sensor_master[i].sensor
+ && sensor_master[i].channels == channels)
+ {
+ if (sensor_master[i].dpi < dpi)
+ {
+ dpi = sensor_master[i].dpi;
+ }
+ }
+ i++;
+ }
+ DBG(DBG_info, "%s: %d\n", __func__, dpi);
+ return dpi;
+}
+
+/**
+ * find the closest match in mode tables for the given resolution and scan mode.
+ * @param sensor id of the sensor
+ * @param required required resolution
+ * @param color true is color mode
+ * @return the closest resolution for the sensor and mode
+ */
+static int
+get_closest_resolution(int sensor_id, int required, unsigned channels)
+{
+ int i, nb;
+ int dist, dpi;
+
+ i = 0;
+ dpi = 0;
+ dist = 9600;
+ nb = sizeof (sensor_master) / sizeof (Sensor_Master);
+ while (i < nb)
+ {
+ /* exit on perfect match */
+ if (sensor_id == sensor_master[i].sensor
+ && sensor_master[i].dpi == required
+ && sensor_master[i].channels == channels)
+ {
+ DBG(DBG_info, "%s: match found for %d\n", __func__, required);
+ return required;
+ }
+ /* computes distance and keep mode if it is closer than previous */
+ if (sensor_id == sensor_master[i].sensor
+ && sensor_master[i].channels == channels)
+ {
+ if (abs (sensor_master[i].dpi - required) < dist)
+ {
+ dpi = sensor_master[i].dpi;
+ dist = abs (sensor_master[i].dpi - required);
+ }
+ }
+ i++;
+ }
+ DBG(DBG_info, "%s: closest match for %d is %d\n", __func__, required, dpi);
+ return dpi;
+}
+
+/**
+ * Computes if sensor will be set up for half ccd pixels for the given
+ * scan mode.
+ * @param sensor id of the sensor
+ * @param required required resolution
+ * @param color true is color mode
+ * @return SANE_TRUE if half ccd is used
+ */
+static SANE_Bool is_half_ccd(int sensor_id, int required, unsigned channels)
+{
+ int i, nb;
+
+ i = 0;
+ nb = sizeof (sensor_master) / sizeof (Sensor_Master);
+ while (i < nb)
+ {
+ /* exit on perfect match */
+ if (sensor_id == sensor_master[i].sensor
+ && sensor_master[i].dpi == required
+ && sensor_master[i].channels == channels)
+ {
+ DBG(DBG_io, "%s: match found for %d (half_ccd=%d)\n", __func__, required,
+ sensor_master[i].half_ccd);
+ return sensor_master[i].half_ccd;
+ }
+ i++;
+ }
+ DBG(DBG_info, "%s: failed to find match for %d dpi\n", __func__, required);
+ return SANE_FALSE;
+}
+
+/**
+ * Returns the cksel values used by the required scan mode.
+ * @param sensor id of the sensor
+ * @param required required resolution
+ * @param color true is color mode
+ * @return cksel value for mode
+ */
+static int get_cksel(int sensor_id, int required, unsigned channels)
+{
+ int i, nb;
+
+ i = 0;
+ nb = sizeof (sensor_master) / sizeof (Sensor_Master);
+ while (i < nb)
+ {
+ /* exit on perfect match */
+ if (sensor_id == sensor_master[i].sensor
+ && sensor_master[i].dpi == required
+ && sensor_master[i].channels == channels)
+ {
+ DBG(DBG_io, "%s: match found for %d (cksel=%d)\n", __func__, required,
+ sensor_master[i].cksel);
+ return sensor_master[i].cksel;
+ }
+ i++;
+ }
+ DBG(DBG_error, "%s: failed to find match for %d dpi\n", __func__, required);
+ /* fail safe fallback */
+ return 1;
+}
+
+/**
+ * Setup register and motor tables for a scan at the
+ * given resolution and color mode. TODO try to not use any filed from
+ * the device.
+ * @param dev pointer to a struct describing the device
+ * @param regs register set to fill
+ * @param slope_table1 first motor table to fill
+ * @param slope_table2 second motor table to fill
+ * @return SANE_STATUS_GOOD if registers could be set, SANE_STATUS_INVAL if
+ * conditions can't be met.
+ * @note No harcoded SENSOR or MOTOR 'names' should be present and
+ * registers are set from settings tables and flags related
+ * to the hardware capabilities.
+ * */
+static SANE_Status
+gl646_setup_registers (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs,
+ SetupParams& params,
+ uint16_t * slope_table1,
+ uint16_t * slope_table2,
+ bool xcorrection)
+{
+ int resolution = params.xres;
+ uint32_t move = params.starty;
+ uint32_t linecnt = params.lines;
+
+ uint32_t startx = 0;
+ /* pixels are allways given at full CCD optical resolution */
+ /* use detected left margin and fixed value */
+ if (xcorrection == SANE_TRUE) {
+ if (sensor.CCD_start_xoffset > 0) {
+ startx = sensor.CCD_start_xoffset;
+ } else {
+ startx = sensor.dummy_pixel;
+ }
+ } else {
+ // startx cannot be below dummy pixel value
+ startx = sensor.dummy_pixel;
+ }
+
+ /* add x coordinates : expressed in sensor max dpi */
+ startx += params.startx;
+
+ /* stagger works with odd start cordinates */
+ if (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE) {
+ startx |= 1;
+ }
+
+ uint32_t pixels = (params.pixels * sensor.optical_res) / params.xres;
+ /* special requirement for 400 dpi on 1200 dpi sensors */
+ if (params.xres == 400)
+ {
+ pixels = (pixels / 6) * 6;
+ }
+ /* TODO check for pixel width overflow */
+ uint32_t endx = startx + pixels;
+
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i, nb;
+ Sensor_Master *sensor_mst = NULL;
+ Motor_Master *motor = NULL;
+ Sensor_Settings *settings = NULL;
+ GenesysRegister *r;
+ unsigned int used1, used2, vfinal;
+ unsigned int bpp; /**> bytes per pixel */
+ uint32_t z1, z2;
+ uint16_t ex, sx;
+ int stagger, words_per_line, max_shift;
+ size_t requested_buffer_size;
+ size_t read_buffer_size;
+ SANE_Bool half_ccd = SANE_FALSE;
+ SANE_Int xresolution;
+ int feedl;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+ DBG(DBG_info, "%s: startx=%d, endx=%d, linecnt=%d\n", __func__, startx, endx, linecnt);
+
+ /* x resolution is capped by sensor's capability */
+ if (resolution > sensor.optical_res)
+ {
+ xresolution = sensor.optical_res;
+ }
+ else
+ {
+ xresolution = resolution;
+ }
+
+ /* for the given resolution, search for master
+ * sensor mode setting */
+ i = 0;
+ nb = sizeof (sensor_master) / sizeof (Sensor_Master);
+ while (i < nb)
+ {
+ if (dev->model->ccd_type == sensor_master[i].sensor
+ && sensor_master[i].dpi == xresolution
+ && sensor_master[i].channels == params.channels)
+ {
+ sensor_mst = &sensor_master[i];
+ }
+ i++;
+ }
+ if (sensor_mst == NULL)
+ {
+ DBG(DBG_error, "%s: unable to find settings for sensor %d at %d dpi channels=%d\n", __func__,
+ dev->model->ccd_type, xresolution, params.channels);
+ return SANE_STATUS_INVAL;
+ }
+
+ /* for the given resolution, search for master
+ * motor mode setting */
+ i = 0;
+ nb = sizeof (motor_master) / sizeof (Motor_Master);
+ while (i < nb)
+ {
+ if (dev->model->motor_type == motor_master[i].motor
+ && motor_master[i].dpi == resolution
+ && motor_master[i].channels == params.channels)
+ {
+ motor = &motor_master[i];
+ }
+ i++;
+ }
+ if (motor == NULL)
+ {
+ DBG(DBG_error, "%s: unable to find settings for motor %d at %d dpi, color=%d\n", __func__,
+ dev->model->motor_type, resolution, params.channels);
+ return SANE_STATUS_INVAL;
+ }
+
+ /* now we can search for the specific sensor settings */
+ i = 0;
+ nb = sizeof (sensor_settings) / sizeof (Sensor_Settings);
+ while (i < nb)
+ {
+ if (sensor_mst->sensor == sensor_settings[i].sensor
+ && sensor_mst->cksel == sensor_settings[i].cksel)
+ {
+ settings = &sensor_settings[i];
+ }
+ i++;
+ }
+ if (settings == NULL)
+ {
+ DBG(DBG_error, "%s: unable to find settings for sensor %d with '%d' ccd timing\n", __func__,
+ sensor_mst->sensor, sensor_mst->cksel);
+ return SANE_STATUS_INVAL;
+ }
+
+ /* half_ccd if manual clock programming or dpi is half dpiset */
+ half_ccd = sensor_mst->half_ccd;
+
+ /* now apply values from settings to registers */
+ if (sensor_mst->regs_0x10_0x15 != NULL)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x10 + i);
+ r->value = sensor_mst->regs_0x10_0x15[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 6; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x10 + i);
+ r->value = 0;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x08 + i);
+ if (half_ccd == SANE_TRUE)
+ r->value = settings->manual_0x08_0x0b[i];
+ else
+ r->value = settings->regs_0x08_0x0b[i];
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x16 + i);
+ r->value = settings->regs_0x16_0x1d[i];
+ }
+
+ for (i = 0; i < 13; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x52 + i);
+ r->value = settings->regs_0x52_0x5e[i];
+ }
+ if (half_ccd == SANE_TRUE)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ r = sanei_genesys_get_address (regs, 0x52 + i);
+ r->value = settings->manual_0x52_0x58[i];
+ }
+ }
+
+ /* now generate slope tables : we are not using generate_slope_table3 yet */
+ sanei_genesys_generate_slope_table (slope_table1, motor->steps1,
+ motor->steps1 + 1, motor->vend1,
+ motor->vstart1, motor->vend1,
+ motor->steps1, motor->g1, &used1,
+ &vfinal);
+ sanei_genesys_generate_slope_table (slope_table2, motor->steps2,
+ motor->steps2 + 1, motor->vend2,
+ motor->vstart2, motor->vend2,
+ motor->steps2, motor->g2, &used2,
+ &vfinal);
+
+ /* R01 */
+ /* now setup other registers for final scan (ie with shading enabled) */
+ /* watch dog + shading + scan enable */
+ regs->find_reg(0x01).value |= REG01_DOGENB | REG01_DVDSET | REG01_SCAN;
+ if (dev->model->is_cis == SANE_TRUE)
+ regs->find_reg(0x01).value |= REG01_CISSET;
+ else
+ regs->find_reg(0x01).value &= ~REG01_CISSET;
+
+ /* if device has no calibration, don't enable shading correction */
+ if (dev->model->flags & GENESYS_FLAG_NO_CALIBRATION)
+ {
+ regs->find_reg(0x01).value &= ~REG01_DVDSET;
+ }
+
+ regs->find_reg(0x01).value &= ~REG01_FASTMOD;
+ if (motor->fastmod)
+ regs->find_reg(0x01).value |= REG01_FASTMOD;
+
+ /* R02 */
+ /* allow moving when buffer full by default */
+ if (dev->model->is_sheetfed == SANE_FALSE)
+ dev->reg.find_reg(0x02).value &= ~REG02_ACDCDIS;
+ else
+ dev->reg.find_reg(0x02).value |= REG02_ACDCDIS;
+
+ /* setup motor power and direction */
+ sanei_genesys_set_motor_power(*regs, true);
+ regs->find_reg(0x02).value &= ~REG02_MTRREV;
+
+ /* fastfed enabled (2 motor slope tables) */
+ if (motor->fastfed)
+ regs->find_reg(0x02).value |= REG02_FASTFED;
+ else
+ regs->find_reg(0x02).value &= ~REG02_FASTFED;
+
+ /* step type */
+ regs->find_reg(0x02).value &= ~REG02_STEPSEL;
+ switch (motor->steptype)
+ {
+ case FULL_STEP:
+ break;
+ case HALF_STEP:
+ regs->find_reg(0x02).value |= 1;
+ break;
+ case QUATER_STEP:
+ regs->find_reg(0x02).value |= 2;
+ break;
+ default:
+ regs->find_reg(0x02).value |= 3;
+ break;
+ }
+
+ /* if sheetfed, no AGOHOME */
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ regs->find_reg(0x02).value &= ~REG02_AGOHOME;
+ }
+ else
+ {
+ regs->find_reg(0x02).value |= REG02_AGOHOME;
+ }
+
+ /* R03 */
+ regs->find_reg(0x03).value &= ~REG03_AVEENB;
+ /* regs->find_reg(0x03).value |= REG03_AVEENB; */
+ regs->find_reg(0x03).value &= ~REG03_LAMPDOG;
+
+ /* select XPA */
+ regs->find_reg(0x03).value &= ~REG03_XPASEL;
+ if (params.flags & SCAN_FLAG_USE_XPA) {
+ regs->find_reg(0x03).value |= REG03_XPASEL;
+ }
+ regs->state.is_xpa_on = params.flags & SCAN_FLAG_USE_XPA;
+
+ /* R04 */
+ /* monochrome / color scan */
+ switch (params.depth)
+ {
+ case 1:
+ regs->find_reg(0x04).value &= ~REG04_BITSET;
+ regs->find_reg(0x04).value |= REG04_LINEART;
+ break;
+ case 8:
+ regs->find_reg(0x04).value &= ~(REG04_LINEART | REG04_BITSET);
+ break;
+ case 16:
+ regs->find_reg(0x04).value &= ~REG04_LINEART;
+ regs->find_reg(0x04).value |= REG04_BITSET;
+ break;
+ }
+
+ /* R05 */
+ regs->find_reg(0x05).value &= ~REG05_DPIHW;
+ switch (sensor.optical_res)
+ {
+ case 600:
+ regs->find_reg(0x05).value |= REG05_DPIHW_600;
+ break;
+ case 1200:
+ regs->find_reg(0x05).value |= REG05_DPIHW_1200;
+ break;
+ case 2400:
+ regs->find_reg(0x05).value |= REG05_DPIHW_2400;
+ break;
+ default:
+ regs->find_reg(0x05).value |= REG05_DPIHW;
+ }
+
+ /* gamma enable for scans */
+ if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
+ regs->find_reg(0x05).value |= REG05_GMM14BIT;
+
+ regs->find_reg(0x05).value &= ~REG05_GMMENB;
+
+ /* true CIS gray if needed */
+ if (dev->model->is_cis == SANE_TRUE && params.channels == 1
+ && dev->settings.true_gray)
+ {
+ regs->find_reg(0x05).value |= REG05_LEDADD;
+ }
+ else
+ {
+ regs->find_reg(0x05).value &= ~REG05_LEDADD;
+ }
+
+ /* cktoggle, ckdelay and cksel at once, cktdelay=2 => half_ccd for md5345 */
+ regs->find_reg(0x18).value = sensor_mst->r18;
+
+ /* manual CCD/2 clock programming => half_ccd for hp2300 */
+ regs->find_reg(0x1d).value = sensor_mst->r1d;
+
+ /* HP2400 1200dpi mode tuning */
+
+ if (dev->model->ccd_type == CCD_HP2400)
+ {
+ /* reset count of dummy lines to zero */
+ regs->find_reg(0x1e).value &= ~REG1E_LINESEL;
+ if (params.xres >= 1200)
+ {
+ /* there must be one dummy line */
+ regs->find_reg(0x1e).value |= 1 & REG1E_LINESEL;
+
+ /* GPO12 need to be set to zero */
+ regs->find_reg(0x66).value &= ~0x20;
+ }
+ else
+ {
+ /* set GPO12 back to one */
+ regs->find_reg(0x66).value |= 0x20;
+ }
+ }
+
+ /* motor steps used */
+ regs->find_reg(0x21).value = motor->steps1;
+ regs->find_reg(0x22).value = motor->fwdbwd;
+ regs->find_reg(0x23).value = motor->fwdbwd;
+ regs->find_reg(0x24).value = motor->steps1;
+
+ /* scanned area height must be enlarged by max color shift needed */
+ max_shift=sanei_genesys_compute_max_shift(dev,params.channels, params.yres, 0);
+
+ /* we adjust linecnt according to real motor dpi */
+ linecnt = (linecnt * motor->ydpi) / params.yres + max_shift;
+
+ /* at QUATER_STEP lines are 'staggered' and need correction */
+ stagger = 0;
+ if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
+ {
+ /* for HP3670, stagger happens only at >=1200 dpi */
+ if ((dev->model->motor_type != MOTOR_HP3670 && dev->model->motor_type != MOTOR_HP2400)
+ || params.yres >= (unsigned) sensor.optical_res)
+ {
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
+ }
+ }
+ linecnt += stagger;
+
+ DBG(DBG_info, "%s : max_shift=%d, stagger=%d lines\n", __func__, max_shift, stagger);
+
+ /* CIS scanners read one line per color channel
+ * since gray mode use 'add' we also read 3 channels even not in
+ * color mode */
+ if (dev->model->is_cis == SANE_TRUE)
+ {
+ sanei_genesys_set_triple(regs, REG_LINCNT, linecnt * 3);
+ linecnt *= params.channels;
+ }
+ else
+ {
+ sanei_genesys_set_triple(regs, REG_LINCNT, linecnt);
+ }
+
+ /* scanner's x coordinates are expressed in physical DPI but they must be divided by cksel */
+ sx = startx / sensor_mst->cksel;
+ ex = endx / sensor_mst->cksel;
+ if (half_ccd == SANE_TRUE)
+ {
+ sx /= 2;
+ ex /= 2;
+ }
+ sanei_genesys_set_double(regs, REG_STRPIXEL, sx);
+ sanei_genesys_set_double(regs, REG_ENDPIXEL, ex);
+ DBG(DBG_info, "%s: startx=%d, endx=%d, half_ccd=%d\n", __func__, sx, ex, half_ccd);
+
+ /* words_per_line must be computed according to the scan's resolution */
+ /* in fact, words_per_line _gives_ the actual scan resolution */
+ words_per_line = (((endx - startx) * sensor_mst->xdpi) / sensor.optical_res);
+ bpp=params.depth/8;
+ if (params.depth == 1)
+ {
+ words_per_line = (words_per_line+7)/8 ;
+ bpp=1;
+ }
+ else
+ {
+ words_per_line *= bpp;
+ }
+ dev->bpl = words_per_line;
+ words_per_line *= params.channels;
+ dev->wpl = words_per_line;
+
+ DBG(DBG_info, "%s: wpl=%d\n", __func__, words_per_line);
+ sanei_genesys_set_triple(regs, REG_MAXWD, words_per_line);
+
+ sanei_genesys_set_double(regs, REG_DPISET, sensor_mst->dpiset);
+ sanei_genesys_set_double(regs, REG_LPERIOD, sensor_mst->exposure);
+
+ /* move distance must be adjusted to take into account the extra lines
+ * read to reorder data */
+ feedl = move;
+ if (stagger + max_shift > 0 && feedl != 0)
+ {
+ if (feedl >
+ ((max_shift + stagger) * dev->motor.optical_ydpi) / motor->ydpi)
+ feedl =
+ feedl -
+ ((max_shift + stagger) * dev->motor.optical_ydpi) / motor->ydpi;
+ }
+
+ /* we assume all scans are done with 2 tables */
+ /*
+ feedl = feed_steps - fast_slope_steps*2 -
+ (slow_slope_steps >> scan_step_type); */
+ /* but head has moved due to shading calibration => dev->scanhead_position_in_steps */
+ if (feedl > 0)
+ {
+ /* take into account the distance moved during calibration */
+ /* feedl -= dev->scanhead_position_in_steps; */
+ DBG(DBG_info, "%s: initial move=%d\n", __func__, feedl);
+ DBG(DBG_info, "%s: scanhead_position_in_steps=%d\n", __func__,
+ dev->scanhead_position_in_steps);
+
+ /* TODO clean up this when I'll fully understand.
+ * for now, special casing each motor */
+ switch (dev->model->motor_type)
+ {
+ case MOTOR_5345:
+ switch (motor->ydpi)
+ {
+ case 200:
+ feedl -= 70;
+ break;
+ case 300:
+ feedl -= 70;
+ break;
+ case 400:
+ feedl += 130;
+ break;
+ case 600:
+ feedl += 160;
+ break;
+ case 1200:
+ feedl += 160;
+ break;
+ case 2400:
+ feedl += 180;
+ break;
+ default:
+ break;
+ }
+ break;
+ case MOTOR_HP2300:
+ switch (motor->ydpi)
+ {
+ case 75:
+ feedl -= 180;
+ break;
+ case 150:
+ feedl += 0;
+ break;
+ case 300:
+ feedl += 30;
+ break;
+ case 600:
+ feedl += 35;
+ break;
+ case 1200:
+ feedl += 45;
+ break;
+ default:
+ break;
+ }
+ break;
+ case MOTOR_HP2400:
+ switch (motor->ydpi)
+ {
+ case 150:
+ feedl += 150;
+ break;
+ case 300:
+ feedl += 220;
+ break;
+ case 600:
+ feedl += 260;
+ break;
+ case 1200:
+ feedl += 280; /* 300 */
+ break;
+ case 50:
+ feedl += 0;
+ break;
+ case 100:
+ feedl += 100;
+ break;
+ default:
+ break;
+ }
+ break;
+
+ /* theorical value */
+ default:
+ if (motor->fastfed)
+ {
+ feedl =
+ feedl - 2 * motor->steps2 -
+ (motor->steps1 >> motor->steptype);
+ }
+ else
+ {
+ feedl = feedl - (motor->steps1 >> motor->steptype);
+ }
+ break;
+ }
+ /* security */
+ if (feedl < 0)
+ feedl = 0;
+ }
+
+ DBG(DBG_info, "%s: final move=%d\n", __func__, feedl);
+ sanei_genesys_set_triple(regs, REG_FEEDL, feedl);
+
+ regs->find_reg(0x65).value = motor->mtrpwm;
+
+ sanei_genesys_calculate_zmode2 (regs->find_reg(0x02).value & REG02_FASTFED,
+ sensor_mst->exposure,
+ slope_table1,
+ motor->steps1,
+ move, motor->fwdbwd, &z1, &z2);
+
+ /* no z1/z2 for sheetfed scanners */
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ z1 = 0;
+ z2 = 0;
+ }
+ sanei_genesys_set_double(regs, REG_Z1MOD, z1);
+ sanei_genesys_set_double(regs, REG_Z2MOD, z2);
+ regs->find_reg(0x6b).value = motor->steps2;
+ regs->find_reg(0x6c).value =
+ (regs->find_reg(0x6c).value & REG6C_TGTIME) | ((z1 >> 13) & 0x38) | ((z2 >> 16)
+ & 0x07);
+
+ RIE (write_control (dev, sensor, xresolution));
+
+ /* setup analog frontend */
+ RIE (gl646_set_fe(dev, sensor, AFE_SET, xresolution));
+
+ /* now we're done with registers setup values used by data transfer */
+ /* we setup values needed for the data transfer */
+
+ /* we must use a round number of words_per_line */
+ requested_buffer_size = 8 * words_per_line;
+ read_buffer_size =
+ 2 * requested_buffer_size +
+ ((max_shift + stagger) * params.pixels * params.channels * params.depth) / 8;
+
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
+
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
+
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc(8 * params.pixels * params.channels * bpp);
+
+ /* scan bytes to read */
+ dev->read_bytes_left = words_per_line * linecnt;
+
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
+ dev->read_active = SANE_TRUE;
+
+ dev->current_setup.params = params;
+ dev->current_setup.pixels =
+ ((endx - startx) * sensor_mst->xdpi) / sensor.optical_res;
+ dev->current_setup.lines = linecnt;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
+ dev->current_setup.exposure_time = sensor_mst->exposure;
+ dev->current_setup.xres = sensor_mst->xdpi;
+ dev->current_setup.yres = motor->ydpi;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
+ dev->current_setup.stagger = stagger;
+ dev->current_setup.max_shift = max_shift + stagger;
+
+ /* total_bytes_to_read is the number of byte to send to frontend
+ * total_bytes_read is the number of bytes sent to frontend
+ * read_bytes_left is the number of bytes to read from the scanner
+ */
+ dev->total_bytes_read = 0;
+ if (params.depth == 1) {
+ dev->total_bytes_to_read = ((params.pixels * params.lines) / 8 +
+ (((params.pixels * params.lines) % 8) ? 1 : 0)) * params.channels;
+ } else {
+ dev->total_bytes_to_read = params.pixels * params.lines * params.channels * bpp;
+ }
+
+ /* select color filter based on settings */
+ regs->find_reg(0x04).value &= ~REG04_FILTER;
+ if (params.channels == 1) {
+ switch (params.color_filter) {
+ case ColorFilter::RED:
+ regs->find_reg(0x04).value |= 0x04;
+ break;
+ case ColorFilter::GREEN:
+ regs->find_reg(0x04).value |= 0x08;
+ break;
+ case ColorFilter::BLUE:
+ regs->find_reg(0x04).value |= 0x0c;
+ break;
+ default:
+ break;
+ }
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
+
+/** copy sensor specific settings */
+/* *dev : device infos
+ *regs : regiters to be set
+ extended : do extended set up
+ half_ccd: set up for half ccd resolution
+ all registers 08-0B, 10-1D, 52-5E are set up. They shouldn't
+ appear anywhere else but in register init
+*/
+static void
+gl646_setup_sensor (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * regs)
+{
+ (void) dev;
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ for (const auto& reg_setting : sensor.custom_regs) {
+ regs->set8(reg_setting.address, reg_setting.value);
+ }
+ // FIXME: all other drivers don't set exposure here
+ sanei_genesys_set_exposure(*regs, sensor.exposure);
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+}
+
+/** Test if the ASIC works
+ */
+static SANE_Status
+gl646_asic_test (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+ size_t size, verify_size;
+ unsigned int i;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* set and read exposure time, compare if it's the same */
+ status = sanei_genesys_write_register (dev, 0x38, 0xde);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_write_register (dev, 0x39, 0xad);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_read_register (dev, 0x4e, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ if (val != 0xde) /* value of register 0x38 */
+ {
+ DBG(DBG_error, "%s: register contains invalid value\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ status = sanei_genesys_read_register (dev, 0x4f, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ if (val != 0xad) /* value of register 0x39 */
+ {
+ DBG(DBG_error, "%s: register contains invalid value\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ /* ram test: */
+ size = 0x40000;
+ verify_size = size + 0x80;
+ /* todo: looks like the read size must be a multiple of 128?
+ otherwise the read doesn't succeed the second time after the scanner has
+ been plugged in. Very strange. */
+
+ std::vector<uint8_t> data(size);
+ std::vector<uint8_t> verify_data(verify_size);
+
+ for (i = 0; i < (size - 1); i += 2)
+ {
+ data[i] = i / 512;
+ data[i + 1] = (i / 2) % 256;
+ }
+
+ status = sanei_genesys_set_buffer_address (dev, 0x0000);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_bulk_write_data(dev, 0x3c, data.data(), size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_set_buffer_address (dev, 0x0000);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status =
+ gl646_bulk_read_data (dev, 0x45, verify_data.data(), verify_size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* i + 2 is needed as the changed address goes into effect only after one
+ data word is sent. */
+ for (i = 0; i < size; i++)
+ {
+ if (verify_data[i + 2] != data[i])
+ {
+ DBG(DBG_error, "%s: data verification error\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+ }
+
+ DBG(DBG_info, "%s: end\n", __func__);
+
+ return SANE_STATUS_GOOD;
+}
+
+/**
+ * Set all registers to default values after init
+ * @param dev scannerr's device to set
+ */
+static void
+gl646_init_regs (Genesys_Device * dev)
+{
+ int addr;
+
+ DBG(DBG_proc, "%s\n", __func__);
+
+ dev->reg.clear();
+
+ for (addr = 1; addr <= 0x0b; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x10; addr <= 0x29; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x2c; addr <= 0x39; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x3d; addr <= 0x3f; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x52; addr <= 0x5e; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x60; addr <= 0x6d; addr++)
+ dev->reg.init_reg(addr, 0);
+
+ dev->reg.find_reg(0x01).value = 0x20 /*0x22 */ ; /* enable shading, CCD, color, 1M */
+ dev->reg.find_reg(0x02).value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
+ if (dev->model->motor_type == MOTOR_5345)
+ dev->reg.find_reg(0x02).value |= 0x01; /* half-step */
+ switch (dev->model->motor_type)
+ {
+ case MOTOR_5345:
+ dev->reg.find_reg(0x02).value |= 0x01; /* half-step */
+ break;
+ case MOTOR_XP200:
+ /* for this sheetfed scanner, no AGOHOME, nor backtracking */
+ dev->reg.find_reg(0x02).value = 0x50;
+ break;
+ default:
+ break;
+ }
+ dev->reg.find_reg(0x03).value = 0x1f /*0x17 */ ; /* lamp on */
+ dev->reg.find_reg(0x04).value = 0x13 /*0x03 */ ; /* 8 bits data, 16 bits A/D, color, Wolfson fe *//* todo: according to spec, 0x0 is reserved? */
+ switch (dev->model->dac_type)
+ {
+ case DAC_AD_XP200:
+ dev->reg.find_reg(0x04).value = 0x12;
+ break;
+ default:
+ /* Wolfson frontend */
+ dev->reg.find_reg(0x04).value = 0x13;
+ break;
+ }
+
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ dev->reg.find_reg(0x05).value = 0x00; /* 12 bits gamma, disable gamma, 24 clocks/pixel */
+ switch (sensor.optical_res)
+ {
+ case 600:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
+ break;
+ case 1200:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
+ break;
+ case 2400:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
+ break;
+ default:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW;
+ break;
+ }
+ if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
+ dev->reg.find_reg(0x05).value |= REG05_GMM14BIT;
+ if (dev->model->dac_type == DAC_AD_XP200)
+ dev->reg.find_reg(0x05).value |= 0x01; /* 12 clocks/pixel */
+
+ if (dev->model->ccd_type == CCD_HP2300)
+ dev->reg.find_reg(0x06).value = 0x00; /* PWRBIT off, shading gain=4, normal AFE image capture */
+ else
+ dev->reg.find_reg(0x06).value = 0x18; /* PWRBIT on, shading gain=8, normal AFE image capture */
+
+
+ gl646_setup_sensor(dev, sensor, &dev->reg);
+
+ dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
+
+ switch (dev->model->ccd_type)
+ {
+ case CCD_HP2300:
+ dev->reg.find_reg(0x1e).value = 0xf0;
+ dev->reg.find_reg(0x1f).value = 0x10;
+ dev->reg.find_reg(0x20).value = 0x20;
+ break;
+ case CCD_HP2400:
+ dev->reg.find_reg(0x1e).value = 0x80;
+ dev->reg.find_reg(0x1f).value = 0x10;
+ dev->reg.find_reg(0x20).value = 0x20;
+ break;
+ case CCD_HP3670:
+ dev->reg.find_reg(0x19).value = 0x2a;
+ dev->reg.find_reg(0x1e).value = 0x80;
+ dev->reg.find_reg(0x1f).value = 0x10;
+ dev->reg.find_reg(0x20).value = 0x20;
+ break;
+ case CIS_XP200:
+ dev->reg.find_reg(0x1e).value = 0x10;
+ dev->reg.find_reg(0x1f).value = 0x01;
+ dev->reg.find_reg(0x20).value = 0x50;
+ break;
+ default:
+ dev->reg.find_reg(0x1f).value = 0x01;
+ dev->reg.find_reg(0x20).value = 0x50;
+ break;
+ }
+
+ dev->reg.find_reg(0x21).value = 0x08 /*0x20 */ ; /* table one steps number for forward slope curve of the acc/dec */
+ dev->reg.find_reg(0x22).value = 0x10 /*0x08 */ ; /* steps number of the forward steps for start/stop */
+ dev->reg.find_reg(0x23).value = 0x10 /*0x08 */ ; /* steps number of the backward steps for start/stop */
+ dev->reg.find_reg(0x24).value = 0x08 /*0x20 */ ; /* table one steps number backward slope curve of the acc/dec */
+ dev->reg.find_reg(0x25).value = 0x00; /* scan line numbers (7000) */
+ dev->reg.find_reg(0x26).value = 0x00 /*0x1b */ ;
+ dev->reg.find_reg(0x27).value = 0xd4 /*0x58 */ ;
+ dev->reg.find_reg(0x28).value = 0x01; /* PWM duty for lamp control */
+ dev->reg.find_reg(0x29).value = 0xff;
+
+ dev->reg.find_reg(0x2c).value = 0x02; /* set resolution (600 DPI) */
+ dev->reg.find_reg(0x2d).value = 0x58;
+ dev->reg.find_reg(0x2e).value = 0x78; /* set black&white threshold high level */
+ dev->reg.find_reg(0x2f).value = 0x7f; /* set black&white threshold low level */
+
+ dev->reg.find_reg(0x30).value = 0x00; /* begin pixel position (16) */
+ dev->reg.find_reg(0x31).value = sensor.dummy_pixel /*0x10 */ ; /* TGW + 2*TG_SHLD + x */
+ dev->reg.find_reg(0x32).value = 0x2a /*0x15 */ ; /* end pixel position (5390) */
+ dev->reg.find_reg(0x33).value = 0xf8 /*0x0e */ ; /* TGW + 2*TG_SHLD + y */
+ dev->reg.find_reg(0x34).value = sensor.dummy_pixel;
+ dev->reg.find_reg(0x35).value = 0x01 /*0x00 */ ; /* set maximum word size per line, for buffer full control (10800) */
+ dev->reg.find_reg(0x36).value = 0x00 /*0x2a */ ;
+ dev->reg.find_reg(0x37).value = 0x00 /*0x30 */ ;
+ dev->reg.find_reg(0x38).value = 0x2a; // line period (exposure time = 11000 pixels) */
+ dev->reg.find_reg(0x39).value = 0xf8;
+ dev->reg.find_reg(0x3d).value = 0x00; /* set feed steps number of motor move */
+ dev->reg.find_reg(0x3e).value = 0x00;
+ dev->reg.find_reg(0x3f).value = 0x01 /*0x00 */ ;
+
+ dev->reg.find_reg(0x60).value = 0x00; /* Z1MOD, 60h:61h:(6D b5:b3), remainder for start/stop */
+ dev->reg.find_reg(0x61).value = 0x00; /* (21h+22h)/LPeriod */
+ dev->reg.find_reg(0x62).value = 0x00; /* Z2MODE, 62h:63h:(6D b2:b0), remainder for start scan */
+ dev->reg.find_reg(0x63).value = 0x00; /* (3Dh+3Eh+3Fh)/LPeriod for one-table mode,(21h+1Fh)/LPeriod */
+ dev->reg.find_reg(0x64).value = 0x00; /* motor PWM frequency */
+ dev->reg.find_reg(0x65).value = 0x00; /* PWM duty cycle for table one motor phase (63 = max) */
+ if (dev->model->motor_type == MOTOR_5345)
+ dev->reg.find_reg(0x65).value = 0x02; /* PWM duty cycle for table one motor phase (63 = max) */
+ dev->reg.find_reg(0x66).value = dev->gpo.value[0];
+ dev->reg.find_reg(0x67).value = dev->gpo.value[1];
+ dev->reg.find_reg(0x68).value = dev->gpo.enable[0];
+ dev->reg.find_reg(0x69).value = dev->gpo.enable[1];
+
+ switch (dev->model->motor_type)
+ {
+ case MOTOR_HP2300:
+ case MOTOR_HP2400:
+ dev->reg.find_reg(0x6a).value = 0x7f; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6b).value = 0x78; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6d).value = 0x7f;
+ break;
+ case MOTOR_5345:
+ dev->reg.find_reg(0x6a).value = 0x42; /* table two fast moving step type, PWM duty for table two */
+ dev->reg.find_reg(0x6b).value = 0xff; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6d).value = 0x41; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
+ break;
+ case MOTOR_XP200:
+ dev->reg.find_reg(0x6a).value = 0x7f; /* table two fast moving step type, PWM duty for table two */
+ dev->reg.find_reg(0x6b).value = 0x08; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6d).value = 0x01; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
+ break;
+ case MOTOR_HP3670:
+ dev->reg.find_reg(0x6a).value = 0x41; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6b).value = 0xc8; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6d).value = 0x7f;
+ break;
+ default:
+ dev->reg.find_reg(0x6a).value = 0x40; /* table two fast moving step type, PWM duty for table two */
+ dev->reg.find_reg(0x6b).value = 0xff; /* table two steps number for acc/dec */
+ dev->reg.find_reg(0x6d).value = 0x01; /* select deceleration steps whenever go home (0), accel/decel stop time (31 * LPeriod) */
+ break;
+ }
+ dev->reg.find_reg(0x6c).value = 0x00; /* peroid times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE (one period time) */
+}
+
+
+/* Send slope table for motor movement
+ slope_table in machine byte order
+*/
+static SANE_Status
+gl646_send_slope_table (Genesys_Device * dev, int table_nr,
+ uint16_t * slope_table, int steps)
+{
+ int dpihw;
+ int start_address;
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_proc, "%s (table_nr = %d, steps = %d)=%d .. %d\n", __func__, table_nr, steps,
+ slope_table[0], slope_table[steps - 1]);
+
+ dpihw = dev->reg.find_reg(0x05).value >> 6;
+
+ if (dpihw == 0) /* 600 dpi */
+ start_address = 0x08000;
+ else if (dpihw == 1) /* 1200 dpi */
+ start_address = 0x10000;
+ else if (dpihw == 2) /* 2400 dpi */
+ start_address = 0x1f800;
+ else /* reserved */
+ return SANE_STATUS_INVAL;
+
+ std::vector<uint8_t> table(steps * 2);
+ for (int i = 0; i < steps; i++)
+ {
+ table[i * 2] = slope_table[i] & 0xff;
+ table[i * 2 + 1] = slope_table[i] >> 8;
+ }
+
+ status =
+ sanei_genesys_set_buffer_address (dev, start_address + table_nr * 0x100);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_bulk_write_data(dev, 0x3c, table.data(), steps * 2);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send slope table: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+/* Set values of Analog Device type frontend */
+static SANE_Status
+gl646_set_ad_fe (Genesys_Device * dev, uint8_t set)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i;
+
+ DBG(DBG_proc, "%s(): start\n", __func__);
+ if (set == AFE_INIT)
+ {
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
+
+ dev->frontend = dev->frontend_initial;
+
+ /* write them to analog frontend */
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write reg0: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write reg1: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ }
+ if (set == AFE_SET)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ status = sanei_genesys_fe_write_data(dev, 0x02 + i, dev->frontend.get_gain(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write gain %d: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ for (i = 0; i < 3; i++)
+ {
+ status = sanei_genesys_fe_write_data(dev, 0x05 + i, dev->frontend.get_offset(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write offset %d: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ }
+ /*
+ if (set == AFE_POWER_SAVE)
+ {
+ status =
+ sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0] | 0x04);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write reg0: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ } */
+ DBG(DBG_proc, "%s(): end\n", __func__);
+
+ return status;
+}
+
+/** set up analog frontend
+ * set up analog frontend
+ * @param dev device to set up
+ * @param set action from AFE_SET, AFE_INIT and AFE_POWERSAVE
+ * @param dpi resolution of the scan since it affects settings
+ * @return SANE_STATUS_GOOD if evrithing OK
+ */
+static SANE_Status
+gl646_wm_hp3670(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set, int dpi)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i;
+
+ DBGSTART;
+ switch (set)
+ {
+ case AFE_INIT:
+ status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: reset failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_sleep_ms(200);
+ RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
+ dev->frontend = dev->frontend_initial;
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg1 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data(dev, 0x02, dev->frontend.regs.get_value(0x02));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg2 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ gl646_gpio_output_enable(dev->usb_dev, 0x07);
+ break;
+ case AFE_POWER_SAVE:
+ status = sanei_genesys_fe_write_data (dev, 0x01, 0x06);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg1 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data (dev, 0x06, 0x0f);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg6 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ return status;
+ break;
+ default: /* AFE_SET */
+ /* mode setup */
+ i = dev->frontend.regs.get_value(0x03);
+ if (dpi > sensor.optical_res / 2)
+ {
+ /* fe_reg_0x03 must be 0x12 for 1200 dpi in DAC_WOLFSON_HP3670.
+ * DAC_WOLFSON_HP2400 in 1200 dpi mode works well with
+ * fe_reg_0x03 set to 0x32 or 0x12 but not to 0x02 */
+ i = 0x12;
+ }
+ status = sanei_genesys_fe_write_data (dev, 0x03, i);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg3 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ /* offset and sign (or msb/lsb ?) */
+ for (i = 0; i < 3; i++)
+ {
+ status =
+ sanei_genesys_fe_write_data(dev, 0x20 + i, dev->frontend.get_offset(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing offset%d failed: %s\n", __func__, i,
+ sane_strstatus (status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data(dev, 0x24 + i,
+ dev->frontend.regs.get_value(0x24 + i)); /* MSB/LSB ? */
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing sign%d failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+
+ /* gain */
+ for (i = 0; i < 3; i++)
+ {
+ status =
+ sanei_genesys_fe_write_data(dev, 0x28 + i, dev->frontend.get_gain(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing gain%d failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/** Set values of analog frontend
+ * @param dev device to set
+ * @param set action to execute
+ * @param dpi dpi to setup the AFE
+ * @return error or SANE_STATUS_GOOD */
+static SANE_Status
+gl646_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set, int dpi)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i;
+ uint8_t val;
+
+ DBG(DBG_proc, "%s (%s,%d)\n", __func__, set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
+ AFE_POWER_SAVE ? "powersave" : "huh?", dpi);
+
+ /* Analog Device type frontend */
+ if ((dev->reg.find_reg(0x04).value & REG04_FESET) == 0x02)
+ return gl646_set_ad_fe (dev, set);
+
+ /* Wolfson type frontend */
+ if ((dev->reg.find_reg(0x04).value & REG04_FESET) != 0x03)
+ {
+ DBG(DBG_proc, "%s(): unsupported frontend type %d\n", __func__,
+ dev->reg.find_reg(0x04).value & REG04_FESET);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+
+ /* per frontend function to keep code clean */
+ switch (dev->model->dac_type)
+ {
+ case DAC_WOLFSON_HP3670:
+ case DAC_WOLFSON_HP2400:
+ return gl646_wm_hp3670(dev, sensor, set, dpi);
+ break;
+ default:
+ DBG(DBG_proc, "%s(): using old method\n", __func__);
+ break;
+ }
+
+ /* initialize analog frontend */
+ if (set == AFE_INIT)
+ {
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
+ dev->frontend = dev->frontend_initial;
+
+ /* reset only done on init */
+ status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: init fe failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* enable GPIO for some models */
+ if (dev->model->ccd_type == CCD_HP2300)
+ {
+ val = 0x07;
+ gl646_gpio_output_enable(dev->usb_dev, val);
+ }
+ return status;
+ }
+
+ /* set fontend to power saving mode */
+ if (set == AFE_POWER_SAVE)
+ {
+ status = sanei_genesys_fe_write_data (dev, 0x01, 0x02);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing data failed: %s\n", __func__, sane_strstatus(status));
+ }
+ return status;
+ }
+
+ /* here starts AFE_SET */
+ /* TODO : base this test on cfg reg3 or a CCD family flag to be created */
+ /* if (dev->model->ccd_type != CCD_HP2300
+ && dev->model->ccd_type != CCD_HP3670
+ && dev->model->ccd_type != CCD_HP2400) */
+ {
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg0 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data(dev, 0x02, dev->frontend.regs.get_value(0x02));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg2 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ }
+
+ /* start with reg3 */
+ status = sanei_genesys_fe_write_data(dev, 0x03, dev->frontend.regs.get_value(0x03));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg3 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ switch (dev->model->ccd_type)
+ {
+ default:
+ for (i = 0; i < 3; i++)
+ {
+ status =
+ sanei_genesys_fe_write_data(dev, 0x24 + i,
+ dev->frontend.regs.get_value(0x24 + i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing sign[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+
+ status =
+ sanei_genesys_fe_write_data(dev, 0x28 + i, dev->frontend.get_gain(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing gain[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+
+ status =
+ sanei_genesys_fe_write_data(dev, 0x20 + i, dev->frontend.get_offset(i));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing offset[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ break;
+ /* just can't have it to work ....
+ case CCD_HP2300:
+ case CCD_HP2400:
+ case CCD_HP3670:
+
+ status =
+ sanei_genesys_fe_write_data(dev, 0x23, dev->frontend.get_offset(1));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing offset[1] failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_fe_write_data(dev, 0x28, dev->frontend.get_gain(1));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing gain[1] failed: %s\n", __func__, sane_strstatus (status));
+ return status;
+ }
+ break; */
+ }
+
+ /* end with reg1 */
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg1 failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+
+ return SANE_STATUS_GOOD;
+}
+
+/** Set values of analog frontend
+ * this this the public interface, the gl646 as to use one more
+ * parameter to work effectively, hence the redirection
+ * @param dev device to set
+ * @param set action to execute
+ * @return error or SANE_STATUS_GOOD */
+static SANE_Status
+gl646_public_set_fe (Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
+{
+ return gl646_set_fe(dev, sensor, set, dev->settings.yres);
+}
+
+/**
+ * enters or leaves power saving mode
+ * limited to AFE for now.
+ * @param dev scanner's device
+ * @param enable SANE_TRUE to enable power saving, SANE_FALSE to leave it
+ * @return allways SANE_STATUS_GOOD
+ */
+static
+SANE_Status
+gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
+{
+
+ DBGSTART;
+ DBG(DBG_info, "%s: enable = %d\n", __func__, enable);
+
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ if (enable)
+ {
+ /* gl646_set_fe(dev, sensor, AFE_POWER_SAVE); */
+ }
+ else
+ {
+ gl646_set_fe(dev, sensor, AFE_INIT, 0);
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status
+gl646_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg(Genesys_Register_Set::SEQUENTIAL);
+ int rate, exposure_time, tgtime, time;
+
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
+
+ local_reg.init_reg(0x01, dev->reg.get8(0x01)); // disable fastmode
+ local_reg.init_reg(0x03, dev->reg.get8(0x03)); // Lamp power control
+ local_reg.init_reg(0x05, dev->reg.get8(0x05) & ~REG05_BASESEL); // 24 clocks/pixel
+ local_reg.init_reg(0x38, 0x00); // line period low
+ local_reg.init_reg(0x39, 0x00); //line period high
+ local_reg.init_reg(0x6c, 0x00); // period times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE
+
+ if (!delay)
+ local_reg.find_reg(0x03).value &= 0xf0; /* disable lampdog and set lamptime = 0 */
+ else if (delay < 20)
+ local_reg.find_reg(0x03).value = (local_reg.get8(0x03) & 0xf0) | 0x09; /* enable lampdog and set lamptime = 1 */
+ else
+ local_reg.find_reg(0x03).value = (local_reg.get8(0x03) & 0xf0) | 0x0f; /* enable lampdog and set lamptime = 7 */
+
+ time = delay * 1000 * 60; /* -> msec */
+ exposure_time =
+ (uint32_t) (time * 32000.0 /
+ (24.0 * 64.0 * (local_reg.get8(0x03) & REG03_LAMPTIM) *
+ 1024.0) + 0.5);
+ /* 32000 = system clock, 24 = clocks per pixel */
+ rate = (exposure_time + 65536) / 65536;
+ if (rate > 4)
+ {
+ rate = 8;
+ tgtime = 3;
+ }
+ else if (rate > 2)
+ {
+ rate = 4;
+ tgtime = 2;
+ }
+ else if (rate > 1)
+ {
+ rate = 2;
+ tgtime = 1;
+ }
+ else
+ {
+ rate = 1;
+ tgtime = 0;
+ }
+
+ local_reg.find_reg(0x6c).value |= tgtime << 6;
+ exposure_time /= rate;
+
+ if (exposure_time > 65535)
+ exposure_time = 65535;
+
+ local_reg.find_reg(0x38).value = exposure_time / 256;
+ local_reg.find_reg(0x39).value = exposure_time & 255;
+
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+
+/**
+ * loads document into scanner
+ * currently only used by XP200
+ * bit2 (0x04) of gpio is paper event (document in/out) on XP200
+ * HOMESNR is set if no document in front of sensor, the sequence of events is
+ * paper event -> document is in the sheet feeder
+ * HOMESNR becomes 0 -> document reach sensor
+ * HOMESNR becomes 1 ->document left sensor
+ * paper event -> document is out
+ */
+static SANE_Status
+gl646_load_document (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ // FIXME: sequential not really needed in this case
+ Genesys_Register_Set regs(Genesys_Register_Set::SEQUENTIAL);
+ unsigned int used, vfinal, count;
+ uint16_t slope_table[255];
+ uint8_t val;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* no need to load document is flatbed scanner */
+ if (dev->model->is_sheetfed == SANE_FALSE)
+ {
+ DBG(DBG_proc, "%s: nothing to load\n", __func__);
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* HOMSNR is set if a document is inserted */
+ if ((val & REG41_HOMESNR))
+ {
+ /* if no document, waits for a paper event to start loading */
+ /* with a 60 seconde minutes timeout */
+ count = 0;
+ do
+ {
+ gl646_gpio_read(dev->usb_dev, &val);
+
+ DBG(DBG_info, "%s: GPIO=0x%02x\n", __func__, val);
+ if ((val & 0x04) != 0x04)
+ {
+ DBG(DBG_warn, "%s: no paper detected\n", __func__);
+ }
+ sanei_genesys_sleep_ms(200);
+ count++;
+ }
+ while (((val & 0x04) != 0x04) && (count < 300)); /* 1 min time out */
+ if (count == 300)
+ {
+ DBG(DBG_error, "%s: timeout waiting for document\n", __func__);
+ return SANE_STATUS_NO_DOCS;
+ }
+ }
+
+ /* set up to fast move before scan then move until document is detected */
+ regs.init_reg(0x01, 0x90);
+
+ /* AGOME, 2 slopes motor moving */
+ regs.init_reg(0x02, 0x79);
+
+ /* motor feeding steps to 0 */
+ regs.init_reg(0x3d, 0);
+ regs.init_reg(0x3e, 0);
+ regs.init_reg(0x3f, 0);
+
+ /* 50 fast moving steps */
+ regs.init_reg(0x6b, 50);
+
+ /* set GPO */
+ regs.init_reg(0x66, 0x30);
+
+ /* stesp NO */
+ regs.init_reg(0x21, 4);
+ regs.init_reg(0x22, 1);
+ regs.init_reg(0x23, 1);
+ regs.init_reg(0x24, 4);
+
+ /* generate slope table 2 */
+ sanei_genesys_generate_slope_table (slope_table,
+ 50,
+ 51,
+ 2400,
+ 6000, 2400, 50, 0.25, &used, &vfinal);
+/* document loading:
+ * send regs
+ * start motor
+ * wait e1 status to become e0
+ */
+ status = gl646_send_slope_table (dev, 1, slope_table, 50);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send slope table 1: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_bulk_write_register(dev, regs);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = gl646_start_motor (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ count = 0;
+ do
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_sleep_ms(200);
+ count++;
+ }
+ while ((val & REG41_MOTMFLG) && (count < 300));
+ if (count == 300)
+ {
+ DBG(DBG_error, "%s: can't load document\n", __func__);
+ return SANE_STATUS_JAMMED;
+ }
+
+ /* when loading OK, document is here */
+ dev->document = SANE_TRUE;
+
+ /* set up to idle */
+ regs.set8(0x02, 0x71);
+ regs.set8(0x3f, 1);
+ regs.set8(0x6b, 8);
+ status = sanei_genesys_bulk_write_register(dev, regs);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write idle registers: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+
+ return status;
+}
+
+/**
+ * detects end of document and adjust current scan
+ * to take it into account
+ * used by sheetfed scanners
+ */
+static SANE_Status
+gl646_detect_document_end (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val, gpio;
+ unsigned int bytes_left, lines;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* test for document presence */
+ RIE (sanei_genesys_get_status (dev, &val));
+ if (DBG_LEVEL > DBG_info)
+ {
+ print_status (val);
+ }
+ gl646_gpio_read(dev->usb_dev, &gpio);
+ DBG(DBG_info, "%s: GPIO=0x%02x\n", __func__, gpio);
+
+ /* detect document event. There one event when the document go in,
+ * then another when it leaves */
+ if ((dev->document == SANE_TRUE) && (gpio & 0x04)
+ && (dev->total_bytes_read > 0))
+ {
+ DBG(DBG_info, "%s: no more document\n", __func__);
+ dev->document = SANE_FALSE;
+
+ /* adjust number of bytes to read:
+ * total_bytes_to_read is the number of byte to send to frontend
+ * total_bytes_read is the number of bytes sent to frontend
+ * read_bytes_left is the number of bytes to read from the scanner
+ */
+ DBG(DBG_io, "%s: total_bytes_to_read=%lu\n", __func__, (u_long) dev->total_bytes_to_read);
+ DBG(DBG_io, "%s: total_bytes_read =%lu\n", __func__, (u_long) dev->total_bytes_read);
+ DBG(DBG_io, "%s: read_bytes_left =%lu\n", __func__, (u_long) dev->read_bytes_left);
+
+ /* amount of data available from scanner is what to scan */
+ status = sanei_genesys_read_valid_words (dev, &bytes_left);
+
+ /* we add the number of lines needed to read the last part of the document in */
+ lines =
+ (SANE_UNFIX (dev->model->y_offset) * dev->current_setup.yres) /
+ MM_PER_INCH;
+ DBG(DBG_io, "%s: adding %d line to flush\n", __func__, lines);
+ bytes_left += lines * dev->wpl;
+ if (dev->current_setup.depth > 8)
+ {
+ bytes_left = 2 * bytes_left;
+ }
+ if (dev->current_setup.channels > 1)
+ {
+ bytes_left = 3 * bytes_left;
+ }
+ if (bytes_left < dev->read_bytes_left)
+ {
+ dev->total_bytes_to_read = dev->total_bytes_read + bytes_left;
+ dev->read_bytes_left = bytes_left;
+ }
+ DBG(DBG_io, "%s: total_bytes_to_read=%lu\n", __func__, (u_long) dev->total_bytes_to_read);
+ DBG(DBG_io, "%s: total_bytes_read =%lu\n", __func__, (u_long) dev->total_bytes_read);
+ DBG(DBG_io, "%s: read_bytes_left =%lu\n", __func__, (u_long) dev->read_bytes_left);
+ }
+ DBG(DBG_proc, "%s: end\n", __func__);
+
+ return status;
+}
+
+/**
+ * eject document from the feeder
+ * currently only used by XP200
+ * TODO we currently rely on AGOHOME not being set for sheetfed scanners,
+ * maybe check this flag in eject to let the document being eject automaticaly
+ */
+static SANE_Status
+gl646_eject_document (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ // FIXME: SEQUENTIAL not really needed in this case
+ Genesys_Register_Set regs((Genesys_Register_Set::SEQUENTIAL));
+ unsigned int used, vfinal, count;
+ uint16_t slope_table[255];
+ uint8_t gpio, state;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* at the end there will be noe more document */
+ dev->document = SANE_FALSE;
+
+ // first check for document event
+ gl646_gpio_read(dev->usb_dev, &gpio);
+
+ DBG(DBG_info, "%s: GPIO=0x%02x\n", __func__, gpio);
+
+ /* test status : paper event + HOMESNR -> no more doc ? */
+ status = sanei_genesys_get_status (dev, &state);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ DBG(DBG_info, "%s: state=0x%02x\n", __func__, state);
+ if (DBG_LEVEL > DBG_info)
+ {
+ print_status (state);
+ }
+
+ /* HOMSNR=0 if no document inserted */
+ if ((state & REG41_HOMESNR) != 0)
+ {
+ dev->document = SANE_FALSE;
+ DBG(DBG_info, "%s: no more document to eject\n", __func__);
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+ }
+
+ /* there is a document inserted, eject it */
+ status = sanei_genesys_write_register (dev, 0x01, 0xb0);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* wait for motor to stop */
+ do
+ {
+ sanei_genesys_sleep_ms(200);
+ status = sanei_genesys_get_status (dev, &state);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ }
+ while (state & REG41_MOTMFLG);
+
+ /* set up to fast move before scan then move until document is detected */
+ regs.init_reg(0x01, 0xb0);
+
+ /* AGOME, 2 slopes motor moving , eject 'backward' */
+ regs.init_reg(0x02, 0x5d);
+
+ /* motor feeding steps to 119880 */
+ regs.init_reg(0x3d, 1);
+ regs.init_reg(0x3e, 0xd4);
+ regs.init_reg(0x3f, 0x48);
+
+ /* 60 fast moving steps */
+ regs.init_reg(0x6b, 60);
+
+ /* set GPO */
+ regs.init_reg(0x66, 0x30);
+
+ /* stesp NO */
+ regs.init_reg(0x21, 4);
+ regs.init_reg(0x22, 1);
+ regs.init_reg(0x23, 1);
+ regs.init_reg(0x24, 4);
+
+ /* generate slope table 2 */
+ sanei_genesys_generate_slope_table (slope_table,
+ 60,
+ 61,
+ 1600,
+ 10000, 1600, 60, 0.25, &used, &vfinal);
+/* document eject:
+ * send regs
+ * start motor
+ * wait c1 status to become c8 : HOMESNR and ~MOTFLAG
+ */
+ status = gl646_send_slope_table (dev, 1, slope_table, 60);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send slope table 1: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ status = sanei_genesys_bulk_write_register(dev, regs);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = gl646_start_motor (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus (status));
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ /* loop until paper sensor tells paper is out, and till motor is running */
+ /* use a 30 timeout */
+ count = 0;
+ do
+ {
+ status = sanei_genesys_get_status (dev, &state);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read status: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ print_status (state);
+ sanei_genesys_sleep_ms(200);
+ count++;
+ }
+ while (((state & REG41_HOMESNR) == 0) && (count < 150));
+
+ // read GPIO on exit
+ gl646_gpio_read(dev->usb_dev, &gpio);
+
+ DBG(DBG_info, "%s: GPIO=0x%02x\n", __func__, gpio);
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+/* Send the low-level scan command */
+static SANE_Status
+gl646_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SANE_Bool start_motor)
+{
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
+ // FIXME: SEQUENTIAL not really needed in this case
+ Genesys_Register_Set local_reg(Genesys_Register_Set::SEQUENTIAL);
+
+ DBG(DBG_proc, "%s\n", __func__);
+
+ local_reg.init_reg(0x03, sanei_genesys_read_reg_from_set(reg, 0x03));
+ local_reg.init_reg(0x01, sanei_genesys_read_reg_from_set(reg, 0x01) | REG01_SCAN); /* set scan bit */
+
+ if (start_motor) {
+ local_reg.init_reg(0x0f, 0x01);
+ } else {
+ local_reg.init_reg(0x0f, 0x00); // do not start motor yet
+ }
+
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+
+ return status;
+}
+
+
+/* Send the stop scan command */
+static SANE_Status
+end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+ SANE_Bool check_stop, SANE_Bool eject)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i = 0;
+ uint8_t val, scanfsh = 0;
+
+ DBG(DBG_proc, "%s (check_stop = %d, eject = %d)\n", __func__, check_stop, eject);
+
+ /* we need to compute scanfsh before cancelling scan */
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ if (val & REG41_SCANFSH)
+ scanfsh = 1;
+ if (DBG_LEVEL > DBG_io2)
+ {
+ print_status (val);
+ }
+ }
+
+ /* ends scan */
+ val = sanei_genesys_read_reg_from_set (reg, 0x01);
+ val &= ~REG01_SCAN;
+ sanei_genesys_set_reg_from_set (reg, 0x01, val);
+ status = sanei_genesys_write_register (dev, 0x01, val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write register 01: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* for sheetfed scanners, we may have to eject document */
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ if (eject == SANE_TRUE && dev->document == SANE_TRUE)
+ {
+ status = gl646_eject_document (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to eject document\n", __func__);
+ return status;
+ }
+ }
+ if (check_stop)
+ {
+ for (i = 0; i < 30; i++) /* do not wait longer than wait 3 seconds */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ if (val & REG41_SCANFSH)
+ scanfsh = 1;
+ if (DBG_LEVEL > DBG_io2)
+ {
+ print_status (val);
+ }
+
+ if (!(val & REG41_MOTMFLG) && (val & REG41_FEEDFSH) && scanfsh)
+ {
+ DBG(DBG_proc, "%s: scanfeed finished\n", __func__);
+ break; /* leave for loop */
+ }
+
+ sanei_genesys_sleep_ms(100);
+ }
+ }
+ }
+ else /* flat bed scanners */
+ {
+ if (check_stop)
+ {
+ for (i = 0; i < 300; i++) /* do not wait longer than wait 30 seconds */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ if (val & REG41_SCANFSH)
+ scanfsh = 1;
+ if (DBG_LEVEL > DBG_io)
+ {
+ print_status (val);
+ }
+
+ if (!(val & REG41_MOTMFLG) && (val & REG41_FEEDFSH) && scanfsh)
+ {
+ DBG(DBG_proc, "%s: scanfeed finished\n", __func__);
+ break; /* leave while loop */
+ }
+
+ if ((!(val & REG41_MOTMFLG)) && (val & REG41_HOMESNR))
+ {
+ DBG(DBG_proc, "%s: head at home\n", __func__);
+ break; /* leave while loop */
+ }
+
+ sanei_genesys_sleep_ms(100);
+ }
+ }
+ }
+
+ DBG(DBG_proc, "%s: end (i=%u)\n", __func__, i);
+
+ return status;
+}
+
+/* Send the stop scan command */
+static SANE_Status
+gl646_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+ SANE_Bool check_stop)
+{
+ return end_scan (dev, reg, check_stop, SANE_FALSE);
+}
+
+/**
+ * parks head
+ * @param dev scanner's device
+ * @param wait_until_home true if the function waits until head parked
+ */
+static
+SANE_Status
+gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+ uint8_t val;
+ int i;
+ int loop = 0;
+
+ DBG(DBG_proc, "%s: start , wait_until_home = %d\n", __func__, wait_until_home);
+
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ if (DBG_LEVEL > DBG_io)
+ {
+ print_status (val);
+ }
+
+ dev->scanhead_position_in_steps = 0;
+
+ if (val & REG41_HOMESNR) /* is sensor at home? */
+ {
+ DBG(DBG_info, "%s: end since already at home\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+
+ /* stop motor if needed */
+ if (val & REG41_MOTMFLG)
+ {
+ status = gl646_stop_motor (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to stop motor: %s\n", __func__, sane_strstatus(status));
+ return SANE_STATUS_IO_ERROR;
+ }
+ sanei_genesys_sleep_ms(200);
+ }
+
+ /* when scanhead is moving then wait until scanhead stops or timeout */
+ DBG(DBG_info, "%s: ensuring that motor is off\n", __func__);
+ val = REG41_MOTMFLG;
+ for (i = 400; i > 0 && (val & REG41_MOTMFLG); i--) /* do not wait longer than 40 seconds, count down to get i = 0 when busy */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: Failed to read home sensor & motor status: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ if (((val & (REG41_MOTMFLG | REG41_HOMESNR)) == REG41_HOMESNR)) /* at home and motor is off */
+ {
+ DBG(DBG_info, "%s: already at home and not moving\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+ sanei_genesys_sleep_ms(100);
+ }
+
+ if (!i) /* the loop counted down to 0, scanner still is busy */
+ {
+ DBG(DBG_error, "%s: motor is still on: device busy\n", __func__);
+ return SANE_STATUS_DEVICE_BUSY;
+ }
+
+ /* setup for a backward scan of 65535 steps, with no actual data reading */
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = get_lowest_resolution(dev->model->ccd_type, 1);
+ settings.yres = settings.xres;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels = 600;
+ settings.lines = 1;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres);
+
+ status = setup_for_scan(dev, sensor, &dev->reg, settings, SANE_TRUE, SANE_TRUE, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
+ DBGCOMPLETED;
+ return status;
+ }
+
+ /* backward , no actual data scanned TODO more setup flags to avoid this register manipulations ? */
+ dev->reg.find_reg(0x02).value |= REG02_MTRREV;
+ dev->reg.find_reg(0x01).value &= ~REG01_SCAN;
+ sanei_genesys_set_triple(&dev->reg, REG_FEEDL, 65535);
+
+ /* sets frontend */
+ status = gl646_set_fe(dev, sensor, AFE_SET, settings.xres);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
+ DBGCOMPLETED;
+ return status;
+ }
+
+ /* write scan registers */
+ try {
+ status = sanei_genesys_bulk_write_register(dev, dev->reg);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to bulk write registers\n", __func__);
+ }
+ if (status != SANE_STATUS_GOOD)
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+
+ /* registers are restored to an iddl state, give up if no head to park */
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ DBG(DBG_proc, "%s: end \n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+
+ /* starts scan */
+ status = gl646_begin_scan(dev, sensor, &dev->reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: \n", __func__);
+ return status;
+ }
+
+ /* loop until head parked */
+ if (wait_until_home)
+ {
+ while (loop < 300) /* do not wait longer then 30 seconds */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: Failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ if (val & 0x08) /* home sensor */
+ {
+ DBG(DBG_info, "%s: reached home position\n", __func__);
+ DBG(DBG_proc, "%s: end\n", __func__);
+ sanei_genesys_sleep_ms(500);
+ return SANE_STATUS_GOOD;
+ }
+ sanei_genesys_sleep_ms(100);
+ ++loop;
+ }
+
+ /* when we come here then the scanner needed too much time for this, so we better stop the motor */
+ gl646_stop_motor (dev);
+ end_scan(dev, &dev->reg, SANE_TRUE, SANE_FALSE);
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+
+
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/**
+ * Automatically set top-left edge of the scan area by scanning an
+ * area at 300 dpi from very top of scanner
+ * @param dev device stucture describing the scanner
+ * @return SANE_STATUS_GOOD in cas of success, else failure code
+ */
+static SANE_Status
+gl646_search_start_position (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+ unsigned int resolution, x, y;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* we scan at 300 dpi */
+ resolution = get_closest_resolution(dev->model->ccd_type, 300, 1);
+
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, resolution);
+
+ /* fill settings for a gray level scan */
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::GRAY;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels = 600;
+ settings.lines = dev->model->search_lines;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* scan the desired area */
+ std::vector<uint8_t> data;
+ status = simple_scan(dev, sensor, settings, SANE_TRUE, SANE_TRUE, SANE_FALSE, data);
+
+ /* process data if scan is OK */
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: simple_scan failed\n", __func__);
+ DBGCOMPLETED;
+ return status;
+ }
+
+
+ /* handle stagger case : reorder gray data and thus loose some lines */
+ if (dev->current_setup.stagger > 0)
+ {
+ DBG(DBG_proc, "%s: 'un-staggering'\n", __func__);
+ for (y = 0; y < settings.lines - dev->current_setup.stagger; y++)
+ {
+ /* one point out of 2 is 'unaligned' */
+ for (x = 0; x < settings.pixels; x += 2)
+ {
+ data[y * settings.pixels + x] =
+ data[(y + dev->current_setup.stagger) * settings.pixels +
+ x];
+ }
+ }
+ /* correct line number */
+ settings.lines -= dev->current_setup.stagger;
+ }
+ if (DBG_LEVEL >= DBG_data)
+ {
+ sanei_genesys_write_pnm_file("gl646_search_position.pnm", data.data(), settings.depth, 1,
+ settings.pixels, settings.lines);
+ }
+
+ /* now search reference points on the data */
+ status =
+ sanei_genesys_search_reference_point (dev, sensor, data.data(),
+ sensor.CCD_start_xoffset,
+ resolution, settings.pixels,
+ settings.lines);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * internally overriden during effective calibration
+ * sets up register for coarse gain calibration
+ */
+static SANE_Status
+gl646_init_regs_for_coarse_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ (void) sensor;
+ (void) regs;
+
+ DBG(DBG_proc, "%s\n", __func__);
+ DBG(DBG_proc, "%s: end\n", __func__);
+
+ /* to make compilers happy ... */
+ if (!dev)
+ {
+ return SANE_STATUS_INVAL;
+ }
+
+ return SANE_STATUS_GOOD;
+}
+
+
+/**
+ * init registers for shading calibration
+ * we assume that scanner's head is on an area suiting shading calibration.
+ * We scan a full scan width area by the shading line number for the device
+ * at either at full sensor's resolution or half depending upon half_ccd
+ * @param dev scanner's device
+ * @return SANE_STATUS_GOOD if success, else error code
+ */
+static SANE_Status
+gl646_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ (void) regs;
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+ /* 1: no half_ccd, 2: use half number of pixels */
+ int half_ccd = 1;
+ int cksel = 1;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* fill settings for scan : always a color scan */
+ int channels = 3;
+
+ if (sensor.ccd_size_divisor > 1)
+ {
+ // when shading all (full width) line, we must adapt to half_ccd case
+ if (is_half_ccd(dev->model->ccd_type, dev->settings.xres, channels) == SANE_TRUE)
+ {
+ half_ccd = 2;
+ }
+ }
+
+ settings.scan_method = dev->settings.scan_method;
+ settings.scan_mode = dev->settings.scan_mode;
+ if (dev->model->is_cis == SANE_FALSE)
+ {
+ // FIXME: always a color scan, but why don't we set scan_mode to COLOR_SINGLE_PASS always?
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ }
+ settings.xres = sensor.optical_res / half_ccd;
+ cksel = get_cksel(dev->model->ccd_type, dev->settings.xres, channels);
+ settings.xres = settings.xres / cksel;
+ settings.yres = settings.xres;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * settings.xres) / sensor.optical_res;
+ dev->calib_lines = dev->model->shading_lines;
+ settings.lines = dev->calib_lines * (3 - half_ccd);
+ settings.depth = 16;
+ settings.color_filter = dev->settings.color_filter;
+
+ settings.disable_interpolation = dev->settings.disable_interpolation;
+ settings.threshold = dev->settings.threshold;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* keep account of the movement for final scan move */
+ dev->scanhead_position_in_steps += settings.lines;
+
+ /* we don't want top offset, but we need right margin to be the same
+ * than the one for the final scan */
+ status = setup_for_scan(dev, sensor, &dev->reg, settings, SANE_TRUE, SANE_FALSE, SANE_FALSE);
+
+ /* used when sending shading calibration data */
+ dev->calib_pixels = settings.pixels;
+ dev->calib_channels = dev->current_setup.channels;
+ if (dev->model->is_cis == SANE_FALSE)
+ {
+ dev->calib_channels = 3;
+ }
+
+ /* no shading */
+ dev->reg.find_reg(0x01).value &= ~REG01_DVDSET;
+ dev->reg.find_reg(0x02).value |= REG02_ACDCDIS; /* ease backtracking */
+ dev->reg.find_reg(0x02).value &= ~(REG02_FASTFED | REG02_AGOHOME);
+ dev->reg.find_reg(0x05).value &= ~REG05_GMMENB;
+ sanei_genesys_set_motor_power(dev->reg, false);
+
+ /* TODO another flag to setup regs ? */
+ /* enforce needed LINCNT, getting rid of extra lines for color reordering */
+ if (dev->model->is_cis == SANE_FALSE)
+ {
+ sanei_genesys_set_triple(&dev->reg, REG_LINCNT, dev->calib_lines);
+ }
+ else
+ {
+ sanei_genesys_set_triple(&dev->reg, REG_LINCNT, dev->calib_lines * 3);
+ }
+
+ /* copy reg to calib_reg */
+ dev->calib_reg = dev->reg;
+
+ /* this is an hack to make calibration cache working .... */
+ /* if we don't do this, cache will be identified at the shading calibration
+ * dpi which is different from calibration one */
+ dev->current_setup.xres = dev->settings.xres;
+ DBG(DBG_info, "%s:\n\tdev->settings.xres=%d\n\tdev->settings.yres=%d\n", __func__,
+ dev->settings.xres, dev->settings.yres);
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+static bool gl646_needs_home_before_init_regs_for_scan(Genesys_Device* dev)
+{
+ return (dev->scanhead_position_in_steps > 0 &&
+ dev->settings.scan_method == ScanMethod::FLATBED);
+}
+
+/**
+ * set up registers for the actual scan. The scan's parameters are given
+ * through the device settings. It allocates the scan buffers.
+ */
+static SANE_Status
+gl646_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBGSTART;
+
+ RIE(setup_for_scan(dev, sensor, &dev->reg, dev->settings, SANE_FALSE, SANE_TRUE, SANE_TRUE));
+
+ /* gamma is only enabled at final scan time */
+ if (dev->settings.depth < 16)
+ dev->reg.find_reg(0x05).value |= REG05_GMMENB;
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * set up registers for the actual scan. The scan's parameters are given
+ * through the device settings. It allocates the scan buffers.
+ * @param dev scanner's device
+ * @param regs registers to set up
+ * @param settings settings of scan
+ * @param split SANE_TRUE if move to scan area is split from scan, SANE_FALSE is
+ * scan first moves to area
+ * @param xcorrection take x geometry correction into account (fixed and detected offsets)
+ * @param ycorrection take y geometry correction into account
+ */
+static SANE_Status
+setup_for_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set *regs,
+ Genesys_Settings settings,
+ SANE_Bool split,
+ SANE_Bool xcorrection,
+ SANE_Bool ycorrection)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ SANE_Int depth;
+ int channels;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
+
+ if (settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ {
+ channels = 3;
+ }
+ else
+ {
+ channels = 1;
+ }
+
+ depth=settings.depth;
+ if (settings.scan_mode == ScanColorMode::LINEART)
+ {
+ if (settings.dynamic_lineart == SANE_TRUE)
+ {
+ depth = 8;
+ }
+ else
+ {
+ /* XXX STEF XXX : why does the common layer never send depth=1 ? */
+ depth = 1;
+ }
+ }
+
+ // compute distance to move
+ float move = 0;
+ // XXX STEF XXX MD5345 -> optical_ydpi, other base_ydpi => half/full step ? */
+ if (split == SANE_FALSE) {
+ if (dev->model->is_sheetfed == SANE_FALSE) {
+ if (ycorrection == SANE_TRUE) {
+ move = SANE_UNFIX(dev->model->y_offset);
+ }
+
+ // add tl_y to base movement
+ }
+ move += settings.tl_y;
+
+ if (move < 0) {
+ DBG(DBG_error, "%s: overriding negative move value %f\n", __func__, move);
+ move = 0;
+ }
+ }
+ move = (move * dev->motor.optical_ydpi) / MM_PER_INCH;
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
+
+ float start = settings.tl_x;
+ if (xcorrection) {
+ if (settings.scan_method == ScanMethod::FLATBED) {
+ start += SANE_UNFIX(dev->model->x_offset);
+ } else {
+ start += SANE_UNFIX(dev->model->x_offset_ta);
+ }
+ }
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ SetupParams params;
+ params.xres = settings.xres;
+ params.yres = settings.yres;
+ params.startx = start;
+ params.starty = move;
+ params.pixels = settings.pixels;
+ params.lines = settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = settings.scan_mode;
+ params.color_filter = settings.color_filter;
+ params.flags = 0;
+ if (settings.scan_method == ScanMethod::TRANSPARENCY) {
+ params.flags |= SCAN_FLAG_USE_XPA;
+ }
+
+ uint16_t slope_table0[256] = {};
+ uint16_t slope_table1[256] = {};
+
+ /* set up correct values for scan (gamma and shading enabled) */
+ status = gl646_setup_registers(dev, sensor, regs, params, slope_table0, slope_table1,
+ xcorrection);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed setup registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* send computed slope tables */
+ status =
+ gl646_send_slope_table (dev, 0, slope_table0,
+ sanei_genesys_read_reg_from_set (regs, 0x21));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send slope table 0: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status =
+ gl646_send_slope_table (dev, 1, slope_table1,
+ sanei_genesys_read_reg_from_set (regs, 0x6b));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send slope table 1: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * this function sen gamm table to ASIC
+ */
+static SANE_Status
+gl646_send_gamma_table (Genesys_Device * dev, const Genesys_Sensor& sensor)
+{
+ int size;
+ int address;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int bits;
+
+ DBGSTART;
+
+ /* gamma table size */
+ if (dev->model->flags & GENESYS_FLAG_14BIT_GAMMA)
+ {
+ size = 16384;
+ bits = 14;
+ }
+ else
+ {
+ size = 4096;
+ bits = 12;
+ }
+
+ /* allocate temporary gamma tables: 16 bits words, 3 channels */
+ std::vector<uint8_t> gamma(size * 2 * 3);
+
+ RIE(sanei_genesys_generate_gamma_buffer(dev, sensor, bits, size-1, size, gamma.data()));
+
+ /* table address */
+ switch (dev->reg.find_reg(0x05).value >> 6)
+ {
+ case 0: /* 600 dpi */
+ address = 0x09000;
+ break;
+ case 1: /* 1200 dpi */
+ address = 0x11000;
+ break;
+ case 2: /* 2400 dpi */
+ address = 0x20000;
+ break;
+ default:
+ return SANE_STATUS_INVAL;
+ }
+
+ /* send address */
+ status = sanei_genesys_set_buffer_address (dev, address);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* send data */
+ status = sanei_genesys_bulk_write_data(dev, 0x3c, gamma.data(), size * 2 * 3);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send gamma table: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/** @brief this function does the led calibration.
+ * this function does the led calibration by scanning one line of the calibration
+ * area below scanner's top on white strip. The scope of this function is
+ * currently limited to the XP200
+ */
+static SANE_Status
+gl646_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
+{
+ (void) regs;
+ int total_size;
+ unsigned int i, j;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int val;
+ unsigned int channels;
+ int avg[3], avga, avge;
+ int turn;
+ uint16_t expr, expg, expb;
+ Genesys_Settings settings;
+ SANE_Int resolution;
+
+ SANE_Bool acceptable = SANE_FALSE;
+
+ DBG(DBG_proc, "%s\n", __func__);
+ if (!dev->model->is_cis)
+ {
+ DBG(DBG_proc, "%s: not a cis scanner, nothing to do...\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+
+ /* get led calibration resolution */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ {
+ channels = 3;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ }
+ else
+ {
+ channels = 1;
+ settings.scan_mode = ScanColorMode::GRAY;
+ }
+ resolution = get_closest_resolution(dev->model->ccd_type, sensor.optical_res, channels);
+
+ /* offset calibration is always done in color mode */
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ settings.lines = 1;
+ settings.depth = 16;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* colors * bytes_per_color * scan lines */
+ total_size = settings.pixels * channels * 2 * 1;
+
+ std::vector<uint8_t> line(total_size);
+
+/*
+ we try to get equal bright leds here:
+
+ loop:
+ average per color
+ adjust exposure times
+
+ Sensor_Master uint8_t regs_0x10_0x15[6];
+ */
+ expr = sensor.exposure.red;
+ expg = sensor.exposure.green;
+ expb = sensor.exposure.blue;
+
+ turn = 0;
+
+ do
+ {
+ sensor.exposure.red = expr;
+ sensor.exposure.green = expg;
+ sensor.exposure.blue = expb;
+
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+
+ status = simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char fn[30];
+ snprintf(fn, 30, "gl646_led_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), 16, channels, settings.pixels, 1);
+ }
+
+ acceptable = SANE_TRUE;
+
+ for (j = 0; j < channels; j++)
+ {
+ avg[j] = 0;
+ for (i = 0; i < settings.pixels; i++)
+ {
+ if (dev->model->is_cis)
+ val =
+ line[i * 2 + j * 2 * settings.pixels + 1] * 256 +
+ line[i * 2 + j * 2 * settings.pixels];
+ else
+ val =
+ line[i * 2 * channels + 2 * j + 1] * 256 +
+ line[i * 2 * channels + 2 * j];
+ avg[j] += val;
+ }
+
+ avg[j] /= settings.pixels;
+ }
+
+ DBG(DBG_info, "%s: average: %d,%d,%d\n", __func__, avg[0], avg[1], avg[2]);
+
+ acceptable = SANE_TRUE;
+
+ if (!acceptable)
+ {
+ avga = (avg[0] + avg[1] + avg[2]) / 3;
+ expr = (expr * avga) / avg[0];
+ expg = (expg * avga) / avg[1];
+ expb = (expb * avga) / avg[2];
+
+ /* keep exposure time in a working window */
+ avge = (expr + expg + expb) / 3;
+ if (avge > 0x2000)
+ {
+ expr = (expr * 0x2000) / avge;
+ expg = (expg * 0x2000) / avge;
+ expb = (expb * 0x2000) / avge;
+ }
+ if (avge < 0x400)
+ {
+ expr = (expr * 0x400) / avge;
+ expg = (expg * 0x400) / avge;
+ expb = (expb * 0x400) / avge;
+ }
+ }
+
+ turn++;
+
+ }
+ while (!acceptable && turn < 100);
+
+ DBG(DBG_info,"%s: acceptable exposure: 0x%04x,0x%04x,0x%04x\n", __func__, expr, expg, expb);
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * 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)
+{
+ unsigned int i, j, k, average, count;
+ unsigned int avg[3];
+ uint8_t val;
+
+ /* computes average value on black margin */
+ for (k = 0; k < channels; k++)
+ {
+ avg[k] = 0;
+ count = 0;
+ for (i = 0; i < lines; i++)
+ {
+ for (j = 0; j < black; j++)
+ {
+ val = data[i * channels * pixels + j + k];
+ avg[k] += val;
+ count++;
+ }
+ }
+ if (count)
+ avg[k] /= count;
+ DBG(DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
+ }
+ average = 0;
+ for (i = 0; i < channels; i++)
+ average += avg[i];
+ average /= channels;
+ DBG(DBG_info, "%s: average = %d\n", __func__, average);
+ return average;
+}
+
+
+/** @brief calibration for AD frontend devices
+ * we do simple scan until all black_pixels are higher than 0,
+ * raising offset at each turn.
+ */
+static SANE_Status
+ad_fe_offset_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ unsigned int channels;
+ int pass = 0;
+ SANE_Int resolution;
+ Genesys_Settings settings;
+ unsigned int x, y, adr, min;
+ unsigned int bottom, black_pixels;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+ channels = 3;
+ resolution = get_closest_resolution(dev->model->ccd_type, sensor.optical_res, channels);
+ black_pixels =
+ (sensor.black_pixels * resolution) / sensor.optical_res;
+ DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
+
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ settings.lines = CALIBRATION_LINES;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* scan first line of data with no gain */
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
+
+ std::vector<uint8_t> line;
+
+ /* scan with no move */
+ bottom = 1;
+ do
+ {
+ pass++;
+ dev->frontend.set_offset(0, bottom);
+ dev->frontend.set_offset(1, bottom);
+ dev->frontend.set_offset(2, bottom);
+ status =
+ simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char title[30];
+ snprintf(title, 30, "gl646_offset%03d.pnm", (int)bottom);
+ sanei_genesys_write_pnm_file (title, line.data(), 8, channels,
+ settings.pixels, settings.lines);
+ }
+
+ min = 0;
+ for (y = 0; y < settings.lines; y++)
+ {
+ for (x = 0; x < black_pixels; x++)
+ {
+ adr = (x + y * settings.pixels) * channels;
+ if (line[adr] > min)
+ min = line[adr];
+ if (line[adr + 1] > min)
+ min = line[adr + 1];
+ if (line[adr + 2] > min)
+ min = line[adr + 2];
+ }
+ }
+
+ DBG(DBG_io2, "%s: pass=%d, min=%d\n", __func__, pass, min);
+ bottom++;
+ }
+ while (pass < 128 && min == 0);
+ if (pass == 128)
+ {
+ DBG(DBG_error, "%s: failed to find correct offset\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+#define DARK_TARGET 8
+/**
+ * This function does the offset calibration by scanning one line of the calibration
+ * area below scanner's top. There is a black margin and the remaining is white.
+ * genesys_search_start() must have been called so that the offsets and margins
+ * are already known.
+ * @param dev scanner's device
+ * @return SANE_STATUS_GOOD if success, else error code is failure
+*/
+static SANE_Status
+gl646_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ (void) regs;
+ SANE_Status status = SANE_STATUS_GOOD;
+ unsigned int channels;
+ int pass = 0, avg;
+ SANE_Int resolution;
+ Genesys_Settings settings;
+ int topavg, bottomavg;
+ int top, bottom, black_pixels;
+
+ /* Analog Device fronted have a different calibration */
+ if (dev->model->dac_type == DAC_AD_XP200)
+ {
+ return ad_fe_offset_calibration (dev, sensor);
+ }
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* setup for a RGB scan, one full sensor's width line */
+ /* resolution is the one from the final scan */
+ channels = 3;
+ if (dev->settings.xres > sensor.optical_res) {
+ resolution = get_closest_resolution(dev->model->ccd_type, sensor.optical_res, channels);
+ } else {
+ resolution = get_closest_resolution(dev->model->ccd_type, dev->settings.xres, channels);
+ }
+ black_pixels =
+ (sensor.black_pixels * resolution) / sensor.optical_res;
+ DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
+
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ settings.lines = CALIBRATION_LINES;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* scan first line of data with no gain, but with offset from
+ * last calibration */
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
+
+ /* scan with no move */
+ bottom = 90;
+ dev->frontend.set_offset(0, bottom);
+ dev->frontend.set_offset(1, bottom);
+ dev->frontend.set_offset(2, bottom);
+
+ std::vector<uint8_t> first_line, second_line;
+
+ status = simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, first_line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char title[30];
+ snprintf(title, 30, "gl646_offset%03d.pnm", bottom);
+ sanei_genesys_write_pnm_file(title, first_line.data(), 8, channels,
+ settings.pixels, settings.lines);
+ }
+ bottomavg = dark_average(first_line.data(), settings.pixels, settings.lines, channels,
+ black_pixels);
+ DBG(DBG_io2, "%s: bottom avg=%d\n", __func__, bottomavg);
+
+ /* now top value */
+ top = 231;
+ dev->frontend.set_offset(0, top);
+ dev->frontend.set_offset(1, top);
+ dev->frontend.set_offset(2, top);
+ status = simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, second_line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char title[30];
+ snprintf(title, 30, "gl646_offset%03d.pnm", top);
+ sanei_genesys_write_pnm_file (title, second_line.data(), 8, channels,
+ settings.pixels, settings.lines);
+ }
+ topavg = dark_average(second_line.data(), settings.pixels, settings.lines, channels,
+ black_pixels);
+ DBG(DBG_io2, "%s: top avg=%d\n", __func__, topavg);
+
+ /* loop until acceptable level */
+ while ((pass < 32) && (top - bottom > 1))
+ {
+ pass++;
+
+ /* settings for new scan */
+ dev->frontend.set_offset(0, (top + bottom) / 2);
+ dev->frontend.set_offset(1, (top + bottom) / 2);
+ dev->frontend.set_offset(2, (top + bottom) / 2);
+
+ /* scan with no move */
+ status = simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, second_line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char title[30];
+ snprintf(title, 30, "gl646_offset%03d.pnm", dev->frontend.get_offset(1));
+ sanei_genesys_write_pnm_file (title, second_line.data(), 8, channels,
+ settings.pixels, settings.lines);
+ }
+
+ avg =
+ dark_average (second_line.data(), settings.pixels, settings.lines, channels,
+ black_pixels);
+ DBG(DBG_info, "%s: avg=%d offset=%d\n", __func__, avg, dev->frontend.get_offset(1));
+
+ /* compute new boundaries */
+ if (topavg == avg)
+ {
+ topavg = avg;
+ top = dev->frontend.get_offset(1);
+ }
+ else
+ {
+ bottomavg = avg;
+ bottom = dev->frontend.get_offset(1);
+ }
+ }
+
+ /* in case of debug do a final scan to get result */
+ if (DBG_LEVEL >= DBG_data)
+ {
+ status = simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, second_line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan final line\n", __func__);
+ return status;
+ }
+ sanei_genesys_write_pnm_file("gl646_offset-final.pnm", second_line.data(), 8, channels,
+ settings.pixels, settings.lines);
+ }
+
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+/** @brief gain calibration for Analog Device frontends
+ * Alternative coarse gain calibration
+ */
+static SANE_Status
+ad_fe_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
+{
+ (void) regs;
+ unsigned int i, channels, val;
+ unsigned int size, count, resolution, pass;
+ SANE_Status status = SANE_STATUS_GOOD;
+ float average;
+ Genesys_Settings settings;
+ char title[32];
+
+ DBGSTART;
+
+ /* setup for a RGB scan, one full sensor's width line */
+ /* resolution is the one from the final scan */
+ channels = 3;
+ resolution = get_closest_resolution(dev->model->ccd_type, dpi, channels);
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ settings.lines = CALIBRATION_LINES;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ size = channels * settings.pixels * settings.lines;
+
+ /* start gain value */
+ dev->frontend.set_gain(0, 1);
+ dev->frontend.set_gain(1, 1);
+ dev->frontend.set_gain(2, 1);
+
+ average = 0;
+ pass = 0;
+
+ std::vector<uint8_t> line;
+
+ /* loop until each channel raises to acceptable level */
+ while ((average < sensor.gain_white_ref) && (pass < 30))
+ {
+ /* scan with no move */
+ status =
+ simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+
+ /* log scanning data */
+ if (DBG_LEVEL >= DBG_data)
+ {
+ sprintf (title, "gl646_alternative_gain%02d.pnm", (int)pass);
+ sanei_genesys_write_pnm_file(title, line.data(), 8, channels, settings.pixels,
+ settings.lines);
+ }
+ pass++;
+
+ /* computes white average */
+ average = 0;
+ count = 0;
+ for (i = 0; i < size; i++)
+ {
+ val = line[i];
+ average += val;
+ count++;
+ }
+ average = average / count;
+
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ // adjusts gain for the channel
+ if (average < sensor.gain_white_ref) {
+ gain0 += 1;
+ }
+
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
+
+ DBG(DBG_proc, "%s: average = %.2f, gain = %d\n", __func__, average, gain0);
+ }
+
+ DBG(DBG_info, "%s: gains=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_gain(0),
+ dev->frontend.get_gain(1),
+ dev->frontend.get_gain(2));
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * Alternative coarse gain calibration
+ * this on uses the settings from offset_calibration. First scan moves so
+ * we can go to calibration area for XPA.
+ * @param dev device for scan
+ * @param dpi resolutnio to calibrate at
+ */
+static SANE_Status
+gl646_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
+{
+ unsigned int i, j, k, channels, val, maximum, idx;
+ unsigned int count, resolution, pass;
+ SANE_Status status = SANE_STATUS_GOOD;
+ float average[3];
+ Genesys_Settings settings;
+ char title[32];
+
+ if (dev->model->ccd_type == CIS_XP200)
+ {
+ return ad_fe_coarse_gain_calibration (dev, sensor, regs, sensor.optical_res);
+ }
+ DBGSTART;
+
+ /* setup for a RGB scan, one full sensor's width line */
+ /* resolution is the one from the final scan */
+ channels = 3;
+
+ /* we are searching a sensor resolution */
+ if (dpi > sensor.optical_res) {
+ resolution = sensor.optical_res;
+ } else {
+ resolution = get_closest_resolution(dev->model->ccd_type, dev->settings.xres, channels);
+ }
+
+ settings.scan_method = dev->settings.scan_method;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_y = 0;
+ if (settings.scan_method == ScanMethod::FLATBED)
+ {
+ settings.tl_x = 0;
+ settings.pixels = (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ }
+ else
+ {
+ settings.tl_x = SANE_UNFIX (dev->model->x_offset_ta);
+ settings.pixels = (SANE_UNFIX (dev->model->x_size_ta) * resolution) / MM_PER_INCH;
+ }
+ settings.lines = CALIBRATION_LINES;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* start gain value */
+ dev->frontend.set_gain(0, 1);
+ dev->frontend.set_gain(1, 1);
+ dev->frontend.set_gain(2, 1);
+
+ if (channels > 1)
+ {
+ average[0] = 0;
+ average[1] = 0;
+ average[2] = 0;
+ idx = 0;
+ }
+ else
+ {
+ average[0] = 255;
+ average[1] = 255;
+ average[2] = 255;
+ switch (dev->settings.color_filter) {
+ case ColorFilter::RED: idx = 0; break;
+ case ColorFilter::GREEN: idx = 1; break;
+ case ColorFilter::BLUE: idx = 2; break;
+ default: idx = 0; break; // should not happen
+ }
+ average[idx] = 0;
+ }
+ pass = 0;
+
+ std::vector<uint8_t> line;
+
+ /* loop until each channel raises to acceptable level */
+ while (((average[0] < sensor.gain_white_ref)
+ || (average[1] < sensor.gain_white_ref)
+ || (average[2] < sensor.gain_white_ref)) && (pass < 30))
+ {
+ /* scan with no move */
+ status =
+ simple_scan(dev, sensor, settings, SANE_FALSE, SANE_TRUE, SANE_FALSE, line);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to scan first line\n", __func__);
+ return status;
+ }
+
+ /* log scanning data */
+ if (DBG_LEVEL >= DBG_data)
+ {
+ sprintf (title, "gl646_gain%02d.pnm", (int)pass);
+ sanei_genesys_write_pnm_file(title, line.data(), 8, channels, settings.pixels,
+ settings.lines);
+ }
+ pass++;
+
+ /* average high level for each channel and compute gain
+ to reach the target code
+ we only use the central half of the CCD data */
+ for (k = idx; k < idx + channels; k++)
+ {
+ /* we find the maximum white value, so we can deduce a threshold
+ to average white values */
+ maximum = 0;
+ for (i = 0; i < settings.lines; i++)
+ {
+ for (j = 0; j < settings.pixels; j++)
+ {
+ val = line[i * channels * settings.pixels + j + k];
+ if (val > maximum)
+ maximum = val;
+ }
+ }
+
+ /* threshold */
+ maximum *= 0.9;
+
+ /* computes white average */
+ average[k] = 0;
+ count = 0;
+ for (i = 0; i < settings.lines; i++)
+ {
+ for (j = 0; j < settings.pixels; j++)
+ {
+ /* averaging only white points allow us not to care about dark margins */
+ val = line[i * channels * settings.pixels + j + k];
+ if (val > maximum)
+ {
+ average[k] += val;
+ count++;
+ }
+ }
+ }
+ average[k] = average[k] / count;
+
+ /* adjusts gain for the channel */
+ if (average[k] < sensor.gain_white_ref)
+ dev->frontend.set_gain(k, dev->frontend.get_gain(k) + 1);
+
+ DBG(DBG_proc, "%s: channel %d, average = %.2f, gain = %d\n", __func__, k, average[k],
+ dev->frontend.get_gain(k));
+ }
+ }
+
+ if (channels < 3) {
+ dev->frontend.set_gain(1, dev->frontend.get_gain(0));
+ dev->frontend.set_gain(2, dev->frontend.get_gain(0));
+ }
+
+ DBG(DBG_info, "%s: gains=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_gain(0),
+ dev->frontend.get_gain(1),
+ dev->frontend.get_gain(2));
+ DBGCOMPLETED;
+ return status;
+}
+
+/**
+ * sets up the scanner's register for warming up. We scan 2 lines without moving.
+ *
+ */
+static SANE_Status
+gl646_init_regs_for_warmup (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * local_reg,
+ int *channels, int *total_size)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+ int resolution, lines;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ dev->frontend = dev->frontend_initial;
+
+ resolution = get_closest_resolution(dev->model->ccd_type, 300, 1);
+
+ /* set up for a half width 2 lines gray scan without moving */
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::GRAY;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * resolution) / sensor.optical_res;
+ settings.lines = 2;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* setup for scan */
+ status = setup_for_scan(dev, sensor, &dev->reg, settings, SANE_TRUE, SANE_FALSE, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: setup_for_scan failed (%s)\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* we are not going to move, so clear these bits */
+ dev->reg.find_reg(0x02).value &= ~(REG02_FASTFED | REG02_AGOHOME);
+
+ /* don't enable any correction for this scan */
+ dev->reg.find_reg(0x01).value &= ~REG01_DVDSET;
+
+ /* copy to local_reg */
+ *local_reg = dev->reg;
+
+ /* turn off motor during this scan */
+ sanei_genesys_set_motor_power(*local_reg, false);
+
+ /* returned value to higher level warmup function */
+ *channels = 1;
+ uint32_t value = 0;
+ sanei_genesys_get_triple(local_reg, REG_LINCNT, &value);
+ lines = value + 1;
+ *total_size = lines * settings.pixels;
+
+ /* now registers are ok, write them to scanner */
+ RIE (gl646_set_fe(dev, sensor, AFE_SET, settings.xres));
+ RIE(sanei_genesys_bulk_write_register(dev, *local_reg));
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/*
+ * this function moves head without scanning, forward, then backward
+ * so that the head goes to park position.
+ * as a by-product, also check for lock
+ */
+static SANE_Status
+gl646_repark_head (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+ unsigned int expected, steps;
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = get_closest_resolution(dev->model->ccd_type, 75, 1);
+ settings.yres = settings.xres;
+ settings.tl_x = 0;
+ settings.tl_y = 5;
+ settings.pixels = 600;
+ settings.lines = 4;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ const auto& sensor = sanei_genesys_find_sensor(dev, settings.xres);
+
+ status = setup_for_scan(dev, sensor, &dev->reg, settings, SANE_FALSE, SANE_FALSE, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* TODO seems wrong ... no effective scan */
+ dev->reg.find_reg(0x01).value &= ~REG01_SCAN;
+
+ status = sanei_genesys_bulk_write_register(dev, dev->reg);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* start scan */
+ status = gl646_begin_scan(dev, sensor, &dev->reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: \n", __func__);
+ return status;
+ }
+
+ uint32_t value32 = 0;
+ sanei_genesys_get_triple(&dev->reg, REG_FEEDL, &value32);
+ expected = value32;
+ do
+ {
+ sanei_genesys_sleep_ms(100);
+ status = sanei_genesys_read_feed_steps (dev, &steps);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read feed steps: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ }
+ while (steps < expected);
+
+ /* toggle motor flag, put an huge step number and redo move backward */
+ status = gl646_slow_back_home (dev, 1);
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+/* *
+ * initialize ASIC : registers, motor tables, and gamma tables
+ * then ensure scanner's head is at home
+ * @param dev device description of the scanner to initailize
+ * @return SANE_STATUS_GOOD if success, error code if failure
+ */
+static SANE_Status
+gl646_init (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ struct timeval tv;
+ uint8_t cold = 0, val = 0;
+ uint32_t addr = 0xdead;
+ size_t len;
+
+ DBG_INIT ();
+ DBG(DBG_proc, "%s: start\n", __func__);
+
+ /* to detect real power up condition, we write to REG41
+ * with pwrbit set, then read it back. When scanner is cold (just replugged)
+ * PWRBIT will be set in the returned value
+ */
+ RIE (sanei_genesys_get_status (dev, &cold));
+ DBG(DBG_info, "%s: status=0x%02x\n", __func__, cold);
+ cold = !(cold & REG41_PWRBIT);
+ if (cold)
+ {
+ DBG(DBG_info, "%s: device is cold\n", __func__);
+ }
+ else
+ {
+ DBG(DBG_info, "%s: device is hot\n", __func__);
+ }
+
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ /* if scanning session hasn't been initialized, set it up */
+ if (!dev->already_initialized)
+ {
+ dev->dark_average_data.clear();
+ dev->white_average_data.clear();
+
+ dev->settings.color_filter = ColorFilter::GREEN;
+ gettimeofday (&tv, NULL);
+ dev->init_date = tv.tv_sec;
+
+ /* Set default values for registers */
+ gl646_init_regs (dev);
+
+ /* Init shading data */
+ RIE (sanei_genesys_init_shading_data(dev, sensor, sensor.sensor_pixels));
+
+ /* initial calibration reg values */
+ dev->calib_reg = dev->reg;
+ }
+
+ /* execute physical unit init only if cold */
+ if (cold)
+ {
+ DBG(DBG_info, "%s: device is cold\n", __func__);
+
+ val = 0x04;
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_INIT, INDEX, 1, &val);
+
+ /* ASIC reset */
+ RIE (sanei_genesys_write_register (dev, 0x0e, 0x00));
+ sanei_genesys_sleep_ms(100);
+
+ /* Write initial registers */
+ RIE(sanei_genesys_bulk_write_register(dev, dev->reg));
+
+ /* Test ASIC and RAM */
+ if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT))
+ {
+ RIE (gl646_asic_test (dev));
+ }
+
+ /* send gamma tables if needed */
+ status = gl646_send_gamma_table(dev, sensor);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send generic gamma tables: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ /* Set powersaving (default = 15 minutes) */
+ RIE (gl646_set_powersaving (dev, 15));
+ } /* end if cold */
+
+ /* Set analog frontend */
+ RIE (gl646_set_fe(dev, sensor, AFE_INIT, 0));
+
+ /* GPO enabling for XP200 */
+ if (dev->model->ccd_type == CIS_XP200)
+ {
+ sanei_genesys_write_register (dev, 0x68, dev->gpo.enable[0]);
+ sanei_genesys_write_register (dev, 0x69, dev->gpo.enable[1]);
+
+ // enable GPIO
+ gl646_gpio_output_enable(dev->usb_dev, 6);
+
+ // writes 0 to GPIO
+ gl646_gpio_write(dev->usb_dev, 0);
+
+ // clear GPIO enable
+ gl646_gpio_output_enable(dev->usb_dev, 0);
+
+ sanei_genesys_write_register (dev, 0x66, 0x10);
+ sanei_genesys_write_register (dev, 0x66, 0x00);
+ sanei_genesys_write_register (dev, 0x66, 0x10);
+ }
+
+ /* MD6471/G2410 and XP200 read/write data from an undocumented memory area which
+ * is after the second slope table */
+ if (dev->model->gpo_type != GPO_HP3670
+ && dev->model->gpo_type != GPO_HP2400)
+ {
+ switch (sensor.optical_res)
+ {
+ case 600:
+ addr = 0x08200;
+ break;
+ case 1200:
+ addr = 0x10200;
+ break;
+ case 2400:
+ addr = 0x1fa00;
+ break;
+ }
+ status = sanei_genesys_set_buffer_address (dev, addr);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set up control address\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+ sanei_usb_set_timeout (2 * 1000);
+ len = 6;
+ status = gl646_bulk_read_data (dev, 0x45, dev->control, len);
+ /* for some reason, read fails here for MD6471, HP2300 and XP200
+ * one time out of 2 scanimage launches
+ */
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_warn, "%s: failed to read control\n", __func__);
+ status = gl646_bulk_read_data (dev, 0x45, dev->control, len);
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_warn, "%s: failed to read control\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+ else
+ {
+ DBG(DBG_info, "%s: control read=0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x\n", __func__,
+ dev->control[0], dev->control[1], dev->control[2], dev->control[3], dev->control[4],
+ dev->control[5]);
+ }
+ sanei_usb_set_timeout (30 * 1000);
+ }
+ else
+ /* HP2400 and HP3670 case */
+ {
+ dev->control[0] = 0x00;
+ dev->control[1] = 0x00;
+ dev->control[2] = 0x01;
+ dev->control[3] = 0x00;
+ dev->control[4] = 0x00;
+ dev->control[5] = 0x00;
+ }
+
+ /* ensure head is correctly parked, and check lock */
+ if (dev->model->is_sheetfed == SANE_FALSE)
+ {
+ if (dev->model->flags & GENESYS_FLAG_REPARK)
+ {
+ status = gl646_repark_head (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ if (status == SANE_STATUS_INVAL)
+ {
+ DBG(DBG_error0, "Your scanner is locked. Please move the lock switch to the "
+ "unlocked position\n");
+ return SANE_STATUS_JAMMED;
+ }
+ else
+ DBG(DBG_error, "%s: gl646_repark_head failed: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ else
+ {
+ RIE (gl646_slow_back_home (dev, SANE_TRUE));
+ }
+ }
+
+ /* here session and device are initialized */
+ dev->already_initialized = SANE_TRUE;
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
+static
+SANE_Status
+gl646_move_to_ta (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBGSTART;
+ if (simple_move (dev, SANE_UNFIX (dev->model->y_offset_calib_ta)) !=
+ SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to move to calibration area\n", __func__);
+ return status;
+ }
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/**
+ * Does a simple scan: ie no line reordering and avanced data buffering and
+ * shading correction. Memory for data is allocated in this function
+ * and must be freed by caller.
+ * @param dev device of the scanner
+ * @param settings parameters of the scan
+ * @param move SANE_TRUE if moving during scan
+ * @param forward SANE_TRUE if moving forward during scan
+ * @param shading SANE_TRUE to enable shading correction
+ * @param data pointer for the data
+ */
+static SANE_Status
+simple_scan (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Settings settings, SANE_Bool move,
+ SANE_Bool forward, SANE_Bool shading, std::vector<uint8_t>& data)
+{
+ SANE_Status status = SANE_STATUS_INVAL;
+ unsigned int size, lines, x, y, bpp;
+ SANE_Bool empty, split;
+ int count;
+ uint8_t val;
+
+ DBG(DBG_proc, "%s: starting\n", __func__);
+ DBG(DBG_io, "%s: move=%d, forward=%d, shading=%d\n", __func__, move, forward, shading);
+
+ /* round up to multiple of 3 in case of CIS scanner */
+ if (dev->model->is_cis == SANE_TRUE)
+ {
+ settings.lines = ((settings.lines + 2) / 3) * 3;
+ }
+
+ /* setup for move then scan */
+ if (move == SANE_TRUE && settings.tl_y > 0)
+ {
+ split = SANE_FALSE;
+ }
+ else
+ {
+ split = SANE_TRUE;
+ }
+ status = setup_for_scan(dev, sensor, &dev->reg, settings, split, SANE_FALSE, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: setup_for_scan failed (%s)\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* allocate memory fo scan : LINCNT may have been adjusted for CCD reordering */
+ if (dev->model->is_cis == SANE_TRUE)
+ {
+ uint32_t value = 0;
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &value);
+ lines = value / 3;
+ }
+ else
+ {
+ uint32_t value = 0;
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &value);
+ lines = value + 1;
+ }
+ size = lines * settings.pixels;
+ if (settings.depth == 16)
+ bpp = 2;
+ else
+ bpp = 1;
+ size *= bpp;
+ if (settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ size *= 3;
+ data.clear();
+ data.resize(size);
+
+ DBG(DBG_io, "%s: allocated %d bytes of memory for %d lines\n", __func__, size, lines);
+
+ /* put back real line number in settings */
+ settings.lines = lines;
+
+ /* initialize frontend */
+ status = gl646_set_fe(dev, sensor, AFE_SET, settings.xres);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* no shading correction and not watch dog for simple scan */
+ dev->reg.find_reg(0x01).value &= ~(REG01_DVDSET | REG01_DOGENB);
+ if (shading == SANE_TRUE)
+ {
+ dev->reg.find_reg(0x01).value |= REG01_DVDSET;
+ }
+
+ /* enable gamma table for the scan */
+ dev->reg.find_reg(0x05).value |= REG05_GMMENB;
+
+ /* one table movement for simple scan */
+ dev->reg.find_reg(0x02).value &= ~REG02_FASTFED;
+
+ if (move == SANE_FALSE)
+ {
+ sanei_genesys_set_motor_power(dev->reg, false);
+
+ /* no automatic go home if no movement */
+ dev->reg.find_reg(0x02).value &= ~REG02_AGOHOME;
+ }
+ if (forward == SANE_FALSE)
+ {
+ dev->reg.find_reg(0x02).value |= REG02_MTRREV;
+ }
+ else
+ {
+ dev->reg.find_reg(0x02).value &= ~REG02_MTRREV;
+ }
+
+ /* no automatic go home when using XPA */
+ if (settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ dev->reg.find_reg(0x02).value &= ~REG02_AGOHOME;
+ }
+
+ /* write scan registers */
+ status = sanei_genesys_bulk_write_register(dev, dev->reg);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* starts scan */
+ status = gl646_begin_scan(dev, sensor, &dev->reg, move);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: \n", __func__);
+ return status;
+ }
+
+ /* wait for buffers to be filled */
+ count = 0;
+ do
+ {
+ sanei_genesys_sleep_ms(10);
+ RIE (sanei_genesys_get_status (dev, &val));
+ if (DBG_LEVEL > DBG_info)
+ {
+ print_status (val);
+ }
+ RIE (sanei_genesys_test_buffer_empty (dev, &empty));
+ count++;
+ }
+ while (empty && count < 1000);
+ if (count == 1000)
+ {
+ DBG(DBG_error, "%s: failed toread data\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ /* now we're on target, we can read data */
+ status = sanei_genesys_read_data_from_scanner (dev, data.data(), size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* in case of CIS scanner, we must reorder data */
+ if (dev->model->is_cis == SANE_TRUE
+ && settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ {
+ /* alloc one line sized working buffer */
+ std::vector<uint8_t> buffer(settings.pixels * 3 * bpp);
+
+ /* reorder one line of data and put it back to buffer */
+ if (bpp == 1)
+ {
+ for (y = 0; y < lines; y++)
+ {
+ /* reorder line */
+ for (x = 0; x < settings.pixels; x++)
+ {
+ buffer[x * 3] = data[y * settings.pixels * 3 + x];
+ buffer[x * 3 + 1] = data[y * settings.pixels * 3 + settings.pixels + x];
+ buffer[x * 3 + 2] = data[y * settings.pixels * 3 + 2 * settings.pixels + x];
+ }
+ /* copy line back */
+ memcpy (data.data() + settings.pixels * 3 * y, buffer.data(),
+ settings.pixels * 3);
+ }
+ }
+ else
+ {
+ for (y = 0; y < lines; y++)
+ {
+ /* reorder line */
+ for (x = 0; x < settings.pixels; x++)
+ {
+ buffer[x * 6] = data[y * settings.pixels * 6 + x * 2];
+ buffer[x * 6 + 1] = data[y * settings.pixels * 6 + x * 2 + 1];
+ buffer[x * 6 + 2] = data[y * settings.pixels * 6 + 2 * settings.pixels + x * 2];
+ buffer[x * 6 + 3] = data[y * settings.pixels * 6 + 2 * settings.pixels + x * 2 + 1];
+ buffer[x * 6 + 4] = data[y * settings.pixels * 6 + 4 * settings.pixels + x * 2];
+ buffer[x * 6 + 5] = data[y * settings.pixels * 6 + 4 * settings.pixels + x * 2 + 1];
+ }
+ /* copy line back */
+ memcpy (data.data() + settings.pixels * 6 * y, buffer.data(),
+ settings.pixels * 6);
+ }
+ }
+ }
+
+ /* end scan , waiting the motor to stop if needed (if moving), but without ejecting doc */
+ status = end_scan(dev, &dev->reg, SANE_TRUE, SANE_FALSE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: end\n", __func__);
+ return status;
+}
+
+/**
+ * Does a simple move of the given distance by doing a scan at lowest resolution
+ * shading correction. Memory for data is allocated in this function
+ * and must be freed by caller.
+ * @param dev device of the scanner
+ * @param distance distance to move in MM
+ */
+static SANE_Status
+simple_move (Genesys_Device * dev, SANE_Int distance)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Settings settings;
+
+ DBG(DBG_proc, "%s: %d mm\n", __func__, distance);
+
+ int resolution = get_lowest_resolution(dev->model->ccd_type, 3);
+
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ /* TODO give a no AGOHOME flag */
+ settings.scan_method = ScanMethod::TRANSPARENCY;
+ settings.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ settings.xres = resolution;
+ settings.yres = resolution;
+ settings.tl_y = 0;
+ settings.tl_x = 0;
+ settings.pixels =
+ (sensor.sensor_pixels * settings.xres) / sensor.optical_res;
+ settings.lines = (distance * settings.xres) / MM_PER_INCH;
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ std::vector<uint8_t> data;
+ status = simple_scan(dev, sensor, settings, SANE_TRUE, SANE_TRUE, SANE_FALSE, data);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: simple_scan failed\n", __func__);
+ }
+
+ DBGCOMPLETED
+ return status;
+}
+
+/**
+ * update the status of the required sensor in the scanner session
+ * the button fileds are used to make events 'sticky'
+ */
+static SANE_Status
+gl646_update_hardware_sensors (Genesys_Scanner * session)
+{
+ Genesys_Device *dev = session->dev;
+ 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->usb_dev, &value);
+ DBG(DBG_io, "%s: GPIO=0x%02x\n", __func__, value);
+
+ // scan button
+ if (dev->model->buttons & GENESYS_HAS_SCAN_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_XP200:
+ session->buttons[BUTTON_SCAN_SW].write((value & 0x02) != 0);
+ break;
+ case GPO_5345:
+ session->buttons[BUTTON_SCAN_SW].write(value == 0x16);
+ break;
+ case GPO_HP2300:
+ session->buttons[BUTTON_SCAN_SW].write(value == 0x6c);
+ break;
+ case GPO_HP3670:
+ case GPO_HP2400:
+ session->buttons[BUTTON_SCAN_SW].write((value & 0x20) == 0);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ // email button
+ if (dev->model->buttons & GENESYS_HAS_EMAIL_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_5345:
+ session->buttons[BUTTON_EMAIL_SW].write(value == 0x12);
+ break;
+ case GPO_HP3670:
+ case GPO_HP2400:
+ session->buttons[BUTTON_EMAIL_SW].write((value & 0x08) == 0);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ // copy button
+ if (dev->model->buttons & GENESYS_HAS_COPY_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_5345:
+ session->buttons[BUTTON_COPY_SW].write(value == 0x11);
+ break;
+ case GPO_HP2300:
+ session->buttons[BUTTON_COPY_SW].write(value == 0x5c);
+ break;
+ case GPO_HP3670:
+ case GPO_HP2400:
+ session->buttons[BUTTON_COPY_SW].write((value & 0x10) == 0);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ // power button
+ if (dev->model->buttons & GENESYS_HAS_POWER_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_5345:
+ session->buttons[BUTTON_POWER_SW].write(value == 0x14);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ // ocr button
+ if (dev->model->buttons & GENESYS_HAS_OCR_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_5345:
+ session->buttons[BUTTON_OCR_SW].write(value == 0x13);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ // document detection
+ if (dev->model->buttons & GENESYS_HAS_PAGE_LOADED_SW) {
+ switch (dev->model->gpo_type) {
+ case GPO_XP200:
+ session->buttons[BUTTON_PAGE_LOADED_SW].write((value & 0x04) != 0);
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ /* XPA detection */
+ if (dev->model->flags & GENESYS_FLAG_XPA)
+ {
+ switch (dev->model->gpo_type)
+ {
+ case GPO_HP3670:
+ case GPO_HP2400:
+ /* test if XPA is plugged-in */
+ if ((value & 0x40) == 0)
+ {
+ DBG(DBG_io, "%s: enabling XPA\n", __func__);
+ session->opt[OPT_SOURCE].cap &= ~SANE_CAP_INACTIVE;
+ }
+ else
+ {
+ DBG(DBG_io, "%s: disabling XPA\n", __func__);
+ session->opt[OPT_SOURCE].cap |= SANE_CAP_INACTIVE;
+ }
+ break;
+ default:
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ }
+
+ return SANE_STATUS_GOOD;
+}
+
+
+static SANE_Status
+write_control (Genesys_Device * dev, const Genesys_Sensor& sensor, int resolution)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t control[4];
+ uint32_t addr = 0xdead;
+
+ /* 2300 does not write to 'control' */
+ if (dev->model->motor_type == MOTOR_HP2300)
+ return SANE_STATUS_GOOD;
+
+ /* MD6471/G2410/HP2300 and XP200 read/write data from an undocumented memory area which
+ * is after the second slope table */
+ switch (sensor.optical_res)
+ {
+ case 600:
+ addr = 0x08200;
+ break;
+ case 1200:
+ addr = 0x10200;
+ break;
+ case 2400:
+ addr = 0x1fa00;
+ break;
+ default:
+ DBG(DBG_error, "%s: failed to compute control address\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+
+ /* XP200 sets dpi, what other scanner put is unknown yet */
+ switch (dev->model->motor_type)
+ {
+ case MOTOR_XP200:
+ /* we put scan's dpi, not motor one */
+ control[0] = LOBYTE (resolution);
+ control[1] = HIBYTE (resolution);
+ control[2] = dev->control[4];
+ control[3] = dev->control[5];
+ break;
+ case MOTOR_HP3670:
+ case MOTOR_HP2400:
+ case MOTOR_5345:
+ default:
+ control[0] = dev->control[2];
+ control[1] = dev->control[3];
+ control[2] = dev->control[4];
+ control[3] = dev->control[5];
+ break;
+ }
+
+ DBG(DBG_info, "%s: control write=0x%02x 0x%02x 0x%02x 0x%02x\n", __func__, control[0], control[1],
+ control[2], control[3]);
+ status = sanei_genesys_set_buffer_address (dev, addr);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set up control address\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+ status = sanei_genesys_bulk_write_data(dev, 0x3c, control, 4);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set up control\n", __func__);
+ return SANE_STATUS_INVAL;
+ }
+ return status;
+}
+
+/**
+ * check if a stored calibration is compatible with requested scan.
+ * @return true if compatible, false if not.
+ * Whenever an error is met, it is returned.
+ * @param dev scanner device
+ * @param cache cache entry to test
+ * @param for_overwrite reserved for future use ...
+ */
+static bool
+gl646_is_compatible_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Calibration_Cache * cache,
+ int for_overwrite)
+{
+ (void) sensor;
+#ifdef HAVE_SYS_TIME_H
+ struct timeval time;
+#endif
+ int compatible = 1;
+
+ DBG(DBG_proc, "%s: start (for_overwrite=%d)\n", __func__, for_overwrite);
+
+ if (cache == NULL)
+ return false;
+
+ /* build minimal current_setup for calibration cache use only, it will be better
+ * computed when during setup for scan
+ */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ {
+ dev->current_setup.channels = 3;
+ }
+ else
+ {
+ dev->current_setup.channels = 1;
+ }
+ dev->current_setup.xres = dev->settings.xres;
+
+ DBG(DBG_io, "%s: requested=(%d,%f), tested=(%d,%f)\n", __func__, dev->current_setup.channels,
+ dev->current_setup.xres, cache->used_setup.channels, cache->used_setup.xres);
+
+ /* a calibration cache is compatible if color mode and x dpi match the user
+ * requested scan. In the case of CIS scanners, dpi isn't a criteria */
+ if (dev->model->is_cis == SANE_FALSE)
+ {
+ compatible =
+ ((dev->current_setup.channels == cache->used_setup.channels)
+ && (((int) dev->current_setup.xres) ==
+ ((int) cache->used_setup.xres)));
+ }
+ else
+ {
+ compatible =
+ (dev->current_setup.channels == cache->used_setup.channels);
+ }
+ if (dev->current_setup.params.scan_method != cache->used_setup.params.scan_method)
+ {
+ DBG(DBG_io, "%s: current method=%d, used=%d\n", __func__,
+ static_cast<unsigned>(dev->current_setup.params.scan_method),
+ static_cast<unsigned>(cache->used_setup.params.scan_method));
+ compatible = 0;
+ }
+ if (!compatible)
+ {
+ DBG(DBG_proc, "%s: completed, non compatible cache\n", __func__);
+ return false;
+ }
+
+ /* a cache entry expires after 30 minutes for non sheetfed scanners */
+ /* this is not taken into account when overwriting cache entries */
+#ifdef HAVE_SYS_TIME_H
+ if(for_overwrite == SANE_FALSE)
+ {
+ gettimeofday (&time, NULL);
+ if ((time.tv_sec - cache->last_calibration > 30 * 60)
+ && (dev->model->is_sheetfed == SANE_FALSE))
+ {
+ DBG(DBG_proc, "%s: expired entry, non compatible cache\n", __func__);
+ return false;
+ }
+ }
+#endif
+
+ DBG(DBG_proc, "%s: completed, cache compatible\n", __func__);
+ return true;
+}
+
+/**
+ * search for a full width black or white strip.
+ * @param dev scanner device
+ * @param forward SANE_TRUE if searching forward, SANE_FALSE if searching backward
+ * @param black SANE_TRUE if searching for a black strip, SANE_FALSE for a white strip
+ * @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
+ */
+static SANE_Status
+gl646_search_strip(Genesys_Device * dev, const Genesys_Sensor& sensor, SANE_Bool forward, SANE_Bool black)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ SANE_Bool half_ccd = SANE_FALSE;
+ Genesys_Settings settings;
+ int res = get_closest_resolution(dev->model->ccd_type, 75, 1);
+ unsigned int pass, count, found, x, y;
+ char title[80];
+
+ DBG(DBG_proc, "%s: start\n", __func__);
+ /* adapt to half_ccd case */
+ if (sensor.ccd_size_divisor > 1)
+ {
+ /* walk the master mode list to find if half_ccd */
+ // FIXME: possibly wrong channel count for is_half_ccd
+ if (is_half_ccd (dev->model->ccd_type, res, 3) == SANE_TRUE)
+ {
+ half_ccd = SANE_TRUE;
+ }
+ }
+
+ /* we set up for a lowest available resolution color grey scan, full width */
+ settings.scan_method = ScanMethod::FLATBED;
+ settings.scan_mode = ScanColorMode::GRAY;
+ settings.xres = res;
+ settings.yres = res;
+ settings.tl_x = 0;
+ settings.tl_y = 0;
+ settings.pixels = (SANE_UNFIX (dev->model->x_size) * res) / MM_PER_INCH;
+ if (half_ccd == SANE_TRUE)
+ {
+ settings.pixels /= 2;
+ }
+
+ /* 15 mm at at time */
+ settings.lines = (15 * settings.yres) / MM_PER_INCH; /* may become a parameter from genesys_devices.c */
+ settings.depth = 8;
+ settings.color_filter = ColorFilter::RED;
+
+ settings.disable_interpolation = 0;
+ settings.threshold = 0;
+ settings.dynamic_lineart = SANE_FALSE;
+
+ /* signals if a strip of the given color has been found */
+ found = 0;
+
+ /* detection pass done */
+ pass = 0;
+
+ std::vector<uint8_t> data;
+
+ /* loop until strip is found or maximum pass number done */
+ while (pass < 20 && !found)
+ {
+ /* scan a full width strip */
+ status =
+ simple_scan(dev, sensor, settings, SANE_TRUE, forward, SANE_FALSE, data);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: simple_scan failed\n", __func__);
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_data)
+ {
+ sprintf (title, "gl646_search_strip_%s%02d.pnm", forward ? "fwd" : "bwd",
+ (int)pass);
+ sanei_genesys_write_pnm_file (title, data.data(), settings.depth, 1,
+ settings.pixels, settings.lines);
+ }
+
+ /* search data to find black strip */
+ /* when searching forward, we only need one line of the searched color since we
+ * will scan forward. But when doing backward search, we need all the area of the
+ * same color */
+ if (forward)
+ {
+ for (y = 0; y < settings.lines && !found; y++)
+ {
+ count = 0;
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < settings.pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * settings.pixels + x] > 90)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * settings.pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+
+ /* at end of line, if count >= 3%, line is not fully of the desired color
+ * so we must go to next line of the buffer */
+ /* count*100/pixels < 3 */
+ if ((count * 100) / settings.pixels < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found forward during pass %d at line %d\n", __func__,
+ pass, y);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d\n", __func__, settings.pixels, count);
+ }
+ }
+ }
+ else /* since calibration scans are done forward, we need the whole area
+ to be of the required color when searching backward */
+ {
+ count = 0;
+ for (y = 0; y < settings.lines; y++)
+ {
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < settings.pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * settings.pixels + x] > 60)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * settings.pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+ }
+
+ /* at end of area, if count >= 3%, area is not fully of the desired color
+ * so we must go to next buffer */
+ if ((count * 100) / (settings.pixels * settings.lines) < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found backward during pass %d \n", __func__, pass);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d\n", __func__, settings.pixels, count);
+ }
+ }
+ pass++;
+ }
+ if (found)
+ {
+ status = SANE_STATUS_GOOD;
+ DBG(DBG_info, "%s: strip found\n", __func__);
+ }
+ else
+ {
+ status = SANE_STATUS_UNSUPPORTED;
+ DBG(DBG_info, "%s: strip not found\n", __func__);
+ }
+ return status;
+}
+
+/** the gl646 command set */
+static Genesys_Command_Set gl646_cmd_set = {
+ "gl646-generic", /* the name of this set */
+
+ gl646_needs_home_before_init_regs_for_scan,
+
+ gl646_init,
+ gl646_init_regs_for_warmup,
+ gl646_init_regs_for_coarse_calibration,
+ gl646_init_regs_for_shading,
+ gl646_init_regs_for_scan,
+
+ gl646_get_filter_bit,
+ gl646_get_lineart_bit,
+ gl646_get_bitset_bit,
+ gl646_get_gain4_bit,
+ gl646_get_fast_feed_bit,
+ gl646_test_buffer_empty_bit,
+ gl646_test_motor_flag_bit,
+
+ gl646_public_set_fe,
+ gl646_set_powersaving,
+ gl646_save_power,
+
+ gl646_begin_scan,
+ gl646_end_scan,
+
+ gl646_send_gamma_table,
+
+ gl646_search_start_position,
+
+ gl646_offset_calibration,
+ gl646_coarse_gain_calibration,
+ gl646_led_calibration,
+
+ NULL,
+ gl646_slow_back_home,
+ NULL,
+
+ sanei_genesys_bulk_write_register,
+ sanei_genesys_bulk_write_data,
+ gl646_bulk_read_data,
+
+ gl646_update_hardware_sensors,
+
+ /* sheetfed related functions */
+ gl646_load_document,
+ gl646_detect_document_end,
+ gl646_eject_document,
+ gl646_search_strip,
+
+ gl646_is_compatible_calibration,
+ gl646_move_to_ta,
+ NULL,
+ NULL,
+ NULL
+};
+
+SANE_Status
+sanei_gl646_init_cmd_set (Genesys_Device * dev)
+{
+ dev->model->cmd_set = &gl646_cmd_set;
+ return SANE_STATUS_GOOD;
+}
diff --git a/backend/genesys_gl646.h b/backend/genesys_gl646.h
index 4c47d03..766176a 100644
--- a/backend/genesys_gl646.h
+++ b/backend/genesys_gl646.h
@@ -165,111 +165,21 @@
#include "genesys.h"
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x07,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
- reg_0x0b,
- reg_0x10,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
- reg_0x28,
- reg_0x29,
- reg_0x2c,
- reg_0x2d,
- reg_0x2e,
- reg_0x2f,
- reg_0x30,
- reg_0x31,
- reg_0x32,
- reg_0x33,
- reg_0x34,
- reg_0x35,
- reg_0x36,
- reg_0x37,
- reg_0x38,
- reg_0x39,
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
- reg_0x5b,
- reg_0x5c,
- reg_0x5d,
- reg_0x5e,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x66,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x6c,
- reg_0x6d,
- GENESYS_GL646_MAX_REGS
-};
+static SANE_Status gl646_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t set, int dpi);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi);
+static SANE_Status gl646_public_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t set);
-#ifndef UNIT_TESTING
static
-#endif
-SANE_Status gl646_public_set_fe (Genesys_Device * dev, uint8_t set);
-
-GENESYS_STATIC
SANE_Status
gl646_save_power (Genesys_Device * dev, SANE_Bool enable);
-GENESYS_STATIC
+static
SANE_Status
gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-GENESYS_STATIC
+static
SANE_Status
gl646_move_to_ta (Genesys_Device * dev);
@@ -285,8 +195,9 @@ gl646_move_to_ta (Genesys_Device * dev);
* @param ycorrection true if scanner's Y geometry must be taken into account to
* compute Y, ie add top margins
*/
-GENESYS_STATIC SANE_Status
+static SANE_Status
setup_for_scan (Genesys_Device *device,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set *regs,
Genesys_Settings settings,
SANE_Bool split,
@@ -300,15 +211,11 @@ setup_for_scan (Genesys_Device *device,
* */
static SANE_Status
gl646_setup_registers (Genesys_Device * dev,
- Genesys_Register_Set * regs,
- Genesys_Settings scan_settings,
- uint16_t * slope_table1,
- uint16_t * slope_table2,
- SANE_Int resolution,
- uint32_t move,
- uint32_t linecnt,
- uint16_t startx,
- uint16_t endx, SANE_Bool color, SANE_Int depth);
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs, SetupParams& params,
+ uint16_t * slope_table1,
+ uint16_t * slope_table2,
+ bool xcorrection);
/**
* Does a simple move of the given distance by doing a scan at lowest resolution
@@ -317,10 +224,7 @@ gl646_setup_registers (Genesys_Device * dev,
* @param dev device of the scanner
* @param distance distance to move in MM
*/
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
simple_move (Genesys_Device * dev, SANE_Int distance);
/**
@@ -335,12 +239,10 @@ simple_move (Genesys_Device * dev, SANE_Int distance);
* @param shading flag to tell if shading correction should be done
* @param data pointer that will point to the scanned data
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move, SANE_Bool forward,
- SANE_Bool shading, unsigned char **data);
+static SANE_Status
+simple_scan(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Settings settings, SANE_Bool move, SANE_Bool forward,
+ SANE_Bool shading, std::vector<uint8_t>& data);
/**
* Send the stop scan command
@@ -351,7 +253,8 @@ end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
/**
* writes control data to an area behind the last motor table.
*/
-static SANE_Status write_control (Genesys_Device * dev, int resolution);
+static SANE_Status write_control (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ int resolution);
/**
@@ -359,10 +262,7 @@ static SANE_Status write_control (Genesys_Device * dev, int resolution);
*/
static void gl646_init_regs (Genesys_Device * dev);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl646_load_document (Genesys_Device * dev);
+static SANE_Status gl646_load_document (Genesys_Device * dev);
static SANE_Status
gl646_detect_document_end (Genesys_Device * dev);
@@ -381,7 +281,7 @@ typedef struct
/* key */
SANE_Int motor;
SANE_Int dpi;
- SANE_Bool color;
+ unsigned channels;
/* settings */
SANE_Int ydpi; /* real motor dpi, may be different from the resolution */
@@ -408,7 +308,7 @@ typedef struct
/* key */
SANE_Int sensor; /**< sensor identifier */
SANE_Int dpi; /**< required dpi */
- SANE_Bool color; /**< SANE_TRUE if color scan */
+ unsigned channels; // 3 channels if color scan, 1 channel for gray scan
/* settings */
SANE_Int xdpi; /**< real sensor dpi, may be different from the required resolution */
@@ -448,88 +348,87 @@ static uint8_t xp200_gray[6]={0x05, 0x0a, 0x0f, 0xa0, 0x10, 0x10};
* master sensor settings, for a given sensor and dpi,
* it gives exposure and CCD time
*/
-/* *INDENT-OFF* */
static Sensor_Master sensor_master[] = {
/* HP3670 master settings */
- {CCD_HP3670, 75, SANE_TRUE , 75, 4879, 300, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 100, SANE_TRUE , 100, 4487, 400, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 150, SANE_TRUE , 150, 4879, 600, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 300, SANE_TRUE , 300, 4503, 1200, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 600, SANE_TRUE , 600, 10251, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x43},
- {CCD_HP3670,1200, SANE_TRUE , 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
- {CCD_HP3670,2400, SANE_TRUE , 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
- {CCD_HP3670, 75, SANE_FALSE, 75, 4879, 300, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 100, SANE_FALSE, 100, 4487, 400, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 150, SANE_FALSE, 150, 4879, 600, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 300, SANE_FALSE, 300, 4503, 1200, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
- {CCD_HP3670, 600, SANE_FALSE, 600, 10251, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x43},
- {CCD_HP3670,1200, SANE_FALSE, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
- {CCD_HP3670,2400, SANE_FALSE, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
+ {CCD_HP3670, 75, 3, 75, 4879, 300, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 100, 3, 100, 4487, 400, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 150, 3, 150, 4879, 600, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 300, 3, 300, 4503, 1200, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 600, 3, 600, 10251, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x43},
+ {CCD_HP3670,1200, 3, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
+ {CCD_HP3670,2400, 3, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
+ {CCD_HP3670, 75, 1, 75, 4879, 300, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 100, 1, 100, 4487, 400, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 150, 1, 150, 4879, 600, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 300, 1, 300, 4503, 1200, 4, 42, NULL, SANE_FALSE, 0x33, 0x43},
+ {CCD_HP3670, 600, 1, 600, 10251, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x43},
+ {CCD_HP3670,1200, 1, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
+ {CCD_HP3670,2400, 1, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
/* HP 2400 master settings */
- {CCD_HP2400, 50, SANE_TRUE , 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 100, SANE_TRUE , 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 150, SANE_TRUE , 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 300, SANE_TRUE , 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 600, SANE_TRUE , 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
- {CCD_HP2400,1200, SANE_TRUE , 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
- {CCD_HP2400, 50, SANE_FALSE, 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 100, SANE_FALSE, 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 150, SANE_FALSE, 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 300, SANE_FALSE, 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
- {CCD_HP2400, 600, SANE_FALSE, 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
- {CCD_HP2400,1200, SANE_FALSE, 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
+ {CCD_HP2400, 50, 3, 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 100, 3, 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 150, 3, 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 300, 3, 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 600, 3, 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
+ {CCD_HP2400,1200, 3, 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
+ {CCD_HP2400, 50, 1, 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 100, 1, 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 150, 1, 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 300, 1, 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
+ {CCD_HP2400, 600, 1, 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
+ {CCD_HP2400,1200, 1, 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
/* XP 200 master settings */
- {CIS_XP200 , 75, SANE_TRUE , 75, 5700, 75, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 100, SANE_TRUE , 100, 5700, 100, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 200, SANE_TRUE , 200, 5700, 200, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 300, SANE_TRUE , 300, 9000, 300, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 600, SANE_TRUE , 600, 16000, 600, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
-
- {CIS_XP200 , 75, SANE_FALSE, 75, 16000, 75, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 100, SANE_FALSE, 100, 7800, 100, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 200, SANE_FALSE, 200, 11000, 200, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 300, SANE_FALSE, 300, 13000, 300, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
- {CIS_XP200 , 600, SANE_FALSE, 600, 24000, 600, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 75, 3, 75, 5700, 75, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 100, 3, 100, 5700, 100, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 200, 3, 200, 5700, 200, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 300, 3, 300, 9000, 300, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 600, 3, 600, 16000, 600, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
+
+ {CIS_XP200 , 75, 1, 75, 16000, 75, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 100, 1, 100, 7800, 100, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 200, 1, 200, 11000, 200, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 300, 1, 300, 13000, 300, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
+ {CIS_XP200 , 600, 1, 600, 24000, 600, 1, 42, xp200_gray, SANE_FALSE, 0x00, 0x11},
/* HP 2300 master settings */
- {CCD_HP2300, 75, SANE_TRUE , 75, 4480, 150, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 150, SANE_TRUE , 150, 4350, 300, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 300, SANE_TRUE, 300, 4350, 600, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 600, SANE_TRUE , 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
- {CCD_HP2300,1200, SANE_TRUE , 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
- {CCD_HP2300, 75, SANE_FALSE, 75, 4480, 150, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 150, SANE_FALSE, 150, 4350, 300, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 300, SANE_FALSE, 300, 4350, 600, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
- {CCD_HP2300, 600, SANE_FALSE, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
- {CCD_HP2300,1200, SANE_FALSE, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300, 75, 3, 75, 4480, 150, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 150, 3, 150, 4350, 300, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 300, 3, 300, 4350, 600, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 600, 3, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300,1200, 3, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300, 75, 1, 75, 4480, 150, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 150, 1, 150, 4350, 300, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 300, 1, 300, 4350, 600, 1, 42, NULL, SANE_TRUE , 0x20, 0x85},
+ {CCD_HP2300, 600, 1, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300,1200, 1, 600, 8700, 600, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
/* non half ccd 300 dpi settings
- {CCD_HP2300, 300, SANE_TRUE , 300, 8700, 300, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
- {CCD_HP2300, 300, SANE_FALSE, 300, 8700, 300, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300, 300, 3, 300, 8700, 300, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
+ {CCD_HP2300, 300, 1, 300, 8700, 300, 1, 42, NULL, SANE_FALSE, 0x20, 0x05},
*/
/* MD5345/6471 master settings */
- {CCD_5345 , 50, SANE_TRUE , 50, 12000, 100, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 75, SANE_TRUE , 75, 11000, 150, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 100, SANE_TRUE , 100, 11000, 200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 150, SANE_TRUE , 150, 11000, 300, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 200, SANE_TRUE , 200, 11000, 400, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 300, SANE_TRUE , 300, 11000, 600, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 400, SANE_TRUE , 400, 11000, 800, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 600, SANE_TRUE , 600, 11000,1200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 ,1200, SANE_TRUE ,1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
- {CCD_5345 ,2400, SANE_TRUE ,1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
- {CCD_5345 , 50, SANE_FALSE, 50, 12000, 100, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 75, SANE_FALSE, 75, 11000, 150, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 100, SANE_FALSE, 100, 11000, 200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 150, SANE_FALSE, 150, 11000, 300, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 200, SANE_FALSE, 200, 11000, 400, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 300, SANE_FALSE, 300, 11000, 600, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 400, SANE_FALSE, 400, 11000, 800, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 , 600, SANE_FALSE, 600, 11000,1200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
- {CCD_5345 ,1200, SANE_FALSE,1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
- {CCD_5345 ,2400, SANE_FALSE,1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
+ {CCD_5345 , 50, 3, 50, 12000, 100, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 75, 3, 75, 11000, 150, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 100, 3, 100, 11000, 200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 150, 3, 150, 11000, 300, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 200, 3, 200, 11000, 400, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 300, 3, 300, 11000, 600, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 400, 3, 400, 11000, 800, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 600, 3, 600, 11000,1200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 ,1200, 3, 1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
+ {CCD_5345 ,2400, 3, 1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
+ {CCD_5345 , 50, 1, 50, 12000, 100, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 75, 1, 75, 11000, 150, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 100, 1, 100, 11000, 200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 150, 1, 150, 11000, 300, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 200, 1, 200, 11000, 400, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 300, 1, 300, 11000, 600, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 400, 1, 400, 11000, 800, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 , 600, 1, 600, 11000,1200, 1, 42, NULL, SANE_TRUE , 0x28, 0x03},
+ {CCD_5345 ,1200, 1, 1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
+ {CCD_5345 ,2400, 1, 1200, 11000,1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x03},
};
@@ -539,88 +438,88 @@ static Sensor_Master sensor_master[] = {
*/
static Motor_Master motor_master[] = {
/* HP3670 motor settings */
- {MOTOR_HP3670, 75, SANE_TRUE , 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 200, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 300, SANE_TRUE , 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 600, SANE_TRUE , 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 6375, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670,2400, SANE_TRUE ,2400, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 12750, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 75, SANE_FALSE, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 200, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670, 600, SANE_FALSE, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 6375, 192, 3399, 337, 0.3, 0.4, 192},
- {MOTOR_HP3670,2400, SANE_TRUE ,2400, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 12750, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 75, 3, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 200, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 100, 3, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 150, 3, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 300, 3, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 600, 3, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670,1200, 3,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 6375, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670,2400, 3,2400, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 12750, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 75, 1, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 200, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 100, 1, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 150, 1, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 300, 1, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670, 600, 1, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670,1200, 1,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 6375, 192, 3399, 337, 0.3, 0.4, 192},
+ {MOTOR_HP3670,2400, 3,2400, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 12750, 192, 3399, 337, 0.3, 0.4, 192},
/* HP2400/G2410 motor settings base motor dpi = 600 */
- {MOTOR_HP2400, 50, SANE_TRUE , 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 300, SANE_TRUE , 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 600, SANE_TRUE , 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 627, 0.30, 0.4, 192},
- {MOTOR_HP2400,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 627, 0.30, 0.4, 192},
- {MOTOR_HP2400, 50, SANE_FALSE, 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400, 600, SANE_FALSE, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 337, 0.30, 0.4, 192},
- {MOTOR_HP2400,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 50, 3, 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 100, 3, 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 150, 3, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 300, 3, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 600, 3, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 627, 0.30, 0.4, 192},
+ {MOTOR_HP2400,1200, 3,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 627, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 50, 1, 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 100, 1, 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 150, 1, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 300, 1, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400, 600, 1, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 337, 0.30, 0.4, 192},
+ {MOTOR_HP2400,1200, 1,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 337, 0.30, 0.4, 192},
/* XP 200 motor settings */
- {MOTOR_XP200, 75, SANE_TRUE, 75, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2136, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 100, SANE_TRUE, 100, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2850, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 200, SANE_TRUE, 200, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6999, 5700, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 250, SANE_TRUE, 250, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6999, 6999, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 300, SANE_TRUE, 300, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 13500, 13500, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 600, SANE_TRUE, 600, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 31998, 31998, 2, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 75, SANE_FALSE, 75, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2000, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 100, SANE_FALSE, 100, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 1300, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 200, SANE_FALSE, 200, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 6000, 3666, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 300, SANE_FALSE, 300, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6500, 6500, 8, 12000, 1200, 0.3, 0.5, 1},
- {MOTOR_XP200, 600, SANE_FALSE, 600, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 24000, 24000, 2, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 75, 3, 75, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2136, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 100, 3, 100, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2850, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 200, 3, 200, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6999, 5700, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 250, 3, 250, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6999, 6999, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 300, 3, 300, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 13500, 13500, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 600, 3, 600, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 31998, 31998, 2, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 75, 1, 75, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2000, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 100, 1, 100, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 1300, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 200, 1, 200, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 6000, 3666, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 300, 1, 300, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6500, 6500, 8, 12000, 1200, 0.3, 0.5, 1},
+ {MOTOR_XP200, 600, 1, 600, HALF_STEP, SANE_TRUE , SANE_TRUE, 0, 4, 24000, 24000, 2, 12000, 1200, 0.3, 0.5, 1},
/* HP scanjet 2300c */
- {MOTOR_HP2300, 75, SANE_TRUE, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8139, 560, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 150, SANE_TRUE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 7903, 543, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 300, SANE_TRUE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 2175, 1087, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 600, SANE_TRUE, 600, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 8700, 4350, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300,1200, SANE_TRUE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 17400, 8700, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 75, SANE_FALSE, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8139, 560, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 7903, 543, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 2175, 1087, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 600, SANE_FALSE, 600, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 8700, 4350, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 17400, 8700, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 75, 3, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8139, 560, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 150, 3, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 7903, 543, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 300, 3, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 2175, 1087, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 600, 3, 600, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 8700, 4350, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300,1200, 3,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 17400, 8700, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 75, 1, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8139, 560, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 150, 1, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 7903, 543, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 300, 1, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 2175, 1087, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 600, 1, 600, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 8700, 4350, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300,1200, 1,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 17400, 8700, 120, 4905, 337, 0.3, 0.4, 16},
/* non half ccd settings for 300 dpi
- {MOTOR_HP2300, 300, SANE_TRUE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 44, 5386, 2175, 120, 4905, 337, 0.3, 0.4, 16},
- {MOTOR_HP2300, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 44, 5386, 2175, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 300, 3, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 44, 5386, 2175, 120, 4905, 337, 0.3, 0.4, 16},
+ {MOTOR_HP2300, 300, 1, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 44, 5386, 2175, 120, 4905, 337, 0.3, 0.4, 16},
*/
/* MD5345/6471 motor settings */
/* vfinal=(exposure/(1200/dpi))/step_type */
- {MOTOR_5345, 50, SANE_TRUE , 50, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 250, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 75, SANE_TRUE , 75, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 343, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 100, SANE_TRUE , 100, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 458, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 150, SANE_TRUE , 150, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 687, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 200, SANE_TRUE , 200, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 916, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 300, SANE_TRUE, 300, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 1375, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 400, SANE_TRUE, 400, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2000, 1833, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 500, SANE_TRUE, 500, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2291, 2291, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 600, SANE_TRUE, 600, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 1200, SANE_TRUE ,1200, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 146},
- {MOTOR_5345, 2400, SANE_TRUE ,2400, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 5500, 5500, 255, 2000, 300, 0.3, 0.4, 146},
- {MOTOR_5345, 50, SANE_FALSE, 50, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 250, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 75, SANE_FALSE, 75, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 343, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 100, SANE_FALSE, 100, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 458, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 150, SANE_FALSE, 150, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 687, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 200, SANE_FALSE, 200, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 916, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 300, SANE_FALSE, 300, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 1375, 255, 2000, 300, 0.3, 0.4, 64},
- {MOTOR_5345, 400, SANE_FALSE, 400, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2000, 1833, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 500, SANE_FALSE, 500, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2291, 2291, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 600, SANE_FALSE, 600, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 32},
- {MOTOR_5345, 1200, SANE_FALSE,1200, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 146},
- {MOTOR_5345, 2400, SANE_FALSE,2400, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 5500, 5500, 255, 2000, 300, 0.3, 0.4, 146}, /* 5500 guessed */
+ {MOTOR_5345, 50, 3, 50, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 250, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 75, 3, 75, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 343, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 100, 3, 100, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 458, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 150, 3, 150, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 687, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 200, 3, 200, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 916, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 300, 3, 300, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 1375, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 400, 3, 400, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2000, 1833, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 500, 3, 500, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2291, 2291, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 600, 3, 600, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 1200, 3,1200, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 146},
+ {MOTOR_5345, 2400, 3,2400, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 5500, 5500, 255, 2000, 300, 0.3, 0.4, 146},
+ {MOTOR_5345, 50, 1, 50, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 250, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 75, 1, 75, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 343, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 100, 1, 100, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 458, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 150, 1, 150, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 687, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 200, 1, 200, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 916, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 300, 1, 300, HALF_STEP , SANE_FALSE, SANE_TRUE , 2, 255, 2500, 1375, 255, 2000, 300, 0.3, 0.4, 64},
+ {MOTOR_5345, 400, 1, 400, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2000, 1833, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 500, 1, 500, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2291, 2291, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 600, 1, 600, HALF_STEP , SANE_FALSE, SANE_TRUE , 0, 32, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 32},
+ {MOTOR_5345, 1200, 1,1200, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 146},
+ {MOTOR_5345, 2400, 1,2400, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 5500, 5500, 255, 2000, 300, 0.3, 0.4, 146}, /* 5500 guessed */
};
/**
@@ -693,4 +592,3 @@ static Sensor_Settings sensor_settings[] = {
{0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83} /* half ccd settings */
},
};
-/* *INDENT-ON* */
diff --git a/backend/genesys_gl841.c b/backend/genesys_gl841.cc
index 43c01ff..9e8fc15 100644
--- a/backend/genesys_gl841.c
+++ b/backend/genesys_gl841.cc
@@ -50,11 +50,12 @@
If you do not wish that, delete this exception notice.
*/
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl841
+#define DEBUG_DECLARE_ONLY
#include "genesys_gl841.h"
+#include <vector>
+
/****************************************************************************
Low level function
****************************************************************************/
@@ -63,254 +64,20 @@
/* Read and write RAM, registers and AFE */
/* ------------------------------------------------------------------------ */
-/* Write to many registers */
-/* Note: There is no known bulk register write,
- this function is sending single registers instead */
-static SANE_Status
-gl841_bulk_write_register (Genesys_Device * dev,
- Genesys_Register_Set * reg, size_t elems)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- unsigned int i, c;
- uint8_t buffer[GENESYS_MAX_REGS * 2];
-
- /* handle differently sized register sets, reg[0x00] is the last one */
- i = 0;
- while ((i < elems) && (reg[i].address != 0))
- i++;
-
- elems = i;
-
- DBG (DBG_io, "gl841_bulk_write_register (elems = %lu)\n",
- (u_long) elems);
-
- for (i = 0; i < elems; i++) {
-
- buffer[i * 2 + 0] = reg[i].address;
- buffer[i * 2 + 1] = reg[i].value;
-
- DBG (DBG_io2, "reg[0x%02x] = 0x%02x\n", buffer[i * 2 + 0],
- buffer[i * 2 + 1]);
- }
-
- for (i = 0; i < elems;) {
- c = elems - i;
- if (c > 32) /*32 is max. checked that.*/
- c = 32;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_SET_REGISTER, INDEX, c * 2, buffer + i * 2);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_write_register: failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- i += c;
- }
-
- DBG (DBG_io, "gl841_bulk_write_register: wrote %lu registers\n",
- (u_long) elems);
- return status;
-}
-
-/* Write bulk data (e.g. shading, gamma) */
-static SANE_Status
-gl841_bulk_write_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBG (DBG_io, "gl841_bulk_write_data writing %lu bytes\n",
- (u_long) len);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_write_data failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if (len > BULKOUT_MAXSIZE)
- size = BULKOUT_MAXSIZE;
- else
- size = len;
-
- outdata[0] = BULK_OUT;
- outdata[1] = BULK_RAM;
- outdata[2] = VALUE_BUFFER & 0xff;
- outdata[3] = (VALUE_BUFFER >> 8) & 0xff;
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_write_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_usb_write_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_write_data failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl841_bulk_write_data wrote %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- DBG (DBG_io, "gl841_bulk_write_data: completed\n");
-
- return status;
-}
-
-/* for debugging transfer rate*/
-/*
-#include <sys/time.h>
-static struct timeval start_time;
-static void
-starttime(){
- gettimeofday(&start_time,NULL);
-}
-static void
-printtime(char *p) {
- struct timeval t;
- long long int dif;
- gettimeofday(&t,NULL);
- dif = t.tv_sec - start_time.tv_sec;
- dif = dif*1000000 + t.tv_usec - start_time.tv_usec;
- fprintf(stderr,"%s %lluµs\n",p,dif);
-}
-*/
-
-/* Read bulk data (e.g. scanned data) */
-static SANE_Status
-gl841_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size, target;
- uint8_t outdata[8], *buffer;
-
- DBG (DBG_io, "gl841_bulk_read_data: requesting %lu bytes\n",
- (u_long) len);
-
- if (len == 0)
- return SANE_STATUS_GOOD;
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_read_data failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- outdata[0] = BULK_IN;
- outdata[1] = BULK_RAM;
- outdata[2] = VALUE_BUFFER & 0xff;
- outdata[3] = (VALUE_BUFFER >> 8) & 0xff;
- outdata[4] = (len & 0xff);
- outdata[5] = ((len >> 8) & 0xff);
- outdata[6] = ((len >> 16) & 0xff);
- outdata[7] = ((len >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata), outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_read_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- target = len;
- buffer = data;
- while (target)
- {
- if (target > BULKIN_MAXSIZE)
- size = BULKIN_MAXSIZE;
- else
- size = target;
-
- DBG (DBG_io2,
- "gl841_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) size);
-
- status = sanei_usb_read_bulk (dev->dn, data, &size);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl841_bulk_read_data read %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (target - size));
-
- target -= size;
- data += size;
- }
-
-
- if (DBG_LEVEL >= DBG_data && dev->binary!=NULL)
- {
- fwrite(buffer, len, 1, dev->binary);
- }
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
/* Set address for writing data */
static SANE_Status
gl841_set_buffer_address_gamma (Genesys_Device * dev, uint32_t addr)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_io, "gl841_set_buffer_address_gamma: setting address to 0x%05x\n",
- addr & 0xfffffff0);
+ DBG(DBG_io, "%s: setting address to 0x%05x\n", __func__, addr & 0xfffffff0);
addr = addr >> 4;
status = sanei_genesys_write_register (dev, 0x5c, (addr & 0xff));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_buffer_address_gamma: failed while writing low byte: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while writing low byte: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -318,91 +85,15 @@ gl841_set_buffer_address_gamma (Genesys_Device * dev, uint32_t addr)
status = sanei_genesys_write_register (dev, 0x5b, (addr & 0xff));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_buffer_address_gamma: failed while writing high byte: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while writing high byte: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_io, "gl841_set_buffer_address_gamma: completed\n");
+ DBG(DBG_io, "%s: completed\n", __func__);
return status;
}
-/* Write bulk data (e.g. gamma) */
-GENESYS_STATIC SANE_Status
-gl841_bulk_write_data_gamma (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBG (DBG_io, "gl841_bulk_write_data_gamma writing %lu bytes\n",
- (u_long) len);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_bulk_write_data_gamma failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if (len > BULKOUT_MAXSIZE)
- size = BULKOUT_MAXSIZE;
- else
- size = len;
-
- outdata[0] = BULK_OUT;
- outdata[1] = BULK_RAM;
- outdata[2] = 0x00;/* 0x82 works, too */
- outdata[3] = 0x00;
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_bulk_write_data_gamma failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_usb_write_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "genesys_bulk_write_data_gamma failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "genesys_bulk_write_data:gamma wrote %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- DBG (DBG_io, "genesys_bulk_write_data_gamma: completed\n");
-
- return status;
-}
-
-
/****************************************************************************
Mid level functions
****************************************************************************/
@@ -410,7 +101,7 @@ gl841_bulk_write_data_gamma (Genesys_Device * dev, uint8_t addr,
static SANE_Bool
gl841_get_fast_feed_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x02);
if (r && (r->value & REG02_FASTFED))
@@ -421,7 +112,7 @@ gl841_get_fast_feed_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl841_get_filter_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x04);
if (r && (r->value & REG04_FILTER))
@@ -432,7 +123,7 @@ gl841_get_filter_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl841_get_lineart_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x04);
if (r && (r->value & REG04_LINEART))
@@ -443,7 +134,7 @@ gl841_get_lineart_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl841_get_bitset_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x04);
if (r && (r->value & REG04_BITSET))
@@ -454,7 +145,7 @@ gl841_get_bitset_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl841_get_gain4_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x06);
if (r && (r->value & REG06_GAIN4))
@@ -511,32 +202,26 @@ other register settings depending on this:
RHI(0x52),RLOW(0x53),GHI(0x54),GLOW(0x55),BHI(0x56),BLOW(0x57),
*/
-static void
-sanei_gl841_setup_sensor (Genesys_Device * dev,
- Genesys_Register_Set * regs,
- SANE_Bool extended, SANE_Bool half_ccd)
+static void sanei_gl841_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs,
+ SANE_Bool extended, SANE_Bool half_ccd)
{
- Genesys_Register_Set *r;
- int i;
-
- DBG (DBG_proc, "gl841_setup_sensor\n");
-
- /* that one is tricky at least ....*/
- r = sanei_genesys_get_address (regs, 0x70);
- for (i = 0; i < 4; i++, r++)
- r->value = dev->sensor.regs_0x08_0x0b[i];
+ DBG(DBG_proc, "%s\n", __func__);
- r = sanei_genesys_get_address (regs, 0x16);
- for (i = 0x06; i < 0x0a; i++, r++)
- r->value = dev->sensor.regs_0x10_0x1d[i];
+ // that one is tricky at least
+ for (uint16_t addr = 0x08; addr <= 0x0b; ++addr) {
+ regs->set8(0x70 + addr - 0x08, sensor.custom_regs.get_value(addr));
+ }
- r = sanei_genesys_get_address (regs, 0x1a);
- for (i = 0x0a; i < 0x0e; i++, r++)
- r->value = dev->sensor.regs_0x10_0x1d[i];
+ // ignore registers in range [0x10..0x16)
+ for (uint16_t addr = 0x16; addr < 0x1e; ++addr) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
+ }
- r = sanei_genesys_get_address (regs, 0x52);
- for (i = 0; i < 9; i++, r++)
- r->value = dev->sensor.regs_0x52_0x5e[i];
+ // ignore registers in range [0x5b..0x5e]
+ for (uint16_t addr = 0x52; addr < 0x52 + 9; ++addr) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
+ }
/* don't go any further if no extended setup */
if (!extended)
@@ -549,6 +234,7 @@ sanei_gl841_setup_sensor (Genesys_Device * dev,
{
if (half_ccd)
{
+ GenesysRegister* r;
/* settings for CCD used at half is max resolution */
r = sanei_genesys_get_address (regs, 0x70);
r->value = 0x00;
@@ -565,12 +251,16 @@ sanei_gl841_setup_sensor (Genesys_Device * dev,
}
else
{
+ GenesysRegister* r;
/* swap latch times */
r = sanei_genesys_get_address (regs, 0x18);
r->value = 0x30;
- r = sanei_genesys_get_address (regs, 0x52);
- for (i = 0; i < 6; i++, r++)
- r->value = dev->sensor.regs_0x52_0x5e[(i + 3) % 6];
+ regs->set8(0x52, sensor.custom_regs.get_value(0x55));
+ regs->set8(0x53, sensor.custom_regs.get_value(0x56));
+ regs->set8(0x54, sensor.custom_regs.get_value(0x57));
+ regs->set8(0x55, sensor.custom_regs.get_value(0x52));
+ regs->set8(0x56, sensor.custom_regs.get_value(0x53));
+ regs->set8(0x57, sensor.custom_regs.get_value(0x54));
r = sanei_genesys_get_address (regs, 0x58);
r->value = 0x20 | (r->value & 0x03); /* VSMP=4 */
}
@@ -580,6 +270,7 @@ sanei_gl841_setup_sensor (Genesys_Device * dev,
if (dev->model->ccd_type == CCD_HP2300)
{
/* settings for CCD used at half is max resolution */
+ GenesysRegister* r;
if (half_ccd)
{
r = sanei_genesys_get_address (regs, 0x70);
@@ -617,14 +308,12 @@ sanei_gl841_setup_sensor (Genesys_Device * dev,
static SANE_Status
sanei_gl841_asic_test (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
- uint8_t *data;
- uint8_t *verify_data;
size_t size, verify_size;
unsigned int i;
- DBG (DBG_proc, "sanei_gl841_asic_test\n");
+ DBG(DBG_proc, "%s\n", __func__);
return SANE_STATUS_INVAL;
@@ -632,44 +321,38 @@ sanei_gl841_asic_test (Genesys_Device * dev)
status = sanei_genesys_write_register (dev, 0x38, 0xde);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sanei_gl841_asic_test: failed to write register: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write register: %s\n", __func__, sane_strstatus(status));
return status;
}
status = sanei_genesys_write_register (dev, 0x39, 0xad);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sanei_gl841_asic_test: failed to write register: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write register: %s\n", __func__, sane_strstatus(status));
return status;
}
status = sanei_genesys_read_register (dev, 0x38, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sanei_gl841_asic_test: failed to read register: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__, sane_strstatus(status));
return status;
}
if (val != 0xde) /* value of register 0x38 */
{
- DBG (DBG_error,
- "sanei_gl841_asic_test: register contains invalid value\n");
+ DBG(DBG_error, "%s: register contains invalid value\n", __func__);
return SANE_STATUS_IO_ERROR;
}
status = sanei_genesys_read_register (dev, 0x39, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sanei_gl841_asic_test: failed to read register: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read register: %s\n", __func__, sane_strstatus(status));
return status;
}
if (val != 0xad) /* value of register 0x39 */
{
- DBG (DBG_error,
- "sanei_gl841_asic_test: register contains invalid value\n");
+ DBG(DBG_error, "%s: register contains invalid value\n", __func__);
return SANE_STATUS_IO_ERROR;
}
@@ -680,20 +363,8 @@ sanei_gl841_asic_test (Genesys_Device * dev)
otherwise the read doesn't succeed the second time after the scanner has
been plugged in. Very strange. */
- data = (uint8_t *) malloc (size);
- if (!data)
- {
- DBG (DBG_error, "sanei_gl841_asic_test: could not allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
-
- verify_data = (uint8_t *) malloc (verify_size);
- if (!verify_data)
- {
- free (data);
- DBG (DBG_error, "sanei_gl841_asic_test: could not allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
+ std::vector<uint8_t> verify_data(verify_size);
for (i = 0; i < (size - 1); i += 2)
{
@@ -704,20 +375,14 @@ sanei_gl841_asic_test (Genesys_Device * dev)
status = sanei_genesys_set_buffer_address (dev, 0x0000);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_gl841_asic_test: failed to set buffer address: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
return status;
}
-/* status = gl841_bulk_write_data (dev, 0x3c, data, size);
+/* status = sanei_genesys_bulk_write_data(dev, 0x3c, data, size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_gl841_asic_test: failed to bulk write data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write data: %s\n", __func__, sane_strstatus(status));
free (data);
free (verify_data);
return status;
@@ -726,23 +391,14 @@ sanei_gl841_asic_test (Genesys_Device * dev)
status = sanei_genesys_set_buffer_address (dev, 0x0000);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_gl841_asic_test: failed to set buffer address: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
return status;
}
- status =
- gl841_bulk_read_data (dev, 0x45, (uint8_t *) verify_data,
- verify_size);
+ status = sanei_genesys_bulk_read_data(dev, 0x45, verify_data.data(), verify_size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "sanei_gl841_asic_test: failed to bulk read data: %s\n",
- sane_strstatus (status));
- free (data);
- free (verify_data);
+ DBG(DBG_error, "%s: failed to bulk read data: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -751,38 +407,26 @@ sanei_gl841_asic_test (Genesys_Device * dev)
{
if (verify_data[i] != data[i])
{
- DBG (DBG_error, "sanei_gl841_asic_test: data verification error\n");
- DBG (DBG_info, "0x%.8x: got %.2x %.2x %.2x %.2x, expected %.2x %.2x %.2x %.2x\n",
- i,
- verify_data[i],
- verify_data[i+1],
- verify_data[i+2],
- verify_data[i+3],
- data[i],
- data[i+1],
- data[i+2],
- data[i+3]);
- free (data);
- free (verify_data);
+ DBG(DBG_error, "%s: data verification error\n", __func__);
+ DBG(DBG_info, "0x%.8x: got %.2x %.2x %.2x %.2x, expected %.2x %.2x %.2x %.2x\n",
+ i,
+ verify_data[i],
+ verify_data[i+1],
+ verify_data[i+2],
+ verify_data[i+3],
+ data[i],
+ data[i+1],
+ data[i+2],
+ data[i+3]);
return SANE_STATUS_IO_ERROR;
}
}
- free (data);
- free (verify_data);
-
- DBG (DBG_info, "sanei_gl841_asic_test: completed\n");
+ DBG(DBG_info, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
-/* returns the max register bulk size */
-static int
-gl841_bulk_full_size (void)
-{
- return GENESYS_GL841_MAX_REGS;
-}
-
/*
* Set all registers LiDE 80 to default values
* (function called only once at the beginning)
@@ -792,7 +436,6 @@ static void
gl841_init_lide80 (Genesys_Device * dev)
{
uint8_t val;
- int index=0;
INITREG (0x01, 0x82); /* 0x02 = SHDAREA and no CISSET ! */
INITREG (0x02, 0x10);
@@ -832,8 +475,9 @@ gl841_init_lide80 (Genesys_Device * dev)
INITREG (0x29, 0xff);
- INITREG (0x2c, dev->sensor.optical_res>>8);
- INITREG (0x2d, dev->sensor.optical_res & 0xff);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+ INITREG (0x2c, sensor.optical_res>>8);
+ INITREG (0x2d, sensor.optical_res & 0xff);
INITREG (0x2e, 0x80);
INITREG (0x2f, 0x80);
INITREG (0x30, 0x00);
@@ -933,15 +577,17 @@ gl841_init_lide80 (Genesys_Device * dev)
/* set up GPIO : no address, so no bulk write, doesn't written directly either ? */
/*
- dev->reg[reg_0x6c].value = dev->gpo.value[0];
- dev->reg[reg_0x6d].value = dev->gpo.value[1];
- dev->reg[reg_0x6e].value = dev->gpo.enable[0];
- dev->reg[reg_0x6f].value = dev->gpo.enable[1]; */
+ dev->reg.find_reg(0x6c).value = dev->gpo.value[0];
+ dev->reg.find_reg(0x6d).value = dev->gpo.value[1];
+ dev->reg.find_reg(0x6e).value = dev->gpo.enable[0];
+ dev->reg.find_reg(0x6f).value = dev->gpo.enable[1]; */
- dev->reg[reg_0x6b].value |= REG6B_GPO18;
- dev->reg[reg_0x6b].value &= ~REG6B_GPO17;
+ // FIXME: the following code originally changed 0x6b, but due to bug the 0x6c register was
+ // effectively changed. The current behavior matches the old code, but should probably be fixed.
+ dev->reg.find_reg(0x6c).value |= REG6B_GPO18;
+ dev->reg.find_reg(0x6c).value &= ~REG6B_GPO17;
- sanei_gl841_setup_sensor (dev, dev->reg, 0, 0);
+ sanei_gl841_setup_sensor(dev, sensor, &dev->reg, 0, 0);
}
/*
@@ -951,187 +597,179 @@ gl841_init_lide80 (Genesys_Device * dev)
static void
gl841_init_registers (Genesys_Device * dev)
{
- int nr, addr;
+ int addr;
- DBG (DBG_proc, "gl841_init_registers\n");
+ DBG(DBG_proc, "%s\n", __func__);
- nr = 0;
- memset (dev->reg, 0, GENESYS_MAX_REGS * sizeof (Genesys_Register_Set));
- if (strcmp (dev->model->name, "canon-lide-80") == 0)
+ dev->reg.clear();
+ if (dev->model->model_id == MODEL_CANON_LIDE_80)
{
gl841_init_lide80(dev);
return ;
}
- for (addr = 1; addr <= 0x0a; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x10; addr <= 0x27; addr++)
- dev->reg[nr++].address = addr;
- dev->reg[nr++].address = 0x29;
- for (addr = 0x2c; addr <= 0x39; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x3d; addr <= 0x3f; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x52; addr <= 0x5a; addr++)
- dev->reg[nr++].address = addr;
- for (addr = 0x5d; addr <= 0x87; addr++)
- dev->reg[nr++].address = addr;
+ for (addr = 1; addr <= 0x0a; addr++) {
+ dev->reg.init_reg(addr, 0);
+ }
+ for (addr = 0x10; addr <= 0x27; addr++) {
+ dev->reg.init_reg(addr, 0);
+ }
+ dev->reg.init_reg(0x29, 0);
+ for (addr = 0x2c; addr <= 0x39; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x3d; addr <= 0x3f; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x52; addr <= 0x5a; addr++)
+ dev->reg.init_reg(addr, 0);
+ for (addr = 0x5d; addr <= 0x87; addr++)
+ dev->reg.init_reg(addr, 0);
- dev->reg[reg_0x01].value = 0x20; /* (enable shading), CCD, color, 1M */
- if (dev->model->is_cis == SANE_TRUE)
- {
- dev->reg[reg_0x01].value |= REG01_CISSET;
- }
- else
- {
- dev->reg[reg_0x01].value &= ~REG01_CISSET;
+ dev->reg.find_reg(0x01).value = 0x20; /* (enable shading), CCD, color, 1M */
+ if (dev->model->is_cis == SANE_TRUE) {
+ dev->reg.find_reg(0x01).value |= REG01_CISSET;
+ } else {
+ dev->reg.find_reg(0x01).value &= ~REG01_CISSET;
}
- dev->reg[reg_0x02].value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
- dev->reg[reg_0x02].value |= REG02_AGOHOME;
- dev->reg[reg_0x02].value |= REG02_MTRPWR;
- dev->reg[reg_0x02].value |= REG02_FASTFED;
+ dev->reg.find_reg(0x02).value = 0x30 /*0x38 */ ; /* auto home, one-table-move, full step */
+ dev->reg.find_reg(0x02).value |= REG02_AGOHOME;
+ sanei_genesys_set_motor_power(dev->reg, true);
+ dev->reg.find_reg(0x02).value |= REG02_FASTFED;
- dev->reg[reg_0x03].value = 0x1f /*0x17 */ ; /* lamp on */
- dev->reg[reg_0x03].value |= REG03_AVEENB;
+ dev->reg.find_reg(0x03).value = 0x1f /*0x17 */ ; /* lamp on */
+ dev->reg.find_reg(0x03).value |= REG03_AVEENB;
if (dev->model->ccd_type == CCD_PLUSTEK_3600) /* AD front end */
{
- dev->reg[reg_0x04].value = (2 << REG04S_AFEMOD) | 0x02;
+ dev->reg.find_reg(0x04).value = (2 << REG04S_AFEMOD) | 0x02;
}
else /* Wolfson front end */
{
- dev->reg[reg_0x04].value |= 1 << REG04S_AFEMOD;
+ dev->reg.find_reg(0x04).value |= 1 << REG04S_AFEMOD;
}
- dev->reg[reg_0x05].value = 0x00; /* disable gamma, 24 clocks/pixel */
- if (dev->sensor.sensor_pixels < 0x1500)
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
- else if (dev->sensor.sensor_pixels < 0x2a80)
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
- else if (dev->sensor.sensor_pixels < 0x5400)
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ dev->reg.find_reg(0x05).value = 0x00; /* disable gamma, 24 clocks/pixel */
+ if (sensor.sensor_pixels < 0x1500)
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
+ else if (sensor.sensor_pixels < 0x2a80)
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
+ else if (sensor.sensor_pixels < 0x5400)
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
else
{
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
- DBG (DBG_warn,
- "gl841_init_registers: Cannot handle sensor pixel count %d\n",
- dev->sensor.sensor_pixels);
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
+ DBG(DBG_warn, "%s: Cannot handle sensor pixel count %d\n", __func__,
+ sensor.sensor_pixels);
}
- dev->reg[reg_0x06].value |= REG06_PWRBIT;
- dev->reg[reg_0x06].value |= REG06_GAIN4;
+ dev->reg.find_reg(0x06).value |= REG06_PWRBIT;
+ dev->reg.find_reg(0x06).value |= REG06_GAIN4;
/* XP300 CCD needs different clock and clock/pixels values */
if (dev->model->ccd_type != CCD_XP300 && dev->model->ccd_type != CCD_DP685
&& dev->model->ccd_type != CCD_PLUSTEK_3600)
{
- dev->reg[reg_0x06].value |= 0 << REG06S_SCANMOD;
- dev->reg[reg_0x09].value |= 1 << REG09S_CLKSET;
+ dev->reg.find_reg(0x06).value |= 0 << REG06S_SCANMOD;
+ dev->reg.find_reg(0x09).value |= 1 << REG09S_CLKSET;
}
else
{
- dev->reg[reg_0x06].value |= 0x05 << REG06S_SCANMOD; /* 15 clocks/pixel */
- dev->reg[reg_0x09].value = 0; /* 24 MHz CLKSET */
+ dev->reg.find_reg(0x06).value |= 0x05 << REG06S_SCANMOD; /* 15 clocks/pixel */
+ dev->reg.find_reg(0x09).value = 0; /* 24 MHz CLKSET */
}
- dev->reg[reg_0x1e].value = 0xf0; /* watch-dog time */
+ dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */
- dev->reg[reg_0x17].value |= 1 << REG17S_TGW;
+ dev->reg.find_reg(0x17).value |= 1 << REG17S_TGW;
- dev->reg[reg_0x19].value = 0x50;
+ dev->reg.find_reg(0x19).value = 0x50;
- dev->reg[reg_0x1d].value |= 1 << REG1DS_TGSHLD;
+ dev->reg.find_reg(0x1d).value |= 1 << REG1DS_TGSHLD;
- dev->reg[reg_0x1e].value |= 1 << REG1ES_WDTIME;
+ dev->reg.find_reg(0x1e).value |= 1 << REG1ES_WDTIME;
/*SCANFED*/
- dev->reg[reg_0x1f].value = 0x01;
+ dev->reg.find_reg(0x1f).value = 0x01;
/*BUFSEL*/
- dev->reg[reg_0x20].value = 0x20;
+ dev->reg.find_reg(0x20).value = 0x20;
/*LAMPPWM*/
- dev->reg[reg_0x29].value = 0xff;
+ dev->reg.find_reg(0x29).value = 0xff;
/*BWHI*/
- dev->reg[reg_0x2e].value = 0x80;
+ dev->reg.find_reg(0x2e).value = 0x80;
/*BWLOW*/
- dev->reg[reg_0x2f].value = 0x80;
+ dev->reg.find_reg(0x2f).value = 0x80;
/*LPERIOD*/
- dev->reg[reg_0x38].value = 0x4f;
- dev->reg[reg_0x39].value = 0xc1;
+ dev->reg.find_reg(0x38).value = 0x4f;
+ dev->reg.find_reg(0x39).value = 0xc1;
/*VSMPW*/
- dev->reg[reg_0x58].value |= 3 << REG58S_VSMPW;
+ dev->reg.find_reg(0x58).value |= 3 << REG58S_VSMPW;
/*BSMPW*/
- dev->reg[reg_0x59].value |= 3 << REG59S_BSMPW;
+ dev->reg.find_reg(0x59).value |= 3 << REG59S_BSMPW;
/*RLCSEL*/
- dev->reg[reg_0x5a].value |= REG5A_RLCSEL;
+ dev->reg.find_reg(0x5a).value |= REG5A_RLCSEL;
/*STOPTIM*/
- dev->reg[reg_0x5e].value |= 0x2 << REG5ES_STOPTIM;
+ dev->reg.find_reg(0x5e).value |= 0x2 << REG5ES_STOPTIM;
- sanei_gl841_setup_sensor (dev, dev->reg, 0, 0);
+ sanei_gl841_setup_sensor(dev, sensor, &dev->reg, 0, 0);
/* set up GPIO */
- dev->reg[reg_0x6c].value = dev->gpo.value[0];
- dev->reg[reg_0x6d].value = dev->gpo.value[1];
- dev->reg[reg_0x6e].value = dev->gpo.enable[0];
- dev->reg[reg_0x6f].value = dev->gpo.enable[1];
+ dev->reg.find_reg(0x6c).value = dev->gpo.value[0];
+ dev->reg.find_reg(0x6d).value = dev->gpo.value[1];
+ dev->reg.find_reg(0x6e).value = dev->gpo.enable[0];
+ dev->reg.find_reg(0x6f).value = dev->gpo.enable[1];
/* TODO there is a switch calling to be written here */
if (dev->model->gpo_type == GPO_CANONLIDE35)
{
- dev->reg[reg_0x6b].value |= REG6B_GPO18;
- dev->reg[reg_0x6b].value &= ~REG6B_GPO17;
- }
- if (dev->model->gpo_type == GPO_CANONLIDE80)
- {
- dev->reg[reg_0x6b].value |= REG6B_GPO18;
- dev->reg[reg_0x6b].value &= ~REG6B_GPO17;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO18;
+ dev->reg.find_reg(0x6b).value &= ~REG6B_GPO17;
}
if (dev->model->gpo_type == GPO_XP300)
{
- dev->reg[reg_0x6b].value |= REG6B_GPO17;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO17;
}
if (dev->model->gpo_type == GPO_DP685)
{
/* REG6B_GPO18 lights on green led */
- dev->reg[reg_0x6b].value |= REG6B_GPO17|REG6B_GPO18;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO17|REG6B_GPO18;
}
- DBG (DBG_proc, "gl841_init_registers complete\n");
+ DBG(DBG_proc, "%s complete\n", __func__);
}
/* Send slope table for motor movement
slope_table in machine byte order
*/
-GENESYS_STATIC SANE_Status
+static SANE_Status
gl841_send_slope_table (Genesys_Device * dev, int table_nr,
uint16_t * slope_table, int steps)
{
int dpihw;
int start_address;
- SANE_Status status;
- uint8_t *table;
+ SANE_Status status = SANE_STATUS_GOOD;
char msg[4000];
/*#ifdef WORDS_BIGENDIAN*/
int i;
/*#endif*/
- DBG (DBG_proc, "gl841_send_slope_table (table_nr = %d, steps = %d)\n",
- table_nr, steps);
+ DBG(DBG_proc, "%s (table_nr = %d, steps = %d)\n", __func__, table_nr, steps);
- dpihw = dev->reg[reg_0x05].value >> 6;
+ dpihw = dev->reg.find_reg(0x05).value >> 6;
if (dpihw == 0) /* 600 dpi */
start_address = 0x08000;
@@ -1142,15 +780,12 @@ gl841_send_slope_table (Genesys_Device * dev, int table_nr,
else /* reserved */
return SANE_STATUS_INVAL;
-/*#ifdef WORDS_BIGENDIAN*/
- table = (uint8_t*)malloc(steps * 2);
+ std::vector<uint8_t> table(steps * 2);
for(i = 0; i < steps; i++) {
table[i * 2] = slope_table[i] & 0xff;
table[i * 2 + 1] = slope_table[i] >> 8;
}
-/*#else
- table = (uint8_t*)slope_table;
- #endif*/
+
if (DBG_LEVEL >= DBG_io)
{
sprintf (msg, "write slope %d (%d)=", table_nr, steps);
@@ -1158,40 +793,25 @@ gl841_send_slope_table (Genesys_Device * dev, int table_nr,
{
sprintf (msg+strlen(msg), ",%d", slope_table[i]);
}
- DBG (DBG_io, "%s: %s\n", __func__, msg);
+ DBG(DBG_io, "%s: %s\n", __func__, msg);
}
status =
sanei_genesys_set_buffer_address (dev, start_address + table_nr * 0x200);
if (status != SANE_STATUS_GOOD)
{
-/*#ifdef WORDS_BIGENDIAN*/
- free(table);
-/*#endif*/
- DBG (DBG_error,
- "gl841_send_slope_table: failed to set buffer address: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
return status;
}
- status =
- gl841_bulk_write_data (dev, 0x3c, (uint8_t *) table,
- steps * 2);
+ status = sanei_genesys_bulk_write_data(dev, 0x3c, table.data(), steps * 2);
if (status != SANE_STATUS_GOOD)
{
-/*#ifdef WORDS_BIGENDIAN*/
- free(table);
-/*#endif*/
- DBG (DBG_error,
- "gl841_send_slope_table: failed to send slope table: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send slope table: %s\n", __func__, sane_strstatus(status));
return status;
}
-/*#ifdef WORDS_BIGENDIAN*/
- free(table);
-/*#endif*/
- DBG (DBG_proc, "gl841_send_slope_table: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
@@ -1204,57 +824,49 @@ gl841_set_lide80_fe (Genesys_Device * dev, uint8_t set)
if (set == AFE_INIT)
{
- DBG (DBG_proc, "%s(): setting DAC %u\n", __func__,
- dev->model->dac_type);
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
- /* sets to default values */
- sanei_genesys_init_fe (dev);
+ dev->frontend = dev->frontend_initial;
/* write them to analog frontend */
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[1]);
+ status = sanei_genesys_fe_write_data(dev, 0x03, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing reg 0x03 failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x03 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x06, dev->frontend.reg[2]);
+ status = sanei_genesys_fe_write_data(dev, 0x06, dev->frontend.regs.get_value(0x02));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing reg 0x06 failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x06 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
if (set == AFE_SET)
{
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x06, dev->frontend.offset[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x06, dev->frontend.regs.get_value(0x20));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing offset failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing offset failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.gain[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x03, dev->frontend.regs.get_value(0x28));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: writing gain failed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing gain failed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -1276,29 +888,25 @@ gl841_set_ad_fe (Genesys_Device * dev, uint8_t set)
return gl841_set_lide80_fe(dev, set);
}
- DBG (DBG_proc, "gl841_set_ad_fe(): start\n");
+ DBG(DBG_proc, "%s(): start\n", __func__);
if (set == AFE_INIT)
{
- DBG (DBG_proc, "gl841_set_ad_fe(): setting DAC %u\n",
- dev->model->dac_type);
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
- /* sets to default values */
- sanei_genesys_init_fe (dev);
+ dev->frontend = dev->frontend_initial;
/* write them to analog frontend */
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing reg 0x00 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing reg 0x01 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x01 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -1308,9 +916,8 @@ gl841_set_ad_fe (Genesys_Device * dev, uint8_t set)
sanei_genesys_fe_write_data (dev, 0x02 + i, 0x00);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_ad_fe: writing sign[%d] failed: %s\n", 0x02 + i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing sign[%d] failed: %s\n", __func__, 0x02 + i,
+ sane_strstatus(status));
return status;
}
}
@@ -1318,149 +925,124 @@ gl841_set_ad_fe (Genesys_Device * dev, uint8_t set)
if (set == AFE_SET)
{
/* write them to analog frontend */
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing reg 0x00 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x00 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing reg 0x01 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg 0x01 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x02 (red gain)*/
- status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.gain[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x02, dev->frontend.get_gain(0));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing fe 0x02 (gain r) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing fe 0x02 (gain r) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x03 (green gain)*/
- status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.gain[1]);
+ status = sanei_genesys_fe_write_data(dev, 0x03, dev->frontend.get_gain(1));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing fe 0x03 (gain g) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing fe 0x03 (gain g) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x04 (blue gain)*/
- status = sanei_genesys_fe_write_data (dev, 0x04, dev->frontend.gain[2]);
+ status = sanei_genesys_fe_write_data(dev, 0x04, dev->frontend.get_gain(2));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: writing fe 0x04 (gain b) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing fe 0x04 (gain b) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x05 (red offset)*/
status =
- sanei_genesys_fe_write_data (dev, 0x05, dev->frontend.offset[0]);
+ sanei_genesys_fe_write_data(dev, 0x05, dev->frontend.get_offset(0));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: write fe 0x05 (offset r) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: write fe 0x05 (offset r) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x06 (green offset)*/
status =
- sanei_genesys_fe_write_data (dev, 0x06, dev->frontend.offset[1]);
+ sanei_genesys_fe_write_data(dev, 0x06, dev->frontend.get_offset(1));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: write fe 0x06 (offset g) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: write fe 0x06 (offset g) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
/* Write fe 0x07 (blue offset)*/
status =
- sanei_genesys_fe_write_data (dev, 0x07, dev->frontend.offset[2]);
+ sanei_genesys_fe_write_data(dev, 0x07, dev->frontend.get_offset(2));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_ad_fe: write fe 0x07 (offset b) fail: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: write fe 0x07 (offset b) fail: %s\n", __func__, sane_strstatus(status));
return status;
}
}
- DBG (DBG_proc, "gl841_set_ad_fe(): end\n");
+ DBG(DBG_proc, "%s(): end\n", __func__);
return status;
}
/* Set values of analog frontend */
static SANE_Status
-gl841_set_fe (Genesys_Device * dev, uint8_t set)
+gl841_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
{
- SANE_Status status;
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
int i;
- DBG (DBG_proc, "gl841_set_fe (%s)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
- AFE_POWER_SAVE ? "powersave" : "huh?");
+ DBG(DBG_proc, "%s (%s)\n", __func__,
+ set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
+ AFE_POWER_SAVE ? "powersave" : "huh?");
/* Analog Device type frontend */
- if ((dev->reg[reg_0x04].value & REG04_FESET) == 0x02)
+ if ((dev->reg.find_reg(0x04).value & REG04_FESET) == 0x02)
{
return gl841_set_ad_fe (dev, set);
}
- if ((dev->reg[reg_0x04].value & REG04_FESET) != 0x00)
+ if ((dev->reg.find_reg(0x04).value & REG04_FESET) != 0x00)
{
- DBG (DBG_proc, "gl841_set_fe(): unsupported frontend type %d\n",
- dev->reg[reg_0x04].value & REG04_FESET);
+ DBG(DBG_proc, "%s(): unsupported frontend type %d\n", __func__,
+ dev->reg.find_reg(0x04).value & REG04_FESET);
return SANE_STATUS_UNSUPPORTED;
}
if (set == AFE_INIT)
{
- DBG (DBG_proc, "gl841_set_fe(): setting DAC %u\n",
- dev->model->dac_type);
- sanei_genesys_init_fe (dev);
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
+ dev->frontend = dev->frontend_initial;
/* reset only done on init */
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: reset fe failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: reset fe failed: %s\n", __func__, sane_strstatus(status));
return status;
- /*
- if (dev->model->ccd_type == CCD_HP2300
- || dev->model->ccd_type == CCD_HP2400)
- {
- val = 0x07;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT,
- REQUEST_REGISTER, GPIO_OUTPUT_ENABLE,
- INDEX, 1, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_set_fe failed resetting frontend: %s\n",
- sane_strstatus (status));
- return status;
- }
- }*/
}
- DBG (DBG_proc, "gl841_set_fe(): frontend reset complete\n");
+ DBG(DBG_proc, "%s(): frontend reset complete\n", __func__);
}
if (set == AFE_POWER_SAVE)
{
status = sanei_genesys_fe_write_data (dev, 0x01, 0x02);
- if (status != SANE_STATUS_GOOD)
- DBG (DBG_error, "gl841_set_fe: writing data failed: %s\n",
- sane_strstatus (status));
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: writing data failed: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
return status;
}
@@ -1468,98 +1050,88 @@ gl841_set_fe (Genesys_Device * dev, uint8_t set)
/*if (dev->model->ccd_type!=CCD_HP2300 && dev->model->ccd_type!=CCD_HP2400) */
{
- status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg0 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg0 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]);
+ status = sanei_genesys_fe_write_data(dev, 0x02, dev->frontend.regs.get_value(0x02));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg2 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg2 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
- status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg1 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg1 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[3]);
+ status = sanei_genesys_fe_write_data(dev, 0x03, dev->frontend.regs.get_value(0x03));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg3 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg3 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
status = sanei_genesys_fe_write_data (dev, 0x06, dev->frontend.reg2[0]);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg6 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg6 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
status = sanei_genesys_fe_write_data (dev, 0x08, dev->frontend.reg2[1]);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg8 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg8 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
status = sanei_genesys_fe_write_data (dev, 0x09, dev->frontend.reg2[2]);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_set_fe: writing reg9 failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing reg9 failed: %s\n", __func__, sane_strstatus(status));
return status;
}
for (i = 0; i < 3; i++)
{
status =
- sanei_genesys_fe_write_data (dev, 0x24 + i, dev->frontend.sign[i]);
+ sanei_genesys_fe_write_data(dev, 0x24 + i, dev->frontend.regs.get_value(0x24 + i));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_fe: writing sign[%d] failed: %s\n", i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing sign[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x28 + i, dev->frontend.gain[i]);
+ sanei_genesys_fe_write_data(dev, 0x28 + i, dev->frontend.get_gain(i));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_fe: writing gain[%d] failed: %s\n", i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing gain[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
return status;
}
status =
- sanei_genesys_fe_write_data (dev, 0x20 + i,
- dev->frontend.offset[i]);
+ sanei_genesys_fe_write_data(dev, 0x20 + i,
+ dev->frontend.get_offset(i));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_set_fe: writing offset[%d] failed: %s\n", i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: writing offset[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
return status;
}
}
- DBG (DBG_proc, "gl841_set_fe: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -1576,10 +1148,9 @@ gl841_init_motor_regs_off(Genesys_Register_Set * reg,
unsigned int scan_lines)
{
unsigned int feedl;
- Genesys_Register_Set * r;
+ GenesysRegister* r;
- DBG (DBG_proc, "gl841_init_motor_regs_off : scan_lines=%d\n",
- scan_lines);
+ DBG(DBG_proc, "%s : scan_lines=%d\n", __func__, scan_lines);
feedl = 2;
@@ -1645,9 +1216,9 @@ gl841_init_motor_regs_off(Genesys_Register_Set * reg,
* @param ydpi motor target resolution
* @return SANE_STATUS_GOOD on success
*/
-GENESYS_STATIC SANE_Status gl841_write_freq(Genesys_Device *dev, unsigned int ydpi)
+static SANE_Status gl841_write_freq(Genesys_Device *dev, unsigned int ydpi)
{
-SANE_Status status;
+SANE_Status status = SANE_STATUS_GOOD;
/**< 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};
@@ -1679,7 +1250,7 @@ uint8_t *table;
RIE(sanei_genesys_write_register(dev, 0x66, 0x00));
RIE(sanei_genesys_write_register(dev, 0x5b, 0x0c));
RIE(sanei_genesys_write_register(dev, 0x5c, 0x00));
- RIE(gl841_bulk_write_data_gamma (dev, 0x28, table, 128));
+ RIE(sanei_genesys_bulk_write_data(dev, 0x28, table, 128));
RIE(sanei_genesys_write_register(dev, 0x5b, 0x00));
RIE(sanei_genesys_write_register(dev, 0x5c, 0x00));
}
@@ -1688,31 +1259,26 @@ uint8_t *table;
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_init_motor_regs(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int feed_steps,/*1/base_ydpi*/
/*maybe float for half/quarter step resolution?*/
unsigned int action,
unsigned int flags)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int fast_exposure;
int scan_power_mode;
int use_fast_fed = 0;
uint16_t fast_slope_table[256];
unsigned int fast_slope_steps = 0;
unsigned int feedl;
- Genesys_Register_Set * r;
+ GenesysRegister* r;
/*number of scan lines to add in a scan_lines line*/
- DBG (DBG_proc, "gl841_init_motor_regs : feed_steps=%d, action=%d, flags=%x\n",
- feed_steps,
- action,
- flags);
+ DBG(DBG_proc, "%s : feed_steps=%d, action=%d, flags=%x\n", __func__, feed_steps, action, flags);
memset(fast_slope_table,0xff,512);
@@ -1728,13 +1294,13 @@ gl841_init_motor_regs(Genesys_Device * dev,
if (action == MOTOR_ACTION_FEED || action == MOTOR_ACTION_GO_HOME)
{
/* FEED and GO_HOME can use fastest slopes available */
- fast_exposure = gl841_exposure_time(dev,
+ fast_exposure = gl841_exposure_time(dev, sensor,
dev->motor.base_ydpi / 4,
0,
0,
0,
&scan_power_mode);
- DBG (DBG_info, "%s : fast_exposure=%d pixels\n", __func__, fast_exposure);
+ DBG(DBG_info, "%s : fast_exposure=%d pixels\n", __func__, fast_exposure);
}
if (action == MOTOR_ACTION_HOME_FREE) {
@@ -1786,23 +1352,23 @@ HOME_FREE: 3
* Z2
*/
- r = sanei_genesys_get_address (reg, 0x3d);
+ r = sanei_genesys_get_address(reg, 0x3d);
r->value = (feedl >> 16) & 0xf;
- r = sanei_genesys_get_address (reg, 0x3e);
+ r = sanei_genesys_get_address(reg, 0x3e);
r->value = (feedl >> 8) & 0xff;
- r = sanei_genesys_get_address (reg, 0x3f);
+ r = sanei_genesys_get_address(reg, 0x3f);
r->value = feedl & 0xff;
- r = sanei_genesys_get_address (reg, 0x5e);
+ r = sanei_genesys_get_address(reg, 0x5e);
r->value &= ~0xe0;
- r = sanei_genesys_get_address (reg, 0x25);
+ r = sanei_genesys_get_address(reg, 0x25);
r->value = 0;
- r = sanei_genesys_get_address (reg, 0x26);
+ r = sanei_genesys_get_address(reg, 0x26);
r->value = 0;
- r = sanei_genesys_get_address (reg, 0x27);
+ r = sanei_genesys_get_address(reg, 0x27);
r->value = 0;
- r = sanei_genesys_get_address (reg, 0x02);
+ r = sanei_genesys_get_address(reg, 0x02);
r->value &= ~0x01; /*LONGCURV OFF*/
r->value &= ~0x80; /*NOT_HOME OFF*/
@@ -1830,25 +1396,25 @@ HOME_FREE: 3
if (status != SANE_STATUS_GOOD)
return status;
- r = sanei_genesys_get_address (reg, 0x67);
+ r = sanei_genesys_get_address(reg, 0x67);
r->value = 0x3f;
- r = sanei_genesys_get_address (reg, 0x68);
+ r = sanei_genesys_get_address(reg, 0x68);
r->value = 0x3f;
- r = sanei_genesys_get_address (reg, REG_STEPNO);
+ r = sanei_genesys_get_address(reg, REG_STEPNO);
r->value = 0;
- r = sanei_genesys_get_address (reg, REG_FASTNO);
+ r = sanei_genesys_get_address(reg, REG_FASTNO);
r->value = 0;
- r = sanei_genesys_get_address (reg, 0x69);
+ r = sanei_genesys_get_address(reg, 0x69);
r->value = 0;
- r = sanei_genesys_get_address (reg, 0x6a);
+ r = sanei_genesys_get_address(reg, 0x6a);
r->value = (fast_slope_steps >> 1) + (fast_slope_steps & 1);
- r = sanei_genesys_get_address (reg, 0x5f);
+ r = sanei_genesys_get_address(reg, 0x5f);
r->value = (fast_slope_steps >> 1) + (fast_slope_steps & 1);
@@ -1856,11 +1422,8 @@ HOME_FREE: 3
return SANE_STATUS_GOOD;
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl841_init_motor_regs_scan(Genesys_Device * dev,
+static SANE_Status
+gl841_init_motor_regs_scan(Genesys_Device * dev, const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int scan_exposure_time,/*pixel*/
float scan_yres,/*dpi, motor resolution*/
@@ -1873,7 +1436,7 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
int scan_power_mode,
unsigned int flags)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int fast_exposure;
int use_fast_fed = 0;
int dummy_power_mode;
@@ -1888,30 +1451,29 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
unsigned int fast_slope_steps = 0;
unsigned int back_slope_steps = 0;
unsigned int feedl;
- Genesys_Register_Set * r;
+ GenesysRegister* r;
unsigned int min_restep = 0x20;
uint32_t z1, z2;
- DBG (DBG_proc, "gl841_init_motor_regs_scan : scan_exposure_time=%d, "
- "scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
- "feed_steps=%d, scan_power_mode=%d, flags=%x\n",
- scan_exposure_time,
- scan_yres,
- scan_step_type,
- scan_lines,
- scan_dummy,
- feed_steps,
- scan_power_mode,
- flags);
-
- fast_exposure = gl841_exposure_time(dev,
+ DBG(DBG_proc, "%s : scan_exposure_time=%d, scan_yres=%g, scan_step_type=%d, scan_lines=%d,"
+ " scan_dummy=%d, feed_steps=%d, scan_power_mode=%d, flags=%x\n", __func__,
+ scan_exposure_time,
+ scan_yres,
+ scan_step_type,
+ scan_lines,
+ scan_dummy,
+ feed_steps,
+ scan_power_mode,
+ flags);
+
+ fast_exposure = gl841_exposure_time(dev, sensor,
dev->motor.base_ydpi / 4,
0,
0,
0,
&dummy_power_mode);
- DBG (DBG_info, "%s : fast_exposure=%d pixels\n", __func__, fast_exposure);
+ DBG(DBG_info, "%s : fast_exposure=%d pixels\n", __func__, fast_exposure);
memset(slow_slope_table,0xff,512);
@@ -1964,7 +1526,8 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
fast_slope_steps = (feed_steps -
(slow_slope_steps >> scan_step_type))/2;
- DBG(DBG_info,"gl841_init_motor_regs_scan: Maximum allowed slope steps for fast slope: %d\n",fast_slope_steps);
+ DBG(DBG_info, "%s: Maximum allowed slope steps for fast slope: %d\n", __func__,
+ fast_slope_steps);
fast_slope_time = sanei_genesys_create_slope_table3 (
dev,
@@ -1987,7 +1550,7 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
}
else if (feed_steps < fast_slope_steps*2 + (slow_slope_steps >> scan_step_type)) {
use_fast_fed = 0;
- DBG(DBG_info,"gl841_init_motor_regs_scan: feed too short, slow move forced.\n");
+ DBG(DBG_info, "%s: feed too short, slow move forced.\n", __func__);
} else {
/* for deciding whether we should use fast mode we need to check how long we
need for (fast)accelerating, moving, decelerating, (TODO: stopping?)
@@ -2007,10 +1570,8 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
(feed_steps - (slow_slope_steps >> scan_step_type))
+ slow_slope_time;
- DBG(DBG_info,"gl841_init_motor_regs_scan: Time for slow move: %d\n",
- slow_time);
- DBG(DBG_info,"gl841_init_motor_regs_scan: Time for fast move: %d\n",
- fast_time);
+ DBG(DBG_info, "%s: Time for slow move: %d\n", __func__, slow_time);
+ DBG(DBG_info, "%s: Time for fast move: %d\n", __func__, fast_time);
use_fast_fed = fast_time < slow_time;
}
@@ -2023,8 +1584,7 @@ gl841_init_motor_regs_scan(Genesys_Device * dev,
feedl = 0;
else
feedl = (feed_steps << scan_step_type) - slow_slope_steps;
- DBG(DBG_info,"gl841_init_motor_regs_scan: Decided to use %s mode\n",
- use_fast_fed?"fast feed":"slow feed");
+ DBG(DBG_info, "%s: Decided to use %s mode\n", __func__, use_fast_fed?"fast feed":"slow feed");
/* all needed slopes available. we did even decide which mode to use.
what next?
@@ -2159,8 +1719,8 @@ HOME_FREE: 3
*/
z1 = z2 = 0;
- DBG (DBG_info, "gl841_init_motor_regs_scan: z1 = %d\n", z1);
- DBG (DBG_info, "gl841_init_motor_regs_scan: z2 = %d\n", z2);
+ DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
+ DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
r = sanei_genesys_get_address (reg, 0x60);
r->value = ((z1 >> 16) & 0xff);
r = sanei_genesys_get_address (reg, 0x61);
@@ -2207,8 +1767,8 @@ HOME_FREE: 3
static int
gl841_get_dpihw(Genesys_Device * dev)
{
- Genesys_Register_Set * r;
- r = sanei_genesys_get_address (dev->reg, 0x05);
+ GenesysRegister* r;
+ r = sanei_genesys_get_address(&dev->reg, 0x05);
if ((r->value & REG05_DPIHW) == REG05_DPIHW_600)
return 600;
if ((r->value & REG05_DPIHW) == REG05_DPIHW_1200)
@@ -2221,11 +1781,11 @@ gl841_get_dpihw(Genesys_Device * dev)
static SANE_Status
gl841_init_optical_regs_off(Genesys_Register_Set * reg)
{
- Genesys_Register_Set * r;
+ GenesysRegister* r;
DBGSTART;
- r = sanei_genesys_get_address (reg, 0x01);
+ r = sanei_genesys_get_address(reg, 0x01);
r->value &= ~REG01_SCAN;
DBGCOMPLETED;
@@ -2234,6 +1794,7 @@ gl841_init_optical_regs_off(Genesys_Register_Set * reg)
static SANE_Status
gl841_init_optical_regs_scan(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int exposure_time,
unsigned int used_res,
@@ -2242,43 +1803,39 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
int channels,
int depth,
SANE_Bool half_ccd,
- int color_filter,
+ ColorFilter color_filter,
int flags
)
{
unsigned int words_per_line;
unsigned int end;
unsigned int dpiset;
- unsigned int i;
- Genesys_Register_Set * r;
- SANE_Status status;
+ GenesysRegister* r;
+ SANE_Status status = SANE_STATUS_GOOD;
uint16_t expavg, expr, expb, expg;
- DBG (DBG_proc, "gl841_init_optical_regs_scan : exposure_time=%d, "
- "used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
- "half_ccd=%d, flags=%x\n",
- exposure_time,
- used_res,
- start,
- pixels,
- channels,
- depth,
- half_ccd,
- flags);
+ DBG(DBG_proc, "%s : exposure_time=%d, used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
+ "half_ccd=%d, flags=%x\n", __func__,
+ exposure_time,
+ used_res,
+ start,
+ pixels,
+ channels,
+ depth,
+ half_ccd,
+ flags);
end = start + pixels;
- status = gl841_set_fe (dev, AFE_SET);
+ status = gl841_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_init_optical_regs_scan: failed to set frontend: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
/* adjust used_res for chosen dpihw */
- used_res = used_res * gl841_get_dpihw(dev) / dev->sensor.optical_res;
+ used_res = used_res * gl841_get_dpihw(dev) / sensor.optical_res;
/*
with half_ccd the optical resolution of the ccd is halved. We don't apply this
@@ -2330,30 +1887,7 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
*/
r = sanei_genesys_get_address (reg, 0x03);
r->value |= REG03_AVEENB;
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value &= ~REG03_LAMPPWR;
- else
- r->value |= REG03_LAMPPWR;
-
- /* exposure times */
- r = sanei_genesys_get_address (reg, 0x10);
- for (i = 0; i < 6; i++, r++) {
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value = 0x01;/* 0x0101 is as off as possible */
- else
- { /* EXP[R,G,B] only matter for CIS scanners */
- if (dev->sensor.regs_0x10_0x1d[i] == 0x00)
- r->value = 0x01; /*0x00 will not be accepted*/
- else
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
- }
-
- r = sanei_genesys_get_address (reg, 0x19);
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value = 0xff;
- else
- r->value = 0x50;
+ sanei_genesys_set_lamp_power(dev, sensor, *reg, !(flags & OPTICAL_FLAG_DISABLE_LAMP));
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
@@ -2389,18 +1923,18 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
{
switch (color_filter)
{
- case 0:
- r->value |= 0x14; /* red filter */
- break;
- case 1:
- r->value |= 0x18; /* green filter */
- break;
- case 2:
- r->value |= 0x1c; /* blue filter */
- break;
- default:
- r->value |= 0x10; /* no filter */
- break;
+ case ColorFilter::RED:
+ r->value |= 0x14;
+ break;
+ case ColorFilter::GREEN:
+ r->value |= 0x18;
+ break;
+ case ColorFilter::BLUE:
+ r->value |= 0x1c;
+ break;
+ default:
+ r->value |= 0x10;
+ break;
}
}
else
@@ -2432,9 +1966,9 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
if (expb < expavg)
expavg = expb;
- sanei_genesys_set_double (dev->reg, REG_EXPR, expavg);
- sanei_genesys_set_double (dev->reg, REG_EXPG, expavg);
- sanei_genesys_set_double (dev->reg, REG_EXPB, expavg);
+ sanei_genesys_set_double(&dev->reg, REG_EXPR, expavg);
+ sanei_genesys_set_double(&dev->reg, REG_EXPG, expavg);
+ sanei_genesys_set_double(&dev->reg, REG_EXPB, expavg);
}
/* enable gamma tables */
@@ -2445,7 +1979,7 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
r->value |= REG05_GMMENB;
/* sensor parameters */
- sanei_gl841_setup_sensor (dev, dev->reg, 1, half_ccd);
+ sanei_gl841_setup_sensor(dev, sensor, &dev->reg, 1, half_ccd);
r = sanei_genesys_get_address (reg, 0x29);
r->value = 255; /*<<<"magic" number, only suitable for cis*/
@@ -2453,7 +1987,7 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
sanei_genesys_set_double(reg, REG_DPISET, dpiset);
sanei_genesys_set_double(reg, REG_STRPIXEL, start);
sanei_genesys_set_double(reg, REG_ENDPIXEL, end);
- DBG( DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d\n",__func__,start,end);
+ DBG(DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d\n", __func__, start, end);
/* words(16bit) before gamma, conversion to 8 bit or lineart*/
words_per_line = (pixels * dpiset) / gl841_get_dpihw(dev);
@@ -2478,22 +2012,23 @@ gl841_init_optical_regs_scan(Genesys_Device * dev,
sanei_genesys_set_double(reg, REG_LPERIOD, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
- r->value = dev->sensor.dummy_pixel;
+ r->value = sensor.dummy_pixel;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
static int
-gl841_get_led_exposure(Genesys_Device * dev)
+gl841_get_led_exposure(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int d,r,g,b,m;
if (!dev->model->is_cis)
return 0;
- d = dev->reg[reg_0x19].value;
- r = dev->sensor.regs_0x10_0x1d[1] | (dev->sensor.regs_0x10_0x1d[0] << 8);
- g = dev->sensor.regs_0x10_0x1d[3] | (dev->sensor.regs_0x10_0x1d[2] << 8);
- b = dev->sensor.regs_0x10_0x1d[5] | (dev->sensor.regs_0x10_0x1d[4] << 8);
+ d = dev->reg.find_reg(0x19).value;
+
+ r = sensor.exposure.red;
+ g = sensor.exposure.green;
+ b = sensor.exposure.blue;
m = r;
if (m < g)
@@ -2508,8 +2043,8 @@ gl841_get_led_exposure(Genesys_Device * dev)
* Compute exposure time for the device and the given scan resolution,
* also compute scan_power_mode
*/
-GENESYS_STATIC int
-gl841_exposure_time(Genesys_Device *dev,
+static int
+gl841_exposure_time(Genesys_Device *dev, const Genesys_Sensor& sensor,
float slope_dpi,
int scan_step_type,
int start,
@@ -2521,7 +2056,7 @@ int exposure_time2 = 0;
int led_exposure;
*scan_power_mode=0;
- led_exposure=gl841_get_led_exposure(dev);
+ led_exposure=gl841_get_led_exposure(dev, sensor);
exposure_time = sanei_genesys_exposure_time2(
dev,
slope_dpi,
@@ -2553,7 +2088,7 @@ int led_exposure;
* @param dev device
* @param yres motor resolution
*/
-GENESYS_STATIC int
+static int
gl841_scan_step_type(Genesys_Device *dev, int yres)
{
int scan_step_type=0;
@@ -2587,22 +2122,13 @@ int scan_step_type=0;
*
* this function sets up the scanner to scan in normal or single line mode
*/
-GENESYS_STATIC
+static
SANE_Status
-gl841_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres,/*dpi*/
- float yres,/*dpi*/
- float startx,/*optical_res, from dummy_pixel+1*/
- float starty,/*base_ydpi, from home!*/
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags
- )
+gl841_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SetupParams& params)
{
+ params.assert_valid();
+
int used_res;
int start, used_pixels;
int bytes_per_line;
@@ -2622,21 +2148,11 @@ gl841_init_scan_regs (Genesys_Device * dev,
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int oflags; /**> optical flags */
- DBG (DBG_info,
- "gl841_init_scan_regs settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g/%g\n"
- "Depth/Channels: %u/%u\n"
- "Flags : %x\n\n",
- xres, yres, lines, pixels,
- startx, starty,
- depth, channels,
- flags);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/*
results:
@@ -2669,34 +2185,32 @@ independent of our calculated values:
/* half_ccd */
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if (dev->sensor.optical_res < 2 * xres ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE)) {
- half_ccd = SANE_FALSE;
- } else {
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1) {
half_ccd = SANE_TRUE;
+ } else {
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
if (half_ccd)
optical_res /= 2;
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl841_init_scan_regs : stagger=%d lines\n",
- stagger);
+ DBG(DBG_info, "%s : stagger=%d lines\n", __func__, stagger);
/* used_res */
- i = optical_res / xres;
+ i = optical_res / params.xres;
/* gl841 supports 1/1 1/2 1/3 1/4 1/5 1/6 1/8 1/10 1/12 1/15 averaging */
- if (i < 2 || (flags & SCAN_FLAG_USE_OPTICAL_RES)) /* optical_res >= xres > optical_res/2 */
+ if (i < 2 || (params.flags & SCAN_FLAG_USE_OPTICAL_RES)) /* optical_res >= xres > optical_res/2 */
used_res = optical_res;
else if (i < 3) /* optical_res/2 >= xres > optical_res/3 */
used_res = optical_res/2;
@@ -2722,12 +2236,12 @@ independent of our calculated values:
/* use detected left margin and fixed value */
/* start */
/* add x coordinates */
- start = ((dev->sensor.CCD_start_xoffset + startx) * used_res) / dev->sensor.optical_res;
+ start = ((sensor.CCD_start_xoffset + params.startx) * used_res) / sensor.optical_res;
/* needs to be aligned for used_res */
start = (start * optical_res) / used_res;
- start += dev->sensor.dummy_pixel + 1;
+ start += sensor.dummy_pixel + 1;
if (stagger > 0)
start |= 1;
@@ -2736,7 +2250,7 @@ independent of our calculated values:
* on pixel average factor, startx is different of
* 0 only when calling for function to setup for
* scan, where shading data needs to be align */
- if((dev->reg[reg_0x01].value & REG01_SHDAREA) != 0)
+ if((dev->reg.find_reg(0x01).value & REG01_SHDAREA) != 0)
{
avg=optical_res/used_res;
start=(start/avg)*avg;
@@ -2744,10 +2258,10 @@ independent of our calculated values:
/* compute correct pixels number */
/* pixels */
- used_pixels = (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
/* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
+ if (used_pixels * params.xres < params.pixels * optical_res)
used_pixels++;
/* dummy */
@@ -2781,57 +2295,57 @@ dummy \ scanned lines
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
if (dev->model->is_cis)
- slope_dpi = yres*channels;
+ slope_dpi = params.yres* params.channels;
else
- slope_dpi = yres;
+ slope_dpi = params.yres;
slope_dpi = slope_dpi * (1 + dummy);
- scan_step_type = gl841_scan_step_type(dev, yres);
- exposure_time = gl841_exposure_time(dev,
+ scan_step_type = gl841_scan_step_type(dev, params.yres);
+ exposure_time = gl841_exposure_time(dev, sensor,
slope_dpi,
scan_step_type,
start,
used_pixels,
&scan_power_mode);
- DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
/*** optical parameters ***/
/* in case of dynamic lineart, we use an internal 8 bit gray scan
* to generate 1 lineart data */
- if(flags & SCAN_FLAG_DYNAMIC_LINEART)
+ if(params.flags & SCAN_FLAG_DYNAMIC_LINEART)
{
- depth=8;
+ params.depth=8;
}
oflags=0;
- if (flags & SCAN_FLAG_DISABLE_SHADING)
+ if (params.flags & SCAN_FLAG_DISABLE_SHADING)
{
oflags |= OPTICAL_FLAG_DISABLE_SHADING;
}
- if ((flags & SCAN_FLAG_DISABLE_GAMMA) || (depth==16))
+ if ((params.flags & SCAN_FLAG_DISABLE_GAMMA) || (params.depth==16))
{
oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
}
- if (flags & SCAN_FLAG_DISABLE_LAMP)
+ if (params.flags & SCAN_FLAG_DISABLE_LAMP)
{
oflags |= OPTICAL_FLAG_DISABLE_LAMP;
}
- if (flags & SCAN_FLAG_ENABLE_LEDADD)
+ if (params.flags & SCAN_FLAG_ENABLE_LEDADD)
{
oflags |= OPTICAL_FLAG_ENABLE_LEDADD;
}
- status = gl841_init_optical_regs_scan(dev,
+ status = gl841_init_optical_regs_scan(dev, sensor,
reg,
exposure_time,
used_res,
start,
used_pixels,
- channels,
- depth,
+ params.channels,
+ params.depth,
half_ccd,
- color_filter,
+ params.color_filter,
oflags);
if (status != SANE_STATUS_GOOD)
{
@@ -2841,18 +2355,18 @@ dummy \ scanned lines
/*** motor parameters ***/
/* scanned area must be enlarged by max color shift needed */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,flags);
+ max_shift=sanei_genesys_compute_max_shift(dev, params.channels,params.yres,params.flags);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
/* add tl_y to base movement */
- move = starty;
- DBG (DBG_info, "gl841_init_scan_regs: move=%d steps\n", move);
+ move = params.starty;
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
/* subtract current head position */
move -= dev->scanhead_position_in_steps;
- DBG (DBG_info, "gl841_init_scan_regs: move=%d steps\n", move);
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
if (move < 0)
move = 0;
@@ -2860,21 +2374,21 @@ dummy \ scanned lines
/* round it */
/* the move is not affected by dummy -- pierre */
/* move = ((move + dummy) / (dummy + 1)) * (dummy + 1);
- DBG (DBG_info, "gl841_init_scan_regs: move=%d steps\n", move);*/
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);*/
- if (flags & SCAN_FLAG_SINGLE_LINE)
- status = gl841_init_motor_regs_off(reg, dev->model->is_cis?lincnt*channels:lincnt);
+ if (params.flags & SCAN_FLAG_SINGLE_LINE)
+ status = gl841_init_motor_regs_off(reg, dev->model->is_cis?lincnt* params.channels:lincnt);
else
- status = gl841_init_motor_regs_scan(dev,
+ status = gl841_init_motor_regs_scan(dev, sensor,
reg,
exposure_time,
slope_dpi,
scan_step_type,
- dev->model->is_cis?lincnt*channels:lincnt,
+ dev->model->is_cis?lincnt* params.channels:lincnt,
dummy,
move,
scan_power_mode,
- (flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)?
+ (params.flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)?
MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE:0
);
@@ -2886,49 +2400,44 @@ dummy \ scanned lines
/* words_per_line */
bytes_per_line = (used_pixels * used_res) / optical_res;
- bytes_per_line = (bytes_per_line * channels * depth) / 8;
+ bytes_per_line = (bytes_per_line * params.channels * params.depth) / 8;
requested_buffer_size = 8 * bytes_per_line;
/* we must use a round number of bytes_per_line */
- if (requested_buffer_size > BULKIN_MAXSIZE)
+ if (requested_buffer_size > sanei_genesys_get_bulk_max_size(dev))
requested_buffer_size =
- (BULKIN_MAXSIZE / bytes_per_line) * bytes_per_line;
+ (sanei_genesys_get_bulk_max_size(dev) / bytes_per_line) * bytes_per_line;
read_buffer_size =
2 * requested_buffer_size +
- ((max_shift + stagger) * used_pixels * channels * depth) / 8;
+ ((max_shift + stagger) * used_pixels * params.channels * params.depth) / 8;
- RIE(sanei_genesys_buffer_free(&(dev->read_buffer)));
- RIE(sanei_genesys_buffer_alloc(&(dev->read_buffer), read_buffer_size));
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
- RIE(sanei_genesys_buffer_free(&(dev->lines_buffer)));
- RIE(sanei_genesys_buffer_alloc(&(dev->lines_buffer), read_buffer_size));
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
- RIE(sanei_genesys_buffer_free(&(dev->shrink_buffer)));
- RIE(sanei_genesys_buffer_alloc(&(dev->shrink_buffer),
- requested_buffer_size));
-
- RIE(sanei_genesys_buffer_free(&(dev->out_buffer)));
- RIE(sanei_genesys_buffer_alloc(&(dev->out_buffer),
- (8 * dev->settings.pixels * channels * depth) / 8));
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc((8 * dev->settings.pixels * params.channels * params.depth) / 8);
dev->read_bytes_left = bytes_per_line * lincnt;
- DBG (DBG_info,
- "gl841_init_scan_regs: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
dev->read_active = SANE_TRUE;
-
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res)/optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
@@ -2948,36 +2457,28 @@ dummy \ scanned lines
*/
dev->total_bytes_read = 0;
- if (depth == 1)
+ if (params.depth == 1)
dev->total_bytes_to_read =
((dev->settings.pixels * dev->settings.lines) / 8 +
(((dev->settings.pixels * dev->settings.lines)%8)?1:0)
- ) * channels;
+ ) * params.channels;
else
dev->total_bytes_to_read =
- dev->settings.pixels * dev->settings.lines * channels * (depth / 8);
+ dev->settings.pixels * dev->settings.lines * params.channels * (params.depth / 8);
- DBG (DBG_info, "gl841_init_scan_regs: total bytes to send = %lu\n",
- (u_long) dev->total_bytes_to_read);
+ DBG(DBG_info, "%s: total bytes to send = %lu\n", __func__, (u_long) dev->total_bytes_to_read);
/* END TODO */
- DBG (DBG_proc, "gl841_init_scan_regs: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
-static SANE_Status
-gl841_calculate_current_setup (Genesys_Device * dev)
+static void gl841_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int depth;
int start;
- float xres;/*dpi*/
- float yres;/*dpi*/
- float startx;/*optical_res, from dummy_pixel+1*/
- float pixels;
- float lines;
-
int used_res;
int used_pixels;
unsigned int lincnt;
@@ -2994,25 +2495,18 @@ gl841_calculate_current_setup (Genesys_Device * dev)
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- DBG (DBG_info,
- "gl841_calculate_current_setup settings:\n"
- "Resolution: %uDPI\n"
- "Lines : %u\n"
- "PPL : %u\n"
- "Startpos : %.3f/%.3f\n"
- "Scan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == 4) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == 0)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
/* start */
@@ -3020,52 +2514,49 @@ gl841_calculate_current_setup (Genesys_Device * dev)
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
-
- xres = dev->settings.xres;/*dpi*/
- yres = dev->settings.yres;/*dpi*/
- startx = start;/*optical_res, from dummy_pixel+1*/
- pixels = dev->settings.pixels;
- lines = dev->settings.lines;
-
- DBG (DBG_info,
- "gl841_calculate_current_setup settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g\n"
- "Depth/Channels: %u/%u\n\n",
- xres, yres, lines, pixels,
- startx,
- depth, channels);
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = 0; // not used
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = 0;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* half_ccd */
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if ((dev->sensor.optical_res < 2 * xres) ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE)) {
- half_ccd = SANE_FALSE;
- } else {
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1) {
half_ccd = SANE_TRUE;
+ } else {
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
if (half_ccd)
optical_res /= 2;
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl841_calculate_current_setup: stagger=%d lines\n",
- stagger);
+ DBG(DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
/* used_res */
- i = optical_res / xres;
+ i = optical_res / params.xres;
/* gl841 supports 1/1 1/2 1/3 1/4 1/5 1/6 1/8 1/10 1/12 1/15 averaging */
@@ -3093,30 +2584,24 @@ gl841_calculate_current_setup (Genesys_Device * dev)
/* compute scan parameters values */
/* pixels are allways given at half or full CCD optical resolution */
/* use detected left margin and fixed value */
-/* start */
- /* add x coordinates */
- start =
- ((dev->sensor.CCD_start_xoffset + startx) * used_res) /
- dev->sensor.optical_res;
+ start = ((sensor.CCD_start_xoffset + params.startx) * used_res) / sensor.optical_res;
/* needs to be aligned for used_res */
start = (start * optical_res) / used_res;
- start += dev->sensor.dummy_pixel + 1;
+ start += sensor.dummy_pixel + 1;
- if (stagger > 0)
+ if (stagger > 0) {
start |= 1;
+ }
- /* compute correct pixels number */
-/* pixels */
- used_pixels =
- (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
- /* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
- used_pixels++;
+ // round up pixels number if needed
+ if (used_pixels * params.xres < params.pixels * optical_res) {
+ used_pixels++;
+ }
-/* dummy */
/* dummy lines: may not be usefull, for instance 250 dpi works with 0 or 1
dummy line. Maybe the dummy line adds correctness since the motor runs
slower (higher dpi)
@@ -3143,114 +2628,53 @@ dummy \ scanned lines
*/
dummy = 0;
-/* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
- if (dev->model->is_cis)
- slope_dpi = yres*channels;
- else
- slope_dpi = yres;
+ if (dev->model->is_cis) {
+ slope_dpi = params.yres * params.channels;
+ } else {
+ slope_dpi = params.yres;
+ }
slope_dpi = slope_dpi * (1 + dummy);
- scan_step_type = gl841_scan_step_type(dev, yres);
- exposure_time = gl841_exposure_time(dev,
+ scan_step_type = gl841_scan_step_type(dev, params.yres);
+ exposure_time = gl841_exposure_time(dev, sensor,
slope_dpi,
scan_step_type,
start,
used_pixels,
&scan_power_mode);
- DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
/* scanned area must be enlarged by max color shift needed */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,0);
+ max_shift = sanei_genesys_compute_max_shift(dev, params.channels, params.yres, 0);
- /* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res)/optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static void
-gl841_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
-
- DBG (DBG_proc, "gl841_set_motor_power\n");
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, 0x02,
- sanei_genesys_read_reg_from_set (regs,
- 0x02) |
- REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, 0x02,
- sanei_genesys_read_reg_from_set (regs,
- 0x02) &
- ~REG02_MTRPWR);
- }
-}
-
-static void
-gl841_set_lamp_power (Genesys_Device * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- Genesys_Register_Set * r;
- int i;
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set (regs,
- 0x03) |
- REG03_LAMPPWR);
-
- r = sanei_genesys_get_address (regs, 0x10);
- for (i = 0; i < 6; i++, r++) {
- if (dev->sensor.regs_0x10_0x1d[i] == 0x00)
- r->value = 0x01;/*0x00 will not be accepted*/
- else
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
- r = sanei_genesys_get_address (regs, 0x19);
- r->value = 0x50;
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, 0x03,
- sanei_genesys_read_reg_from_set (regs,
- 0x03) &
- ~REG03_LAMPPWR);
-
- r = sanei_genesys_get_address (regs, 0x10);
- for (i = 0; i < 6; i++, r++) {
- r->value = 0x01;/* 0x0101 is as off as possible */
- }
- r = sanei_genesys_get_address (regs, 0x19);
- r->value = 0xff;
- }
}
/*for fast power saving methods only, like disabling certain amplifiers*/
-static SANE_Status
-gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
+static SANE_Status gl841_save_power(Genesys_Device * dev, SANE_Bool enable)
+{
uint8_t val;
- DBG(DBG_proc, "gl841_save_power: enable = %d\n", enable);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ DBG(DBG_proc, "%s: enable = %d\n", __func__, enable);
if (enable)
{
@@ -3264,7 +2688,7 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
sanei_genesys_read_register(dev, REG6D, &val);
sanei_genesys_write_register(dev, REG6D, val | 0x80);
- usleep(1000);
+ sanei_genesys_sleep_ms(1);
/*enable GPIO9*/
sanei_genesys_read_register(dev, REG6C, &val);
@@ -3278,7 +2702,7 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
sanei_genesys_read_register(dev, REG6B, &val);
sanei_genesys_write_register(dev, REG6B, val & ~REG6B_GPO18);
- usleep(1000);
+ sanei_genesys_sleep_ms(1);
sanei_genesys_read_register(dev, REG6D, &val);
sanei_genesys_write_register(dev, REG6D, val & ~0x80);
@@ -3288,11 +2712,11 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
{
sanei_genesys_read_register(dev, REG6B, &val);
sanei_genesys_write_register(dev, REG6B, val & ~REG6B_GPO17);
- dev->reg[reg_0x6b].value &= ~REG6B_GPO17;
- dev->calib_reg[reg_0x6b].value &= ~REG6B_GPO17;
+ dev->reg.find_reg(0x6b).value &= ~REG6B_GPO17;
+ dev->calib_reg.find_reg(0x6b).value &= ~REG6B_GPO17;
}
- gl841_set_fe (dev, AFE_POWER_SAVE);
+ gl841_set_fe(dev, sensor, AFE_POWER_SAVE);
}
else
@@ -3307,7 +2731,7 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
sanei_genesys_read_register(dev, REG6D, &val);
sanei_genesys_write_register(dev, REG6D, val | 0x80);
- usleep(10000);
+ sanei_genesys_sleep_ms(10);
/*disable GPIO9*/
sanei_genesys_read_register(dev, REG6C, &val);
@@ -3320,14 +2744,14 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
/*enable GPO17*/
sanei_genesys_read_register(dev, REG6B, &val);
sanei_genesys_write_register(dev, REG6B, val | REG6B_GPO17);
- dev->reg[reg_0x6b].value |= REG6B_GPO17;
- dev->calib_reg[reg_0x6b].value |= REG6B_GPO17;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO17;
+ dev->calib_reg.find_reg(0x6b).value |= REG6B_GPO17;
/*enable GPO18*/
sanei_genesys_read_register(dev, REG6B, &val);
sanei_genesys_write_register(dev, REG6B, val | REG6B_GPO18);
- dev->reg[reg_0x6b].value |= REG6B_GPO18;
- dev->calib_reg[reg_0x6b].value |= REG6B_GPO18;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO18;
+ dev->calib_reg.find_reg(0x6b).value |= REG6B_GPO18;
}
if (dev->model->gpo_type == GPO_DP665
@@ -3335,8 +2759,8 @@ gl841_save_power(Genesys_Device * dev, SANE_Bool enable) {
{
sanei_genesys_read_register(dev, REG6B, &val);
sanei_genesys_write_register(dev, REG6B, val | REG6B_GPO17);
- dev->reg[reg_0x6b].value |= REG6B_GPO17;
- dev->calib_reg[reg_0x6b].value |= REG6B_GPO17;
+ dev->reg.find_reg(0x6b).value |= REG6B_GPO17;
+ dev->calib_reg.find_reg(0x6b).value |= REG6B_GPO17;
}
}
@@ -3348,44 +2772,35 @@ static SANE_Status
gl841_set_powersaving (Genesys_Device * dev,
int delay /* in minutes */ )
{
- SANE_Status status;
- Genesys_Register_Set local_reg[7];
+ SANE_Status status = SANE_STATUS_GOOD;
+ // FIXME: SEQUENTIAL not really needed in this case
+ Genesys_Register_Set local_reg(Genesys_Register_Set::SEQUENTIAL);
int rate, exposure_time, tgtime, time;
- DBG (DBG_proc, "gl841_set_powersaving (delay = %d)\n", delay);
-
- local_reg[0].address = 0x01;
- local_reg[0].value = sanei_genesys_read_reg_from_set (dev->reg, 0x01); /* disable fastmode */
-
- local_reg[1].address = 0x03;
- local_reg[1].value = sanei_genesys_read_reg_from_set (dev->reg, 0x03); /* Lamp power control */
-
- local_reg[2].address = 0x05;
- local_reg[2].value = sanei_genesys_read_reg_from_set (dev->reg, 0x05) /*& ~REG05_BASESEL*/; /* 24 clocks/pixel */
-
- local_reg[3].address = 0x18; /* Set CCD type */
- local_reg[3].value = 0x00;
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
- local_reg[4].address = 0x38; /* line period low */
- local_reg[4].value = 0x00;
+ local_reg.init_reg(0x01, dev->reg.get8(0x01)); /* disable fastmode */
+ local_reg.init_reg(0x03, dev->reg.get8(0x03)); /* Lamp power control */
+ local_reg.init_reg(0x05, dev->reg.get8(0x05)); /*& ~REG05_BASESEL*/; /* 24 clocks/pixel */
+ local_reg.init_reg(0x18, 0x00); // Set CCD type
+ local_reg.init_reg(0x38, 0x00);
+ local_reg.init_reg(0x39, 0x00);
- local_reg[5].address = 0x39; /* line period high */
- local_reg[5].value = 0x00;
+ // period times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE
+ local_reg.init_reg(0x1c, dev->reg.get8(0x05) & ~REG1C_TGTIME);
- local_reg[6].address = 0x1c; /* period times for LPeriod, expR,expG,expB, Z1MODE, Z2MODE */
- local_reg[6].value = sanei_genesys_read_reg_from_set (dev->reg, 0x05) & ~REG1C_TGTIME;
-
- if (!delay)
- local_reg[1].value = local_reg[1].value & 0xf0; /* disable lampdog and set lamptime = 0 */
- else if (delay < 20)
- local_reg[1].value = (local_reg[1].value & 0xf0) | 0x09; /* enable lampdog and set lamptime = 1 */
- else
- local_reg[1].value = (local_reg[1].value & 0xf0) | 0x0f; /* enable lampdog and set lamptime = 7 */
+ if (!delay) {
+ local_reg.find_reg(0x03).value = local_reg.find_reg(0x03).value & 0xf0; /* disable lampdog and set lamptime = 0 */
+ } else if (delay < 20) {
+ local_reg.find_reg(0x03).value = (local_reg.find_reg(0x03).value & 0xf0) | 0x09; /* enable lampdog and set lamptime = 1 */
+ } else {
+ local_reg.find_reg(0x03).value = (local_reg.find_reg(0x03).value & 0xf0) | 0x0f; /* enable lampdog and set lamptime = 7 */
+ }
time = delay * 1000 * 60; /* -> msec */
exposure_time =
(uint32_t) (time * 32000.0 /
- (24.0 * 64.0 * (local_reg[1].value & REG03_LAMPTIM) *
+ (24.0 * 64.0 * (local_reg.find_reg(0x03).value & REG03_LAMPTIM) *
1024.0) + 0.5);
/* 32000 = system clock, 24 = clocks per pixel */
rate = (exposure_time + 65536) / 65536;
@@ -3410,48 +2825,38 @@ gl841_set_powersaving (Genesys_Device * dev,
tgtime = 0;
}
- local_reg[6].value |= tgtime;
+ local_reg.find_reg(0x1c).value |= tgtime;
exposure_time /= rate;
if (exposure_time > 65535)
exposure_time = 65535;
- local_reg[4].value = exposure_time >> 8; /* highbyte */
- local_reg[5].value = exposure_time & 255; /* lowbyte */
+ local_reg.set8(0x38, exposure_time >> 8);
+ local_reg.set8(0x39, exposure_time & 255); /* lowbyte */
- status =
- gl841_bulk_write_register (dev, local_reg,
- sizeof (local_reg)/sizeof (local_reg[0]));
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
- DBG (DBG_error,
- "gl841_set_powersaving: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
- DBG (DBG_proc, "gl841_set_powersaving: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_start_action (Genesys_Device * dev)
{
return sanei_genesys_write_register (dev, 0x0f, 0x01);
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_stop_action (Genesys_Device * dev)
{
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS+1];
- SANE_Status status;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val40, val;
unsigned int loop;
- DBG (DBG_proc, "%s\n", __func__);
+ DBG(DBG_proc, "%s\n", __func__);
status = sanei_genesys_get_status (dev, &val);
if (DBG_LEVEL >= DBG_io)
@@ -3462,9 +2867,7 @@ gl841_stop_action (Genesys_Device * dev)
status = sanei_genesys_read_register(dev, 0x40, &val40);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n",__func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -3472,21 +2875,20 @@ gl841_stop_action (Genesys_Device * dev)
/* only stop action if needed */
if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG))
{
- DBG (DBG_info, "%s: already stopped\n", __func__);
+ DBG(DBG_info, "%s: already stopped\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS+1) * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
- gl841_init_optical_regs_off(local_reg);
+ gl841_init_optical_regs_off(&local_reg);
- gl841_init_motor_regs_off(local_reg,0);
- status = gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ gl841_init_motor_regs_off(&local_reg,0);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3504,9 +2906,7 @@ gl841_stop_action (Genesys_Device * dev)
}
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n",__func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -3518,7 +2918,7 @@ gl841_stop_action (Genesys_Device * dev)
return SANE_STATUS_GOOD;
}
- usleep(100*1000);
+ sanei_genesys_sleep_ms(100);
loop--;
}
@@ -3529,15 +2929,13 @@ gl841_stop_action (Genesys_Device * dev)
static SANE_Status
gl841_get_paper_sensor(Genesys_Device * dev, SANE_Bool * paper_loaded)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
status = sanei_genesys_read_register(dev, REG6D, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_get_paper_sensor: failed to read gpio: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read gpio: %s\n", __func__, sane_strstatus(status));
return status;
}
*paper_loaded = (val & 0x1) == 0;
@@ -3547,79 +2945,83 @@ gl841_get_paper_sensor(Genesys_Device * dev, SANE_Bool * paper_loaded)
static SANE_Status
gl841_eject_document (Genesys_Device * dev)
{
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS+1];
- SANE_Status status;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
SANE_Bool paper_loaded;
unsigned int init_steps;
float feed_mm;
int loop;
- DBG (DBG_proc, "gl841_eject_document\n");
+ DBG(DBG_proc, "%s\n", __func__);
if (dev->model->is_sheetfed == SANE_FALSE)
{
- DBG (DBG_proc, "gl841_eject_document: there is no \"eject sheet\"-concept for non sheet fed\n");
- DBG (DBG_proc, "gl841_eject_document: finished\n");
+ DBG(DBG_proc, "%s: there is no \"eject sheet\"-concept for non sheet fed\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
- memset (local_reg, 0, sizeof (local_reg));
+ local_reg.clear();
val = 0;
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to read status register: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read status register: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to stop motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop motor: %s\n", __func__, sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS+1) * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
- gl841_init_optical_regs_off(local_reg);
+ gl841_init_optical_regs_off(&local_reg);
- gl841_init_motor_regs(dev,local_reg,
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+ gl841_init_motor_regs(dev, sensor, &local_reg,
65536,MOTOR_ACTION_FEED,0);
- status =
- gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = gl841_start_action (dev);
- if (status != SANE_STATUS_GOOD)
+ try {
+ status = gl841_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl841_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ sanei_genesys_bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+
+ if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to start motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl841_stop_action (dev);
/* send original registers */
- gl841_bulk_write_register (dev, dev->reg, GENESYS_GL841_MAX_REGS);
+ sanei_genesys_bulk_write_register(dev, dev->reg);
return status;
}
RIE(gl841_get_paper_sensor(dev, &paper_loaded));
if (paper_loaded)
{
- DBG (DBG_info,
- "gl841_eject_document: paper still loaded\n");
+ DBG(DBG_info, "%s: paper still loaded\n", __func__);
/* force document TRUE, because it is definitely present */
dev->document = SANE_TRUE;
dev->scanhead_position_in_steps = 0;
@@ -3632,12 +3034,11 @@ gl841_eject_document (Genesys_Device * dev)
if (!paper_loaded)
{
- DBG (DBG_info,
- "gl841_eject_document: reached home position\n");
- DBG (DBG_proc, "gl841_eject_document: finished\n");
+ DBG(DBG_info, "%s: reached home position\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
break;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
--loop;
}
@@ -3645,8 +3046,7 @@ gl841_eject_document (Genesys_Device * dev)
{
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl841_stop_action (dev);
- DBG (DBG_error,
- "gl841_eject_document: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
}
@@ -3660,9 +3060,7 @@ gl841_eject_document (Genesys_Device * dev)
status = sanei_genesys_read_feed_steps(dev, &init_steps);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to read feed steps: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read feed steps: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3675,36 +3073,31 @@ gl841_eject_document (Genesys_Device * dev)
status = sanei_genesys_read_feed_steps(dev, &steps);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to read feed steps: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read feed steps: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info, "gl841_eject_document: init_steps: %d, steps: %d\n",
- init_steps, steps);
+ DBG(DBG_info, "%s: init_steps: %d, steps: %d\n", __func__, init_steps, steps);
if (steps > init_steps + (feed_mm * dev->motor.base_ydpi) / MM_PER_INCH)
{
break;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
++loop;
}
status = gl841_stop_action(dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_eject_document: failed to stop motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop motor: %s\n", __func__, sane_strstatus(status));
return status;
}
dev->document = SANE_FALSE;
- DBG (DBG_proc, "gl841_eject_document: finished\n");
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -3712,10 +3105,10 @@ gl841_eject_document (Genesys_Device * dev)
static SANE_Status
gl841_load_document (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Bool paper_loaded;
int loop = 300;
- DBG (DBG_proc, "gl841_load_document\n");
+ DBG(DBG_proc, "%s\n", __func__);
while (loop > 0) /* do not wait longer then 30 seconds */
{
@@ -3723,28 +3116,27 @@ gl841_load_document (Genesys_Device * dev)
if (paper_loaded)
{
- DBG (DBG_info,
- "gl841_load_document: document inserted\n");
+ DBG(DBG_info, "%s: document inserted\n", __func__);
/* when loading OK, document is here */
dev->document = SANE_TRUE;
- usleep (1000000); /* give user 1000ms to place document correctly */
+ // give user some time to place document correctly
+ sanei_genesys_sleep_ms(1000);
break;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
--loop;
}
if (loop == 0)
{
/* when we come here then the user needed to much time for this */
- DBG (DBG_error,
- "gl841_load_document: timeout while waiting for document\n");
+ DBG(DBG_error, "%s: timeout while waiting for document\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- DBG (DBG_proc, "gl841_load_document: finished\n");
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -3762,33 +3154,40 @@ gl841_detect_document_end (Genesys_Device * dev)
uint8_t val;
size_t total_bytes_to_read;
- DBG (DBG_proc, "%s: begin\n", __func__);
+ DBG(DBG_proc, "%s: begin\n", __func__);
RIE (gl841_get_paper_sensor (dev, &paper_loaded));
/* sheetfed scanner uses home sensor as paper present */
if ((dev->document == SANE_TRUE) && !paper_loaded)
{
- DBG (DBG_info, "%s: no more document\n", __func__);
+ DBG(DBG_info, "%s: no more document\n", __func__);
dev->document = SANE_FALSE;
/* we can't rely on total_bytes_to_read since the frontend
* might have been slow to read data, so we re-evaluate the
* amount of data to scan form the hardware settings
*/
- status=sanei_genesys_read_scancnt(dev,&scancnt);
- if(status!=SANE_STATUS_GOOD)
+ try {
+ status = sanei_genesys_read_scancnt(dev, &scancnt);
+ } catch (...) {
+ dev->total_bytes_to_read = dev->total_bytes_read;
+ dev->read_bytes_left = 0;
+ throw;
+ }
+
+ if(status!=SANE_STATUS_GOOD)
{
dev->total_bytes_to_read = dev->total_bytes_read;
dev->read_bytes_left = 0;
- DBG (DBG_proc, "%s: finished\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
- if (dev->settings.scan_mode == SCAN_MODE_COLOR && dev->model->is_cis)
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS && dev->model->is_cis)
{
scancnt/=3;
}
- DBG (DBG_io, "%s: scancnt=%u lines\n",__func__, scancnt);
+ DBG(DBG_io, "%s: scancnt=%u lines\n", __func__, scancnt);
RIE(sanei_genesys_read_register(dev, 0x25, &val));
lincnt=65536*val;
@@ -3796,43 +3195,43 @@ gl841_detect_document_end (Genesys_Device * dev)
lincnt+=256*val;
RIE(sanei_genesys_read_register(dev, 0x27, &val));
lincnt+=val;
- DBG (DBG_io, "%s: lincnt=%u lines\n",__func__, lincnt);
+ DBG(DBG_io, "%s: lincnt=%u lines\n", __func__, lincnt);
postcnt=(SANE_UNFIX(dev->model->post_scan)/MM_PER_INCH)*dev->settings.yres;
- DBG (DBG_io, "%s: postcnt=%u lines\n",__func__, postcnt);
+ DBG(DBG_io, "%s: postcnt=%u lines\n", __func__, postcnt);
/* the current scancnt is also the final one, so we use it to
* compute total bytes to read. We also add the line count to eject document */
total_bytes_to_read=(scancnt+postcnt)*dev->wpl;
- DBG (DBG_io, "%s: old total_bytes_to_read=%u\n",__func__,(unsigned int)dev->total_bytes_to_read);
- DBG (DBG_io, "%s: new total_bytes_to_read=%u\n",__func__,(unsigned int)total_bytes_to_read);
+ DBG(DBG_io, "%s: old total_bytes_to_read=%u\n", __func__,
+ (unsigned int)dev->total_bytes_to_read);
+ DBG(DBG_io, "%s: new total_bytes_to_read=%u\n", __func__, (unsigned int)total_bytes_to_read);
/* assign new end value */
if(dev->total_bytes_to_read>total_bytes_to_read)
{
- DBG (DBG_io, "%s: scan shorten\n",__func__);
+ DBG(DBG_io, "%s: scan shorten\n", __func__);
dev->total_bytes_to_read=total_bytes_to_read;
}
}
- DBG (DBG_proc, "%s: finished\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
/* Send the low-level scan command */
/* todo : is this that useful ? */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl841_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+static SANE_Status
+gl841_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
SANE_Bool start_motor)
{
- SANE_Status status;
- Genesys_Register_Set local_reg[4];
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
+ // FIXME: SEQUENTIAL not really needed in this case
+ Genesys_Register_Set local_reg(Genesys_Register_Set::SEQUENTIAL);
uint8_t val;
- DBG (DBG_proc, "gl841_begin_scan\n");
+ DBG(DBG_proc, "%s\n", __func__);
if (dev->model->gpo_type == GPO_CANONLIDE80)
{
@@ -3841,56 +3240,44 @@ gl841_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
RIE (sanei_genesys_write_register (dev, REG6B, val));
}
- local_reg[0].address = 0x03;
- if (dev->model->ccd_type != CCD_PLUSTEK_3600)
- {
- local_reg[0].value = sanei_genesys_read_reg_from_set (reg, 0x03) | REG03_LAMPPWR;
- }
- else
- {
- local_reg[0].value = sanei_genesys_read_reg_from_set (reg, 0x03); /* TODO PLUSTEK_3600: why ?? */
+ if (dev->model->ccd_type != CCD_PLUSTEK_3600) {
+ local_reg.init_reg(0x03, sanei_genesys_read_reg_from_set(reg, 0x03) | REG03_LAMPPWR);
+ } else {
+ // TODO PLUSTEK_3600: why ??
+ local_reg.init_reg(0x03, sanei_genesys_read_reg_from_set(reg, 0x03));
}
- local_reg[1].address = 0x01;
- local_reg[1].value = sanei_genesys_read_reg_from_set (reg, 0x01) | REG01_SCAN; /* set scan bit */
-
- local_reg[2].address = 0x0d;
- local_reg[2].value = 0x01;
+ local_reg.init_reg(0x01, sanei_genesys_read_reg_from_set(reg, 0x01) | REG01_SCAN); /* set scan bit */
+ local_reg.init_reg(0x0d, 0x01);
- local_reg[3].address = 0x0f;
- if (start_motor)
- local_reg[3].value = 0x01;
- else
- local_reg[3].value = 0x00; /* do not start motor yet */
+ if (start_motor) {
+ local_reg.init_reg(0x0f, 0x01);
+ } else {
+ // do not start motor yet
+ local_reg.init_reg(0x0f, 0x00);
+ }
- status =
- gl841_bulk_write_register (dev, local_reg,
- sizeof (local_reg)/sizeof (local_reg[0]));
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_begin_scan: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_proc, "gl841_begin_scan: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_end_scan (Genesys_Device * dev, Genesys_Register_Set __sane_unused__ * reg,
SANE_Bool check_stop)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl841_end_scan (check_stop = %d)\n", check_stop);
+ DBG(DBG_proc, "%s (check_stop = %d)\n", __func__, check_stop);
if (dev->model->is_sheetfed == SANE_TRUE)
{
@@ -3901,64 +3288,70 @@ gl841_end_scan (Genesys_Device * dev, Genesys_Register_Set __sane_unused__ * reg
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_end_scan: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
}
- DBG (DBG_proc, "gl841_end_scan: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
/* Moves the slider to steps */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_feed (Genesys_Device * dev, int steps)
{
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS+1];
- SANE_Status status;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
int loop;
- DBG (DBG_proc, "gl841_feed (steps = %d)\n", steps);
+ DBG(DBG_proc, "%s (steps = %d)\n", __func__, steps);
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl841_feed: failed to stop action: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop action: %s\n", __func__, sane_strstatus(status));
return status;
}
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS+1) * sizeof (Genesys_Register_Set));
+ // FIXME: we should pick sensor according to the resolution scanner is currently operating on
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ local_reg = dev->reg;
- gl841_init_optical_regs_off(local_reg);
+ gl841_init_optical_regs_off(&local_reg);
- gl841_init_motor_regs(dev,local_reg, steps,MOTOR_ACTION_FEED,0);
+ gl841_init_motor_regs(dev, sensor, &local_reg, steps,MOTOR_ACTION_FEED,0);
- status = gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_feed: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = gl841_start_action (dev);
+ try {
+ status = gl841_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl841_stop_action (dev);
+ } catch (...) {}
+ try {
+ // send original registers
+ sanei_genesys_bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_feed: failed to start motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl841_stop_action (dev);
/* send original registers */
- gl841_bulk_write_register (dev, dev->reg, GENESYS_GL841_MAX_REGS);
+ sanei_genesys_bulk_write_register(dev, dev->reg);
return status;
}
@@ -3968,50 +3361,43 @@ gl841_feed (Genesys_Device * dev, int steps)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_feed: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (!(val & REG41_MOTORENB)) /* motor enabled */
{
- DBG (DBG_proc, "gl841_feed: finished\n");
+ DBG(DBG_proc, "%s: finished\n", __func__);
dev->scanhead_position_in_steps += steps;
return SANE_STATUS_GOOD;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
++loop;
}
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl841_stop_action (dev);
- DBG (DBG_error,
- "gl841_feed: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
/* Moves the slider to the home (top) position slowly */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
{
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS+1];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
uint8_t val;
int loop = 0;
- DBG (DBG_proc, "gl841_slow_back_home (wait_until_home = %d)\n",
- wait_until_home);
+ DBG(DBG_proc, "%s (wait_until_home = %d)\n", __func__, wait_until_home);
if (dev->model->is_sheetfed == SANE_TRUE)
{
- DBG (DBG_proc, "gl841_slow_back_home: there is no \"home\"-concept for sheet fed\n");
- DBG (DBG_proc, "gl841_slow_back_home: finished\n");
+ DBG(DBG_proc, "%s: there is no \"home\"-concept for sheet fed\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -4034,24 +3420,20 @@ gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
{
sanei_genesys_print_status (val);
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
/* second is reliable */
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
@@ -4063,14 +3445,13 @@ gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
if (val & REG41_HOMESNR) /* is sensor at home? */
{
- DBG (DBG_info,
- "gl841_slow_back_home: already at home, completed\n");
+ DBG(DBG_info, "%s: already at home, completed\n", __func__);
dev->scanhead_position_in_steps = 0;
return SANE_STATUS_GOOD;
}
/* end previous scan if any */
- r = sanei_genesys_get_address (dev->reg, REG01);
+ r = sanei_genesys_get_address(&dev->reg, REG01);
r->value &= ~REG01_SCAN;
status = sanei_genesys_write_register (dev, REG01, r->value);
@@ -4080,34 +3461,44 @@ gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_slow_back_home: failed to stop motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop motor: %s\n", __func__, sane_strstatus(status));
return SANE_STATUS_IO_ERROR;
}
}
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS+1) * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
- gl841_init_motor_regs(dev,local_reg, 65536,MOTOR_ACTION_GO_HOME,0);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
+ gl841_init_motor_regs(dev, sensor, &local_reg, 65536,MOTOR_ACTION_GO_HOME,0);
/* set up for reverse and no scan */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address(&local_reg, REG02);
r->value |= REG02_MTRREV;
- r = sanei_genesys_get_address (local_reg, REG01);
+ r = sanei_genesys_get_address(&local_reg, REG01);
r->value &= ~REG01_SCAN;
- RIE (gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS));
+ RIE (sanei_genesys_bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl841_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl841_stop_action(dev);
+ } catch (...) {}
+ try {
+ sanei_genesys_bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
- status = gl841_start_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_slow_back_home: failed to start motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl841_stop_action (dev);
/* send original registers */
- gl841_bulk_write_register (dev, dev->reg, GENESYS_GL841_MAX_REGS);
+ sanei_genesys_bulk_write_register(dev, dev->reg);
return status;
}
@@ -4118,31 +3509,29 @@ gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
if (val & REG41_HOMESNR) /* home sensor */
{
- DBG (DBG_info, "gl841_slow_back_home: reached home position\n");
- DBG (DBG_proc, "gl841_slow_back_home: finished\n");
+ DBG(DBG_info, "%s: reached home position\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
++loop;
}
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl841_stop_action (dev);
- DBG (DBG_error,
- "gl841_slow_back_home: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- DBG (DBG_info, "gl841_slow_back_home: scanhead is still moving\n");
- DBG (DBG_proc, "gl841_slow_back_home: finished\n");
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -4152,9 +3541,8 @@ static SANE_Status
gl841_search_start_position (Genesys_Device * dev)
{
int size;
- SANE_Status status;
- uint8_t *data;
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS+1];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
int steps;
int pixels = 600;
@@ -4162,60 +3550,56 @@ gl841_search_start_position (Genesys_Device * dev)
DBGSTART;
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS +1) * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
/* sets for a 200 lines * 600 pixels */
/* normal scan with no shading */
- status = gl841_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0,/*we should give a small offset here~60 steps*/
- 600,
- dev->model->search_lines,
- 8,
- 1,
- 1,/*green*/
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE);
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dpi);
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0; /*we should give a small offset here~60 steps*/
+ params.pixels = 600;
+ params.lines = dev->model->search_lines;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::GREEN;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
+
+ status = gl841_init_scan_regs(dev, sensor, &local_reg, params);
+
if(status!=SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to init scan registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to init scan registers: %s\n", __func__, sane_strstatus(status));
return status;
}
/* send to scanner */
- status =
- gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
size = pixels * dev->model->search_lines;
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error,
- "gl841_search_start_position: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
- status = gl841_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -4225,48 +3609,39 @@ gl841_search_start_position (Genesys_Device * dev)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("search_position.pnm", data, 8, 1, pixels,
- dev->model->search_lines);
+ sanei_genesys_write_pnm_file("gl841_search_position.pnm", data.data(), 8, 1, pixels,
+ dev->model->search_lines);
- status = gl841_end_scan (dev, local_reg, SANE_TRUE);
+ status = gl841_end_scan(dev, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* update regs to copy ASIC internal state */
- memcpy (dev->reg, local_reg, (GENESYS_GL841_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
+ dev->reg = local_reg;
/*TODO: find out where sanei_genesys_search_reference_point
stores information, and use that correctly*/
status =
- sanei_genesys_search_reference_point (dev, data, 0, dpi, pixels,
+ sanei_genesys_search_reference_point (dev, sensor, data.data(), 0, dpi, pixels,
dev->model->search_lines);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- free (data);
return SANE_STATUS_GOOD;
}
@@ -4274,63 +3649,62 @@ gl841_search_start_position (Genesys_Device * dev)
* sets up register for coarse gain calibration
* todo: check it for scanners using it */
static SANE_Status
-gl841_init_regs_for_coarse_calibration (Genesys_Device * dev)
+gl841_init_regs_for_coarse_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t channels;
uint8_t cksel;
DBGSTART;
- cksel = (dev->calib_reg[reg_0x18].value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
+ cksel = (regs.find_reg(0x18).value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
/* set line size */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
- else
+ else {
channels = 1;
+ }
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = sensor.optical_res / cksel; /* XXX STEF XXX !!! */
+ params.lines = 20;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- dev->sensor.optical_res / cksel, /* XXX STEF XXX !!! */
- 20,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE
- );
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_init_register_for_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "gl841_init_register_for_coarse_calibration: optical sensor res: %d dpi, actual res: %d\n",
- dev->sensor.optical_res / cksel, dev->settings.xres);
+ DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
+ sensor.optical_res / cksel, dev->settings.xres);
- status =
- gl841_bulk_write_register (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_init_register_for_coarse_calibration: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
/* if (DBG_LEVEL >= DBG_info)
- sanei_gl841_print_registers (dev->calib_reg);*/
+ sanei_gl841_print_registers (regs);*/
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -4339,17 +3713,18 @@ gl841_init_regs_for_coarse_calibration (Genesys_Device * dev)
/* init registers for shading calibration */
static SANE_Status
-gl841_init_regs_for_shading (Genesys_Device * dev)
+gl841_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Int ydpi;
float starty=0;
DBGSTART;
- DBG (DBG_proc, "%s: lines = %d\n", __func__, (int)(dev->calib_lines));
+ DBG(DBG_proc, "%s: lines = %d\n", __func__, (int)(dev->calib_lines));
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL841_MAX_REGS * sizeof (Genesys_Register_Set));
+ regs = dev->reg;
ydpi = dev->motor.base_ydpi;
if (dev->model->motor_type == MOTOR_PLUSTEK_3600) /* TODO PLUSTEK_3600: 1200dpi not yet working, produces dark bar */
@@ -4359,42 +3734,55 @@ gl841_init_regs_for_shading (Genesys_Device * dev)
if (dev->model->motor_type == MOTOR_CANONLIDE80)
{
ydpi = gl841_get_dpihw(dev);
- /* get over extra dark area for this model */
- starty = 140;
+ /* get over extra dark area for this model.
+ It looks like different devices have dark areas of different width
+ due to manufacturing variability. The initial value of starty was 140,
+ but it moves the sensor almost past the dark area completely in places
+ on certain devices.
+
+ On a particular device the black area starts at roughly position
+ 160 to 230 depending on location (the dark area is not completely
+ parallel to the frame).
+ */
+ starty = 70;
}
dev->calib_channels = 3;
dev->calib_lines = dev->model->shading_lines;
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- ydpi,
- 0,
- starty,
- (dev->sensor.sensor_pixels * dev->settings.xres) / dev->sensor.optical_res,
- dev->calib_lines,
- 16,
- dev->calib_channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_USE_OPTICAL_RES |
- /*SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |*/
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = ydpi;
+ params.startx = 0;
+ params.starty = starty;
+ params.pixels = (sensor.sensor_pixels * dev->settings.xres) / sensor.optical_res;
+ params.lines = dev->calib_lines;
+ params.depth = 16;
+ params.channels = dev->calib_channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_USE_OPTICAL_RES |
+ /*SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |*/
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
dev->calib_pixels = dev->current_setup.pixels;
dev->scanhead_position_in_steps += dev->calib_lines + starty;
- status = gl841_bulk_write_register (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -4405,7 +3793,7 @@ gl841_init_regs_for_shading (Genesys_Device * dev)
/* set up registers for the actual scan
*/
static SANE_Status
-gl841_init_regs_for_scan (Genesys_Device * dev)
+gl841_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int flags;
@@ -4414,25 +3802,20 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
int move_dpi;
float start;
- SANE_Status status;
-
- DBG (DBG_info,
- "gl841_init_regs_for_scan settings:\nResolution: %uDPI\n"
- "Lines : %u\nPPL : %u\nStartpos : %.3f/%.3f\nScan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ SANE_Status status = SANE_STATUS_GOOD;
- gl841_slow_back_home(dev,SANE_TRUE);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
@@ -4463,13 +3846,13 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
move += SANE_UNFIX (dev->model->y_offset_calib);
}
- DBG (DBG_info, "gl841_init_regs_for_scan: move=%f steps\n", move);
+ DBG(DBG_info, "%s move=%f steps\n", __func__, move);
move += SANE_UNFIX (dev->model->y_offset);
- DBG (DBG_info, "gl841_init_regs_for_scan: move=%f steps\n", move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
move += dev->settings.tl_y;
- DBG (DBG_info, "gl841_init_regs_for_scan: move=%f steps\n", move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
move = (move * move_dpi) / MM_PER_INCH;
@@ -4478,7 +3861,7 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
flags=0;
@@ -4489,37 +3872,42 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
/* true gray (led add for cis scanners) */
if(dev->model->is_cis && dev->settings.true_gray
- && dev->settings.scan_mode != SCAN_MODE_COLOR)
+ && dev->settings.scan_mode != ScanColorMode::COLOR_SINGLE_PASS
+ && dev->model->ccd_type != CIS_CANONLIDE80)
{
- DBG (DBG_io, "%s: activating LEDADD\n", __func__);
+ // on Lide 80 the LEDADD bit results in only red LED array being lit
+ DBG(DBG_io, "%s: activating LEDADD\n", __func__);
flags |= SCAN_FLAG_ENABLE_LEDADD;
}
/* enable emulated lineart from gray data */
- if(dev->settings.scan_mode == SCAN_MODE_LINEART
+ if(dev->settings.scan_mode == ScanColorMode::LINEART
&& dev->settings.dynamic_lineart)
{
flags |= SCAN_FLAG_DYNAMIC_LINEART;
}
- status = gl841_init_scan_regs (dev,
- dev->reg,
- dev->settings.xres,
- dev->settings.yres,
- start,
- move,
- dev->settings.pixels,
- dev->settings.lines,
- depth,
- channels,
- dev->settings.color_filter,
- flags);
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = move;
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = flags;
+
+ status = gl841_init_scan_regs(dev, sensor, &dev->reg, params);
if (status != SANE_STATUS_GOOD)
return status;
- DBG (DBG_proc, "gl841_init_register_for_scan: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -4528,48 +3916,36 @@ gl841_init_regs_for_scan (Genesys_Device * dev)
* or the Sensor specific one if provided
*/
static SANE_Status
-gl841_send_gamma_table (Genesys_Device * dev)
+gl841_send_gamma_table(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int size;
- SANE_Status status;
- uint8_t *gamma;
+ SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
size = 256;
/* allocate temporary gamma tables: 16 bits words, 3 channels */
- gamma = (uint8_t *) malloc (size * 2 * 3);
- if (gamma==NULL)
- {
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> gamma(size * 2 * 3);
- RIE(sanei_genesys_generate_gamma_buffer(dev, 16, 65535, size, gamma));
+ RIE(sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data()));
/* send address */
status = gl841_set_buffer_address_gamma (dev, 0x00000);
if (status != SANE_STATUS_GOOD)
{
- free (gamma);
- DBG (DBG_error,
- "gl841_send_gamma_table: failed to set buffer address: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
return status;
}
/* send data */
- status = gl841_bulk_write_data_gamma (dev, 0x28, (uint8_t *) gamma, size * 2 * 3);
+ status = sanei_genesys_bulk_write_data(dev, 0x28, gamma.data(), size * 2 * 3);
if (status != SANE_STATUS_GOOD)
{
- free (gamma);
- DBG (DBG_error,
- "gl841_send_gamma_table: failed to send gamma table: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send gamma table: %s\n", __func__, sane_strstatus(status));
return status;
}
- free (gamma);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -4580,21 +3956,18 @@ gl841_send_gamma_table (Genesys_Device * dev)
-needs working coarse/gain
*/
-GENESYS_STATIC SANE_Status
-gl841_led_calibration (Genesys_Device * dev)
+static SANE_Status
+gl841_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
{
int num_pixels;
int total_size;
- uint8_t *line;
int i, j;
SANE_Status status = SANE_STATUS_GOOD;
int val;
int channels;
int avg[3], avga, avge;
int turn;
- char fn[20];
uint16_t exp[3], target;
- Genesys_Register_Set *r;
int move;
SANE_Bool acceptable = SANE_FALSE;
@@ -4610,12 +3983,11 @@ gl841_led_calibration (Genesys_Device * dev)
{
move = SANE_UNFIX (dev->model->y_offset_calib);
move = (move * (dev->motor.base_ydpi)) / MM_PER_INCH;
- DBG (DBG_io, "%s: move=%d lines\n", __func__, move);
+ DBG(DBG_io, "%s: move=%d lines\n", __func__, move);
status = gl841_feed(dev, move);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to feed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to feed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -4623,41 +3995,39 @@ gl841_led_calibration (Genesys_Device * dev)
/* offset calibration is always done in color mode */
channels = 3;
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- (dev->sensor.sensor_pixels*dev->settings.xres) / dev->sensor.optical_res,
- 1,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES
- );
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = (sensor.sensor_pixels*dev->settings.xres) / sensor.optical_res;
+ params.lines = 1;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to setup scan: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- RIE (gl841_bulk_write_register(dev, dev->calib_reg, GENESYS_GL841_MAX_REGS));
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
num_pixels = dev->current_setup.pixels;
total_size = num_pixels * channels * 2 * 1; /* colors * bytes_per_color * scan lines */
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
/*
we try to get equal bright leds here:
@@ -4667,44 +4037,39 @@ gl841_led_calibration (Genesys_Device * dev)
adjust exposure times
*/
- exp[0] = (dev->sensor.regs_0x10_0x1d[0] << 8) | dev->sensor.regs_0x10_0x1d[1];
- exp[1] = (dev->sensor.regs_0x10_0x1d[2] << 8) | dev->sensor.regs_0x10_0x1d[3];
- exp[2] = (dev->sensor.regs_0x10_0x1d[4] << 8) | dev->sensor.regs_0x10_0x1d[5];
+ exp[0] = sensor.exposure.red;
+ exp[1] = sensor.exposure.green;
+ exp[2] = sensor.exposure.blue;
turn = 0;
/* max exposure is set to ~2 time initial average
* exposure, or 2 time last calibration exposure */
max_exposure=((exp[0]+exp[1]+exp[2])/3)*2;
- target=dev->sensor.gain_white_ref*256;
+ target=sensor.gain_white_ref*256;
do {
+ sensor.exposure.red = exp[0];
+ sensor.exposure.green = exp[1];
+ sensor.exposure.blue = exp[2];
- dev->sensor.regs_0x10_0x1d[0] = (exp[0] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = exp[0] & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (exp[1] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = exp[1] & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (exp[2] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = exp[2] & 0xff;
-
- r = &(dev->calib_reg[reg_0x10]);
- for (i = 0; i < 6; i++, r++) {
- r->value = dev->sensor.regs_0x10_0x1d[i];
- RIE (sanei_genesys_write_register (dev, 0x10+i, dev->sensor.regs_0x10_0x1d[i]));
- }
+ sanei_genesys_set_exposure(regs, sensor.exposure);
+ RIE(sanei_genesys_write_register(dev, 0x10, (sensor.exposure.red >> 8) & 0xff));
+ RIE(sanei_genesys_write_register(dev, 0x11, sensor.exposure.red & 0xff));
+ RIE(sanei_genesys_write_register(dev, 0x12, (sensor.exposure.green >> 8) & 0xff));
+ RIE(sanei_genesys_write_register(dev, 0x13, sensor.exposure.green & 0xff));
+ RIE(sanei_genesys_write_register(dev, 0x14, (sensor.exposure.blue >> 8) & 0xff));
+ RIE(sanei_genesys_write_register(dev, 0x15, sensor.exposure.blue & 0xff));
- RIE (gl841_bulk_write_register (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS));
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
- DBG (DBG_info, "%s: starting line reading\n", __func__);
- RIE (gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE));
- RIE (sanei_genesys_read_data_from_scanner (dev, line, total_size));
+ DBG(DBG_info, "%s: starting line reading\n", __func__);
+ RIE(gl841_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
if (DBG_LEVEL >= DBG_data) {
- snprintf(fn,20,"led_%d.pnm",turn);
- sanei_genesys_write_pnm_file (fn,
- line,
- 16,
- channels,
- num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl841_led_%d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), 16, channels, num_pixels, 1);
}
/* compute average */
@@ -4746,7 +4111,7 @@ gl841_led_calibration (Genesys_Device * dev)
{
acceptable = SANE_FALSE;
}
-
+
/* for scanners using target value */
if(target>0)
{
@@ -4798,10 +4163,7 @@ gl841_led_calibration (Genesys_Device * dev)
} while (!acceptable && turn < 100);
- DBG(DBG_info,"%s: acceptable exposure: %d,%d,%d\n", __func__, exp[0],exp[1],exp[2]);
-
- /* cleanup before return */
- free (line);
+ DBG(DBG_info,"%s: acceptable exposure: %d,%d,%d\n", __func__, exp[0], exp[1], exp[2]);
gl841_slow_back_home(dev, SANE_TRUE);
@@ -4817,16 +4179,15 @@ gl841_led_calibration (Genesys_Device * dev)
* We scan a line with no gain until average offset reaches the target
*/
static SANE_Status
-ad_fe_offset_calibration (Genesys_Device * dev)
+ad_fe_offset_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
SANE_Status status = SANE_STATUS_GOOD;
int num_pixels;
int total_size;
- uint8_t *line;
int i;
int average;
int turn;
- char fn[20];
int top;
int bottom;
int target;
@@ -4840,44 +4201,40 @@ ad_fe_offset_calibration (Genesys_Device * dev)
return status;
}
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- (dev->sensor.sensor_pixels*dev->settings.xres) / dev->sensor.optical_res,
- 1,
- 8,
- 3,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES);
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = (sensor.sensor_pixels*dev->settings.xres) / sensor.optical_res;
+ params.lines = 1;
+ params.depth = 8;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
num_pixels = dev->current_setup.pixels;
total_size = num_pixels * 3 * 2 * 1;
- line = malloc (total_size);
- if (line==NULL)
- {
- DBGCOMPLETED;
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> line(total_size);
- dev->frontend.gain[0] = 0x00;
- dev->frontend.gain[1] = 0x00;
- dev->frontend.gain[2] = 0x00;
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
/* loop on scan until target offset is reached */
turn=0;
@@ -4886,20 +4243,21 @@ ad_fe_offset_calibration (Genesys_Device * dev)
top=255;
do {
/* set up offset mid range */
- dev->frontend.offset[0] = (top+bottom)/2;
- dev->frontend.offset[1] = (top+bottom)/2;
- dev->frontend.offset[2] = (top+bottom)/2;
+ dev->frontend.set_offset(0, (top + bottom) / 2);
+ dev->frontend.set_offset(1, (top + bottom) / 2);
+ dev->frontend.set_offset(2, (top + bottom) / 2);
/* scan line */
- DBG (DBG_info, "%s: starting line reading\n",__func__);
- gl841_bulk_write_register (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS);
- gl841_set_fe(dev, AFE_SET);
- gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE);
- sanei_genesys_read_data_from_scanner (dev, line, total_size);
+ DBG(DBG_info, "%s: starting line reading\n", __func__);
+ sanei_genesys_bulk_write_register(dev, regs);
+ gl841_set_fe(dev, sensor, AFE_SET);
+ gl841_begin_scan(dev, sensor, &regs, SANE_TRUE);
+ sanei_genesys_read_data_from_scanner(dev, line.data(), total_size);
gl841_stop_action (dev);
if (DBG_LEVEL >= DBG_data) {
- snprintf(fn,20,"offset_%02d.pnm",turn);
- sanei_genesys_write_pnm_file (fn, line, 8, 3, num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl841_offset_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), 8, 3, num_pixels, 1);
}
/* search for minimal value */
@@ -4909,7 +4267,7 @@ ad_fe_offset_calibration (Genesys_Device * dev)
average+=line[i];
}
average/=total_size;
- DBG (DBG_data, "%s: average=%d\n", __func__, average);
+ DBG(DBG_data, "%s: average=%d\n", __func__, average);
/* if min value is above target, the current value becomes the new top
* else it is the new bottom */
@@ -4924,14 +4282,14 @@ ad_fe_offset_calibration (Genesys_Device * dev)
turn++;
} while ((top-bottom)>1 && turn < 100);
- dev->frontend.offset[0]=0;
- dev->frontend.offset[1]=0;
- dev->frontend.offset[2]=0;
- free(line);
- DBG (DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
- dev->frontend.offset[0],
- dev->frontend.offset[1],
- dev->frontend.offset[2]);
+ // FIXME: don't overwrite the calibrated values
+ dev->frontend.set_offset(0, 0);
+ dev->frontend.set_offset(1, 0);
+ dev->frontend.set_offset(2, 0);
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
DBGCOMPLETED;
return status;
}
@@ -4943,12 +4301,12 @@ ad_fe_offset_calibration (Genesys_Device * dev)
this function expects the slider to be where?
*/
-GENESYS_STATIC SANE_Status
-gl841_offset_calibration (Genesys_Device * dev)
+static SANE_Status
+gl841_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
int num_pixels;
int total_size;
- uint8_t *first_line, *second_line;
int i, j;
SANE_Status status = SANE_STATUS_GOOD;
int val;
@@ -4957,45 +4315,44 @@ gl841_offset_calibration (Genesys_Device * dev)
int min1[3],min2[3];
int cmin[3],cmax[3];
int turn;
- char fn[20];
SANE_Bool acceptable = SANE_FALSE;
int mintgt = 0x400;
- DBG (DBG_proc, "gl841_offset_calibration\n");
+ DBG(DBG_proc, "%s\n", __func__);
/* Analog Device fronted have a different calibration */
- if ((dev->reg[reg_0x04].value & REG04_FESET) == 0x02)
+ if ((dev->reg.find_reg(0x04).value & REG04_FESET) == 0x02)
{
- return ad_fe_offset_calibration (dev);
+ return ad_fe_offset_calibration(dev, sensor, regs);
}
/* offset calibration is always done in color mode */
channels = 3;
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- (dev->sensor.sensor_pixels*dev->settings.xres) / dev->sensor.optical_res,
- 1,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES |
- SCAN_FLAG_DISABLE_LAMP
- );
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = (sensor.sensor_pixels*dev->settings.xres) / sensor.optical_res;
+ params.lines = 1;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES |
+ SCAN_FLAG_DISABLE_LAMP;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -5003,16 +4360,8 @@ gl841_offset_calibration (Genesys_Device * dev)
total_size = num_pixels * channels * 2 * 1; /* colors * bytes_per_color * scan lines */
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
-
- second_line = malloc (total_size);
- if (!second_line)
- {
- free (first_line);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
/* scan first line of data with no offset nor gain */
/*WM8199: gain=0.73; offset=-260mV*/
@@ -5033,9 +4382,9 @@ gl841_offset_calibration (Genesys_Device * dev)
* signal").
*
*/
- dev->frontend.gain[0] = 0x00;
- dev->frontend.gain[1] = 0x00;
- dev->frontend.gain[2] = 0x00;
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
offh[0] = 0xff;
offh[1] = 0xff;
offh[2] = 0xff;
@@ -5046,37 +4395,30 @@ gl841_offset_calibration (Genesys_Device * dev)
do {
- RIEF2 (gl841_bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS), first_line, second_line);
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
for (j=0; j < channels; j++) {
off[j] = (offh[j]+offl[j])/2;
- dev->frontend.offset[j] = off[j];
+ dev->frontend.set_offset(j, off[j]);
}
- status = gl841_set_fe(dev, AFE_SET);
+ status = gl841_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_offset_calibration: failed to setup frontend: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "gl841_offset_calibration: starting first line reading\n");
- RIEF2 (gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE(gl841_begin_scan(dev, sensor, &regs, SANE_TRUE));
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, first_line, total_size), first_line, second_line);
+ RIE(sanei_genesys_read_data_from_scanner (dev, first_line.data(), total_size));
if (DBG_LEVEL >= DBG_data) {
- snprintf(fn,20,"offset1_%02d.pnm",turn);
- sanei_genesys_write_pnm_file (fn,
- first_line,
- 16,
- channels,
- num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl841_offset1_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, first_line.data(), 16, channels, num_pixels, 1);
}
acceptable = SANE_TRUE;
@@ -5123,22 +4465,20 @@ gl841_offset_calibration (Genesys_Device * dev)
}
}
- DBG(DBG_info,"gl841_offset_calibration: black/white pixels: "
- "%d/%d,%d/%d,%d/%d\n",
- cmin[0],cmax[0],cmin[1],cmax[1],cmin[2],cmax[2]);
+ DBG(DBG_info,"%s: black/white pixels: %d/%d,%d/%d,%d/%d\n", __func__, cmin[0], cmax[0],
+ cmin[1], cmax[1], cmin[2], cmax[2]);
if (dev->model->is_cis) {
offh[2] = offh[1] = offh[0];
offl[2] = offl[1] = offl[0];
}
- RIEF2 (gl841_stop_action (dev), first_line, second_line);
+ RIE(gl841_stop_action(dev));
turn++;
} while (!acceptable && turn < 100);
- DBG(DBG_info,"gl841_offset_calibration: acceptable offsets: %d,%d,%d\n",
- off[0],off[1],off[2]);
+ DBG(DBG_info,"%s: acceptable offsets: %d,%d,%d\n", __func__, off[0], off[1], off[2]);
for (j = 0; j < channels; j++)
@@ -5172,35 +4512,26 @@ gl841_offset_calibration (Genesys_Device * dev)
for (j=0; j < channels; j++) {
off[j] = (offh[j]+offl[j])/2;
- dev->frontend.offset[j] = off[j];
+ dev->frontend.set_offset(j, off[j]);
}
- status = gl841_set_fe(dev, AFE_SET);
+ status = gl841_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- free (first_line);
- free (second_line);
- DBG (DBG_error,
- "gl841_offset_calibration: failed to setup frontend: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "gl841_offset_calibration: starting second line reading\n");
- RIEF2 (gl841_bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS), first_line, second_line);
- RIEF2 (gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
+ RIE(gl841_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
if (DBG_LEVEL >= DBG_data) {
- snprintf(fn,20,"offset2_%02d.pnm",turn);
- sanei_genesys_write_pnm_file (fn,
- second_line,
- 16,
- channels,
- num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl841_offset2_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, second_line.data(), 16, channels, num_pixels, 1);
}
acceptable = SANE_TRUE;
@@ -5242,23 +4573,21 @@ gl841_offset_calibration (Genesys_Device * dev)
}
}
- DBG(DBG_info,"gl841_offset_calibration: black/white pixels: "
- "%d/%d,%d/%d,%d/%d\n",
- cmin[0],cmax[0],cmin[1],cmax[1],cmin[2],cmax[2]);
+ DBG(DBG_info, "%s: black/white pixels: %d/%d,%d/%d,%d/%d\n", __func__, cmin[0], cmax[0],
+ cmin[1], cmax[1], cmin[2], cmax[2]);
if (dev->model->is_cis) {
offh[2] = offh[1] = offh[0];
offl[2] = offl[1] = offl[0];
}
- RIEF2 (gl841_stop_action (dev), first_line, second_line);
+ RIE(gl841_stop_action (dev));
turn++;
} while (!acceptable && turn < 100);
- DBG(DBG_info,"gl841_offset_calibration: acceptable offsets: %d,%d,%d\n",
- off[0],off[1],off[2]);
+ DBG(DBG_info, "%s: acceptable offsets: %d,%d,%d\n", __func__, off[0], off[1], off[2]);
for (j = 0; j < channels; j++)
@@ -5282,11 +4611,11 @@ gl841_offset_calibration (Genesys_Device * dev)
}
}
- DBG(DBG_info,"gl841_offset_calibration: first set: %d/%d,%d/%d,%d/%d\n",
- off1[0],min1[0],off1[1],min1[1],off1[2],min1[2]);
+ DBG(DBG_info, "%s: first set: %d/%d,%d/%d,%d/%d\n", __func__, off1[0], min1[0], off1[1], min1[1],
+ off1[2], min1[2]);
- DBG(DBG_info,"gl841_offset_calibration: second set: %d/%d,%d/%d,%d/%d\n",
- off2[0],min2[0],off2[1],min2[1],off2[2],min2[2]);
+ DBG(DBG_info, "%s: second set: %d/%d,%d/%d,%d/%d\n", __func__, off2[0], min2[0], off2[1], min2[1],
+ off2[2], min2[2]);
/*
calculate offset for each channel
@@ -5310,7 +4639,7 @@ gl841_offset_calibration (Genesys_Device * dev)
{
if (min2[j]-min1[j] == 0) {
/*TODO: try to avoid this*/
- DBG(DBG_warn,"gl841_offset_calibration: difference too small\n");
+ DBG(DBG_warn, "%s: difference too small\n", __func__);
if (mintgt * (off1[j] - off2[j]) + min1[j] * off2[j] - min2[j] * off1[j] >= 0)
off[j] = 0x0000;
else
@@ -5321,32 +4650,28 @@ gl841_offset_calibration (Genesys_Device * dev)
off[j] = 255;
if (off[j] < 0)
off[j] = 0;
- dev->frontend.offset[j] = off[j];
+ dev->frontend.set_offset(j, off[j]);
}
- DBG(DBG_info,"gl841_offset_calibration: final offsets: %d,%d,%d\n",
- off[0],off[1],off[2]);
+ DBG(DBG_info, "%s: final offsets: %d,%d,%d\n", __func__, off[0], off[1], off[2]);
if (dev->model->is_cis) {
if (off[0] < off[1])
off[0] = off[1];
if (off[0] < off[2])
off[0] = off[2];
- dev->frontend.offset[0] = off[0];
- dev->frontend.offset[1] = off[0];
- dev->frontend.offset[2] = off[0];
+ dev->frontend.set_offset(0, off[0]);
+ dev->frontend.set_offset(1, off[0]);
+ dev->frontend.set_offset(2, off[0]);
}
if (channels == 1)
{
- dev->frontend.offset[1] = dev->frontend.offset[0];
- dev->frontend.offset[2] = dev->frontend.offset[0];
+ dev->frontend.set_offset(1, dev->frontend.get_offset(0));
+ dev->frontend.set_offset(2, dev->frontend.get_offset(0));
}
- /* cleanup before return */
- free (first_line);
- free (second_line);
- DBG (DBG_proc, "gl841_offset_calibration: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
@@ -5360,12 +4685,12 @@ gl841_offset_calibration (Genesys_Device * dev)
a reasonable shape. the fine calibration of the upper and lower bounds will
be done with shading.
*/
-GENESYS_STATIC SANE_Status
-gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
+static SANE_Status
+gl841_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
{
int num_pixels;
int total_size;
- uint8_t *line;
int i, j, channels;
SANE_Status status = SANE_STATUS_GOOD;
int max[3];
@@ -5374,19 +4699,18 @@ gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
int lines=1;
int move;
- DBG (DBG_proc, "%s: dpi=%d\n", __func__, dpi);
+ DBG(DBG_proc, "%s: dpi=%d\n", __func__, dpi);
/* feed to white strip if needed */
if (dev->model->y_offset_calib>0)
{
move = SANE_UNFIX (dev->model->y_offset_calib);
move = (move * (dev->motor.base_ydpi)) / MM_PER_INCH;
- DBG (DBG_io, "%s: move=%d lines\n", __func__, move);
+ DBG(DBG_io, "%s: move=%d lines\n", __func__, move);
status = gl841_feed(dev, move);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to feed: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to feed: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -5394,46 +4718,45 @@ gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
/* coarse gain calibration is allways done in color mode */
channels = 3;
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- (dev->sensor.sensor_pixels*dev->settings.xres) / dev->sensor.optical_res,
- lines,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES
- );
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = (sensor.sensor_pixels*dev->settings.xres) / sensor.optical_res;
+ params.lines = lines;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- RIE (gl841_bulk_write_register (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS));
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
num_pixels = dev->current_setup.pixels;
total_size = num_pixels * channels * 2 * lines; /* colors * bytes_per_color * scan lines */
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
- RIEF (gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ RIE(gl841_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("coarse.pnm", line, 16, channels, num_pixels, lines);
+ sanei_genesys_write_pnm_file("gl841_gain.pnm", line.data(), 16, channels, num_pixels, lines);
/* average high level for each channel and compute gain
to reach the target code
@@ -5458,25 +4781,28 @@ gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
gain[j] = 65535.0/max[j];
+ uint8_t out_gain = 0;
+
if (dev->model->dac_type == DAC_CANONLIDE35 ||
dev->model->dac_type == DAC_WOLFSON_XP300 ||
dev->model->dac_type == DAC_WOLFSON_DSM600)
{
gain[j] *= 0.69;/*seems we don't get the real maximum. empirically derived*/
if (283 - 208/gain[j] > 255)
- dev->frontend.gain[j] = 255;
+ out_gain = 255;
else if (283 - 208/gain[j] < 0)
- dev->frontend.gain[j] = 0;
+ out_gain = 0;
else
- dev->frontend.gain[j] = 283 - 208/gain[j];
+ out_gain = 283 - 208/gain[j];
}
else if (dev->model->dac_type == DAC_CANONLIDE80)
{
- dev->frontend.gain[j] = gain[j]*12;
+ out_gain = gain[j]*12;
}
+ dev->frontend.set_gain(j, out_gain);
- DBG (DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__,
- j, max[j], gain[j],dev->frontend.gain[j]);
+ DBG(DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__, j, max[j], gain[j],
+ out_gain);
}
for (j = 0; j < channels; j++)
@@ -5492,34 +4818,33 @@ gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
DBG (DBG_error0, "**** ****\n");
DBG (DBG_error0, "**********************************************\n");
DBG (DBG_error0, "**********************************************\n");
-#ifdef SANE_STATUS_HW_LOCKED
- return SANE_STATUS_HW_LOCKED;
-#else
return SANE_STATUS_JAMMED;
-#endif
}
}
- if (dev->model->is_cis) {
- if (dev->frontend.gain[0] > dev->frontend.gain[1])
- dev->frontend.gain[0] = dev->frontend.gain[1];
- if (dev->frontend.gain[0] > dev->frontend.gain[2])
- dev->frontend.gain[0] = dev->frontend.gain[2];
- dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
- }
+ if (dev->model->is_cis) {
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ if (gain0 > dev->frontend.get_gain(1)) {
+ gain0 = dev->frontend.get_gain(1);
+ }
+ if (gain0 > dev->frontend.get_gain(2)) {
+ gain0 = dev->frontend.get_gain(2);
+ }
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
+ }
- if (channels == 1)
- {
- dev->frontend.gain[0] = dev->frontend.gain[1];
- dev->frontend.gain[2] = dev->frontend.gain[1];
- }
+ if (channels == 1) {
+ dev->frontend.set_gain(0, dev->frontend.get_gain(1));
+ dev->frontend.set_gain(2, dev->frontend.get_gain(1));
+ }
- free (line);
- DBG (DBG_info, "%s: gain=(%d,%d,%d)\n", __func__,
- dev->frontend.gain[0],
- dev->frontend.gain[1],
- dev->frontend.gain[2]);
+ DBG(DBG_info, "%s: gain=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_gain(0),
+ dev->frontend.get_gain(1),
+ dev->frontend.get_gain(2));
RIE (gl841_stop_action (dev));
@@ -5535,47 +4860,52 @@ gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi)
*/
static SANE_Status
gl841_init_regs_for_warmup (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * local_reg,
int *channels, int *total_size)
{
int num_pixels = (int) (4 * 300);
SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "sanei_gl841_warmup_lamp\n");
+ DBG(DBG_proc, "%s\n", __func__);
- memcpy (local_reg, dev->reg, (GENESYS_GL841_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
+ *local_reg = dev->reg;
/* okay.. these should be defaults stored somewhere */
- dev->frontend.gain[0] = 0x00;
- dev->frontend.gain[1] = 0x00;
- dev->frontend.gain[2] = 0x00;
- dev->frontend.offset[0] = 0x80;
- dev->frontend.offset[1] = 0x80;
- dev->frontend.offset[2] = 0x80;
-
- status = gl841_init_scan_regs (dev,
- local_reg,
- dev->sensor.optical_res,
- dev->settings.yres,
- dev->sensor.dummy_pixel,
- 0,
- num_pixels,
- 1,
- 16,
- *channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES
- );
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
+ dev->frontend.set_offset(0, 0x80);
+ dev->frontend.set_offset(1, 0x80);
+ dev->frontend.set_offset(2, 0x80);
+
+ SetupParams params;
+ params.xres = sensor.optical_res;
+ params.yres = dev->settings.yres;
+ params.startx = sensor.dummy_pixel;
+ params.starty = 0;
+ params.pixels = num_pixels;
+ params.lines = 1;
+ params.depth = 16;
+ params.channels = *channels;
+ params.scan_method = dev->settings.scan_method;
+ if (*channels == 3) {
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ } else {
+ params.scan_mode = ScanColorMode::GRAY;
+ }
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES;
+
+ status = gl841_init_scan_regs(dev, sensor, local_reg, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_init_regs_for_warmup: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -5583,8 +4913,7 @@ gl841_init_regs_for_warmup (Genesys_Device * dev,
*total_size = num_pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */
- RIE (gl841_bulk_write_register
- (dev, local_reg, GENESYS_GL841_MAX_REGS));
+ RIE(sanei_genesys_bulk_write_register(dev, *local_reg));
return status;
}
@@ -5595,38 +4924,32 @@ gl841_init_regs_for_warmup (Genesys_Device * dev,
* so that the head goes to park position.
* as a by-product, also check for lock
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
sanei_gl841_repark_head (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "sanei_gl841_repark_head\n");
+ DBG(DBG_proc, "%s\n", __func__);
status = gl841_feed(dev,232);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_repark_head: failed to feed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to feed: %s\n", __func__, sane_strstatus(status));
return status;
}
/* toggle motor flag, put an huge step number and redo move backward */
status = gl841_slow_back_home (dev, SANE_TRUE);
- DBG (DBG_proc, "gl841_park_head: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
-static SANE_Status
-gl841_is_compatible_calibration (Genesys_Device * dev,
+static bool
+gl841_is_compatible_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor,
Genesys_Calibration_Cache *cache,
int for_overwrite)
{
- SANE_Status status;
#ifdef HAVE_SYS_TIME_H
struct timeval time;
#endif
@@ -5636,23 +4959,15 @@ gl841_is_compatible_calibration (Genesys_Device * dev,
/* calibration cache not working yet for this model */
if (dev->model->ccd_type == CCD_PLUSTEK_3600)
{
- return SANE_STATUS_UNSUPPORTED;
+ return false;
}
- status = gl841_calculate_current_setup (dev);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl841_is_compatible_calibration: failed to calculate current setup: %s\n",
- sane_strstatus (status));
- return status;
- }
+ gl841_calculate_current_setup (dev, sensor);
- DBG (DBG_proc, "gl841_is_compatible_calibration: checking\n");
+ DBG(DBG_proc, "%s: checking\n", __func__);
- if (dev->current_setup.half_ccd != cache->used_setup.half_ccd)
- return SANE_STATUS_UNSUPPORTED;
+ if (dev->current_setup.ccd_size_divisor != cache->used_setup.ccd_size_divisor)
+ return false;
/* a cache entry expires after 30 minutes for non sheetfed scanners */
/* this is not taken into account when overwriting cache entries */
@@ -5663,14 +4978,14 @@ gl841_is_compatible_calibration (Genesys_Device * dev,
if ((time.tv_sec - cache->last_calibration > 30 * 60)
&& (dev->model->is_sheetfed == SANE_FALSE))
{
- DBG (DBG_proc, "%s: expired entry, non compatible cache\n",__func__);
- return SANE_STATUS_UNSUPPORTED;
+ DBG(DBG_proc, "%s: expired entry, non compatible cache\n", __func__);
+ return false;
}
}
#endif
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
+ return true;
}
/*
@@ -5680,11 +4995,9 @@ gl841_is_compatible_calibration (Genesys_Device * dev,
static SANE_Status
gl841_init (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
size_t size;
- uint8_t *line;
- int i;
DBG_INIT ();
DBGSTART;
@@ -5697,16 +5010,16 @@ gl841_init (Genesys_Device * dev)
RIE (sanei_genesys_get_status (dev, &val));
if (val & REG41_PWRBIT)
{
- DBG (DBG_info, "gl841_init: already initialized\n");
+ DBG(DBG_info, "%s: already initialized\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
}
- dev->dark_average_data = NULL;
- dev->white_average_data = NULL;
+ dev->dark_average_data.clear();
+ dev->white_average_data.clear();
- dev->settings.color_filter = 0;
+ dev->settings.color_filter = ColorFilter::RED;
/* ASIC reset */
RIE (sanei_genesys_write_register (dev, 0x0e, 0x01));
@@ -5716,7 +5029,7 @@ gl841_init (Genesys_Device * dev)
gl841_init_registers (dev);
/* Write initial registers */
- RIE (gl841_bulk_write_register (dev, dev->reg, GENESYS_GL841_MAX_REGS));
+ RIE(sanei_genesys_bulk_write_register(dev, dev->reg));
/* Test ASIC and RAM */
if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT))
@@ -5724,14 +5037,16 @@ gl841_init (Genesys_Device * dev)
RIE (sanei_gl841_asic_test (dev));
}
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
/* Set analog frontend */
- RIE (gl841_set_fe (dev, AFE_INIT));
+ RIE (gl841_set_fe(dev, sensor, AFE_INIT));
/* Move home */
RIE (gl841_slow_back_home (dev, SANE_TRUE));
/* Init shading data */
- RIE (sanei_genesys_init_shading_data (dev, dev->sensor.sensor_pixels));
+ RIE (sanei_genesys_init_shading_data(dev, sensor, sensor.sensor_pixels));
/* ensure head is correctly parked, and check lock */
if (dev->model->flags & GENESYS_FLAG_REPARK)
@@ -5740,95 +5055,67 @@ gl841_init (Genesys_Device * dev)
if (status != SANE_STATUS_GOOD)
{
if (status == SANE_STATUS_INVAL)
- DBG (DBG_error0,
- "Your scanner is locked. Please move the lock switch "
- "to the unlocked position\n");
+ DBG(DBG_error0, "Your scanner is locked. Please move the lock switch to the unlocked "
+ "position\n");
else
- DBG (DBG_error,
- "gl841_init: sanei_gl841_repark_head failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: sanei_gl841_repark_head failed: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
}
- /* initalize sensor gamma tables */
- size = 256;
-
- for(i=0;i<3;i++)
- {
- if (dev->sensor.gamma_table[i] == NULL)
- {
- dev->sensor.gamma_table[i] = (uint16_t *) malloc (2 * size);
- if (dev->sensor.gamma_table[i] == NULL)
- {
- DBG (DBG_error,
- "gl841_init: could not allocate memory for gamma table %d\n",i);
- return SANE_STATUS_NO_MEM;
- }
- sanei_genesys_create_gamma_table (dev->sensor.gamma_table[i],
- size,
- 65535,
- 65535,
- dev->sensor.gamma[i]);
- }
- }
-
/* send gamma tables */
- status = gl841_send_gamma_table (dev);
+ status = gl841_send_gamma_table(dev, sensor);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_init: failed to send initial gamma tables: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send initial gamma tables: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, (GENESYS_GL841_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
-
- status = gl841_init_scan_regs (dev,
- dev->calib_reg,
- 300,
- 300,
- 0,
- 0,
- (16 * 300) / dev->sensor.optical_res,
- 1,
- 16,
- 3,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_USE_OPTICAL_RES
- );
-
- RIE (gl841_bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL841_MAX_REGS));
+ Genesys_Register_Set& regs = dev->calib_reg;
+ regs = dev->reg;
+
+ SetupParams params;
+ params.xres = 300;
+ params.yres = 300;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = (16 * 300) / sensor.optical_res;
+ params.lines = 1;
+ params.depth = 16;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_USE_OPTICAL_RES;
+
+ status = gl841_init_scan_regs(dev, sensor, &regs, params);
+
+ RIE(sanei_genesys_bulk_write_register(dev, regs));
size = dev->current_setup.pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */
- line = malloc (size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(size);
- DBG (DBG_info,
- "gl841_init: starting dummy data reading\n");
- RIEF (gl841_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
+ DBG(DBG_info, "%s: starting dummy data reading\n", __func__);
+ RIE(gl841_begin_scan(dev, sensor, &regs, SANE_TRUE));
sanei_usb_set_timeout(1000);/* 1 second*/
/*ignore errors. next read will succeed*/
- sanei_genesys_read_data_from_scanner (dev, line, size);
- free(line);
+ sanei_genesys_read_data_from_scanner(dev, line.data(), size);
sanei_usb_set_timeout(30 * 1000);/* 30 seconds*/
- RIE (gl841_end_scan (dev, dev->calib_reg, SANE_TRUE));
-
+ RIE (gl841_end_scan(dev, &regs, SANE_TRUE));
- memcpy (dev->calib_reg, dev->reg, (GENESYS_GL841_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
+ regs = dev->reg;
/* Set powersaving (default = 15 minutes) */
RIE (gl841_set_powersaving (dev, 15));
@@ -5850,28 +5137,21 @@ gl841_update_hardware_sensors (Genesys_Scanner * s)
if (s->dev->model->gpo_type == GPO_CANONLIDE35
|| s->dev->model->gpo_type == GPO_CANONLIDE80)
{
- RIE(sanei_genesys_read_register(s->dev, REG6D, &val));
-
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x01) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & 0x02) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & 0x04) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & 0x08) == 0;
+ RIE(sanei_genesys_read_register(s->dev, REG6D, &val));
+ 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);
}
if (s->dev->model->gpo_type == GPO_XP300 ||
s->dev->model->gpo_type == GPO_DP665 ||
s->dev->model->gpo_type == GPO_DP685)
{
- RIE(sanei_genesys_read_register(s->dev, REG6D, &val));
+ RIE(sanei_genesys_read_register(s->dev, REG6D, &val));
- if (s->val[OPT_PAGE_LOADED_SW].b == s->last_val[OPT_PAGE_LOADED_SW].b)
- s->val[OPT_PAGE_LOADED_SW].b = (val & 0x01) == 0;
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x02) == 0;
+ s->buttons[BUTTON_PAGE_LOADED_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x02) == 0);
}
return status;
@@ -5887,39 +5167,36 @@ gl841_update_hardware_sensors (Genesys_Scanner * s)
* @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
*/
static SANE_Status
-gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
+gl841_search_strip(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ SANE_Bool forward, SANE_Bool black)
{
unsigned int pixels, lines, channels;
- SANE_Status status;
- Genesys_Register_Set local_reg[GENESYS_GL841_MAX_REGS + 1];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
size_t size;
- uint8_t *data;
int steps, depth, dpi;
unsigned int pass, count, found, x, y, length;
char title[80];
- Genesys_Register_Set *r;
+ GenesysRegister *r;
uint8_t white_level=90; /**< default white level to detect white dots */
uint8_t black_level=60; /**< default black level to detect black dots */
- DBG (DBG_proc, "gl841_search_strip %s %s\n", black ? "black" : "white",
- forward ? "forward" : "reverse");
+ DBG(DBG_proc, "%s %s %s\n", __func__, black ? "black" : "white", forward ? "forward" : "reverse");
/* use maximum gain when doing forward white strip detection
* since we don't have calibrated the sensor yet */
if(!black && forward)
{
- dev->frontend.gain[0] = 0xff;
- dev->frontend.gain[1] = 0xff;
- dev->frontend.gain[2] = 0xff;
+ dev->frontend.set_gain(0, 0xff);
+ dev->frontend.set_gain(1, 0xff);
+ dev->frontend.set_gain(2, 0xff);
}
- gl841_set_fe (dev, AFE_SET);
+ gl841_set_fe(dev, sensor, AFE_SET);
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_search_strip: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -5937,68 +5214,58 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
lines = (10*dpi)/MM_PER_INCH;
depth = 8;
- pixels = (dev->sensor.sensor_pixels * dpi) / dev->sensor.optical_res;
+ pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
size = pixels * channels * lines * (depth / 8);
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error, "gl841_search_strip: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
/* 20 cm max length for calibration sheet */
length = ((200 * dpi) / MM_PER_INCH)/lines;
dev->scanhead_position_in_steps = 0;
- memcpy (local_reg, dev->reg,
- (GENESYS_GL841_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
-
- status = gl841_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0,
- pixels,
- lines,
- depth,
- channels,
- 0,
- SCAN_FLAG_DISABLE_SHADING | SCAN_FLAG_DISABLE_GAMMA);
+ local_reg = dev->reg;
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING | SCAN_FLAG_DISABLE_GAMMA;
+
+ status = gl841_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error, "%s: failed to setup for scan: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* set up for reverse or forward */
- r = sanei_genesys_get_address (local_reg, 0x02);
+ r = sanei_genesys_get_address(&local_reg, 0x02);
if (forward)
r->value &= ~4;
else
r->value |= 4;
- status = gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error,
- "gl841_search_strip: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = gl841_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -6008,55 +5275,45 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error, "gl841_search_strip: gl841_stop_action failed\n");
+ DBG(DBG_error, "%s: gl841_stop_action failed\n", __func__);
return status;
}
pass = 0;
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "search_strip_%s_%s%02u.pnm", black ? "black" : "white",
- forward ? "fwd" : "bwd", pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels, pixels,
- lines);
+ sprintf(title, "gl841_search_strip_%s_%s%02u.pnm", black ? "black" : "white",
+ forward ? "fwd" : "bwd", pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
}
/* loop until strip is found or maximum pass number done */
found = 0;
while (pass < length && !found)
{
- status =
- gl841_bulk_write_register (dev, local_reg, GENESYS_GL841_MAX_REGS);
+ status = sanei_genesys_bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl841_search_strip: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
/* now start scan */
- status = gl841_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error,"%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -6066,30 +5323,25 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner (dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl841_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "g%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl841_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error, "gl841_search_strip: gl841_stop_action failed\n");
+ DBG(DBG_error, "%s: gl841_stop_action failed\n", __func__);
return status;
}
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "search_strip_%s_%s%02u.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels, pixels,
- lines);
+ sprintf(title, "gl841_search_strip_%s_%s%02u.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
}
/* search data to find black strip */
@@ -6122,15 +5374,13 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
if ((count * 100) / pixels < 3)
{
found = 1;
- DBG (DBG_data,
- "gl841_search_strip: strip found forward during pass %d at line %d\n",
- pass, y);
+ DBG(DBG_data, "%s: strip found forward during pass %d at line %d\n", __func__,
+ pass, y);
}
else
{
- DBG (DBG_data,
- "gl841_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
}
}
}
@@ -6161,34 +5411,29 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
if ((count * 100) / (pixels * lines) < 3)
{
found = 1;
- DBG (DBG_data,
- "gl841_search_strip: strip found backward during pass %d \n",
- pass);
+ DBG(DBG_data, "%s: strip found backward during pass %d \n", __func__, pass);
}
else
{
- DBG (DBG_data,
- "gl841_search_strip: pixels=%d, count=%d (%d%%)\n", pixels,
- count, (100 * count) / pixels);
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
}
}
pass++;
}
- free (data);
+
if (found)
{
status = SANE_STATUS_GOOD;
- DBG (DBG_info, "gl841_search_strip: %s strip found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip found\n", __func__, black ? "black" : "white");
}
else
{
status = SANE_STATUS_UNSUPPORTED;
- DBG (DBG_info, "gl841_search_strip: %s strip not found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip not found\n", __func__, black ? "black" : "white");
}
- DBG (DBG_proc, "gl841_search_strip: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
@@ -6196,29 +5441,29 @@ gl841_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
* Send shading calibration data. The buffer is considered to always hold values
* for all the channels.
*/
-GENESYS_STATIC
+static
SANE_Status
-gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
+gl841_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size)
{
SANE_Status status = SANE_STATUS_GOOD;
uint32_t length, x, factor, pixels, i;
- uint32_t half;
uint32_t lines, channels;
uint16_t dpiset, dpihw, strpixel ,endpixel, beginpixel;
- uint8_t *buffer,*ptr,*src;
+ uint8_t *ptr,*src;
DBGSTART;
- DBG( DBG_io2, "%s: writing %d bytes of shading data\n",__func__,size);
+ DBG(DBG_io2, "%s: writing %d bytes of shading data\n", __func__, size);
/* old method if no SHDAREA */
- if((dev->reg[reg_0x01].value & REG01_SHDAREA) == 0)
+ if((dev->reg.find_reg(0x01).value & REG01_SHDAREA) == 0)
{
/* start address */
status = sanei_genesys_set_buffer_address (dev, 0x0000);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to set buffer address: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
@@ -6226,8 +5471,8 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, data, size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to send shading table: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to send shading table: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
DBGCOMPLETED;
@@ -6236,22 +5481,24 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
/* data is whole line, we extract only the part for the scanned area */
length = (uint32_t) (size / 3);
- sanei_genesys_get_double(dev->reg,REG_STRPIXEL,&strpixel);
- sanei_genesys_get_double(dev->reg,REG_ENDPIXEL,&endpixel);
- DBG( DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d\n",__func__,strpixel,endpixel,endpixel-strpixel);
+ sanei_genesys_get_double(&dev->reg,REG_STRPIXEL,&strpixel);
+ sanei_genesys_get_double(&dev->reg,REG_ENDPIXEL,&endpixel);
+ DBG(DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d\n", __func__, strpixel, endpixel,
+ endpixel-strpixel);
/* compute deletion/average factor */
- sanei_genesys_get_double(dev->reg,REG_DPISET,&dpiset);
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&dpiset);
dpihw = gl841_get_dpihw(dev);
- half=dev->current_setup.half_ccd+1;
+ unsigned ccd_size_divisor = dev->current_setup.ccd_size_divisor;
factor=dpihw/dpiset;
- DBG( DBG_io2, "%s: dpihw=%d, dpiset=%d, half_ccd=%d, factor=%d\n",__func__,dpihw,dpiset,half-1,factor);
+ DBG(DBG_io2, "%s: dpihw=%d, dpiset=%d, ccd_size_divisor=%d, factor=%d\n", __func__, dpihw, dpiset,
+ ccd_size_divisor, factor);
/* binary data logging */
if(DBG_LEVEL>=DBG_data)
{
dev->binary=fopen("binary.pnm","wb");
- sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &lines);
channels=dev->current_setup.channels;
if(dev->binary!=NULL)
{
@@ -6267,15 +5514,15 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
/* shading pixel begin is start pixel minus start pixel during shading
* calibration. Currently only cases handled are full and half ccd resolution.
*/
- beginpixel = dev->sensor.CCD_start_xoffset / half;
- beginpixel += dev->sensor.dummy_pixel + 1;
+ beginpixel = sensor.CCD_start_xoffset / ccd_size_divisor;
+ beginpixel += sensor.dummy_pixel + 1;
DBG(DBG_io2, "%s: ORIGIN PIXEL=%d\n", __func__, beginpixel);
beginpixel = (strpixel-beginpixel*2*2)/factor;
- DBG(DBG_io2, "%s: BEGIN PIXEL=%d\n",__func__,beginpixel/4);
+ DBG(DBG_io2, "%s: BEGIN PIXEL=%d\n", __func__, beginpixel/4);
- DBG(DBG_io2, "%s: using chunks of %d bytes (%d shading data pixels)\n",__func__,length, length/4);
- buffer=(uint8_t *)malloc(pixels);
- memset(buffer,0,pixels);
+ 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);
/* write actual shading data contigously
* channel by channel, starting at addr 0x0000
@@ -6284,7 +5531,7 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
{
/* copy data to work buffer and process it */
/* coefficent destination */
- ptr=buffer;
+ 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 */
@@ -6302,11 +5549,10 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
}
/* 0x5400 alignment for LIDE80 internal memory */
- RIEF(sanei_genesys_set_buffer_address (dev, 0x5400*i), buffer);
- RIEF(dev->model->cmd_set->bulk_write_data (dev, 0x3c, buffer, pixels), buffer);
+ RIE(sanei_genesys_set_buffer_address(dev, 0x5400*i));
+ RIE(dev->model->cmd_set->bulk_write_data(dev, 0x3c, buffer.data(), pixels));
}
- free(buffer);
DBGCOMPLETED;
return status;
@@ -6317,6 +5563,8 @@ gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
static Genesys_Command_Set gl841_cmd_set = {
"gl841-generic", /* the name of this set */
+ [](Genesys_Device* dev) -> bool { (void) dev; return true; },
+
gl841_init,
gl841_init_regs_for_warmup,
gl841_init_regs_for_coarse_calibration,
@@ -6331,15 +5579,10 @@ static Genesys_Command_Set gl841_cmd_set = {
gl841_test_buffer_empty_bit,
gl841_test_motor_flag_bit,
- gl841_bulk_full_size,
-
gl841_set_fe,
gl841_set_powersaving,
gl841_save_power,
- gl841_set_motor_power,
- gl841_set_lamp_power,
-
gl841_begin_scan,
gl841_end_scan,
@@ -6351,12 +5594,13 @@ static Genesys_Command_Set gl841_cmd_set = {
gl841_coarse_gain_calibration,
gl841_led_calibration,
+ NULL,
gl841_slow_back_home,
NULL,
- gl841_bulk_write_register,
- gl841_bulk_write_data,
- gl841_bulk_read_data,
+ sanei_genesys_bulk_write_register,
+ sanei_genesys_bulk_write_data,
+ sanei_genesys_bulk_read_data,
gl841_update_hardware_sensors,
@@ -6369,7 +5613,6 @@ static Genesys_Command_Set gl841_cmd_set = {
NULL,
gl841_send_shading_data,
gl841_calculate_current_setup,
- NULL,
NULL
};
@@ -6379,5 +5622,3 @@ sanei_gl841_init_cmd_set (Genesys_Device * dev)
dev->model->cmd_set = &gl841_cmd_set;
return SANE_STATUS_GOOD;
}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl841.h b/backend/genesys_gl841.h
index d1bd07e..3dbfc80 100644
--- a/backend/genesys_gl841.h
+++ b/backend/genesys_gl841.h
@@ -250,205 +250,14 @@
#define REG87_LEDADD 0x04
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x07,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
-
- reg_0x10,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
-
- reg_0x29,
-
- reg_0x2c,
- reg_0x2d,
- reg_0x2e,
- reg_0x2f,
- reg_0x30,
- reg_0x31,
- reg_0x32,
- reg_0x33,
- reg_0x34,
- reg_0x35,
- reg_0x36,
- reg_0x37,
- reg_0x38,
- reg_0x39,
-
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
-
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
-
- reg_0x5d,
- reg_0x5e,
- reg_0x5f,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x66,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x6c,
- reg_0x6d,
- reg_0x6e,
- reg_0x6f,
- reg_0x70,
- reg_0x71,
- reg_0x72,
- reg_0x73,
- reg_0x74,
- reg_0x75,
- reg_0x76,
- reg_0x77,
- reg_0x78,
- reg_0x79,
- reg_0x7a,
- reg_0x7b,
- reg_0x7c,
- reg_0x7d,
- reg_0x7e,
- reg_0x7f,
- reg_0x80,
- reg_0x81,
- reg_0x82,
- reg_0x83,
- reg_0x84,
- reg_0x85,
- reg_0x86,
- reg_0x87,
- reg_0x88,
- reg_0x89,
- GENESYS_GL841_MAX_REGS
-};
-
-#define INITREG(adr,val) {dev->reg[index].address=adr;dev->reg[index].value=val;index++;}
+#define INITREG(adr,val) {dev->reg.init_reg(adr, val); }
/**
* prototypes declaration in case of unit testing
*/
-#ifdef UNIT_TESTING
-SANE_Status
-gl841_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres,
- float yres,
- float startx,
- float starty,
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags);
-
-SANE_Status
-gl841_begin_scan (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- SANE_Bool start_motor);
-
-SANE_Status
-gl841_end_scan (Genesys_Device * dev,
- Genesys_Register_Set __sane_unused__ * reg,
- SANE_Bool check_stop);
-
-SANE_Status
-gl841_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-
-SANE_Status
-sanei_gl841_repark_head (Genesys_Device * dev);
-
-SANE_Status
-gl841_feed (Genesys_Device * dev, int steps);
-
-SANE_Status
-gl841_init_motor_regs_scan(Genesys_Device * dev,
- Genesys_Register_Set * reg,
- unsigned int scan_exposure_time,
- float scan_yres,
- int scan_step_type,
- unsigned int scan_lines,
- unsigned int scan_dummy,
- unsigned int feed_steps,
- int scan_power_mode,
- unsigned int flags) ;
-
-SANE_Status
-gl841_stop_action (Genesys_Device * dev);
-
-SANE_Status
-gl841_start_action (Genesys_Device * dev);
-
-SANE_Status
-gl841_init_motor_regs(Genesys_Device * dev,
- Genesys_Register_Set * reg,
- unsigned int feed_steps,
- unsigned int action,
- unsigned int flags);
-
-SANE_Status gl841_send_slope_table (Genesys_Device * dev, int table_nr, uint16_t * slope_table, int steps);
-
-SANE_Status gl841_bulk_write_data_gamma (Genesys_Device * dev, uint8_t addr, uint8_t * data, size_t len);
-
-SANE_Status gl841_offset_calibration (Genesys_Device * dev);
-
-SANE_Status gl841_coarse_gain_calibration (Genesys_Device * dev, int dpi);
-
-SANE_Status gl841_led_calibration (Genesys_Device * dev);
-
-SANE_Status gl841_send_shading_data (Genesys_Device * dev, uint8_t * data, int size);
-
-int gl841_scan_step_type(Genesys_Device *dev, int yres);
-SANE_Status gl841_write_freq(Genesys_Device *dev, unsigned int ydpi);
-#endif
-
-GENESYS_STATIC
-int gl841_exposure_time(Genesys_Device *dev,
+
+static
+int gl841_exposure_time(Genesys_Device *dev, const Genesys_Sensor& sensor,
float slope_dpi,
int scan_step_type,
int start,
diff --git a/backend/genesys_gl843.c b/backend/genesys_gl843.c
deleted file mode 100644
index b47fb7e..0000000
--- a/backend/genesys_gl843.c
+++ /dev/null
@@ -1,4477 +0,0 @@
-/* sane - Scanner Access Now Easy.
-
- Copyright (C) 2010-2013 Stéphane Voltz <stef.dev@free.fr>
-
-
- This file is part of the SANE package.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
-
- As a special exception, the authors of SANE give permission for
- additional uses of the libraries contained in this release of SANE.
-
- The exception is that, if you link a SANE library with other files
- to produce an executable, this does not by itself cause the
- resulting executable to be covered by the GNU General Public
- License. Your use of that executable is in no way restricted on
- account of linking the SANE library code into it.
-
- This exception does not, however, invalidate any other reasons why
- the executable file might be covered by the GNU General Public
- License.
-
- If you submit changes to SANE to the maintainers to be included in
- a subsequent release, you agree by submitting the changes that
- those changes may be distributed with this exception intact.
-
- If you write modifications of your own for SANE, it is your choice
- whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
-*/
-
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl843
-
-#include "genesys_gl843.h"
-
-/****************************************************************************
- Low level function
- ****************************************************************************/
-
-/* ------------------------------------------------------------------------ */
-/* Read and write RAM, registers and AFE */
-/* ------------------------------------------------------------------------ */
-
-
-/**
- * Write bulk data (e.g. gamma or shading data) */
-static SANE_Status
-gl843_bulk_write_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBGSTART;
- DBG (DBG_io, "gl843_bulk_write_data writing %lu bytes\n", (u_long) len);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_bulk_write_data failed while setting register: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if(len>65472)
- size=65472;
- else
- size = len;
-
- outdata[0] = BULK_OUT;
- outdata[1] = BULK_RAM;
- outdata[2] = 0x00;
- outdata[3] = 0x00;
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_bulk_write_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_usb_write_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_bulk_write_data failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl843_bulk_write_data: wrote %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-/* Set address for writing data */
-static SANE_Status
-gl843_set_buffer_address (Genesys_Device * dev, uint32_t addr)
-{
- SANE_Status status;
-
- DBG (DBG_io, "gl843_set_buffer_address: setting address to 0x%05x\n",
- addr & 0xffff);
-
- status = sanei_genesys_write_register (dev, 0x5b, ((addr >> 8) & 0xff));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_buffer_address: failed while writing high byte: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = sanei_genesys_write_register (dev, 0x5c, (addr & 0xff));
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_buffer_address: failed while writing low byte: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io, "gl843_set_buffer_address: completed\n");
-
- return status;
-}
-
-/**
- * writes a block of data to RAM
- * @param dev USB device
- * @param addr RAM address to write to
- * @param size size of the chunk of data
- * @param data pointer to the data to write
- */
-static SANE_Status
-write_data (Genesys_Device * dev, uint32_t addr, uint32_t size,
- uint8_t * data)
-{
- SANE_Status status = SANE_STATUS_GOOD;
-
- DBGSTART;
-
- status = gl843_set_buffer_address (dev, addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "write_data: failed while setting address for bulk write data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* write actual data */
- status = gl843_bulk_write_data (dev, 0x28, data, size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "write_data: failed while writing bulk write data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* set back address to 0 */
- status = gl843_set_buffer_address (dev, 0);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "write_data: failed setting to default RAM address: %s\n",
- sane_strstatus (status));
- return status;
- }
- DBGCOMPLETED;
- return status;
-}
-
-
-static SANE_Status
-gl843_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size;
- uint8_t outdata[8];
-
- DBGSTART;
- DBG (DBG_io,
- "gl843_bulk_read_data: requesting %lu bytes from 0x%02x addr\n",
- (u_long) len, addr);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, 0, 1, &addr);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "write_data: failed to set register address %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (len == 0)
- return SANE_STATUS_GOOD;
-
- outdata[0] = BULK_IN;
- outdata[1] = BULK_RAM;
- outdata[2] = VALUE_BUFFER;
- outdata[3] = 0;
- outdata[4] = (len & 0xff);
- outdata[5] = ((len >> 8) & 0xff);
- outdata[6] = ((len >> 16) & 0xff);
- outdata[7] = ((len >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, INDEX, sizeof (outdata), outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_bulk_read_data failed while writing command: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- while (len)
- {
- if (len > 0xF000)
- size = 0xF000;
- else
- size = len;
- if (size >= 512)
- {
- size /= 512;
- size *= 512;
- }
-
- DBG (DBG_io2,
- "gl843_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) size);
-
- status = sanei_usb_read_bulk (dev->dn, data, &size);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_io2,
- "gl843_bulk_read_data read %lu bytes, %lu remaining\n",
- (u_long) size, (u_long) (len - size));
-
- len -= size;
- data += size;
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/****************************************************************************
- Mid level functions
- ****************************************************************************/
-
-static SANE_Bool
-gl843_get_fast_feed_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG02);
- if (r && (r->value & REG02_FASTFED))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl843_get_filter_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_FILTER))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl843_get_lineart_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_LINEART))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl843_get_bitset_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG04);
- if (r && (r->value & REG04_BITSET))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl843_get_gain4_bit (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
-
- r = sanei_genesys_get_address (regs, REG06);
- if (r && (r->value & REG06_GAIN4))
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-/**
- * compute the step multiplier used
- */
-static int
-gl843_get_step_multiplier (Genesys_Register_Set * regs)
-{
- Genesys_Register_Set *r = NULL;
- int value = 1;
-
- r = sanei_genesys_get_address (regs, REG9D);
- if (r != NULL)
- {
- switch (r->value & 0x0c)
- {
- case 0x04:
- value = 2;
- break;
- case 0x08:
- value = 4;
- break;
- default:
- value = 1;
- }
- }
- DBG (DBG_io, "%s: step multiplier is %d\n", __func__, value);
- return value;
-}
-
-static SANE_Bool
-gl843_test_buffer_empty_bit (SANE_Byte val)
-{
- if (val & REG41_BUFEMPTY)
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-static SANE_Bool
-gl843_test_motor_flag_bit (SANE_Byte val)
-{
- if (val & REG41_MOTORENB)
- return SANE_TRUE;
- return SANE_FALSE;
-}
-
-/** @brief sensor profile
- * search for the database of motor profiles and get the best one. Each
- * profile is at a specific dpihw. Use first entry of table by default.
- * @param sensor_type sensor id
- * @param dpi hardware dpi for the scan
- * @param flags to select between XPA, XPA+IR or regular scan from OPTICAL_FLAGS_*
- * @return a pointer to a Sensor_Profile struct
- */
-static Sensor_Profile *get_sensor_profile(int sensor_type, int dpi, int flags)
-{
- unsigned int i, count;
- int idx;
- Sensor_Profile *sp;
-
- if(flags & OPTICAL_FLAG_USE_XPA)
- {
- sp=xpa_sensors;
- count=sizeof(xpa_sensors)/sizeof(Sensor_Profile);
- }
- else
- {
- sp=sensors;
- count=sizeof(sensors)/sizeof(Sensor_Profile);
- }
- i=0;
- idx=-1;
- while(i<count)
- {
- /* exact match */
- if(sp[i].sensor_type==sensor_type && sp[i].dpi==dpi)
- {
- return &(sp[i]);
- }
-
- /* closest match */
- if(sp[i].sensor_type==sensor_type)
- {
- if(idx<0)
- {
- idx=i;
- }
- else
- {
- if(sp[i].dpi>=dpi
- && sp[i].dpi<sp[idx].dpi)
- {
- idx=i;
- }
- }
- }
- i++;
- }
-
- /* default fallback */
- if(idx<0)
- {
- DBG (DBG_warn,"%s: using default sensor profile\n",__func__);
- idx=0;
- }
-
- return &(sp[idx]);
-}
-
-
-/** copy sensor specific settings */
-static void
-gl843_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi,int flags)
-{
- Genesys_Register_Set *r;
- Sensor_Profile *sensor;
- int i,dpihw;
-
- DBGSTART;
-
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw, flags);
-
- for (i = 0x06; i < 0x0e; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- if (r)
- r->value = sensor->regs_0x10_0x1d[i];
- }
- for (i = 0; i < 9; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- if (r)
- r->value = sensor->regs_0x52_0x5e[i];
- }
-
- /* specific registers */
- r = sanei_genesys_get_address (regs, 0x0c);
- if (r)
- {
- r->value = sensor->reg0c;
- }
- r = sanei_genesys_get_address (regs, 0x70);
- if (r)
- {
- r->value = sensor->reg70;
- }
- r = sanei_genesys_get_address (regs, 0x71);
- if (r)
- {
- r->value = sensor->reg71;
- }
- r = sanei_genesys_get_address (regs, 0x7d);
- if (r)
- {
- if (!(dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE))
- {
- r->value = 0x90;
- }
- }
- r = sanei_genesys_get_address (regs, 0x9e);
- if (r)
- {
- r->value = sensor->reg9e;
- }
- /* undocumented register */
- r = sanei_genesys_get_address (regs, 0xaa);
- if (r)
- {
- r->value = sensor->regaa;
- }
-
- /* CKxMAP */
- sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
- sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
- sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
-
- DBGCOMPLETED;
-}
-
-
-/* returns the max register bulk size */
-static int
-gl843_bulk_full_size (void)
-{
- return GENESYS_GL843_MAX_REGS;
-}
-
-/** @brief set all registers to default values .
- * This function is called only once at the beginning and
- * fills register startup values for registers reused across scans.
- * Those that are rarely modified or not modified are written
- * individually.
- * @param dev device structure holding register set to initialize
- */
-static void
-gl843_init_registers (Genesys_Device * dev)
-{
- DBGSTART;
-
- memset (dev->reg, 0, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* default to KV-SS080 */
- SETREG (0xa2, 0x0f);
- SETREG (0x01, 0x00);
- SETREG (0x02, 0x78);
- SETREG (0x03, 0x1f);
- SETREG (0x04, 0x10);
- SETREG (0x05, 0x80);
- SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
- SETREG (0x08, 0x00);
- SETREG (0x09, 0x00);
- SETREG (0x0a, 0x00);
- SETREG (0x0b, 0x6a);
- SETREG (0x10, 0x00);
- SETREG (0x11, 0x00);
- SETREG (0x12, 0x00);
- SETREG (0x13, 0x00);
- SETREG (0x14, 0x00);
- SETREG (0x15, 0x00);
- SETREG (0x16, 0x33);
- SETREG (0x17, 0x1c);
- SETREG (0x18, 0x10);
- SETREG (0x19, 0x2a);
- SETREG (0x1a, 0x04);
- SETREG (0x1b, 0x00);
- SETREG (0x1c, 0x20);
- SETREG (0x1d, 0x04);
- SETREG (0x1e, 0x10);
- SETREG (0x1f, 0x01);
- SETREG (0x20, 0x10);
- SETREG (0x21, 0x04);
- SETREG (0x22, 0x01);
- SETREG (0x23, 0x01);
- SETREG (0x24, 0x04);
- SETREG (0x25, 0x00);
- SETREG (0x26, 0x00);
- SETREG (0x27, 0x00);
- SETREG (0x2c, 0x02);
- SETREG (0x2d, 0x58);
- SETREG (0x2e, 0x80);
- SETREG (0x2f, 0x80);
- SETREG (0x30, 0x00);
- SETREG (0x31, 0x14);
- SETREG (0x32, 0x27);
- SETREG (0x33, 0xec);
- SETREG (0x34, 0x24);
- SETREG (0x35, 0x00);
- SETREG (0x36, 0xff);
- SETREG (0x37, 0xff);
- SETREG (0x38, 0x55);
- SETREG (0x39, 0xf0);
- SETREG (0x3d, 0x00);
- SETREG (0x3e, 0x00);
- SETREG (0x3f, 0x01);
- SETREG (0x52, 0x01);
- SETREG (0x53, 0x04);
- SETREG (0x54, 0x07);
- SETREG (0x55, 0x0a);
- SETREG (0x56, 0x0d);
- SETREG (0x57, 0x10);
- SETREG (0x58, 0x1b);
- SETREG (0x59, 0x00);
- SETREG (0x5a, 0x40);
- SETREG (0x5e, 0x23);
- SETREG (0x5f, 0x01);
- SETREG (0x60, 0x00);
- SETREG (0x61, 0x00);
- SETREG (0x62, 0x00);
- SETREG (0x63, 0x00);
- SETREG (0x64, 0x00);
- SETREG (0x65, 0x00);
- SETREG (0x67, 0x7f);
- SETREG (0x68, 0x7f);
- SETREG (0x69, 0x01);
- SETREG (0x6a, 0x04);
- SETREG (0x6b, 0x30);
- SETREG (0x70, 0x01);
- SETREG (0x71, 0x03);
- SETREG (0x72, 0x04);
- SETREG (0x73, 0x05);
-
- /* CKxMAP */
- SETREG (0x74, 0x00);
- SETREG (0x75, 0x00);
- SETREG (0x76, 0x3c);
- SETREG (0x77, 0x00);
- SETREG (0x78, 0x00);
- SETREG (0x79, 0x9f);
- SETREG (0x7a, 0x00);
- SETREG (0x7b, 0x00);
- SETREG (0x7c, 0x55);
-
- SETREG (0x7d, 0x00);
- SETREG (0x7f, 0x00);
- SETREG (0x80, 0x00);
- if (strcmp (dev->model->name, "canon-canoscan-4400f") != 0)
- {
- SETREG (0x81, 0x00);
- SETREG (0x82, 0x00);
- SETREG (0x83, 0x00);
- SETREG (0x84, 0x00);
- SETREG (0x85, 0x00);
- SETREG (0x86, 0x00);
- }
- SETREG (0x87, 0x00);
- SETREG (0x9d, 0x04);
- SETREG (0x9e, 0x00);
- if (strcmp (dev->model->name, "canon-canoscan-8400f") != 0)
- {
- SETREG (0x0c, 0x00);
- SETREG (0x94, 0xff);
- SETREG (0xab, 0x50);
- }
-
- /* so many time burnt for this register ....*/
- if (strcmp (dev->model->name, "canon-canoscan-4400f") != 0
- &&strcmp (dev->model->name, "canon-canoscan-8400f") != 0)
- {
- SETREG (0xaa, 0x00);
- }
-
- /* G4050 values */
- if ((strcmp (dev->model->name, "hewlett-packard-scanjet-g4050") == 0)
- || (strcmp (dev->model->name, "hewlett-packard-scanjet-4850c") == 0)
- || (strcmp (dev->model->name, "hewlett-packard-scanjet-g4010") == 0))
- {
- SETREG (0x03, 0x1d);
- SETREG (0x05, 0x08);
- SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
- SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
- SETREG (0x0a, 0x18);
- SETREG (0x0b, 0x69);
-
- /* CIS exposure is used for XPA lamp movement */
- SETREG (0x10, 0x2c);
- SETREG (0x11, 0x09);
- SETREG (0x12, 0x22);
- SETREG (0x13, 0xb8);
- SETREG (0x14, 0x10);
- SETREG (0x15, 0xf0);
-
- SETREG (0x6b, 0xf4);
-
- SETREG (0x70, 0x00);
- SETREG (0x71, 0x02);
- SETREG (0x72, 0x00);
- SETREG (0x73, 0x00);
-
- SETREG (0x80, 0x50);
- SETREG (0x9d, 0x08);
- SETREG (0xab, 0x40);
-
- /* XXX STEF XXX TODO move to set for scan */
- SETREG (0x98, 0x03);
- SETREG (0x99, 0x30);
- SETREG (0x9a, 0x01);
- SETREG (0x9b, 0x80);
- SETREG (0xac, 0x00);
- }
-
- if (strcmp (dev->model->name, "canon-canoscan-4400f") == 0)
- {
- SETREG (0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */
- SETREG (0x0b, 0x69); /* 16M only */
- SETREG (0x1e, 0x20);
- SETREG (0x22, 0xc8);
- SETREG (0x23, 0xc8);
- SETREG (0x5e, 0x3f);
- SETREG (0x5f, 0xf0);
- SETREG (0x6b, 0x72);
- SETREG (0x72, 0x01);
- SETREG (0x73, 0x03);
- SETREG (0x80, 0x0c);
- SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
- SETREG (0x9d, 0x08); /* STEPTIM=2 */
- SETREG (0xa2, 0x1f);
- SETREG (0xab, 0x00);
- sanei_genesys_set_double(dev->reg,REG_EXPR,0x9c40);
- sanei_genesys_set_double(dev->reg,REG_EXPG,0x9c40);
- sanei_genesys_set_double(dev->reg,REG_EXPB,0x9c40);
- }
-
- if (strcmp (dev->model->name, "canon-canoscan-8400f") == 0)
- {
- SETREG (0x03, 0x1c);
- SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
- SETREG (0x0a, 0x10);
- SETREG (0x22, 0x50);
- SETREG (0x23, 0x50);
- SETREG (0x5e, 0x85);
- SETREG (0x6b, 0xb1);
- SETREG (0x1e, 0xa0);
- SETREG (0x72, 0x03);
- SETREG (0x73, 0x04);
- SETREG (0x7d, 0x20);
- SETREG (0x80, 0x28);
- SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
- SETREG (0x9d, 0x08); /* STEPTIM=2 */
- }
-
- /* fine tune upon device description */
- dev->reg[reg_0x05].value &= ~REG05_DPIHW;
- switch (dev->sensor.optical_res)
- {
- case 600:
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
- break;
- case 1200:
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
- break;
- case 2400:
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
- break;
- case 4800:
- dev->reg[reg_0x05].value |= REG05_DPIHW_4800;
- break;
- }
-
- /* initalize calibration reg */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- DBGCOMPLETED;
-}
-
-/* Send slope table for motor movement
- slope_table in machine byte order
- */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl843_send_slope_table (Genesys_Device * dev, int table_nr,
- uint16_t * slope_table, int steps)
-{
- SANE_Status status;
- uint8_t *table;
- int i;
- char msg[10000];
-
- DBG (DBG_proc, "%s (table_nr = %d, steps = %d)\n", __func__,
- table_nr, steps);
-
- table = (uint8_t *) malloc (steps * 2);
- for (i = 0; i < steps; i++)
- {
- table[i * 2] = slope_table[i] & 0xff;
- table[i * 2 + 1] = slope_table[i] >> 8;
- }
-
- if (DBG_LEVEL >= DBG_io)
- {
- sprintf (msg, "write slope %d (%d)=", table_nr, steps);
- for (i = 0; i < steps; i++)
- {
- sprintf (msg+strlen(msg), "%d", slope_table[i]);
- }
- DBG (DBG_io, "%s: %s\n", __func__, msg);
- }
-
-
- /* slope table addresses are fixed : 0x4000, 0x4800, 0x5000, 0x5800, 0x6000 */
- /* XXX STEF XXX USB 1.1 ? sanei_genesys_write_0x8c (dev, 0x0f, 0x14); */
- status = write_data (dev, 0x4000 + 0x800 * table_nr, steps * 2, table);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: write data failed writing slope table %d (%s)\n",
- __func__, table_nr, sane_strstatus (status));
- }
-
- free (table);
- DBGCOMPLETED;
- return status;
-}
-
-
-/* Set values of analog frontend */
-static SANE_Status
-gl843_set_fe (Genesys_Device * dev, uint8_t set)
-{
- SANE_Status status;
- uint8_t val;
- int i;
-
- DBG (DBG_proc, "gl843_set_fe (%s)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
- AFE_POWER_SAVE ? "powersave" : "huh?");
-
- if (set == AFE_INIT)
- {
- DBG (DBG_proc, "gl843_set_fe(): setting DAC %u\n",
- dev->model->dac_type);
- sanei_genesys_init_fe (dev);
- }
-
- /* check analog frontend type */
- RIE (sanei_genesys_read_register (dev, REG04, &val));
- if ((val & REG04_FESET) != 0x00)
- {
- /* for now there is no support for AD fe */
- DBG (DBG_proc, "gl843_set_fe(): unsupported frontend type %d\n",
- dev->reg[reg_0x04].value & REG04_FESET);
- return SANE_STATUS_UNSUPPORTED;
- }
-
- DBG (DBG_proc, "gl843_set_fe(): frontend reset complete\n");
-
- for (i = 1; i <= 3; i++)
- {
- status = sanei_genesys_fe_write_data (dev, i, dev->frontend.reg[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_fe: writing reg[%d] failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
-
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x20 + i, dev->frontend.offset[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_fe: writing offset[%d] failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
-
- if (dev->model->ccd_type == CCD_KVSS080)
- {
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x24 + i,
- dev->frontend.sign[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_fe: writing sign[%d] failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
- }
-
- for (i = 0; i < 3; i++)
- {
- status =
- sanei_genesys_fe_write_data (dev, 0x28 + i, dev->frontend.gain[i]);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_set_fe: writing gain[%d] failed: %s\n", i,
- sane_strstatus (status));
- return status;
- }
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-
-static SANE_Status
-gl843_init_motor_regs_scan (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- unsigned int exposure,
- float scan_yres,
- int scan_step_type,
- unsigned int scan_lines,
- unsigned int scan_dummy,
- unsigned int feed_steps,
- int scan_power_mode,
- unsigned int flags)
-{
- SANE_Status status;
- int use_fast_fed, coeff;
- unsigned int lincnt;
- uint16_t scan_table[1024];
- uint16_t fast_table[1024];
- int scan_steps,fast_steps, fast_step_type;
- unsigned int feedl,factor,dist;
- Genesys_Register_Set *r;
- uint32_t z1, z2;
-
- DBGSTART;
- DBG (DBG_info, "gl843_init_motor_regs_scan : exposure=%d, "
- "scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
- "feed_steps=%d, scan_power_mode=%d, flags=%x\n",
- exposure, scan_yres, scan_step_type,
- scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
-
- /* get step multiplier */
- factor = gl843_get_step_multiplier (reg);
-
- use_fast_fed = 0;
-
- if((scan_yres>=300 && feed_steps>900) || (flags & MOTOR_FLAG_FEED))
- use_fast_fed=1;
-
- lincnt=scan_lines;
- sanei_genesys_set_triple(reg,REG_LINCNT,lincnt);
- DBG (DBG_io, "%s: lincnt=%d\n", __func__, lincnt);
-
- /* compute register 02 value */
- r = sanei_genesys_get_address (reg, REG02);
- r->value = 0x00;
- r->value |= REG02_MTRPWR;
-
- if (use_fast_fed)
- r->value |= REG02_FASTFED;
- else
- r->value &= ~REG02_FASTFED;
-
- /* in case of automatic go home, move until home sensor */
- if (flags & MOTOR_FLAG_AUTO_GO_HOME)
- r->value |= REG02_AGOHOME | REG02_NOTHOME;
-
- /* disable backtracking */
- if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
- ||(scan_yres>=2400)
- ||(scan_yres>=dev->sensor.optical_res))
- r->value |= REG02_ACDCDIS;
-
- /* scan and backtracking slope table */
- sanei_genesys_slope_table(scan_table,
- &scan_steps,
- scan_yres,
- exposure,
- dev->motor.base_ydpi,
- scan_step_type,
- factor,
- dev->model->motor_type,
- gl843_motors);
- RIE(gl843_send_slope_table (dev, SCAN_TABLE, scan_table, scan_steps*factor));
- RIE(gl843_send_slope_table (dev, BACKTRACK_TABLE, scan_table, scan_steps*factor));
-
- /* STEPNO */
- r = sanei_genesys_get_address (reg, REG_STEPNO);
- r->value = scan_steps;
-
- /* FSHDEC */
- r = sanei_genesys_get_address (reg, REG_FSHDEC);
- r->value = scan_steps;
-
- /* fast table */
- fast_step_type=0;
- if(scan_step_type<=fast_step_type)
- {
- fast_step_type=scan_step_type;
- }
- sanei_genesys_slope_table(fast_table,
- &fast_steps,
- sanei_genesys_get_lowest_ydpi(dev),
- exposure,
- dev->motor.base_ydpi,
- fast_step_type,
- factor,
- dev->model->motor_type,
- gl843_motors);
- RIE(gl843_send_slope_table (dev, STOP_TABLE, fast_table, fast_steps*factor));
- RIE(gl843_send_slope_table (dev, FAST_TABLE, fast_table, fast_steps*factor));
- RIE(gl843_send_slope_table (dev, HOME_TABLE, fast_table, fast_steps*factor));
-
- /* FASTNO */
- r = sanei_genesys_get_address (reg, REG_FASTNO);
- r->value = fast_steps;
-
- /* FMOVNO */
- r = sanei_genesys_get_address (reg, REG_FMOVNO);
- r->value = fast_steps;
-
- /* substract acceleration distance from feedl */
- feedl=feed_steps;
- feedl<<=scan_step_type;
-
- dist = scan_steps;
- if (use_fast_fed)
- {
- dist += fast_steps*2;
- }
- DBG (DBG_io2, "%s: acceleration distance=%d\n", __func__, dist);
-
- /* get sure when don't insane value : XXX STEF XXX in this case we should
- * fall back to single table move */
- if(dist<feedl)
- feedl -= dist;
- else
- feedl = 1;
-
- sanei_genesys_set_triple(reg,REG_FEEDL,feedl);
- DBG (DBG_io, "%s: feedl=%d\n", __func__, feedl);
-
- /* doesn't seem to matter that much */
- sanei_genesys_calculate_zmode2 (use_fast_fed,
- exposure,
- scan_table,
- scan_steps,
- feedl,
- scan_steps,
- &z1,
- &z2);
- if(scan_yres>600)
- {
- z1=0;
- z2=0;
- }
-
- sanei_genesys_set_triple(reg,REG_Z1MOD,z1);
- DBG (DBG_info, "gl843_init_motor_regs_scan: z1 = %d\n", z1);
-
- sanei_genesys_set_triple(reg,REG_Z2MOD,z2);
- DBG (DBG_info, "gl843_init_motor_regs_scan: z2 = %d\n", z2);
-
- r = sanei_genesys_get_address (reg, REG1E);
- r->value &= 0xf0; /* 0 dummy lines */
- r->value |= scan_dummy; /* dummy lines */
-
- r = sanei_genesys_get_address (reg, REG67);
- r->value = 0x3f | (scan_step_type << REG67S_STEPSEL);
-
- r = sanei_genesys_get_address (reg, REG68);
- r->value = 0x3f | (scan_step_type << REG68S_FSTPSEL);
-
- /* steps for STOP table */
- r = sanei_genesys_get_address (reg, REG_FMOVDEC);
- r->value = fast_steps;
-
- /* Vref XXX STEF XXX : optical divider or step type ? */
- r = sanei_genesys_get_address (reg, 0x80);
- if (!(dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE))
- {
- r->value = 0x50;
- coeff=dev->sensor.optical_res/sanei_genesys_compute_dpihw(dev, scan_yres);
- if (dev->model->motor_type == MOTOR_KVSS080)
- {
- if(coeff>=1)
- {
- r->value |= 0x05;
- }
- }
- else {
- switch(coeff)
- {
- case 4:
- r->value |= 0x0a;
- break;
- case 2:
- r->value |= 0x0f;
- break;
- case 1:
- r->value |= 0x0f;
- break;
- }
- }
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-
-/**@brief compute exposure to use
- * compute the sensor exposure based on target resolution
- */
-static int gl843_compute_exposure(Genesys_Device *dev, int xres, int flags)
-{
- Sensor_Profile *sensor;
-
- sensor=get_sensor_profile(dev->model->ccd_type, xres, flags);
- return sensor->exposure;
-}
-
-/** @brief setup optical related registers
- * start and pixels are expressed in optical sensor resolution coordinate
- * space.
- * @param dev device to use
- * @param reg registers to set up
- * @param exposure exposure time to use
- * @param used_res scanning resolution used, may differ from
- * scan's one
- * @param start logical start pixel coordinate
- * @param pixels logical number of pixels to use
- * @param channels number of color channles used (1 or 3)
- * @param depth bit depth of the scan (1, 8 or 16 bits)
- * @param half_ccd SANE_TRUE if timings are such that x coordiantes must be halved
- * @param color_filter to choose the color channel used in gray scans
- * @param flags to drive specific settings such no calibration, XPA use ...
- * @return SANE_STATUS_GOOD if OK
- */
-static SANE_Status
-gl843_init_optical_regs_scan (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- unsigned int exposure,
- int used_res,
- unsigned int start,
- unsigned int pixels,
- int channels,
- int depth,
- SANE_Bool half_ccd,
- int color_filter,
- int flags)
-{
- unsigned int words_per_line;
- unsigned int startx, endx, used_pixels;
- unsigned int dpiset, dpihw, factor;
- unsigned int bytes;
- unsigned int tgtime; /**> exposure time multiplier */
- unsigned int cksel; /**> clock per system pixel time in capturing image */
- Genesys_Register_Set *r;
- SANE_Status status;
-
- DBG (DBG_proc, "gl843_init_optical_regs_scan : exposure=%d, "
- "used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
- "half_ccd=%d, flags=%x\n",
- exposure,
- used_res, start, pixels, channels, depth, half_ccd, flags);
-
- /* tgtime */
- tgtime=1;
- if (dev->model->ccd_type == CCD_G4050 && used_res>2400)
- {
- tgtime=2;
- }
- DBG (DBG_io2, "%s: tgtime=%d\n", __func__, tgtime);
-
- /* to manage high resolution device while keeping good
- * low resolution scanning speed, we make hardware dpi vary */
- dpihw=sanei_genesys_compute_dpihw(dev, used_res);
- factor=dev->sensor.optical_res/dpihw;
- DBG (DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
-
- /* sensor parameters */
- gl843_setup_sensor (dev, reg, dpihw, flags);
-
- /* resolution is divided according to CKSEL which is known once sensor is set up */
- r = sanei_genesys_get_address (reg, REG18);
- cksel= (r->value & REG18_CKSEL)+1;
- DBG (DBG_io2, "%s: cksel=%d\n", __func__, cksel);
- dpiset = used_res * cksel;
-
- /* start and end coordinate in optical dpi coordinates */
- startx = (start + dev->sensor.dummy_pixel * tgtime)/cksel;
-
- used_pixels=pixels/cksel;
- endx = startx + used_pixels;
-
- /* pixel coordinate factor correction when used dpihw is not maximal one */
- startx/=factor;
- endx/=factor;
- used_pixels=endx-startx;
-
- /* in case of stagger we have to start at an odd coordinate */
- if ((flags & OPTICAL_FLAG_STAGGER)
- &&((startx & 1)==0))
- {
- startx++;
- endx++;
- }
-
- status = gl843_set_fe (dev, AFE_SET);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to set frontend: %s\n", __func__,
- sane_strstatus (status));
- return status;
- }
-
- /* enable shading */
- r = sanei_genesys_get_address (reg, REG01);
- r->value &= ~REG01_SCAN;
- if ((flags & OPTICAL_FLAG_DISABLE_SHADING) || (dev->model->flags & GENESYS_FLAG_NO_CALIBRATION))
- {
- r->value &= ~REG01_DVDSET;
- }
- else
- {
- r->value |= REG01_DVDSET;
- }
- if(dpihw>600)
- {
- r->value |= REG01_SHDAREA;
- }
- else
- {
- r->value &= ~REG01_SHDAREA;
- }
-
- r = sanei_genesys_get_address (reg, REG03);
- r->value &= ~REG03_AVEENB;
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value &= ~REG03_LAMPPWR;
- else
- r->value |= REG03_LAMPPWR;
-
- /* select XPA */
- r->value &= ~REG03_XPASEL;
- if (flags & OPTICAL_FLAG_USE_XPA)
- {
- r->value |= REG03_XPASEL;
- }
-
- /* BW threshold */
- r = sanei_genesys_get_address (reg, REG2E);
- r->value = dev->settings.threshold;
- r = sanei_genesys_get_address (reg, REG2F);
- r->value = dev->settings.threshold;
-
- /* monochrome / color scan */
- r = sanei_genesys_get_address (reg, REG04);
- switch (depth)
- {
- case 1:
- r->value &= ~REG04_BITSET;
- r->value |= REG04_LINEART;
- break;
- case 8:
- r->value &= ~(REG04_LINEART | REG04_BITSET);
- break;
- case 16:
- r->value &= ~REG04_LINEART;
- r->value |= REG04_BITSET;
- break;
- }
-
- r->value &= ~(REG04_FILTER | REG04_AFEMOD);
- if (channels == 1)
- {
- switch (color_filter)
- {
- case 0:
- r->value |= 0x14; /* red filter */
- break;
- case 2:
- r->value |= 0x1c; /* blue filter */
- break;
- default:
- r->value |= 0x18; /* green filter */
- break;
- }
- }
- else
- r->value |= 0x10; /* mono */
-
- /* register 05 */
- r = sanei_genesys_get_address (reg, REG05);
-
- /* set up dpihw */
- r->value &= ~REG05_DPIHW;
- switch(dpihw)
- {
- case 600:
- r->value |= REG05_DPIHW_600;
- break;
- case 1200:
- r->value |= REG05_DPIHW_1200;
- break;
- case 2400:
- r->value |= REG05_DPIHW_2400;
- break;
- case 4800:
- r->value |= REG05_DPIHW_4800;
- break;
- }
-
- /* enable gamma tables */
- if (flags & OPTICAL_FLAG_DISABLE_GAMMA)
- r->value &= ~REG05_GMMENB;
- else
- r->value |= REG05_GMMENB;
-
- if(half_ccd)
- {
- sanei_genesys_set_double(reg,REG_DPISET,dpiset*4);
- DBG (DBG_io2, "%s: dpiset used=%d\n", __func__, dpiset*4);
- }
- else
- {
- sanei_genesys_set_double(reg,REG_DPISET,dpiset);
- DBG (DBG_io2, "%s: dpiset used=%d\n", __func__, dpiset);
- }
-
- sanei_genesys_set_double(reg,REG_STRPIXEL,startx/tgtime);
- sanei_genesys_set_double(reg,REG_ENDPIXEL,endx/tgtime);
-
- /* words(16bit) before gamma, conversion to 8 bit or lineart */
- words_per_line = (used_pixels * dpiset) / dpihw;
- bytes = depth / 8;
- if (depth == 1)
- {
- words_per_line = (words_per_line >> 3) + ((words_per_line & 7) ? 1 : 0);
- }
- else
- {
- words_per_line *= bytes;
- }
-
- dev->wpl = words_per_line;
- dev->bpl = words_per_line;
-
- DBG (DBG_io2, "%s: used_pixels=%d\n", __func__, used_pixels);
- DBG (DBG_io2, "%s: pixels =%d\n", __func__, pixels);
- DBG (DBG_io2, "%s: depth =%d\n", __func__, depth);
- DBG (DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->bpl);
- DBG (DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
- DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
-
- words_per_line *= channels;
-
- /* MAXWD is expressed in 2 words unit */
- /* nousedspace = (mem_bank_range * 1024 / 256 -1 ) * 4; */
- sanei_genesys_set_triple(reg,REG_MAXWD,(words_per_line)>>1);
- DBG (DBG_io2, "%s: words_per_line used=%d\n", __func__, words_per_line);
-
- sanei_genesys_set_double(reg,REG_LPERIOD,exposure/tgtime);
- DBG (DBG_io2, "%s: exposure used=%d\n", __func__, exposure/tgtime);
-
- r = sanei_genesys_get_address (reg, REG_DUMMY);
- r->value = dev->sensor.dummy_pixel * tgtime;
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/* set up registers for an actual scan
- *
- * this function sets up the scanner to scan in normal or single line mode
- */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl843_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int scan_mode,
- int color_filter,
- unsigned int flags)
-{
- int used_res;
- int start, used_pixels;
- int bytes_per_line;
- int move;
- unsigned int lincnt; /**> line count to scan */
- unsigned int oflags, mflags; /**> optical and motor flags */
- int exposure;
- int stagger;
-
- int slope_dpi = 0;
- int dummy = 0;
- int scan_step_type = 1;
- int scan_power_mode = 0;
- int max_shift;
- size_t requested_buffer_size, read_buffer_size;
-
- SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
- int optical_res;
- SANE_Status status;
-
- DBG (DBG_info,
- "gl843_init_scan_regs settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g/%g\n"
- "Depth/Channels: %u/%u\n"
- "Flags : %x\n\n",
- xres, yres, lines, pixels, startx, starty, depth, channels, flags);
-
-
- /* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if (dev->sensor.optical_res < 4 * xres ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
- {
- half_ccd = SANE_FALSE;
- }
- else
- {
- half_ccd = SANE_TRUE;
- }
-
- /* optical_res */
- optical_res = dev->sensor.optical_res;
- if (half_ccd)
- optical_res /= 4;
-
- /* stagger starting at 2400, and not applied for calibration */
- stagger = 0;
- if ( (yres>1200)
- && ((flags & SCAN_FLAG_IGNORE_LINE_DISTANCE)==0)
- && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- {
- stagger = (4 * yres) / dev->motor.base_ydpi;
- }
- DBG (DBG_info, "%s : stagger=%d lines\n", __func__, stagger);
-
- /* we enable true gray for cis scanners only, and just when doing
- * scan since color calibration is OK for this mode
- */
- oflags = 0;
- if (flags & SCAN_FLAG_DISABLE_SHADING)
- oflags |= OPTICAL_FLAG_DISABLE_SHADING;
- if (flags & SCAN_FLAG_DISABLE_GAMMA)
- oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
- if (flags & SCAN_FLAG_DISABLE_LAMP)
- oflags |= OPTICAL_FLAG_DISABLE_LAMP;
- if (flags & SCAN_FLAG_CALIBRATION)
- oflags |= OPTICAL_FLAG_DISABLE_DOUBLE;
- if(stagger)
- oflags |= OPTICAL_FLAG_STAGGER;
- if (flags & SCAN_FLAG_USE_XPA)
- oflags |= OPTICAL_FLAG_USE_XPA;
-
- /** @brief compute used resolution */
- if (flags & SCAN_FLAG_USE_OPTICAL_RES)
- {
- used_res = optical_res;
- }
- else
- {
- /* resolution is choosen from a fixed list and can be used directly
- * unless we have ydpi higher than sensor's maximum one */
- if(xres>optical_res)
- used_res=optical_res;
- else
- used_res = xres;
- }
-
- /* compute scan parameters values */
- /* pixels are allways given at full optical resolution */
- /* use detected left margin and fixed value */
- /* start */
- start = startx;
-
- /* compute correct pixels number */
- used_pixels = (pixels * optical_res) / xres;
- DBG (DBG_info, "%s: used_pixels=%d\n", __func__, used_pixels);
-
- /* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
- used_pixels++;
-
- /* we want even number of pixels here */
- if(used_pixels & 1)
- used_pixels++;
-
- dummy = 0;
- /* dummy = 1; XXX STEF XXX */
-
- /* slope_dpi */
- /* cis color scan is effectively a gray scan with 3 gray lines per color line and a FILTER of 0 */
- if (dev->model->is_cis)
- slope_dpi = yres * channels;
- else
- slope_dpi = yres;
- slope_dpi = slope_dpi * (1 + dummy);
-
- /* scan_step_type */
- if(flags & SCAN_FLAG_FEEDING)
- {
- exposure=gl843_compute_exposure (dev, sanei_genesys_get_lowest_ydpi(dev), oflags);
- scan_step_type=sanei_genesys_compute_step_type (gl843_motors, dev->model->motor_type, exposure);
- }
- else
- {
- exposure = gl843_compute_exposure (dev, used_res, oflags);
- scan_step_type = sanei_genesys_compute_step_type(gl843_motors, dev->model->motor_type, exposure);
- }
-
- DBG (DBG_info, "%s : exposure=%d pixels\n", __func__, exposure);
- DBG (DBG_info, "%s : scan_step_type=%d\n", __func__, scan_step_type);
-
- /*** optical parameters ***/
- /* in case of dynamic lineart, we use an internal 8 bit gray scan
- * to generate 1 lineart data */
- if ((flags & SCAN_FLAG_DYNAMIC_LINEART) && (scan_mode == SCAN_MODE_LINEART))
- {
- depth = 8;
- }
- /* no 16 bit gamma for this ASIC */
- if (depth == 16)
- {
- flags |= SCAN_FLAG_DISABLE_GAMMA;
- oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
- }
-
- /* now _LOGICAL_ optical values used are known, setup registers */
- status = gl843_init_optical_regs_scan (dev,
- reg,
- exposure,
- used_res,
- start,
- used_pixels,
- channels,
- depth,
- half_ccd,
- color_filter,
- oflags);
- if (status != SANE_STATUS_GOOD)
- return status;
-
- /*** motor parameters ***/
-
- /* it seems base_dpi of the G4050 motor is changed above 600 dpi*/
- if (dev->model->motor_type == MOTOR_G4050 && yres>600)
- {
- dev->ld_shift_r = (dev->model->ld_shift_r*3800)/dev->motor.base_ydpi;
- dev->ld_shift_g = (dev->model->ld_shift_g*3800)/dev->motor.base_ydpi;
- dev->ld_shift_b = (dev->model->ld_shift_b*3800)/dev->motor.base_ydpi;
- }
- else
- {
- dev->ld_shift_r = dev->model->ld_shift_r;
- dev->ld_shift_g = dev->model->ld_shift_g;
- dev->ld_shift_b = dev->model->ld_shift_b;
- }
-
- /* max_shift */
- /* scanned area must be enlarged by max color shift needed */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,flags);
-
- /* lines to scan */
- lincnt = lines + max_shift + stagger;
-
- /* add tl_y to base movement */
- move = starty;
- DBG (DBG_info, "gl843_init_scan_regs: move=%d steps\n", move);
-
-
- mflags=0;
- if(flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
- mflags|=MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE;
- if(flags & SCAN_FLAG_FEEDING)
- mflags|=MOTOR_FLAG_FEED;
- if (flags & SCAN_FLAG_USE_XPA)
- mflags |= MOTOR_FLAG_USE_XPA;
-
- status = gl843_init_motor_regs_scan (dev,
- reg,
- exposure,
- slope_dpi,
- scan_step_type,
- dev->model->is_cis ? lincnt * channels : lincnt,
- dummy,
- move,
- scan_power_mode,
- mflags);
- if (status != SANE_STATUS_GOOD)
- return status;
-
- /*** prepares data reordering ***/
-
- /* words_per_line */
- bytes_per_line = (used_pixels * used_res) / optical_res;
- bytes_per_line = (bytes_per_line * channels * depth) / 8;
-
- /* since we don't have sheetfed scanners to handle,
- * use huge read buffer */
- /* TODO find the best size according to settings */
- requested_buffer_size = 16 * bytes_per_line;
-
- read_buffer_size =
- 2 * requested_buffer_size +
- ((max_shift + stagger) * used_pixels * channels * depth) / 8;
-
- RIE (sanei_genesys_buffer_free (&(dev->read_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->read_buffer), read_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->lines_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->lines_buffer), read_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->shrink_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->shrink_buffer),
- requested_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->out_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->out_buffer),
- (8 * dev->settings.pixels * channels *
- depth) / 8));
-
-
- dev->read_bytes_left = bytes_per_line * lincnt;
-
- DBG (DBG_info,
- "gl843_init_scan_regs: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
- dev->read_active = SANE_TRUE;
-
-
- dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
- DBG (DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
- dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
- dev->current_setup.exposure_time = exposure;
- dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
- dev->current_setup.stagger = stagger;
- dev->current_setup.max_shift = max_shift + stagger;
-
- dev->total_bytes_read = 0;
- if (depth == 1)
- dev->total_bytes_to_read =
- ((dev->settings.pixels * dev->settings.lines) / 8 +
- (((dev->settings.pixels * dev->settings.lines) % 8) ? 1 : 0)) *
- channels;
- else
- dev->total_bytes_to_read =
- dev->settings.pixels * dev->settings.lines * channels * (depth / 8);
-
- DBG (DBG_info, "gl843_init_scan_regs: total bytes to send = %lu\n",
- (u_long) dev->total_bytes_to_read);
-
- DBG (DBG_proc, "gl843_init_scan_regs: completed\n");
- return SANE_STATUS_GOOD;
-}
-
-static SANE_Status
-gl843_calculate_current_setup (Genesys_Device * dev)
-{
- int channels;
- int depth;
- int start;
-
- float xres; /*dpi */
- float yres; /*dpi */
- float startx; /*optical_res, from dummy_pixel+1 */
- float pixels;
- float lines;
-
- int used_res;
- int used_pixels;
- unsigned int lincnt;
- int exposure;
- int stagger;
-
- int max_shift;
-
- SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
- int optical_res;
- int oflags;
-
- DBG (DBG_info,
- "gl843_calculate_current_setup settings:\n"
- "Resolution: %ux%uDPI\n"
- "Lines : %u\n"
- "PPL : %u\n"
- "Startpos : %.3f/%.3f\n"
- "Scan mode : %d\n\n",
- dev->settings.xres,
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
-
- /* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
- channels = 3;
- else
- channels = 1;
-
- /* depth */
- depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
- depth = 1;
-
- /* start */
- start = SANE_UNFIX (dev->model->x_offset);
- start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
- /* optical flags */
- oflags=0;
- if(dev->settings.scan_method==SCAN_METHOD_TRANSPARENCY)
- {
- oflags=OPTICAL_FLAG_USE_XPA;
- }
-
- xres = dev->settings.xres;
- yres = dev->settings.yres;
- startx = start;
- pixels = dev->settings.pixels;
- lines = dev->settings.lines;
-
- DBG (DBG_info,
- "gl843_calculate_current_setup settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g\n"
- "Depth/Channels: %u/%u\n\n",
- xres, yres, lines, pixels, startx, depth, channels);
-
-/* half_ccd */
- /* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if ((dev->sensor.optical_res < 4 * xres) ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
- {
- half_ccd = SANE_FALSE;
- }
- else
- {
- half_ccd = SANE_TRUE;
- }
-
-
- /* optical_res */
- optical_res = dev->sensor.optical_res;
- if (half_ccd)
- optical_res /= 4;
-
- /* stagger */
- if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
- else
- stagger = 0;
- DBG (DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
-
- if(xres<=optical_res)
- used_res = xres;
- else
- used_res=optical_res;
-
- /* compute scan parameters values */
- /* pixels are allways given at half or full CCD optical resolution */
- /* use detected left margin and fixed value */
-
- /* compute correct pixels number */
- used_pixels = (pixels * optical_res) / xres;
- DBG (DBG_info, "%s: used_pixels=%d\n", __func__, used_pixels);
-
- /* exposure */
- exposure = gl843_compute_exposure (dev, used_res, oflags);
- DBG (DBG_info, "%s : exposure=%d pixels\n", __func__, exposure);
-
- /* it seems base_dpi of the G4050 motor is changed above 600 dpi*/
- if (dev->model->motor_type == MOTOR_G4050 && yres>600)
- {
- dev->ld_shift_r = (dev->model->ld_shift_r*3800)/dev->motor.base_ydpi;
- dev->ld_shift_g = (dev->model->ld_shift_g*3800)/dev->motor.base_ydpi;
- dev->ld_shift_b = (dev->model->ld_shift_b*3800)/dev->motor.base_ydpi;
- }
- else
- {
- dev->ld_shift_r = dev->model->ld_shift_r;
- dev->ld_shift_g = dev->model->ld_shift_g;
- dev->ld_shift_b = dev->model->ld_shift_b;
- }
-
- /* scanned area must be enlarged by max color shift needed */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,0);
-
- /* lincnt */
- lincnt = lines + max_shift + stagger;
-
- dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
- DBG (DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
- dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
- dev->current_setup.exposure_time = exposure;
- dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
- dev->current_setup.stagger = stagger;
- dev->current_setup.max_shift = max_shift + stagger;
-
- DBG (DBG_proc, "gl843_calculate_current_setup: completed\n");
- return SANE_STATUS_GOOD;
-}
-
-static void
-gl843_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
-
- DBG (DBG_proc, "gl843_set_motor_power\n");
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- | REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- & ~REG02_MTRPWR);
- }
-}
-
-static void
-gl843_set_lamp_power (Genesys_Device * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- Genesys_Register_Set *r;
- int i;
- uint8_t val;
-
- val = sanei_genesys_read_reg_from_set (regs, REG03);
- if (set)
- {
- val |= REG03_LAMPPWR;
- sanei_genesys_set_reg_from_set (regs, REG03, val);
- for (i = 0; i < 6; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
- }
- else
- {
- val &= ~REG03_LAMPPWR;
- sanei_genesys_set_reg_from_set (regs, REG03, val);
- for (i = 0; i < 6; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- r->value = 0x00;
- }
- }
-}
-
-/**
- * for fast power saving methods only, like disabling certain amplifiers
- * @param dev device to use
- * @param enable true to set inot powersaving
- * */
-static SANE_Status
-gl843_save_power (Genesys_Device * dev, SANE_Bool enable)
-{
- uint8_t val;
- SANE_Status status;
-
- DBG (DBG_proc, "gl843_save_power: enable = %d\n", enable);
- if (dev == NULL)
- return SANE_STATUS_INVAL;
-
- /* switch KV-SS080 lamp off */
- if (dev->model->gpo_type == GPO_KVSS080)
- {
- RIE(sanei_genesys_read_register (dev, REG6C, &val));
- if(enable)
- val &= 0xef;
- else
- val |= 0x10;
- RIE(sanei_genesys_write_register(dev,REG6C,val));
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static SANE_Status
-gl843_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
-{
- SANE_Status status = SANE_STATUS_GOOD;
-
- DBG (DBG_proc, "gl843_set_powersaving (delay = %d)\n", delay);
- if (dev == NULL)
- return SANE_STATUS_INVAL;
-
- DBGCOMPLETED;
- return status;
-}
-
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl843_start_action (Genesys_Device * dev)
-{
- return sanei_genesys_write_register (dev, 0x0f, 0x01);
-}
-
-static SANE_Status
-gl843_stop_action (Genesys_Device * dev)
-{
- SANE_Status status;
- uint8_t val40, val;
- unsigned int loop;
-
- DBG (DBG_proc, "%s\n", __func__);
-
- status = sanei_genesys_get_status (dev, &val);
- if (DBG_LEVEL >= DBG_io)
- {
- sanei_genesys_print_status (val);
- }
-
- val40 = 0;
- status = sanei_genesys_read_register (dev, REG40, &val40);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
- DBG (DBG_proc, "%s: completed\n", __func__);
- return status;
- }
-
- /* only stop action if needed */
- if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG))
- {
- DBG (DBG_info, "%s: already stopped\n", __func__);
- DBG (DBG_proc, "%s: completed\n", __func__);
- return SANE_STATUS_GOOD;
- }
-
- /* ends scan 646 */
- val = sanei_genesys_read_reg_from_set (dev->reg, REG01);
- val &= ~REG01_SCAN;
- sanei_genesys_set_reg_from_set (dev->reg, REG01, val);
- status = sanei_genesys_write_register (dev, REG01, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to write register 01: %s\n", __func__,
- sane_strstatus (status));
- return status;
- }
- usleep (100 * 1000);
-
- loop = 10;
- while (loop > 0)
- {
- status = sanei_genesys_get_status (dev, &val);
- if (DBG_LEVEL >= DBG_io)
- {
- sanei_genesys_print_status (val);
- }
- val40 = 0;
- status = sanei_genesys_read_register (dev, 0x40, &val40);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
-
- /* if scanner is in command mode, we are done */
- if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG)
- && !(val & REG41_MOTORENB))
- {
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
-
- usleep (100 * 1000);
- loop--;
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_IO_ERROR;
-}
-
-static SANE_Status
-gl843_get_paper_sensor (Genesys_Device * dev, SANE_Bool * paper_loaded)
-{
- SANE_Status status;
- uint8_t val;
-
- status = sanei_genesys_read_register (dev, REG6D, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_get_paper_sensor: failed to read gpio: %s\n",
- sane_strstatus (status));
- return status;
- }
- *paper_loaded = (val & 0x1) == 0;
- return SANE_STATUS_GOOD;
-
- return SANE_STATUS_INVAL;
-}
-
-static SANE_Status
-gl843_eject_document (Genesys_Device * dev)
-{
- DBG (DBG_proc, "%s: not implemented \n", __func__);
- if (dev == NULL)
- return SANE_STATUS_INVAL;
- return SANE_STATUS_GOOD;
-}
-
-
-static SANE_Status
-gl843_load_document (Genesys_Device * dev)
-{
- DBG (DBG_proc, "%s: not implemented \n", __func__);
- if (dev == NULL)
- return SANE_STATUS_INVAL;
- return SANE_STATUS_GOOD;
-}
-
-/**
- * detects end of document and adjust current scan
- * to take it into account
- * used by sheetfed scanners
- */
-static SANE_Status
-gl843_detect_document_end (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- SANE_Bool paper_loaded;
- unsigned int scancnt = 0;
- int flines, channels, depth, bytes_remain, sublines,
- bytes_to_flush, lines, sub_bytes, tmp, read_bytes_left;
- DBG (DBG_proc, "%s: begin\n", __func__);
-
- RIE (gl843_get_paper_sensor (dev, &paper_loaded));
-
- /* sheetfed scanner uses home sensor as paper present */
- if ((dev->document == SANE_TRUE) && !paper_loaded)
- {
- DBG (DBG_info, "%s: no more document\n", __func__);
- dev->document = SANE_FALSE;
-
- channels = dev->current_setup.channels;
- depth = dev->current_setup.depth;
- read_bytes_left = (int) dev->read_bytes_left;
- DBG (DBG_io, "gl843_detect_document_end: read_bytes_left=%d\n",
- read_bytes_left);
-
- /* get lines read */
- status = sanei_genesys_read_scancnt (dev, &scancnt);
- if (status != SANE_STATUS_GOOD)
- {
- flines = 0;
- }
- else
- {
- /* compute number of line read */
- tmp = (int) dev->total_bytes_read;
- if (depth == 1 || dev->settings.scan_mode == SCAN_MODE_LINEART)
- flines = tmp * 8 / dev->settings.pixels / channels;
- else
- flines = tmp / (depth / 8) / dev->settings.pixels / channels;
-
- /* number of scanned lines, but no read yet */
- flines = scancnt - flines;
-
- DBG (DBG_io,
- "gl843_detect_document_end: %d scanned but not read lines\n",
- flines);
- }
-
- /* adjust number of bytes to read
- * we need to read the final bytes which are word per line * number of last lines
- * to have doc leaving feeder */
- lines =
- (SANE_UNFIX (dev->model->post_scan) * dev->current_setup.yres) /
- MM_PER_INCH + flines;
- DBG (DBG_io, "gl843_detect_document_end: adding %d line to flush\n",
- lines);
-
- /* number of bytes to read from scanner to get document out of it after
- * end of document dectected by hardware sensor */
- bytes_to_flush = lines * dev->wpl;
-
- /* if we are already close to end of scan, flushing isn't needed */
- if (bytes_to_flush < read_bytes_left)
- {
- /* we take all these step to work around an overflow on some plateforms */
- tmp = (int) dev->total_bytes_read;
- DBG (DBG_io, "gl843_detect_document_end: tmp=%d\n", tmp);
- bytes_remain = (int) dev->total_bytes_to_read;
- DBG (DBG_io, "gl843_detect_document_end: bytes_remain=%d\n",
- bytes_remain);
- bytes_remain = bytes_remain - tmp;
- DBG (DBG_io, "gl843_detect_document_end: bytes_remain=%d\n",
- bytes_remain);
-
- /* remaining lines to read by frontend for the current scan */
- if (depth == 1 || dev->settings.scan_mode == SCAN_MODE_LINEART)
- {
- flines = bytes_remain * 8 / dev->settings.pixels / channels;
- }
- else
- flines = bytes_remain / (depth / 8)
- / dev->settings.pixels / channels;
- DBG (DBG_io, "gl843_detect_document_end: flines=%d\n", flines);
-
- if (flines > lines)
- {
- /* change the value controlling communication with the frontend :
- * total bytes to read is current value plus the number of remaining lines
- * multiplied by bytes per line */
- sublines = flines - lines;
-
- if (depth == 1 || dev->settings.scan_mode == SCAN_MODE_LINEART)
- sub_bytes =
- ((dev->settings.pixels * sublines) / 8 +
- (((dev->settings.pixels * sublines) % 8) ? 1 : 0)) *
- channels;
- else
- sub_bytes =
- dev->settings.pixels * sublines * channels * (depth / 8);
-
- dev->total_bytes_to_read -= sub_bytes;
-
- /* then adjust the physical bytes to read */
- if (read_bytes_left > sub_bytes)
- {
- dev->read_bytes_left -= sub_bytes;
- }
- else
- {
- dev->total_bytes_to_read = dev->total_bytes_read;
- dev->read_bytes_left = 0;
- }
-
- DBG (DBG_io, "gl843_detect_document_end: sublines=%d\n",
- sublines);
- DBG (DBG_io, "gl843_detect_document_end: subbytes=%d\n",
- sub_bytes);
- DBG (DBG_io,
- "gl843_detect_document_end: total_bytes_to_read=%lu\n",
- (unsigned long) dev->total_bytes_to_read);
- DBG (DBG_io,
- "gl843_detect_document_end: read_bytes_left=%d\n",
- read_bytes_left);
- }
- }
- else
- {
- DBG (DBG_io, "gl843_detect_document_end: no flushing needed\n");
- }
- }
-
- DBG (DBG_proc, "%s: finished\n", __func__);
- return SANE_STATUS_GOOD;
-}
-
-/** @brief disable XPA slider motor
- * toggle gpios to switch disble XPA slider motor
- * @param dev device to set up
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl843_xpa_motor_off(Genesys_Device *dev)
-{
- uint8_t val;
- SANE_Status status=SANE_STATUS_GOOD;
-
- DBGSTART;
-
- /* unset GPOADF */
- RIE (sanei_genesys_read_register (dev, REG6B, &val));
- val &= ~REG6B_GPOADF;
- RIE (sanei_genesys_write_register (dev, REG6B, val));
-
- RIE (sanei_genesys_read_register (dev, REGA8, &val));
- val |= REGA8_GPO27;
- RIE (sanei_genesys_write_register (dev, REGA8, val));
-
- RIE (sanei_genesys_read_register (dev, REGA9, &val));
- val &= ~REGA9_GPO31;
- RIE (sanei_genesys_write_register (dev, REGA9, val));
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/** @brief enable XPA slider motor
- * toggle gpios to switch enable XPA slider motor
- * @param dev device to set up
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl843_xpa_motor_on(Genesys_Device *dev)
-{
- uint8_t val;
- SANE_Status status=SANE_STATUS_GOOD;
-
- DBGSTART;
-
- /* set MULTFILM et GPOADF */
- RIE (sanei_genesys_read_register (dev, REG6B, &val));
- val |=REG6B_MULTFILM|REG6B_GPOADF;
- RIE (sanei_genesys_write_register (dev, REG6B, val));
-
- RIE (sanei_genesys_read_register (dev, REG6C, &val));
- val &= ~REG6C_GPIO15;
- RIE (sanei_genesys_write_register (dev, REG6C, val));
-
- /* Motor power ? No move at all without this one */
- RIE (sanei_genesys_read_register (dev, REGA6, &val));
- val |= REGA6_GPIO20;
- RIE (sanei_genesys_write_register(dev,REGA6,val));
-
- RIE (sanei_genesys_read_register (dev, REGA8, &val));
- val &= ~REGA8_GPO27;
- RIE (sanei_genesys_write_register (dev, REGA8, val));
-
- RIE (sanei_genesys_read_register (dev, REGA9, &val));
- val |= REGA9_GPO32|REGA9_GPO31;
- RIE (sanei_genesys_write_register (dev, REGA9, val));
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/** @brief light XPA lamp
- * toggle gpios to switch off regular lamp and light on the
- * XPA light
- * @param dev device to set up
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl843_xpa_lamp_on(Genesys_Device *dev)
-{
- uint8_t val;
- SANE_Status status=SANE_STATUS_GOOD;
-
- DBGSTART;
-
- /* REGA6 */
- RIE(sanei_genesys_read_register(dev, REGA6, &val));
-
- /* cut regular lamp power */
- val &= ~(REGA6_GPIO24|REGA6_GPIO23);
-
- /* set XPA lamp power */
- val |= REGA6_GPIO22 | REGA6_GPIO21 | REGA6_GPIO19;
-
- RIE(sanei_genesys_write_register(dev, REGA6, val));
-
- RIE(sanei_genesys_read_register(dev, REGA7, &val));
- val|=REGA7_GPOE24; /* lamp 1 off GPOE 24 */
- val|=REGA7_GPOE23; /* lamp 2 off GPOE 23 */
- val|=REGA7_GPOE22; /* full XPA lamp power */
- RIE(sanei_genesys_write_register(dev, REGA7, val));
-
- DBGCOMPLETED;
- return status;
-}
-
-/* Send the low-level scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl843_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool start_motor)
-{
- SANE_Status status;
- uint8_t val,r03;
- uint16_t dpiset, dpihw;
-
- DBGSTART;
-
- /* get back the target dpihw */
- sanei_genesys_get_double (reg, REG_DPISET, &dpiset);
- dpihw = sanei_genesys_compute_dpihw (dev, dpiset);
-
- /* set up GPIO for scan */
- switch(dev->model->gpo_type)
- {
- /* KV case */
- case GPO_KVSS080:
- RIE (sanei_genesys_write_register (dev, REGA9, 0x00));
- RIE (sanei_genesys_write_register (dev, REGA6, 0xf6));
- /* blinking led */
- RIE (sanei_genesys_write_register (dev, 0x7e, 0x04));
- break;
- case GPO_G4050:
- RIE (sanei_genesys_write_register (dev, REGA7, 0xfe));
- RIE (sanei_genesys_write_register (dev, REGA8, 0x3e));
- RIE (sanei_genesys_write_register (dev, REGA9, 0x06));
- switch (dpihw)
- {
- case 1200:
- case 2400:
- case 4800:
- RIE (sanei_genesys_write_register (dev, REG6C, 0x60));
- RIE (sanei_genesys_write_register (dev, REGA6, 0x46));
- break;
- default: /* 600 dpi case */
- RIE (sanei_genesys_write_register (dev, REG6C, 0x20));
- RIE (sanei_genesys_write_register (dev, REGA6, 0x44));
- }
-
- /* turn on XPA lamp if XPA is selected and lamp power on*/
- r03 = sanei_genesys_read_reg_from_set (reg, REG03);
- if ((r03 & REG03_XPASEL) && (r03 & REG03_LAMPPWR))
- {
- RIE(gl843_xpa_lamp_on(dev));
- }
-
- /* enable XPA lamp motor */
- if (r03 & REG03_XPASEL)
- {
- RIE(gl843_xpa_motor_on(dev));
- }
-
- /* blinking led */
- RIE (sanei_genesys_write_register (dev, REG7E, 0x01));
- break;
- case GPO_CS4400F:
- case GPO_CS8400F:
- default:
- break;
- }
-
- /* clear scan and feed count */
- RIE (sanei_genesys_write_register
- (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
-
- /* enable scan and motor */
- RIE (sanei_genesys_read_register (dev, REG01, &val));
- val |= REG01_SCAN;
- RIE (sanei_genesys_write_register (dev, REG01, val));
-
- if (start_motor)
- {
- RIE (sanei_genesys_write_register (dev, REG0F, 1));
- }
- else
- {
- RIE (sanei_genesys_write_register (dev, REG0F, 0));
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl843_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool check_stop)
-{
- SANE_Status status;
- uint8_t val;
-
- DBG (DBG_proc, "gl843_end_scan (check_stop = %d)\n", check_stop);
- if (reg == NULL)
- return SANE_STATUS_INVAL;
-
- /* post scan gpio */
- RIE(sanei_genesys_write_register(dev,0x7e,0x00));
-
- /* turn off XPA lamp if XPA is selected and lamp power on*/
- val = sanei_genesys_read_reg_from_set (reg, REG03);
- if (val & (REG03_XPASEL|REG03_LAMPPWR))
- {
- sanei_genesys_read_register (dev, REGA6, &val);
-
- /* switch on regular lamp */
- val |= 0x40;
-
- /* no XPA lamp power (2 bits for level: __11 ____) */
- val &= ~0x30;
-
- RIE (sanei_genesys_write_register (dev, REGA6, val));
- }
-
- if (dev->model->is_sheetfed == SANE_TRUE)
- {
- status = SANE_STATUS_GOOD;
- }
- else /* flat bed scanners */
- {
- status = gl843_stop_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_end_scan: failed to stop: %s\n",
- sane_strstatus (status));
- return status;
- }
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-/** @brief park XPA lamp
- * park the XPA lamp if needed
- */
-static SANE_Status gl843_park_xpa_lamp (Genesys_Device * dev)
-{
- Genesys_Register_Set local_reg[GENESYS_GL843_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
- uint8_t val;
- int loop = 0;
-
- DBGSTART;
-
- /* copy scan settings */
- memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* set a huge feedl and reverse direction */
- sanei_genesys_set_triple(local_reg,REG_FEEDL,0xbdcd);
-
- /* clear scan and feed count */
- RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
-
- /* set up for reverse and no scan */
- r = sanei_genesys_get_address (local_reg, REG02);
- r->value |= REG02_MTRREV;
- r = sanei_genesys_get_address (local_reg, REG01);
- r->value &= ~REG01_SCAN;
-
- /* write to scanner and start action */
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS));
- RIE (gl843_xpa_motor_on(dev));
- status = gl843_start_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to start motor: %s\n",__func__, sane_strstatus (status));
- gl843_stop_action (dev);
- /* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL843_MAX_REGS);
- return status;
- }
-
- while (loop < 600) /* do not wait longer then 60 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n",__func__,
- sane_strstatus (status));
- return status;
- }
- if (DBG_LEVEL >= DBG_io2)
- {
- sanei_genesys_print_status (val);
- }
-
- if (val & REG41_HOMESNR) /* home sensor */
- {
- DBG (DBG_info, "%s: reached home position\n",__func__);
- DBG (DBG_proc, "%s: finished\n",__func__);
-
- /* clear GPOADF to avoid reparking again */
- sanei_genesys_read_register (dev, REG6B, &val);
- val &= ~REG6B_GPOADF;
- sanei_genesys_write_register (dev, REG6B, val);
-
- /* disable XPA slider motor */
- gl843_xpa_motor_off(dev);
- return SANE_STATUS_GOOD;
- }
- usleep (100000); /* sleep 100 ms */
- ++loop;
- }
-
- /* we are not parked here.... should we fail ? */
- DBG (DBG_info, "%s: XPA lamp is not parked\n", __func__);
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/** @brief Moves the slider to the home (top) position slowly
- * */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
-{
- Genesys_Register_Set local_reg[GENESYS_GL843_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
- uint8_t val;
- float resolution;
- int loop = 0;
-
- DBG (DBG_proc, "gl843_slow_back_home (wait_until_home = %d)\n",
- wait_until_home);
-
- if (dev->model->gpo_type == GPO_G4050)
- {
- /* test if we need to park XPA lamp, we check GPOADF */
- RIE (sanei_genesys_read_register (dev, REG6B, &val));
- if(val & REG6B_GPOADF)
- {
- RIE(gl843_park_xpa_lamp(dev));
- }
- }
-
- /* regular slow back home */
- dev->scanhead_position_in_steps = 0;
-
- /* first read gives HOME_SENSOR true */
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus (status));
- return status;
- }
- usleep (100000); /* sleep 100 ms */
-
- /* second is reliable */
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (DBG_LEVEL >= DBG_io)
- {
- sanei_genesys_print_status (val);
- }
- if (val & HOMESNR) /* is sensor at home? */
- {
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
-
- memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
- resolution=sanei_genesys_get_lowest_ydpi(dev);
-
- status = gl843_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 100,
- 40000,
- 100,
- 100,
- 8,
- 1,
- SCAN_MODE_LINEART,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_slow_back_home: failed to set up registers: %s\n",
- sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
-
- /* clear scan and feed count */
- RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
-
- /* set up for reverse and no scan */
- r = sanei_genesys_get_address (local_reg, REG02);
- r->value |= REG02_MTRREV;
- r = sanei_genesys_get_address (local_reg, REG01);
- r->value &= ~REG01_SCAN;
-
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS));
-
- status = gl843_start_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_slow_back_home: failed to start motor: %s\n",
- sane_strstatus (status));
- gl843_stop_action (dev);
- /* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL843_MAX_REGS);
- return status;
- }
-
- if (wait_until_home)
- {
-
- while (loop < 300) /* do not wait longer then 30 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
- return status;
- }
- if (DBG_LEVEL >= DBG_io2)
- {
- sanei_genesys_print_status (val);
- }
-
- if (val & REG41_HOMESNR) /* home sensor */
- {
- DBG (DBG_info, "gl843_slow_back_home: reached home position\n");
- DBG (DBG_proc, "gl843_slow_back_home: finished\n");
- return SANE_STATUS_GOOD;
- }
- usleep (100000); /* sleep 100 ms */
- ++loop;
- }
-
- /* when we come here then the scanner needed too much time for this, so we better stop the motor */
- gl843_stop_action (dev);
- DBG (DBG_error,
- "gl843_slow_back_home: timeout while waiting for scanhead to go home\n");
- return SANE_STATUS_IO_ERROR;
- }
-
- DBG (DBG_info, "%s: scanhead is still moving\n", __func__);
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/* Automatically set top-left edge of the scan area by scanning a 200x200 pixels
- area at 600 dpi from very top of scanner */
-static SANE_Status
-gl843_search_start_position (Genesys_Device * dev)
-{
- int size;
- SANE_Status status;
- uint8_t *data;
- Genesys_Register_Set local_reg[GENESYS_GL843_MAX_REGS];
- int steps;
-
- int pixels = 600;
- int dpi = 300;
-
- DBG (DBG_proc, "gl843_search_start_position\n");
-
- memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* sets for a 200 lines * 600 pixels */
- /* normal scan with no shading */
-
- status = gl843_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0, /*we should give a small offset here~60 steps */
- 600,
- dev->model->search_lines,
- 8,
- 1,
- SCAN_MODE_GRAY,
- 1, /*green */
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_search_start_position: failed to bulk setup registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* send to scanner */
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_search_start_position: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- size = pixels * dev->model->search_lines;
-
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error,
- "gl843_search_start_position: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
-
- status = gl843_begin_scan (dev, local_reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to begin scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* waits for valid data */
- do
- sanei_genesys_test_buffer_empty (dev, &steps);
- while (steps);
-
- /* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("search_position.pnm", data, 8, 1, pixels,
- dev->model->search_lines);
-
- status = gl843_end_scan (dev, local_reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to end scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* update regs to copy ASIC internal state */
- memcpy (dev->reg, local_reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- status =
- sanei_genesys_search_reference_point (dev, data, 0, dpi, pixels,
- dev->model->search_lines);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- free (data);
- return SANE_STATUS_GOOD;
-}
-
-/*
- * sets up register for coarse gain calibration
- * todo: check it for scanners using it */
-static SANE_Status
-gl843_init_regs_for_coarse_calibration (Genesys_Device * dev)
-{
- SANE_Status status;
- uint8_t channels;
- uint8_t cksel;
-
- DBGSTART;
- cksel = (dev->calib_reg[reg_0x18].value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
-
- /* set line size */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
- channels = 3;
- else
- channels = 1;
-
- status = gl843_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- /* XXX STEF XXX dpi instead of pixels !*/
- dev->sensor.optical_res / cksel,
- 20,
- 16,
- channels,
- dev->settings.scan_mode,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_init_register_for_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
- gl843_set_motor_power (dev->calib_reg, SANE_FALSE);
-
- DBG (DBG_info,
- "gl843_init_register_for_coarse_calibration: optical sensor res: %d dpi, actual res: %d\n",
- dev->sensor.optical_res / cksel, dev->settings.xres);
-
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_init_register_for_coarse_calibration: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/** @brief moves the slider to steps at motor base dpi
- * @param dev device to work on
- * @param steps number of steps to move
- * */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl843_feed (Genesys_Device * dev, unsigned int steps)
-{
- Genesys_Register_Set local_reg[GENESYS_GL843_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
- float resolution;
- uint8_t val;
-
- DBGSTART;
-
- /* prepare local registers */
- memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- resolution=sanei_genesys_get_lowest_ydpi(dev);
- status = gl843_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 0,
- steps,
- 100,
- 3,
- 8,
- 3,
- SCAN_MODE_COLOR,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_FEEDING |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_feed: failed to set up registers: %s\n",
- sane_strstatus (status));
- DBGCOMPLETED;
- return status;
- }
-
- /* clear scan and feed count */
- RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
- RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRMCNT));
-
- /* set up for no scan */
- r = sanei_genesys_get_address (local_reg, REG01);
- r->value &= ~REG01_SCAN;
-
- /* send registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS));
-
- status = gl843_start_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus (status));
- gl843_stop_action (dev);
-
- /* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL843_MAX_REGS);
- return status;
- }
-
- /* wait until feed count reaches the required value, but do not
- * exceed 30s */
- do
- {
- status = sanei_genesys_get_status (dev, &val);
- }
- while (status == SANE_STATUS_GOOD && !(val & FEEDFSH));
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-
-/* init registers for shading calibration */
-/* shading calibration is done at dpihw */
-static SANE_Status
-gl843_init_regs_for_shading (Genesys_Device * dev)
-{
- SANE_Status status;
- int move, resolution, dpihw, factor;
- uint16_t strpixel;
-
- DBGSTART;
-
- /* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- dev->calib_channels = 3;
- dev->calib_lines = dev->model->shading_lines;
- dpihw=sanei_genesys_compute_dpihw(dev,dev->settings.xres);
- factor=dev->sensor.optical_res/dpihw;
- resolution=dpihw;
- dev->calib_resolution = resolution;
- dev->calib_pixels = dev->sensor.sensor_pixels/factor;
-
- /* distance to move to reach white target */
- move = SANE_UNFIX (dev->model->y_offset_calib);
- move = (move * resolution) / MM_PER_INCH;
-
- status = gl843_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- move,
- dev->calib_pixels,
- dev->calib_lines,
- 16,
- dev->calib_channels,
- dev->settings.scan_mode,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_init_registers_for_shading: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- dev->scanhead_position_in_steps += dev->calib_lines + move;
- sanei_genesys_get_double(dev->calib_reg,REG_STRPIXEL,&strpixel);
- DBG (DBG_info, "%s: STRPIXEL=%d\n", __func__, strpixel);
-
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_init_registers_for_shading: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/** @brief set up registers for the actual scan
- */
-static SANE_Status
-gl843_init_regs_for_scan (Genesys_Device * dev)
-{
- int channels;
- int flags;
- int depth;
- float move;
- int move_dpi;
- float start;
-
- SANE_Status status;
-
- DBG (DBG_info,
- "gl843_init_regs_for_scan settings:\nResolution: %ux%uDPI\n"
- "Lines : %u\npixels : %u\nStartpos : %.3f/%.3f\nScan mode : %d\n\n",
- dev->settings.xres,
- dev->settings.yres,
- dev->settings.lines,
- dev->settings.pixels,
- dev->settings.tl_x,
- dev->settings.tl_y,
- dev->settings.scan_mode);
-
- /* ensure head is parked in case of calibration */
- gl843_slow_back_home (dev, SANE_TRUE);
-
- /* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR)
- channels = 3;
- else
- channels = 1;
-
- /* depth */
- depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
- depth = 1;
-
- move_dpi = dev->motor.base_ydpi;
-
- move = SANE_UNFIX (dev->model->y_offset);
- move += dev->settings.tl_y;
- move = (move * move_dpi) / MM_PER_INCH;
- DBG (DBG_info, "gl843_init_regs_for_scan: move=%f steps\n", move);
-
- /* start */
- start = SANE_UNFIX (dev->model->x_offset);
- start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
- flags = 0;
-
- /* enable emulated lineart from gray data */
- if(dev->settings.scan_mode == SCAN_MODE_LINEART
- && dev->settings.dynamic_lineart)
- {
- flags |= SCAN_FLAG_DYNAMIC_LINEART;
- }
-
- status = gl843_init_scan_regs (dev,
- dev->reg,
- dev->settings.xres,
- dev->settings.yres,
- start,
- move,
- dev->settings.pixels,
- dev->settings.lines,
- depth,
- channels,
- dev->settings.scan_mode,
- dev->settings.color_filter,
- flags);
-
- if (status != SANE_STATUS_GOOD)
- return status;
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/**
- * This function sends gamma tables to ASIC
- */
-static SANE_Status
-gl843_send_gamma_table (Genesys_Device * dev)
-{
- int size;
- int status;
- uint8_t *gamma;
- int i;
-
- DBGSTART;
-
- size = 256;
-
- /* allocate temporary gamma tables: 16 bits words, 3 channels */
- gamma = (uint8_t *) malloc (size * 2 * 3);
- if (!gamma)
- return SANE_STATUS_NO_MEM;
-
- /* copy sensor specific's gamma tables */
- for (i = 0; i < size; i++)
- {
- gamma[i * 2 + size * 0 + 0] = dev->sensor.gamma_table[GENESYS_RED][i] & 0xff;
- gamma[i * 2 + size * 0 + 1] = (dev->sensor.gamma_table[GENESYS_RED][i] >> 8) & 0xff;
- gamma[i * 2 + size * 2 + 0] = dev->sensor.gamma_table[GENESYS_GREEN][i] & 0xff;
- gamma[i * 2 + size * 2 + 1] = (dev->sensor.gamma_table[GENESYS_GREEN][i] >> 8) & 0xff;
- gamma[i * 2 + size * 4 + 0] = dev->sensor.gamma_table[GENESYS_BLUE][i] & 0xff;
- gamma[i * 2 + size * 4 + 1] = (dev->sensor.gamma_table[GENESYS_BLUE][i] >> 8) & 0xff;
- }
-
- /* send address */
- status = gl843_set_buffer_address (dev, 0x0000);
- if (status != SANE_STATUS_GOOD)
- {
- free (gamma);
- DBG (DBG_error,
- "gl843_send_gamma_table: failed to set buffer address: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* send data */
- status = gl843_bulk_write_data (dev, 0x28, (uint8_t *) gamma, size * 2 * 3);
- if (status != SANE_STATUS_GOOD)
- {
- free (gamma);
- DBG (DBG_error,
- "gl843_send_gamma_table: failed to send gamma table: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- DBG (DBG_proc, "gl843_send_gamma_table: completed\n");
- free (gamma);
- return SANE_STATUS_GOOD;
-}
-
-/* this function does the led calibration by scanning one line of the calibration
- area below scanner's top on white strip.
-
--needs working coarse/gain
-*/
-static SANE_Status
-gl843_led_calibration (Genesys_Device * dev)
-{
- int num_pixels;
- int total_size;
- int used_res;
- uint8_t *line;
- int i, j;
- SANE_Status status = SANE_STATUS_GOOD;
- int val;
- int channels, depth;
- int avg[3], avga, avge;
- int turn;
- char fn[20];
- uint16_t expr, expg, expb;
- Genesys_Register_Set *r;
-
- SANE_Bool acceptable = SANE_FALSE;
-
- DBG (DBG_proc, "gl843_led_calibration\n");
-
- /* offset calibration is always done in color mode */
- channels = 3;
- depth = 16;
- used_res = dev->sensor.optical_res;
- num_pixels =
- (dev->sensor.sensor_pixels * used_res) / dev->sensor.optical_res;
-
- /* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg,
- GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- status = gl843_init_scan_regs (dev,
- dev->calib_reg,
- used_res,
- dev->motor.base_ydpi,
- 0,
- 0,
- num_pixels,
- 1,
- depth,
- channels,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_led_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS));
-
-
- total_size = num_pixels * channels * (depth / 8) * 1; /* colors * bytes_per_color * scan lines */
-
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
-
-/*
- we try to get equal bright leds here:
-
- loop:
- average per color
- adjust exposure times
- */
-
- expr = (dev->sensor.regs_0x10_0x1d[0] << 8) | dev->sensor.regs_0x10_0x1d[1];
- expg = (dev->sensor.regs_0x10_0x1d[2] << 8) | dev->sensor.regs_0x10_0x1d[3];
- expb = (dev->sensor.regs_0x10_0x1d[4] << 8) | dev->sensor.regs_0x10_0x1d[5];
-
- turn = 0;
-
- do
- {
-
- dev->sensor.regs_0x10_0x1d[0] = (expr >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = expr & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (expg >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = expg & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (expb >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = expb & 0xff;
-
- for (i = 0; i < 6; i++)
- {
- r = sanei_genesys_get_address (dev->calib_reg, 0x10 + i);
- r->value = dev->sensor.regs_0x10_0x1d[i];
- }
-
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS));
-
- DBG (DBG_info, "gl843_led_calibration: starting first line reading\n");
- RIE (gl843_begin_scan (dev, dev->calib_reg, SANE_TRUE));
- RIE (sanei_genesys_read_data_from_scanner (dev, line, total_size));
-
- if (DBG_LEVEL >= DBG_data)
- {
- snprintf (fn, 20, "led_%02d.pnm", turn);
- sanei_genesys_write_pnm_file (fn,
- line, depth, channels, num_pixels, 1);
- }
-
- acceptable = SANE_TRUE;
-
- for (j = 0; j < channels; j++)
- {
- avg[j] = 0;
- for (i = 0; i < num_pixels; i++)
- {
- if (dev->model->is_cis)
- val =
- line[i * 2 + j * 2 * num_pixels + 1] * 256 +
- line[i * 2 + j * 2 * num_pixels];
- else
- val =
- line[i * 2 * channels + 2 * j + 1] * 256 +
- line[i * 2 * channels + 2 * j];
- avg[j] += val;
- }
-
- avg[j] /= num_pixels;
- }
-
- DBG (DBG_info, "gl843_led_calibration: average: "
- "%d,%d,%d\n", avg[0], avg[1], avg[2]);
-
- acceptable = SANE_TRUE;
-
- if (avg[0] < avg[1] * 0.95 || avg[1] < avg[0] * 0.95 ||
- avg[0] < avg[2] * 0.95 || avg[2] < avg[0] * 0.95 ||
- avg[1] < avg[2] * 0.95 || avg[2] < avg[1] * 0.95)
- acceptable = SANE_FALSE;
-
- if (!acceptable)
- {
- avga = (avg[0] + avg[1] + avg[2]) / 3;
- expr = (expr * avga) / avg[0];
- expg = (expg * avga) / avg[1];
- expb = (expb * avga) / avg[2];
-/*
- keep the resulting exposures below this value.
- too long exposure drives the ccd into saturation.
- we may fix this by relying on the fact that
- we get a striped scan without shading, by means of
- statistical calculation
-*/
- avge = (expr + expg + expb) / 3;
-
- /* don't overflow max exposure */
- if (avge > 3000)
- {
- expr = (expr * 2000) / avge;
- expg = (expg * 2000) / avge;
- expb = (expb * 2000) / avge;
- }
- if (avge < 50)
- {
- expr = (expr * 50) / avge;
- expg = (expg * 50) / avge;
- expb = (expb * 50) / avge;
- }
-
- }
-
- RIE (gl843_stop_action (dev));
-
- turn++;
-
- }
- while (!acceptable && turn < 100);
-
- DBG (DBG_info, "gl843_led_calibration: acceptable exposure: %d,%d,%d\n",
- expr, expg, expb);
-
- /* cleanup before return */
- free (line);
-
- gl843_slow_back_home (dev, SANE_TRUE);
-
- DBG (DBG_proc, "gl843_led_calibration: completed\n");
- return status;
-}
-
-
-
-/**
- * average dark pixels of a 8 bits scan of a given channel
- */
-static int
-dark_average_channel (uint8_t * data, unsigned int pixels, unsigned int lines,
- unsigned int channels, unsigned int black, int channel)
-{
- unsigned int i, j, k, count;
- unsigned int avg[3];
- uint8_t val;
-
- /* computes average values on black margin */
- for (k = 0; k < channels; k++)
- {
- avg[k] = 0;
- count = 0;
- for (i = 0; i < lines; i++)
- {
- for (j = 0; j < black; j++)
- {
- val = data[i * channels * pixels + j*channels + k];
- avg[k] += val;
- count++;
- }
- }
- if (count)
- avg[k] /= count;
- DBG (DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
- }
- DBG (DBG_info, "%s: average = %d\n", __func__, avg[channel]);
- return avg[channel];
-}
-
-/** @brief calibrate AFE offset
- * Iterate doing scans at target dpi until AFE offset if correct. One
- * color line is scanned at a time. Scanning head doesn't move.
- * @param dev device to calibrate
- */
-static SANE_Status
-gl843_offset_calibration (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *first_line, *second_line;
- unsigned int channels, bpp;
- char title[32];
- int pass, total_size, i, resolution, lines;
- int topavg[3], bottomavg[3], avg[3];
- int top[3], bottom[3], black_pixels, pixels, factor, dpihw;
-
- DBGSTART;
-
- /* offset calibration is always done in color mode */
- channels = 3;
- lines = 8;
- bpp = 8;
-
- /* compute divider factor to compute final pixels number */
- dpihw = sanei_genesys_compute_dpihw (dev, dev->settings.xres);
- factor = dev->sensor.optical_res / dpihw;
- resolution = dpihw;
- pixels = dev->sensor.sensor_pixels / factor;
- black_pixels = dev->sensor.black_pixels / factor;
- DBG (DBG_io, "gl843_offset_calibration: dpihw =%d\n", dpihw);
- DBG (DBG_io, "gl843_offset_calibration: factor =%d\n", factor);
- DBG (DBG_io, "gl843_offset_calibration: resolution =%d\n", resolution);
- DBG (DBG_io, "gl843_offset_calibration: pixels =%d\n", pixels);
- DBG (DBG_io, "gl843_offset_calibration: black_pixels=%d\n", black_pixels);
-
- status = gl843_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- SCAN_MODE_COLOR,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "gl843_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
- gl843_set_motor_power (dev->calib_reg, SANE_FALSE);
-
- /* allocate memory for scans */
- total_size = pixels * channels * lines * (bpp / 8); /* colors * bytes_per_color * scan lines */
-
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
-
- second_line = malloc (total_size);
- if (!second_line)
- {
- free (first_line);
- return SANE_STATUS_NO_MEM;
- }
-
- /* init gain and offset */
- for (i = 0; i < 3; i++)
- {
- bottom[i] = 10;
- dev->frontend.offset[i] = bottom[i];
- dev->frontend.gain[i] = 0;
- }
- RIEF2 (gl843_set_fe (dev, AFE_SET), first_line, second_line);
-
- /* scan with obttom AFE settings */
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl843_offset_calibration: starting first line reading\n");
- RIEF2 (gl843_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, first_line, total_size), first_line, second_line);
- if (DBG_LEVEL >= DBG_data)
- {
- for (i = 0; i < 3; i++)
- {
- snprintf (title, 20, "offset_%d_%03d.pnm", i, bottom[i]);
- sanei_genesys_write_pnm_file (title, first_line, bpp, channels, pixels, lines);
- }
- }
-
- for (i = 0; i < 3; i++)
- {
- bottomavg[i] = dark_average_channel (first_line, pixels, lines, channels, black_pixels, i);
- DBG (DBG_io2, "gl843_offset_calibration: bottom avg %d=%d\n", i, bottomavg[i]);
- }
-
- /* now top value */
- for (i = 0; i < 3; i++)
- {
- top[i] = 255;
- dev->frontend.offset[i] = top[i];
- }
- RIEF2 (gl843_set_fe (dev, AFE_SET), first_line, second_line);
-
- /* scan with top AFE values */
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl843_offset_calibration: starting second line reading\n");
- RIEF2 (gl843_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
-
- for (i = 0; i < 3; i++)
- {
- topavg[i] = dark_average_channel (second_line, pixels, lines, channels, black_pixels, i);
- DBG (DBG_io2, "gl843_offset_calibration: top avg %d=%d\n", i, topavg[i]);
- }
-
- pass = 0;
-
- /* loop until acceptable level */
- while ((pass < 32)
- && ((top[0] - bottom[0] > 1)
- || (top[1] - bottom[1] > 1) || (top[2] - bottom[2] > 1)))
- {
- pass++;
-
- /* settings for new scan */
- for (i = 0; i < 3; i++)
- {
- if (top[i] - bottom[i] > 1)
- {
- dev->frontend.offset[i] = (top[i] + bottom[i]) / 2;
- }
- }
- RIEF2 (gl843_set_fe (dev, AFE_SET), first_line, second_line);
-
- /* scan with no move */
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl843_offset_calibration: starting second line reading\n");
- RIEF2 (gl843_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
-
- if (DBG_LEVEL >= DBG_data)
- {
- for (i = 0; i < 3; i++)
- {
- sprintf (title, "offset_%d_%03d.pnm", i, dev->frontend.offset[i]);
- sanei_genesys_write_pnm_file (title, second_line, bpp, channels, pixels, lines);
- }
- }
-
- for (i = 0; i < 3; i++)
- {
- avg[i] = dark_average_channel (second_line, pixels, lines, channels, black_pixels, i);
- DBG (DBG_info, "gl843_offset_calibration: avg[%d]=%d offset=%d\n", i, avg[i], dev->frontend.offset[i]);
- }
-
- /* compute new boundaries */
- for (i = 0; i < 3; i++)
- {
- if (topavg[i] >= avg[i])
- {
- topavg[i] = avg[i];
- top[i] = dev->frontend.offset[i];
- }
- else
- {
- bottomavg[i] = avg[i];
- bottom[i] = dev->frontend.offset[i];
- }
- }
- }
- DBG (DBG_info, "gl843_offset_calibration: offset=(%d,%d,%d)\n",
- dev->frontend.offset[0],
- dev->frontend.offset[1],
- dev->frontend.offset[2]);
-
- /* cleanup before return */
- free (first_line);
- free (second_line);
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-
-/* alternative coarse gain calibration
- this on uses the settings from offset_calibration and
- uses only one scanline
- */
-/*
- with offset and coarse calibration we only want to get our input range into
- a reasonable shape. the fine calibration of the upper and lower bounds will
- be done with shading.
- */
-static SANE_Status
-gl843_coarse_gain_calibration (Genesys_Device * dev, int dpi)
-{
- int pixels, factor, dpihw;
- int total_size;
- uint8_t *line;
- int i, j, channels;
- SANE_Status status = SANE_STATUS_GOOD;
- int max[3];
- float gain[3],coeff;
- int val, code, lines;
- int resolution;
- int bpp;
-
- DBG (DBG_proc, "gl843_coarse_gain_calibration: dpi = %d\n", dpi);
- dpihw=sanei_genesys_compute_dpihw(dev, dpi);
- factor=dev->sensor.optical_res/dpihw;
-
- /* coarse gain calibration is always done in color mode */
- channels = 3;
-
- /* follow CKSEL */
- if (dev->model->ccd_type == CCD_KVSS080)
- {
- if(dev->settings.xres<dev->sensor.optical_res)
- {
- coeff=0.9;
- }
- else
- {
- coeff=1.0;
- }
- }
- else
- {
- coeff=1.0;
- }
- resolution=dpihw;
- lines=10;
- bpp=8;
- pixels = dev->sensor.sensor_pixels / factor;
-
- status = gl843_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- gl843_set_motor_power (dev->calib_reg, SANE_FALSE);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL843_MAX_REGS));
-
- total_size = pixels * channels * (16/bpp) * lines;
-
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
-
- RIEF (gl843_set_fe(dev, AFE_SET), line);
- RIEF (gl843_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
-
- if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("coarse.pnm", line, bpp, channels, pixels, lines);
-
- /* average value on each channel */
- for (j = 0; j < channels; j++)
- {
- max[j] = 0;
- for (i = pixels/4; i < (pixels*3/4); i++)
- {
- if(bpp==16)
- {
- if (dev->model->is_cis)
- val =
- line[i * 2 + j * 2 * pixels + 1] * 256 +
- line[i * 2 + j * 2 * pixels];
- else
- val =
- line[i * 2 * channels + 2 * j + 1] * 256 +
- line[i * 2 * channels + 2 * j];
- }
- else
- {
- if (dev->model->is_cis)
- val = line[i + j * pixels];
- else
- val = line[i * channels + j];
- }
-
- max[j] += val;
- }
- max[j] = max[j] / (pixels/2);
-
- gain[j] = ((float) dev->sensor.gain_white_ref*coeff) / max[j];
-
- /* turn logical gain value into gain code, checking for overflow */
- code = 283 - 208 / gain[j];
- if (code > 255)
- code = 255;
- else if (code < 0)
- code = 0;
- dev->frontend.gain[j] = code;
-
- DBG (DBG_proc,
- "gl843_coarse_gain_calibration: channel %d, max=%d, gain = %f, setting:%d\n",
- j, max[j], gain[j], dev->frontend.gain[j]);
- }
-
- if (dev->model->is_cis)
- {
- if (dev->frontend.gain[0] > dev->frontend.gain[1])
- dev->frontend.gain[0] = dev->frontend.gain[1];
- if (dev->frontend.gain[0] > dev->frontend.gain[2])
- dev->frontend.gain[0] = dev->frontend.gain[2];
- dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
- }
-
- if (channels == 1)
- {
- dev->frontend.gain[0] = dev->frontend.gain[1];
- dev->frontend.gain[2] = dev->frontend.gain[1];
- }
-
- free (line);
-
- RIE (gl843_stop_action (dev));
-
- status=gl843_slow_back_home (dev, SANE_TRUE);
-
- DBGCOMPLETED;
- return status;
-}
-
-/*
- * wait for lamp warmup by scanning the same line until difference
- * between 2 scans is below a threshold
- */
-static SANE_Status
-gl843_init_regs_for_warmup (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- int *channels, int *total_size)
-{
- int num_pixels;
- SANE_Status status = SANE_STATUS_GOOD;
- int dpihw;
- int resolution;
- int factor;
-
- DBGSTART;
- if (dev == NULL || reg == NULL || channels == NULL || total_size == NULL)
- return SANE_STATUS_INVAL;
-
- /* setup scan */
- *channels=3;
- resolution=600;
- dpihw=sanei_genesys_compute_dpihw(dev, resolution);
- factor=dev->sensor.optical_res/dpihw;
- num_pixels=dev->sensor.sensor_pixels/(factor*2);
- *total_size = num_pixels * 3 * 1;
-
- memcpy (reg, dev->reg, (GENESYS_GL843_MAX_REGS + 1) * sizeof (Genesys_Register_Set));
- status = gl843_init_scan_regs (dev,
- reg,
- resolution,
- resolution,
- num_pixels/2,
- 0,
- num_pixels,
- 1,
- 8,
- *channels,
- SCAN_MODE_COLOR,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
-
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
- return status;
- }
-
- gl843_set_motor_power (reg, SANE_FALSE);
- RIE (dev->model->cmd_set->bulk_write_register (dev, reg, GENESYS_GL843_MAX_REGS));
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/**
- * set up GPIO/GPOE for idle state
-WRITE GPIO[17-21]= GPIO19
-WRITE GPOE[17-21]= GPOE21 GPOE20 GPOE19 GPOE18
-genesys_write_register(0xa8,0x3e)
-GPIO(0xa8)=0x3e
- */
-static SANE_Status
-gl843_init_gpio (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- int idx;
-
- DBGSTART;
-
- RIE (sanei_genesys_write_register (dev, REG6E, dev->gpo.enable[0]));
- RIE (sanei_genesys_write_register (dev, REG6F, dev->gpo.enable[1]));
- RIE (sanei_genesys_write_register (dev, REG6C, dev->gpo.value[0]));
- RIE (sanei_genesys_write_register (dev, REG6D, dev->gpo.value[1]));
-
- idx=0;
- while(dev->model->gpo_type != gpios[idx].gpo_type && gpios[idx].gpo_type!=0)
- {
- idx++;
- }
- if (gpios[idx].gpo_type!=0)
- {
- RIE (sanei_genesys_write_register (dev, REGA6, gpios[idx].ra6));
- RIE (sanei_genesys_write_register (dev, REGA7, gpios[idx].ra7));
- RIE (sanei_genesys_write_register (dev, REGA8, gpios[idx].ra8));
- RIE (sanei_genesys_write_register (dev, REGA9, gpios[idx].ra9));
- }
- else
- {
- status=SANE_STATUS_INVAL;
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/* *
- * initialize ASIC from power on condition
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl843_boot (Genesys_Device * dev, SANE_Bool cold)
-{
- SANE_Status status;
- uint8_t val;
-
- DBGSTART;
-
- if(cold)
- {
- RIE (sanei_genesys_write_register (dev, 0x0e, 0x01));
- RIE (sanei_genesys_write_register (dev, 0x0e, 0x00));
- }
-
- if(dev->usb_mode == 1)
- {
- val = 0x14;
- }
- else
- {
- val = 0x11;
- }
- RIE (sanei_genesys_write_0x8c (dev, 0x0f, val));
-
- /* test CHKVER */
- RIE (sanei_genesys_read_register (dev, REG40, &val));
- if (val & REG40_CHKVER)
- {
- RIE (sanei_genesys_read_register (dev, 0x00, &val));
- DBG (DBG_info,
- "%s: reported version for genesys chip is 0x%02x\n", __func__,
- val);
- }
-
- /* Set default values for registers */
- gl843_init_registers (dev);
-
- RIE (sanei_genesys_write_register (dev, REG6B, 0x02));
-
- /* Write initial registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL843_MAX_REGS));
-
- /* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */
- val = dev->reg[reg_0x0b].value & REG0B_DRAMSEL;
- val = (val | REG0B_ENBDRAM);
- RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
- /* URB 14 control 0x40 0x0c 0x8c 0x10 len 1 wrote 0xb4 */
- RIE (sanei_genesys_write_0x8c (dev, 0x10, 0xb4));
-
- /* CLKSET */
- val = (dev->reg[reg_0x0b].value & ~REG0B_CLKSET) | REG0B_48MHZ;
- RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
-
- /* prevent further writings by bulk write register */
- dev->reg[reg_0x0b].address = 0x00;
-
- /* set up end access */
- sanei_genesys_write_register (dev, REGA7, 0x04);
- sanei_genesys_write_register (dev, REGA9, 0x00);
-
- /* set RAM read address */
- RIE (sanei_genesys_write_register (dev, REG29, 0x00));
- RIE (sanei_genesys_write_register (dev, REG2A, 0x00));
- RIE (sanei_genesys_write_register (dev, REG2B, 0x00));
-
- /* setup gpio */
- RIE (gl843_init_gpio (dev));
-
- gl843_feed (dev, 300);
- usleep (100000);
-
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-/* *
- * initialize backend and ASIC : registers, motor tables, and gamma tables
- * then ensure scanner's head is at home
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl843_init (Genesys_Device * dev)
-{
- SANE_Status status;
-
- DBG_INIT ();
- DBGSTART;
-
- status=sanei_genesys_asic_init(dev, GENESYS_GL843_MAX_REGS);
-
- DBGCOMPLETED;
- return status;
-}
-
-static SANE_Status
-gl843_update_hardware_sensors (Genesys_Scanner * s)
-{
- /* do what is needed to get a new set of events, but try to not lose
- any of them.
- */
- SANE_Status status = SANE_STATUS_GOOD;
- uint8_t val;
-
- RIE (sanei_genesys_read_register (s->dev, REG6D, &val));
-
- switch (s->dev->model->gpo_type)
- {
- case GPO_KVSS080:
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x04) == 0;
- break;
- case GPO_G4050:
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & 0x01) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & 0x02) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & 0x04) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & 0x08) == 0;
- break;
- case GPO_CS4400F:
- case GPO_CS8400F:
- default:
- break;
- }
-
- return status;
-}
-#ifndef UNIT_TESTING
-static
-#endif
-/** @brief move sensor to transparency adaptor
- * Move sensor to the calibration of the transparency adapator (XPA).
- * @param dev device to use
- */
-SANE_Status gl843_move_to_ta (Genesys_Device * dev)
-{
- SANE_Status status = SANE_STATUS_GOOD;
- float resolution;
- unsigned int feed;
-
- DBGSTART;
-
- resolution=sanei_genesys_get_lowest_ydpi(dev);
- feed = 16*(SANE_UNFIX (dev->model->y_offset_calib_ta) * resolution) / MM_PER_INCH;
- status = gl843_feed (dev, feed);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to move to XPA calibration area\n", __func__);
- return status;
- }
-
- DBGCOMPLETED;
- return status;
-}
-
-
-/** @brief search for a full width black or white strip.
- * This function searches for a black or white stripe across the scanning area.
- * When searching backward, the searched area must completely be of the desired
- * color since this area will be used for calibration which scans forward.
- * @param dev scanner device
- * @param forward SANE_TRUE if searching forward, SANE_FALSE if searching backward
- * @param black SANE_TRUE if searching for a black strip, SANE_FALSE for a white strip
- * @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
- */
-static SANE_Status
-gl843_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
-{
- unsigned int pixels, lines, channels;
- SANE_Status status;
- Genesys_Register_Set local_reg[GENESYS_GL843_MAX_REGS];
- size_t size;
- uint8_t *data;
- int steps, depth, dpi;
- unsigned int pass, count, found, x, y;
- char title[80];
- Genesys_Register_Set *r;
-
- DBG (DBG_proc, "gl843_search_strip %s %s\n", black ? "black" : "white",
- forward ? "forward" : "reverse");
-
- gl843_set_fe (dev, AFE_SET);
- status = gl843_stop_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_search_strip: failed to stop: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* set up for a gray scan at lowest dpi */
- dpi = sanei_genesys_get_lowest_dpi(dev);
- channels = 1;
-
- /* 10 MM */
- /* lines = (10 * dpi) / MM_PER_INCH; */
- /* shading calibation is done with dev->motor.base_ydpi */
- lines = (dev->model->shading_lines * dpi) / dev->motor.base_ydpi;
- depth = 8;
- pixels = (dev->sensor.sensor_pixels * dpi) / dev->sensor.optical_res;
- size = pixels * channels * lines * (depth / 8);
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error, "gl843_search_strip: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
- dev->scanhead_position_in_steps = 0;
-
- memcpy (local_reg, dev->reg,
- GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
-
- status = gl843_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0,
- pixels,
- lines,
- depth,
- channels,
- SCAN_MODE_GRAY,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA);
- if (status != SANE_STATUS_GOOD)
- {
- free(data);
- DBG (DBG_error,
- "gl843_search_strip: failed to setup for scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* set up for reverse or forward */
- r = sanei_genesys_get_address (local_reg, REG02);
- if (forward)
- r->value &= ~REG02_MTRREV;
- else
- r->value |= REG02_MTRREV;
-
-
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- free(data);
- DBG (DBG_error,
- "gl843_search_strip: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl843_begin_scan (dev, local_reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* waits for valid data */
- do
- sanei_genesys_test_buffer_empty (dev, &steps);
- while (steps);
-
- /* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl843_stop_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error, "gl843_search_strip: gl843_stop_action failed\n");
- return status;
- }
-
- pass = 0;
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels, pixels,
- lines);
- }
-
- /* loop until strip is found or maximum pass number done */
- found = 0;
- while (pass < 20 && !found)
- {
- status =
- dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL843_MAX_REGS);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl843_search_strip: failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* now start scan */
- status = gl843_begin_scan (dev, local_reg, SANE_TRUE);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- /* waits for valid data */
- do
- sanei_genesys_test_buffer_empty (dev, &steps);
- while (steps);
-
- /* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl843_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- status = gl843_stop_action (dev);
- if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error, "gl843_search_strip: gl843_stop_action failed\n");
- return status;
- }
-
- if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels,
- pixels, lines);
- }
-
- /* search data to find black strip */
- /* when searching forward, we only need one line of the searched color since we
- * will scan forward. But when doing backward search, we need all the area of the
- * same color */
- if (forward)
- {
- for (y = 0; y < lines && !found; y++)
- {
- count = 0;
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * pixels + x] > 90)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * pixels + x] < 60)
- {
- count++;
- }
- }
-
- /* at end of line, if count >= 3%, line is not fully of the desired color
- * so we must go to next line of the buffer */
- /* count*100/pixels < 3 */
- if ((count * 100) / pixels < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl843_search_strip: strip found forward during pass %d at line %d\n",
- pass, y);
- }
- else
- {
- DBG (DBG_data,
- "gl843_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
- }
- }
- }
- else /* since calibration scans are done forward, we need the whole area
- to be of the required color when searching backward */
- {
- count = 0;
- for (y = 0; y < lines; y++)
- {
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * pixels + x] > 90)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * pixels + x] < 60)
- {
- count++;
- }
- }
- }
-
- /* at end of area, if count >= 3%, area is not fully of the desired color
- * so we must go to next buffer */
- if ((count * 100) / (pixels * lines) < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl843_search_strip: strip found backward during pass %d \n",
- pass);
- }
- else
- {
- DBG (DBG_data,
- "gl843_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
- }
- }
- pass++;
- }
- free (data);
- if (found)
- {
- status = SANE_STATUS_GOOD;
- DBG (DBG_info, "gl843_search_strip: %s strip found\n",
- black ? "black" : "white");
- }
- else
- {
- status = SANE_STATUS_UNSUPPORTED;
- DBG (DBG_info, "gl843_search_strip: %s strip not found\n",
- black ? "black" : "white");
- }
-
- DBG (DBG_proc, "gl843_search_strip: completed\n");
- return status;
-}
-
-/**
- * Send shading calibration data. The buffer is considered to always hold values
- * for all the channels.
- */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl843_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
-{
- SANE_Status status;
- uint32_t final_size, length, i;
- uint8_t *final_data;
- uint8_t *buffer;
- int count,offset;
- unsigned int tgtime;
- unsigned int cksel;
- Genesys_Register_Set *r;
- uint16_t dpiset, strpixel, endpixel, startx, factor;
-
- DBGSTART;
-
- offset=0;
- length=size;
- r = sanei_genesys_get_address (dev->reg, REG01);
- if(r->value & REG01_SHDAREA)
- {
- /* recompute STRPIXEL used shading calibration so we can
- * compute offset within data for SHDAREA case */
- r = sanei_genesys_get_address (dev->reg, REG18);
- cksel= (r->value & REG18_CKSEL)+1;
- sanei_genesys_get_double(dev->reg,REG_DPISET,&strpixel);
- tgtime=1;
- sanei_genesys_get_double(dev->reg,REG_DPISET,&dpiset);
- factor=dev->sensor.optical_res/sanei_genesys_compute_dpihw(dev,dpiset);
- if (dev->model->ccd_type == CCD_G4050 && dpiset>2400)
- {
- tgtime=2;
- }
-
- /* start coordinate in optical dpi coordinates */
- startx = ((dev->sensor.dummy_pixel * tgtime)/cksel)/factor;
-
- /* current scan coordinates */
- sanei_genesys_get_double(dev->reg,REG_STRPIXEL,&strpixel);
- sanei_genesys_get_double(dev->reg,REG_ENDPIXEL,&endpixel);
- strpixel*=tgtime;
- endpixel*=tgtime;
-
- /* 16 bit words, 2 words per color, 3 color channels */
- offset=(strpixel-startx)*2*2*3;
- length=(endpixel-strpixel)*2*2*3;
- DBG (DBG_info, "%s: STRPIXEL=%d, ENDPIXEL=%d, startx=%d\n", __func__, strpixel, endpixel, startx);
- }
-
- /* 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);
- final_data = (uint8_t *) malloc (final_size);
- if(final_data==NULL)
- {
- DBG (DBG_error, "%s: failed to allocate memory for shading data\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
- memset(final_data,0x00,final_size);
-
- /* copy regular shading data to the expected layout */
- buffer = final_data;
- count = 0;
-
- /* loop over calibration data */
- for (i = 0; i < length; i++)
- {
- buffer[count] = data[offset+i];
- count++;
- if ((count % (256*2)) == (252*2))
- {
- count += 4*2;
- }
- }
-
- /* send data */
- status = sanei_genesys_set_buffer_address (dev, 0);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus (status));
- free(final_data);
- return status;
- }
-
- status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, final_data, count);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to send shading table: %s\n", __func__, sane_strstatus (status));
- }
-
- free(final_data);
- DBGCOMPLETED;
- return status;
-}
-
-
-/** the gl843 command set */
-static Genesys_Command_Set gl843_cmd_set = {
- "gl843-generic", /* the name of this set */
-
- gl843_init,
- gl843_init_regs_for_warmup,
- gl843_init_regs_for_coarse_calibration,
- gl843_init_regs_for_shading,
- gl843_init_regs_for_scan,
-
- gl843_get_filter_bit,
- gl843_get_lineart_bit,
- gl843_get_bitset_bit,
- gl843_get_gain4_bit,
- gl843_get_fast_feed_bit,
- gl843_test_buffer_empty_bit,
- gl843_test_motor_flag_bit,
-
- gl843_bulk_full_size,
-
- gl843_set_fe,
- gl843_set_powersaving,
- gl843_save_power,
-
- gl843_set_motor_power,
- gl843_set_lamp_power,
-
- gl843_begin_scan,
- gl843_end_scan,
-
- gl843_send_gamma_table,
-
- gl843_search_start_position,
-
- gl843_offset_calibration,
- gl843_coarse_gain_calibration,
- gl843_led_calibration,
-
- gl843_slow_back_home,
- NULL,
-
- sanei_genesys_bulk_write_register,
- gl843_bulk_write_data,
- gl843_bulk_read_data,
-
- gl843_update_hardware_sensors,
-
- gl843_load_document,
- gl843_detect_document_end,
- gl843_eject_document,
- gl843_search_strip,
-
- sanei_genesys_is_compatible_calibration,
- gl843_move_to_ta,
- gl843_send_shading_data,
- gl843_calculate_current_setup,
- gl843_boot,
- NULL
-};
-
-SANE_Status
-sanei_gl843_init_cmd_set (Genesys_Device * dev)
-{
- dev->model->cmd_set = &gl843_cmd_set;
- return SANE_STATUS_GOOD;
-}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl843.cc b/backend/genesys_gl843.cc
new file mode 100644
index 0000000..a72dc5a
--- /dev/null
+++ b/backend/genesys_gl843.cc
@@ -0,0 +1,4415 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2010-2013 Stéphane Voltz <stef.dev@free.fr>
+
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#define DEBUG_DECLARE_ONLY
+
+#include "genesys_gl843.h"
+
+#include <string>
+#include <vector>
+
+/****************************************************************************
+ Low level function
+ ****************************************************************************/
+
+/* ------------------------------------------------------------------------ */
+/* Read and write RAM, registers and AFE */
+/* ------------------------------------------------------------------------ */
+
+/* Set address for writing data */
+static SANE_Status
+gl843_set_buffer_address (Genesys_Device * dev, uint32_t addr)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_io, "%s: setting address to 0x%05x\n", __func__, addr & 0xffff);
+
+ status = sanei_genesys_write_register (dev, 0x5b, ((addr >> 8) & 0xff));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed while writing high byte: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = sanei_genesys_write_register (dev, 0x5c, (addr & 0xff));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed while writing low byte: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_io, "%s: completed\n", __func__);
+
+ return status;
+}
+
+/**
+ * writes a block of data to RAM
+ * @param dev USB device
+ * @param addr RAM address to write to
+ * @param size size of the chunk of data
+ * @param data pointer to the data to write
+ */
+static SANE_Status
+write_data (Genesys_Device * dev, uint32_t addr, uint32_t size,
+ uint8_t * data)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBGSTART;
+
+ status = gl843_set_buffer_address (dev, addr);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed while setting address for bulk write data: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ /* write actual data */
+ status = sanei_genesys_bulk_write_data(dev, 0x28, data, size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed while writing bulk write data: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ /* set back address to 0 */
+ status = gl843_set_buffer_address (dev, 0);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed setting to default RAM address: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ DBGCOMPLETED;
+ return status;
+}
+
+/****************************************************************************
+ Mid level functions
+ ****************************************************************************/
+
+static SANE_Bool
+gl843_get_fast_feed_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, REG02);
+ if (r && (r->value & REG02_FASTFED))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl843_get_filter_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, REG04);
+ if (r && (r->value & REG04_FILTER))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl843_get_lineart_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, REG04);
+ if (r && (r->value & REG04_LINEART))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl843_get_bitset_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, REG04);
+ if (r && (r->value & REG04_BITSET))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl843_get_gain4_bit (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+
+ r = sanei_genesys_get_address (regs, REG06);
+ if (r && (r->value & REG06_GAIN4))
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+/**
+ * compute the step multiplier used
+ */
+static int
+gl843_get_step_multiplier (Genesys_Register_Set * regs)
+{
+ GenesysRegister *r = NULL;
+ int value = 1;
+
+ r = sanei_genesys_get_address (regs, REG9D);
+ if (r != NULL)
+ {
+ switch (r->value & 0x0c)
+ {
+ case 0x04:
+ value = 2;
+ break;
+ case 0x08:
+ value = 4;
+ break;
+ default:
+ value = 1;
+ }
+ }
+ DBG(DBG_io, "%s: step multiplier is %d\n", __func__, value);
+ return value;
+}
+
+static SANE_Bool
+gl843_test_buffer_empty_bit (SANE_Byte val)
+{
+ if (val & REG41_BUFEMPTY)
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+static SANE_Bool
+gl843_test_motor_flag_bit (SANE_Byte val)
+{
+ if (val & REG41_MOTORENB)
+ return SANE_TRUE;
+ return SANE_FALSE;
+}
+
+/** copy sensor specific settings */
+static void
+gl843_setup_sensor (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs, int dpi,int flags)
+{
+ (void) dpi;
+ (void) flags;
+
+ DBGSTART;
+
+ for (const auto& custom_reg : sensor.custom_regs) {
+ regs->set8(custom_reg.address, custom_reg.value);
+ }
+ if (!(dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE)) {
+ regs->set8(0x7d, 0x90);
+ }
+
+ DBGCOMPLETED;
+}
+
+
+/** @brief set all registers to default values .
+ * This function is called only once at the beginning and
+ * fills register startup values for registers reused across scans.
+ * Those that are rarely modified or not modified are written
+ * individually.
+ * @param dev device structure holding register set to initialize
+ */
+static void
+gl843_init_registers (Genesys_Device * dev)
+{
+ // Within this function SENSOR_DEF marker documents that a register is part
+ // of the sensors definition and the actual value is set in
+ // gl843_setup_sensor().
+
+ DBGSTART;
+
+ dev->reg.clear();
+
+ /* default to KV-SS080 */
+ SETREG (0xa2, 0x0f);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0xa2, 0x1f);
+ }
+ SETREG (0x01, 0x00);
+ SETREG (0x02, 0x78);
+ SETREG (0x03, 0x1f);
+ SETREG (0x04, 0x10);
+
+ // fine tune upon device description
+ SETREG (0x05, 0x80);
+ if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
+ dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
+ dev->model->model_id == MODEL_HP_SCANJET_4850C)
+ {
+ SETREG (0x05, 0x08);
+ }
+
+ dev->reg.find_reg(0x05).value &= ~REG05_DPIHW;
+ switch (sanei_genesys_find_sensor_any(dev).optical_res)
+ {
+ case 600:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
+ break;
+ case 1200:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
+ break;
+ case 2400:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
+ break;
+ case 4800:
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_4800;
+ break;
+ }
+
+ // TODO: on 8600F the windows driver turns off GAIN4 which is recommended
+ SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
+ SETREG (0x08, 0x00);
+ SETREG (0x09, 0x00);
+ SETREG (0x0a, 0x00);
+
+ // This register controls clock and RAM settings and is further modified in
+ // gl843_boot
+ SETREG (0x0b, 0x6a);
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x0b, 0x89);
+ }
+
+ // EXPR[0:15], EXPG[0:15], EXPB[0:15]: Exposure time settings.
+ SETREG(0x10, 0x00); // SENSOR_DEF
+ SETREG(0x11, 0x00); // SENSOR_DEF
+ SETREG(0x12, 0x00); // SENSOR_DEF
+ SETREG(0x13, 0x00); // SENSOR_DEF
+ SETREG(0x14, 0x00); // SENSOR_DEF
+ SETREG(0x15, 0x00); // SENSOR_DEF
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ dev->reg.set16(REG_EXPR, 0x9c40);
+ dev->reg.set16(REG_EXPG, 0x9c40);
+ dev->reg.set16(REG_EXPB, 0x9c40);
+ }
+ // CCD signal settings.
+ SETREG(0x16, 0x33); // SENSOR_DEF
+ SETREG(0x17, 0x1c); // SENSOR_DEF
+ SETREG(0x18, 0x10); // SENSOR_DEF
+
+ // EXPDMY[0:7]: Exposure time of dummy lines.
+ SETREG(0x19, 0x2a); // SENSOR_DEF
+
+ // Various CCD clock settings.
+ SETREG(0x1a, 0x04); // SENSOR_DEF
+ SETREG(0x1b, 0x00); // SENSOR_DEF
+ SETREG(0x1c, 0x20); // SENSOR_DEF
+ SETREG(0x1d, 0x04); // SENSOR_DEF
+
+ SETREG (0x1e, 0x10);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x1e, 0x20);
+ }
+
+ SETREG (0x1f, 0x01);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x1f, 0xff);
+ }
+
+ SETREG (0x20, 0x10);
+ SETREG (0x21, 0x04);
+ SETREG (0x22, 0x01);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x22, 0xc8);
+ }
+
+ SETREG (0x23, 0x01);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x23, 0xc8);
+ }
+
+ SETREG (0x24, 0x04);
+ SETREG (0x25, 0x00);
+ SETREG (0x26, 0x00);
+ SETREG (0x27, 0x00);
+ SETREG (0x2c, 0x02);
+ SETREG (0x2d, 0x58);
+ // BWHI[0:7]: high level of black and white threshold
+ SETREG (0x2e, 0x80);
+ // BWLOW[0:7]: low level of black and white threshold
+ SETREG (0x2f, 0x80);
+ SETREG (0x30, 0x00);
+ SETREG (0x31, 0x14);
+ SETREG (0x32, 0x27);
+ SETREG (0x33, 0xec);
+
+ // DUMMY: CCD dummy and optically black pixel count
+ SETREG (0x34, 0x24);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x34, 0x14);
+ }
+
+ // MAXWD: If available buffer size is less than 2*MAXWD words, then
+ // "buffer full" state will be set.
+ SETREG (0x35, 0x00);
+ SETREG (0x36, 0xff);
+ SETREG (0x37, 0xff);
+
+ // LPERIOD: Line period or exposure time for CCD or CIS.
+ SETREG(0x38, 0x55); // SENSOR_DEF
+ SETREG(0x39, 0xf0); // SENSOR_DEF
+
+ // FEEDL[0:24]: The number of steps of motor movement.
+ SETREG(0x3d, 0x00);
+ SETREG (0x3e, 0x00);
+ SETREG (0x3f, 0x01);
+
+ // Latch points for high and low bytes of R, G and B channels of AFE. If
+ // multiple clocks per pixel are consumed, then the setting defines during
+ // which clock the corresponding value will be read.
+ // RHI[0:4]: The latch point for high byte of R channel.
+ // RLOW[0:4]: The latch point for low byte of R channel.
+ // GHI[0:4]: The latch point for high byte of G channel.
+ // GLOW[0:4]: The latch point for low byte of G channel.
+ // BHI[0:4]: The latch point for high byte of B channel.
+ // BLOW[0:4]: The latch point for low byte of B channel.
+ SETREG(0x52, 0x01); // SENSOR_DEF
+ SETREG(0x53, 0x04); // SENSOR_DEF
+ SETREG(0x54, 0x07); // SENSOR_DEF
+ SETREG(0x55, 0x0a); // SENSOR_DEF
+ SETREG(0x56, 0x0d); // SENSOR_DEF
+ SETREG(0x57, 0x10); // SENSOR_DEF
+
+ // VSMP[0:4]: The position of the image sampling pulse for AFE in cycles.
+ // VSMPW[0:2]: The length of the image sampling pulse for AFE in cycles.
+ SETREG(0x58, 0x1b); // SENSOR_DEF
+
+ SETREG(0x59, 0x00); // SENSOR_DEF
+ SETREG(0x5a, 0x40); // SENSOR_DEF
+
+ // 0x5b-0x5c: GMMADDR[0:15] address for gamma or motor tables download
+ // SENSOR_DEF
+
+ // DECSEL[0:2]: The number of deceleratino steps after touching home sensor
+ // STOPTIM[0:4]: The stop duration between change of directions in
+ // backtracking
+ SETREG (0x5e, 0x23);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x5e, 0x1f);
+ }
+
+ // FMOVDEC: The number of deceleration steps in table 5 for auto-go-home
+ SETREG (0x5f, 0x01);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x5f, 0xf0);
+ }
+
+ // Z1MOD[0:20]
+ SETREG (0x60, 0x00);
+ SETREG (0x61, 0x00);
+ SETREG (0x62, 0x00);
+
+ // Z2MOD[0:20]
+ SETREG (0x63, 0x00);
+ SETREG (0x64, 0x00);
+ SETREG (0x65, 0x00);
+
+ // STEPSEL[0:1]. Motor movement step mode selection for tables 1-3 in
+ // scanning mode.
+ // MTRPWM[0:5]. Motor phase PWM duty cycle setting for tables 1-3
+ SETREG (0x67, 0x7f);
+ // FSTPSEL[0:1]: Motor movement step mode selection for tables 4-5 in
+ // command mode.
+ // FASTPWM[5:0]: Motor phase PWM duty cycle setting for tables 4-5
+ SETREG (0x68, 0x7f);
+
+ // FSHDEC[0:7]: The number of deceleration steps after scanning is finished
+ // (table 3)
+ SETREG (0x69, 0x01);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x69, 64);
+ }
+
+ // FMOVNO[0:7] The number of acceleration or deceleration steps for fast
+ // moving (table 4)
+ SETREG (0x6a, 0x04);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x69, 64);
+ }
+
+ // GPIO-related register bits
+ SETREG (0x6b, 0x30);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x6b, 0x72);
+ }
+
+ // 0x6c, 0x6d, 0x6e, 0x6f are set according to gpio tables. See
+ // gl843_init_gpio.
+
+ // RSH[0:4]: The position of rising edge of CCD RS signal in cycles
+ // RSL[0:4]: The position of falling edge of CCD RS signal in cycles
+ // CPH[0:4]: The position of rising edge of CCD CP signal in cycles.
+ // CPL[0:4]: The position of falling edge of CCD CP signal in cycles
+ SETREG(0x70, 0x01); // SENSOR_DEF
+ SETREG(0x71, 0x03); // SENSOR_DEF
+ SETREG (0x72, 0x04);
+ SETREG (0x73, 0x05);
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x70, 0x00);
+ SETREG(0x71, 0x02);
+ SETREG(0x72, 0x02);
+ SETREG(0x73, 0x04);
+ }
+
+ // CK1MAP[0:17], CK3MAP[0:17], CK4MAP[0:17]: CCD clock bit mapping setting.
+ SETREG(0x74, 0x00); // SENSOR_DEF
+ SETREG(0x75, 0x00); // SENSOR_DEF
+ SETREG(0x76, 0x3c); // SENSOR_DEF
+ SETREG(0x77, 0x00); // SENSOR_DEF
+ SETREG(0x78, 0x00); // SENSOR_DEF
+ SETREG(0x79, 0x9f); // SENSOR_DEF
+ SETREG(0x7a, 0x00); // SENSOR_DEF
+ SETREG(0x7b, 0x00); // SENSOR_DEF
+ SETREG(0x7c, 0x55); // SENSOR_DEF
+
+ // various AFE settings
+ SETREG(0x7d, 0x00);
+
+ // GPOLED[x]: LED vs GPIO settings
+ SETREG(0x7e, 0x00);
+
+ // BSMPDLY, VSMPDLY
+ // LEDCNT[0:1]: Controls led blinking and its period
+ SETREG (0x7f, 0x00);
+
+ // VRHOME, VRMOVE, VRBACK, VRSCAN: Vref settings of the motor driver IC for
+ // moving in various situations.
+ SETREG (0x80, 0x00);
+
+ if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F)
+ {
+ // NOTE: Historical code. None of the following 6 registers are
+ // documented in the datasheet. Their default value is 0, so probably it's
+ // not a bad idea to leave this here.
+ SETREG (0x81, 0x00);
+ SETREG (0x82, 0x00);
+ SETREG (0x83, 0x00);
+ SETREG (0x84, 0x00);
+ SETREG (0x85, 0x00);
+ SETREG (0x86, 0x00);
+ }
+
+ SETREG (0x87, 0x00);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x87, 0x02);
+ }
+
+ // MTRPLS[0:7]: The width of the ADF motor trigger signal pulse.
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x94, 0xff);
+ }
+
+ // 0x95-0x97: SCANLEN[0:19]: Controls when paper jam bit is set in sheetfed
+ // scanners.
+
+ // ONDUR[0:15]: The duration of PWM ON phase for LAMP control
+ // OFFDUR[0:15]: The duration of PWM OFF phase for LAMP control
+ // both of the above are in system clocks
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x98, 0x00);
+ SETREG(0x99, 0x00);
+ SETREG(0x9a, 0x00);
+ SETREG(0x9b, 0x00);
+ }
+
+ // RMADLY[0:1], MOTLAG, CMODE, STEPTIM, MULDMYLN, IFRS
+ SETREG(0x9d, 0x04);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0x9d, 0x08); // additionally sets the multiplier for slope tables
+ }
+
+
+ // SEL3INV, TGSTIME[0:2], TGWTIME[0:2]
+ SETREG (0x9e, 0x00); // SENSOR_DEF
+
+ // RFHSET[0:4]: Refresh time of SDRAM in units of 2us
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0xa2, 0x1f);
+ }
+
+ // 0xa6-0xa9: controls gpio, see gl843_gpio_init
+
+ // GPOM9, MULSTOP[0-2], NODECEL, TB3TB1, TB5TB2, FIX16CLK.
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0xab, 0x00);
+ }
+
+ // VRHOME[3:2], VRMOVE[3:2], VRBACK[3:2]: Vref setting of the motor driver IC
+ // for various situations.
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ SETREG(0xac, 0x00);
+ }
+
+ if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
+ {
+ SETREG (0x0c, 0x00);
+ SETREG (0x94, 0xff);
+ SETREG (0xab, 0x50);
+ }
+
+ if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F
+ && dev->model->model_id != MODEL_CANON_CANOSCAN_8400F)
+ {
+ SETREG (0xaa, 0x00);
+ }
+
+ /* G4050 values */
+ if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
+ dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
+ dev->model->model_id == MODEL_HP_SCANJET_4850C)
+ {
+ SETREG (0x03, 0x1d);
+ SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
+ SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
+ SETREG (0x0a, 0x18);
+ SETREG (0x0b, 0x69);
+
+ /* CIS exposure is used for XPA lamp movement */
+ SETREG (0x10, 0x2c);
+ SETREG (0x11, 0x09);
+ SETREG (0x12, 0x22);
+ SETREG (0x13, 0xb8);
+ SETREG (0x14, 0x10);
+ SETREG (0x15, 0xf0);
+
+ SETREG (0x6b, 0xf4);
+
+ SETREG (0x70, 0x00);
+ SETREG (0x71, 0x02);
+ SETREG (0x72, 0x00);
+ SETREG (0x73, 0x00);
+
+ SETREG (0x80, 0x50);
+ SETREG (0x9d, 0x08);
+ SETREG (0xab, 0x40);
+
+ /* XXX STEF XXX TODO move to set for scan */
+ SETREG (0x98, 0x03);
+ SETREG (0x99, 0x30);
+ SETREG (0x9a, 0x01);
+ SETREG (0x9b, 0x80);
+ SETREG (0xac, 0x00);
+ }
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F)
+ {
+ SETREG (0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */
+ SETREG (0x0b, 0x69); /* 16M only */
+ SETREG (0x1e, 0x20);
+ SETREG (0x22, 0xc8);
+ SETREG (0x23, 0xc8);
+ SETREG (0x5e, 0x3f);
+ SETREG (0x5f, 0xf0);
+ SETREG (0x6b, 0x72);
+ SETREG (0x72, 0x01);
+ SETREG (0x73, 0x03);
+ SETREG (0x80, 0x0c);
+ SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
+ SETREG (0x9d, 0x08); /* STEPTIM=2 */
+ SETREG (0xa2, 0x1f);
+ SETREG (0xab, 0x00);
+ sanei_genesys_set_double(&dev->reg,REG_EXPR,0x9c40);
+ sanei_genesys_set_double(&dev->reg,REG_EXPG,0x9c40);
+ sanei_genesys_set_double(&dev->reg,REG_EXPB,0x9c40);
+ }
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F)
+ {
+ SETREG (0x03, 0x1c);
+ SETREG (0x06, 0xd0); /* SCANMOD=110, PWRBIT and no GAIN4 */
+ SETREG (0x0a, 0x10);
+ SETREG (0x22, 0x50);
+ SETREG (0x23, 0x50);
+ SETREG (0x5e, 0x85);
+ SETREG (0x6b, 0xb1);
+ SETREG (0x1e, 0xa0);
+ SETREG (0x72, 0x03);
+ SETREG (0x73, 0x04);
+ SETREG (0x7d, 0x20);
+ SETREG (0x80, 0x28);
+ SETREG (0x87, 0x02); /* MCLOCK -> CK4MAP */
+ SETREG (0x9d, 0x08); /* STEPTIM=2 */
+ }
+
+ dev->calib_reg = dev->reg;
+
+ DBGCOMPLETED;
+}
+
+/* Send slope table for motor movement
+ slope_table in machine byte order
+ */
+static SANE_Status
+gl843_send_slope_table (Genesys_Device * dev, int table_nr,
+ uint16_t * slope_table, int steps)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i;
+ char msg[10000];
+
+ DBG(DBG_proc, "%s (table_nr = %d, steps = %d)\n", __func__, table_nr, steps);
+
+ std::vector<uint8_t> table(steps * 2);
+ for (i = 0; i < steps; i++)
+ {
+ table[i * 2] = slope_table[i] & 0xff;
+ table[i * 2 + 1] = slope_table[i] >> 8;
+ }
+
+ if (DBG_LEVEL >= DBG_io)
+ {
+ sprintf (msg, "write slope %d (%d)=", table_nr, steps);
+ for (i = 0; i < steps; i++)
+ {
+ sprintf (msg+strlen(msg), "%d", slope_table[i]);
+ }
+ DBG(DBG_io, "%s: %s\n", __func__, msg);
+ }
+
+
+ /* slope table addresses are fixed : 0x4000, 0x4800, 0x5000, 0x5800, 0x6000 */
+ /* XXX STEF XXX USB 1.1 ? sanei_genesys_write_0x8c (dev, 0x0f, 0x14); */
+ status = write_data (dev, 0x4000 + 0x800 * table_nr, steps * 2, table.data());
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: write data failed writing slope table %d (%s)\n", __func__, table_nr,
+ sane_strstatus(status));
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/* Set values of analog frontend */
+static SANE_Status
+gl843_set_fe (Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
+{
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+ int i;
+
+ DBG(DBG_proc, "%s (%s)\n", __func__, set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
+ AFE_POWER_SAVE ? "powersave" : "huh?");
+
+ if (set == AFE_INIT)
+ {
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
+ dev->frontend = dev->frontend_initial;
+ }
+
+ /* check analog frontend type */
+ // FIXME: looks like we write to that register with initial data
+ RIE (sanei_genesys_read_register (dev, REG04, &val));
+ if ((val & REG04_FESET) != 0x00)
+ {
+ /* for now there is no support for AD fe */
+ DBG(DBG_proc, "%s(): unsupported frontend type %d\n", __func__,
+ dev->reg.find_reg(0x04).value & REG04_FESET);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+
+ DBG(DBG_proc, "%s(): frontend reset complete\n", __func__);
+
+ for (i = 1; i <= 3; i++)
+ {
+ // FIXME: BUG: we should initialize dev->frontend before first use. Right now it's
+ // initialized during genesys_coarse_calibration()
+ if (dev->frontend.regs.empty()) {
+ status = sanei_genesys_fe_write_data(dev, i, 0x00);
+ } else {
+ status = sanei_genesys_fe_write_data(dev, i, dev->frontend.regs.get_value(0x00 + i));
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing reg[%d] failed: %s\n", __func__, i, sane_strstatus(status));
+ return status;
+ }
+ }
+ for (const auto& reg : sensor.custom_fe_regs) {
+ status = sanei_genesys_fe_write_data(dev, reg.address, reg.value);
+ if (status != SANE_STATUS_GOOD) {
+ DBG(DBG_error, "%s: writing reg[%d] failed: %s\n", __func__, i, sane_strstatus(status));
+ return status;
+ }
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ // FIXME: BUG: see above
+ if (dev->frontend.regs.empty()) {
+ status = sanei_genesys_fe_write_data(dev, 0x20 + i, 0x00);
+ } else {
+ status = sanei_genesys_fe_write_data(dev, 0x20 + i, dev->frontend.get_offset(i));
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing offset[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+
+ if (dev->model->ccd_type == CCD_KVSS080)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ // FIXME: BUG: see above
+ if (dev->frontend.regs.empty()) {
+ status = sanei_genesys_fe_write_data(dev, 0x24 + i, 0x00);
+ } else {
+ status = sanei_genesys_fe_write_data(dev, 0x24 + i,
+ dev->frontend.regs.get_value(0x24 + i));
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing sign[%d] failed: %s\n", __func__, i,
+ sane_strstatus(status));
+ return status;
+ }
+ }
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ // FIXME: BUG: see above
+ if (dev->frontend.regs.empty()) {
+ status = sanei_genesys_fe_write_data(dev, 0x28 + i, 0x00);
+ } else {
+ status = sanei_genesys_fe_write_data(dev, 0x28 + i, dev->frontend.get_gain(i));
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: writing gain[%d] failed: %s\n", __func__, i, sane_strstatus(status));
+ return status;
+ }
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+
+static SANE_Status
+gl843_init_motor_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg,
+ unsigned int exposure,
+ float scan_yres,
+ int scan_step_type,
+ unsigned int scan_lines,
+ unsigned int scan_dummy,
+ unsigned int feed_steps,
+ int scan_power_mode,
+ unsigned int flags)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int use_fast_fed, coeff;
+ unsigned int lincnt;
+ uint16_t scan_table[1024];
+ uint16_t fast_table[1024];
+ int scan_steps,fast_steps, fast_step_type;
+ unsigned int feedl,factor,dist;
+ GenesysRegister *r;
+ uint32_t z1, z2;
+
+ DBGSTART;
+ DBG(DBG_info, "%s : exposure=%d, scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
+ "feed_steps=%d, scan_power_mode=%d, flags=%x\n", __func__, exposure, scan_yres,
+ scan_step_type, scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
+
+ /* get step multiplier */
+ factor = gl843_get_step_multiplier (reg);
+
+ use_fast_fed = 0;
+
+ if((scan_yres>=300 && feed_steps>900) || (flags & MOTOR_FLAG_FEED))
+ use_fast_fed=1;
+
+ lincnt=scan_lines;
+ sanei_genesys_set_triple(reg,REG_LINCNT,lincnt);
+ DBG(DBG_io, "%s: lincnt=%d\n", __func__, lincnt);
+
+ /* compute register 02 value */
+ r = sanei_genesys_get_address (reg, REG02);
+ r->value = 0x00;
+ sanei_genesys_set_motor_power(*reg, true);
+
+ if (use_fast_fed)
+ r->value |= REG02_FASTFED;
+ else
+ r->value &= ~REG02_FASTFED;
+
+ /* in case of automatic go home, move until home sensor */
+ if (flags & MOTOR_FLAG_AUTO_GO_HOME)
+ r->value |= REG02_AGOHOME | REG02_NOTHOME;
+
+ /* disable backtracking */
+ if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ ||(scan_yres>=2400)
+ ||(scan_yres>=sensor.optical_res))
+ r->value |= REG02_ACDCDIS;
+
+ /* scan and backtracking slope table */
+ sanei_genesys_slope_table(scan_table,
+ &scan_steps,
+ scan_yres,
+ exposure,
+ dev->motor.base_ydpi,
+ scan_step_type,
+ factor,
+ dev->model->motor_type,
+ gl843_motors);
+ RIE(gl843_send_slope_table (dev, SCAN_TABLE, scan_table, scan_steps*factor));
+ RIE(gl843_send_slope_table (dev, BACKTRACK_TABLE, scan_table, scan_steps*factor));
+
+ /* STEPNO */
+ r = sanei_genesys_get_address (reg, REG_STEPNO);
+ r->value = scan_steps;
+
+ /* FSHDEC */
+ r = sanei_genesys_get_address (reg, REG_FSHDEC);
+ r->value = scan_steps;
+
+ /* fast table */
+ fast_step_type=0;
+ if(scan_step_type<=fast_step_type)
+ {
+ fast_step_type=scan_step_type;
+ }
+ sanei_genesys_slope_table(fast_table,
+ &fast_steps,
+ sanei_genesys_get_lowest_ydpi(dev),
+ exposure,
+ dev->motor.base_ydpi,
+ fast_step_type,
+ factor,
+ dev->model->motor_type,
+ gl843_motors);
+ RIE(gl843_send_slope_table (dev, STOP_TABLE, fast_table, fast_steps*factor));
+ RIE(gl843_send_slope_table (dev, FAST_TABLE, fast_table, fast_steps*factor));
+ RIE(gl843_send_slope_table (dev, HOME_TABLE, fast_table, fast_steps*factor));
+
+ /* FASTNO */
+ r = sanei_genesys_get_address (reg, REG_FASTNO);
+ r->value = fast_steps;
+
+ /* FMOVNO */
+ r = sanei_genesys_get_address (reg, REG_FMOVNO);
+ r->value = fast_steps;
+
+ /* substract acceleration distance from feedl */
+ feedl=feed_steps;
+ feedl<<=scan_step_type;
+
+ dist = scan_steps;
+ if (use_fast_fed)
+ {
+ dist += fast_steps*2;
+ }
+ DBG(DBG_io2, "%s: acceleration distance=%d\n", __func__, dist);
+
+ /* get sure when don't insane value : XXX STEF XXX in this case we should
+ * fall back to single table move */
+ if(dist<feedl)
+ feedl -= dist;
+ else
+ feedl = 1;
+
+ sanei_genesys_set_triple(reg,REG_FEEDL,feedl);
+ DBG(DBG_io, "%s: feedl=%d\n", __func__, feedl);
+
+ /* doesn't seem to matter that much */
+ sanei_genesys_calculate_zmode2 (use_fast_fed,
+ exposure,
+ scan_table,
+ scan_steps,
+ feedl,
+ scan_steps,
+ &z1,
+ &z2);
+ if(scan_yres>600)
+ {
+ z1=0;
+ z2=0;
+ }
+
+ sanei_genesys_set_triple(reg,REG_Z1MOD,z1);
+ DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
+
+ sanei_genesys_set_triple(reg,REG_Z2MOD,z2);
+ DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
+
+ r = sanei_genesys_get_address (reg, REG1E);
+ r->value &= 0xf0; /* 0 dummy lines */
+ r->value |= scan_dummy; /* dummy lines */
+
+ r = sanei_genesys_get_address (reg, REG67);
+ r->value = 0x3f | (scan_step_type << REG67S_STEPSEL);
+
+ r = sanei_genesys_get_address (reg, REG68);
+ r->value = 0x3f | (scan_step_type << REG68S_FSTPSEL);
+
+ /* steps for STOP table */
+ r = sanei_genesys_get_address (reg, REG_FMOVDEC);
+ r->value = fast_steps;
+
+ /* Vref XXX STEF XXX : optical divider or step type ? */
+ r = sanei_genesys_get_address (reg, 0x80);
+ if (!(dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE))
+ {
+ r->value = 0x50;
+ coeff=sensor.optical_res/sanei_genesys_compute_dpihw(dev, sensor, scan_yres);
+ if (dev->model->motor_type == MOTOR_KVSS080)
+ {
+ if(coeff>=1)
+ {
+ r->value |= 0x05;
+ }
+ }
+ else {
+ switch(coeff)
+ {
+ case 4:
+ r->value |= 0x0a;
+ break;
+ case 2:
+ r->value |= 0x0f;
+ break;
+ case 1:
+ r->value |= 0x0f;
+ break;
+ }
+ }
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+
+/** @brief setup optical related registers
+ * start and pixels are expressed in optical sensor resolution coordinate
+ * space.
+ * @param dev device to use
+ * @param reg registers to set up
+ * @param exposure exposure time to use
+ * @param used_res scanning resolution used, may differ from
+ * scan's one
+ * @param start logical start pixel coordinate
+ * @param pixels logical number of pixels to use
+ * @param channels number of color channles used (1 or 3)
+ * @param depth bit depth of the scan (1, 8 or 16 bits)
+ * @param ccd_size_divisor SANE_TRUE specifies how much x coordinates must be shrunk
+ * @param color_filter to choose the color channel used in gray scans
+ * @param flags to drive specific settings such no calibration, XPA use ...
+ * @return SANE_STATUS_GOOD if OK
+ */
+static SANE_Status
+gl843_init_optical_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg,
+ unsigned int exposure,
+ int used_res,
+ unsigned int start,
+ unsigned int pixels,
+ int channels,
+ int depth,
+ unsigned ccd_size_divisor,
+ ColorFilter color_filter,
+ int flags)
+{
+ unsigned int words_per_line;
+ unsigned int startx, endx, used_pixels;
+ unsigned int dpiset, dpihw, factor;
+ unsigned int bytes;
+ unsigned int tgtime; /**> exposure time multiplier */
+ unsigned int cksel; /**> clock per system pixel time in capturing image */
+ GenesysRegister *r;
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_proc, "%s : exposure=%d, used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
+ "ccd_size_divisor=%d, flags=%x\n", __func__, exposure, used_res, start, pixels, channels,
+ depth, ccd_size_divisor, flags);
+
+ /* tgtime */
+ tgtime = exposure / 65536 + 1;
+ DBG(DBG_io2, "%s: tgtime=%d\n", __func__, tgtime);
+
+ /* to manage high resolution device while keeping good
+ * low resolution scanning speed, we make hardware dpi vary */
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, used_res);
+ factor=sensor.optical_res/dpihw;
+ DBG(DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
+
+ /* sensor parameters */
+ gl843_setup_sensor (dev, sensor, reg, dpihw, flags);
+
+ /* resolution is divided according to CKSEL which is known once sensor is set up */
+ r = sanei_genesys_get_address (reg, REG18);
+ cksel= (r->value & REG18_CKSEL)+1;
+ DBG(DBG_io2, "%s: cksel=%d\n", __func__, cksel);
+ dpiset = used_res * cksel;
+
+ /* start and end coordinate in optical dpi coordinates */
+ startx = (start + sensor.dummy_pixel)/cksel;
+
+ used_pixels=pixels/cksel;
+ endx = startx + used_pixels;
+
+ /* pixel coordinate factor correction when used dpihw is not maximal one */
+ startx/=factor;
+ endx/=factor;
+ used_pixels=endx-startx;
+
+ /* in case of stagger we have to start at an odd coordinate */
+ if ((flags & OPTICAL_FLAG_STAGGER)
+ &&((startx & 1)==0))
+ {
+ startx++;
+ endx++;
+ }
+
+ status = gl843_set_fe(dev, sensor, AFE_SET);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* enable shading */
+ r = sanei_genesys_get_address (reg, REG01);
+ r->value &= ~REG01_SCAN;
+ if ((flags & OPTICAL_FLAG_DISABLE_SHADING) || (dev->model->flags & GENESYS_FLAG_NO_CALIBRATION))
+ {
+ r->value &= ~REG01_DVDSET;
+ }
+ else
+ {
+ r->value |= REG01_DVDSET;
+ }
+ if(dpihw>600)
+ {
+ r->value |= REG01_SHDAREA;
+ }
+ else
+ {
+ r->value &= ~REG01_SHDAREA;
+ }
+
+ r = sanei_genesys_get_address (reg, REG03);
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ r->value |= REG03_AVEENB;
+ else {
+ r->value &= ~REG03_AVEENB;
+ }
+
+ // FIXME: we probably don't need to set exposure to registers at this point. It was this way
+ // before a refactor.
+ sanei_genesys_set_lamp_power(dev, sensor, *reg, !(flags & OPTICAL_FLAG_DISABLE_LAMP));
+
+ /* select XPA */
+ r->value &= ~REG03_XPASEL;
+ if (flags & OPTICAL_FLAG_USE_XPA)
+ {
+ r->value |= REG03_XPASEL;
+ }
+ reg->state.is_xpa_on = flags & OPTICAL_FLAG_USE_XPA;
+
+ /* BW threshold */
+ r = sanei_genesys_get_address (reg, REG2E);
+ r->value = dev->settings.threshold;
+ r = sanei_genesys_get_address (reg, REG2F);
+ r->value = dev->settings.threshold;
+
+ /* monochrome / color scan */
+ r = sanei_genesys_get_address (reg, REG04);
+ switch (depth)
+ {
+ case 1:
+ r->value &= ~REG04_BITSET;
+ r->value |= REG04_LINEART;
+ break;
+ case 8:
+ r->value &= ~(REG04_LINEART | REG04_BITSET);
+ break;
+ case 16:
+ r->value &= ~REG04_LINEART;
+ r->value |= REG04_BITSET;
+ break;
+ }
+
+ r->value &= ~(REG04_FILTER | REG04_AFEMOD);
+ if (channels == 1)
+ {
+ switch (color_filter)
+ {
+ case ColorFilter::RED:
+ r->value |= 0x14;
+ break;
+ case ColorFilter::BLUE:
+ r->value |= 0x1c;
+ break;
+ case ColorFilter::GREEN:
+ r->value |= 0x18;
+ break;
+ default:
+ break; // should not happen
+ }
+ }
+ else
+ r->value |= 0x10; /* mono */
+
+ /* register 05 */
+ r = sanei_genesys_get_address (reg, REG05);
+
+ /* set up dpihw */
+ r->value &= ~REG05_DPIHW;
+ switch(dpihw)
+ {
+ case 600:
+ r->value |= REG05_DPIHW_600;
+ break;
+ case 1200:
+ r->value |= REG05_DPIHW_1200;
+ break;
+ case 2400:
+ r->value |= REG05_DPIHW_2400;
+ break;
+ case 4800:
+ r->value |= REG05_DPIHW_4800;
+ break;
+ }
+
+ /* enable gamma tables */
+ if (flags & OPTICAL_FLAG_DISABLE_GAMMA)
+ r->value &= ~REG05_GMMENB;
+ else
+ r->value |= REG05_GMMENB;
+
+ sanei_genesys_set_double(reg, REG_DPISET, dpiset * ccd_size_divisor);
+ DBG(DBG_io2, "%s: dpiset used=%d\n", __func__, dpiset * ccd_size_divisor);
+
+ sanei_genesys_set_double(reg, REG_STRPIXEL, startx);
+ sanei_genesys_set_double(reg, REG_ENDPIXEL, endx);
+
+ /* words(16bit) before gamma, conversion to 8 bit or lineart */
+ words_per_line = (used_pixels * dpiset) / dpihw;
+ bytes = depth / 8;
+ if (depth == 1)
+ {
+ words_per_line = (words_per_line >> 3) + ((words_per_line & 7) ? 1 : 0);
+ }
+ else
+ {
+ words_per_line *= bytes;
+ }
+
+ dev->wpl = words_per_line;
+ dev->bpl = words_per_line;
+
+ DBG(DBG_io2, "%s: used_pixels=%d\n", __func__, used_pixels);
+ DBG(DBG_io2, "%s: pixels =%d\n", __func__, pixels);
+ DBG(DBG_io2, "%s: depth =%d\n", __func__, depth);
+ DBG(DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->bpl);
+ DBG(DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
+ DBG(DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
+
+ words_per_line *= channels;
+
+ /* MAXWD is expressed in 2 words unit */
+ /* nousedspace = (mem_bank_range * 1024 / 256 -1 ) * 4; */
+ sanei_genesys_set_triple(reg,REG_MAXWD,(words_per_line)>>1);
+ DBG(DBG_io2, "%s: words_per_line used=%d\n", __func__, words_per_line);
+
+ sanei_genesys_set_double(reg,REG_LPERIOD,exposure/tgtime);
+ DBG(DBG_io2, "%s: exposure used=%d\n", __func__, exposure/tgtime);
+
+ r = sanei_genesys_get_address (reg, REG_DUMMY);
+ r->value = sensor.dummy_pixel;
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+struct ScanSession {
+ SetupParams params;
+
+ // whether the session setup has been computed via gl843_compute_session()
+ bool computed = false;
+
+ // whether CCD operates as half-resolution or full resolution at a specific resolution
+ unsigned ccd_size_divisor = 1;
+
+ // the optical resolution of the scanner.
+ unsigned optical_resolution = 0;
+
+ // the number of pixels at the optical resolution.
+ unsigned optical_pixels = 0;
+
+ // the number of bytes in the output of a single line directly from scanner
+ unsigned optical_line_bytes = 0;
+
+ // the resolution of the output data.
+ unsigned output_resolution = 0;
+
+ // the number of pixels in output data
+ unsigned output_pixels = 0;
+
+ // the number of bytes in the output of a single line
+ unsigned output_line_bytes = 0;
+
+ // the number of lines in the output of the scanner. This must be larger than the user
+ // requested number due to line staggering and color channel shifting.
+ unsigned output_line_count = 0;
+
+ // the number of staggered lines (i.e. lines that overlap during scanning due to line being
+ // thinner than the CCD element)
+ unsigned num_staggered_lines = 0;
+
+ // the number of lines that color channels shift due to different physical positions of
+ // different color channels
+ unsigned max_color_shift_lines = 0;
+
+ void assert_computed() const
+ {
+ if (!computed) {
+ throw std::runtime_error("ScanSession is not computed");
+ }
+ }
+};
+
+static unsigned align_int_up(unsigned num, unsigned alignment)
+{
+ unsigned mask = alignment - 1;
+ if (num & mask)
+ num = (num & ~mask) + alignment;
+ return num;
+}
+
+// computes physical parameters for specific scan setup
+static void gl843_compute_session(Genesys_Device* dev, ScanSession& s,
+ const Genesys_Sensor& sensor)
+{
+ s.params.assert_valid();
+ s.ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(s.params.xres);
+
+ s.optical_resolution = sensor.optical_res / s.ccd_size_divisor;
+
+ if (s.params.flags & SCAN_FLAG_USE_OPTICAL_RES) {
+ s.output_resolution = s.optical_resolution;
+ } else {
+ // resolution is choosen from a fixed list and can be used directly
+ // unless we have ydpi higher than sensor's maximum one
+ if (s.params.xres > s.optical_resolution)
+ s.output_resolution = s.optical_resolution;
+ else
+ s.output_resolution = s.params.xres;
+ }
+
+ // compute rounded up number of optical pixels
+ s.optical_pixels = (s.params.pixels * s.optical_resolution) / s.params.xres;
+ if (s.optical_pixels * s.params.xres < s.params.pixels * s.optical_resolution)
+ s.optical_pixels++;
+
+ // ensure the number of optical pixels is divisible by 2.
+ // In quarter-CCD mode optical_pixels is 4x larger than the actual physical number
+ s.optical_pixels = align_int_up(s.optical_pixels, 2 * s.ccd_size_divisor);
+
+ s.output_pixels =
+ (s.optical_pixels * s.output_resolution) / s.optical_resolution;
+
+ // Note: staggering is not applied for calibration. Staggering starts at 2400 dpi
+ s.num_staggered_lines = 0;
+ if ((s.params.yres > 1200) &&
+ ((s.params.flags & SCAN_FLAG_IGNORE_LINE_DISTANCE) == 0) &&
+ (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
+ {
+ s.num_staggered_lines = (4 * s.params.yres) / dev->motor.base_ydpi;
+ }
+
+ s.max_color_shift_lines = sanei_genesys_compute_max_shift(dev, s.params.channels,
+ s.params.yres, s.params.flags);
+
+ s.output_line_count = s.params.lines + s.max_color_shift_lines + s.num_staggered_lines;
+
+ s.optical_line_bytes = (s.optical_pixels * s.params.channels * s.params.depth) / 8;
+ s.output_line_bytes = (s.output_pixels * s.params.channels * s.params.depth) / 8;
+ s.computed = true;
+}
+
+/* set up registers for an actual scan
+ *
+ * this function sets up the scanner to scan in normal or single line mode
+ */
+static SANE_Status gl843_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set* reg,
+ ScanSession& session)
+{
+ session.assert_computed();
+
+ int start;
+ int move;
+ unsigned int oflags, mflags; /**> optical and motor flags */
+ int exposure;
+
+ int slope_dpi = 0;
+ int dummy = 0;
+ int scan_step_type = 1;
+ int scan_power_mode = 0;
+ size_t requested_buffer_size, read_buffer_size;
+
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, session.params);
+
+ DBG(DBG_info, "%s : stagger=%d lines\n", __func__, session.num_staggered_lines);
+
+ /* we enable true gray for cis scanners only, and just when doing
+ * scan since color calibration is OK for this mode
+ */
+ oflags = 0;
+ if (session.params.flags & SCAN_FLAG_DISABLE_SHADING)
+ oflags |= OPTICAL_FLAG_DISABLE_SHADING;
+ if (session.params.flags & SCAN_FLAG_DISABLE_GAMMA)
+ oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
+ if (session.params.flags & SCAN_FLAG_DISABLE_LAMP)
+ oflags |= OPTICAL_FLAG_DISABLE_LAMP;
+ if (session.params.flags & SCAN_FLAG_CALIBRATION)
+ oflags |= OPTICAL_FLAG_DISABLE_DOUBLE;
+ if (session.num_staggered_lines)
+ oflags |= OPTICAL_FLAG_STAGGER;
+ if (session.params.flags & SCAN_FLAG_USE_XPA)
+ oflags |= OPTICAL_FLAG_USE_XPA;
+
+
+ /* compute scan parameters values */
+ /* pixels are allways given at full optical resolution */
+ /* use detected left margin and fixed value */
+ /* start */
+ start = session.params.startx;
+
+ dummy = 0;
+ /* dummy = 1; XXX STEF XXX */
+
+ /* slope_dpi */
+ /* cis color scan is effectively a gray scan with 3 gray lines per color line and a FILTER of 0 */
+ if (dev->model->is_cis)
+ slope_dpi = session.params.yres * session.params.channels;
+ else
+ slope_dpi = session.params.yres;
+ slope_dpi = slope_dpi * (1 + dummy);
+
+ /* scan_step_type */
+ exposure = sensor.exposure_lperiod;
+ if (exposure < 0) {
+ throw std::runtime_error("Exposure not defined in sensor definition");
+ }
+ scan_step_type = sanei_genesys_compute_step_type(gl843_motors, dev->model->motor_type, exposure);
+
+ DBG(DBG_info, "%s : exposure=%d pixels\n", __func__, exposure);
+ DBG(DBG_info, "%s : scan_step_type=%d\n", __func__, scan_step_type);
+
+ /*** optical parameters ***/
+ /* in case of dynamic lineart, we use an internal 8 bit gray scan
+ * to generate 1 lineart data */
+ if (session.params.flags & SCAN_FLAG_DYNAMIC_LINEART) {
+ session.params.depth = 8;
+ }
+
+ /* no 16 bit gamma for this ASIC */
+ if (session.params.depth == 16)
+ {
+ session.params.flags |= SCAN_FLAG_DISABLE_GAMMA;
+ oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
+ }
+
+ /* now _LOGICAL_ optical values used are known, setup registers */
+ status = gl843_init_optical_regs_scan (dev, sensor,
+ reg,
+ exposure,
+ session.output_resolution,
+ start,
+ session.optical_pixels,
+ session.params.channels,
+ session.params.depth,
+ session.ccd_size_divisor,
+ session.params.color_filter,
+ oflags);
+ if (status != SANE_STATUS_GOOD)
+ return status;
+
+ /*** motor parameters ***/
+
+ /* it seems base_dpi of the G4050 motor is changed above 600 dpi*/
+ if (dev->model->motor_type == MOTOR_G4050 && session.params.yres>600)
+ {
+ dev->ld_shift_r = (dev->model->ld_shift_r*3800)/dev->motor.base_ydpi;
+ dev->ld_shift_g = (dev->model->ld_shift_g*3800)/dev->motor.base_ydpi;
+ dev->ld_shift_b = (dev->model->ld_shift_b*3800)/dev->motor.base_ydpi;
+ }
+ else
+ {
+ dev->ld_shift_r = dev->model->ld_shift_r;
+ dev->ld_shift_g = dev->model->ld_shift_g;
+ dev->ld_shift_b = dev->model->ld_shift_b;
+ }
+
+ /* add tl_y to base movement */
+ move = session.params.starty;
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
+
+
+ mflags=0;
+ if(session.params.flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ mflags|=MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE;
+ if(session.params.flags & SCAN_FLAG_FEEDING)
+ mflags|=MOTOR_FLAG_FEED;
+ if (session.params.flags & SCAN_FLAG_USE_XPA)
+ mflags |= MOTOR_FLAG_USE_XPA;
+
+ status = gl843_init_motor_regs_scan (dev, sensor,
+ reg,
+ exposure,
+ slope_dpi,
+ scan_step_type,
+ dev->model->is_cis ? session.output_line_count * session.params.channels
+ : session.output_line_count,
+ dummy,
+ move,
+ scan_power_mode,
+ mflags);
+ if (status != SANE_STATUS_GOOD)
+ return status;
+
+ /* since we don't have sheetfed scanners to handle,
+ * use huge read buffer */
+ /* TODO find the best size according to settings */
+ requested_buffer_size = 16 * session.output_line_bytes;
+
+ read_buffer_size =
+ 2 * requested_buffer_size +
+ (session.max_color_shift_lines + session.num_staggered_lines) * session.optical_line_bytes;
+
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
+
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
+
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc((8 * session.params.pixels * session.params.channels *
+ session.params.depth) / 8);
+
+ dev->read_bytes_left = session.output_line_bytes * session.output_line_count;
+
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
+ dev->read_active = SANE_TRUE;
+
+ dev->current_setup.params = session.params;
+ dev->current_setup.pixels = session.output_pixels;
+ DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
+ dev->current_setup.lines = session.output_line_count;
+ dev->current_setup.depth = session.params.depth;
+ dev->current_setup.channels = session.params.channels;
+ dev->current_setup.exposure_time = exposure;
+ dev->current_setup.xres = session.output_resolution;
+ dev->current_setup.yres = session.params.yres;
+ dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
+ dev->current_setup.stagger = session.num_staggered_lines;
+ dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
+
+ dev->total_bytes_read = 0;
+ if (session.params.depth == 1) {
+ dev->total_bytes_to_read = ((session.params.pixels * session.params.lines) / 8 +
+ (((session.params.pixels * session.params.lines) % 8) ? 1 : 0)) *
+ session.params.channels;
+ } else {
+ dev->total_bytes_to_read = session.params.pixels * session.params.lines *
+ session.params.channels * (session.params.depth / 8);
+ }
+
+ DBG(DBG_info, "%s: total bytes to send = %lu\n", __func__, (u_long) dev->total_bytes_to_read);
+
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
+static void
+gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor)
+{
+ int channels;
+ int depth;
+ int start;
+
+ int used_res;
+ int used_pixels;
+ unsigned int lincnt;
+ int exposure;
+ int stagger;
+
+ int max_shift;
+
+ int optical_res;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
+
+ /* we have 2 domains for ccd: xres below or above half ccd max dpi */
+ unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
+
+ /* channels */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ channels = 3;
+ else
+ channels = 1;
+
+ /* depth */
+ depth = dev->settings.depth;
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
+ depth = 1;
+
+ /* start */
+ if(dev->settings.scan_method==ScanMethod::TRANSPARENCY)
+ start = SANE_UNFIX (dev->model->x_offset_ta);
+ else
+ start = SANE_UNFIX (dev->model->x_offset);
+
+ start /= ccd_size_divisor;
+
+ start += dev->settings.tl_x;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start; // not used
+ params.starty = 0; // not used
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = 0;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
+
+ /* optical_res */
+ optical_res = sensor.optical_res / ccd_size_divisor;
+
+ /* stagger */
+ if (ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
+ else
+ stagger = 0;
+ DBG(DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
+
+ if (params.xres <= (unsigned) optical_res) {
+ used_res = params.xres;
+ } else {
+ used_res = optical_res;
+ }
+
+ /* compute scan parameters values */
+ /* pixels are allways given at half or full CCD optical resolution */
+ /* use detected left margin and fixed value */
+
+ /* compute correct pixels number */
+ used_pixels = (params.pixels * optical_res) / params.xres;
+ DBG(DBG_info, "%s: used_pixels=%d\n", __func__, used_pixels);
+
+ /* exposure */
+ exposure = sensor.exposure_lperiod;
+ if (exposure < 0) {
+ throw std::runtime_error("Exposure not defined in sensor definition");
+ }
+ DBG(DBG_info, "%s : exposure=%d pixels\n", __func__, exposure);
+
+ /* it seems base_dpi of the G4050 motor is changed above 600 dpi*/
+ if (dev->model->motor_type == MOTOR_G4050 && params.yres>600)
+ {
+ dev->ld_shift_r = (dev->model->ld_shift_r*3800)/dev->motor.base_ydpi;
+ dev->ld_shift_g = (dev->model->ld_shift_g*3800)/dev->motor.base_ydpi;
+ dev->ld_shift_b = (dev->model->ld_shift_b*3800)/dev->motor.base_ydpi;
+ }
+ else
+ {
+ dev->ld_shift_r = dev->model->ld_shift_r;
+ dev->ld_shift_g = dev->model->ld_shift_g;
+ dev->ld_shift_b = dev->model->ld_shift_b;
+ }
+
+ /* scanned area must be enlarged by max color shift needed */
+ max_shift = sanei_genesys_compute_max_shift(dev, params.channels, params.yres, 0);
+
+ /* lincnt */
+ lincnt = params.lines + max_shift + stagger;
+
+ dev->current_setup.params = params;
+ dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
+ DBG(DBG_info, "%s: current_setup.pixels=%d\n", __func__, dev->current_setup.pixels);
+ dev->current_setup.lines = lincnt;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
+ dev->current_setup.exposure_time = exposure;
+ dev->current_setup.xres = used_res;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = ccd_size_divisor;
+ dev->current_setup.stagger = stagger;
+ dev->current_setup.max_shift = max_shift + stagger;
+
+ DBG(DBG_proc, "%s: completed\n", __func__);
+}
+
+/**
+ * for fast power saving methods only, like disabling certain amplifiers
+ * @param dev device to use
+ * @param enable true to set inot powersaving
+ * */
+static SANE_Status
+gl843_save_power (Genesys_Device * dev, SANE_Bool enable)
+{
+ uint8_t val;
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_proc, "%s: enable = %d\n", __func__, enable);
+ if (dev == NULL)
+ return SANE_STATUS_INVAL;
+
+ /* switch KV-SS080 lamp off */
+ if (dev->model->gpo_type == GPO_KVSS080)
+ {
+ RIE(sanei_genesys_read_register (dev, REG6C, &val));
+ if(enable)
+ val &= 0xef;
+ else
+ val |= 0x10;
+ RIE(sanei_genesys_write_register(dev,REG6C,val));
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status
+gl843_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
+ if (dev == NULL)
+ return SANE_STATUS_INVAL;
+
+ DBGCOMPLETED;
+ return status;
+}
+
+static SANE_Status
+gl843_start_action (Genesys_Device * dev)
+{
+ return sanei_genesys_write_register (dev, 0x0f, 0x01);
+}
+
+static SANE_Status
+gl843_stop_action_no_move(Genesys_Device* dev, Genesys_Register_Set* reg)
+{
+ uint8_t val = sanei_genesys_read_reg_from_set(reg, REG01);
+ val &= ~REG01_SCAN;
+ sanei_genesys_set_reg_from_set(reg, REG01, val);
+ SANE_Status ret = sanei_genesys_write_register(dev, REG01, val);
+ sanei_genesys_sleep_ms(100);
+ return ret;
+}
+
+static SANE_Status
+gl843_stop_action (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val40, val;
+ unsigned int loop;
+
+ DBG(DBG_proc, "%s\n", __func__);
+
+ status = sanei_genesys_get_status (dev, &val);
+ if (DBG_LEVEL >= DBG_io)
+ {
+ sanei_genesys_print_status (val);
+ }
+
+ val40 = 0;
+ status = sanei_genesys_read_register (dev, REG40, &val40);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return status;
+ }
+
+ /* only stop action if needed */
+ if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG))
+ {
+ DBG(DBG_info, "%s: already stopped\n", __func__);
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+
+ /* ends scan 646 */
+ val = dev->reg.get8(REG01);
+ val &= ~REG01_SCAN;
+ dev->reg.set8(REG01, val);
+ status = sanei_genesys_write_register (dev, REG01, val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to write register 01: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_sleep_ms(100);
+
+ loop = 10;
+ while (loop > 0)
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (DBG_LEVEL >= DBG_io)
+ {
+ sanei_genesys_print_status (val);
+ }
+ val40 = 0;
+ status = sanei_genesys_read_register (dev, 0x40, &val40);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
+ DBGCOMPLETED;
+ return status;
+ }
+
+ /* if scanner is in command mode, we are done */
+ if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG)
+ && !(val & REG41_MOTORENB))
+ {
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+ }
+
+ sanei_genesys_sleep_ms(100);
+ loop--;
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_IO_ERROR;
+}
+
+static SANE_Status
+gl843_get_paper_sensor (Genesys_Device * dev, SANE_Bool * paper_loaded)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+
+ status = sanei_genesys_read_register (dev, REG6D, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read gpio: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ *paper_loaded = (val & 0x1) == 0;
+ return SANE_STATUS_GOOD;
+
+ return SANE_STATUS_INVAL;
+}
+
+static SANE_Status
+gl843_eject_document (Genesys_Device * dev)
+{
+ DBG(DBG_proc, "%s: not implemented \n", __func__);
+ if (dev == NULL)
+ return SANE_STATUS_INVAL;
+ return SANE_STATUS_GOOD;
+}
+
+
+static SANE_Status
+gl843_load_document (Genesys_Device * dev)
+{
+ DBG(DBG_proc, "%s: not implemented \n", __func__);
+ if (dev == NULL)
+ return SANE_STATUS_INVAL;
+ return SANE_STATUS_GOOD;
+}
+
+/**
+ * detects end of document and adjust current scan
+ * to take it into account
+ * used by sheetfed scanners
+ */
+static SANE_Status
+gl843_detect_document_end (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ SANE_Bool paper_loaded;
+ unsigned int scancnt = 0;
+ int flines, channels, depth, bytes_remain, sublines,
+ bytes_to_flush, lines, sub_bytes, tmp, read_bytes_left;
+ DBG(DBG_proc, "%s: begin\n", __func__);
+
+ RIE (gl843_get_paper_sensor (dev, &paper_loaded));
+
+ /* sheetfed scanner uses home sensor as paper present */
+ if ((dev->document == SANE_TRUE) && !paper_loaded)
+ {
+ DBG(DBG_info, "%s: no more document\n", __func__);
+ dev->document = SANE_FALSE;
+
+ channels = dev->current_setup.channels;
+ depth = dev->current_setup.depth;
+ read_bytes_left = (int) dev->read_bytes_left;
+ DBG(DBG_io, "%s: read_bytes_left=%d\n", __func__, read_bytes_left);
+
+ /* get lines read */
+ try {
+ status = sanei_genesys_read_scancnt(dev, &scancnt);
+ } catch (...) {
+ flines = 0;
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ flines = 0;
+ }
+ else
+ {
+ /* compute number of line read */
+ tmp = (int) dev->total_bytes_read;
+ if (depth == 1 || dev->settings.scan_mode == ScanColorMode::LINEART)
+ flines = tmp * 8 / dev->settings.pixels / channels;
+ else
+ flines = tmp / (depth / 8) / dev->settings.pixels / channels;
+
+ /* number of scanned lines, but no read yet */
+ flines = scancnt - flines;
+
+ DBG(DBG_io, "%s: %d scanned but not read lines\n", __func__, flines);
+ }
+
+ /* adjust number of bytes to read
+ * we need to read the final bytes which are word per line * number of last lines
+ * to have doc leaving feeder */
+ lines =
+ (SANE_UNFIX (dev->model->post_scan) * dev->current_setup.yres) /
+ MM_PER_INCH + flines;
+ DBG(DBG_io, "%s: adding %d line to flush\n", __func__, lines);
+
+ /* number of bytes to read from scanner to get document out of it after
+ * end of document dectected by hardware sensor */
+ bytes_to_flush = lines * dev->wpl;
+
+ /* if we are already close to end of scan, flushing isn't needed */
+ if (bytes_to_flush < read_bytes_left)
+ {
+ /* we take all these step to work around an overflow on some plateforms */
+ tmp = (int) dev->total_bytes_read;
+ DBG (DBG_io, "%s: tmp=%d\n", __func__, tmp);
+ bytes_remain = (int) dev->total_bytes_to_read;
+ DBG(DBG_io, "%s: bytes_remain=%d\n", __func__, bytes_remain);
+ bytes_remain = bytes_remain - tmp;
+ DBG(DBG_io, "%s: bytes_remain=%d\n", __func__, bytes_remain);
+
+ /* remaining lines to read by frontend for the current scan */
+ if (depth == 1 || dev->settings.scan_mode == ScanColorMode::LINEART)
+ {
+ flines = bytes_remain * 8 / dev->settings.pixels / channels;
+ }
+ else
+ flines = bytes_remain / (depth / 8)
+ / dev->settings.pixels / channels;
+ DBG(DBG_io, "%s: flines=%d\n", __func__, flines);
+
+ if (flines > lines)
+ {
+ /* change the value controlling communication with the frontend :
+ * total bytes to read is current value plus the number of remaining lines
+ * multiplied by bytes per line */
+ sublines = flines - lines;
+
+ if (depth == 1 || dev->settings.scan_mode == ScanColorMode::LINEART)
+ sub_bytes =
+ ((dev->settings.pixels * sublines) / 8 +
+ (((dev->settings.pixels * sublines) % 8) ? 1 : 0)) *
+ channels;
+ else
+ sub_bytes =
+ dev->settings.pixels * sublines * channels * (depth / 8);
+
+ dev->total_bytes_to_read -= sub_bytes;
+
+ /* then adjust the physical bytes to read */
+ if (read_bytes_left > sub_bytes)
+ {
+ dev->read_bytes_left -= sub_bytes;
+ }
+ else
+ {
+ dev->total_bytes_to_read = dev->total_bytes_read;
+ dev->read_bytes_left = 0;
+ }
+
+ DBG(DBG_io, "%s: sublines=%d\n", __func__, sublines);
+ DBG(DBG_io, "%s: subbytes=%d\n", __func__, sub_bytes);
+ DBG(DBG_io, "%s: total_bytes_to_read=%lu\n", __func__,
+ (unsigned long) dev->total_bytes_to_read);
+ DBG(DBG_io, "%s: read_bytes_left=%d\n", __func__, read_bytes_left);
+ }
+ }
+ else
+ {
+ DBG(DBG_io, "%s: no flushing needed\n", __func__);
+ }
+ }
+
+ DBG(DBG_proc, "%s: finished\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
+// enables or disables XPA slider motor
+static SANE_Status gl843_set_xpa_motor_power(Genesys_Device *dev, bool set)
+{
+ uint8_t val;
+ SANE_Status status=SANE_STATUS_GOOD;
+
+ DBGSTART;
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
+
+ if (set) {
+ RIE(sanei_genesys_read_register(dev, REG6C, &val));
+ val &= ~REG6C_GPIO14;
+ if (dev->current_setup.xres >= 2400) {
+ val |= REG6C_GPIO10;
+ }
+ RIE(sanei_genesys_write_register(dev, REG6C, val));
+
+ RIE(sanei_genesys_read_register(dev, REGA6, &val));
+ val |= REGA6_GPIO17;
+ RIE(sanei_genesys_write_register(dev, REGA6,val));
+ } else {
+ RIE(sanei_genesys_read_register(dev, REG6C, &val));
+ val |= REG6C_GPIO14;
+ val &= ~REG6C_GPIO10;
+ RIE(sanei_genesys_write_register(dev, REG6C, val));
+
+ RIE(sanei_genesys_read_register(dev, REGA6, &val));
+ val &= ~REGA6_GPIO17;
+ RIE(sanei_genesys_write_register(dev, REGA6,val));
+ }
+ DBGCOMPLETED;
+ return status;
+ }
+
+ if (dev->model->model_id == MODEL_HP_SCANJET_G4050) {
+
+ if (set) {
+ /* set MULTFILM et GPOADF */
+ RIE (sanei_genesys_read_register (dev, REG6B, &val));
+ val |=REG6B_MULTFILM|REG6B_GPOADF;
+ RIE (sanei_genesys_write_register (dev, REG6B, val));
+
+ RIE (sanei_genesys_read_register (dev, REG6C, &val));
+ val &= ~REG6C_GPIO15;
+ RIE (sanei_genesys_write_register (dev, REG6C, val));
+
+ /* Motor power ? No move at all without this one */
+ RIE (sanei_genesys_read_register (dev, REGA6, &val));
+ val |= REGA6_GPIO20;
+ RIE (sanei_genesys_write_register(dev,REGA6,val));
+
+ RIE (sanei_genesys_read_register (dev, REGA8, &val));
+ val &= ~REGA8_GPO27;
+ RIE (sanei_genesys_write_register (dev, REGA8, val));
+
+ RIE (sanei_genesys_read_register (dev, REGA9, &val));
+ val |= REGA9_GPO32|REGA9_GPO31;
+ RIE (sanei_genesys_write_register (dev, REGA9, val));
+ } else {
+ /* unset GPOADF */
+ RIE (sanei_genesys_read_register (dev, REG6B, &val));
+ val &= ~REG6B_GPOADF;
+ RIE (sanei_genesys_write_register (dev, REG6B, val));
+
+ RIE (sanei_genesys_read_register (dev, REGA8, &val));
+ val |= REGA8_GPO27;
+ RIE (sanei_genesys_write_register (dev, REGA8, val));
+
+ RIE (sanei_genesys_read_register (dev, REGA9, &val));
+ val &= ~REGA9_GPO31;
+ RIE (sanei_genesys_write_register (dev, REGA9, val));
+ }
+ DBGCOMPLETED;
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/** @brief light XPA lamp
+ * toggle gpios to switch off regular lamp and light on the
+ * XPA light
+ * @param dev device to set up
+ */
+static SANE_Status gl843_set_xpa_lamp_power(Genesys_Device *dev, bool set)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val = 0;
+ DBGSTART;
+
+ if (set) {
+ RIE(sanei_genesys_read_register(dev, REGA6, &val));
+
+ // cut regular lamp power
+ val &= ~(REGA6_GPIO24 | REGA6_GPIO23);
+
+ // set XPA lamp power
+ val |= REGA6_GPIO22 | REGA6_GPIO21 | REGA6_GPIO19;
+
+ RIE(sanei_genesys_write_register(dev, REGA6, val));
+
+ RIE(sanei_genesys_read_register(dev, REGA7, &val));
+ val|=REGA7_GPOE24; /* lamp 1 off GPOE 24 */
+ val|=REGA7_GPOE23; /* lamp 2 off GPOE 23 */
+ val|=REGA7_GPOE22; /* full XPA lamp power */
+ RIE(sanei_genesys_write_register(dev, REGA7, val));
+ } else {
+ RIE(sanei_genesys_read_register(dev, REGA6, &val));
+
+ // switch on regular lamp
+ val |= REGA6_GPIO23;
+
+ // no XPA lamp power (2 bits for level: __11 ____)
+ val &= ~(REGA6_GPIO22 | REGA6_GPIO21);
+
+ RIE(sanei_genesys_write_register(dev, REGA6, val));
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/* Send the low-level scan command */
+static SANE_Status
+gl843_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SANE_Bool start_motor)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+ uint16_t dpiset, dpihw;
+
+ DBGSTART;
+
+ /* get back the target dpihw */
+ sanei_genesys_get_double (reg, REG_DPISET, &dpiset);
+ dpihw = sanei_genesys_compute_dpihw(dev, sensor, dpiset);
+
+ /* set up GPIO for scan */
+ switch(dev->model->gpo_type)
+ {
+ /* KV case */
+ case GPO_KVSS080:
+ RIE (sanei_genesys_write_register (dev, REGA9, 0x00));
+ RIE (sanei_genesys_write_register (dev, REGA6, 0xf6));
+ /* blinking led */
+ RIE (sanei_genesys_write_register (dev, 0x7e, 0x04));
+ break;
+ case GPO_G4050:
+ RIE (sanei_genesys_write_register (dev, REGA7, 0xfe));
+ RIE (sanei_genesys_write_register (dev, REGA8, 0x3e));
+ RIE (sanei_genesys_write_register (dev, REGA9, 0x06));
+ switch (dpihw)
+ {
+ case 1200:
+ case 2400:
+ case 4800:
+ RIE (sanei_genesys_write_register (dev, REG6C, 0x60));
+ RIE (sanei_genesys_write_register (dev, REGA6, 0x46));
+ break;
+ default: /* 600 dpi case */
+ RIE (sanei_genesys_write_register (dev, REG6C, 0x20));
+ RIE (sanei_genesys_write_register (dev, REGA6, 0x44));
+ }
+
+ if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
+ RIE(gl843_set_xpa_lamp_power(dev, true));
+ }
+
+ if (reg->state.is_xpa_on) {
+ dev->needs_home_ta = SANE_TRUE;
+ RIE(gl843_set_xpa_motor_power(dev, true));
+ }
+
+ /* blinking led */
+ RIE (sanei_genesys_write_register (dev, REG7E, 0x01));
+ break;
+ case GPO_CS8600F:
+ if (reg->state.is_xpa_on) {
+ dev->needs_home_ta = SANE_TRUE;
+ RIE(gl843_set_xpa_motor_power(dev, true));
+ }
+ break;
+ case GPO_CS4400F:
+ case GPO_CS8400F:
+ default:
+ break;
+ }
+
+ /* clear scan and feed count */
+ RIE (sanei_genesys_write_register
+ (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
+
+ /* enable scan and motor */
+ RIE (sanei_genesys_read_register (dev, REG01, &val));
+ val |= REG01_SCAN;
+ RIE (sanei_genesys_write_register (dev, REG01, val));
+
+ if (start_motor)
+ {
+ RIE (sanei_genesys_write_register (dev, REG0F, 1));
+ }
+ else
+ {
+ RIE (sanei_genesys_write_register (dev, REG0F, 0));
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/* Send the stop scan command */
+static SANE_Status
+gl843_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+ SANE_Bool check_stop)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_proc, "%s (check_stop = %d)\n", __func__, check_stop);
+ if (reg == NULL)
+ return SANE_STATUS_INVAL;
+
+ /* post scan gpio */
+ RIE(sanei_genesys_write_register(dev,0x7e,0x00));
+
+ // turn off XPA lamp if needed
+ // BUG: the if condition below probably shouldn't be enabled when XPA is off
+ if (reg->state.is_xpa_on || reg->state.is_lamp_on) {
+ gl843_set_xpa_lamp_power(dev, false);
+ }
+
+ if (dev->model->is_sheetfed == SANE_TRUE)
+ {
+ status = SANE_STATUS_GOOD;
+ }
+ else /* flat bed scanners */
+ {
+ status = gl843_stop_action (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/** @brief park XPA lamp
+ * park the XPA lamp if needed
+ */
+static SANE_Status gl843_park_xpa_lamp (Genesys_Device * dev)
+{
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
+ uint8_t val;
+ int loop = 0;
+
+ DBGSTART;
+
+ /* copy scan settings */
+ local_reg = dev->reg;
+
+ /* set a huge feedl and reverse direction */
+ sanei_genesys_set_triple(&local_reg,REG_FEEDL,0xbdcd);
+
+ /* clear scan and feed count */
+ RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
+
+ /* set up for reverse and no scan */
+ r = sanei_genesys_get_address (&local_reg, REG02);
+ r->value |= REG02_MTRREV;
+ r = sanei_genesys_get_address (&local_reg, REG01);
+ r->value &= ~REG01_SCAN;
+
+ /* write to scanner and start action */
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+ RIE(gl843_set_xpa_motor_power(dev, true));
+ try {
+ status = gl843_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl843_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ gl843_stop_action (dev);
+ /* restore original registers */
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ return status;
+ }
+
+ while (loop < 600) /* do not wait longer then 60 seconds */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_io2)
+ {
+ sanei_genesys_print_status (val);
+ }
+
+ if (val & REG41_HOMESNR) /* home sensor */
+ {
+ DBG(DBG_info, "%s: reached home position\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
+
+ gl843_set_xpa_motor_power(dev, false);
+ dev->needs_home_ta = SANE_FALSE;
+
+ return SANE_STATUS_GOOD;
+ }
+ sanei_genesys_sleep_ms(100);
+ ++loop;
+ }
+
+ /* we are not parked here.... should we fail ? */
+ DBG(DBG_info, "%s: XPA lamp is not parked\n", __func__);
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/** @brief Moves the slider to the home (top) position slowly
+ * */
+static SANE_Status
+gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
+{
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
+ uint8_t val;
+ float resolution;
+ int loop = 0;
+
+ DBG(DBG_proc, "%s (wait_until_home = %d)\n", __func__, wait_until_home);
+
+ if (dev->needs_home_ta) {
+ RIE(gl843_park_xpa_lamp(dev));
+ }
+
+ /* regular slow back home */
+ dev->scanhead_position_in_steps = 0;
+
+ /* first read gives HOME_SENSOR true */
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_sleep_ms(100);
+
+ /* second is reliable */
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_io)
+ {
+ sanei_genesys_print_status (val);
+ }
+ if (val & HOMESNR) /* is sensor at home? */
+ {
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+ }
+
+ local_reg = dev->reg;
+ resolution=sanei_genesys_get_lowest_ydpi(dev);
+
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = 100;
+ session.params.starty = 40000;
+ session.params.pixels = 100;
+ session.params.lines = 100;
+ session.params.depth = 8;
+ session.params.channels = 1;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::LINEART;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+ gl843_compute_session(dev, session, sensor);
+
+ status = gl843_init_scan_regs(dev, sensor, &local_reg, session);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
+ DBGCOMPLETED;
+ return status;
+ }
+
+ /* clear scan and feed count */
+ RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
+
+ /* set up for reverse and no scan */
+ r = sanei_genesys_get_address(&local_reg, REG02);
+ r->value |= REG02_MTRREV;
+ r = sanei_genesys_get_address(&local_reg, REG01);
+ r->value &= ~REG01_SCAN;
+
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl843_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl843_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ gl843_stop_action (dev);
+ /* restore original registers */
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ return status;
+ }
+
+ if (wait_until_home)
+ {
+
+ while (loop < 300) /* do not wait longer then 30 seconds */
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+ if (DBG_LEVEL >= DBG_io2)
+ {
+ sanei_genesys_print_status (val);
+ }
+
+ if (val & REG41_HOMESNR) /* home sensor */
+ {
+ DBG(DBG_info, "%s: reached home position\n", __func__);
+ DBG(DBG_proc, "%s: finished\n", __func__);
+ return SANE_STATUS_GOOD;
+ }
+ sanei_genesys_sleep_ms(100);
+ ++loop;
+ }
+
+ /* when we come here then the scanner needed too much time for this, so we better stop the motor */
+ gl843_stop_action (dev);
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/* Automatically set top-left edge of the scan area by scanning a 200x200 pixels
+ area at 600 dpi from very top of scanner */
+static SANE_Status
+gl843_search_start_position (Genesys_Device * dev)
+{
+ int size;
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
+ int steps;
+
+ int pixels = 600;
+ int dpi = 300;
+
+ DBG(DBG_proc, "%s\n", __func__);
+
+ local_reg = dev->reg;
+
+ /* sets for a 200 lines * 600 pixels */
+ /* normal scan with no shading */
+
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dpi);
+
+ ScanSession session;
+ session.params.xres = dpi;
+ session.params.yres = dpi;
+ session.params.startx = 0;
+ session.params.starty = 0; // we should give a small offset here - ~60 steps
+ session.params.pixels = 600;
+ session.params.lines = dev->model->search_lines;
+ session.params.depth = 8;
+ session.params.channels = 1;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::GRAY;
+ session.params.color_filter = ColorFilter::GREEN;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
+ gl843_compute_session(dev, session, sensor);
+
+ status = gl843_init_scan_regs(dev, sensor, &local_reg, session);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk setup registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* send to scanner */
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ size = dev->read_bytes_left;
+
+ std::vector<uint8_t> data(size);
+
+ status = gl843_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* waits for valid data */
+ do
+ sanei_genesys_test_buffer_empty (dev, &steps);
+ while (steps);
+
+ /* now we're on target, we can read data */
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ RIE(gl843_stop_action_no_move(dev, &local_reg));
+
+ if (DBG_LEVEL >= DBG_data)
+ sanei_genesys_write_pnm_file("gl843_search_position.pnm", data.data(), 8, 1, pixels,
+ dev->model->search_lines);
+
+ status = gl843_end_scan(dev, &local_reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* update regs to copy ASIC internal state */
+ dev->reg = local_reg;
+
+ status =
+ sanei_genesys_search_reference_point (dev, sensor, data.data(), 0, dpi, pixels,
+ dev->model->search_lines);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ return SANE_STATUS_GOOD;
+}
+
+/*
+ * sets up register for coarse gain calibration
+ * todo: check it for scanners using it */
+static SANE_Status
+gl843_init_regs_for_coarse_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t channels;
+ uint8_t cksel;
+
+ DBGSTART;
+ cksel = (regs.find_reg(0x18).value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
+
+ /* set line size */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ channels = 3;
+ else
+ channels = 1;
+
+ int flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY) {
+ flags |= SCAN_FLAG_USE_XPA;
+ }
+
+ ScanSession session;
+ session.params.xres = dev->settings.xres;
+ session.params.yres = dev->settings.yres;
+ session.params.startx = 0;
+ session.params.starty = 0;
+ session.params.pixels = sensor.optical_res / cksel; // XXX STEF XXX dpi instead of pixels!
+ session.params.lines = 20;
+ session.params.depth = 16;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = dev->settings.scan_mode;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = flags;
+ gl843_compute_session(dev, session, sensor);
+
+ status = gl843_init_scan_regs(dev, sensor, &regs, session);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_set_motor_power(regs, false);
+
+ DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
+ sensor.optical_res / cksel, dev->settings.xres);
+
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/** @brief moves the slider to steps at motor base dpi
+ * @param dev device to work on
+ * @param steps number of steps to move
+ * */
+static SANE_Status
+gl843_feed (Genesys_Device * dev, unsigned int steps)
+{
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
+ float resolution;
+ uint8_t val;
+
+ DBGSTART;
+
+ /* prepare local registers */
+ local_reg = dev->reg;
+
+ resolution=sanei_genesys_get_lowest_ydpi(dev);
+
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = 0;
+ session.params.starty = steps;
+ session.params.pixels = 100;
+ session.params.lines = 3;
+ session.params.depth = 8;
+ session.params.channels = 3;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ session.params.color_filter = ColorFilter::RED;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_FEEDING |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+ gl843_compute_session(dev, session, sensor);
+
+ status = gl843_init_scan_regs(dev, sensor, &local_reg, session);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
+ DBGCOMPLETED;
+ return status;
+ }
+
+ /* clear scan and feed count */
+ RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
+ RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRMCNT));
+
+ /* set up for no scan */
+ r = sanei_genesys_get_address(&local_reg, REG01);
+ r->value &= ~REG01_SCAN;
+
+ /* send registers */
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl843_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl843_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ gl843_stop_action (dev);
+
+ /* restore original registers */
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ return status;
+ }
+
+ /* wait until feed count reaches the required value, but do not
+ * exceed 30s */
+ do
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ }
+ while (status == SANE_STATUS_GOOD && !(val & FEEDFSH));
+
+ // looks like the scanner locks up if we scan immediately after feeding
+ sanei_genesys_sleep_ms(100);
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status gl843_move_to_ta (Genesys_Device * dev);
+
+/* init registers for shading calibration */
+/* shading calibration is done at dpihw */
+static SANE_Status
+gl843_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int move, resolution, dpihw, factor;
+ uint16_t strpixel;
+
+ DBGSTART;
+
+ /* initial calibration reg values */
+ regs = dev->reg;
+
+ dev->calib_channels = 3;
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ dev->calib_lines = dev->model->shading_ta_lines;
+ else
+ dev->calib_lines = dev->model->shading_lines;
+ dpihw = sanei_genesys_compute_dpihw_calibration(dev, sensor, dev->settings.xres);
+ factor=sensor.optical_res/dpihw;
+ resolution=dpihw;
+
+ const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution,
+ dev->settings.scan_method);
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY &&
+ dev->model->model_id == MODEL_CANON_CANOSCAN_8600F &&
+ dev->settings.xres == 4800)
+ {
+ float offset = SANE_UNFIX(dev->model->x_offset_ta);
+ offset /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
+ offset = (offset * calib_sensor.optical_res) / MM_PER_INCH;
+
+ unsigned size = SANE_UNFIX(dev->model->x_size_ta);
+ size /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
+ size = (size * calib_sensor.optical_res) / MM_PER_INCH;
+
+ dev->calib_pixels_offset = offset;
+ dev->calib_pixels = size;
+ }
+ else
+ {
+ dev->calib_pixels_offset = 0;
+ dev->calib_pixels = calib_sensor.sensor_pixels / factor;
+ }
+
+ dev->calib_resolution = resolution;
+
+ int flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ // note: move_to_ta() function has already been called and the sensor is at the
+ // transparency adapter
+ move = 0; // already at dev->model->y_offset_calib_ta implicitly
+ flags |= SCAN_FLAG_USE_XPA;
+ }
+ else
+ move = SANE_UNFIX(dev->model->y_offset_calib);
+
+ move = (move * resolution) / MM_PER_INCH;
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = dev->calib_pixels_offset;
+ session.params.starty = move;
+ session.params.pixels = dev->calib_pixels;
+ session.params.lines = dev->calib_lines;
+ session.params.depth = 16;
+ session.params.channels = dev->calib_channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = dev->settings.scan_mode;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = flags;
+ gl843_compute_session(dev, session, calib_sensor);
+
+ status = gl843_init_scan_regs(dev, calib_sensor, &regs, session);
+
+ // the pixel number may be updated to conform to scanner constraints
+ dev->calib_pixels = dev->current_setup.pixels;
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ dev->calib_total_bytes_to_read = dev->read_bytes_left;
+
+ dev->scanhead_position_in_steps += dev->calib_lines + move;
+ sanei_genesys_get_double(&regs,REG_STRPIXEL,&strpixel);
+ DBG(DBG_info, "%s: STRPIXEL=%d\n", __func__, strpixel);
+
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/** @brief set up registers for the actual scan
+ */
+static SANE_Status
+gl843_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
+{
+ int channels;
+ int flags;
+ int depth;
+ float move;
+ int move_dpi;
+ float start;
+
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
+
+ /* channels */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
+ channels = 3;
+ else
+ channels = 1;
+
+ /* depth */
+ depth = dev->settings.depth;
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
+ depth = 1;
+
+ move_dpi = dev->motor.base_ydpi;
+
+ flags = 0;
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ // note: move_to_ta() function has already been called and the sensor is at the
+ // transparency adapter
+ move = SANE_UNFIX(dev->model->y_offset_ta) - SANE_UNFIX(dev->model->y_offset_calib_ta);
+ flags |= SCAN_FLAG_USE_XPA;
+ }
+ else
+ move = SANE_UNFIX(dev->model->y_offset);
+
+ move += dev->settings.tl_y;
+ move = (move * move_dpi) / MM_PER_INCH;
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
+
+ /* start */
+ if(dev->settings.scan_method==ScanMethod::TRANSPARENCY)
+ start = SANE_UNFIX (dev->model->x_offset_ta);
+ else
+ start = SANE_UNFIX (dev->model->x_offset);
+
+ start /= sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
+ start += dev->settings.tl_x;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ /* enable emulated lineart from gray data */
+ if(dev->settings.scan_mode == ScanColorMode::LINEART
+ && dev->settings.dynamic_lineart)
+ {
+ flags |= SCAN_FLAG_DYNAMIC_LINEART;
+ }
+
+ ScanSession session;
+ session.params.xres = dev->settings.xres;
+ session.params.yres = dev->settings.yres;
+ session.params.startx = start;
+ session.params.starty = move;
+ session.params.pixels = dev->settings.pixels;
+ session.params.lines = dev->settings.lines;
+ session.params.depth = depth;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = dev->settings.scan_mode;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = flags;
+ gl843_compute_session(dev, session, sensor);
+
+ status = gl843_init_scan_regs(dev, sensor, &dev->reg, session);
+
+ if (status != SANE_STATUS_GOOD)
+ return status;
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/**
+ * This function sends gamma tables to ASIC
+ */
+static SANE_Status
+gl843_send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor)
+{
+ int size;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int i;
+
+ DBGSTART;
+
+ size = 256;
+
+ /* allocate temporary gamma tables: 16 bits words, 3 channels */
+ std::vector<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);
+
+ // copy sensor specific's gamma tables
+ for (i = 0; i < size; i++) {
+ gamma[i * 2 + size * 0 + 0] = rgamma[i] & 0xff;
+ gamma[i * 2 + size * 0 + 1] = (rgamma[i] >> 8) & 0xff;
+ gamma[i * 2 + size * 2 + 0] = ggamma[i] & 0xff;
+ gamma[i * 2 + size * 2 + 1] = (ggamma[i] >> 8) & 0xff;
+ gamma[i * 2 + size * 4 + 0] = bgamma[i] & 0xff;
+ gamma[i * 2 + size * 4 + 1] = (bgamma[i] >> 8) & 0xff;
+ }
+
+ /* send address */
+ status = gl843_set_buffer_address (dev, 0x0000);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* send data */
+ status = sanei_genesys_bulk_write_data(dev, 0x28, gamma.data(), size * 2 * 3);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send gamma table: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
+/* this function does the led calibration by scanning one line of the calibration
+ area below scanner's top on white strip.
+
+-needs working coarse/gain
+*/
+static SANE_Status
+gl843_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
+{
+ int num_pixels;
+ int total_size;
+ int used_res;
+ int i, j;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int val;
+ int channels, depth;
+ int avg[3], avga, avge;
+ int turn;
+ uint16_t expr, expg, expb;
+
+ SANE_Bool acceptable = SANE_FALSE;
+
+ DBG(DBG_proc, "%s\n", __func__);
+
+ /* offset calibration is always done in color mode */
+ channels = 3;
+ depth = 16;
+ used_res = sensor.optical_res;
+
+ auto& calib_sensor = sanei_genesys_find_sensor_for_write(dev, used_res,
+ dev->settings.scan_method);
+ num_pixels =
+ (calib_sensor.sensor_pixels * used_res) / calib_sensor.optical_res;
+
+ /* initial calibration reg values */
+ regs = dev->reg;
+
+ ScanSession session;
+ session.params.xres = used_res;
+ session.params.yres = dev->motor.base_ydpi;
+ session.params.startx = 0;
+ session.params.starty = 0;
+ session.params.pixels = num_pixels;
+ session.params.lines = 1;
+ session.params.depth = depth;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+ gl843_compute_session(dev, session, calib_sensor);
+
+ status = gl843_init_scan_regs(dev, calib_sensor, &regs, session);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+
+ total_size = dev->read_bytes_left;
+
+ std::vector<uint8_t> line(total_size);
+
+/*
+ we try to get equal bright leds here:
+
+ loop:
+ average per color
+ adjust exposure times
+ */
+
+ expr = calib_sensor.exposure.red;
+ expg = calib_sensor.exposure.green;
+ expb = calib_sensor.exposure.blue;
+
+ turn = 0;
+
+ do
+ {
+
+ calib_sensor.exposure.red = expr;
+ calib_sensor.exposure.green = expg;
+ calib_sensor.exposure.blue = expb;
+
+ sanei_genesys_set_exposure(regs, calib_sensor.exposure);
+
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE (gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE));
+ RIE (sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
+ RIE(gl843_stop_action_no_move(dev, &regs));
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char fn[30];
+ snprintf(fn, 30, "gl843_led_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), depth, channels, num_pixels, 1);
+ }
+
+ acceptable = SANE_TRUE;
+
+ for (j = 0; j < channels; j++)
+ {
+ avg[j] = 0;
+ for (i = 0; i < num_pixels; i++)
+ {
+ if (dev->model->is_cis)
+ val =
+ line[i * 2 + j * 2 * num_pixels + 1] * 256 +
+ line[i * 2 + j * 2 * num_pixels];
+ else
+ val =
+ line[i * 2 * channels + 2 * j + 1] * 256 +
+ line[i * 2 * channels + 2 * j];
+ avg[j] += val;
+ }
+
+ avg[j] /= num_pixels;
+ }
+
+ DBG(DBG_info, "%s: average: %d,%d,%d\n", __func__, avg[0], avg[1], avg[2]);
+
+ acceptable = SANE_TRUE;
+
+ if (avg[0] < avg[1] * 0.95 || avg[1] < avg[0] * 0.95 ||
+ avg[0] < avg[2] * 0.95 || avg[2] < avg[0] * 0.95 ||
+ avg[1] < avg[2] * 0.95 || avg[2] < avg[1] * 0.95)
+ acceptable = SANE_FALSE;
+
+ if (!acceptable)
+ {
+ avga = (avg[0] + avg[1] + avg[2]) / 3;
+ expr = (expr * avga) / avg[0];
+ expg = (expg * avga) / avg[1];
+ expb = (expb * avga) / avg[2];
+/*
+ keep the resulting exposures below this value.
+ too long exposure drives the ccd into saturation.
+ we may fix this by relying on the fact that
+ we get a striped scan without shading, by means of
+ statistical calculation
+*/
+ avge = (expr + expg + expb) / 3;
+
+ /* don't overflow max exposure */
+ if (avge > 3000)
+ {
+ expr = (expr * 2000) / avge;
+ expg = (expg * 2000) / avge;
+ expb = (expb * 2000) / avge;
+ }
+ if (avge < 50)
+ {
+ expr = (expr * 50) / avge;
+ expg = (expg * 50) / avge;
+ expb = (expb * 50) / avge;
+ }
+
+ }
+
+ RIE (gl843_stop_action (dev));
+
+ turn++;
+
+ }
+ while (!acceptable && turn < 100);
+
+ DBG(DBG_info, "%s: acceptable exposure: %d,%d,%d\n", __func__, expr, expg, expb);
+
+ sensor.exposure = calib_sensor.exposure;
+
+ gl843_slow_back_home (dev, SANE_TRUE);
+
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return status;
+}
+
+
+
+/**
+ * average dark pixels of a 8 bits scan of a given channel
+ */
+static int
+dark_average_channel (uint8_t * data, unsigned int pixels, unsigned int lines,
+ unsigned int channels, unsigned int black, int channel)
+{
+ unsigned int i, j, k, count;
+ unsigned int avg[3];
+ uint8_t val;
+
+ /* computes average values on black margin */
+ for (k = 0; k < channels; k++)
+ {
+ avg[k] = 0;
+ count = 0;
+ // FIXME: start with the second line because the black pixels often have noise on the first
+ // line; the cause is probably incorrectly cleaned up previous scan
+ for (i = 1; i < lines; i++)
+ {
+ for (j = 0; j < black; j++)
+ {
+ val = data[i * channels * pixels + j*channels + k];
+ avg[k] += val;
+ count++;
+ }
+ }
+ if (count)
+ avg[k] /= count;
+ DBG(DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
+ }
+ DBG(DBG_info, "%s: average = %d\n", __func__, avg[channel]);
+ return avg[channel];
+}
+
+/** @brief calibrate AFE offset
+ * Iterate doing scans at target dpi until AFE offset if correct. One
+ * color line is scanned at a time. Scanning head doesn't move.
+ * @param dev device to calibrate
+ */
+static SANE_Status
+gl843_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ unsigned int channels, bpp;
+ int pass, total_size, i, resolution, lines;
+ int topavg[3], bottomavg[3], avg[3];
+ int top[3], bottom[3], black_pixels, pixels, factor, dpihw;
+
+ DBGSTART;
+
+ /* offset calibration is always done in color mode */
+ channels = 3;
+ lines = 8;
+ bpp = 8;
+
+ /* compute divider factor to compute final pixels number */
+ dpihw = sanei_genesys_compute_dpihw_calibration(dev, sensor, dev->settings.xres);
+ factor = sensor.optical_res / dpihw;
+ resolution = dpihw;
+
+ const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution,
+ dev->settings.scan_method);
+
+ int target_pixels = calib_sensor.sensor_pixels / factor;
+ int start_pixel = 0;
+ black_pixels = calib_sensor.black_pixels / factor;
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY &&
+ dev->model->model_id == MODEL_CANON_CANOSCAN_8600F &&
+ dev->settings.xres == 4800)
+ {
+ start_pixel = SANE_UNFIX(dev->model->x_offset_ta);
+ start_pixel /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
+ start_pixel = (start_pixel * calib_sensor.optical_res) / MM_PER_INCH;
+
+ target_pixels = SANE_UNFIX(dev->model->x_size_ta);
+ target_pixels /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
+ target_pixels = (target_pixels * calib_sensor.optical_res) / MM_PER_INCH;
+ }
+
+ int flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ flags |= SCAN_FLAG_USE_XPA;
+ }
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = start_pixel;
+ session.params.starty = 0;
+ session.params.pixels = target_pixels;
+ session.params.lines = lines;
+ session.params.depth = bpp;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ session.params.color_filter = ColorFilter::RED;
+ session.params.flags = flags;
+ gl843_compute_session(dev, session, calib_sensor);
+ pixels = session.output_pixels;
+
+ DBG(DBG_io, "%s: dpihw =%d\n", __func__, dpihw);
+ DBG(DBG_io, "%s: factor =%d\n", __func__, factor);
+ DBG(DBG_io, "%s: resolution =%d\n", __func__, resolution);
+ DBG(DBG_io, "%s: pixels =%d\n", __func__, pixels);
+ DBG(DBG_io, "%s: black_pixels=%d\n", __func__, black_pixels);
+ status = gl843_init_scan_regs(dev, calib_sensor, &regs, session);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+ sanei_genesys_set_motor_power(regs, false);
+
+ /* allocate memory for scans */
+ total_size = dev->read_bytes_left;
+
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
+
+ /* init gain and offset */
+ for (i = 0; i < 3; i++)
+ {
+ bottom[i] = 10;
+ dev->frontend.set_offset(i, bottom[i]);
+ dev->frontend.set_gain(i, 0);
+ }
+ RIE(gl843_set_fe(dev, calib_sensor, AFE_SET));
+
+ /* scan with obttom AFE settings */
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE(gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size));
+ RIE(gl843_stop_action_no_move(dev, &regs));
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char fn[40];
+ snprintf(fn, 40, "gl843_bottom_offset_%03d_%03d_%03d.pnm",
+ bottom[0], bottom[1], bottom[2]);
+ sanei_genesys_write_pnm_file(fn, first_line.data(), bpp, channels, pixels, lines);
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ bottomavg[i] = dark_average_channel(first_line.data(), pixels, lines, channels, black_pixels, i);
+ DBG(DBG_io2, "%s: bottom avg %d=%d\n", __func__, i, bottomavg[i]);
+ }
+
+ /* now top value */
+ for (i = 0; i < 3; i++)
+ {
+ top[i] = 255;
+ dev->frontend.set_offset(i, top[i]);
+ }
+ RIE(gl843_set_fe(dev, calib_sensor, AFE_SET));
+
+ /* scan with top AFE values */
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size));
+ RIE(gl843_stop_action_no_move(dev, &regs));
+
+ for (i = 0; i < 3; i++)
+ {
+ topavg[i] = dark_average_channel(second_line.data(), pixels, lines, channels, black_pixels, i);
+ DBG(DBG_io2, "%s: top avg %d=%d\n", __func__, i, topavg[i]);
+ }
+
+ pass = 0;
+
+ std::vector<uint8_t> debug_image;
+ size_t debug_image_lines = 0;
+ std::string debug_image_info;
+
+ /* loop until acceptable level */
+ while ((pass < 32)
+ && ((top[0] - bottom[0] > 1)
+ || (top[1] - bottom[1] > 1) || (top[2] - bottom[2] > 1)))
+ {
+ pass++;
+
+ /* settings for new scan */
+ for (i = 0; i < 3; i++)
+ {
+ if (top[i] - bottom[i] > 1)
+ {
+ dev->frontend.set_offset(i, (top[i] + bottom[i]) / 2);
+ }
+ }
+ RIE(gl843_set_fe(dev, calib_sensor, AFE_SET));
+
+ /* scan with no move */
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size));
+ RIE(gl843_stop_action_no_move(dev, &regs));
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char title[100];
+ snprintf(title, 100, "lines: %d pixels_per_line: %d offsets[0..2]: %d %d %d\n",
+ lines, pixels,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
+ debug_image_info += title;
+ std::copy(second_line.begin(), second_line.end(), std::back_inserter(debug_image));
+ debug_image_lines += lines;
+ }
+
+ for (i = 0; i < 3; i++)
+ {
+ avg[i] = dark_average_channel(second_line.data(), pixels, lines, channels, black_pixels, i);
+ DBG(DBG_info, "%s: avg[%d]=%d offset=%d\n", __func__, i, avg[i],
+ dev->frontend.get_offset(i));
+ }
+
+ /* compute new boundaries */
+ for (i = 0; i < 3; i++)
+ {
+ if (topavg[i] >= avg[i])
+ {
+ topavg[i] = avg[i];
+ top[i] = dev->frontend.get_offset(i);
+ }
+ else
+ {
+ bottomavg[i] = avg[i];
+ bottom[i] = dev->frontend.get_offset(i);
+ }
+ }
+ }
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ sanei_genesys_write_file("gl843_offset_all_desc.txt",
+ (uint8_t*) debug_image_info.data(), debug_image_info.size());
+ sanei_genesys_write_pnm_file("gl843_offset_all.pnm",
+ debug_image.data(), bpp, channels, pixels, debug_image_lines);
+ }
+
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+
+/* alternative coarse gain calibration
+ this on uses the settings from offset_calibration and
+ uses only one scanline
+ */
+/*
+ with offset and coarse calibration we only want to get our input range into
+ a reasonable shape. the fine calibration of the upper and lower bounds will
+ be done with shading.
+ */
+static SANE_Status
+gl843_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
+{
+ int pixels, factor, dpihw;
+ int total_size;
+ int i, j, channels;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int max[3];
+ float coeff;
+ int val, lines;
+ int resolution;
+ int bpp;
+
+ DBG(DBG_proc, "%s: dpi = %d\n", __func__, dpi);
+ dpihw=sanei_genesys_compute_dpihw_calibration(dev, sensor, dpi);
+ factor=sensor.optical_res/dpihw;
+
+ /* coarse gain calibration is always done in color mode */
+ channels = 3;
+
+ /* follow CKSEL */
+ if (dev->model->ccd_type == CCD_KVSS080)
+ {
+ if(dev->settings.xres<sensor.optical_res)
+ {
+ coeff=0.9;
+ }
+ else
+ {
+ coeff=1.0;
+ }
+ }
+ else
+ {
+ coeff=1.0;
+ }
+ resolution=dpihw;
+ lines=10;
+ bpp=8;
+ int target_pixels = sensor.sensor_pixels / factor;
+
+ int flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ if (dev->settings.scan_method == ScanMethod::TRANSPARENCY)
+ {
+ flags |= SCAN_FLAG_USE_XPA;
+ }
+
+ const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution,
+ dev->settings.scan_method);
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = 0;
+ session.params.starty = 0;
+ session.params.pixels = target_pixels;
+ session.params.lines = lines;
+ session.params.depth = bpp;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = flags;
+ gl843_compute_session(dev, session, calib_sensor);
+ pixels = session.output_pixels;
+
+ try {
+ status = gl843_init_scan_regs(dev, calib_sensor, &regs, session);
+ } catch (...) {
+ try {
+ sanei_genesys_set_motor_power(regs, false);
+ } catch (...) {}
+ throw;
+ }
+
+ sanei_genesys_set_motor_power(regs, false);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+
+ total_size = dev->read_bytes_left;
+
+ std::vector<uint8_t> line(total_size);
+
+ RIE(gl843_set_fe(dev, calib_sensor, AFE_SET));
+ RIE(gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, line.data(), total_size));
+ RIE(gl843_stop_action_no_move(dev, &regs));
+
+ if (DBG_LEVEL >= DBG_data)
+ sanei_genesys_write_pnm_file("gl843_gain.pnm", line.data(), bpp, channels, pixels, lines);
+
+ /* average value on each channel */
+ for (j = 0; j < channels; j++)
+ {
+ max[j] = 0;
+ // FIXME: start from the second line because the first line often has artifacts. Probably
+ // caused by unclean cleanup of previous scans
+ for (i = pixels/4 + pixels; i < (pixels*3/4) + pixels; i++)
+ {
+ if(bpp==16)
+ {
+ if (dev->model->is_cis)
+ val =
+ line[i * 2 + j * 2 * pixels + 1] * 256 +
+ line[i * 2 + j * 2 * pixels];
+ else
+ val =
+ line[i * 2 * channels + 2 * j + 1] * 256 +
+ line[i * 2 * channels + 2 * j];
+ }
+ else
+ {
+ if (dev->model->is_cis)
+ val = line[i + j * pixels];
+ else
+ val = line[i * channels + j];
+ }
+
+ max[j] += val;
+ }
+ max[j] = max[j] / (pixels/2);
+
+ /* the flow of data through the frontend ADC is as follows (see e.g. VM8192 datasheet)
+ input
+ -> apply offset (o = i + 260mV * (DAC[7:0]-127.5)/127.5) ->
+ -> apply gain (o = i * 208/(283-PGA[7:0])
+ -> ADC
+
+ Here we have some input data that was acquired with zero gain (PGA==0).
+ We want to compute gain such that the output would approach full ADC range (controlled by
+ gain_white_ref).
+
+ We want to solve the following for {PGA}:
+
+ {input} * 208 / (283 - 0) = {output}
+ {input} * 208 / (283 - {PGA}) = {target output}
+
+ The solution is the following equation:
+
+ {PGA} = 283 * (1 - {output} / {target output})
+ */
+ float gain = ((float) max[j] / (calib_sensor.gain_white_ref*coeff));
+ int code = 283 * (1 - gain);
+ if (code > 255)
+ code = 255;
+ else if (code < 0)
+ code = 0;
+ dev->frontend.set_gain(j, code);
+
+ DBG(DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__, j, max[j], gain,
+ code);
+ }
+
+ if (dev->model->is_cis) {
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ if (gain0 > dev->frontend.get_gain(1)) {
+ gain0 = dev->frontend.get_gain(1);
+ }
+ if (gain0 > dev->frontend.get_gain(2)) {
+ gain0 = dev->frontend.get_gain(2);
+ }
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
+ }
+
+ if (channels == 1) {
+ dev->frontend.set_gain(0, dev->frontend.get_gain(1));
+ dev->frontend.set_gain(2, dev->frontend.get_gain(1));
+ }
+
+ RIE (gl843_stop_action (dev));
+
+ status=gl843_slow_back_home (dev, SANE_TRUE);
+
+ DBGCOMPLETED;
+ return status;
+}
+
+/*
+ * wait for lamp warmup by scanning the same line until difference
+ * between 2 scans is below a threshold
+ */
+static SANE_Status
+gl843_init_regs_for_warmup (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg,
+ int *channels, int *total_size)
+{
+ int num_pixels;
+ SANE_Status status = SANE_STATUS_GOOD;
+ int dpihw;
+ int resolution;
+ int factor;
+
+ DBGSTART;
+ if (dev == NULL || reg == NULL || channels == NULL || total_size == NULL)
+ return SANE_STATUS_INVAL;
+
+ /* setup scan */
+ *channels=3;
+ resolution=600;
+ dpihw=sanei_genesys_compute_dpihw_calibration(dev, sensor, resolution);
+ resolution=dpihw;
+
+ const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution,
+ dev->settings.scan_method);
+ factor = calib_sensor.optical_res/dpihw;
+ num_pixels = calib_sensor.sensor_pixels/(factor*2);
+ *total_size = num_pixels * 3 * 1;
+
+ *reg = dev->reg;
+
+ ScanSession session;
+ session.params.xres = resolution;
+ session.params.yres = resolution;
+ session.params.startx = num_pixels/2;
+ session.params.starty = 0;
+ session.params.pixels = num_pixels;
+ session.params.lines = 1;
+ session.params.depth = 8;
+ session.params.channels = *channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ session.params.color_filter = dev->settings.color_filter;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+ gl843_compute_session(dev, session, calib_sensor);
+
+ status = gl843_init_scan_regs(dev, calib_sensor, reg, session);
+
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ sanei_genesys_set_motor_power(*reg, false);
+ RIE(dev->model->cmd_set->bulk_write_register(dev, *reg));
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/**
+ * set up GPIO/GPOE for idle state
+WRITE GPIO[17-21]= GPIO19
+WRITE GPOE[17-21]= GPOE21 GPOE20 GPOE19 GPOE18
+genesys_write_register(0xa8,0x3e)
+GPIO(0xa8)=0x3e
+ */
+static SANE_Status
+gl843_init_gpio (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ int idx;
+
+ DBGSTART;
+
+ RIE (sanei_genesys_write_register (dev, REG6E, dev->gpo.enable[0]));
+ RIE (sanei_genesys_write_register (dev, REG6F, dev->gpo.enable[1]));
+ RIE (sanei_genesys_write_register (dev, REG6C, dev->gpo.value[0]));
+ RIE (sanei_genesys_write_register (dev, REG6D, dev->gpo.value[1]));
+
+ idx=0;
+ while(dev->model->gpo_type != gpios[idx].gpo_type && gpios[idx].gpo_type!=0)
+ {
+ idx++;
+ }
+ if (gpios[idx].gpo_type!=0)
+ {
+ RIE (sanei_genesys_write_register (dev, REGA6, gpios[idx].ra6));
+ RIE (sanei_genesys_write_register (dev, REGA7, gpios[idx].ra7));
+ RIE (sanei_genesys_write_register (dev, REGA8, gpios[idx].ra8));
+ RIE (sanei_genesys_write_register (dev, REGA9, gpios[idx].ra9));
+ }
+ else
+ {
+ status=SANE_STATUS_INVAL;
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/* *
+ * initialize ASIC from power on condition
+ */
+static SANE_Status
+gl843_boot (Genesys_Device * dev, SANE_Bool cold)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+
+ DBGSTART;
+
+ if(cold)
+ {
+ RIE (sanei_genesys_write_register (dev, 0x0e, 0x01));
+ RIE (sanei_genesys_write_register (dev, 0x0e, 0x00));
+ }
+
+ if(dev->usb_mode == 1)
+ {
+ val = 0x14;
+ }
+ else
+ {
+ val = 0x11;
+ }
+ RIE (sanei_genesys_write_0x8c (dev, 0x0f, val));
+
+ /* test CHKVER */
+ RIE (sanei_genesys_read_register (dev, REG40, &val));
+ if (val & REG40_CHKVER)
+ {
+ RIE (sanei_genesys_read_register (dev, 0x00, &val));
+ DBG(DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
+ }
+
+ /* Set default values for registers */
+ gl843_init_registers (dev);
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ // turns on vref control for maximum current of the motor driver
+ RIE(sanei_genesys_write_register (dev, REG6B, 0x72));
+ }
+ else
+ {
+ RIE(sanei_genesys_write_register (dev, REG6B, 0x02));
+ }
+
+ /* Write initial registers */
+ RIE (dev->model->cmd_set->bulk_write_register(dev, dev->reg));
+
+ // Enable DRAM by setting a rising edge on bit 3 of reg 0x0b
+ val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
+ val = (val | REG0B_ENBDRAM);
+ RIE (sanei_genesys_write_register (dev, REG0B, val));
+ dev->reg.find_reg(0x0b).value = val;
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ RIE (sanei_genesys_write_0x8c (dev, 0x10, 0xc8));
+ }
+ else
+ {
+ RIE (sanei_genesys_write_0x8c (dev, 0x10, 0xb4));
+ }
+
+ /* CLKSET */
+ int clock_freq = REG0B_48MHZ;
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ clock_freq = REG0B_60MHZ;
+
+ val = (dev->reg.find_reg(0x0b).value & ~REG0B_CLKSET) | clock_freq;
+
+ RIE (sanei_genesys_write_register (dev, REG0B, val));
+ dev->reg.find_reg(0x0b).value = val;
+
+ /* prevent further writings by bulk write register */
+ dev->reg.remove_reg(0x0b);
+
+ if (dev->model->model_id != MODEL_CANON_CANOSCAN_8600F)
+ {
+ // set up end access
+ // FIXME: this is overwritten in gl843_init_gpio
+ sanei_genesys_write_register(dev, REGA7, 0x04);
+ sanei_genesys_write_register(dev, REGA9, 0x00);
+ }
+
+ /* set RAM read address */
+ RIE (sanei_genesys_write_register (dev, REG29, 0x00));
+ RIE (sanei_genesys_write_register (dev, REG2A, 0x00));
+ RIE (sanei_genesys_write_register (dev, REG2B, 0x00));
+
+ /* setup gpio */
+ RIE (gl843_init_gpio (dev));
+
+ gl843_feed (dev, 300);
+ sanei_genesys_sleep_ms(100);
+
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+}
+
+/* *
+ * initialize backend and ASIC : registers, motor tables, and gamma tables
+ * then ensure scanner's head is at home
+ */
+static SANE_Status
+gl843_init (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG_INIT ();
+ DBGSTART;
+
+ status=sanei_genesys_asic_init(dev, 0);
+
+ DBGCOMPLETED;
+ return status;
+}
+
+static SANE_Status
+gl843_update_hardware_sensors (Genesys_Scanner * s)
+{
+ /* do what is needed to get a new set of events, but try to not lose
+ any of them.
+ */
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint8_t val;
+
+ RIE (sanei_genesys_read_register (s->dev, REG6D, &val));
+
+ switch (s->dev->model->gpo_type)
+ {
+ case GPO_KVSS080:
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x04) == 0);
+ break;
+ case GPO_G4050:
+ 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;
+ case GPO_CS4400F:
+ case GPO_CS8400F:
+ default:
+ break;
+ }
+
+ return status;
+}
+
+/** @brief move sensor to transparency adaptor
+ * Move sensor to the calibration of the transparency adapator (XPA).
+ * @param dev device to use
+ */
+static SANE_Status
+gl843_move_to_ta (Genesys_Device * dev)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ float resolution;
+ unsigned int feed;
+
+ DBGSTART;
+
+ resolution=sanei_genesys_get_lowest_ydpi(dev);
+ feed = 16*(SANE_UNFIX (dev->model->y_offset_calib_ta) * resolution) / MM_PER_INCH;
+ status = gl843_feed (dev, feed);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to move to XPA calibration area\n", __func__);
+ return status;
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/** @brief search for a full width black or white strip.
+ * This function searches for a black or white stripe across the scanning area.
+ * When searching backward, the searched area must completely be of the desired
+ * color since this area will be used for calibration which scans forward.
+ * @param dev scanner device
+ * @param forward SANE_TRUE if searching forward, SANE_FALSE if searching backward
+ * @param black SANE_TRUE if searching for a black strip, SANE_FALSE for a white strip
+ * @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
+ */
+static SANE_Status
+gl843_search_strip (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ SANE_Bool forward, SANE_Bool black)
+{
+ unsigned int pixels, lines, channels;
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
+ size_t size;
+ int steps, depth, dpi;
+ unsigned int pass, count, found, x, y;
+ GenesysRegister *r;
+
+ DBG(DBG_proc, "%s %s %s\n", __func__, black ? "black" : "white", forward ? "forward" : "reverse");
+
+ gl843_set_fe(dev, sensor, AFE_SET);
+ status = gl843_stop_action (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* set up for a gray scan at lowest dpi */
+ dpi = sanei_genesys_get_lowest_dpi(dev);
+ channels = 1;
+
+ const auto& calib_sensor = sanei_genesys_find_sensor(dev, dpi, dev->settings.scan_method);
+
+ /* 10 MM */
+ /* lines = (10 * dpi) / MM_PER_INCH; */
+ /* shading calibation is done with dev->motor.base_ydpi */
+ lines = (dev->model->shading_lines * dpi) / dev->motor.base_ydpi;
+ depth = 8;
+ pixels = (calib_sensor.sensor_pixels * dpi) / calib_sensor.optical_res;
+
+ dev->scanhead_position_in_steps = 0;
+
+ local_reg = dev->reg;
+
+ ScanSession session;
+ session.params.xres = dpi;
+ session.params.yres = dpi;
+ session.params.startx = 0;
+ session.params.starty = 0;
+ session.params.pixels = pixels;
+ session.params.lines = lines;
+ session.params.depth = depth;
+ session.params.channels = channels;
+ session.params.scan_method = dev->settings.scan_method;
+ session.params.scan_mode = ScanColorMode::GRAY;
+ session.params.color_filter = ColorFilter::RED;
+ session.params.flags = SCAN_FLAG_DISABLE_SHADING | SCAN_FLAG_DISABLE_SHADING;
+ gl843_compute_session(dev, session, calib_sensor);
+
+ status = gl843_init_scan_regs(dev, calib_sensor, &local_reg, session);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ size = dev->read_bytes_left;
+ std::vector<uint8_t> data(size);
+
+ /* set up for reverse or forward */
+ r = sanei_genesys_get_address(&local_reg, REG02);
+ if (forward)
+ r->value &= ~REG02_MTRREV;
+ else
+ r->value |= REG02_MTRREV;
+
+
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* waits for valid data */
+ do
+ sanei_genesys_test_buffer_empty (dev, &steps);
+ while (steps);
+
+ /* now we're on target, we can read data */
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = gl843_stop_action (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: gl843_stop_action failed\n", __func__);
+ return status;
+ }
+
+ pass = 0;
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char fn[40];
+ snprintf(fn, 40, "gl843_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(fn, data.data(), depth, channels, pixels, lines);
+ }
+
+ /* loop until strip is found or maximum pass number done */
+ found = 0;
+ while (pass < 20 && !found)
+ {
+ status =
+ dev->model->cmd_set->bulk_write_register(dev, local_reg);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ /* now start scan */
+ status = gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ /* waits for valid data */
+ do
+ sanei_genesys_test_buffer_empty (dev, &steps);
+ while (steps);
+
+ /* now we're on target, we can read data */
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = gl843_stop_action (dev);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: gl843_stop_action failed\n", __func__);
+ return status;
+ }
+
+ if (DBG_LEVEL >= DBG_data)
+ {
+ char fn[40];
+ snprintf(fn, 40, "gl843_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(fn, data.data(), depth, channels, pixels, lines);
+ }
+
+ /* search data to find black strip */
+ /* when searching forward, we only need one line of the searched color since we
+ * will scan forward. But when doing backward search, we need all the area of the
+ * same color */
+ if (forward)
+ {
+ for (y = 0; y < lines && !found; y++)
+ {
+ count = 0;
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * pixels + x] > 90)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+
+ /* at end of line, if count >= 3%, line is not fully of the desired color
+ * so we must go to next line of the buffer */
+ /* count*100/pixels < 3 */
+ if ((count * 100) / pixels < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found forward during pass %d at line %d\n", __func__,
+ pass, y);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
+ }
+ }
+ }
+ else /* since calibration scans are done forward, we need the whole area
+ to be of the required color when searching backward */
+ {
+ count = 0;
+ for (y = 0; y < lines; y++)
+ {
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * pixels + x] > 90)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+ }
+
+ /* at end of area, if count >= 3%, area is not fully of the desired color
+ * so we must go to next buffer */
+ if ((count * 100) / (pixels * lines) < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found backward during pass %d \n", __func__, pass);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
+ }
+ }
+ pass++;
+ }
+ if (found)
+ {
+ status = SANE_STATUS_GOOD;
+ DBG(DBG_info, "%s: %s strip found\n", __func__, black ? "black" : "white");
+ }
+ else
+ {
+ status = SANE_STATUS_UNSUPPORTED;
+ DBG(DBG_info, "%s: %s strip not found\n", __func__, black ? "black" : "white");
+ }
+
+ DBG(DBG_proc, "%s: completed\n", __func__);
+ return status;
+}
+
+/**
+ * Send shading calibration data. The buffer is considered to always hold values
+ * for all the channels.
+ */
+static SANE_Status
+gl843_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ uint32_t final_size, length, i;
+ uint8_t *buffer;
+ int count,offset;
+ unsigned int cksel;
+ GenesysRegister *r;
+ uint16_t dpiset, strpixel, endpixel, startx, factor;
+
+ DBGSTART;
+
+ offset=0;
+ length=size;
+ r = sanei_genesys_get_address(&dev->reg, REG01);
+ if(r->value & REG01_SHDAREA)
+ {
+ /* recompute STRPIXEL used shading calibration so we can
+ * compute offset within data for SHDAREA case */
+ r = sanei_genesys_get_address(&dev->reg, REG18);
+ cksel= (r->value & REG18_CKSEL)+1;
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&strpixel);
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&dpiset);
+ factor=sensor.optical_res/sanei_genesys_compute_dpihw(dev, sensor, dpiset);
+
+ /* start coordinate in optical dpi coordinates */
+ startx = (sensor.dummy_pixel / cksel) / factor;
+
+ /* current scan coordinates */
+ sanei_genesys_get_double(&dev->reg,REG_STRPIXEL,&strpixel);
+ sanei_genesys_get_double(&dev->reg,REG_ENDPIXEL,&endpixel);
+
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ int optical_res = sensor.optical_res / dev->current_setup.ccd_size_divisor;
+ int dpiset_real = dpiset / dev->current_setup.ccd_size_divisor;
+ int half_ccd_factor = optical_res /
+ sanei_genesys_compute_dpihw_calibration(dev, sensor, dpiset_real);
+ strpixel /= half_ccd_factor;
+ endpixel /= half_ccd_factor;
+ }
+
+ /* 16 bit words, 2 words per color, 3 color channels */
+ offset=(strpixel-startx)*2*2*3;
+ length=(endpixel-strpixel)*2*2*3;
+ DBG(DBG_info, "%s: STRPIXEL=%d, ENDPIXEL=%d, startx=%d\n", __func__, strpixel, endpixel,
+ startx);
+ }
+
+ /* 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);
+
+ /* copy regular shading data to the expected layout */
+ buffer = final_data.data();
+ count = 0;
+
+ /* loop over calibration data */
+ for (i = 0; i < length; i++)
+ {
+ buffer[count] = data[offset+i];
+ count++;
+ if ((count % (256*2)) == (252*2))
+ {
+ count += 4*2;
+ }
+ }
+
+ /* send data */
+ status = sanei_genesys_set_buffer_address (dev, 0);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to set buffer address: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
+
+ status = dev->model->cmd_set->bulk_write_data (dev, 0x3c, final_data.data(), count);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to send shading table: %s\n", __func__, sane_strstatus(status));
+ }
+
+ DBGCOMPLETED;
+ return status;
+}
+
+
+/** the gl843 command set */
+static Genesys_Command_Set gl843_cmd_set = {
+ "gl843-generic", /* the name of this set */
+
+ [](Genesys_Device* dev) -> bool { (void) dev; return true; },
+
+ gl843_init,
+ gl843_init_regs_for_warmup,
+ gl843_init_regs_for_coarse_calibration,
+ gl843_init_regs_for_shading,
+ gl843_init_regs_for_scan,
+
+ gl843_get_filter_bit,
+ gl843_get_lineart_bit,
+ gl843_get_bitset_bit,
+ gl843_get_gain4_bit,
+ gl843_get_fast_feed_bit,
+ gl843_test_buffer_empty_bit,
+ gl843_test_motor_flag_bit,
+
+ gl843_set_fe,
+ gl843_set_powersaving,
+ gl843_save_power,
+
+ gl843_begin_scan,
+ gl843_end_scan,
+
+ gl843_send_gamma_table,
+
+ gl843_search_start_position,
+
+ gl843_offset_calibration,
+ gl843_coarse_gain_calibration,
+ gl843_led_calibration,
+
+ NULL,
+ gl843_slow_back_home,
+ NULL,
+
+ sanei_genesys_bulk_write_register,
+ sanei_genesys_bulk_write_data,
+ sanei_genesys_bulk_read_data,
+
+ gl843_update_hardware_sensors,
+
+ gl843_load_document,
+ gl843_detect_document_end,
+ gl843_eject_document,
+ gl843_search_strip,
+
+ sanei_genesys_is_compatible_calibration,
+ gl843_move_to_ta,
+ gl843_send_shading_data,
+ gl843_calculate_current_setup,
+ gl843_boot
+};
+
+SANE_Status
+sanei_gl843_init_cmd_set (Genesys_Device * dev)
+{
+ dev->model->cmd_set = &gl843_cmd_set;
+ return SANE_STATUS_GOOD;
+}
diff --git a/backend/genesys_gl843.h b/backend/genesys_gl843.h
index 4be46cc..7651cc9 100644
--- a/backend/genesys_gl843.h
+++ b/backend/genesys_gl843.h
@@ -43,39 +43,6 @@
#include "genesys.h"
-#ifdef UNIT_TESTING
-SANE_Status gl843_send_slope_table (Genesys_Device * dev, int table_nr, uint16_t * slope_table, int steps);
-SANE_Status gl843_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int scan_mode,
- int color_filter,
- unsigned int flags);
-SANE_Status gl843_start_action (Genesys_Device * dev);
-SANE_Status gl843_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool start_motor);
-SANE_Status gl843_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
-SANE_Status gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-SANE_Status gl843_feed (Genesys_Device * dev, unsigned int steps);
-SANE_Status gl843_init (Genesys_Device * dev);
-SANE_Status gl843_boot (Genesys_Device * dev, SANE_Bool cold);
-SANE_Status gl843_send_shading_data (Genesys_Device * dev, uint8_t * data, int size);
-SANE_Status gl843_bulk_write_register (Genesys_Device * dev, Genesys_Register_Set * reg, size_t elems);
-SANE_Status gl843_xpa_lamp_on (Genesys_Device * dev);
-SANE_Status gl843_xpa_motor_on (Genesys_Device * dev);
-SANE_Status gl843_xpa_motor_off (Genesys_Device * dev);
-SANE_Status gl843_move_to_ta (Genesys_Device * dev);
-#endif
-
-#define DBGSTART DBG (DBG_proc, "%s start\n", __func__);
-#define DBGCOMPLETED DBG (DBG_proc, "%s completed\n", __func__);
-
#define REG01 0x01
#define REG01_CISSET 0x80
#define REG01_DOGENB 0x40
@@ -415,154 +382,7 @@ SANE_Status gl843_move_to_ta (Genesys_Device * dev);
#define SCAN_FLAG_DISABLE_LAMP 0x040
#define SCAN_FLAG_DYNAMIC_LINEART 0x080
-/**
- * writable scanner registers */
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
- reg_0x0b,
- reg_0x0c,
- reg_0x0f,
- reg_0x10,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
- reg_0x28,
- reg_0x2c,
- reg_0x2d,
- reg_0x2e,
- reg_0x2f,
- reg_0x30,
- reg_0x31,
- reg_0x32,
- reg_0x33,
- reg_0x34,
- reg_0x35,
- reg_0x36,
- reg_0x37,
- reg_0x38,
- reg_0x39,
- reg_0x3a,
- reg_0x3b,
- reg_0x3c,
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
- reg_0x51,
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
- reg_0x5d,
- reg_0x5e,
- reg_0x5f,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x70,
- reg_0x71,
- reg_0x72,
- reg_0x73,
- reg_0x74,
- reg_0x75,
- reg_0x76,
- reg_0x77,
- reg_0x78,
- reg_0x79,
- reg_0x7a,
- reg_0x7b,
- reg_0x7c,
- reg_0x7d,
- reg_0x7e,
- reg_0x7f,
- reg_0x80,
- reg_0x81,
- reg_0x82,
- reg_0x83,
- reg_0x84,
- reg_0x85,
- reg_0x86,
- reg_0x87,
- reg_0x88,
- reg_0x89,
- reg_0x8a,
- reg_0x8b,
- reg_0x8c,
- reg_0x8d,
- reg_0x8e,
- reg_0x8f,
- reg_0x90,
- reg_0x91,
- reg_0x92,
- reg_0x93,
- reg_0x94,
- reg_0x95,
- reg_0x96,
- reg_0x97,
- reg_0x98,
- reg_0x99,
- reg_0x9a,
- reg_0x9b,
- reg_0x9c,
- reg_0x9d,
- reg_0x9e,
- reg_0xa0,
- reg_0xa1,
- reg_0xa2,
- reg_0xa3,
- reg_0xa4,
- reg_0xa5,
- reg_0xaa,
- reg_0xab,
- reg_0xac,
- reg_0xad,
- reg_0xae,
- reg_0xaf,
- GENESYS_GL843_MAX_REGS
-};
-
-#define SETREG(adr,val) {dev->reg[reg_##adr].address=adr;dev->reg[reg_##adr].value=val;}
+#define SETREG(adr,val) { dev->reg.init_reg(adr, val); }
typedef struct
{
@@ -590,84 +410,15 @@ static Gpio_layout gpios[]={
{
GPO_CS8400F, 0x00, 0x03, 0x00, 0x02
},
+ {
+ GPO_CS8600F, 0x00, 0xff, 0x00, 0x00,
+ },
/* end marker */
{
0, 0, 0, 0, 0
},
};
-/** @brief structure for sensor settings
- * this structure describes the sensor settings to use for a given
- * exposure.
- */
-typedef struct {
- int sensor_type; /**> sensor id */
- int dpi; /**> maximum dpi for which data are valid */
- int exposure; /**> exposure */
- int ck1map; /**> CK1MAP */
- int ck3map; /**> CK2MAP */
- int ck4map; /**> CK3MAP */
- int segcnt; /**> SEGCNT */
- int tg0cnt; /**> TG0CNT */
- int expdummy; /**> exposure dummy */
- int expr; /**> initial red exposure */
- int expg; /**> initial green exposure */
- int expb; /**> initial blue exposure */
- uint8_t reg0c; /**> register 0x0c value */
- uint8_t reg70; /**> register 0x70 value */
- uint8_t reg71; /**> register 0x71 value */
- uint8_t reg9e; /**> register 0x9e value */
- uint8_t regaa; /**> either undocumented or mapping to somewhere else */
- uint8_t regs_0x10_0x1d[14];
- uint8_t regs_0x52_0x5e[13];
-} Sensor_Profile;
-
-/**
- * database of sensor profiles
- */
-static Sensor_Profile xpa_sensors[]={
- {CCD_G4050 , 600, 15624, 0x001c7f, 0x03ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x00, 0x02, 0x00, 0x00,
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x33, 0x4c, 0x01, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
- {0x0e, 0x11, 0x02, 0x05, 0x08, 0x0b, 0x6b, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x6f},
- },
-};
-static Sensor_Profile sensors[]={
- /* 0c 70 71 9e aa*/
- {CCD_KVSS080, 600, 8000, 0x000000, 0x00ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x01, 0x03, 0x00, 0x00,
- /* 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d */
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x1c, 0x00, 0x2a, 0x2c, 0x00, 0x20, 0x04} ,
- /* 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e */
- {0x0c, 0x0f, 0x00, 0x03, 0x06, 0x09, 0x6b, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x23},
- },
-
- {CCD_G4050 , 600, 8016, 0x0001ff, 0x03ffff, 0x03ffff, 5168, 0, 0x2a, 0, 0, 0, 0x00, 0x00, 0x02, 0x00, 0x00,
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x33, 0x0c, 0x00, 0x2a, 0x30, 0x00, 0x00, 0x08} ,
- {0x0b, 0x0e, 0x11, 0x02, 0x05, 0x08, 0x63, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
- },
-
- {CCD_G4050 , 1200, 56064, 0x0fffff, 0x0001ff, 0x0001ff, 5168, 0, 0x2a, 0, 0, 0, 0x20, 0x08, 0x0c, 0xc0, 0x05,
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0x00, 0x08} ,
- {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
- },
-
- {CCD_G4050 , 2400, 56064, 0x0fffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x20, 0x08, 0x0a, 0xc0, 0x05,
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0xc0, 0x08} ,
- {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
- },
-
- {CCD_G4050 , 4800, 42752, 0x0fffff, 0x000000, 0x000000, 5168, 0, 0x2a, 0, 0, 0, 0x21, 0x08, 0x0a, 0xc0, 0x07,
- {0x2c, 0x09, 0x22, 0xb8, 0x10, 0xf0, 0x3b, 0x0c, 0x10, 0x2a, 0x38, 0x10, 0xc1, 0x08} ,
- {0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x1b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x63},
- },
- {CCD_CS4400F, 600, 11640, 0xf838, 0xfc00, 0x92a4, 5168, 0, 0x2a, 0x9c40, 0x9c40, 0x9c40, 0x00, 0x00, 0x02, 0x2d, 0x00,
- {0x9c, 0x40, 0x9c, 0x40, 0x9c, 0x40, 0x13, 0x0a, 0x10, 0x2a, 0x30, 0x00, 0x00, 0x6b},
- {0x0a, 0x0d, 0x00, 0x03, 0x06, 0x08, 0x5b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f},
- },
- {CCD_CS8400F, 600, 7200, 0x0e3f, 0x0000, 0x1b6db, 5168, 0, 0x2a, 0x0, 0x0, 0x0, 0x00, 0x01, 0x02, 0x00, 0x00,
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x0c, 0x13, 0x2a, 0x30, 0x00, 0x00, 0x84},
- {0x0d, 0x10, 0x01, 0x04, 0x07, 0x0a, 0x6b, 0x00, 0x40, 0x00, 0x00, 0x00, 0x85},
- }
-};
static uint32_t kvss080[]={44444, 34188, 32520, 29630, 26666, 24242, 22222, 19048, 16666, 15686, 14814, 14034, 12402, 11110, 8888, 7618, 6666, 5926, 5228, 4678, 4172, 3682, 3336, 3074, 2866, 2702, 2566, 2450, 2352, 2266, 2188, 2118, 2056, 2002, 1950, 1904, 1860, 1820, 1784, 1748, 1716, 1684, 1656, 1628, 1600, 1576, 1552, 1528, 1506, 1486, 1466, 1446, 1428, 1410, 1394, 1376, 1360, 1346, 1330, 1316, 1302, 1288, 1276, 1264, 1250, 1238, 1228, 1216, 1206, 1194, 1184, 1174, 1164, 1154, 1146, 1136, 1128, 1120, 1110, 1102, 1094, 1088, 1080, 1072, 1064, 1058, 1050, 1044, 1038, 1030, 1024, 1018, 1012, 1006, 1000, 994, 988, 984, 978, 972, 968, 962, 958, 952, 948, 942, 938, 934, 928, 924, 920, 916, 912, 908, 904, 900, 896, 892, 888, 884, 882, 878, 874, 870, 868, 864, 860, 858, 854, 850, 848, 844, 842, 838, 836, 832, 830, 826, 824, 822, 820, 816, 814, 812, 808, 806, 804, 802, 800, 796, 794, 792, 790, 788, 786, 784, 782, 778, 776, 774, 772, 770, 768, 766, 764, 762, 760, 758, 756, 754, 752, 750, 750, 748, 746, 744, 742, 740, 738, 736, 734, 734, 732, 730, 728, 726, 724, 724, 722, 720, 718, 716, 716, 714, 712, 710, 710, 708, 706, 704, 704, 702, 700, 698, 698, 696, 694, 694, 692, 690, 690, 688, 686, 686, 684, 682, 682, 680, 678, 678, 676, 674, 674, 672, 672, 670, 668, 668, 666, 666, 664, 662, 662, 660, 660, 658, 656, 656, 654, 654, 652, 652, 650, 650, 648, 646, 646, 644, 644, 642, 642, 640, 640, 638, 638, 636, 636, 636, 634, 634, 632, 632, 630, 630, 628, 628, 626, 626, 624, 624, 624, 622, 622, 620, 620, 618, 618, 618, 616, 616, 614, 614, 612, 612, 612, 610, 610, 608, 608, 608, 606, 606, 606, 604, 604, 602, 602, 602, 600, 600, 600, 598, 598, 596, 596, 596, 594, 594, 594, 592, 592, 592, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 590, 590, 590, 588, 588, 588, 586, 586, 586, 584, 584, 584, 582, 582, 582, 580, 580, 580, 578, 578, 578, 576, 576, 576, 576, 574, 574, 574, 572, 572, 572, 570, 570, 570, 568, 568, 568, 568, 566, 566, 566, 564, 564, 564, 562, 562, 562, 562, 560, 560, 560, 558, 558, 558, 558, 556, 556, 556, 554, 554, 554, 552, 552, 552, 552, 550, 550, 550, 548, 548, 548, 548, 546, 546, 546, 546, 544, 544, 544, 542, 542, 542, 542, 540, 540, 540, 538, 538, 538, 538, 536, 536, 536, 536, 534, 534, 534, 534, 532, 532, 532, 530, 530, 530, 530, 528, 528, 528, 528, 526, 526, 526, 526, 524, 524, 524, 524, 522, 522, 522, 522, 520, 520, 520, 520, 518, 518, 518, 516, 516, 516, 516, 514, 514, 514, 514, 514, 512, 512, 512, 512, 510, 510, 510, 510, 508, 508, 508, 508, 506, 506, 506, 506, 504, 504, 504, 504, 502, 502, 502, 502, 500, 500, 500, 500, 0};
static uint32_t g4050_fast[]={7842,5898,4384,4258,4152,4052,3956,3864,3786,3714,3632,3564,3498,3444,3384,3324,3276,3228,3174,3128,3086,3044,3002,2968,2930,2892,2860,2824,2794,2760,2732,2704,2676,2650,2618,2594,2568,2548,2524,2500,2478,2454,2436,2414,2392,2376,2354,2338,2318,2302,2282,2266,2252,2232,2218,2202,2188,2174,2160,2142,2128,2116,2102,2088,2076,2062,2054,2040,2028,2020,2014,2008,2004,2002,2002,2002,1946,1882,1826,1770,1716,1662,1612,1568,1526,1488,1454,1422,1390,1362,1336,1310,1288,1264,1242,1222,1204,1184,1166,1150,1134,1118,1104,1090,1076,1064,1050,1038,1026,1016,1004,994,984,972,964,954,944,936,928,920,910,902,896,888,880,874,866,860,854,848,840,834,828,822,816,812,806,800,796,790,784,780,776,770,766,760,756,752,748,744,740,736,732,728,724,720,716,712,708,704,702,698,694,690,688,684,682,678,674,672,668,666,662,660,656,654,650,648,646,644,640,638,636,632,630,628,624,622,620,618,616,614,610,608,606,604,602,600,598,596,594,592,590,588,586,584,582,580,578,576,574,572,570,568,566,564,564,562,560,558,556,554,552,552,550,548,546,546,544,542,540,538,538,536,534,532,532,530,528,528,526,524,522,522,520,518,518,516,514,514,512,512,510,508,508,506,504,504,502,502,500,498,498,496,496,494,494,492,490,490,488,488,486,486,484,484,482,480,480,478,478,476,476,474,474,472,472,470,470,468,468,468,466,466,464,464,462,462,460,460,458,458,456,456,456,454,454,452,452,450,450,450,448,448,446,446,444,444,444,442,442,440,440,440,438,438,438,436,436,434,434,434,432,432,432,430,430,428,428,428,426,426,426,424,424,424,422,422,422,420,420,420,418,418,418,416,416,416,414,414,414,412,412,412,410,410,410,408,408,408,406,406,406,404,404,404,404,402,402,402,400,400,400,400,398,398,398,396,396,396,396,394,394,394,392,392,392,392,390,390,390,388,388,388,388,386,386,386,386,384,384,384,384,382,382,382,382,380,380,380,380,378,378,378,378,376,376,376,376,376,374,374,374,374,374,372,372,372,372,372,370,370,370,370,370,368,368,368,368,368,366,366,366,366,366,364,364,364,364,364,364,362,362,362,362,362,360,360,360,360,360,360,358,358,358,358,358,358,356,356,356,356,356,356,354,354,354,354,354,352,352,352,352,352,352,350,350,350,350,350,350,350,348,348,348,348,348,348,346,346,346,346,346,346,344,344,344,344,344,344,344,342,342,342,342,342,342,340,340,340,340,340,340,340,338,338,338,338,338,338,338,336,336,336,336,336,336,336,334,334,334,334,334,334,334,332,332,332,332,332,332,332,332,330,330,330,330,330,330,330,328,328,328,328,328,328,328,328,326,326,326,326,326,326,326,324,324,324,324,324,324,324,324,322,322,322,322,322,322,322,322,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320,320, 0};
@@ -676,12 +427,35 @@ static uint32_t g4050_max[]={42752,42752,42752,42752,42752,42752,42752,42752, 41
static uint32_t g4050_xpa[]={9422,5978,4736,4028,3560,3220,2914,2756,2588,2448,2328,2224,2132,2052,1978,1914,1854,1800,1752,1706,1664,1626,1588,1554,1522,1492,1464,1438,1412,1388,1366,1344,1324,1304,1284,1268,1250,1232,1218,1202,1188,1172,1160,1146,1134,1120,1110,1098,1086,1076,1066,1056,1046,1036,1026,1018,1008,1000,992,984,976,968,960,952,946,938,932,924,918,912,906,898,892,888,882,876,870,864,860,854,848,844,838,834,828,824,820,814,810,806,802,798,794,790,786,782,778,774,770,766,762,758,754,752,748,744,740,738,734,730,728,724,722,718,716,712,710,706,704,700,698,696,692,690,686,684,682,678,676,674,672,668,666,664,662,660,656,654,652,650,648,646,644,642,638,636,634,632,630,628,626,624,622,620,618,616,614,612,612,610,608,606,604,602,600,598,596,594,594,592,590,588,586,584,584,582,580,578,576,576,574,572,570,570,568,566,564,564,562,560,560,558,556,554,554,552,550,550,548,546,546,544,542,542,540,540,538,536,536,534,532,532,530,530,528,526,526,524,524,522,522,520,518,518,516,516,514,514,512,512,510,508,508,506,506,504,504,502,502,500,500,498,498,496,496,494,494,492,492,492,490,490,488,488,486,486,484,484,482,482,480,480,480,478,478,476,476,474,474,474,472,472,470,470,468,468,468,466,466,464,464,464,462,462,462,460,460,458,458,458,456,456,454,454,454,452,452,452,450,450,450,448,448,446,446,446,444,444,444,442,442,442,440,440,440,438,438,438,436,436,436,434,434,434,432,432,432,430,430,430,430,428,428,428,426,426,426,424,424,424,424,422,422,422,420,420,420,418,418,418,418,416,416,416,414,414,414,414,412,412,412,412,410,410,410,408,408,408,408,406,406,406,406,404,404,404,404,402,402,402,402,400,400,400,400,398,398,398,398,396,396,396,396,394,394,394,394,392,392,392,392,392,390,390,390,390,388,388,388,388,386,386,386,386,386,384,384,384,384,384,382,382,382,382,380,380,380,380,380,378,378,378,378,378,376,376,376,376,376,374,374,374,374,374,372,372,372,372,372,370,370,370,370,370,368,368,368,368,368,366,366,366,366,366,364,364,364,364,364,364,362,362,362,362,362,360,360,360,360,360,360,358,358,358,358,358,358,356,356,356,356,356,354,354,354,354,354,354,352,352,352,352,352,352,350,350,350,350,350,350,350,348,348,348,348,348,348,346,346,346,346,346,346,344,344,344,344,344,344,344,342,342,342,342,342,342,340,340,340,340,340,340,340,338,338,338,338,338,338,338,336,336,336,336,336,336,336,334,334,334,334,334,334,334,332,332,332,332,332,332,332,330,330,330,330,330,330,330,330,328,328,328,328,328,328,328,326,326,326,326,326,326,326,326,324,324,324,324,324,324,324,324,322,322,322,322,322,322,322,322,320,320,320,320,320,320,320,320,318,318,318,318,318,318,318,318,318,316,316,316,316,316,316,316,316,314,314,314,314,314,314,314,314,314,312,312,312,312,312,312,312,312,312,310,310,310,310,310,310,310,310,310,308,308,308,308,308,308,308,308,308,306,306,306,306,306,306,306,306,306,306,304,304,304,304,304,304,304,304,304,302,302,302,302,302,302,302,302,302,302,300,300,300,300,300,300,300,300,300,300,298,298,298,298,298,298,298,298,298,298,298,296,296,296,296,296,296,296,296,296,296,294,294,294,294,294,294,294,294,294,294,294,292,292,292,292,292,292,292,292,292,292,292,290,290,290,290,290,290,290,290,290,290,290,288,288,288,288,288,288,288,288,288,288,288,288,286,286,286,286,286,286,286,286,286,286,286,286,284,284,284,284,284,284,284,284,284,284,284,284,282,282,282,282,282,282,282,282,282,282,282,282,280,280,280,280,280,280,280,280,280,280,280,280,280,278,278,278,278,278,278,278,278,278,278,278,278,278,276,276,276,276,276,276,276,276,276,276,276,276,276,274,274,274,274,274,274,274,274,274,274,274,274,274,274,272,272,272,272,272,272,272,272,272,272,272,272,272,272,270,270,270,270,270,270,270,270,270,270,270,270,270,270,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,258,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0};
static uint32_t cs4400f_fast[]={49152, 49152, 31144, 23652, 19538, 16822, 14908, 13442, 12288, 11356, 10590, 9922, 9362, 8886, 8456, 8064, 7728, 7418, 7148, 6882, 6664, 6446, 6252, 6060, 5890, 5740, 5586, 5450, 5322, 5198, 5080, 4968, 4868, 4766, 4674, 4584, 4500, 4418, 4338, 4262, 4194, 4122, 4058, 3996, 3932, 3874, 3816, 3766, 3712, 3662, 3610, 3566, 3518, 3474, 3430, 3388, 3350, 3310, 3272, 3236, 3200, 3164, 3130, 3096, 3062, 3032, 3000, 2972, 2942, 2914, 2884, 2858, 2832, 2806, 2780, 2756, 2732, 2708, 2686, 2662, 2640, 2618, 2596, 2576, 2554, 2536, 2516, 2496, 2478, 2458, 2440, 2422, 2404, 2388, 2370, 2354, 2338, 2320, 2306, 2290, 2276, 2258, 2244, 2230, 2216, 2202, 2188, 2174, 2162, 2148, 2134, 2122, 2108, 2096, 2084, 2072, 2060, 2048, 2036, 2026, 2014, 2002, 1992, 1982, 1970, 1960, 1950, 1940, 1928, 1920, 1908, 1900, 1890, 1880, 1872, 1862, 1852, 1844, 1834, 1826, 1818, 1808, 1800, 1792, 1784, 1776, 1768, 1760, 1752, 1742, 1736, 1728, 1720, 1712, 1704, 1698, 1690, 1684, 1676, 1670, 1662, 1656, 1648, 1642, 1634, 1628, 1622, 1616, 1608, 1602, 1596, 1590, 1584, 1578, 1572, 1566, 1560, 1554, 1548, 1542, 1536, 1532, 1526, 1520, 1514, 1508, 1504, 1498, 1492, 1488, 1482, 1478, 1472, 1466, 1462, 1456, 1452, 1446, 1442, 1438, 1432, 1428, 1424, 1418, 1414, 1410, 1404, 1400, 1396, 1390, 1386, 1382, 1378, 1374, 1370, 1364, 1360, 1356, 1352, 1348, 1344, 1340, 1336, 1332, 1328, 1324, 1320, 1316, 1312, 1308, 1304, 1302, 1298, 1294, 1290, 1286, 1282, 1278, 1276, 1272, 1268, 1264, 1262, 1258, 1254, 1250, 1248, 1244, 1240, 1238, 1234, 1230, 1228, 1224, 1222, 1218, 1214, 1212, 1208, 1206, 1202, 1200, 1196, 1194, 1190, 1186, 1184, 1182, 1178, 1176, 1172, 1170, 1166, 1164, 1162, 1158, 1156, 1152, 1150, 1148, 1144, 1142, 1138, 1136, 1134, 1130, 1128, 1126, 1122, 1120, 1118, 1116, 1112, 1110, 1108, 1106, 1102, 1100, 1098, 1096, 1092, 1090, 1088, 1086, 1082, 1080, 1078, 1076, 1074, 1072, 1068, 1066, 1064, 1062, 1060, 1058, 1056, 1054, 1052, 1048, 1046, 1044, 1042, 1040, 1038, 1036, 1034, 1032, 1030, 1028, 1026, 1024, 1022, 1020, 1018, 1016, 1014, 1012, 1010, 1008, 1006, 1004, 1002, 1000, 998, 996, 994, 992, 990, 988, 986, 984, 982, 980, 978, 976, 974, 972, 972, 970, 968, 966, 964, 962, 960, 958, 956, 956, 954, 952, 950, 948, 946, 944, 944, 942, 940, 938, 936, 934, 934, 932, 930, 928, 926, 926, 924, 922, 920, 918, 918, 916, 914, 912, 912, 910, 908, 906, 904, 904, 902, 900, 898, 898, 896, 894, 892, 892, 890, 888, 888, 886, 884, 882, 882, 880, 878, 878, 876, 874, 874, 872, 870, 868, 868, 866, 864, 864, 862, 860, 860, 858, 856, 856, 854, 852, 852, 850, 848, 848, 846, 846, 844, 842, 842, 840, 838, 838, 836, 834, 834, 832, 832, 830, 828, 828, 826, 826, 824, 822, 822, 820, 820, 818, 816, 816, 814, 814, 812, 812, 810, 808, 808, 806, 806, 804, 802, 802, 800, 800, 798, 798, 796, 796, 794, 792, 792, 790, 790, 788, 788, 786, 786, 784, 784, 782, 782, 780, 780, 778, 778, 776, 774, 774, 772, 772, 770, 770, 768, 768, 766, 766, 764, 764, 762, 762, 760, 760, 758, 758, 758, 756, 756, 754, 754, 752, 752, 750, 750, 748, 748, 746, 746, 744, 744, 742, 742, 740, 740, 738, 738, 738, 736, 736, 734, 734, 732, 732, 730, 730, 730, 728, 728, 726, 726, 724, 724, 722, 722, 722, 720, 720, 718, 718, 718, 716, 716, 714, 714, 712, 712, 712, 710, 710, 708, 708, 708, 706, 706, 704, 704, 702, 702, 702, 700, 700, 698, 698, 698, 696, 696, 694, 694, 694, 692, 692, 692, 690, 690, 688, 688, 688, 686, 686, 684, 684, 684, 682, 682, 682, 680, 680, 680, 678, 678, 676, 676, 676, 674, 674, 674, 672, 672, 670, 670, 670, 668, 668, 668, 666, 666, 666, 664, 664, 664, 662, 662, 660, 660, 660, 658, 658, 658, 656, 656, 656, 654, 654, 654, 652, 652, 652, 650, 650, 650, 648, 648, 648, 646, 646, 646, 644, 644, 644, 642, 642, 642, 640, 640, 640, 640, 638, 638, 638, 636, 636, 636, 634, 634, 634, 632, 632, 632, 630, 630, 630, 630, 628, 628, 628, 626, 626, 626, 624, 624, 624, 624, 622, 622, 622, 620, 620, 620, 618, 618, 618, 618, 616, 616, 616, 614, 614, 614, 614, 612, 612, 612, 610, 610, 610, 610, 608, 608, 608, 606, 606, 606, 606, 604, 604, 604, 604, 602, 602, 602, 600, 600, 600, 600, 598, 598, 598, 598, 596, 596, 596, 594, 594, 594, 594, 592, 592, 592, 592, 590, 590, 590, 590, 588, 588, 588, 586, 586, 586, 586, 584, 584, 584, 584, 582, 582, 582, 582, 580, 580, 580, 580, 578, 578, 578, 578, 576, 576, 576, 576, 574, 574, 574, 574, 574, 572, 572, 572, 572, 570, 570, 570, 570, 568, 568, 568, 568, 566, 566, 566, 566, 564, 564, 564, 564, 564, 562, 562, 562, 562, 560, 560, 560, 560, 558, 558, 558, 558, 558, 556, 556, 556, 556, 554, 554, 554, 554, 554, 552, 552, 552, 552, 550, 550, 550, 550, 550, 548, 548, 548, 548, 546, 546, 546, 546, 546, 544, 544, 544, 544, 544, 542, 542, 542, 542, 540, 540, 540, 540, 540, 538, 538, 538, 538, 538, 536, 536, 536, 536, 536, 534, 534, 534, 534, 534, 532, 532, 532, 532, 532, 530, 530, 530, 530, 530, 528, 528, 528, 528, 528, 526, 526, 526, 526, 526, 524, 524, 524, 524, 524, 522, 522, 522, 522, 522, 520, 520, 520, 520, 520, 520, 518, 518, 518, 518, 518, 516, 516, 516, 516, 516, 514, 514, 514, 514, 514, 514, 512, 512, 512, 512, 512, 510, 510, 510, 510, 510, 510, 508, 508, 508, 508, 508, 506, 506, 506, 506, 506, 506, 504, 504, 504, 504, 504, 502, 502, 502, 502, 502, 502, 500, 500, 500, 500, 500, 500, 498, 498, 498, 498, 498, 498, 496, 496, 496, 496, 496, 496, 494, 494, 494, 494, 494, 494, 492, 492, 492, 492, 492, 492, 490, 490, 490, 490, 490, 490, 488, 488, 488, 488, 488, 488, 486, 486, 486, 486, 486, 486, 484, 484, 484, 484, 484, 484, 484, 0, 0, 0, 0, 0};
static uint32_t cs8400f_fast[]={8743, 8205, 7017, 6201, 4938, 4016, 3371, 2966, 2682, 2469, 2296, 2159, 2041, 1942, 1857, 1782, 1716, 1656, 1602, 1554, 1510, 1470, 1432, 1398, 1366, 1336, 1309, 1282, 1258, 1235, 1213, 1193, 1173, 1154, 1137, 1120, 1104, 1089, 1074, 1060, 1047, 1034, 1022, 1010, 998, 987, 976, 966, 956, 946, 937, 928, 919, 911, 902, 894, 887, 879, 872, 864, 858, 851, 844, 838, 832, 825, 819, 814, 808, 802, 797, 792, 786, 781, 776, 771, 766, 762, 757, 753, 748, 744, 740, 736, 731, 728, 724, 720, 716, 712, 709, 705, 701, 698, 695, 691, 688, 685, 682, 679, 675, 672, 669, 666, 664, 661, 658, 655, 652, 650, 647, 644, 642, 639, 637, 634, 632, 629, 627, 625, 622, 620, 618, 616, 613, 611, 609, 607, 605, 603, 601, 599, 597, 595, 593, 591, 589, 587, 585, 583, 581, 580, 578, 576, 574, 573, 571, 569, 567, 566, 564, 563, 561, 559, 558, 556, 555, 553, 552, 550, 549, 547, 546, 544, 543, 542, 540, 539, 537, 536, 535, 533, 532, 531, 529, 528, 527, 526, 524, 523, 522, 521, 519, 518, 517, 516, 515, 514, 512, 511, 510, 509, 508, 507, 506, 505, 504, 502, 501, 500, 499, 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, 488, 488, 487, 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, 477, 476, 475, 474, 473, 472, 472, 471, 470, 469, 468, 467, 467, 466, 465, 464, 464, 463, 462, 461, 460, 460, 459, 458, 457, 457, 456, 455, 454, 454, 453, 452, 452, 451, 450, 449, 449, 448, 448, 447, 446, 446, 445, 444, 444, 443, 442, 442, 441, 440, 440, 439, 438, 438, 437, 437, 436, 435, 435, 434, 434, 433, 432, 432, 431, 431, 430, 429, 429, 428, 428, 427, 427, 426, 425, 425, 424, 424, 423, 423, 422, 422, 421, 421, 420, 420, 419, 419, 418, 417, 417, 416, 416, 416, 415, 414, 414, 414, 413, 412, 412, 412, 411, 411, 410, 410, 409, 409, 408, 408, 407, 407, 406, 406, 406, 405, 405, 404, 404, 403, 403, 402, 402, 402, 401, 401, 400, 400, 399, 399, 398, 398, 398, 397, 397, 396, 396, 396, 395, 395, 394, 394, 394, 393, 393, 392, 392, 392, 391, 391, 391, 390, 390, 389, 389, 389, 388, 388, 387, 387, 387, 386, 386, 385, 385, 385, 384, 384, 384, 383, 383, 383, 382, 382, 382, 381, 381, 381, 380, 380, 380, 379, 379, 379, 378, 378, 378, 377, 377, 377, 376, 376, 376, 375, 375, 375, 374, 374, 374, 373, 373, 373, 372, 372, 372, 371, 371, 371, 370, 370, 370, 370, 369, 369, 369, 368, 368, 368, 368, 367, 367, 367, 367, 366, 366, 366, 365, 365, 365, 365, 364, 364, 364, 363, 363, 363, 363, 362, 362, 362, 362, 361, 361, 361, 360, 360, 360, 360, 359, 359, 359, 358, 358, 358, 358, 357, 357, 357, 356, 356, 356, 356, 355, 355, 355, 355, 354, 354, 354, 354, 354, 353, 353, 353, 353, 352, 352, 352, 352, 352, 351, 351, 351, 351, 350, 350, 350, 350, 350, 349, 349, 349, 349, 348, 348, 348, 348, 348, 347, 347, 347, 347, 346, 346, 346, 346, 346, 345, 345, 345, 345, 344, 344, 344, 344, 344, 343, 343, 343, 343, 342, 342, 342, 342, 342, 341, 341, 341, 341, 340, 340, 340, 340, 340, 339, 339, 339, 339, 338, 338, 338, 338, 338, 337, 337, 337, 337, 337, 337, 336, 336, 336, 336, 336, 336, 335, 335, 335, 335, 335, 335, 334, 334, 334, 334, 334, 334, 333, 333, 333, 333, 333, 333, 332, 332, 332, 332, 332, 332, 331, 331, 331, 331, 331, 331, 330, 330, 330, 330, 330, 330, 329, 329, 329, 329, 329, 329, 328, 328, 328, 328, 328, 328, 327, 327, 327, 327, 327, 327, 326, 326, 326, 326, 326, 326, 325, 325, 325, 325, 325, 325, 324, 324, 324, 324, 324, 324, 323, 323, 323, 323, 323, 323, 322, 322, 322, 322, 322, 322, 321, 321, 321, 321, 321, 321, 320, 320, 320, 320, 320, 320, 319, 319, 319, 319, 319, 319, 318, 318, 318, 318, 318, 318, 317, 317, 317, 317, 317, 317, 316, 316, 316, 316, 316, 316, 315, 315, 315, 315, 315, 315, 314, 314, 314, 314, 314, 314, 313, 313, 313, 313, 313, 313, 312, 312, 312, 312, 312, 312, 311, 311, 311, 311, 311, 311, 310, 310, 310, 310, 310, 310, 309, 309, 309, 309, 309, 309, 308, 308, 308, 308, 308, 308, 307, 307, 307, 307, 307, 307, 306, 306, 306, 306, 306, 306, 305, 305, 305, 305, 305, 305, 304, 304, 304, 304, 304, 304, 303, 303, 303, 303, 303, 303, 302, 302, 302, 302, 302, 302, 302, 301, 301, 301, 301, 301, 301, 301, 301, 301, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 0, 0, 0, 0, 0 };
+static uint32_t motor_speeds_cs8600f[] = {
+ 54612, 54612, 34604, 26280, 21708, 18688, 16564, 14936, 13652, 12616,
+ 11768, 11024, 10400, 9872, 9392, 8960, 8584, 8240, 7940, 7648,
+ 7404, 7160, 6948, 6732, 6544, 6376, 6208, 6056, 5912, 5776,
+ 5644, 5520, 5408, 5292, 5192, 5092, 5000, 4908, 4820, 4736,
+ 4660, 4580, 4508, 4440, 4368, 4304, 4240, 4184, 4124, 4068,
+ 4012, 3960, 3908, 3860, 3808, 3764, 3720, 3676, 3636, 3592,
+ 3552, 3516, 3476, 3440, 3400, 3368, 3332, 3300, 3268, 3236,
+ 3204, 3176, 3148, 3116, 3088, 3060, 3036, 3008, 2984, 2956,
+ 2932, 2908, 2884, 2860, 2836, 2816, 2796, 2772, 2752, 2732,
+ 2708, 2692, 2672, 2652, 2632, 2616, 2596, 2576, 2560, 2544,
+ 2528, 2508, 2492, 2476, 2460, 2444, 2432, 2416, 2400, 2384,
+ 2372, 2356, 2344, 2328, 2316, 2304, 2288, 2276, 2260, 2252,
+ 2236, 2224, 2212, 2200, 2188, 2176, 2164, 2156, 2144, 2132,
+ 2120, 2108, 2100, 2088, 2080, 2068, 2056, 2048, 2036, 2028,
+ 2020, 2008, 2000, 1988, 1980, 1972, 1964, 1952, 1944, 1936,
+ 1928, 1920, 1912, 1900, 1892, 1884, 1876, 1868, 1860, 1856,
+ 1848, 1840, 1832, 1824, 1816, 1808, 1800, 1796, 1788, 1780,
+ 1772, 1764, 1760, 1752, 1744, 1740, 1732, 1724, 1720, 1712,
+ 1708, 1700, 1692, 1688, 1680, 1676, 1668, 1664, 1656, 1652,
+ 1644, 1640, 1636, 1628, 1624, 1616, 1612, 1608, 1600, 1596,
+ 1592, 1584, 1580, 1576, 1568, 1564, 1560, 1556, 1548, 1544,
+ 1540, 1536, 1528, 1524, 1520, 1516, 1512, 1508, 1500, 0
+};
/**
* database of motor profiles
*/
-/* *INDENT-OFF* */
static Motor_Profile gl843_motors[]={
/* KV-SS080 */
{MOTOR_KVSS080, 8000, 1, kvss080},
@@ -693,8 +467,6 @@ static Motor_Profile gl843_motors[]={
{MOTOR_G4050, 56064, 1, g4050_high},
/* CS8400F */
{MOTOR_CS8400F, 7200, 0, cs8400f_fast},
- {0, 0, 0, NULL},
+ { MOTOR_CS8600F, 0x59d8, 2, motor_speeds_cs8600f }, // FIXME: if the exposure is lower then we'll select another motor
+ { 0, 0, 0, NULL },
};
-/* *INDENT-ON* */
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl846.c b/backend/genesys_gl846.cc
index 0716c17..c5294b8 100644
--- a/backend/genesys_gl846.c
+++ b/backend/genesys_gl846.cc
@@ -46,138 +46,12 @@
*
* This file handles GL846 and GL845 ASICs since they are really close to each other.
*/
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl846
-#include "genesys_gl846.h"
-
-/****************************************************************************
- Low level function
- ****************************************************************************/
-
-/* ------------------------------------------------------------------------ */
-/* Read and write RAM, registers and AFE */
-/* ------------------------------------------------------------------------ */
-
-
-/** @brief read scanned data
- * Read in 0xeff0 maximum sized blocks. This read is done in 2
- * parts if not multple of 512. First read is rounded to a multiple of 512 bytes, last read fetches the
- * remainder. Read addr is always 0x10000000 with the memory layout setup.
- * @param dev device to read data from
- * @param addr address within ASIC memory space, unused but kept for API
- * @param data pointer where to store the read data
- * @param len size to read
- */
-static SANE_Status
-gl846_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size, target, read, done;
- uint8_t outdata[8];
- uint8_t *buffer;
-
- DBG (DBG_io, "gl846_bulk_read_data: requesting %lu bytes at addr=0x%02x\n", (u_long) len, addr);
-
- if (len == 0)
- return SANE_STATUS_GOOD;
+#define DEBUG_DECLARE_ONLY
- target = len;
- buffer = data;
-
- /* loop until computed data size is read */
- while (target)
- {
- if (target > 0xeff0)
- {
- size = 0xeff0;
- }
- else
- {
- size = target;
- }
-
- /* hard coded 0x10000000 addr */
- outdata[0] = 0;
- outdata[1] = 0;
- outdata[2] = 0;
- outdata[3] = 0x10;
-
- /* data size to transfer */
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, 0x00, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s failed while writing command: %s\n",
- __func__, sane_strstatus (status));
- return status;
- }
-
- /* blocks must be multiple of 512 but not last block */
- read = size;
- if (read >= 512)
- {
- read /= 512;
- read *= 512;
- }
-
- DBG (DBG_io2,
- "gl846_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, buffer, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl846_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- done=read;
- DBG (DBG_io2, "gl846_bulk_read_data: %lu bytes of data read\n", (u_long) done);
-
- /* read less than 512 bytes remainder */
- if (read < size)
- {
- read = size - read;
- DBG (DBG_io2,
- "gl846_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, buffer+done, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl846_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- done=read;
- DBG (DBG_io2, "gl846_bulk_read_data: %lu bytes of data read\n", (u_long) done);
- }
-
- DBG (DBG_io2, "%s: read %lu bytes, %lu remaining\n", __func__,
- (u_long) size, (u_long) (target - size));
-
- target -= size;
- buffer += size;
- }
-
- if (DBG_LEVEL >= DBG_data && dev->binary!=NULL)
- {
- fwrite(data, len, 1, dev->binary);
- }
-
- DBGCOMPLETED;
+#include "genesys_gl846.h"
- return SANE_STATUS_GOOD;
-}
+#include <vector>
/****************************************************************************
Mid level functions
@@ -186,7 +60,7 @@ gl846_bulk_read_data (Genesys_Device * dev, uint8_t addr,
static SANE_Bool
gl846_get_fast_feed_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG02);
if (r && (r->value & REG02_FASTFED))
@@ -197,7 +71,7 @@ gl846_get_fast_feed_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl846_get_filter_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_FILTER))
@@ -208,7 +82,7 @@ gl846_get_filter_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl846_get_lineart_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_LINEART))
@@ -219,7 +93,7 @@ gl846_get_lineart_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl846_get_bitset_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_BITSET))
@@ -230,7 +104,7 @@ gl846_get_bitset_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl846_get_gain4_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x06);
if (r && (r->value & REG06_GAIN4))
@@ -260,7 +134,7 @@ gl846_test_motor_flag_bit (SANE_Byte val)
static int
gl846_get_step_multiplier (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
int value = 1;
r = sanei_genesys_get_address (regs, 0x9d);
@@ -329,89 +203,73 @@ static Sensor_Profile *get_sensor_profile(int sensor_type, int dpi)
*/
static int gl846_compute_exposure(Genesys_Device *dev, int xres)
{
- Sensor_Profile *sensor;
-
- sensor=get_sensor_profile(dev->model->ccd_type, xres);
- return sensor->exposure;
+ Sensor_Profile* sensor_profile=get_sensor_profile(dev->model->ccd_type, xres);
+ return sensor_profile->exposure;
}
/** @brief sensor specific settings
*/
-static void
-gl846_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
+static void gl846_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs, int dpi)
{
- Genesys_Register_Set *r;
- Sensor_Profile *sensor;
- int dpihw, i;
+ GenesysRegister *r;
+ int dpihw;
uint16_t exp;
DBGSTART;
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpi);
- for (i = 0x06; i < 0x0e; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- if (r)
- r->value = dev->sensor.regs_0x10_0x1d[i];
+ for (uint16_t addr = 0x16; addr < 0x1e; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
- for (i = 0; i < 9; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- if (r)
- r->value = dev->sensor.regs_0x52_0x5e[i];
+ for (uint16_t addr = 0x52; addr < 0x52 + 9; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
/* set EXPDUMMY and CKxMAP */
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpi);
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, dpihw);
- sanei_genesys_set_reg_from_set(regs,REG_EXPDMY,(uint8_t)((sensor->expdummy) & 0xff));
+ sanei_genesys_set_reg_from_set(regs,REG_EXPDMY,(uint8_t)((sensor_profile->expdummy) & 0xff));
/* if no calibration has been done, set default values for exposures */
- exp=dev->sensor.regs_0x10_0x1d[0]*256+dev->sensor.regs_0x10_0x1d[1];
+ exp = sensor.exposure.red;
if(exp==0)
{
- exp=sensor->expr;
+ exp=sensor_profile->expr;
}
sanei_genesys_set_double(regs,REG_EXPR,exp);
- exp=dev->sensor.regs_0x10_0x1d[2]*256+dev->sensor.regs_0x10_0x1d[3];
+ exp = sensor.exposure.green;
if(exp==0)
{
- exp=sensor->expg;
+ exp=sensor_profile->expg;
}
sanei_genesys_set_double(regs,REG_EXPG,exp);
- exp=dev->sensor.regs_0x10_0x1d[4]*256+dev->sensor.regs_0x10_0x1d[5];
+ exp = sensor.exposure.blue;
if(exp==0)
{
- exp=sensor->expb;
+ exp=sensor_profile->expb;
}
sanei_genesys_set_double(regs,REG_EXPB,exp);
- sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
- sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
- sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
+ sanei_genesys_set_triple(regs,REG_CK1MAP,sensor_profile->ck1map);
+ sanei_genesys_set_triple(regs,REG_CK3MAP,sensor_profile->ck3map);
+ sanei_genesys_set_triple(regs,REG_CK4MAP,sensor_profile->ck4map);
/* order of the sub-segments */
- dev->order=sensor->order;
+ dev->order=sensor_profile->order;
r = sanei_genesys_get_address (regs, 0x17);
- r->value = sensor->r17;
+ r->value = sensor_profile->r17;
DBGCOMPLETED;
}
-/* returns the max register bulk size */
-static int
-gl846_bulk_full_size (void)
-{
- return GENESYS_GL846_MAX_REGS;
-}
-
/** @brief set all registers to default values .
* This function is called only once at the beginning and
* fills register startup values for registers reused across scans.
@@ -424,8 +282,7 @@ gl846_init_registers (Genesys_Device * dev)
{
DBGSTART;
- memset (dev->reg, 0,
- GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg.clear();
SETREG (0x01,0x60);
SETREG (0x02,0x38);
@@ -535,27 +392,28 @@ gl846_init_registers (Genesys_Device * dev)
SETREG (0x9b,0x00);
SETREG (0xf8,0x05);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
/* fine tune upon device description */
- dev->reg[reg_0x05].value &= ~REG05_DPIHW;
- switch (dev->sensor.optical_res)
+ dev->reg.find_reg(0x05).value &= ~REG05_DPIHW;
+ switch (sensor.optical_res)
{
case 600:
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
break;
case 1200:
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
break;
case 2400:
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
break;
case 4800:
- dev->reg[reg_0x05].value |= REG05_DPIHW_4800;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_4800;
break;
}
/* initalize calibration reg */
- memcpy (dev->calib_reg, dev->reg,
- GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->calib_reg = dev->reg;
DBGCOMPLETED;
}
@@ -570,10 +428,9 @@ gl846_init_registers (Genesys_Device * dev)
*/
static SANE_Status
gl846_send_slope_table (Genesys_Device * dev, int table_nr,
- uint16_t * slope_table, int steps)
+ uint16_t * slope_table, int steps)
{
- SANE_Status status;
- uint8_t *table;
+ SANE_Status status = SANE_STATUS_GOOD;
int i;
char msg[10000];
@@ -587,7 +444,7 @@ gl846_send_slope_table (Genesys_Device * dev, int table_nr,
return SANE_STATUS_INVAL;
}
- table = (uint8_t *) malloc (steps * 2);
+ std::vector<uint8_t> table(steps * 2);
for (i = 0; i < steps; i++)
{
table[i * 2] = slope_table[i] & 0xff;
@@ -598,22 +455,20 @@ gl846_send_slope_table (Genesys_Device * dev, int table_nr,
{
sprintf (msg, "write slope %d (%d)=", table_nr, steps);
for (i = 0; i < steps; i++)
- {
- sprintf (msg+strlen(msg), "%d", slope_table[i]);
- }
+ {
+ sprintf (msg+strlen(msg), "%d", slope_table[i]);
+ }
DBG (DBG_io, "%s: %s\n", __func__, msg);
}
/* slope table addresses are fixed */
- status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, 0x10000000 + 0x4000 * table_nr, steps * 2, table);
+ status = sanei_genesys_write_ahb(dev, 0x10000000 + 0x4000 * table_nr, steps * 2, table.data());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: write to AHB failed writing slope table %d (%s)\n",
- __func__, table_nr, sane_strstatus (status));
+ DBG(DBG_error, "%s: write to AHB failed writing slope table %d (%s)\n", __func__, table_nr,
+ sane_strstatus(status));
}
- free (table);
DBGCOMPLETED;
return status;
}
@@ -626,7 +481,6 @@ gl846_set_adi_fe (Genesys_Device * dev, uint8_t set)
{
SANE_Status status = SANE_STATUS_GOOD;
int i;
- uint16_t val;
uint8_t val8;
DBGSTART;
@@ -635,59 +489,53 @@ gl846_set_adi_fe (Genesys_Device * dev, uint8_t set)
status = sanei_genesys_get_status (dev, &val8);
while (val8 & REG41_FEBUSY)
{
- usleep (10000);
+ sanei_genesys_sleep_ms(10);
status = sanei_genesys_get_status (dev, &val8);
};
if (set == AFE_INIT)
{
DBG (DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
-
- /* sets to default values */
- sanei_genesys_init_fe (dev);
+ dev->frontend = dev->frontend_initial;
}
/* write them to analog frontend */
- val = dev->frontend.reg[0];
- status = sanei_genesys_fe_write_data (dev, 0x00, val);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to write reg0: %s\n", __func__,
- sane_strstatus (status));
+ sane_strstatus (status));
return status;
}
- val = dev->frontend.reg[1];
- status = sanei_genesys_fe_write_data (dev, 0x01, val);
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to write reg1: %s\n", __func__,
- sane_strstatus (status));
+ sane_strstatus (status));
return status;
}
for (i = 0; i < 3; i++)
{
- val = dev->frontend.gain[i];
- status = sanei_genesys_fe_write_data (dev, 0x02 + i, val);
+ status = sanei_genesys_fe_write_data(dev, 0x02 + i, dev->frontend.get_gain(i));
if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to write gain %d: %s\n", __func__, i,
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG (DBG_error,
+ "%s: failed to write gain %d: %s\n", __func__, i,
+ sane_strstatus (status));
+ return status;
+ }
}
for (i = 0; i < 3; i++)
{
- val = dev->frontend.offset[i];
- status = sanei_genesys_fe_write_data (dev, 0x05 + i, val);
+ status = sanei_genesys_fe_write_data(dev, 0x05 + i, dev->frontend.get_offset(i));
if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to write offset %d: %s\n", __func__, i,
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG (DBG_error,
+ "%s: failed to write offset %d: %s\n", __func__, i,
+ sane_strstatus (status));
+ return status;
+ }
}
DBGCOMPLETED;
@@ -709,23 +557,23 @@ SANE_Status status=SANE_STATUS_GOOD;
/* Set values of analog frontend */
static SANE_Status
-gl846_set_fe (Genesys_Device * dev, uint8_t set)
+gl846_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
{
- SANE_Status status;
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG(DBG_proc, "gl846_set_fe (%s)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" :
+ DBG(DBG_proc, "%s (%s)\n", __func__, set == AFE_INIT ? "init" : set == AFE_SET ? "set" :
set == AFE_POWER_SAVE ? "powersave" : "huh?");
/* route to specific analog frontend setup */
- switch (dev->reg[reg_0x04].value & REG04_FESET)
+ switch (dev->reg.find_reg(0x04).value & REG04_FESET)
{
case 0x02: /* ADI FE */
status = gl846_set_adi_fe(dev, set);
break;
default:
- DBG(DBG_proc, "gl846_set_fe(): unsupported frontend type %d\n",
- dev->reg[reg_0x04].value & REG04_FESET);
+ DBG(DBG_proc, "%s(): unsupported frontend type %d\n", __func__,
+ dev->reg.find_reg(0x04).value & REG04_FESET);
status = SANE_STATUS_UNSUPPORTED;
}
@@ -738,24 +586,25 @@ gl846_set_fe (Genesys_Device * dev, uint8_t set)
*/
static SANE_Status
gl846_init_motor_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int scan_exposure_time,
- float scan_yres,
- int scan_step_type,
- unsigned int scan_lines,
- unsigned int scan_dummy,
- unsigned int feed_steps,
- int scan_power_mode,
+ float scan_yres,
+ int scan_step_type,
+ unsigned int scan_lines,
+ unsigned int scan_dummy,
+ unsigned int feed_steps,
+ int scan_power_mode,
unsigned int flags)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int use_fast_fed;
unsigned int fast_dpi;
uint16_t scan_table[SLOPE_TABLE_SIZE];
uint16_t fast_table[SLOPE_TABLE_SIZE];
int scan_steps, fast_steps, factor;
unsigned int feedl, dist;
- Genesys_Register_Set *r;
+ GenesysRegister *r;
uint32_t z1, z2;
unsigned int min_restep = 0x20;
uint8_t val;
@@ -763,13 +612,9 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
unsigned int ccdlmt,tgtime;
DBGSTART;
- DBG (DBG_proc, "gl846_init_motor_regs_scan : scan_exposure_time=%d, "
- "scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
- "feed_steps=%d, scan_power_mode=%d, flags=%x\n",
- scan_exposure_time,
- scan_yres,
- scan_step_type,
- scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
+ DBG(DBG_proc, "%s : scan_exposure_time=%d, scan_yres=%g, scan_step_type=%d, scan_lines=%d, "
+ "scan_dummy=%d, feed_steps=%d, scan_power_mode=%d, flags=%x\n", __func__, scan_exposure_time,
+ scan_yres, scan_step_type, scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
/* get step multiplier */
factor = gl846_get_step_multiplier (reg);
@@ -789,7 +634,7 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
/* compute register 02 value */
r = sanei_genesys_get_address (reg, REG02);
r->value = 0x00;
- r->value |= REG02_MTRPWR;
+ sanei_genesys_set_motor_power(*reg, true);
if (use_fast_fed)
r->value |= REG02_FASTFED;
@@ -800,7 +645,7 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
r->value |= REG02_AGOHOME | REG02_NOTHOME;
if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
- ||(scan_yres>=dev->sensor.optical_res))
+ ||(scan_yres>=sensor.optical_res))
{
r->value |= REG02_ACDCDIS;
}
@@ -915,7 +760,7 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
if(dev->model->gpo_type==GPO_IMG101)
{
- if(scan_yres==sanei_genesys_compute_dpihw(dev,scan_yres))
+ if(scan_yres==sanei_genesys_compute_dpihw(dev, sensor,scan_yres))
{
val=1;
}
@@ -935,18 +780,18 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
r->value = min_restep;
sanei_genesys_calculate_zmode2(use_fast_fed,
- scan_exposure_time*ccdlmt*tgtime,
- scan_table,
- scan_steps*factor,
- feedl,
+ scan_exposure_time*ccdlmt*tgtime,
+ scan_table,
+ scan_steps*factor,
+ feedl,
min_restep*factor,
&z1,
&z2);
- DBG (DBG_info, "gl846_init_motor_regs_scan: z1 = %d\n", z1);
+ DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
sanei_genesys_set_triple(reg, REG60, z1 | (scan_step_type << (16+REG60S_STEPSEL)));
- DBG (DBG_info, "gl846_init_motor_regs_scan: z2 = %d\n", z2);
+ DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
sanei_genesys_set_triple(reg, REG63, z2 | (scan_step_type << (16+REG63S_FSTPSEL)));
r = sanei_genesys_get_address (reg, 0x1e);
@@ -999,46 +844,45 @@ gl846_init_motor_regs_scan (Genesys_Device * dev,
*/
static SANE_Status
gl846_init_optical_regs_scan (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- unsigned int exposure_time,
- int used_res,
- unsigned int start,
- unsigned int pixels,
- int channels,
- int depth,
- SANE_Bool half_ccd, int color_filter, int flags)
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg,
+ unsigned int exposure_time,
+ int used_res,
+ unsigned int start,
+ unsigned int pixels,
+ int channels,
+ int depth,
+ SANE_Bool half_ccd, ColorFilter color_filter, int flags)
{
unsigned int words_per_line;
unsigned int startx, endx, used_pixels;
unsigned int dpiset, dpihw,segnb,cksel,factor;
unsigned int bytes;
- Genesys_Register_Set *r;
- SANE_Status status;
- Sensor_Profile *sensor;
+ GenesysRegister *r;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl846_init_optical_regs_scan : exposure_time=%d, "
- "used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
- "half_ccd=%d, flags=%x\n", exposure_time,
- used_res, start, pixels, channels, depth, half_ccd, flags);
+ DBG(DBG_proc, "%s : exposure_time=%d, used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
+ "half_ccd=%d, flags=%x\n", __func__, exposure_time, used_res, start, pixels, channels, depth,
+ half_ccd, flags);
/* resolution is divided according to CKSEL */
r = sanei_genesys_get_address (reg, REG18);
cksel= (r->value & REG18_CKSEL)+1;
- DBG (DBG_io2, "%s: cksel=%d\n", __func__, cksel);
+ DBG(DBG_io2, "%s: cksel=%d\n", __func__, cksel);
/* to manage high resolution device while keeping good
* low resolution scanning speed, we make hardware dpi vary */
- dpihw=sanei_genesys_compute_dpihw(dev, used_res * cksel);
- factor=dev->sensor.optical_res/dpihw;
- DBG (DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, used_res * cksel);
+ factor=sensor.optical_res/dpihw;
+ DBG(DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
/* sensor parameters */
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw);
- gl846_setup_sensor (dev, reg, dpihw);
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, dpihw);
+ gl846_setup_sensor(dev, sensor, reg, dpihw);
dpiset = used_res * cksel;
/* start and end coordinate in optical dpi coordinates */
- startx = start/cksel+dev->sensor.CCD_start_xoffset;
+ startx = start/cksel+sensor.CCD_start_xoffset;
used_pixels=pixels/cksel;
/* end of sensor window */
@@ -1067,19 +911,17 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
* of the sensor crossed by the scan area */
if (dev->model->flags & GENESYS_FLAG_SIS_SENSOR && segnb>1)
{
- dev->dist = sensor->segcnt;
+ dev->dist = sensor_profile->segcnt;
}
/* use a segcnt rounded to next even number */
endx += ((dev->dist+1)&0xfffe)*(segnb-1);
used_pixels=endx-startx;
- status = gl846_set_fe (dev, AFE_SET);
+ status = gl846_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_init_optical_regs_scan: failed to set frontend: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -1100,10 +942,7 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
r = sanei_genesys_get_address (reg, REG03);
r->value &= ~REG03_AVEENB;
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value &= ~REG03_LAMPPWR;
- else
- r->value |= REG03_LAMPPWR;
+ sanei_genesys_set_lamp_power(dev, sensor, *reg, !(flags & OPTICAL_FLAG_DISABLE_LAMP));
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
@@ -1132,17 +971,19 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
if (channels == 1)
{
switch (color_filter)
- {
- case 0:
- r->value |= 0x24; /* red filter */
- break;
- case 2:
- r->value |= 0x2c; /* blue filter */
- break;
- default:
- r->value |= 0x28; /* green filter */
- break;
- }
+ {
+ case ColorFilter::RED:
+ r->value |= 0x24;
+ break;
+ case ColorFilter::BLUE:
+ r->value |= 0x2c;
+ break;
+ case ColorFilter::GREEN:
+ r->value |= 0x28;
+ break;
+ default:
+ break; // should not happen
+ }
}
else
r->value |= 0x20; /* mono */
@@ -1181,16 +1022,16 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
r = sanei_genesys_get_address (reg, 0x87);
r->value &= ~REG87_LEDADD;
if (channels == 1 && (flags & OPTICAL_FLAG_ENABLE_LEDADD))
- {
- r->value |= REG87_LEDADD;
- }
+ {
+ r->value |= REG87_LEDADD;
+ }
/* RGB weighting
r = sanei_genesys_get_address (reg, 0x01);
r->value &= ~REG01_TRUEGRAY;
if (channels == 1 && (flags & OPTICAL_FLAG_ENABLE_LEDADD))
- {
- r->value |= REG01_TRUEGRAY;
- }*/
+ {
+ r->value |= REG01_TRUEGRAY;
+ }*/
}
/* words(16bit) before gamma, conversion to 8 bit or lineart*/
@@ -1233,11 +1074,8 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
words_per_line *= channels;
dev->wpl = words_per_line;
- if(dev->oe_buffer.buffer!=NULL)
- {
- sanei_genesys_buffer_free (&(dev->oe_buffer));
- }
- RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), dev->wpl));
+ dev->oe_buffer.clear();
+ dev->oe_buffer.alloc(dev->wpl);
/* MAXWD is expressed in 4 words unit */
sanei_genesys_set_triple(reg, REG_MAXWD, (words_per_line >> 2));
@@ -1247,7 +1085,7 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
DBG (DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
- r->value = dev->sensor.dummy_pixel;
+ r->value = sensor.dummy_pixel;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -1257,23 +1095,12 @@ gl846_init_optical_regs_scan (Genesys_Device * dev,
*
* this function sets up the scanner to scan in normal or single line mode
*/
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl846_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags)
+static SANE_Status
+gl846_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SetupParams& params)
{
+ params.assert_valid();
+
int used_res;
int start, used_pixels;
int bytes_per_line;
@@ -1293,50 +1120,42 @@ gl846_init_scan_regs (Genesys_Device * dev,
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- SANE_Status status;
-
- DBG (DBG_info,
- "gl846_init_scan_regs settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g/%g\n"
- "Depth/Channels: %u/%u\n"
- "Flags : %x\n\n",
- xres, yres, lines, pixels, startx, starty, depth, channels, flags);
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* we may have 2 domains for ccd: xres below or above half ccd max dpi */
- if (dev->sensor.optical_res < 2 * xres ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1)
{
- half_ccd = SANE_FALSE;
+ half_ccd = SANE_TRUE;
}
else
{
- half_ccd = SANE_TRUE;
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
if (half_ccd)
optical_res /= 2;
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl846_init_scan_regs : stagger=%d lines\n", stagger);
+ DBG(DBG_info, "%s : stagger=%d lines\n", __func__, stagger);
/* used_res */
- if (flags & SCAN_FLAG_USE_OPTICAL_RES)
+ if (params.flags & SCAN_FLAG_USE_OPTICAL_RES)
{
used_res = optical_res;
}
else
{
/* resolution is choosen from a list */
- used_res = xres;
+ used_res = params.xres;
}
/* compute scan parameters values */
@@ -1344,54 +1163,53 @@ gl846_init_scan_regs (Genesys_Device * dev,
/* use detected left margin and fixed value */
/* start */
/* add x coordinates */
- start = startx;
+ start = params.startx;
if (stagger > 0)
start |= 1;
/* compute correct pixels number */
/* pixels */
- used_pixels = (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
/* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
+ if (used_pixels * params.xres < params.pixels * optical_res)
used_pixels++;
- dummy = 3-channels;
+ dummy = 3-params.channels;
/* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
if (dev->model->is_cis)
- slope_dpi = yres * channels;
+ slope_dpi = params.yres * params.channels;
else
- slope_dpi = yres;
+ slope_dpi = params.yres;
slope_dpi = slope_dpi * (1 + dummy);
exposure_time = gl846_compute_exposure (dev, used_res);
scan_step_type = sanei_genesys_compute_step_type(gl846_motors, dev->model->motor_type, exposure_time);
- DBG (DBG_info, "gl846_init_scan_regs : exposure_time=%d pixels\n", exposure_time);
- DBG (DBG_info, "gl846_init_scan_regs : scan_step_type=%d\n", scan_step_type);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : scan_step_type=%d\n", __func__, scan_step_type);
/*** optical parameters ***/
/* in case of dynamic lineart, we use an internal 8 bit gray scan
* to generate 1 lineart data */
- if ((flags & SCAN_FLAG_DYNAMIC_LINEART) && (dev->settings.scan_mode == SCAN_MODE_LINEART))
- {
- depth = 8;
+ if (params.flags & SCAN_FLAG_DYNAMIC_LINEART) {
+ params.depth = 8;
}
/* we enable true gray for cis scanners only, and just when doing
* scan since color calibration is OK for this mode
*/
oflags = 0;
- if(flags & SCAN_FLAG_DISABLE_SHADING)
+ if(params.flags & SCAN_FLAG_DISABLE_SHADING)
oflags |= OPTICAL_FLAG_DISABLE_SHADING;
- if(flags & SCAN_FLAG_DISABLE_GAMMA)
+ if(params.flags & SCAN_FLAG_DISABLE_GAMMA)
oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
- if(flags & SCAN_FLAG_DISABLE_LAMP)
+ if(params.flags & SCAN_FLAG_DISABLE_LAMP)
oflags |= OPTICAL_FLAG_DISABLE_LAMP;
if (dev->model->is_cis && dev->settings.true_gray)
@@ -1399,16 +1217,16 @@ gl846_init_scan_regs (Genesys_Device * dev,
oflags |= OPTICAL_FLAG_ENABLE_LEDADD;
}
- status = gl846_init_optical_regs_scan (dev,
- reg,
- exposure_time,
- used_res,
- start,
- used_pixels,
- channels,
- depth,
- half_ccd,
- color_filter,
+ status = gl846_init_optical_regs_scan (dev, sensor,
+ reg,
+ exposure_time,
+ used_res,
+ start,
+ used_pixels,
+ params.channels,
+ params.depth,
+ half_ccd,
+ params.color_filter,
oflags);
if (status != SANE_STATUS_GOOD)
@@ -1417,30 +1235,30 @@ gl846_init_scan_regs (Genesys_Device * dev,
/*** motor parameters ***/
/* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,flags);
+ max_shift=sanei_genesys_compute_max_shift(dev,params.channels,params.yres,params.flags);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
/* add tl_y to base movement */
- move = starty;
- DBG (DBG_info, "gl846_init_scan_regs: move=%d steps\n", move);
+ move = params.starty;
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
mflags=0;
- if(flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ if(params.flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
mflags |= MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE;
- if(flags & SCAN_FLAG_FEEDING)
+ if(params.flags & SCAN_FLAG_FEEDING)
mflags |= MOTOR_FLAG_FEED;
- status = gl846_init_motor_regs_scan (dev,
- reg,
- exposure_time,
- slope_dpi,
- scan_step_type,
- dev->model->is_cis ? lincnt *
- channels : lincnt, dummy, move,
- scan_power_mode,
- mflags);
+ status = gl846_init_motor_regs_scan (dev, sensor,
+ reg,
+ exposure_time,
+ slope_dpi,
+ scan_step_type,
+ dev->model->is_cis ? lincnt *
+ params.channels : lincnt, dummy, move,
+ scan_power_mode,
+ mflags);
if (status != SANE_STATUS_GOOD)
return status;
@@ -1450,52 +1268,40 @@ gl846_init_scan_regs (Genesys_Device * dev,
/* words_per_line */
bytes_per_line = (used_pixels * used_res) / optical_res;
- bytes_per_line = (bytes_per_line * channels * depth) / 8;
+ bytes_per_line = (bytes_per_line * params.channels * params.depth) / 8;
requested_buffer_size = 8 * bytes_per_line;
- /* we must use a round number of bytes_per_line */
- /* XXX STEF XXX
- if (requested_buffer_size > BULKIN_MAXSIZE)
- requested_buffer_size =
- (BULKIN_MAXSIZE / bytes_per_line) * bytes_per_line;
- */
read_buffer_size =
2 * requested_buffer_size +
- ((max_shift + stagger) * used_pixels * channels * depth) / 8;
-
- RIE (sanei_genesys_buffer_free (&(dev->read_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->read_buffer), read_buffer_size));
+ ((max_shift + stagger) * used_pixels * params.channels * params.depth) / 8;
- RIE (sanei_genesys_buffer_free (&(dev->lines_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->lines_buffer), read_buffer_size));
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->shrink_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->shrink_buffer),
- requested_buffer_size));
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->out_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->out_buffer),
- (8 * dev->settings.pixels * channels *
- depth) / 8));
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc((8 * params.pixels * params.channels * params.depth) / 8);
dev->read_bytes_left = bytes_per_line * lincnt;
- DBG (DBG_info,
- "gl846_init_scan_regs: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
dev->read_active = SANE_TRUE;
-
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
@@ -1503,7 +1309,7 @@ gl846_init_scan_regs (Genesys_Device * dev,
/* scan bytes to send to the frontend */
/* theory :
target_size =
- (dev->settings.pixels * dev->settings.lines * channels * depth) / 8;
+ (params.pixels * params.lines * channels * depth) / 8;
but it suffers from integer overflow so we do the following:
1 bit color images store color data byte-wise, eg byte 0 contains
@@ -1515,36 +1321,29 @@ gl846_init_scan_regs (Genesys_Device * dev,
*/
dev->total_bytes_read = 0;
- if (depth == 1)
+ if (params.depth == 1)
dev->total_bytes_to_read =
- ((dev->settings.pixels * dev->settings.lines) / 8 +
- (((dev->settings.pixels * dev->settings.lines) % 8) ? 1 : 0)) *
- channels;
+ ((params.pixels * params.lines) / 8 +
+ (((params.pixels * params.lines) % 8) ? 1 : 0)) *
+ params.channels;
else
dev->total_bytes_to_read =
- dev->settings.pixels * dev->settings.lines * channels * (depth / 8);
+ params.pixels * params.lines * params.channels * (params.depth / 8);
- DBG (DBG_info, "gl846_init_scan_regs: total bytes to send = %lu\n",
- (u_long) dev->total_bytes_to_read);
+ DBG(DBG_info, "%s: total bytes to send = %lu\n", __func__, (u_long) dev->total_bytes_to_read);
/* END TODO */
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
-static SANE_Status
-gl846_calculate_current_setup (Genesys_Device * dev)
+static void
+gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int depth;
int start;
- float xres; /*dpi */
- float yres; /*dpi */
- float startx; /*optical_res, from dummy_pixel+1 */
- float pixels;
- float lines;
-
int used_res;
int used_pixels;
unsigned int lincnt;
@@ -1558,161 +1357,110 @@ gl846_calculate_current_setup (Genesys_Device * dev)
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- DBG (DBG_info,
- "gl846_calculate_current_setup settings:\n"
- "Resolution: %uDPI\n"
- "Lines : %u\n"
- "PPL : %u\n"
- "Startpos : %.3f/%.3f\n"
- "Scan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == 4) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == 0)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
-
- xres = dev->settings.xres; /*dpi */
- yres = dev->settings.yres; /*dpi */
- startx = start; /*optical_res, from dummy_pixel+1 */
- pixels = dev->settings.pixels;
- lines = dev->settings.lines;
-
- DBG (DBG_info,
- "gl846_calculate_current_setup settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g\n"
- "Depth/Channels: %u/%u\n\n",
- xres, yres, lines, pixels, startx, depth, channels);
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start; // not used
+ params.starty = 0; // not used
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = 0;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* half_ccd */
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if ((dev->sensor.optical_res < 2 * xres) ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
- {
- half_ccd = SANE_FALSE;
- }
- else
- {
- half_ccd = SANE_TRUE;
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1) {
+ half_ccd = SANE_TRUE;
+ } else {
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
/* stagger */
if (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl846_calculate_current_setup: stagger=%d lines\n",
- stagger);
+ DBG(DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
/* resolution is choosen from a fixed list */
- used_res = xres;
+ used_res = params.xres;
/* compute scan parameters values */
/* pixels are allways given at half or full CCD optical resolution */
/* use detected left margin and fixed value */
/* compute correct pixels number */
- used_pixels = (pixels * optical_res) / used_res;
- dummy = 3-channels;
+ used_pixels = (params.pixels * optical_res) / used_res;
+ dummy = 3 - params.channels;
- /* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
- if (dev->model->is_cis)
- slope_dpi = yres * channels;
- else
- slope_dpi = yres;
+ if (dev->model->is_cis) {
+ slope_dpi = params.yres * params.channels;
+ } else {
+ slope_dpi = params.yres;
+ }
slope_dpi = slope_dpi * (1 + dummy);
exposure_time = gl846_compute_exposure (dev, used_res);
- DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
- /* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,0);
+ max_shift = sanei_genesys_compute_max_shift(dev, params.channels, params.yres, 0);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static void
-gl846_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
-
- DBG (DBG_proc, "gl846_set_motor_power\n");
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- | REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- & ~REG02_MTRPWR);
- }
-}
-
-static void
-gl846_set_lamp_power (Genesys_Device __sane_unused__ * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG03,
- sanei_genesys_read_reg_from_set (regs, REG03)
- | REG03_LAMPPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG03,
- sanei_genesys_read_reg_from_set (regs, REG03)
- & ~REG03_LAMPPWR);
- }
}
/*for fast power saving methods only, like disabling certain amplifiers*/
static SANE_Status
gl846_save_power (Genesys_Device * dev, SANE_Bool enable)
{
- DBG (DBG_proc, "gl846_save_power: enable = %d\n", enable);
+ DBG(DBG_proc, "%s: enable = %d\n", __func__, enable);
if (dev == NULL)
return SANE_STATUS_INVAL;
@@ -1723,7 +1471,7 @@ gl846_save_power (Genesys_Device * dev, SANE_Bool enable)
static SANE_Status
gl846_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
{
- DBG (DBG_proc, "gl846_set_powersaving (delay = %d)\n", delay);
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
if (dev == NULL)
return SANE_STATUS_INVAL;
@@ -1737,13 +1485,10 @@ gl846_start_action (Genesys_Device * dev)
return sanei_genesys_write_register (dev, 0x0f, 0x01);
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_stop_action (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val40, val;
unsigned int loop;
@@ -1760,9 +1505,7 @@ gl846_stop_action (Genesys_Device * dev)
status = sanei_genesys_read_register (dev, REG40, &val40);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -1770,52 +1513,48 @@ gl846_stop_action (Genesys_Device * dev)
/* only stop action if needed */
if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG))
{
- DBG (DBG_info, "%s: already stopped\n", __func__);
+ DBG(DBG_info, "%s: already stopped\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
/* ends scan */
- val = sanei_genesys_read_reg_from_set (dev->reg, REG01);
+ val = dev->reg.get8(REG01);
val &= ~REG01_SCAN;
- sanei_genesys_set_reg_from_set (dev->reg, REG01, val);
+ dev->reg.set8(REG01, val);
status = sanei_genesys_write_register (dev, REG01, val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to write register 01: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write register 01: %s\n", __func__, sane_strstatus(status));
return status;
}
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop = 10;
while (loop > 0)
{
status = sanei_genesys_get_status (dev, &val);
if (DBG_LEVEL >= DBG_io)
- {
- sanei_genesys_print_status (val);
- }
+ {
+ sanei_genesys_print_status (val);
+ }
status = sanei_genesys_read_register (dev, REG40, &val40);
if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
- return status;
- }
+ return status;
+ }
/* if scanner is in command mode, we are done */
if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG)
- && !(val & REG41_MOTORENB))
- {
+ && !(val & REG41_MOTORENB))
+ {
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
+ return SANE_STATUS_GOOD;
+ }
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop--;
}
@@ -1824,16 +1563,14 @@ gl846_stop_action (Genesys_Device * dev)
}
/* Send the low-level scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl846_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool start_motor)
+static SANE_Status
+gl846_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SANE_Bool start_motor)
{
- SANE_Status status;
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
- Genesys_Register_Set *r;
+ GenesysRegister *r;
DBGSTART;
@@ -1870,16 +1607,13 @@ gl846_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl846_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
- SANE_Bool check_stop)
+ SANE_Bool check_stop)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl846_end_scan (check_stop = %d)\n", check_stop);
+ DBG(DBG_proc, "%s (check_stop = %d)\n", __func__, check_stop);
if (reg == NULL)
return SANE_STATUS_INVAL;
@@ -1891,12 +1625,10 @@ gl846_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
{
status = gl846_stop_action (dev);
if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl846_end_scan: failed to stop: %s\n",
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
}
DBGCOMPLETED;
@@ -1904,28 +1636,18 @@ gl846_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
}
/* Moves the slider to the home (top) postion slowly */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
-gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
+static SANE_Status
+gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
{
- Genesys_Register_Set local_reg[GENESYS_GL846_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
float resolution;
uint8_t val;
int loop = 0;
- int scan_mode;
-
- DBG (DBG_proc, "gl846_slow_back_home (wait_until_home = %d)\n",
- wait_until_home);
+ ScanColorMode scan_mode;
- if(dev->usb_mode<0)
- {
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
+ DBG(DBG_proc, "%s (wait_until_home = %d)\n", __func__, wait_until_home);
/* post scan gpio : without that HOMSNR is unreliable */
gl846_homsnr_gpio(dev);
@@ -1934,24 +1656,20 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
{
sanei_genesys_print_status (val);
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
/* second is reliable */
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
@@ -1962,38 +1680,43 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* is sensor at home? */
if (val & HOMESNR)
{
- DBG (DBG_info, "%s: already at home, completed\n", __func__);
+ DBG(DBG_info, "%s: already at home, completed\n", __func__);
dev->scanhead_position_in_steps = 0;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
- memcpy (local_reg, dev->reg, GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_ydpi(dev);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
/* TODO add scan_mode to the API */
scan_mode= dev->settings.scan_mode;
- dev->settings.scan_mode=SCAN_MODE_LINEART;
- status = gl846_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 100,
- 30000,
- 100,
- 100,
- 8,
- 1,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ dev->settings.scan_mode = ScanColorMode::LINEART;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 100;
+ params.starty = 30000;
+ params.pixels = 100;
+ params.lines = 100;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_slow_back_home: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -2003,20 +1726,30 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
/* set up for reverse */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address(&local_reg, REG02);
r->value |= REG02_MTRREV;
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL846_MAX_REGS));
-
- status = gl846_start_action (dev);
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl846_start_action(dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl846_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_slow_back_home: failed to start motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl846_stop_action (dev);
/* send original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL846_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
return status;
}
@@ -2026,36 +1759,34 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
if (wait_until_home)
{
while (loop < 300) /* do not wait longer then 30 seconds */
- {
- status = sanei_genesys_get_status (dev, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl846_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
- return status;
- }
-
- if (val & HOMESNR) /* home sensor */
- {
- DBG (DBG_info, "gl846_slow_back_home: reached home position\n");
+ {
+ status = sanei_genesys_get_status (dev, &val);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
+
+ if (val & HOMESNR) /* home sensor */
+ {
+ DBG(DBG_info, "%s: reached home position\n", __func__);
gl846_stop_action (dev);
dev->scanhead_position_in_steps = 0;
- DBGCOMPLETED;
- return SANE_STATUS_GOOD;
- }
- usleep (100000); /* sleep 100 ms */
- ++loop;
- }
+ DBGCOMPLETED;
+ return SANE_STATUS_GOOD;
+ }
+ sanei_genesys_sleep_ms(100);
+ ++loop;
+ }
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl846_stop_action (dev);
- DBG (DBG_error,
- "gl846_slow_back_home: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- DBG (DBG_info, "gl846_slow_back_home: scanhead is still moving\n");
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -2066,64 +1797,66 @@ static SANE_Status
gl846_search_start_position (Genesys_Device * dev)
{
int size;
- SANE_Status status;
- uint8_t *data;
- Genesys_Register_Set local_reg[GENESYS_GL846_MAX_REGS];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
int steps;
int pixels = 600;
int dpi = 300;
- DBG (DBG_proc, "gl846_search_start_position\n");
+ DBG(DBG_proc, "%s\n", __func__);
- memcpy (local_reg, dev->reg,
- GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
/* sets for a 200 lines * 600 pixels */
/* normal scan with no shading */
- status = gl846_init_scan_regs (dev, local_reg, dpi, dpi, 0, 0, /*we should give a small offset here~60 steps */
- 600, dev->model->search_lines, 8, 1, 1, /*green */
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dpi);
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0; /*we should give a small offset here~60 steps */
+ params.pixels = 600;
+ params.lines = dev->model->search_lines;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::GREEN;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_search_start_position: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
/* send to scanner */
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL846_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_search_start_position: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
size = pixels * dev->model->search_lines;
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error,
- "gl846_search_start_position: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
- status = gl846_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2133,49 +1866,39 @@ gl846_search_start_position (Genesys_Device * dev)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("search_position.pnm", data, 8, 1, pixels,
- dev->model->search_lines);
+ sanei_genesys_write_pnm_file("gl846_search_position.pnm", data.data(), 8, 1, pixels,
+ dev->model->search_lines);
- status = gl846_end_scan (dev, local_reg, SANE_TRUE);
+ status = gl846_end_scan (dev, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* update regs to copy ASIC internal state */
- memcpy (dev->reg, local_reg,
- GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg = local_reg;
/*TODO: find out where sanei_genesys_search_reference_point
stores information, and use that correctly*/
status =
- sanei_genesys_search_reference_point (dev, data, 0, dpi, pixels,
- dev->model->search_lines);
+ sanei_genesys_search_reference_point (dev, sensor, data.data(), 0, dpi, pixels,
+ dev->model->search_lines);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- free (data);
return SANE_STATUS_GOOD;
}
@@ -2183,56 +1906,57 @@ gl846_search_start_position (Genesys_Device * dev)
* sets up register for coarse gain calibration
* todo: check it for scanners using it */
static SANE_Status
-gl846_init_regs_for_coarse_calibration (Genesys_Device * dev)
+gl846_init_regs_for_coarse_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t channels;
uint8_t cksel;
- DBG (DBG_proc, "gl846_init_regs_for_coarse_calibration\n");
+ DBG(DBG_proc, "%s\n", __func__);
- cksel = (dev->calib_reg[reg_0x18].value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
+ cksel = (regs.find_reg(0x18).value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
/* set line size */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
- else
+ else {
channels = 1;
+ }
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = sensor.optical_res / cksel;
+ params.lines = 20;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &regs, params);
- status = gl846_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- dev->sensor.optical_res / cksel,
- 20,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_init_register_for_coarse_calibration: Failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "gl846_init_register_for_coarse_calibration: optical sensor res: %d dpi, actual res: %d\n",
- dev->sensor.optical_res / cksel, dev->settings.xres);
+ DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
+ sensor.optical_res / cksel, dev->settings.xres);
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_init_register_for_coarse_calibration: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2244,73 +1968,86 @@ gl846_init_regs_for_coarse_calibration (Genesys_Device * dev)
* @param dev device to work on
* @param steps number of steps to move in base_dpi line count
* */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_feed (Genesys_Device * dev, unsigned int steps)
{
- Genesys_Register_Set local_reg[GENESYS_GL846_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
float resolution;
uint8_t val;
DBGSTART;
- DBG (DBG_io, "%s: steps=%d\n", __func__, steps);
+ DBG(DBG_io, "%s: steps=%d\n", __func__, steps);
/* prepare local registers */
- memcpy (local_reg, dev->reg, GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_ydpi(dev);
- status = gl846_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 0,
- steps,
- 100,
- 3,
- 8,
- 3,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_FEEDING |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = steps;
+ params.pixels = 100;
+ params.lines = 3;
+ params.depth = 8;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_FEEDING |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_feed: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
/* set exposure to zero */
- sanei_genesys_set_triple(local_reg,REG_EXPR,0);
- sanei_genesys_set_triple(local_reg,REG_EXPG,0);
- sanei_genesys_set_triple(local_reg,REG_EXPB,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPR,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPG,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPB,0);
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRMCNT));
/* set up for no scan */
- r = sanei_genesys_get_address (local_reg, REG01);
+ r = sanei_genesys_get_address(&local_reg, REG01);
r->value &= ~REG01_SCAN;
/* send registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL846_MAX_REGS));
-
- status = gl846_start_action (dev);
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl846_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl846_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl846_stop_action (dev);
/* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL846_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
return status;
}
@@ -2332,24 +2069,26 @@ gl846_feed (Genesys_Device * dev, unsigned int steps)
/* init registers for shading calibration */
static SANE_Status
-gl846_init_regs_for_shading (Genesys_Device * dev)
+gl846_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
float move;
DBGSTART;
dev->calib_channels = 3;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
+ regs = dev->reg;
- dev->calib_resolution = sanei_genesys_compute_dpihw(dev,dev->settings.xres);
+ dev->calib_resolution = sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ dev->calib_total_bytes_to_read = 0;
dev->calib_lines = dev->model->shading_lines;
if(dev->calib_resolution==4800)
dev->calib_lines *= 2;
- dev->calib_pixels = (dev->sensor.sensor_pixels*dev->calib_resolution)/dev->sensor.optical_res;
- DBG (DBG_io, "%s: calib_lines = %d\n", __func__, (unsigned int)dev->calib_lines);
- DBG (DBG_io, "%s: calib_pixels = %d\n", __func__, (unsigned int)dev->calib_pixels);
+ dev->calib_pixels = (sensor.sensor_pixels*dev->calib_resolution)/sensor.optical_res;
+ DBG(DBG_io, "%s: calib_lines = %d\n", __func__, (unsigned int)dev->calib_lines);
+ DBG(DBG_io, "%s: calib_pixels = %d\n", __func__, (unsigned int)dev->calib_pixels);
/* this is aworkaround insufficent distance for slope
* motor acceleration TODO special motor slope for shading */
@@ -2359,32 +2098,35 @@ gl846_init_regs_for_shading (Genesys_Device * dev)
move=40;
}
- status = gl846_init_scan_regs (dev,
- dev->calib_reg,
- dev->calib_resolution,
- dev->calib_resolution,
- 0,
- move,
- dev->calib_pixels,
- dev->calib_lines,
- 16,
- dev->calib_channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ SetupParams params;
+ params.xres = dev->calib_resolution;
+ params.yres = dev->calib_resolution;
+ params.startx = 0;
+ params.starty = move;
+ params.pixels = dev->calib_pixels;
+ params.lines = dev->calib_lines;
+ params.depth = 16;
+ params.channels = dev->calib_channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2398,7 +2140,7 @@ gl846_init_regs_for_shading (Genesys_Device * dev)
/** @brief set up registers for the actual scan
*/
static SANE_Status
-gl846_init_regs_for_scan (Genesys_Device * dev)
+gl846_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int flags;
@@ -2407,23 +2149,20 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
int move_dpi;
float start;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_info,
- "gl846_init_regs_for_scan settings:\nResolution: %uDPI\n"
- "Lines : %u\nPPL : %u\nStartpos : %.3f/%.3f\nScan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
@@ -2438,8 +2177,8 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
assumption: steps are expressed at maximum motor resolution
we need:
- SANE_Fixed y_offset;
- SANE_Fixed y_size;
+ SANE_Fixed y_offset;
+ SANE_Fixed y_size;
SANE_Fixed y_offset_calib;
mm_to_steps()=motor dpi / 2.54 / 10=motor dpi / MM_PER_INCH */
@@ -2452,7 +2191,7 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
move += dev->settings.tl_y;
move = (move * move_dpi) / MM_PER_INCH;
move -= dev->scanhead_position_in_steps;
- DBG (DBG_info, "%s: move=%f steps\n",__func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
/* fast move to scan area */
/* we don't move fast the whole distance since it would involve
@@ -2464,24 +2203,24 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
status = gl846_feed (dev, move-500);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to move to scan area\n",__func__);
+ DBG(DBG_error, "%s: failed to move to scan area\n", __func__);
return status;
}
move=500;
}
- DBG (DBG_info, "gl846_init_regs_for_scan: move=%f steps\n", move);
- DBG (DBG_info, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
flags = 0;
/* emulated lineart from gray data is required for now */
- if(dev->settings.scan_mode == SCAN_MODE_LINEART
+ if(dev->settings.scan_mode == ScanColorMode::LINEART
&& dev->settings.dynamic_lineart)
{
flags |= SCAN_FLAG_DYNAMIC_LINEART;
@@ -2490,18 +2229,21 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
/* backtracking isn't handled well, so don't enable it */
flags |= SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
- status = gl846_init_scan_regs (dev,
- dev->reg,
- dev->settings.xres,
- dev->settings.yres,
- start,
- move,
- dev->settings.pixels,
- dev->settings.lines,
- depth,
- channels,
- dev->settings.color_filter,
- flags);
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = move;
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = flags;
+
+ status = gl846_init_scan_regs(dev, sensor, &dev->reg, params);
if (status != SANE_STATUS_GOOD)
return status;
@@ -2516,17 +2258,18 @@ gl846_init_regs_for_scan (Genesys_Device * dev)
* for all the channels.
*/
static SANE_Status
-gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
+gl846_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size)
{
SANE_Status status = SANE_STATUS_GOOD;
uint32_t addr, length, i, x, factor, pixels;
uint32_t dpiset, dpihw, strpixel, endpixel;
uint16_t tempo;
uint32_t lines, channels;
- uint8_t val,*buffer,*ptr,*src;
+ uint8_t val,*ptr,*src;
DBGSTART;
- DBG( DBG_io2, "%s: writing %d bytes of shading data\n",__func__,size);
+ DBG(DBG_io2, "%s: writing %d bytes of shading data\n", __func__, size);
/* shading data is plit in 3 (up to 5 with IR) areas
write(0x10014000,0x00000dd8)
@@ -2535,23 +2278,24 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
write(0x10068000,0x00000dd8)
*/
length = (uint32_t) (size / 3);
- sanei_genesys_get_double(dev->reg,REG_STRPIXEL,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_STRPIXEL,&tempo);
strpixel=tempo;
- sanei_genesys_get_double(dev->reg,REG_ENDPIXEL,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_ENDPIXEL,&tempo);
endpixel=tempo;
/* compute deletion factor */
- sanei_genesys_get_double(dev->reg,REG_DPISET,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&tempo);
dpiset=tempo;
- DBG( DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d, DPISET=%d\n",__func__,strpixel,endpixel,endpixel-strpixel,dpiset);
- dpihw=sanei_genesys_compute_dpihw(dev,dpiset);
+ DBG(DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d, DPISET=%d\n", __func__, strpixel, endpixel,
+ endpixel-strpixel, dpiset);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpiset);
factor=dpihw/dpiset;
- DBG( DBG_io2, "%s: factor=%d\n",__func__,factor);
+ DBG(DBG_io2, "%s: factor=%d\n", __func__, factor);
if(DBG_LEVEL>=DBG_data)
{
dev->binary=fopen("binary.pnm","wb");
- sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &lines);
channels=dev->current_setup.channels;
if(dev->binary!=NULL)
{
@@ -2562,16 +2306,15 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
pixels=endpixel-strpixel;
/* since we're using SHDAREA, substract startx coordinate from shading */
- strpixel-=((dev->sensor.CCD_start_xoffset*600)/dev->sensor.optical_res);
+ strpixel-=((sensor.CCD_start_xoffset*600)/sensor.optical_res);
/* turn pixel value into bytes 2x16 bits words */
strpixel*=2*2;
pixels*=2*2;
- /* allocate temporary buffer */
- buffer=(uint8_t *)malloc(pixels);
- memset(buffer,0,pixels);
- DBG( DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n",__func__,pixels,pixels);
+ std::vector<uint8_t> buffer(pixels, 0);
+
+ DBG(DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n", __func__, pixels, pixels);
/* base addr of data has been written in reg D0-D4 in 4K word, so AHB address
* is 8192*reg value */
@@ -2581,7 +2324,7 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
{
/* build up actual shading data by copying the part from the full width one
* to the one corresponding to SHDAREA */
- ptr=buffer;
+ ptr = buffer.data();
/* iterate on both sensor segment */
for(x=0;x<pixels;x+=4*factor)
@@ -2599,19 +2342,16 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
ptr+=4;
}
- RIEF (sanei_genesys_read_register (dev, 0xd0+i, &val), buffer);
+ RIE(sanei_genesys_read_register(dev, 0xd0+i, &val));
addr = val * 8192 + 0x10000000;
- status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, addr, pixels, buffer);
+ status = sanei_genesys_write_ahb(dev, addr, pixels, buffer.data());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl846_send_shading_data; write to AHB failed (%s)\n",
- sane_strstatus (status));
- free(buffer);
+ DBG(DBG_error, "%s; write to AHB failed (%s)\n", __func__, sane_strstatus(status));
return status;
}
}
- free(buffer);
DBGCOMPLETED;
return status;
@@ -2623,21 +2363,18 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
* @param dev device to calibrate
*/
static SANE_Status
-gl846_led_calibration (Genesys_Device * dev)
+gl846_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
{
int num_pixels;
int total_size;
int used_res;
- uint8_t *line;
int i, j;
SANE_Status status = SANE_STATUS_GOOD;
int val;
int channels, depth;
int avg[3], top[3], bottom[3];
int turn;
- char fn[20];
uint16_t exp[3];
- Sensor_Profile *sensor;
float move;
SANE_Bool acceptable;
@@ -2649,49 +2386,50 @@ gl846_led_calibration (Genesys_Device * dev)
{
RIE(gl846_feed (dev, move));
}
- DBG (DBG_io, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_io, "%s: move=%f steps\n", __func__, move);
/* offset calibration is always done in color mode */
channels = 3;
depth=16;
- used_res=sanei_genesys_compute_dpihw(dev,dev->settings.xres);
- sensor=get_sensor_profile(dev->model->ccd_type, used_res);
- num_pixels = (dev->sensor.sensor_pixels*used_res)/dev->sensor.optical_res;
+ used_res=sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ Sensor_Profile* sensor_profile = get_sensor_profile(dev->model->ccd_type, used_res);
+ num_pixels = (sensor.sensor_pixels*used_res)/sensor.optical_res;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* set up for the calibration scan */
- status = gl846_init_scan_regs (dev,
- dev->calib_reg,
- used_res,
- used_res,
- 0,
- 0,
- num_pixels,
- 1,
- depth,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ regs = dev->reg;
+
+ SetupParams params;
+ params.xres = used_res;
+ params.yres = used_res;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = num_pixels;
+ params.lines = 1;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
total_size = num_pixels * channels * (depth/8) * 1; /* colors * bytes_per_color * scan lines */
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
/* initial loop values and boundaries */
- exp[0]=sensor->expr;
- exp[1]=sensor->expg;
- exp[2]=sensor->expb;
+ exp[0]=sensor_profile->expr;
+ exp[1]=sensor_profile->expg;
+ exp[2]=sensor_profile->expb;
bottom[0]=29000;
bottom[1]=29000;
@@ -2704,51 +2442,52 @@ gl846_led_calibration (Genesys_Device * dev)
turn = 0;
/* no move during led calibration */
- gl846_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
do
{
/* set up exposure */
- sanei_genesys_set_double(dev->calib_reg,REG_EXPR,exp[0]);
- sanei_genesys_set_double(dev->calib_reg,REG_EXPG,exp[1]);
- sanei_genesys_set_double(dev->calib_reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_double(&regs,REG_EXPR,exp[0]);
+ sanei_genesys_set_double(&regs,REG_EXPG,exp[1]);
+ sanei_genesys_set_double(&regs,REG_EXPB,exp[2]);
/* write registers and scan data */
- RIEF (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS), line);
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
- DBG (DBG_info, "gl846_led_calibration: starting line reading\n");
- RIEF (gl846_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ DBG(DBG_info, "%s: starting line reading\n", __func__);
+ RIE(gl846_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
/* stop scanning */
- RIEF (gl846_stop_action (dev), line);
+ RIE(gl846_stop_action(dev));
if (DBG_LEVEL >= DBG_data)
- {
- snprintf (fn, 20, "led_%02d.pnm", turn);
- sanei_genesys_write_pnm_file (fn, line, depth, channels, num_pixels, 1);
- }
+ {
+ char fn[30];
+ snprintf(fn, 30, "gl846_led_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), depth, channels, num_pixels, 1);
+ }
/* compute average */
for (j = 0; j < channels; j++)
- {
- avg[j] = 0;
- for (i = 0; i < num_pixels; i++)
- {
- if (dev->model->is_cis)
- val =
- line[i * 2 + j * 2 * num_pixels + 1] * 256 +
- line[i * 2 + j * 2 * num_pixels];
- else
- val =
- line[i * 2 * channels + 2 * j + 1] * 256 +
- line[i * 2 * channels + 2 * j];
- avg[j] += val;
- }
-
- avg[j] /= num_pixels;
- }
-
- DBG (DBG_info, "gl846_led_calibration: average: %d,%d,%d\n", avg[0], avg[1], avg[2]);
+ {
+ avg[j] = 0;
+ for (i = 0; i < num_pixels; i++)
+ {
+ if (dev->model->is_cis)
+ val =
+ line[i * 2 + j * 2 * num_pixels + 1] * 256 +
+ line[i * 2 + j * 2 * num_pixels];
+ else
+ val =
+ line[i * 2 * channels + 2 * j + 1] * 256 +
+ line[i * 2 * channels + 2 * j];
+ avg[j] += val;
+ }
+
+ avg[j] /= num_pixels;
+ }
+
+ DBG(DBG_info, "%s: average: %d,%d,%d\n", __func__, avg[0], avg[1], avg[2]);
/* check if exposure gives average within the boundaries */
acceptable = SANE_TRUE;
@@ -2770,23 +2509,17 @@ gl846_led_calibration (Genesys_Device * dev)
}
while (!acceptable && turn < 100);
- DBG (DBG_info, "gl846_led_calibration: acceptable exposure: %d,%d,%d\n", exp[0], exp[1], exp[2]);
+ DBG(DBG_info, "%s: acceptable exposure: %d,%d,%d\n", __func__, exp[0], exp[1], exp[2]);
/* set these values as final ones for scan */
- sanei_genesys_set_double(dev->reg,REG_EXPR,exp[0]);
- sanei_genesys_set_double(dev->reg,REG_EXPG,exp[1]);
- sanei_genesys_set_double(dev->reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPR,exp[0]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPG,exp[1]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPB,exp[2]);
/* store in this struct since it is the one used by cache calibration */
- dev->sensor.regs_0x10_0x1d[0] = (exp[0] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = exp[0] & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (exp[1] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = exp[1] & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (exp[2] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = exp[2] & 0xff;
-
- /* cleanup before return */
- free (line);
+ sensor.exposure.red = exp[0];
+ sensor.exposure.green = exp[1];
+ sensor.exposure.blue = exp[2];
/* go back home */
if(move>20)
@@ -2816,7 +2549,8 @@ gl846_init_gpio (Genesys_Device * dev)
}
if(gpios[idx].sensor_id==0)
{
- DBG (DBG_error, "%s: failed to find GPIO profile for sensor_id=%d\n", __func__, dev->model->ccd_type);
+ DBG(DBG_error, "%s: failed to find GPIO profile for sensor_id=%d\n", __func__,
+ dev->model->ccd_type);
return SANE_STATUS_INVAL;
}
@@ -2864,10 +2598,10 @@ gl846_init_memory_layout (Genesys_Device * dev)
/* CLKSET and DRAMSEL */
val = layouts[idx].dramsel;
RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
+ dev->reg.find_reg(0x0b).value = val;
/* prevent further writings by bulk write register */
- dev->reg[reg_0x0b].address = 0x00;
+ dev->reg.remove_reg(0x0b);
/* setup base address for shading and scanned data. */
for(i=0;i<10;i++)
@@ -2882,13 +2616,10 @@ gl846_init_memory_layout (Genesys_Device * dev)
/* *
* initialize ASIC from power on condition
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_boot (Genesys_Device * dev, SANE_Bool cold)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
DBGSTART;
@@ -2915,26 +2646,26 @@ gl846_boot (Genesys_Device * dev, SANE_Bool cold)
if (val & REG40_CHKVER)
{
RIE (sanei_genesys_read_register (dev, 0x00, &val));
- DBG (DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
+ DBG(DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
}
/* Set default values for registers */
gl846_init_registers (dev);
/* Write initial registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL846_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, dev->reg));
/* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */
- val = dev->reg[reg_0x0b].value & REG0B_DRAMSEL;
+ val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
val = (val | REG0B_ENBDRAM);
RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
+ dev->reg.find_reg(0x0b).value = val;
/* CIS_LINE */
if (dev->model->is_cis)
{
SETREG (0x08, REG08_CIS_LINE);
- RIE (sanei_genesys_write_register (dev, 0x08, dev->reg[reg_0x08].value));
+ RIE (sanei_genesys_write_register (dev, 0x08, dev->reg.find_reg(0x08).value));
}
/* set up clocks */
@@ -2948,7 +2679,7 @@ gl846_boot (Genesys_Device * dev, SANE_Bool cold)
RIE (gl846_init_memory_layout (dev));
SETREG (0xf8, 0x05);
- RIE (sanei_genesys_write_register (dev, 0xf8, dev->reg[reg_0xf8].value));
+ RIE (sanei_genesys_write_register (dev, 0xf8, dev->reg.find_reg(0xf8).value));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -2958,17 +2689,14 @@ gl846_boot (Genesys_Device * dev, SANE_Bool cold)
* initialize backend and ASIC : registers, motor tables, and gamma tables
* then ensure scanner's head is at home
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl846_init (Genesys_Device * dev)
+static SANE_Status gl846_init(Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG_INIT ();
DBGSTART;
- status=sanei_genesys_asic_init(dev, GENESYS_GL846_MAX_REGS);
+ status=sanei_genesys_asic_init(dev, 0);
DBGCOMPLETED;
return status;
@@ -2993,14 +2721,10 @@ gl846_update_hardware_sensors (Genesys_Scanner * s)
}
RIE (sanei_genesys_read_register (s->dev, REG6D, &val));
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & scan) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & file) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & email) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & copy) == 0;
+ 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);
return status;
}
@@ -3015,36 +2739,31 @@ gl846_update_hardware_sensors (Genesys_Scanner * s)
* @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
*/
static SANE_Status
-gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
+gl846_search_strip(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ SANE_Bool forward, SANE_Bool black)
{
unsigned int pixels, lines, channels;
- SANE_Status status;
- Genesys_Register_Set local_reg[GENESYS_GL846_MAX_REGS];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
size_t size;
- uint8_t *data;
int steps, depth, dpi;
unsigned int pass, count, found, x, y;
char title[80];
- Genesys_Register_Set *r;
+ GenesysRegister *r;
- DBG (DBG_proc, "gl846_search_strip %s %s\n", black ? "black" : "white",
- forward ? "forward" : "reverse");
+ DBG(DBG_proc, "%s %s %s\n", __func__, black ? "black" : "white", forward ? "forward" : "reverse");
- status = gl846_set_fe (dev, AFE_SET);
+ status = gl846_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_search_strip: gl846_set_fe() failed: %s\n",
- sane_strstatus(status));
+ DBG(DBG_error, "%s: gl846_set_fe() failed: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl846_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_search_strip: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3053,7 +2772,7 @@ gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
for (x = 0; x < MAX_RESOLUTIONS; x++)
{
if (dev->model->xdpi_values[x] > 0 && dev->model->xdpi_values[x] < dpi)
- dpi = dev->model->xdpi_values[x];
+ dpi = dev->model->xdpi_values[x];
}
channels = 1;
/* 10 MM */
@@ -3061,66 +2780,55 @@ gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
/* shading calibation is done with dev->motor.base_ydpi */
lines = (dev->model->shading_lines * dpi) / dev->motor.base_ydpi;
depth = 8;
- pixels = (dev->sensor.sensor_pixels * dpi) / dev->sensor.optical_res;
+ pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
size = pixels * channels * lines * (depth / 8);
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error, "gl846_search_strip: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
+
dev->scanhead_position_in_steps = 0;
- memcpy (local_reg, dev->reg,
- GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
-
- status = gl846_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0,
- pixels,
- lines,
- depth,
- channels,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA);
+ local_reg = dev->reg;
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA;
+
+ status = gl846_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error,
- "gl846_search_strip: failed to setup for scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* set up for reverse or forward */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address (&local_reg, REG02);
if (forward)
r->value &= ~REG02_MTRREV;
else
r->value |= REG02_MTRREV;
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL846_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error,
- "gl846_search_strip: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = gl846_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3130,183 +2838,162 @@ gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl846_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error, "gl846_search_strip: gl846_stop_action failed\n");
+ DBG(DBG_error, "%s: gl846_stop_action failed\n", __func__);
return status;
}
pass = 0;
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels, pixels,
- lines);
+ sprintf(title, "gl846_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
}
/* loop until strip is found or maximum pass number done */
found = 0;
while (pass < 20 && !found)
{
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL846_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl846_search_strip: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__,
+ sane_strstatus(status));
+ return status;
+ }
/* now start scan */
- status = gl846_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl846_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
/* waits for valid data */
do
- sanei_genesys_test_buffer_empty (dev, &steps);
+ sanei_genesys_test_buffer_empty (dev, &steps);
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error,
- "gl846_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
- return status;
- }
+ {
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
+ return status;
+ }
status = gl846_stop_action (dev);
if (status != SANE_STATUS_GOOD)
- {
- free (data);
- DBG (DBG_error, "gl846_search_strip: gl846_stop_action failed\n");
- return status;
- }
+ {
+ DBG(DBG_error, "%s: gl846_stop_action failed\n", __func__);
+ return status;
+ }
if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels,
- pixels, lines);
- }
+ {
+ sprintf(title, "gl846_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
+ }
/* search data to find black strip */
/* when searching forward, we only need one line of the searched color since we
* will scan forward. But when doing backward search, we need all the area of the
* same color */
if (forward)
- {
- for (y = 0; y < lines && !found; y++)
- {
- count = 0;
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * pixels + x] > 90)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * pixels + x] < 60)
- {
- count++;
- }
- }
-
- /* at end of line, if count >= 3%, line is not fully of the desired color
- * so we must go to next line of the buffer */
- /* count*100/pixels < 3 */
- if ((count * 100) / pixels < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl846_search_strip: strip found forward during pass %d at line %d\n",
- pass, y);
- }
- else
- {
- DBG (DBG_data,
- "gl846_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
- }
- }
- }
+ {
+ for (y = 0; y < lines && !found; y++)
+ {
+ count = 0;
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * pixels + x] > 90)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+
+ /* at end of line, if count >= 3%, line is not fully of the desired color
+ * so we must go to next line of the buffer */
+ /* count*100/pixels < 3 */
+ if ((count * 100) / pixels < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found forward during pass %d at line %d\n", __func__,
+ pass, y);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
+ }
+ }
+ }
else /* since calibration scans are done forward, we need the whole area
- to be of the required color when searching backward */
- {
- count = 0;
- for (y = 0; y < lines; y++)
- {
- /* count of white/black pixels depending on the color searched */
- for (x = 0; x < pixels; x++)
- {
- /* when searching for black, detect white pixels */
- if (black && data[y * pixels + x] > 90)
- {
- count++;
- }
- /* when searching for white, detect black pixels */
- if (!black && data[y * pixels + x] < 60)
- {
- count++;
- }
- }
- }
-
- /* at end of area, if count >= 3%, area is not fully of the desired color
- * so we must go to next buffer */
- if ((count * 100) / (pixels * lines) < 3)
- {
- found = 1;
- DBG (DBG_data,
- "gl846_search_strip: strip found backward during pass %d \n",
- pass);
- }
- else
- {
- DBG (DBG_data,
- "gl846_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
- }
- }
+ to be of the required color when searching backward */
+ {
+ count = 0;
+ for (y = 0; y < lines; y++)
+ {
+ /* count of white/black pixels depending on the color searched */
+ for (x = 0; x < pixels; x++)
+ {
+ /* when searching for black, detect white pixels */
+ if (black && data[y * pixels + x] > 90)
+ {
+ count++;
+ }
+ /* when searching for white, detect black pixels */
+ if (!black && data[y * pixels + x] < 60)
+ {
+ count++;
+ }
+ }
+ }
+
+ /* at end of area, if count >= 3%, area is not fully of the desired color
+ * so we must go to next buffer */
+ if ((count * 100) / (pixels * lines) < 3)
+ {
+ found = 1;
+ DBG(DBG_data, "%s: strip found backward during pass %d \n", __func__, pass);
+ }
+ else
+ {
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
+ }
+ }
pass++;
}
- free (data);
+
if (found)
{
status = SANE_STATUS_GOOD;
- DBG (DBG_info, "gl846_search_strip: %s strip found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip found\n", __func__, black ? "black" : "white");
}
else
{
status = SANE_STATUS_UNSUPPORTED;
- DBG (DBG_info, "gl846_search_strip: %s strip not found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip not found\n", __func__, black ? "black" : "white");
}
DBGCOMPLETED;
@@ -3318,7 +3005,7 @@ gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
*/
static int
dark_average (uint8_t * data, unsigned int pixels, unsigned int lines,
- unsigned int channels, unsigned int black)
+ unsigned int channels, unsigned int black)
{
unsigned int i, j, k, average, count;
unsigned int avg[3];
@@ -3330,33 +3017,33 @@ dark_average (uint8_t * data, unsigned int pixels, unsigned int lines,
avg[k] = 0;
count = 0;
for (i = 0; i < lines; i++)
- {
- for (j = 0; j < black; j++)
- {
- val = data[i * channels * pixels + j + k];
- avg[k] += val;
- count++;
- }
- }
+ {
+ for (j = 0; j < black; j++)
+ {
+ val = data[i * channels * pixels + j + k];
+ avg[k] += val;
+ count++;
+ }
+ }
if (count)
- avg[k] /= count;
- DBG (DBG_info, "dark_average: avg[%d] = %d\n", k, avg[k]);
+ avg[k] /= count;
+ DBG(DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
}
average = 0;
for (i = 0; i < channels; i++)
average += avg[i];
average /= channels;
- DBG (DBG_info, "dark_average: average = %d\n", average);
+ DBG(DBG_info, "%s: average = %d\n", __func__, average);
return average;
}
static SANE_Status
-gl846_offset_calibration (Genesys_Device * dev)
+gl846_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *first_line, *second_line, reg04;
+ uint8_t reg04;
unsigned int channels, bpp;
- char title[32];
int pass = 0, avg, total_size;
int topavg, bottomavg, resolution, lines;
int top, bottom, black_pixels, pixels;
@@ -3373,90 +3060,85 @@ gl846_offset_calibration (Genesys_Device * dev)
/* offset calibration is always done in color mode */
channels = 3;
- resolution=dev->sensor.optical_res;
- dev->calib_pixels = dev->sensor.sensor_pixels;
+ resolution=sensor.optical_res;
+ dev->calib_pixels = sensor.sensor_pixels;
lines=1;
bpp=8;
- pixels= (dev->sensor.sensor_pixels*resolution) / dev->sensor.optical_res;
- black_pixels = (dev->sensor.black_pixels * resolution) / dev->sensor.optical_res;
- DBG (DBG_io2, "gl846_offset_calibration: black_pixels=%d\n", black_pixels);
-
- status = gl846_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ pixels= (sensor.sensor_pixels*resolution) / sensor.optical_res;
+ black_pixels = (sensor.black_pixels * resolution) / sensor.optical_res;
+ DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl846_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- gl846_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
/* allocate memory for scans */
total_size = pixels * channels * lines * (bpp/8); /* colors * bytes_per_color * scan lines */
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
-
- second_line = malloc (total_size);
- if (!second_line)
- {
- free (first_line);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
/* init gain */
- dev->frontend.gain[0] = 0;
- dev->frontend.gain[1] = 0;
- dev->frontend.gain[2] = 0;
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
/* scan with no move */
bottom = 10;
- dev->frontend.offset[0] = bottom;
- dev->frontend.offset[1] = bottom;
- dev->frontend.offset[2] = bottom;
-
- RIEF2 (gl846_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl846_offset_calibration: starting first line reading\n");
- RIEF2 (gl846_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, first_line, total_size), first_line, second_line);
+ dev->frontend.set_offset(0, bottom);
+ dev->frontend.set_offset(1, bottom);
+ dev->frontend.set_offset(2, bottom);
+
+ RIE(gl846_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE(gl846_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, first_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
{
- snprintf(title,20,"offset%03d.pnm",bottom);
- sanei_genesys_write_pnm_file (title, first_line, bpp, channels, pixels, lines);
+ char fn[30];
+ snprintf(fn, 30, "gl846_offset%03d.pnm", bottom);
+ sanei_genesys_write_pnm_file(fn, first_line.data(), bpp, channels, pixels, lines);
}
- bottomavg = dark_average (first_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl846_offset_calibration: bottom avg=%d\n", bottomavg);
+ bottomavg = dark_average(first_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: bottom avg=%d\n", __func__, bottomavg);
/* now top value */
top = 255;
- dev->frontend.offset[0] = top;
- dev->frontend.offset[1] = top;
- dev->frontend.offset[2] = top;
- RIEF2 (gl846_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl846_offset_calibration: starting second line reading\n");
- RIEF2 (gl846_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
-
- topavg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl846_offset_calibration: top avg=%d\n", topavg);
+ dev->frontend.set_offset(0, top);
+ dev->frontend.set_offset(1, top);
+ dev->frontend.set_offset(2, top);
+ RIE(gl846_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl846_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
+
+ topavg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: top avg=%d\n", __func__, topavg);
/* loop until acceptable level */
while ((pass < 32) && (top - bottom > 1))
@@ -3464,55 +3146,55 @@ gl846_offset_calibration (Genesys_Device * dev)
pass++;
/* settings for new scan */
- dev->frontend.offset[0] = (top + bottom) / 2;
- dev->frontend.offset[1] = (top + bottom) / 2;
- dev->frontend.offset[2] = (top + bottom) / 2;
+ dev->frontend.set_offset(0, (top + bottom) / 2);
+ dev->frontend.set_offset(1, (top + bottom) / 2);
+ dev->frontend.set_offset(2, (top + bottom) / 2);
/* scan with no move */
- RIEF2 (gl846_set_fe(dev, AFE_SET), first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS), first_line, second_line);
- DBG (DBG_info, "gl846_offset_calibration: starting second line reading\n");
- RIEF2 (gl846_begin_scan (dev, dev->calib_reg, SANE_TRUE), first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size), first_line, second_line);
+ RIE(gl846_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl846_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
- {
- sprintf (title, "offset%03d.pnm", dev->frontend.offset[1]);
- sanei_genesys_write_pnm_file (title, second_line, bpp, channels, pixels, lines);
- }
+ {
+ char fn[30];
+ snprintf(fn, 30, "gl846_offset%03d.pnm", dev->frontend.get_offset(1));
+ sanei_genesys_write_pnm_file(fn, second_line.data(), bpp, channels, pixels, lines);
+ }
- avg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_info, "gl846_offset_calibration: avg=%d offset=%d\n", avg,
- dev->frontend.offset[1]);
+ avg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_info, "%s: avg=%d offset=%d\n", __func__, avg, dev->frontend.get_offset(1));
/* compute new boundaries */
if (topavg == avg)
- {
- topavg = avg;
- top = dev->frontend.offset[1];
- }
+ {
+ topavg = avg;
+ top = dev->frontend.get_offset(1);
+ }
else
- {
- bottomavg = avg;
- bottom = dev->frontend.offset[1];
- }
+ {
+ bottomavg = avg;
+ bottom = dev->frontend.get_offset(1);
+ }
}
- DBG (DBG_info, "gl846_offset_calibration: offset=(%d,%d,%d)\n", dev->frontend.offset[0], dev->frontend.offset[1], dev->frontend.offset[2]);
-
- /* cleanup before return */
- free (first_line);
- free (second_line);
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
static SANE_Status
-gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
+gl846_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
{
int pixels;
int total_size;
- uint8_t *line, reg04;
+ uint8_t reg04;
int i, j, channels;
SANE_Status status = SANE_STATUS_GOOD;
int max[3];
@@ -3521,7 +3203,7 @@ gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
int resolution;
int bpp;
- DBG (DBG_proc, "gl846_coarse_gain_calibration: dpi = %d\n", dpi);
+ DBG(DBG_proc, "%s: dpi = %d\n", __func__, dpi);
/* no gain nor offset for AKM AFE */
RIE (sanei_genesys_read_register (dev, REG04, &reg04));
@@ -3535,103 +3217,108 @@ gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
channels = 3;
/* follow CKSEL */
- if(dev->settings.xres<dev->sensor.optical_res)
+ if(dev->settings.xres<sensor.optical_res)
{
coeff=0.9;
- /*resolution=dev->sensor.optical_res/2;*/
- resolution=dev->sensor.optical_res;
+ /*resolution=sensor.optical_res/2;*/
+ resolution=sensor.optical_res;
}
else
{
- resolution=dev->sensor.optical_res;
+ resolution=sensor.optical_res;
coeff=1.0;
}
lines=10;
bpp=8;
- pixels = (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
-
- status = gl846_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- gl846_set_motor_power (dev->calib_reg, SANE_FALSE);
+ pixels = (sensor.sensor_pixels * resolution) / sensor.optical_res;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ try {
+ status = gl846_init_scan_regs(dev, sensor, &regs, params);
+ } catch (...) {
+ try {
+ sanei_genesys_set_motor_power(regs, false);
+ } catch (...) {}
+ throw;
+ }
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl846_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL846_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, regs));
total_size = pixels * channels * (16/bpp) * lines;
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
- RIEF (gl846_set_fe(dev, AFE_SET), line);
- RIEF (gl846_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ RIE(gl846_set_fe(dev, sensor, AFE_SET));
+ RIE(gl846_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("coarse.pnm", line, bpp, channels, pixels, lines);
+ sanei_genesys_write_pnm_file("gl846_gain.pnm", line.data(), bpp, channels, pixels, lines);
/* average value on each channel */
for (j = 0; j < channels; j++)
{
max[j] = 0;
for (i = pixels/4; i < (pixels*3/4); i++)
- {
- if (dev->model->is_cis)
- val = line[i + j * pixels];
- else
- val = line[i * channels + j];
-
- max[j] += val;
- }
+ {
+ if (dev->model->is_cis)
+ val = line[i + j * pixels];
+ else
+ val = line[i * channels + j];
+
+ max[j] += val;
+ }
max[j] = max[j] / (pixels/2);
- gain[j] = ((float) dev->sensor.gain_white_ref*coeff) / max[j];
+ gain[j] = ((float) sensor.gain_white_ref*coeff) / max[j];
/* turn logical gain value into gain code, checking for overflow */
code = 283 - 208 / gain[j];
if (code > 255)
- code = 255;
+ code = 255;
else if (code < 0)
- code = 0;
- dev->frontend.gain[j] = code;
+ code = 0;
+ dev->frontend.set_gain(j, code);
- DBG (DBG_proc,
- "gl846_coarse_gain_calibration: channel %d, max=%d, gain = %f, setting:%d\n",
- j, max[j], gain[j], dev->frontend.gain[j]);
+ DBG(DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__, j, max[j], gain[j],
+ dev->frontend.get_gain(j));
}
- if (dev->model->is_cis)
- {
- if (dev->frontend.gain[0] > dev->frontend.gain[1])
- dev->frontend.gain[0] = dev->frontend.gain[1];
- if (dev->frontend.gain[0] > dev->frontend.gain[2])
- dev->frontend.gain[0] = dev->frontend.gain[2];
- dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
+ if (dev->model->is_cis) {
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ if (gain0 > dev->frontend.get_gain(1)) {
+ gain0 = dev->frontend.get_gain(1);
+ }
+ if (gain0 > dev->frontend.get_gain(2)) {
+ gain0 = dev->frontend.get_gain(2);
+ }
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
}
- free (line);
-
RIE (gl846_stop_action (dev));
status=gl846_slow_back_home (dev, SANE_TRUE);
@@ -3645,6 +3332,8 @@ gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
static Genesys_Command_Set gl846_cmd_set = {
"gl846-generic", /* the name of this set */
+ nullptr,
+
gl846_init,
NULL,
gl846_init_regs_for_coarse_calibration,
@@ -3659,15 +3348,10 @@ static Genesys_Command_Set gl846_cmd_set = {
gl846_test_buffer_empty_bit,
gl846_test_motor_flag_bit,
- gl846_bulk_full_size,
-
gl846_set_fe,
gl846_set_powersaving,
gl846_save_power,
- gl846_set_motor_power,
- gl846_set_lamp_power,
-
gl846_begin_scan,
gl846_end_scan,
@@ -3679,12 +3363,13 @@ static Genesys_Command_Set gl846_cmd_set = {
gl846_coarse_gain_calibration,
gl846_led_calibration,
+ NULL,
gl846_slow_back_home,
NULL,
sanei_genesys_bulk_write_register,
NULL,
- gl846_bulk_read_data,
+ sanei_genesys_bulk_read_data,
gl846_update_hardware_sensors,
@@ -3697,8 +3382,7 @@ static Genesys_Command_Set gl846_cmd_set = {
NULL,
gl846_send_shading_data,
gl846_calculate_current_setup,
- gl846_boot,
- NULL
+ gl846_boot
};
SANE_Status
@@ -3707,5 +3391,3 @@ sanei_gl846_init_cmd_set (Genesys_Device * dev)
dev->model->cmd_set = &gl846_cmd_set;
return SANE_STATUS_GOOD;
}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl846.h b/backend/genesys_gl846.h
index e1dc711..797c605 100644
--- a/backend/genesys_gl846.h
+++ b/backend/genesys_gl846.h
@@ -335,239 +335,39 @@
#define REGF8_SMAXSEL 4
#define REGF8_MINSEL 0x0f
-/**
- * writable scanner registers */
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
- reg_0x0b,
- reg_0x0c,
- reg_0x0d,
- reg_0x0e,
- reg_0x0f,
- reg_0x10,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
- reg_0x2c,
- reg_0x2d,
- reg_0x2e,
- reg_0x2f,
- reg_0x30,
- reg_0x31,
- reg_0x32,
- reg_0x33,
- reg_0x34,
- reg_0x35,
- reg_0x36,
- reg_0x37,
- reg_0x38,
- reg_0x39,
- reg_0x3a,
- reg_0x3b,
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
- reg_0x51,
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
- reg_0x5e,
- reg_0x5f,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x6c,
- reg_0x6d,
- reg_0x6e,
- reg_0x6f,
- reg_0x70,
- reg_0x71,
- reg_0x72,
- reg_0x73,
- reg_0x74,
- reg_0x75,
- reg_0x76,
- reg_0x77,
- reg_0x78,
- reg_0x79,
- reg_0x7a,
- reg_0x7b,
- reg_0x7c,
- reg_0x7d,
- reg_0x7e,
- reg_0x7f,
- reg_0x80,
- reg_0x87,
- reg_0x94,
- reg_0x98,
- reg_0x99,
- reg_0x9a,
- reg_0x9b,
- reg_0x9d,
- reg_0x9e,
- reg_0xa1,
- reg_0xa2,
- reg_0xa3,
- reg_0xa4,
- reg_0xa5,
- reg_0xa6,
- reg_0xa7,
- reg_0xa8,
- reg_0xa9,
- reg_0xab,
- reg_0xbb,
- reg_0xbc,
- reg_0xbd,
- reg_0xbe,
- reg_0xc5,
- reg_0xc6,
- reg_0xc7,
- reg_0xc8,
- reg_0xc9,
- reg_0xca,
- reg_0xd0,
- reg_0xd1,
- reg_0xd2,
- reg_0xdb,
- reg_0xe0,
- reg_0xe1,
- reg_0xe2,
- reg_0xe3,
- reg_0xe4,
- reg_0xe5,
- reg_0xe6,
- reg_0xe7,
- reg_0xe8,
- reg_0xe9,
- reg_0xea,
- reg_0xeb,
- reg_0xec,
- reg_0xed,
- reg_0xee,
- reg_0xef,
- reg_0xf0,
- reg_0xf1,
- reg_0xf2,
- reg_0xf3,
- reg_0xf4,
- reg_0xf5,
- reg_0xf6,
- reg_0xf7,
- reg_0xf8,
- reg_0xfe,
- reg_0xff,
- GENESYS_GL846_MAX_REGS
-};
-
-#define SETREG(adr,val) {dev->reg[reg_##adr].address=adr;dev->reg[reg_##adr].value=val;}
+#define SETREG(adr,val) { dev->reg.init_reg(adr, val); }
/** set up registers for an actual scan
*
* this function sets up the scanner to scan in normal or single line mode
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl846_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags);
+static SANE_Status gl846_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg, SetupParams& params);
/* Send the low-level scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl846_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool start_motor);
+static SANE_Status gl846_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg, SANE_Bool start_motor);
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl846_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
+static SANE_Status gl846_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl846_init (Genesys_Device * dev);
+static SANE_Status gl846_init (Genesys_Device * dev);
/** @brief moves the slider to steps at motor base dpi
* @param dev device to work on
* @param steps number of steps to move
* */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_feed (Genesys_Device * dev, unsigned int steps);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_stop_action (Genesys_Device * dev);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl846_boot (Genesys_Device * dev, SANE_Bool cold);
@@ -594,7 +394,7 @@ static Gpio_Profile gpios[]={
typedef struct
{
- char *model;
+ const char *model;
uint8_t dramsel;
/* shading data address */
uint8_t rd0;
@@ -667,8 +467,6 @@ typedef struct {
uint8_t r17; /**> TG width */
} Sensor_Profile;
-/* *INDENT-OFF* */
-
/**
* order of the scanned pixel
*/
@@ -681,7 +479,6 @@ static Sensor_Profile sensors[]={
{CCD_IMG101, 1200, 11000, 60, 159, 85, 5136, 255, 0, 0, 0, order_01 , 0x13},
{CCD_PLUSTEK3800, 1200, 11000, 60, 159, 85, 5136, 255, 0, 0, 0, order_01 , 0x13},
};
-/* *INDENT-ON* */
/* base motor slopes in full step unit */
/* target=((exposure * dpi) / base_dpi)>>step_type; */
@@ -691,7 +488,6 @@ static uint32_t img101_high[] = {22000, 22000, 22000, 18450, 15974, 14284, 13054
* database of motor profiles
*/
-/* *INDENT-OFF* */
static Motor_Profile gl846_motors[]={
/* Image Formula 101 */
{MOTOR_IMG101, 11000, HALF_STEP , img101_high},
@@ -700,6 +496,3 @@ static Motor_Profile gl846_motors[]={
/* end of database entry */
{0, 0, 0, NULL},
};
-/* *INDENT-ON* */
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.cc
index a3b35a2..b5748a5 100644
--- a/backend/genesys_gl847.c
+++ b/backend/genesys_gl847.cc
@@ -42,138 +42,11 @@
If you do not wish that, delete this exception notice.
*/
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_gl847
+#define DEBUG_DECLARE_ONLY
#include "genesys_gl847.h"
-/****************************************************************************
- Low level function
- ****************************************************************************/
-
-/* ------------------------------------------------------------------------ */
-/* Read and write RAM, registers and AFE */
-/* ------------------------------------------------------------------------ */
-
-
-/** @brief read scanned data
- * Read in 0xeff0 maximum sized blocks. This read is done in 2
- * parts if not multple of 512. First read is rounded to a multiple of 512 bytes, last read fetches the
- * remainder. Read addr is always 0x10000000 with the memory layout setup.
- * @param dev device to read data from
- * @param addr address within ASIC memory space, unused but kept for API
- * @param data pointer where to store the read data
- * @param len size to read
- */
-static SANE_Status
-gl847_bulk_read_data (Genesys_Device * dev, uint8_t addr,
- uint8_t * data, size_t len)
-{
- SANE_Status status;
- size_t size, target, read, done;
- uint8_t outdata[8];
- uint8_t *buffer;
-
- DBG (DBG_io, "gl847_bulk_read_data: requesting %lu bytes at addr=0x%02x\n", (u_long) len, addr);
-
- if (len == 0)
- return SANE_STATUS_GOOD;
-
- target = len;
- buffer = data;
-
- /* loop until computed data size is read */
- while (target)
- {
- if (target > 0xeff0)
- {
- size = 0xeff0;
- }
- else
- {
- size = target;
- }
-
- /* hard coded 0x10000000 addr */
- outdata[0] = 0;
- outdata[1] = 0;
- outdata[2] = 0;
- outdata[3] = 0x10;
-
- /* data size to transfer */
- outdata[4] = (size & 0xff);
- outdata[5] = ((size >> 8) & 0xff);
- outdata[6] = ((size >> 16) & 0xff);
- outdata[7] = ((size >> 24) & 0xff);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_BUFFER, 0x00, sizeof (outdata),
- outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s failed while writing command: %s\n",
- __func__, sane_strstatus (status));
- return status;
- }
-
- /* blocks must be multiple of 512 but not last block */
- read = size;
- if (read >= 512)
- {
- read /= 512;
- read *= 512;
- }
-
- DBG (DBG_io2,
- "gl847_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, buffer, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl847_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- done=read;
- DBG (DBG_io2, "gl847_bulk_read_data: %lu bytes of data read\n", (u_long) done);
-
- /* read less than 512 bytes remainder */
- if (read < size)
- {
- read = size - read;
- DBG (DBG_io2,
- "gl847_bulk_read_data: trying to read %lu bytes of data\n",
- (u_long) read);
- status = sanei_usb_read_bulk (dev->dn, buffer+done, &read);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "gl847_bulk_read_data failed while reading bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
- done=read;
- DBG (DBG_io2, "gl847_bulk_read_data: %lu bytes of data read\n", (u_long) done);
- }
-
- DBG (DBG_io2, "%s: read %lu bytes, %lu remaining\n", __func__,
- (u_long) size, (u_long) (target - size));
-
- target -= size;
- buffer += size;
- }
-
- if (DBG_LEVEL >= DBG_data && dev->binary!=NULL)
- {
- fwrite(data, len, 1, dev->binary);
- }
-
- DBGCOMPLETED;
-
- return SANE_STATUS_GOOD;
-}
+#include <vector>
/****************************************************************************
Mid level functions
@@ -182,7 +55,7 @@ gl847_bulk_read_data (Genesys_Device * dev, uint8_t addr,
static SANE_Bool
gl847_get_fast_feed_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG02);
if (r && (r->value & REG02_FASTFED))
@@ -193,7 +66,7 @@ gl847_get_fast_feed_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl847_get_filter_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_FILTER))
@@ -204,7 +77,7 @@ gl847_get_filter_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl847_get_lineart_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_LINEART))
@@ -215,7 +88,7 @@ gl847_get_lineart_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl847_get_bitset_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, REG04);
if (r && (r->value & REG04_BITSET))
@@ -226,7 +99,7 @@ gl847_get_bitset_bit (Genesys_Register_Set * regs)
static SANE_Bool
gl847_get_gain4_bit (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
r = sanei_genesys_get_address (regs, 0x06);
if (r && (r->value & REG06_GAIN4))
@@ -256,7 +129,7 @@ gl847_test_motor_flag_bit (SANE_Byte val)
static int
gl847_get_step_multiplier (Genesys_Register_Set * regs)
{
- Genesys_Register_Set *r = NULL;
+ GenesysRegister *r = NULL;
int value = 1;
r = sanei_genesys_get_address (regs, 0x9d);
@@ -325,89 +198,73 @@ static Sensor_Profile *get_sensor_profile(int sensor_type, int dpi)
*/
static int gl847_compute_exposure(Genesys_Device *dev, int xres)
{
- Sensor_Profile *sensor;
-
- sensor=get_sensor_profile(dev->model->ccd_type, xres);
- return sensor->exposure;
+ Sensor_Profile* sensor_profile=get_sensor_profile(dev->model->ccd_type, xres);
+ return sensor_profile->exposure;
}
/** @brief sensor specific settings
*/
-static void
-gl847_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
+static void gl847_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * regs, int dpi)
{
- Genesys_Register_Set *r;
- Sensor_Profile *sensor;
- int dpihw, i;
+ GenesysRegister *r;
+ int dpihw;
uint16_t exp;
DBGSTART;
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpi);
- for (i = 0x06; i < 0x0e; i++)
- {
- r = sanei_genesys_get_address (regs, 0x10 + i);
- if (r)
- r->value = dev->sensor.regs_0x10_0x1d[i];
+ for (uint16_t addr = 0x16; addr < 0x1e; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
- for (i = 0; i < 9; i++)
- {
- r = sanei_genesys_get_address (regs, 0x52 + i);
- if (r)
- r->value = dev->sensor.regs_0x52_0x5e[i];
+ for (uint16_t addr = 0x52; addr < 0x52 + 9; addr++) {
+ regs->set8(addr, sensor.custom_regs.get_value(addr));
}
/* set EXPDUMMY and CKxMAP */
- dpihw=sanei_genesys_compute_dpihw(dev,dpi);
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpi);
+ Sensor_Profile* sensor_profile=get_sensor_profile(dev->model->ccd_type, dpihw);
- sanei_genesys_set_reg_from_set(regs,REG_EXPDMY,(uint8_t)((sensor->expdummy) & 0xff));
+ sanei_genesys_set_reg_from_set(regs,REG_EXPDMY,(uint8_t)((sensor_profile->expdummy) & 0xff));
/* if no calibration has been done, set default values for exposures */
- exp=dev->sensor.regs_0x10_0x1d[0]*256+dev->sensor.regs_0x10_0x1d[1];
+ exp = sensor.exposure.red;
if(exp==0)
{
- exp=sensor->expr;
+ exp=sensor_profile->expr;
}
sanei_genesys_set_double(regs,REG_EXPR,exp);
- exp=dev->sensor.regs_0x10_0x1d[2]*256+dev->sensor.regs_0x10_0x1d[3];
+ exp = sensor.exposure.green;
if(exp==0)
{
- exp=sensor->expg;
+ exp=sensor_profile->expg;
}
sanei_genesys_set_double(regs,REG_EXPG,exp);
- exp=dev->sensor.regs_0x10_0x1d[4]*256+dev->sensor.regs_0x10_0x1d[5];
+ exp = sensor.exposure.blue;
if(exp==0)
{
- exp=sensor->expb;
+ exp=sensor_profile->expb;
}
sanei_genesys_set_double(regs,REG_EXPB,exp);
- sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
- sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
- sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
+ sanei_genesys_set_triple(regs,REG_CK1MAP,sensor_profile->ck1map);
+ sanei_genesys_set_triple(regs,REG_CK3MAP,sensor_profile->ck3map);
+ sanei_genesys_set_triple(regs,REG_CK4MAP,sensor_profile->ck4map);
/* order of the sub-segments */
- dev->order=sensor->order;
+ dev->order=sensor_profile->order;
r = sanei_genesys_get_address (regs, 0x17);
- r->value = sensor->r17;
+ r->value = sensor_profile->r17;
DBGCOMPLETED;
}
-/* returns the max register bulk size */
-static int
-gl847_bulk_full_size (void)
-{
- return GENESYS_GL847_MAX_REGS;
-}
-
/** @brief set all registers to default values .
* This function is called only once at the beginning and
* fills register startup values for registers reused across scans.
@@ -423,13 +280,12 @@ gl847_init_registers (Genesys_Device * dev)
DBGSTART;
/* 700F class needs some different initial settings */
- if (strcmp (dev->model->name, "canon-lide-700f") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_700F)
{
lide700 = 1;
}
- memset (dev->reg, 0,
- GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg.clear();
SETREG (0x01, 0x82);
SETREG (0x02, 0x18);
@@ -559,26 +415,25 @@ gl847_init_registers (Genesys_Device * dev)
}
/* fine tune upon device description */
- dev->reg[reg_0x05].value &= ~REG05_DPIHW;
- switch (dev->sensor.optical_res)
+ dev->reg.find_reg(0x05).value &= ~REG05_DPIHW;
+ switch (sanei_genesys_find_sensor_any(dev).optical_res)
{
case 600:
- dev->reg[reg_0x05].value |= REG05_DPIHW_600;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_600;
break;
case 1200:
- dev->reg[reg_0x05].value |= REG05_DPIHW_1200;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_1200;
break;
case 2400:
- dev->reg[reg_0x05].value |= REG05_DPIHW_2400;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_2400;
break;
case 4800:
- dev->reg[reg_0x05].value |= REG05_DPIHW_4800;
+ dev->reg.find_reg(0x05).value |= REG05_DPIHW_4800;
break;
}
/* initalize calibration reg */
- memcpy (dev->calib_reg, dev->reg,
- GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->calib_reg = dev->reg;
DBGCOMPLETED;
}
@@ -595,8 +450,7 @@ static SANE_Status
gl847_send_slope_table (Genesys_Device * dev, int table_nr,
uint16_t * slope_table, int steps)
{
- SANE_Status status;
- uint8_t *table;
+ SANE_Status status = SANE_STATUS_GOOD;
int i;
char msg[10000];
@@ -610,7 +464,7 @@ gl847_send_slope_table (Genesys_Device * dev, int table_nr,
return SANE_STATUS_INVAL;
}
- table = (uint8_t *) malloc (steps * 2);
+ std::vector<uint8_t> table(steps * 2);
for (i = 0; i < steps; i++)
{
table[i * 2] = slope_table[i] & 0xff;
@@ -628,16 +482,13 @@ gl847_send_slope_table (Genesys_Device * dev, int table_nr,
}
/* slope table addresses are fixed */
- status =
- sanei_genesys_write_ahb (dev->dn, dev->usb_mode, 0x10000000 + 0x4000 * table_nr, steps * 2, table);
+ status = sanei_genesys_write_ahb(dev, 0x10000000 + 0x4000 * table_nr, steps * 2, table.data());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: write to AHB failed writing slope table %d (%s)\n",
- __func__, table_nr, sane_strstatus (status));
+ DBG(DBG_error, "%s: write to AHB failed writing slope table %d (%s)\n", __func__, table_nr,
+ sane_strstatus(status));
}
- free (table);
DBGCOMPLETED;
return status;
}
@@ -650,76 +501,63 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
{
SANE_Status status = SANE_STATUS_GOOD;
int i;
- uint16_t val;
uint8_t val8;
DBGSTART;
/* wait for FE to be ready */
status = sanei_genesys_get_status (dev, &val8);
- while (val8 & REG41_FEBUSY);
+ while (val8 & REG41_FEBUSY)
{
- usleep (10000);
+ sanei_genesys_sleep_ms(10);
status = sanei_genesys_get_status (dev, &val8);
};
if (set == AFE_INIT)
{
- DBG (DBG_proc, "gl847_set_ad_fe(): setting DAC %u\n",
- dev->model->dac_type);
+ DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
- /* sets to default values */
- sanei_genesys_init_fe (dev);
+ dev->frontend = dev->frontend_initial;
}
/* reset DAC */
status = sanei_genesys_fe_write_data (dev, 0x00, 0x80);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl847_set_ad_fe: failed to write reg0: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write reg0: %s\n", __func__, sane_strstatus(status));
return status;
}
/* write them to analog frontend */
- val = dev->frontend.reg[0];
- status = sanei_genesys_fe_write_data (dev, 0x00, val);
+ status = sanei_genesys_fe_write_data(dev, 0x00, dev->frontend.regs.get_value(0x00));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl847_set_ad_fe: failed to write reg0: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write reg0: %s\n", __func__, sane_strstatus(status));
return status;
}
- val = dev->frontend.reg[1];
- status = sanei_genesys_fe_write_data (dev, 0x01, val);
+ status = sanei_genesys_fe_write_data(dev, 0x01, dev->frontend.regs.get_value(0x01));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl847_set_ad_fe: failed to write reg1: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write reg1: %s\n", __func__, sane_strstatus(status));
return status;
}
for (i = 0; i < 3; i++)
{
- val = dev->frontend.gain[i];
- status = sanei_genesys_fe_write_data (dev, 0x02 + i, val);
+ status = sanei_genesys_fe_write_data(dev, 0x02 + i, dev->frontend.get_gain(i));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_set_ad_fe: failed to write gain %d: %s\n", i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write gain %d: %s\n", __func__, i, sane_strstatus(status));
return status;
}
}
for (i = 0; i < 3; i++)
{
- val = dev->frontend.offset[i];
- status = sanei_genesys_fe_write_data (dev, 0x05 + i, val);
+ status = sanei_genesys_fe_write_data(dev, 0x05 + i, dev->frontend.get_offset(i));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_set_ad_fe: failed to write offset %d: %s\n", i,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write offset %d: %s\n", __func__, i,
+ sane_strstatus(status));
return status;
}
}
@@ -751,14 +589,15 @@ SANE_Status status=SANE_STATUS_GOOD;
/* Set values of analog frontend */
static SANE_Status
-gl847_set_fe (Genesys_Device * dev, uint8_t set)
+gl847_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
{
- SANE_Status status;
+ (void) sensor;
+
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
- DBG (DBG_proc, "gl847_set_fe (%s)\n",
- set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
- AFE_POWER_SAVE ? "powersave" : "huh?");
+ DBG(DBG_proc, "%s (%s)\n", __func__, set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
+ AFE_POWER_SAVE ? "powersave" : "huh?");
RIE (sanei_genesys_read_register (dev, REG04, &val));
@@ -769,8 +608,8 @@ gl847_set_fe (Genesys_Device * dev, uint8_t set)
}
/* for now there is no support yet for wolfson fe */
- DBG (DBG_proc, "gl847_set_fe(): unsupported frontend type %d\n",
- dev->reg[reg_0x04].value & REG04_FESET);
+ DBG(DBG_proc, "%s(): unsupported frontend type %d\n", __func__,
+ dev->reg.find_reg(0x04).value & REG04_FESET);
DBGCOMPLETED;
return SANE_STATUS_UNSUPPORTED;
@@ -781,6 +620,7 @@ gl847_set_fe (Genesys_Device * dev, uint8_t set)
*/
static SANE_Status
gl847_init_motor_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int scan_exposure_time,
float scan_yres,
@@ -791,14 +631,14 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
int scan_power_mode,
unsigned int flags)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int use_fast_fed;
unsigned int fast_dpi;
uint16_t scan_table[SLOPE_TABLE_SIZE];
uint16_t fast_table[SLOPE_TABLE_SIZE];
int scan_steps, fast_steps, factor;
unsigned int feedl, dist;
- Genesys_Register_Set *r;
+ GenesysRegister *r;
uint32_t z1, z2;
unsigned int min_restep = 0x20;
uint8_t val, effective;
@@ -806,13 +646,9 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
unsigned int ccdlmt,tgtime;
DBGSTART;
- DBG (DBG_proc, "gl847_init_motor_regs_scan : scan_exposure_time=%d, "
- "scan_yres=%g, scan_step_type=%d, scan_lines=%d, scan_dummy=%d, "
- "feed_steps=%d, scan_power_mode=%d, flags=%x\n",
- scan_exposure_time,
- scan_yres,
- scan_step_type,
- scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
+ DBG(DBG_proc, "%s : scan_exposure_time=%d, can_yres=%g, scan_step_type=%d, scan_lines=%d, "
+ "scan_dummy=%d, feed_steps=%d, scan_power_mode=%d, flags=%x\n", __func__, scan_exposure_time,
+ scan_yres, scan_step_type, scan_lines, scan_dummy, feed_steps, scan_power_mode, flags);
/* get step multiplier */
factor = gl847_get_step_multiplier (reg);
@@ -824,15 +660,15 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
{
use_fast_fed=1;
}
- DBG (DBG_io, "%s: use_fast_fed=%d\n", __func__, use_fast_fed);
+ DBG(DBG_io, "%s: use_fast_fed=%d\n", __func__, use_fast_fed);
sanei_genesys_set_triple(reg, REG_LINCNT, scan_lines);
- DBG (DBG_io, "%s: lincnt=%d\n", __func__, scan_lines);
+ DBG(DBG_io, "%s: lincnt=%d\n", __func__, scan_lines);
/* compute register 02 value */
r = sanei_genesys_get_address (reg, REG02);
r->value = 0x00;
- r->value |= REG02_MTRPWR;
+ sanei_genesys_set_motor_power(*reg, true);
if (use_fast_fed)
r->value |= REG02_FASTFED;
@@ -843,7 +679,7 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
r->value |= REG02_AGOHOME | REG02_NOTHOME;
if ((flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
- ||(scan_yres>=dev->sensor.optical_res))
+ ||(scan_yres>=sensor.optical_res))
{
r->value |= REG02_ACDCDIS;
}
@@ -906,8 +742,8 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
if (flags & MOTOR_FLAG_FEED)
dist *=2;
}
- DBG (DBG_io2, "%s: scan steps=%d\n", __func__, scan_steps);
- DBG (DBG_io2, "%s: acceleration distance=%d\n", __func__, dist);
+ DBG(DBG_io2, "%s: scan steps=%d\n", __func__, scan_steps);
+ DBG(DBG_io2, "%s: acceleration distance=%d\n", __func__, dist);
/* check for overflow */
if(dist<feedl)
@@ -916,7 +752,7 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
feedl = 0;
sanei_genesys_set_triple(reg,REG_FEEDL,feedl);
- DBG (DBG_io ,"%s: feedl=%d\n",__func__,feedl);
+ DBG(DBG_io ,"%s: feedl=%d\n", __func__, feedl);
r = sanei_genesys_get_address (reg, REG0C);
ccdlmt=(r->value & REG0C_CCDLMT)+1;
@@ -967,10 +803,10 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
&z1,
&z2);
- DBG (DBG_info, "gl847_init_motor_regs_scan: z1 = %d\n", z1);
+ DBG(DBG_info, "%s: z1 = %d\n", __func__, z1);
sanei_genesys_set_triple(reg, REG60, z1 | (scan_step_type << (16+REG60S_STEPSEL)));
- DBG (DBG_info, "gl847_init_motor_regs_scan: z2 = %d\n", z2);
+ DBG(DBG_info, "%s: z2 = %d\n", __func__, z2);
sanei_genesys_set_triple(reg, REG63, z2 | (scan_step_type << (16+REG63S_FSTPSEL)));
r = sanei_genesys_get_address (reg, 0x1e);
@@ -1023,6 +859,7 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
*/
static SANE_Status
gl847_init_optical_regs_scan (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * reg,
unsigned int exposure_time,
int used_res,
@@ -1030,39 +867,37 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
unsigned int pixels,
int channels,
int depth,
- SANE_Bool half_ccd, int color_filter, int flags)
+ SANE_Bool half_ccd, ColorFilter color_filter, int flags)
{
unsigned int words_per_line;
unsigned int startx, endx, used_pixels;
unsigned int dpiset, dpihw,segnb,cksel,factor;
unsigned int bytes;
- Genesys_Register_Set *r;
- SANE_Status status;
- Sensor_Profile *sensor;
+ GenesysRegister *r;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl847_init_optical_regs_scan : exposure_time=%d, "
- "used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
- "half_ccd=%d, flags=%x\n", exposure_time,
- used_res, start, pixels, channels, depth, half_ccd, flags);
+ DBG(DBG_proc, "%s : exposure_time=%d, used_res=%d, start=%d, pixels=%d, channels=%d, depth=%d, "
+ "half_ccd=%d, flags=%x\n", __func__, exposure_time, used_res, start, pixels, channels, depth,
+ half_ccd, flags);
/* resolution is divided according to CKSEL */
r = sanei_genesys_get_address (reg, REG18);
cksel= (r->value & REG18_CKSEL)+1;
- DBG (DBG_io2, "%s: cksel=%d\n", __func__, cksel);
+ DBG(DBG_io2, "%s: cksel=%d\n", __func__, cksel);
/* to manage high resolution device while keeping good
* low resolution scanning speed, we make hardware dpi vary */
- dpihw=sanei_genesys_compute_dpihw(dev, used_res * cksel);
- factor=dev->sensor.optical_res/dpihw;
- DBG (DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, used_res * cksel);
+ factor=sensor.optical_res/dpihw;
+ DBG(DBG_io2, "%s: dpihw=%d (factor=%d)\n", __func__, dpihw, factor);
/* sensor parameters */
- sensor=get_sensor_profile(dev->model->ccd_type, dpihw);
- gl847_setup_sensor (dev, reg, dpihw);
+ Sensor_Profile* sensor_profile=get_sensor_profile(dev->model->ccd_type, dpihw);
+ gl847_setup_sensor(dev, sensor, reg, dpihw);
dpiset = used_res * cksel;
/* start and end coordinate in optical dpi coordinates */
- startx = start/cksel+dev->sensor.CCD_start_xoffset;
+ startx = start/cksel+sensor.CCD_start_xoffset;
used_pixels=pixels/cksel;
/* end of sensor window */
@@ -1091,19 +926,17 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
* of the sensor crossed by the scan area */
if (dev->model->flags & GENESYS_FLAG_SIS_SENSOR && segnb>1)
{
- dev->dist = sensor->segcnt;
+ dev->dist = sensor_profile->segcnt;
}
/* use a segcnt rounded to next even number */
endx += ((dev->dist+1)&0xfffe)*(segnb-1);
used_pixels=endx-startx;
- status = gl847_set_fe (dev, AFE_SET);
+ status = gl847_set_fe(dev, sensor, AFE_SET);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_init_optical_regs_scan: failed to set frontend: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set frontend: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -1124,10 +957,7 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
r = sanei_genesys_get_address (reg, REG03);
r->value &= ~REG03_AVEENB;
- if (flags & OPTICAL_FLAG_DISABLE_LAMP)
- r->value &= ~REG03_LAMPPWR;
- else
- r->value |= REG03_LAMPPWR;
+ sanei_genesys_set_lamp_power(dev, sensor, *reg, !(flags & OPTICAL_FLAG_DISABLE_LAMP));
/* BW threshold */
r = sanei_genesys_get_address (reg, 0x2e);
@@ -1157,15 +987,18 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
{
switch (color_filter)
{
- case 0:
- r->value |= 0x14; /* red filter */
- break;
- case 2:
- r->value |= 0x1c; /* blue filter */
- break;
- default:
- r->value |= 0x18; /* green filter */
- break;
+
+ case ColorFilter::RED:
+ r->value |= 0x14;
+ break;
+ case ColorFilter::BLUE:
+ r->value |= 0x1c;
+ break;
+ case ColorFilter::GREEN:
+ r->value |= 0x18;
+ break;
+ default:
+ break; // should not happen
}
}
else
@@ -1257,21 +1090,18 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
words_per_line *= channels;
dev->wpl = words_per_line;
- if(dev->oe_buffer.buffer!=NULL)
- {
- sanei_genesys_buffer_free (&(dev->oe_buffer));
- }
- RIE (sanei_genesys_buffer_alloc (&(dev->oe_buffer), dev->wpl));
+ dev->oe_buffer.clear();
+ dev->oe_buffer.alloc(dev->wpl);
/* MAXWD is expressed in 4 words unit */
sanei_genesys_set_triple(reg, REG_MAXWD, (words_per_line >> 2));
- DBG (DBG_io2, "%s: words_per_line used=%d\n", __func__, words_per_line);
+ DBG(DBG_io2, "%s: words_per_line used=%d\n", __func__, words_per_line);
sanei_genesys_set_double(reg, REG_LPERIOD, exposure_time);
- DBG (DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
+ DBG(DBG_io2, "%s: exposure_time used=%d\n", __func__, exposure_time);
r = sanei_genesys_get_address (reg, 0x34);
- r->value = dev->sensor.dummy_pixel;
+ r->value = sensor.dummy_pixel;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -1281,23 +1111,13 @@ gl847_init_optical_regs_scan (Genesys_Device * dev,
*
* this function sets up the scanner to scan in normal or single line mode
*/
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl847_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags)
+static SANE_Status
+gl847_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
+ SetupParams& params)
+
{
+ params.assert_valid();
+
int used_res;
int start, used_pixels;
int bytes_per_line;
@@ -1317,50 +1137,42 @@ gl847_init_scan_regs (Genesys_Device * dev,
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- SANE_Status status;
-
- DBG (DBG_info,
- "gl847_init_scan_regs settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g/%g\n"
- "Depth/Channels: %u/%u\n"
- "Flags : %x\n\n",
- xres, yres, lines, pixels, startx, starty, depth, channels, flags);
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* we may have 2 domains for ccd: xres below or above half ccd max dpi */
- if (dev->sensor.optical_res < 2 * xres ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1)
{
- half_ccd = SANE_FALSE;
+ half_ccd = SANE_TRUE;
}
else
{
- half_ccd = SANE_TRUE;
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
if (half_ccd)
optical_res /= 2;
/* stagger */
if ((!half_ccd) && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE))
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl847_init_scan_regs : stagger=%d lines\n", stagger);
+ DBG(DBG_info, "%s : stagger=%d lines\n", __func__, stagger);
/* used_res */
- if (flags & SCAN_FLAG_USE_OPTICAL_RES)
+ if (params.flags & SCAN_FLAG_USE_OPTICAL_RES)
{
used_res = optical_res;
}
else
{
/* resolution is choosen from a list */
- used_res = xres;
+ used_res = params.xres;
}
/* compute scan parameters values */
@@ -1368,54 +1180,53 @@ gl847_init_scan_regs (Genesys_Device * dev,
/* use detected left margin and fixed value */
/* start */
/* add x coordinates */
- start = startx;
+ start = params.startx;
if (stagger > 0)
start |= 1;
/* compute correct pixels number */
/* pixels */
- used_pixels = (pixels * optical_res) / xres;
+ used_pixels = (params.pixels * optical_res) / params.xres;
/* round up pixels number if needed */
- if (used_pixels * xres < pixels * optical_res)
+ if (used_pixels * params.xres < params.pixels * optical_res)
used_pixels++;
- dummy = 3-channels;
+ dummy = 3-params.channels;
/* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
if (dev->model->is_cis)
- slope_dpi = yres * channels;
+ slope_dpi = params.yres * params.channels;
else
- slope_dpi = yres;
+ slope_dpi = params.yres;
slope_dpi = slope_dpi * (1 + dummy);
exposure_time = gl847_compute_exposure (dev, used_res);
scan_step_type = sanei_genesys_compute_step_type(gl847_motors, dev->model->motor_type, exposure_time);
- DBG (DBG_info, "gl847_init_scan_regs : exposure_time=%d pixels\n", exposure_time);
- DBG (DBG_info, "gl847_init_scan_regs : scan_step_type=%d\n", scan_step_type);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : scan_step_type=%d\n", __func__, scan_step_type);
/*** optical parameters ***/
/* in case of dynamic lineart, we use an internal 8 bit gray scan
* to generate 1 lineart data */
- if ((flags & SCAN_FLAG_DYNAMIC_LINEART) && (dev->settings.scan_mode == SCAN_MODE_LINEART))
- {
- depth = 8;
+ if (params.flags & SCAN_FLAG_DYNAMIC_LINEART) {
+ params.depth = 8;
}
/* we enable true gray for cis scanners only, and just when doing
* scan since color calibration is OK for this mode
*/
oflags = 0;
- if(flags & SCAN_FLAG_DISABLE_SHADING)
+ if(params.flags & SCAN_FLAG_DISABLE_SHADING)
oflags |= OPTICAL_FLAG_DISABLE_SHADING;
- if(flags & SCAN_FLAG_DISABLE_GAMMA)
+ if(params.flags & SCAN_FLAG_DISABLE_GAMMA)
oflags |= OPTICAL_FLAG_DISABLE_GAMMA;
- if(flags & SCAN_FLAG_DISABLE_LAMP)
+ if(params.flags & SCAN_FLAG_DISABLE_LAMP)
oflags |= OPTICAL_FLAG_DISABLE_LAMP;
if (dev->model->is_cis && dev->settings.true_gray)
@@ -1423,16 +1234,16 @@ gl847_init_scan_regs (Genesys_Device * dev,
oflags |= OPTICAL_FLAG_ENABLE_LEDADD;
}
- status = gl847_init_optical_regs_scan (dev,
+ status = gl847_init_optical_regs_scan (dev, sensor,
reg,
exposure_time,
used_res,
start,
used_pixels,
- channels,
- depth,
+ params.channels,
+ params.depth,
half_ccd,
- color_filter,
+ params.color_filter,
oflags);
if (status != SANE_STATUS_GOOD)
@@ -1441,30 +1252,30 @@ gl847_init_scan_regs (Genesys_Device * dev,
/*** motor parameters ***/
/* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,flags);
+ max_shift=sanei_genesys_compute_max_shift(dev,params.channels,params.yres,params.flags);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
/* add tl_y to base movement */
- move = starty;
- DBG (DBG_info, "gl847_init_scan_regs: move=%d steps\n", move);
+ move = params.starty;
+ DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
mflags=0;
- if(flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
+ if(params.flags & SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE)
mflags |= MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE;
- if(flags & SCAN_FLAG_FEEDING)
+ if(params.flags & SCAN_FLAG_FEEDING)
mflags |= MOTOR_FLAG_FEED;
- status = gl847_init_motor_regs_scan (dev,
- reg,
- exposure_time,
- slope_dpi,
- scan_step_type,
- dev->model->is_cis ? lincnt *
- channels : lincnt, dummy, move,
- scan_power_mode,
- mflags);
+ status = gl847_init_motor_regs_scan (dev, sensor,
+ reg,
+ exposure_time,
+ slope_dpi,
+ scan_step_type,
+ dev->model->is_cis ? lincnt *
+ params.channels : lincnt, dummy, move,
+ scan_power_mode,
+ mflags);
if (status != SANE_STATUS_GOOD)
return status;
@@ -1474,52 +1285,40 @@ gl847_init_scan_regs (Genesys_Device * dev,
/* words_per_line */
bytes_per_line = (used_pixels * used_res) / optical_res;
- bytes_per_line = (bytes_per_line * channels * depth) / 8;
+ bytes_per_line = (bytes_per_line * params.channels * params.depth) / 8;
requested_buffer_size = 8 * bytes_per_line;
- /* we must use a round number of bytes_per_line */
- /* XXX STEF XXX
- if (requested_buffer_size > BULKIN_MAXSIZE)
- requested_buffer_size =
- (BULKIN_MAXSIZE / bytes_per_line) * bytes_per_line;
- */
read_buffer_size =
2 * requested_buffer_size +
- ((max_shift + stagger) * used_pixels * channels * depth) / 8;
+ ((max_shift + stagger) * used_pixels * params.channels * params.depth) / 8;
- RIE (sanei_genesys_buffer_free (&(dev->read_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->read_buffer), read_buffer_size));
+ dev->read_buffer.clear();
+ dev->read_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->lines_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->lines_buffer), read_buffer_size));
+ dev->lines_buffer.clear();
+ dev->lines_buffer.alloc(read_buffer_size);
- RIE (sanei_genesys_buffer_free (&(dev->shrink_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->shrink_buffer),
- requested_buffer_size));
-
- RIE (sanei_genesys_buffer_free (&(dev->out_buffer)));
- RIE (sanei_genesys_buffer_alloc (&(dev->out_buffer),
- (8 * dev->settings.pixels * channels *
- depth) / 8));
+ dev->shrink_buffer.clear();
+ dev->shrink_buffer.alloc(requested_buffer_size);
+ dev->out_buffer.clear();
+ dev->out_buffer.alloc((8 * params.pixels * params.channels * params.depth) / 8);
dev->read_bytes_left = bytes_per_line * lincnt;
- DBG (DBG_info,
- "gl847_init_scan_regs: physical bytes to read = %lu\n",
- (u_long) dev->read_bytes_left);
+ DBG(DBG_info, "%s: physical bytes to read = %lu\n", __func__, (u_long) dev->read_bytes_left);
dev->read_active = SANE_TRUE;
-
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
@@ -1527,7 +1326,7 @@ gl847_init_scan_regs (Genesys_Device * dev,
/* scan bytes to send to the frontend */
/* theory :
target_size =
- (dev->settings.pixels * dev->settings.lines * channels * depth) / 8;
+ (params.pixels * params.lines * channels * depth) / 8;
but it suffers from integer overflow so we do the following:
1 bit color images store color data byte-wise, eg byte 0 contains
@@ -1539,36 +1338,29 @@ gl847_init_scan_regs (Genesys_Device * dev,
*/
dev->total_bytes_read = 0;
- if (depth == 1)
+ if (params.depth == 1)
dev->total_bytes_to_read =
- ((dev->settings.pixels * dev->settings.lines) / 8 +
- (((dev->settings.pixels * dev->settings.lines) % 8) ? 1 : 0)) *
- channels;
+ ((params.pixels * params.lines) / 8 +
+ (((params.pixels * params.lines) % 8) ? 1 : 0)) *
+ params.channels;
else
dev->total_bytes_to_read =
- dev->settings.pixels * dev->settings.lines * channels * (depth / 8);
+ params.pixels * params.lines * params.channels * (params.depth / 8);
- DBG (DBG_info, "gl847_init_scan_regs: total bytes to send = %lu\n",
- (u_long) dev->total_bytes_to_read);
+ DBG(DBG_info, "%s: total bytes to send = %lu\n", __func__, (u_long) dev->total_bytes_to_read);
/* END TODO */
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
-static SANE_Status
-gl847_calculate_current_setup (Genesys_Device * dev)
+static void
+gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int depth;
int start;
- float xres; /*dpi */
- float yres; /*dpi */
- float startx; /*optical_res, from dummy_pixel+1 */
- float pixels;
- float lines;
-
int used_res;
int used_pixels;
unsigned int lincnt;
@@ -1582,161 +1374,111 @@ gl847_calculate_current_setup (Genesys_Device * dev)
SANE_Bool half_ccd; /* false: full CCD res is used, true, half max CCD res is used */
int optical_res;
- DBG (DBG_info,
- "gl847_calculate_current_setup settings:\n"
- "Resolution: %uDPI\n"
- "Lines : %u\n"
- "PPL : %u\n"
- "Startpos : %.3f/%.3f\n"
- "Scan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == 4) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == 0)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
-
-
- xres = dev->settings.xres; /*dpi */
- yres = dev->settings.yres; /*dpi */
- startx = start; /*optical_res, from dummy_pixel+1 */
- pixels = dev->settings.pixels;
- lines = dev->settings.lines;
-
- DBG (DBG_info,
- "gl847_calculate_current_setup settings:\n"
- "Resolution : %gDPI/%gDPI\n"
- "Lines : %g\n"
- "PPL : %g\n"
- "Startpos : %g\n"
- "Depth/Channels: %u/%u\n\n",
- xres, yres, lines, pixels, startx, depth, channels);
+ start = (start * sensor.optical_res) / MM_PER_INCH;
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start; // not used
+ params.starty = 0; // not used
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = 0;
+
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, params);
/* half_ccd */
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
- if ((dev->sensor.optical_res < 2 * xres) ||
- !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE))
- {
- half_ccd = SANE_FALSE;
- }
- else
- {
- half_ccd = SANE_TRUE;
+ if (sensor.get_ccd_size_divisor_for_dpi(params.xres) > 1) {
+ half_ccd = SANE_TRUE;
+ } else {
+ half_ccd = SANE_FALSE;
}
/* optical_res */
- optical_res = dev->sensor.optical_res;
+ optical_res = sensor.optical_res;
/* stagger */
if (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)
- stagger = (4 * yres) / dev->motor.base_ydpi;
+ stagger = (4 * params.yres) / dev->motor.base_ydpi;
else
stagger = 0;
- DBG (DBG_info, "gl847_calculate_current_setup: stagger=%d lines\n",
- stagger);
+ DBG(DBG_info, "%s: stagger=%d lines\n", __func__, stagger);
/* resolution is choosen from a fixed list */
- used_res = xres;
+ used_res = params.xres;
/* compute scan parameters values */
/* pixels are allways given at half or full CCD optical resolution */
/* use detected left margin and fixed value */
/* compute correct pixels number */
- used_pixels = (pixels * optical_res) / used_res;
- dummy = 3-channels;
+ used_pixels = (params.pixels * optical_res) / used_res;
+ dummy = 3 - params.channels;
/* slope_dpi */
/* cis color scan is effectively a gray scan with 3 gray lines per color
line and a FILTER of 0 */
- if (dev->model->is_cis)
- slope_dpi = yres * channels;
- else
- slope_dpi = yres;
+ if (dev->model->is_cis) {
+ slope_dpi = params.yres * params.channels;
+ } else {
+ slope_dpi = params.yres;
+ }
slope_dpi = slope_dpi * (1 + dummy);
exposure_time = gl847_compute_exposure (dev, used_res);
- DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
+ DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
/* max_shift */
- max_shift=sanei_genesys_compute_max_shift(dev,channels,yres,0);
+ max_shift = sanei_genesys_compute_max_shift(dev, params.channels, params.yres, 0);
/* lincnt */
- lincnt = lines + max_shift + stagger;
+ lincnt = params.lines + max_shift + stagger;
+ dev->current_setup.params = params;
dev->current_setup.pixels = (used_pixels * used_res) / optical_res;
dev->current_setup.lines = lincnt;
- dev->current_setup.depth = depth;
- dev->current_setup.channels = channels;
+ dev->current_setup.depth = params.depth;
+ dev->current_setup.channels = params.channels;
dev->current_setup.exposure_time = exposure_time;
dev->current_setup.xres = used_res;
- dev->current_setup.yres = yres;
- dev->current_setup.half_ccd = half_ccd;
+ dev->current_setup.yres = params.yres;
+ dev->current_setup.ccd_size_divisor = half_ccd ? 2 : 1;
dev->current_setup.stagger = stagger;
dev->current_setup.max_shift = max_shift + stagger;
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
-}
-
-static void
-gl847_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
-{
-
- DBG (DBG_proc, "gl847_set_motor_power\n");
-
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- | REG02_MTRPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG02,
- sanei_genesys_read_reg_from_set (regs,
- REG02)
- & ~REG02_MTRPWR);
- }
-}
-
-static void
-gl847_set_lamp_power (Genesys_Device __sane_unused__ * dev,
- Genesys_Register_Set * regs, SANE_Bool set)
-{
- if (set)
- {
- sanei_genesys_set_reg_from_set (regs, REG03,
- sanei_genesys_read_reg_from_set (regs, REG03)
- | REG03_LAMPPWR);
- }
- else
- {
- sanei_genesys_set_reg_from_set (regs, REG03,
- sanei_genesys_read_reg_from_set (regs, REG03)
- & ~REG03_LAMPPWR);
- }
}
/*for fast power saving methods only, like disabling certain amplifiers*/
static SANE_Status
gl847_save_power (Genesys_Device * dev, SANE_Bool enable)
{
- DBG (DBG_proc, "gl847_save_power: enable = %d\n", enable);
+ DBG(DBG_proc, "%s: enable = %d\n", __func__, enable);
if (dev == NULL)
return SANE_STATUS_INVAL;
@@ -1747,7 +1489,7 @@ gl847_save_power (Genesys_Device * dev, SANE_Bool enable)
static SANE_Status
gl847_set_powersaving (Genesys_Device * dev, int delay /* in minutes */ )
{
- DBG (DBG_proc, "gl847_set_powersaving (delay = %d)\n", delay);
+ DBG(DBG_proc, "%s (delay = %d)\n", __func__, delay);
if (dev == NULL)
return SANE_STATUS_INVAL;
@@ -1761,13 +1503,10 @@ gl847_start_action (Genesys_Device * dev)
return sanei_genesys_write_register (dev, 0x0f, 0x01);
}
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl847_stop_action (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val40, val;
unsigned int loop;
@@ -1784,9 +1523,7 @@ gl847_stop_action (Genesys_Device * dev)
status = sanei_genesys_read_register (dev, REG40, &val40);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -1794,24 +1531,22 @@ gl847_stop_action (Genesys_Device * dev)
/* only stop action if needed */
if (!(val40 & REG40_DATAENB) && !(val40 & REG40_MOTMFLG))
{
- DBG (DBG_info, "%s: already stopped\n", __func__);
+ DBG(DBG_info, "%s: already stopped\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
/* ends scan */
- val = sanei_genesys_read_reg_from_set (dev->reg, REG01);
+ val = dev->reg.get8(REG01);
val &= ~REG01_SCAN;
- sanei_genesys_set_reg_from_set (dev->reg, REG01, val);
+ sanei_genesys_set_reg_from_set(&dev->reg, REG01, val);
status = sanei_genesys_write_register (dev, REG01, val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to write register 01: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to write register 01: %s\n", __func__, sane_strstatus(status));
return status;
}
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop = 10;
while (loop > 0)
@@ -1824,9 +1559,7 @@ gl847_stop_action (Genesys_Device * dev)
status = sanei_genesys_read_register (dev, REG40, &val40);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "%s: failed to read home sensor: %s\n", __func__,
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
@@ -1839,7 +1572,7 @@ gl847_stop_action (Genesys_Device * dev)
return SANE_STATUS_GOOD;
}
- usleep (100 * 1000);
+ sanei_genesys_sleep_ms(100);
loop--;
}
@@ -1848,16 +1581,14 @@ gl847_stop_action (Genesys_Device * dev)
}
/* Send the low-level scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
-gl847_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
+static SANE_Status
+gl847_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * reg,
SANE_Bool start_motor)
{
- SANE_Status status;
+ (void) sensor;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
- Genesys_Register_Set *r;
+ GenesysRegister *r;
DBGSTART;
@@ -1896,16 +1627,13 @@ gl847_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
- SANE_Status
+static SANE_Status
gl847_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
SANE_Bool check_stop)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_proc, "gl847_end_scan (check_stop = %d)\n", check_stop);
+ DBG(DBG_proc, "%s (check_stop = %d)\n", __func__, check_stop);
if (reg == NULL)
return SANE_STATUS_INVAL;
@@ -1918,9 +1646,7 @@ gl847_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
status = gl847_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_end_scan: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
}
@@ -1934,10 +1660,11 @@ gl847_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
* @param dev device to rewind
* @returns SANE_STATUS_GOOD on success
*/
-GENESYS_STATIC
+#if 0 /* disabled to fix #7 */
+static
SANE_Status gl847_rewind(Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t byte;
DBGSTART;
@@ -1951,7 +1678,7 @@ SANE_Status gl847_rewind(Genesys_Device * dev)
RIE (gl847_begin_scan (dev, dev->reg, SANE_TRUE));
do
{
- usleep(100*1000);
+ sanei_genesys_sleep_ms(100);
RIE (sanei_genesys_read_register (dev, REG40, &byte));
}
while(byte & REG40_MOTMFLG);
@@ -1965,6 +1692,7 @@ SANE_Status gl847_rewind(Genesys_Device * dev)
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
+#endif
/** Park head
* Moves the slider to the home (top) position slowly
@@ -1972,20 +1700,19 @@ SANE_Status gl847_rewind(Genesys_Device * dev)
* @param wait_until_home true to make the function waiting for head
* to be home before returning, if fals returne immediately
* @returns SANE_STATUS_GOO on success */
-GENESYS_STATIC
+static
SANE_Status
gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
{
- Genesys_Register_Set local_reg[GENESYS_GL847_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
float resolution;
uint8_t val;
int loop = 0;
- int scan_mode;
+ ScanColorMode scan_mode;
- DBG (DBG_proc, "gl847_slow_back_home (wait_until_home = %d)\n",
- wait_until_home);
+ DBG(DBG_proc, "%s (wait_until_home = %d)\n", __func__, wait_until_home);
/* post scan gpio : without that HOMSNR is unreliable */
gl847_homsnr_gpio(dev);
@@ -1994,24 +1721,20 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
{
sanei_genesys_print_status (val);
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
/* second is reliable */
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_io)
@@ -2022,62 +1745,77 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* is sensor at home? */
if (val & HOMESNR)
{
- DBG (DBG_info, "%s: already at home, completed\n", __func__);
+ DBG(DBG_info, "%s: already at home, completed\n", __func__);
dev->scanhead_position_in_steps = 0;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
- memcpy (local_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_ydpi(dev);
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
+
/* TODO add scan_mode to the API */
- scan_mode= dev->settings.scan_mode;
- dev->settings.scan_mode=SCAN_MODE_LINEART;
- status = gl847_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 100,
- 30000,
- 100,
- 100,
- 8,
- 1,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ scan_mode = dev->settings.scan_mode;
+ dev->settings.scan_mode = ScanColorMode::LINEART;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 100;
+ params.starty = 30000;
+ params.pixels = 100;
+ params.lines = 100;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
- dev->settings.scan_mode=scan_mode;
+ dev->settings.scan_mode = scan_mode;
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
/* set up for reverse */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address (&local_reg, REG02);
r->value |= REG02_MTRREV;
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL847_MAX_REGS));
-
- status = gl847_start_action (dev);
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl847_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl847_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to start motor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl847_stop_action (dev);
/* send original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL847_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
return status;
}
@@ -2091,32 +1829,30 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_slow_back_home: failed to read home sensor: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read home sensor: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
if (val & HOMESNR) /* home sensor */
{
- DBG (DBG_info, "gl847_slow_back_home: reached home position\n");
+ DBG(DBG_info, "%s: reached home position\n", __func__);
gl847_stop_action (dev);
dev->scanhead_position_in_steps = 0;
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
- usleep (100000); /* sleep 100 ms */
+ sanei_genesys_sleep_ms(100);
++loop;
}
/* when we come here then the scanner needed too much time for this, so we better stop the motor */
gl847_stop_action (dev);
- DBG (DBG_error,
- "gl847_slow_back_home: timeout while waiting for scanhead to go home\n");
+ DBG(DBG_error, "%s: timeout while waiting for scanhead to go home\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- DBG (DBG_info, "gl847_slow_back_home: scanhead is still moving\n");
+ DBG(DBG_info, "%s: scanhead is still moving\n", __func__);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -2127,64 +1863,66 @@ static SANE_Status
gl847_search_start_position (Genesys_Device * dev)
{
int size;
- SANE_Status status;
- uint8_t *data;
- Genesys_Register_Set local_reg[GENESYS_GL847_MAX_REGS];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
int steps;
int pixels = 600;
int dpi = 300;
- DBG (DBG_proc, "gl847_search_start_position\n");
+ DBG(DBG_proc, "%s\n", __func__);
- memcpy (local_reg, dev->reg,
- GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
/* sets for a 200 lines * 600 pixels */
/* normal scan with no shading */
- status = gl847_init_scan_regs (dev, local_reg, dpi, dpi, 0, 0, /*we should give a small offset here~60 steps */
- 600, dev->model->search_lines, 8, 1, 1, /*green */
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ // FIXME: the current approach of doing search only for one resolution does not work on scanners
+ // whith employ different sensors with potentially different settings.
+ auto& sensor = sanei_genesys_find_sensor_for_write(dev, dpi);
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0; /*we should give a small offset here~60 steps */
+ params.pixels = 600;
+ params.lines = dev->model->search_lines;
+ params.depth = 8;
+ params.channels = 1;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::GREEN;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_search_start_position: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
/* send to scanner */
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL847_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_search_start_position: failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
size = pixels * dev->model->search_lines;
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error,
- "gl847_search_start_position: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
- status = gl847_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2194,49 +1932,39 @@ gl847_search_start_position (Genesys_Device * dev)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("search_position.pnm", data, 8, 1, pixels,
- dev->model->search_lines);
+ sanei_genesys_write_pnm_file("gl847_search_position.pnm", data.data(), 8, 1, pixels,
+ dev->model->search_lines);
- status = gl847_end_scan (dev, local_reg, SANE_TRUE);
+ status = gl847_end_scan(dev, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to end scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to end scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* update regs to copy ASIC internal state */
- memcpy (dev->reg, local_reg,
- GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ dev->reg = local_reg;
/*TODO: find out where sanei_genesys_search_reference_point
stores information, and use that correctly*/
status =
- sanei_genesys_search_reference_point (dev, data, 0, dpi, pixels,
- dev->model->search_lines);
+ sanei_genesys_search_reference_point(dev, sensor, data.data(), 0, dpi, pixels,
+ dev->model->search_lines);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to set search reference point: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set search reference point: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- free (data);
return SANE_STATUS_GOOD;
}
@@ -2244,57 +1972,58 @@ gl847_search_start_position (Genesys_Device * dev)
* sets up register for coarse gain calibration
* todo: check it for scanners using it */
static SANE_Status
-gl847_init_regs_for_coarse_calibration (Genesys_Device * dev)
+gl847_init_regs_for_coarse_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t channels;
uint8_t cksel;
- DBG (DBG_proc, "gl847_init_regs_for_coarse_calibration\n");
+ DBG(DBG_proc, "%s\n", __func__);
- cksel = (dev->calib_reg[reg_0x18].value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
+ cksel = (regs.find_reg(0x18).value & REG18_CKSEL) + 1; /* clock speed = 1..4 clocks */
/* set line size */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
- else
+ else {
channels = 1;
+ }
+
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = sensor.optical_res / cksel;
+ params.lines = 20;
+ params.depth = 16;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &regs, params);
- status = gl847_init_scan_regs (dev,
- dev->calib_reg,
- dev->settings.xres,
- dev->settings.yres,
- 0,
- 0,
- dev->sensor.optical_res / cksel,
- 20,
- 16,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_init_register_for_coarse_calibration: Failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_info,
- "gl847_init_register_for_coarse_calibration: optical sensor res: %d dpi, actual res: %d\n",
- dev->sensor.optical_res / cksel, dev->settings.xres);
+ DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
+ sensor.optical_res / cksel, dev->settings.xres);
status =
- dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_init_register_for_coarse_calibration: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2306,73 +2035,85 @@ gl847_init_regs_for_coarse_calibration (Genesys_Device * dev)
* @param dev device to work on
* @param steps number of steps to move in base_dpi line count
* */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl847_feed (Genesys_Device * dev, unsigned int steps)
{
- Genesys_Register_Set local_reg[GENESYS_GL847_MAX_REGS];
- SANE_Status status;
- Genesys_Register_Set *r;
+ Genesys_Register_Set local_reg;
+ SANE_Status status = SANE_STATUS_GOOD;
+ GenesysRegister *r;
float resolution;
uint8_t val;
DBGSTART;
- DBG (DBG_io, "%s: steps=%d\n", __func__, steps);
+ DBG(DBG_io, "%s: steps=%d\n", __func__, steps);
- /* prepare local registers */
- memcpy (local_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ local_reg = dev->reg;
resolution=sanei_genesys_get_lowest_ydpi(dev);
- status = gl847_init_scan_regs (dev,
- local_reg,
- resolution,
- resolution,
- 0,
- steps,
- 100,
- 3,
- 8,
- 3,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_FEEDING |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ const auto& sensor = sanei_genesys_find_sensor(dev, resolution);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = steps;
+ params.pixels = 100;
+ params.lines = 3;
+ params.depth = 8;
+ params.channels = 3;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_FEEDING |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_feed: failed to set up registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to set up registers: %s\n", __func__, sane_strstatus(status));
DBGCOMPLETED;
return status;
}
/* set exposure to zero */
- sanei_genesys_set_triple(local_reg,REG_EXPR,0);
- sanei_genesys_set_triple(local_reg,REG_EXPG,0);
- sanei_genesys_set_triple(local_reg,REG_EXPB,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPR,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPG,0);
+ sanei_genesys_set_triple(&local_reg,REG_EXPB,0);
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRMCNT));
/* set up for no scan */
- r = sanei_genesys_get_address (local_reg, REG01);
+ r = sanei_genesys_get_address(&local_reg, REG01);
r->value &= ~REG01_SCAN;
/* send registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL847_MAX_REGS));
-
- status = gl847_start_action (dev);
+ RIE (dev->model->cmd_set->bulk_write_register(dev, local_reg));
+
+ try {
+ status = gl847_start_action (dev);
+ } catch (...) {
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
+ try {
+ gl847_stop_action(dev);
+ } catch (...) {}
+ try {
+ // restore original registers
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
+ } catch (...) {}
+ throw;
+ }
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to start motor: %s\n", __func__, sane_strstatus(status));
gl847_stop_action (dev);
/* restore original registers */
- dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL847_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, dev->reg);
return status;
}
@@ -2394,24 +2135,26 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
/* init registers for shading calibration */
static SANE_Status
-gl847_init_regs_for_shading (Genesys_Device * dev)
+gl847_init_regs_for_shading(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
float move;
DBGSTART;
dev->calib_channels = 3;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
+ regs = dev->reg;
- dev->calib_resolution = sanei_genesys_compute_dpihw(dev,dev->settings.xres);
+ dev->calib_resolution = sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ dev->calib_total_bytes_to_read = 0;
dev->calib_lines = dev->model->shading_lines;
if(dev->calib_resolution==4800)
dev->calib_lines *= 2;
- dev->calib_pixels = (dev->sensor.sensor_pixels*dev->calib_resolution)/dev->sensor.optical_res;
- DBG (DBG_io, "%s: calib_lines = %d\n", __func__, (int)dev->calib_lines);
- DBG (DBG_io, "%s: calib_pixels = %d\n", __func__, (int)dev->calib_pixels);
+ dev->calib_pixels = (sensor.sensor_pixels*dev->calib_resolution)/sensor.optical_res;
+ DBG(DBG_io, "%s: calib_lines = %d\n", __func__, (int)dev->calib_lines);
+ DBG(DBG_io, "%s: calib_pixels = %d\n", __func__, (int)dev->calib_pixels);
/* this is aworkaround insufficent distance for slope
* motor acceleration TODO special motor slope for shading */
@@ -2421,32 +2164,35 @@ gl847_init_regs_for_shading (Genesys_Device * dev)
move=40;
}
- status = gl847_init_scan_regs (dev,
- dev->calib_reg,
- dev->calib_resolution,
- dev->calib_resolution,
- 0,
- move,
- dev->calib_pixels,
- dev->calib_lines,
- 16,
- dev->calib_channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ SetupParams params;
+ params.xres = dev->calib_resolution;
+ params.yres = dev->calib_resolution;
+ params.startx = 0;
+ params.starty = move;
+ params.pixels = dev->calib_pixels;
+ params.lines = dev->calib_lines;
+ params.depth = 16;
+ params.channels = dev->calib_channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &regs, params);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, regs);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -2460,7 +2206,7 @@ gl847_init_regs_for_shading (Genesys_Device * dev)
/** @brief set up registers for the actual scan
*/
static SANE_Status
-gl847_init_regs_for_scan (Genesys_Device * dev)
+gl847_init_regs_for_scan (Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int channels;
int flags;
@@ -2469,23 +2215,20 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
int move_dpi;
float start;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- DBG (DBG_info,
- "gl847_init_regs_for_scan settings:\nResolution: %uDPI\n"
- "Lines : %u\nPPL : %u\nStartpos : %.3f/%.3f\nScan mode : %d\n\n",
- dev->settings.yres, dev->settings.lines, dev->settings.pixels,
- dev->settings.tl_x, dev->settings.tl_y, dev->settings.scan_mode);
+ DBG(DBG_info, "%s ", __func__);
+ debug_dump(DBG_info, dev->settings);
/* channels */
- if (dev->settings.scan_mode == SCAN_MODE_COLOR) /* single pass color */
+ if (dev->settings.scan_mode == ScanColorMode::COLOR_SINGLE_PASS)
channels = 3;
else
channels = 1;
/* depth */
depth = dev->settings.depth;
- if (dev->settings.scan_mode == SCAN_MODE_LINEART)
+ if (dev->settings.scan_mode == ScanColorMode::LINEART)
depth = 1;
@@ -2514,7 +2257,7 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
move += dev->settings.tl_y;
move = (move * move_dpi) / MM_PER_INCH;
move -= dev->scanhead_position_in_steps;
- DBG (DBG_info, "%s: move=%f steps\n",__func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
/* fast move to scan area */
/* we don't move fast the whole distance since it would involve
@@ -2526,24 +2269,24 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
status = gl847_feed (dev, move-500);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to move to scan area\n",__func__);
+ DBG(DBG_error, "%s: failed to move to scan area\n", __func__);
return status;
}
move=500;
}
- DBG (DBG_info, "gl124_init_regs_for_scan: move=%f steps\n", move);
- DBG (DBG_info, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_info, "%s: move=%f steps\n", __func__, move);
/* start */
start = SANE_UNFIX (dev->model->x_offset);
start += dev->settings.tl_x;
- start = (start * dev->sensor.optical_res) / MM_PER_INCH;
+ start = (start * sensor.optical_res) / MM_PER_INCH;
flags = 0;
/* emulated lineart from gray data is required for now */
- if(dev->settings.scan_mode == SCAN_MODE_LINEART
+ if(dev->settings.scan_mode == ScanColorMode::LINEART
&& dev->settings.dynamic_lineart)
{
flags |= SCAN_FLAG_DYNAMIC_LINEART;
@@ -2552,18 +2295,21 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
/* backtracking isn't handled well, so don't enable it */
flags |= SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE;
- status = gl847_init_scan_regs (dev,
- dev->reg,
- dev->settings.xres,
- dev->settings.yres,
- start,
- move,
- dev->settings.pixels,
- dev->settings.lines,
- depth,
- channels,
- dev->settings.color_filter,
- flags);
+ SetupParams params;
+ params.xres = dev->settings.xres;
+ params.yres = dev->settings.yres;
+ params.startx = start;
+ params.starty = move;
+ params.pixels = dev->settings.pixels;
+ params.lines = dev->settings.lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = dev->settings.scan_mode;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = flags;
+
+ status = gl847_init_scan_regs(dev, sensor, &dev->reg, params);
if (status != SANE_STATUS_GOOD)
return status;
@@ -2578,17 +2324,18 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
* for all the channels.
*/
static SANE_Status
-gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
+gl847_send_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size)
{
SANE_Status status = SANE_STATUS_GOOD;
uint32_t addr, length, i, x, factor, pixels;
uint32_t dpiset, dpihw, strpixel, endpixel;
uint16_t tempo;
uint32_t lines, channels;
- uint8_t val,*buffer,*ptr,*src;
+ uint8_t val,*ptr,*src;
DBGSTART;
- DBG( DBG_io2, "%s: writing %d bytes of shading data\n",__func__,size);
+ DBG(DBG_io2, "%s: writing %d bytes of shading data\n", __func__, size);
/* shading data is plit in 3 (up to 5 with IR) areas
write(0x10014000,0x00000dd8)
@@ -2597,23 +2344,24 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
write(0x10068000,0x00000dd8)
*/
length = (uint32_t) (size / 3);
- sanei_genesys_get_double(dev->reg,REG_STRPIXEL,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_STRPIXEL,&tempo);
strpixel=tempo;
- sanei_genesys_get_double(dev->reg,REG_ENDPIXEL,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_ENDPIXEL,&tempo);
endpixel=tempo;
/* compute deletion factor */
- sanei_genesys_get_double(dev->reg,REG_DPISET,&tempo);
+ sanei_genesys_get_double(&dev->reg,REG_DPISET,&tempo);
dpiset=tempo;
- DBG( DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d, DPISET=%d\n",__func__,strpixel,endpixel,endpixel-strpixel,dpiset);
- dpihw=sanei_genesys_compute_dpihw(dev,dpiset);
+ DBG(DBG_io2, "%s: STRPIXEL=%d, ENDPIXEL=%d, PIXELS=%d, DPISET=%d\n", __func__, strpixel, endpixel,
+ endpixel-strpixel, dpiset);
+ dpihw=sanei_genesys_compute_dpihw(dev, sensor, dpiset);
factor=dpihw/dpiset;
- DBG( DBG_io2, "%s: factor=%d\n",__func__,factor);
+ DBG(DBG_io2, "%s: factor=%d\n", __func__, factor);
if(DBG_LEVEL>=DBG_data)
{
dev->binary=fopen("binary.pnm","wb");
- sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
+ sanei_genesys_get_triple(&dev->reg, REG_LINCNT, &lines);
channels=dev->current_setup.channels;
if(dev->binary!=NULL)
{
@@ -2624,16 +2372,15 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
pixels=endpixel-strpixel;
/* since we're using SHDAREA, substract startx coordinate from shading */
- strpixel-=((dev->sensor.CCD_start_xoffset*600)/dev->sensor.optical_res);
+ strpixel-=((sensor.CCD_start_xoffset*600)/sensor.optical_res);
/* turn pixel value into bytes 2x16 bits words */
strpixel*=2*2;
pixels*=2*2;
- /* allocate temporary buffer */
- buffer=(uint8_t *)malloc(pixels);
- memset(buffer,0,pixels);
- DBG( DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n",__func__,pixels,pixels);
+ std::vector<uint8_t> buffer(pixels, 0);
+
+ DBG(DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n", __func__, pixels, pixels);
/* base addr of data has been written in reg D0-D4 in 4K word, so AHB address
* is 8192*reg value */
@@ -2643,7 +2390,7 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
{
/* build up actual shading data by copying the part from the full width one
* to the one corresponding to SHDAREA */
- ptr=buffer;
+ ptr = buffer.data();
/* iterate on both sensor segment */
for(x=0;x<pixels;x+=4*factor)
@@ -2663,16 +2410,14 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
RIE (sanei_genesys_read_register (dev, 0xd0+i, &val));
addr = val * 8192 + 0x10000000;
- status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, addr, pixels, buffer);
+ status = sanei_genesys_write_ahb(dev, addr, pixels, buffer.data());
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "gl847_send_shading_data; write to AHB failed (%s)\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s; write to AHB failed (%s)\n", __func__, sane_strstatus(status));
return status;
}
}
- free(buffer);
DBGCOMPLETED;
return status;
@@ -2684,21 +2429,18 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
* @param dev device to calibrate
*/
static SANE_Status
-gl847_led_calibration (Genesys_Device * dev)
+gl847_led_calibration (Genesys_Device * dev, Genesys_Sensor& sensor, Genesys_Register_Set& regs)
{
int num_pixels;
int total_size;
int used_res;
- uint8_t *line;
int i, j;
SANE_Status status = SANE_STATUS_GOOD;
int val;
int channels, depth;
int avg[3], top[3], bottom[3];
int turn;
- char fn[20];
uint16_t exp[3];
- Sensor_Profile *sensor;
float move;
SANE_Bool acceptable;
@@ -2710,49 +2452,50 @@ gl847_led_calibration (Genesys_Device * dev)
{
RIE(gl847_feed (dev, move));
}
- DBG (DBG_io, "%s: move=%f steps\n", __func__, move);
+ DBG(DBG_io, "%s: move=%f steps\n", __func__, move);
/* offset calibration is always done in color mode */
channels = 3;
depth=16;
- used_res=sanei_genesys_compute_dpihw(dev,dev->settings.xres);
- sensor=get_sensor_profile(dev->model->ccd_type, used_res);
- num_pixels = (dev->sensor.sensor_pixels*used_res)/dev->sensor.optical_res;
+ used_res=sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ Sensor_Profile* sensor_profile=get_sensor_profile(dev->model->ccd_type, used_res);
+ num_pixels = (sensor.sensor_pixels*used_res)/sensor.optical_res;
/* initial calibration reg values */
- memcpy (dev->calib_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
-
- /* set up for the calibration scan */
- status = gl847_init_scan_regs (dev,
- dev->calib_reg,
- used_res,
- used_res,
- 0,
- 0,
- num_pixels,
- 1,
- depth,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ regs = dev->reg;
+
+ SetupParams params;
+ params.xres = used_res;
+ params.yres = used_res;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = num_pixels;
+ params.lines = 1;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
total_size = num_pixels * channels * (depth/8) * 1; /* colors * bytes_per_color * scan lines */
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
/* initial loop values and boundaries */
- exp[0]=sensor->expr;
- exp[1]=sensor->expg;
- exp[2]=sensor->expb;
+ exp[0]=sensor_profile->expr;
+ exp[1]=sensor_profile->expg;
+ exp[2]=sensor_profile->expb;
bottom[0]=29000;
bottom[1]=29000;
@@ -2765,28 +2508,29 @@ gl847_led_calibration (Genesys_Device * dev)
turn = 0;
/* no move during led calibration */
- gl847_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
do
{
/* set up exposure */
- sanei_genesys_set_double(dev->calib_reg,REG_EXPR,exp[0]);
- sanei_genesys_set_double(dev->calib_reg,REG_EXPG,exp[1]);
- sanei_genesys_set_double(dev->calib_reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_double(&regs,REG_EXPR,exp[0]);
+ sanei_genesys_set_double(&regs,REG_EXPG,exp[1]);
+ sanei_genesys_set_double(&regs,REG_EXPB,exp[2]);
/* write registers and scan data */
- RIEF (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS), line);
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
- DBG (DBG_info, "gl847_led_calibration: starting line reading\n");
- RIEF (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ DBG(DBG_info, "%s: starting line reading\n", __func__);
+ RIE(gl847_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
/* stop scanning */
- RIEF (gl847_stop_action (dev), line);
+ RIE(gl847_stop_action (dev));
if (DBG_LEVEL >= DBG_data)
{
- snprintf (fn, 20, "led_%02d.pnm", turn);
- sanei_genesys_write_pnm_file (fn, line, depth, channels, num_pixels, 1);
+ char fn[30];
+ snprintf(fn, 30, "gl847_led_%02d.pnm", turn);
+ sanei_genesys_write_pnm_file(fn, line.data(), depth, channels, num_pixels, 1);
}
/* compute average */
@@ -2809,7 +2553,7 @@ gl847_led_calibration (Genesys_Device * dev)
avg[j] /= num_pixels;
}
- DBG (DBG_info, "gl847_led_calibration: average: %d,%d,%d\n", avg[0], avg[1], avg[2]);
+ DBG(DBG_info, "%s: average: %d,%d,%d\n", __func__, avg[0], avg[1], avg[2]);
/* check if exposure gives average within the boundaries */
acceptable = SANE_TRUE;
@@ -2831,23 +2575,17 @@ gl847_led_calibration (Genesys_Device * dev)
}
while (!acceptable && turn < 100);
- DBG (DBG_info, "gl847_led_calibration: acceptable exposure: %d,%d,%d\n", exp[0], exp[1], exp[2]);
+ DBG(DBG_info, "%s: acceptable exposure: %d,%d,%d\n", __func__, exp[0], exp[1], exp[2]);
/* set these values as final ones for scan */
- sanei_genesys_set_double(dev->reg,REG_EXPR,exp[0]);
- sanei_genesys_set_double(dev->reg,REG_EXPG,exp[1]);
- sanei_genesys_set_double(dev->reg,REG_EXPB,exp[2]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPR,exp[0]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPG,exp[1]);
+ sanei_genesys_set_double(&dev->reg,REG_EXPB,exp[2]);
/* store in this struct since it is the one used by cache calibration */
- dev->sensor.regs_0x10_0x1d[0] = (exp[0] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[1] = exp[0] & 0xff;
- dev->sensor.regs_0x10_0x1d[2] = (exp[1] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[3] = exp[1] & 0xff;
- dev->sensor.regs_0x10_0x1d[4] = (exp[2] >> 8) & 0xff;
- dev->sensor.regs_0x10_0x1d[5] = exp[2] & 0xff;
-
- /* cleanup before return */
- free (line);
+ sensor.exposure.red = exp[0];
+ sensor.exposure.green = exp[1];
+ sensor.exposure.blue = exp[2];
/* go back home */
if(move>20)
@@ -2877,7 +2615,8 @@ gl847_init_gpio (Genesys_Device * dev)
}
if(gpios[idx].sensor_id==0)
{
- DBG (DBG_error, "%s: failed to find GPIO profile for sensor_id=%d\n", __func__, dev->model->ccd_type);
+ DBG(DBG_error, "%s: failed to find GPIO profile for sensor_id=%d\n", __func__,
+ dev->model->ccd_type);
return SANE_STATUS_INVAL;
}
@@ -2910,23 +2649,23 @@ gl847_init_memory_layout (Genesys_Device * dev)
int idx = 0;
uint8_t val;
- DBG (DBG_proc, "gl847_init_memory_layout\n");
+ DBG(DBG_proc, "%s\n" , __func__);
/* point to per model memory layout */
idx = 0;
- if (strcmp (dev->model->name, "canon-lide-100") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_100)
{
idx = 0;
}
- if (strcmp (dev->model->name, "canon-lide-200") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_200)
{
idx = 1;
}
- if (strcmp (dev->model->name, "canon-5600f") == 0)
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_5600F)
{
idx = 2;
}
- if (strcmp (dev->model->name, "canon-lide-700f") == 0)
+ if (dev->model->model_id == MODEL_CANON_LIDE_700F)
{
idx = 3;
}
@@ -2934,10 +2673,10 @@ gl847_init_memory_layout (Genesys_Device * dev)
/* CLKSET nd DRAMSEL */
val = layouts[idx].dramsel;
RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
+ dev->reg.find_reg(0x0b).value = val;
/* prevent further writings by bulk write register */
- dev->reg[reg_0x0b].address = 0x00;
+ dev->reg.remove_reg(0x0b);
/* setup base address for shading data. */
/* values must be multiplied by 8192=0x4000 to give address on AHB */
@@ -2995,7 +2734,7 @@ gl847_init_memory_layout (Genesys_Device * dev)
static SANE_Status
gl847_boot (Genesys_Device * dev, SANE_Bool cold)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
DBGSTART;
@@ -3012,24 +2751,24 @@ gl847_boot (Genesys_Device * dev, SANE_Bool cold)
if (val & REG40_CHKVER)
{
RIE (sanei_genesys_read_register (dev, 0x00, &val));
- DBG (DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
+ DBG(DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
}
/* Set default values for registers */
gl847_init_registers (dev);
/* Write initial registers */
- RIE (dev->model->cmd_set->bulk_write_register (dev, dev->reg, GENESYS_GL847_MAX_REGS));
+ RIE (dev->model->cmd_set->bulk_write_register(dev, dev->reg));
/* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */
- val = dev->reg[reg_0x0b].value & REG0B_DRAMSEL;
+ val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
val = (val | REG0B_ENBDRAM);
RIE (sanei_genesys_write_register (dev, REG0B, val));
- dev->reg[reg_0x0b].value = val;
+ dev->reg.find_reg(0x0b).value = val;
/* CIS_LINE */
SETREG (0x08, REG08_CIS_LINE);
- RIE (sanei_genesys_write_register (dev, 0x08, dev->reg[reg_0x08].value));
+ RIE (sanei_genesys_write_register (dev, 0x08, dev->reg.find_reg(0x08).value));
/* set up end access */
RIE (sanei_genesys_write_0x8c (dev, 0x10, 0x0b));
@@ -3042,7 +2781,7 @@ gl847_boot (Genesys_Device * dev, SANE_Bool cold)
RIE (gl847_init_memory_layout (dev));
SETREG (0xf8, 0x01);
- RIE (sanei_genesys_write_register (dev, 0xf8, dev->reg[reg_0xf8].value));
+ RIE (sanei_genesys_write_register (dev, 0xf8, dev->reg.find_reg(0xf8).value));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
@@ -3052,17 +2791,14 @@ gl847_boot (Genesys_Device * dev, SANE_Bool cold)
* initialize backend and ASIC : registers, motor tables, and gamma tables
* then ensure scanner's head is at home
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl847_init (Genesys_Device * dev)
+static SANE_Status gl847_init (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG_INIT ();
DBGSTART;
- status=sanei_genesys_asic_init(dev, GENESYS_GL847_MAX_REGS);
+ status=sanei_genesys_asic_init(dev, 0);
DBGCOMPLETED;
return status;
@@ -3093,14 +2829,10 @@ gl847_update_hardware_sensors (Genesys_Scanner * s)
}
RIE (sanei_genesys_read_register (s->dev, REG6D, &val));
- if (s->val[OPT_SCAN_SW].b == s->last_val[OPT_SCAN_SW].b)
- s->val[OPT_SCAN_SW].b = (val & scan) == 0;
- if (s->val[OPT_FILE_SW].b == s->last_val[OPT_FILE_SW].b)
- s->val[OPT_FILE_SW].b = (val & file) == 0;
- if (s->val[OPT_EMAIL_SW].b == s->last_val[OPT_EMAIL_SW].b)
- s->val[OPT_EMAIL_SW].b = (val & email) == 0;
- if (s->val[OPT_COPY_SW].b == s->last_val[OPT_COPY_SW].b)
- s->val[OPT_COPY_SW].b = (val & copy) == 0;
+ 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);
return status;
}
@@ -3115,28 +2847,25 @@ gl847_update_hardware_sensors (Genesys_Scanner * s)
* @return SANE_STATUS_GOOD if a matching strip is found, SANE_STATUS_UNSUPPORTED if not
*/
static SANE_Status
-gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
+gl847_search_strip (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ SANE_Bool forward, SANE_Bool black)
{
unsigned int pixels, lines, channels;
- SANE_Status status;
- Genesys_Register_Set local_reg[GENESYS_GL847_MAX_REGS];
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set local_reg;
size_t size;
- uint8_t *data;
int steps, depth, dpi;
unsigned int pass, count, found, x, y;
char title[80];
- Genesys_Register_Set *r;
+ GenesysRegister *r;
- DBG (DBG_proc, "gl847_search_strip %s %s\n", black ? "black" : "white",
- forward ? "forward" : "reverse");
+ DBG(DBG_proc, "%s %s %s\n", __func__, black ? "black" : "white", forward ? "forward" : "reverse");
- gl847_set_fe (dev, AFE_SET);
+ gl847_set_fe(dev, sensor, AFE_SET);
status = gl847_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_search_strip: failed to stop: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to stop: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3153,66 +2882,55 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
/* shading calibation is done with dev->motor.base_ydpi */
lines = (dev->model->shading_lines * dpi) / dev->motor.base_ydpi;
depth = 8;
- pixels = (dev->sensor.sensor_pixels * dpi) / dev->sensor.optical_res;
+ pixels = (sensor.sensor_pixels * dpi) / sensor.optical_res;
size = pixels * channels * lines * (depth / 8);
- data = malloc (size);
- if (!data)
- {
- DBG (DBG_error, "gl847_search_strip: failed to allocate memory\n");
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> data(size);
dev->scanhead_position_in_steps = 0;
- memcpy (local_reg, dev->reg,
- GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
-
- status = gl847_init_scan_regs (dev,
- local_reg,
- dpi,
- dpi,
- 0,
- 0,
- pixels,
- lines,
- depth,
- channels,
- 0,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA);
+ local_reg = dev->reg;
+
+ SetupParams params;
+ params.xres = dpi;
+ params.yres = dpi;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = depth;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::GRAY;
+ params.color_filter = ColorFilter::RED;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA;
+
+ status = gl847_init_scan_regs(dev, sensor, &local_reg, params);
+
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error,
- "gl847_search_strip: failed to setup for scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup for scan: %s\n", __func__, sane_strstatus(status));
return status;
}
/* set up for reverse or forward */
- r = sanei_genesys_get_address (local_reg, REG02);
+ r = sanei_genesys_get_address(&local_reg, REG02);
if (forward)
r->value &= ~REG02_MTRREV;
else
r->value |= REG02_MTRREV;
- status = dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL847_MAX_REGS);
+ status = dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- free(data);
- DBG (DBG_error,
- "gl847_search_strip: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__, sane_strstatus(status));
return status;
}
- status = gl847_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3222,31 +2940,26 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl847_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error, "gl847_search_strip: gl847_stop_action failed\n");
+ DBG(DBG_error, "%s: gl847_stop_action failed\n", __func__);
return status;
}
pass = 0;
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels, pixels,
- lines);
+ sprintf(title, "gl847_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
}
/* loop until strip is found or maximum pass number done */
@@ -3254,23 +2967,19 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (pass < 20 && !found)
{
status =
- dev->model->cmd_set->bulk_write_register (dev, local_reg, GENESYS_GL847_MAX_REGS);
+ dev->model->cmd_set->bulk_write_register(dev, local_reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_search_strip: Failed to bulk write registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: Failed to bulk write registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
/* now start scan */
- status = gl847_begin_scan (dev, local_reg, SANE_TRUE);
+ status = gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_strip: failed to begin scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to begin scan: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -3280,30 +2989,25 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
while (steps);
/* now we're on target, we can read data */
- status = sanei_genesys_read_data_from_scanner (dev, data, size);
+ status = sanei_genesys_read_data_from_scanner(dev, data.data(), size);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error,
- "gl847_search_start_position: failed to read data: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read data: %s\n", __func__, sane_strstatus(status));
return status;
}
status = gl847_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
- free (data);
- DBG (DBG_error, "gl847_search_strip: gl847_stop_action failed\n");
+ DBG(DBG_error, "%s: gl847_stop_action failed\n", __func__);
return status;
}
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "search_strip_%s_%s%02d.pnm",
- black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
- sanei_genesys_write_pnm_file (title, data, depth, channels,
- pixels, lines);
+ sprintf(title, "gl847_search_strip_%s_%s%02d.pnm",
+ black ? "black" : "white", forward ? "fwd" : "bwd", (int)pass);
+ sanei_genesys_write_pnm_file(title, data.data(), depth, channels, pixels, lines);
}
/* search data to find black strip */
@@ -3336,15 +3040,13 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
if ((count * 100) / pixels < 3)
{
found = 1;
- DBG (DBG_data,
- "gl847_search_strip: strip found forward during pass %d at line %d\n",
- pass, y);
+ DBG(DBG_data, "%s: strip found forward during pass %d at line %d\n", __func__,
+ pass, y);
}
else
{
- DBG (DBG_data,
- "gl847_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
}
}
}
@@ -3375,31 +3077,26 @@ gl847_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
if ((count * 100) / (pixels * lines) < 3)
{
found = 1;
- DBG (DBG_data,
- "gl847_search_strip: strip found backward during pass %d \n",
- pass);
+ DBG(DBG_data, "%s: strip found backward during pass %d \n", __func__, pass);
}
else
{
- DBG (DBG_data,
- "gl847_search_strip: pixels=%d, count=%d (%d%%)\n",
- pixels, count, (100 * count) / pixels);
+ DBG(DBG_data, "%s: pixels=%d, count=%d (%d%%)\n", __func__, pixels, count,
+ (100 * count) / pixels);
}
}
pass++;
}
- free (data);
+
if (found)
{
status = SANE_STATUS_GOOD;
- DBG (DBG_info, "gl847_search_strip: %s strip found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip found\n", __func__, black ? "black" : "white");
}
else
{
status = SANE_STATUS_UNSUPPORTED;
- DBG (DBG_info, "gl847_search_strip: %s strip not found\n",
- black ? "black" : "white");
+ DBG(DBG_info, "%s: %s strip not found\n", __func__, black ? "black" : "white");
}
DBGCOMPLETED;
@@ -3433,23 +3130,23 @@ dark_average (uint8_t * data, unsigned int pixels, unsigned int lines,
}
if (count)
avg[k] /= count;
- DBG (DBG_info, "dark_average: avg[%d] = %d\n", k, avg[k]);
+ DBG(DBG_info, "%s: avg[%d] = %d\n", __func__, k, avg[k]);
}
average = 0;
for (i = 0; i < channels; i++)
average += avg[i];
average /= channels;
- DBG (DBG_info, "dark_average: average = %d\n", average);
+ DBG(DBG_info, "%s: average = %d\n", __func__, average);
return average;
}
static SANE_Status
-gl847_offset_calibration (Genesys_Device * dev)
+gl847_offset_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs)
{
SANE_Status status = SANE_STATUS_GOOD;
- uint8_t *first_line, *second_line, reg04;
+ uint8_t reg04;
unsigned int channels, bpp;
- char title[32];
int pass = 0, avg, total_size;
int topavg, bottomavg, resolution, lines;
int top, bottom, black_pixels, pixels;
@@ -3466,90 +3163,85 @@ gl847_offset_calibration (Genesys_Device * dev)
/* offset calibration is always done in color mode */
channels = 3;
- resolution=dev->sensor.optical_res;
- dev->calib_pixels = dev->sensor.sensor_pixels;
+ resolution=sensor.optical_res;
+ dev->calib_pixels = sensor.sensor_pixels;
lines=1;
bpp=8;
- pixels= (dev->sensor.sensor_pixels*resolution) / dev->sensor.optical_res;
- black_pixels = (dev->sensor.black_pixels * resolution) / dev->sensor.optical_res;
- DBG (DBG_io2, "gl847_offset_calibration: black_pixels=%d\n", black_pixels);
-
- status = gl847_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ pixels= (sensor.sensor_pixels*resolution) / sensor.optical_res;
+ black_pixels = (sensor.black_pixels * resolution) / sensor.optical_res;
+ DBG(DBG_io2, "%s: black_pixels=%d\n", __func__, black_pixels);
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ status = gl847_init_scan_regs(dev, sensor, &regs, params);
+
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_offset_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- gl847_set_motor_power (dev->calib_reg, SANE_FALSE);
+ sanei_genesys_set_motor_power(regs, false);
/* allocate memory for scans */
total_size = pixels * channels * lines * (bpp/8); /* colors * bytes_per_color * scan lines */
- first_line = malloc (total_size);
- if (!first_line)
- return SANE_STATUS_NO_MEM;
-
- second_line = malloc (total_size);
- if (!second_line)
- {
- free (first_line);
- return SANE_STATUS_NO_MEM;
- }
+ std::vector<uint8_t> first_line(total_size);
+ std::vector<uint8_t> second_line(total_size);
/* init gain */
- dev->frontend.gain[0] = 0;
- dev->frontend.gain[1] = 0;
- dev->frontend.gain[2] = 0;
+ dev->frontend.set_gain(0, 0);
+ dev->frontend.set_gain(1, 0);
+ dev->frontend.set_gain(2, 0);
/* scan with no move */
bottom = 10;
- dev->frontend.offset[0] = bottom;
- dev->frontend.offset[1] = bottom;
- dev->frontend.offset[2] = bottom;
-
- RIEF2 (gl847_set_fe(dev, AFE_SET),first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS),first_line, second_line);
- DBG (DBG_info, "gl847_offset_calibration: starting first line reading\n");
- RIEF2 (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE),first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, first_line, total_size),first_line, second_line);
+ dev->frontend.set_offset(0, bottom);
+ dev->frontend.set_offset(1, bottom);
+ dev->frontend.set_offset(2, bottom);
+
+ RIE(gl847_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting first line reading\n", __func__);
+ RIE(gl847_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
{
- snprintf(title,20,"offset%03d.pnm",bottom);
- sanei_genesys_write_pnm_file (title, first_line, bpp, channels, pixels, lines);
+ char fn[30];
+ snprintf(fn, 30, "gl847_offset%03d.pnm", bottom);
+ sanei_genesys_write_pnm_file(fn, first_line.data(), bpp, channels, pixels, lines);
}
- bottomavg = dark_average (first_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl847_offset_calibration: bottom avg=%d\n", bottomavg);
+ bottomavg = dark_average (first_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: bottom avg=%d\n", __func__, bottomavg);
/* now top value */
top = 255;
- dev->frontend.offset[0] = top;
- dev->frontend.offset[1] = top;
- dev->frontend.offset[2] = top;
- RIEF2 (gl847_set_fe(dev, AFE_SET),first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS),first_line, second_line);
- DBG (DBG_info, "gl847_offset_calibration: starting second line reading\n");
- RIEF2 (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE),first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size),first_line, second_line);
-
- topavg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_io2, "gl847_offset_calibration: top avg=%d\n", topavg);
+ dev->frontend.set_offset(0, top);
+ dev->frontend.set_offset(1, top);
+ dev->frontend.set_offset(2, top);
+ RIE(gl847_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl847_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
+
+ topavg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_io2, "%s: top avg=%d\n", __func__, topavg);
/* loop until acceptable level */
while ((pass < 32) && (top - bottom > 1))
@@ -3557,55 +3249,55 @@ gl847_offset_calibration (Genesys_Device * dev)
pass++;
/* settings for new scan */
- dev->frontend.offset[0] = (top + bottom) / 2;
- dev->frontend.offset[1] = (top + bottom) / 2;
- dev->frontend.offset[2] = (top + bottom) / 2;
+ dev->frontend.set_offset(0, (top + bottom) / 2);
+ dev->frontend.set_offset(1, (top + bottom) / 2);
+ dev->frontend.set_offset(2, (top + bottom) / 2);
/* scan with no move */
- RIEF2 (gl847_set_fe(dev, AFE_SET),first_line, second_line);
- RIEF2 (dev->model->cmd_set->bulk_write_register (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS),first_line, second_line);
- DBG (DBG_info, "gl847_offset_calibration: starting second line reading\n");
- RIEF2 (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE),first_line, second_line);
- RIEF2 (sanei_genesys_read_data_from_scanner (dev, second_line, total_size),first_line, second_line);
+ RIE(gl847_set_fe(dev, sensor, AFE_SET));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
+ DBG(DBG_info, "%s: starting second line reading\n", __func__);
+ RIE(gl847_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner (dev, second_line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
{
- sprintf (title, "offset%03d.pnm", dev->frontend.offset[1]);
- sanei_genesys_write_pnm_file (title, second_line, bpp, channels, pixels, lines);
+ char fn[30];
+ snprintf(fn, 30, "gl847_offset%03d.pnm", dev->frontend.get_offset(1));
+ sanei_genesys_write_pnm_file(fn, second_line.data(), bpp, channels, pixels, lines);
}
- avg = dark_average (second_line, pixels, lines, channels, black_pixels);
- DBG (DBG_info, "gl847_offset_calibration: avg=%d offset=%d\n", avg,
- dev->frontend.offset[1]);
+ avg = dark_average(second_line.data(), pixels, lines, channels, black_pixels);
+ DBG(DBG_info, "%s: avg=%d offset=%d\n", __func__, avg, dev->frontend.get_offset(1));
/* compute new boundaries */
if (topavg == avg)
{
topavg = avg;
- top = dev->frontend.offset[1];
+ top = dev->frontend.get_offset(1);
}
else
{
bottomavg = avg;
- bottom = dev->frontend.offset[1];
+ bottom = dev->frontend.get_offset(1);
}
}
- DBG (DBG_info, "gl847_offset_calibration: offset=(%d,%d,%d)\n", dev->frontend.offset[0], dev->frontend.offset[1], dev->frontend.offset[2]);
-
- /* cleanup before return */
- free (first_line);
- free (second_line);
+ DBG(DBG_info, "%s: offset=(%d,%d,%d)\n", __func__,
+ dev->frontend.get_offset(0),
+ dev->frontend.get_offset(1),
+ dev->frontend.get_offset(2));
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
static SANE_Status
-gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
+gl847_coarse_gain_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi)
{
int pixels;
int total_size;
- uint8_t *line, reg04;
+ uint8_t reg04;
int i, j, channels;
SANE_Status status = SANE_STATUS_GOOD;
int max[3];
@@ -3614,7 +3306,7 @@ gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
int resolution;
int bpp;
- DBG (DBG_proc, "gl847_coarse_gain_calibration: dpi = %d\n", dpi);
+ DBG(DBG_proc, "%s: dpi = %d\n", __func__, dpi);
/* no gain nor offset for AKM AFE */
RIE (sanei_genesys_read_register (dev, REG04, &reg04));
@@ -3628,61 +3320,67 @@ gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
channels = 3;
/* follow CKSEL */
- if(dev->settings.xres<dev->sensor.optical_res)
+ if(dev->settings.xres<sensor.optical_res)
{
coeff=0.9;
- /*resolution=dev->sensor.optical_res/2; */
- resolution=dev->sensor.optical_res;
+ /*resolution=sensor.optical_res/2; */
+ resolution=sensor.optical_res;
}
else
{
- resolution=dev->sensor.optical_res;
+ resolution=sensor.optical_res;
coeff=1.0;
}
lines=10;
bpp=8;
- pixels = (dev->sensor.sensor_pixels * resolution) / dev->sensor.optical_res;
-
- status = gl847_init_scan_regs (dev,
- dev->calib_reg,
- resolution,
- resolution,
- 0,
- 0,
- pixels,
- lines,
- bpp,
- channels,
- dev->settings.color_filter,
- SCAN_FLAG_DISABLE_SHADING |
- SCAN_FLAG_DISABLE_GAMMA |
- SCAN_FLAG_SINGLE_LINE |
- SCAN_FLAG_IGNORE_LINE_DISTANCE);
- gl847_set_motor_power (dev->calib_reg, SANE_FALSE);
+ pixels = (sensor.sensor_pixels * resolution) / sensor.optical_res;
+
+ SetupParams params;
+ params.xres = resolution;
+ params.yres = resolution;
+ params.startx = 0;
+ params.starty = 0;
+ params.pixels = pixels;
+ params.lines = lines;
+ params.depth = bpp;
+ params.channels = channels;
+ params.scan_method = dev->settings.scan_method;
+ params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS;
+ params.color_filter = dev->settings.color_filter;
+ params.flags = SCAN_FLAG_DISABLE_SHADING |
+ SCAN_FLAG_DISABLE_GAMMA |
+ SCAN_FLAG_SINGLE_LINE |
+ SCAN_FLAG_IGNORE_LINE_DISTANCE;
+
+ try {
+ status = gl847_init_scan_regs(dev, sensor, &regs, params);
+ } catch (...) {
+ try {
+ sanei_genesys_set_motor_power(regs, false);
+ } catch (...) {}
+ throw;
+ }
+
+ sanei_genesys_set_motor_power(regs, false);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "gl847_coarse_calibration: failed to setup scan: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to setup scan: %s\n", __func__, sane_strstatus(status));
return status;
}
- RIE (dev->model->cmd_set->bulk_write_register
- (dev, dev->calib_reg, GENESYS_GL847_MAX_REGS));
+ RIE(dev->model->cmd_set->bulk_write_register(dev, regs));
total_size = pixels * channels * (16/bpp) * lines;
- line = malloc (total_size);
- if (!line)
- return SANE_STATUS_NO_MEM;
+ std::vector<uint8_t> line(total_size);
- RIEF (gl847_set_fe(dev, AFE_SET), line);
- RIEF (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE), line);
- RIEF (sanei_genesys_read_data_from_scanner (dev, line, total_size), line);
+ RIE(gl847_set_fe(dev, sensor, AFE_SET));
+ RIE(gl847_begin_scan(dev, sensor, &regs, SANE_TRUE));
+ RIE(sanei_genesys_read_data_from_scanner(dev, line.data(), total_size));
if (DBG_LEVEL >= DBG_data)
- sanei_genesys_write_pnm_file ("coarse.pnm", line, bpp, channels, pixels, lines);
+ sanei_genesys_write_pnm_file("gl847_gain.pnm", line.data(), bpp, channels, pixels, lines);
/* average value on each channel */
for (j = 0; j < channels; j++)
@@ -3713,7 +3411,7 @@ gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
}
max[j] = max[j] / (pixels/2);
- gain[j] = ((float) dev->sensor.gain_white_ref*coeff) / max[j];
+ gain[j] = ((float) sensor.gain_white_ref*coeff) / max[j];
/* turn logical gain value into gain code, checking for overflow */
code = 283 - 208 / gain[j];
@@ -3721,30 +3419,30 @@ gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
code = 255;
else if (code < 0)
code = 0;
- dev->frontend.gain[j] = code;
+ dev->frontend.set_gain(j, code);
- DBG (DBG_proc,
- "gl847_coarse_gain_calibration: channel %d, max=%d, gain = %f, setting:%d\n",
- j, max[j], gain[j], dev->frontend.gain[j]);
+ DBG(DBG_proc, "%s: channel %d, max=%d, gain = %f, setting:%d\n", __func__, j, max[j], gain[j],
+ dev->frontend.get_gain(j));
}
- if (dev->model->is_cis)
- {
- if (dev->frontend.gain[0] > dev->frontend.gain[1])
- dev->frontend.gain[0] = dev->frontend.gain[1];
- if (dev->frontend.gain[0] > dev->frontend.gain[2])
- dev->frontend.gain[0] = dev->frontend.gain[2];
- dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
+ if (dev->model->is_cis) {
+ uint8_t gain0 = dev->frontend.get_gain(0);
+ if (gain0 > dev->frontend.get_gain(1)) {
+ gain0 = dev->frontend.get_gain(1);
+ }
+ if (gain0 > dev->frontend.get_gain(2)) {
+ gain0 = dev->frontend.get_gain(2);
+ }
+ dev->frontend.set_gain(0, gain0);
+ dev->frontend.set_gain(1, gain0);
+ dev->frontend.set_gain(2, gain0);
}
- if (channels == 1)
- {
- dev->frontend.gain[0] = dev->frontend.gain[1];
- dev->frontend.gain[2] = dev->frontend.gain[1];
+ if (channels == 1) {
+ dev->frontend.set_gain(0, dev->frontend.get_gain(1));
+ dev->frontend.set_gain(2, dev->frontend.get_gain(1));
}
- free (line);
-
RIE (gl847_stop_action (dev));
status=gl847_slow_back_home (dev, SANE_TRUE);
@@ -3758,6 +3456,8 @@ gl847_coarse_gain_calibration (Genesys_Device * dev, int dpi)
static Genesys_Command_Set gl847_cmd_set = {
"gl847-generic", /* the name of this set */
+ nullptr,
+
gl847_init,
NULL, /*gl847_init_regs_for_warmup*/
gl847_init_regs_for_coarse_calibration,
@@ -3772,15 +3472,10 @@ static Genesys_Command_Set gl847_cmd_set = {
gl847_test_buffer_empty_bit,
gl847_test_motor_flag_bit,
- gl847_bulk_full_size,
-
gl847_set_fe,
gl847_set_powersaving,
gl847_save_power,
- gl847_set_motor_power,
- gl847_set_lamp_power,
-
gl847_begin_scan,
gl847_end_scan,
@@ -3792,12 +3487,13 @@ static Genesys_Command_Set gl847_cmd_set = {
gl847_coarse_gain_calibration,
gl847_led_calibration,
+ NULL,
gl847_slow_back_home,
- gl847_rewind,
+ NULL, /* disable gl847_rewind, see #7 */
sanei_genesys_bulk_write_register,
NULL,
- gl847_bulk_read_data,
+ sanei_genesys_bulk_read_data,
gl847_update_hardware_sensors,
@@ -3810,8 +3506,7 @@ static Genesys_Command_Set gl847_cmd_set = {
NULL,
gl847_send_shading_data,
gl847_calculate_current_setup,
- gl847_boot,
- NULL
+ gl847_boot
};
SANE_Status
@@ -3820,5 +3515,3 @@ sanei_gl847_init_cmd_set (Genesys_Device * dev)
dev->model->cmd_set = &gl847_cmd_set;
return SANE_STATUS_GOOD;
}
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_gl847.h b/backend/genesys_gl847.h
index 1da2065..7af9c36 100644
--- a/backend/genesys_gl847.h
+++ b/backend/genesys_gl847.h
@@ -43,12 +43,6 @@
#include "genesys.h"
-
-#ifdef UNIT_TESTING
-SANE_Status gl847_stop_action (Genesys_Device * dev);
-SANE_Status gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home);
-#endif
-
#define REG01 0x01
#define REG01_CISSET 0x80
#define REG01_DOGENB 0x40
@@ -326,201 +320,29 @@ SANE_Status gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_hom
#define REG_CK3MAP 0x77
#define REG_CK4MAP 0x7a
-/**
- * writable scanner registers */
-enum
-{
- reg_0x01 = 0,
- reg_0x02,
- reg_0x03,
- reg_0x04,
- reg_0x05,
- reg_0x06,
- reg_0x08,
- reg_0x09,
- reg_0x0a,
- reg_0x0b,
- reg_0x0c,
- reg_0x0d,
- reg_0x0e,
- reg_0x0f,
- reg_0x10,
- reg_0x11,
- reg_0x12,
- reg_0x13,
- reg_0x14,
- reg_0x15,
- reg_0x16,
- reg_0x17,
- reg_0x18,
- reg_0x19,
- reg_0x1a,
- reg_0x1b,
- reg_0x1c,
- reg_0x1d,
- reg_0x1e,
- reg_0x1f,
- reg_0x20,
- reg_0x21,
- reg_0x22,
- reg_0x23,
- reg_0x24,
- reg_0x25,
- reg_0x26,
- reg_0x27,
- reg_0x2c,
- reg_0x2d,
- reg_0x2e,
- reg_0x2f,
- reg_0x30,
- reg_0x31,
- reg_0x32,
- reg_0x33,
- reg_0x34,
- reg_0x35,
- reg_0x36,
- reg_0x37,
- reg_0x38,
- reg_0x39,
- reg_0x3a,
- reg_0x3b,
- reg_0x3d,
- reg_0x3e,
- reg_0x3f,
- reg_0x51,
- reg_0x52,
- reg_0x53,
- reg_0x54,
- reg_0x55,
- reg_0x56,
- reg_0x57,
- reg_0x58,
- reg_0x59,
- reg_0x5a,
- reg_0x5e,
- reg_0x5f,
- reg_0x60,
- reg_0x61,
- reg_0x62,
- reg_0x63,
- reg_0x64,
- reg_0x65,
- reg_0x67,
- reg_0x68,
- reg_0x69,
- reg_0x6a,
- reg_0x6b,
- reg_0x6c,
- reg_0x6d,
- reg_0x6e,
- reg_0x6f,
- reg_0x74,
- reg_0x75,
- reg_0x76,
- reg_0x77,
- reg_0x78,
- reg_0x79,
- reg_0x7a,
- reg_0x7b,
- reg_0x7c,
- reg_0x7d,
- reg_0x87,
- reg_0x9d,
- reg_0xa2,
- reg_0xa3,
- reg_0xa4,
- reg_0xa5,
- reg_0xa6,
- reg_0xa7,
- reg_0xa8,
- reg_0xa9,
- reg_0xbd,
- reg_0xbe,
- reg_0xc5,
- reg_0xc6,
- reg_0xc7,
- reg_0xc8,
- reg_0xc9,
- reg_0xca,
- reg_0xd0,
- reg_0xd1,
- reg_0xd2,
- reg_0xe0,
- reg_0xe1,
- reg_0xe2,
- reg_0xe3,
- reg_0xe4,
- reg_0xe5,
- reg_0xe6,
- reg_0xe7,
- reg_0xe8,
- reg_0xe9,
- reg_0xea,
- reg_0xeb,
- reg_0xec,
- reg_0xed,
- reg_0xee,
- reg_0xef,
- reg_0xf0,
- reg_0xf1,
- reg_0xf2,
- reg_0xf3,
- reg_0xf4,
- reg_0xf5,
- reg_0xf6,
- reg_0xf7,
- reg_0xf8,
- reg_0xfe,
- GENESYS_GL847_MAX_REGS
-};
-
-#define SETREG(adr,val) {dev->reg[reg_##adr].address=adr;dev->reg[reg_##adr].value=val;}
+#define SETREG(adr,val) { dev->reg.init_reg(adr, val); }
/** set up registers for an actual scan
*
* this function sets up the scanner to scan in normal or single line mode
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl847_init_scan_regs (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres, /*dpi */
- float yres, /*dpi */
- float startx, /*optical_res, from dummy_pixel+1 */
- float starty, /*base_ydpi, from home! */
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int color_filter,
- unsigned int flags);
+static SANE_Status gl847_init_scan_regs(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg, SetupParams& params);
/* Send the low-level scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl847_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool start_motor);
+static SANE_Status gl847_begin_scan (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set * reg, SANE_Bool start_motor);
/* Send the stop scan command */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl847_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
+static SANE_Status gl847_end_scan (Genesys_Device * dev, Genesys_Register_Set * reg, SANE_Bool check_stop);
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status gl847_init (Genesys_Device * dev);
+static SANE_Status gl847_init (Genesys_Device * dev);
/** @brief moves the slider to steps at motor base dpi
* @param dev device to work on
* @param steps number of steps to move
* */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
gl847_feed (Genesys_Device * dev, unsigned int steps);
typedef struct
@@ -606,8 +428,6 @@ typedef struct {
uint8_t r17; /**> TG width */
} Sensor_Profile;
-/* *INDENT-OFF* */
-
static size_t order_01[]={0,1};
static size_t order_0213[]={0,2,1,3};
static size_t order_0246[]={0,2,4,6,1,3,5,7};
@@ -643,7 +463,6 @@ static Sensor_Profile sensors[]={
{CIS_CANONLIDE700, 2400, 10576, 135, 249, 85, 5187, 255, 2798, 1558, 972, new_order , 0x08},
{CIS_CANONLIDE700, 4800, 10576, 135, 249, 85, 5187, 255, 2798, 1558, 972, order_0145, 0x06},
};
-/* *INDENT-ON* */
/* base motor sopes in full step unit */
/* target=((exposure * dpi) / base_dpi)>>step_type; */
@@ -663,7 +482,6 @@ static uint32_t lide200_max[] = { 124992, 124992, 124992, 124992, 124992, 124992
* database of motor profiles
*/
-/* *INDENT-OFF* */
static Motor_Profile gl847_motors[]={
/* LiDE 100 */
{MOTOR_CANONLIDE100, 2848, HALF_STEP , lide200_base},
@@ -690,6 +508,3 @@ static Motor_Profile gl847_motors[]={
/* end of database entry */
{0, 0, 0, NULL},
};
-/* *INDENT-ON* */
-
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/genesys_low.c b/backend/genesys_low.cc
index 4cbd75d..097375f 100644
--- a/backend/genesys_low.c
+++ b/backend/genesys_low.cc
@@ -41,10 +41,39 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
*/
-#undef BACKEND_NAME
-#define BACKEND_NAME genesys_low
+
+#define DEBUG_DECLARE_ONLY
#include "genesys_low.h"
+#include "assert.h"
+
+#include <vector>
+
+
+Genesys_Device::~Genesys_Device()
+{
+ clear();
+
+ if (file_name != nullptr)
+ free(file_name);
+}
+
+void Genesys_Device::clear()
+{
+ read_buffer.clear();
+ lines_buffer.clear();
+ shrink_buffer.clear();
+ out_buffer.clear();
+ binarize_buffer.clear();
+ local_buffer.clear();
+
+ calib_file.clear();
+
+ calibration_cache.clear();
+
+ white_average_data.clear();
+ dark_average_data.clear();
+}
/* ------------------------------------------------------------------------ */
/* functions calling ASIC specific functions */
@@ -82,25 +111,40 @@ sanei_genesys_init_cmd_set (Genesys_Device * dev)
/* General IO and debugging functions */
/* ------------------------------------------------------------------------ */
+SANE_Status sanei_genesys_write_file(const char *filename, uint8_t * data, size_t length)
+{
+ FILE *out;
+
+ out = fopen (filename, "w");
+ if (!out) {
+ DBG(DBG_error, "%s: could nor open %s for writing: %s\n", __func__, filename,
+ strerror(errno));
+ return SANE_STATUS_INVAL;
+ }
+ fwrite(data, 1, length, out);
+ fclose(out);
+
+ DBG(DBG_proc, "%s: finished\n", __func__);
+ return SANE_STATUS_GOOD;
+}
+
/* Write data to a pnm file (e.g. calibration). For debugging only */
/* data is RGB or grey, with little endian byte order */
SANE_Status
-sanei_genesys_write_pnm_file (char *filename, uint8_t * data, int depth,
+sanei_genesys_write_pnm_file (const char *filename, uint8_t * data, int depth,
int channels, int pixels_per_line, int lines)
{
FILE *out;
int count;
- DBG (DBG_info,
- "sanei_genesys_write_pnm_file: depth=%d, channels=%d, ppl=%d, lines=%d\n",
- depth, channels, pixels_per_line, lines);
+ DBG(DBG_info, "%s: depth=%d, channels=%d, ppl=%d, lines=%d\n", __func__,depth, channels,
+ pixels_per_line, lines);
out = fopen (filename, "w");
if (!out)
{
- DBG (DBG_error,
- "sanei_genesys_write_pnm_file: could nor open %s for writing: %s\n",
- filename, strerror (errno));
+ DBG(DBG_error, "%s: could nor open %s for writing: %s\n", __func__, filename,
+ strerror(errno));
return SANE_STATUS_INVAL;
}
if(depth==1)
@@ -149,51 +193,193 @@ sanei_genesys_write_pnm_file (char *filename, uint8_t * data, int depth,
}
fclose (out);
- DBG (DBG_proc, "sanei_genesys_write_pnm_file: finished\n");
+ DBG(DBG_proc, "%s: finished\n", __func__);
return SANE_STATUS_GOOD;
}
-/* the following 2 functions are used to handle registers in a
- way that doesn't depend on the actual ASIC type */
+/* ------------------------------------------------------------------------ */
+/* Read and write RAM, registers and AFE */
+/* ------------------------------------------------------------------------ */
-/* Reads a register from a register set */
-SANE_Byte
-sanei_genesys_read_reg_from_set (Genesys_Register_Set * reg,
- uint16_t address)
+extern unsigned sanei_genesys_get_bulk_max_size(Genesys_Device * dev)
{
- SANE_Int i;
+ /* Genesys supports 0xFE00 maximum size in general, wheraus GL646 supports
+ 0xFFC0. We use 0xF000 because that's the packet limit in the Linux usbmon
+ USB capture stack. By default it limits packet size to b_size / 5 where
+ b_size is the size of the ring buffer. By default it's 300*1024, so the
+ packet is limited 61440 without any visibility to acquiring software.
+ */
+ if (dev->model->asic_type == GENESYS_GL124 ||
+ dev->model->asic_type == GENESYS_GL846 ||
+ dev->model->asic_type == GENESYS_GL847) {
+ return 0xeff0;
+ }
+ return 0xf000;
+}
- for (i = 0; i < GENESYS_MAX_REGS && reg[i].address; i++)
- {
- if (reg[i].address == address)
- {
- return reg[i].value;
- }
- }
- return 0;
+void sanei_genesys_bulk_read_data_send_header(Genesys_Device* dev, size_t len)
+{
+ DBG_HELPER(dbg);
+
+ uint8_t outdata[8];
+ if (dev->model->asic_type == GENESYS_GL124 ||
+ dev->model->asic_type == GENESYS_GL846 ||
+ dev->model->asic_type == GENESYS_GL847)
+ {
+ // hard coded 0x10000000 address
+ outdata[0] = 0;
+ outdata[1] = 0;
+ outdata[2] = 0;
+ outdata[3] = 0x10;
+ } else if (dev->model->asic_type == GENESYS_GL841 ||
+ dev->model->asic_type == GENESYS_GL843) {
+ outdata[0] = BULK_IN;
+ outdata[1] = BULK_RAM;
+ outdata[2] = VALUE_BUFFER & 0xff;
+ outdata[3] = (VALUE_BUFFER >> 8) & 0xff;
+ } else {
+ outdata[0] = BULK_IN;
+ outdata[1] = BULK_RAM;
+ outdata[2] = 0x00;
+ outdata[3] = 0x00;
+ }
+
+ /* data size to transfer */
+ outdata[4] = (len & 0xff);
+ outdata[5] = ((len >> 8) & 0xff);
+ outdata[6] = ((len >> 16) & 0xff);
+ outdata[7] = ((len >> 24) & 0xff);
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_BUFFER, 0x00,
+ sizeof(outdata), outdata);
}
-/* Reads a register from a register set */
-void
-sanei_genesys_set_reg_from_set (Genesys_Register_Set * reg, uint16_t address,
- SANE_Byte value)
+SANE_Status sanei_genesys_bulk_read_data(Genesys_Device * dev, uint8_t addr, uint8_t* data,
+ size_t len)
{
- SANE_Int i;
+ DBG_HELPER(dbg);
- for (i = 0; i < GENESYS_MAX_REGS && reg[i].address; i++)
+ // currently supported: GL646, GL841, GL843, GL846, GL847, GL124
+ size_t size, target;
+ uint8_t *buffer;
+
+ unsigned is_addr_used = 1;
+ unsigned has_header_before_each_chunk = 0;
+ if (dev->model->asic_type == GENESYS_GL124 ||
+ dev->model->asic_type == GENESYS_GL846 ||
+ dev->model->asic_type == GENESYS_GL847)
{
- if (reg[i].address == address)
- {
- reg[i].value = value;
- break;
- }
+ is_addr_used = 0;
+ has_header_before_each_chunk = 1;
+ }
+
+ if (is_addr_used) {
+ DBG(DBG_io, "%s: requesting %lu bytes from 0x%02x addr\n", __func__, (u_long) len, addr);
+ } else {
+ DBG(DBG_io, "%s: requesting %lu bytes\n", __func__, (u_long) len);
+ }
+
+ if (len == 0)
+ return SANE_STATUS_GOOD;
+
+ if (is_addr_used) {
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_SET_REGISTER, 0x00,
+ 1, &addr);
+ }
+
+ target = len;
+ buffer = data;
+
+ size_t max_in_size = sanei_genesys_get_bulk_max_size(dev);
+
+ if (!has_header_before_each_chunk) {
+ sanei_genesys_bulk_read_data_send_header(dev, len);
+ }
+
+ // loop until computed data size is read
+ while (target) {
+ if (target > max_in_size) {
+ size = max_in_size;
+ } else {
+ size = target;
+ }
+
+ if (has_header_before_each_chunk) {
+ sanei_genesys_bulk_read_data_send_header(dev, size);
+ }
+
+ DBG(DBG_io2, "%s: trying to read %lu bytes of data\n", __func__, (u_long) size);
+
+ dev->usb_dev.bulk_read(data, &size);
+
+ DBG(DBG_io2, "%s: read %lu bytes, %lu remaining\n", __func__,
+ (u_long) size, (u_long) (target - size));
+
+ target -= size;
+ data += size;
}
+
+ if (DBG_LEVEL >= DBG_data && dev->binary!=NULL) {
+ fwrite(buffer, len, 1, dev->binary);
+ }
+
+ return SANE_STATUS_GOOD;
}
+SANE_Status sanei_genesys_bulk_write_data(Genesys_Device * dev, uint8_t addr, uint8_t* data,
+ size_t len)
+{
+ DBG_HELPER(dbg);
-/* ------------------------------------------------------------------------ */
-/* Read and write RAM, registers and AFE */
-/* ------------------------------------------------------------------------ */
+ // supported: GL646, GL841, GL843
+ size_t size;
+ uint8_t outdata[8];
+
+ DBG(DBG_io, "%s writing %lu bytes\n", __func__, (u_long) len);
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_SET_REGISTER, INDEX,
+ 1, &addr);
+
+
+ size_t max_out_size = sanei_genesys_get_bulk_max_size(dev);
+
+ while (len) {
+ if (len > max_out_size)
+ size = max_out_size;
+ else
+ size = len;
+
+ if (dev->model->asic_type == GENESYS_GL841) {
+ outdata[0] = BULK_OUT;
+ outdata[1] = BULK_RAM;
+ outdata[2] = VALUE_BUFFER & 0xff;
+ outdata[3] = (VALUE_BUFFER >> 8) & 0xff;
+ } else {
+ outdata[0] = BULK_OUT;
+ outdata[1] = BULK_RAM;
+ outdata[2] = 0x00;
+ outdata[3] = 0x00;
+ }
+
+ outdata[4] = (size & 0xff);
+ outdata[5] = ((size >> 8) & 0xff);
+ outdata[6] = ((size >> 16) & 0xff);
+ outdata[7] = ((size >> 24) & 0xff);
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_BUFFER, 0x00,
+ sizeof(outdata), outdata);
+
+ dev->usb_dev.bulk_write(data, &size);
+
+ DBG(DBG_io2, "%s: wrote %lu bytes, %lu remaining\n", __func__, (u_long) size,
+ (u_long) (len - size));
+
+ len -= size;
+ data += size;
+ }
+
+ return SANE_STATUS_GOOD;
+}
/** @brief write to one high (addr >= 0x100) register
* write to a register which address is higher than 0xff.
@@ -204,24 +390,20 @@ sanei_genesys_set_reg_from_set (Genesys_Register_Set * reg, uint16_t address,
SANE_Status
sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val)
{
- SANE_Status status;
+ DBG_HELPER(dbg);
+
uint8_t buffer[2];
buffer[0]=reg & 0xff;
buffer[1]=val;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- 0x100 | VALUE_SET_REGISTER, INDEX, 2, buffer);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "sanei_genesys_write_hregister (0x%02x, 0x%02x): failed : %s\n", reg, val, sane_strstatus (status));
- return status;
- }
- DBG (DBG_io, "sanei_genesys_write_hregister (0x%02x, 0x%02x) completed\n",
- reg, val);
- return status;
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, 0x100 | VALUE_SET_REGISTER, INDEX,
+ 2, buffer);
+
+ DBG(DBG_io, "%s (0x%02x, 0x%02x) completed\n", __func__, reg, val);
+
+ return SANE_STATUS_GOOD;
}
/** @brief read from one high (addr >= 0x100) register
@@ -234,29 +416,23 @@ sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val)
SANE_Status
sanei_genesys_read_hregister (Genesys_Device * dev, uint16_t reg, uint8_t * val)
{
- SANE_Status status;
+ DBG_HELPER(dbg);
+
SANE_Byte value[2];
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_IN, REQUEST_BUFFER,
- 0x100 | VALUE_GET_REGISTER, 0x22+((reg & 0xff)<<8), 2, value);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_read_hregister (0x%02x): failed while reading register: %s\n",
- reg, sane_strstatus (status));
- return status;
- }
+ dev->usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_BUFFER, 0x100 | VALUE_GET_REGISTER,
+ 0x22+((reg & 0xff)<<8), 2, value);
+
*val=value[0];
- DBG( DBG_io2, "sanei_genesys_read_hregister(0x%02x)=0x%02x\n",reg,*val);
+ DBG(DBG_io2, "%s(0x%02x)=0x%02x\n", __func__, reg, *val);
/* check usb link status */
if((value[1] & 0xff) != 0x55)
{
- DBG (DBG_error,"sanei_genesys_read_hregister: invalid read, scanner unplugged ?\n");
- status=SANE_STATUS_IO_ERROR;
+ DBG(DBG_error,"%s: invalid read, scanner unplugged ?\n", __func__);
+ return SANE_STATUS_IO_ERROR;
}
- return status;
+ return SANE_STATUS_GOOD;
}
/**
@@ -266,24 +442,19 @@ URB 10 control 0x40 0x04 0x83 0x00 len 2 wrote 0xa6 0x04
static SANE_Status
sanei_genesys_write_gl847_register (Genesys_Device * dev, uint8_t reg, uint8_t val)
{
- SANE_Status status;
+ DBG_HELPER(dbg);
+
uint8_t buffer[2];
buffer[0]=reg;
buffer[1]=val;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_BUFFER,
- VALUE_SET_REGISTER, INDEX, 2, buffer);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "sanei_genesys_write_gl847_register (0x%02x, 0x%02x): failed : %s\n", reg, val, sane_strstatus (status));
- return status;
- }
- DBG (DBG_io, "sanei_genesys_write_gl847_register (0x%02x, 0x%02x) completed\n",
- reg, val);
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_SET_REGISTER, INDEX,
+ 2, buffer);
- return status;
+ DBG(DBG_io, "%s (0x%02x, 0x%02x) completed\n", __func__, reg, val);
+
+ return SANE_STATUS_GOOD;
}
/**
@@ -292,15 +463,9 @@ sanei_genesys_write_gl847_register (Genesys_Device * dev, uint8_t reg, uint8_t v
SANE_Status
sanei_genesys_write_register (Genesys_Device * dev, uint16_t reg, uint8_t val)
{
- SANE_Status status;
- SANE_Byte reg8;
+ DBG_HELPER(dbg);
-#ifdef UNIT_TESTING
- if(dev->usb_mode<0)
- {
- return SANE_STATUS_GOOD;
- }
-#endif
+ SANE_Byte reg8;
/* 16 bit register address space */
if(reg>255)
@@ -318,32 +483,16 @@ sanei_genesys_write_register (Genesys_Device * dev, uint16_t reg, uint8_t val)
}
reg8=reg & 0xff;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &reg8);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_write_register (0x%02x, 0x%02x): failed while setting register: %s\n",
- reg, val, sane_strstatus (status));
- return status;
- }
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_WRITE_REGISTER, INDEX, 1, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_write_register (0x%02x, 0x%02x): failed while writing register value: %s\n",
- reg, val, sane_strstatus (status));
- return status;
- }
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_SET_REGISTER, INDEX,
+ 1, &reg8);
- DBG (DBG_io, "sanei_genesys_write_register (0x%02x, 0x%02x) completed\n",
- reg, val);
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_WRITE_REGISTER, INDEX,
+ 1, &val);
- return status;
+ DBG(DBG_io, "%s (0x%02x, 0x%02x) completed\n", __func__, reg, val);
+
+ return SANE_STATUS_GOOD;
}
/**
@@ -355,28 +504,12 @@ sanei_genesys_write_register (Genesys_Device * dev, uint16_t reg, uint8_t val)
* @param val value to write
*/
SANE_Status
-sanei_genesys_write_0x8c (Genesys_Device * dev, uint8_t index, uint8_t val)
+sanei_genesys_write_0x8c(Genesys_Device * dev, uint8_t index, uint8_t val)
{
- SANE_Status status;
-
-#ifdef UNIT_TESTING
- if(dev->usb_mode<0)
- {
- return SANE_STATUS_GOOD;
- }
-#endif
-
- DBG (DBG_io, "sanei_genesys_write_0x8c: 0x%02x,0x%02x\n", index, val);
-
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_BUF_ENDACCESS, index, 1, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_write_0x8c: failed %s\n", sane_strstatus (status));
- }
- return status;
+ DBG_HELPER_ARGS(dbg, "0x%02x,0x%02x", index, val);
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_BUF_ENDACCESS, index,
+ 1, &val);
+ return SANE_STATUS_GOOD;
}
/* read reg 0x41:
@@ -385,26 +518,20 @@ sanei_genesys_write_0x8c (Genesys_Device * dev, uint8_t index, uint8_t val)
static SANE_Status
sanei_genesys_read_gl847_register (Genesys_Device * dev, uint16_t reg, uint8_t * val)
{
- SANE_Status status;
+ DBG_HELPER(dbg);
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte value[2];
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_IN, REQUEST_BUFFER,
- VALUE_GET_REGISTER, 0x22+(reg<<8), 2, value);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_read_gl847_register (0x%02x): failed while setting register: %s\n",
- reg, sane_strstatus (status));
- return status;
- }
+ dev->usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_BUFFER, VALUE_GET_REGISTER, 0x22+(reg<<8),
+ 2, value);
+
*val=value[0];
- DBG( DBG_io2, "sanei_genesys_read_gl847_register(0x%02x)=0x%02x\n",reg,*val);
+ DBG(DBG_io2, "%s(0x%02x)=0x%02x\n", __func__, reg, *val);
/* check usb link status */
if((value[1] & 0xff) != 0x55)
{
- DBG (DBG_error,"sanei_genesys_read_gl847_register: invalid read, scanner unplugged ?\n");
+ DBG(DBG_error,"%s: invalid read, scanner unplugged ?\n", __func__);
status=SANE_STATUS_IO_ERROR;
}
return status;
@@ -414,16 +541,9 @@ sanei_genesys_read_gl847_register (Genesys_Device * dev, uint16_t reg, uint8_t *
SANE_Status
sanei_genesys_read_register (Genesys_Device * dev, uint16_t reg, uint8_t * val)
{
- SANE_Status status;
- SANE_Byte reg8;
+ DBG_HELPER(dbg);
-#ifdef UNIT_TESTING
- if(dev->usb_mode<0)
- {
- *val=0;
- return SANE_STATUS_GOOD;
- }
-#endif
+ SANE_Byte reg8;
/* 16 bit register address space */
if(reg>255)
@@ -439,65 +559,44 @@ sanei_genesys_read_register (Genesys_Device * dev, uint16_t reg, uint8_t * val)
return sanei_genesys_read_gl847_register(dev, reg, val);
/* 8 bit register address space */
- reg8=(SANE_Byte)(reg& 0Xff);
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_OUT, REQUEST_REGISTER,
- VALUE_SET_REGISTER, INDEX, 1, &reg8);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_read_register (0x%02x, 0x%02x): failed while setting register: %s\n",
- reg, *val, sane_strstatus (status));
- return status;
- }
+ reg8=(SANE_Byte)(reg& 0Xff);
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, VALUE_SET_REGISTER, INDEX,
+ 1, &reg8);
*val = 0;
- status =
- sanei_usb_control_msg (dev->dn, REQUEST_TYPE_IN, REQUEST_REGISTER,
- VALUE_READ_REGISTER, INDEX, 1, val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_read_register (0x%02x, 0x%02x): failed while reading register value: %s\n",
- reg, *val, sane_strstatus (status));
- return status;
- }
+ dev->usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_REGISTER, VALUE_READ_REGISTER, INDEX,
+ 1, val);
- DBG (DBG_io, "sanei_genesys_read_register (0x%02x, 0x%02x) completed\n",
- reg, *val);
+ DBG(DBG_io, "%s (0x%02x, 0x%02x) completed\n", __func__, reg, *val);
- return status;
+ return SANE_STATUS_GOOD;
}
/* Set address for writing data */
SANE_Status
sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
if(dev->model->asic_type==GENESYS_GL847
|| dev->model->asic_type==GENESYS_GL845
|| dev->model->asic_type==GENESYS_GL846
|| dev->model->asic_type==GENESYS_GL124)
{
- DBG (DBG_warn,
- "sanei_genesys_set_buffer_address: shouldn't be used for GL846+ ASICs\n");
+ DBG(DBG_warn, "%s: shouldn't be used for GL846+ ASICs\n", __func__);
return SANE_STATUS_GOOD;
}
- DBG (DBG_io,
- "sanei_genesys_set_buffer_address: setting address to 0x%05x\n",
- addr & 0xfffffff0);
+ DBG(DBG_io, "%s: setting address to 0x%05x\n", __func__, addr & 0xfffffff0);
addr = addr >> 4;
status = sanei_genesys_write_register (dev, 0x2b, (addr & 0xff));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_set_buffer_address: failed while writing low byte: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while writing low byte: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -505,13 +604,11 @@ sanei_genesys_set_buffer_address (Genesys_Device * dev, uint32_t addr)
status = sanei_genesys_write_register (dev, 0x2a, (addr & 0xff));
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_set_buffer_address: failed while writing high byte: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while writing high byte: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_io, "sanei_genesys_set_buffer_address: completed\n");
+ DBG(DBG_io, "%s: completed\n", __func__);
return status;
}
@@ -526,23 +623,21 @@ SANE_Status
sanei_genesys_fe_read_data (Genesys_Device * dev, uint8_t addr,
uint16_t *data)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t value;
- Genesys_Register_Set reg[1];
+ Genesys_Register_Set reg;
- DBG (DBG_proc, "sanei_genesys_fe_read_data: start\n");
+ DBG(DBG_proc, "%s: start\n", __func__);
- reg[0].address = 0x50;
- reg[0].value = addr;
+ reg.init_reg(0x50, addr);
/* set up read address */
- status = dev->model->cmd_set->bulk_write_register (dev, reg, 1);
+ status = dev->model->cmd_set->bulk_write_register(dev, reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_fe_read_data: failed while bulk writing registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while bulk writing registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
@@ -552,8 +647,8 @@ sanei_genesys_fe_read_data (Genesys_Device * dev, uint8_t addr,
RIE (sanei_genesys_read_register (dev, 0x47, &value));
*data+=value;
- DBG (DBG_io, "sanei_genesys_fe_read_data (0x%02x, 0x%04x)\n", addr, *data);
- DBG (DBG_proc, "sanei_genesys_fe_read_data: completed\n");
+ DBG(DBG_io, "%s (0x%02x, 0x%04x)\n", __func__, addr, *data);
+ DBG(DBG_proc, "%s: completed\n", __func__);
return status;
}
@@ -569,40 +664,29 @@ SANE_Status
sanei_genesys_fe_write_data (Genesys_Device * dev, uint8_t addr,
uint16_t data)
{
- SANE_Status status;
- Genesys_Register_Set reg[3];
-
-#ifdef UNIT_TESTING
- if(dev->usb_mode<0)
- {
- return SANE_STATUS_GOOD;
- }
-#endif
+ SANE_Status status = SANE_STATUS_GOOD;
+ Genesys_Register_Set reg(Genesys_Register_Set::SEQUENTIAL);
- DBG (DBG_io, "sanei_genesys_fe_write_data (0x%02x, 0x%04x)\n", addr, data);
+ DBG(DBG_io, "%s (0x%02x, 0x%04x)\n", __func__, addr, data);
- reg[0].address = 0x51;
- reg[0].value = addr;
- reg[1].address = 0x3a;
- reg[1].value = (data / 256) & 0xff;
- reg[2].address = 0x3b;
- reg[2].value = data & 0xff;
- if (dev->model->asic_type == GENESYS_GL124)
- {
- reg[1].address = 0x5d;
- reg[2].address = 0x5e;
+ reg.init_reg(0x51, addr);
+ if (dev->model->asic_type == GENESYS_GL124) {
+ reg.init_reg(0x5d, (data / 256) & 0xff);
+ reg.init_reg(0x5e, data & 0xff);
+ } else {
+ reg.init_reg(0x3a, (data / 256) & 0xff);
+ reg.init_reg(0x3b, data & 0xff);
}
- status = dev->model->cmd_set->bulk_write_register (dev, reg, 3);
+ status = dev->model->cmd_set->bulk_write_register(dev, reg);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_fe_write_data: failed while bulk writing registers: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed while bulk writing registers: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
- DBG (DBG_io, "sanei_genesys_fe_write_data: completed\n");
+ DBG(DBG_io, "%s: completed\n", __func__);
return status;
}
@@ -616,14 +700,6 @@ sanei_genesys_fe_write_data (Genesys_Device * dev, uint8_t addr,
SANE_Status
sanei_genesys_get_status (Genesys_Device * dev, uint8_t * status)
{
-#ifdef UNIT_TESTING
- if(dev->usb_mode<0)
- {
- *status=0;
- return SANE_STATUS_GOOD;
- }
-#endif
-
if(dev->model->asic_type==GENESYS_GL124)
return sanei_genesys_read_hregister(dev, 0x101, status);
return sanei_genesys_read_register (dev, 0x41, status);
@@ -646,7 +722,7 @@ void sanei_genesys_print_status (uint8_t val)
val & LAMPSTS ? "LAMPSTS " : "",
val & FEBUSY ? "FEBUSY " : "",
val & MOTORENB ? "MOTORENB" : "");
- DBG (DBG_info, "status=%s\n", msg);
+ DBG(DBG_info, "status=%s\n", msg);
}
#if 0
@@ -691,7 +767,7 @@ genesys_dpiset (Genesys_Register_Set * reg)
SANE_Status
sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t value;
DBGSTART;
@@ -743,7 +819,7 @@ sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
*words += ((value & 0x0f) * 256 * 256);
}
- DBG (DBG_proc, "%s: %d words\n", __func__, *words);
+ DBG(DBG_proc, "%s: %d words\n", __func__, *words);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
@@ -754,10 +830,10 @@ sanei_genesys_read_valid_words (Genesys_Device * dev, unsigned int *words)
SANE_Status
sanei_genesys_read_scancnt (Genesys_Device * dev, unsigned int *words)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t value;
- DBG (DBG_proc, "sanei_genesys_read_scancnt: start\n");
+ DBG(DBG_proc, "%s: start\n", __func__);
if (dev->model->asic_type == GENESYS_GL124)
{
@@ -781,171 +857,7 @@ sanei_genesys_read_scancnt (Genesys_Device * dev, unsigned int *words)
*words += ((value & 0x0f) * 256 * 256);
}
- DBG (DBG_proc, "sanei_genesys_read_scancnt: %d lines\n", *words);
- return SANE_STATUS_GOOD;
-}
-
-/**
- * Find register in set
- * @param regs register set to search
- * @param addr addres of the searched register
- * @return a Genesys_Register_Set pointer corresponding to the required
- * address in ASIC space. Or NULL if not found.
- */
-Genesys_Register_Set *
-sanei_genesys_get_address (Genesys_Register_Set * regs, uint16_t addr)
-{
- int i;
- for (i = 0; i < GENESYS_MAX_REGS; i++)
- {
- if (regs[i].address == addr)
- return &regs[i];
- }
- DBG (DBG_error, "sanei_genesys_get_address: failed to find address for register 0x%02x, crash expected !\n",addr);
- return NULL;
-}
-
-/**
- * set a 16 bit value in the given register set.
- * @param regs register set where to set values
- * @param addr address of the first register index to set
- * @param value value to set
- * @return SANE_STATUS_INVAL if the index doesn't exist in register set
- */
-SANE_Status
-sanei_genesys_set_double(Genesys_Register_Set *regs, uint16_t addr, uint16_t value)
-{
- Genesys_Register_Set *r;
-
- /* high byte */
- r = sanei_genesys_get_address (regs, addr);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- r->value = HIBYTE (value);
-
- /* low byte */
- r = sanei_genesys_get_address (regs, addr+1);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- r->value = LOBYTE (value);
-
- return SANE_STATUS_GOOD;
-}
-
-/**
- * set a 24 bit value in the given register set.
- * @param regs register set where to set values
- * @param addr address of the first register index to set
- * @param value value to set
- * @return SANE_STATUS_INVAL if the index doesn't exist in register set
- */
-SANE_Status
-sanei_genesys_set_triple(Genesys_Register_Set *regs, uint16_t addr, uint32_t value)
-{
- Genesys_Register_Set *r;
-
- /* low byte of highword */
- r = sanei_genesys_get_address (regs, addr);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- r->value = LOBYTE (HIWORD(value));
-
- /* high byte of low word */
- r = sanei_genesys_get_address (regs, addr+1);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- r->value = HIBYTE (LOWORD(value));
-
- /* low byte of low word */
- r = sanei_genesys_get_address (regs, addr+2);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- r->value = LOBYTE (LOWORD(value));
-
- return SANE_STATUS_GOOD;
-}
-
-/**
- * get a 16 bit value in the given register set.
- * @param regs register set where to read values
- * @param addr address of the first register index to read
- * @param value value to set
- * @return SANE_STATUS_INVAL if the index doesn't exist in register set
- */
-SANE_Status
-sanei_genesys_get_double(Genesys_Register_Set *regs, uint16_t addr, uint16_t *value)
-{
- Genesys_Register_Set *r;
- uint16_t result=0;
-
- /* high byte */
- r = sanei_genesys_get_address (regs, addr);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- result=r->value<<8;
-
- /* low byte */
- r = sanei_genesys_get_address (regs, addr+1);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- result+=r->value;
-
- *value=result;
- return SANE_STATUS_GOOD;
-}
-
-/**
- * get a 24 bit value in the given register set.
- * @param regs register set where to read values
- * @param addr address of the first register index to read
- * @param value value to set
- * @return SANE_STATUS_INVAL if the index doesn't exist in register set
- */
-SANE_Status
-sanei_genesys_get_triple(Genesys_Register_Set *regs, uint16_t addr, uint32_t *value)
-{
- Genesys_Register_Set *r;
- uint32_t result=0;
-
- /* low byte of highword */
- r = sanei_genesys_get_address (regs, addr);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- result=r->value<<16;
-
- /* high byte of low word */
- r = sanei_genesys_get_address (regs, addr+1);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- result+=(r->value<<8);
-
- /* low byte of low word */
- r = sanei_genesys_get_address (regs, addr+2);
- if(r==NULL)
- {
- return SANE_STATUS_INVAL;
- }
- result+=r->value;
-
- *value=result;
+ DBG(DBG_proc, "%s: %d lines\n", __func__, *words);
return SANE_STATUS_GOOD;
}
@@ -958,15 +870,13 @@ SANE_Status
sanei_genesys_test_buffer_empty (Genesys_Device * dev, SANE_Bool * empty)
{
uint8_t val = 0;
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
- usleep(1000);
+ sanei_genesys_sleep_ms(1);
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_test_buffer_empty: failed to read buffer status: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: failed to read buffer status: %s\n", __func__, sane_strstatus(status));
return status;
}
@@ -975,15 +885,15 @@ sanei_genesys_test_buffer_empty (Genesys_Device * dev, SANE_Bool * empty)
/* fix timing issue on USB3 (or just may be too fast) hardware
* spotted by John S. Weber <jweber53@gmail.com>
*/
- usleep(1000);
- DBG (DBG_io2, "sanei_genesys_test_buffer_empty: buffer is empty\n");
+ sanei_genesys_sleep_ms(1);
+ DBG(DBG_io2, "%s: buffer is empty\n", __func__);
*empty = SANE_TRUE;
return SANE_STATUS_GOOD;
}
*empty = SANE_FALSE;
- DBG (DBG_io, "sanei_genesys_test_buffer_empty: buffer is filled\n");
+ DBG(DBG_io, "%s: buffer is filled\n", __func__);
return SANE_STATUS_GOOD;
}
@@ -993,16 +903,14 @@ SANE_Status
sanei_genesys_read_data_from_scanner (Genesys_Device * dev, uint8_t * data,
size_t size)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
int time_count = 0;
unsigned int words = 0;
- DBG (DBG_proc, "sanei_genesys_read_data_from_scanner (size = %lu bytes)\n",
- (u_long) size);
+ DBG(DBG_proc, "%s (size = %lu bytes)\n", __func__, (u_long) size);
if (size & 1)
- DBG (DBG_info,
- "WARNING sanei_genesys_read_data_from_scanner: odd number of bytes\n");
+ DBG(DBG_info, "WARNING %s: odd number of bytes\n", __func__);
/* wait until buffer not empty for up to 5 seconds */
do
@@ -1010,14 +918,13 @@ sanei_genesys_read_data_from_scanner (Genesys_Device * dev, uint8_t * data,
status = sanei_genesys_read_valid_words (dev, &words);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_read_data_from_scanner: checking for empty buffer failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: checking for empty buffer failed: %s\n", __func__,
+ sane_strstatus(status));
return status;
}
if (words == 0)
{
- usleep (10000); /* wait 10 msec */
+ sanei_genesys_sleep_ms(10);
time_count++;
}
}
@@ -1025,30 +932,27 @@ sanei_genesys_read_data_from_scanner (Genesys_Device * dev, uint8_t * data,
if (words == 0) /* timeout, buffer does not get filled */
{
- DBG (DBG_error,
- "sanei_genesys_read_data_from_scanner: timeout, buffer does not get filled\n");
+ DBG(DBG_error, "%s: timeout, buffer does not get filled\n", __func__);
return SANE_STATUS_IO_ERROR;
}
status = dev->model->cmd_set->bulk_read_data (dev, 0x45, data, size);
if (status != SANE_STATUS_GOOD)
{
- DBG (DBG_error,
- "sanei_genesys_read_data_from_scanner: reading bulk data failed: %s\n",
- sane_strstatus (status));
+ DBG(DBG_error, "%s: reading bulk data failed: %s\n", __func__, sane_strstatus(status));
return status;
}
- DBG (DBG_proc, "sanei_genesys_read_data_from_scanner: completed\n");
+ DBG(DBG_proc, "%s: completed\n", __func__);
return SANE_STATUS_GOOD;
}
SANE_Status
sanei_genesys_read_feed_steps (Genesys_Device * dev, unsigned int *steps)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t value;
- DBG (DBG_proc, "sanei_genesys_read_feed_steps\n");
+ DBG(DBG_proc, "%s\n", __func__);
if (dev->model->asic_type == GENESYS_GL124)
{
@@ -1074,10 +978,54 @@ sanei_genesys_read_feed_steps (Genesys_Device * dev, unsigned int *steps)
*steps += ((value & 0x1f) * 256 * 256);
}
- DBG (DBG_proc, "sanei_genesys_read_feed_steps: %d steps\n", *steps);
+ DBG(DBG_proc, "%s: %d steps\n", __func__, *steps);
return SANE_STATUS_GOOD;
}
+void sanei_genesys_set_lamp_power(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, bool set)
+{
+ static const uint8_t REG03_LAMPPWR = 0x10;
+
+ if (set) {
+ regs.find_reg(0x03).value |= REG03_LAMPPWR;
+
+ if (dev->model->asic_type == GENESYS_GL841) {
+ sanei_genesys_set_exposure(regs, sanei_genesys_fixup_exposure(sensor.exposure));
+ regs.set8(0x19, 0x50);
+ }
+
+ if (dev->model->asic_type == GENESYS_GL843) {
+ sanei_genesys_set_exposure(regs, sensor.exposure);
+ }
+ } else {
+ regs.find_reg(0x03).value &= ~REG03_LAMPPWR;
+
+ if (dev->model->asic_type == GENESYS_GL841) {
+ sanei_genesys_set_exposure(regs, {0x0101, 0x0101, 0x0101});
+ regs.set8(0x19, 0xff);
+ }
+
+ if (dev->model->asic_type == GENESYS_GL843) {
+ if (dev->model->model_id != MODEL_CANON_CANOSCAN_8600F) {
+ // BUG: datasheet says we shouldn't set exposure to zero
+ sanei_genesys_set_exposure(regs, {0, 0, 0});
+ }
+ }
+ }
+ regs.state.is_lamp_on = set;
+}
+
+void sanei_genesys_set_motor_power(Genesys_Register_Set& regs, bool set)
+{
+ static const uint8_t REG02_MTRPWR = 0x10;
+
+ if (set) {
+ regs.find_reg(0x02).value |= REG02_MTRPWR;
+ } else {
+ regs.find_reg(0x02).value &= ~REG02_MTRPWR;
+ }
+}
/**
* Write to many registers at once
@@ -1087,25 +1035,66 @@ sanei_genesys_read_feed_steps (Genesys_Device * dev, unsigned int *steps)
* @param reg pointer to an array of registers
* @param elems size of the array
*/
-SANE_Status
-sanei_genesys_bulk_write_register (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- size_t elems)
+SANE_Status sanei_genesys_bulk_write_register(Genesys_Device * dev, Genesys_Register_Set& reg)
{
- SANE_Status status = SANE_STATUS_GOOD;
- size_t i;
+ DBG_HELPER(dbg);
- for (i = 0; i < elems && status == SANE_STATUS_GOOD; i++)
+ SANE_Status status = SANE_STATUS_GOOD;
+
+ if (dev->model->asic_type == GENESYS_GL646 ||
+ dev->model->asic_type == GENESYS_GL841)
{
- if (reg[i].address != 0)
- {
- status =
- sanei_genesys_write_register (dev, reg[i].address, reg[i].value);
- }
+ uint8_t outdata[8];
+ std::vector<uint8_t> buffer;
+ buffer.reserve(reg.size() * 2);
+
+ /* copy registers and values in data buffer */
+ for (const auto& r : reg) {
+ buffer.push_back(r.address);
+ buffer.push_back(r.value);
+ }
+
+ DBG(DBG_io, "%s (elems= %lu, size = %lu)\n", __func__, (u_long) reg.size(),
+ (u_long) buffer.size());
+
+ if (dev->model->asic_type == GENESYS_GL646) {
+ outdata[0] = BULK_OUT;
+ outdata[1] = BULK_REGISTER;
+ outdata[2] = 0x00;
+ outdata[3] = 0x00;
+ outdata[4] = (buffer.size() & 0xff);
+ outdata[5] = ((buffer.size() >> 8) & 0xff);
+ outdata[6] = ((buffer.size() >> 16) & 0xff);
+ outdata[7] = ((buffer.size() >> 24) & 0xff);
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_BUFFER, INDEX,
+ sizeof(outdata), outdata);
+
+ size_t write_size = buffer.size();
+
+ dev->usb_dev.bulk_write(buffer.data(), &write_size);
+ } else {
+ for (size_t i = 0; i < reg.size();) {
+ size_t c = reg.size() - i;
+ if (c > 32) /*32 is max on GL841. checked that.*/
+ c = 32;
+
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_SET_REGISTER,
+ INDEX, c * 2, buffer.data() + i * 2);
+
+ i += c;
+ }
+ }
+ } else {
+ for (const auto& r : reg) {
+ status = sanei_genesys_write_register (dev, r.address, r.value);
+ if (status != SANE_STATUS_GOOD)
+ return status;
+ }
}
- DBG (DBG_io, "%s: wrote %lu registers\n", __func__, (u_long) elems);
- return status;
+ DBG (DBG_io, "%s: wrote %lu registers\n", __func__, (u_long) reg.size());
+ return status;
}
@@ -1113,14 +1102,16 @@ sanei_genesys_bulk_write_register (Genesys_Device * dev,
/**
* writes a block of data to AHB
* @param dn USB device index
- * @param usb_mode usb mode : -1, fake usb, 1 usb 1.1, 2 usb 2.0
+ * @param usb_mode usb mode : 1 usb 1.1, 2 usb 2.0
* @param addr AHB address to write to
* @param size size of the chunk of data
* @param data pointer to the data to write
*/
SANE_Status
-sanei_genesys_write_ahb (SANE_Int dn, int usb_mode, uint32_t addr, uint32_t size, uint8_t * data)
+sanei_genesys_write_ahb(Genesys_Device* dev, uint32_t addr, uint32_t size, uint8_t * data)
{
+ DBG_HELPER(dbg);
+
uint8_t outdata[8];
size_t written,blksize;
SANE_Status status = SANE_STATUS_GOOD;
@@ -1146,44 +1137,25 @@ sanei_genesys_write_ahb (SANE_Int dn, int usb_mode, uint32_t addr, uint32_t size
DBG (DBG_io, "%s: %s\n", __func__, msg);
}
- /* no effective write if fake USB */
- if(usb_mode<0)
- {
- DBGCOMPLETED;
- return status;
- }
+ // write addr and size for AHB
+ dev->usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_BUFFER, 0x01, 8, outdata);
- /* write addr and size for AHB */
- status =
- sanei_usb_control_msg (dn, REQUEST_TYPE_OUT, REQUEST_BUFFER, VALUE_BUFFER,
- 0x01, 8, outdata);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "sanei_genesys_write_ahb: failed while setting addr and size: %s\n",
- sane_strstatus (status));
- return status;
- }
+ size_t max_out_size = sanei_genesys_get_bulk_max_size(dev);
/* write actual data */
written = 0;
do
{
- if (size - written > BULKOUT_MAXSIZE)
+ if (size - written > max_out_size)
{
- blksize = BULKOUT_MAXSIZE;
+ blksize = max_out_size;
}
else
{
blksize = size - written;
}
- status = sanei_usb_write_bulk (dn, data + written, &blksize);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error,
- "sanei_genesys_write_ahb: failed while writing bulk data: %s\n",
- sane_strstatus (status));
- return status;
- }
+ dev->usb_dev.bulk_write(data + written, &blksize);
+
written += blksize;
}
while (written < size);
@@ -1191,6 +1163,19 @@ sanei_genesys_write_ahb (SANE_Int dn, int usb_mode, uint32_t addr, uint32_t size
return status;
}
+
+std::vector<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;
+ sanei_genesys_create_default_gamma_table(dev, ret, sensor.gamma[color]);
+ return ret;
+ }
+}
+
/** @brief generates gamma buffer to transfer
* Generates gamma table buffer to send to ASIC. Applies
* contrast and brightness if set.
@@ -1202,42 +1187,39 @@ sanei_genesys_write_ahb (SANE_Int dn, int usb_mode, uint32_t addr, uint32_t size
* @returns SANE_STATUS_GOOD or SANE_STATUS_NO_MEM
*/
SANE_Status sanei_genesys_generate_gamma_buffer(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
int bits,
int max,
int size,
uint8_t *gamma)
{
- int i;
- uint16_t value, *lut=NULL;
+ 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);
if(dev->settings.contrast!=0 || dev->settings.brightness!=0)
{
- lut=(uint16_t *)malloc(65536*2);
- if(lut==NULL)
- {
- free(gamma);
- return SANE_STATUS_NO_MEM;
- }
- sanei_genesys_load_lut((unsigned char *)lut,
+ std::vector<uint16_t> lut(65536);
+ sanei_genesys_load_lut((unsigned char *)lut.data(),
bits,
bits,
0,
max,
dev->settings.contrast,
dev->settings.brightness);
- for (i = 0; i < size; i++)
+ for (int i = 0; i < size; i++)
{
- value=dev->sensor.gamma_table[GENESYS_RED][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=dev->sensor.gamma_table[GENESYS_GREEN][i];
+ value=ggamma[i];
value=lut[value];
gamma[i * 2 + size * 2 + 0] = value & 0xff;
gamma[i * 2 + size * 2 + 1] = (value >> 8) & 0xff;
- value=dev->sensor.gamma_table[GENESYS_BLUE][i];
+ value=bgamma[i];
value=lut[value];
gamma[i * 2 + size * 4 + 0] = value & 0xff;
gamma[i * 2 + size * 4 + 1] = (value >> 8) & 0xff;
@@ -1245,28 +1227,22 @@ SANE_Status sanei_genesys_generate_gamma_buffer(Genesys_Device * dev,
}
else
{
- for (i = 0; i < size; i++)
+ for (int i = 0; i < size; i++)
{
- value=dev->sensor.gamma_table[GENESYS_RED][i];
+ uint16_t value=rgamma[i];
gamma[i * 2 + size * 0 + 0] = value & 0xff;
gamma[i * 2 + size * 0 + 1] = (value >> 8) & 0xff;
- value=dev->sensor.gamma_table[GENESYS_GREEN][i];
+ value=ggamma[i];
gamma[i * 2 + size * 2 + 0] = value & 0xff;
gamma[i * 2 + size * 2 + 1] = (value >> 8) & 0xff;
- value=dev->sensor.gamma_table[GENESYS_BLUE][i];
+ value=bgamma[i];
gamma[i * 2 + size * 4 + 0] = value & 0xff;
gamma[i * 2 + size * 4 + 1] = (value >> 8) & 0xff;
}
}
-
- if(lut!=NULL)
- {
- free(lut);
- }
-
return SANE_STATUS_GOOD;
}
@@ -1278,55 +1254,55 @@ SANE_Status sanei_genesys_generate_gamma_buffer(Genesys_Device * dev,
* @param dev device to write to
*/
SANE_Status
-sanei_genesys_send_gamma_table (Genesys_Device * dev)
+sanei_genesys_send_gamma_table(Genesys_Device * dev, const Genesys_Sensor& sensor)
{
int size;
int i;
- uint8_t *gamma, val;
- SANE_Status status;
+ uint8_t val;
+ SANE_Status status = SANE_STATUS_GOOD;
DBGSTART;
size = 256 + 1;
/* allocate temporary gamma tables: 16 bits words, 3 channels */
- gamma = (uint8_t *) malloc (size * 2 * 3);
- if (!gamma)
- {
- return SANE_STATUS_NO_MEM;
- }
- memset(gamma, 255, size*3*2);
+ std::vector<uint8_t> gamma(size * 2 * 3, 255);
- RIE(sanei_genesys_generate_gamma_buffer(dev, 16, 65535, size, gamma));
+ RIE(sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data()));
/* loop sending gamma tables NOTE: 0x01000000 not 0x10000000 */
for (i = 0; i < 3; i++)
{
/* clear corresponding GMM_N bit */
- RIEF (sanei_genesys_read_register (dev, 0xbd, &val), gamma);
+ RIE(sanei_genesys_read_register(dev, 0xbd, &val));
val &= ~(0x01 << i);
- RIEF (sanei_genesys_write_register (dev, 0xbd, val), gamma);
+ RIE(sanei_genesys_write_register(dev, 0xbd, val));
/* clear corresponding GMM_F bit */
- RIEF (sanei_genesys_read_register (dev, 0xbe, &val), gamma);
+ RIE(sanei_genesys_read_register(dev, 0xbe, &val));
val &= ~(0x01 << i);
- RIEF (sanei_genesys_write_register (dev, 0xbe, val), gamma);
+ RIE(sanei_genesys_write_register(dev, 0xbe, val));
+
+ // FIXME: currently the last word of each gamma table is not initialied, so to work around
+ // unstable data, just set it to 0 which is the most likely value of uninitialized memory
+ // (proper value is probably 0xff)
+ gamma[size * 2 * i + size * 2 - 2] = 0;
+ gamma[size * 2 * i + size * 2 - 1] = 0;
/* set GMM_Z */
- RIEF (sanei_genesys_write_register (dev, 0xc5+2*i, gamma[size*2*i+1]), gamma);
- RIEF (sanei_genesys_write_register (dev, 0xc6+2*i, gamma[size*2*i]), gamma);
+ RIE(sanei_genesys_write_register (dev, 0xc5+2*i, gamma[size*2*i+1]));
+ RIE(sanei_genesys_write_register (dev, 0xc6+2*i, gamma[size*2*i]));
- status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, 0x01000000 + 0x200 * i, (size-1) * 2, gamma + i * size * 2+2);
+ status = sanei_genesys_write_ahb(dev, 0x01000000 + 0x200 * i, (size-1) * 2, gamma.data() + i * size * 2+2);
if (status != SANE_STATUS_GOOD)
{
- free (gamma);
DBG (DBG_error,
"%s: write to AHB failed writing table %d (%s)\n", __func__,
i, sane_strstatus (status));
+ break;
}
}
- free (gamma);
DBGCOMPLETED;
return status;
}
@@ -1334,7 +1310,7 @@ sanei_genesys_send_gamma_table (Genesys_Device * dev)
/** @brief initialize device
* Initialize backend and ASIC : registers, motor tables, and gamma tables
* then ensure scanner's head is at home. Designed for gl846+ ASICs.
- * Detects cold boot (ie first boot since device plugged) in this case
+ * Detects cold boot (ie first boot since device plugged) in this case
* an extensice setup up is done at hardware level.
*
* @param dev device to initialize
@@ -1342,55 +1318,28 @@ sanei_genesys_send_gamma_table (Genesys_Device * dev)
* @return SANE_STATUS_GOOD in case of success
*/
SANE_Status
-sanei_genesys_asic_init (Genesys_Device * dev, int max_regs)
+sanei_genesys_asic_init(Genesys_Device* dev, int /*max_regs*/)
{
- SANE_Status status;
+ DBG_HELPER(dbg);
+
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
SANE_Bool cold = SANE_TRUE;
- int size; /**< size of the device's gamma table */
- int i;
DBGSTART;
- /* URB 16 control 0xc0 0x0c 0x8e 0x0b len 1 read 0x00 */
- if(dev->usb_mode>=0)
+ // URB 16 control 0xc0 0x0c 0x8e 0x0b len 1 read 0x00 */
+ dev->usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_REGISTER, VALUE_GET_REGISTER, 0x00, 1, &val);
+
+ DBG (DBG_io2, "%s: value=0x%02x\n", __func__, val);
+ DBG (DBG_info, "%s: device is %s\n", __func__, (val & 0x08) ? "USB 1.0" : "USB2.0");
+ if (val & 0x08)
{
- status = sanei_usb_control_msg (dev->dn, REQUEST_TYPE_IN, REQUEST_REGISTER, VALUE_GET_REGISTER, 0x00, 1, &val);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: request register failed %s\n", __func__,
- sane_strstatus (status));
- return status;
- }
- DBG (DBG_io2, "%s: value=0x%02x\n", __func__, val);
- DBG (DBG_info, "%s: device is %s\n", __func__, (val & 0x08) ? "USB 1.0" : "USB2.0");
- if (val & 0x08)
- {
- dev->usb_mode = 1;
- }
- else
- {
- dev->usb_mode = 2;
- }
+ dev->usb_mode = 1;
}
-
- /* setup gamma tables */
- size = 256;
- for(i=0;i<3;i++)
+ else
{
- FREE_IFNOT_NULL (dev->sensor.gamma_table[i]);
- dev->sensor.gamma_table[i] = (uint16_t *) malloc (2 * size);
- if (dev->sensor.gamma_table[i] == NULL)
- {
- DBG (DBG_error, "%s: could not allocate memory for gamma table %d\n",
- __func__, i);
- return SANE_STATUS_NO_MEM;
- }
- sanei_genesys_create_gamma_table (dev->sensor.gamma_table[i],
- size,
- 65535,
- 65535,
- dev->sensor.gamma[i]);
+ dev->usb_mode = 2;
}
/* check if the device has already been initialized and powered up
@@ -1417,18 +1366,19 @@ sanei_genesys_asic_init (Genesys_Device * dev, int max_regs)
RIE (dev->model->cmd_set->asic_boot (dev, cold));
/* now hardware part is OK, set up device struct */
- FREE_IFNOT_NULL (dev->white_average_data);
- FREE_IFNOT_NULL (dev->dark_average_data);
+ dev->white_average_data.clear();
+ dev->dark_average_data.clear();
- dev->settings.color_filter = 0;
+ dev->settings.color_filter = ColorFilter::RED;
/* duplicate initial values into calibration registers */
- memcpy (dev->calib_reg, dev->reg, max_regs * sizeof (Genesys_Register_Set));
+ dev->calib_reg = dev->reg;
+
+ const auto& sensor = sanei_genesys_find_sensor_any(dev);
/* Set analog frontend */
- RIE (dev->model->cmd_set->set_fe (dev, AFE_INIT));
+ RIE (dev->model->cmd_set->set_fe(dev, sensor, AFE_INIT));
- dev->oe_buffer.buffer = NULL;
dev->already_initialized = SANE_TRUE;
/* Move to home if needed */
@@ -1438,8 +1388,7 @@ sanei_genesys_asic_init (Genesys_Device * dev, int max_regs)
/* Set powersaving (default = 15 minutes) */
RIE (dev->model->cmd_set->set_powersaving (dev, 15));
- DBGCOMPLETED;
- return status;
+ return status;
}
/**
@@ -1448,7 +1397,7 @@ sanei_genesys_asic_init (Genesys_Device * dev, int max_regs)
SANE_Status
sanei_genesys_wait_for_home (Genesys_Device * dev)
{
- SANE_Status status;
+ SANE_Status status = SANE_STATUS_GOOD;
uint8_t val;
int loop;
int max=300;
@@ -1469,7 +1418,7 @@ sanei_genesys_wait_for_home (Genesys_Device * dev)
sane_strstatus (status));
return status;
}
- usleep (10000);
+ sanei_genesys_sleep_ms(10);
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
@@ -1491,8 +1440,7 @@ sanei_genesys_wait_for_home (Genesys_Device * dev)
loop = 0;
do
{
- /* wait 100 ms */
- usleep (100000);
+ sanei_genesys_sleep_ms(100);
status = sanei_genesys_get_status (dev, &val);
if (status != SANE_STATUS_GOOD)
{
@@ -1510,7 +1458,7 @@ sanei_genesys_wait_for_home (Genesys_Device * dev)
while (loop < max && !(val & HOMESNR) && status == SANE_STATUS_GOOD);
/* if after the timeout, head is still not parked, error out */
- if(loop >= max && !(val & HOMESNR) && status == SANE_STATUS_GOOD)
+ if(loop >= max && !(val & HOMESNR) && status == SANE_STATUS_GOOD)
{
DBG (DBG_error, "%s: failed to reach park position %ds\n", __func__, max/10);
return SANE_STATUS_IO_ERROR;
@@ -1527,12 +1475,12 @@ sanei_genesys_wait_for_home (Genesys_Device * dev)
* @param xres x resolution of the scan
* @return the hardware dpi to use
*/
-int sanei_genesys_compute_dpihw(Genesys_Device *dev, int xres)
+int sanei_genesys_compute_dpihw(Genesys_Device *dev, const Genesys_Sensor& sensor, int xres)
{
- /* some scanners use alxways hardware dpi for sensor */
+ /* some scanners use always hardware dpi for sensor */
if (dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE)
{
- return dev->sensor.optical_res;
+ return sensor.optical_res;
}
/* can't be below 600 dpi */
@@ -1540,15 +1488,39 @@ int sanei_genesys_compute_dpihw(Genesys_Device *dev, int xres)
{
return 600;
}
- if (xres <= dev->sensor.optical_res / 4)
+ if (xres <= sensor.optical_res / 4)
{
- return dev->sensor.optical_res / 4;
+ return sensor.optical_res / 4;
}
- if (xres <= dev->sensor.optical_res / 2)
+ if (xres <= sensor.optical_res / 2)
{
- return dev->sensor.optical_res / 2;
+ return sensor.optical_res / 2;
}
- return dev->sensor.optical_res;
+ return sensor.optical_res;
+}
+
+// sanei_genesys_compute_dpihw returns the dpihw that is written to register.
+// However the number of pixels depends on half_ccd mode
+int sanei_genesys_compute_dpihw_calibration(Genesys_Device *dev, const Genesys_Sensor& sensor,
+ int xres)
+{
+ if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
+ {
+ // real resolution is half of the "official" resolution - half_ccd mode
+ int hwres = sensor.optical_res / sensor.get_ccd_size_divisor_for_dpi(xres);
+
+ if (xres <= hwres / 4)
+ {
+ return hwres / 4;
+ }
+ if (xres <= hwres / 2)
+ {
+ return hwres / 2;
+ }
+ return hwres;
+ }
+
+ return sanei_genesys_compute_dpihw(dev, sensor, xres);
}
/** @brief motor profile
@@ -1718,7 +1690,7 @@ Motor_Profile *profile;
i++;
}
- /* return used steps and acceleration sum */
+ // return used steps and taken time
*steps=i/factor;
return sum;
}
@@ -1782,33 +1754,23 @@ int sanei_genesys_get_lowest_dpi(Genesys_Device *dev)
* flatbed cache entries are considred too old and then expires if they
* are older than the expiration time option, forcing calibration at least once
* then given time. */
-SANE_Status
-sanei_genesys_is_compatible_calibration (Genesys_Device * dev,
- Genesys_Calibration_Cache * cache,
- int for_overwrite)
+bool sanei_genesys_is_compatible_calibration(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Calibration_Cache * cache, int for_overwrite)
{
#ifdef HAVE_SYS_TIME_H
struct timeval time;
#endif
int compatible = 1, resolution;
- SANE_Status status;
DBGSTART;
if(dev->model->cmd_set->calculate_current_setup==NULL)
{
DBG (DBG_proc, "%s: no calculate_setup, non compatible cache\n", __func__);
- return SANE_STATUS_UNSUPPORTED;
+ return false;
}
- status = dev->model->cmd_set->calculate_current_setup (dev);
- if (status != SANE_STATUS_GOOD)
- {
- DBG (DBG_error, "%s: failed to calculate current setup: %s\n", __func__,
- sane_strstatus (status));
- return status;
- }
- dev->current_setup.scan_method = dev->settings.scan_method;
+ dev->model->cmd_set->calculate_current_setup(dev, sensor);
DBG (DBG_proc, "%s: checking\n", __func__);
@@ -1817,34 +1779,35 @@ sanei_genesys_is_compatible_calibration (Genesys_Device * dev,
if (dev->model->is_cis == SANE_FALSE)
{
resolution = dev->settings.xres;
- if(resolution>dev->sensor.optical_res)
+ if(resolution>sensor.optical_res)
{
- resolution=dev->sensor.optical_res;
+ resolution=sensor.optical_res;
}
compatible = (resolution == ((int) cache->used_setup.xres));
}
else
{
- resolution=sanei_genesys_compute_dpihw(dev,dev->settings.xres);
- compatible = (resolution == ((int) sanei_genesys_compute_dpihw(dev,cache->used_setup.xres)));
+ resolution=sanei_genesys_compute_dpihw(dev, sensor, dev->settings.xres);
+ compatible = (resolution == ((int) sanei_genesys_compute_dpihw(dev, sensor,cache->used_setup.xres)));
}
DBG (DBG_io, "%s: after resolution check current compatible=%d\n", __func__, compatible);
- if (dev->current_setup.half_ccd != cache->used_setup.half_ccd)
+ if (dev->current_setup.ccd_size_divisor != cache->used_setup.ccd_size_divisor)
{
DBG (DBG_io, "%s: half_ccd=%d, used=%d\n", __func__,
- dev->current_setup.half_ccd, cache->used_setup.half_ccd);
+ dev->current_setup.ccd_size_divisor, cache->used_setup.ccd_size_divisor);
compatible = 0;
}
- if (dev->current_setup.scan_method != cache->used_setup.scan_method)
+ if (dev->current_setup.params.scan_method != cache->used_setup.params.scan_method)
{
DBG (DBG_io, "%s: current method=%d, used=%d\n", __func__,
- dev->current_setup.scan_method, cache->used_setup.scan_method);
+ static_cast<unsigned>(dev->current_setup.params.scan_method),
+ static_cast<unsigned>(cache->used_setup.params.scan_method));
compatible = 0;
}
if (!compatible)
{
DBG (DBG_proc, "%s: completed, non compatible cache\n", __func__);
- return SANE_STATUS_UNSUPPORTED;
+ return false;
}
/* a cache entry expires after afetr expiration time for non sheetfed scanners */
@@ -1855,16 +1818,16 @@ sanei_genesys_is_compatible_calibration (Genesys_Device * dev,
gettimeofday (&time, NULL);
if ((time.tv_sec - cache->last_calibration > dev->settings.expiration_time*60)
&& (dev->model->is_sheetfed == SANE_FALSE)
- && (dev->settings.scan_method == SCAN_METHOD_FLATBED))
+ && (dev->settings.scan_method == ScanMethod::FLATBED))
{
DBG (DBG_proc, "%s: expired entry, non compatible cache\n", __func__);
- return SANE_STATUS_UNSUPPORTED;
+ return false;
}
}
#endif
DBGCOMPLETED;
- return SANE_STATUS_GOOD;
+ return true;
}
@@ -2007,4 +1970,90 @@ sanei_genesys_load_lut (unsigned char * lut,
return ret;
}
-/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
+void sanei_genesys_usleep(unsigned int useconds)
+{
+ usleep(useconds);
+}
+
+void sanei_genesys_sleep_ms(unsigned int milliseconds)
+{
+ sanei_genesys_usleep(milliseconds * 1000);
+}
+
+static std::unique_ptr<std::vector<std::function<void()>>> s_functions_run_at_backend_exit;
+
+void add_function_to_run_at_backend_exit(std::function<void()> function)
+{
+ if (!s_functions_run_at_backend_exit)
+ s_functions_run_at_backend_exit.reset(new std::vector<std::function<void()>>());
+ s_functions_run_at_backend_exit->push_back(std::move(function));
+}
+
+void run_functions_at_backend_exit()
+{
+ for (auto it = s_functions_run_at_backend_exit->rbegin();
+ it != s_functions_run_at_backend_exit->rend(); ++it)
+ {
+ (*it)();
+ }
+ s_functions_run_at_backend_exit.release();
+}
+
+void debug_dump(unsigned level, const Genesys_Settings& settings)
+{
+ DBG(level, "settings:\n"
+ "Resolution X/Y : %u / %u dpi\n"
+ "Lines : %u\n"
+ "Pixels per line : %u\n"
+ "Depth : %u\n"
+ "Start position X/Y : %.3f/%.3f\n"
+ "Scan mode : %d\n\n",
+ settings.xres, settings.yres,
+ settings.lines, settings.pixels, settings.depth,
+ settings.tl_x, settings.tl_y,
+ static_cast<unsigned>(settings.scan_mode));
+}
+
+void debug_dump(unsigned level, const SetupParams& params)
+{
+ DBG(level, "settings:\n"
+ "Resolution X/Y : %u / %u dpi\n"
+ "Lines : %u\n"
+ "Pixels per line : %u\n"
+ "Depth : %u\n"
+ "Channels : %u\n"
+ "Start position X/Y : %g / %g\n"
+ "Scan mode : %d\n"
+ "Color filter : %d\n"
+ "Flags : %x\n",
+ params.xres, params.yres,
+ params.lines, params.pixels,
+ params.depth, params.channels,
+ params.startx, params.starty,
+ static_cast<unsigned>(params.scan_mode),
+ static_cast<unsigned>(params.color_filter),
+ params.flags);
+}
+
+void debug_dump(unsigned level, const Genesys_Current_Setup& setup)
+{
+ DBG(level, "current_setup:\n"
+ "Pixels: %d\n"
+ "Lines: %d\n"
+ "Depth: %d\n"
+ "Channels: %d\n"
+ "exposure_time: %d\n"
+ "Resolution X/Y: %g %g\n"
+ "ccd_size_divisor: %d\n"
+ "stagger: %d\n"
+ "max_shift: %d\n",
+ setup.pixels,
+ setup.lines,
+ setup.depth,
+ setup.channels,
+ setup.exposure_time,
+ setup.xres, setup.yres,
+ setup.ccd_size_divisor,
+ setup.stagger,
+ setup.max_shift);
+}
diff --git a/backend/genesys_low.h b/backend/genesys_low.h
index 56627b4..e750808 100644
--- a/backend/genesys_low.h
+++ b/backend/genesys_low.h
@@ -1,4 +1,4 @@
-/* sane - Scanner Access Now Easy.
+/* sane - Scanner Access Now Easy.
Copyright (C) 2003 Oliver Rauch
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
@@ -81,56 +81,20 @@
#include "../include/_stdint.h"
-#ifndef UNIT_TESTING
-#define GENESYS_STATIC static
-#else
-#define GENESYS_STATIC
-#endif
-
-#define DBG_error0 0 /* errors/warnings printed even with devuglevel 0 */
-#define DBG_error 1 /* fatal errors */
-#define DBG_init 2 /* initialization and scanning time messages */
-#define DBG_warn 3 /* warnings and non-fatal errors */
-#define DBG_info 4 /* informational messages */
-#define DBG_proc 5 /* starting/finishing functions */
-#define DBG_io 6 /* io functions */
-#define DBG_io2 7 /* io functions that are called very often */
-#define DBG_data 8 /* log image data */
-
-/**
- * call a function and return on error
- */
-#define RIE(function) \
- do { status = function; \
- if (status != SANE_STATUS_GOOD) \
- { \
- DBG(DBG_error, "%s: %s\n", __func__, sane_strstatus (status)); \
- return status; \
- } \
- } while (SANE_FALSE)
-
-#define RIEF(function, mem) \
- do { status = function; \
- if (status != SANE_STATUS_GOOD) \
- { \
- free(mem); \
- DBG(DBG_error, "%s: %s\n", __func__, sane_strstatus (status)); \
- return status; \
- } \
- } while (SANE_FALSE)
-
-#define RIEF2(function, mem1, mem2) \
- do { status = function; \
- if (status != SANE_STATUS_GOOD) \
- { \
- free(mem1); \
- free(mem2); \
- return status; \
- } \
- } while (SANE_FALSE)
-
-#define DBGSTART DBG (DBG_proc, "%s start\n", __func__);
-#define DBGCOMPLETED DBG (DBG_proc, "%s completed\n", __func__);
+#include "genesys_error.h"
+#include "genesys_sanei.h"
+#include "genesys_serialize.h"
+
+#include <algorithm>
+#include <array>
+#include <cstring>
+#include <functional>
+#include <iostream>
+#include <limits>
+#include <memory>
+#include <stdexcept>
+#include <string>
+#include <vector>
#define FREE_IFNOT_NULL(x) if(x!=NULL) { free(x); x=NULL;}
@@ -163,11 +127,12 @@
#define GENESYS_FLAG_DARK_WHITE_CALIBRATION (1 << 12) /**< yet another calibration method. does white and dark shading in one run, depending on a black and a white strip*/
#define GENESYS_FLAG_CUSTOM_GAMMA (1 << 13) /**< allow custom gamma tables */
#define GENESYS_FLAG_NO_CALIBRATION (1 << 14) /**< allow scanners to use skip the calibration, needed for sheetfed scanners */
-#define GENESYS_FLAG_HALF_CCD_MODE (1 << 15) /**< scanner has setting for half ccd mode */
#define GENESYS_FLAG_SIS_SENSOR (1 << 16) /**< handling of multi-segments sensors in software */
#define GENESYS_FLAG_SHADING_NO_MOVE (1 << 17) /**< scanner doesn't move sensor during shading calibration */
#define GENESYS_FLAG_SHADING_REPARK (1 << 18) /**< repark head between shading scans */
#define GENESYS_FLAG_FULL_HWDPI_MODE (1 << 19) /**< scanner always use maximum hw dpi to setup the sensor */
+// scanner has infrared transparency scanning capability
+#define GENESYS_FLAG_HAS_UTA_INFRARED (1 << 20)
#define GENESYS_HAS_NO_BUTTONS 0 /**< scanner has no supported button */
#define GENESYS_HAS_SCAN_SW (1 << 0) /**< scanner has SCAN button */
@@ -207,9 +172,6 @@
#define BULK_RAM 0x00
#define BULK_REGISTER 0x11
-#define BULKIN_MAXSIZE 0xFE00
-#define GL646_BULKIN_MAXSIZE 0xFFC0
-#define GL646_BULKIN_MINSIZE 0x0800
#define BULKOUT_MAXSIZE 0xF000
/* AFE values */
@@ -236,77 +198,619 @@
#define FEBUSY 0x02
#define MOTORENB 0x01
-typedef struct Genesys_Register_Set
+#define GENESYS_MAX_REGS 256
+
+enum class ScanMethod : unsigned {
+ // normal scan method
+ FLATBED = 0,
+ // scan using transparency adaptor
+ TRANSPARENCY = 1,
+ // scan using transparency adaptor via infrared channel
+ TRANSPARENCY_INFRARED = 2
+};
+
+inline void serialize(std::istream& str, ScanMethod& x)
+{
+ unsigned value;
+ serialize(str, value);
+ x = static_cast<ScanMethod>(value);
+}
+
+inline void serialize(std::ostream& str, ScanMethod& x)
+{
+ unsigned value = static_cast<unsigned>(x);
+ serialize(str, value);
+}
+
+enum class ScanColorMode : unsigned {
+ LINEART = 0,
+ HALFTONE,
+ GRAY,
+ COLOR_SINGLE_PASS
+};
+
+inline void serialize(std::istream& str, ScanColorMode& x)
+{
+ unsigned value;
+ serialize(str, value);
+ x = static_cast<ScanColorMode>(value);
+}
+
+inline void serialize(std::ostream& str, ScanColorMode& x)
+{
+ unsigned value = static_cast<unsigned>(x);
+ serialize(str, value);
+}
+
+enum class ColorFilter : unsigned {
+ RED = 0,
+ GREEN,
+ BLUE,
+ NONE
+};
+
+inline void serialize(std::istream& str, ColorFilter& x)
+{
+ unsigned value;
+ serialize(str, value);
+ x = static_cast<ColorFilter>(value);
+}
+
+inline void serialize(std::ostream& str, ColorFilter& x)
+{
+ unsigned value = static_cast<unsigned>(x);
+ serialize(str, value);
+}
+
+struct GenesysRegister {
+ uint16_t address = 0;
+ uint8_t value = 0;
+};
+
+inline bool operator<(const GenesysRegister& lhs, const GenesysRegister& rhs)
+{
+ return lhs.address < rhs.address;
+}
+
+struct GenesysRegisterSetState {
+ bool is_lamp_on = false;
+ bool is_xpa_on = false;
+};
+
+class Genesys_Register_Set {
+public:
+ using container = std::vector<GenesysRegister>;
+ using iterator = typename container::iterator;
+ using const_iterator = typename container::const_iterator;
+
+ // FIXME: this shouldn't live here, but in a separate struct that contains Genesys_Register_Set
+ GenesysRegisterSetState state;
+
+ enum Options {
+ SEQUENTIAL = 1
+ };
+
+ Genesys_Register_Set()
+ {
+ registers_.reserve(GENESYS_MAX_REGS);
+ }
+
+ // by default the register set is sorted by address. In certain cases it's importand to send
+ // the registers in certain order: use the SEQUENTIAL option for that
+ Genesys_Register_Set(Options opts) : Genesys_Register_Set()
+ {
+ if ((opts & SEQUENTIAL) == SEQUENTIAL) {
+ sorted_ = false;
+ }
+ }
+
+ void init_reg(uint16_t address, uint8_t default_value)
+ {
+ if (find_reg_index(address) >= 0) {
+ set8(address, default_value);
+ return;
+ }
+ GenesysRegister reg;
+ reg.address = address;
+ reg.value = default_value;
+ registers_.push_back(reg);
+ if (sorted_)
+ std::sort(registers_.begin(), registers_.end());
+ }
+
+ void remove_reg(uint16_t address)
+ {
+ int i = find_reg_index(address);
+ if (i < 0) {
+ throw std::runtime_error("the register does not exist");
+ }
+ registers_.erase(registers_.begin() + i);
+ }
+
+ GenesysRegister& find_reg(uint16_t address)
+ {
+ int i = find_reg_index(address);
+ if (i < 0) {
+ throw std::runtime_error("the register does not exist");
+ }
+ return registers_[i];
+ }
+
+ const GenesysRegister& find_reg(uint16_t address) const
+ {
+ int i = find_reg_index(address);
+ if (i < 0) {
+ throw std::runtime_error("the register does not exist");
+ }
+ return registers_[i];
+ }
+
+ GenesysRegister* find_reg_address(uint16_t address)
+ {
+ return &find_reg(address);
+ }
+
+ const GenesysRegister* find_reg_address(uint16_t address) const
+ {
+ return &find_reg(address);
+ }
+
+ void set8(uint16_t address, uint8_t value)
+ {
+ find_reg(address).value = value;
+ }
+
+ void set8_mask(uint16_t address, uint8_t value, uint8_t mask)
+ {
+ auto& reg = find_reg(address);
+ reg.value = (reg.value & ~mask) | value;
+ }
+
+ void set16(uint16_t address, uint16_t value)
+ {
+ find_reg(address).value = (value >> 8) & 0xff;
+ find_reg(address + 1).value = value & 0xff;
+ }
+
+ void set24(uint16_t address, uint32_t value)
+ {
+ find_reg(address).value = (value >> 16) & 0xff;
+ find_reg(address + 1).value = (value >> 8) & 0xff;
+ find_reg(address + 2).value = value & 0xff;
+ }
+
+ uint8_t get8(uint16_t address) const
+ {
+ return find_reg(address).value;
+ }
+
+ uint16_t get16(uint16_t address) const
+ {
+ return (find_reg(address).value << 8) | find_reg(address + 1).value;
+ }
+
+ uint32_t get24(uint16_t address) const
+ {
+ return (find_reg(address).value << 16) |
+ (find_reg(address + 1).value << 8) |
+ find_reg(address + 2).value;
+ }
+
+ void clear() { registers_.clear(); }
+ size_t size() const { return registers_.size(); }
+
+ iterator begin() { return registers_.begin(); }
+ const_iterator begin() const { return registers_.begin(); }
+
+ iterator end() { return registers_.end(); }
+ const_iterator end() const { return registers_.end(); }
+
+private:
+ int find_reg_index(uint16_t address) const
+ {
+ if (!sorted_) {
+ for (size_t i = 0; i < registers_.size(); i++) {
+ if (registers_[i].address == address) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ GenesysRegister search;
+ search.address = address;
+ auto it = std::lower_bound(registers_.begin(), registers_.end(), search);
+ if (it == registers_.end())
+ return -1;
+ if (it->address != address)
+ return -1;
+ return std::distance(registers_.begin(), it);
+ }
+
+ // registers are stored in a sorted vector
+ bool sorted_ = true;
+ std::vector<GenesysRegister> registers_;
+};
+
+template<class T, size_t Size>
+struct AssignableArray : public std::array<T, Size> {
+ AssignableArray() = default;
+ AssignableArray(const AssignableArray&) = default;
+ AssignableArray& operator=(const AssignableArray&) = default;
+
+ AssignableArray& operator=(std::initializer_list<T> init)
+ {
+ if (init.size() != std::array<T, Size>::size())
+ throw std::runtime_error("An array of incorrect size assigned");
+ std::copy(init.begin(), init.end(), std::array<T, Size>::begin());
+ return *this;
+ }
+};
+
+struct GenesysRegisterSetting {
+ GenesysRegisterSetting() = default;
+
+ GenesysRegisterSetting(uint16_t p_address, uint8_t p_value) :
+ address(p_address), value(p_value)
+ {}
+
+ GenesysRegisterSetting(uint16_t p_address, uint8_t p_value, uint8_t p_mask) :
+ address(p_address), value(p_value), mask(p_mask)
+ {}
+
+ uint16_t address = 0;
+ uint8_t value = 0;
+ uint8_t mask = 0xff;
+
+ bool operator==(const GenesysRegisterSetting& other) const
+ {
+ return address == other.address && value == other.value && mask == other.mask;
+ }
+};
+
+template<class Stream>
+void serialize(Stream& str, GenesysRegisterSetting& reg)
+{
+ serialize(str, reg.address);
+ serialize(str, reg.value);
+ serialize(str, reg.mask);
+}
+
+class GenesysRegisterSettingSet {
+public:
+ using container = std::vector<GenesysRegisterSetting>;
+ using iterator = typename container::iterator;
+ using const_iterator = typename container::const_iterator;
+
+ GenesysRegisterSettingSet() = default;
+ GenesysRegisterSettingSet(std::initializer_list<GenesysRegisterSetting> ilist) : regs_(ilist) {}
+
+ iterator begin() { return regs_.begin(); }
+ const_iterator begin() const { return regs_.begin(); }
+ iterator end() { return regs_.end(); }
+ const_iterator end() const { return regs_.end(); }
+
+ GenesysRegisterSetting& operator[](size_t i) { return regs_[i]; }
+ const GenesysRegisterSetting& operator[](size_t i) const { return regs_[i]; }
+
+ size_t size() const { return regs_.size(); }
+ bool empty() const { return regs_.empty(); }
+ void clear() { regs_.clear(); }
+
+ void push_back(GenesysRegisterSetting reg) { regs_.push_back(reg); }
+
+ void merge(const GenesysRegisterSettingSet& other)
+ {
+ for (const auto& reg : other) {
+ set_value(reg.address, reg.value);
+ }
+ }
+
+ uint8_t get_value(uint16_t address) const
+ {
+ for (const auto& reg : regs_) {
+ if (reg.address == address)
+ return reg.value;
+ }
+ throw std::runtime_error("Unknown register");
+ }
+
+ void set_value(uint16_t address, uint8_t value)
+ {
+ for (auto& reg : regs_) {
+ if (reg.address == address) {
+ reg.value = value;
+ return;
+ }
+ }
+ push_back(GenesysRegisterSetting(address, value));
+ }
+
+ friend void serialize(std::istream& str, GenesysRegisterSettingSet& reg);
+ friend void serialize(std::ostream& str, GenesysRegisterSettingSet& reg);
+
+ bool operator==(const GenesysRegisterSettingSet& other) const
+ {
+ return regs_ == other.regs_;
+ }
+
+private:
+ std::vector<GenesysRegisterSetting> regs_;
+};
+
+inline void serialize(std::istream& str, GenesysRegisterSettingSet& reg)
+{
+ reg.clear();
+ const size_t max_register_address =
+ 1 << (sizeof(GenesysRegisterSetting::address) * CHAR_BIT);
+ serialize(str, reg.regs_, max_register_address);
+}
+
+inline void serialize(std::ostream& str, GenesysRegisterSettingSet& reg)
+{
+ serialize(str, reg.regs_);
+}
+
+struct GenesysFrontendLayout
{
- uint16_t address;
- uint8_t value;
-} Genesys_Register_Set;
+ std::array<uint16_t, 3> offset_addr = {};
+ std::array<uint16_t, 3> gain_addr = {};
+
+ bool operator==(const GenesysFrontendLayout& other) const
+ {
+ return offset_addr == other.offset_addr && gain_addr == other.gain_addr;
+ }
+};
/** @brief Data structure to set up analog frontend.
- * The analog frontend converts analog value from image sensor to
- * digital value. It has its own control registers which are set up
- * with this structure. The values are written using sanei_genesys_fe_write_data.
- * The actual register addresses they map to depends on the frontend used.
- * @see sanei_genesys_fe_write_data
+ The analog frontend converts analog value from image sensor to digital value. It has its own
+ control registers which are set up with this structure. The values are written using
+ sanei_genesys_fe_write_data.
*/
-typedef struct
+struct Genesys_Frontend
{
- uint8_t fe_id; /**< id of the frontend description */
- uint8_t reg[4]; /**< values to set up frontend control register, they
- usually map to analog register 0x00 to 0x03 */
- uint8_t sign[3]; /**< sets the sign of the digital value */
- uint8_t offset[3]; /**< offset correction to apply to signal, most often
- maps to frontend register 0x20-0x22 */
- uint8_t gain[3]; /**< amplification to apply to signal, most often
- maps to frontend register 0x28-0x2a */
- uint8_t reg2[3]; /**< extra control registers */
-} Genesys_Frontend;
-
-typedef struct
+ Genesys_Frontend() = default;
+
+ // id of the frontend description
+ uint8_t fe_id = 0;
+
+ // all registers of the frontend
+ GenesysRegisterSettingSet regs;
+
+ // extra control registers
+ std::array<uint8_t, 3> reg2 = {};
+
+ GenesysFrontendLayout layout;
+
+ void set_offset(unsigned which, uint8_t value)
+ {
+ regs.set_value(layout.offset_addr[which], value);
+ }
+
+ void set_gain(unsigned which, uint8_t value)
+ {
+ regs.set_value(layout.gain_addr[which], value);
+ }
+
+ uint8_t get_offset(unsigned which) const
+ {
+ return regs.get_value(layout.offset_addr[which]);
+ }
+
+ uint8_t get_gain(unsigned which) const
+ {
+ return regs.get_value(layout.gain_addr[which]);
+ }
+
+ bool operator==(const Genesys_Frontend& other) const
+ {
+ return fe_id == other.fe_id &&
+ regs == other.regs &&
+ reg2 == other.reg2 &&
+ layout == other.layout;
+ }
+};
+
+template<class Stream>
+void serialize(Stream& str, Genesys_Frontend& x)
{
- uint8_t sensor_id; /**< id of the sensor description */
- int optical_res;
- int black_pixels;
- int dummy_pixel; /* value of dummy register. */
- int CCD_start_xoffset; /* last pixel of CCD margin at optical resolution */
- int sensor_pixels; /* total pixels used by the sensor */
- int fau_gain_white_ref; /* TA CCD target code (reference gain) */
- int gain_white_ref; /* CCD target code (reference gain) */
- uint8_t regs_0x08_0x0b[4];
- uint8_t regs_0x10_0x1d[14];
- uint8_t regs_0x52_0x5e[13];
- float gamma[3]; /**< red, green and blue gamma coefficient for default gamma tables */
- uint16_t *gamma_table[3]; /**< sensor specific gamma tables */
-} Genesys_Sensor;
-
-typedef struct
+ serialize(str, x.fe_id);
+ serialize_newline(str);
+ serialize(str, x.regs);
+ serialize_newline(str);
+ serialize(str, x.reg2);
+ serialize_newline(str);
+ serialize(str, x.layout.offset_addr);
+ serialize(str, x.layout.gain_addr);
+}
+
+struct SensorExposure {
+ uint16_t red, green, blue;
+};
+
+struct Genesys_Sensor {
+
+ Genesys_Sensor() = default;
+ ~Genesys_Sensor() = default;
+
+ // id of the sensor description
+ uint8_t sensor_id = 0;
+ int optical_res = 0;
+
+ // the minimum and maximum resolution this sensor is usable at. -1 means that the resolution
+ // can be any.
+ int min_resolution = -1;
+ int max_resolution = -1;
+
+ // the scan method used with the sensor
+ ScanMethod method = ScanMethod::FLATBED;
+
+ // CCD may present itself as half or quarter-size CCD on certain resolutions
+ int ccd_size_divisor = 1;
+
+ int black_pixels = 0;
+ // value of the dummy register
+ int dummy_pixel = 0;
+ // last pixel of CCD margin at optical resolution
+ int CCD_start_xoffset = 0;
+ // total pixels used by the sensor
+ int sensor_pixels = 0;
+ // TA CCD target code (reference gain)
+ int fau_gain_white_ref = 0;
+ // CCD target code (reference gain)
+ int gain_white_ref = 0;
+
+ // red, green and blue initial exposure values
+ SensorExposure exposure;
+
+ int exposure_lperiod = -1;
+
+ GenesysRegisterSettingSet custom_regs;
+ GenesysRegisterSettingSet custom_fe_regs;
+
+ // red, green and blue gamma coefficient for default gamma tables
+ AssignableArray<float, 3> gamma;
+
+ int get_ccd_size_divisor_for_dpi(int xres) const
+ {
+ if (ccd_size_divisor >= 4 && xres * 4 <= optical_res) {
+ return 4;
+ }
+ if (ccd_size_divisor >= 2 && xres * 2 <= optical_res) {
+ return 2;
+ }
+ return 1;
+ }
+
+ bool operator==(const Genesys_Sensor& other) const
+ {
+ return sensor_id == other.sensor_id &&
+ optical_res == other.optical_res &&
+ min_resolution == other.min_resolution &&
+ max_resolution == other.max_resolution &&
+ method == other.method &&
+ ccd_size_divisor == other.ccd_size_divisor &&
+ black_pixels == other.black_pixels &&
+ dummy_pixel == other.dummy_pixel &&
+ CCD_start_xoffset == other.CCD_start_xoffset &&
+ sensor_pixels == other.sensor_pixels &&
+ fau_gain_white_ref == other.fau_gain_white_ref &&
+ gain_white_ref == other.gain_white_ref &&
+ exposure.blue == other.exposure.blue &&
+ exposure.green == other.exposure.green &&
+ exposure.red == other.exposure.red &&
+ exposure_lperiod == other.exposure_lperiod &&
+ custom_regs == other.custom_regs &&
+ custom_fe_regs == other.custom_fe_regs &&
+ gamma == other.gamma;
+ }
+};
+
+template<class Stream>
+void serialize(Stream& str, Genesys_Sensor& x)
{
- uint8_t gpo_id; /**< id of the gpo description */
- uint8_t value[2]; /**< registers 0x6c and 0x6d on gl843 */
- uint8_t enable[2]; /**< registers 0x6e and 0x6F on gl843 */
-} Genesys_Gpo;
+ serialize(str, x.sensor_id);
+ serialize(str, x.optical_res);
+ serialize(str, x.min_resolution);
+ serialize(str, x.max_resolution);
+ serialize(str, x.method);
+ serialize(str, x.ccd_size_divisor);
+ serialize(str, x.black_pixels);
+ serialize(str, x.dummy_pixel);
+ serialize(str, x.CCD_start_xoffset);
+ serialize(str, x.sensor_pixels);
+ serialize(str, x.fau_gain_white_ref);
+ serialize(str, x.gain_white_ref);
+ serialize_newline(str);
+ serialize(str, x.exposure.blue);
+ serialize(str, x.exposure.green);
+ serialize(str, x.exposure.red);
+ serialize(str, x.exposure_lperiod);
+ serialize_newline(str);
+ serialize(str, x.custom_regs);
+ serialize_newline(str);
+ serialize(str, x.custom_fe_regs);
+ serialize_newline(str);
+ serialize(str, x.gamma);
+}
-typedef struct
+struct Genesys_Gpo
{
- SANE_Int maximum_start_speed; /* maximum speed allowed when accelerating from standstill. Unit: pixeltime/step */
- SANE_Int maximum_speed; /* maximum speed allowed. Unit: pixeltime/step */
- SANE_Int minimum_steps; /* number of steps used for default curve */
- float g; /* power for non-linear acceleration curves. */
-/* vs*(1-i^g)+ve*(i^g) where
- vs = start speed, ve = end speed,
- i = 0.0 for first entry and i = 1.0 for last entry in default table*/
-} Genesys_Motor_Slope;
+ Genesys_Gpo() = default;
+
+ Genesys_Gpo(uint8_t id, const std::array<uint8_t, 2>& v, const std::array<uint8_t, 2>& e)
+ {
+ gpo_id = id;
+ value[0] = v[0];
+ value[1] = v[1];
+ enable[0] = e[0];
+ enable[1] = e[1];
+ }
+ // Genesys_Gpo
+ uint8_t gpo_id = 0;
-typedef struct
+ // registers 0x6c and 0x6d on GL841, GL842, GL843, GL846, GL848 and possibly others
+ uint8_t value[2] = { 0, 0 };
+
+ // registers 0x6e and 0x6f on GL841, GL842, GL843, GL846, GL848 and possibly others
+ uint8_t enable[2] = { 0, 0 };
+};
+
+struct Genesys_Motor_Slope
+{
+ Genesys_Motor_Slope() = default;
+ Genesys_Motor_Slope(int p_maximum_start_speed, int p_maximum_speed, int p_minimum_steps,
+ float p_g) :
+ maximum_start_speed(p_maximum_start_speed),
+ maximum_speed(p_maximum_speed),
+ minimum_steps(p_minimum_steps),
+ g(p_g)
+ {}
+
+ // maximum speed allowed when accelerating from standstill. Unit: pixeltime/step
+ int maximum_start_speed = 0;
+ // maximum speed allowed. Unit: pixeltime/step
+ int maximum_speed = 0;
+ // number of steps used for default curve
+ int minimum_steps = 0;
+
+ /* power for non-linear acceleration curves.
+ vs*(1-i^g)+ve*(i^g) where
+ vs = start speed, ve = end speed,
+ i = 0.0 for first entry and i = 1.0 for last entry in default table
+ */
+ float g = 0;
+};
+
+
+struct Genesys_Motor
{
- uint8_t motor_id; /**< id of the motor description */
- SANE_Int base_ydpi; /* motor base steps. Unit: 1/" */
- SANE_Int optical_ydpi; /* maximum resolution in y-direction. Unit: 1/" */
- SANE_Int max_step_type; /* maximum step type. 0-2 */
- SANE_Int power_mode_count; /* number of power modes*/
- Genesys_Motor_Slope slopes[2][3]; /* slopes to derive individual slopes from */
-} Genesys_Motor;
+ Genesys_Motor() = default;
+ Genesys_Motor(uint8_t p_motor_id, int p_base_ydpi, int p_optical_ydpi, int p_max_step_type,
+ int p_power_mode_count,
+ const std::vector<std::vector<Genesys_Motor_Slope>>& p_slopes) :
+ motor_id(p_motor_id),
+ base_ydpi(p_base_ydpi),
+ optical_ydpi(p_optical_ydpi),
+ max_step_type(p_max_step_type),
+ power_mode_count(p_power_mode_count),
+ slopes(p_slopes)
+ {}
+
+ // id of the motor description
+ uint8_t motor_id = 0;
+ // motor base steps. Unit: 1/inch
+ int base_ydpi = 0;
+ // maximum resolution in y-direction. Unit: 1/inch
+ int optical_ydpi = 0;
+ // maximum step type. 0-2
+ int max_step_type = 0;
+ // number of power modes
+ int power_mode_count = 0;
+ // slopes to derive individual slopes from
+ std::vector<std::vector<Genesys_Motor_Slope>> slopes;
+};
typedef enum Genesys_Color_Order
{
@@ -329,116 +833,175 @@ Genesys_Color_Order;
#define GENESYS_GL123 123
#define GENESYS_GL124 124
-#define GENESYS_MAX_REGS 256
+enum Genesys_Model_Type
+{
+ MODEL_UMAX_ASTRA_4500 = 0,
+ MODEL_CANON_LIDE_50,
+ MODEL_PANASONIC_KV_SS080,
+ MODEL_HP_SCANJET_4850C,
+ MODEL_HP_SCANJET_G4010,
+ MODEL_HP_SCANJET_G4050,
+ MODEL_CANON_CANOSCAN_4400F,
+ MODEL_CANON_CANOSCAN_8400F,
+ MODEL_CANON_CANOSCAN_8600F,
+ MODEL_CANON_LIDE_100,
+ MODEL_CANON_LIDE_110,
+ MODEL_CANON_LIDE_120,
+ MODEL_CANON_LIDE_210,
+ MODEL_CANON_LIDE_220,
+ MODEL_CANON_CANOSCAN_5600F,
+ MODEL_CANON_LIDE_700F,
+ MODEL_CANON_LIDE_200,
+ MODEL_CANON_LIDE_60,
+ MODEL_CANON_LIDE_80,
+ MODEL_HP_SCANJET_2300C,
+ MODEL_HP_SCANJET_2400C,
+ MODEL_VISIONEER_STROBE_XP200,
+ MODEL_HP_SCANJET_3670C,
+ MODEL_PLUSTEK_OPTICPRO_ST12,
+ MODEL_PLUSTEK_OPTICPRO_ST24,
+ MODEL_MEDION_MD5345,
+ MODEL_VISIONEER_STROBE_XP300,
+ MODEL_SYSCAN_DOCKETPORT_665,
+ MODEL_VISIONEER_ROADWARRIOR,
+ MODEL_SYSCAN_DOCKETPORT_465,
+ MODEL_VISIONEER_STROBE_XP100_REVISION3,
+ MODEL_PENTAX_DSMOBILE_600,
+ MODEL_SYSCAN_DOCKETPORT_467,
+ MODEL_SYSCAN_DOCKETPORT_685,
+ MODEL_SYSCAN_DOCKETPORT_485,
+ MODEL_DCT_DOCKETPORT_487,
+ MODEL_VISIONEER_7100,
+ MODEL_XEROX_2400,
+ MODEL_XEROX_TRAVELSCANNER_100,
+ MODEL_PLUSTEK_OPTICPRO_3600,
+ MODEL_HP_SCANJET_N6310,
+ MODEL_PLUSTEK_OPTICBOOK_3800,
+ MODEL_CANON_IMAGE_FORMULA_101
+};
-#define DAC_WOLFSON_UMAX 0
-#define DAC_WOLFSON_ST12 1
-#define DAC_WOLFSON_ST24 2
-#define DAC_WOLFSON_5345 3
-#define DAC_WOLFSON_HP2400 4
-#define DAC_WOLFSON_HP2300 5
-#define DAC_CANONLIDE35 6
-#define DAC_AD_XP200 7 /* Analog Device frontend */
-#define DAC_WOLFSON_XP300 8
-#define DAC_WOLFSON_HP3670 9
-#define DAC_WOLFSON_DSM600 10
-#define DAC_CANONLIDE200 11
-#define DAC_KVSS080 12
-#define DAC_G4050 13
-#define DAC_CANONLIDE110 14
-#define DAC_PLUSTEK_3600 15
-#define DAC_CANONLIDE700 16
-#define DAC_CS8400F 17
-#define DAC_IMG101 18
-#define DAC_PLUSTEK3800 19
-#define DAC_CANONLIDE80 20
-#define DAC_CANONLIDE120 21
-
-#define CCD_UMAX 0
-#define CCD_ST12 1 /* SONY ILX548: 5340 Pixel ??? */
-#define CCD_ST24 2 /* SONY ILX569: 10680 Pixel ??? */
-#define CCD_5345 3
-#define CCD_HP2400 4
-#define CCD_HP2300 5
-#define CCD_CANONLIDE35 6
-#define CIS_XP200 7 /* CIS sensor for Strobe XP200 */
- /* 8 is unused currently */
-#define CCD_HP3670 9
-#define CCD_DP665 10
-#define CCD_ROADWARRIOR 11
-#define CCD_DSMOBILE600 12
-#define CCD_XP300 13
-#define CCD_DP685 14
-#define CIS_CANONLIDE200 15
-#define CIS_CANONLIDE100 16
-#define CCD_KVSS080 17
-#define CCD_G4050 18
-#define CIS_CANONLIDE110 19
-#define CCD_PLUSTEK_3600 20
-#define CCD_HP_N6310 21
-#define CIS_CANONLIDE700 22
-#define CCD_CS4400F 23
-#define CCD_CS8400F 24
-#define CCD_IMG101 25
-#define CCD_PLUSTEK3800 26
-#define CIS_CANONLIDE210 27
-#define CIS_CANONLIDE80 28
-#define CIS_CANONLIDE220 29
-#define CIS_CANONLIDE120 30
-
-#define GPO_UMAX 0
-#define GPO_ST12 1
-#define GPO_ST24 2
-#define GPO_5345 3
-#define GPO_HP2400 4
-#define GPO_HP2300 5
-#define GPO_CANONLIDE35 6
-#define GPO_XP200 7
-#define GPO_XP300 8
-#define GPO_HP3670 9
-#define GPO_DP665 10
-#define GPO_DP685 11
-#define GPO_CANONLIDE200 12
-#define GPO_KVSS080 13
-#define GPO_G4050 14
-#define GPO_CANONLIDE110 15
-#define GPO_PLUSTEK_3600 16
-#define GPO_CANONLIDE210 17
-#define GPO_HP_N6310 18
-#define GPO_CANONLIDE700 19
-#define GPO_CS4400F 20
-#define GPO_CS8400F 21
-#define GPO_IMG101 22
-#define GPO_PLUSTEK3800 23
-#define GPO_CANONLIDE80 24
-#define GPO_CANONLIDE120 25
-
-#define MOTOR_UMAX 0
-#define MOTOR_5345 1
-#define MOTOR_ST24 2
-#define MOTOR_HP2400 3
-#define MOTOR_HP2300 4
-#define MOTOR_CANONLIDE35 5
-#define MOTOR_XP200 6
-#define MOTOR_XP300 7
-#define MOTOR_HP3670 9
-#define MOTOR_DP665 10
-#define MOTOR_ROADWARRIOR 11
-#define MOTOR_DSMOBILE_600 12
-#define MOTOR_CANONLIDE200 13
-#define MOTOR_CANONLIDE100 14
-#define MOTOR_KVSS080 15
-#define MOTOR_G4050 16
-#define MOTOR_CANONLIDE110 17
-#define MOTOR_PLUSTEK_3600 18
-#define MOTOR_CANONLIDE700 19
-#define MOTOR_CS8400F 20
-#define MOTOR_IMG101 21
-#define MOTOR_PLUSTEK3800 22
-#define MOTOR_CANONLIDE210 23
-#define MOTOR_CANONLIDE80 24
-#define MOTOR_CANONLIDE120 25
+enum Genesys_Dac_Type
+{
+ DAC_WOLFSON_UMAX = 0,
+ DAC_WOLFSON_ST12,
+ DAC_WOLFSON_ST24,
+ DAC_WOLFSON_5345,
+ DAC_WOLFSON_HP2400,
+ DAC_WOLFSON_HP2300,
+ DAC_CANONLIDE35,
+ DAC_AD_XP200,
+ DAC_WOLFSON_XP300,
+ DAC_WOLFSON_HP3670,
+ DAC_WOLFSON_DSM600,
+ DAC_CANONLIDE200,
+ DAC_KVSS080,
+ DAC_G4050,
+ DAC_CANONLIDE110,
+ DAC_PLUSTEK_3600,
+ DAC_CANONLIDE700,
+ DAC_CS8400F,
+ DAC_CS8600F,
+ DAC_IMG101,
+ DAC_PLUSTEK3800,
+ DAC_CANONLIDE80,
+ DAC_CANONLIDE120
+};
+
+enum Genesys_Sensor_Type
+{
+ CCD_UMAX = 0,
+ CCD_ST12, // SONY ILX548: 5340 Pixel ???
+ CCD_ST24, // SONY ILX569: 10680 Pixel ???
+ CCD_5345,
+ CCD_HP2400,
+ CCD_HP2300,
+ CCD_CANONLIDE35,
+ CIS_XP200, // CIS sensor for Strobe XP200,
+ CCD_HP3670,
+ CCD_DP665,
+ CCD_ROADWARRIOR,
+ CCD_DSMOBILE600,
+ CCD_XP300,
+ CCD_DP685,
+ CIS_CANONLIDE200,
+ CIS_CANONLIDE100,
+ CCD_KVSS080,
+ CCD_G4050,
+ CIS_CANONLIDE110,
+ CCD_PLUSTEK_3600,
+ CCD_HP_N6310,
+ CIS_CANONLIDE700,
+ CCD_CS4400F,
+ CCD_CS8400F,
+ CCD_CS8600F,
+ CCD_IMG101,
+ CCD_PLUSTEK3800,
+ CIS_CANONLIDE210,
+ CIS_CANONLIDE80,
+ CIS_CANONLIDE220,
+ CIS_CANONLIDE120,
+};
+enum Genesys_Gpo_Type
+{
+ GPO_UMAX,
+ GPO_ST12,
+ GPO_ST24,
+ GPO_5345,
+ GPO_HP2400,
+ GPO_HP2300,
+ GPO_CANONLIDE35,
+ GPO_XP200,
+ GPO_XP300,
+ GPO_HP3670,
+ GPO_DP665,
+ GPO_DP685,
+ GPO_CANONLIDE200,
+ GPO_KVSS080,
+ GPO_G4050,
+ GPO_CANONLIDE110,
+ GPO_PLUSTEK_3600,
+ GPO_CANONLIDE210,
+ GPO_HP_N6310,
+ GPO_CANONLIDE700,
+ GPO_CS4400F,
+ GPO_CS8400F,
+ GPO_CS8600F,
+ GPO_IMG101,
+ GPO_PLUSTEK3800,
+ GPO_CANONLIDE80,
+ GPO_CANONLIDE120
+};
+
+enum Genesys_Motor_Type
+{
+ MOTOR_UMAX = 0,
+ MOTOR_5345,
+ MOTOR_ST24,
+ MOTOR_HP2400,
+ MOTOR_HP2300,
+ MOTOR_CANONLIDE35,
+ MOTOR_XP200,
+ MOTOR_XP300,
+ MOTOR_HP3670,
+ MOTOR_DP665,
+ MOTOR_ROADWARRIOR,
+ MOTOR_DSMOBILE_600,
+ MOTOR_CANONLIDE200,
+ MOTOR_CANONLIDE100,
+ MOTOR_KVSS080,
+ MOTOR_G4050,
+ MOTOR_CANONLIDE110,
+ MOTOR_PLUSTEK_3600,
+ MOTOR_CANONLIDE700,
+ MOTOR_CS8400F,
+ MOTOR_CS8600F,
+ MOTOR_IMG101,
+ MOTOR_PLUSTEK3800,
+ MOTOR_CANONLIDE210,
+ MOTOR_CANONLIDE80,
+ MOTOR_CANONLIDE120
+};
/* Forward typedefs */
typedef struct Genesys_Device Genesys_Device;
@@ -462,15 +1025,21 @@ typedef struct Genesys_Command_Set
/*@} */
+ bool (*needs_home_before_init_regs_for_scan) (Genesys_Device* dev);
+
/** For ASIC initialization */
SANE_Status (*init) (Genesys_Device * dev);
SANE_Status (*init_regs_for_warmup) (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * regs,
int *channels, int *total_size);
- SANE_Status (*init_regs_for_coarse_calibration) (Genesys_Device * dev);
- SANE_Status (*init_regs_for_shading) (Genesys_Device * dev);
- SANE_Status (*init_regs_for_scan) (Genesys_Device * dev);
+ SANE_Status (*init_regs_for_coarse_calibration) (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs);
+ SANE_Status (*init_regs_for_shading) (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs);
+ SANE_Status (*init_regs_for_scan) (Genesys_Device * dev, const Genesys_Sensor& sensor);
SANE_Bool (*get_filter_bit) (Genesys_Register_Set * reg);
SANE_Bool (*get_lineart_bit) (Genesys_Register_Set * reg);
@@ -481,18 +1050,12 @@ typedef struct Genesys_Command_Set
SANE_Bool (*test_buffer_empty_bit) (SANE_Byte val);
SANE_Bool (*test_motor_flag_bit) (SANE_Byte val);
- int (*bulk_full_size) (void);
-
- SANE_Status (*set_fe) (Genesys_Device * dev, uint8_t set);
+ SANE_Status (*set_fe) (Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set);
SANE_Status (*set_powersaving) (Genesys_Device * dev, int delay);
SANE_Status (*save_power) (Genesys_Device * dev, SANE_Bool enable);
- void (*set_motor_power) (Genesys_Register_Set * regs, SANE_Bool set);
- void (*set_lamp_power) (Genesys_Device * dev,
- Genesys_Register_Set * regs,
- SANE_Bool set);
-
SANE_Status (*begin_scan) (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
Genesys_Register_Set * regs,
SANE_Bool start_motor);
SANE_Status (*end_scan) (Genesys_Device * dev,
@@ -502,32 +1065,31 @@ typedef struct Genesys_Command_Set
/**
* Send gamma tables to ASIC
*/
- SANE_Status (*send_gamma_table) (Genesys_Device * dev);
+ SANE_Status (*send_gamma_table) (Genesys_Device * dev, const Genesys_Sensor& sensor);
SANE_Status (*search_start_position) (Genesys_Device * dev);
- SANE_Status (*offset_calibration) (Genesys_Device * dev);
- SANE_Status (*coarse_gain_calibration) (Genesys_Device * dev, int dpi);
- SANE_Status (*led_calibration) (Genesys_Device * dev);
-
+ SANE_Status (*offset_calibration) (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs);
+ SANE_Status (*coarse_gain_calibration) (Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs, int dpi);
+ SANE_Status (*led_calibration) (Genesys_Device * dev, Genesys_Sensor& sensor,
+ Genesys_Register_Set& regs);
+
+ void (*wait_for_motor_stop) (Genesys_Device* dev);
SANE_Status (*slow_back_home) (Genesys_Device * dev, SANE_Bool wait_until_home);
SANE_Status (*rewind) (Genesys_Device * dev);
SANE_Status (*bulk_write_register) (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- size_t elems);
+ Genesys_Register_Set& regs);
+
SANE_Status (*bulk_write_data) (Genesys_Device * dev, uint8_t addr,
uint8_t * data, size_t len);
SANE_Status (*bulk_read_data) (Genesys_Device * dev, uint8_t addr,
uint8_t * data, size_t len);
- /* Updates hardware sensor information in Genesys_Scanner.val[].
- If possible, just get information for given option.
- The sensor state in Genesys_Scanner.val[] should be merged with the
- new sensor state, using the information that was last read by the frontend
- in Genesys_Scanner.last_val[], in such a way that a button up/down
- relative to Genesys_Scanner.last_val[] is not lost.
- */
+ // Updates hardware sensor information in Genesys_Scanner.val[].
SANE_Status (*update_hardware_sensors) (struct Genesys_Scanner * s);
/* functions for sheetfed scanners */
@@ -548,12 +1110,11 @@ typedef struct Genesys_Command_Set
/**
* search for an black or white area in forward or reverse
* direction */
- SANE_Status (*search_strip) (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black);
+ SANE_Status (*search_strip) (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ SANE_Bool forward, SANE_Bool black);
- SANE_Status (*is_compatible_calibration) (
- Genesys_Device * dev,
- Genesys_Calibration_Cache *cache,
- SANE_Bool for_overwrite);
+ bool (*is_compatible_calibration) (Genesys_Device* dev, const Genesys_Sensor& sensor,
+ Genesys_Calibration_Cache* cache, SANE_Bool for_overwrite);
/* functions for transparency adapter */
/**
@@ -564,36 +1125,17 @@ typedef struct Genesys_Command_Set
/**
* write shading data calibration to ASIC
*/
- SANE_Status (*send_shading_data) (Genesys_Device * dev, uint8_t * data, int size);
+ SANE_Status (*send_shading_data) (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ uint8_t * data, int size);
- /**
- * calculate current scan setup
- */
- SANE_Status (*calculate_current_setup) (Genesys_Device * dev);
+ // calculate current scan setup
+ void (*calculate_current_setup) (Genesys_Device * dev, const Genesys_Sensor& sensor);
/**
* cold boot init function
*/
SANE_Status (*asic_boot) (Genesys_Device * dev, SANE_Bool cold);
- /**
- * Scan register setting interface
- */
- SANE_Status (*init_scan_regs) (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- float xres,
- float yres,
- float startx,
- float starty,
- float pixels,
- float lines,
- unsigned int depth,
- unsigned int channels,
- int scan_method,
- int scan_mode,
- int color_filter,
- unsigned int flags);
-
} Genesys_Command_Set;
/** @brief structure to describe a scanner model
@@ -605,6 +1147,7 @@ typedef struct Genesys_Model
SANE_String_Const name;
SANE_String_Const vendor;
SANE_String_Const model;
+ SANE_Int model_id;
SANE_Int asic_type; /* ASIC type gl646 or gl841 */
Genesys_Command_Set *cmd_set; /* pointers to low level functions */
@@ -653,108 +1196,277 @@ typedef struct Genesys_Model
SANE_Word buttons; /* Button flags, described existing buttons for the model */
/*@} */
SANE_Int shading_lines; /* how many lines are used for shading calibration */
+ SANE_Int shading_ta_lines; // how many lines are used for shading calibration in TA mode
SANE_Int search_lines; /* how many lines are used to search start position */
} Genesys_Model;
-#define SCAN_METHOD_FLATBED 0 /**< normal scan method */
-#define SCAN_METHOD_TRANSPARENCY 2 /**< scan using transparency adaptor */
-#define SCAN_METHOD_NEGATIVE 0x88 /**< scan using negative adaptor */
+struct Genesys_Settings
+{
+ ScanMethod scan_method = ScanMethod::FLATBED;
+ ScanColorMode scan_mode = ScanColorMode::LINEART;
-#define SCAN_MODE_LINEART 0 /**< lineart scan mode */
-#define SCAN_MODE_HALFTONE 1 /**< halftone scan mode */
-#define SCAN_MODE_GRAY 2 /**< gray scan mode */
-#define SCAN_MODE_COLOR 4 /**< color scan mode */
+ // horizontal dpi
+ int xres = 0;
+ // vertical dpi
+ int yres = 0;
-typedef struct
-{
- int scan_method; /* todo: change >=2: Transparency, 0x88: negative film */
- int scan_mode; /* todo: change 0,1 = lineart, halftone; 2 = gray, 3 = 3pass color, 4=single pass color */
- int xres; /**< horizontal dpi */
- int yres; /**< vertical dpi */
+ //x start on scan table in mm
+ double tl_x = 0;
+ // y start on scan table in mm
+ double tl_y = 0;
- double tl_x; /* x start on scan table in mm */
- double tl_y; /* y start on scan table in mm */
+ // number of lines at scan resolution
+ unsigned int lines = 0;
+ // number of pixels at scan resolution
+ unsigned int pixels = 0;
- unsigned int lines; /**< number of lines at scan resolution */
- unsigned int pixels; /**< number of pixels at scan resolution */
+ // bit depth of the scan
+ unsigned int depth = 0;
- unsigned int depth;/* bit depth of the scan */
+ ColorFilter color_filter = ColorFilter::NONE;
- /* todo : remove these fields ? */
- int exposure_time;
+ // true if scan is true gray, false if monochrome scan
+ int true_gray = 0;
- unsigned int color_filter;
+ // lineart threshold
+ int threshold = 0;
- /**< true if scan is true gray, false if monochrome scan */
- int true_gray;
+ // lineart threshold curve for dynamic rasterization
+ int threshold_curve = 0;
- /**< lineart threshold */
- int threshold;
+ // Disable interpolation for xres<yres
+ int disable_interpolation = 0;
- /**< lineart threshold curve for dynamic rasterization */
- int threshold_curve;
+ // true is lineart is generated from gray data by the dynamic rasterization algoright
+ int dynamic_lineart = 0;
- /**< Disable interpolation for xres<yres*/
- int disable_interpolation;
+ // value for contrast enhancement in the [-100..100] range
+ int contrast = 0;
- /**< Use double x resolution internally to provide better
- * quality */
- int double_xres;
+ // value for brightness enhancement in the [-100..100] range
+ int brightness = 0;
- /**< true is lineart is generated from gray data by
- * the dynamic rasterization algo */
- int dynamic_lineart;
+ // cache entries expiration time
+ int expiration_time = 0;
+};
- /**< value for contrast enhancement in the [-100..100] range */
- int contrast;
+struct SetupParams {
+
+ static constexpr unsigned NOT_SET = std::numeric_limits<unsigned>::max();
+
+ // resolution in x direction
+ unsigned xres = NOT_SET;
+ // resolution in y direction
+ unsigned yres = NOT_SET;
+ // start pixel in X direction, from dummy_pixel + 1
+ float startx = -1;
+ // start pixel in Y direction, counted according to base_ydpi
+ float starty = -1;
+ // the number of pixels in X direction
+ unsigned pixels = NOT_SET;
+ // the number of pixels in Y direction
+ unsigned lines = NOT_SET;
+ // the depth of the scan in bits. Allowed are 1, 8, 16
+ unsigned depth = NOT_SET;
+ // the number of channels
+ unsigned channels = NOT_SET;
+
+ ScanMethod scan_method = static_cast<ScanMethod>(NOT_SET);
+
+ ScanColorMode scan_mode = static_cast<ScanColorMode>(NOT_SET);
+
+ ColorFilter color_filter = static_cast<ColorFilter>(NOT_SET);
+
+ unsigned flags = NOT_SET;
+
+ void assert_valid() const
+ {
+ if (xres == NOT_SET || yres == NOT_SET || startx < 0 || starty < 0 ||
+ pixels == NOT_SET || lines == NOT_SET ||depth == NOT_SET || channels == NOT_SET ||
+ scan_method == static_cast<ScanMethod>(NOT_SET) ||
+ scan_mode == static_cast<ScanColorMode>(NOT_SET) ||
+ color_filter == static_cast<ColorFilter>(NOT_SET) ||
+ flags == NOT_SET)
+ {
+ throw std::runtime_error("SetupParams are not valid");
+ }
+ }
+
+ bool operator==(const SetupParams& other) const
+ {
+ return xres == other.xres &&
+ yres == other.yres &&
+ startx == other.startx &&
+ starty == other.starty &&
+ pixels == other.pixels &&
+ lines == other.lines &&
+ depth == other.depth &&
+ channels == other.channels &&
+ scan_method == other.scan_method &&
+ scan_mode == other.scan_mode &&
+ color_filter == other.color_filter &&
+ flags == other.flags;
+ }
+};
- /**< value for brightness enhancement in the [-100..100] range */
- int brightness;
-
- /**< cahe entries expiration time */
- int expiration_time;
-} Genesys_Settings;
+template<class Stream>
+void serialize(Stream& str, SetupParams& x)
+{
+ serialize(str, x.xres);
+ serialize(str, x.yres);
+ serialize(str, x.startx);
+ serialize(str, x.starty);
+ serialize(str, x.pixels);
+ serialize(str, x.lines);
+ serialize(str, x.depth);
+ serialize(str, x.channels);
+ serialize(str, x.scan_method);
+ serialize(str, x.scan_mode);
+ serialize(str, x.color_filter);
+ serialize(str, x.flags);
+}
-typedef struct Genesys_Current_Setup
+struct Genesys_Current_Setup
{
- int pixels; /* pixel count expected from scanner */
- int lines; /* line count expected from scanner */
- int depth; /* depth expected from scanner */
- int channels; /* channel count expected from scanner */
- int scan_method; /* scanning method: flatbed or XPA */
- int exposure_time; /* used exposure time */
- float xres; /* used xres */
- float yres; /* used yres*/
- SANE_Bool half_ccd; /* half ccd mode */
- SANE_Int stagger;
- SANE_Int max_shift; /* max shift of any ccd component, including staggered pixels*/
-} Genesys_Current_Setup;
-
-typedef struct Genesys_Buffer
+ // params used for this setup
+ SetupParams params;
+
+ // pixel count expected from scanner
+ int pixels = 0;
+ // line count expected from scanner
+ int lines = 0;
+ // depth expected from scanner
+ int depth = 0;
+ // channel count expected from scanner
+ int channels = 0;
+
+ // used exposure time
+ int exposure_time = 0;
+ // used xres
+ float xres = 0;
+ // used yres
+ float yres = 0;
+ // half ccd mode
+ unsigned ccd_size_divisor = 1;
+ SANE_Int stagger = 0;
+ // max shift of any ccd component, including staggered pixels
+ SANE_Int max_shift = 0;
+
+ bool operator==(const Genesys_Current_Setup& other) const
+ {
+ return params == other.params &&
+ pixels == other.pixels &&
+ lines == other.lines &&
+ depth == other.depth &&
+ channels == other.channels &&
+ exposure_time == other.exposure_time &&
+ xres == other.xres &&
+ yres == other.yres &&
+ ccd_size_divisor == other.ccd_size_divisor &&
+ stagger == other.stagger &&
+ max_shift == other.max_shift;
+ }
+};
+
+template<class Stream>
+void serialize(Stream& str, Genesys_Current_Setup& x)
{
- SANE_Byte *buffer;
- size_t size;
- size_t pos; /* current position in read buffer */
- size_t avail; /* data bytes currently in buffer */
-} Genesys_Buffer;
+ serialize(str, x.params);
+ serialize_newline(str);
+ serialize(str, x.pixels);
+ serialize(str, x.lines);
+ serialize(str, x.depth);
+ serialize(str, x.channels);
+ serialize(str, x.exposure_time);
+ serialize(str, x.xres);
+ serialize(str, x.yres);
+ serialize(str, x.ccd_size_divisor);
+ serialize(str, x.stagger);
+ serialize(str, x.max_shift);
+}
-struct Genesys_Calibration_Cache
+struct Genesys_Buffer
{
- Genesys_Current_Setup used_setup;/* used to check if entry is compatible */
- time_t last_calibration;
+ Genesys_Buffer() = default;
- Genesys_Frontend frontend;
- Genesys_Sensor sensor;
+ size_t size() const { return buffer_.size(); }
+ size_t avail() const { return avail_; }
+ size_t pos() const { return pos_; }
- size_t calib_pixels;
- size_t calib_channels;
- size_t average_size;
- uint8_t *white_average_data;
- uint8_t *dark_average_data;
+ // TODO: refactor code that uses this function to no longer use it
+ void set_pos(size_t pos) { pos_ = pos; }
- struct Genesys_Calibration_Cache *next;
+ void alloc(size_t size);
+ void clear();
+
+ void reset();
+
+ uint8_t* get_write_pos(size_t size);
+ uint8_t* get_read_pos(); // TODO: mark as const
+
+ void produce(size_t size);
+ void consume(size_t size);
+
+private:
+ std::vector<uint8_t> buffer_;
+ // current position in read buffer
+ size_t pos_ = 0;
+ // data bytes currently in buffer
+ size_t avail_ = 0;
};
+struct Genesys_Calibration_Cache
+{
+ Genesys_Calibration_Cache() = default;
+ ~Genesys_Calibration_Cache() = default;
+
+ // used to check if entry is compatible
+ Genesys_Current_Setup used_setup;
+ time_t last_calibration = 0;
+
+ Genesys_Frontend frontend;
+ Genesys_Sensor sensor;
+
+ size_t calib_pixels = 0;
+ size_t calib_channels = 0;
+ size_t average_size = 0;
+ std::vector<uint8_t> white_average_data;
+ std::vector<uint8_t> dark_average_data;
+
+ bool operator==(const Genesys_Calibration_Cache& other) const
+ {
+ return used_setup == other.used_setup &&
+ last_calibration == other.last_calibration &&
+ frontend == other.frontend &&
+ sensor == other.sensor &&
+ calib_pixels == other.calib_pixels &&
+ calib_channels == other.calib_channels &&
+ average_size == other.average_size &&
+ white_average_data == other.white_average_data &&
+ dark_average_data == other.dark_average_data;
+ }
+};
+
+template<class Stream>
+void serialize(Stream& str, Genesys_Calibration_Cache& x)
+{
+ serialize(str, x.used_setup);
+ serialize_newline(str);
+ serialize(str, x.last_calibration);
+ serialize_newline(str);
+ serialize(str, x.frontend);
+ serialize_newline(str);
+ serialize(str, x.sensor);
+ serialize_newline(str);
+ serialize(str, x.calib_pixels);
+ serialize(str, x.calib_channels);
+ serialize(str, x.average_size);
+ serialize_newline(str);
+ serialize(str, x.white_average_data);
+ serialize_newline(str);
+ serialize(str, x.dark_average_data);
+}
+
/**
* Describes the current device status for the backend
* session. This should be more accurately called
@@ -762,86 +1474,140 @@ struct Genesys_Calibration_Cache
*/
struct Genesys_Device
{
- SANE_Int dn;
- SANE_Word vendorId; /**< USB vendor identifier */
- SANE_Word productId; /**< USB product identifier */
- SANE_Int usb_mode; /**< USB mode: 1 for USB 1.1, 2 for USB 2.0,
- 0 unset and -1 for fake USB device */
- SANE_String file_name;
- SANE_String calib_file;
- Genesys_Model *model;
-
- Genesys_Register_Set reg[256];
- Genesys_Register_Set calib_reg[256];
- Genesys_Settings settings;
- Genesys_Frontend frontend;
- Genesys_Sensor sensor;
- Genesys_Gpo gpo;
- Genesys_Motor motor;
- uint16_t slope_table0[256];
- uint16_t slope_table1[256];
- uint8_t control[6];
- time_t init_date;
-
- size_t average_size;
- size_t calib_pixels; /**< number of pixels used during shading calibration */
- size_t calib_lines; /**< number of lines used during shading calibration */
- size_t calib_channels;
- size_t calib_resolution;
- uint8_t *white_average_data;
- uint8_t *dark_average_data;
- uint16_t dark[3];
-
- SANE_Bool already_initialized;
- SANE_Int scanhead_position_in_steps;
- SANE_Int lamp_off_time;
-
- SANE_Bool read_active;
- SANE_Bool parking; /**< signal wether the park command has been issued */
- SANE_Bool document; /**< for sheetfed scanner's, is TRUE when there
- is a document in the scanner */
-
- Genesys_Buffer read_buffer;
- Genesys_Buffer lines_buffer;
- Genesys_Buffer shrink_buffer;
- Genesys_Buffer out_buffer;
- Genesys_Buffer binarize_buffer; /**< buffer for digital lineart from gray data */
- Genesys_Buffer local_buffer; /**< local buffer for gray data during dynamix lineart */
-
- size_t read_bytes_left; /**< bytes to read from scanner */
-
- size_t total_bytes_read; /**< total bytes read sent to frontend */
- size_t total_bytes_to_read; /**< total bytes read to be sent to frontend */
- size_t wpl; /**< asic's word per line */
-
- Genesys_Current_Setup current_setup; /* contains the real used values */
-
- /**< look up table used in dynamic rasterization */
- unsigned char lineart_lut[256];
-
- Genesys_Calibration_Cache *calibration_cache;
-
- struct Genesys_Device *next;
-
- SANE_Int ld_shift_r; /**< used red line-distance shift*/
- SANE_Int ld_shift_g; /**< used green line-distance shift*/
- SANE_Int ld_shift_b; /**< used blue line-distance shift*/
- int segnb; /**< number of segments composing the sensor */
- int line_interp; /**< number of lines used in line interpolation */
- int line_count; /**< number of scan lines used during scan */
- size_t bpl; /**< bytes per full scan widthline */
- size_t dist; /**< bytes distance between an odd and an even pixel */
- size_t len; /**< number of even pixels */
- size_t cur; /**< current pixel position within sub window */
- size_t skip; /**< number of bytes to skip at start of line */
- size_t *order; /**< array describing the order of the sub-segments of the sensor */
- Genesys_Buffer oe_buffer; /**< buffer to handle even/odd data */
-
- SANE_Bool buffer_image; /**< when true the scanned picture is first buffered
- * to allow software image enhancements */
- SANE_Byte *img_buffer; /**< image buffer where the scanned picture is stored */
-
- FILE *binary; /**< binary logger file */
+ Genesys_Device() = default;
+ ~Genesys_Device();
+
+ using Calibration = std::vector<Genesys_Calibration_Cache>;
+
+ // frees commonly used data
+ void clear();
+
+ UsbDevice usb_dev;
+ SANE_Word vendorId = 0; /**< USB vendor identifier */
+ SANE_Word productId = 0; /**< USB product identifier */
+
+ // USB mode:
+ // 0: not set
+ // 1: USB 1.1
+ // 2: USB 2.0
+ SANE_Int usb_mode = 0;
+
+ SANE_String file_name = nullptr;
+ std::string calib_file;
+
+ // if enabled, no calibration data will be loaded or saved to files
+ SANE_Int force_calibration = 0;
+ Genesys_Model *model = nullptr;
+
+ Genesys_Register_Set reg;
+ Genesys_Register_Set calib_reg;
+ Genesys_Settings settings;
+ Genesys_Frontend frontend, frontend_initial;
+ Genesys_Gpo gpo;
+ Genesys_Motor motor;
+ uint8_t control[6] = {};
+ time_t init_date = 0;
+
+ size_t average_size = 0;
+ // number of pixels used during shading calibration
+ size_t calib_pixels = 0;
+ // number of lines used during shading calibration
+ size_t calib_lines = 0;
+ size_t calib_channels = 0;
+ size_t calib_resolution = 0;
+ // bytes to read from USB when calibrating. If 0, this is not set
+ size_t calib_total_bytes_to_read = 0;
+ // certain scanners support much higher resolution when scanning transparency, but we can't
+ // read whole width of the scanner as a single line at that resolution. Thus for stuff like
+ // calibration we want to read only the possible calibration area.
+ size_t calib_pixels_offset = 0;
+
+ // gamma overrides. If a respective array is not empty then it means that the gamma for that
+ // color is overridden.
+ std::vector<uint16_t> gamma_override_tables[3];
+
+ std::vector<uint8_t> white_average_data;
+ std::vector<uint8_t> dark_average_data;
+ uint16_t dark[3] = {};
+
+ SANE_Bool already_initialized = 0;
+ SANE_Int scanhead_position_in_steps = 0;
+ SANE_Int lamp_off_time = 0;
+
+ SANE_Bool read_active = 0;
+ // signal wether the park command has been issued
+ SANE_Bool parking = 0;
+
+ // for sheetfed scanner's, is TRUE when there is a document in the scanner
+ SANE_Bool document = 0;
+
+ SANE_Bool needs_home_ta = 0;
+
+ Genesys_Buffer read_buffer;
+ Genesys_Buffer lines_buffer;
+ Genesys_Buffer shrink_buffer;
+ Genesys_Buffer out_buffer;
+
+ // buffer for digital lineart from gray data
+ Genesys_Buffer binarize_buffer = {};
+ // local buffer for gray data during dynamix lineart
+ Genesys_Buffer local_buffer = {};
+
+ // bytes to read from scanner
+ size_t read_bytes_left = 0;
+
+ // total bytes read sent to frontend
+ size_t total_bytes_read = 0;
+ // total bytes read to be sent to frontend
+ size_t total_bytes_to_read = 0;
+ // asic's word per line
+ size_t wpl = 0;
+
+ // contains the real used values
+ Genesys_Current_Setup current_setup;
+
+ // look up table used in dynamic rasterization
+ unsigned char lineart_lut[256] = {};
+
+ Calibration calibration_cache;
+
+ // used red line-distance shift
+ SANE_Int ld_shift_r = 0;
+ // used green line-distance shift
+ SANE_Int ld_shift_g = 0;
+ // used blue line-distance shift
+ SANE_Int ld_shift_b = 0;
+ // number of segments composing the sensor
+ int segnb = 0;
+ // number of lines used in line interpolation
+ int line_interp = 0;
+ // number of scan lines used during scan
+ int line_count = 0;
+ // bytes per full scan widthline
+ size_t bpl = 0;
+ // bytes distance between an odd and an even pixel
+ size_t dist = 0;
+ // number of even pixels
+ size_t len = 0;
+ // current pixel position within sub window
+ size_t cur = 0;
+ // number of bytes to skip at start of line
+ size_t skip = 0;
+
+ // array describing the order of the sub-segments of the sensor
+ size_t* order = nullptr;
+
+ // buffer to handle even/odd data
+ Genesys_Buffer oe_buffer = {};
+
+ // when true the scanned picture is first buffered to allow software image enhancements
+ SANE_Bool buffer_image = 0;
+
+ // image buffer where the scanned picture is stored
+ std::vector<uint8_t> img_buffer;
+
+ // binary logger file
+ FILE *binary = nullptr;
};
typedef struct Genesys_USB_Device_Entry
@@ -858,7 +1624,7 @@ typedef struct {
int motor_type; /**< motor id */
int exposure; /**< exposure for the slope table */
int step_type; /**< default step type for given exposure */
- uint32_t *table; /**< 0 terminated slope table at full step */
+ uint32_t *table; // 0-terminated slope table at full step (i.e. step_type == 0)
} Motor_Profile;
#define FULL_STEP 0
@@ -908,13 +1674,26 @@ typedef struct {
/* common functions needed by low level specific functions */
/*--------------------------------------------------------------------------*/
-extern Genesys_Register_Set *sanei_genesys_get_address (Genesys_Register_Set * regs, uint16_t addr);
+inline GenesysRegister* sanei_genesys_get_address(Genesys_Register_Set* regs, uint16_t addr)
+{
+ auto* ret = regs->find_reg_address(addr);
+ if (ret == nullptr) {
+ DBG(DBG_error, "%s: failed to find address for register 0x%02x, crash expected !\n",
+ __func__, addr);
+ }
+ return ret;
+}
-extern SANE_Byte
-sanei_genesys_read_reg_from_set (Genesys_Register_Set * regs, uint16_t address);
+inline uint8_t sanei_genesys_read_reg_from_set(Genesys_Register_Set* regs, uint16_t address)
+{
+ return regs->get8(address);
+}
-extern void
-sanei_genesys_set_reg_from_set (Genesys_Register_Set * regs, uint16_t address, SANE_Byte value);
+inline void sanei_genesys_set_reg_from_set(Genesys_Register_Set* regs, uint16_t address,
+ uint8_t value)
+{
+ regs->set8(address, value);
+}
extern SANE_Status sanei_genesys_init_cmd_set (Genesys_Device * dev);
@@ -931,25 +1710,38 @@ extern SANE_Status
sanei_genesys_write_hregister (Genesys_Device * dev, uint16_t reg, uint8_t val);
extern SANE_Status
-sanei_genesys_bulk_write_register (Genesys_Device * dev,
- Genesys_Register_Set * reg,
- size_t elems);
+sanei_genesys_bulk_write_register(Genesys_Device * dev,
+ Genesys_Register_Set& regs);
extern SANE_Status sanei_genesys_write_0x8c (Genesys_Device * dev, uint8_t index, uint8_t val);
+extern unsigned sanei_genesys_get_bulk_max_size(Genesys_Device * dev);
+
+extern SANE_Status sanei_genesys_bulk_read_data(Genesys_Device * dev, uint8_t addr, uint8_t* data,
+ size_t len);
+
+extern SANE_Status sanei_genesys_bulk_write_data(Genesys_Device * dev, uint8_t addr, uint8_t* data,
+ size_t len);
+
extern SANE_Status sanei_genesys_get_status (Genesys_Device * dev, uint8_t * status);
extern void sanei_genesys_print_status (uint8_t val);
extern SANE_Status
-sanei_genesys_write_ahb (SANE_Int dn, int usb_mode, uint32_t addr, uint32_t size, uint8_t * data);
-
-extern void sanei_genesys_init_fe (Genesys_Device * dev);
+sanei_genesys_write_ahb(Genesys_Device* dev, uint32_t addr, uint32_t size, uint8_t * data);
extern void sanei_genesys_init_structs (Genesys_Device * dev);
+const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev);
+Genesys_Sensor& sanei_genesys_find_sensor_any_for_write(Genesys_Device* dev);
+const Genesys_Sensor& sanei_genesys_find_sensor(Genesys_Device* dev, int dpi,
+ ScanMethod scan_method = ScanMethod::FLATBED);
+Genesys_Sensor& sanei_genesys_find_sensor_for_write(Genesys_Device* dev, int dpi,
+ ScanMethod scan_method = ScanMethod::FLATBED);
+
extern SANE_Status
-sanei_genesys_init_shading_data (Genesys_Device * dev, int pixels_per_line);
+sanei_genesys_init_shading_data (Genesys_Device * dev, const Genesys_Sensor& sensor,
+ int pixels_per_line);
extern SANE_Status sanei_genesys_read_valid_words (Genesys_Device * dev,
unsigned int *steps);
@@ -960,6 +1752,11 @@ extern SANE_Status sanei_genesys_read_scancnt (Genesys_Device * dev,
extern SANE_Status 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);
+
+void sanei_genesys_set_motor_power(Genesys_Register_Set& regs, bool set);
+
extern void
sanei_genesys_calculate_zmode2 (SANE_Bool two_table,
uint32_t exposure_time,
@@ -1026,24 +1823,28 @@ sanei_genesys_create_slope_table3 (Genesys_Device * dev,
unsigned int *final_exposure,
int power_mode);
-extern void
-sanei_genesys_create_gamma_table (uint16_t * gamma_table, int size,
- float maximum, float gamma_max,
- float gamma);
+void sanei_genesys_create_default_gamma_table(Genesys_Device* dev,
+ std::vector<uint16_t>& gamma_table, float gamma);
+
+std::vector<uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ int color);
-extern SANE_Status sanei_genesys_send_gamma_table (Genesys_Device * dev);
+SANE_Status sanei_genesys_send_gamma_table(Genesys_Device * dev, const Genesys_Sensor& sensor);
extern SANE_Status sanei_genesys_start_motor (Genesys_Device * dev);
extern SANE_Status sanei_genesys_stop_motor (Genesys_Device * dev);
extern SANE_Status
-sanei_genesys_search_reference_point (Genesys_Device * dev, uint8_t * data,
- int start_pixel, int dpi, int width,
- int height);
+sanei_genesys_search_reference_point(Genesys_Device * dev, Genesys_Sensor& sensor,
+ uint8_t * data,
+ int start_pixel, int dpi, int width,
+ int height);
+
+extern SANE_Status sanei_genesys_write_file(const char *filename, uint8_t* data, size_t length);
extern SANE_Status
-sanei_genesys_write_pnm_file (char *filename, uint8_t * data, int depth,
+sanei_genesys_write_pnm_file (const char *filename, uint8_t * data, int depth,
int channels, int pixels_per_line, int lines);
extern SANE_Status
@@ -1053,35 +1854,54 @@ extern SANE_Status
sanei_genesys_read_data_from_scanner (Genesys_Device * dev, uint8_t * data,
size_t size);
-extern SANE_Status
-sanei_genesys_buffer_alloc(Genesys_Buffer * buf, size_t size);
-
-extern SANE_Status
-sanei_genesys_buffer_free(Genesys_Buffer * buf);
-
-extern SANE_Byte *
-sanei_genesys_buffer_get_write_pos(Genesys_Buffer * buf, size_t size);
-
-extern SANE_Byte *
-sanei_genesys_buffer_get_read_pos(Genesys_Buffer * buf);
+inline void sanei_genesys_set_double(Genesys_Register_Set* regs, uint16_t addr, uint16_t value)
+{
+ regs->set16(addr, value);
+}
-extern SANE_Status
-sanei_genesys_buffer_produce(Genesys_Buffer * buf, size_t size);
+inline void sanei_genesys_set_triple(Genesys_Register_Set* regs, uint16_t addr, uint32_t value)
+{
+ regs->set24(addr, value);
+}
-extern SANE_Status
-sanei_genesys_buffer_consume(Genesys_Buffer * buf, size_t size);
+inline void sanei_genesys_get_double(Genesys_Register_Set* regs, uint16_t addr, uint16_t* value)
+{
+ *value = regs->get16(addr);
+}
-extern SANE_Status
-sanei_genesys_set_double(Genesys_Register_Set *regs, uint16_t addr, uint16_t value);
+inline void sanei_genesys_get_triple(Genesys_Register_Set* regs, uint16_t addr, uint32_t* value)
+{
+ *value = regs->get24(addr);
+}
-extern SANE_Status
-sanei_genesys_set_triple(Genesys_Register_Set *regs, uint16_t addr, uint32_t value);
+inline void sanei_genesys_set_exposure(Genesys_Register_Set& regs, const SensorExposure& exposure)
+{
+ regs.set8(0x10, (exposure.red >> 8) & 0xff);
+ regs.set8(0x11, exposure.red & 0xff);
+ regs.set8(0x12, (exposure.green >> 8) & 0xff);
+ regs.set8(0x13, exposure.green & 0xff);
+ regs.set8(0x14, (exposure.blue >> 8) & 0xff);
+ regs.set8(0x15, exposure.blue & 0xff);
+}
-extern SANE_Status
-sanei_genesys_get_double(Genesys_Register_Set *regs, uint16_t addr, uint16_t *value);
+inline uint16_t sanei_genesys_fixup_exposure_value(uint16_t value)
+{
+ if ((value & 0xff00) == 0) {
+ value |= 0x100;
+ }
+ if ((value & 0x00ff) == 0) {
+ value |= 0x1;
+ }
+ return value;
+}
-extern SANE_Status
-sanei_genesys_get_triple(Genesys_Register_Set *regs, uint16_t addr, uint32_t *value);
+inline SensorExposure sanei_genesys_fixup_exposure(SensorExposure exposure)
+{
+ exposure.red = sanei_genesys_fixup_exposure_value(exposure.red);
+ exposure.green = sanei_genesys_fixup_exposure_value(exposure.green);
+ exposure.blue = sanei_genesys_fixup_exposure_value(exposure.blue);
+ return exposure;
+}
extern SANE_Status
sanei_genesys_wait_for_home(Genesys_Device *dev);
@@ -1089,8 +1909,10 @@ sanei_genesys_wait_for_home(Genesys_Device *dev);
extern SANE_Status
sanei_genesys_asic_init(Genesys_Device *dev, SANE_Bool cold);
-extern
-int sanei_genesys_compute_dpihw(Genesys_Device *dev, int xres);
+int sanei_genesys_compute_dpihw(Genesys_Device *dev, const Genesys_Sensor& sensor, int xres);
+
+int sanei_genesys_compute_dpihw_calibration(Genesys_Device *dev, const Genesys_Sensor& sensor,
+ int xres);
extern
Motor_Profile *sanei_genesys_get_motor_profile(Motor_Profile *motors, int motor_type, int exposure);
@@ -1119,15 +1941,8 @@ int sanei_genesys_get_lowest_ydpi(Genesys_Device *dev);
extern
int sanei_genesys_get_lowest_dpi(Genesys_Device *dev);
-/**
- * reads previously cached calibration data
- * from file
- */
-extern SANE_Status
-sanei_genesys_read_calibration (Genesys_Device * dev);
-
-extern SANE_Status
-sanei_genesys_is_compatible_calibration (Genesys_Device * dev,
+extern bool
+sanei_genesys_is_compatible_calibration (Genesys_Device * dev, const Genesys_Sensor& sensor,
Genesys_Calibration_Cache * cache,
int for_overwrite);
@@ -1160,78 +1975,12 @@ sanei_genesys_load_lut (unsigned char * lut,
extern SANE_Status
sanei_genesys_generate_gamma_buffer(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
int bits,
int max,
int size,
uint8_t *gamma);
-#ifdef UNIT_TESTING
-SANE_Status
-genesys_send_offset_and_shading (Genesys_Device * dev,
- uint8_t * data,
- int size);
-
-void
-genesys_average_data (uint8_t * average_data,
- uint8_t * calibration_data,
- uint32_t lines,
- uint32_t pixel_components_per_line);
-
-void
-compute_averaged_planar (Genesys_Device * dev,
- uint8_t * shading_data,
- unsigned int pixels_per_line,
- unsigned int words_per_color,
- unsigned int channels,
- unsigned int o,
- unsigned int coeff,
- unsigned int target_bright,
- unsigned int target_dark);
-
-
-void
-compute_coefficients (Genesys_Device * dev,
- uint8_t * shading_data,
- unsigned int pixels_per_line,
- unsigned int channels,
- unsigned int cmat[3],
- int offset,
- unsigned int coeff,
- unsigned int target);
-
-void
-compute_planar_coefficients (Genesys_Device * dev,
- uint8_t * shading_data,
- unsigned int factor,
- unsigned int pixels_per_line,
- unsigned int words_per_color,
- unsigned int channels,
- unsigned int cmat[3],
- unsigned int offset,
- unsigned int coeff,
- unsigned int target);
-
-void
-compute_shifted_coefficients (Genesys_Device * dev,
- uint8_t * shading_data,
- unsigned int pixels_per_line,
- unsigned int channels,
- unsigned int cmat[3],
- int offset,
- unsigned int coeff,
- unsigned int target_dark,
- unsigned int target_bright,
- unsigned int patch_size); /* contigous extent */
-
-SANE_Status
-probe_genesys_devices (void);
-
-SANE_Status genesys_flatbed_calibration (Genesys_Device *dev);
-
-SANE_Status genesys_send_shading_coefficient (Genesys_Device *dev);
-#endif
-
-
/*---------------------------------------------------------------------------*/
/* ASIC specific functions declarations */
/*---------------------------------------------------------------------------*/
@@ -1242,4 +1991,52 @@ extern SANE_Status sanei_gl846_init_cmd_set (Genesys_Device * dev);
extern SANE_Status sanei_gl847_init_cmd_set (Genesys_Device * dev);
extern SANE_Status sanei_gl124_init_cmd_set (Genesys_Device * dev);
+// same as usleep, except that it does nothing if testing mode is enabled
+extern void sanei_genesys_usleep(unsigned int useconds);
+
+// same as sanei_genesys_usleep just that the duration is in milliseconds
+extern void sanei_genesys_sleep_ms(unsigned int milliseconds);
+
+void add_function_to_run_at_backend_exit(std::function<void()> function);
+
+// calls functions added via add_function_to_run_at_backend_exit() in reverse order of being
+// added.
+void run_functions_at_backend_exit();
+
+template<class T>
+class StaticInit {
+public:
+ StaticInit() = default;
+ StaticInit(const StaticInit&) = delete;
+ StaticInit& operator=(const StaticInit&) = delete;
+
+ template<class... Args>
+ void init(Args&& ... args)
+ {
+ ptr_ = std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+ add_function_to_run_at_backend_exit([this](){ deinit(); });
+ }
+
+ void deinit()
+ {
+ ptr_.release();
+ }
+
+ const T* operator->() const { return ptr_.get(); }
+ T* operator->() { return ptr_.get(); }
+ const T& operator*() const { return *ptr_.get(); }
+ T& operator*() { return *ptr_.get(); }
+
+private:
+ std::unique_ptr<T> ptr_;
+};
+
+extern StaticInit<std::vector<Genesys_Sensor>> s_sensors;
+void genesys_init_sensor_tables();
+void genesys_init_frontend_tables();
+
+void debug_dump(unsigned level, const Genesys_Settings& settings);
+void debug_dump(unsigned level, const SetupParams& params);
+void debug_dump(unsigned level, const Genesys_Current_Setup& setup);
+
#endif /* not GENESYS_LOW_H */
diff --git a/backend/genesys_sanei.cc b/backend/genesys_sanei.cc
new file mode 100644
index 0000000..5b5b40a
--- /dev/null
+++ b/backend/genesys_sanei.cc
@@ -0,0 +1,140 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#define DEBUG_DECLARE_ONLY
+
+#include "genesys_sanei.h"
+
+UsbDevice::~UsbDevice()
+{
+ if (is_open()) {
+ DBG(DBG_error, "UsbDevice not closed; closing automatically");
+ close();
+ }
+}
+
+void UsbDevice::open(const char* dev_name)
+{
+ DBG_HELPER(dbg);
+
+ if (is_open()) {
+ throw SaneException("device already open");
+ }
+ int device_num = 0;
+
+ dbg.status("open device");
+ TIE(sanei_usb_open(dev_name, &device_num));
+
+ name_ = dev_name;
+ device_num_ = device_num;
+ is_open_ = true;
+}
+
+void UsbDevice::clear_halt()
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_clear_halt(device_num_));
+}
+
+void UsbDevice::reset()
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_reset(device_num_));
+}
+
+void UsbDevice::close()
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+
+ // we can't do much if closing fails, so we close the device on our side regardless of the
+ // function succeeds
+ int device_num = device_num_;
+
+ set_not_open();
+ sanei_usb_close(device_num);
+}
+
+void UsbDevice::get_vendor_product(int& vendor, int& product)
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_get_vendor_product(device_num_, &vendor, &product));
+}
+
+void UsbDevice::control_msg(int rtype, int reg, int value, int index, int length, uint8_t* data)
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_control_msg(device_num_, rtype, reg, value, index, length, data));
+}
+
+void UsbDevice::bulk_read(uint8_t* buffer, size_t* size)
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_read_bulk(device_num_, buffer, size));
+}
+
+void UsbDevice::bulk_write(const uint8_t* buffer, size_t* size)
+{
+ DBG_HELPER(dbg);
+ assert_is_open();
+ TIE(sanei_usb_write_bulk(device_num_, buffer, size));
+}
+
+void UsbDevice::assert_is_open() const
+{
+ if (!is_open()) {
+ throw SaneException("device not open");
+ }
+}
+
+void UsbDevice::set_not_open()
+{
+ device_num_ = 0;
+ is_open_ = false;
+ name_ = "";
+}
diff --git a/backend/genesys_sanei.h b/backend/genesys_sanei.h
new file mode 100644
index 0000000..0e41600
--- /dev/null
+++ b/backend/genesys_sanei.h
@@ -0,0 +1,97 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#ifndef BACKEND_GENESYS_SANEI_H
+#define BACKEND_GENESYS_SANEI_H
+
+#include "genesys_error.h"
+#include "../include/sane/sanei_usb.h"
+
+#include <cstdint>
+#include <string>
+
+class UsbDevice {
+public:
+ UsbDevice() = default;
+ UsbDevice(const UsbDevice& other) = delete;
+ UsbDevice& operator=(const UsbDevice&) = delete;
+
+ UsbDevice(UsbDevice&& other) :
+ name_(other.name_),
+ is_open_(other.is_open_),
+ device_num_(other.device_num_)
+ {
+ other.set_not_open();
+ }
+
+ ~UsbDevice();
+
+ bool is_open() const { return is_open_; }
+
+ int device_number() const { return device_num_; }
+
+ const std::string& name() const { return name_; }
+
+ void open(const char* dev_name);
+
+ void clear_halt();
+ void reset();
+ void close();
+
+ void get_vendor_product(int& vendor, int& product);
+
+ void control_msg(int rtype, int reg, int value, int index, int length, uint8_t* data);
+ void bulk_read(uint8_t* buffer, size_t* size);
+ void bulk_write(const uint8_t* buffer, size_t* size);
+
+private:
+
+ void assert_is_open() const;
+ void set_not_open();
+
+ std::string name_;
+ bool is_open_ = false;
+ int device_num_ = 0;
+};
+
+#endif // BACKEND_GENESYS_SANEI_H
diff --git a/backend/genesys_serialize.cc b/backend/genesys_serialize.cc
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/backend/genesys_serialize.cc
diff --git a/backend/genesys_serialize.h b/backend/genesys_serialize.h
new file mode 100644
index 0000000..481e872
--- /dev/null
+++ b/backend/genesys_serialize.h
@@ -0,0 +1,144 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#ifndef BACKEND_GENESYS_SERIALIZE_H
+#define BACKEND_GENESYS_SERIALIZE_H
+
+#include "genesys_error.h"
+#include <array>
+#include <iostream>
+#include <limits>
+#include <string>
+#include <vector>
+
+// it would be best to use something like boost.serialization
+
+inline void serialize_newline(std::ostream& str) { str << '\n'; }
+inline void serialize_newline(std::istream& str) { (void) str; }
+
+inline void serialize(std::ostream& str, char x) { str << static_cast<int>(x) << " "; }
+inline void serialize(std::istream& str, char& x) { int v; str >> v; x = v; }
+inline void serialize(std::ostream& str, unsigned char x) { str << static_cast<unsigned>(x) << " "; }
+inline void serialize(std::istream& str, unsigned char& x) { unsigned v; str >> v; x = v; }
+inline void serialize(std::ostream& str, signed char x) { str << static_cast<int>(x) << " "; }
+inline void serialize(std::istream& str, signed char& x) { int v; str >> v; x = v; }
+inline void serialize(std::ostream& str, short x) { str << x << " "; }
+inline void serialize(std::istream& str, short& x) { str >> x; }
+inline void serialize(std::ostream& str, unsigned short x) { str << x << " "; }
+inline void serialize(std::istream& str, unsigned short& x) { str >> x; }
+inline void serialize(std::ostream& str, int x) { str << x << " "; }
+inline void serialize(std::istream& str, int& x) { str >> x; }
+inline void serialize(std::ostream& str, unsigned int x) { str << x << " "; }
+inline void serialize(std::istream& str, unsigned int& x) { str >> x; }
+inline void serialize(std::ostream& str, long x) { str << x << " "; }
+inline void serialize(std::istream& str, long& x) { str >> x; }
+inline void serialize(std::ostream& str, unsigned long x) { str << x << " "; }
+inline void serialize(std::istream& str, unsigned long& x) { str >> x; }
+inline void serialize(std::ostream& str, long long x) { str << x << " "; }
+inline void serialize(std::istream& str, long long& x) { str >> x; }
+inline void serialize(std::ostream& str, unsigned long long x) { str << x << " "; }
+inline void serialize(std::istream& str, unsigned long long& x) { str >> x; }
+inline void serialize(std::ostream& str, float x) { str << x << " "; }
+inline void serialize(std::istream& str, float& x) { str >> x; }
+inline void serialize(std::ostream& str, double x) { str << x << " "; }
+inline void serialize(std::istream& str, double& x) { str >> x; }
+inline void serialize(std::ostream& str, const std::string& x) { str << x << " "; }
+inline void serialize(std::istream& str, std::string& x) { str >> x; }
+
+template<class T>
+void serialize(std::ostream& str, std::vector<T>& x)
+{
+ serialize(str, x.size());
+ serialize_newline(str);
+
+ for (auto& item : x) {
+ serialize(str, item);
+ serialize_newline(str);
+ }
+}
+
+template<class T>
+void serialize(std::istream& str, std::vector<T>& x,
+ size_t max_size = std::numeric_limits<size_t>::max())
+{
+ size_t new_size;
+ serialize(str, new_size);
+
+ if (new_size > max_size) {
+ throw SaneException("Too large std::vector to deserialize");
+ }
+ x.reserve(new_size);
+ for (size_t i = 0; i < new_size; ++i) {
+ T item;
+ serialize(str, item);
+ x.push_back(item);
+ }
+}
+
+template<class T, size_t Size>
+void serialize(std::ostream& str, std::array<T, Size>& x)
+{
+ serialize(str, x.size());
+ serialize_newline(str);
+
+ for (auto& item : x) {
+ serialize(str, item);
+ serialize_newline(str);
+ }
+}
+
+template<class T, size_t Size>
+void serialize(std::istream& str, std::array<T, Size>& x)
+{
+ size_t new_size;
+ serialize(str, new_size);
+
+ if (new_size > Size) {
+ throw SaneException("Incorrect std::array size to deserialize");
+ }
+ for (auto& item : x) {
+ serialize(str, item);
+ }
+}
+
+#endif
diff --git a/backend/gphoto2.c b/backend/gphoto2.c
index c8af306..973257c 100644
--- a/backend/gphoto2.c
+++ b/backend/gphoto2.c
@@ -1,28 +1,28 @@
/* Please note! Although intended to support multiple camera types
* it's been tested with only cameras I have access to: the Kodak DC240
- * and the Directory Browse "camera." I'm very interested
- * in learning what it would take to support more cameras. In
+ * and the Directory Browse "camera." I'm very interested
+ * in learning what it would take to support more cameras. In
* particular, the current incarnation will only support cameras
* that directly generate jpeg files.
- *
+ *
* Please report sucesses or failures using this backend!
- *
+ *
* However, having said that, I've already found it to be quite useful
* even in its current form - one reason is that gphoto2 provides access
- * to the camera via USB which is not supported by the regular DC240
+ * to the camera via USB which is not supported by the regular DC240
* backend and is dramatically faster than the serial port.
*/
/***************************************************************************
* _S_A_N_E - Scanner Access Now Easy.
- gphoto2.c
+ gphoto2.c
03/12/01 - Peter Fales
Based on the dc210 driver, (C) 1998 Brian J. Murrell (which is
based on dc25 driver (C) 1998 by Peter Fales)
-
+
This file (C) 2001 by Peter Fales
This file is part of the SANE package.
@@ -61,14 +61,14 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
- This file implements a SANE backend for digital cameras
+ This file implements a SANE backend for digital cameras
supported by the gphoto2 libraries.
-
- THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+
+ THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: gphoto2-devel@fales-lorenz.net)
@@ -96,7 +96,7 @@
#include "../include/sane/sanei_backend.h"
/* PSF 1/12/02 - gphoto2.h does a #include of config.h. We don't have
- * config.h by that name (we call it sane/config.h), so the #undef of
+ * config.h by that name (we call it sane/config.h), so the #undef of
* HAVE_CONFIG_H will cause it to skip that.
*/
#undef HAVE_CONFIG_H
@@ -349,7 +349,7 @@ static const SANE_Device *devlist[] = {
dev + 0, 0
};
-/*
+/*
* debug_func - called for gphoto2 debugging output (if enabled)
*/
static void
@@ -397,9 +397,9 @@ init_gphoto2 (void)
{
/*
* We get here if re-initializing the camera: either because
- * the user clicked the "re-establish" button, or we need to
- * recalculate the number of photos after taking a picture.
- * We must release the old camera before starting over.
+ * the user clicked the "re-establish" button, or we need to
+ * recalculate the number of photos after taking a picture.
+ * We must release the old camera before starting over.
*/
CHECK_RET (gp_camera_unref (camera));
}
@@ -455,14 +455,14 @@ init_gphoto2 (void)
* knows that and will complain if we try to set the speed for
* ports other than serial ones. Because we are paranoid here and
* check every single error message returned by gphoto2, we need
- * to make sure that we have a serial port.
+ * to make sure that we have a serial port.
*/
if (Cam_data.speed && !strncmp (Cam_data.port, "serial:", 7))
{
- /*
+ /*
* Not sure why we need this hack. The API keeps opening/closing
* the port, and that seems to confuse the camera. Holding
- * the port open seems to fix it.
+ * the port open seems to fix it.
*/
if ((hack_fd = open (Cam_data.port + 7, O_RDONLY)) < 0)
{
@@ -514,7 +514,7 @@ init_gphoto2 (void)
}
/*
- * close_gphoto2() - Shutdown camera interface
+ * close_gphoto2() - Shutdown camera interface
*/
static void
close_gphoto2 (void)
@@ -565,7 +565,7 @@ get_info (void)
}
/* If we've already got a folder_list, free it up before starting
- * the new one
+ * the new one
*/
if (folder_list != NULL)
{
@@ -613,8 +613,8 @@ get_info (void)
}
-/*
- * erase() - erase file from camera corresponding to
+/*
+ * erase() - erase file from camera corresponding to
* current picture number. Does not update any of the other
* backend data structures.
*/
@@ -689,7 +689,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback __sane_unused__ authorize
/* Earlier versions why would try to keep going with compiled in
* defaults if the config file is missing. But, now we have so
* options and combinations of options, that success without a config
- * file is unlikely. So, give and return failure
+ * file is unlikely. So, give and return failure
*/
DBG (0, "warning: %s: missing config file '%s'\n"
"If you aren't using gphoto2, you should disable it in dll.conf.\n"
@@ -794,7 +794,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback __sane_unused__ authorize
/* Special case: Force port to special value for the
* "Directory Browse" camera - overriding anything in
* the config file - or more likely when not specified
- * in the config file.
+ * in the config file.
*/
if (strcmp (Cam_data.camera_name, "Directory Browse") == 0)
@@ -1086,14 +1086,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
else
Cam_data.current_picture_number = Cam_data.pic_taken;
- /*
+ /*
* Setting a new image number could change image size (if
* we supported that - which we hope to do someday!
*/
myinfo |= SANE_INFO_RELOAD_PARAMS;
- /* get the image's resolution, unless the camera has no
- * pictures yet
+ /* get the image's resolution, unless the camera has no
+ * pictures yet
*/
if (Cam_data.pic_taken != 0)
{
@@ -1141,7 +1141,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (gphoto2_opt_snap)
{
/* activate the resolution setting */
-/* Until we figure out how to do this
+/* Until we figure out how to do this
sod[GPHOTO2_OPT_LOWRES].cap &= ~SANE_CAP_INACTIVE;
*/
/* and de-activate the image number selector */
@@ -1151,7 +1151,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{
/* deactivate the resolution setting */
sod[GPHOTO2_OPT_LOWRES].cap |= SANE_CAP_INACTIVE;
- /* and activate the image number selector, if there are
+ /* and activate the image number selector, if there are
* pictures available */
if (Cam_data.current_picture_number)
{
@@ -1405,7 +1405,7 @@ sane_start (SANE_Handle handle)
if (gphoto2_opt_snap)
{
/*
- * Don't allow picture unless there is room in the
+ * Don't allow picture unless there is room in the
* camera.
*/
if (Cam_data.pic_left == 0)
@@ -1458,7 +1458,7 @@ sane_start (SANE_Handle handle)
if ( converter_init (handle) != SANE_STATUS_GOOD )
return SANE_STATUS_INVAL;
- /* Check if a linebuffer has been allocated. If we had one
+ /* Check if a linebuffer has been allocated. If we had one
* previously, free it up and allocate one for (possibly) new
* size. parms.bytes_per_line is set by converter_init()
*/
@@ -1588,7 +1588,7 @@ sane_get_select_fd (SANE_Handle __sane_unused__ handle, SANE_Int __sane_unused__
* get_pictures_info - load information about all pictures currently in
* camera: Mainly the mapping of picture number
* to picture name. We'ld like to get other
- * information such as image size, but the API
+ * information such as image size, but the API
* doesn't provide any support for that.
*/
static PictureInfo *
@@ -1684,7 +1684,7 @@ snap_pic (void)
return SANE_STATUS_INVAL;
}
- /*
+ /*
* This is needed when the camera has no files and the first picture
* is taken. I guess it's because a folder needs to be created and
* the filesystem doesn't know about it.
@@ -1699,9 +1699,9 @@ snap_pic (void)
/* Can't just increment picture count, because if the camera has
* zero pictures we may not know the folder name. Start over
* with get_info and get_pictures_info. (We didn't have the call
- * to init_gphoto2() here before, but that was causing us to not
+ * to init_gphoto2() here before, but that was causing us to not
* see the new image - need to use a biggger hammer to get it to
- * re-read the camera directory
+ * re-read the camera directory
*/
if (init_gphoto2 () != SANE_STATUS_GOOD)
@@ -1772,7 +1772,7 @@ read_dir (SANE_String dir, SANE_Bool read_files)
/*
* read_info - read the info block from camera for the specified file
- * NOT YET SUPPORTED - If it were we could use it to do things
+ * NOT YET SUPPORTED - If it were we could use it to do things
* like update the image size parameters displayed by the GUI
*/
static SANE_Int
@@ -1789,7 +1789,7 @@ read_info (SANE_String_Const fname)
}
/*
- * set_res - set picture size depending on resolution settings
+ * set_res - set picture size depending on resolution settings
*/
static void
set_res (SANE_Int __sane_unused__ lowres)
@@ -1809,8 +1809,8 @@ set_res (SANE_Int __sane_unused__ lowres)
}
/*
- * converter_do_scan_complete_cleanup - do everything that needs to be
- * once a "scan" has been completed: Unref the file, Erase the image,
+ * converter_do_scan_complete_cleanup - do everything that needs to be
+ * once a "scan" has been completed: Unref the file, Erase the image,
* and increment image number to point to next picture.
*/
static SANE_Status
@@ -1902,17 +1902,17 @@ converter_do_scan_complete_cleanup (void)
}
/*
- * converter_fill_buffer - Fill line buffer with next input line from image.
- * Currently assumes jpeg, but this is where we would put the switch
+ * converter_fill_buffer - Fill line buffer with next input line from image.
+ * Currently assumes jpeg, but this is where we would put the switch
* to handle other image types.
*/
static SANE_Int
converter_fill_buffer (void)
{
-/*
+/*
* FIXME: Current implementation reads one scan line at a time. Part
- * of the reason for this is in the original code is to give the frontend
+ * of the reason for this is in the original code is to give the frontend
* a chance to update * the progress marker periodically. Since the gphoto2
* driver sucks in the whole image before decoding it, perhaps we could
* come up with a simpler implementation.
@@ -1927,8 +1927,8 @@ converter_fill_buffer (void)
}
/*
- * converter_scan_complete - Check if all the data for the image has been read.
- * Currently assumes jpeg, but this is where we would put the
+ * converter_scan_complete - Check if all the data for the image has been read.
+ * Currently assumes jpeg, but this is where we would put the
* switch to handle other image types.
*/
static SANE_Bool
@@ -1946,7 +1946,7 @@ converter_scan_complete (void)
/*
* converter_init - Initialize image conversion data.
- * Currently assumes jpeg, but this is where we would put the
+ * Currently assumes jpeg, but this is where we would put the
* switch to handle other image types.
*/
static SANE_Status
diff --git a/backend/gphoto2.conf.in b/backend/gphoto2.conf.in
index f5a660a..646fa76 100644
--- a/backend/gphoto2.conf.in
+++ b/backend/gphoto2.conf.in
@@ -1,23 +1,23 @@
# Interface port where the camera is connected
-# This should be one of the values returned by "gphoto2 --list-ports",
+# This should be one of the values returned by "gphoto2 --list-ports",
# such # as serial:/dev/ttyS6 or usb:
port=serial:/dev/ttyd1
-# Port speed. This should be one of the values returned by
+# Port speed. This should be one of the values returned by
# "gphoto2 --abilities"
speed=115200
-# Name of camera. This should be one of the values returned by
+# Name of camera. This should be one of the values returned by
# "gphoto2 --list-cameras"
camera=Kodak DC240
-# Prints some extra information during the init phase.
+# Prints some extra information during the init phase.
dumpinquiry
-# The resolution should be the maximum resolution supported by the
+# The resolution should be the maximum resolution supported by the
# camera. It's not really used for much, since the actual size will be
# reported by the camera when the download starts. But it may be useful
-# for the frontend to have a clue prior to the download. (e.g. it
+# for the frontend to have a clue prior to the download. (e.g. it
# may want to create an image window, or report the maximum file size.
# Width x Height.
resolution=1280x960
@@ -27,6 +27,6 @@ thumb_resolution=160x120
# top-level (fixed) folder directory in camera. Backend assumes
# that there is one variable directory under this (e.g. 100DC240)
-# which will be read from the camera, and all the images in the
-# camera are under that.
+# which will be read from the camera, and all the images in the
+# camera are under that.
topfolder=/DCIM
diff --git a/backend/gphoto2.h b/backend/gphoto2.h
index 60591cf..b792875 100644
--- a/backend/gphoto2.h
+++ b/backend/gphoto2.h
@@ -47,12 +47,12 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
***************************************************************************
This file implements a SANE backend for the Kodak DC-240
- digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
+ digital camera. THIS IS EXTREMELY ALPHA CODE! USE AT YOUR OWN RISK!!
(feedback to: gphoto2-devel@fales-lorenz.net)
diff --git a/backend/gt68xx.c b/backend/gt68xx.c
index 13efe91..fb3bfb4 100644
--- a/backend/gt68xx.c
+++ b/backend/gt68xx.c
@@ -2,46 +2,46 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002 - 2007 Henning Geinitz <sane@geinitz.org>
- Copyright (C) 2009 Stphane Voltz <stef.dev@free.fr> for sheetfed
+ Copyright (C) 2009 Stéphane Voltz <stef.dev@free.fr> for sheetfed
calibration code.
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
@@ -162,13 +162,6 @@ static SANE_Range y_range = {
SANE_FIX (0.0) /* quantization */
};
-
-static const SANE_Range offset_range = {
- -63, /* minimum */
- 63, /* maximum */
- 1 /* quantization */
-};
-
static SANE_Range gamma_range = {
SANE_FIX (0.01), /* minimum */
SANE_FIX (5.0), /* maximum */
@@ -756,7 +749,7 @@ init_options (GT68xx_Scanner * s)
s->opt[OPT_SENSOR_GROUP].desc = SANE_DESC_SENSORS;
s->opt[OPT_SENSOR_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_SENSOR_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
/* calibration needed */
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
s->opt[OPT_NEED_CALIBRATION_SW].title = SANE_I18N ("Need calibration");
@@ -1487,7 +1480,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
DBG (0, "WARNING: Your scanner is not fully supported or at least \n");
DBG (0, " had only limited testing. Please be careful and \n");
DBG (0, " report any failure/success to \n");
- DBG (0, " sane-devel@lists.alioth.debian.org. Please provide as many\n");
+ DBG (0, " sane-devel@alioth-lists.debian.net. Please provide as many\n");
DBG (0, " details as possible, e.g. the exact name of your\n");
DBG (0, " scanner and what does (not) work.\n");
}
@@ -1502,7 +1495,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
DBG (0,
" the scanner immediately if you hear unusual noise. \n");
DBG (0, " Please report any success to \n");
- DBG (0, " sane-devel@lists.alioth.debian.org. Please provide as many\n");
+ DBG (0, " sane-devel@alioth-lists.debian.net. Please provide as many\n");
DBG (0, " details as possible, e.g. the exact name of your\n");
DBG (0, " scanner, ids, settings etc.\n");
@@ -1616,7 +1609,7 @@ sane_close (SANE_Handle handle)
gt68xx_device_lamp_control (s->dev, SANE_FALSE, SANE_FALSE);
dev = s->dev;
-
+
free (s->val[OPT_MODE].s);
free (s->val[OPT_GRAY_MODE_COLOR].s);
free (s->val[OPT_SOURCE].s);
@@ -1624,7 +1617,7 @@ sane_close (SANE_Handle handle)
free ((void *)(size_t)s->opt[OPT_RESOLUTION].constraint.word_list);
gt68xx_scanner_free (s);
-
+
gt68xx_device_fix_descriptor (dev);
gt68xx_device_deactivate (dev);
@@ -1859,7 +1852,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
status = gt68xx_sheetfed_scanner_calibrate (s);
myinfo |= SANE_INFO_RELOAD_OPTIONS;
break;
-
+
case OPT_CLEAR_CALIBRATION:
gt68xx_clear_calibration (s);
myinfo |= SANE_INFO_RELOAD_OPTIONS;
@@ -2045,14 +2038,14 @@ sane_start (SANE_Handle handle)
{
/* compute scan parameters */
scan_request.calculate = SANE_TRUE;
- gt68xx_device_setup_scan (s->dev, &scan_request, SA_SCAN, &scan_params);
+ gt68xx_device_setup_scan (s->dev, &scan_request, SA_SCAN, &scan_params);
/* restore settings from calibration stored */
memcpy(s->dev->afe,&(s->afe_params), sizeof(GT68xx_AFE_Parameters));
RIE (gt68xx_assign_calibration (s, scan_params));
scan_request.calculate = SANE_FALSE;
}
-
+
/* send scan request to the scanner */
RIE (gt68xx_scanner_start_scan (s, &scan_request, &scan_params));
@@ -2331,7 +2324,7 @@ sane_cancel (SANE_Handle handle)
if (s->dev->model->flags & GT68XX_FLAG_SHEET_FED)
{
gt68xx_device_paperfeed (s->dev);
- }
+ }
else
{
sanei_usb_set_timeout (SHORT_TIMEOUT);
diff --git a/backend/gt68xx.conf.in b/backend/gt68xx.conf.in
index 4affdcc..e9a9706 100644
--- a/backend/gt68xx.conf.in
+++ b/backend/gt68xx.conf.in
@@ -6,8 +6,8 @@
# Manual configuration is necessary for some scanners. Please uncomment the
# override line and optinally the vendor and product lines that apply to your
-# scanner. For some scanners it's also necessary to change the name of the
-# firmware file.
+# scanner. For some scanners it's also necessary to change the name of the
+# firmware file.
#############################################################################
# For testing scanners that are not yet supported by this backend add the
@@ -43,32 +43,32 @@ usb 0x05d8 0x4002
#override "mustek-scanexpress-2400-usb"
# Artec Ultima 2000:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#firmware "ePlus2k.usb"
# Artec Ultima 2000e+:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#firmware "ePlus2k.usb"
#vendor "Artec"
#model "Ultima 2000e+"
# Boeder SmartScan Slim Edition:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#vendor "Boeder"
#model "SmartScan Slim Edition"
# Medion/Lifetec/Tevion/Cytron MD/LT 9385:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#vendor "Medion"
#model "MD/LT 9385"
# Medion/Lifetec/Tevion/Cytron MD 9458:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#vendor "Medion"
#model "MD 9458"
# Trust Flat Scan USB 19200:
-#override "artec-ultima-2000"
+#override "artec-ultima-2000"
#vendor "Trust"
#model "Flat Scan USB 19200"
@@ -197,6 +197,11 @@ usb 0x07b3 0x045f
usb 0x07b3 0x0462
##############################################################################
+# Autodetect Plustek OpticSlim 500 Plus
+usb 0x07b3 0x046e
+override "plustek-opticslim-500plus"
+
+##############################################################################
# Autodetect Plustek OpticSlim 1200
usb 0x07b3 0x0413
diff --git a/backend/gt68xx.h b/backend/gt68xx.h
index 20f8c6c..96ad418 100644
--- a/backend/gt68xx.h
+++ b/backend/gt68xx.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_H
diff --git a/backend/gt68xx_devices.c b/backend/gt68xx_devices.c
index 1239190..2df24f6 100644
--- a/backend/gt68xx_devices.c
+++ b/backend/gt68xx_devices.c
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002 - 2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/* Scanner-specific data */
@@ -406,7 +406,7 @@ static GT68xx_Model mustek_2448taplus_model = {
SANE_FALSE, /* Is this a CIS scanner? */
GT68XX_FLAG_NO_STOP /* Which flags are needed for this scanner? */
- /* Based on data from Jakub Dvo?k <xdvorak@chello.cz>. */
+ /* Based on data from Jakub Dvořák <xdvorak@chello.cz>. */
};
static GT68xx_Model mustek_1200ta_model = {
@@ -805,6 +805,54 @@ static GT68xx_Model artec_ultima2000_model = {
/* Setup for Cytron TCM MD 9385 */
};
+static GT68xx_Model plustek_opticslim500plus_model = {
+ "plustek-opticslim-500plus", /* Name */
+ "Plustek", /* Device vendor string */
+ "OpticSlim 500 Plus", /* Device model name */
+ "cis3R5B1.fw", /* Name of the firmware file */
+ SANE_FALSE, /* Dynamic allocation flag */
+
+ &mustek_gt6816_command_set, /* Command set used by this scanner */
+
+ 600, /* maximum optical sensor resolution */
+ 1200, /* maximum motor resolution */
+ 600, /* base x-res used to calculate geometry */
+ 600, /* base y-res used to calculate geometry */
+ 1200, /* if ydpi is equal or higher, disable backtracking */
+ SANE_FALSE, /* Use base_ydpi for all resolutions */
+
+ {600, 300, 150, 75, 50, 0}, /* possible x-resolutions */
+ {1200, 600, 300, 150, 75, 50, 0},/* possible y-resolutions */
+ {16, 8, 0}, /* possible depths in gray mode */
+ {16, 8, 0}, /* possible depths in color mode */
+
+ SANE_FIX (1.0), /* Start of scan area in mm (x) */
+ SANE_FIX (9.5), /* Start of scan area in mm (y) */
+ SANE_FIX (218.0), /* Size of scan area in mm (x) */
+ SANE_FIX (142.0), /* Size of scan area in mm (y) */
+
+ SANE_FIX (0.0), /* Start of white strip in mm (y) */
+ SANE_FIX (0.0), /* Start of black mark in mm (x) */
+
+ SANE_FIX (0.0), /* Start of scan area in TA mode in mm (x) */
+ SANE_FIX (0.0), /* Start of scan area in TA mode in mm (y) */
+ SANE_FIX (100.0), /* Size of scan area in TA mode in mm (x) */
+ SANE_FIX (100.0), /* Size of scan area in TA mode in mm (y) */
+
+ SANE_FIX (0.0), /* Start of white strip in TA mode in mm (y) */
+
+ 0, 0, 0, /* RGB CCD Line-distance correction in pixel */
+ 0, /* CCD distcance for CCD with 6 lines) */
+
+ COLOR_ORDER_RGB, /* Order of the CCD/CIS colors */
+ {0x32, 0x02, 0x26, 0x07, 0x26, 0x09}, /* Default offset/gain */
+ {0x127, 0x127, 0x127}, /* Default exposure parameters */
+ SANE_FIX (1.5), /* Default gamma value */
+
+ SANE_TRUE, /* Is this a CIS scanner? */
+ GT68XX_FLAG_NO_CALIBRATE /* Which flags are needed for this scanner? */
+};
+
static GT68xx_Model mustek_2400cu_model = {
"mustek-bearpaw-2400-cu", /* Name */
"Mustek", /* Device vendor string */
@@ -1930,6 +1978,7 @@ static GT68xx_USB_Device_Entry gt68xx_usb_device_list[] = {
{0x07b3, 0x040b, &plustek_ops12_model},
{0x07b3, 0x040e, &plustek_ops24_model},
{0x07b3, 0x0412, &plustek_opticslim_m12_model},
+ {0x07b3, 0x046e, &plustek_opticslim500plus_model},
{0x07b3, 0x0413, &plustek_opticslim1200_model},
{0x07b3, 0x0422, &plustek_opticslim2400_model},
{0x07b3, 0x045f, &iriscan_express_2_model},
diff --git a/backend/gt68xx_generic.c b/backend/gt68xx_generic.c
index f5e5bb6..9fd8006 100644
--- a/backend/gt68xx_generic.c
+++ b/backend/gt68xx_generic.c
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2005-2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file
@@ -112,7 +112,7 @@ gt68xx_generic_fix_gain (SANE_Int gain)
gain += 12;
else if (gain > 51)
gain = 63;
-
+
return gain;
}
@@ -330,7 +330,7 @@ gt68xx_generic_setup_scan (GT68xx_Device * dev,
request->mbs = SANE_TRUE;
}
}
-
+
}
else
{
@@ -571,7 +571,7 @@ gt68xx_generic_setup_scan (GT68xx_Device * dev,
motor_mode_2 = (request->lamp ? 0 : 1) << 0;
motor_mode_2 |= (line_mode ? 0 : 1) << 2;
- if ((action != SA_SCAN)
+ if ((action != SA_SCAN)
&& (strcmp (dev->model->command_set->name, "mustek-gt6816") == 0))
motor_mode_2 |= 1 << 3;
@@ -657,11 +657,11 @@ gt68xx_generic_move_paper (GT68xx_Device * dev,
if (ydpi > model->base_ydpi)
ydpi = base_ydpi;
-
+
pixel_y0 =
SANE_UNFIX ((request->y0 + model->y_offset)) * ydpi / MM_PER_INCH + 0.5;
abs_y0 = pixel_y0 * base_ydpi / ydpi;
-
+
DBG (6, "gt68xx_generic_move_paper: base_ydpi=%d\n", base_ydpi);
DBG (6, "gt68xx_generic_move_paper: ydpi=%d\n", ydpi);
DBG (6, "gt68xx_generic_move_paper: abs_y0=%d\n", abs_y0);
diff --git a/backend/gt68xx_generic.h b/backend/gt68xx_generic.h
index 01ecff9..2008974 100644
--- a/backend/gt68xx_generic.h
+++ b/backend/gt68xx_generic.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_GENERIC_H
diff --git a/backend/gt68xx_gt6801.c b/backend/gt68xx_gt6801.c
index d61729c..c0a6288 100644
--- a/backend/gt68xx_gt6801.c
+++ b/backend/gt68xx_gt6801.c
@@ -3,44 +3,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
GT6801 support by Andreas Nowack <nowack.andreas@gmx.de>
Copyright (C) 2002-2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file
@@ -143,7 +143,7 @@ gt6801_download_firmware (GT68xx_Device * dev,
* For GT6816 this was:
* if (memcmp (block, check_buf, block_size) != 0) ...
* Apparently the GT6801 does something different...
- *
+ *
* hmg: For my BP 1200 CU the result is 00 09 so maybe only the 0 is
* relevant?
*/
diff --git a/backend/gt68xx_gt6801.h b/backend/gt68xx_gt6801.h
index 750ce39..d6d1ceb 100644
--- a/backend/gt68xx_gt6801.h
+++ b/backend/gt68xx_gt6801.h
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
GT6801 support by Andreas Nowack <nowack.andreas@gmx.de>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_GT6801_H
diff --git a/backend/gt68xx_gt6816.c b/backend/gt68xx_gt6816.c
index 045194a..a7880bd 100644
--- a/backend/gt68xx_gt6816.c
+++ b/backend/gt68xx_gt6816.c
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002-2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file
diff --git a/backend/gt68xx_gt6816.h b/backend/gt68xx_gt6816.h
index 7b72071..f941811 100644
--- a/backend/gt68xx_gt6816.h
+++ b/backend/gt68xx_gt6816.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_GT6816_H
diff --git a/backend/gt68xx_high.c b/backend/gt68xx_high.c
index 25885b0..782b4f3 100644
--- a/backend/gt68xx_high.c
+++ b/backend/gt68xx_high.c
@@ -3,46 +3,46 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
AFE offset/gain setting by David Stevenson <david.stevenson@zoom.co.uk>
Copyright (C) 2002 - 2007 Henning Geinitz <sane@geinitz.org>
- Copyright (C) 2009 Stphane Voltz <stef.dev@free.fr> for sheetfed
+ Copyright (C) 2009 Stéphane Voltz <stef.dev@free.fr> for sheetfed
calibration code.
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#include "gt68xx_high.h"
@@ -560,7 +560,7 @@ gt68xx_scanner_start_scan_extended (GT68xx_Scanner * scanner,
return status;
}
- if (scanner->dev->model->is_cis
+ if (scanner->dev->model->is_cis
&& !((scanner->dev->model->flags & GT68XX_FLAG_SHEET_FED) && scanner->calibrated == SANE_FALSE))
{
status =
@@ -1016,7 +1016,7 @@ struct GT68xx_Afe_Values
/** Calculate average black and maximum white
*
* This function is used for CCD scanners. The black mark to the left ist used
- * for the calculation of average black. The remaining calibration strip
+ * for the calculation of average black. The remaining calibration strip
* is used for searching the segment whose white average is the highest.
*
* @param values AFE values
@@ -1189,7 +1189,7 @@ finish:
/* Wait for lamp to give stable brightness */
static SANE_Status
-gt68xx_wait_lamp_stable (GT68xx_Scanner * scanner,
+gt68xx_wait_lamp_stable (GT68xx_Scanner * scanner,
GT68xx_Scan_Parameters * params,
GT68xx_Scan_Request *request,
unsigned int *buffer_pointers[3],
@@ -1848,6 +1848,11 @@ gt68xx_afe_cis_auto (GT68xx_Scanner * scanner)
DBG (5, "gt68xx_afe_cis_auto: start\n");
+ if (scanner->dev->model->flags & GT68XX_FLAG_NO_CALIBRATE)
+ {
+ return SANE_STATUS_GOOD;
+ }
+
memset (&old_afe, 255, sizeof (old_afe));
/* Start with the preset exposure settings */
@@ -2006,7 +2011,7 @@ gt68xx_calibrator_create_copy (GT68xx_Calibrator ** calibrator,
return status;
}
-
+
static SANE_Status
gt68xx_sheetfed_move_to_scan_area (GT68xx_Scanner * scanner,
GT68xx_Scan_Request * request)
@@ -2032,8 +2037,8 @@ gt68xx_sheetfed_move_to_scan_area (GT68xx_Scanner * scanner,
* target (which may be a blank page). It first move to a white area then
* does afe and exposure calibration. Then it scans white lines to get data
* for shading correction.
- * @param scanner structure describing the frontend session and the device
- * @return SANE_STATUS_GOOD is everything goes right, SANE_STATUS_INVAL
+ * @param scanner structure describing the frontend session and the device
+ * @return SANE_STATUS_GOOD is everything goes right, SANE_STATUS_INVAL
* otherwise.
*/
static SANE_Status
@@ -2349,10 +2354,10 @@ gt68xx_sheetfed_scanner_calibrate (GT68xx_Scanner * scanner)
/** @brief assign calibration for scan
* This function creates the calibrators and set up afe for the requested
- * scan. It uses calibration data that has been created by
+ * scan. It uses calibration data that has been created by
* gt68xx_sheetfed_scanner_calibrate.
- * @param scanner structure describing the frontend session and the device
- * @return SANE_STATUS_GOOD is everything goes right, SANE_STATUS_INVAL
+ * @param scanner structure describing the frontend session and the device
+ * @return SANE_STATUS_GOOD is everything goes right, SANE_STATUS_INVAL
* otherwise.
*/
static SANE_Status
diff --git a/backend/gt68xx_high.h b/backend/gt68xx_high.h
index d830e96..da4ab6a 100644
--- a/backend/gt68xx_high.h
+++ b/backend/gt68xx_high.h
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002-2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_HIGH_H
@@ -77,11 +77,11 @@ struct GT68xx_Calibrator
/** Calibration data for a given resolution
*/
struct GT68xx_Calibration
-{
+{
SANE_Int dpi; /**< optical horizontal dpi used to
build the calibration data */
SANE_Int pixel_x0; /**< x start position used at calibration time */
-
+
GT68xx_Calibrator *gray; /**< Calibrator for grayscale data */
GT68xx_Calibrator *red; /**< Calibrator for the red channel */
GT68xx_Calibrator *green; /**< Calibrator for the green channel */
diff --git a/backend/gt68xx_low.c b/backend/gt68xx_low.c
index 6060c45..3ea4590 100644
--- a/backend/gt68xx_low.c
+++ b/backend/gt68xx_low.c
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002 - 2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file
@@ -1023,7 +1023,7 @@ gt68xx_device_get_id (GT68xx_Device * dev)
return SANE_STATUS_UNSUPPORTED;
}
-static void
+static void
gt68xx_device_fix_descriptor (GT68xx_Device * dev)
{
SANE_Byte data[8];
diff --git a/backend/gt68xx_low.h b/backend/gt68xx_low.h
index 0743230..89bd365 100644
--- a/backend/gt68xx_low.h
+++ b/backend/gt68xx_low.h
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002 - 2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_LOW_H
@@ -112,6 +112,9 @@
#define GT68XX_FLAG_SHEET_FED (1 << 12) /* we have a sheet fed scanner */
#define GT68XX_FLAG_HAS_CALIBRATE (1 << 13) /* for sheet fed scanners that be calibrated with
an calibration sheet */
+#define GT68XX_FLAG_NO_CALIBRATE (1 << 14) /* don't calibrate, because calibration is broken */
+
+
/* Forward typedefs */
typedef struct GT68xx_USB_Device_Entry GT68xx_USB_Device_Entry;
@@ -162,7 +165,7 @@ struct GT68xx_USB_Device_Entry
/** List of all supported devices.
*
- * This is an array of GT68xx_USB_Device_Entry structures which describe
+ * This is an array of GT68xx_USB_Device_Entry structures which describe
* USB devices supported by this backend. The array is terminated by an
* entry with model = NULL.
*
@@ -319,7 +322,7 @@ struct GT68xx_Command_Set
SANE_Status (*lamp_control) (GT68xx_Device * dev, SANE_Bool fb_lamp,
SANE_Bool ta_lamp);
- /** Check whether the scanner carriage is still moving.
+ /** Check whether the scanner carriage is still moving.
*
* @param dev Device object.
* @param moving Returned state of the scanner:
@@ -400,7 +403,7 @@ struct GT68xx_Command_Set
/** Detect if a document is inserted in the feeder
*
* @param dev Device object.
- * @param present
+ * @param present
*/
SANE_Status (*document_present) (GT68xx_Device * dev,
SANE_Bool *present);
@@ -564,7 +567,7 @@ struct GT68xx_Scan_Request
*
* These parameters describe a low-level scan request; many such requests are
* executed during calibration, and they need to have parameters separate from
- * the main request (GT68xx_Scan_Request).
+ * the main request (GT68xx_Scan_Request).
*/
struct GT68xx_Scan_Parameters
{
@@ -883,7 +886,7 @@ static SANE_Status
gt68xx_device_lamp_control (GT68xx_Device * dev, SANE_Bool fb_lamp,
SANE_Bool ta_lamp);
-/** Check whether the scanner carriage is still moving.
+/** Check whether the scanner carriage is still moving.
*
* @param dev Device object.
* @param moving Returned state of the scanner:
@@ -1067,7 +1070,7 @@ static SANE_Status gt68xx_device_read_finish (GT68xx_Device * dev);
*
* @param res Result packet from the last command
* @param command Command
- *
+ *
* @return
* - #SANE_STATUS_GOOD - success.
* - #SANE_STATUS_IO_ERROR - the command wasn't successful
@@ -1076,7 +1079,7 @@ static SANE_Status
gt68xx_device_check_result (GT68xx_Packet res, SANE_Byte command);
-static SANE_Status
+static SANE_Status
gt68xx_device_get_id (GT68xx_Device * dev);
/** Read the device descriptor of the scanner.
@@ -1088,7 +1091,7 @@ gt68xx_device_get_id (GT68xx_Device * dev);
*
* @param dev device
*/
-static void
+static void
gt68xx_device_fix_descriptor (GT68xx_Device * dev);
#endif /* not GT68XX_LOW_H */
diff --git a/backend/gt68xx_mid.c b/backend/gt68xx_mid.c
index 1301139..0d5cbe4 100644
--- a/backend/gt68xx_mid.c
+++ b/backend/gt68xx_mid.c
@@ -2,44 +2,44 @@
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
Copyright (C) 2002-2007 Henning Geinitz <sane@geinitz.org>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#include "gt68xx_mid.h"
diff --git a/backend/gt68xx_mid.h b/backend/gt68xx_mid.h
index 4ba6c4c..2bbaac2 100644
--- a/backend/gt68xx_mid.h
+++ b/backend/gt68xx_mid.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_MID_H
diff --git a/backend/gt68xx_shm_channel.c b/backend/gt68xx_shm_channel.c
index bca7425..496a959 100644
--- a/backend/gt68xx_shm_channel.c
+++ b/backend/gt68xx_shm_channel.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file
diff --git a/backend/gt68xx_shm_channel.h b/backend/gt68xx_shm_channel.h
index c6cfdff..54b5eca 100644
--- a/backend/gt68xx_shm_channel.h
+++ b/backend/gt68xx_shm_channel.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Sergey Vlasov <vsu@altlinux.ru>
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef GT68XX_SHM_CHANNEL_H
diff --git a/backend/hp-device.c b/backend/hp-device.c
index 6a50f84..30e7a79 100644
--- a/backend/hp-device.c
+++ b/backend/hp-device.c
@@ -471,4 +471,3 @@ sanei_hp_device_sanedevice (HpDevice this)
{
return &this->sanedev;
}
-
diff --git a/backend/hp-handle.c b/backend/hp-handle.c
index ec8adbc..63e9fcb 100644
--- a/backend/hp-handle.c
+++ b/backend/hp-handle.c
@@ -227,16 +227,9 @@ hp_handle_stopScan (HpHandle this)
{
int info;
DBG(3, "hp_handle_stopScan: killing child (%ld)\n", (long) this->reader_pid);
- if (this->child_forked)
- {
- kill(this->reader_pid, SIGTERM);
- waitpid(this->reader_pid, &info, 0);
- }
- else
- {
- sanei_thread_kill (this->reader_pid);
- sanei_thread_waitpid(this->reader_pid, &info);
- }
+ sanei_thread_kill (this->reader_pid);
+ sanei_thread_waitpid(this->reader_pid, &info);
+
DBG(1, "hp_handle_stopScan: child %s = %d\n",
WIFEXITED(info) ? "exited, status" : "signalled, signal",
WIFEXITED(info) ? WEXITSTATUS(info) : WTERMSIG(info));
@@ -746,10 +739,7 @@ sanei_hp_handle_cancel (HpHandle this)
{
DBG(3,"sanei_hp_handle_cancel: send SIGTERM to child (%ld)\n",
(long) this->reader_pid);
- if (this->child_forked)
- kill(this->reader_pid, SIGTERM);
- else
- sanei_thread_kill(this->reader_pid);
+ sanei_thread_kill(this->reader_pid);
}
}
diff --git a/backend/hp-option.c b/backend/hp-option.c
index ba799b7..f4d23f8 100644
--- a/backend/hp-option.c
+++ b/backend/hp-option.c
@@ -851,16 +851,19 @@ _probe_resolution (_HpOption this, HpScsi scsi, HpOptSet __sane_unused__ optset,
if ( (sanei_hp_device_probe (&compat, scsi) == SANE_STATUS_GOOD)
&& (compat & HP_COMPAT_PS) )
- {int val, mi, ma;
+ {
+ int val, mi, ma;
- if ( (sanei_hp_scl_inquire(scsi, SCL_MEDIA, &val, &mi, &ma)
+ if ( (sanei_hp_scl_inquire(scsi, SCL_MEDIA, &val, &mi, &ma)
== SANE_STATUS_GOOD)
- && ((val == HP_MEDIA_SLIDE) || (val == HP_MEDIA_NEGATIVE)) )
- quant = 300;
- minval = (minval+quant-1)/quant;
- minval *= quant;
- maxval = (maxval+quant-1)/quant;
- maxval *= quant;
+ && ((val == HP_MEDIA_SLIDE) || (val == HP_MEDIA_NEGATIVE)) )
+ {
+ quant = 300;
+ minval = (minval+quant-1)/quant;
+ minval *= quant;
+ maxval = (maxval+quant-1)/quant;
+ maxval *= quant;
+ }
}
DBG(5, "_probe_resolution: set range %d..%d, quant=%d\n",minval,maxval,quant);
@@ -2431,7 +2434,7 @@ _program_scan_type (HpOption this, HpScsi scsi, HpOptSet optset, HpData data)
sanei_hp_scl_set(scsi, SCL_TONE_MAP, -1); /* Select tone map */
}
}
-
+
return SANE_STATUS_GOOD;
}
diff --git a/backend/hp-scl.c b/backend/hp-scl.c
index f1813c7..a7376e6 100644
--- a/backend/hp-scl.c
+++ b/backend/hp-scl.c
@@ -553,7 +553,7 @@ hp_scsi_close (HpScsi this, int completely)
DBG(3, "scsi_close: not closing. Keep open\n");
return;
}
-
+
}
assert(this->fd >= 0);
diff --git a/backend/hp.README b/backend/hp.README
index 756ddca..0727221 100644
--- a/backend/hp.README
+++ b/backend/hp.README
@@ -51,7 +51,7 @@ to xhp just to get a better acceptance.
Test support of commands to be independant from inquired
model number.
-
+
Wed Mar 28 10:00:00 UT+1 1998
Bring it on its way to the SANE-project. Geoffrey accepted to add
diff --git a/backend/hp.c b/backend/hp.c
index f00b82d..f6a3637 100644
--- a/backend/hp.c
+++ b/backend/hp.c
@@ -73,7 +73,7 @@ static char *hp_backend_revision = "$Revision$";
Revision 1.17 2003/10/06 19:54:07 kig-guest
Bug #300248: correct "Negatives" to "Negative" in option description
-
+
V 1.04, 24-Jul-2003, PK (peter@kirchgessner.net)
- Add internationalization
diff --git a/backend/hp3500.c b/backend/hp3500.c
index 26fe071..fc2c6b5 100644
--- a/backend/hp3500.c
+++ b/backend/hp3500.c
@@ -253,7 +253,7 @@ static const SANE_Device **devlist = 0;
/**
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -287,7 +287,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/**
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -300,7 +300,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -452,7 +452,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -463,7 +463,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -751,7 +751,7 @@ sane_start (SANE_Handle handle)
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -788,12 +788,12 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
/**
* Called by SANE to read data.
- *
+ *
* In this implementation, sane_read does nothing much besides reading
* data from a pipe and handing it back. On the other end of the pipe
* there's the reader process which gets data from the scanner and
* stuffs it into the pipe.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -801,7 +801,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -846,26 +846,26 @@ sane_read (SANE_Handle handle, SANE_Byte * buf,
/**
- * Cancels a scan.
+ * Cancels a scan.
*
* It has been said on the mailing list that sane_cancel is a bit of a
* misnomer because it is routinely called to signal the end of a
* batch - quoting David Mosberger-Tang:
- *
+ *
* > In other words, the idea is to have sane_start() be called, and
* > collect as many images as the frontend wants (which could in turn
* > consist of multiple frames each as indicated by frame-type) and
- * > when the frontend is done, it should call sane_cancel().
+ * > when the frontend is done, it should call sane_cancel().
* > Sometimes it's better to think of sane_cancel() as "sane_stop()"
* > but that name would have had some misleading connotations as
* > well, that's why we stuck with "cancel".
- *
+ *
* The current consensus regarding duplex and ADF scans seems to be
* the following call sequence: sane_start; sane_read (repeat until
* EOF); sane_start; sane_read... and then call sane_cancel if the
* batch is at an end. I.e. do not call sane_cancel during the run but
* as soon as you get a SANE_STATUS_NO_DOCS.
- *
+ *
* From the SANE spec:
* This function is used to immediately or as quickly as possible
* cancel the currently pending operation of the device represented by
@@ -892,7 +892,7 @@ sane_cancel (SANE_Handle h)
/**
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -910,7 +910,7 @@ sane_close (SANE_Handle handle)
/**
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -1134,7 +1134,7 @@ do_cancel (struct hp3500_data *scanner)
sanei_thread_waitpid (scanner->reader_pid, &exit_status);
}
- scanner->reader_pid = -1;
+ sanei_thread_invalidate (scanner->reader_pid);
}
if (scanner->pipe_r >= 0)
{
@@ -1149,7 +1149,7 @@ calculateDerivedValues (struct hp3500_data *scanner)
DBG (12, "calculateDerivedValues\n");
- /* Convert the SANE_FIXED values for the scan area into 1/1200 inch
+ /* Convert the SANE_FIXED values for the scan area into 1/1200 inch
* scanner units */
scanner->fullres_pixels.left =
@@ -3139,7 +3139,7 @@ rts8801_fullscan (unsigned x,
tg_setting = resparms[rmres].tg;
rt_set_ccd_shift_clock_multiplier (regs, tg_info[tg_setting].tg_cph0p);
rt_set_ccd_clock_reset_interval (regs, tg_info[tg_setting].tg_crsp);
- rt_set_ccd_clamp_clock_multiplier (regs, tg_info[tg_setting].tg_cclpp);
+ rt_set_ccd_clamp_clock_multiplier (regs, tg_info[tg_setting].tg_cclpp);
rt_set_one_register (0xc6, 0);
rt_set_one_register (0xc6, 0);
@@ -3386,7 +3386,7 @@ rts8801_scan (unsigned x,
iCalibY = (resolution == 25) ? 1 : 2;
iCalibTarget = 550;
-
+
rt_turn_off_lamp();
for (i = 0; i < 6; ++i)
@@ -3394,7 +3394,7 @@ rts8801_scan (unsigned x,
aiBestOffset[i] = 0xbf;
aiPassed[i] = 0;
}
-
+
do
{
DBG (30, "Initial calibration pass commences\n");
@@ -3405,7 +3405,7 @@ rts8801_scan (unsigned x,
calib_info[i * 3] = aiBestOffset[i];
calib_info[i * 3 + 1] = aiBestOffset[i + 3];
}
-
+
cd.buffer = calibbuf;
cd.space = sizeof (calibbuf);
DBG (30, "Commencing scan for initial calibration pass\n");
@@ -3453,7 +3453,7 @@ rts8801_scan (unsigned x,
calib_info[i * 3 + 2] = 1;
aiPassed[i] = 0;
}
-
+
do
{
struct dcalibdata dcdt;
@@ -3782,12 +3782,14 @@ writefunc (struct hp3500_write_info *winfo, int bytes, char *data)
return write (winfo->scanner->pipe_w, data, bytes) == bytes;
}
+#ifdef _POSIX_SOURCE
static void
sigtermHandler (int signal)
{
signal = signal; /* get rid of compiler warning */
cancelled_scan = 1;
}
+#endif
static int
reader_process (void *pv)
diff --git a/backend/hp3900.conf.in b/backend/hp3900.conf.in
index 2de0001..0b0262b 100644
--- a/backend/hp3900.conf.in
+++ b/backend/hp3900.conf.in
@@ -28,4 +28,3 @@ usb 0x06dc 0x0020
# BenQ 5550
usb 0x04a5 0x2211
-
diff --git a/backend/hp3900_config.c b/backend/hp3900_config.c
index 3c0ed77..830243b 100644
--- a/backend/hp3900_config.c
+++ b/backend/hp3900_config.c
@@ -243,7 +243,7 @@ enum fcsec6
CALIBOFFSET2ON,
OFFSETTUNESTEP2, OFFSETBOUNDARYRATIO2, OFFSETAVGRATIO2,
-
+
OFFSETEVEN2R, OFFSETEVEN2G, OFFSETEVEN2B,
OFFSETODD2R, OFFSETODD2G, OFFSETODD2B,
@@ -5622,7 +5622,7 @@ static int fitcalibrate_get(int section, int option, int defvalue)
case SCANINFO:
rst = fc_scaninfo_get(option, defvalue); break;
}
-
+
return rst;
}
diff --git a/backend/hp3900_debug.c b/backend/hp3900_debug.c
index eb7d45c..b8cd8f1 100644
--- a/backend/hp3900_debug.c
+++ b/backend/hp3900_debug.c
@@ -764,7 +764,7 @@ dbg_buffer (SANE_Int level, char *title, SANE_Byte * buffer, SANE_Int size,
bzero (&text, sizeof (text));
}
data = _B0 (buffer[cont]);
- text[col] = (data > 31) ? data : '';
+ text[col] = (data > 31) ? data : '·';
snprintf (sdata, 80, "%02x ", data);
sline = strcat (sline, sdata);
col++;
diff --git a/backend/hp3900_rts8822.c b/backend/hp3900_rts8822.c
index 9c8deaa..bbd1e38 100644
--- a/backend/hp3900_rts8822.c
+++ b/backend/hp3900_rts8822.c
@@ -1774,7 +1774,7 @@ SetScanParams (struct st_device *dev, SANE_Byte * Regs,
8)) ? hwdcfg->compression : FALSE;
if ((arrangeline2 == FIX_BY_HARD) || (mycolormode == CM_LINEART))
- arrangeline2 = mycolormode; /*? */
+ arrangeline2 = mycolormode; /*¿? */
else if ((mycolormode == CM_GRAY) && (hwdcfg->highresolution == FALSE))
arrangeline2 = 0;
@@ -2372,7 +2372,7 @@ IsScannerLinked (struct st_device *dev)
lamp = FLB_LAMP;
- /* Comprobar si es la primera conexin con el escaner */
+ /* Comprobar si es la primera conexión con el escaner */
if (Read_Word (dev->usb_handle, 0xe829, &var2) == OK)
{
SANE_Int firstconnection;
@@ -2385,7 +2385,7 @@ IsScannerLinked (struct st_device *dev)
if (firstconnection == TRUE)
{
- /* primera conexin */
+ /* primera conexión */
SANE_Byte flb_lamp, tma_lamp;
flb_lamp = 0;
@@ -7049,7 +7049,7 @@ Triplet_Colour_LRes (SANE_Int Width, SANE_Byte * Buffer,
*/
/* Esta funcion une los tres canales de color en un triplete
- Inicialmente cada color est separado en 3 buffers apuntados
+ Inicialmente cada color está separado en 3 buffers apuntados
por pChannel1 ,2 y 3
*/
SANE_Int Value;
@@ -7591,11 +7591,11 @@ Read_Block (struct st_device *dev, SANE_Int buffer_size, SANE_Byte * buffer,
/*
scan2:
04F0155C 01 08 00 02 03 00 58 02 ..X
-04F01564 58 02 58 02 C5 00 00 00 XX...
-04F0156C B4 07 00 00 8B 01 00 00 ....
-04F01574 10 06 00 00 EC 13 00 00 ....
-04F0157C B2 07 00 00 B4 07 00 00 ....
-04F01584 CF 08 00 00 ..
+04F01564 58 02 58 02 C5 00 00 00 XXÅ...
+04F0156C B4 07 00 00 8B 01 00 00 ´..‹..
+04F01574 10 06 00 00 EC 13 00 00 ..ì..
+04F0157C B2 07 00 00 B4 07 00 00 ²..´..
+04F01584 CF 08 00 00 Ï..
arrangeline2 = 1
*/
@@ -8329,7 +8329,7 @@ if (Calib_test(dev, Regs, &myCalib, &scancfg) == OK )
}
else
{
- /*5e7c *//* entra aqu */
+ /*5e7c *//* entra aquí */
if ((scancfg.resolution_y / 10) > scancfg.coord.top)
runb1 = 0;
}
@@ -9209,7 +9209,7 @@ RTS_Setup (struct st_device *dev, SANE_Byte * Regs,
if (scancfg->colormode == CM_LINEART)
data_bitset (&Regs[0x60b], 0x0c, 0);
- /* disable gamma correction ? */
+ /* disable gamma correction ¿? */
data_bitset (&Regs[0x1d0], 0x40, 0);
}
@@ -13902,7 +13902,7 @@ Constrains_Check (struct st_device *dev, SANE_Int Resolution,
SANE_Int scantype, struct st_coords *mycoords)
{
/*
- Constrains:
+ Constrains:
100 dpi 850 x 1170 | 164 x 327
300 dpi 2550 x 3510
600 dpi 5100 x 7020
diff --git a/backend/hp4200.c b/backend/hp4200.c
index 589157d..d4d4f64 100644
--- a/backend/hp4200.c
+++ b/backend/hp4200.c
@@ -5,24 +5,24 @@
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* Developers:
- Adrian Perez Jorge (APJ) -
+ Adrian Perez Jorge (APJ) -
Creator of the original HP4200C backend code.
adrianpj@easynews.com
-
- Andrew John Lewis (AJL) -
+
+ Andrew John Lewis (AJL) -
lewi0235@tc.umn.edu
Arnar Mar Hrafnkelsson (AMH) -
@@ -43,7 +43,7 @@ TODO:
image size and the scanner-to-host bandwidth.
- improve image quality.
- fix problem concerning mangled images
-
+
*/
#define BUILD 2
@@ -1498,7 +1498,7 @@ do_fine_calibration (HP4200_Scanner * s, struct coarse_t *coarse)
int i;
for (i = 0; i < 12; i++)
{
- memset (registro[i], 0, 5460 * 3);
+ memset (registro[i], 0, 5460 * 3 * sizeof(registro[0]));
}
}
@@ -1884,7 +1884,7 @@ prepare_for_a_scan (HP4200_Scanner * s)
calculated horizontal dpi code */
hdpi_div = hdpi_mapping[hdpi_code];
- /* image_width is set to the correct number of pixels by calling
+ /* image_width is set to the correct number of pixels by calling
fxn. This might be the reason we can't do high res full width
scans though...not sure. */
/*s->user_parms.image_width /= 4; */
diff --git a/backend/hp4200.h b/backend/hp4200.h
index 13c0d7f..1547847 100644
--- a/backend/hp4200.h
+++ b/backend/hp4200.h
@@ -5,15 +5,15 @@
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef _HP4200_H
diff --git a/backend/hp5400.c b/backend/hp5400.c
index cfa2dc9..58d01f8 100644
--- a/backend/hp5400.c
+++ b/backend/hp5400.c
@@ -4,21 +4,21 @@
This file was initially copied from the hp3300 testools and adjusted to
suit. Original copyright notice follows:
-
+
Copyright (C) 2001 Bertrik Sikken (bertrik@zonnet.nl)
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -81,5 +81,3 @@
#include "hp5400_internal.c"
#include "hp5400_sane.c"
#include "hp5400_sanei.c"
-
-
diff --git a/backend/hp5400_debug.c b/backend/hp5400_debug.c
index 0460e8b..ad2e4fb 100644
--- a/backend/hp5400_debug.c
+++ b/backend/hp5400_debug.c
@@ -69,5 +69,3 @@ void hp5400_dbg_start() {
#include "../include/sane/sanei_debug.h"
#endif
-
-
diff --git a/backend/hp5400_internal.c b/backend/hp5400_internal.c
index 65a434f..34bf55d 100644
--- a/backend/hp5400_internal.c
+++ b/backend/hp5400_internal.c
@@ -212,10 +212,10 @@ SetCalibration (int iHandle, int numPixels, unsigned int *low_vals[3],
{
char cmd[8];
/* unsigned char cmd[8]; */ /* should fix the compilation warning
- but I don't have a scanner right now
+ but I don't have a scanner right now
to check that the fix does not break
calibration */
-
+
int i, j, k;
struct CalPixel
{
@@ -413,7 +413,7 @@ CircBufferGetLine (int iHandle, TDataPipe * p, void *pabLine)
int i;
int maxoff = 0;
char* buftmp = (char*) (p->buffer);
-
+
/* HP5400_DBG(DBG_MSG, "CircBufferGetLine:\n"); */
if (p->roff > maxoff)
@@ -1018,7 +1018,7 @@ InitScan (enum ScanType scantype, TScanParams * pParams,
struct ScanRequest req;
struct ScanResponse res;
int ret;
-
+
memset(&req, 0, sizeof(req));
req.x1 = 0x08;
@@ -1089,7 +1089,7 @@ InitScan2 (enum ScanType scantype, struct ScanRequest *req,
req->offx = htons (0x09F8);
if (htons (req->offy) > 0x0DB6)
req->offy = htons (0x0DB6);
- /* These tests are meaningless as htons() returns unsigned
+ /* These tests are meaningless as htons() returns unsigned
if( htons( req->offx ) < 0 ) req->offx = 0;
if( htons( req->offy ) < 0 ) req->offy = 0;
*/
diff --git a/backend/hp5400_sanei.c b/backend/hp5400_sanei.c
index 1396cb1..10c90ef 100644
--- a/backend/hp5400_sanei.c
+++ b/backend/hp5400_sanei.c
@@ -133,7 +133,7 @@ hp5400_open (const char *filename)
sane_strstatus (status));
return -1;
}
-
+
status = sanei_usb_get_vendor_product (fd, &iVendor, &iProduct);
if (status != SANE_STATUS_GOOD)
{
@@ -313,7 +313,7 @@ hp5400_bulk_read_block (int iHandle, int iCmd, void *cmd, int cmdlen,
_UsbWriteControl (fd, iCmd, 0, cmd, cmdlen);
res = len;
sanei_usb_read_bulk (fd, (SANE_Byte *) buffer, &res);
- HP5400_DBG (DBG_MSG, "Read block returned %lu when reading %d\n",
+ HP5400_DBG (DBG_MSG, "Read block returned %lu when reading %d\n",
(u_long) res, len);
return res;
}
@@ -384,4 +384,3 @@ hp5400_isOn (int iHandle)
return 0; /* is off */
}
#endif
-
diff --git a/backend/hp5400_xfer.h b/backend/hp5400_xfer.h
index e3e823d..b3a1cc6 100644
--- a/backend/hp5400_xfer.h
+++ b/backend/hp5400_xfer.h
@@ -47,7 +47,7 @@
If you do not wish that, delete this exception notice.
Transport layer for communication with HP5400/5470 scanner.
-
+
Add support for bulk transport of data - 19/02/2003 Martijn
*/
diff --git a/backend/hp5590.c b/backend/hp5590.c
index fabf40a..b206406 100644
--- a/backend/hp5590.c
+++ b/backend/hp5590.c
@@ -1,6 +1,8 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007 Ilia Sotnikov <hostcc@gmail.com>
HP ScanJet 4570c support by Markham Thomas
+ ADF page detection and high DPI fixes by Bernard Badeer
+ scanbd integration by Damiano Scaramuzza and Bernard Badeer
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -59,47 +61,161 @@
#include "../include/sane/saneopts.h"
#include "hp5590_cmds.c"
#include "hp5590_low.c"
+#include "../include/sane/sanei_net.h"
/* Debug levels */
-#define DBG_err 0
-#define DBG_proc 10
-#define DBG_verbose 20
+#define DBG_err 0
+#define DBG_proc 10
+#define DBG_verbose 20
+#define DBG_details 30
#define hp5590_assert(exp) if(!(exp)) { \
- DBG (DBG_err, "Assertion '%s' failed at %s:%u\n", #exp, __FILE__, __LINE__);\
- return SANE_STATUS_INVAL; \
+ DBG (DBG_err, "Assertion '%s' failed at %s:%u\n", #exp, __FILE__, __LINE__);\
+ return SANE_STATUS_INVAL; \
}
#define hp5590_assert_void_return(exp) if(!(exp)) { \
- DBG (DBG_err, "Assertion '%s' failed at %s:%u\n", #exp, __FILE__, __LINE__);\
- return; \
+ DBG (DBG_err, "Assertion '%s' failed at %s:%u\n", #exp, __FILE__, __LINE__);\
+ return; \
}
+#define MY_MIN(a, b) (((a) < (b)) ? (a) : (b))
+#define MY_MAX(a, b) (((a) > (b)) ? (a) : (b))
+
/* #define HAS_WORKING_COLOR_48 */
-#define BUILD 7
-#define USB_TIMEOUT 30 * 1000
+#define BUILD 8
+#define USB_TIMEOUT 30 * 1000
static SANE_Word
res_list[] = { 6, 100, 200, 300, 600, 1200, 2400 };
-#define SANE_VALUE_SCAN_SOURCE_FLATBED SANE_I18N("Flatbed")
-#define SANE_VALUE_SCAN_SOURCE_ADF SANE_I18N("ADF")
-#define SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX SANE_I18N("ADF Duplex")
-#define SANE_VALUE_SCAN_SOURCE_TMA_SLIDES SANE_I18N("TMA Slides")
-#define SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES SANE_I18N("TMA Negatives")
+#define SANE_VALUE_SCAN_SOURCE_FLATBED SANE_I18N("Flatbed")
+#define SANE_VALUE_SCAN_SOURCE_ADF SANE_I18N("ADF")
+#define SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX SANE_I18N("ADF Duplex")
+#define SANE_VALUE_SCAN_SOURCE_TMA_SLIDES SANE_I18N("TMA Slides")
+#define SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES SANE_I18N("TMA Negatives")
+static SANE_String_Const
+sources_list[] = {
+ SANE_VALUE_SCAN_SOURCE_FLATBED,
+ SANE_VALUE_SCAN_SOURCE_ADF,
+ SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX,
+ SANE_VALUE_SCAN_SOURCE_TMA_SLIDES,
+ SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES,
+ NULL
+};
+
+#define SANE_VALUE_SCAN_MODE_COLOR_24 SANE_VALUE_SCAN_MODE_COLOR
+#define SANE_VALUE_SCAN_MODE_COLOR_48 SANE_I18N("Color (48 bits)")
+#define HAS_WORKING_COLOR_48 1
+
+#define SANE_NAME_LAMP_TIMEOUT "extend-lamp-timeout"
+#define SANE_TITLE_LAMP_TIMEOUT SANE_I18N("Extend lamp timeout")
+#define SANE_DESC_LAMP_TIMEOUT SANE_I18N("Extends lamp timeout (from 15 minutes to 1 hour)")
+#define SANE_NAME_WAIT_FOR_BUTTON "wait-for-button"
+#define SANE_TITLE_WAIT_FOR_BUTTON SANE_I18N("Wait for button")
+#define SANE_DESC_WAIT_FOR_BUTTON SANE_I18N("Waits for button before scanning")
+#define SANE_NAME_BUTTON_PRESSED "button-pressed"
+#define SANE_TITLE_BUTTON_PRESSED SANE_I18N("Last button pressed")
+#define SANE_DESC_BUTTON_PRESSED SANE_I18N("Get ID of last button pressed (read only)")
+#define SANE_NAME_LCD_COUNTER "counter-value"
+#define SANE_TITLE_LCD_COUNTER SANE_I18N("LCD counter")
+#define SANE_DESC_LCD_COUNTER SANE_I18N("Get value of LCD counter (read only)")
+#define SANE_NAME_COLOR_LED "color-led"
+#define SANE_TITLE_COLOR_LED SANE_I18N("Color LED indicator")
+#define SANE_DESC_COLOR_LED SANE_I18N("Get value of LED indicator (read only)")
+#define SANE_NAME_DOC_IN_ADF "doc-in-adf"
+#define SANE_TITLE_DOC_IN_ADF SANE_I18N("Document available in ADF")
+#define SANE_DESC_DOC_IN_ADF SANE_I18N("Get state of document-available indicator in ADF (read only)")
+#define SANE_NAME_OVERWRITE_EOP_PIXEL "hide-eop-pixel"
+#define SANE_TITLE_OVERWRITE_EOP_PIXEL SANE_I18N("Hide end-of-page pixel")
+#define SANE_DESC_OVERWRITE_EOP_PIXEL SANE_I18N("Hide end-of-page indicator pixels and overwrite with neighbor pixels")
+#define SANE_NAME_TRAILING_LINES_MODE "trailing-lines-mode"
+#define SANE_TITLE_TRAILING_LINES_MODE SANE_I18N("Filling mode of trailing lines after scan data (ADF)")
+#define SANE_DESC_TRAILING_LINES_MODE SANE_I18N("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")
+#define SANE_NAME_TRAILING_LINES_COLOR "trailing-lines-color"
+#define SANE_TITLE_TRAILING_LINES_COLOR SANE_I18N("RGB or gray color value for filling mode 'color'")
+#define SANE_DESC_TRAILING_LINES_COLOR SANE_I18N("Color value for trailing lines filling mode 'color'. "\
+ "RGB color as r*65536+256*g+b or gray value (default=violet or gray)")
+
+#define BUTTON_PRESSED_VALUE_COUNT 11
+#define BUTTON_PRESSED_VALUE_NONE_KEY "none"
+#define BUTTON_PRESSED_VALUE_POWER_KEY "power"
+#define BUTTON_PRESSED_VALUE_SCAN_KEY "scan"
+#define BUTTON_PRESSED_VALUE_COLLECT_KEY "collect"
+#define BUTTON_PRESSED_VALUE_FILE_KEY "file"
+#define BUTTON_PRESSED_VALUE_EMAIL_KEY "email"
+#define BUTTON_PRESSED_VALUE_COPY_KEY "copy"
+#define BUTTON_PRESSED_VALUE_UP_KEY "up"
+#define BUTTON_PRESSED_VALUE_DOWN_KEY "down"
+#define BUTTON_PRESSED_VALUE_MODE_KEY "mode"
+#define BUTTON_PRESSED_VALUE_CANCEL_KEY "cancel"
+#define BUTTON_PRESSED_VALUE_MAX_KEY_LEN 32
+static SANE_String_Const
+buttonstate_list[] = {
+ BUTTON_PRESSED_VALUE_NONE_KEY,
+ BUTTON_PRESSED_VALUE_POWER_KEY,
+ BUTTON_PRESSED_VALUE_SCAN_KEY,
+ BUTTON_PRESSED_VALUE_COLLECT_KEY,
+ BUTTON_PRESSED_VALUE_FILE_KEY,
+ BUTTON_PRESSED_VALUE_EMAIL_KEY,
+ BUTTON_PRESSED_VALUE_COPY_KEY,
+ BUTTON_PRESSED_VALUE_UP_KEY,
+ BUTTON_PRESSED_VALUE_DOWN_KEY,
+ BUTTON_PRESSED_VALUE_MODE_KEY,
+ BUTTON_PRESSED_VALUE_CANCEL_KEY,
+ NULL
+};
+
+#define COLOR_LED_VALUE_COUNT 2
+#define COLOR_LED_VALUE_COLOR_KEY "color"
+#define COLOR_LED_VALUE_BLACKWHITE_KEY "black_white"
+#define COLOR_LED_VALUE_MAX_KEY_LEN 32
+static SANE_String_Const
+colorledstate_list[] = {
+ COLOR_LED_VALUE_COLOR_KEY,
+ COLOR_LED_VALUE_BLACKWHITE_KEY,
+ NULL
+};
-#define SANE_VALUE_SCAN_MODE_COLOR_24 SANE_VALUE_SCAN_MODE_COLOR
-#define SANE_VALUE_SCAN_MODE_COLOR_48 SANE_I18N("Color (48 bits)")
+#define LCD_COUNTER_VALUE_MIN 1
+#define LCD_COUNTER_VALUE_MAX 99
+#define LCD_COUNTER_VALUE_QUANT 1
+static SANE_Range
+lcd_counter_range = {
+ LCD_COUNTER_VALUE_MIN,
+ LCD_COUNTER_VALUE_MAX,
+ LCD_COUNTER_VALUE_QUANT
+};
-#define SANE_NAME_LAMP_TIMEOUT "extend-lamp-timeout"
-#define SANE_TITLE_LAMP_TIMEOUT SANE_I18N("Extend lamp timeout")
-#define SANE_DESC_LAMP_TIMEOUT SANE_I18N("Extends lamp timeout (from 15 minutes to 1 hour)")
-#define SANE_NAME_WAIT_FOR_BUTTON "wait-for-button"
-#define SANE_TITLE_WAIT_FOR_BUTTON SANE_I18N("Wait for button")
-#define SANE_DESC_WAIT_FOR_BUTTON SANE_I18N("Waits for button before scanning")
+#define TRAILING_LINES_MODE_RAW 0
+#define TRAILING_LINES_MODE_LAST 1
+#define TRAILING_LINES_MODE_RASTER 2
+#define TRAILING_LINES_MODE_WHITE 3
+#define TRAILING_LINES_MODE_BLACK 4
+#define TRAILING_LINES_MODE_COLOR 5
+#define TRAILING_LINES_MODE_VALUE_COUNT 6
+
+#define TRAILING_LINES_MODE_RAW_KEY "raw"
+#define TRAILING_LINES_MODE_LAST_KEY "last"
+#define TRAILING_LINES_MODE_RASTER_KEY "raster"
+#define TRAILING_LINES_MODE_WHITE_KEY "white"
+#define TRAILING_LINES_MODE_BLACK_KEY "black"
+#define TRAILING_LINES_MODE_COLOR_KEY "color"
+#define TRAILING_LINES_MODE_MAX_KEY_LEN 24
+static SANE_String_Const
+trailingmode_list[] = {
+ TRAILING_LINES_MODE_RAW_KEY,
+ TRAILING_LINES_MODE_LAST_KEY,
+ TRAILING_LINES_MODE_RASTER_KEY,
+ TRAILING_LINES_MODE_WHITE_KEY,
+ TRAILING_LINES_MODE_BLACK_KEY,
+ TRAILING_LINES_MODE_COLOR_KEY,
+ NULL
+};
-#define MAX_SCAN_SOURCE_VALUE_LEN 24
-#define MAX_SCAN_MODE_VALUE_LEN 24
+#define MAX_SCAN_SOURCE_VALUE_LEN 24
+#define MAX_SCAN_MODE_VALUE_LEN 24
static SANE_Range
range_x, range_y, range_qual;
@@ -126,29 +242,51 @@ enum hp5590_opt_idx {
HP5590_OPT_RESOLUTION,
HP5590_OPT_LAMP_TIMEOUT,
HP5590_OPT_WAIT_FOR_BUTTON,
+ HP5590_OPT_BUTTON_PRESSED,
+ HP5590_OPT_COLOR_LED,
+ HP5590_OPT_LCD_COUNTER,
+ HP5590_OPT_DOC_IN_ADF,
HP5590_OPT_PREVIEW,
+ HP5590_OPT_OVERWRITE_EOP_PIXEL,
+ HP5590_OPT_TRAILING_LINES_MODE,
+ HP5590_OPT_TRAILING_LINES_COLOR,
HP5590_OPT_LAST
};
struct hp5590_scanner {
- struct scanner_info *info;
- enum proto_flags proto_flags;
- SANE_Device sane;
- SANE_Int dn;
- float br_x, br_y, tl_x, tl_y;
- unsigned int dpi;
- enum color_depths depth;
- enum scan_sources source;
- SANE_Bool extend_lamp_timeout;
- SANE_Bool wait_for_button;
- SANE_Bool preview;
- unsigned int quality;
- SANE_Option_Descriptor *opts;
- struct hp5590_scanner *next;
- unsigned int image_size;
- SANE_Int transferred_image_size;
- void *bulk_read_state;
- SANE_Bool scanning;
+ struct scanner_info *info;
+ enum proto_flags proto_flags;
+ SANE_Device sane;
+ SANE_Int dn;
+ float br_x, br_y, tl_x, tl_y;
+ unsigned int dpi;
+ enum color_depths depth;
+ enum scan_sources source;
+ SANE_Bool extend_lamp_timeout;
+ SANE_Bool wait_for_button;
+ SANE_Bool preview;
+ unsigned int quality;
+ SANE_Option_Descriptor *opts;
+ struct hp5590_scanner *next;
+ unsigned long long image_size;
+ unsigned long long transferred_image_size;
+ void *bulk_read_state;
+ SANE_Bool scanning;
+ SANE_Bool overwrite_eop_pixel;
+ SANE_Byte *eop_last_line_data;
+ unsigned int eop_last_line_data_rpos;
+ SANE_Int eop_trailing_lines_mode;
+ SANE_Int eop_trailing_lines_color;
+ SANE_Byte *adf_next_page_lines_data;
+ unsigned int adf_next_page_lines_data_size;
+ unsigned int adf_next_page_lines_data_rpos;
+ unsigned int adf_next_page_lines_data_wpos;
+ SANE_Byte *one_line_read_buffer;
+ unsigned int one_line_read_buffer_rpos;
+ SANE_Byte *color_shift_line_buffer1;
+ unsigned int color_shift_buffered_lines1;
+ SANE_Byte *color_shift_line_buffer2;
+ unsigned int color_shift_buffered_lines2;
};
static
@@ -157,19 +295,19 @@ struct hp5590_scanner *scanners_list;
/******************************************************************************/
static SANE_Status
calc_image_params (struct hp5590_scanner *scanner,
- unsigned int *pixel_bits,
- unsigned int *pixels_per_line,
- unsigned int *bytes_per_line,
- unsigned int *lines,
- unsigned int *image_size)
+ unsigned int *pixel_bits,
+ unsigned int *pixels_per_line,
+ unsigned int *bytes_per_line,
+ unsigned int *lines,
+ unsigned long long *image_size)
{
- unsigned int _pixel_bits;
- SANE_Status ret;
- unsigned int _pixels_per_line;
- unsigned int _bytes_per_line;
- unsigned int _lines;
- unsigned int _image_size;
- float var;
+ unsigned int _pixel_bits;
+ SANE_Status ret;
+ unsigned int _pixels_per_line;
+ unsigned int _bytes_per_line;
+ unsigned int _lines;
+ unsigned int _image_size;
+ float var;
DBG (DBG_proc, "%s\n", __func__);
@@ -195,7 +333,7 @@ calc_image_params (struct hp5590_scanner *scanner,
if (var > _bytes_per_line)
_bytes_per_line++;
- _image_size = _lines * _bytes_per_line;
+ _image_size = (unsigned long long) _lines * _bytes_per_line;
DBG (DBG_verbose, "%s: pixel_bits: %u, pixels_per_line: %u, "
"bytes_per_line: %u, lines: %u, image_size: %u\n",
@@ -219,18 +357,18 @@ calc_image_params (struct hp5590_scanner *scanner,
return SANE_STATUS_GOOD;
}
-
+
/******************************************************************************/
static SANE_Status
attach_usb_device (SANE_String_Const devname,
- enum hp_scanner_types hp_scanner_type)
+ enum hp_scanner_types hp_scanner_type)
{
- struct scanner_info *info;
- struct hp5590_scanner *scanner, *ptr;
- unsigned int max_count, count;
- SANE_Int dn;
- SANE_Status ret;
- const struct hp5590_model *hp5590_model;
+ struct scanner_info *info;
+ struct hp5590_scanner *scanner, *ptr;
+ unsigned int max_count, count;
+ SANE_Int dn;
+ SANE_Status ret;
+ const struct hp5590_model *hp5590_model;
DBG (DBG_proc, "%s: Opening USB device\n", __func__);
if (sanei_usb_open (devname, &dn) != SANE_STATUS_GOOD)
@@ -242,7 +380,7 @@ attach_usb_device (SANE_String_Const devname,
return ret;
if (hp5590_init_scanner (dn, hp5590_model->proto_flags,
- &info, hp_scanner_type) != 0)
+ &info, hp_scanner_type) != 0)
return SANE_STATUS_IO_ERROR;
DBG (1, "%s: found HP%s scanner at '%s'\n",
@@ -250,13 +388,13 @@ attach_usb_device (SANE_String_Const devname,
DBG (DBG_verbose, "%s: Reading max scan count\n", __func__);
if (hp5590_read_max_scan_count (dn, hp5590_model->proto_flags,
- &max_count) != 0)
+ &max_count) != 0)
return SANE_STATUS_IO_ERROR;
DBG (DBG_verbose, "%s: Max Scanning count %u\n", __func__, max_count);
DBG (DBG_verbose, "%s: Reading scan count\n", __func__);
if (hp5590_read_scan_count (dn, hp5590_model->proto_flags,
- &count) != 0)
+ &count) != 0)
return SANE_STATUS_IO_ERROR;
DBG (DBG_verbose, "%s: Scanning count %u\n", __func__, count);
@@ -282,6 +420,18 @@ attach_usb_device (SANE_String_Const devname,
scanner->info = info;
scanner->bulk_read_state = NULL;
scanner->opts = NULL;
+ scanner->eop_last_line_data = NULL;
+ scanner->eop_last_line_data_rpos = 0;
+ scanner->adf_next_page_lines_data = NULL;
+ scanner->adf_next_page_lines_data_size = 0;
+ scanner->adf_next_page_lines_data_rpos = 0;
+ scanner->adf_next_page_lines_data_wpos = 0;
+ scanner->one_line_read_buffer = NULL;
+ scanner->one_line_read_buffer_rpos = 0;
+ scanner->color_shift_line_buffer1 = NULL;
+ scanner->color_shift_buffered_lines1 = 0;
+ scanner->color_shift_line_buffer2 = NULL;
+ scanner->color_shift_buffered_lines2 = 0;
if (!scanners_list)
scanners_list = scanner;
@@ -326,11 +476,11 @@ attach_hp7650 (SANE_String_Const devname)
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback __sane_unused__ authorize)
{
- SANE_Status ret;
- SANE_Word vendor_id, product_id;
-
+ SANE_Status ret;
+ SANE_Word vendor_id, product_id;
+
DBG_INIT();
-
+
DBG (1, "SANE backed for HP ScanJet 4500C/4570C/5500C/5550C/5590/7650 %u.%u.%u\n",
SANE_CURRENT_MAJOR, V_MINOR, BUILD);
DBG (1, "(c) Ilia Sotnikov <hostcc@gmail.com>\n");
@@ -389,7 +539,34 @@ void sane_exit (void)
for (ptr = scanners_list; ptr; ptr = pnext)
{
if (ptr->opts != NULL)
- free (ptr->opts);
+ free (ptr->opts);
+ if (ptr->eop_last_line_data != NULL) {
+ free (ptr->eop_last_line_data);
+ ptr->eop_last_line_data = NULL;
+ ptr->eop_last_line_data_rpos = 0;
+ }
+ if (ptr->adf_next_page_lines_data != NULL) {
+ free (ptr->adf_next_page_lines_data);
+ ptr->adf_next_page_lines_data = NULL;
+ ptr->adf_next_page_lines_data_size = 0;
+ ptr->adf_next_page_lines_data_wpos = 0;
+ ptr->adf_next_page_lines_data_rpos = 0;
+ }
+ if (ptr->one_line_read_buffer != NULL) {
+ free (ptr->one_line_read_buffer);
+ ptr->one_line_read_buffer = NULL;
+ ptr->one_line_read_buffer_rpos = 0;
+ }
+ if (ptr->color_shift_line_buffer1 != NULL) {
+ free (ptr->color_shift_line_buffer1);
+ ptr->color_shift_line_buffer1 = NULL;
+ ptr->color_shift_buffered_lines1 = 0;
+ }
+ if (ptr->color_shift_line_buffer2 != NULL) {
+ free (ptr->color_shift_line_buffer2);
+ ptr->color_shift_line_buffer2 = NULL;
+ ptr->color_shift_buffered_lines2 = 0;
+ }
pnext = ptr->next;
free (ptr);
}
@@ -428,11 +605,8 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
SANE_Status
sane_open (SANE_String_Const devicename, SANE_Handle * handle)
{
- struct hp5590_scanner *ptr;
- SANE_Option_Descriptor *opts;
- unsigned int available_sources;
- SANE_String_Const *sources_list;
- unsigned int source_idx;
+ struct hp5590_scanner *ptr;
+ SANE_Option_Descriptor *opts;
DBG (DBG_proc, "%s: device name: %s\n", __func__, devicename);
@@ -444,19 +618,31 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
ptr = scanners_list;
} else {
for (ptr = scanners_list;
- ptr && strcmp (ptr->sane.name, devicename) != 0;
- ptr = ptr->next);
+ ptr && strcmp (ptr->sane.name, devicename) != 0;
+ ptr = ptr->next);
}
if (!ptr)
return SANE_STATUS_INVAL;
+ /* DS: Without this after the first scan (and sane_close)
+ * it was impossible to use again the read_buttons usb routine.
+ * Function sane_close puts dn = -1. Now sane_open needs to open
+ * the usb communication again.
+ */
+ if (ptr->dn < 0) {
+ DBG (DBG_proc, "%s: Reopening USB device\n", __func__);
+ if (sanei_usb_open (ptr->sane.name, &ptr->dn) != SANE_STATUS_GOOD)
+ return SANE_STATUS_IO_ERROR;
+ DBG (DBG_proc, "%s: USB device reopened\n", __func__);
+ }
+
ptr->tl_x = 0;
ptr->tl_y = 0;
ptr->br_x = ptr->info->max_size_x;
ptr->br_y = ptr->info->max_size_y;
ptr->dpi = res_list[1];
- ptr->depth = DEPTH_BW;
+ ptr->depth = DEPTH_BW;
ptr->source = SOURCE_FLATBED;
ptr->extend_lamp_timeout = SANE_FALSE;
ptr->wait_for_button = SANE_FALSE;
@@ -464,6 +650,9 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
ptr->quality = 4;
ptr->image_size = 0;
ptr->scanning = SANE_FALSE;
+ ptr->overwrite_eop_pixel = SANE_TRUE;
+ ptr->eop_trailing_lines_mode = TRAILING_LINES_MODE_LAST;
+ ptr->eop_trailing_lines_color = 0x7f007f;
*handle = ptr;
@@ -542,29 +731,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
opts[HP5590_OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
opts[HP5590_OPT_MODE].constraint.string_list = mode_list;
- available_sources = 1; /* Flatbed is always available */
- if (ptr->info->features & FEATURE_ADF)
- available_sources += 2;
- if (ptr->info->features & FEATURE_TMA)
- available_sources += 2;
- available_sources++; /* Count terminating NULL */
- sources_list = malloc (available_sources * sizeof (SANE_String_Const));
- if (!sources_list)
- return SANE_STATUS_NO_MEM;
- source_idx = 0;
- sources_list[source_idx++] = SANE_VALUE_SCAN_SOURCE_FLATBED;
- if (ptr->info->features & FEATURE_ADF)
- {
- sources_list[source_idx++] = SANE_VALUE_SCAN_SOURCE_ADF;
- sources_list[source_idx++] = SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX;
- }
- if (ptr->info->features & FEATURE_TMA)
- {
- sources_list[source_idx++] = SANE_VALUE_SCAN_SOURCE_TMA_SLIDES;
- sources_list[source_idx++] = SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES;
- }
- sources_list[source_idx] = NULL;
-
+ /* Show all features, check on feature in command line evaluation. */
opts[HP5590_OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
opts[HP5590_OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
opts[HP5590_OPT_SOURCE].desc = SANE_DESC_SCAN_SOURCE;
@@ -605,6 +772,46 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
opts[HP5590_OPT_WAIT_FOR_BUTTON].constraint_type = SANE_CONSTRAINT_NONE;
opts[HP5590_OPT_WAIT_FOR_BUTTON].constraint.string_list = NULL;
+ opts[HP5590_OPT_BUTTON_PRESSED].name = SANE_NAME_BUTTON_PRESSED;
+ opts[HP5590_OPT_BUTTON_PRESSED].title = SANE_TITLE_BUTTON_PRESSED;
+ opts[HP5590_OPT_BUTTON_PRESSED].desc = SANE_DESC_BUTTON_PRESSED;
+ opts[HP5590_OPT_BUTTON_PRESSED].type = SANE_TYPE_STRING;
+ opts[HP5590_OPT_BUTTON_PRESSED].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_BUTTON_PRESSED].size = BUTTON_PRESSED_VALUE_MAX_KEY_LEN;
+ opts[HP5590_OPT_BUTTON_PRESSED].cap = SANE_CAP_HARD_SELECT | SANE_CAP_SOFT_DETECT;
+ opts[HP5590_OPT_BUTTON_PRESSED].constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opts[HP5590_OPT_BUTTON_PRESSED].constraint.string_list = buttonstate_list;
+
+ opts[HP5590_OPT_COLOR_LED].name = SANE_NAME_COLOR_LED;
+ opts[HP5590_OPT_COLOR_LED].title = SANE_TITLE_COLOR_LED;
+ opts[HP5590_OPT_COLOR_LED].desc = SANE_DESC_COLOR_LED;
+ opts[HP5590_OPT_COLOR_LED].type = SANE_TYPE_STRING;
+ opts[HP5590_OPT_COLOR_LED].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_COLOR_LED].size = COLOR_LED_VALUE_MAX_KEY_LEN;
+ opts[HP5590_OPT_COLOR_LED].cap = SANE_CAP_HARD_SELECT | SANE_CAP_SOFT_DETECT;
+ opts[HP5590_OPT_COLOR_LED].constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opts[HP5590_OPT_COLOR_LED].constraint.string_list = colorledstate_list;
+
+ opts[HP5590_OPT_LCD_COUNTER].name = SANE_NAME_LCD_COUNTER;
+ opts[HP5590_OPT_LCD_COUNTER].title = SANE_TITLE_LCD_COUNTER;
+ opts[HP5590_OPT_LCD_COUNTER].desc = SANE_DESC_LCD_COUNTER;
+ opts[HP5590_OPT_LCD_COUNTER].type = SANE_TYPE_INT;
+ opts[HP5590_OPT_LCD_COUNTER].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_LCD_COUNTER].size = sizeof(SANE_Int);
+ opts[HP5590_OPT_LCD_COUNTER].cap = SANE_CAP_HARD_SELECT | SANE_CAP_SOFT_DETECT;
+ opts[HP5590_OPT_LCD_COUNTER].constraint_type = SANE_CONSTRAINT_RANGE;
+ opts[HP5590_OPT_LCD_COUNTER].constraint.range = &lcd_counter_range;
+
+ opts[HP5590_OPT_DOC_IN_ADF].name = SANE_NAME_DOC_IN_ADF;
+ opts[HP5590_OPT_DOC_IN_ADF].title = SANE_TITLE_DOC_IN_ADF;
+ opts[HP5590_OPT_DOC_IN_ADF].desc = SANE_DESC_DOC_IN_ADF;
+ opts[HP5590_OPT_DOC_IN_ADF].type = SANE_TYPE_BOOL;
+ opts[HP5590_OPT_DOC_IN_ADF].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_DOC_IN_ADF].size = sizeof(SANE_Bool);
+ opts[HP5590_OPT_DOC_IN_ADF].cap = SANE_CAP_HARD_SELECT | SANE_CAP_SOFT_DETECT;
+ opts[HP5590_OPT_DOC_IN_ADF].constraint_type = SANE_CONSTRAINT_NONE;
+ opts[HP5590_OPT_DOC_IN_ADF].constraint.range = NULL;
+
opts[HP5590_OPT_PREVIEW].name = SANE_NAME_PREVIEW;
opts[HP5590_OPT_PREVIEW].title = SANE_TITLE_PREVIEW;
opts[HP5590_OPT_PREVIEW].desc = SANE_DESC_PREVIEW;
@@ -615,6 +822,36 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
opts[HP5590_OPT_PREVIEW].constraint_type = SANE_CONSTRAINT_NONE;
opts[HP5590_OPT_PREVIEW].constraint.string_list = NULL;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].name = SANE_NAME_OVERWRITE_EOP_PIXEL;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].title = SANE_TITLE_OVERWRITE_EOP_PIXEL;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].desc = SANE_DESC_OVERWRITE_EOP_PIXEL;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].type = SANE_TYPE_BOOL;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].size = sizeof(SANE_Bool);
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].constraint_type = SANE_CONSTRAINT_NONE;
+ opts[HP5590_OPT_OVERWRITE_EOP_PIXEL].constraint.string_list = NULL;
+
+ opts[HP5590_OPT_TRAILING_LINES_MODE].name = SANE_NAME_TRAILING_LINES_MODE;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].title = SANE_TITLE_TRAILING_LINES_MODE;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].desc = SANE_DESC_TRAILING_LINES_MODE;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].type = SANE_TYPE_STRING;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].size = TRAILING_LINES_MODE_MAX_KEY_LEN;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opts[HP5590_OPT_TRAILING_LINES_MODE].constraint.string_list = trailingmode_list;
+
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].name = SANE_NAME_TRAILING_LINES_COLOR;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].title = SANE_TITLE_TRAILING_LINES_COLOR;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].desc = SANE_DESC_TRAILING_LINES_COLOR;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].type = SANE_TYPE_INT;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].unit = SANE_UNIT_NONE;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].size = sizeof(SANE_Int);
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].constraint_type = SANE_CONSTRAINT_NONE;
+ opts[HP5590_OPT_TRAILING_LINES_COLOR].constraint.string_list = NULL;
+
ptr->opts = opts;
return SANE_STATUS_GOOD;
@@ -646,285 +883,541 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
return &scanner->opts[option];
}
+/*************************************DS:Support function read buttons status */
+SANE_Status
+read_button_pressed(SANE_Handle handle, enum button_status * button_pressed)
+{
+ struct hp5590_scanner * scanner = handle;
+ *button_pressed = BUTTON_NONE;
+ enum button_status status = BUTTON_NONE;
+ DBG (DBG_verbose, "%s: Checking button status (device_number = %u) (device_name = %s)\n", __func__, scanner->dn, scanner->sane.name);
+ SANE_Status ret = hp5590_read_buttons (scanner->dn, scanner->proto_flags, &status);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_proc, "%s: Error reading button status (%u)\n", __func__, ret);
+ return ret;
+ }
+ DBG (DBG_verbose, "%s: Button pressed = %d\n", __func__, status);
+ *button_pressed = status;
+ return SANE_STATUS_GOOD;
+}
+
+/******************************************************************************/
+SANE_Status
+read_lcd_and_led_values(SANE_Handle handle,
+ SANE_Int * lcd_counter,
+ enum color_led_status * color_led)
+{
+ struct hp5590_scanner * scanner = handle;
+ *lcd_counter = 1;
+ *color_led = LED_COLOR;
+ DBG (DBG_verbose, "%s: Reading LCD and LED values (device_number = %u) (device_name = %s)\n",
+ __func__, scanner->dn, scanner->sane.name);
+ SANE_Status ret = hp5590_read_lcd_and_led (scanner->dn, scanner->proto_flags, lcd_counter, color_led);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_proc, "%s: Error reading LCD and LED values (%u)\n", __func__, ret);
+ return ret;
+ }
+ DBG (DBG_verbose, "%s: LCD = %d, LED = %s\n", __func__, *lcd_counter,
+ *color_led == LED_BLACKWHITE ? COLOR_LED_VALUE_BLACKWHITE_KEY : COLOR_LED_VALUE_COLOR_KEY);
+ return SANE_STATUS_GOOD;
+}
+
+/******************************************************************************/
+SANE_Status
+read_doc_in_adf_value(SANE_Handle handle,
+ SANE_Bool * doc_in_adf)
+{
+ struct hp5590_scanner * scanner = handle;
+ DBG (DBG_verbose, "%s: Reading state of document-available in ADF (device_number = %u) (device_name = %s)\n",
+ __func__, scanner->dn, scanner->sane.name);
+ SANE_Status ret = hp5590_is_data_available (scanner->dn, scanner->proto_flags);
+ if (ret == SANE_STATUS_GOOD)
+ *doc_in_adf = SANE_TRUE;
+ else if (ret == SANE_STATUS_NO_DOCS)
+ *doc_in_adf = SANE_FALSE;
+ else
+ {
+ DBG (DBG_proc, "%s: Error reading state of document-available in ADF (%u)\n", __func__, ret);
+ return ret;
+ }
+ DBG (DBG_verbose, "%s: doc_in_adf = %s\n", __func__, *doc_in_adf == SANE_FALSE ? "false" : "true");
+ return SANE_STATUS_GOOD;
+}
+
/******************************************************************************/
SANE_Status
sane_control_option (SANE_Handle handle, SANE_Int option,
- SANE_Action action, void *value,
+ SANE_Action action, void *value,
SANE_Int * info)
{
- struct hp5590_scanner *scanner = handle;
-
+ struct hp5590_scanner *scanner = handle;
+
if (!value)
return SANE_STATUS_INVAL;
if (!handle)
return SANE_STATUS_INVAL;
-
+
if (option >= HP5590_OPT_LAST)
return SANE_STATUS_INVAL;
if (action == SANE_ACTION_GET_VALUE)
{
if (option == HP5590_OPT_NUM)
- {
- DBG(3, "%s: get total number of options - %u\n", __func__, HP5590_OPT_LAST);
- *((SANE_Int *) value) = HP5590_OPT_LAST;
- return SANE_STATUS_GOOD;
- }
-
+ {
+ DBG(3, "%s: get total number of options - %u\n", __func__, HP5590_OPT_LAST);
+ *((SANE_Int *) value) = HP5590_OPT_LAST;
+ return SANE_STATUS_GOOD;
+ }
+
if (!scanner->opts)
- return SANE_STATUS_INVAL;
-
+ return SANE_STATUS_INVAL;
+
DBG (DBG_proc, "%s: get option '%s' value\n", __func__, scanner->opts[option].name);
if (option == HP5590_OPT_BR_X)
- {
- *(SANE_Fixed *) value = SANE_FIX (scanner->br_x * 25.4);
- }
+ {
+ *(SANE_Fixed *) value = SANE_FIX (scanner->br_x * 25.4);
+ }
if (option == HP5590_OPT_BR_Y)
- {
- *(SANE_Fixed *) value = SANE_FIX (scanner->br_y * 25.4);
- }
+ {
+ *(SANE_Fixed *) value = SANE_FIX (scanner->br_y * 25.4);
+ }
if (option == HP5590_OPT_TL_X)
- {
- *(SANE_Fixed *) value = SANE_FIX ((scanner->tl_x) * 25.4);
- }
+ {
+ *(SANE_Fixed *) value = SANE_FIX ((scanner->tl_x) * 25.4);
+ }
if (option == HP5590_OPT_TL_Y)
- {
- *(SANE_Fixed *) value = SANE_FIX (scanner->tl_y * 25.4);
- }
+ {
+ *(SANE_Fixed *) value = SANE_FIX (scanner->tl_y * 25.4);
+ }
if (option == HP5590_OPT_MODE)
- {
- switch (scanner->depth) {
- case DEPTH_BW:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_MODE_LINEART, strlen (SANE_VALUE_SCAN_MODE_LINEART));
- break;
- case DEPTH_GRAY:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_MODE_GRAY, strlen (SANE_VALUE_SCAN_MODE_GRAY));
- break;
- case DEPTH_COLOR_24:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_MODE_COLOR_24, strlen (SANE_VALUE_SCAN_MODE_COLOR_24));
- break;
- case DEPTH_COLOR_48:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_MODE_COLOR_48, strlen (SANE_VALUE_SCAN_MODE_COLOR_48));
- break;
- default:
- return SANE_STATUS_INVAL;
- }
- }
+ {
+ switch (scanner->depth) {
+ case DEPTH_BW:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_MODE_LINEART, strlen (SANE_VALUE_SCAN_MODE_LINEART));
+ break;
+ case DEPTH_GRAY:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_MODE_GRAY, strlen (SANE_VALUE_SCAN_MODE_GRAY));
+ break;
+ case DEPTH_COLOR_24:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_MODE_COLOR_24, strlen (SANE_VALUE_SCAN_MODE_COLOR_24));
+ break;
+ case DEPTH_COLOR_48:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_MODE_COLOR_48, strlen (SANE_VALUE_SCAN_MODE_COLOR_48));
+ break;
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ }
if (option == HP5590_OPT_SOURCE)
- {
- switch (scanner->source) {
- case SOURCE_FLATBED:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_SOURCE_FLATBED, strlen (SANE_VALUE_SCAN_SOURCE_FLATBED));
- break;
- case SOURCE_ADF:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_SOURCE_ADF, strlen (SANE_VALUE_SCAN_SOURCE_ADF));
- break;
- case SOURCE_ADF_DUPLEX:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX, strlen (SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX));
- break;
- case SOURCE_TMA_SLIDES:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_SOURCE_TMA_SLIDES, strlen (SANE_VALUE_SCAN_SOURCE_TMA_SLIDES));
- break;
- case SOURCE_TMA_NEGATIVES:
- memset (value , 0, scanner->opts[option].size);
- memcpy (value, SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES, strlen (SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES));
- break;
- case SOURCE_NONE:
- default:
- return SANE_STATUS_INVAL;
- }
- }
+ {
+ switch (scanner->source) {
+ case SOURCE_FLATBED:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_SOURCE_FLATBED, strlen (SANE_VALUE_SCAN_SOURCE_FLATBED));
+ break;
+ case SOURCE_ADF:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_SOURCE_ADF, strlen (SANE_VALUE_SCAN_SOURCE_ADF));
+ break;
+ case SOURCE_ADF_DUPLEX:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX, strlen (SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX));
+ break;
+ case SOURCE_TMA_SLIDES:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_SOURCE_TMA_SLIDES, strlen (SANE_VALUE_SCAN_SOURCE_TMA_SLIDES));
+ break;
+ case SOURCE_TMA_NEGATIVES:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES, strlen (SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES));
+ break;
+ case SOURCE_NONE:
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ }
if (option == HP5590_OPT_RESOLUTION)
- {
- *(SANE_Int *) value = scanner->dpi;
- }
+ {
+ *(SANE_Int *) value = scanner->dpi;
+ }
if (option == HP5590_OPT_LAMP_TIMEOUT)
- {
- *(SANE_Bool *) value = scanner->extend_lamp_timeout;
- }
+ {
+ *(SANE_Bool *) value = scanner->extend_lamp_timeout;
+ }
if (option == HP5590_OPT_WAIT_FOR_BUTTON)
- {
- *(SANE_Bool *) value = scanner->wait_for_button;
- }
+ {
+ *(SANE_Bool *) value = scanner->wait_for_button;
+ }
+
+ if (option == HP5590_OPT_BUTTON_PRESSED)
+ {
+ enum button_status button_pressed = BUTTON_NONE;
+ SANE_Status ret = read_button_pressed(scanner, &button_pressed);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ switch (button_pressed) {
+ case BUTTON_POWER:
+ strncpy (value, BUTTON_PRESSED_VALUE_POWER_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_SCAN:
+ strncpy (value, BUTTON_PRESSED_VALUE_SCAN_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_COLLECT:
+ strncpy (value, BUTTON_PRESSED_VALUE_COLLECT_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_FILE:
+ strncpy (value, BUTTON_PRESSED_VALUE_FILE_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_EMAIL:
+ strncpy (value, BUTTON_PRESSED_VALUE_EMAIL_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_COPY:
+ strncpy (value, BUTTON_PRESSED_VALUE_COPY_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_UP:
+ strncpy (value, BUTTON_PRESSED_VALUE_UP_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_DOWN:
+ strncpy (value, BUTTON_PRESSED_VALUE_DOWN_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_MODE:
+ strncpy (value, BUTTON_PRESSED_VALUE_MODE_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_CANCEL:
+ strncpy (value, BUTTON_PRESSED_VALUE_CANCEL_KEY, scanner->opts[option].size);
+ break;
+ case BUTTON_NONE:
+ default:
+ strncpy (value, BUTTON_PRESSED_VALUE_NONE_KEY, scanner->opts[option].size);
+ }
+ }
+
+ if (option == HP5590_OPT_COLOR_LED)
+ {
+ SANE_Int lcd_counter = 0;
+ enum color_led_status color_led = LED_COLOR;
+ SANE_Status ret = read_lcd_and_led_values(scanner, &lcd_counter, &color_led);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ switch (color_led) {
+ case LED_BLACKWHITE:
+ strncpy (value, COLOR_LED_VALUE_BLACKWHITE_KEY, scanner->opts[option].size);
+ break;
+ case LED_COLOR:
+ default:
+ strncpy (value, COLOR_LED_VALUE_COLOR_KEY, scanner->opts[option].size);
+ }
+ }
+
+ if (option == HP5590_OPT_LCD_COUNTER)
+ {
+ SANE_Int lcd_counter = 0;
+ enum color_led_status color_led = LED_COLOR;
+ SANE_Status ret = read_lcd_and_led_values(scanner, &lcd_counter, &color_led);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ *(SANE_Int *) value = lcd_counter;
+ }
+
+ if (option == HP5590_OPT_DOC_IN_ADF)
+ {
+ SANE_Bool doc_in_adf = SANE_FALSE;
+ SANE_Status ret = read_doc_in_adf_value(scanner, &doc_in_adf);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ *(SANE_Bool *) value = doc_in_adf;
+ }
if (option == HP5590_OPT_PREVIEW)
- {
- *(SANE_Bool *) value = scanner->preview;
- }
+ {
+ *(SANE_Bool *) value = scanner->preview;
+ }
+
+ if (option == HP5590_OPT_OVERWRITE_EOP_PIXEL)
+ {
+ *(SANE_Bool *) value = scanner->overwrite_eop_pixel;
+ }
+
+ if (option == HP5590_OPT_TRAILING_LINES_MODE)
+ {
+ switch (scanner->eop_trailing_lines_mode) {
+ case TRAILING_LINES_MODE_RAW:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_RAW_KEY, strlen (TRAILING_LINES_MODE_RAW_KEY));
+ break;
+ case TRAILING_LINES_MODE_LAST:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_LAST_KEY, strlen (TRAILING_LINES_MODE_LAST_KEY));
+ break;
+ case TRAILING_LINES_MODE_RASTER:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_RASTER_KEY, strlen (TRAILING_LINES_MODE_RASTER_KEY));
+ break;
+ case TRAILING_LINES_MODE_BLACK:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_BLACK_KEY, strlen (TRAILING_LINES_MODE_BLACK_KEY));
+ break;
+ case TRAILING_LINES_MODE_WHITE:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_WHITE_KEY, strlen (TRAILING_LINES_MODE_WHITE_KEY));
+ break;
+ case TRAILING_LINES_MODE_COLOR:
+ memset (value , 0, scanner->opts[option].size);
+ memcpy (value, TRAILING_LINES_MODE_COLOR_KEY, strlen (TRAILING_LINES_MODE_COLOR_KEY));
+ break;
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ }
+
+ if (option == HP5590_OPT_TRAILING_LINES_COLOR)
+ {
+ *(SANE_Int *) value = scanner->eop_trailing_lines_color;
+ }
}
-
+
if (action == SANE_ACTION_SET_VALUE)
{
if (option == HP5590_OPT_NUM)
- return SANE_STATUS_INVAL;
+ return SANE_STATUS_INVAL;
if (option == HP5590_OPT_BR_X)
- {
- float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
- if (val <= scanner->tl_x)
- return SANE_STATUS_GOOD;
- scanner->br_x = val;
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS;
- }
+ {
+ float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
+ if (val <= scanner->tl_x)
+ return SANE_STATUS_GOOD;
+ scanner->br_x = val;
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS;
+ }
if (option == HP5590_OPT_BR_Y)
- {
- float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
- if (val <= scanner->tl_y)
- return SANE_STATUS_GOOD;
- scanner->br_y = val;
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS;
- }
+ {
+ float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
+ if (val <= scanner->tl_y)
+ return SANE_STATUS_GOOD;
+ scanner->br_y = val;
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS;
+ }
if (option == HP5590_OPT_TL_X)
- {
- float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
- if (val >= scanner->br_x)
- return SANE_STATUS_GOOD;
- scanner->tl_x = val;
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS;
- }
+ {
+ float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
+ if (val >= scanner->br_x)
+ return SANE_STATUS_GOOD;
+ scanner->tl_x = val;
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS;
+ }
if (option == HP5590_OPT_TL_Y)
- {
- float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
- if (val >= scanner->br_y)
- return SANE_STATUS_GOOD;
- scanner->tl_y = val;
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS;
- }
+ {
+ float val = SANE_UNFIX(*(SANE_Fixed *) value) / 25.4;
+ if (val >= scanner->br_y)
+ return SANE_STATUS_GOOD;
+ scanner->tl_y = val;
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS;
+ }
if (option == HP5590_OPT_MODE)
- {
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_LINEART) == 0)
- {
- scanner->depth = DEPTH_BW;
- }
-
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_GRAY) == 0)
- {
- scanner->depth = DEPTH_GRAY;
- }
-
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_COLOR_24) == 0)
- {
- scanner->depth = DEPTH_COLOR_24;
- }
-
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_COLOR_48) == 0)
- {
- scanner->depth = DEPTH_COLOR_48;
- }
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
- }
+ {
+ if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_LINEART) == 0)
+ {
+ scanner->depth = DEPTH_BW;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_GRAY) == 0)
+ {
+ scanner->depth = DEPTH_GRAY;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_COLOR_24) == 0)
+ {
+ scanner->depth = DEPTH_COLOR_24;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_MODE_COLOR_48) == 0)
+ {
+ scanner->depth = DEPTH_COLOR_48;
+ }
+ else
+ {
+ return SANE_STATUS_INVAL;
+ }
+
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
+ }
if (option == HP5590_OPT_SOURCE)
- {
+ {
range_y.max = SANE_FIX(scanner->info->max_size_y * 25.4);
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_FLATBED) == 0)
- {
- scanner->source = SOURCE_FLATBED;
- range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
- range_y.max = SANE_FIX(scanner->info->max_size_y * 25.4);
- scanner->br_x = scanner->info->max_size_x;
- scanner->br_y = scanner->info->max_size_y;
- }
- /* In ADF modes the device can scan up to ADF_MAX_Y_INCHES, which is usually
- * bigger than what scanner reports back during initialization
- */
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_ADF) == 0)
- {
- scanner->source = SOURCE_ADF;
- range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
- range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4);
- scanner->br_x = scanner->info->max_size_x;
- scanner->br_y = ADF_MAX_Y_INCHES * 25.4;
- }
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX) == 0)
- {
- scanner->source = SOURCE_ADF_DUPLEX;
- range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
- range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4 * 2);
- scanner->br_y = ADF_MAX_Y_INCHES * 25.4 * 2;
- scanner->br_x = scanner->info->max_size_x;
- }
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_TMA_SLIDES) == 0)
- {
- scanner->source = SOURCE_TMA_SLIDES;
- range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4);
- range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4);
- scanner->br_x = TMA_MAX_X_INCHES * 25.4;
- scanner->br_y = TMA_MAX_Y_INCHES * 25.4;
- }
- if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES) == 0)
- {
- scanner->source = SOURCE_TMA_NEGATIVES;
- range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4);
- range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4);
- scanner->br_x = TMA_MAX_X_INCHES * 25.4;
- scanner->br_y = TMA_MAX_Y_INCHES * 25.4;
- }
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
- }
+ if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_FLATBED) == 0)
+ {
+ scanner->source = SOURCE_FLATBED;
+ range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
+ range_y.max = SANE_FIX(scanner->info->max_size_y * 25.4);
+ scanner->br_x = scanner->info->max_size_x;
+ scanner->br_y = scanner->info->max_size_y;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_ADF) == 0)
+ {
+ /* In ADF modes the device can scan up to ADF_MAX_Y_INCHES, which is usually
+ * bigger than what scanner reports back during initialization
+ */
+ if (! (scanner->info->features & FEATURE_ADF))
+ {
+ DBG(DBG_err, "ADF feature not available: %s\n", (char *) value);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ scanner->source = SOURCE_ADF;
+ range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
+ range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4);
+ scanner->br_x = scanner->info->max_size_x;
+ scanner->br_y = ADF_MAX_Y_INCHES;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_ADF_DUPLEX) == 0)
+ {
+ if (! (scanner->info->features & FEATURE_ADF))
+ {
+ DBG(DBG_err, "ADF feature not available: %s\n", (char *) value);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ scanner->source = SOURCE_ADF_DUPLEX;
+ range_x.max = SANE_FIX(scanner->info->max_size_x * 25.4);
+ range_y.max = SANE_FIX(ADF_MAX_Y_INCHES * 25.4);
+ scanner->br_x = scanner->info->max_size_x;
+ scanner->br_y = ADF_MAX_Y_INCHES;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_TMA_SLIDES) == 0)
+ {
+ if (! (scanner->info->features & FEATURE_TMA))
+ {
+ DBG(DBG_err, "TMA feature not available: %s\n", (char *) value);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ scanner->source = SOURCE_TMA_SLIDES;
+ range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4);
+ range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4);
+ scanner->br_x = TMA_MAX_X_INCHES;
+ scanner->br_y = TMA_MAX_Y_INCHES;
+ }
+ else if (strcmp ((char *) value, (char *) SANE_VALUE_SCAN_SOURCE_TMA_NEGATIVES) == 0)
+ {
+ if (! (scanner->info->features & FEATURE_TMA))
+ {
+ DBG(DBG_err, "TMA feature not available: %s\n", (char *) value);
+ return SANE_STATUS_UNSUPPORTED;
+ }
+ scanner->source = SOURCE_TMA_NEGATIVES;
+ range_x.max = SANE_FIX(TMA_MAX_X_INCHES * 25.4);
+ range_y.max = SANE_FIX(TMA_MAX_Y_INCHES * 25.4);
+ scanner->br_x = TMA_MAX_X_INCHES;
+ scanner->br_y = TMA_MAX_Y_INCHES;
+ }
+ else
+ {
+ return SANE_STATUS_INVAL;
+ }
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
+ }
if (option == HP5590_OPT_RESOLUTION)
- {
- scanner->dpi = *(SANE_Int *) value;
- if (info)
- *info = SANE_INFO_RELOAD_PARAMS;
- }
+ {
+ scanner->dpi = *(SANE_Int *) value;
+ if (info)
+ *info = SANE_INFO_RELOAD_PARAMS;
+ }
if (option == HP5590_OPT_LAMP_TIMEOUT)
- {
- scanner->extend_lamp_timeout = *(SANE_Bool *) value;
- }
+ {
+ scanner->extend_lamp_timeout = *(SANE_Bool *) value;
+ }
if (option == HP5590_OPT_WAIT_FOR_BUTTON)
- {
- scanner->wait_for_button = *(SANE_Bool *) value;
- }
+ {
+ scanner->wait_for_button = *(SANE_Bool *) value;
+ }
+
+ if (option == HP5590_OPT_BUTTON_PRESSED)
+ {
+ DBG(DBG_verbose, "State of buttons is read only. Setting of state will be ignored.\n");
+ }
+
+ if (option == HP5590_OPT_COLOR_LED)
+ {
+ DBG(DBG_verbose, "State of color LED indicator is read only. Setting of state will be ignored.\n");
+ }
+
+ if (option == HP5590_OPT_LCD_COUNTER)
+ {
+ DBG(DBG_verbose, "Value of LCD counter is read only. Setting of value will be ignored.\n");
+ }
+
+ if (option == HP5590_OPT_DOC_IN_ADF)
+ {
+ DBG(DBG_verbose, "Value of document-available indicator is read only. Setting of value will be ignored.\n");
+ }
if (option == HP5590_OPT_PREVIEW)
- {
- scanner->preview = *(SANE_Bool *) value;
- }
+ {
+ scanner->preview = *(SANE_Bool *) value;
+ }
+
+ if (option == HP5590_OPT_OVERWRITE_EOP_PIXEL)
+ {
+ scanner->overwrite_eop_pixel = *(SANE_Bool *) value;
+ }
+
+ if (option == HP5590_OPT_TRAILING_LINES_MODE)
+ {
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_RAW_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_RAW;
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_LAST_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_LAST;
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_RASTER_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_RASTER;
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_BLACK_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_BLACK;
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_WHITE_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_WHITE;
+ if (strcmp ((char *) value, (char *) TRAILING_LINES_MODE_COLOR_KEY) == 0)
+ scanner->eop_trailing_lines_mode = TRAILING_LINES_MODE_COLOR;
+ }
+
+ if (option == HP5590_OPT_TRAILING_LINES_COLOR)
+ {
+ scanner->eop_trailing_lines_color = *(SANE_Int *) value;
+ }
}
-
+
return SANE_STATUS_GOOD;
}
/******************************************************************************/
SANE_Status sane_get_parameters (SANE_Handle handle,
- SANE_Parameters * params)
+ SANE_Parameters * params)
{
- struct hp5590_scanner *scanner = handle;
- SANE_Status ret;
- unsigned int pixel_bits;
+ struct hp5590_scanner *scanner = handle;
+ SANE_Status ret;
+ unsigned int pixel_bits;
DBG (DBG_proc, "%s\n", __func__);
@@ -935,10 +1428,10 @@ SANE_Status sane_get_parameters (SANE_Handle handle,
return SANE_STATUS_INVAL;
ret = calc_image_params (scanner,
- (unsigned int *) &pixel_bits,
- (unsigned int *) &params->pixels_per_line,
- (unsigned int *) &params->bytes_per_line,
- (unsigned int *) &params->lines, NULL);
+ (unsigned int *) &pixel_bits,
+ (unsigned int *) &params->pixels_per_line,
+ (unsigned int *) &params->bytes_per_line,
+ (unsigned int *) &params->lines, NULL);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -964,11 +1457,11 @@ SANE_Status sane_get_parameters (SANE_Handle handle,
params->format = SANE_FRAME_RGB;
break;
default:
- DBG(0, "%s: Unknown depth\n", __func__);
+ DBG(DBG_err, "%s: Unknown depth\n", __func__);
return SANE_STATUS_INVAL;
}
-
+
DBG (DBG_proc, "format: %u, last_frame: %u, bytes_per_line: %u, "
"pixels_per_line: %u, lines: %u, depth: %u\n",
params->format, params->last_frame,
@@ -982,31 +1475,61 @@ SANE_Status sane_get_parameters (SANE_Handle handle,
SANE_Status
sane_start (SANE_Handle handle)
{
- struct hp5590_scanner *scanner = handle;
- SANE_Status ret;
- unsigned int bytes_per_line;
+ struct hp5590_scanner *scanner = handle;
+ SANE_Status ret;
+ unsigned int bytes_per_line;
DBG (DBG_proc, "%s\n", __func__);
if (!scanner)
return SANE_STATUS_INVAL;
+ /* Cleanup for all pages. */
+ if (scanner->eop_last_line_data)
+ {
+ /* Release last line data */
+ free (scanner->eop_last_line_data);
+ scanner->eop_last_line_data = NULL;
+ scanner->eop_last_line_data_rpos = 0;
+ }
+ if (scanner->one_line_read_buffer)
+ {
+ /* Release temporary line buffer. */
+ free (scanner->one_line_read_buffer);
+ scanner->one_line_read_buffer = NULL;
+ scanner->one_line_read_buffer_rpos = 0;
+ }
+ if (scanner->color_shift_line_buffer1)
+ {
+ /* Release line buffer1 for shifting colors. */
+ free (scanner->color_shift_line_buffer1);
+ scanner->color_shift_line_buffer1 = NULL;
+ scanner->color_shift_buffered_lines1 = 0;
+ }
+ if (scanner->color_shift_line_buffer2)
+ {
+ /* Release line buffer2 for shifting colors. */
+ free (scanner->color_shift_line_buffer2);
+ scanner->color_shift_line_buffer2 = NULL;
+ scanner->color_shift_buffered_lines2 = 0;
+ }
+
if ( scanner->scanning == SANE_TRUE
&& ( scanner->source == SOURCE_ADF
- || scanner->source == SOURCE_ADF_DUPLEX))
+ || scanner->source == SOURCE_ADF_DUPLEX))
{
DBG (DBG_verbose, "%s: Scanner is scanning, check if more data is available\n",
- __func__);
+ __func__);
ret = hp5590_is_data_available (scanner->dn, scanner->proto_flags);
if (ret == SANE_STATUS_GOOD)
- {
- DBG (DBG_verbose, "%s: More data is available\n", __func__);
- scanner->transferred_image_size = scanner->image_size;
- return SANE_STATUS_GOOD;
- }
+ {
+ DBG (DBG_verbose, "%s: More data is available\n", __func__);
+ scanner->transferred_image_size = scanner->image_size;
+ return SANE_STATUS_GOOD;
+ }
if (ret != SANE_STATUS_NO_DOCS)
- return ret;
+ return ret;
}
sane_cancel (handle);
@@ -1015,25 +1538,25 @@ sane_start (SANE_Handle handle)
{
enum button_status status;
for (;;)
- {
- ret = hp5590_read_buttons (scanner->dn,
- scanner->proto_flags,
- &status);
- if (ret != SANE_STATUS_GOOD)
- return ret;
-
- if (status == BUTTON_CANCEL)
- return SANE_STATUS_CANCELLED;
-
- if (status != BUTTON_NONE && status != BUTTON_POWER)
- break;
- sleep (1);
- }
+ {
+ ret = hp5590_read_buttons (scanner->dn,
+ scanner->proto_flags,
+ &status);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+
+ if (status == BUTTON_CANCEL)
+ return SANE_STATUS_CANCELLED;
+
+ if (status != BUTTON_NONE && status != BUTTON_POWER)
+ break;
+ usleep (100 * 1000);
+ }
}
- DBG (DBG_verbose, "Init scanner\n");
+ DBG (DBG_verbose, "Init scanner\n");
ret = hp5590_init_scanner (scanner->dn, scanner->proto_flags,
- NULL, SCANNER_NONE);
+ NULL, SCANNER_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1043,21 +1566,21 @@ sane_start (SANE_Handle handle)
DBG (DBG_verbose, "Wakeup\n");
ret = hp5590_select_source_and_wakeup (scanner->dn, scanner->proto_flags,
- scanner->source,
- scanner->extend_lamp_timeout);
+ scanner->source,
+ scanner->extend_lamp_timeout);
if (ret != SANE_STATUS_GOOD)
return ret;
-
+
ret = hp5590_set_scan_params (scanner->dn,
- scanner->proto_flags,
- scanner->info,
- scanner->tl_x * scanner->dpi,
- scanner->tl_y * scanner->dpi,
- (scanner->br_x - scanner->tl_x) * scanner->dpi,
- (scanner->br_y - scanner->tl_y) * scanner->dpi,
- scanner->dpi,
- scanner->depth, scanner->preview ? MODE_PREVIEW : MODE_NORMAL,
- scanner->source);
+ scanner->proto_flags,
+ scanner->info,
+ scanner->tl_x * scanner->dpi,
+ scanner->tl_y * scanner->dpi,
+ (scanner->br_x - scanner->tl_x) * scanner->dpi,
+ (scanner->br_y - scanner->tl_y) * scanner->dpi,
+ scanner->dpi,
+ scanner->depth, scanner->preview ? MODE_PREVIEW : MODE_NORMAL,
+ scanner->source);
if (ret != SANE_STATUS_GOOD)
{
hp5590_reset_scan_head (scanner->dn, scanner->proto_flags);
@@ -1065,8 +1588,8 @@ sane_start (SANE_Handle handle)
}
ret = calc_image_params (scanner, NULL, NULL,
- &bytes_per_line, NULL,
- &scanner->image_size);
+ &bytes_per_line, NULL,
+ &scanner->image_size);
if (ret != SANE_STATUS_GOOD)
{
hp5590_reset_scan_head (scanner->dn, scanner->proto_flags);
@@ -1079,35 +1602,35 @@ sane_start (SANE_Handle handle)
|| scanner->depth == DEPTH_COLOR_48)
{
DBG (1, "Color 24/48 bits: checking if image size is correctly "
- "aligned on number of colors\n");
+ "aligned on number of colors\n");
if (bytes_per_line % 3)
- {
- DBG (DBG_err, "Color 24/48 bits: image size doesn't lined up on number of colors (3) "
- "(image size: %u, bytes per line %u)\n",
- scanner->image_size, bytes_per_line);
+ {
+ DBG (DBG_err, "Color 24/48 bits: image size doesn't lined up on number of colors (3) "
+ "(image size: %llu, bytes per line %u)\n",
+ scanner->image_size, bytes_per_line);
hp5590_reset_scan_head (scanner->dn, scanner->proto_flags);
- return SANE_STATUS_INVAL;
- }
+ return SANE_STATUS_INVAL;
+ }
DBG (1, "Color 24/48 bits: image size is correctly aligned on number of colors "
- "(image size: %u, bytes per line %u)\n",
- scanner->image_size, bytes_per_line);
+ "(image size: %llu, bytes per line %u)\n",
+ scanner->image_size, bytes_per_line);
DBG (1, "Color 24/48 bits: checking if image size is correctly "
- "aligned on bytes per line\n");
+ "aligned on bytes per line\n");
if (scanner->image_size % bytes_per_line)
- {
- DBG (DBG_err, "Color 24/48 bits: image size doesn't lined up on bytes per line "
- "(image size: %u, bytes per line %u)\n",
- scanner->image_size, bytes_per_line);
+ {
+ DBG (DBG_err, "Color 24/48 bits: image size doesn't lined up on bytes per line "
+ "(image size: %llu, bytes per line %u)\n",
+ scanner->image_size, bytes_per_line);
hp5590_reset_scan_head (scanner->dn, scanner->proto_flags);
- return SANE_STATUS_INVAL;
- }
+ return SANE_STATUS_INVAL;
+ }
DBG (1, "Color 24/48 bits: image size correctly aligned on bytes per line "
- "(images size: %u, bytes per line: %u)\n",
- scanner->image_size, bytes_per_line);
+ "(images size: %llu, bytes per line: %u)\n",
+ scanner->image_size, bytes_per_line);
}
-
- DBG (DBG_verbose, "Final image size: %u\n", scanner->image_size);
+
+ DBG (DBG_verbose, "Final image size: %llu\n", scanner->image_size);
DBG (DBG_verbose, "Reverse calibration maps\n");
ret = hp5590_send_reverse_calibration_map (scanner->dn, scanner->proto_flags);
@@ -1125,14 +1648,23 @@ sane_start (SANE_Handle handle)
return ret;
}
+ if (scanner->adf_next_page_lines_data)
+ {
+ free (scanner->adf_next_page_lines_data);
+ scanner->adf_next_page_lines_data = NULL;
+ scanner->adf_next_page_lines_data_size = 0;
+ scanner->adf_next_page_lines_data_rpos = 0;
+ scanner->adf_next_page_lines_data_wpos = 0;
+ }
+
scanner->scanning = SANE_TRUE;
DBG (DBG_verbose, "Starting scan\n");
ret = hp5590_start_scan (scanner->dn, scanner->proto_flags);
/* Check for paper jam */
- if ( ret == SANE_STATUS_DEVICE_BUSY
+ if ( ret == SANE_STATUS_DEVICE_BUSY
&& ( scanner->source == SOURCE_ADF
- || scanner->source == SOURCE_ADF_DUPLEX))
+ || scanner->source == SOURCE_ADF_DUPLEX))
return SANE_STATUS_JAMMED;
if (ret != SANE_STATUS_GOOD)
@@ -1145,44 +1677,218 @@ sane_start (SANE_Handle handle)
}
/******************************************************************************/
-static SANE_Status
-convert_lineart (struct hp5590_scanner *scanner, SANE_Byte *data, SANE_Int size)
+static void
+invert_negative_colors (unsigned char *buf, unsigned int bytes_per_line, struct hp5590_scanner *scanner)
{
- SANE_Int i;
+ /* Invert lineart or negatives. */
+ int is_linear = (scanner->depth == DEPTH_BW);
+ int is_negative = (scanner->source == SOURCE_TMA_NEGATIVES);
+ if (is_linear ^ is_negative)
+ {
+ for (unsigned int k = 0; k < bytes_per_line; k++)
+ buf[k] ^= 0xff;
+ }
+}
- DBG (DBG_proc, "%s\n", __func__);
+/******************************************************************************/
+static SANE_Status
+convert_gray_and_lineart (struct hp5590_scanner *scanner, SANE_Byte *data, SANE_Int size)
+{
+ unsigned int pixels_per_line;
+ unsigned int pixel_bits;
+ unsigned int bytes_per_line;
+ unsigned int lines;
+ unsigned char *buf;
+ SANE_Status ret;
hp5590_assert (scanner != NULL);
hp5590_assert (data != NULL);
- /* Invert lineart */
- if (scanner->depth == DEPTH_BW)
+ if ( ! (scanner->depth == DEPTH_BW || scanner->depth == DEPTH_GRAY))
+ return SANE_STATUS_GOOD;
+
+ DBG (DBG_proc, "%s\n", __func__);
+
+ ret = calc_image_params (scanner,
+ &pixel_bits,
+ &pixels_per_line, &bytes_per_line,
+ NULL, NULL);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+
+ lines = size / bytes_per_line;
+
+ buf = data;
+ for (unsigned int i = 0; i < lines; buf += bytes_per_line, ++i)
{
- for (i = 0; i < size; i++)
- data[i] ^= 0xff;
+ if (! scanner->eop_last_line_data)
+ {
+ if (pixels_per_line > 0)
+ {
+ /* Test for last-line indicator pixel. If found, store last line
+ * and optionally overwrite indicator pixel with neighbor value.
+ */
+ unsigned int j = bytes_per_line - 1;
+ int eop_found = 0;
+ if (scanner->depth == DEPTH_GRAY)
+ {
+ eop_found = (buf[j] != 0);
+ if (scanner->overwrite_eop_pixel && (j > 0))
+ {
+ buf[j] = buf[j-1];
+ }
+ }
+ else if (scanner->depth == DEPTH_BW)
+ {
+ eop_found = (buf[j] != 0);
+ if (scanner->overwrite_eop_pixel && (j > 0))
+ {
+ buf[j] = (buf[j-1] & 0x01) ? 0xff : 0;
+ }
+ }
+
+ invert_negative_colors (buf, bytes_per_line, scanner);
+
+ if (eop_found && (! scanner->eop_last_line_data))
+ {
+ DBG (DBG_verbose, "Found end-of-page at line %u in reading block.\n", i);
+ scanner->eop_last_line_data = malloc(bytes_per_line);
+ if (! scanner->eop_last_line_data)
+ return SANE_STATUS_NO_MEM;
+
+ memcpy (scanner->eop_last_line_data, buf, bytes_per_line);
+ scanner->eop_last_line_data_rpos = 0;
+
+ /* Fill trailing line buffer with requested color. */
+ if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_RASTER)
+ {
+ /* Black-white raster. */
+ if (scanner->depth == DEPTH_BW)
+ {
+ memset (scanner->eop_last_line_data, 0xaa, bytes_per_line);
+ }
+ else
+ {
+ /* Gray. */
+ for (unsigned int k = 0; k < bytes_per_line; ++k)
+ {
+ scanner->eop_last_line_data[k] = (k & 1 ? 0xff : 0);
+ }
+ }
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_WHITE)
+ {
+ /* White. */
+ if (scanner->depth == DEPTH_BW)
+ {
+ memset (scanner->eop_last_line_data, 0x00, bytes_per_line);
+ }
+ else
+ {
+ memset (scanner->eop_last_line_data, 0xff, bytes_per_line);
+ }
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_BLACK)
+ {
+ /* Black. */
+ if (scanner->depth == DEPTH_BW)
+ {
+ memset (scanner->eop_last_line_data, 0xff, bytes_per_line);
+ }
+ else
+ {
+ memset (scanner->eop_last_line_data, 0x00, bytes_per_line);
+ }
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_COLOR)
+ {
+ if (scanner->depth == DEPTH_BW)
+ {
+ /* Black or white. */
+ memset (scanner->eop_last_line_data, scanner->eop_trailing_lines_color & 0x01 ? 0x00 : 0xff, bytes_per_line);
+ }
+ else
+ {
+ /* Gray value */
+ memset (scanner->eop_last_line_data, scanner->eop_trailing_lines_color & 0xff, bytes_per_line);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ DBG (DBG_verbose, "Trailing lines mode: line=%u, mode=%d, color=%u\n",
+ i, scanner->eop_trailing_lines_mode, scanner->eop_trailing_lines_color);
+
+ if ((scanner->source == SOURCE_ADF) || (scanner->source == SOURCE_ADF_DUPLEX))
+ {
+ /* We are in in ADF mode after last-line and store next page data
+ * to buffer.
+ */
+ if (! scanner->adf_next_page_lines_data)
+ {
+ unsigned int n_rest_lines = lines - i;
+ unsigned int buf_size = n_rest_lines * bytes_per_line;
+ scanner->adf_next_page_lines_data = malloc(buf_size);
+ if (! scanner->adf_next_page_lines_data)
+ return SANE_STATUS_NO_MEM;
+ scanner->adf_next_page_lines_data_size = buf_size;
+ scanner->adf_next_page_lines_data_rpos = 0;
+ scanner->adf_next_page_lines_data_wpos = 0;
+ DBG (DBG_verbose, "ADF between pages: Save n=%u next page lines in buffer.\n", n_rest_lines);
+ }
+ DBG (DBG_verbose, "ADF between pages: Store line %u of %u.\n", i, lines);
+ invert_negative_colors (buf, bytes_per_line, scanner);
+ memcpy (scanner->adf_next_page_lines_data + scanner->adf_next_page_lines_data_wpos, buf, bytes_per_line);
+ scanner->adf_next_page_lines_data_wpos += bytes_per_line;
+ }
+
+ if (scanner->eop_trailing_lines_mode != TRAILING_LINES_MODE_RAW)
+ {
+ /* Copy last line data or corresponding color over trailing lines
+ * data.
+ */
+ memcpy (buf, scanner->eop_last_line_data, bytes_per_line);
+ }
+ }
}
return SANE_STATUS_GOOD;
}
/******************************************************************************/
+static unsigned char
+get_checked (unsigned char *ptr, unsigned int i, unsigned int length)
+{
+ if (i < length)
+ {
+ return ptr[i];
+ }
+ DBG (DBG_details, "get from array out of range: idx=%u, size=%u\n", i, length);
+ return 0;
+}
+
+/******************************************************************************/
static SANE_Status
convert_to_rgb (struct hp5590_scanner *scanner, SANE_Byte *data, SANE_Int size)
{
unsigned int pixels_per_line;
+ unsigned int pixel_bits;
unsigned int bytes_per_color;
unsigned int bytes_per_line;
+ unsigned int bytes_per_line_limit;
unsigned int lines;
unsigned int i, j;
unsigned char *buf;
+ unsigned char *bufptr;
unsigned char *ptr;
- SANE_Status ret;
+ SANE_Status ret;
hp5590_assert (scanner != NULL);
hp5590_assert (data != NULL);
- if ( scanner->depth == DEPTH_BW
- || scanner->depth == DEPTH_GRAY)
+ if ( ! (scanner->depth == DEPTH_COLOR_24 || scanner->depth == DEPTH_COLOR_48))
return SANE_STATUS_GOOD;
DBG (DBG_proc, "%s\n", __func__);
@@ -1193,79 +1899,555 @@ convert_to_rgb (struct hp5590_scanner *scanner, SANE_Byte *data, SANE_Int size)
#endif
ret = calc_image_params (scanner,
- NULL,
- &pixels_per_line, &bytes_per_line,
- NULL, NULL);
+ &pixel_bits,
+ &pixels_per_line, &bytes_per_line,
+ NULL, NULL);
if (ret != SANE_STATUS_GOOD)
return ret;
lines = size / bytes_per_line;
- bytes_per_color = bytes_per_line / 3;
-
- DBG (DBG_verbose, "Length : %u\n", size);
+ bytes_per_color = (pixel_bits + 7) / 8;
+
+ bytes_per_line_limit = bytes_per_line;
+ if ((scanner->depth == DEPTH_COLOR_48) && (bytes_per_line_limit > 3))
+ {
+ /* Last-line indicator pixel has only 3 bytes instead of 6. */
+ bytes_per_line_limit -= 3;
+ }
+
+ DBG (DBG_verbose, "Length : %u\n", size);
DBG (DBG_verbose, "Converting row RGB to normal RGB\n");
DBG (DBG_verbose, "Bytes per line %u\n", bytes_per_line);
+ DBG (DBG_verbose, "Bytes per line limited %u\n", bytes_per_line_limit);
DBG (DBG_verbose, "Bytes per color %u\n", bytes_per_color);
+ DBG (DBG_verbose, "Pixels per line %u\n", pixels_per_line);
DBG (DBG_verbose, "Lines %u\n", lines);
- buf = malloc (bytes_per_line);
- if (!buf)
+ /* Use working buffer for color mapping. */
+ bufptr = malloc (size);
+ if (! bufptr)
return SANE_STATUS_NO_MEM;
+ memset (bufptr, 0, size);
+ buf = bufptr;
ptr = data;
- for (j = 0; j < lines; ptr += bytes_per_line, j++)
+ for (j = 0; j < lines; ptr += bytes_per_line_limit, buf += bytes_per_line, j++)
{
- memset (buf, 0, bytes_per_line);
for (i = 0; i < pixels_per_line; i++)
- {
- if (scanner->depth == DEPTH_COLOR_24)
- {
- /* R */
- buf[i*3] = ptr[i];
- /* G */
- buf[i*3+1] = ptr[i+bytes_per_color];
- /* B */
- buf[i*3+2] = ptr[i+bytes_per_color*2];
- }
- else
- {
- /* R */
- buf[i*6] = ptr[2*i+1];
- buf[i*6+1] = ptr[2*i];
- /* G */
- buf[i*6+2] = ptr[2*i+bytes_per_color+1];
- buf[i*6+3] = ptr[2*i+bytes_per_color];
- /* B */
- buf[i*6+4] = ptr[2*i+bytes_per_color*2+1];
- buf[i*6+5] = ptr[2*i+bytes_per_color*2];
- }
- }
-
- /* Invert pixels in case of TMA Negatives source has been selected */
- if (scanner->source == SOURCE_TMA_NEGATIVES)
{
- for (i = 0; i < bytes_per_line; i++)
- buf[i] ^= 0xff;
+ /* Color mapping from raw scanner data to RGB buffer. */
+ if (scanner->depth == DEPTH_COLOR_24)
+ {
+ /* R */
+ buf[i*3] = get_checked(ptr, i, bytes_per_line_limit);
+ /* G */
+ buf[i*3+1] = get_checked(ptr, i+pixels_per_line, bytes_per_line_limit);;
+ /* B */
+ buf[i*3+2] = get_checked(ptr, i+pixels_per_line*2, bytes_per_line_limit);
+ }
+ else if (scanner->depth == DEPTH_COLOR_48)
+ {
+ /* Note: The last-line indicator pixel uses only 24 bits, not 48.
+ *Blue uses offset of 2 bytes. Green swaps lo and hi.
+ */
+ /* R lo, hi*/
+ buf[i*6] = get_checked(ptr, 2*i+(pixels_per_line-1)*0+1, bytes_per_line_limit);
+ buf[i*6+1] = get_checked(ptr, 2*i+(pixels_per_line-1)*0+0, bytes_per_line_limit);
+ /* G lo, hi*/
+ buf[i*6+2] = get_checked(ptr, 2*i+(pixels_per_line-1)*2+0, bytes_per_line_limit);
+ buf[i*6+3] = get_checked(ptr, 2*i+(pixels_per_line-1)*2+1, bytes_per_line_limit);
+ /* B lo, hi*/
+ buf[i*6+4] = get_checked(ptr, 2*i+(pixels_per_line-1)*4+1+2, bytes_per_line_limit);
+ buf[i*6+5] = get_checked(ptr, 2*i+(pixels_per_line-1)*4+0+2, bytes_per_line_limit);
+ }
+ }
+
+ if (! scanner->eop_last_line_data)
+ {
+ if (pixels_per_line > 0)
+ {
+ /* Test for last-line indicator pixel on blue. If found, store
+ * last line and optionally overwrite indicator pixel with
+ * neighbor value.
+ */
+ i = pixels_per_line - 1;
+ int eop_found = 0;
+ if (scanner->depth == DEPTH_COLOR_24)
+ {
+ /* DBG (DBG_details, "BUF24: %u %u %u\n", buf[i*3], buf[i*3+1], buf[i*3+2]); */
+ eop_found = (buf[i*3+2] != 0);
+ if (scanner->overwrite_eop_pixel && (i > 0))
+ {
+ buf[i*3] = buf[(i-1)*3];
+ buf[i*3+1] = buf[(i-1)*3+1];
+ buf[i*3+2] = buf[(i-1)*3+2];
+ }
+ }
+ else if (scanner->depth == DEPTH_COLOR_48)
+ {
+ /* DBG (DBG_details, "BUF48: %u %u %u\n", buf[i*6+1], buf[i*6+3], buf[i*6+5]); */
+ eop_found = (buf[i*6+5] != 0);
+ if (scanner->overwrite_eop_pixel && (i > 0))
+ {
+ buf[i*6] = buf[(i-1)*6];
+ buf[i*6+1] = buf[(i-1)*6+1];
+ buf[i*6+2] = buf[(i-1)*6+2];
+ buf[i*6+3] = buf[(i-1)*6+3];
+ buf[i*6+4] = buf[(i-1)*6+4];
+ buf[i*6+5] = buf[(i-1)*6+5];
+ }
+ }
+
+ invert_negative_colors (buf, bytes_per_line, scanner);
+
+ if (eop_found && (! scanner->eop_last_line_data))
+ {
+ DBG (DBG_verbose, "Found end-of-page at line %u in reading block.\n", j);
+ scanner->eop_last_line_data = malloc(bytes_per_line);
+ if (! scanner->eop_last_line_data)
+ return SANE_STATUS_NO_MEM;
+
+ memcpy (scanner->eop_last_line_data, buf, bytes_per_line);
+ scanner->eop_last_line_data_rpos = 0;
+
+ /* Fill trailing line buffer with requested color. */
+ if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_RASTER)
+ {
+ /* Black-white raster. */
+ if (scanner->depth == DEPTH_COLOR_24)
+ {
+ for (unsigned int k = 0; k < bytes_per_line; ++k)
+ {
+ scanner->eop_last_line_data[k] = (k % 6 < 3 ? 0xff : 0);
+ }
+ }
+ else
+ {
+ /* Color48. */
+ for (unsigned int k = 0; k < bytes_per_line; ++k)
+ {
+ scanner->eop_last_line_data[k] = (k % 12 < 6 ? 0xff : 0);
+ }
+ }
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_WHITE)
+ {
+ memset (scanner->eop_last_line_data, 0xff, bytes_per_line);
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_BLACK)
+ {
+ memset (scanner->eop_last_line_data, 0x00, bytes_per_line);
+ }
+ else if (scanner->eop_trailing_lines_mode == TRAILING_LINES_MODE_COLOR)
+ {
+ /* RGB color value. */
+ int rgb[3];
+ rgb[0] = (scanner->eop_trailing_lines_color >> 16) & 0xff;
+ rgb[1] = (scanner->eop_trailing_lines_color >> 8) & 0xff;
+ rgb[2] = scanner->eop_trailing_lines_color & 0xff;
+ if (scanner->depth == DEPTH_COLOR_24)
+ {
+ for (unsigned int k = 0; k < bytes_per_line; ++k)
+ {
+ scanner->eop_last_line_data[k] = rgb[k % 3];
+ }
+ }
+ else
+ {
+ /* Color48. */
+ for (unsigned int k = 0; k < bytes_per_line; ++k)
+ {
+ scanner->eop_last_line_data[k] = rgb[(k % 6) >> 1];
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ DBG (DBG_verbose, "Trailing lines mode: line=%u, mode=%d, color=%u\n",
+ j, scanner->eop_trailing_lines_mode, scanner->eop_trailing_lines_color);
+
+ if ((scanner->source == SOURCE_ADF) || (scanner->source == SOURCE_ADF_DUPLEX))
+ {
+ /* We are in in ADF mode after last-line and store next page data
+ * to buffer.
+ */
+ if (! scanner->adf_next_page_lines_data)
+ {
+ unsigned int n_rest_lines = lines - j;
+ unsigned int buf_size = n_rest_lines * bytes_per_line;
+ scanner->adf_next_page_lines_data = malloc(buf_size);
+ if (! scanner->adf_next_page_lines_data)
+ return SANE_STATUS_NO_MEM;
+ scanner->adf_next_page_lines_data_size = buf_size;
+ scanner->adf_next_page_lines_data_rpos = 0;
+ scanner->adf_next_page_lines_data_wpos = 0;
+ DBG (DBG_verbose, "ADF between pages: Save n=%u next page lines in buffer.\n", n_rest_lines);
+ }
+ DBG (DBG_verbose, "ADF between pages: Store line %u of %u.\n", j, lines);
+ invert_negative_colors (buf, bytes_per_line, scanner);
+ memcpy (scanner->adf_next_page_lines_data + scanner->adf_next_page_lines_data_wpos, buf, bytes_per_line);
+ scanner->adf_next_page_lines_data_wpos += bytes_per_line;
+ }
+
+ if (scanner->eop_trailing_lines_mode != TRAILING_LINES_MODE_RAW)
+ {
+ /* Copy last line data or corresponding color over trailing lines
+ * data.
+ */
+ memcpy (buf, scanner->eop_last_line_data, bytes_per_line);
+ }
+ }
+ }
+ memcpy (data, bufptr, size);
+ free (bufptr);
+
+ return SANE_STATUS_GOOD;
+}
+
+/******************************************************************************/
+static void
+read_data_from_temporary_buffer(struct hp5590_scanner *scanner,
+ SANE_Byte * data, unsigned int max_length,
+ unsigned int bytes_per_line, SANE_Int *length)
+{
+ *length = 0;
+ if (scanner && scanner->one_line_read_buffer)
+ {
+ /* Copy scan data from temporary read buffer and return size copied data. */
+ /* Release buffer, when no data left. */
+ unsigned int rest_len;
+ rest_len = bytes_per_line - scanner->one_line_read_buffer_rpos;
+ rest_len = (rest_len < max_length) ? rest_len : max_length;
+ if (rest_len > 0)
+ {
+ memcpy (data, scanner->one_line_read_buffer + scanner->one_line_read_buffer_rpos, rest_len);
+ scanner->one_line_read_buffer_rpos += rest_len;
+ scanner->transferred_image_size -= rest_len;
+ *length = rest_len;
+ }
+
+ DBG (DBG_verbose, "Copy scan data from temporary buffer: length = %u, rest in buffer = %u.\n",
+ *length, bytes_per_line - scanner->one_line_read_buffer_rpos);
+
+ if (scanner->one_line_read_buffer_rpos >= bytes_per_line)
+ {
+ DBG (DBG_verbose, "Release temporary buffer.\n");
+ free (scanner->one_line_read_buffer);
+ scanner->one_line_read_buffer = NULL;
+ scanner->one_line_read_buffer_rpos = 0;
+ }
+ }
+}
+
+/******************************************************************************/
+static SANE_Status
+sane_read_internal (struct hp5590_scanner * scanner, SANE_Byte * data,
+ SANE_Int max_length, SANE_Int * length, unsigned int bytes_per_line)
+{
+ SANE_Status ret;
+
+ DBG (DBG_proc, "%s, length %u, left %llu\n",
+ __func__,
+ max_length,
+ scanner->transferred_image_size);
+
+ SANE_Int length_limited = 0;
+ *length = max_length;
+ if ((unsigned long long) *length > scanner->transferred_image_size)
+ *length = (SANE_Int) scanner->transferred_image_size;
+
+ /* Align reading size to bytes per line. */
+ *length -= *length % bytes_per_line;
+
+ if (scanner->depth == DEPTH_COLOR_48)
+ {
+ /* Note: The last-line indicator pixel uses only 24 bits (3 bytes), not
+ * 48 bits (6 bytes).
+ */
+ if (bytes_per_line > 3)
+ {
+ length_limited = *length - *length % (bytes_per_line - 3);
+ }
+ }
+
+ DBG (DBG_verbose, "Aligning requested size to bytes per line "
+ "(requested: %d, aligned: %u, limit_for_48bit: %u)\n",
+ max_length, *length, length_limited);
+
+ if (max_length <= 0)
+ {
+ DBG (DBG_verbose, "Buffer too small for one scan line. Need at least %u bytes per line.\n",
+ bytes_per_line);
+ scanner->scanning = SANE_FALSE;
+ return SANE_STATUS_UNSUPPORTED;
+ }
+
+ if (scanner->one_line_read_buffer)
+ {
+ /* Copy scan data from temporary read buffer. */
+ read_data_from_temporary_buffer (scanner, data, max_length, bytes_per_line, length);
+ if (*length > 0)
+ {
+ DBG (DBG_verbose, "Return %d bytes, left %llu bytes.\n", *length, scanner->transferred_image_size);
+ return SANE_STATUS_GOOD;
+ }
+ }
+
+ /* Buffer to return scanned data. We need at least space for one line to
+ * simplify color processing and last-line detection. If call buffer is too
+ * small, use temporary read buffer for reading one line instead.
+ */
+ SANE_Byte * scan_data;
+ SANE_Int scan_data_length;
+ scan_data = data;
+ scan_data_length = *length;
+
+ /* Note, read length is shorter in 48bit mode. */
+ SANE_Int length_for_read = length_limited ? length_limited : scan_data_length;
+ if (length_for_read == 0)
+ {
+ /* Call buffer is too small for one line. Use temporary read buffer
+ * instead.
+ */
+ if (! scanner->one_line_read_buffer)
+ {
+ scanner->one_line_read_buffer = malloc (bytes_per_line);
+ if (! scanner->one_line_read_buffer)
+ return SANE_STATUS_NO_MEM;
+ memset (scanner->one_line_read_buffer, 0, bytes_per_line);
}
- memcpy (ptr, buf, bytes_per_line);
+ DBG (DBG_verbose, "Call buffer too small for one scan line. Use temporary read buffer for one line with %u bytes.\n",
+ bytes_per_line);
+
+ /* Scan and process next line in temporary buffer. */
+ scan_data = scanner->one_line_read_buffer;
+ scan_data_length = bytes_per_line;
+ length_for_read = bytes_per_line;
+ if (scanner->depth == DEPTH_COLOR_48)
+ {
+ /* The last-line indicator pixel uses only 24 bits (3 bytes), not 48
+ * bits (6 bytes).
+ */
+ if (length_for_read > 3)
+ {
+ length_for_read -= 3;
+ }
+ }
}
- free (buf);
+ int read_from_scanner = 1;
+ if ((scanner->source == SOURCE_ADF) || (scanner->source == SOURCE_ADF_DUPLEX))
+ {
+ if (scanner->eop_last_line_data)
+ {
+ /* Scanner is in ADF mode between last-line of previous page and
+ * start of next page.
+ * Fill remaining lines with last-line data.
+ */
+ unsigned int wpos = 0;
+ while (wpos < (unsigned int) scan_data_length)
+ {
+ unsigned int n1 = scan_data_length - wpos;
+ unsigned int n2 = bytes_per_line - scanner->eop_last_line_data_rpos;
+ n1 = (n1 < n2) ? n1 : n2;
+ memcpy (scan_data + wpos, scanner->eop_last_line_data + scanner->eop_last_line_data_rpos, n1);
+ wpos += n1;
+ scanner->eop_last_line_data_rpos += n1;
+ if (scanner->eop_last_line_data_rpos >= bytes_per_line)
+ scanner->eop_last_line_data_rpos = 0;
+ }
+ read_from_scanner = (wpos == 0);
+ DBG (DBG_verbose, "ADF use last-line data, wlength=%u, length=%u\n", wpos, scan_data_length);
+ }
+ else if (scanner->adf_next_page_lines_data)
+ {
+ /* Scanner is in ADF mode at start of next page and already some next
+ * page data is available from earlier read operation. Return this
+ * data.
+ */
+ unsigned int wpos = 0;
+ while ((wpos < (unsigned int) scan_data_length) &&
+ (scanner->adf_next_page_lines_data_rpos < scanner->adf_next_page_lines_data_size))
+ {
+ unsigned int n1 = scan_data_length - wpos;
+ unsigned int n2 = scanner->adf_next_page_lines_data_size - scanner->adf_next_page_lines_data_rpos;
+ n1 = (n1 < n2) ? n1 : n2;
+ memcpy (scan_data + wpos, scanner->adf_next_page_lines_data + scanner->adf_next_page_lines_data_rpos, n1);
+ wpos += n1;
+ scanner->adf_next_page_lines_data_rpos += n1;
+ if (scanner->adf_next_page_lines_data_rpos >= scanner->adf_next_page_lines_data_size)
+ {
+ free (scanner->adf_next_page_lines_data);
+ scanner->adf_next_page_lines_data = NULL;
+ scanner->adf_next_page_lines_data_size = 0;
+ scanner->adf_next_page_lines_data_rpos = 0;
+ scanner->adf_next_page_lines_data_wpos = 0;
+ }
+ }
+ scan_data_length = wpos;
+ read_from_scanner = (wpos == 0);
+ DBG (DBG_verbose, "ADF use next-page data, wlength=%u, length=%u\n", wpos, scan_data_length);
+ }
+ }
+
+ if (read_from_scanner)
+ {
+ /* Read data from scanner. */
+ ret = hp5590_read (scanner->dn, scanner->proto_flags,
+ scan_data, length_for_read,
+ scanner->bulk_read_state);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ scanner->scanning = SANE_FALSE;
+ return ret;
+ }
+
+ /* Look for last-line indicator pixels in convert functions.
+ * If found:
+ * - Overwrite indicator pixel with neighboring color (optional).
+ * - Save last line data for later use.
+ */
+ ret = convert_to_rgb (scanner, scan_data, scan_data_length);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ scanner->scanning = SANE_FALSE;
+ return ret;
+ }
+
+ ret = convert_gray_and_lineart (scanner, scan_data, scan_data_length);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
+
+ if (data == scan_data)
+ {
+ /* Scanned to call buffer. */
+ scanner->transferred_image_size -= scan_data_length;
+ *length = scan_data_length;
+ }
+ else
+ {
+ /* Scanned to temporary read buffer. */
+ if (scanner->one_line_read_buffer)
+ {
+ /* Copy scan data from temporary read buffer. */
+ read_data_from_temporary_buffer (scanner, data, max_length, scan_data_length, length);
+ }
+ else
+ {
+ *length = 0;
+ }
+ }
+
+ DBG (DBG_verbose, "Return %d bytes, left %llu bytes\n", *length, scanner->transferred_image_size);
return SANE_STATUS_GOOD;
}
+/******************************************************************************
+ * Copy at maximum the last n lines from the src buffer to the begin of the dst
+ * buffer.
+ * Return number of lines copied.
+ */
+static SANE_Int
+copy_n_last_lines(SANE_Byte * src, SANE_Int src_len, SANE_Byte * dst, SANE_Int n, unsigned int bytes_per_line)
+{
+ DBG (DBG_proc, "%s\n", __func__);
+ SANE_Int n_copy = MY_MIN(src_len, n);
+ SANE_Byte * src1 = src + (src_len - n_copy) * bytes_per_line;
+ memcpy (dst, src1, n_copy * bytes_per_line);
+ return n_copy;
+}
+
+/******************************************************************************
+ * Copy the color values from line - delta_lines to line.
+ * buffer2 : Source and target buffer.
+ * buffer1 : Only source buffer. Contains lines scanned before lines in buffer1.
+ * color_idx : Index of color to be copied (0..2).
+ * delta_lines : color shift.
+ * color_48 : True = 2 byte , false = 1 byte per color.
+ */
+static void
+shift_color_lines(SANE_Byte * buffer2, SANE_Int n_lines2, SANE_Byte * buffer1, SANE_Int n_lines1, SANE_Int color_idx, SANE_Int delta_lines, SANE_Bool color_48, unsigned int bytes_per_line)
+{
+ DBG (DBG_proc, "%s\n", __func__);
+ for (SANE_Int i = n_lines2 - 1; i >= 0; --i) {
+ SANE_Byte * dst = buffer2 + i * bytes_per_line;
+ SANE_Int ii = i - delta_lines;
+ SANE_Byte * src = NULL;
+ SANE_Int source_color_idx = color_idx;
+ if (ii >= 0) {
+ /* Read from source and target buffer. */
+ src = buffer2 + ii * bytes_per_line;
+ } else {
+ ii += n_lines1;
+ if (ii >= 0) {
+ /* Read from source only buffer. */
+ src = buffer1 + ii * bytes_per_line;
+ } else {
+ /* Read other color from source position. */
+ src = dst;
+ source_color_idx = 2;
+ }
+ }
+ /* Copy selected color values. */
+ SANE_Int step = color_48 ? 2 : 1;
+ SANE_Int stride = 3 * step;
+ for (unsigned int pos = 0; pos < bytes_per_line; pos += stride) {
+ SANE_Int p1 = pos + step * source_color_idx;
+ SANE_Int p2 = pos + step * color_idx;
+ dst[p2] = src[p1];
+ if (color_48) {
+ dst[p2 + 1] = src[p1 + 1];
+ }
+ }
+ }
+}
+
+/******************************************************************************
+ * Append all lines from buffer2 to the end of buffer1 and keep max_lines last
+ * lines.
+ * buffer2 : Source line buffer.
+ * buffer1 : Target line buffer. Length will be adjusted.
+ * max_lines : Max number of lines in buffer1.
+ */
+static void
+append_and_move_lines(SANE_Byte * buffer2, SANE_Int n_lines2, SANE_Byte * buffer1, unsigned int * n_lines1_ptr, SANE_Int max_lines, unsigned int bytes_per_line)
+{
+ DBG (DBG_proc, "%s\n", __func__);
+ SANE_Int rest1 = max_lines - *n_lines1_ptr;
+ SANE_Int copy2 = MY_MIN(n_lines2, max_lines);
+ if (copy2 > rest1) {
+ SANE_Int shift1 = *n_lines1_ptr + copy2 - max_lines;
+ SANE_Int blen = MY_MIN(max_lines - shift1, (SANE_Int) *n_lines1_ptr);
+ SANE_Byte * pdst = buffer1;
+ SANE_Byte * psrc = pdst + shift1 * bytes_per_line;
+ for (SANE_Int i = 0; i < blen; ++i) {
+ memcpy (pdst, psrc, bytes_per_line);
+ pdst += bytes_per_line;
+ psrc += bytes_per_line;
+ }
+ *n_lines1_ptr -= shift1;
+ }
+ SANE_Int n_copied = copy_n_last_lines(buffer2, n_lines2, buffer1 + *n_lines1_ptr * bytes_per_line, copy2, bytes_per_line);
+ *n_lines1_ptr += n_copied;
+}
+
+
/******************************************************************************/
SANE_Status
sane_read (SANE_Handle handle, SANE_Byte * data,
- SANE_Int max_length, SANE_Int * length)
+ SANE_Int max_length, SANE_Int * length)
{
- struct hp5590_scanner *scanner = handle;
- SANE_Status ret;
+ struct hp5590_scanner *scanner = handle;
+ SANE_Status ret;
- DBG (DBG_proc, "%s, length %u, left %u\n",
+ DBG (DBG_proc, "%s, length %u, left %llu\n",
__func__,
max_length,
scanner->transferred_image_size);
@@ -1283,7 +2465,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
ret = hp5590_inc_scan_count (scanner->dn, scanner->proto_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
/* Don't free bulk read state, some bytes could be left
* for the next images from ADF
@@ -1295,70 +2477,78 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
{
ret = hp5590_low_init_bulk_read_state (&scanner->bulk_read_state);
if (ret != SANE_STATUS_GOOD)
- {
- scanner->scanning = SANE_FALSE;
- return ret;
- }
+ {
+ scanner->scanning = SANE_FALSE;
+ return ret;
+ }
}
- *length = max_length;
- if (*length > scanner->transferred_image_size)
- *length = scanner->transferred_image_size;
-
- if ( scanner->depth == DEPTH_COLOR_24
- || scanner->depth == DEPTH_COLOR_48)
- {
- unsigned int bytes_per_line;
- ret = calc_image_params (scanner,
- NULL, NULL,
- &bytes_per_line,
- NULL, NULL);
- if (ret != SANE_STATUS_GOOD)
- return ret;
+ unsigned int bytes_per_line;
+ ret = calc_image_params (scanner,
+ NULL, NULL,
+ &bytes_per_line,
+ NULL, NULL);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
- *length -= *length % bytes_per_line;
- DBG (2, "Aligning requested size to bytes per line "
- "(requested: %u, aligned: %u)\n",
- max_length, *length);
- }
+ ret = sane_read_internal(scanner, data, max_length, length, bytes_per_line);
- ret = hp5590_read (scanner->dn, scanner->proto_flags,
- data, *length, scanner->bulk_read_state);
- if (ret != SANE_STATUS_GOOD)
+ if ((ret == SANE_STATUS_GOOD) && (scanner->dpi == 2400) &&
+ ((scanner->depth == DEPTH_COLOR_48) || (scanner->depth == DEPTH_COLOR_24)))
{
- scanner->scanning = SANE_FALSE;
- return ret;
- }
+ /* Correct color shift bug for 2400 dpi.
+ * Note: 2400 dpi only works in color mode. Grey mode and lineart seem to
+ * fail.
+ * Align colors by shifting B channel by 48 lines and G channel by 24
+ * lines.
+ */
+ const SANE_Int offset_max = 48;
+ const SANE_Int offset_part = 24;
+ SANE_Bool color_48 = (scanner->depth == DEPTH_COLOR_48);
- scanner->transferred_image_size -= *length;
+ if (! scanner->color_shift_line_buffer1)
+ {
+ scanner->color_shift_buffered_lines1 = 0;
+ scanner->color_shift_line_buffer1 = malloc (bytes_per_line * offset_max);
+ if (! scanner->color_shift_line_buffer1)
+ return SANE_STATUS_NO_MEM;
+ memset (scanner->color_shift_line_buffer1, 0, bytes_per_line * offset_max);
+ }
+ if (! scanner->color_shift_line_buffer2)
+ {
+ scanner->color_shift_buffered_lines2 = 0;
+ scanner->color_shift_line_buffer2 = malloc (bytes_per_line * offset_max);
+ if (! scanner->color_shift_line_buffer2)
+ return SANE_STATUS_NO_MEM;
+ memset (scanner->color_shift_line_buffer2, 0, bytes_per_line * offset_max);
+ }
- ret = convert_to_rgb (scanner, data, *length);
- if (ret != SANE_STATUS_GOOD)
- {
- scanner->scanning = SANE_FALSE;
- return ret;
- }
+ SANE_Int n_lines = *length / bytes_per_line;
+ scanner->color_shift_buffered_lines2 = MY_MIN(n_lines, offset_max);
+ copy_n_last_lines(data, n_lines, scanner->color_shift_line_buffer2, scanner->color_shift_buffered_lines2, bytes_per_line);
- ret = convert_lineart (scanner, data, *length);
- if (ret != SANE_STATUS_GOOD)
- return ret;
+ shift_color_lines(data, n_lines, scanner->color_shift_line_buffer1, scanner->color_shift_buffered_lines1, 1, offset_part, color_48, bytes_per_line);
+ shift_color_lines(data, n_lines, scanner->color_shift_line_buffer1, scanner->color_shift_buffered_lines1, 0, offset_max, color_48, bytes_per_line);
- return SANE_STATUS_GOOD;
+ append_and_move_lines(scanner->color_shift_line_buffer2, scanner->color_shift_buffered_lines2, scanner->color_shift_line_buffer1, &(scanner->color_shift_buffered_lines1), offset_max, bytes_per_line);
+ }
+
+ return ret;
}
/******************************************************************************/
void
sane_cancel (SANE_Handle handle)
{
- struct hp5590_scanner *scanner = handle;
- SANE_Status ret;
+ struct hp5590_scanner *scanner = handle;
+ SANE_Status ret;
DBG (DBG_proc, "%s\n", __func__);
scanner->scanning = SANE_FALSE;
if (scanner->dn < 0)
- return;
+ return;
hp5590_low_free_bulk_read_state (&scanner->bulk_read_state);
@@ -1371,7 +2561,7 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle __sane_unused__ handle,
- SANE_Bool __sane_unused__ non_blocking)
+ SANE_Bool __sane_unused__ non_blocking)
{
DBG (DBG_proc, "%s\n", __func__);
@@ -1381,7 +2571,7 @@ sane_set_io_mode (SANE_Handle __sane_unused__ handle,
/******************************************************************************/
SANE_Status
sane_get_select_fd (SANE_Handle __sane_unused__ handle,
- SANE_Int __sane_unused__ * fd)
+ SANE_Int __sane_unused__ * fd)
{
DBG (DBG_proc, "%s\n", __func__);
diff --git a/backend/hp5590_cmds.c b/backend/hp5590_cmds.c
index 06fd91a..1eb96d3 100644
--- a/backend/hp5590_cmds.c
+++ b/backend/hp5590_cmds.c
@@ -1,6 +1,8 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007 Ilia Sotnikov <hostcc@gmail.com>
HP ScanJet 4570c support by Markham Thomas
+ ADF page detection and high DPI fixes by Bernard Badeer
+ scanbd integration by Damiano Scaramuzza and Bernard Badeer
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -71,9 +73,9 @@ hp5590_models[] = {
SCANNER_HP5550,
0x03f0, 0x1205, "SILITEKIPenguin",
"4500C/5550C", "Workgroup scanner",
- PF_NO_USB_IN_USB_ACK /* These devices need no
- * acknowledgement after USB-in-USB
- * commands */
+ PF_NO_USB_IN_USB_ACK /* These devices need no
+ * acknowledgment after USB-in-USB
+ * commands */
},
{
SCANNER_HP5590,
@@ -90,35 +92,36 @@ hp5590_models[] = {
};
/* Debug levels */
-#define DBG_err 0
-#define DBG_proc 10
-#define DBG_cmds 40
+#define DBG_err 0
+#define DBG_proc 10
+#define DBG_verbose 20
+#define DBG_cmds 40
#define hp5590_cmds_assert(exp) if(!(exp)) { \
DBG (DBG_err, "Assertion '%s' failed at %s:%u\n", #exp, __FILE__, __LINE__);\
return SANE_STATUS_INVAL; \
}
-#define WAKEUP_TIMEOUT 90
+#define WAKEUP_TIMEOUT 90
/* First byte of init (0x12 cmd) response */
-#define INIT_FLAG_TMA 1 << 0
-#define INIT_FLAG_ADF 1 << 1
-#define INIT_FLAG_LCD 1 << 3
+#define INIT_FLAG_TMA 1 << 0
+#define INIT_FLAG_ADF 1 << 1
+#define INIT_FLAG_LCD 1 << 3
/* Power (0x24 cmd) */
-#define POWER_FLAG_ON 1 << 1
+#define POWER_FLAG_ON 1 << 1
/* ADF (0x03 cmd) */
-#define FLAG_ADF_EMPTY 1 << 1
+#define FLAG_ADF_EMPTY 1 << 1
-#define PART_NUMBER_LEN 10
+#define PART_NUMBER_LEN 10
-#define REVERSE_MAP_LEN 128 * 1024 / sizeof(uint16_t)
-#define FORWARD_MAP_LEN 128 * 1024 / sizeof(uint16_t)
+#define REVERSE_MAP_LEN 128 * 1024 / sizeof(uint16_t)
+#define FORWARD_MAP_LEN 128 * 1024 / sizeof(uint16_t)
/* Button flags */
-/* From left to rigth */
+/* From left to right */
/* 1: Power
* 1: Scan
* 2: Collect
@@ -129,48 +132,49 @@ hp5590_models[] = {
* 8: Mode
* 9: Cancel
*/
-#define BUTTON_FLAG_EMAIL 1 << 15
-#define BUTTON_FLAG_COPY 1 << 14
-#define BUTTON_FLAG_DOWN 1 << 13
-#define BUTTON_FLAG_MODE 1 << 12
-#define BUTTON_FLAG_UP 1 << 11
-#define BUTTON_FLAG_FILE 1 << 9
-#define BUTTON_FLAG_POWER 1 << 5
-#define BUTTON_FLAG_SCAN 1 << 2
-#define BUTTON_FLAG_COLLECT 1 << 1
-#define BUTTON_FLAG_CANCEL 1 << 0
-
-#define CMD_INIT 0x0012
-#define CMD_EEPROM_ADDR 0x00f2
-#define CMD_EEPROM_READ 0x0bf0
-#define CMD_EEPROM_WRITE 0x0bf1
-#define CMD_DATA_STATUS 0x0001
-#define CMD_STOP_SCAN 0x011b
-#define CMD_CONTROL_LAMP 0x00c0
-#define CMD_POWER_STATUS 0x0024
-#define CMD_SELECT_SOURCE 0x00d6
-#define CMD_MISC_STATUS 0x0003
-#define CMD_LOCK_UNLOCK 0x0000
-#define CMD_SET_BASE_DPI 0x0015
-#define CMD_SET_COLOR_MAP 0x0240
-#define CMD_SET_SCAN_PARAMS 0x0025
-#define CMD_GET_IMAGE_PARAMS 0x0034
-#define CMD_START_SCAN 0x051b
-#define CMD_BUTTON_STATUS 0x0020
+#define BUTTON_FLAG_EMAIL 1 << 15
+#define BUTTON_FLAG_COPY 1 << 14
+#define BUTTON_FLAG_DOWN 1 << 13
+#define BUTTON_FLAG_MODE 1 << 12
+#define BUTTON_FLAG_UP 1 << 11
+#define BUTTON_FLAG_FILE 1 << 9
+#define BUTTON_FLAG_POWER 1 << 5
+#define BUTTON_FLAG_SCAN 1 << 2
+#define BUTTON_FLAG_COLLECT 1 << 1
+#define BUTTON_FLAG_CANCEL 1 << 0
+
+#define CMD_INIT 0x0012
+#define CMD_EEPROM_ADDR 0x00f2
+#define CMD_EEPROM_READ 0x0bf0
+#define CMD_EEPROM_WRITE 0x0bf1
+#define CMD_DATA_STATUS 0x0001
+#define CMD_STOP_SCAN 0x011b
+#define CMD_CONTROL_LAMP 0x00c0
+#define CMD_POWER_STATUS 0x0024
+#define CMD_SELECT_SOURCE 0x00d6
+#define CMD_MISC_STATUS 0x0003
+#define CMD_LOCK_UNLOCK 0x0000
+#define CMD_SET_BASE_DPI 0x0015
+#define CMD_SET_COLOR_MAP 0x0240
+#define CMD_SET_SCAN_PARAMS 0x0025
+#define CMD_GET_IMAGE_PARAMS 0x0034
+#define CMD_START_SCAN 0x051b
+#define CMD_BUTTON_STATUS 0x0020
+#define CMD_LCD_STATUS 0x0021
struct init_resp
{
- uint8_t flags; /* bit 0 - TMA, bit 1 - ADF, bit 3 - LCD present */
- uint8_t id[15]; /* SILITEKPenguin */
- uint8_t pad1[9]; /* 00 00 00 00 00 00 00 00 00 */
- uint8_t version[5]; /* 0.0.67 */
- uint16_t max_dpi_x; /* 09 60 = 2400 */
- uint16_t max_dpi_y; /* 09 60 = 2400 */
- uint16_t max_pixels_x; /* 4F B0 = 20400 (20400 / 2400 = 8.5") */
- uint16_t max_pixels_y; /* 6D E0 = 28128 (28128 / 2400 = 11.72") */
- uint8_t pad2[8]; /* 00 00 00 00 00 00 00 00 */
- uint16_t motor_param_normal; /* 00 64 = 100 */
- uint16_t motor_param_max; /* 03 E8 = 1000 */
+ uint8_t flags; /* bit 0 - TMA, bit 1 - ADF, bit 3 - LCD present */
+ uint8_t id[15]; /* SILITEKPenguin */
+ uint8_t pad1[9]; /* 00 00 00 00 00 00 00 00 00 */
+ uint8_t version[5]; /* 0.0.67 */
+ uint16_t max_dpi_x; /* 09 60 = 2400 */
+ uint16_t max_dpi_y; /* 09 60 = 2400 */
+ uint16_t max_pixels_x; /* 4F B0 = 20400 (20400 / 2400 = 8.5") */
+ uint16_t max_pixels_y; /* 6D E0 = 28128 (28128 / 2400 = 11.72") */
+ uint8_t pad2[8]; /* 00 00 00 00 00 00 00 00 */
+ uint16_t motor_param_normal; /* 00 64 = 100 */
+ uint16_t motor_param_max; /* 03 E8 = 1000 */
} __attribute__ ((packed));
struct power_resp
@@ -179,10 +183,10 @@ struct power_resp
uint16_t unk1;
} __attribute__ ((packed));
-/*
+/*
* 215.9 mm x 297.2 mm
* 8.5" x 11.72"
- *
+ *
* 50 : 425.00 x 586.00
* 75 : 637.50 x 879.50
* 100 : 850.00 x 1172.00
@@ -193,264 +197,264 @@ struct power_resp
* 600 : 5100.00 x 7032.00 (base DPI)
*/
-#define SCAN_PARAMS_SOURCE_TMA_NEGATIVES 1 << 0
-#define SCAN_PARAMS_SOURCE_TMA_SLIDES 1 << 1
-#define SCAN_PARAMS_SOURCE_ADF 1 << 2
-#define SCAN_PARAMS_SOURCE_FLATBED 1 << 3
-#define SCAN_PARAMS_SOURCE_SIMPLEX 1 << 4
-#define SCAN_PARAMS_SOURCE_DUPLEX 1 << 6
+#define SCAN_PARAMS_SOURCE_TMA_NEGATIVES 1 << 0
+#define SCAN_PARAMS_SOURCE_TMA_SLIDES 1 << 1
+#define SCAN_PARAMS_SOURCE_ADF 1 << 2
+#define SCAN_PARAMS_SOURCE_FLATBED 1 << 3
+#define SCAN_PARAMS_SOURCE_SIMPLEX 1 << 4
+#define SCAN_PARAMS_SOURCE_DUPLEX 1 << 6
struct scan_params
{
- uint8_t source; /*
- * TMA Negatives : 11 = 17
- * TMA Slides : 12 = 18
- * ADF : 14 = 20
- * Flatbed : 18 = 24
- * ADF Duplex : 54 = 84
- */
-
- uint16_t dpi_x; /*
- * 50 : 00 64 = 100
- * 75 : 00 64 = 100
- * 100 : 00 64 = 100
- * 150 : 00 c8 = 200
- * 200 : 00 c8 = 200
- * 300 : 01 2c = 300
- * 400 : 02 58 = 600
- * 600 : 02 58 = 600
- * 1200 : 04 b0 = 1200
- */
-
- uint16_t dpi_y; /*
- * 50 : 00 64 = 100
- * 75 : 00 64 = 100
- * 100 : 00 64 = 100
- * 150 : 00 c8 = 200
- * 200 : 00 c8 = 200
- * 300 : 01 2c = 300
- * 400 : 02 58 = 600
- * 600 : 02 58 = 600
- * 1200 : 04 b0 = 1200
- */
-
- uint16_t top_x; /*
- * pixels * (Base DPI / current DPI)
- * 00 00, 01 6e = 366 (x = 425 - 302 = 123)
- * 04 b0 = 1200 (x = 425 - 24 = 401)
- */
-
- uint16_t top_y; /*
- * pixels * (Base DPI / current DPI)
- * 00 00, 06 99 = 1689 (y = 585 - 21 = 564)
- */
-
- uint16_t size_x; /* X pixels in Base DPI (CMD 15)
- * 50 : 04f8 = 1272 ; 150
- * 75 : 04f8 = 1272 ; 150
- * 100 : 04f8 = 1272 ; 150
- * 100 TMA : 00fc = 252 ; 150
- * 150 : 09f6 = 2550, 09f0 = 2544, 09f4 = 2548 ; 300
- * 200 : 09f0 = 2544, 09f6 = 2550, 09f6 = 2550 ; 300
- * 300 : 09f6 = 2550, 09f0 = 2544, 09f4 = 2548 ; 300
- * 300 TMA : 01fc = 508 ; 300
- * 400 : 13ec = 5100 ; 600
- * 600 : 13e8 = 5096, 13ec = 5100 ,13ec = 5100 ; 600
- * 1200 : 27a8 = 10152 ; 1200
- */
-
- uint16_t size_y; /* Y pixels in Base DPI (CMD 15)
- * 50 : 06db = 1755 ; 150
- * 75 : 06da = 1754 ; 150
- * 100 : 06db = 1755 ; 150
- * 100 TMA : 0384 = 900 ; 150
- * 150 : 0db6 = 3510 ; 300
- * 200 : 0db6 = 3510 ; 300
- * 300 : 0db6 = 3510 ; 300
- * 300 TMA : 0708 = 1800 ; 300
- * 400 : 1b6c = 7020 ; 600
- * 600 : 1b6c = 7020 ; 600
- * 1200 : 36d8 = 14040 ; 1200
- */
-
- uint16_t unk1; /* 00 80 */
-
- uint16_t bw_gray_flag; /*
- * 00 40 - bw (ntsc gray)/gray,
- * 00 20 - bw (by green band),
- * 00 10 - bw (by red band),
- * 00 30 - bw (by blue band),
- * 00 00 - color
- */
-
- uint8_t pixel_bits; /*
- * bw 50/75/150/400 : 08 = 8
- * bw 100/200/300/600/1200 : 01 = 1
- * gray 50/75/100/150/200/400/600 : 08 = 8
- * color 24 bit 50/75/100/150/200/400/600 : 18 = 24
- * color 48 bit 100/200 : 30 = 48
- */
-
- uint16_t flags; /*
- * 50/75/100/150/200/300 : e8 40 = 59456
- * 400/600/1200 : c8 40 = 51264
- */
-
- uint16_t motor_param1; /*
- * 00 64 = 100
- */
- uint16_t motor_param2; /*
- * 00 64 = 100 - ADF, Flatbed, TMA slides
- * 00 c8 = 200 - TMA Negatives
- */
- uint16_t motor_param3; /*
- * 00 64 = 100 - ADF, Flatbed, TMA slides
- * 01 90 = 400 - TMA negatives
- */
- uint32_t pad1; /* 00 00 00 00 */
- uint16_t pad2; /* 00 00 */
- uint8_t mode; /* 00 - normal scan, 04 - preview scan */
- uint16_t pad3; /* 00 00 */
-
- uint16_t line_width; /* Based on current .dpi_x
- * bw 50 : 03 50 = 848
- * gray 50 : 03 50 = 848
- * color 50 : 09 f0 = 2544 (3 * gray)
- *
- * bw 75 : 03 50 = 848
- * gray 75 : 03 50 = 848
- * color 75 : 09 f0 = 2544 (3 * gray)
- *
- * bw 100 : 00 6a = 106
- * gray 100 : 03 50 = 848 (8 * bw)
- * color 100(24) : 09 f0 = 2544 (3 * gray)
- * color 100(48) : 13 e0 = 5088 (2 * color 24)
- * color 100(48) TMA : 03 f0 = 1008
- *
- * bw 150 : 06 a4 = 1700
- * gray 150 : 06 a4 = 1700
- * color 150 : 13 ec = 5100 (3 * gray)
- *
- * bw 200 : 00 d4 = 212
- * gray 200 : 06 a4 = 1700 (8 * bw)
- * color 200(24) : 13 ec = 5100 (3 * gray)
- * color 200(48) : 27 a8 = 10152
- *
- * bw 300 : 01 3e = 318
- * gray 300 : 09 f4 = 2548 (8 * bw)
- * color 300 : 1d dc = 7644 (3 * gray)
- * color 300(48) TMA : 0b e8 = 3048
- *
- * bw 400 : 13 ec = 5100
- * gray 400 : 13 ec = 5100
- * color 400 : 3b c4 = 15300 (3 * gray)
- *
- * bw 600 : 02 7d = 637
- * gray 600 : 13 ec = 5100 (8 * bw)
- * color 600 : 3b c4 = 15300 (3 * gray)
- *
- * bw 1200 : 04 f5 = 1269
- */
+ uint8_t source; /*
+ * TMA Negatives : 11 = 17
+ * TMA Slides : 12 = 18
+ * ADF : 14 = 20
+ * Flatbed : 18 = 24
+ * ADF Duplex : 54 = 84
+ */
+
+ uint16_t dpi_x; /*
+ * 50 : 00 64 = 100
+ * 75 : 00 64 = 100
+ * 100 : 00 64 = 100
+ * 150 : 00 c8 = 200
+ * 200 : 00 c8 = 200
+ * 300 : 01 2c = 300
+ * 400 : 02 58 = 600
+ * 600 : 02 58 = 600
+ * 1200 : 04 b0 = 1200
+ */
+
+ uint16_t dpi_y; /*
+ * 50 : 00 64 = 100
+ * 75 : 00 64 = 100
+ * 100 : 00 64 = 100
+ * 150 : 00 c8 = 200
+ * 200 : 00 c8 = 200
+ * 300 : 01 2c = 300
+ * 400 : 02 58 = 600
+ * 600 : 02 58 = 600
+ * 1200 : 04 b0 = 1200
+ */
+
+ uint16_t top_x; /*
+ * pixels * (Base DPI / current DPI)
+ * 00 00, 01 6e = 366 (x = 425 - 302 = 123)
+ * 04 b0 = 1200 (x = 425 - 24 = 401)
+ */
+
+ uint16_t top_y; /*
+ * pixels * (Base DPI / current DPI)
+ * 00 00, 06 99 = 1689 (y = 585 - 21 = 564)
+ */
+
+ uint16_t size_x; /* X pixels in Base DPI (CMD 15)
+ * 50 : 04f8 = 1272 ; 150
+ * 75 : 04f8 = 1272 ; 150
+ * 100 : 04f8 = 1272 ; 150
+ * 100 TMA : 00fc = 252 ; 150
+ * 150 : 09f6 = 2550, 09f0 = 2544, 09f4 = 2548 ; 300
+ * 200 : 09f0 = 2544, 09f6 = 2550, 09f6 = 2550 ; 300
+ * 300 : 09f6 = 2550, 09f0 = 2544, 09f4 = 2548 ; 300
+ * 300 TMA : 01fc = 508 ; 300
+ * 400 : 13ec = 5100 ; 600
+ * 600 : 13e8 = 5096, 13ec = 5100 ,13ec = 5100 ; 600
+ * 1200 : 27a8 = 10152 ; 1200
+ */
+
+ uint16_t size_y; /* Y pixels in Base DPI (CMD 15)
+ * 50 : 06db = 1755 ; 150
+ * 75 : 06da = 1754 ; 150
+ * 100 : 06db = 1755 ; 150
+ * 100 TMA : 0384 = 900 ; 150
+ * 150 : 0db6 = 3510 ; 300
+ * 200 : 0db6 = 3510 ; 300
+ * 300 : 0db6 = 3510 ; 300
+ * 300 TMA : 0708 = 1800 ; 300
+ * 400 : 1b6c = 7020 ; 600
+ * 600 : 1b6c = 7020 ; 600
+ * 1200 : 36d8 = 14040 ; 1200
+ */
+
+ uint16_t unk1; /* 00 80 */
+
+ uint16_t bw_gray_flag; /*
+ * 00 40 - bw (ntsc gray)/gray,
+ * 00 20 - bw (by green band),
+ * 00 10 - bw (by red band),
+ * 00 30 - bw (by blue band),
+ * 00 00 - color
+ */
+
+ uint8_t pixel_bits; /*
+ * bw 50/75/150/400 : 08 = 8
+ * bw 100/200/300/600/1200 : 01 = 1
+ * gray 50/75/100/150/200/400/600 : 08 = 8
+ * color 24 bit 50/75/100/150/200/400/600 : 18 = 24
+ * color 48 bit 100/200 : 30 = 48
+ */
+
+ uint16_t flags; /*
+ * 50/75/100/150/200/300 : e8 40 = 59456
+ * 400/600/1200 : c8 40 = 51264
+ */
+
+ uint16_t motor_param1; /*
+ * 00 64 = 100
+ */
+ uint16_t motor_param2; /*
+ * 00 64 = 100 - ADF, Flatbed, TMA slides
+ * 00 c8 = 200 - TMA Negatives
+ */
+ uint16_t motor_param3; /*
+ * 00 64 = 100 - ADF, Flatbed, TMA slides
+ * 01 90 = 400 - TMA negatives
+ */
+ uint32_t pad1; /* 00 00 00 00 */
+ uint16_t pad2; /* 00 00 */
+ uint8_t mode; /* 00 - normal scan, 04 - preview scan */
+ uint16_t pad3; /* 00 00 */
+
+ uint16_t line_width; /* Based on current .dpi_x
+ * bw 50 : 03 50 = 848
+ * gray 50 : 03 50 = 848
+ * color 50 : 09 f0 = 2544 (3 * gray)
+ *
+ * bw 75 : 03 50 = 848
+ * gray 75 : 03 50 = 848
+ * color 75 : 09 f0 = 2544 (3 * gray)
+ *
+ * bw 100 : 00 6a = 106
+ * gray 100 : 03 50 = 848 (8 * bw)
+ * color 100(24) : 09 f0 = 2544 (3 * gray)
+ * color 100(48) : 13 e0 = 5088 (2 * color 24)
+ * color 100(48) TMA : 03 f0 = 1008
+ *
+ * bw 150 : 06 a4 = 1700
+ * gray 150 : 06 a4 = 1700
+ * color 150 : 13 ec = 5100 (3 * gray)
+ *
+ * bw 200 : 00 d4 = 212
+ * gray 200 : 06 a4 = 1700 (8 * bw)
+ * color 200(24) : 13 ec = 5100 (3 * gray)
+ * color 200(48) : 27 a8 = 10152
+ *
+ * bw 300 : 01 3e = 318
+ * gray 300 : 09 f4 = 2548 (8 * bw)
+ * color 300 : 1d dc = 7644 (3 * gray)
+ * color 300(48) TMA : 0b e8 = 3048
+ *
+ * bw 400 : 13 ec = 5100
+ * gray 400 : 13 ec = 5100
+ * color 400 : 3b c4 = 15300 (3 * gray)
+ *
+ * bw 600 : 02 7d = 637
+ * gray 600 : 13 ec = 5100 (8 * bw)
+ * color 600 : 3b c4 = 15300 (3 * gray)
+ *
+ * bw 1200 : 04 f5 = 1269
+ */
} __attribute__ ((packed));
struct image_params
{
- uint8_t signature; /* c0 */
- uint8_t pad1; /* 00 */
- uint32_t image_size; /*
- * bw 50 : 00 0f 23 a0 = 992 160
- * gray 50 : 00 0f 23 a0 = 992 160
- * color 50 : 00 2d 6a e0 = 2 976 480
- *
- * bw 75 : 00 0f 20 50 = 991 312
- * gray 75 : 00 0f 20 50 = 991 312
- * color 75 : 00 2d 60 f0 = 2 973 936
- * color 75(48) : 00 5a 86 40 = 5 932 608
- *
- * bw 100 : 00 01 e4 74 = 124 020
- * gray 100 : 00 0f 23 a0 = 992 160
- * color 100 : 00 2d 6a e0 = 2 976 480
- * color 100(48) : 00 5a 68 10 = 5 924 880
- * color 100(48), preview: 00 5a d5 c0 = 5 952 960
- *
- * bw 150 : 00 3c b3 10 = 3 978 000
- * gray 150 : 00 3c b3 10 = 3 978 000
- * color 150 : 00 b6 19 30 = 11 934 000
- * color 150(48) : 01 6a 7b a0 = 23 755 680
- *
- * bw 200 : 00 07 91 d0 = 496 080
- * gray 200 : 00 3c b3 10 = 3 978 000
- * color 200 : 00 b6 19 30 = 11 934 000
- * color 200(48) : 01 6a f3 a0 = 23 786 400
- *
- * bw 300 : 00 11 08 14 = 1 116 180
- * gray 300 : 00 88 77 78 = 8 943 480
- * color 300 : 01 99 66 68 = 26 830 440
- *
- * bw 400 : 02 22 4b 90 = 35 802 000
- * gray 400 : 02 22 4b 90 = 35 802 000
- * color 400 : 06 66 e2 b0 = 107 406 000
- *
- * bw 600 : 00 44 3b bc = 4 471 740
- * gray 600 : 02 22 4b 90 = 35 802 000
- * color 600 : 06 66 e2 b0 = 107 406 000
- */
- uint16_t pad2; /* 00 00 */
+ uint8_t signature; /* c0 */
+ uint8_t pad1; /* 00 */
+ uint32_t image_size; /*
+ * bw 50 : 00 0f 23 a0 = 992 160
+ * gray 50 : 00 0f 23 a0 = 992 160
+ * color 50 : 00 2d 6a e0 = 2 976 480
+ *
+ * bw 75 : 00 0f 20 50 = 991 312
+ * gray 75 : 00 0f 20 50 = 991 312
+ * color 75 : 00 2d 60 f0 = 2 973 936
+ * color 75(48) : 00 5a 86 40 = 5 932 608
+ *
+ * bw 100 : 00 01 e4 74 = 124 020
+ * gray 100 : 00 0f 23 a0 = 992 160
+ * color 100 : 00 2d 6a e0 = 2 976 480
+ * color 100(48) : 00 5a 68 10 = 5 924 880
+ * color 100(48), preview: 00 5a d5 c0 = 5 952 960
+ *
+ * bw 150 : 00 3c b3 10 = 3 978 000
+ * gray 150 : 00 3c b3 10 = 3 978 000
+ * color 150 : 00 b6 19 30 = 11 934 000
+ * color 150(48) : 01 6a 7b a0 = 23 755 680
+ *
+ * bw 200 : 00 07 91 d0 = 496 080
+ * gray 200 : 00 3c b3 10 = 3 978 000
+ * color 200 : 00 b6 19 30 = 11 934 000
+ * color 200(48) : 01 6a f3 a0 = 23 786 400
+ *
+ * bw 300 : 00 11 08 14 = 1 116 180
+ * gray 300 : 00 88 77 78 = 8 943 480
+ * color 300 : 01 99 66 68 = 26 830 440
+ *
+ * bw 400 : 02 22 4b 90 = 35 802 000
+ * gray 400 : 02 22 4b 90 = 35 802 000
+ * color 400 : 06 66 e2 b0 = 107 406 000
+ *
+ * bw 600 : 00 44 3b bc = 4 471 740
+ * gray 600 : 02 22 4b 90 = 35 802 000
+ * color 600 : 06 66 e2 b0 = 107 406 000
+ */
+ uint16_t pad2; /* 00 00 */
uint16_t line_width;
uint16_t real_size_y;
- uint32_t pad3; /* 00 00 00 00 */
+ uint32_t pad3; /* 00 00 00 00 */
} __attribute__ ((packed));
struct lamp_state
{
- uint8_t unk1; /* 02 */
- uint8_t flag; /* 01 on start, 02 - TMA, 03 - all other */
- uint16_t turnoff_time; /* 0a 0a, 03 36, 0f 36 */
+ uint8_t unk1; /* 02 */
+ uint8_t flag; /* 01 on start, 02 - TMA, 03 - all other */
+ uint16_t turnoff_time; /* 0a 0a, 03 36, 0f 36 */
} __attribute__ ((packed));
struct color_map
{
- uint8_t color1[6]; /* 00 00 00 00 01 00 */
- uint8_t color2[6]; /* 00 00 00 00 01 00 */
- uint8_t color3[6]; /* 00 00 00 00 01 00 */
+ uint8_t color1[6]; /* 00 00 00 00 01 00 */
+ uint8_t color2[6]; /* 00 00 00 00 01 00 */
+ uint8_t color3[6]; /* 00 00 00 00 01 00 */
} __attribute__ ((packed));
struct reg_03
{
- uint8_t unk1; /* 0x0b - ADF ready, 0x03 - not */
- uint8_t unk2; /* 0x80 */
- uint8_t adf_flags; /* 0x01 - ADF ready when selected, 0x02 - not */
+ uint8_t unk1; /* 0x0b - ADF ready, 0x03 - not */
+ uint8_t unk2; /* 0x80 */
+ uint8_t adf_flags; /* 0x01 - ADF ready when selected, 0x02 - not */
} __attribute__ ((packed));
/******************************************************************************/
static SANE_Status
hp5590_model_def (enum hp_scanner_types scanner_type,
- const struct hp5590_model ** model)
+ const struct hp5590_model ** model)
{
unsigned int i;
-
+
hp5590_cmds_assert (model != NULL);
for (i = 0; i < sizeof (hp5590_models) / sizeof (struct hp5590_model); i++)
{
if (hp5590_models[i].scanner_type == scanner_type)
- {
- *model = &hp5590_models[i];
- return SANE_STATUS_GOOD;
- }
+ {
+ *model = &hp5590_models[i];
+ return SANE_STATUS_GOOD;
+ }
}
-
+
return SANE_STATUS_INVAL;
}
/******************************************************************************/
static SANE_Status
hp5590_vendor_product_id (enum hp_scanner_types scanner_type,
- SANE_Word * vendor_id,
- SANE_Word * product_id)
+ SANE_Word * vendor_id,
+ SANE_Word * product_id)
{
- const struct hp5590_model *model;
- SANE_Status ret;
+ const struct hp5590_model *model;
+ SANE_Status ret;
hp5590_cmds_assert (vendor_id != NULL);
hp5590_cmds_assert (product_id != NULL);
@@ -467,15 +471,15 @@ hp5590_vendor_product_id (enum hp_scanner_types scanner_type,
/******************************************************************************/
static SANE_Status
hp5590_init_scanner (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info ** info,
- enum hp_scanner_types scanner_type)
+ enum proto_flags proto_flags,
+ struct scanner_info ** info,
+ enum hp_scanner_types scanner_type)
{
- struct init_resp init_resp;
- char id_buf[sizeof (init_resp.id) + 1];
- char ver_buf[sizeof (init_resp.version) + 1];
- SANE_Status ret;
- const struct hp5590_model *scanner_model;
+ struct init_resp init_resp;
+ char id_buf[sizeof (init_resp.id) + 1];
+ char ver_buf[sizeof (init_resp.version) + 1];
+ SANE_Status ret;
+ const struct hp5590_model *scanner_model;
/*
* 0A 53 49 4C 49 54 45 4B 49 50 65 6E 67 75 69 6E .SILITEKIPenguin
@@ -489,11 +493,11 @@ hp5590_init_scanner (SANE_Int dn,
/* Init scanner */
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_INIT,
- (unsigned char *) &init_resp,
- sizeof (init_resp), CORE_NONE);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_INIT,
+ (unsigned char *) &init_resp,
+ sizeof (init_resp), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -504,23 +508,23 @@ hp5590_init_scanner (SANE_Int dn,
{
unsigned int i;
for (i = 0; i < sizeof (hp5590_models) / sizeof (struct hp5590_model);
- i++)
- {
- if (hp5590_models[i].scanner_type == scanner_type)
- {
- if (strcmp (id_buf, hp5590_models[i].vendor_id) != 0)
- {
- DBG (DBG_err, "%s: Vendor id mismatch for scanner HP%s - "
- "required '%s', got '%s'\n",
- __func__,
- hp5590_models[i].model,
- hp5590_models[i].vendor_id, id_buf);
- return SANE_STATUS_INVAL;
- }
- scanner_model = &hp5590_models[i];
- break;
- }
- }
+ i++)
+ {
+ if (hp5590_models[i].scanner_type == scanner_type)
+ {
+ if (strcmp (id_buf, hp5590_models[i].vendor_id) != 0)
+ {
+ DBG (DBG_err, "%s: Vendor id mismatch for scanner HP%s - "
+ "required '%s', got '%s'\n",
+ __func__,
+ hp5590_models[i].model,
+ hp5590_models[i].vendor_id, id_buf);
+ return SANE_STATUS_INVAL;
+ }
+ scanner_model = &hp5590_models[i];
+ break;
+ }
+ }
hp5590_cmds_assert (scanner_model != NULL);
}
@@ -529,10 +533,10 @@ hp5590_init_scanner (SANE_Int dn,
DBG (DBG_cmds, "HP%s flags (0x%02x)\n", scanner_model->model, init_resp.flags);
DBG (DBG_cmds, "HP%s flags: ADF %s, TMA %s, LCD %s\n",
- scanner_model->model,
- init_resp.flags & INIT_FLAG_ADF ? "yes" : "no",
- init_resp.flags & INIT_FLAG_TMA ? "yes" : "no",
- init_resp.flags & INIT_FLAG_LCD ? "yes" : "no");
+ scanner_model->model,
+ init_resp.flags & INIT_FLAG_ADF ? "yes" : "no",
+ init_resp.flags & INIT_FLAG_TMA ? "yes" : "no",
+ init_resp.flags & INIT_FLAG_LCD ? "yes" : "no");
memset (ver_buf, 0, sizeof (ver_buf));
@@ -540,33 +544,33 @@ hp5590_init_scanner (SANE_Int dn,
DBG (DBG_cmds, "HP%s firmware version: %s\n", scanner_model->model, ver_buf);
DBG (DBG_cmds, "HP%s max resolution X: %u DPI\n",
- scanner_model->model, ntohs (init_resp.max_dpi_x));
+ scanner_model->model, ntohs (init_resp.max_dpi_x));
DBG (DBG_cmds, "HP%s max resolution Y: %u DPI\n",
- scanner_model->model, ntohs (init_resp.max_dpi_y));
+ scanner_model->model, ntohs (init_resp.max_dpi_y));
DBG (DBG_cmds, "HP%s max pixels X: %u\n",
- scanner_model->model, ntohs (init_resp.max_pixels_x));
+ scanner_model->model, ntohs (init_resp.max_pixels_x));
DBG (DBG_cmds, "HP%s max pixels Y: %u\n",
- scanner_model->model, ntohs (init_resp.max_pixels_y));
+ scanner_model->model, ntohs (init_resp.max_pixels_y));
DBG (DBG_cmds, "HP%s max size X: %.3f inches\n",
- scanner_model->model,
- ntohs (init_resp.max_pixels_x) * 1.0 /
- ntohs (init_resp.max_dpi_x));
+ scanner_model->model,
+ ntohs (init_resp.max_pixels_x) * 1.0 /
+ ntohs (init_resp.max_dpi_x));
DBG (DBG_cmds, "HP%s max size Y: %.3f inches\n", scanner_model->model,
- ntohs (init_resp.max_pixels_y) * 1.0 /
- ntohs (init_resp.max_dpi_y));
+ ntohs (init_resp.max_pixels_y) * 1.0 /
+ ntohs (init_resp.max_dpi_y));
DBG (DBG_cmds, "HP%s normal motor param: %u, max motor param: %u\n",
- scanner_model->model, ntohs (init_resp.motor_param_normal),
- ntohs (init_resp.motor_param_max));
+ scanner_model->model, ntohs (init_resp.motor_param_normal),
+ ntohs (init_resp.motor_param_max));
}
if (info)
{
*info = malloc (sizeof (struct scanner_info));
if (!*info)
- {
- DBG (DBG_err, "Memory allocation failed\n");
- return SANE_STATUS_NO_MEM;
- }
+ {
+ DBG (DBG_err, "Memory allocation failed\n");
+ return SANE_STATUS_NO_MEM;
+ }
memset (*info, 0, sizeof (struct scanner_info));
(*info)->max_dpi_x = ntohs (init_resp.max_dpi_x);
@@ -577,23 +581,23 @@ hp5590_init_scanner (SANE_Int dn,
(*info)->max_size_y = (*info)->max_pixels_y * 1.0 / (*info)->max_dpi_y;
(*info)->features = FEATURE_NONE;
if (init_resp.flags & INIT_FLAG_LCD)
- (*info)->features |= FEATURE_LCD;
+ (*info)->features |= FEATURE_LCD;
if (init_resp.flags & INIT_FLAG_ADF)
- (*info)->features |= FEATURE_ADF;
+ (*info)->features |= FEATURE_ADF;
if (init_resp.flags & INIT_FLAG_TMA)
- (*info)->features |= FEATURE_TMA;
+ (*info)->features |= FEATURE_TMA;
if (scanner_model)
- {
- (*info)->model = scanner_model->model;
- (*info)->kind = scanner_model->kind;
- }
+ {
+ (*info)->model = scanner_model->model;
+ (*info)->kind = scanner_model->kind;
+ }
}
ret = hp5590_get_status (dn, proto_flags);
if (ret != SANE_STATUS_GOOD)
{
DBG (DBG_err, "%s: scanner reports non-zero status: %s\n",
- __func__, sane_strstatus (ret));
+ __func__, sane_strstatus (ret));
return ret;
}
DBG (DBG_cmds, "%s: scanner status OK\n", __func__);
@@ -604,9 +608,9 @@ hp5590_init_scanner (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_eeprom (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int addr,
- unsigned char *data, unsigned int size)
+ enum proto_flags proto_flags,
+ unsigned int addr,
+ unsigned char *data, unsigned int size)
{
uint8_t eeprom_addr = addr;
SANE_Status ret;
@@ -618,18 +622,18 @@ hp5590_read_eeprom (SANE_Int dn,
DBG (DBG_proc, "Reading EEPROM: addr %04x, size %u\n", addr, size);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_EEPROM_ADDR,
- (unsigned char *) &eeprom_addr,
- sizeof (eeprom_addr), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_EEPROM_ADDR,
+ (unsigned char *) &eeprom_addr,
+ sizeof (eeprom_addr), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_EEPROM_READ, data, size, CORE_NONE);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_EEPROM_READ, data, size, CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -639,9 +643,9 @@ hp5590_read_eeprom (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_write_eeprom (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int addr,
- unsigned char *data, unsigned int size)
+ enum proto_flags proto_flags,
+ unsigned int addr,
+ unsigned char *data, unsigned int size)
{
uint8_t eeprom_addr = addr;
SANE_Status ret;
@@ -653,18 +657,18 @@ hp5590_write_eeprom (SANE_Int dn,
DBG (DBG_proc, "Writing EEPROM: addr %04x, size: %u\n", addr, size);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_EEPROM_ADDR,
- (unsigned char *) &eeprom_addr,
- sizeof (eeprom_addr), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_EEPROM_ADDR,
+ (unsigned char *) &eeprom_addr,
+ sizeof (eeprom_addr), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_EEPROM_WRITE, data, size, CORE_DATA);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_EEPROM_WRITE, data, size, CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -674,8 +678,8 @@ hp5590_write_eeprom (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_scan_count (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int *count)
+ enum proto_flags proto_flags,
+ unsigned int *count)
{
uint32_t scan_count;
SANE_Status ret;
@@ -687,10 +691,10 @@ hp5590_read_scan_count (SANE_Int dn,
DBG (DBG_proc, "Reading scan count\n");
ret = hp5590_read_eeprom (dn,
- proto_flags,
- 0x00,
- (unsigned char *) &scan_count,
- sizeof (scan_count));
+ proto_flags,
+ 0x00,
+ (unsigned char *) &scan_count,
+ sizeof (scan_count));
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -706,11 +710,11 @@ hp5590_read_scan_count (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_inc_scan_count (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
uint32_t scan_count;
- unsigned int count;
- unsigned int new_count;
+ uint32_t count;
+ uint32_t new_count;
SANE_Status ret;
DBG (DBG_proc, "%s\n", __func__);
@@ -721,12 +725,13 @@ hp5590_inc_scan_count (SANE_Int dn,
return ret;
scan_count = ++count;
+ DBG (DBG_verbose, "Scan count = %u\n", scan_count);
ret = hp5590_write_eeprom (dn,
- proto_flags,
- 0x00,
- (unsigned char *) &scan_count,
- sizeof (scan_count));
+ proto_flags,
+ 0x00,
+ (unsigned char *) &scan_count,
+ sizeof (scan_count));
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -747,8 +752,8 @@ hp5590_inc_scan_count (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_max_scan_count (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int *max_count)
+ enum proto_flags proto_flags,
+ unsigned int *max_count)
{
uint8_t max_scan_count[3];
SANE_Status ret;
@@ -760,10 +765,10 @@ hp5590_read_max_scan_count (SANE_Int dn,
DBG (DBG_proc, "Reading max scan count\n");
ret = hp5590_read_eeprom (dn,
- proto_flags,
- 0x10,
- (unsigned char *) max_scan_count,
- sizeof (max_scan_count));
+ proto_flags,
+ 0x10,
+ (unsigned char *) max_scan_count,
+ sizeof (max_scan_count));
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -777,9 +782,9 @@ hp5590_read_max_scan_count (SANE_Int dn,
}
/***************************************************************************
- *
+ *
* EEPROM contents:
- *
+ *
* 0000: 6A 11 00 00 FF FF FF FF FF FF FF FF 09 0E 0F 00 j...............
* 0010: 0C 13 0F 00 00 3A 00 FF FF FF 4E 35 39 45 54 52 ..........N59ETR
* 0020: 31 52 4D 00 FF FF 00 16 00 0A 00 0D 00 11 00 10 1RM.............
@@ -806,7 +811,7 @@ hp5590_read_max_scan_count (SANE_Int dn,
/******************************************************************************/
static __sane_unused__ SANE_Status
hp5590_read_eeprom_all_cmd (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
uint8_t eeprom[255];
SANE_Status ret;
@@ -814,14 +819,35 @@ hp5590_read_eeprom_all_cmd (SANE_Int dn,
DBG (DBG_proc, "%s\n", __func__);
ret = hp5590_read_eeprom (dn,
- proto_flags,
- 0x00,
- (unsigned char *) eeprom,
- sizeof (eeprom));
+ proto_flags,
+ 0x00,
+ (unsigned char *) eeprom,
+ sizeof (eeprom));
if (ret != SANE_STATUS_GOOD)
return ret;
- /* FIXME: Debug output */
+ DBG (DBG_verbose, "hp5590_read_eeprom_all_cmd: rc = %d\n", ret);
+ {
+ const int LEN = 4096;
+ char buf[LEN];
+ char* p = buf;
+ for (size_t i = 0; i < sizeof(eeprom); ++i) {
+ if (i % 16 == 0) {
+ int n = sprintf(p, "\n%04x ", (int)i);
+ if (n < 0) {
+ break;
+ }
+ p += n;
+ }
+ int n = sprintf(p, " %02x", eeprom[i]);
+ if (n < 0 ) {
+ break;
+ }
+ p += n;
+ }
+ *p = '\0';
+ DBG (DBG_verbose, "dump:%s\n", buf);
+ }
return SANE_STATUS_GOOD;
}
@@ -829,7 +855,7 @@ hp5590_read_eeprom_all_cmd (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_part_number (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
unsigned int part_number_len = PART_NUMBER_LEN;
unsigned char part_number[PART_NUMBER_LEN + 1];
@@ -839,9 +865,9 @@ hp5590_read_part_number (SANE_Int dn,
memset (part_number, 0, sizeof (part_number));
ret = hp5590_read_eeprom (dn,
- proto_flags,
- 0x1a,
- part_number, part_number_len);
+ proto_flags,
+ 0x1a,
+ part_number, part_number_len);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -853,7 +879,7 @@ hp5590_read_part_number (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_is_data_available (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
uint8_t data_status;
SANE_Status ret;
@@ -865,11 +891,11 @@ hp5590_is_data_available (SANE_Int dn,
data_available = SANE_FALSE;
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_DATA_STATUS,
- (unsigned char *) &data_status,
- sizeof (data_status), CORE_DATA);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_DATA_STATUS,
+ (unsigned char *) &data_status,
+ sizeof (data_status), CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -888,7 +914,7 @@ hp5590_is_data_available (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_stop_scan (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
uint8_t reg_011b = 0x40;
SANE_Status ret;
@@ -898,11 +924,11 @@ hp5590_stop_scan (SANE_Int dn,
hp5590_cmds_assert (sizeof (reg_011b) == 1);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_STOP_SCAN,
- (unsigned char *) &reg_011b,
- sizeof (reg_011b), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_STOP_SCAN,
+ (unsigned char *) &reg_011b,
+ sizeof (reg_011b), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -914,8 +940,8 @@ hp5590_stop_scan (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_turnon_lamp (SANE_Int dn,
- enum proto_flags proto_flags,
- enum hp5590_lamp_state state)
+ enum proto_flags proto_flags,
+ enum hp5590_lamp_state state)
{
struct lamp_state lamp_state;
SANE_Status ret;
@@ -961,11 +987,11 @@ hp5590_turnon_lamp (SANE_Int dn,
}
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_CONTROL_LAMP,
- (unsigned char *) &lamp_state,
- sizeof (lamp_state), CORE_DATA);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_CONTROL_LAMP,
+ (unsigned char *) &lamp_state,
+ sizeof (lamp_state), CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -973,7 +999,7 @@ hp5590_turnon_lamp (SANE_Int dn,
{
ret = hp5590_init_scanner (dn, proto_flags, NULL, SCANNER_NONE);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
}
return SANE_STATUS_GOOD;
@@ -982,7 +1008,7 @@ hp5590_turnon_lamp (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_power_status (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
struct power_resp power_resp;
SANE_Status ret;
@@ -992,11 +1018,11 @@ hp5590_power_status (SANE_Int dn,
hp5590_cmds_assert (sizeof (power_resp) == 3);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_POWER_STATUS,
- (unsigned char *) &power_resp,
- sizeof (power_resp), CORE_NONE);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_POWER_STATUS,
+ (unsigned char *) &power_resp,
+ sizeof (power_resp), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1008,7 +1034,7 @@ hp5590_power_status (SANE_Int dn,
DBG (DBG_cmds, "Turning lamp on\n");
ret = hp5590_turnon_lamp (dn, proto_flags, LAMP_STATE_TURNON);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
}
return SANE_STATUS_GOOD;
@@ -1017,25 +1043,25 @@ hp5590_power_status (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_error_code (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int *adf_flags)
+ enum proto_flags proto_flags,
+ unsigned int *adf_flags)
{
struct reg_03 reg_03;
- SANE_Status ret;
+ SANE_Status ret;
DBG (DBG_proc, "%s\n", __func__);
-
+
hp5590_cmds_assert (sizeof (reg_03) == 3);
hp5590_cmds_assert (adf_flags != NULL);
memset (&reg_03, 0, sizeof (reg_03));
*adf_flags = 0;
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN,
- CMD_MISC_STATUS,
- (unsigned char *) &reg_03,
- sizeof (reg_03), CORE_NONE);
+ proto_flags,
+ CMD_IN,
+ CMD_MISC_STATUS,
+ (unsigned char *) &reg_03,
+ sizeof (reg_03), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1052,12 +1078,12 @@ hp5590_read_error_code (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_reset_scan_head (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
- SANE_Status ret;
+ SANE_Status ret;
DBG (DBG_proc, "%s\n", __func__);
-
+
ret = hp5590_turnon_lamp (dn, proto_flags, LAMP_STATE_TURNOFF);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1074,13 +1100,13 @@ hp5590_reset_scan_head (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_select_source_and_wakeup (SANE_Int dn,
- enum proto_flags proto_flags,
- enum scan_sources source,
- SANE_Bool extend_lamp_timeout)
+ enum proto_flags proto_flags,
+ enum scan_sources source,
+ SANE_Bool extend_lamp_timeout)
{
- uint8_t reg_d6 = 0x04;
- SANE_Status ret;
- unsigned int adf_flags;
+ uint8_t reg_d6 = 0x04;
+ SANE_Status ret;
+ unsigned int adf_flags;
DBG (DBG_proc, "%s\n", __func__);
@@ -1090,50 +1116,50 @@ hp5590_select_source_and_wakeup (SANE_Int dn,
{
ret = hp5590_turnon_lamp (dn, proto_flags, LAMP_STATE_TURNOFF);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
}
else
{
ret = hp5590_turnon_lamp (dn,
- proto_flags,
- extend_lamp_timeout == SANE_TRUE ?
- LAMP_STATE_SET_TURNOFF_TIME_LONG :
- LAMP_STATE_SET_TURNOFF_TIME);
+ proto_flags,
+ extend_lamp_timeout == SANE_TRUE ?
+ LAMP_STATE_SET_TURNOFF_TIME_LONG :
+ LAMP_STATE_SET_TURNOFF_TIME);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
}
switch (source)
{
case SOURCE_ADF:
case SOURCE_ADF_DUPLEX:
- reg_d6 = 0x03;
- break;
+ reg_d6 = 0x03;
+ break;
case SOURCE_FLATBED:
- reg_d6 = 0x04;
- break;
+ reg_d6 = 0x04;
+ break;
case SOURCE_TMA_SLIDES:
- reg_d6 = 0x02;
- break;
+ reg_d6 = 0x02;
+ break;
case SOURCE_TMA_NEGATIVES:
- reg_d6 = 0x01;
- break;
+ reg_d6 = 0x01;
+ break;
case SOURCE_NONE:
- DBG (DBG_err, "Scan source not selected\n");
- return SANE_STATUS_INVAL;
+ DBG (DBG_err, "Scan source not selected\n");
+ return SANE_STATUS_INVAL;
default:
- DBG (DBG_err, "Unknown scan source: %u\n", source);
- return SANE_STATUS_INVAL;
+ DBG (DBG_err, "Unknown scan source: %u\n", source);
+ return SANE_STATUS_INVAL;
}
DBG (DBG_cmds, "Scan source: %u\n", reg_d6);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_SELECT_SOURCE,
- (unsigned char *) &reg_d6,
- sizeof (reg_d6), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_SELECT_SOURCE,
+ (unsigned char *) &reg_d6,
+ sizeof (reg_d6), CORE_NONE);
if (ret != SANE_STATUS_GOOD && ret != SANE_STATUS_DEVICE_BUSY)
return ret;
@@ -1154,12 +1180,12 @@ hp5590_select_source_and_wakeup (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_lock_unlock_scanner (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
- uint8_t reg_00 = 0x01;
- SANE_Status ret;
- unsigned int adf_flags;
- unsigned int waiting;
+ uint8_t reg_00 = 0x01;
+ SANE_Status ret;
+ unsigned int adf_flags;
+ unsigned int waiting;
DBG (DBG_proc, "%s\n", __func__);
hp5590_cmds_assert (sizeof (reg_00) == 1);
@@ -1167,27 +1193,27 @@ hp5590_lock_unlock_scanner (SANE_Int dn,
for (waiting = 0; waiting < WAKEUP_TIMEOUT; waiting++, sleep (1))
{
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_LOCK_UNLOCK,
- (unsigned char *) &reg_00,
- sizeof (reg_00), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_LOCK_UNLOCK,
+ (unsigned char *) &reg_00,
+ sizeof (reg_00), CORE_NONE);
if (ret == SANE_STATUS_GOOD)
- break;
+ break;
if (ret != SANE_STATUS_DEVICE_BUSY)
- return ret;
+ return ret;
DBG (DBG_cmds, "Waiting for scanner...\n");
ret = hp5590_read_error_code (dn, proto_flags, &adf_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
if (adf_flags & FLAG_ADF_EMPTY)
- {
- DBG (DBG_cmds, "ADF empty\n");
- return SANE_STATUS_NO_DOCS;
- }
+ {
+ DBG (DBG_cmds, "ADF empty\n");
+ return SANE_STATUS_NO_DOCS;
+ }
}
if (waiting == WAKEUP_TIMEOUT)
@@ -1199,9 +1225,9 @@ hp5590_lock_unlock_scanner (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_set_base_dpi (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info *scanner_info,
- unsigned int base_dpi)
+ enum proto_flags proto_flags,
+ struct scanner_info *scanner_info,
+ unsigned int base_dpi)
{
uint16_t _base_dpi;
SANE_Status ret;
@@ -1216,21 +1242,21 @@ hp5590_set_base_dpi (SANE_Int dn,
|| base_dpi > scanner_info->max_dpi_y)
{
DBG (DBG_err, "Base DPI too large "
- "(given: %u, max X DPI: %u, max Y DPI: %u)\n",
- base_dpi,
- scanner_info->max_dpi_x,
- scanner_info->max_dpi_y);
+ "(given: %u, max X DPI: %u, max Y DPI: %u)\n",
+ base_dpi,
+ scanner_info->max_dpi_x,
+ scanner_info->max_dpi_y);
return SANE_STATUS_INVAL;
}
_base_dpi = htons (base_dpi);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_SET_BASE_DPI,
- (unsigned char *) &_base_dpi,
- sizeof (_base_dpi), CORE_DATA);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_SET_BASE_DPI,
+ (unsigned char *) &_base_dpi,
+ sizeof (_base_dpi), CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1240,8 +1266,8 @@ hp5590_set_base_dpi (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_set_color_map (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int base_dpi)
+ enum proto_flags proto_flags,
+ unsigned int base_dpi)
{
struct color_map color_map;
SANE_Status ret;
@@ -1260,28 +1286,48 @@ hp5590_set_color_map (SANE_Int dn,
}
else
{
- color_map.color1[2] = 0xff;
- color_map.color1[3] = 0x01;
- color_map.color1[4] = 0x04;
- color_map.color1[5] = 0x02;
-
- color_map.color2[2] = 0xff;
- color_map.color2[3] = 0x01;
- color_map.color2[4] = 0x04;
- color_map.color2[5] = 0x02;
-
- color_map.color3[2] = 0xff;
- color_map.color3[3] = 0x01;
- color_map.color3[4] = 0x04;
- color_map.color3[5] = 0x02;
+ if (0) {
+ /* Does not work with hp5590 and 2400 dpi. */
+ color_map.color1[2] = 0xff;
+ color_map.color1[3] = 0x01;
+ color_map.color1[4] = 0x04;
+ color_map.color1[5] = 0x02;
+
+ color_map.color2[2] = 0xff;
+ color_map.color2[3] = 0x01;
+ color_map.color2[4] = 0x04;
+ color_map.color2[5] = 0x02;
+
+ color_map.color3[2] = 0xff;
+ color_map.color3[3] = 0x01;
+ color_map.color3[4] = 0x04;
+ color_map.color3[5] = 0x02;
+
+ } else {
+ /* Needs documentation. */
+ color_map.color1[2] = 0x00;
+ color_map.color1[3] = 0x00;
+ color_map.color1[4] = 0x01;
+ color_map.color1[5] = 0x00;
+
+ color_map.color2[2] = 0x00;
+ color_map.color2[3] = 0x00;
+ color_map.color2[4] = 0x01;
+ color_map.color2[5] = 0x00;
+
+ color_map.color3[2] = 0x00;
+ color_map.color3[3] = 0x00;
+ color_map.color3[4] = 0x01;
+ color_map.color3[5] = 0x00;
+ }
}
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_SET_COLOR_MAP,
- (unsigned char *) &color_map,
- sizeof (color_map), CORE_DATA);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_SET_COLOR_MAP,
+ (unsigned char *) &color_map,
+ sizeof (color_map), CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1394,7 +1440,7 @@ calc_scanner_dpi (unsigned int dpi, unsigned int *scanner_dpi)
/******************************************************************************/
static SANE_Status
hp5590_calc_pixel_bits (unsigned int dpi, enum color_depths color_depth,
- unsigned int *pixel_bits)
+ unsigned int *pixel_bits)
{
unsigned int scanner_dpi;
SANE_Status ret;
@@ -1429,9 +1475,9 @@ hp5590_calc_pixel_bits (unsigned int dpi, enum color_depths color_depth,
if (color_depth == DEPTH_BW)
{
if (dpi == scanner_dpi)
- *pixel_bits = 1;
+ *pixel_bits = 1;
else
- *pixel_bits = 8;
+ *pixel_bits = 8;
return SANE_STATUS_GOOD;
}
@@ -1442,28 +1488,28 @@ hp5590_calc_pixel_bits (unsigned int dpi, enum color_depths color_depth,
/******************************************************************************/
static SANE_Status
hp5590_set_scan_area (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info *scanner_info,
- unsigned int top_x, unsigned int top_y,
- unsigned int width, unsigned int height,
- unsigned int dpi, enum color_depths color_depth,
- enum scan_modes scan_mode,
- enum scan_sources scan_source)
+ enum proto_flags proto_flags,
+ struct scanner_info *scanner_info,
+ unsigned int top_x, unsigned int top_y,
+ unsigned int width, unsigned int height,
+ unsigned int dpi, enum color_depths color_depth,
+ enum scan_modes scan_mode,
+ enum scan_sources scan_source)
{
- struct scan_params scan_params;
- unsigned int scanner_top_x;
- unsigned int scanner_top_y;
- unsigned int scanner_pixels_x;
- unsigned int scanner_pixels_y;
- unsigned int base_dpi;
- unsigned int scanner_dpi;
- unsigned int pixel_bits;
- unsigned int scanner_line_width;
- unsigned int max_pixels_x_current_dpi;
- unsigned int max_pixels_y_current_dpi;
- unsigned int pixels_x;
- unsigned int pixels_y;
- SANE_Status ret;
+ struct scan_params scan_params;
+ unsigned int scanner_top_x;
+ unsigned int scanner_top_y;
+ unsigned int scanner_pixels_x;
+ unsigned int scanner_pixels_y;
+ unsigned int base_dpi;
+ unsigned int scanner_dpi;
+ unsigned int pixel_bits;
+ unsigned int scanner_line_width;
+ unsigned int max_pixels_x_current_dpi;
+ unsigned int max_pixels_y_current_dpi;
+ unsigned int pixels_x;
+ unsigned int pixels_y;
+ SANE_Status ret;
DBG (DBG_proc, "%s\n", __func__);
@@ -1491,8 +1537,8 @@ hp5590_set_scan_area (SANE_Int dn,
if (dpi > scanner_info->max_dpi_x || dpi > scanner_info->max_dpi_y)
{
DBG (DBG_err, "DPI too large "
- "(given: %u, max X DPI: %u, max Y DPI: %u)\n",
- dpi, scanner_info->max_dpi_x, scanner_info->max_dpi_y);
+ "(given: %u, max X DPI: %u, max Y DPI: %u)\n",
+ dpi, scanner_info->max_dpi_x, scanner_info->max_dpi_y);
return SANE_STATUS_INVAL;
}
@@ -1580,14 +1626,14 @@ hp5590_set_scan_area (SANE_Int dn,
if (top_x + pixels_x > max_pixels_x_current_dpi)
{
DBG (DBG_err, "Top X (%u) + pixels X (%u) exceeds max X %u\n",
- top_x, pixels_x, max_pixels_x_current_dpi);
+ top_x, pixels_x, max_pixels_x_current_dpi);
return SANE_STATUS_INVAL;
}
if (top_y + pixels_y > max_pixels_y_current_dpi)
{
DBG (DBG_err, "Top Y (%u) + pixels Y (%u) exceeds max Y %u\n",
- top_y, pixels_y, max_pixels_y_current_dpi);
+ top_y, pixels_y, max_pixels_y_current_dpi);
return SANE_STATUS_INVAL;
}
@@ -1597,23 +1643,23 @@ hp5590_set_scan_area (SANE_Int dn,
scan_params.size_y = htons (scanner_pixels_y);
scanner_line_width = (float) (pixels_x
- * (1.0 * scanner_dpi / dpi) / 8 * pixel_bits);
+ * (1.0 * scanner_dpi / dpi) / 8 * pixel_bits);
/* Scanner hangs at scan command if line width less than 18 */
if (scanner_line_width < 18)
{
- DBG (DBG_err, "Line width too smal, extending to minimum\n");
+ DBG (DBG_err, "Line width too small, extending to minimum\n");
scanner_line_width = 18;
}
scan_params.line_width = htons (scanner_line_width);
DBG (DBG_cmds, "Line width: %u\n", scanner_line_width);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_SET_SCAN_PARAMS,
- (unsigned char *) &scan_params,
- sizeof (scan_params), CORE_DATA);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_SET_SCAN_PARAMS,
+ (unsigned char *) &scan_params,
+ sizeof (scan_params), CORE_DATA);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1623,7 +1669,7 @@ hp5590_set_scan_area (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_image_params (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
struct image_params image_params;
SANE_Status ret;
@@ -1635,18 +1681,18 @@ hp5590_read_image_params (SANE_Int dn,
memset (&image_params, 0, sizeof (image_params));
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_GET_IMAGE_PARAMS,
- (unsigned char *) &image_params,
- sizeof (image_params), CORE_NONE);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_GET_IMAGE_PARAMS,
+ (unsigned char *) &image_params,
+ sizeof (image_params), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
if (image_params.signature != 0xc0)
{
DBG (DBG_err, "Wrong signature for image parameters structure "
- "received (needed 0xc0, got %02x)\n", image_params.signature);
+ "received (needed 0xc0, got %02x)\n", image_params.signature);
return SANE_STATUS_IO_ERROR;
}
DBG (DBG_cmds, "Received image params:\n");
@@ -1665,13 +1711,13 @@ hp5590_read_image_params (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_set_scan_params (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info * scanner_info,
- unsigned int top_x, unsigned int top_y,
- unsigned int width, unsigned int height,
- unsigned int dpi, enum color_depths color_depth,
- enum scan_modes scan_mode,
- enum scan_sources scan_source)
+ enum proto_flags proto_flags,
+ struct scanner_info * scanner_info,
+ unsigned int top_x, unsigned int top_y,
+ unsigned int width, unsigned int height,
+ unsigned int dpi, enum color_depths color_depth,
+ enum scan_modes scan_mode,
+ enum scan_sources scan_source)
{
unsigned int base_dpi;
SANE_Status ret;
@@ -1714,11 +1760,11 @@ hp5590_set_scan_params (SANE_Int dn,
}
ret = hp5590_set_scan_area (dn,
- proto_flags,
- scanner_info,
- top_x, top_y,
- width, height,
- dpi, color_depth, scan_mode, scan_source);
+ proto_flags,
+ scanner_info,
+ top_x, top_y,
+ width, height,
+ dpi, color_depth, scan_mode, scan_source);
if (ret != SANE_STATUS_GOOD)
{
/* Unlock scanner */
@@ -1745,7 +1791,7 @@ hp5590_set_scan_params (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_send_reverse_calibration_map (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
unsigned int reverse_map_size = REVERSE_MAP_LEN;
uint16_t reverse_map[REVERSE_MAP_LEN];
@@ -1778,16 +1824,21 @@ hp5590_send_reverse_calibration_map (SANE_Int dn,
for (i = len * 3; i < len * 4; i++)
{
- reverse_map[i] = htons (0xffff);
+ if (1) {
+ reverse_map[i] = htons (0xffff);
+ } else {
+ reverse_map[i] = htons (val);
+ val -= 1;
+ }
}
- DBG (DBG_proc, "Done preparing reverse calibration map\n");
+ DBG (DBG_proc, "Done preparing reverse calibration map. n=%u, bytes_per_entry=%zu\n", reverse_map_size, sizeof(uint16_t));
ret = hp5590_bulk_write (dn,
- proto_flags,
- 0x2b,
- (unsigned char *) reverse_map,
- reverse_map_size * sizeof (uint16_t));
+ proto_flags,
+ 0x2b,
+ (unsigned char *) reverse_map,
+ reverse_map_size * sizeof (uint16_t));
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1797,7 +1848,7 @@ hp5590_send_reverse_calibration_map (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_send_forward_calibration_maps (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
unsigned int forward_map_size = FORWARD_MAP_LEN;
uint16_t forward_map[FORWARD_MAP_LEN];
@@ -1812,31 +1863,31 @@ hp5590_send_forward_calibration_maps (SANE_Int dn,
{
forward_map[i] = htons (val);
if (val < 0xffff)
- val += 1;
+ val += 1;
}
- DBG (DBG_proc, "Done preparing forward calibration map\n");
+ DBG (DBG_proc, "Done preparing forward calibration map. n=%u, bytes_per_entry=%zu\n", forward_map_size, sizeof(uint16_t));
ret = hp5590_bulk_write (dn,
- proto_flags,
- 0x012a,
- (unsigned char *) forward_map,
- forward_map_size * sizeof (uint16_t));
+ proto_flags,
+ 0x012a,
+ (unsigned char *) forward_map,
+ forward_map_size * sizeof (uint16_t));
if (ret != SANE_STATUS_GOOD)
return ret;
ret = hp5590_bulk_write (dn,
- proto_flags,
- 0x022a,
- (unsigned char *) forward_map,
- forward_map_size * sizeof (uint16_t));
+ proto_flags,
+ 0x022a,
+ (unsigned char *) forward_map,
+ forward_map_size * sizeof (uint16_t));
if (ret != SANE_STATUS_GOOD)
return ret;
ret = hp5590_bulk_write (dn,
- proto_flags,
- 0x032a,
- (unsigned char *) forward_map,
- forward_map_size * sizeof (uint16_t));
+ proto_flags,
+ 0x032a,
+ (unsigned char *) forward_map,
+ forward_map_size * sizeof (uint16_t));
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1846,9 +1897,9 @@ hp5590_send_forward_calibration_maps (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned char *bytes, unsigned int size,
- void *state)
+ enum proto_flags proto_flags,
+ unsigned char *bytes, unsigned int size,
+ void *state)
{
SANE_Status ret;
@@ -1867,7 +1918,7 @@ hp5590_read (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_start_scan (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
uint8_t reg_051b = 0x40;
SANE_Status ret;
@@ -1877,11 +1928,11 @@ hp5590_start_scan (SANE_Int dn,
hp5590_cmds_assert (sizeof (reg_051b) == 1);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_VERIFY,
- CMD_START_SCAN,
- (unsigned char *) &reg_051b,
- sizeof (reg_051b), CORE_NONE);
+ proto_flags,
+ CMD_VERIFY,
+ CMD_START_SCAN,
+ (unsigned char *) &reg_051b,
+ sizeof (reg_051b), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1891,8 +1942,8 @@ hp5590_start_scan (SANE_Int dn,
/******************************************************************************/
static SANE_Status
hp5590_read_buttons (SANE_Int dn,
- enum proto_flags proto_flags,
- enum button_status * status)
+ enum proto_flags proto_flags,
+ enum button_status * status)
{
uint16_t button_status;
SANE_Status ret;
@@ -1903,11 +1954,11 @@ hp5590_read_buttons (SANE_Int dn,
hp5590_cmds_assert (sizeof (button_status) == 2);
ret = hp5590_cmd (dn,
- proto_flags,
- CMD_IN | CMD_VERIFY,
- CMD_BUTTON_STATUS,
- (unsigned char *) &button_status,
- sizeof (button_status), CORE_NONE);
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_BUTTON_STATUS,
+ (unsigned char *) &button_status,
+ sizeof (button_status), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -1962,6 +2013,47 @@ hp5590_read_buttons (SANE_Int dn,
return SANE_STATUS_GOOD;
}
+/******************************************************************************/
+static SANE_Status
+hp5590_read_lcd_and_led (SANE_Int dn,
+ enum proto_flags proto_flags,
+ SANE_Int * lcd_counter,
+ enum color_led_status * color_led)
+{
+ SANE_Status ret;
+
+ DBG (DBG_proc, "%s\n", __func__);
+
+ hp5590_cmds_assert (lcd_counter != NULL);
+ hp5590_cmds_assert (color_led != NULL);
+
+ /*
+ * Read LCD status bytes and get current value of counter and
+ * state of color/black_white LED.
+ * data[0x29]: LCD counter value, data[0x2a]: 1=color / 2=black_white.
+ */
+ uint8_t data[0x30];
+ ret = hp5590_cmd (dn,
+ proto_flags,
+ CMD_IN | CMD_VERIFY,
+ CMD_LCD_STATUS,
+ (unsigned char *) &data,
+ sizeof (data), CORE_NONE);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+
+ *lcd_counter = data[0x29];
+ if (data[0x2a] == 2) {
+ *color_led = LED_BLACKWHITE;
+ } else {
+ *color_led = LED_COLOR;
+ }
+ DBG (DBG_cmds, "LCD and LED values: lcd=%d, led=%s\n", *lcd_counter,
+ *color_led == LED_BLACKWHITE ? "black_white" : "color");
+
+ return SANE_STATUS_GOOD;
+}
+
/* SET SCAN PARAMETERS
==================== 50 =======================
BW 50 (425 x 585)
@@ -2040,13 +2132,13 @@ GRAY 100
18 00 64 00 64 00 00 00 00 04 f8 06 db 00 80 00
40 08 e8 40 00 64 00 64 00 64 00 00 00 00 00 00
00 00 00 03 50
-
+
COLOR 100
18 00 64 00 64 00 00 00 00 04 f8 06 db 00 80 00
00 18 e8 40 00 64 00 64 00 64 00 00 00 00 00 00
00 00 00 09 f0
-COLOR 100 48bit, preview
+COLOR 100 48bit, preview
18 00 64 00 64 00 00 00 00 04 f8 06 db 00 80 00
00 30 e8 40 00 64 00 64 00 64 00 00 00 00 00 00
04 00 00 13 e0
@@ -2144,7 +2236,7 @@ GRAY 400
18 02 58 02 58 00 00 00 00 13 ec 1b 6c 00 80 00
40 08 c8 40 00 64 00 64 00 64 00 00 00 00 00 00
00 00 00 13 ec
-
+
COLOR 400
18 02 58 02 58 00 00 00 00 13 ec 1b 6c 00 80 00
00 18 c8 40 00 64 00 64 00 64 00 00 00 00 00 00
diff --git a/backend/hp5590_cmds.h b/backend/hp5590_cmds.h
index c8da0f2..7179853 100644
--- a/backend/hp5590_cmds.h
+++ b/backend/hp5590_cmds.h
@@ -48,10 +48,10 @@
#include "hp5590_low.h"
-#define TMA_MAX_X_INCHES 1.69
-#define TMA_MAX_Y_INCHES 6
+#define TMA_MAX_X_INCHES 1.69
+#define TMA_MAX_Y_INCHES 6
-#define ADF_MAX_Y_INCHES 14
+#define ADF_MAX_Y_INCHES 14
enum hp_scanner_types
{
@@ -101,6 +101,12 @@ enum button_status
BUTTON_CANCEL
};
+enum color_led_status
+{
+ LED_COLOR = 1,
+ LED_BLACKWHITE
+};
+
enum hp5590_lamp_state
{
LAMP_STATE_TURNOFF = 1,
@@ -111,92 +117,92 @@ enum hp5590_lamp_state
struct hp5590_model
{
- enum hp_scanner_types scanner_type;
- unsigned int usb_vendor_id;
- unsigned int usb_product_id;
- const char *vendor_id;
- const char *model;
- const char *kind;
- enum proto_flags proto_flags;
+ enum hp_scanner_types scanner_type;
+ unsigned int usb_vendor_id;
+ unsigned int usb_product_id;
+ const char *vendor_id;
+ const char *model;
+ const char *kind;
+ enum proto_flags proto_flags;
};
-#define FEATURE_NONE 0
-#define FEATURE_ADF 1 << 0
-#define FEATURE_TMA 1 << 1
-#define FEATURE_LCD 1 << 2
+#define FEATURE_NONE 0
+#define FEATURE_ADF 1 << 0
+#define FEATURE_TMA 1 << 1
+#define FEATURE_LCD 1 << 2
struct scanner_info
{
- const char *model;
- const char *kind;
- unsigned int features;
- const char *fw_version;
- unsigned int max_dpi_x;
- unsigned int max_dpi_y;
- unsigned int max_pixels_x;
- unsigned int max_pixels_y;
- float max_size_x;
- float max_size_y;
- unsigned int max_motor_param;
- unsigned int normal_motor_param;
+ const char *model;
+ const char *kind;
+ unsigned int features;
+ const char *fw_version;
+ unsigned int max_dpi_x;
+ unsigned int max_dpi_y;
+ unsigned int max_pixels_x;
+ unsigned int max_pixels_y;
+ float max_size_x;
+ float max_size_y;
+ unsigned int max_motor_param;
+ unsigned int normal_motor_param;
};
static SANE_Status hp5590_model_def (enum hp_scanner_types scanner_type,
- const struct hp5590_model ** model);
+ const struct hp5590_model ** model);
static SANE_Status hp5590_vendor_product_id (enum hp_scanner_types scanner_type,
- SANE_Word * vendor_id,
- SANE_Word * product_id);
+ SANE_Word * vendor_id,
+ SANE_Word * product_id);
static SANE_Status hp5590_init_scanner (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info **info,
- enum hp_scanner_types scanner_type);
+ enum proto_flags proto_flags,
+ struct scanner_info **info,
+ enum hp_scanner_types scanner_type);
static SANE_Status hp5590_power_status (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_read_max_scan_count (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int *max_count);
+ enum proto_flags proto_flags,
+ unsigned int *max_count);
static SANE_Status hp5590_select_source_and_wakeup (SANE_Int dn,
- enum proto_flags proto_flags,
- enum scan_sources source,
- SANE_Bool extend_lamp_timeout);
+ enum proto_flags proto_flags,
+ enum scan_sources source,
+ SANE_Bool extend_lamp_timeout);
static SANE_Status hp5590_stop_scan (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_read_scan_count (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int *count);
+ enum proto_flags proto_flags,
+ unsigned int *count);
static SANE_Status hp5590_set_scan_params (SANE_Int dn,
- enum proto_flags proto_flags,
- struct scanner_info *scanner_info,
- unsigned int top_x, unsigned int top_y,
- unsigned int width, unsigned int height,
- unsigned int dpi,
- enum color_depths color_depth,
- enum scan_modes scan_mode,
- enum scan_sources scan_source);
+ enum proto_flags proto_flags,
+ struct scanner_info *scanner_info,
+ unsigned int top_x, unsigned int top_y,
+ unsigned int width, unsigned int height,
+ unsigned int dpi,
+ enum color_depths color_depth,
+ enum scan_modes scan_mode,
+ enum scan_sources scan_source);
static SANE_Status hp5590_send_forward_calibration_maps (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_send_reverse_calibration_map (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_inc_scan_count (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_start_scan (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_read (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned char *bytes,
- unsigned int size, void *state);
+ enum proto_flags proto_flags,
+ unsigned char *bytes,
+ unsigned int size, void *state);
static SANE_Status hp5590_read_buttons (SANE_Int dn,
- enum proto_flags proto_flags,
- enum button_status *status);
+ enum proto_flags proto_flags,
+ enum button_status *status);
static SANE_Status hp5590_read_part_number (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_calc_pixel_bits (unsigned int dpi,
- enum color_depths color_depth,
- unsigned int *pixel_bits);
+ enum color_depths color_depth,
+ unsigned int *pixel_bits);
static SANE_Status hp5590_is_data_available (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_reset_scan_head (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
#endif /* HP5590_H */
/* vim: sw=2 ts=8
*/
diff --git a/backend/hp5590_low.c b/backend/hp5590_low.c
index 4961fd7..4936c58 100644
--- a/backend/hp5590_low.c
+++ b/backend/hp5590_low.c
@@ -59,9 +59,9 @@
#include "hp5590_low.h"
/* Debug levels */
-#define DBG_err 0
-#define DBG_proc 10
-#define DBG_usb 50
+#define DBG_err 0
+#define DBG_proc 10
+#define DBG_usb 50
/* Custom assert() macro */
#define hp5590_low_assert(exp) if(!(exp)) { \
@@ -72,38 +72,38 @@
/* Structure describing bulk transfer size */
struct bulk_size
{
- uint16_t size;
- uint8_t unused;
+ uint16_t size;
+ uint8_t unused;
} __attribute__ ((packed));
/* Structure describing bulk URB */
/* FIXME: Verify according to USB standard */
struct usb_in_usb_bulk_setup
{
- uint8_t bRequestType;
- uint8_t bRequest;
- uint8_t bEndpoint;
- uint16_t unknown;
- uint16_t wLength; /* MSB first */
- uint8_t pad;
+ uint8_t bRequestType;
+ uint8_t bRequest;
+ uint8_t bEndpoint;
+ uint16_t unknown;
+ uint16_t wLength; /* MSB first */
+ uint8_t pad;
} __attribute__ ((packed));
/* Structure describing control URB */
struct usb_in_usb_ctrl_setup {
uint8_t bRequestType;
uint8_t bRequest;
- uint16_t wValue; /* MSB first */
- uint16_t wIndex; /* MSB first */
- uint16_t wLength; /* LSB first */
+ uint16_t wValue; /* MSB first */
+ uint16_t wIndex; /* MSB first */
+ uint16_t wLength; /* LSB first */
} __attribute__ ((packed));
/* CORE status flag - ready or not */
-#define CORE_FLAG_NOT_READY 1 << 1
+#define CORE_FLAG_NOT_READY 1 << 1
/* Bulk transfers are done in pages, below their respective sizes */
-#define BULK_WRITE_PAGE_SIZE 0x0f000
-#define BULK_READ_PAGE_SIZE 0x10000
-#define ALLOCATE_BULK_READ_PAGES 16 /* 16 * 65536 = 1Mb */
+#define BULK_WRITE_PAGE_SIZE 0x0f000
+#define BULK_READ_PAGE_SIZE 0x10000
+#define ALLOCATE_BULK_READ_PAGES 16 /* 16 * 65536 = 1Mb */
/* Structure describing bulk read state, because bulk reads will be done in
* pages, but function caller uses its own buffer, whose size is certainly
@@ -112,14 +112,14 @@ struct usb_in_usb_ctrl_setup {
*/
struct bulk_read_state
{
- unsigned char *buffer;
- unsigned int buffer_size;
- unsigned int bytes_available;
+ unsigned char *buffer;
+ unsigned int buffer_size;
+ unsigned int bytes_available;
unsigned char *buffer_out_ptr;
unsigned char *buffer_in_ptr;
- unsigned int total_pages;
+ unsigned int total_pages;
unsigned char *buffer_end_ptr;
- unsigned int initialized;
+ unsigned int initialized;
};
/*******************************************************************************
@@ -134,10 +134,10 @@ struct bulk_read_state
*/
static SANE_Status
hp5590_get_ack (SANE_Int dn,
- enum proto_flags proto_flags)
+ enum proto_flags proto_flags)
{
- uint8_t status;
- SANE_Status ret;
+ uint8_t status;
+ SANE_Status ret;
/* Bypass reading acknowledge if the device doesn't need it */
if (proto_flags & PF_NO_USB_IN_USB_ACK)
@@ -147,22 +147,22 @@ hp5590_get_ack (SANE_Int dn,
/* Check if USB-in-USB operation was accepted */
ret = sanei_usb_control_msg (dn, USB_DIR_IN | USB_TYPE_VENDOR,
- 0x0c, 0x8e, 0x20,
- sizeof (status), &status);
+ 0x0c, 0x8e, 0x20,
+ sizeof (status), &status);
if (ret != SANE_STATUS_GOOD)
{
DBG (DBG_err, "%s: USB-in-USB: error getting acknowledge\n",
- __func__);
+ __func__);
return ret;
}
DBG (DBG_usb, "%s: USB-in-USB: accepted\n", __func__);
- /* Check if we received correct acknowledgement */
+ /* Check if we received correct acknowledgment */
if (status != 0x01)
{
DBG (DBG_err, "%s: USB-in-USB: not accepted (status %u)\n",
- __func__, status);
+ __func__, status);
return SANE_STATUS_DEVICE_BUSY;
}
@@ -181,7 +181,7 @@ hp5590_get_ack (SANE_Int dn,
*/
static SANE_Status
hp5590_get_status (SANE_Int dn,
- __sane_unused__ enum proto_flags proto_flags)
+ __sane_unused__ enum proto_flags proto_flags)
{
uint8_t status;
SANE_Status ret;
@@ -189,12 +189,12 @@ hp5590_get_status (SANE_Int dn,
DBG (DBG_proc, "%s\n", __func__);
ret = sanei_usb_control_msg (dn, USB_DIR_IN | USB_TYPE_VENDOR,
- 0x0c, 0x8e, 0x00,
- sizeof (status), &status);
+ 0x0c, 0x8e, 0x00,
+ sizeof (status), &status);
if (ret != SANE_STATUS_GOOD)
{
DBG (DBG_err, "%s: USB-in-USB: error getting device status\n",
- __func__);
+ __func__);
return ret;
}
@@ -202,7 +202,7 @@ hp5590_get_status (SANE_Int dn,
if (status != 0x00)
{
DBG (DBG_err, "%s: USB-in-USB: got non-zero device status (status %u)\n",
- __func__, status);
+ __func__, status);
return SANE_STATUS_DEVICE_BUSY;
}
@@ -214,15 +214,15 @@ hp5590_get_status (SANE_Int dn,
*
* Parameters
* dn - sanei_usb device descriptor
- * requesttype, request, value, index - their meaninings are similar to
+ * requesttype, request, value, index - their meanings are similar to
* sanei_control_msg()
* bytes - pointer to data buffer
* size - size of data
- * core_flags -
+ * core_flags -
* CORE_NONE - no CORE operation will be performed
* CORE_DATA - operation on CORE data will be performed
* CORE_BULK_IN - preparation for bulk IN transfer (not used yet)
- * CORE_BULK_OUT - preparation for bulk OUT trasfer
+ * CORE_BULK_OUT - preparation for bulk OUT transfer
*
* Returns
* SANE_STATUS_GOOD - control message was sent w/o any errors
@@ -230,18 +230,18 @@ hp5590_get_status (SANE_Int dn,
*/
static SANE_Status
hp5590_control_msg (SANE_Int dn,
- enum proto_flags proto_flags,
- int requesttype, int request,
- int value, int index, unsigned char *bytes,
- int size, int core_flags)
+ enum proto_flags proto_flags,
+ int requesttype, int request,
+ int value, int index, unsigned char *bytes,
+ int size, int core_flags)
{
- struct usb_in_usb_ctrl_setup ctrl;
- SANE_Status ret;
- unsigned int len;
- unsigned char *ptr;
- uint8_t ack;
- uint8_t response;
- unsigned int needed_response;
+ struct usb_in_usb_ctrl_setup ctrl;
+ SANE_Status ret;
+ unsigned int len;
+ unsigned char *ptr;
+ uint8_t ack;
+ uint8_t response;
+ unsigned int needed_response;
DBG (DBG_proc, "%s: USB-in-USB: core data: %s\n",
__func__, core_flags & CORE_DATA ? "yes" : "no");
@@ -262,60 +262,60 @@ hp5590_control_msg (SANE_Int dn,
DBG (DBG_usb, "%s: USB-in-USB: sending control msg\n", __func__);
/* Send USB-in-USB control message */
ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x04, 0x8f, 0x00,
- sizeof (ctrl), (unsigned char *) &ctrl);
+ 0x04, 0x8f, 0x00,
+ sizeof (ctrl), (unsigned char *) &ctrl);
if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending control message\n",
- __func__);
- return ret;
- }
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending control message\n",
+ __func__);
+ return ret;
+ }
/* USB-in-USB: checking acknowledge for control message */
ret = hp5590_get_ack (dn, proto_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
len = size;
ptr = bytes;
/* Data is read in 8 byte portions */
while (len)
- {
- unsigned int next_packet_size;
- next_packet_size = 8;
- if (len < 8)
- next_packet_size = len;
-
- /* Read USB-in-USB data */
- ret = sanei_usb_control_msg (dn, USB_DIR_IN | USB_TYPE_VENDOR,
- core_flags & CORE_DATA ? 0x0c : 0x04,
- 0x90, 0x00, next_packet_size, ptr);
- if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error reading data\n", __func__);
- return ret;
- }
-
- ptr += next_packet_size;
- len -= next_packet_size;
- }
+ {
+ unsigned int next_packet_size;
+ next_packet_size = 8;
+ if (len < 8)
+ next_packet_size = len;
+
+ /* Read USB-in-USB data */
+ ret = sanei_usb_control_msg (dn, USB_DIR_IN | USB_TYPE_VENDOR,
+ core_flags & CORE_DATA ? 0x0c : 0x04,
+ 0x90, 0x00, next_packet_size, ptr);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error reading data\n", __func__);
+ return ret;
+ }
+
+ ptr += next_packet_size;
+ len -= next_packet_size;
+ }
/* Confirm data reception */
ack = 0;
ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x0c, 0x8f, 0x00,
- sizeof (ack), &ack);
+ 0x0c, 0x8f, 0x00,
+ sizeof (ack), &ack);
if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error confirming data reception\n",
- __func__);
- return -1;
- }
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error confirming data reception\n",
+ __func__);
+ return -1;
+ }
/* USB-in-USB: checking if confirmation was acknowledged */
ret = hp5590_get_ack (dn, proto_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
}
/* OUT (write) operation will be performed */
@@ -332,112 +332,112 @@ hp5590_control_msg (SANE_Int dn,
DBG (DBG_usb, "%s: USB-in-USB: sending control msg\n", __func__);
/* Send USB-in-USB control message */
ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x04, 0x8f, 0x00,
- sizeof (ctrl), (unsigned char *) &ctrl);
+ 0x04, 0x8f, 0x00,
+ sizeof (ctrl), (unsigned char *) &ctrl);
if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending control message\n",
- __func__);
- return ret;
- }
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending control message\n",
+ __func__);
+ return ret;
+ }
/* USB-in-USB: checking acknowledge for control message */
ret = hp5590_get_ack (dn, proto_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
len = size;
ptr = bytes;
/* Data is sent in 8 byte portions */
while (len)
- {
- unsigned int next_packet_size;
- next_packet_size = 8;
- if (len < 8)
- next_packet_size = len;
-
- /* Send USB-in-USB data */
- ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- core_flags & CORE_DATA ? 0x04 : 0x0c,
- 0x8f, 0x00, next_packet_size, ptr);
- if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending data\n", __func__);
- return ret;
- }
-
- /* CORE data is acknowledged packet by packet */
- if (core_flags & CORE_DATA)
- {
- /* USB-in-USB: checking if data was accepted */
- ret = hp5590_get_ack (dn, proto_flags);
- if (ret != SANE_STATUS_GOOD)
- return ret;
- }
-
- ptr += next_packet_size;
- len -= next_packet_size;
- }
+ {
+ unsigned int next_packet_size;
+ next_packet_size = 8;
+ if (len < 8)
+ next_packet_size = len;
+
+ /* Send USB-in-USB data */
+ ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
+ core_flags & CORE_DATA ? 0x04 : 0x0c,
+ 0x8f, 0x00, next_packet_size, ptr);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending data\n", __func__);
+ return ret;
+ }
+
+ /* CORE data is acknowledged packet by packet */
+ if (core_flags & CORE_DATA)
+ {
+ /* USB-in-USB: checking if data was accepted */
+ ret = hp5590_get_ack (dn, proto_flags);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
+
+ ptr += next_packet_size;
+ len -= next_packet_size;
+ }
/* Normal (non-CORE) data is acknowledged after its full transmission */
if (!(core_flags & CORE_DATA))
- {
- /* USB-in-USB: checking if data was accepted */
- ret = hp5590_get_ack (dn, proto_flags);
- if (ret != SANE_STATUS_GOOD)
- return ret;
- }
+ {
+ /* USB-in-USB: checking if data was accepted */
+ ret = hp5590_get_ack (dn, proto_flags);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
/* Getting response after data transmission */
DBG (DBG_usb, "%s: USB-in-USB: getting response\n", __func__);
ret = sanei_usb_control_msg (dn, USB_DIR_IN | USB_TYPE_VENDOR,
- 0x0c, 0x90, 0x00,
- sizeof (response), &response);
+ 0x0c, 0x90, 0x00,
+ sizeof (response), &response);
if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error getting response\n", __func__);
- return ret;
- }
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error getting response\n", __func__);
+ return ret;
+ }
/* Necessary response after normal (non-CORE) data is 0x00,
* after bulk OUT preparation - 0x24
*/
needed_response = core_flags & CORE_BULK_OUT ? 0x24 : 0x00;
if (response == needed_response)
- DBG (DBG_usb, "%s: USB-in-USB: got correct response\n",
- __func__);
+ DBG (DBG_usb, "%s: USB-in-USB: got correct response\n",
+ __func__);
if (response != needed_response)
- {
- DBG (DBG_err,
- "%s: USB-in-USB: invalid response received "
- "(needed %04x, got %04x)\n",
- __func__, needed_response, response);
- return SANE_STATUS_IO_ERROR;
- }
+ {
+ DBG (DBG_err,
+ "%s: USB-in-USB: invalid response received "
+ "(needed %04x, got %04x)\n",
+ __func__, needed_response, response);
+ return SANE_STATUS_IO_ERROR;
+ }
/* Send bulk OUT flags is bulk OUT preparation is performed */
if (core_flags & CORE_BULK_OUT)
- {
- uint8_t bulk_flags = 0x24;
- DBG (DBG_usb, "%s: USB-in-USB: sending bulk flags\n",
- __func__);
-
- ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x0c, 0x83, 0x00,
- sizeof (bulk_flags), &bulk_flags);
- if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending bulk flags\n",
- __func__);
- return ret;
- }
-
- /* USB-in-USB: checking confirmation for bulk flags */
- ret = hp5590_get_ack (dn, proto_flags);
- if (ret != SANE_STATUS_GOOD)
- return ret;
- }
+ {
+ uint8_t bulk_flags = 0x24;
+ DBG (DBG_usb, "%s: USB-in-USB: sending bulk flags\n",
+ __func__);
+
+ ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
+ 0x0c, 0x83, 0x00,
+ sizeof (bulk_flags), &bulk_flags);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending bulk flags\n",
+ __func__);
+ return ret;
+ }
+
+ /* USB-in-USB: checking confirmation for bulk flags */
+ ret = hp5590_get_ack (dn, proto_flags);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
}
return SANE_STATUS_GOOD;
@@ -458,24 +458,24 @@ hp5590_control_msg (SANE_Int dn,
*/
static SANE_Status
hp5590_verify_last_cmd (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int cmd)
+ enum proto_flags proto_flags,
+ unsigned int cmd)
{
- uint16_t verify_cmd;
- unsigned int last_cmd;
- unsigned int core_status;
- SANE_Status ret;
+ uint16_t verify_cmd;
+ unsigned int last_cmd;
+ unsigned int core_status;
+ SANE_Status ret;
DBG (3, "%s: USB-in-USB: command verification requested\n",
__func__);
/* Read last command along with CORE status */
ret = hp5590_control_msg (dn,
- proto_flags,
- USB_DIR_IN,
- 0x04, 0xc5, 0x00,
- (unsigned char *) &verify_cmd,
- sizeof (verify_cmd), CORE_NONE);
+ proto_flags,
+ USB_DIR_IN,
+ 0x04, 0xc5, 0x00,
+ (unsigned char *) &verify_cmd,
+ sizeof (verify_cmd), CORE_NONE);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -493,8 +493,8 @@ hp5590_verify_last_cmd (SANE_Int dn,
if ((cmd & 0x00ff) != last_cmd)
{
DBG (DBG_err, "%s: USB-in-USB: command verification failed: "
- "expected 0x%04x, got 0x%04x\n",
- __func__, cmd, last_cmd);
+ "expected 0x%04x, got 0x%04x\n",
+ __func__, cmd, last_cmd);
return SANE_STATUS_IO_ERROR;
}
@@ -511,15 +511,15 @@ hp5590_verify_last_cmd (SANE_Int dn,
*
* Parameters
* dn - sanei_usb device descriptor
- * requesttype, request, value, index - their meaninings are similar to
+ * requesttype, request, value, index - their meanings are similar to
* sanei_control_msg()
* bytes - pointer to data buffer
* size - size of data
- * core_flags -
+ * core_flags -
* CORE_NONE - no CORE operation will be performed
* CORE_DATA - operation on CORE data will be performed
* CORE_BULK_IN - preparation for bulk IN transfer (not used yet)
- * CORE_BULK_OUT - preparation for bulk OUT trasfer
+ * CORE_BULK_OUT - preparation for bulk OUT transfer
*
* Returns
* SANE_STATUS_GOOD - command was sent (and possible verified) w/o any errors
@@ -527,19 +527,19 @@ hp5590_verify_last_cmd (SANE_Int dn,
*/
static SANE_Status
hp5590_cmd (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int flags,
- unsigned int cmd, unsigned char *data, unsigned int size,
- unsigned int core_flags)
+ enum proto_flags proto_flags,
+ unsigned int flags,
+ unsigned int cmd, unsigned char *data, unsigned int size,
+ unsigned int core_flags)
{
SANE_Status ret;
DBG (3, "%s: USB-in-USB: command : %04x\n", __func__, cmd);
ret = hp5590_control_msg (dn,
- proto_flags,
- flags & CMD_IN ? USB_DIR_IN : USB_DIR_OUT,
- 0x04, cmd, 0x00, data, size, core_flags);
+ proto_flags,
+ flags & CMD_IN ? USB_DIR_IN : USB_DIR_OUT,
+ 0x04, cmd, 0x00, data, size, core_flags);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -578,21 +578,21 @@ hp5590_low_init_bulk_read_state (void **state)
memset (bulk_read_state, 0, sizeof (struct bulk_read_state));
bulk_read_state->buffer = malloc (ALLOCATE_BULK_READ_PAGES
- * BULK_READ_PAGE_SIZE);
+ * BULK_READ_PAGE_SIZE);
if (!bulk_read_state->buffer)
{
DBG (DBG_err, "%s: Memory allocation failed for %u bytes\n",
- __func__, ALLOCATE_BULK_READ_PAGES * BULK_READ_PAGE_SIZE);
+ __func__, ALLOCATE_BULK_READ_PAGES * BULK_READ_PAGE_SIZE);
return SANE_STATUS_NO_MEM;
}
bulk_read_state->buffer_size = ALLOCATE_BULK_READ_PAGES
- * BULK_READ_PAGE_SIZE;
+ * BULK_READ_PAGE_SIZE;
bulk_read_state->bytes_available = 0;
bulk_read_state->buffer_out_ptr = bulk_read_state->buffer;
bulk_read_state->buffer_in_ptr = bulk_read_state->buffer;
bulk_read_state->total_pages = 0;
bulk_read_state->buffer_end_ptr = bulk_read_state->buffer
- + bulk_read_state->buffer_size;
+ + bulk_read_state->buffer_size;
bulk_read_state->initialized = 1;
*state = bulk_read_state;
@@ -644,17 +644,17 @@ hp5590_low_free_bulk_read_state (void **state)
*/
static SANE_Status
hp5590_bulk_read (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned char *bytes, unsigned int size,
- void *state)
+ enum proto_flags proto_flags,
+ unsigned char *bytes, unsigned int size,
+ void *state)
{
- struct usb_in_usb_bulk_setup ctrl;
- SANE_Status ret;
- unsigned int next_pages;
- uint8_t bulk_flags;
- size_t next_portion;
- struct bulk_read_state *bulk_read_state;
- unsigned int bytes_until_buffer_end;
+ struct usb_in_usb_bulk_setup ctrl;
+ SANE_Status ret;
+ unsigned int next_pages;
+ uint8_t bulk_flags;
+ size_t next_portion;
+ struct bulk_read_state *bulk_read_state;
+ unsigned int bytes_until_buffer_end;
DBG (3, "%s\n", __func__);
@@ -665,7 +665,7 @@ hp5590_bulk_read (SANE_Int dn,
if (bulk_read_state->initialized == 0)
{
DBG (DBG_err, "%s: USB-in-USB: bulk read state not initialized\n",
- __func__);
+ __func__);
return SANE_STATUS_INVAL;
}
@@ -675,8 +675,8 @@ hp5590_bulk_read (SANE_Int dn,
if (size > bulk_read_state->buffer_size)
{
DBG (DBG_err, "Data requested won't fit in the bulk read buffer "
- "(requested: %u, buffer size: %u\n", size,
- bulk_read_state->buffer_size);
+ "(requested: %u, buffer size: %u\n", size,
+ bulk_read_state->buffer_size);
return SANE_STATUS_NO_MEM;
}
@@ -684,8 +684,8 @@ hp5590_bulk_read (SANE_Int dn,
while (bulk_read_state->bytes_available < size)
{
DBG (DBG_usb, "%s: USB-in-USB: not enough data in buffer available "
- "(available: %u, requested: %u)\n",
- __func__, bulk_read_state->bytes_available, size);
+ "(available: %u, requested: %u)\n",
+ __func__, bulk_read_state->bytes_available, size);
/* IMPORTANT! 'next_pages' means 'request and receive next_pages pages in
* one bulk transfer request '. Windows driver uses 4 pages between each
@@ -703,114 +703,114 @@ hp5590_bulk_read (SANE_Int dn,
*/
bulk_read_state->total_pages++;
DBG (DBG_usb, "%s: USB-in-USB: total pages done: %u\n",
- __func__, bulk_read_state->total_pages);
+ __func__, bulk_read_state->total_pages);
/* Send another bulk request for 'next_pages' before first
* page or next necessary one
*/
if ( bulk_read_state->total_pages == 1
- || bulk_read_state->total_pages % next_pages == 0)
- {
- /* Send bulk flags */
- DBG (DBG_usb, "%s: USB-in-USB: sending USB-in-USB bulk flags\n",
- __func__);
- bulk_flags = 0x24;
- ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x0c, 0x83, 0x00,
- sizeof (bulk_flags), &bulk_flags);
- if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending bulk flags\n",
- __func__);
- return ret;
- }
-
- /* USB-in-USB: checking confirmation for bulk flags\n" */
- ret = hp5590_get_ack (dn, proto_flags);
- if (ret != SANE_STATUS_GOOD)
- return ret;
-
- /* Prepare bulk read request */
- memset (&ctrl, 0, sizeof (ctrl));
- ctrl.bRequestType = 0x00;
- ctrl.bEndpoint = 0x82;
- ctrl.wLength = htons (next_pages);
-
- /* Send bulk read request */
- DBG (DBG_usb, "%s: USB-in-USB: sending control msg for bulk\n",
- __func__);
- ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x04, 0x82, 0x00,
- sizeof (ctrl),
- (unsigned char *) &ctrl);
- if (ret != SANE_STATUS_GOOD)
- {
- DBG (DBG_err, "%s: USB-in-USB: error sending control msg\n",
- __func__);
- return ret;
- }
-
- /* USB-in-USB: checking if control msg was accepted */
- ret = hp5590_get_ack (dn, proto_flags);
- if (ret != SANE_STATUS_GOOD)
- return ret;
- }
+ || bulk_read_state->total_pages % next_pages == 0)
+ {
+ /* Send bulk flags */
+ DBG (DBG_usb, "%s: USB-in-USB: sending USB-in-USB bulk flags\n",
+ __func__);
+ bulk_flags = 0x24;
+ ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
+ 0x0c, 0x83, 0x00,
+ sizeof (bulk_flags), &bulk_flags);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending bulk flags\n",
+ __func__);
+ return ret;
+ }
+
+ /* USB-in-USB: checking confirmation for bulk flags\n" */
+ ret = hp5590_get_ack (dn, proto_flags);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+
+ /* Prepare bulk read request */
+ memset (&ctrl, 0, sizeof (ctrl));
+ ctrl.bRequestType = 0x00;
+ ctrl.bEndpoint = 0x82;
+ ctrl.wLength = htons (next_pages);
+
+ /* Send bulk read request */
+ DBG (DBG_usb, "%s: USB-in-USB: sending control msg for bulk\n",
+ __func__);
+ ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
+ 0x04, 0x82, 0x00,
+ sizeof (ctrl),
+ (unsigned char *) &ctrl);
+ if (ret != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: error sending control msg\n",
+ __func__);
+ return ret;
+ }
+
+ /* USB-in-USB: checking if control msg was accepted */
+ ret = hp5590_get_ack (dn, proto_flags);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
next_portion = BULK_READ_PAGE_SIZE;
/* Check if next page will fit into the buffer */
if (bulk_read_state->buffer_size
- - bulk_read_state->bytes_available < next_portion)
- {
- DBG (DBG_err, "%s: USB-in-USB: buffer too small\n", __func__);
- return SANE_STATUS_NO_MEM;
- }
+ - bulk_read_state->bytes_available < next_portion)
+ {
+ DBG (DBG_err, "%s: USB-in-USB: buffer too small\n", __func__);
+ return SANE_STATUS_NO_MEM;
+ }
/* Bulk read next page */
DBG (DBG_usb, "%s: USB-in-USB: bulk reading %lu bytes\n",
- __func__, (u_long) next_portion);
+ __func__, (u_long) next_portion);
ret = sanei_usb_read_bulk (dn,
- bulk_read_state->buffer_in_ptr,
- &next_portion);
+ bulk_read_state->buffer_in_ptr,
+ &next_portion);
if (ret != SANE_STATUS_GOOD)
- {
- if (ret == SANE_STATUS_EOF)
- return ret;
- DBG (DBG_err, "%s: USB-in-USB: error during bulk read: %s\n",
- __func__, sane_strstatus (ret));
- return ret;
- }
-
- /* Check if we received the same amount of data as requsted */
+ {
+ if (ret == SANE_STATUS_EOF)
+ return ret;
+ DBG (DBG_err, "%s: USB-in-USB: error during bulk read: %s\n",
+ __func__, sane_strstatus (ret));
+ return ret;
+ }
+
+ /* Check if we received the same amount of data as requested */
if (next_portion != BULK_READ_PAGE_SIZE)
- {
- DBG (DBG_err, "%s: USB-in-USB: incomplete bulk read "
- "(requested %u bytes, got %lu bytes)\n",
- __func__, BULK_READ_PAGE_SIZE, (u_long) next_portion);
- return SANE_STATUS_IO_ERROR;
- }
+ {
+ DBG (DBG_err, "%s: USB-in-USB: incomplete bulk read "
+ "(requested %u bytes, got %lu bytes)\n",
+ __func__, BULK_READ_PAGE_SIZE, (u_long) next_portion);
+ return SANE_STATUS_IO_ERROR;
+ }
/* Move pointers to the next position */
bulk_read_state->buffer_in_ptr += next_portion;
/* Check for the end of the buffer */
if (bulk_read_state->buffer_in_ptr > bulk_read_state->buffer_end_ptr)
- {
- 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,
- bulk_read_state->buffer_size);
- return SANE_STATUS_NO_MEM;
- }
+ {
+ 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,
+ bulk_read_state->buffer_size);
+ return SANE_STATUS_NO_MEM;
+ }
/* Check for buffer pointer wrapping */
if (bulk_read_state->buffer_in_ptr == bulk_read_state->buffer_end_ptr)
- {
- DBG (DBG_usb, "%s: USB-in-USB: buffer wrapped while writing\n",
- __func__);
- bulk_read_state->buffer_in_ptr = bulk_read_state->buffer;
- }
+ {
+ DBG (DBG_usb, "%s: USB-in-USB: buffer wrapped while writing\n",
+ __func__);
+ bulk_read_state->buffer_in_ptr = bulk_read_state->buffer;
+ }
/* Count the amount of data we read */
bulk_read_state->bytes_available += next_portion;
@@ -832,13 +832,13 @@ hp5590_bulk_read (SANE_Int dn,
bulk_read_state->buffer_out_ptr = bulk_read_state->buffer;
/* And second part (if any) */
if (bytes_until_buffer_end < size)
- {
- DBG (DBG_usb, "%s: USB-in-USB: giving 2nd buffer part\n", __func__);
- memcpy (bytes + bytes_until_buffer_end,
- bulk_read_state->buffer_out_ptr,
- size - bytes_until_buffer_end);
- bulk_read_state->buffer_out_ptr += size - bytes_until_buffer_end;
- }
+ {
+ DBG (DBG_usb, "%s: USB-in-USB: giving 2nd buffer part\n", __func__);
+ memcpy (bytes + bytes_until_buffer_end,
+ bulk_read_state->buffer_out_ptr,
+ size - bytes_until_buffer_end);
+ bulk_read_state->buffer_out_ptr += size - bytes_until_buffer_end;
+ }
}
else
{
@@ -846,11 +846,11 @@ hp5590_bulk_read (SANE_Int dn,
memcpy (bytes, bulk_read_state->buffer_out_ptr, size);
bulk_read_state->buffer_out_ptr += size;
if (bulk_read_state->buffer_out_ptr == bulk_read_state->buffer_end_ptr)
- {
- DBG (DBG_usb, "%s: USB-in-USB: buffer wrapped while reading\n",
- __func__);
- bulk_read_state->buffer_out_ptr = bulk_read_state->buffer;
- }
+ {
+ DBG (DBG_usb, "%s: USB-in-USB: buffer wrapped while reading\n",
+ __func__);
+ bulk_read_state->buffer_out_ptr = bulk_read_state->buffer;
+ }
}
/* Count the amount of data transferred to the caller */
@@ -870,17 +870,17 @@ hp5590_bulk_read (SANE_Int dn,
*
* Returns
* SANE_STATUS_GOOD - all data transferred successfully
- * all other SANE_Status value - otherwise
+ * all other SANE_Status value - otherwise
*/
static SANE_Status
hp5590_bulk_write (SANE_Int dn,
- enum proto_flags proto_flags,
- int cmd, unsigned char *bytes,
- unsigned int size)
+ enum proto_flags proto_flags,
+ int cmd, unsigned char *bytes,
+ unsigned int size)
{
- struct usb_in_usb_bulk_setup ctrl;
- SANE_Status ret;
- struct bulk_size bulk_size;
+ struct usb_in_usb_bulk_setup ctrl;
+ SANE_Status ret;
+ struct bulk_size bulk_size;
unsigned int len;
unsigned char *ptr;
@@ -891,7 +891,7 @@ hp5590_bulk_write (SANE_Int dn,
hp5590_low_assert (bytes != NULL);
- /* Prepare bulk write request */
+ /* Prepare bulk write request */
memset (&bulk_size, 0, sizeof (bulk_size));
/* Counted in page size */
bulk_size.size = size / BULK_WRITE_PAGE_SIZE;
@@ -900,11 +900,11 @@ hp5590_bulk_write (SANE_Int dn,
DBG (3, "%s: USB-in-USB: total %u pages (each of %u bytes)\n",
__func__, bulk_size.size, BULK_WRITE_PAGE_SIZE);
ret = hp5590_control_msg (dn,
- proto_flags,
- USB_DIR_OUT,
- 0x04, cmd, 0,
- (unsigned char *) &bulk_size, sizeof (bulk_size),
- CORE_DATA | CORE_BULK_OUT);
+ proto_flags,
+ USB_DIR_OUT,
+ 0x04, cmd, 0,
+ (unsigned char *) &bulk_size, sizeof (bulk_size),
+ CORE_DATA | CORE_BULK_OUT);
if (ret != SANE_STATUS_GOOD)
return ret;
@@ -916,10 +916,10 @@ hp5590_bulk_write (SANE_Int dn,
{
next_portion = BULK_WRITE_PAGE_SIZE;
if (len < next_portion)
- next_portion = len;
+ next_portion = len;
DBG (3, "%s: USB-in-USB: next portion %lu bytes\n",
- __func__, (u_long) next_portion);
+ __func__, (u_long) next_portion);
/* Prepare bulk write request */
memset (&ctrl, 0, sizeof (ctrl));
@@ -929,29 +929,29 @@ hp5590_bulk_write (SANE_Int dn,
/* Send bulk write request */
ret = sanei_usb_control_msg (dn, USB_DIR_OUT | USB_TYPE_VENDOR,
- 0x04, 0x82, 0,
- sizeof (ctrl), (unsigned char *) &ctrl);
+ 0x04, 0x82, 0,
+ sizeof (ctrl), (unsigned char *) &ctrl);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
/* USB-in-USB: checking if command was accepted */
ret = hp5590_get_ack (dn, proto_flags);
if (ret != SANE_STATUS_GOOD)
- return ret;
+ return ret;
/* Write bulk data */
DBG (3, "%s: USB-in-USB: bulk writing %lu bytes\n",
- __func__, (u_long) next_portion);
+ __func__, (u_long) next_portion);
ret = sanei_usb_write_bulk (dn, ptr, &next_portion);
if (ret != SANE_STATUS_GOOD)
- {
- /* Treast EOF as successful result */
- if (ret == SANE_STATUS_EOF)
- break;
- DBG (DBG_err, "%s: USB-in-USB: error during bulk write: %s\n",
- __func__, sane_strstatus (ret));
- return ret;
- }
+ {
+ /* Treast EOF as successful result */
+ if (ret == SANE_STATUS_EOF)
+ break;
+ DBG (DBG_err, "%s: USB-in-USB: error during bulk write: %s\n",
+ __func__, sane_strstatus (ret));
+ return ret;
+ }
/* Move to the next page */
len -= next_portion;
diff --git a/backend/hp5590_low.h b/backend/hp5590_low.h
index 5ca191d..4882860 100644
--- a/backend/hp5590_low.h
+++ b/backend/hp5590_low.h
@@ -48,40 +48,40 @@
#include "../include/sane/sane.h"
enum proto_flags {
- PF_NONE = 0,
- PF_NO_USB_IN_USB_ACK = 1 << 0 /* Getting acknowledge after USB-in-USB command
- * will be skipped */
+ PF_NONE = 0,
+ PF_NO_USB_IN_USB_ACK = 1 << 0 /* Getting acknowledge after USB-in-USB command
+ * will be skipped */
};
/* Flags for hp5590_cmd() */
-#define CMD_IN 1 << 0 /* Indicates IN direction, otherwise - OUT */
-#define CMD_VERIFY 1 << 1 /* Requests last command verification */
+#define CMD_IN 1 << 0 /* Indicates IN direction, otherwise - OUT */
+#define CMD_VERIFY 1 << 1 /* Requests last command verification */
/* Core flags for hp5590_cmd() - they indicate so called CORE commands */
-#define CORE_NONE 0 /* No CORE operation */
-#define CORE_DATA 1 << 0 /* Operate on CORE data */
-#define CORE_BULK_IN 1 << 1 /* CORE bulk operation - prepare for bulk IN
- * transfer (not used yet)
- */
-#define CORE_BULK_OUT 1 << 2 /* CORE bulk operation - prepare for bulk OUT
- * transfer
- */
+#define CORE_NONE 0 /* No CORE operation */
+#define CORE_DATA 1 << 0 /* Operate on CORE data */
+#define CORE_BULK_IN 1 << 1 /* CORE bulk operation - prepare for bulk IN
+ * transfer (not used yet)
+ */
+#define CORE_BULK_OUT 1 << 2 /* CORE bulk operation - prepare for bulk OUT
+ * transfer
+ */
static SANE_Status hp5590_cmd (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned int flags,
- unsigned int cmd, unsigned char *data,
- unsigned int size, unsigned int core_flags);
+ enum proto_flags proto_flags,
+ unsigned int flags,
+ unsigned int cmd, unsigned char *data,
+ unsigned int size, unsigned int core_flags);
static SANE_Status hp5590_bulk_read (SANE_Int dn,
- enum proto_flags proto_flags,
- unsigned char *bytes,
- unsigned int size, void *state);
+ enum proto_flags proto_flags,
+ unsigned char *bytes,
+ unsigned int size, void *state);
static SANE_Status hp5590_bulk_write (SANE_Int dn,
- enum proto_flags proto_flags,
- int cmd,
- unsigned char *bytes,
- unsigned int size);
+ enum proto_flags proto_flags,
+ int cmd,
+ unsigned char *bytes,
+ unsigned int size);
static SANE_Status hp5590_get_status (SANE_Int dn,
- enum proto_flags proto_flags);
+ enum proto_flags proto_flags);
static SANE_Status hp5590_low_init_bulk_read_state (void **state);
static SANE_Status hp5590_low_free_bulk_read_state (void **state);
#endif /* HP5590_LOW_H */
diff --git a/backend/hpljm1005.c b/backend/hpljm1005.c
index 9460c48..be3b8f4 100644
--- a/backend/hpljm1005.c
+++ b/backend/hpljm1005.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2007-2008 Philippe Rtornaz
+ Copyright (C) 2007-2008 Philippe Rétornaz
This file is part of the SANE package.
@@ -41,7 +41,7 @@
If you do not wish that, delete this exception notice.
This backend is for HP LaserJet M1005 MFP
-
+
Highly inspired from the epson backend
*/
@@ -177,7 +177,7 @@ static int devlist_count; /* Number of element in the list */
/*
* List of pointers to devices - will be dynamically allocated depending
- * on the number of devices found.
+ * on the number of devices found.
*/
static SANE_Device **devlist = NULL;
@@ -193,7 +193,7 @@ update_img_size (struct device_s *dev)
{
int dx, dy;
- /* Only update the width when not scanning,
+ /* Only update the width when not scanning,
* otherwise the scanner give us the correct width */
if (dev->status == STATUS_SCANNING)
{
@@ -235,7 +235,7 @@ update_img_size (struct device_s *dev)
dev->height = round2 ((dy / ((double) MAX_Y_S)) * 14025);
break;
}
-
+
DBG(2,"New image size: %dx%d\n",dev->width, dev->height);
}
@@ -990,8 +990,8 @@ sane_start (SANE_Handle h)
}
-static void
-do_cancel(struct device_s *dev)
+static void
+do_cancel(struct device_s *dev)
{
while (get_data (dev) == SANE_STATUS_GOOD);
free (dev->buffer);
@@ -1064,7 +1064,7 @@ sane_read (SANE_Handle h, SANE_Byte * buf, SANE_Int maxlen, SANE_Int * len)
}
/* Special case where sane_cancel is called while scanning */
- if (dev->status == STATUS_CANCELING)
+ if (dev->status == STATUS_CANCELING)
{
do_cancel(dev);
return SANE_STATUS_CANCELLED;
@@ -1078,7 +1078,7 @@ sane_cancel (SANE_Handle h)
struct device_s *dev = (struct device_s *) h;
- if (dev->status == STATUS_SCANNING)
+ if (dev->status == STATUS_SCANNING)
{
dev->status = STATUS_CANCELING;
return;
@@ -1101,4 +1101,3 @@ sane_get_select_fd (SANE_Handle __sane_unused__ handle,
{
return SANE_STATUS_UNSUPPORTED;
}
-
diff --git a/backend/hpsj5s.c b/backend/hpsj5s.c
index 9c6ad79..786a8d6 100644
--- a/backend/hpsj5s.c
+++ b/backend/hpsj5s.c
@@ -1065,7 +1065,7 @@ CalibrateScanElements ()
SANE_Byte CurrentLowTransferBorder;
SANE_Byte CurrentUpSaveBorder;
SANE_Byte CurrentLowSaveBorder;
- SANE_Byte CurrentSpeed1, CurrentSpeed2;
+ SANE_Byte CurrentSpeed1, CurrentSpeed2;
SANE_Byte CorrectionValue;
SANE_Byte FilteredBuffer[2570];
@@ -1167,14 +1167,14 @@ CalibrateScanElements ()
CallFunctionWithParameter (0x91, 0); /*Stop engine. */
/*Note: if first read failed, junk would be calculated, but if previous
- read was succeded, but last one failed, previous data'ld be used.
+ read was succeeded, but last one failed, previous data'ld be used.
*/
for(Temp = 0, j = 0; j < 2570; j++)
Temp += FilteredBuffer[j];
Temp /= 2570;
if((Average == 0)||(Average > Temp))
- Average = Temp;
+ Average = Temp;
}
for(Index = 0; Index < 3; Index++) /*Three color components*/
@@ -1190,7 +1190,7 @@ CalibrateScanElements ()
CallFunctionWithParameter (0x92, CurrentLowTransferBorder|0x80);
for(j=2999; j>0; j--)
CallFunctionWithParameter (0xC6, 0);
-
+
CurrentUpSaveBorder = arUpSaveBorders[Index];
CallFunctionWithParameter (CurrentUpSaveBorder, 0xFF);
@@ -1199,9 +1199,9 @@ CalibrateScanElements ()
CallFunctionWithParameter (0x90,0);
Calibration = 0x80;
CallFunctionWithParameter (CurrentUpSaveBorder, 0x80);
-
+
CurrentSpeed1 = CurrentSpeed2 = arSpeeds[Index];
-
+
for(CorrectionValue = 0x40; CorrectionValue != 0;CorrectionValue >>= 2)
{
CallFunctionWithParameter (0x91, CurrentSpeed2);
@@ -1235,11 +1235,11 @@ CalibrateScanElements ()
Perhaps, we can optimize it in future.*/
WriteScannerRegister (0x91, 0);
usleep(10);
-
+
for(Temp = 0,j = 0; j < 16;j++)
Temp += FilteredBuffer[509+j]; /*At this offset calcalates HP's driver.*/
Temp /= 16;
-
+
if(Average > Temp)
{
Calibration += CorrectionValue;
@@ -1247,7 +1247,7 @@ CalibrateScanElements ()
}
else
Calibration -= CorrectionValue;
-
+
WriteScannerRegister (CurrentUpSaveBorder, Calibration);
}/*By CorrectionValue we tune UpSaveBorder*/
diff --git a/backend/hpsj5s.conf.in b/backend/hpsj5s.conf.in
index 77fb4e4..d2e5f96 100644
--- a/backend/hpsj5s.conf.in
+++ b/backend/hpsj5s.conf.in
@@ -1,2 +1,2 @@
#hpsj5s.conf
-#parport0 \ No newline at end of file
+#parport0
diff --git a/backend/hs2p-saneopts.h b/backend/hs2p-saneopts.h
index 0e712a3..938c7da 100644
--- a/backend/hs2p-saneopts.h
+++ b/backend/hs2p-saneopts.h
@@ -2,7 +2,7 @@
Copyright (C) 2007 Jeremy Johnson
This file is part of a SANE backend for Ricoh IS450
and IS420 family of HS2P Scanners using the SCSI controller.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -309,7 +309,7 @@ typedef enum
/*OPT_CHECK_ADF, check for page in ADF before scanning */
OPT_ENHANCEMENT_GROUP,
- /* OPT_ACE_FUNCTION,
+ /* OPT_ACE_FUNCTION,
OPT_ACE_SENSITIVITY, */
OPT_BRIGHTNESS, /* Brightness */
OPT_THRESHOLD, /* Threshold */
diff --git a/backend/hs2p-scsi.c b/backend/hs2p-scsi.c
index 431ba9d..6063acd 100644
--- a/backend/hs2p-scsi.c
+++ b/backend/hs2p-scsi.c
@@ -2,7 +2,7 @@
Copyright (C) 2007 Jeremy Johnson
This file is part of a SANE backend for Ricoh IS450
and IS420 family of HS2P Scanners using the SCSI controller.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -291,7 +291,7 @@ print_jis_info (struct inquiry_jis_data *jbuf)
DBG (DBG_info, "[29] reserved %#02x\n", jbuf->reserved2);
}
-/* 1-3-1 TEST UNIT READY
+/* 1-3-1 TEST UNIT READY
Byte0: | 0x00 |
Byte1: | 7-5 Logical Unit Number | Reserved |
Byte2: | Reserved |
@@ -407,8 +407,8 @@ lookup_ascq_errmsg (unsigned int code)
}
/* a sensible sense handler
- arg is a pointer to the associated HS2P_Scanner structure
-
+ arg is a pointer to the associated HS2P_Scanner structure
+
SENSE DATA FORMAT: 14 bytes bits[7-0]
Byte 0: [7]:valid [6-0]:Error Code
Byte 1: Segment Number
@@ -488,9 +488,9 @@ sense_handler (int __sane_unused__ scsi_fd, u_char * sense_buffer, void *sd)
DBG (DBG_sense, "sense_handler: ascq=(%#x,%#x): %#x '%s'\n", asc, ascq,
ascq_key->codequalifier, ascq_key->description);
- /* handle each sense key: Translate from HS2P message to SANE_STATUS_ message
- * SANE_STATUS_GOOD, _ACCESS_DEINIED, _NO_MEM, _INVAL, _IO_ERROR, _DEVICE_BUSY,
- * _EOF, _UNSUPPORTED, _CANCELLED, _JAMMED, _NO_DOCS, _COVER_OPEN
+ /* handle each sense key: Translate from HS2P message to SANE_STATUS_ message
+ * SANE_STATUS_GOOD, _ACCESS_DEINIED, _NO_MEM, _INVAL, _IO_ERROR, _DEVICE_BUSY,
+ * _EOF, _UNSUPPORTED, _CANCELLED, _JAMMED, _NO_DOCS, _COVER_OPEN
*/
switch (sense)
{
@@ -1436,7 +1436,7 @@ set_halftone_mask (int fd, SANE_Byte halftone_id, void *buf,
cmd.dtc = DATA_TYPE_HALFTONE;
_lto2b (halftone_id, cmd.dtq);
- /* Each cell of an NxM dither pattern is 1 byte from the set {2,3,4,6,8,16}
+ /* Each cell of an NxM dither pattern is 1 byte from the set {2,3,4,6,8,16}
* 0x80, 0x81 are User definable custom dither patterns
*/
if (halftone_id != 0x80 && halftone_id != 0x81)
@@ -1547,7 +1547,7 @@ read_adf_status (int fd, SANE_Byte * adf_status_byte)
/* 1-3-4 MODE SELECT */
-/* 1-3-5 Reserve Unit: 0x16
+/* 1-3-5 Reserve Unit: 0x16
* 1-3-6 Release Unit: 0x17
*/
static SANE_Status
@@ -1750,7 +1750,7 @@ trigger_scan (HS2P_Scanner * s)
/* Transfer length is the byte length of Window List transferred
* Window List is a list of Window Identifier created by SET WINDOW command
* Since only 1 Window is supported by SCAN command, 0 or 1 is used for Window Identifier
- * and 1 or 2 for length
+ * and 1 or 2 for length
status = sanei_scsi_cmd (s->fd, &trigger, sizeof (trigger), &window_id_list[0], &wl_size);
*/
scan.cmd.len = (s->val[OPT_DUPLEX].w == SANE_TRUE) ? 2 : 1;
diff --git a/backend/hs2p-scsi.h b/backend/hs2p-scsi.h
index eecb60c..cdf227e 100644
--- a/backend/hs2p-scsi.h
+++ b/backend/hs2p-scsi.h
@@ -2,7 +2,7 @@
Copyright (C) 2007 Jeremy Johnson
This file is part of a SANE backend for Ricoh IS450
and IS420 family of HS2P Scanners using the SCSI controller.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -56,14 +56,14 @@
/* All other status byte keys are reserved */
/*
- * SCSI Command List for Command Descriptor Block
+ * SCSI Command List for Command Descriptor Block
* All reserved bit and fields in the CDB must be zero
* Values in the CDB described as "Reserved" must no be specified
* The FLAG and LINK bits in the CONTROL byte must be zero
* Any values in the Vendor Unique field are ignored
* The Logical Unit Number in the CDB must always be zero
* All Reserved bit and fields in the data fields must be zero
- * Values of parameters in the data fields described as
+ * Values of parameters in the data fields described as
* "Reserved" or "Not supported" must not be specified
*/
@@ -132,7 +132,7 @@ static struct sense_key sensekey_errmsg[16] = {
{0x0f, "RESERVED", "Invalid"}
};
-/* When Error_Code = 0x70 more detailed information is available:
+/* When Error_Code = 0x70 more detailed information is available:
* code, qualifier, description
*/
struct ASCQ
@@ -219,7 +219,7 @@ static struct ASCQ ascq_errmsg[74] = {
typedef struct sense_data
{ /* HS2P_REQUEST_SENSE_DATA */
- /* bit7:valid is 1 if information byte is valid,
+ /* bit7:valid is 1 if information byte is valid,
bits6:0 error_code */
SANE_Byte error_code;
@@ -249,10 +249,10 @@ typedef struct sense_data
#define HS2P_INQUIRY_JIS_PAGE_CODE 0xF0
/*
- * The EVPD and Page Code are used in pair. When the EVPD bit is 0, INQUIRY data
+ * The EVPD and Page Code are used in pair. When the EVPD bit is 0, INQUIRY data
* in the standard format is returned to the initiator. When the EVPD bit is 1,
* the EVPD information specified by each Page Code is returned in each Page Code
- * data format.
+ * data format.
*
* EVPD=0x00, Page_Code=0x00 => Standard Data Format
*
@@ -273,7 +273,7 @@ struct inquiry_standard_data
*/
SANE_Byte devtype; /* must be 0x06 */
- /* bit7: repaceable media bit is set to 0
+ /* bit7: repaceable media bit is set to 0
* bits6-1: reserved
* bit0: EVPD
*/
@@ -324,21 +324,21 @@ struct inquiry_vpd_data
SANE_Byte pagecode; /* Page Code => 0xC0 */
SANE_Byte byte2; /* Reserved */
SANE_Byte pagelength; /* Page Length => 12 (0x0C) */
- SANE_Byte adf_id; /* ADF Identification
+ SANE_Byte adf_id; /* ADF Identification
* 0: No ADF is mounted
* 1: Single sided ADF is mounted
* 2: Double sided ADF is mounted
* 3: ARDF is mounted. (Reverse double side scanning available)
- * 4: Reserved
+ * 4: Reserved
* It should be 1 or 2 with this scanner.
*/
- SANE_Byte end_id; /* Endorser Identification
+ SANE_Byte end_id; /* Endorser Identification
* 0: No endorser
* 1: Endorser mounted
- * 2: Reserved
+ * 2: Reserved
* It should be 0 or 1 with this scanner
*/
- SANE_Byte ipu_id; /* Image Processing Unit Identification
+ SANE_Byte ipu_id; /* Image Processing Unit Identification
* bits 7:2 Reserved
* bit 1 0:Extended board not mounted
* 1:Extended board is mounted
@@ -346,8 +346,8 @@ struct inquiry_vpd_data
* 1:IPU is mounted
* It should always be 0 with this scanner
*/
- SANE_Byte imagecomposition; /* indicates supported image data type.
- * This is set to 0x37
+ SANE_Byte imagecomposition; /* indicates supported image data type.
+ * This is set to 0x37
* bit0 => Line art supported ? 1:0
* bit1 => Dither supported ? 1:0
* bit2 => Error Diffusion supported ? 1:0
@@ -379,13 +379,13 @@ struct inquiry_vpd_data
* bit0 => Marker Recognition supported ? 1:0
* bits1-7 => Reserved
*/
- SANE_Byte sizerecognition; /* Size Detection
+ SANE_Byte sizerecognition; /* Size Detection
* bit0 => Size Detection Supported ? 1:0
* bits1-7 => Reserved
*/
SANE_Byte byte13; /* Reserved */
SANE_Byte xmaxoutputpixels[2]; /* X Maximum Output Pixel is set to 4960 (0x1360)
- * indicates maximum number of pixels in the main
+ * indicates maximum number of pixels in the main
* scanning direction that can be output by scanner
*/
@@ -440,8 +440,8 @@ struct inquiry_jis_data
typedef struct scsi_mode_select_cmd
{
SANE_Byte opcode; /* 15H */
- SANE_Byte byte1; /* 7-5:LUN; 4:PF; 2:Reserved; 1:SP
- * Save Page Bit must be 0 since pages cannot be saved
+ SANE_Byte byte1; /* 7-5:LUN; 4:PF; 2:Reserved; 1:SP
+ * Save Page Bit must be 0 since pages cannot be saved
* Page Format Bit must be 1 */
SANE_Byte reserved[2];
SANE_Byte len; /* Parameter List Length */
@@ -538,7 +538,7 @@ typedef struct mode_page_scanning_measurement
SANE_Byte len; /* Parameter Length (06H) */
SANE_Byte bmu; /* Basic Measurement Unit */
SANE_Byte reserved0;
- SANE_Byte mud[2]; /* Measurement Unit Divisor
+ SANE_Byte mud[2]; /* Measurement Unit Divisor
* produces an error if 0
* mud is fixed to 1 for millimeter or point
* point is default when scanner powers on */
@@ -574,9 +574,9 @@ typedef struct mode_page_adf_control
* 01H Simplex ADF
* 02H Duplex ADF
* 03H-FFH Reserved */
- SANE_Byte adf_mode_control; /* 7-3:Reserved; 2:Prefeed Mode Validity 1-0:Ignored
+ SANE_Byte adf_mode_control; /* 7-3:Reserved; 2:Prefeed Mode Validity 1-0:Ignored
* Prefeed Mode "0" means invalid, "1" means valid */
- SANE_Byte medium_wait_timer; /* indicates time for scanner to wait for media. Scanner
+ SANE_Byte medium_wait_timer; /* indicates time for scanner to wait for media. Scanner
* will send CHECK on timeout. NOT SUPPORTED */
SANE_Byte ignored[3];
} MP_ADF; /* ADF Control */
@@ -636,9 +636,9 @@ typedef struct scsi_mode_sense_cmd
SANE_Byte len; /* Allocation length */
SANE_Byte control; /* 7-6:Vendor Unique; 5-2:Reserved; 1:Flag; 0:Link */
} SENSE;
-/* MODE SENSE DATA FORMAT --
- * The format of Sense Data to be returned is Mode Parameter Header + Page
- * see struct scsi_mode_parameter_header
+/* MODE SENSE DATA FORMAT --
+ * The format of Sense Data to be returned is Mode Parameter Header + Page
+ * see struct scsi_mode_parameter_header
* struct mode_pages
*/
@@ -649,8 +649,8 @@ typedef struct scsi_start_scan_cmd
SANE_Byte byte1; /* 7-5:LUN; 4-0:Reserved */
SANE_Byte page_code;
SANE_Byte reserved;
- SANE_Byte len; /* Transfer Length
- * Length of Window List in bytes
+ SANE_Byte len; /* Transfer Length
+ * Length of Window List in bytes
* Since scanner supports up to 2 windows, len is 1 or 2
*/
SANE_Byte control; /* 7-6:Vendor Unique; 5-2:Reserved; 1:Flag; 0:Link */
@@ -847,7 +847,7 @@ struct window_section
* Transfer length indicates the byte length of Window Parameters (Set Window Data Header +
* Window Descriptor Bytes transferred from the initiator in the DATA OUT PHASE
* The scanner supports 2 windows, so Transfer Length is 648 bytes:
- * Set Window Header 8 bytes + Window Descriptor Bytes 640 (320*2) bytes).
+ * Set Window Header 8 bytes + Window Descriptor Bytes 640 (320*2) bytes).
* If data length is longer than 648 bytes only the first 648 bytes are valid, The remainng data is ignored.
* If data length is shorter than 648 only the specified byte length is valid data.
*
@@ -874,19 +874,19 @@ struct hs2p_window_data
SANE_Byte brightness; /* 22: Brightness [0-255] dark-light 0 means default value of 128 */
SANE_Byte threshold; /* 23: Threshold [0-255] 0 means default value of 128 */
SANE_Byte contrast; /* 24: Contrast [0-255] low-high 0 means default value of 128 */
- SANE_Byte image_composition; /* 25: Image Composition
+ SANE_Byte image_composition; /* 25: Image Composition
* 00H Lineart
* 01H Dithered Halftone
* 02H Gray scale
*/
SANE_Byte bpp; /* 26: Bits Per Pixel */
- SANE_Byte halftone_code; /* 27: Halftone Code
+ SANE_Byte halftone_code; /* 27: Halftone Code
* 00H-01H Reserved
* 02H Dither (partial Dot)
* 03H Error Diffusion
* 04H-07H Reserved
*/
- SANE_Byte halftone_id; /* 28: Halftone ID
+ SANE_Byte halftone_id; /* 28: Halftone ID
* 00H Reserved
* 01H 8x4, 45 degree
* 02H 6x6, 90 degree
@@ -907,7 +907,7 @@ struct hs2p_window_data
* Image Composition field must be lineart or dithered halftone
* RIF=0: White=0 Black=1
* RIF=1: White=1 Black=0
- * 6-3: Reserved;
+ * 6-3: Reserved;
* 2-0: Padding Type:
* 00H Reserved
* 01H Pad with 0's to byte boundary
@@ -940,7 +940,7 @@ struct hs2p_window_data
* 100 Reserved
* 110 Reserved
* 111 Reserved
- * 3-0: Gamma ID
+ * 3-0: Gamma ID
* 00H Normal
* 01H Soft
* 02H Sharp
@@ -951,7 +951,7 @@ struct hs2p_window_data
*/
SANE_Byte ignored3; /* 43: Ignored */
SANE_Byte ignored4; /* 44: Ignored */
- SANE_Byte binary_filtering; /* 45: Binary Filtering
+ SANE_Byte binary_filtering; /* 45: Binary Filtering
* 0-1: Noise Removal Matrix:
* 00: 3x3
* 01: 4x4
@@ -965,14 +965,14 @@ struct hs2p_window_data
* Setting is ignored for reverse side because optional IPU is not valid
* for reverse side scanning
*/
- /*
+ /*
* The following is only available when IPU is installed:
* SECTION, Automatic Separation, Automatic Binarization
- * 46-319 is ignored for Window 2
+ * 46-319 is ignored for Window 2
*/
SANE_Byte ignored5; /* 46: Ignored */
SANE_Byte ignored6; /* 47: Ignored */
- SANE_Byte automatic_separation; /* 48: Automatic Separation
+ SANE_Byte automatic_separation; /* 48: Automatic Separation
* 00H OFF
* 01H Default
* 02H-7FH Reserved
@@ -980,7 +980,7 @@ struct hs2p_window_data
* 91H-FFH Reserved
*/
SANE_Byte ignored7; /* 49: Ignored */
- SANE_Byte automatic_binarization; /* 50: Automatic Binarization
+ SANE_Byte automatic_binarization; /* 50: Automatic Binarization
* 00H OFF
* 01H Default
* 02H Enhancement of light characters
@@ -992,8 +992,8 @@ struct hs2p_window_data
SANE_Byte ignored8[13]; /* 51-63: Ignored */
struct window_section sec[8]; /* Each window can have multiple sections, each of 32 bytes long
* 53-319: = 256 bytes = 8 sections of 32 bytes
- * IS450 supports up to 4 sections,
- * IS420 supports up to 6 sections
+ * IS450 supports up to 4 sections,
+ * IS420 supports up to 6 sections
*/
};
struct set_window_cmd
@@ -1031,7 +1031,7 @@ struct get_window_cmd
SANE_Byte control; /* 7-6:Vendor Unique; 5-2:Reserved; 1:Flag; 0:Link */
};
/* The data format to be returned is Get Window Data header + Window Descriptor Bytes
- * The format of Window Descriptor Bytes is the same as that for SET WINDOW
+ * The format of Window Descriptor Bytes is the same as that for SET WINDOW
*/
struct get_window_data_hdr
{
@@ -1149,9 +1149,9 @@ typedef struct maintenance_data
SANE_Byte reserved2;
SANE_Byte zero[2]; /* All set as 0 */
} MAINTENANCE_DATA;
-/* ADF status 1byte:
- * 7-3:Reserved;
- * 2:Reserved;
+/* ADF status 1byte:
+ * 7-3:Reserved;
+ * 2:Reserved;
* 1: '0'-ADF cover closed; '1'-ADF cover open
* 0: '0'-Document on ADF; '1'-No document on ADF
*
@@ -1164,7 +1164,7 @@ struct IPU
};
struct IPU_Auto_PhotoLetter
{
- /* Halftone Separations for each level
+ /* Halftone Separations for each level
* 256 steps of relative value with 0 the sharpest and 255 the softest
* The relation of strength is Strength2 > Strength3 > Strength4 ...
*/
@@ -1173,7 +1173,7 @@ struct IPU_Auto_PhotoLetter
SANE_Byte level[6];
} halftone_separation[2];
- /* 7-2:Reversed 1-0:Halftone
+ /* 7-2:Reversed 1-0:Halftone
* 00 Default
* 01 Peak Detection Soft
* 10 Peak Detection Sharp
@@ -1198,40 +1198,40 @@ struct IPU_Auto_PhotoLetter
*/
SANE_Byte byte24;
- /* 7-4:Filter A; 3-0:Filter B
+ /* 7-4:Filter A; 3-0:Filter B
* FilterA: 16 types are valid from 0000 to 1111
* FilterB: 0000 to 1110 are valid; 1111 is not valid
*/
SANE_Byte MTF_correction;
- /* 7-4:Filter A; 3-0:Filter B
+ /* 7-4:Filter A; 3-0:Filter B
* 0000(soft) to 0111(sharp) are valid; 1000 to 1111 are invalid
*/
SANE_Byte MTF_strength;
- /* 7-4:Filter A; 3-0:Filter B
+ /* 7-4:Filter A; 3-0:Filter B
* slightly adjusts the strength of the filters
*/
SANE_Byte MTF_adjustment;
- /* 7-4:Reserved; 3-0: smoothing filter select
+ /* 7-4:Reserved; 3-0: smoothing filter select
* 14 kinds are valid from 0000 to 1101; 1110 to 1111 are invalid
*/
SANE_Byte smoothing;
- /* 7-2:Reversed; 1-0: Filter Select
+ /* 7-2:Reversed; 1-0: Filter Select
* 10 MTF Correction Select
* 11 Smoothing Select
* from 00 to 01 are not valid and basically it is set as 10
*/
SANE_Byte byte29;
- /* 7-4:Reserved; 3-0: MTF Correction Filter C
+ /* 7-4:Reserved; 3-0: MTF Correction Filter C
* 16 kinds are valid from 0000 to 1111
*/
SANE_Byte MTF_correction_c;
- /* 7-3:Reserved; 2-0: MTF Correction Filter strength C
+ /* 7-3:Reserved; 2-0: MTF Correction Filter strength C
* 000(soft) to 111(sharp) are valid
*/
SANE_Byte MTF_strength_c;
diff --git a/backend/hs2p.c b/backend/hs2p.c
index de3be42..deee3b0 100644
--- a/backend/hs2p.c
+++ b/backend/hs2p.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007 Jeremy Johnson
- This file is part of a SANE backend for Ricoh IS450
+ This file is part of a SANE backend for Ricoh IS450
and IS420 family of HS2P Scanners using the SCSI controller.
This file is part of the SANE package.
@@ -217,8 +217,8 @@ init_options (HS2P_Scanner * s)
s->val[OPT_NUM_OPTS].w = NUM_OPTIONS;
- /*
- * "Scan Mode" GROUP:
+ /*
+ * "Scan Mode" GROUP:
*/
s->opt[OPT_MODE_GROUP].name = "";
s->opt[OPT_MODE_GROUP].title = SANE_TITLE_SCAN_MODE_GROUP;
@@ -311,8 +311,8 @@ init_options (HS2P_Scanner * s)
- /*
- * "Geometry" GROUP:
+ /*
+ * "Geometry" GROUP:
*/
s->opt[OPT_GEOMETRY_GROUP].name = "";
s->opt[OPT_GEOMETRY_GROUP].title = SANE_TITLE_GEOMETRY_GROUP;
@@ -419,8 +419,8 @@ init_options (HS2P_Scanner * s)
- /*
- * "Feeder" GROUP:
+ /*
+ * "Feeder" GROUP:
*/
s->opt[OPT_FEEDER_GROUP].name = "";
s->opt[OPT_FEEDER_GROUP].title = SANE_TITLE_FEEDER_GROUP;
@@ -493,8 +493,8 @@ init_options (HS2P_Scanner * s)
/* timeout ADF */
/* timeout Manual */
- /*
- * "Enhancement" GROUP:
+ /*
+ * "Enhancement" GROUP:
*/
s->opt[OPT_ENHANCEMENT_GROUP].name = "";
s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_TITLE_ENHANCEMENT_GROUP;
@@ -684,7 +684,7 @@ init_options (HS2P_Scanner * s)
if (!s->hw->info.hasIPU)
s->opt[OPT_AUTOBIN].cap |= SANE_CAP_INACTIVE;
- /* SECTION
+ /* SECTION
* The IS450 supports up to 4 Section; The IS420 supports up to 6 Sections
* For each struct window_section[i] we need to fill in ulx,uly,width,height,etc
* NOT YET IMPLEMENTED
@@ -708,8 +708,8 @@ init_options (HS2P_Scanner * s)
s->opt[OPT_WHITE_BALANCE].constraint_type = SANE_CONSTRAINT_NONE;
s->val[OPT_WHITE_BALANCE].w = SANE_FALSE; /* F/T = Relative/Absolute White */
- /*
- * "Miscellaneous" GROUP:
+ /*
+ * "Miscellaneous" GROUP:
*/
s->opt[OPT_MISCELLANEOUS_GROUP].name = "";
s->opt[OPT_MISCELLANEOUS_GROUP].title = SANE_TITLE_MISCELLANEOUS_GROUP;
@@ -1192,7 +1192,7 @@ attach (SANE_String_Const devname, int __sane_unused__ connType,
/* ipu_id: Bit0: '0'-no IPU, '1'-has IPU
* Bit1: '0'-no extended board, '1'-has extended board;
- * should always be 0
+ * should always be 0
*/
dev->info.hasIPU = (vbuf.ipu_id & 0x01) == 0x01 ? SANE_TRUE : SANE_FALSE;
dev->info.hasXBD = (vbuf.ipu_id & 0x02) == 0x02 ? SANE_TRUE : SANE_FALSE;
@@ -1229,8 +1229,8 @@ attach (SANE_String_Const devname, int __sane_unused__ connType,
dev->sane.type = strdup (device_string);
/* ACE Image Data Processing Binary Filters
- * For IS450 this is set to 0x18 (0001 1000) if IPU installed, else 0x00
- * For IS420 this is set to 0x3C (0011 1100) if IPU installed, else 0x00
+ * For IS450 this is set to 0x18 (0001 1000) if IPU installed, else 0x00
+ * For IS420 this is set to 0x3C (0011 1100) if IPU installed, else 0x00
*/
dev->info.supports_whiteframing =
((vbuf.imagedataprocessing[0] & 0x01) == 0x01) ? SANE_TRUE : SANE_FALSE;
@@ -1272,16 +1272,16 @@ attach (SANE_String_Const devname, int __sane_unused__ connType,
dev->info.supports_markerrecognition =
((vbuf.markerrecognition & 0x01) == 0x01) ? SANE_TRUE : SANE_FALSE;
- /* Size Recognition
+ /* Size Recognition
* For IS450 this is set to 0x01 when IPU installed; else 0x00
- * For IS420 this is set to 0x01
+ * For IS420 this is set to 0x01
*/
dev->info.supports_sizerecognition =
((vbuf.sizerecognition & 0x01) == 0x01) ? SANE_TRUE : SANE_FALSE;
- /* X Maximum Output Pixel in main scanning direction
- * For IS450 this is set to 0x1360 (4960)
- * For IS420 this is set to (4880)
+ /* X Maximum Output Pixel in main scanning direction
+ * For IS450 this is set to 0x1360 (4960)
+ * For IS420 this is set to (4880)
* [MostSignificantByte LeastSignificantByte]
*/
dev->info.xmaxoutputpixels =
@@ -2397,7 +2397,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
return SANE_STATUS_GOOD;
case OPT_SCAN_SOURCE:
/* a string option */
- /* Since the scanner ejects the sheet in ADF mode
+ /* Since the scanner ejects the sheet in ADF mode
* it is impossible to scan multiple sections in one document
* In ADF mode, because of mechanical limitations:
* the minimum document size is (x,y)=(69mm x 120mm)
@@ -2824,7 +2824,7 @@ set_window_data (HS2P_Scanner * s, SWD * wbuf)
(paddingtype[get_paddingtype_id (s->val[OPT_PADDING_TYPE].s)].
val & 0x07);
- /* Bit Ordering:
+ /* Bit Ordering:
* Manual Says DEFAULT: [1111 1111][1111 1000]
* Bits15-8 reserved;
* Bit7: '0'-Normal '1'-Mirroring
@@ -2877,7 +2877,7 @@ set_window_data (HS2P_Scanner * s, SWD * wbuf)
data->automatic_binarization =
get_auto_binarization_val (s->val[OPT_AUTOBIN].s);
/* fill in values for each section
- for(j=0; j<NumSec; j++){
+ for(j=0; j<NumSec; j++){
wbuf[i].winsec[j].ulx
wbuf[i].winsec[j].uly
wbuf[i].winsec[j].width
@@ -3249,7 +3249,7 @@ pad:
case SANE_STATUS_NO_DOCS:
DBG (DBG_error, "sane_read: End-Of-Medium detected\n");
s->EOM = SANE_TRUE;
- /*
+ /*
* If status != SANE_STATUS_GOOD, then sense_handler() has already
* been called and the sanei_* functions have already gotten the
* sense data buffer (which apparently clears the error conditionn)
@@ -3283,7 +3283,7 @@ sane_cancel (SANE_Handle handle)
DBG (DBG_proc, ">> sane_cancel\n");
if (s->scanning)
- { /* if batchmode is enabled, then call set_window to abort the batch
+ { /* if batchmode is enabled, then call set_window to abort the batch
if (_OPT_VAL_WORD(s, OPT_BATCH) == SANE_TRUE) {
DBG(5, "sane_cancel: calling set_window to abort batch\n");
set_window(s, BH_BATCH_ABORT);
diff --git a/backend/hs2p.h b/backend/hs2p.h
index 091fce2..6270154 100644
--- a/backend/hs2p.h
+++ b/backend/hs2p.h
@@ -2,7 +2,7 @@
Copyright (C) 2007 Jeremy Johnson
This file is part of a SANE backend for Ricoh IS450
and IS420 family of HS2P Scanners using the SCSI controller.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -117,8 +117,8 @@ typedef struct
char inquiry_data[256];
- SANE_Byte max_win_sections; /* Number of supported window subsections
- IS450 supports max of 4 sections
+ SANE_Byte max_win_sections; /* Number of supported window subsections
+ IS450 supports max of 4 sections
IS420 supports max of 6 sections
*/
@@ -239,7 +239,7 @@ typedef struct HS2P_Device
struct HS2P_Device *next;
/*
* struct with pointers to device/vendor/model names, and a type value
- * used to inform sane frontend about the device
+ * used to inform sane frontend about the device
*/
SANE_Device sane;
HS2P_Info info;
diff --git a/backend/ibm-scsi.c b/backend/ibm-scsi.c
index 59b42cb..b6436bd 100644
--- a/backend/ibm-scsi.c
+++ b/backend/ibm-scsi.c
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -38,7 +38,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice. */
-/*
+/*
*/
#include <time.h>
@@ -62,7 +62,7 @@
/* for object_position command */
#define OBJECT_POSITION_UNLOAD 0
#define OBJECT_POSITION_LOAD 1
-
+
struct scsi_window_cmd {
SANE_Byte opcode;
SANE_Byte byte2;
@@ -162,7 +162,7 @@ inquiry (int fd, void *buf, size_t * buf_size)
memset (cmd, 0, sizeof (cmd));
cmd[0] = IBM_SCSI_INQUIRY;
- cmd[4] = *buf_size;
+ cmd[4] = *buf_size;
status = sanei_scsi_cmd (fd, cmd, sizeof (cmd), buf, buf_size);
DBG (11, "<< inquiry\n");
@@ -266,7 +266,7 @@ set_window (int fd, struct ibm_window_data *iwd)
static SANE_Status
get_window (int fd, struct ibm_window_data *iwd)
{
-
+
static struct scsi_window_cmd cmd;
static size_t iwd_size;
SANE_Status status;
@@ -343,7 +343,7 @@ get_data_status (int fd, struct scsi_status_desc *dbs)
status = sanei_scsi_cmd (fd, &cmd, sizeof (cmd), &ssd, &ssd_size);
memcpy (dbs, &ssd.desc, sizeof(*dbs));
- if (status == SANE_STATUS_GOOD &&
+ if (status == SANE_STATUS_GOOD &&
((unsigned int) _3btol(ssd.len) <= sizeof(*dbs) || _3btol(ssd.desc.filled) == 0)) {
DBG (11, "get_data_status: busy\n");
status = SANE_STATUS_DEVICE_BUSY;
diff --git a/backend/ibm.c b/backend/ibm.c
index 3ab7890..e527a04 100644
--- a/backend/ibm.c
+++ b/backend/ibm.c
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -157,12 +157,12 @@ attach (const char *devnam, Ibm_Device ** devp)
if (!(
(strncmp ((char *)ibuf.vendor, "IBM", 3) ==0
&& strncmp ((char *)ibuf.product, "2456", 4) == 0)
- || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
- && strncmp ((char *)ibuf.product, "IS420", 5) == 0)
- || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
- && strncmp ((char *)ibuf.product, "IS410", 5) == 0)
- || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
- && strncmp ((char *)ibuf.product, "IS430", 5) == 0)
+ || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
+ && strncmp ((char *)ibuf.product, "IS420", 5) == 0)
+ || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
+ && strncmp ((char *)ibuf.product, "IS410", 5) == 0)
+ || (strncmp ((char *)ibuf.vendor, "RICOH", 5) == 0
+ && strncmp ((char *)ibuf.product, "IS430", 5) == 0)
))
{
DBG (1, "attach: device \"%s\" doesn't look like a scanner I know\n",
@@ -213,7 +213,7 @@ attach (const char *devnam, Ibm_Device ** devp)
DBG (1, "attach: MODE_SELECT failed\n");
sanei_scsi_close (fd);
return (SANE_STATUS_INVAL);
- }
+ }
#endif
#if 0
@@ -286,13 +286,13 @@ attach (const char *devnam, Ibm_Device ** devp)
dev->info.brightness_default = wbuf.brightness;
dev->info.contrast_default = wbuf.contrast;
}
-
+
/* da rivedere
dev->info.adf_default = wbuf.adf_state;
*/
dev->info.adf_default = ADF_UNUSED;
dev->info.adf_default = IBM_PAPER_USER_DEFINED;
-
+
#if 1
dev->info.bmu = mup.bmu;
dev->info.mud = _2btol(mup.mud);
@@ -324,7 +324,7 @@ attach (const char *devnam, Ibm_Device ** devp)
DBG (5, "brightness=%d\n", dev->info.brightness_default);
DBG (5, "contrast=%d\n", dev->info.contrast_default);
-
+
DBG (5, "adf_state=%d\n", dev->info.adf_default);
DBG (5, "bmu=%d\n", dev->info.bmu);
@@ -411,7 +411,7 @@ init_options (Ibm_Scanner * s)
s->opt[OPT_Y_RESOLUTION].constraint_type = SANE_CONSTRAINT_RANGE;
s->val[OPT_Y_RESOLUTION].w = s->hw->info.yres_default;
s->opt[OPT_Y_RESOLUTION].constraint.range = &ibm2456_res_range;
-
+
/* adf */
s->opt[OPT_ADF].name = "adf";
s->opt[OPT_ADF].title = "Use ADF";
@@ -437,7 +437,7 @@ init_options (Ibm_Scanner * s)
s->opt[OPT_PAPER].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_PAPER].constraint.string_list = paper_list;
s->val[OPT_PAPER].s = strdup (paper_list[s->hw->info.paper_default]);
-
+
/* top-left x */
s->opt[OPT_TL_X].name = SANE_NAME_SCAN_TL_X;
s->opt[OPT_TL_X].title = SANE_TITLE_SCAN_TL_X;
@@ -563,7 +563,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
if (line[0] == '#') /* ignore line comments */
continue;
len = strlen (line);
-
+
if (!len)
continue; /* ignore empty lines */
@@ -734,7 +734,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_CONTRAST:
*(SANE_Word *) val = s->val[option].w;
return (SANE_STATUS_GOOD);
-
+
/* bool options: */
case OPT_ADF:
*(SANE_Bool *) val = s->val[option].b;
@@ -767,7 +767,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*info |= SANE_INFO_RELOAD_PARAMS;
s->val[option].w = *(SANE_Word *) val;
return (SANE_STATUS_GOOD);
-
+
case OPT_TL_X:
case OPT_TL_Y:
case OPT_BR_X:
@@ -785,7 +785,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->val[OPT_PAPER].s = strdup (paper_list[IBM_PAPER_USER_DEFINED]);
}
return (SANE_STATUS_GOOD);
-
+
case OPT_NUM_OPTS:
case OPT_BRIGHTNESS:
case OPT_CONTRAST:
@@ -799,15 +799,15 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
free (s->val[option].s);
s->val[option].s = strdup (val);
return (SANE_STATUS_GOOD);
-
+
case OPT_ADF:
s->val[option].b = *(SANE_Bool *) val;
if (*(SANE_Bool *) val)
s->adf_state = ADF_ARMED;
- else
+ else
s->adf_state = ADF_UNUSED;
return (SANE_STATUS_GOOD);
-
+
case OPT_PAPER:
if (info && strcmp (s->val[option].s, (SANE_String) val))
*info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
@@ -957,7 +957,7 @@ sane_start (SANE_Handle handle)
s->hw->sane.name, sane_strstatus (status));
return (status);
}
-
+
mode_str = s->val[OPT_MODE].s;
s->xres = s->val[OPT_X_RESOLUTION].w;
s->yres = s->val[OPT_Y_RESOLUTION].w;
@@ -968,7 +968,7 @@ sane_start (SANE_Handle handle)
s->brightness = s->val[OPT_BRIGHTNESS].w;
s->contrast = s->val[OPT_CONTRAST].w;
s->bpp = s->params.depth;
- if (strcmp (mode_str, SANE_VALUE_SCAN_MODE_LINEART) == 0)
+ if (strcmp (mode_str, SANE_VALUE_SCAN_MODE_LINEART) == 0)
{
s->image_composition = IBM_BINARY_MONOCHROME;
}
@@ -996,11 +996,11 @@ sane_start (SANE_Handle handle)
wbuf.image_comp = s->image_composition;
/* if you throw the MRIF bit the brighness control reverses too */
/* so I reverse the reversal in software for symmetry's sake */
- if (wbuf.image_comp == IBM_GRAYSCALE || wbuf.image_comp == IBM_DITHERED_MONOCHROME)
+ if (wbuf.image_comp == IBM_GRAYSCALE || wbuf.image_comp == IBM_DITHERED_MONOCHROME)
{
- if (wbuf.image_comp == IBM_GRAYSCALE)
+ if (wbuf.image_comp == IBM_GRAYSCALE)
wbuf.mrif_filtering_gamma_id = (SANE_Byte) 0x80; /* it was 0x90 */
- if (wbuf.image_comp == IBM_DITHERED_MONOCHROME)
+ if (wbuf.image_comp == IBM_DITHERED_MONOCHROME)
wbuf.mrif_filtering_gamma_id = (SANE_Byte) 0x10;
wbuf.brightness = 256 - (SANE_Byte) s->brightness;
/*
@@ -1048,7 +1048,7 @@ sane_start (SANE_Handle handle)
if (status != SANE_STATUS_GOOD)
{
DBG (1, "GET WINDOW failed: %s\n", sane_strstatus (status));
- return (status);
+ return (status);
}
DBG (5, "xres=%d\n", _2btol(wbuf.x_res));
DBG (5, "yres=%d\n", _2btol(wbuf.y_res));
@@ -1073,7 +1073,7 @@ sane_start (SANE_Handle handle)
else
mup.adf_control = 0;
/* end lines by mf */
-
+
status = mode_select (s->fd, (struct mode_pages *) &mup);
if (status != SANE_STATUS_GOOD)
{
@@ -1096,18 +1096,18 @@ sane_start (SANE_Handle handle)
{
DBG (1, "GET DATA STATUS failed: %s\n", sane_strstatus (status));
return (status);
- }
+ }
s->bytes_to_read = s->params.bytes_per_line * s->params.lines;
DBG (1, "%d pixels per line, %d bytes, %d lines high, total %lu bytes, "
"dpi=%d\n", s->params.pixels_per_line, s->params.bytes_per_line,
s->params.lines, (u_long) s->bytes_to_read, s->val[OPT_Y_RESOLUTION].w);
-
+
s->scanning = SANE_TRUE;
- DBG (11, "<< sane_start\n");
- return (SANE_STATUS_GOOD);
+ DBG (11, "<< sane_start\n");
+ return (SANE_STATUS_GOOD);
}
SANE_Status
@@ -1122,7 +1122,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
*len = 0;
DBG (11, "sane_read: bytes left to read: %ld\n", (u_long) s->bytes_to_read);
-
+
if (s->bytes_to_read == 0)
{
do_cancel (s);
@@ -1132,7 +1132,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
if (!s->scanning) {
DBG (11, "sane_read: scanning is false!\n");
return (do_cancel (s));
- }
+ }
nread = max_len;
if (nread > s->bytes_to_read)
diff --git a/backend/ibm.h b/backend/ibm.h
index a10c923..742ebeb 100644
--- a/backend/ibm.h
+++ b/backend/ibm.h
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -154,7 +154,7 @@ static const SANE_Range default_y_range =
static inline void
_lto2b(SANE_Int val, SANE_Byte *bytes)
-
+
{
bytes[0] = (val >> 8) & 0xff;
@@ -163,7 +163,7 @@ _lto2b(SANE_Int val, SANE_Byte *bytes)
static inline void
_lto3b(SANE_Int val, SANE_Byte *bytes)
-
+
{
bytes[0] = (val >> 16) & 0xff;
@@ -214,7 +214,7 @@ _4btol(SANE_Byte *bytes)
return (rv);
}
-typedef enum
+typedef enum
{
OPT_NUM_OPTS = 0,
@@ -374,7 +374,7 @@ struct measurements_units_page {
};
struct mode_pages {
- SANE_Byte page_code;
+ SANE_Byte page_code;
SANE_Byte parameter_length;
SANE_Byte rest[14]; /* modified by mf; it was 6; see above */
#if 0
diff --git a/backend/kodak-cmd.h b/backend/kodak-cmd.h
index 9f9880e..995d622 100644
--- a/backend/kodak-cmd.h
+++ b/backend/kodak-cmd.h
@@ -1,9 +1,9 @@
#ifndef KODAK_CMD_H
#define KODAK_CMD_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
- *
+ *
* Please see to opening comments in kodak.c
*/
@@ -27,7 +27,7 @@ getnbyte (unsigned char *pnt, int nbytes)
{
unsigned int result = 0;
int i;
-
+
for (i = 0; i < nbytes; i++)
result = (result << 8) | (pnt[i] & 0xff);
return result;
@@ -37,7 +37,7 @@ static void
putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
{
int i;
-
+
for (i = nbytes - 1; i >= 0; i--) {
pnt[i] = value & 0xff;
value = value >> 8;
@@ -398,7 +398,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/* output */
#define set_SR_datatype_code(sb, val) sb[0x02] = val
#define SR_datatype_imagedata 0x00
-#define SR_datatype_random 0x80
+#define SR_datatype_random 0x80
#define SR_datatype_imageheader 0x81
#define SR_len_imageheader 1088
@@ -416,11 +416,11 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_SR_ih_length(in) getnbyte(in + 23, 4)
#define get_SR_ih_bpp(in) in[27]
#define get_SR_ih_comp_type(in) in[28]
-#define get_SR_ih_ACD(in) getbit(in + 29, 1, 5)
-#define get_SR_ih_MF(in) getbit(in + 29, 1, 4)
-#define get_SR_ih_RIF(in) getbit(in + 29, 1, 2)
-#define get_SR_ih_ID(in) getbit(in + 29, 1, 1)
-#define get_SR_ih_DE(in) getbit(in + 29, 1, 0)
+#define get_SR_ih_ACD(in) getbit(in + 29, 1, 5)
+#define get_SR_ih_MF(in) getbit(in + 29, 1, 4)
+#define get_SR_ih_RIF(in) getbit(in + 29, 1, 2)
+#define get_SR_ih_ID(in) getbit(in + 29, 1, 1)
+#define get_SR_ih_DE(in) getbit(in + 29, 1, 0)
#define get_SR_ih_skew_angle(in) getnbyte(in + 30, 2)
#define get_SR_ih_ia_level(in) in[32]
#define get_SR_ih_ia(in) getnbyte(in + 33, 60)
diff --git a/backend/kodak.c b/backend/kodak.c
index 73243db..845ad11 100644
--- a/backend/kodak.c
+++ b/backend/kodak.c
@@ -83,7 +83,7 @@
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times; after sane_read returns EOF,
+ . . (sane_read called multiple times; after sane_read returns EOF,
. . loop may continue with sane_start which may return a 2nd page
. . when doing duplex scans, or load the next page from the ADF)
. .
@@ -124,14 +124,14 @@
#include "kodak.h"
#define DEBUG 1
-#define BUILD 7
+#define BUILD 7
/* values for SANE_DEBUG_KODAK env var:
- errors 5
- function trace 10
- function detail 15
- get/setopt cmds 20
- - scsi cmd trace 25
+ - scsi cmd trace 25
- scsi cmd detail 30
- useless noise 35
*/
@@ -163,7 +163,7 @@ static struct scanner *scanner_devList = NULL;
/*
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -195,7 +195,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/*
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -208,7 +208,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -241,41 +241,41 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
DBG (15, "sane_get_devices: reading config file %s\n", KODAK_CONFIG_FILE);
while (sanei_config_read (line, PATH_MAX, fp)) {
-
+
lp = line;
-
+
/* ignore comments */
if (*lp == '#')
continue;
-
+
/* skip empty lines */
if (*lp == 0)
continue;
-
+
if ((strncmp ("option", lp, 6) == 0) && isspace (lp[6])) {
-
+
lp += 6;
lp = sanei_config_skip_whitespace (lp);
-
+
/* we allow setting buffersize too big */
if ((strncmp (lp, "buffer-size", 11) == 0) && isspace (lp[11])) {
-
+
int buf;
lp += 11;
lp = sanei_config_skip_whitespace (lp);
buf = atoi (lp);
-
+
if (buf < 4096) {
DBG (5, "sane_get_devices: config option \"buffer-size\" \
(%d) is < 4096, ignoring!\n", buf);
continue;
}
-
+
if (buf > DEFAULT_BUFFER_SIZE) {
DBG (5, "sane_get_devices: config option \"buffer-size\" \
(%d) is > %d, warning!\n", buf, DEFAULT_BUFFER_SIZE);
}
-
+
DBG (15, "sane_get_devices: setting \"buffer-size\" to %d\n",
buf);
global_buffer_size = buf;
@@ -330,8 +330,8 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
return SANE_STATUS_GOOD;
}
-/* build the scanner struct and link to global list
- * unless struct is already loaded, then pretend
+/* build the scanner struct and link to global list
+ * unless struct is already loaded, then pretend
*/
static SANE_Status
attach_one (const char *device_name)
@@ -485,9 +485,9 @@ init_inquire (struct scanner *s)
set_I_evpd (cmd, 0);
set_I_page_code (cmd, I_page_code_default);
set_I_data_length (cmd, inLen);
-
+
ret = do_cmd (
- s, 1, 0,
+ s, 1, 0,
cmd, cmdLen,
NULL, 0,
in, &inLen
@@ -648,7 +648,7 @@ init_model (struct scanner *s)
s->s_mode[MODE_HALFTONE] = 1;
s->s_mode[MODE_GRAYSCALE] = 1;
s->s_mode[MODE_COLOR] = 1;
-
+
/* scanner did not tell us these */
s->s_res_min[MODE_HALFTONE] = s->s_res_min[MODE_LINEART];
s->s_res_max[MODE_HALFTONE] = s->s_res_max[MODE_LINEART];
@@ -728,9 +728,9 @@ init_options (struct scanner *s)
s->opt[i].cap = SANE_CAP_INACTIVE;
}
- /* go ahead and setup the first opt, because
- * frontend may call control_option on it
- * before calling get_option_descriptor
+ /* go ahead and setup the first opt, because
+ * frontend may call control_option on it
+ * before calling get_option_descriptor
*/
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
@@ -765,7 +765,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
time_t gmt_tt;
struct tm * gmt_tm_p;
struct tm * local_tm_p;
-
+
DBG (10, "sane_open: start\n");
if(scanner_devList){
@@ -786,7 +786,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
}
else{
DBG (15, "sane_open: device %s requested\n", name);
-
+
for (dev = scanner_devList; dev; dev = dev->next) {
if (strcmp (dev->sane.name, name) == 0) {
s = dev;
@@ -998,7 +998,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->o_mode_list[i++]=STRING_COLOR;
}
s->o_mode_list[i]=NULL;
-
+
opt->name = SANE_NAME_SCAN_MODE;
opt->title = SANE_TITLE_SCAN_MODE;
opt->desc = SANE_DESC_SCAN_MODE;
@@ -1017,13 +1017,13 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
i=0;
for(j=0;j<6;j++){
- if(reslist[j] >= s->s_res_min[s->u_mode]
+ if(reslist[j] >= s->s_res_min[s->u_mode]
&& reslist[j] <= s->s_res_max[s->u_mode]){
s->o_res_list[s->u_mode][++i] = reslist[j];
}
}
s->o_res_list[s->u_mode][0] = i;
-
+
opt->name = SANE_NAME_SCAN_RESOLUTION;
opt->title = SANE_TITLE_SCAN_RESOLUTION;
opt->desc = SANE_DESC_SCAN_RESOLUTION;
@@ -1049,7 +1049,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->o_tl_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->s_width_min);
s->o_tl_x_range.max = SCANNER_UNIT_TO_FIXED_MM(s->s_width_max);
s->o_tl_x_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_X;
opt->title = SANE_TITLE_SCAN_TL_X;
opt->desc = SANE_DESC_SCAN_TL_X;
@@ -1067,7 +1067,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->o_tl_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->s_length_min);
s->o_tl_y_range.max = SCANNER_UNIT_TO_FIXED_MM(s->s_length_max);
s->o_tl_y_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_TL_Y;
opt->title = SANE_TITLE_SCAN_TL_Y;
opt->desc = SANE_DESC_SCAN_TL_Y;
@@ -1085,7 +1085,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->o_br_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->s_width_min);
s->o_br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(s->s_width_max);
s->o_br_x_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_X;
opt->title = SANE_TITLE_SCAN_BR_X;
opt->desc = SANE_DESC_SCAN_BR_X;
@@ -1103,7 +1103,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
s->o_br_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->s_length_min);
s->o_br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(s->s_length_max);
s->o_br_y_range.quant = MM_PER_UNIT_FIX;
-
+
opt->name = SANE_NAME_SCAN_BR_Y;
opt->title = SANE_TITLE_SCAN_BR_Y;
opt->desc = SANE_DESC_SCAN_BR_Y;
@@ -1236,7 +1236,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -1247,7 +1247,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -1304,7 +1304,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
strcpy (val, STRING_ADFDUPLEX);
}
else{
- DBG(5,"missing option val for source\n");
+ DBG(5,"missing option val for source\n");
}
return SANE_STATUS_GOOD;
@@ -1402,7 +1402,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* below.
*/
switch (option) {
-
+
/* Mode Group */
case OPT_SOURCE:
if (!strcmp (val, STRING_ADFFRONT)) {
@@ -1537,7 +1537,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle h of the
@@ -1557,9 +1557,9 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
{
SANE_Status ret = SANE_STATUS_GOOD;
struct scanner *s = (struct scanner *) handle;
-
+
DBG (10, "sane_get_parameters: start\n");
-
+
/* started? get param data from image header */
if(s->started){
DBG (15, "sane_get_parameters: image settings:\n");
@@ -1574,7 +1574,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
params->last_frame = 1;
params->lines = s->i_length;
params->pixels_per_line = s->i_width;
-
+
/* bitonal */
if (s->i_bpp == 1) {
params->format = SANE_FRAME_GRAY;
@@ -1632,7 +1632,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
DBG (15, " res=%d, user_x=%d, user_y=%d\n",
s->u_res, (s->u_res * (s->u_br_x - s->u_tl_x) / 1200),
(s->u_res * (s->u_br_y - s->u_tl_y) / 1200));
-
+
if (s->u_mode == MODE_COLOR) {
params->format = SANE_FRAME_RGB;
params->depth = 8;
@@ -1649,7 +1649,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
params->last_frame = 1;
params->lines = s->u_res * (s->u_br_y - s->u_tl_y) / 1200;
params->pixels_per_line = s->u_res * (s->u_br_x - s->u_tl_x) / 1200;
-
+
/* bytes per line differs by mode */
if (s->u_mode == MODE_COLOR) {
params->bytes_per_line = params->pixels_per_line * 3;
@@ -1662,16 +1662,16 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
}
}
-
+
DBG (15, "sane_get_parameters: returning:\n");
- DBG (15, " scan_x=%d, Bpl=%d, depth=%d\n",
+ DBG (15, " scan_x=%d, Bpl=%d, depth=%d\n",
params->pixels_per_line, params->bytes_per_line, params->depth );
-
- DBG (15, " scan_y=%d, frame=%d, last=%d\n",
+
+ DBG (15, " scan_y=%d, frame=%d, last=%d\n",
params->lines, params->format, params->last_frame );
DBG (10, "sane_get_parameters: finish\n");
-
+
return ret;
}
@@ -1680,7 +1680,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
* commands: scanner control (lampon), send (lut), send (dither),
* set window, object pos, and scan
*
- * this will be called before each image, including duplex backsides,
+ * this will be called before each image, including duplex backsides,
* and at the start of adf batch.
* hence, we spend alot of time playing with s->started, etc.
*/
@@ -1716,7 +1716,7 @@ sane_start (SANE_Handle handle)
do_cancel(s);
return ret;
}
-
+
/* read/send JQ command */
/* read/send SC command */
@@ -1726,13 +1726,13 @@ sane_start (SANE_Handle handle)
do_cancel(s);
return ret;
}
-
+
/* read/send CT command */
DBG (15, "sane_start: send SCAN\n");
memset(cmd, 0, SCAN_len);
set_SCSI_opcode(cmd, SCAN_code);
-
+
ret = do_cmd (
s, 1, 0,
cmd, SCAN_len,
@@ -1752,11 +1752,11 @@ sane_start (SANE_Handle handle)
set_SR_datatype_code(cmd,SR_datatype_random);
set_SR_datatype_qual(cmd,SR_qual_startstop);
set_SR_xfer_length(cmd,SR_len_startstop);
-
+
memset(pay,0,SR_len_startstop);
set_SR_payload_len(pay,SR_len_startstop);
set_SR_startstop_cmd(pay,1);
-
+
ret = do_cmd (
s, 1, 0,
cmd, SEND_len,
@@ -1786,7 +1786,7 @@ sane_start (SANE_Handle handle)
/* make large buffer to hold the images */
DBG (15, "sane_start: setup buffer\n");
-
+
/* free current buffer if too small */
if (s->buffer && s->bytes_buf < s->i_bytes) {
DBG (15, "sane_start: free buffer.\n");
@@ -1794,7 +1794,7 @@ sane_start (SANE_Handle handle)
s->buffer = NULL;
s->bytes_buf = 0;
}
-
+
/* grab new buffer if dont have one */
if (!s->buffer) {
DBG (15, "sane_start: calloc buffer.\n");
@@ -1827,7 +1827,7 @@ set_window (struct scanner *s)
unsigned char cmd[SET_WINDOW_len];
size_t cmdLen = SET_WINDOW_len;
- /* the data phase has a header, followed by a window desc block
+ /* the data phase has a header, followed by a window desc block
* the header specifies the number of bytes in 1 window desc block */
unsigned char pay[WINDOW_HEADER_len + WINDOW_DESCRIPTOR_len];
size_t payLen = WINDOW_HEADER_len + WINDOW_DESCRIPTOR_len;
@@ -2059,7 +2059,7 @@ send_sc(struct scanner *s)
set_SR_datatype_code(cmd,SR_datatype_random);
set_SR_datatype_qual(cmd,SR_qual_config);
set_SR_xfer_length(cmd,SR_len_config);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -2077,7 +2077,7 @@ send_sc(struct scanner *s)
set_SR_datatype_code(cmd,SR_datatype_random);
set_SR_datatype_qual(cmd,SR_qual_config);
set_SR_xfer_length(cmd,payLen);
-
+
if(s->u_source == SOURCE_ADF_FRONT){
if(s->u_mode == MODE_COLOR || s->u_mode == MODE_GRAYSCALE){
set_SR_sc_io1(pay,SR_sc_io_front_color);
@@ -2150,7 +2150,7 @@ read_imageheader (struct scanner *s)
set_SR_xfer_length(cmd,SR_len_imageheader);
while (pass++ < 1000){
-
+
DBG (15, "read_imageheader: pass %d\n", pass);
payLen = SR_len_imageheader;
@@ -2174,34 +2174,34 @@ read_imageheader (struct scanner *s)
if (ret == SANE_STATUS_GOOD){
DBG (15, "image header:\n");
-
+
DBG (15, " bytes: %d\n",get_SR_ih_image_length(pay));
s->i_bytes = get_SR_ih_image_length(pay);
-
+
DBG (15, " id: %d\n",get_SR_ih_image_id(pay));
s->i_id = get_SR_ih_image_id(pay);
-
+
DBG (15, " dpi: %d\n",get_SR_ih_resolution(pay));
s->i_dpi = get_SR_ih_resolution(pay);
-
+
DBG (15, " tlx: %d\n",get_SR_ih_ulx(pay));
s->i_tlx = get_SR_ih_ulx(pay);
-
+
DBG (15, " tly: %d\n",get_SR_ih_uly(pay));
s->i_tly = get_SR_ih_uly(pay);
-
+
DBG (15, " width: %d\n",get_SR_ih_width(pay));
s->i_width = get_SR_ih_width(pay);
-
+
DBG (15, " length: %d\n",get_SR_ih_length(pay));
s->i_length = get_SR_ih_length(pay);
-
+
DBG (15, " bpp: %d\n",get_SR_ih_bpp(pay));
s->i_bpp = get_SR_ih_bpp(pay);
-
+
DBG (15, " comp: %d\n",get_SR_ih_comp_type(pay));
s->i_compr = get_SR_ih_comp_type(pay);
-
+
/*FIXME: there are alot more of these?*/
}
@@ -2212,7 +2212,7 @@ read_imageheader (struct scanner *s)
/*
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -2220,7 +2220,7 @@ read_imageheader (struct scanner *s)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -2270,12 +2270,12 @@ read_from_scanner(struct scanner *s)
int remain = s->i_bytes - s->bytes_rx;
unsigned char * buf;
size_t inLen = 0;
-
+
unsigned char cmd[READ_len];
int cmdLen=READ_len;
DBG (10, "read_from_scanner: start\n");
-
+
memset(cmd, 0, cmdLen);
set_SCSI_opcode(cmd, READ_code);
@@ -2283,32 +2283,32 @@ read_from_scanner(struct scanner *s)
if(bytes > remain){
bytes = remain;
}
-
+
DBG(15, "read_from_scanner: to:%d rx:%d re:%d bu:%d pa:%d\n",
s->i_bytes, s->bytes_rx, remain, s->buffer_size, bytes);
-
+
if(ret){
return ret;
}
-
+
inLen = bytes;
-
+
buf = malloc(bytes);
if(!buf){
DBG(5, "read_from_scanner: not enough mem for buffer: %d\n",bytes);
return SANE_STATUS_NO_MEM;
}
-
+
set_SR_datatype_code (cmd, SR_datatype_imagedata);
set_SR_xfer_length (cmd, bytes);
-
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
NULL, 0,
buf, &inLen
);
-
+
if (ret == SANE_STATUS_GOOD) {
DBG(15, "read_from_scanner: got GOOD, returning GOOD\n");
}
@@ -2324,13 +2324,13 @@ read_from_scanner(struct scanner *s)
DBG(5, "read_from_scanner: error reading data block status = %d\n",ret);
inLen = 0;
}
-
+
if(inLen){
copy_buffer (s, buf, inLen);
}
-
+
free(buf);
-
+
if(ret == SANE_STATUS_EOF){
DBG (5, "read_from_scanner: unexpected EOF, shortening image\n");
s->i_bytes = s->bytes_rx;
@@ -2338,7 +2338,7 @@ read_from_scanner(struct scanner *s)
}
DBG (10, "read_from_scanner: finish\n");
-
+
return ret;
}
@@ -2364,31 +2364,31 @@ read_from_buffer(struct scanner *s, SANE_Byte * buf,
SANE_Status ret=SANE_STATUS_GOOD;
int bytes = max_len;
int remain = s->bytes_rx - s->bytes_tx;
-
+
DBG (10, "read_from_buffer: start\n");
-
+
/* figure out the max amount to transfer */
if(bytes > remain){
bytes = remain;
}
-
+
*len = bytes;
-
+
DBG(15, "read_from_buffer: to:%d tx:%d re:%d bu:%d pa:%d\n",
s->i_bytes, s->bytes_tx, remain, max_len, bytes);
-
+
/*FIXME this needs to timeout eventually */
if(!bytes){
DBG(5,"read_from_buffer: nothing to do\n");
return SANE_STATUS_GOOD;
}
-
+
memcpy(buf,s->buffer+s->bytes_tx,bytes);
-
+
s->bytes_tx += *len;
-
+
DBG (10, "read_from_buffer: finish\n");
-
+
return ret;
}
@@ -2397,26 +2397,26 @@ read_from_buffer(struct scanner *s, SANE_Byte * buf,
* @@ Section 4 - SANE cleanup functions
*/
/*
- * Cancels a scan.
+ * Cancels a scan.
*
* It has been said on the mailing list that sane_cancel is a bit of a
* misnomer because it is routinely called to signal the end of a
* batch - quoting David Mosberger-Tang:
- *
+ *
* > In other words, the idea is to have sane_start() be called, and
* > collect as many images as the frontend wants (which could in turn
* > consist of multiple frames each as indicated by frame-type) and
- * > when the frontend is done, it should call sane_cancel().
+ * > when the frontend is done, it should call sane_cancel().
* > Sometimes it's better to think of sane_cancel() as "sane_stop()"
* > but that name would have had some misleading connotations as
* > well, that's why we stuck with "cancel".
- *
+ *
* The current consensus regarding duplex and ADF scans seems to be
* the following call sequence: sane_start; sane_read (repeat until
* EOF); sane_start; sane_read... and then call sane_cancel if the
* batch is at an end. I.e. do not call sane_cancel during the run but
* as soon as you get a SANE_STATUS_NO_DOCS.
- *
+ *
* From the SANE spec:
* This function is used to immediately or as quickly as possible
* cancel the currently pending operation of the device represented by
@@ -2459,7 +2459,7 @@ do_cancel (struct scanner *s)
/*
* Ends use of the scanner.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -2495,7 +2495,7 @@ disconnect_fd (struct scanner *s)
/*
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -2721,9 +2721,9 @@ do_rs(scanner * s)
SANE_Status ret;
unsigned char cmd[REQUEST_SENSE_len];
size_t cmdLen = REQUEST_SENSE_len;
-
+
DBG (10, "do_rs: start\n");
-
+
memset(cmd,0,cmdLen);
set_SCSI_opcode(cmd,REQUEST_SENSE_code);
set_SR_datatype_code(cmd,SR_datatype_random);
@@ -2792,7 +2792,7 @@ do_cmd(struct scanner *s, int runRS, int shortTime,
#if 0 /* unused */
static SANE_Status
-wait_scanner(struct scanner *s)
+wait_scanner(struct scanner *s)
{
int ret;
@@ -2810,7 +2810,7 @@ wait_scanner(struct scanner *s)
NULL, 0,
NULL, NULL
);
-
+
if (ret != SANE_STATUS_GOOD) {
DBG(5,"WARNING: Brain-dead scanner. Hitting with stick\n");
ret = do_cmd (
diff --git a/backend/kodak.h b/backend/kodak.h
index ea2a3e4..31c5712 100644
--- a/backend/kodak.h
+++ b/backend/kodak.h
@@ -1,12 +1,12 @@
#ifndef KODAK_H
#define KODAK_H
-/*
+/*
* Part of SANE - Scanner Access Now Easy.
* Please see opening comment in kodak.c
*/
-/* -------------------------------------------------------------------------
+/* -------------------------------------------------------------------------
* This option list has to contain all options for all scanners supported by
* this driver. If a certain scanner cannot handle a certain option, there's
* still the possibility to say so, later.
diff --git a/backend/kodakaio.c b/backend/kodakaio.c
index a9bec7b..c8cc9a7 100644
--- a/backend/kodakaio.c
+++ b/backend/kodakaio.c
@@ -3,7 +3,7 @@
*
* Copyright (C) 2011-2017 Paul Newall
*
- * Based on the Magicolor sane backend:
+ * Based on the Magicolor sane backend:
* Based on the epson2 sane backend:
* Based on Kazuhiro Sasayama previous
* work on epson.[ch] file from the SANE package.
@@ -16,13 +16,13 @@
* Modified 30/12/14 to fix bug where network connection was broken after 30s of idle time.
* The connection is now made in sane_start and ended in sane_cancel.
- * 01/01/13 Now with adf, the scan can be padded to make up the full page length,
+ * 01/01/13 Now with adf, the scan can be padded to make up the full page length,
* or the page can terminate at the end of the paper. This is a selectable option.
* 25/11/12 Using avahi now for net autodiscovery. Use configure option --enable-avahi
* 1/5/17 patched to use local pointer for avahi callback
*/
-/*
+/*
Packages to add to a clean ubuntu install
libavahi-common-dev
libusb-dev
@@ -45,7 +45,7 @@ If you want to use the test backend, for example with sane-troubleshoot, you sho
*/
/* SANE-FLOW-DIAGRAM Kodakaio commands in [] brackets
-
+
- sane_init() : initialize backend, attach scanners(devicename,0)
. - sane_get_devices() : query list of scanner-devices
. - sane_open() : open a particular scanner-device and attach_scanner(devicename,&dev)
@@ -58,7 +58,7 @@ If you want to use the test backend, for example with sane-troubleshoot, you sho
. . - sane_get_parameters() : returns actual scan-parameters
. . - sane_read() : read image-data (from pipe)
. . - sane_cancel() : cancel operation, kill reader_process [(F), U]
-
+
. - sane_close() : close opened scanner-device, do_cancel, free buffer and handle
- sane_exit() : terminate use of backend, free devicename and device-struture
*/
@@ -169,7 +169,7 @@ In terminal use: export SANE_DEBUG_KODAKAIO=40 to set the level to 40 or whateve
level you want.
Then you can scan with scanimage or simple-scan from terminal and see debug info
-use these defines to promote certain functions that you are interested in
+use these defines to promote certain functions that you are interested in
define low values to make detail of a section appear when DBG level is low
define a high value eg 99 to get normal behaviour. */
#define DBG_READ 99
@@ -248,7 +248,7 @@ FILE *RawScan = NULL;
char RawScanPath[] = ""; /* empty path means no raw scan file is made */
/*
- * Devices supported by this backend
+ * Devices supported by this backend
*/
/* kodak command strings */
@@ -286,7 +286,7 @@ The following are not used but may be in future
commandtype, max depth, pointer to depth list
*/
-/* list of cap data the first scanner is the default
+/* list of cap data the first scanner is the default
*/
/* KODAK AIO DEFAULT, */
{
@@ -295,7 +295,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(100), 0}, {0, SANE_FIX(100), 0} /* ADF x/y ranges (TODO!) */
},
/* KODAK ESP 5100, */
@@ -305,7 +305,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP 5300, */
@@ -315,7 +315,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP 5500, */
@@ -325,7 +325,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP 5000, */
@@ -335,7 +335,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP 3300, */
@@ -345,7 +345,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP5, */
@@ -355,7 +355,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP7, */
@@ -365,7 +365,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP9, */
@@ -375,7 +375,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP5210 or 5250, */
@@ -385,7 +385,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP3200 , */
@@ -395,7 +395,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP4100 , */
@@ -405,7 +405,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP6100 , */
@@ -415,7 +415,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_TRUE, SANE_FALSE, /* ADF, duplex */
+ SANE_TRUE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP7200 , */
@@ -425,7 +425,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP C110 , */
@@ -435,7 +435,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP C115 , */
@@ -445,7 +445,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP 2150 , */
@@ -455,7 +455,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_TRUE, SANE_FALSE, /* ADF, duplex */
+ SANE_TRUE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP C310 , */
@@ -465,7 +465,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP C315 , */
@@ -475,7 +475,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_FALSE, SANE_FALSE, /* ADF, duplex */
+ SANE_FALSE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* ADVENT AW10, */
@@ -525,7 +525,7 @@ commandtype, max depth, pointer to depth list
600, {75, 600, 0}, kodakaio_resolution_list, 4, /* 600 dpi max, 4 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_TRUE, SANE_FALSE, /* ADF, duplex */
+ SANE_TRUE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK ESP2170 , */
@@ -535,7 +535,7 @@ commandtype, max depth, pointer to depth list
1200, {75, 1200, 0}, kodakaio_resolution_list, 5, /* 1200 dpi optical, {from, to, 0} 5 resolutions */
8, kodakaio_depth_list, /* color depth max 8, list above */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(11.7 * MM_PER_INCH), 0}, /* FBF x/y ranges */
- SANE_TRUE, SANE_FALSE, /* ADF, duplex */
+ SANE_TRUE, SANE_FALSE, /* ADF, duplex */
{0, SANE_FIX(8.5 * MM_PER_INCH), 0}, {0, SANE_FIX(14 * MM_PER_INCH), 0} /* 14 ADF x/y ranges */
},
/* KODAK HERO 9.1, */
@@ -748,7 +748,7 @@ sanei_kodakaio_net_write_raw(struct KodakAio_Scanner *s,
SANE_Status *status)
{
DBG(32, "net write:%x,%x,%x,%x,%x,%x,%x,%x\n",buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7]);
-
+
sanei_tcp_write(s->fd, buf, buf_size);
/* TODO: Check whether sending failed... */
@@ -863,8 +863,8 @@ static ssize_t
k_recv(KodakAio_Scanner * s, void *buf, ssize_t buf_size,
SANE_Status * status)
{
-/* requests and receives data this function makes the split between USB and NET
-this function called by a number of others
+/* requests and receives data this function makes the split between USB and NET
+this function called by a number of others
In USB mode, this function will wait until data is available for a maximum of SCANNER_READ_TIMEOUT seconds.
In NET mode the timeout is in kodakaio_net_read
@@ -878,7 +878,7 @@ In NET mode the timeout is in kodakaio_net_read
usb_delay.tv_nsec = 300000000; /* 0.3 sec */
if (s->hw->connection == SANE_KODAKAIO_NET) {
-
+
time(&time_start);
DBG(min(16,DBG_READ), "[%ld] %s: net req size = %ld ", (long) time_start, __func__, (long) buf_size);
n = kodakaio_net_read(s, buf, buf_size, status);
@@ -1015,7 +1015,7 @@ and returns appropriate status
s->adf_loaded = SANE_TRUE;
DBG(5, "%s: News - docs in ADF\n", __func__);
}
- else if (rxbuf[4] !=
+ else if (rxbuf[4] !=
0x01 && s->adf_loaded == SANE_TRUE) {
s->adf_loaded = SANE_FALSE;
DBG(5, "%s: News - ADF is empty\n", __func__);
@@ -1031,7 +1031,7 @@ and returns appropriate status
}
/* unused function
-static ssize_t
+static ssize_t
kodakaio_rxflush(KodakAio_Scanner *s)
Tries to get 64 byte reply
@@ -1052,7 +1052,7 @@ and returns number of bytes read
*/
/*
- * high-level communication commands
+ * high-level communication commands
*/
static SANE_Status
@@ -1064,7 +1064,7 @@ k_hello (KodakAio_Scanner * s)
DBG(5, "%s\n", __func__);
-/* check that there is nothing already in the input buffer before starting
+/* check that there is nothing already in the input buffer before starting
kodakaio_rxflush(s);
*/
/* preset the reply, so I can see if it gets changed */
@@ -1129,12 +1129,12 @@ cmd_cancel_scan (SANE_Handle handle)
unsigned char reply[8];
/* adf added 20/2/12 should it be adf? or adf with paper in? */
if (strcmp(source_list[s->val[OPT_SOURCE].w], ADF_STR) == 0) { /* adf */
- if (kodakaio_txrxack(s, KodakEsp_F, reply)!= SANE_STATUS_GOOD)
+ if (kodakaio_txrxack(s, KodakEsp_F, reply)!= SANE_STATUS_GOOD)
{
DBG(1, "%s: KodakEsp_F command failed\n", __func__);
return SANE_STATUS_IO_ERROR;
}
- if (kodakaio_txrxack(s, KodakEsp_UnLock, reply)!= SANE_STATUS_GOOD)
+ if (kodakaio_txrxack(s, KodakEsp_UnLock, reply)!= SANE_STATUS_GOOD)
{
DBG(1, "%s: KodakEsp_UnLock command failed\n", __func__);
return SANE_STATUS_IO_ERROR;
@@ -1193,7 +1193,7 @@ cmd_set_color_curve(SANE_Handle handle, unsigned char col)
int i; /* 7/9/14 was unsigned char and that stopped the loop that made the linear curve from going to 255 */
DBG(32, "%s: start\n", __func__);
tx_col[0]=0x1b; tx_col[1]='S'; tx_col[2]='K'; tx_col[3]=col; tx_col[4]=0; tx_col[5]=0; tx_col[6]=0; tx_col[7]=0;
-/* linear curve now but could send tailor made curves in future */
+/* linear curve now but could send tailor made curves in future */
for(i=0;i<=255;++i) tx_curve[i]=i; /* 7/9/14 was i<255 the missing elements caused speckles */
k_send(s, tx_col, 8, &status);
@@ -1255,7 +1255,7 @@ cmd_set_scanning_parameters(SANE_Handle handle,
tx_dpi[7]=0;
kodakaio_txrxack(s, tx_dpi, bufread);
-/* colour curves don't seem to be sent for usb preview
+/* colour curves don't seem to be sent for usb preview
but it seems to do no harm to send them */
cmd_set_color_curve(s, 'R');
cmd_set_color_curve(s, 'G');
@@ -1298,7 +1298,7 @@ this command needs actual DPI units*/
int
cmparray (unsigned char *array1, unsigned char *array2, size_t len)
{
-/* compares len bytes of the arrays returns 0 if they match
+/* compares len bytes of the arrays returns 0 if they match
returns the first missmatch position if they don't match */
unsigned int i;
for(i=0; i<len; ++i)
@@ -1311,7 +1311,7 @@ unsigned int i;
static SANE_Status
cmd_read_data (SANE_Handle handle, unsigned char *buf, size_t *len)
{
-/*
+/*
cmd_read_data is only used in k_read. It reads one block of data
read data using k_recv until you get the ackstring
when you get the ackstring return s->ack and do padding if the padding option is selected
@@ -1363,7 +1363,7 @@ But it seems that the scanner takes care of that, and gives you the ack as a sep
/* it may be the last block from the scanner so look for Ack response in last 8 bytes */
Last8 = buf + bytecount - 8;
- /* only compare 4 bytes because we sometimes get escSS02.. or escSS00..
+ /* only compare 4 bytes because we sometimes get escSS02.. or escSS00..
is 4 the right number ? */
if (cmparray(Last8,KodakEsp_Ack,4) == 0) {
DBG(min(10,DBG_READ), "%s: found KodakEsp_Ack at %lu bytes of %lu\n", __func__, (unsigned long) bytecount, (unsigned long) *len);
@@ -1404,12 +1404,12 @@ But it seems that the scanner takes care of that, and gives you the ack as a sep
if (status == SANE_STATUS_GOOD)
if (s->bytes_unread <= 0)
- DBG(min(2,DBG_READ), "%s: Page fully read %d blocks, %ld bytes unread\n", __func__, s->counter, (long) s->bytes_unread);
+ DBG(min(2,DBG_READ), "%s: Page fully read %d blocks, %ld bytes unread\n", __func__, s->counter, (long) s->bytes_unread);
else
DBG(min(20,DBG_READ), "%s: Image data successfully read %ld bytes, %ld bytes unread\n", __func__, (long) bytecount, (long) s->bytes_unread);
else if (s->ack) /* was (status == SANE_STATUS_EOF) */
DBG(min(2,DBG_READ), "%s: scanner data read ended %d blocks %ld bytes, %ld bytes unread\n", __func__, s->counter, (long) bytecount, (long) s->bytes_unread);
- else
+ else
DBG(min(1,DBG_READ), "%s: Image data read stopped with %s after %d blocks %ld bytes, %ld bytes unread\n", __func__, sane_strstatus(status), s->counter, (long) bytecount, (long) s->bytes_unread);
return status;
@@ -1549,7 +1549,7 @@ k_setup_block_mode (KodakAio_Scanner *s)
return SANE_STATUS_GOOD;
}
-/* Call the commands to set scanning parameters
+/* Call the commands to set scanning parameters
In the Kodak Aio the parameters are:
(x1b,"S","F",0,0,0,0,0)
(x1b,"S","S",1,0,0,0,0)
@@ -1615,7 +1615,7 @@ k_set_scanning_parameters(KodakAio_Scanner * s)
/* TODO: Any way to set PREVIEW??? */
/* Remaining bytes unused */
- status = cmd_set_scanning_parameters(s, dpi,
+ status = cmd_set_scanning_parameters(s, dpi,
s->left * dpi / optres, s->top * dpi / optres, /* top/left start (dpi units)*/
s->params.pixels_per_line, s->params.lines, /* extent was s->width, s->height*/
source); /* source */
@@ -1696,7 +1696,7 @@ k_scan_finish(KodakAio_Scanner * s)
static void
k_copy_image_data(KodakAio_Scanner * s, SANE_Byte * data, SANE_Int max_length,
SANE_Int * length)
-/* copies the read data from s->line_buffer to the position in data pointer to by s->ptr
+/* copies the read data from s->line_buffer to the position in data pointer to by s->ptr
uncompressed data is RRRR...GGGG...BBBB per line */
{
SANE_Int bytes_available;
@@ -1724,7 +1724,7 @@ uncompressed data is RRRR...GGGG...BBBB per line */
/* We have filled as much as possible of the current line
* with data from the scanner. If we have a complete line,
- * copy it over.
+ * copy it over.
line points to the current byte in the input s->line_buffer
data points to the output buffer*/
if ((s->bytes_read_in_line >= s->scan_bytes_per_line) &&
@@ -1753,8 +1753,8 @@ uncompressed data is RRRR...GGGG...BBBB per line */
*data &= ~mask; /* white clear the bit in mask */
else
*data |= mask; /* black set the bit in mask */
-
- if (offset == 7 || i == s->params.pixels_per_line-1)
+
+ if (offset == 7 || i == s->params.pixels_per_line-1)
data++; /* move on a byte if the byte is full or the line is complete */
}
@@ -1768,7 +1768,7 @@ uncompressed data is RRRR...GGGG...BBBB per line */
}
/*debug file The same for color or grey because the scan is colour */
if (RawScan != NULL) {
- for (i=0; i< s->scan_bytes_per_line; ++i) fputc(s->line_buffer[i],RawScan);
+ for (i=0; i< s->scan_bytes_per_line; ++i) fputc(s->line_buffer[i],RawScan);
}
max_length -= s->params.bytes_per_line;
s->bytes_read_in_line -= s->scan_bytes_per_line;
@@ -1840,7 +1840,7 @@ k_init_parametersta(KodakAio_Scanner * s)
s->params.last_frame = SANE_TRUE;
s->params.bytes_per_line = 3 * ceil (s->params.depth * s->params.pixels_per_line / 8.0);
-/* kodak only scans in color and conversion to grey or lineart is done in the driver
+/* kodak only scans in color and conversion to grey or lineart is done in the driver
s->params.format = SANE_FRAME_RGB; */
DBG(20, "%s: s->val[OPT_MODE].w = %d (color is %d)\n", __func__,s->val[OPT_MODE].w, MODE_COLOR);
if (s->val[OPT_MODE].w == MODE_COLOR) s->params.format = SANE_FRAME_RGB;
@@ -1870,7 +1870,7 @@ k_read(struct KodakAio_Scanner *s)
{
unsigned char rx[8];
-/* monitors progress of blocks and calls cmd_read_data to get each block
+/* monitors progress of blocks and calls cmd_read_data to get each block
you don't know how many blocks there will be in advance because their size may be determined by the scanner*/
SANE_Status status = SANE_STATUS_GOOD;
size_t buf_len = 0;
@@ -1907,7 +1907,7 @@ you don't know how many blocks there will be in advance because their size may b
if (status == SANE_STATUS_EOF) {
/* page ended prematurely. */
}
- }
+ }
else { /* s->bytes_unread <=0 This is the end of a page */
s->eof = SANE_TRUE;
DBG(min(10,DBG_READ), "%s: set EOF after %d blocks\n=============\n", __func__, s->counter);
@@ -1932,7 +1932,7 @@ you don't know how many blocks there will be in advance because their size may b
}
/*
- * SANE API implementation (high-level functions)
+ * SANE API implementation (high-level functions)
*/
#if WITH_AVAHI
@@ -1951,12 +1951,12 @@ get_device_from_identification (const char *ident, const char *vid, const char *
return NULL;
}
for (n = 0; n < NELEMS (kodakaio_cap); n++) {
-
+
if (strcmp (kodakaio_cap[n].model, ident)==0) {
DBG(20, "matched <%s> & <%s>\n", kodakaio_cap[n].model, ident);
return &kodakaio_cap[n];
}
- else
+ else
if (kodakaio_cap[n].id == pidnum && 0x040A == vidnum) {
DBG(20, "matched <%s> & <%s:%s>\n", kodakaio_cap[n].model, vid, pid);
return &kodakaio_cap[n];
@@ -2124,7 +2124,7 @@ detect_usb(struct KodakAio_Scanner *s)
* about the device */
while (i != numIds && !is_valid) {
/* if (product == kodakaio_usb_product_ids[i]) */
- if (product == kodakaio_cap[i].id)
+ if (product == kodakaio_cap[i].id)
is_valid = SANE_TRUE;
i++;
}
@@ -2259,20 +2259,20 @@ device_detect(const char *name, int type, SANE_Status *status)
#if WITH_AVAHI
/* ProcessAvahiDevice is called to process each discovered device in turn */
-void
+void
ProcessAvahiDevice(const char *device_id, const char *vid, const char *pid, const char *ip_addr)
{
struct KodakaioCap *cap;
DBG(min(10,DBG_AUTO),"device_id = <%s> vid:pid = <%s:%s>\n", device_id,vid,pid);
-/* check if it is a model likely to be supported: "KODAK ESP" or "KODAK HERO"
+/* check if it is a model likely to be supported: "KODAK ESP" or "KODAK HERO"
DBG(min(10,DBG_AUTO),"look up model <%s>\n", device_model); */
cap = get_device_from_identification("", vid, pid);
if (cap == NULL) {
return;
- }
+ }
DBG(min(10,DBG_AUTO), "%s: Found autodiscovered device: %s (type 0x%x)\n", __func__, cap->model, cap->id);
attach_one_net (ip_addr, cap->id);
@@ -2337,12 +2337,12 @@ static void resolve_callback(
else DBG(min(10,DBG_AUTO), "didn't call ProcessAvahiDevice\n");
if(vid_pair_list != NULL) {
- avahi_free(vidkey);
+ avahi_free(vidkey);
avahi_free(vidvalue);
DBG(min(15,DBG_AUTO), "vidkey and vidvalue freed\n");
}
if(pid_pair_list != NULL) {
- avahi_free(pidkey);
+ avahi_free(pidkey);
avahi_free(pidvalue);
DBG(min(15,DBG_AUTO), "pidkey and pidvalue freed\n");
}
@@ -2413,7 +2413,7 @@ static void client_callback(AvahiClient *c, AvahiClientState state, void * userd
static int
kodak_network_discovery(const char*host)
-/* If host = NULL do autodiscovery. If host != NULL try to verify the model
+/* If host = NULL do autodiscovery. If host != NULL try to verify the model
First version only does autodiscovery */
{
AvahiSimplePoll *simple_poll;
@@ -2586,7 +2586,7 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
/* Timeout for all other read requests */
DBG(50, "%s: Request timeout set to %d\n", __func__, timeout);
K_Request_Timeout = timeout;
-
+
} else {
/* TODO: Warning about unparsable line! */
}
@@ -2790,7 +2790,7 @@ init_options(KodakAio_Scanner *s)
s->opt[OPT_BIT_DEPTH].constraint.word_list = s->hw->cap->depth_list;
s->opt[OPT_BIT_DEPTH].cap |= SANE_CAP_INACTIVE;
s->val[OPT_BIT_DEPTH].w = s->hw->cap->depth_list[1]; /* the first "real" element is the default */
-
+
DBG(20, "%s: depth list has depth_list[0] = %d entries\n", __func__, s->hw->cap->depth_list[0]);
if (s->hw->cap->depth_list[0] == 1) { /* only one element in the list -> hide the option */
s->opt[OPT_BIT_DEPTH].cap |= SANE_CAP_INACTIVE;
@@ -2814,7 +2814,7 @@ init_options(KodakAio_Scanner *s)
s->val[OPT_RESOLUTION].w = s->hw->cap->dpi_range.min;
- /* trial option for debugging
+ /* trial option for debugging
s->opt[OPT_TRIALOPT].name = "trialoption";
s->opt[OPT_TRIALOPT].title = "trialoption";
s->opt[OPT_TRIALOPT].desc = "trialoption";
@@ -2834,7 +2834,7 @@ init_options(KodakAio_Scanner *s)
for(i=0;source_list[i]!=NULL;++i)
DBG(18, "source_list: %s\n",source_list[i]);
-
+
/* source */
s->opt[OPT_SOURCE].name = SANE_NAME_SCAN_SOURCE;
s->opt[OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
@@ -2850,7 +2850,7 @@ init_options(KodakAio_Scanner *s)
s->opt[OPT_SOURCE].cap |= SANE_CAP_INACTIVE;
}
-/* Are there any ESP scanners that are duplex? */
+/* Are there any ESP scanners that are duplex? */
s->opt[OPT_ADF_MODE].name = "adf-mode";
s->opt[OPT_ADF_MODE].title = SANE_I18N("ADF Mode");
s->opt[OPT_ADF_MODE].desc =
@@ -2991,7 +2991,7 @@ sane_open(SANE_String_Const name, SANE_Handle *handle)
/* s is always valid here */
DBG(10, "handle obtained\n");
- status = k_discover_capabilities(s); /* added 27/12/11 to fix source list problem
+ status = k_discover_capabilities(s); /* added 27/12/11 to fix source list problem
maybe we should only be rebuilding the source list here? */
if (status != SANE_STATUS_GOOD)
return status;
@@ -3000,7 +3000,7 @@ maybe we should only be rebuilding the source list here? */
*handle = (SANE_Handle) s;
-/* moving the open scanner section below to sane_start 27/12/14
+/* moving the open scanner section below to sane_start 27/12/14
status = open_scanner(s);
if (status != SANE_STATUS_GOOD) {
free(s);
@@ -3400,8 +3400,8 @@ sane_start(SANE_Handle handle)
/* set scanning parameters; also query the current image
* parameters from the sanner and save
- * them to s->params
-Only set scanning params the first time, or after a cancel
+ * them to s->params
+Only set scanning params the first time, or after a cancel
try change 22/2/12 take lock scanner out of k_set_scanning_parameters */
/* moved open_scanner here 27/12/14 from sane_open */
diff --git a/backend/kodakaio.conf.in b/backend/kodakaio.conf.in
index 2ad3ed4..0241408 100644
--- a/backend/kodakaio.conf.in
+++ b/backend/kodakaio.conf.in
@@ -9,7 +9,7 @@
# snmp-timeout controls auto-detection timeout in ms (1500=1.5s).
snmp-timeout 2000
-# scan-data-timeout controls the timeout for scan data
+# scan-data-timeout controls the timeout for scan data
# (scans may take several seconds to initialize, so we need to wait longer)
scan-data-timeout 10000
@@ -77,4 +77,3 @@ usb
# 0x4062, /* kodak Office Hero 6.1 */
# 0x4063, /* kodak Hero 7.1 */
# 0x4067, /* kodak Hero 9.1 */
-
diff --git a/backend/kvs1025_low.c b/backend/kvs1025_low.c
index d834f61..98cf3be 100644
--- a/backend/kvs1025_low.c
+++ b/backend/kvs1025_low.c
@@ -988,7 +988,7 @@ buffer_deskew(PKV_DEV s, int side)
&s->params[side_index],s->img_buffers[side_index],
resolution,resolution,
&s->deskew_vals[0],&s->deskew_vals[1],&s->deskew_slope);
-
+
if(s->deskew_stat){
DBG (5, "buffer_despeck: bad findSkew, bailing\n");
goto cleanup;
@@ -997,7 +997,7 @@ buffer_deskew(PKV_DEV s, int side)
/* backside images can use a 'flipped' version of frontside data */
else{
s->deskew_slope *= -1;
- s->deskew_vals[0]
+ s->deskew_vals[0]
= s->params[side_index].pixels_per_line - s->deskew_vals[0];
}
@@ -1039,7 +1039,7 @@ buffer_crop(PKV_DEV s, int side)
DBG (5, "buffer_crop: bad edges, bailing\n");
goto cleanup;
}
-
+
DBG (15, "buffer_crop: t:%d b:%d l:%d r:%d\n",
s->crop_vals[0],s->crop_vals[1],s->crop_vals[2],s->crop_vals[3]);
@@ -1066,9 +1066,9 @@ buffer_crop(PKV_DEV s, int side)
}
/* update image size counter to new, smaller size */
- s->img_size[side_index]
+ s->img_size[side_index]
= s->params[side_index].lines * s->params[side_index].bytes_per_line;
-
+
cleanup:
DBG (10, "buffer_crop: finish\n");
return ret;
@@ -1143,7 +1143,7 @@ buffer_rotate(PKV_DEV s, int side)
ret = sanei_magic_findTurn(
&s->params[side_index],s->img_buffers[side_index],
resolution,resolution,&angle);
-
+
if(ret){
DBG (5, "buffer_rotate: error %d\n",ret);
ret = SANE_STATUS_GOOD;
@@ -1161,7 +1161,7 @@ buffer_rotate(PKV_DEV s, int side)
ret = sanei_magic_turn(
&s->params[side_index],s->img_buffers[side_index],
angle);
-
+
if(ret){
DBG (5, "buffer_rotate: error %d\n",ret);
ret = SANE_STATUS_GOOD;
@@ -1169,9 +1169,9 @@ buffer_rotate(PKV_DEV s, int side)
}
/* update image size counter to new, smaller size */
- s->img_size[side_index]
+ s->img_size[side_index]
= s->params[side_index].lines * s->params[side_index].bytes_per_line;
-
+
cleanup:
DBG (10, "buffer_rotate: finished\n");
return ret;
diff --git a/backend/kvs1025_opt.c b/backend/kvs1025_opt.c
index b7581f9..71fbf89 100644
--- a/backend/kvs1025_opt.c
+++ b/backend/kvs1025_opt.c
@@ -141,7 +141,6 @@ static const KV_PAPER_SIZE go_paper_sizes[] = {
};
static const int default_paper_size_idx = 3; /* A4 */
-static const int go_paper_max_width = 216; /* US letter */
/* Lists of supported halftone. They are only valid with
* for the Black&White mode. */
diff --git a/backend/kvs1025_usb.c b/backend/kvs1025_usb.c
index 90ce4d0..d7a4dde 100644
--- a/backend/kvs1025_usb.c
+++ b/backend/kvs1025_usb.c
@@ -303,7 +303,7 @@ kv_usb_escape (PKV_DEV dev,
size_t len = 16;
ret = sanei_usb_read_bulk (dev->usb_fd, (SANE_Byte *) cmd_buff, &len);
-
+
if (ret || len != 16)
{
DBG (DBG_error, "usb_bulk_read: Error reading response."
diff --git a/backend/kvs20xx_opt.c b/backend/kvs20xx_opt.c
index 94c4133..fc527f3 100644
--- a/backend/kvs20xx_opt.c
+++ b/backend/kvs20xx_opt.c
@@ -207,7 +207,7 @@ kvs20xx_init_options (struct scanner *s)
o->unit = SANE_UNIT_NONE;
s->val[DUPLEX].w = SANE_FALSE;
- /*FIXME
+ /*FIXME
if (!s->support_info.support_duplex)
o->cap |= SANE_CAP_INACTIVE;
*/
diff --git a/backend/kvs40xx_opt.c b/backend/kvs40xx_opt.c
index bd9d85e..2bf9a5c 100644
--- a/backend/kvs40xx_opt.c
+++ b/backend/kvs40xx_opt.c
@@ -356,7 +356,7 @@ kvs40xx_init_options (struct scanner *s)
o->unit = SANE_UNIT_NONE;
s->val[DUPLEX].w = SANE_FALSE;
- /*FIXME
+ /*FIXME
if (!s->support_info.support_duplex)
o->cap |= SANE_CAP_INACTIVE;
*/
diff --git a/backend/leo.c b/backend/leo.c
index b44a343..e0200de 100644
--- a/backend/leo.c
+++ b/backend/leo.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002-2003 Frank Zago (sane at zago dot net)
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
@@ -945,7 +945,7 @@ leo_init_options (Leo_Scanner * dev)
(SANE_String_Const *) scan_mode_list[0], NULL);
}
-/*
+/*
* Wait until the scanner is ready.
*/
static SANE_Status
@@ -1000,7 +1000,7 @@ leo_fill_image (Leo_Scanner * dev)
while (dev->real_bytes_left)
{
- /*
+ /*
* Try to read the maximum number of bytes.
*/
size = 0;
@@ -1027,7 +1027,7 @@ leo_fill_image (Leo_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -1093,7 +1093,7 @@ leo_fill_image (Leo_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
diff --git a/backend/leo.conf.in b/backend/leo.conf.in
index ecd918c..8aeb9bf 100644
--- a/backend/leo.conf.in
+++ b/backend/leo.conf.in
@@ -5,4 +5,3 @@ scsi ACROSS * Scanner * * * 0
scsi "LEO" "LEOScan-S3"
/dev/scanner
-
diff --git a/backend/leo.h b/backend/leo.h
index 73bb7b1..d9595bf 100644
--- a/backend/leo.h
+++ b/backend/leo.h
@@ -38,10 +38,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -241,8 +241,8 @@ enum Leo_Option
/*--------------------------------------------------------------------------*/
-/*
- * Scanner supported by this backend.
+/*
+ * Scanner supported by this backend.
*/
struct scanners_supported
{
@@ -338,7 +338,7 @@ Leo_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/lexmark.c b/backend/lexmark.c
index e0cd21f..36c33f3 100644
--- a/backend/lexmark.c
+++ b/backend/lexmark.c
@@ -2,9 +2,9 @@
(C) 2003-2004 Lexmark International, Inc. (Original Source code)
(C) 2005 Fred Odendaal
- (C) 2006-2013 Stphane Voltz <stef.dev@free.fr>
+ (C) 2006-2013 Stéphane Voltz <stef.dev@free.fr>
(C) 2010 "Torsten Houwaart" <ToHo@gmx.de> X74 support
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -625,7 +625,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
* Open the backend, ie return the struct handle of a detected scanner
* The struct returned is choosne if it matches the name given, which is
* usefull when several scanners handled by the backend have been detected.
- * However, special case empty string "" and "lexmark" pick the first
+ * However, special case empty string "" and "lexmark" pick the first
* available handle.
*/
SANE_Status
@@ -1144,7 +1144,7 @@ sane_start (SANE_Handle handle)
lexmark_device->eof = SANE_FALSE;
- /* Need this cancel_ctr to determine how many times sane_cancel is called
+ /* Need this cancel_ctr to determine how many times sane_cancel is called
since it is called more than once. */
lexmark_device->cancel_ctr = 0;
@@ -1180,15 +1180,15 @@ sane_start (SANE_Handle handle)
return status;
}
- /* At this point we're somewhere in the dot. We need to read a number of
- lines greater than the diameter of the dot and determine how many lines
- past the dot we've gone. We then use this information to see how far the
+ /* At this point we're somewhere in the dot. We need to read a number of
+ lines greater than the diameter of the dot and determine how many lines
+ past the dot we've gone. We then use this information to see how far the
scan head must move before starting the scan. */
/* offset is in 600 dpi unit */
offset = sanei_lexmark_low_find_start_line (lexmark_device);
DBG (7, "start line offset=%d\n", offset);
- /* Set the shadow registers for scan with the options (resolution, mode,
+ /* Set the shadow registers for scan with the options (resolution, mode,
size) set in the front end. Pass the offset so we can get the vert.
start. */
sanei_lexmark_low_set_scan_regs (lexmark_device,
diff --git a/backend/lexmark.h b/backend/lexmark.h
index 0790551..9b7de98 100644
--- a/backend/lexmark.h
+++ b/backend/lexmark.h
@@ -2,7 +2,7 @@
lexmark.h - SANE library for Lexmark scanners.
Copyright (C) 2003-2004 Lexmark International, Inc. (original source)
Copyright (C) 2005 Fred Odendaal
- Copyright (C) 2006-2010 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2006-2010 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2010 "Torsten Houwaart" <ToHo@gmx.de> X74 support
This file is part of the SANE package.
diff --git a/backend/lexmark_low.c b/backend/lexmark_low.c
index fe20e89..db1dab5 100644
--- a/backend/lexmark_low.c
+++ b/backend/lexmark_low.c
@@ -1,9 +1,9 @@
/* lexmark-low.c: scanner-interface file for low Lexmark scanners.
(C) 2005 Fred Odendaal
- (C) 2006-2013 Stphane Voltz <stef.dev@free.fr>
+ (C) 2006-2013 Stéphane Voltz <stef.dev@free.fr>
(C) 2010 "Torsten Houwaart" <ToHo@gmx.de> X74 support
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -180,7 +180,7 @@ rts88xx_set_scan_frequency (SANE_Byte * regs, int frequency)
}
/*
- * read one register at given index
+ * read one register at given index
*/
static SANE_Status
rts88xx_read_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
@@ -218,7 +218,7 @@ rts88xx_read_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
}
/*
- * write one register at given index
+ * write one register at given index
*/
static SANE_Status
rts88xx_write_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
@@ -412,7 +412,7 @@ lexmark_low_wake_up (Lexmark_Device * dev)
/**
- *
+ *
*/
#ifdef DEEP_DEBUG
static void
@@ -1254,7 +1254,7 @@ sanei_lexmark_low_close_device (Lexmark_Device * dev)
}
-/* This function writes the contents of the given registers to the
+/* This function writes the contents of the given registers to the
scanner. */
SANE_Status
low_write_all_regs (SANE_Int devnum, SANE_Byte * regs)
@@ -1306,31 +1306,31 @@ SANE_Bool
low_is_home_line (Lexmark_Device * dev, unsigned char *buffer)
{
/*
- This function assumes the buffer has a size of 2500 bytes.It is
+ This function assumes the buffer has a size of 2500 bytes.It is
destructive to the buffer.
Here is what it does:
- Go through the buffer finding low and high values, which are computed by
- comparing to the average:
+ Go through the buffer finding low and high values, which are computed by
+ comparing to the average:
average = (lowest value + highest value)/2
- High bytes are changed to 0xFF (white), lower or equal bytes are changed
- to 0x00 (black),so that the buffer only contains white (0xFF) or black
+ High bytes are changed to 0xFF (white), lower or equal bytes are changed
+ to 0x00 (black),so that the buffer only contains white (0xFF) or black
(0x00) values.
Next, we go through the buffer. We use a tolerance of 5 bytes on each end
of the buffer and check a region from bytes 5 to 2495. We start assuming
we are in a white region and look for the start of a black region. We save
- this index as the transition from white to black. We also save where we
- change from black back to white. We continue checking for transitions
- until the end of the check region. If we don't have exactly two
+ this index as the transition from white to black. We also save where we
+ change from black back to white. We continue checking for transitions
+ until the end of the check region. If we don't have exactly two
transitions when we reach the end we return SANE_FALSE.
The final check compares the transition indices to the nominal values
plus or minus the tolerence. For the first transition (white to black
index) the value must lie in the range 1235-30 (1205) to 1235+30 (1265).
For the second transition (black to white) the value must lie in the range
- 1258-30 (1228) to 1258+30 (1288). If the indices are out of range we
+ 1258-30 (1228) to 1258+30 (1288). If the indices are out of range we
return SANE_FALSE. Otherwise, we return SANE_TRUE.
*/
@@ -1467,9 +1467,9 @@ sanei_lexmark_low_move_fwd (SANE_Int distance, Lexmark_Device * dev,
SANE_Byte * regs)
{
/*
- This function moves the scan head forward with the highest vertical
+ This function moves the scan head forward with the highest vertical
resolution of 1200dpi. The distance moved is given by the distance
- parameter.
+ parameter.
As an example, given a distance parameter of 600, the scan head will
move 600/1200", or 1/2" forward.
@@ -1950,7 +1950,7 @@ sanei_lexmark_low_search_home_bwd (Lexmark_Device * dev)
/* This function must only be called if the scan head is past the home dot.
It could damage the scanner if not.
- This function tells the scanner to do a grayscale scan backwards with a
+ This function tells the scanner to do a grayscale scan backwards with a
300dpi resolution. It reads 2500 bytes of data between horizontal
co-ordinates 0x6a and 0x13f2.
@@ -1959,8 +1959,8 @@ sanei_lexmark_low_search_home_bwd (Lexmark_Device * dev)
before it bangs against the end. A line limit is set so that a maximum of
0x0F3C (13"*300dpi) lines can be read.
- To read the scan data we create a buffer space large enough to hold 10
- lines of data. For each read we poll twice, ignoring the first poll. This
+ To read the scan data we create a buffer space large enough to hold 10
+ lines of data. For each read we poll twice, ignoring the first poll. This
is required for timing. We repeat the double poll until there is data
available. The number of lines (or number of buffers in our buffer space)
is calculated from the size of the data available from the scanner. The
@@ -2462,10 +2462,10 @@ sanei_lexmark_low_find_start_line (Lexmark_Device * dev)
This function scans forward 59 lines, reading 88 bytes per line from the
middle of the horizontal line: pixel 0xa84 to pixel 0x9d4. It scans with
the following parameters:
- dir=fwd
+ dir=fwd
mode=grayscale
h.res=300 dpi
- v.res=600 dpi
+ v.res=600 dpi
hor. pixels = (0xa84 - 0x9d4)/2 = 0x58 = 88
vert. pixels = 0x3e - 0x03 = 0x3b = 59
data = 88x59=5192=0x1448
@@ -2479,18 +2479,18 @@ sanei_lexmark_low_find_start_line (Lexmark_Device * dev)
Byte swap the order of the bytes in the buffer.
- Go through the buffer finding low and high values, which are computed by
- comparing to the weighted average:
+ Go through the buffer finding low and high values, which are computed by
+ comparing to the weighted average:
weighted_average = (lowest value + (highest value - lowest value)/4)
- Low bytes are changed to 0xFF (white), higher of equal bytes are changed
- to 0x00 (black),so that the buffer only contains white (0xFF) or black
+ Low bytes are changed to 0xFF (white), higher of equal bytes are changed
+ to 0x00 (black),so that the buffer only contains white (0xFF) or black
(0x00) values.
Next, we go through the buffer a line (88 bytes) at a time for 59 lines
to read the entire buffer. For each byte in a line we check if the
byte is black. If it is we increment the black byte counter.
- After each line we check the black byte counter. If it is greater than 0
+ After each line we check the black byte counter. If it is greater than 0
we increment the black line count and set the white line count to 0. If
there were no black bytes in the line we set the black line count to 0
and increment the white line count.
@@ -2852,7 +2852,7 @@ sanei_lexmark_low_find_start_line (Lexmark_Device * dev)
} /* end for buffer */
free (buffer);
- /* Stop the scanner.
+ /* Stop the scanner.
This is needed to get the right distance to the scanning area */
if (dev->model.sensor_type == X74_SENSOR)
low_stop_mvmt (dev->devnum);
@@ -3879,7 +3879,7 @@ sanei_lexmark_low_set_scan_regs (Lexmark_Device * dev, SANE_Int resolution,
/* set motor resolution divisor */
dev->shadow_regs[0x39] = 0x03;
- /* data compression
+ /* data compression
dev->shadow_regs[0x40] = 0x90;
dev->shadow_regs[0x50] = 0x20; */
/* no data compression */
@@ -4296,7 +4296,7 @@ sanei_lexmark_low_set_scan_regs (Lexmark_Device * dev, SANE_Int resolution,
dev->shadow_regs[0x36] = 0x0a;
dev->shadow_regs[0x38] = 0x04;
- /* data compression
+ /* data compression
dev->shadow_regs[0x40] = 0x90;
dev->shadow_regs[0x50] = 0x20; */
@@ -4499,8 +4499,8 @@ sanei_lexmark_low_set_scan_regs (Lexmark_Device * dev, SANE_Int resolution,
dev->shadow_regs[0x37] = 0x07;
dev->shadow_regs[0x38] = 0x0b;
- /* data compression
- dev->shadow_regs[0x40] = 0x90;
+ /* data compression
+ dev->shadow_regs[0x40] = 0x90;
dev->shadow_regs[0x50] = 0x20; */
/* no data compression */
dev->shadow_regs[0x40] = 0x80;
@@ -5471,7 +5471,7 @@ read_buffer_is_empty (Read_Buffer * read_buffer)
return read_buffer->empty;
}
-/*
+/*
* average a width*height rgb/monochrome area
* return values in given pointers
*/
@@ -5882,7 +5882,7 @@ sanei_lexmark_low_shading_calibration (Lexmark_Device * dev)
/* computes coefficients */
/* there are 8 lines usable for shading calibration at 150 dpi, between
- bottom of "home position" dot and the start of the scanner's window
+ bottom of "home position" dot and the start of the scanner's window
assembly, we only use 7 of them */
if (yoffset + (8 * 4) / regs[0x7a] < lines)
lines = yoffset + (8 * 4) / regs[0x7a];
@@ -6003,7 +6003,7 @@ sanei_lexmark_low_calibration (Lexmark_Device * dev)
return status;
}
- /* put the calibrated or manual settings before shading calibration
+ /* put the calibrated or manual settings before shading calibration
which must be done with final setting values */
if (rts88xx_is_color (dev->shadow_regs))
{
@@ -6049,7 +6049,7 @@ sanei_lexmark_low_assign_sensor (Lexmark_Device * dev)
return SANE_STATUS_GOOD;
}
-/* assign model description, based on USB id, and register content when
+/* assign model description, based on USB id, and register content when
* available */
SANE_Status
sanei_lexmark_low_assign_model (Lexmark_Device * dev,
diff --git a/backend/lexmark_models.c b/backend/lexmark_models.c
index 7819a8d..4ca675d 100644
--- a/backend/lexmark_models.c
+++ b/backend/lexmark_models.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2006-2010 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2006-2010 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2010 "Torsten Houwaart" <ToHo@gmx.de> X74 support
This file is part of the SANE package.
diff --git a/backend/lexmark_sensors.c b/backend/lexmark_sensors.c
index 9a34354..4b63d7d 100644
--- a/backend/lexmark_sensors.c
+++ b/backend/lexmark_sensors.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2006-2010 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2006-2010 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2010 "Torsten Houwaart" <ToHo@gmx.de> X74 support
This file is part of the SANE package.
diff --git a/backend/magicolor.c b/backend/magicolor.c
index d3af142..3b27a85 100644
--- a/backend/magicolor.c
+++ b/backend/magicolor.c
@@ -1288,9 +1288,10 @@ mc_scan_finish(Magicolor_Scanner * s)
status = cmd_finish_scan (s);
status = cmd_request_error(s);
- if (status != SANE_STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD) {
cmd_cancel_scan (s);
return status;
+ }
/* XXX required? */
/* TODO: cmd_reset(s);*/
@@ -2050,7 +2051,7 @@ mc_network_discovery(const char*host)
fd_set fdset;
DBG(1, " loop=%d\n", i++);
timeout.tv_sec = 0;
- /* Use a 125ms timeout for select. If we get a response,
+ /* Use a 125ms timeout for select. If we get a response,
* the loop will be entered earlier again, anyway */
timeout.tv_usec = 125000;
FD_ZERO (&fdset);
@@ -2193,7 +2194,7 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
/* Timeout for all other read requests */
DBG(50, "%s: Request timeout set to %d\n", __func__, timeout);
MC_Request_Timeout = timeout;
-
+
} else {
/* TODO: Warning about unparsable line! */
}
@@ -2414,7 +2415,7 @@ init_options(Magicolor_Scanner *s)
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_SOURCE].constraint.string_list = source_list;
s->val[OPT_SOURCE].w = 0; /* always use Flatbed as default */
-
+
s->opt[OPT_ADF_MODE].name = "adf-mode";
s->opt[OPT_ADF_MODE].title = SANE_I18N("ADF Mode");
s->opt[OPT_ADF_MODE].desc =
diff --git a/backend/magicolor.conf.in b/backend/magicolor.conf.in
index 9c25994..a7b7a4f 100644
--- a/backend/magicolor.conf.in
+++ b/backend/magicolor.conf.in
@@ -39,4 +39,3 @@ usb
### e.g.:
# usb 0x132b 0x2098
-
diff --git a/backend/matsushita.c b/backend/matsushita.c
index e70c60a..62bfb06 100644
--- a/backend/matsushita.c
+++ b/backend/matsushita.c
@@ -2,49 +2,49 @@
Copyright (C) 2002, 2004 Frank Zago (sane at zago dot net)
Copyright (C) 2002 Other SANE contributors
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
$Id$
- Matsushita/Panasonic KV-SS25, KV-SS50, KV-SS55, KV-SS50EX,
+ Matsushita/Panasonic KV-SS25, KV-SS50, KV-SS55, KV-SS50EX,
KV-SS55EX, KV-SS850, KV-SS855 SCSI scanners.
This backend may support more Panasonic scanners.
@@ -132,7 +132,7 @@ static const SANE_Word resolutions_rounds_400[8] = {
/*--------------------------------------------------------------------------*/
-/* Lists of supported halftone. They are only valid with
+/* Lists of supported halftone. They are only valid with
* for the Black&White mode. */
static SANE_String_Const halftone_pattern_list[] = {
SANE_I18N ("None"),
@@ -265,7 +265,7 @@ static const int feeder_mode_val[] = {
/*--------------------------------------------------------------------------*/
-/* Paper size in millimeters.
+/* Paper size in millimeters.
* Values from http://www.twics.com/~eds/paper/. */
static const struct paper_sizes paper_sizes[] = {
{"2A0", 1189, 1682},
@@ -1317,7 +1317,7 @@ matsushita_init_options (Matsushita_Scanner * dev)
/* Wait until the scanner is ready.
*
* The only reason I know the scanner is not ready is because it is
- * moving the CCD.
+ * moving the CCD.
*/
static SANE_Status
matsushita_wait_scanner (Matsushita_Scanner * dev)
@@ -1524,17 +1524,17 @@ matsushita_fill_image (Matsushita_Scanner * dev)
while (dev->real_bytes_left)
{
- /*
+ /*
* Try to read the maximum number of bytes.
*
- * The windows driver reads no more than 0x8000 byte.
+ * The windows driver reads no more than 0x8000 byte.
*
* This backend operates differently than the windows
* driver. The windows TWAIN driver always read 2 more bytes
* at the end, so it gets a CHECK CONDITION with a short read
* sense. Since the linux scsi layer seem to be buggy
* regarding the resid, always read exactly the number of
- * remaining bytes.
+ * remaining bytes.
*/
size = dev->real_bytes_left;
@@ -1545,7 +1545,7 @@ matsushita_fill_image (Matsushita_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -1620,7 +1620,7 @@ matsushita_fill_image (Matsushita_Scanner * dev)
case 4:
{
- /* Adjust from a depth of 4 bits ([0..15]) to
+ /* Adjust from a depth of 4 bits ([0..15]) to
* a depth of 8 bits ([0..255]) */
unsigned char *src = dev->buffer;
@@ -1654,7 +1654,7 @@ matsushita_fill_image (Matsushita_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
diff --git a/backend/matsushita.conf.in b/backend/matsushita.conf.in
index 4d3cf24..98eaa88 100644
--- a/backend/matsushita.conf.in
+++ b/backend/matsushita.conf.in
@@ -7,7 +7,7 @@ scsi "K.M.E. " "KV-S2025C "
scsi "K.M.E. " "KV-S2045C "
scsi "K.M.E. " "KV-S2065L "
-# These scanners are untested.
+# These scanners are untested.
# If you have one:
# - check that the vendor/product strings are correct
# - uncomment the line
diff --git a/backend/matsushita.h b/backend/matsushita.h
index a1528bf..bff7a04 100644
--- a/backend/matsushita.h
+++ b/backend/matsushita.h
@@ -37,10 +37,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -228,7 +228,7 @@ SANE_I18N("Automatic separation")
/*--------------------------------------------------------------------------*/
-/* Differences between the scanners.
+/* Differences between the scanners.
* The scsi_* fields are used to lookup the correcte entry. */
struct scanners_supported
{
@@ -342,7 +342,7 @@ Matsushita_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/microtek.c b/backend/microtek.c
index ff82df4..05f8003 100644
--- a/backend/microtek.c
+++ b/backend/microtek.c
@@ -1,7 +1,7 @@
/***************************************************************************
* SANE - Scanner Access Now Easy.
- microtek.c
+ microtek.c
This file Copyright 2002 Matthew Marjanovic
@@ -151,7 +151,7 @@ static SANE_Range brightness_range = {-100, 100, 1};
/*static SANE_Range exposure_range = {-18, 21, 3};*/
/*static SANE_Range contrast_range = {-42, 49, 7};*/
static SANE_Range u8_range = {0, 255, 1};
-static SANE_Range analog_gamma_range =
+static SANE_Range analog_gamma_range =
{ SANE_FIX(0.1), SANE_FIX(4.0), SANE_FIX(0) };
@@ -235,7 +235,7 @@ ring_alloc (size_t initial_size, size_t bpl, size_t ppl)
rb->green_extra = 0;
rb->blue_extra = 0;
rb->complete_count = 0;
-
+
return rb;
}
@@ -260,7 +260,7 @@ ring_expand (ring_buffer *rb, size_t amount)
DBG(23, "ring_expand: old, new, inc size: %lu, %lu, %lu\n",
(u_long)oldsize, (u_long)rb->size, (u_long)amount);
DBG(23, "ring_expand: old tr: %lu tg: %lu tb: %lu hc: %lu\n",
- (u_long)rb->tail_red, (u_long)rb->tail_green,
+ (u_long)rb->tail_red, (u_long)rb->tail_green,
(u_long)rb->tail_blue, (u_long)rb->head_complete);
/* if necessary, move data and fix up them pointers */
/* (will break subtly if ring is filled with G or B bytes,
@@ -276,20 +276,20 @@ ring_expand (ring_buffer *rb, size_t amount)
oldsize - rb->head_complete);
if ((rb->tail_red > rb->head_complete) ||
((rb->tail_red == rb->head_complete) &&
- !(rb->complete_count) && !(rb->red_extra)))
+ !(rb->complete_count) && !(rb->red_extra)))
rb->tail_red += amount;
if ((rb->tail_green > rb->head_complete) ||
((rb->tail_green == rb->head_complete) &&
- !(rb->complete_count) && !(rb->green_extra)))
+ !(rb->complete_count) && !(rb->green_extra)))
rb->tail_green += amount;
if ((rb->tail_blue > rb->head_complete) ||
((rb->tail_blue == rb->head_complete) &&
- !(rb->complete_count) && !(rb->blue_extra)))
+ !(rb->complete_count) && !(rb->blue_extra)))
rb->tail_blue += amount;
rb->head_complete += amount;
}
DBG(23, "ring_expand: new tr: %lu tg: %lu tb: %lu hc: %lu\n",
- (u_long)rb->tail_red, (u_long)rb->tail_green,
+ (u_long)rb->tail_red, (u_long)rb->tail_green,
(u_long)rb->tail_blue, (u_long)rb->head_complete);
return SANE_STATUS_GOOD;
}
@@ -320,13 +320,13 @@ ring_free (ring_buffer *rb)
/* typically misinterpreted/munged by the low-level scsi driver) */
/********************************************************************/
static SANE_Status
-sense_handler (int scsi_fd, u_char *sense, void *arg)
+sense_handler (int scsi_fd, u_char *sense, void *arg)
{
int *sense_flags = (int *)arg;
SANE_Status stat;
DBG(10, "SENSE! fd = %d\n", scsi_fd);
- DBG(10, "sense = %02x %02x %02x %02x.\n",
+ DBG(10, "sense = %02x %02x %02x %02x.\n",
sense[0], sense[1], sense[2], sense[3]);
switch(sense[0]) {
case 0x00:
@@ -340,7 +340,7 @@ sense_handler (int scsi_fd, u_char *sense, void *arg)
DBG(10, "sense: ERR_SCSICMD\n");
stat = SANE_STATUS_IO_ERROR;
}
- }
+ }
if (sense[1] & 0x02) {
DBG(10, "sense: ERR_TOOMANY\n");
stat = SANE_STATUS_IO_ERROR;
@@ -394,7 +394,7 @@ wait_ready(Microtek_Scanner *ms)
int retry = 0;
DBG(23, ".wait_ready %d...\n", ms->sfd);
- while ((status = sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0))
+ while ((status = sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0))
!= SANE_STATUS_GOOD) {
DBG(23, "wait_ready failed (%d)\n", retry);
if (retry > 5) return SANE_STATUS_IO_ERROR; /* XXXXXXXX */
@@ -403,7 +403,7 @@ wait_ready(Microtek_Scanner *ms)
}
return SANE_STATUS_GOOD;
}
-
+
/********************************************************************/
/* send scan region coordinates */
@@ -432,7 +432,7 @@ scanning_frame(Microtek_Scanner *ms)
ms->x1, ms->y1, ms->x2, ms->y2);
DBG(23, ".scanning_frame: out- %d,%d %d,%d\n", x1, y1, x2, y2);
data = comm + 6;
- data[0] =
+ data[0] =
((ms->unit_type == MS_UNIT_PIXELS) ? 0x08 : 0 ) |
((ms->mode == MS_MODE_HALFTONE) ? 0x01 : 0 );
data[1] = x1 & 0xFF;
@@ -444,7 +444,7 @@ scanning_frame(Microtek_Scanner *ms)
data[7] = y2 & 0xFF;
data[8] = (y2 >> 8) & 0xFF;
if (DBG_LEVEL >= 192) {
- int i;
+ int i;
#if 0
fprintf(stderr, "SF: ");
for (i=0;i<6+0x09;i++) fprintf(stderr, "%2x ", comm[i]);
@@ -468,8 +468,8 @@ mode_select(Microtek_Scanner *ms)
uint8_t *data, comm[19] = { 0x15, 0, 0, 0, 0, 0 };
DBG(23, ".mode_select %d...\n", ms->sfd);
- data = comm + 6;
- data[0] =
+ data = comm + 6;
+ data[0] =
0x81 |
((ms->unit_type == MS_UNIT_18INCH) ? 0 : 0x08) |
((ms->res_type == MS_RES_5PER) ? 0 : 0x02);
@@ -488,8 +488,8 @@ mode_select(Microtek_Scanner *ms)
comm[4] = (ms->midtone_support) ? 0x0B : 0x0A;
if (DBG_LEVEL >= 192) {
- int i;
-#if 0
+ int i;
+#if 0
fprintf(stderr, "MSL: ");
for (i=0;i<6+comm[4];i++) fprintf(stderr, "%2x ", comm[i]);
fprintf(stderr, "\n");
@@ -518,8 +518,8 @@ mode_select_1(Microtek_Scanner *ms)
data[3] = ((ms->allow_calibrate) ? 0 : 0x02); /* | 0x01; */
if (DBG_LEVEL >= 192) {
- int i;
-#if 0
+ int i;
+#if 0
fprintf(stderr, "MSL1: ");
for (i=0;i<6+0x0A;i++) fprintf(stderr, "%2x ", comm[i]);
fprintf(stderr, "\n");
@@ -532,7 +532,7 @@ mode_select_1(Microtek_Scanner *ms)
}
-
+
/********************************************************************/
/* record mode_sense results in the mode_sense buffer */
/* (this is to tell if something catastrophic has happened */
@@ -556,7 +556,7 @@ save_mode_sense(Microtek_Scanner *ms)
for (i=0; i<10; i++) ms->mode_sense_cache[i] = data[i];
if (DBG_LEVEL >= 192) {
- unsigned int i;
+ unsigned int i;
#if 0
fprintf(stderr, "SMS: ");
for (i=0;i<lenp;i++) fprintf(stderr, "%2x ", data[i]);
@@ -569,8 +569,8 @@ save_mode_sense(Microtek_Scanner *ms)
return status;
}
-
-
+
+
/********************************************************************/
/* read mode_sense and compare to what we saved before */
/********************************************************************/
@@ -590,20 +590,20 @@ compare_mode_sense(Microtek_Scanner *ms, int *match)
status = sanei_scsi_cmd(ms->sfd, comm, 6, data, &lenp);
*match = 1;
- for (i=0; i<10; i++)
+ for (i=0; i<10; i++)
*match = *match && (ms->mode_sense_cache[i] == data[i]);
if (DBG_LEVEL >= 192) {
- unsigned int i;
+ unsigned int i;
#if 0
fprintf(stderr, "CMS: ");
- for (i=0;i<lenp;i++) fprintf(stderr, "%2x(%2x) ",
+ for (i=0;i<lenp;i++) fprintf(stderr, "%2x(%2x) ",
data[i],
ms->mode_sense_cache[i]);
fprintf(stderr, "\n");
#endif
MDBG_INIT("CMS: ");
- for (i=0;i<lenp;i++) MDBG_ADD("%2x(%2x) ",
+ for (i=0;i<lenp;i++) MDBG_ADD("%2x(%2x) ",
data[i],
ms->mode_sense_cache[i]);
MDBG_FINISH(192);
@@ -611,10 +611,10 @@ compare_mode_sense(Microtek_Scanner *ms, int *match)
return status;
}
-
+
/********************************************************************/
/* send mode_sense_1, and upset every scsi driver known to mankind */
-/********************************************************************/
+/********************************************************************/
#if 0
static SANE_Status
mode_sense_1(Microtek_Scanner *ms)
@@ -628,7 +628,7 @@ mode_sense_1(Microtek_Scanner *ms)
data[2] = ms->bright_g;
data[3] = ms->bright_b;
if (DBG_LEVEL >= 192) {
- int i;
+ int i;
fprintf(stderr, "MS1: ");
for (i=0;i<6+0x1E;i++) fprintf(stderr, "%2x ", comm[i]);
fprintf(stderr, "\n");
@@ -639,23 +639,23 @@ mode_sense_1(Microtek_Scanner *ms)
-/********************************************************************/
+/********************************************************************/
/* send "accessory" command */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
accessory(Microtek_Scanner *ms)
{
uint8_t comm[6] = { 0x10, 0, 0, 0, 0, 0 };
DBG(23, ".accessory...\n");
- comm[4] =
+ comm[4] =
((ms->useADF) ? 0x41 : 0x40) |
((ms->prescan) ? 0x18 : 0x10) |
((ms->transparency) ? 0x24 : 0x20) |
((ms->allowbacktrack) ? 0x82 : 0x80);
if (DBG_LEVEL >= 192) {
- int i;
+ int i;
#if 0
fprintf(stderr, "AC: ");
for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]);
@@ -670,16 +670,16 @@ accessory(Microtek_Scanner *ms)
-/********************************************************************/
+/********************************************************************/
/* start the scanner a-scannin' */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
start_scan(Microtek_Scanner *ms)
{
uint8_t comm[6] = { 0x1B, 0, 0, 0, 0, 0 };
DBG(23, ".start_scan...\n");
- comm[4] =
+ comm[4] =
0x01 | /* "start" */
((ms->expandedresolution) ? 0x80 : 0) |
((ms->multibit) ? 0x40 : 0) |
@@ -691,7 +691,7 @@ start_scan(Microtek_Scanner *ms)
((ms->filter == MS_FILT_BLUE) ? 0x18 : 0) ;
if (DBG_LEVEL >= 192) {
- int i;
+ int i;
#if 0
fprintf(stderr, "SS: ");
for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]);
@@ -706,9 +706,9 @@ start_scan(Microtek_Scanner *ms)
-/********************************************************************/
+/********************************************************************/
/* stop the scanner a-scannin' */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
stop_scan(Microtek_Scanner *ms)
{
@@ -716,8 +716,8 @@ stop_scan(Microtek_Scanner *ms)
DBG(23, ".stop_scan...\n");
if (DBG_LEVEL >= 192) {
- int i;
-#if 0
+ int i;
+#if 0
fprintf(stderr, "SPS:");
for (i=0;i<6;i++) fprintf(stderr, "%2x ", comm[i]);
fprintf(stderr, "\n");
@@ -729,11 +729,11 @@ stop_scan(Microtek_Scanner *ms)
return sanei_scsi_cmd(ms->sfd, comm, 6, 0, 0);
}
-
-/********************************************************************/
+
+/********************************************************************/
/* get scan status */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
get_scan_status(Microtek_Scanner *ms,
SANE_Int *busy,
@@ -758,8 +758,8 @@ get_scan_status(Microtek_Scanner *ms,
*busy = data[0];
*bytes_per_line = (data[1]) + (data[2] << 8);
*lines = (data[3]) + (data[4] << 8) + (data[5] << 16);
-
- DBG(20, "get_scan_status(%lu): %d, %d, %d -> #%d\n",
+
+ DBG(20, "get_scan_status(%lu): %d, %d, %d -> #%d\n",
(u_long) lenp, *busy, *bytes_per_line, *lines, retry);
DBG(20, "> %2x %2x %2x %2x %2x %2x\n",
data[0], data[1], data[2], data[3], data[4], data[5]);
@@ -770,20 +770,20 @@ get_scan_status(Microtek_Scanner *ms,
sleep(M_GSS_WAIT * retry);
}
} while ((*busy != 0) && (retry < 4));
-
+
if (*busy == 0) return status;
else return SANE_STATUS_IO_ERROR;
}
-/********************************************************************/
+/********************************************************************/
/* get scanlines from scanner */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
read_scan_data(Microtek_Scanner *ms,
int lines,
- uint8_t *buffer,
+ uint8_t *buffer,
size_t *bufsize)
{
uint8_t comm[6] = { 0x08, 0, 0, 0, 0, 0 };
@@ -792,15 +792,15 @@ read_scan_data(Microtek_Scanner *ms,
comm[2] = (lines >> 16) & 0xFF;
comm[3] = (lines >> 8) & 0xFF;
comm[4] = (lines) & 0xFF;
-
+
return sanei_scsi_cmd(ms->sfd, comm, 6, buffer, bufsize);
}
-
-
-/********************************************************************/
+
+
+/********************************************************************/
/* download color LUT to scanner (if it takes one) */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
download_gamma(Microtek_Scanner *ms)
{
@@ -824,7 +824,7 @@ download_gamma(Microtek_Scanner *ms)
}
max_entry = (1 << bit_depth) - 1;
-
+
DBG(23, ".download_gamma: %d entries of %d bytes, max %d\n",
ms->gamma_entries, ms->gamma_entry_size, max_entry);
commsize = 10 + (ms->gamma_entries * ms->gamma_entry_size);
@@ -835,7 +835,7 @@ download_gamma(Microtek_Scanner *ms)
return SANE_STATUS_NO_MEM;
}
data = comm + 10;
-
+
comm[0] = 0x55;
comm[1] = 0;
comm[2] = 0x27;
@@ -873,9 +873,9 @@ download_gamma(Microtek_Scanner *ms)
do {
SANE_Int *pl_lut;
switch (pl) {
- case 1: pl_lut = ms->red_lut; break;
- case 2: pl_lut = ms->green_lut; break;
- case 3: pl_lut = ms->blue_lut; break;
+ case 1: pl_lut = ms->red_lut; break;
+ case 2: pl_lut = ms->green_lut; break;
+ case 3: pl_lut = ms->blue_lut; break;
default:
DBG(23, ".download_gamma: uh, exceeded pl bound!\n");
free(comm);
@@ -906,7 +906,7 @@ download_gamma(Microtek_Scanner *ms)
if (ms->val[OPT_GAMMA_BIND].w == SANE_TRUE) {
double gamma = SANE_UNFIX(ms->val[OPT_ANALOG_GAMMA].w);
for (i=0; i<ms->gamma_entries; i++) {
- int val = (max_entry *
+ int val = (max_entry *
pow((double) i / ((double) ms->gamma_entries - 1.0),
1.0 / gamma));
switch (ms->gamma_entry_size) {
@@ -931,7 +931,7 @@ download_gamma(Microtek_Scanner *ms)
default: gamma = 1.0; break; /* should never happen */
}
for (i=0; i<ms->gamma_entries; i++) {
- int val = (max_entry *
+ int val = (max_entry *
pow((double) i / ((double) ms->gamma_entries - 1.0),
1.0 / gamma));
switch (ms->gamma_entry_size) {
@@ -949,15 +949,15 @@ download_gamma(Microtek_Scanner *ms)
pl++;
} while ((pl < 4) && (status == SANE_STATUS_GOOD));
}
- } else {
+ } else {
/***** No custom Gamma *****/
DBG(23, ".download_gamma: by default\n");
for (i=0; i<ms->gamma_entries; i++) {
/* int val = (((double) max_entry * (double) i /
((double) ms->gamma_entries - 1.0)) + 0.5); ROUNDING????*/
- int val =
+ int val =
(double) max_entry * (double) i /
- ((double) ms->gamma_entries - 1.0);
+ ((double) ms->gamma_entries - 1.0);
switch (ms->gamma_entry_size) {
case 1:
data[i] = (uint8_t) val;
@@ -975,9 +975,9 @@ download_gamma(Microtek_Scanner *ms)
}
-/********************************************************************/
+/********************************************************************/
/* magic command to start calibration */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
start_calibration(Microtek_Scanner *ms)
{
@@ -985,7 +985,7 @@ start_calibration(Microtek_Scanner *ms)
DBG(23, ".start_calibrate...\n");
if (DBG_LEVEL >= 192) {
- int i;
+ int i;
#if 0
fprintf(stderr, "STCal:");
for (i=0;i<8;i++) fprintf(stderr, "%2x ", comm[i]);
@@ -995,14 +995,14 @@ start_calibration(Microtek_Scanner *ms)
for (i=0;i<8;i++) MDBG_ADD("%2x ", comm[i]);
MDBG_FINISH(192);
}
- return sanei_scsi_cmd(ms->sfd, comm, 8, 0, 0);
+ return sanei_scsi_cmd(ms->sfd, comm, 8, 0, 0);
}
-
-/********************************************************************/
+
+/********************************************************************/
/* magic command to download calibration values */
-/********************************************************************/
+/********************************************************************/
static SANE_Status
download_calibration(Microtek_Scanner *ms, uint8_t *comm,
uint8_t letter, int linewidth)
@@ -1042,7 +1042,7 @@ download_calibration(Microtek_Scanner *ms, uint8_t *comm,
/********************************************************************/
/* Initialize the options registry */
/********************************************************************/
-static SANE_Status
+static SANE_Status
init_options(Microtek_Scanner *ms)
{
int i;
@@ -1136,7 +1136,7 @@ init_options(Microtek_Scanner *ms)
sod[OPT_NEGATIVE].title = SANE_TITLE_NEGATIVE;
sod[OPT_NEGATIVE].desc = SANE_DESC_NEGATIVE;
sod[OPT_NEGATIVE].type = SANE_TYPE_BOOL;
- sod[OPT_NEGATIVE].cap |=
+ sod[OPT_NEGATIVE].cap |=
(ms->dev->info.modes & MI_MODES_NEGATIVE) ? 0 : SANE_CAP_INACTIVE;
val[OPT_NEGATIVE].w = SANE_FALSE;
@@ -1171,7 +1171,7 @@ init_options(Microtek_Scanner *ms)
source_list[i] = NULL;
sod[OPT_SOURCE].constraint.string_list = source_list;
sod[OPT_SOURCE].size = max_string_size(source_list);
- if (i < 2)
+ if (i < 2)
sod[OPT_SOURCE].cap |= SANE_CAP_INACTIVE;
val[OPT_SOURCE].s = strdup(source_list[0]);
}
@@ -1179,7 +1179,7 @@ init_options(Microtek_Scanner *ms)
sod[OPT_PREVIEW].name = SANE_NAME_PREVIEW;
sod[OPT_PREVIEW].title = SANE_TITLE_PREVIEW;
sod[OPT_PREVIEW].desc = SANE_DESC_PREVIEW;
- sod[OPT_PREVIEW].type = SANE_TYPE_BOOL;
+ sod[OPT_PREVIEW].type = SANE_TYPE_BOOL;
sod[OPT_PREVIEW].unit = SANE_UNIT_NONE;
sod[OPT_PREVIEW].size = sizeof(SANE_Word);
val[OPT_PREVIEW].w = SANE_FALSE;
@@ -1224,10 +1224,10 @@ init_options(Microtek_Scanner *ms)
sod[OPT_BR_Y].unit = SANE_UNIT_MM;
sod[OPT_BR_Y].size = sizeof(SANE_Word);
sod[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE;
-
- sod[OPT_TL_X].constraint.range =
+
+ sod[OPT_TL_X].constraint.range =
sod[OPT_BR_X].constraint.range = &(ms->dev->info.doc_x_range);
- sod[OPT_TL_Y].constraint.range =
+ sod[OPT_TL_Y].constraint.range =
sod[OPT_BR_Y].constraint.range = &(ms->dev->info.doc_y_range);
/* set default scan region to be maximum size */
@@ -1262,7 +1262,7 @@ init_options(Microtek_Scanner *ms)
sod[OPT_BRIGHTNESS].type = SANE_TYPE_INT;
sod[OPT_BRIGHTNESS].unit = SANE_UNIT_PERCENT;
sod[OPT_BRIGHTNESS].size = sizeof(SANE_Word);
- sod[OPT_BRIGHTNESS].cap |=
+ sod[OPT_BRIGHTNESS].cap |=
((ms->dev->info.extra_cap & MI_EXCAP_OFF_CTL) ? 0: SANE_CAP_INACTIVE);
sod[OPT_BRIGHTNESS].constraint_type = SANE_CONSTRAINT_RANGE;
sod[OPT_BRIGHTNESS].constraint.range = &brightness_range;
@@ -1308,8 +1308,8 @@ init_options(Microtek_Scanner *ms)
} else {
sod[OPT_HIGHLIGHT].cap |= SANE_CAP_INACTIVE;
sod[OPT_SHADOW].cap |= SANE_CAP_INACTIVE;
- }
-
+ }
+
sod[OPT_MIDTONE].name = "midtone";
sod[OPT_MIDTONE].title = "Midtone Level";
sod[OPT_MIDTONE].desc = "Midtone Level";
@@ -1465,7 +1465,7 @@ init_options(Microtek_Scanner *ms)
if (!(ms->do_real_calib)) {
sod[OPT_CALIB_ONCE].cap |= SANE_CAP_INACTIVE;
val[OPT_CALIB_ONCE].w = SANE_FALSE;
- } else
+ } else
val[OPT_CALIB_ONCE].w = SANE_TRUE;
/*
@@ -1499,7 +1499,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
0x32,0x2e,0x33,0x30,0x53,0x43,0x53,0x49,0x20,0x46,0x2f,0x57,0x56,0x33,0x2e,0x31,
0x20,0x43,0x54,0x4c,0x35,0x33,0x38,0x30,0x03,0x4f,0x8c,0xc5,0x00,0xee,0x5b,0x43,
0x01,0x01,0x02,0x00,0x00,0x03,0x00,0x01,0x00,0x4a,0x01,0x04,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff
};
#endif
DBG(15, "parse_inquiry...\n");
@@ -1511,14 +1511,14 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->model_name[16] = 0;
mi->revision_num[4] = 0;
mi->vendor_string[20] = 0;
-
+
mi->device_type = (SANE_Byte)(result[0] & 0x1f);
mi->SCSI_firmware_ver_major = (SANE_Byte)((result[1] & 0xf0) >> 4);
mi->SCSI_firmware_ver_minor = (SANE_Byte)(result[1] & 0x0f);
mi->scanner_firmware_ver_major = (SANE_Byte)((result[2] & 0xf0) >> 4);
mi->scanner_firmware_ver_minor = (SANE_Byte)(result[2] & 0x0f);
mi->response_data_format = (SANE_Byte)(result[3]);
-
+
mi->res_step = (SANE_Byte)(result[56] & 0x03);
mi->modes = (SANE_Byte)(result[57]);
mi->pattern_count = (SANE_Int)(result[58] & 0x7f);
@@ -1526,7 +1526,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->feed_type = (SANE_Byte)(result[59] & 0x0F);
mi->compress_type = (SANE_Byte)(result[59] & 0x30);
mi->unit_type = (SANE_Byte)(result[59] & 0xC0);
-
+
mi->doc_size_code = (SANE_Byte)result[60];
/* we'll compute the max sizes after we know base resolution... */
@@ -1536,7 +1536,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->cont_settings = (SANE_Int)(result[72]);
mi->min_contrast = -42;
mi->max_contrast = (mi->cont_settings * 7) - 49;
-
+
mi->exp_settings = (SANE_Int)(result[61] & 0x0f);
if ((SANE_Int)(result[73]))
mi->exp_settings = (SANE_Int)(result[73]);
@@ -1548,7 +1548,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->max_contrast = 49;
if (mi->contrast_vals)
mi->max_contrast = (mi->contrast_vals * 7) - 49;
-
+
mi->exposure_vals = (SANE_Int)(result[73]);
mi->min_exposure = -18;
mi->max_exposure = 21;
@@ -1606,7 +1606,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->max_x = 8.5 * mi->base_resolution - 1;
mi->max_y = 14.0 * mi->base_resolution - 1;
break;
- case 0x01:
+ case 0x01:
mi->max_x = 8.5 * mi->base_resolution - 1;
mi->max_y = 11.0 * mi->base_resolution - 1;
break;
@@ -1625,15 +1625,15 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
case 0x05:
mi->max_x = 8.3 * mi->base_resolution - 1;
mi->max_y = 14.0 * mi->base_resolution - 1;
- break;
+ break;
case 0x06:
mi->max_x = 8.3 * mi->base_resolution - 1;
mi->max_y = 13.5 * mi->base_resolution - 1;
- break;
+ break;
case 0x07:
mi->max_x = 8.0 * mi->base_resolution - 1;
mi->max_y = 14.0 * mi->base_resolution - 1;
- break;
+ break;
case 0x80:
/* Slide format, size is mm */
mi->max_x = (35.0 / MM_PER_INCH) * mi->base_resolution - 1;
@@ -1666,9 +1666,9 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->doc_y_range.max = SANE_FIX((float)mi->max_y / base_res_dpmm);
mi->doc_y_range.quant = SANE_FIX(0);
}
-
- mi->source_options = (SANE_Byte)(result[63]);
-
+
+ mi->source_options = (SANE_Byte)(result[63]);
+
mi->expanded_resolution = (result[64] & 0x01);
/* my E6 reports exp-res capability incorrectly */
if ((mi->model_code == 0x66) || (mi->model_code == 0x63)) {
@@ -1685,27 +1685,27 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->enhance_cap = (result[65] & 0x03);
- /*
+ /*
switch (result[66] & 0x0F) {
case 0x00: mi->max_lookup_size = 0; break;
case 0x01: mi->max_lookup_size = 256; break;
case 0x03: mi->max_lookup_size = 1024; break;
case 0x05: mi->max_lookup_size = 4096; break;
case 0x09: mi->max_lookup_size = 65536; break;
- default:
+ default:
mi->max_lookup_size = 0;
DBG(15, "parse_inquiry: Unknown gamma LUT size! 0x%x\n",
result[66]);
}
*/
-
+
/* This is not how the vague documentation specifies this register.
We're going to take it literally here -- i.e. if the bit is
set, the scanner supports the value, otherwise it doesn't.
(The docs say all lower values are always supported. This is
- not the case for the StudioScan IIsi, at least, which only
+ not the case for the StudioScan IIsi, at least, which only
specifies 0x02==1024-byte table, and only supports that, too.)
-
+
All-in-all, it doesn't matter, since we take the largest
allowed LUT size anyway.
*/
@@ -1717,7 +1717,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
mi->max_lookup_size = 1024;
else if (result[66] & 0x01)
mi->max_lookup_size = 256;
- else
+ else
mi->max_lookup_size = 0;
/* my E6 reports incorrectly */
@@ -1748,13 +1748,13 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
DBG(15, "parse_inquiry: Unknown gamma max val! 0x%x\n",
result[66]);
}
-
+
mi->fast_color_preview = (SANE_Byte)(result[67] & 0x01);
mi->xfer_format_select = (SANE_Byte)(result[68] & 0x01);
mi->color_sequence = (SANE_Byte)(result[69] & 0x7f);
mi->does_3pass = (SANE_Byte)(!(result[69] & 0x80));
mi->does_mode1 = (SANE_Byte)(result[71] & 0x01);
-
+
mi->bit_formats = (SANE_Byte)(result[74] & 0x0F);
mi->extra_cap = (SANE_Byte)(result[75] & 0x07);
@@ -1780,7 +1780,7 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
/********************************************************************/
/* Dump all we know about scanner to stderr */
/********************************************************************/
-static SANE_Status
+static SANE_Status
dump_inquiry(Microtek_Info *mi, unsigned char *result)
{
int i;
@@ -1802,12 +1802,12 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
mi->vendor_id, mi->model_name);
DBG(1, "Vendor Specific String: '%s'\n", mi->vendor_string);
DBG(1, "Firmware Rev: '%s'\n", mi->revision_num);
- DBG(1,
+ DBG(1,
"SCSI F/W version: %1d.%1d Scanner F/W version: %1d.%1d\n",
mi->SCSI_firmware_ver_major, mi->SCSI_firmware_ver_minor,
mi->scanner_firmware_ver_major, mi->scanner_firmware_ver_minor);
DBG(1, "Response data format: 0x%02x\n", mi->response_data_format);
-
+
DBG(1, "===== Imaging Capabilities...\n");
DBG(1, "Modes: %s%s%s%s%s%s%s\n",
(mi->modes & MI_MODES_LINEART) ? "Lineart " : "",
@@ -1817,7 +1817,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
(mi->modes & MI_MODES_TRANSMSV) ? "(X-msv) " : "",
(mi->modes & MI_MODES_ONEPASS) ? "(OnePass) " : "",
(mi->modes & MI_MODES_NEGATIVE) ? "(Negative) " : "");
- DBG(1,
+ DBG(1,
"Resolution Step Sizes: %s%s Expanded Resolution Support? %s%s\n",
(mi->res_step & MI_RESSTEP_1PER) ? "1% " : "",
(mi->res_step & MI_RESSTEP_5PER) ? "5%" : "",
@@ -1849,11 +1849,11 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
DBG(1, "Digital brightness/offset? %s\n",
(mi->extra_cap & MI_EXCAP_OFF_CTL) ? "yes" : "no");
/*
- fprintf(stderr,
+ fprintf(stderr,
"Gamma Table Size: %d entries of %d bytes (max. value: %d)\n",
mi->max_lookup_size, mi->gamma_size, mi->max_gamma_val);
*/
- DBG(1,
+ DBG(1,
"Gamma Table Size: %d entries of %d bytes (max. depth: %d)\n",
mi->max_lookup_size, mi->gamma_size, mi->max_gamma_bit_depth);
@@ -1861,7 +1861,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
DBG(1, "Feed type: %s%s ADF support? %s\n",
(mi->feed_type & MI_FEED_FLATBED) ? "flatbed " : "",
(mi->feed_type & MI_FEED_EDGEFEED) ? "edge-feed " : "",
- (mi->feed_type & MI_FEED_AUTOSUPP) ? "yes" : "no");
+ (mi->feed_type & MI_FEED_AUTOSUPP) ? "yes" : "no");
DBG(1, "Document Feeder Support? %s Feeder Backtracking? %s\n",
(mi->source_options & MI_SRC_FEED_SUPP) ? "yes" : "no ",
(mi->source_options & MI_SRC_FEED_BT) ? "yes" : "no ");
@@ -1882,15 +1882,15 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
(mi->xfer_format_select) ? "yes" : "no");
MDBG_INIT("Color Transfer Sequence: ");
switch (mi->color_sequence) {
- case MI_COLSEQ_PLANE:
+ case MI_COLSEQ_PLANE:
MDBG_ADD("plane-by-plane (3-pass)"); break;
- case MI_COLSEQ_PIXEL:
+ case MI_COLSEQ_PIXEL:
MDBG_ADD("pixel-by-pixel RGB"); break;
case MI_COLSEQ_RGB:
MDBG_ADD("line-by-line, R-G-B sequence"); break;
case MI_COLSEQ_NONRGB:
MDBG_ADD("line-by-line, non-sequential with headers"); break;
- case MI_COLSEQ_2PIXEL:
+ case MI_COLSEQ_2PIXEL:
MDBG_ADD("2pixel-by-2pixel RRGGBB"); break;
default:
MDBG_ADD("UNKNOWN CODE (0x%02x)", mi->color_sequence);
@@ -1905,7 +1905,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
(mi->extra_cap & MI_EXCAP_DIS_LNTBL) ? "yes" : "no");
DBG(1, "Can Disable Start-of-Scan Recalibration? %s\n",
(mi->extra_cap & MI_EXCAP_DIS_RECAL) ? "yes" : "no");
-
+
DBG(1, "Internal expanded expansion? %s\n",
mi->does_expansion ? "yes" : "no");
/*
@@ -1922,7 +1922,7 @@ dump_inquiry(Microtek_Info *mi, unsigned char *result)
/********************************************************************/
/* Dump all we know about some unknown scanner to stderr */
/********************************************************************/
-static SANE_Status
+static SANE_Status
dump_suspect_inquiry(unsigned char *result)
{
int i;
@@ -1953,7 +1953,7 @@ dump_suspect_inquiry(unsigned char *result)
strncpy(revision_num, (char *)&result[32], 4);
vendor_id[8] = 0;
model_name[16] = 0;
- revision_num[5] = 0;
+ revision_num[5] = 0;
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);
@@ -1969,7 +1969,7 @@ dump_suspect_inquiry(unsigned char *result)
DBG(1, "Vendor Name: '%s' Model Name: '%s'\n",
vendor_id, model_name);
DBG(1, "Firmware Rev: '%s'\n", revision_num);
- DBG(1,
+ DBG(1,
"SCSI F/W version: %1d.%1d Scanner F/W version: %1d.%1d\n",
SCSI_firmware_ver_major, SCSI_firmware_ver_minor,
scanner_firmware_ver_major, scanner_firmware_ver_minor);
@@ -2035,7 +2035,7 @@ id_microtek(uint8_t *result, char **model_string)
case 0x5f :
*model_string = "ScanMaker E3"; break;
case 0x62 :
- if (!(strncmp("Polaroid", (char *)&(result[8]), 8)))
+ if (!(strncmp("Polaroid", (char *)&(result[8]), 8)))
*model_string = "Polaroid SprintScan 35/LE";
else
*model_string = "ScanMaker 35t+";
@@ -2123,7 +2123,7 @@ id_microtek(uint8_t *result, char **model_string)
/********************************************************************/
/* Try to attach a device as a Microtek scanner */
/********************************************************************/
-static SANE_Status
+static SANE_Status
attach_scanner(const char *devicename, Microtek_Device **devp)
{
Microtek_Device *dev;
@@ -2165,7 +2165,7 @@ attach_scanner(const char *devicename, Microtek_Device **devp)
if (DBG_LEVEL >= 5) dump_suspect_inquiry(result);
return SANE_STATUS_INVAL;
}
-
+
dev=malloc(sizeof(*dev));
if (!dev) return SANE_STATUS_NO_MEM;
memset(dev, 0, sizeof(*dev));
@@ -2217,7 +2217,7 @@ static SANE_Status end_scan(Microtek_Scanner *s, SANE_Status ostat)
/* stop the scanner */
if (s->scan_started) {
status = stop_scan(s);
- if (status != SANE_STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
DBG(23, "end_scan: OY! on stop_scan\n");
s->scan_started = SANE_FALSE;
}
@@ -2285,7 +2285,7 @@ static void sort_values(int *result, uint8_t *scanline[], int pix)
/********************************************************************/
-static void calc_calibration(uint8_t *caldata, uint8_t *scanline[],
+static void calc_calibration(uint8_t *caldata, uint8_t *scanline[],
int pixels)
{
int i,j;
@@ -2303,14 +2303,14 @@ static void calc_calibration(uint8_t *caldata, uint8_t *scanline[],
q3 = sorted[STRIPS * 3 / 4]; /* third quartile */
bot = q1 - 3 * (q3 - q1) / 2; /* quick'n'easy bounds */
top = q3 + 3 * (q3 - q1) / 2;
-
+
for (j=0; j<STRIPS; j++) {
if ((sorted[j] >= bot) && (sorted[j] <= top)) {
sum += sorted[j];
count++;
}
}
- if (count)
+ if (count)
caldata[i] = (sum + (count / 2)) / count;
else {
DBG(23, "zero: i=%d b/t=%d/%d ", i, bot, top);
@@ -2343,9 +2343,9 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s)
uint8_t letter;
int i, spot;
int nmax, ntoget, nleft;
-
+
DBG(10, "do_real_calibrate...\n");
-
+
/* tell scanner to read it's little chart */
if ((status = start_calibration(s)) != SANE_STATUS_GOOD) return status;
if ((status = get_scan_status(s, &busy, &linewidth, &lines))
@@ -2372,7 +2372,7 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s)
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);
- if ((statusA = read_scan_data(s, ntoget, input+spot, &buffsize))
+ if ((statusA = read_scan_data(s, ntoget, input+spot, &buffsize))
!= SANE_STATUS_GOOD) {
DBG(23, "...read scan failed\n");
break;
@@ -2409,7 +2409,7 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s)
switch (letter) {
case 'R': letter = 'G'; break;
case 'G': letter = 'B'; break;
- case 'B':
+ case 'B':
default: letter = 'X'; break;
}
}
@@ -2431,9 +2431,9 @@ static SANE_Status do_precalibrate(SANE_Handle handle)
Microtek_Scanner *s = handle;
SANE_Status status, statusA;
SANE_Int busy, linewidth, lines;
-
+
DBG(10, "do_precalibrate...\n");
-
+
if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return status;
{
SANE_Int y1 = s->y1;
@@ -2441,7 +2441,7 @@ static SANE_Status do_precalibrate(SANE_Handle handle)
/* some small range, but large enough to cause the scanner
to think it'll scan *something*... */
s->y1 = 0;
- s->y2 =
+ s->y2 =
(s->resolution > s->dev->info.base_resolution) ?
4 : 4 * s->dev->info.base_resolution / s->resolution;
status = scanning_frame(s);
@@ -2450,7 +2450,7 @@ static SANE_Status do_precalibrate(SANE_Handle handle)
if (status != SANE_STATUS_GOOD) return status;
}
- if (s->dev->info.source_options &
+ if (s->dev->info.source_options &
(MI_SRC_FEED_BT | MI_SRC_HAS_TRANS |
MI_SRC_FEED_SUPP | MI_SRC_HAS_FEED)) { /* ZZZZZZZZZZZ */
if ((status = accessory(s)) != SANE_STATUS_GOOD) return status;
@@ -2465,10 +2465,10 @@ static SANE_Status do_precalibrate(SANE_Handle handle)
s->allow_calibrate = allow_calibrate;
if (status != SANE_STATUS_GOOD) return status;
}
-
+
if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return status;
if ((status = start_scan(s)) != SANE_STATUS_GOOD) return status;
- if ((statusA = get_scan_status(s, &busy,
+ if ((statusA = get_scan_status(s, &busy,
&linewidth, &lines)) != SANE_STATUS_GOOD) {
DBG(10, "do_precalibrate: get_scan_status fails\n");
}
@@ -2492,7 +2492,7 @@ static SANE_Status finagle_precal(SANE_Handle handle)
int match;
/* try to check if scanner has been reset */
- /* if so, calibrate it
+ /* if so, calibrate it
(either for real, or via a fake scan, with calibration */
/* (but only bother if you *could* disable calibration) */
DBG(23, "finagle_precal...\n");
@@ -2523,7 +2523,7 @@ static SANE_Status finagle_precal(SANE_Handle handle)
} else
s->precal_record = MS_PRECAL_GRAY;
} else
- DBG(23, "finagle_precal: no precalibrate necessary.\n");
+ DBG(23, "finagle_precal: no precalibrate necessary.\n");
}
return SANE_STATUS_GOOD;
}
@@ -2544,7 +2544,7 @@ set_pass_parameters (SANE_Handle handle)
switch (s->this_pass) {
case 1:
s->filter = MS_FILT_RED;
- s->params.format = SANE_FRAME_RED;
+ s->params.format = SANE_FRAME_RED;
s->params.last_frame = SANE_FALSE;
break;
case 2:
@@ -2552,7 +2552,7 @@ set_pass_parameters (SANE_Handle handle)
s->params.format = SANE_FRAME_GREEN;
s->params.last_frame = SANE_FALSE;
break;
- case 3:
+ case 3:
s->filter = MS_FILT_BLUE;
s->params.format = SANE_FRAME_BLUE;
s->params.last_frame = SANE_TRUE;
@@ -2588,7 +2588,7 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines)
size_t nbytes = nlines * rb->bpl;
size_t start = (rb->head_complete + rb->complete_count) % rb->size;
- size_t max_xfer =
+ size_t max_xfer =
(start < rb->head_complete) ?
(rb->head_complete - start) :
(rb->size - start + rb->head_complete);
@@ -2616,14 +2616,14 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines)
size_t i;
double x1, x2, n1, n2;
for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2);
- i < rb->bpl;
+ i < rb->bpl;
i++) {
byte = 0;
- for (bit=0;
- bit < 8;
+ for (bit=0;
+ bit < 8;
bit++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) {
/* #define getbit(byte, index) (((byte)>>(index))&1) */
- byte |=
+ byte |=
((
(x2 == n2) ?
(((sb[(int)n1 / 8])>>(7 - ((int)n1) % 8))&1) :
@@ -2638,13 +2638,13 @@ static SANE_Status pack_flat_data(Microtek_Scanner *s, size_t nlines)
sb += s->pixel_bpl;
}
} else { /* multibit scan (8 is assumed!) */
- for (line=0; line<nlines; line++) {
+ for (line=0; line<nlines; line++) {
double x1, x2, n1, n2;
int i;
for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2);
- i < s->dest_ppl;
+ i < s->dest_ppl;
i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) {
- db[pos] =
+ db[pos] =
(x2 == n2) ?
sb[(int)n1] :
(int)(((double)sb[(int)n1] * (n2 - x1) +
@@ -2683,12 +2683,12 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines)
size_t completed;
size_t spot;
SANE_Byte id;
-
+
{
size_t ar, ag, ab; /* allowed additions */
size_t dr, dg, db; /* additions which will occur */
SANE_Status status;
-
+
dr = dg = db = nlines * rb->bpl;
ar = rb->size - (rb->complete_count + rb->red_extra * 3);
ag = rb->size - (rb->complete_count + rb->green_extra * 3);
@@ -2700,7 +2700,7 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines)
if ((dr > ar) ||
(dg > ag) ||
(db > ab)) {
- size_t increase = 0;
+ size_t increase = 0;
if (dr > ar) increase = (dr - ar);
if (dg > ag) increase = MAX(increase, (dg - ag));
if (db > ab) increase = MAX(increase, (db - ab));
@@ -2725,9 +2725,9 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines)
int i;
double x1, x2, n1, n2;
for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2);
- i < s->dest_ppl;
+ i < s->dest_ppl;
i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) {
- db[spot] =
+ db[spot] =
(x2 == n2) ?
sb[(int)n1] :
(int)(((double)sb[(int)n1] * (n2 - x1) +
@@ -2756,9 +2756,9 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines)
rb->red_extra -= completed;
rb->green_extra -= completed;
rb->blue_extra -= completed;
-
+
DBG(18, "pack_seq: extra r: %lu g: %lu b: %lu\n",
- (u_long)rb->red_extra,
+ (u_long)rb->red_extra,
(u_long)rb->green_extra,
(u_long)rb->blue_extra);
DBG(18, "pack_seq: completed: %lu complete: %lu\n",
@@ -2767,21 +2767,21 @@ pack_seqrgb_data (Microtek_Scanner *s, size_t nlines)
return SANE_STATUS_GOOD;
}
-
+
/********************************************************************/
/* Process non-sequential R,G, and B scan-lines */
/********************************************************************/
static SANE_Status
pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
{
- ring_buffer *rb = s->rb;
+ ring_buffer *rb = s->rb;
unsigned int seg; /* , i;*/
SANE_Byte *db;
SANE_Byte *sb = s->scsi_buffer;
size_t completed;
size_t spot;
SANE_Byte id;
-
+
/* prescan to decide if ring should be expanded */
{
size_t ar, ag, ab; /* allowed additions */
@@ -2790,7 +2790,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
SANE_Byte *pt;
for (dr = dg = db = 0, seg = 0, pt = s->scsi_buffer + 1;
- seg < nlines * 3;
+ seg < nlines * 3;
seg++, pt += s->ppl + 2) {
switch (*pt) {
case 'R': dr += rb->bpl; break;
@@ -2809,7 +2809,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
if ((dr > ar) ||
(dg > ag) ||
(db > ab)) {
- size_t increase = 0;
+ size_t increase = 0;
if (dr > ar) increase = (dr - ar);
if (dg > ag) increase = MAX(increase, (dg - ag));
if (db > ab) increase = MAX(increase, (db - ab));
@@ -2838,9 +2838,9 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
int i;
double x1, x2, n1, n2;
for (i = 0, x1 = 0.0, x2 = s->exp_aspect, n1 = 0.0, n2 = floor(x2);
- i < s->dest_ppl;
+ i < s->dest_ppl;
i++, x1 = x2, n1 = n2, x2 += s->exp_aspect, n2 = floor(x2)) {
- db[spot] =
+ db[spot] =
(x2 == n2) ?
sb[(int)n1] :
(int)(((double)sb[(int)n1] * (n2 - x1) +
@@ -2868,9 +2868,9 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
rb->red_extra -= completed;
rb->green_extra -= completed;
rb->blue_extra -= completed;
-
+
DBG(18, "pack_goofy: extra r: %lu g: %lu b: %lu\n",
- (u_long)rb->red_extra,
+ (u_long)rb->red_extra,
(u_long)rb->green_extra,
(u_long)rb->blue_extra);
DBG(18, "pack_goofy: completed: %lu complete: %lu\n",
@@ -2878,7 +2878,7 @@ pack_goofyrgb_data(Microtek_Scanner *s, size_t nlines)
return SANE_STATUS_GOOD;
}
-
+
/********************************************************************/
@@ -2891,14 +2891,14 @@ pack_seq2r2g2b_data(Microtek_Scanner *s, size_t nlines)
SANE_Status status;
ring_buffer *rb = s->rb;
size_t nbytes = nlines * rb->bpl;
-
+
size_t start = (rb->head_complete + rb->complete_count) % rb->size;
- size_t max_xfer =
+ size_t max_xfer =
(start < rb->head_complete) ?
(rb->head_complete - start) :
(rb->size - start + rb->head_complete);
size_t length = MIN(nbytes, max_xfer);
-
+
if (nbytes > max_xfer) {
DBG(23, "pack_2r2g2b: must expand ring, %lu + %lu\n",
(u_long)rb->size, (u_long)(nbytes - max_xfer));
@@ -2908,7 +2908,7 @@ pack_seq2r2g2b_data(Microtek_Scanner *s, size_t nlines)
{
unsigned int line;
int p;
- size_t pos = start;
+ size_t pos = start;
SANE_Byte *sb = s->scsi_buffer;
SANE_Byte *db = rb->base;
@@ -2968,11 +2968,11 @@ read_from_scanner (Microtek_Scanner *s, int *nlines)
DBG(18, "read_from_scanner: no gss/no unscanned\n");
remaining = 0;
}
-
+
*nlines = MIN(remaining, s->max_scsi_lines);
DBG(18, "sane_read: max_scsi: %d, rem: %d, nlines: %d\n",
s->max_scsi_lines, remaining, *nlines);
-
+
/* grab them bytes! (only if the scanner still has bytes to give...) */
if (*nlines > 0) {
buffsize = *nlines * (s->pixel_bpl + s->header_bpl);/* == "* linewidth" */
@@ -3002,7 +3002,7 @@ pack_into_ring(Microtek_Scanner *s, int nlines)
switch (s->line_format) {
case MS_LNFMT_FLAT:
status = pack_flat_data(s, nlines); break;
- case MS_LNFMT_SEQ_RGB:
+ case MS_LNFMT_SEQ_RGB:
status = pack_seqrgb_data(s, nlines); break;
case MS_LNFMT_GOOFY_RGB:
status = pack_goofyrgb_data(s, nlines); break;
@@ -3081,13 +3081,13 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize)
DBG(23, "sane_init: config-> %s\n", dev_name);
if (dev_name[0] == '#') continue; /* ignore comments */
if (!(strncmp("noprecal", dev_name, 8))) {
- DBG(23,
+ DBG(23,
"sane_init: Clever Precalibration will be forcibly disabled...\n");
inhibit_clever_precal = SANE_TRUE;
continue;
}
if (!(strncmp("norealcal", dev_name, 9))) {
- DBG(23,
+ DBG(23,
"sane_init: Real calibration will be forcibly disabled...\n");
inhibit_real_calib = SANE_TRUE;
continue;
@@ -3106,7 +3106,7 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize)
/* sane_get_devices */
/********************************************************************/
SANE_Status
-sane_get_devices(const SANE_Device ***device_list,
+sane_get_devices(const SANE_Device ***device_list,
SANE_Bool local_only)
{
Microtek_Device *dev;
@@ -3168,14 +3168,14 @@ sane_open(SANE_String_Const devicename,
/* initialize scanner dependent stuff */
DBG(23, "sane_open: initialize scanner dependent stuff...\n");
/* ZZZZZZZZZZZZZZ */
- scanner->unit_type =
+ scanner->unit_type =
(dev->info.unit_type & MI_UNIT_PIXELS) ? MS_UNIT_PIXELS : MS_UNIT_18INCH;
scanner->res_type =
(dev->info.res_step & MI_RESSTEP_1PER) ? MS_RES_1PER : MS_RES_5PER;
- scanner->midtone_support =
+ scanner->midtone_support =
(dev->info.enhance_cap & MI_ENH_CAP_MIDTONE) ? SANE_TRUE : SANE_FALSE;
- scanner->paper_length =
- (scanner->unit_type == MS_UNIT_PIXELS) ?
+ scanner->paper_length =
+ (scanner->unit_type == MS_UNIT_PIXELS) ?
dev->info.max_y :
(SANE_Int)((double)dev->info.max_y * 8.0 /
(double)dev->info.base_resolution);
@@ -3202,7 +3202,7 @@ sane_open(SANE_String_Const devicename,
scanner->do_clever_precal = SANE_TRUE;
} else {
DBG(23, "sane_open: All calibration routines disabled.\n");
- scanner->allow_calibrate = SANE_TRUE;
+ scanner->allow_calibrate = SANE_TRUE;
scanner->do_real_calib = SANE_FALSE;
scanner->do_clever_precal = SANE_FALSE;
}
@@ -3227,7 +3227,7 @@ sane_open(SANE_String_Const devicename,
scanner->gray_lut = calloc(scanner->gamma_entries,
sizeof(scanner->gray_lut[0]));
- scanner->red_lut = calloc(scanner->gamma_entries,
+ scanner->red_lut = calloc(scanner->gamma_entries,
sizeof(scanner->red_lut[0]));
scanner->green_lut = calloc(scanner->gamma_entries,
sizeof(scanner->green_lut[0]));
@@ -3246,7 +3246,7 @@ sane_open(SANE_String_Const devicename,
free(scanner->blue_lut);
}
for (j=0; j<scanner->gamma_entries; j += scanner->gamma_entry_size) {
- v = (SANE_Int)
+ v = (SANE_Int)
((double) j * (double) max_entry /
((double) scanner->gamma_entries - 1.0) + 0.5);
scanner->gray_lut[j] = v;
@@ -3278,7 +3278,7 @@ sane_open(SANE_String_Const devicename,
/* clear out that clever cache, so it doesn't match anything */
{
int j;
- for (j=0; j<10; j++)
+ for (j=0; j<10; j++)
scanner->mode_sense_cache[j] = 0;
scanner->precal_record = MS_PRECAL_NONE;
}
@@ -3347,7 +3347,7 @@ sane_get_option_descriptor (SANE_Handle handle,
/********************************************************************/
/* sane_control_option */
/********************************************************************/
-SANE_Status
+SANE_Status
sane_control_option (SANE_Handle handle,
SANE_Int option,
SANE_Action action,
@@ -3429,12 +3429,12 @@ sane_control_option (SANE_Handle handle,
return SANE_STATUS_INVAL;
}
break;
-
+
case SANE_ACTION_SET_VALUE: {
status = sanei_constrain_value(sod + option, value, info);
if (status != SANE_STATUS_GOOD)
return status;
-
+
switch (option) {
/* set word options... */
case OPT_TL_X:
@@ -3457,12 +3457,12 @@ sane_control_option (SANE_Handle handle,
case OPT_ANALOG_GAMMA_B:
val[option].w = *(SANE_Word *)value;
return SANE_STATUS_GOOD;
-
+
case OPT_HIGHLIGHT:
case OPT_SHADOW:
case OPT_MIDTONE:
val[option].w = *(SANE_Word *)value;
- /* we need to (silently) make sure shadow <= midtone <= highlight */
+ /* we need to (silently) make sure shadow <= midtone <= highlight */
if (scanner->midtone_support) {
if (val[OPT_SHADOW].w > val[OPT_MIDTONE].w) {
if (option == OPT_SHADOW)
@@ -3514,7 +3514,7 @@ sane_control_option (SANE_Handle handle,
val[option].w = *(SANE_Word *) value;
} else if (option == OPT_CUSTOM_GAMMA) {
if (val[option].s) {
- if (strcmp(value, val[option].s))
+ if (strcmp(value, val[option].s))
if (info) *info |= SANE_INFO_RELOAD_OPTIONS;
free(val[option].s);
}
@@ -3526,7 +3526,7 @@ sane_control_option (SANE_Handle handle,
sod[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
sod[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
sod[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
- }
+ }
if ( !(strcmp(val[OPT_CUSTOM_GAMMA].s, M_NONE)) ||
!(strcmp(val[OPT_CUSTOM_GAMMA].s, M_TABLE)) ) {
sod[OPT_ANALOG_GAMMA].cap |= SANE_CAP_INACTIVE;
@@ -3565,12 +3565,12 @@ sane_control_option (SANE_Handle handle,
else if (!(strcmp(val[OPT_MODE].s, M_COLOR)))
sod[OPT_GAMMA_BIND].cap &= ~SANE_CAP_INACTIVE;
return SANE_STATUS_GOOD;
-
- case OPT_MODE:
+
+ case OPT_MODE:
if (val[option].s) {
if (strcmp(val[option].s, value))
- if (info)
+ if (info)
*info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
free(val[option].s);
}
@@ -3586,7 +3586,7 @@ sane_control_option (SANE_Handle handle,
{
SANE_Bool Trueness = SANE_TRUE;
SANE_Status status;
- status = sane_control_option(handle,
+ status = sane_control_option(handle,
OPT_GAMMA_BIND,
SANE_ACTION_SET_VALUE,
&Trueness,
@@ -3619,7 +3619,7 @@ sane_control_option (SANE_Handle handle,
}
}
break;
-
+
case SANE_ACTION_SET_AUTO:
return SANE_STATUS_UNSUPPORTED; /* We are DUMB. */
}
@@ -3662,7 +3662,7 @@ sane_get_parameters (SANE_Handle handle,
s->threepasscolor = SANE_TRUE;
s->onepasscolor = SANE_FALSE;
s->color_seq = s->dev->info.color_sequence;
- }
+ }
} else { /* not color! */
DBG(23, "sane_get_parameters: non-color\n");
s->threepasscolor = SANE_FALSE;
@@ -3673,18 +3673,18 @@ sane_get_parameters (SANE_Handle handle,
s->transparency = !(strcmp(s->val[OPT_SOURCE].s, M_TRANS));
s->useADF = !(strcmp(s->val[OPT_SOURCE].s, M_AUTOFEED));
/* disallow exp. res. during preview scan XXXXXXXXXXX */
- /*s->expandedresolution =
+ /*s->expandedresolution =
(s->val[OPT_EXP_RES].w) && !(s->val[OPT_PREVIEW].w);*/
s->expandedresolution = (s->val[OPT_EXP_RES].w);
s->doexpansion = (s->expandedresolution && !(s->dev->info.does_expansion));
if (s->res_type == MS_RES_1PER) {
s->resolution = (SANE_Int)(SANE_UNFIX(s->val[OPT_RESOLUTION].w));
- s->resolution_code =
- 0xFF & ((s->resolution * 100) /
+ s->resolution_code =
+ 0xFF & ((s->resolution * 100) /
s->dev->info.base_resolution /
(s->expandedresolution ? 2 : 1));
- DBG(23, "sane_get_parameters: res_code = %d (%2x)\n",
+ DBG(23, "sane_get_parameters: res_code = %d (%2x)\n",
s->resolution_code, s->resolution_code);
} else {
DBG(23, "sane_get_parameters: 5 percent!!!\n");
@@ -3725,18 +3725,18 @@ sane_get_parameters (SANE_Handle handle,
s->pattern = ((i < s->dev->info.pattern_count) ? i : 0);
} else
s->pattern = 0;
-
+
{
/* need to 'round' things properly! XXXXXXXX */
SANE_Int widthpix;
double dots_per_mm = s->resolution / MM_PER_INCH;
- double units_per_mm =
- (s->unit_type == MS_UNIT_18INCH) ?
+ double units_per_mm =
+ (s->unit_type == MS_UNIT_18INCH) ?
(8.0 / MM_PER_INCH) : /* 1/8 inches */
(s->dev->info.base_resolution / MM_PER_INCH); /* pixels */
-
+
DBG(23, "sane_get_parameters: dots_per_mm: %f\n", dots_per_mm);
DBG(23, "sane_get_parameters: units_per_mm: %f\n", units_per_mm);
@@ -3755,22 +3755,22 @@ sane_get_parameters (SANE_Handle handle,
/* these are just an estimate... (but *should* be completely accurate)
* real values come from scanner after sane_start.
*/
- if (s->unit_type == MS_UNIT_18INCH) {
+ if (s->unit_type == MS_UNIT_18INCH) {
/* who *knows* what happens */
- widthpix =
+ widthpix =
(SANE_Int)((double)(s->x2 - s->x1 + 1) / 8.0 *
(double)s->resolution);
- s->params.lines =
+ s->params.lines =
(SANE_Int)((double)(s->y2 - s->y1 + 1) / 8.0 *
(double)s->resolution);
} else {
/* calculate pixels per scanline returned by scanner... */
/* scanner (E6 at least) always seems to return
an -even- number of -bytes- */
- if (s->resolution <= s->dev->info.base_resolution)
+ if (s->resolution <= s->dev->info.base_resolution)
widthpix =
(SANE_Int)((double)(s->x2 - s->x1 + 1) *
- (double)(s->resolution) /
+ (double)(s->resolution) /
(double)(s->dev->info.base_resolution));
else
widthpix = (s->x2 - s->x1 + 1);
@@ -3784,14 +3784,14 @@ sane_get_parameters (SANE_Handle handle,
}
DBG(23, "WIDTHPIX: before exp: %d\n", widthpix);
/* ok, now fix up expanded-mode conversions */
- if (s->resolution > s->dev->info.base_resolution)
+ if (s->resolution > s->dev->info.base_resolution)
widthpix = (SANE_Int) ((double)widthpix *
(double)s->resolution /
(double)s->dev->info.base_resolution);
s->params.pixels_per_line = widthpix;
- s->params.lines =
+ s->params.lines =
(SANE_Int)((double)(s->y2 - s->y1 + 1) *
- (double)(s->resolution) /
+ (double)(s->resolution) /
(double)(s->dev->info.base_resolution));
}
}
@@ -3822,13 +3822,13 @@ sane_get_parameters (SANE_Handle handle,
} else { /* a three-pass color scan */
s->params.depth = s->bits_per_color;
/* this will be correctly set in sane_start */
- s->params.format = SANE_FRAME_RED;
+ s->params.format = SANE_FRAME_RED;
s->params.bytes_per_line = s->params.pixels_per_line;
}
break;
}
- DBG(23, "sane_get_parameters: lines: %d ppl: %d bpl: %d\n",
+ DBG(23, "sane_get_parameters: lines: %d ppl: %d bpl: %d\n",
s->params.lines, s->params.pixels_per_line, s->params.bytes_per_line);
/* also fixed in sane_start for multi-pass scans */
@@ -3852,7 +3852,7 @@ sane_start_guts (SANE_Handle handle)
Microtek_Scanner *s = handle;
SANE_Status status;
SANE_Int busy, linewidth;
-
+
DBG(10, "sane_start...\n");
if (s->sfd != -1) {
@@ -3863,10 +3863,10 @@ sane_start_guts (SANE_Handle handle)
if ((status = sane_get_parameters(s, 0)) != SANE_STATUS_GOOD)
return end_scan(s, status);
set_pass_parameters(s);
-
+
s->scanning = SANE_TRUE;
s->cancel = SANE_FALSE;
-
+
status = sanei_scsi_open(s->dev->sane.name,
&(s->sfd),
sense_handler,
@@ -3877,50 +3877,50 @@ sane_start_guts (SANE_Handle handle)
s->sfd = -1;
return end_scan(s, status);
}
-
+
if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return end_scan(s, status);
- if ((status = finagle_precal(s)) != SANE_STATUS_GOOD)
+ if ((status = finagle_precal(s)) != SANE_STATUS_GOOD)
return end_scan(s, status);
if ((status = scanning_frame(s)) != SANE_STATUS_GOOD) return end_scan(s, status);
- if (s->dev->info.source_options &
+ if (s->dev->info.source_options &
(MI_SRC_FEED_BT | MI_SRC_HAS_TRANS |
MI_SRC_FEED_SUPP | MI_SRC_HAS_FEED)) { /* ZZZZZZZZZZZ */
if ((status = accessory(s)) != SANE_STATUS_GOOD) return end_scan(s, status);
/* if SWslct ???? XXXXXXXXXXXXXXX */
}
- if ((status = download_gamma(s)) != SANE_STATUS_GOOD)
+ if ((status = download_gamma(s)) != SANE_STATUS_GOOD)
return end_scan(s, status);
- if ((status = mode_select(s)) != SANE_STATUS_GOOD)
+ if ((status = mode_select(s)) != SANE_STATUS_GOOD)
return end_scan(s, status);
if (s->dev->info.does_mode1) {
- if ((status = mode_select_1(s)) != SANE_STATUS_GOOD)
+ if ((status = mode_select_1(s)) != SANE_STATUS_GOOD)
return end_scan(s, status);
}
if ((s->do_clever_precal) || (s->do_real_calib)) {
- if ((status = save_mode_sense(s)) != SANE_STATUS_GOOD)
+ if ((status = save_mode_sense(s)) != SANE_STATUS_GOOD)
return end_scan(s, status);
- }
+ }
if ((status = wait_ready(s)) != SANE_STATUS_GOOD) return end_scan(s, status);
s->scan_started = SANE_TRUE;
if ((status = start_scan(s)) != SANE_STATUS_GOOD) return end_scan(s, status);
- if ((status = get_scan_status(s, &busy,
+ if ((status = get_scan_status(s, &busy,
&linewidth, &(s->unscanned_lines))) !=
SANE_STATUS_GOOD) {
DBG(10, "sane_start: get_scan_status fails\n");
return end_scan(s, status);
}
/* check for a bizarre linecount */
- if ((s->unscanned_lines < 0) ||
- (s->unscanned_lines >
+ if ((s->unscanned_lines < 0) ||
+ (s->unscanned_lines >
(s->params.lines * 2 * (s->expandedresolution ? 2 : 1)))) {
DBG(10, "sane_start: get_scan_status returns weird line count %d\n",
s->unscanned_lines);
return end_scan(s, SANE_STATUS_DEVICE_BUSY);
}
-
-
+
+
/* figure out image format parameters */
switch (s->mode) {
case MS_MODE_LINEART:
@@ -3990,16 +3990,16 @@ sane_start_guts (SANE_Handle handle)
DBG(10, "sane_start: Unknown scan mode: %d\n", s->mode);
return end_scan(s, SANE_STATUS_INVAL);
}
-
+
if ((s->doexpansion) &&
(s->resolution > s->dev->info.base_resolution)) {
s->dest_ppl = (int) ((double)s->ppl *
(double)s->resolution /
(double)s->dev->info.base_resolution);
- /*+ 0.5 XXXXXX */
+ /*+ 0.5 XXXXXX */
s->exp_aspect = (double)s->ppl / (double)s->dest_ppl;
s->dest_pixel_bpl = (int) ceil((double)s->pixel_bpl / s->exp_aspect);
- /*s->exp_aspect =
+ /*s->exp_aspect =
(double) s->dev->info.base_resolution / (double) s->resolution;*/
/* s->dest_pixel_bpl = s->pixel_bpl / s->exp_aspect;
s->dest_ppl = s->ppl / s->exp_aspect;*/
@@ -4012,27 +4012,27 @@ sane_start_guts (SANE_Handle handle)
s->dest_pixel_bpl = s->pixel_bpl;
s->dest_ppl = s->ppl;
}
-
+
s->params.lines = s->unscanned_lines;
- s->params.pixels_per_line = s->dest_ppl;
- s->params.bytes_per_line = s->dest_pixel_bpl;
-
+ s->params.pixels_per_line = s->dest_ppl;
+ s->params.bytes_per_line = s->dest_pixel_bpl;
+
/* calculate maximum line capacity of SCSI buffer */
s->max_scsi_lines = SCSI_BUFF_SIZE / (s->pixel_bpl + s->header_bpl);
if (s->max_scsi_lines < 1) {
DBG(10, "sane_start: SCSI buffer smaller that one scan line!\n");
return end_scan(s, SANE_STATUS_NO_MEM);
}
-
+
s->scsi_buffer = (uint8_t *) malloc(SCSI_BUFF_SIZE * sizeof(uint8_t));
if (s->scsi_buffer == NULL) return SANE_STATUS_NO_MEM;
-
+
/* what's a good initial size for this? */
s->rb = ring_alloc(s->max_scsi_lines * s->dest_pixel_bpl,
s->dest_pixel_bpl, s->dest_ppl);
-
+
s->undelivered_bytes = s->unscanned_lines * s->dest_pixel_bpl;
-
+
DBG(23, "Scan Param:\n");
DBG(23, "pix bpl: %d hdr bpl: %d ppl: %d\n",
s->pixel_bpl, s->header_bpl, s->ppl);
@@ -4040,7 +4040,7 @@ sane_start_guts (SANE_Handle handle)
s->undelivered_bytes, s->unscanned_lines, s->planes);
DBG(23, "dest bpl: %d dest ppl: %d aspect: %f\n",
s->dest_pixel_bpl, s->dest_ppl, s->exp_aspect);
-
+
return SANE_STATUS_GOOD;
}
@@ -4062,7 +4062,7 @@ sane_start (SANE_Handle handle)
/********************************************************************/
/* sane_read */
/********************************************************************/
-static SANE_Status
+static SANE_Status
sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer,
SANE_Int dest_length, SANE_Int *ret_length)
{
@@ -4072,7 +4072,7 @@ sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer,
ring_buffer *rb = s->rb;
DBG(10, "sane_read...\n");
-
+
*ret_length = 0; /* default: no data */
/* we have been cancelled... */
if (s->cancel) return end_scan(s, SANE_STATUS_CANCELLED);
@@ -4102,7 +4102,7 @@ sane_read_guts (SANE_Handle handle, SANE_Byte *dest_buffer,
}
-SANE_Status
+SANE_Status
sane_read (SANE_Handle handle, SANE_Byte *dest_buffer,
SANE_Int dest_length, SANE_Int *ret_length)
{
diff --git a/backend/microtek.h b/backend/microtek.h
index d4c7abf..880dc3c 100644
--- a/backend/microtek.h
+++ b/backend/microtek.h
@@ -1,7 +1,7 @@
/***************************************************************************
* SANE - Scanner Access Now Easy.
- microtek.h
+ microtek.h
This file Copyright 2002 Matthew Marjanovic
@@ -60,13 +60,13 @@
/*******************************************************************/
-/***** enumeration of Option Descriptors *****/
+/***** enumeration of Option Descriptors *****/
/*******************************************************************/
enum Mtek_Option
{
OPT_NUM_OPTS = 0,
-
+
OPT_MODE_GROUP,
OPT_MODE, /* -a,b,c,g */
OPT_HALFTONE_PATTERN, /* -H */
@@ -77,13 +77,13 @@ enum Mtek_Option
OPT_SOURCE, /* -t */
OPT_PREVIEW,
OPT_CALIB_ONCE,
-
+
OPT_GEOMETRY_GROUP, /* -f .... */
OPT_TL_X, /* top-left x */
OPT_TL_Y, /* top-left y */
OPT_BR_X, /* bottom-right x */
- OPT_BR_Y, /* bottom-right y */
-
+ OPT_BR_Y, /* bottom-right y */
+
OPT_ENHANCEMENT_GROUP,
OPT_EXPOSURE,
OPT_BRIGHTNESS, /* -d */
@@ -91,7 +91,7 @@ enum Mtek_Option
OPT_HIGHLIGHT, /* -l */
OPT_SHADOW, /* -s */
OPT_MIDTONE, /* -m */
-
+
OPT_GAMMA_GROUP,
OPT_CUSTOM_GAMMA,
OPT_ANALOG_GAMMA,
@@ -106,16 +106,16 @@ enum Mtek_Option
OPT_GAMMA_BIND,
NUM_OPTIONS,
-
+
OPT_BACKTRACK, /* -B */
-
+
/* must come last: */
RNUM_OPTIONS
};
/*******************************************************************/
-/***** scanner hardware information (as discovered by INQUIRY) *****/
+/***** scanner hardware information (as discovered by INQUIRY) *****/
/*******************************************************************/
typedef struct Microtek_Info {
@@ -131,7 +131,7 @@ typedef struct Microtek_Info {
SANE_Byte response_data_format;
#define MI_RESSTEP_1PER 0x01
#define MI_RESSTEP_5PER 0x02
- SANE_Byte res_step;
+ SANE_Byte res_step;
#define MI_MODES_LINEART 0x01
#define MI_MODES_HALFTONE 0x02
#define MI_MODES_GRAY 0x04 /* ??????? or "MultiBit"??? XXXXX*/
@@ -139,9 +139,9 @@ typedef struct Microtek_Info {
#define MI_MODES_TRANSMSV 0x20
#define MI_MODES_ONEPASS 0x40
#define MI_MODES_NEGATIVE 0x80
- SANE_Byte modes;
- SANE_Int pattern_count;
- SANE_Byte pattern_dwnld;
+ SANE_Byte modes;
+ SANE_Int pattern_count;
+ SANE_Byte pattern_dwnld;
#define MI_FEED_FLATBED 0x01
#define MI_FEED_EDGEFEED 0x02
#define MI_FEED_AUTOSUPP 0x04
@@ -191,7 +191,7 @@ typedef struct Microtek_Info {
#define MI_FMT_CAP_12BPP 0x04
#define MI_FMT_CAP_16BPP 0x08
SANE_Byte bit_formats; /* output bit formats capabilities */
-#define MI_EXCAP_OFF_CTL 0x01
+#define MI_EXCAP_OFF_CTL 0x01
#define MI_EXCAP_DIS_LNTBL 0x02
#define MI_EXCAP_DIS_RECAL 0x04
SANE_Byte extra_cap;
@@ -240,7 +240,7 @@ typedef struct ring_buffer {
size_t green_extra; /* unmatched green bytes */
size_t red_extra; /* unmatched red bytes */
- size_t complete_count;
+ size_t complete_count;
size_t head_complete;
} ring_buffer;
@@ -256,7 +256,7 @@ typedef struct ring_buffer {
typedef struct Microtek_Scanner {
struct Microtek_Scanner *next; /* for linked list */
Microtek_Device *dev; /* raw device info */
-
+
SANE_Option_Descriptor sod[RNUM_OPTIONS]; /* option list for session */
Option_Value val[RNUM_OPTIONS]; /* option values for session */
@@ -295,7 +295,7 @@ typedef struct Microtek_Scanner {
SANE_Int gamma_entry_size;
SANE_Int gamma_bit_depth;
/* SANE_Int gamma_max_entry;*/
-
+
SANE_Range gamma_entry_range;
SANE_Range contrast_range;
SANE_Range exposure_range;
@@ -366,7 +366,7 @@ typedef struct Microtek_Scanner {
#define MS_PRECAL_EXP_COLOR 3
SANE_Byte precal_record; /* record what precalibrations have been done */
-#define MS_SENSE_IGNORE 1
+#define MS_SENSE_IGNORE 1
int sense_flags; /* flags passed to the sense handler */
uint8_t *scsi_buffer;
@@ -376,4 +376,3 @@ typedef struct Microtek_Scanner {
#endif /* microtek_h */
-
diff --git a/backend/microtek2.c b/backend/microtek2.c
index dccd707..f7c63d6 100644
--- a/backend/microtek2.c
+++ b/backend/microtek2.c
@@ -554,7 +554,7 @@ sane_open(SANE_String_Const name, SANE_Handle *handle)
ms->cancelled = SANE_FALSE;
ms->current_pass = 0;
ms->sfd = -1;
- ms->pid = -1;
+ sanei_thread_initialize(ms->pid);
ms->fp = NULL;
ms->gamma_table = NULL;
ms->buf.src_buf = ms->buf.src_buffer[0] = ms->buf.src_buffer[1] = NULL;
@@ -692,7 +692,7 @@ add_device_list(SANE_String_Const dev_name, Microtek2_Device **mdev)
if ( (hdev = strdup(dev_name)) == NULL)
- {
+ {
DBG(5, "add_device_list: malloc() for hdev failed\n");
return SANE_STATUS_NO_MEM;
}
@@ -760,7 +760,7 @@ attach(Microtek2_Device *md)
/* device is passed in sane_open() this function may also be called */
/* from sane_open() or sane_get_devices(). */
- SANE_String model_string;
+ SANE_String model_string;
SANE_Status status;
SANE_Byte source_info;
@@ -1172,7 +1172,7 @@ check_inquiry(Microtek2_Device *md, SANE_String *model_string)
md->shading_depth = 12;
else if ( mi->depth & MI_HASDEPTH_10 )
md->shading_depth = 10;
- else
+ else
md->shading_depth = 8;
switch (mi->model_code)
@@ -1353,7 +1353,7 @@ cleanup_scanner(Microtek2_Scanner *ms)
if ( ms->sfd != -1 )
sanei_scsi_close(ms->sfd);
ms->sfd = -1;
- ms->pid = -1;
+ sanei_thread_invalidate(ms->pid);
ms->fp = NULL;
ms->current_pass = 0;
ms->scanning = SANE_FALSE;
@@ -1465,7 +1465,7 @@ do_authorization(char *ressource)
return SANE_STATUS_ACCESS_DENIED;
}
}
-
+
linep = &line[0];
device_found = 0;
while ( fgets(line, MAX_LINE_LEN, fp) )
@@ -1479,7 +1479,7 @@ do_authorization(char *ressource)
{
DBG(2, "equal\n");
device_found = 1;
- break;
+ break;
}
}
}
@@ -1491,9 +1491,9 @@ do_authorization(char *ressource)
}
fseek(fp, 0L, SEEK_SET);
-
+
(*auth_callback) (ressource, username, password);
-
+
status = SANE_STATUS_ACCESS_DENIED;
do
{
@@ -1509,7 +1509,7 @@ do_authorization(char *ressource)
if ( strcmp( device, ressource) != 0 ) /* not a matching entry */
continue;
- linep = ++p;
+ linep = ++p;
p = index(linep, SEPARATOR);
if ( p == NULL )
continue;
@@ -1616,7 +1616,7 @@ dump_area2(uint8_t *area, int len, char *info)
char *outbuf;
if ( ! info[0] )
- info = "No additional info available";
+ info = "No additional info available";
DBG(1, "[%s]\n", info);
@@ -3241,7 +3241,7 @@ sane_control_option(SANE_Handle handle, SANE_Int option,
case OPT_BR_Y:
if ( info )
*info |= SANE_INFO_RELOAD_PARAMS;
- return SANE_STATUS_GOOD;
+ return SANE_STATUS_GOOD;
case OPT_DISABLE_BACKTRACK:
case OPT_CALIB_BACKEND:
case OPT_LIGHTLID35:
@@ -3300,7 +3300,7 @@ sane_control_option(SANE_Handle handle, SANE_Int option,
if ( info )
*info |= SANE_INFO_RELOAD_PARAMS;
- return SANE_STATUS_GOOD;
+ return SANE_STATUS_GOOD;
case OPT_SOURCE:
if ( info )
@@ -3751,12 +3751,12 @@ get_calib_params(Microtek2_Scanner *ms)
Microtek2_Device *md;
Microtek2_Info *mi;
-
+
DBG(30, "get_calib_params: handle=%p\n", (void *) ms);
md = ms->dev;
mi = &md->info[md->scan_source];
-
+
if ( md->model_flags & MD_CALIB_DIVISOR_600 )
{
if ( ms->x_resolution_dpi <= 600 )
@@ -3787,7 +3787,7 @@ get_calib_params(Microtek2_Scanner *ms)
ms->depth = 12;
else if ( mi->depth & MI_HASDEPTH_10 )
ms->depth = 10;
- else
+ else
ms->depth = 8;
ms->stay = 0;
@@ -3830,7 +3830,7 @@ get_scan_parameters(Microtek2_Scanner *ms)
get_scan_mode_and_depth(ms, &ms->mode, &ms->depth,
&ms->bits_per_pixel_in, &ms->bits_per_pixel_out);
-
+
/* get the scan_source */
if ( strcmp(ms->val[OPT_SOURCE].s, MD_SOURCESTRING_FLATBED) == 0 )
ms->scan_source = MS_SOURCE_FLATBED;
@@ -3871,19 +3871,19 @@ get_scan_parameters(Microtek2_Scanner *ms)
if ( ms->mode == MS_MODE_HALFTONE )
{
i = 0;
- while ( strcmp(md->halftone_mode_list[i], ms->val[OPT_HALFTONE].s) )
+ while ( strcmp(md->halftone_mode_list[i], ms->val[OPT_HALFTONE].s) )
++i;
ms->internal_ht_index = i;
}
- /* if lineart get the value for threshold */
- if ( ms->mode == MS_MODE_LINEART || ms->mode == MS_MODE_LINEARTFAKE)
+ /* if lineart get the value for threshold */
+ if ( ms->mode == MS_MODE_LINEART || ms->mode == MS_MODE_LINEARTFAKE)
ms->threshold = (uint8_t) ms->val[OPT_THRESHOLD].w;
else
ms->threshold = (uint8_t) M_THRESHOLD_DEFAULT;
DBG(30, "get_scan_parameters: mode=%d, depth=%d, bpp_in=%d, bpp_out=%d\n",
- ms->mode, ms->depth, ms->bits_per_pixel_in,
+ ms->mode, ms->depth, ms->bits_per_pixel_in,
ms->bits_per_pixel_out);
/* calculate positions, width and height in dots */
@@ -4115,7 +4115,7 @@ get_scan_mode_and_depth(Microtek2_Scanner *ms,
" bits_pp_in=%d, bits_pp_out=%d, preview=%d\n",
*mode, *depth, *bits_per_pixel_in, *bits_per_pixel_out,
ms->val[OPT_PREVIEW].w);
-
+
return SANE_STATUS_GOOD;
}
@@ -5237,8 +5237,8 @@ scsi_test_unit_ready(Microtek2_Device *md)
status = sanei_scsi_cmd(sfd, tur, sizeof(tur), NULL, 0);
if ( status != SANE_STATUS_GOOD )
DBG(1, "scsi_test_unit_ready: cmd '%s'\n", sane_strstatus(status));
-
- sanei_scsi_close(sfd);
+
+ sanei_scsi_close(sfd);
return status;
}
@@ -5319,7 +5319,7 @@ sane_start(SANE_Handle handle)
goto cleanup;
}
}
-
+
status = get_scan_parameters(ms);
if ( status != SANE_STATUS_GOOD )
goto cleanup;
@@ -5349,7 +5349,7 @@ sane_start(SANE_Handle handle)
/* md->status.tlamp |= MD_TLAMP_ON;*/
/* with this line on some scanners (X6, 0x91) the Flamp goes on */
}
-
+
if ( ms->no_backtracking )
md->status.ntrack |= MD_NTRACK_ON;
else
@@ -5447,8 +5447,8 @@ sane_start(SANE_Handle handle)
if ( status != SANE_STATUS_GOOD )
goto cleanup;
}
-
- if ( ms->lightlid35 )
+
+ if ( ms->lightlid35 )
/* hopefully this leads to a switched off flatbed lamp with lightlid */
{
status = scsi_read_system_status(md, ms->sfd);
@@ -5457,7 +5457,7 @@ sane_start(SANE_Handle handle)
md->status.flamp &= ~MD_FLAMP_ON;
md->status.tlamp &= ~MD_TLAMP_ON;
-
+
status = scsi_send_system_status(md, ms->sfd);
if ( status != SANE_STATUS_GOOD )
goto cleanup;
@@ -5518,7 +5518,7 @@ prepare_buffers(Microtek2_Scanner *ms)
status = SANE_STATUS_GOOD;
DBG(30, "prepare_buffers: ms=0x%p\n", (void *) ms);
-
+
md = ms->dev;
mi = &md->info[md->scan_source];
@@ -5541,19 +5541,19 @@ prepare_buffers(Microtek2_Scanner *ms)
}
/* allocate buffers */
- ms->src_buffer_size = ms->src_max_lines * ms->bpl;
+ ms->src_buffer_size = ms->src_max_lines * ms->bpl;
- if ( ms->mode == MS_MODE_COLOR && mi->data_format == MI_DATAFMT_LPLSEGREG )
- {
+ if ( ms->mode == MS_MODE_COLOR && mi->data_format == MI_DATAFMT_LPLSEGREG )
+ {
/* In this case the data is not neccessarily in the order RGB */
/* and there may be different numbers of read red, green and blue */
/* segments. We allocate a second buffer to read new lines in */
/* and hold undelivered pixels in the other buffer */
int extra_buf_size;
- extra_buf_size = 2 * ms->bpl * mi->ccd_gap
+ extra_buf_size = 2 * ms->bpl * mi->ccd_gap
* (int) ceil( (double) mi->max_yresolution
- / (double) mi->opt_resolution);
+ / (double) mi->opt_resolution);
for ( i = 0; i < 2; i++ )
{
if ( ms->buf.src_buffer[i] )
@@ -5610,15 +5610,15 @@ prepare_buffers(Microtek2_Scanner *ms)
DBG(1, "sane_start: malloc() for temporary buffer failed\n");
status = SANE_STATUS_NO_MEM;
goto cleanup;
- }
+ }
}
- else
+ else
ms->temporary_buffer = NULL;
/* some data formats have additional information in a scan line, which */
/* is not transferred to the frontend; real_bpl is the number of bytes */
/* per line, that is copied into the frontend's buffer */
- ms->real_bpl = (uint32_t) ceil( ((double) ms->ppl *
+ ms->real_bpl = (uint32_t) ceil( ((double) ms->ppl *
(double) ms->bits_per_pixel_out) / 8.0 );
if ( mi->onepass && ms->mode == MS_MODE_COLOR )
ms->real_bpl *= 3;
@@ -5629,7 +5629,7 @@ prepare_buffers(Microtek2_Scanner *ms)
cleanup:
cleanup_scanner(ms);
- return status;
+ return status;
}
static void
@@ -5691,7 +5691,7 @@ write_shading_buf_pnm(Microtek2_Scanner *ms, uint32_t lines)
+ mi->color_sequence[color]
* ( ms->bpl / ms->lut_entry_size / 3 )
+ pixel);
-
+
break;
case MI_DATAFMT_CHUNKY:
case MI_DATAFMT_9800:
@@ -7067,7 +7067,7 @@ set_exposure(Microtek2_Scanner *ms)
uint8_t exposure;
uint8_t exposure_rgb[3];
-
+
DBG(30, "set_exposure: ms=%p\n", (void *) ms);
md = ms->dev;
@@ -7118,7 +7118,7 @@ set_exposure(Microtek2_Scanner *ms)
for ( byte = 0; byte < size; byte++ )
{
val32 = (uint32_t) *((uint16_t *) from + color * size + byte);
- val32 = MIN(val32 + val32
+ val32 = MIN(val32 + val32
* (2 * (uint32_t) exposure_rgb[color] / 100),
(uint32_t) maxval);
*((uint16_t *) from + color * size + byte) = (uint16_t) val32;
@@ -7162,7 +7162,7 @@ reader_process(void *data)
DBG(1, "reader_process: fdopen() failed, errno=%d\n", errno);
return SANE_STATUS_IO_ERROR;
}
-
+
if ( ms->auto_adjust == 1 )
{
if ( temp_current == NULL )
@@ -7171,7 +7171,7 @@ reader_process(void *data)
while ( ms->src_remaining_lines > 0 )
{
-
+
ms->src_lines_to_read = MIN(ms->src_remaining_lines, ms->src_max_lines);
ms->transfer_length = ms->src_lines_to_read * ms->bpl;
@@ -7182,13 +7182,13 @@ reader_process(void *data)
sigprocmask (SIG_BLOCK, &sigterm_set, 0);
status = scsi_read_image(ms, ms->buf.src_buf, (ms->depth > 8) ? 2 : 1);
sigprocmask (SIG_UNBLOCK, &sigterm_set, 0);
- if ( status != SANE_STATUS_GOOD )
+ if ( status != SANE_STATUS_GOOD )
return SANE_STATUS_IO_ERROR;
ms->src_remaining_lines -= ms->src_lines_to_read;
/* prepare data for frontend */
- switch (ms->mode)
+ switch (ms->mode)
{
case MS_MODE_COLOR:
if ( ! mi->onepass )
@@ -7197,9 +7197,9 @@ reader_process(void *data)
DBG(1, "reader_process: 3 pass not yet supported\n");
return SANE_STATUS_IO_ERROR;
}
- else
+ else
{
- switch ( mi->data_format )
+ switch ( mi->data_format )
{
case MI_DATAFMT_CHUNKY:
case MI_DATAFMT_9800:
@@ -7225,9 +7225,9 @@ reader_process(void *data)
default:
DBG(1, "reader_process: format %d\n", mi->data_format);
return SANE_STATUS_IO_ERROR;
- }
+ }
}
- break;
+ break;
case MS_MODE_GRAY:
status = gray_proc_data(ms);
if ( status != SANE_STATUS_GOOD )
@@ -7260,7 +7260,7 @@ reader_process(void *data)
/*---------- chunky_proc_data() ----------------------------------------------*/
-static SANE_Status
+static SANE_Status
chunky_proc_data(Microtek2_Scanner *ms)
{
SANE_Status status;
@@ -7275,7 +7275,7 @@ chunky_proc_data(Microtek2_Scanner *ms)
DBG(30, "chunky_proc_data: ms=%p\n", (void *) ms);
-
+
md = ms->dev;
bits_pp_in = ms->bits_per_pixel_in;
bits_pp_out = ms->bits_per_pixel_out;
@@ -7621,7 +7621,7 @@ segreg_copy_pixels(Microtek2_Scanner *ms)
val = MAX( 0.0, val);
val = MIN( maxval, val );
}
-
+
val16 = (uint16_t) val;
val8 = (uint8_t) val;
@@ -7789,7 +7789,7 @@ lplconcat_copy_pixels(Microtek2_Scanner *ms,
DBG(1, "lplconcat_copy_pixels: Unknown depth %d\n", ms->depth);
return SANE_STATUS_IO_ERROR;
}
-
+
if ((md->model_flags & MD_READ_CONTROL_BIT) && ms->calib_backend
&& ( ms->condensed_shading_w != NULL ))
/* apply shading by backend */
diff --git a/backend/microtek2.h b/backend/microtek2.h
index 2a1f697..326eac8 100644
--- a/backend/microtek2.h
+++ b/backend/microtek2.h
@@ -1,7 +1,7 @@
/*******************************************************************************
* SANE - Scanner Access Now Easy.
- microtek2.h
+ microtek2.h
This file (C) 1998, 1999 Bernd Schroeder
2000, 2001 Karsten Festag
@@ -160,7 +160,7 @@
#define RG_COLOR(d,p) (d)[5] |= (((p) << 5) & 0x60)
#define RG_WORD(d,p) (d)[5] |= ((p) & 0x01)
#define RG_TRANSFERLENGTH(d,p) (d)[7] = (((p) >> 8) & 0xff); \
- (d)[8] = ((p) & 0xff)
+ (d)[8] = ((p) & 0xff)
/* SEND GAMMA TABLE */
#define SG_SET_CMD(d) (d)[0] = 0x2a; (d)[1] = 0x00; (d)[2] = 0x03; \
@@ -172,7 +172,7 @@
#define SG_SET_COLOR(d,p) (d)[5] |= (((p) << 5) & 0x60)
#define SG_SET_WORD(d,p) (d)[5] |= ((p) & 0x01)
#define SG_SET_TRANSFERLENGTH(d,p) (d)[7] = (((p) >> 8) & 0xff); \
- (d)[8] = ((p) & 0xff)
+ (d)[8] = ((p) & 0xff)
#define SG_DATA_P SG_CMD_L
@@ -394,7 +394,7 @@
#define SW_BODY_L 61
#define SW_CMD_P 0 /* command at postion 0 */
#define SW_HEADER_P SW_CMD_L
-#define SW_BODY_P(n) SW_CMD_L + SW_HEADER_L + (n) * SW_BODY_L
+#define SW_BODY_P(n) SW_CMD_L + SW_HEADER_L + (n) * SW_BODY_L
/* d: SW_CMD_P, SW_HEADER_P, SW_BODY_P(n) */
#define SW_PARAM_LENGTH(d,p) (d)[6] = ((p) >> 16) & 0xff; \
@@ -402,7 +402,7 @@
(d)[8] = (p) & 0xff
#define SW_WNDDESCVAL SW_BODY_L
#define SW_WNDDESCLEN(d,p) (d)[6] = ((p) >> 8) & 0xff; \
- (d)[7] = (p) & 0xff
+ (d)[7] = (p) & 0xff
#define SW_WNDID(d,p) (d)[0] = (p)
#define SW_XRESDPI(d,p) (d)[2] = ((p) >> 8) & 0xff; \
(d)[3] = (p) & 0xff
@@ -415,15 +415,15 @@
#define SW_YPOSTL(d,p) (d)[10] = ((p) >> 24) & 0xff; \
(d)[11] = ((p) >> 16) & 0xff; \
(d)[12] = ((p) >> 8) & 0xff; \
- (d)[13] = (p) & 0xff
+ (d)[13] = (p) & 0xff
#define SW_WNDWIDTH(d,p) (d)[14] = ((p) >> 24) & 0xff; \
(d)[15] = ((p) >> 16) & 0xff; \
(d)[16] = ((p) >> 8) & 0xff; \
- (d)[17] = (p) & 0xff
+ (d)[17] = (p) & 0xff
#define SW_WNDHEIGHT(d,p) (d)[18] = ((p) >> 24) & 0xff; \
(d)[19] = ((p) >> 16) & 0xff; \
(d)[20] = ((p) >> 8) & 0xff; \
- (d)[21] = (p) & 0xff
+ (d)[21] = (p) & 0xff
#define SW_BRIGHTNESS_M(d,p) (d)[22] = (p)
#define SW_THRESHOLD(d,p) (d)[23] = (p)
#define SW_CONTRAST_M(d,p) (d)[24] = (p)
@@ -1219,7 +1219,7 @@ static SANE_Status
dump_to_file(uint8_t *, int, char *, char *);
#endif
-static SANE_Status
+static SANE_Status
dump_attributes(Microtek2_Info *);
static void
@@ -1251,7 +1251,7 @@ gray_set_exposure(uint8_t *, uint32_t, uint8_t, uint8_t);
static SANE_Status
init_options(Microtek2_Scanner *, uint8_t);
-static SANE_Status
+static SANE_Status
lineartfake_copy_pixels(Microtek2_Scanner *, uint8_t *, uint32_t, uint8_t,
int, FILE *);
diff --git a/backend/mustek.c b/backend/mustek.c
index 8426dfe..eafdb99 100644
--- a/backend/mustek.c
+++ b/backend/mustek.c
@@ -3,7 +3,7 @@
1998 Andreas Bolsch for extension to ScanExpress models version 0.6,
2000-2005 Henning Meier-Geinitz,
2003 James Perry (600 EP).
-
+
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -188,9 +188,9 @@ static SANE_String_Const halftone_list[] = {
/* Range used for brightness and contrast */
static const SANE_Range percentage_range = {
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX(1) /* quantization */
};
/* SCSI command buffers used by the backend */
@@ -200,9 +200,15 @@ 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
};
@@ -227,10 +233,16 @@ static const SANE_Byte scsi_read_data[] = {
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
/* prototypes */
static SANE_Status area_and_windows (Mustek_Scanner * s);
@@ -1214,7 +1226,7 @@ attach (SANE_String_Const devname, Mustek_Device ** devp, SANE_Bool may_wait)
/* Paragon 1-pass 14" series I */
/* I haven't seen a single report for this, but it is mentioned in
- the old man page. All reported Paragon 1200SP had a model name
+ the old man page. All reported Paragon 1200SP had a model name
"MFS-12000SP" */
else if (strncmp ((SANE_String) model_name, "MSF-12000SP", 11) == 0)
{
@@ -1269,7 +1281,7 @@ attach (SANE_String_Const devname, Mustek_Device ** devp, SANE_Bool may_wait)
dev->y_trans_range.max = SANE_FIX (255.0);
dev->dpi_range.max = SANE_FIX (600);
/* Looks like at least some versions of this scanner produce black images
- in gray and color mode if MUSTEK_FORCE_GAMMA is not set. At least
+ in gray and color mode if MUSTEK_FORCE_GAMMA is not set. At least
versions 2.01, 2.02 and 2.10 are reported as having this bug. 3.12
doesn't need this workaround but it doesn't harm either. */
dev->flags |= MUSTEK_FLAG_FORCE_GAMMA;
@@ -1451,12 +1463,12 @@ attach (SANE_String_Const devname, Mustek_Device ** devp, SANE_Bool may_wait)
dev->y_range.min = SANE_FIX (0);
dev->x_range.max = SANE_FIX (215.9);
dev->y_range.max = SANE_FIX (291.2);
-
+
dev->x_trans_range.min = SANE_FIX (0);
dev->y_trans_range.min = SANE_FIX (0);
dev->x_trans_range.max = SANE_FIX (150.0);
dev->y_trans_range.max = SANE_FIX (175.0);
-
+
dev->dpi_range.max = SANE_FIX (1200);
dev->dpi_range.min = SANE_FIX (60);
dev->flags |= MUSTEK_FLAG_SE;
@@ -1476,12 +1488,12 @@ attach (SANE_String_Const devname, Mustek_Device ** devp, SANE_Bool may_wait)
dev->y_range.min = SANE_FIX (0);
dev->x_range.max = SANE_FIX (215.9);
dev->y_range.max = SANE_FIX (291.2);
-
+
dev->x_trans_range.min = SANE_FIX (0);
dev->y_trans_range.min = SANE_FIX (0);
dev->x_trans_range.max = SANE_FIX (150.0);
dev->y_trans_range.max = SANE_FIX (175.0);
-
+
dev->dpi_range.max = SANE_FIX (1200);
dev->dpi_range.min = SANE_FIX (60);
dev->flags |= MUSTEK_FLAG_SE;
@@ -1672,7 +1684,7 @@ attach (SANE_String_Const devname, Mustek_Device ** devp, SANE_Bool may_wait)
"careful and read\n the PROBLEMS file in the sane directory. "
"Please set the debug level of this\n backend to maximum "
"(export SANE_DEBUG_MUSTEK=255) and send the output of\n "
- "scanimage -L to the SANE mailing list sane-devel@lists.alioth.debian.org. "
+ "scanimage -L to the SANE mailing list sane-devel@alioth-lists.debian.net. "
"Please include\n the exact model name of your scanner and to "
"which extend it works.\n");
}
@@ -2996,7 +3008,7 @@ do_stop (Mustek_Scanner * s)
status = exit_status;
}
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
}
if (s->fd >= 0)
@@ -3415,7 +3427,7 @@ fix_line_distance_n_2 (Mustek_Scanner * s, SANE_Int num_lines, SANE_Int bpl,
if (!s->ld.buf[0])
{
/* This buffer must be big enough to hold maximum line distance
- times max_bpl bytes. The maximum line distance for the
+ times max_bpl bytes. The maximum line distance for the
Paragon 600 II N scanner is 23, so 40 should be safe. */
DBG (5,
"fix_line_distance_n_2: allocating temp buffer of %d*%d bytes\n",
@@ -3495,7 +3507,7 @@ fix_line_distance_n_1 (Mustek_Scanner * s, SANE_Int num_lines, SANE_Int bpl,
if (!s->ld.buf[0])
{
/* This buffer must be big enough to hold maximum line distance
- times max_bpl bytes. The maximum line distance for the 600 II N
+ times max_bpl bytes. The maximum line distance for the 600 II N
is 23, so 40 is safe. */
DBG (5,
"fix_line_distance_n_1: allocating temp buffer of %d*%d bytes\n",
@@ -3643,7 +3655,7 @@ fix_line_distance_se (Mustek_Scanner * s, SANE_Int num_lines, SANE_Int bpl,
DBG (5, "fix_line_distance_se: start color: %d; %d lines \n",
s->ld.color, num_lines);
- /* First scan the lines read and count red, green and blue ones.
+ /* First scan the lines read and count red, green and blue ones.
Since we will step through the lines a second time we must not
alter any global variables here! */
for (color = 0; color < 3; ++color)
@@ -3676,8 +3688,8 @@ fix_line_distance_se (Mustek_Scanner * s, SANE_Int num_lines, SANE_Int bpl,
color = 0;
}
- /* Calculate how many triples of color lines we can output now.
- Because the number of available red lines is always greater
+ /* Calculate how many triples of color lines we can output now.
+ Because the number of available red lines is always greater
than for the other colors we may ignore the red ones here. */
num_lines = MIN (lines[1], lines[2]);
@@ -3688,7 +3700,7 @@ fix_line_distance_se (Mustek_Scanner * s, SANE_Int num_lines, SANE_Int bpl,
lines[0] = lines[1] = lines[2] = num_lines;
- /* Output the color lines saved in previous call first.
+ /* Output the color lines saved in previous call first.
Note that data is converted in r/g/b interleave on the fly. */
for (color = 0; color < 3; ++color)
{
@@ -4710,7 +4722,7 @@ output_data (Mustek_Scanner * s, FILE * fp,
else
{
DBG (5, "output_data: write %d lpb; %d bpl\n", lines_per_buffer, bpl);
- /* Scale x-resolution above 1/2 of the maximum resolution for
+ /* Scale x-resolution above 1/2 of the maximum resolution for
SE and Pro scanners */
if ((s->hw->flags & MUSTEK_FLAG_ENLARGE_X) &&
(s->val[OPT_RESOLUTION].w > (s->hw->dpi_range.max / 2)))
@@ -6011,7 +6023,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{
/* enable brightness/contrast for when in a binary mode */
s->opt[OPT_BRIGHTNESS].cap &= ~SANE_CAP_INACTIVE;
- /* The SE and paragon models support only threshold
+ /* The SE and paragon models support only threshold
in lineart */
if (!(s->hw->flags & MUSTEK_FLAG_SE)
&& !(s->hw->flags & MUSTEK_FLAG_PRO))
@@ -6548,8 +6560,8 @@ sane_start (SANE_Handle handle)
s->line = 0;
- /* don't call any SIGTERM or SIGCHLD handlers
- this is to stop xsane and other frontends from calling
+ /* don't call any SIGTERM or SIGCHLD handlers
+ this is to stop xsane and other frontends from calling
its quit handlers */
memset (&act, 0, sizeof (act));
sigaction (SIGTERM, &act, 0);
diff --git a/backend/mustek.conf.in b/backend/mustek.conf.in
index 3233fd8..3868d0e 100644
--- a/backend/mustek.conf.in
+++ b/backend/mustek.conf.in
@@ -1,7 +1,7 @@
# See sane-mustek(5) for documentation.
#--------------------------- Global options ---------------------------------
-#option strip-height 1 # some SCSI adapters need this; scanning may
+#option strip-height 1 # some SCSI adapters need this; scanning may
# be faster without this option
#option force-wait # wait for scanner to be ready (only necessary
# when scanner freezes)
@@ -36,6 +36,6 @@ scsi SCANNER
# option linedistance-fix # only neccessary with firmware 2.x
#-------------------------- 600 II EP ---------------------------------------
-#parport0
- # parport0, parport1, ...,
+#parport0
+ # parport0, parport1, ...,
# or: 0x378(=lpt1), 0x278(=lpt2), 0x3bc(=lpt3)
diff --git a/backend/mustek.h b/backend/mustek.h
index 5532af5..ca7aa2e 100644
--- a/backend/mustek.h
+++ b/backend/mustek.h
@@ -3,7 +3,7 @@
extension to ScanExpress models version 0.5,
2000 - 2005 Henning Meier-Geinitz.
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -38,7 +38,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
This file implements a SANE backend for Mustek and some Trust flatbed
scanners with SCSI or proprietary interface. */
@@ -292,7 +292,7 @@ typedef struct Mustek_Scanner
/* these are used for SE, MFS and N line-distance correction: */
SANE_Byte *buf[3];
/* these are used for N line-distance correction only: */
- SANE_Int ld_line; /* line # currently processed in
+ SANE_Int ld_line; /* line # currently processed in
ld-correction */
SANE_Int lmod3; /* line # modulo 3 */
}
diff --git a/backend/mustek_pp.c b/backend/mustek_pp.c
index 9c9a533..912c3bd 100644
--- a/backend/mustek_pp.c
+++ b/backend/mustek_pp.c
@@ -86,7 +86,7 @@
#include "mustek_pp_drivers.h"
#define MIN(a,b) ((a) < (b) ? (a) : (b))
-
+
/* converts millimeter to pixels at a given resolution */
#define MM_TO_PIXEL(mm, dpi) (((float )mm * 5.0 / 127.0) * (float)dpi)
/* and back */
@@ -120,27 +120,27 @@ static Mustek_pp_Handle *first_hndl = NULL;
static SANE_String_Const mustek_pp_modes[4] = {SANE_VALUE_SCAN_MODE_LINEART, SANE_VALUE_SCAN_MODE_GRAY, SANE_VALUE_SCAN_MODE_COLOR, NULL};
static SANE_Word mustek_pp_modes_size = 10;
-
+
static SANE_String_Const mustek_pp_speeds[6] = {"Slowest", "Slower", "Normal", "Faster", "Fastest", NULL};
static SANE_Word mustek_pp_speeds_size = 8;
-static SANE_Word mustek_pp_depths[5] = {4, 8, 10, 12, 16};
+static SANE_Word mustek_pp_depths[5] = {4, 8, 10, 12, 16};
/* prototypes */
static void free_cfg_options(int *numoptions, Mustek_pp_config_option** options);
static SANE_Status do_eof(Mustek_pp_Handle *hndl);
static SANE_Status do_stop(Mustek_pp_Handle *hndl);
static int reader_process (Mustek_pp_Handle * hndl, int pipe);
-static SANE_Status sane_attach(SANE_String_Const port, SANE_String_Const name,
+static SANE_Status sane_attach(SANE_String_Const port, SANE_String_Const name,
SANE_Int driver, SANE_Int info);
static void init_options(Mustek_pp_Handle *hndl);
-static void attach_device(SANE_String *driver, SANE_String *name,
+static void attach_device(SANE_String *driver, SANE_String *name,
SANE_String *port, SANE_String *option_ta);
/*
- * Auxiliary function for freeing arrays of configuration options,
+ * Auxiliary function for freeing arrays of configuration options,
*/
-static void
+static void
free_cfg_options(int *numoptions, Mustek_pp_config_option** options)
{
int i;
@@ -225,7 +225,7 @@ do_stop(Mustek_pp_Handle *hndl)
*
* EDG - Jan 14, 2004:
* Make sure that the parport is released again by the child process
- * under all circumstances, because otherwise the parent process may no
+ * under all circumstances, because otherwise the parent process may no
* longer be able to claim it (they share the same file descriptor, and
* the kernel doesn't release the child's claim because the file
* descriptor isn't cleaned up). If that would happen, the lamp may stay
@@ -267,13 +267,13 @@ reader_process (Mustek_pp_Handle * hndl, int pipe)
sigemptyset (&sigterm_set);
sigaddset (&sigterm_set, SIGTERM);
-
+
if (!(buffer = malloc (hndl->params.bytes_per_line)))
return SANE_STATUS_NO_MEM;
-
+
if (!(fp = fdopen(pipe, "w")))
return SANE_STATUS_IO_ERROR;
-
+
fd_to_release = hndl->fd;
memset (&act, 0, sizeof(act));
act.sa_handler = sigterm_handler;
@@ -290,11 +290,11 @@ reader_process (Mustek_pp_Handle * hndl, int pipe)
sigprocmask (SIG_BLOCK, &sigterm_set, NULL);
hndl->dev->func->read (hndl, buffer);
-
+
if (getppid() == 1) {
/* The parent process has died. Stop the scan (to make
sure that the lamp is off and returns home). This is
- a safety measure to make sure that we don't break
+ a safety measure to make sure that we don't break
the scanner in case the frontend crashes. */
DBG (1, "reader_process: front-end died; aborting.\n");
hndl->dev->func->stop (hndl);
@@ -312,7 +312,7 @@ reader_process (Mustek_pp_Handle * hndl, int pipe)
return SANE_STATUS_GOOD;
}
-
+
/* sane_attach:
@@ -334,7 +334,7 @@ sane_attach (SANE_String_Const port, SANE_String_Const name, SANE_Int driver, SA
{
Mustek_pp_Device *dev;
- DBG (3, "sane_attach: attaching device ``%s'' to port %s (driver %s v%s by %s)\n",
+ DBG (3, "sane_attach: attaching device ``%s'' to port %s (driver %s v%s by %s)\n",
name, port, Mustek_pp_Drivers[driver].driver,
Mustek_pp_Drivers[driver].version,
Mustek_pp_Drivers[driver].author);
@@ -355,7 +355,7 @@ sane_attach (SANE_String_Const port, SANE_String_Const name, SANE_Int driver, SA
dev->sane.name = dev->name = strdup (name);
dev->port = strdup (port);
dev->info = info; /* Modified by EDG */
-
+
/* Transfer the options parsed from the configuration file */
dev->numcfgoptions = numcfgoptions;
dev->cfgoptions = cfgoptions;
@@ -469,7 +469,7 @@ init_options(Mustek_pp_Handle *hndl)
/* color dept */
hndl->opt[OPT_DEPTH].name = SANE_NAME_BIT_DEPTH;
hndl->opt[OPT_DEPTH].title = SANE_TITLE_BIT_DEPTH;
- hndl->opt[OPT_DEPTH].desc =
+ hndl->opt[OPT_DEPTH].desc =
"Number of bits per sample for color scans, typical values are 8 for truecolor (24bpp)"
"up to 16 for far-to-many-color (48bpp).";
hndl->opt[OPT_DEPTH].type = SANE_TYPE_INT;
@@ -634,7 +634,7 @@ init_options(Mustek_pp_Handle *hndl)
* this driver is called to initialize the device.
*/
static void
-attach_device(SANE_String *driver, SANE_String *name,
+attach_device(SANE_String *driver, SANE_String *name,
SANE_String *port, SANE_String *option_ta)
{
int found = 0, driver_no, port_no;
@@ -681,15 +681,15 @@ attach_device(SANE_String *driver, SANE_String *name,
if (*option_ta)
free (*option_ta);
*name = *port = *driver = *option_ta = 0;
-
+
/* In case of a successful initialization, the configuration options
should have been transfered to the device, but this function can
deal with that. */
free_cfg_options(&numcfgoptions, &cfgoptions);
}
-
+
/* sane_init:
- * Reads configuration file and registers hardware driver
+ * Reads configuration file and registers hardware driver
*
* ChangeLog:
*
@@ -711,7 +711,7 @@ attach_device(SANE_String *driver, SANE_String *name,
*
* if the optional argument "option_ta" is present the driver uses special
* parameters fitting for a trasparency adapter.
- */
+ */
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
@@ -740,9 +740,9 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char driver_name[64];
const char **devices = sanei_pa4s2_devices();
int device_no;
-
+
DBG (2, "sane_init: could not open configuration file\n");
-
+
for (device_no = 0; devices[device_no] != NULL; device_no++)
{
DBG (3, "sane_init: trying ``%s''\n", devices[device_no]);
@@ -774,14 +774,14 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
if (strncmp(config_line_ptr, "scanner", 7) == 0)
{
config_line_ptr += 7;
-
+
if (name)
{
/* Parsing of previous scanner + options is finished. Attach
the device before we parse the next section. */
attach_device(&driver, &name, &port, &option_ta);
}
-
+
config_line_ptr = sanei_config_skip_whitespace (config_line_ptr);
if (!*config_line_ptr)
{
@@ -858,7 +858,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
config_line_ptr = sanei_config_get_string (config_line_ptr,
&option_ta);
- if ((option_ta == NULL) || (!*option_ta) ||
+ if ((option_ta == NULL) || (!*option_ta) ||
(strcasecmp (option_ta, "use_ta") != 0))
{
DBG (1, "sane_init: parse error in line %d after "
@@ -889,12 +889,12 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
}
else if (strncmp(config_line_ptr, "option", 6) == 0)
{
- /* Format for options: option <name> [<value>]
- Note that the value is optional. */
+ /* Format for options: option <name> [<value>]
+ Note that the value is optional. */
char *optname, *optval = 0;
Mustek_pp_config_option *tmpoptions;
- config_line_ptr += 6;
+ config_line_ptr += 6;
config_line_ptr = sanei_config_skip_whitespace (config_line_ptr);
if (!*config_line_ptr)
{
@@ -918,7 +918,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
/* The option has a value.
No need to check the value; that's up to the backend */
- config_line_ptr = sanei_config_get_string (config_line_ptr,
+ config_line_ptr = sanei_config_get_string (config_line_ptr,
&optval);
config_line_ptr = sanei_config_skip_whitespace (config_line_ptr);
@@ -927,10 +927,10 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
if (*config_line_ptr)
{
DBG (1, "sane_init: parse error in line %d after "
- "``option %s %s''\n", line, optname,
+ "``option %s %s''\n", line, optname,
(optval == 0 ? "" : optval));
free (optname);
- if (optval)
+ if (optval)
free (optval);
continue;
}
@@ -959,14 +959,14 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG (1, "sane_init: parse error in line %d: unexpected "
" ``option''\n", line);
free (optname);
- if (optval)
+ if (optval)
free (optval);
continue;
}
/* Extend the (global) array of options */
- tmpoptions = realloc(cfgoptions,
+ tmpoptions = realloc(cfgoptions,
(numcfgoptions+1)*sizeof(cfgoptions[0]));
if (!tmpoptions)
{
@@ -987,7 +987,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
}
}
-
+
/* If we hit the end of the file, we still may have to process the
last driver */
if (name)
@@ -996,7 +996,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
fclose(fp);
return SANE_STATUS_GOOD;
-}
+}
/* sane_exit:
* Unloads all drivers and frees allocated memory
@@ -1060,7 +1060,7 @@ sane_exit (void)
*/
/*ARGSUSED*/
SANE_Status
-sane_get_devices (const SANE_Device *** device_list,
+sane_get_devices (const SANE_Device *** device_list,
SANE_Bool local_only __UNUSED__)
{
int ctr;
@@ -1078,7 +1078,7 @@ sane_get_devices (const SANE_Device *** device_list,
}
dev = devlist;
-
+
for (ctr=0 ; ctr<num_devices ; ctr++) {
devarray[ctr] = &dev->sane;
dev = dev->next;
@@ -1142,7 +1142,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
return SANE_STATUS_INVAL;
}
- DBG (3, "sane_open: Using device ``%s'' (driver %s v%s by %s)\n",
+ DBG (3, "sane_open: Using device ``%s'' (driver %s v%s by %s)\n",
dev->name, dev->func->driver, dev->func->version, dev->func->author);
if ((hndl = malloc (sizeof (Mustek_pp_Handle))) == NULL) {
@@ -1151,7 +1151,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
return SANE_STATUS_NO_MEM;
}
-
+
if ((status = dev->func->open (dev->port, dev->caps, &fd)) != SANE_STATUS_GOOD) {
DBG (1, "sane_open: could not open device (%s)\n",
@@ -1167,32 +1167,32 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
hndl->pipe = -1;
init_options (hndl);
-
+
dev->func->setup (hndl);
-
+
/* Initialize driver-specific configuration options. This must be
done after calling the setup() function because only then the
driver is guaranteed to be fully initialized */
for (i = 0; i<dev->numcfgoptions; ++i)
{
- status = dev->func->config (hndl,
+ status = dev->func->config (hndl,
dev->cfgoptions[i].name,
dev->cfgoptions[i].value);
if (status != SANE_STATUS_GOOD)
{
DBG (1, "sane_open: could not set option %s for device (%s)\n",
dev->cfgoptions[i].name, sane_strstatus (status));
-
- /* Question: should the initialization be aborted when an
- option cannot be handled ?
- The driver should have reasonable built-in defaults, so
- an illegal option value or an unknown option should not
+
+ /* Question: should the initialization be aborted when an
+ option cannot be handled ?
+ The driver should have reasonable built-in defaults, so
+ an illegal option value or an unknown option should not
be fatal. Therefore, it's probably ok to ignore the error. */
}
}
first_hndl = hndl;
-
+
*handle = hndl;
return SANE_STATUS_GOOD;
@@ -1297,7 +1297,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
* values aren't supported.
*
* before a value is written, some checks are performed. Depending
- * on the option, that is written, other options also change
+ * on the option, that is written, other options also change
*
*/
SANE_Status
@@ -1487,7 +1487,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
hndl->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
hndl->opt[OPT_DEPTH].cap |= SANE_CAP_INACTIVE;
-
+
if ((hndl->dev->caps & CAP_DEPTH) && (strcmp(val, SANE_VALUE_SCAN_MODE_COLOR) == 0))
hndl->opt[OPT_DEPTH].cap &= ~SANE_CAP_INACTIVE;
@@ -1543,7 +1543,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
* supported) or 24bit by default
* (ignored in bw/grayscale or if not
* supported)
- * dpi: resolution
+ * dpi: resolution
* invert: if supported else defaults to false
* gamma: if supported and selected
* ta: if supported by the device
@@ -1577,9 +1577,9 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
hndl->depth = hndl->val[OPT_DEPTH].w;
else
hndl->depth = 8;
-
+
dpi = (int) (SANE_UNFIX (hndl->val[OPT_RESOLUTION].w) + 0.5);
-
+
hndl->res = dpi;
if (hndl->dev->caps & CAP_INVERT)
@@ -1603,11 +1603,11 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
if (strcmp(mustek_pp_speeds[ctr], hndl->val[OPT_SPEED].s) == 0)
hndl->speed = ctr;
-
+
} else
hndl->speed = SPEED_NORMAL;
-
+
mode = hndl->val[OPT_MODE].s;
if (strcmp (mode, SANE_VALUE_SCAN_MODE_LINEART) == 0)
@@ -1651,7 +1651,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
MIN ((int)
(MM_TO_PIXEL (SANE_UNFIX(hndl->val[OPT_BR_Y].w), hndl->dev->maxres) +
0.5), hndl->dev->maxvsize);
-
+
/* If necessary, swap the upper and lower boundaries to avoid negative
distances. */
if (hndl->topX > hndl->bottomX) {
@@ -1913,7 +1913,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
if (hndl->state != STATE_SCANNING)
return SANE_STATUS_INVAL;
-
+
if (fcntl (hndl->pipe, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0) {
@@ -1943,7 +1943,7 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
if (hndl->state != STATE_SCANNING)
return SANE_STATUS_INVAL;
-
+
*fd = hndl->pipe;
return SANE_STATUS_GOOD;
diff --git a/backend/mustek_pp.conf.in b/backend/mustek_pp.conf.in
index 17f0e26..b2abf9a 100644
--- a/backend/mustek_pp.conf.in
+++ b/backend/mustek_pp.conf.in
@@ -12,7 +12,7 @@
# # SANE_DEBUG_SANEI_PA4S2=128 scanimage -L
# ...
# hangs here -> [sanei_pa4s2] sanei_pa4s2_readbyte: read in EPP mode
-#
+#
# Scanner definition template:
# ============================
#
@@ -39,20 +39,20 @@
# - cis1200+ (for Mustek 1200CP+ & OEM versions),
# - ccd300 (for Mustek 600 III EPP & OEM versions)
# - ... more types will be added in the future
-#
+#
# <optname> is a name of an option, and <optval> an optional value
# for the option.
# Currently available options for *CIS* type scanners are:
-# - top_adjust <value>:
+# - top_adjust <value>:
# Vertical adjustment of origin, in millimeter.
-# Values between -5.0 and +5.0 mm are possible
+# Values between -5.0 and +5.0 mm are possible
# (floating point).
# Default: 0.0
-# - slow_skip:
+# - slow_skip:
# Boolean option. Disables fast skipping to the start
# of the scan region. May be necessary in case fast
# skipping results in inaccuracies.
-# Default: fast skipping enabled
+# Default: fast skipping enabled
# - bw <value>:
# Black/white discrimination value for lineart scans.
# Pixel values below that value are considered black,
diff --git a/backend/mustek_pp.h b/backend/mustek_pp.h
index 19f1765..09b4ceb 100644
--- a/backend/mustek_pp.h
+++ b/backend/mustek_pp.h
@@ -47,13 +47,13 @@
#if defined(HAVE_SYS_TIME_H)
# include <sys/time.h>
#endif
-
+
#define DEBUG_NOT_STATIC
#include "../include/sane/sanei_debug.h"
/* Please note: ASSERT won't go away if you define NDEBUG, it just won't
* output a message when ASSERT failes. So if "cond" does anything, it will
- * be executed, even if NDEBUG is defined...
+ * be executed, even if NDEBUG is defined...
*/
#define ASSERT(cond, retval) do { \
if (!(cond)) { \
@@ -112,7 +112,7 @@ typedef struct {
void (*setup)(SANE_Handle hndl);
/* processes a configuration option */
- SANE_Status (*config)(SANE_Handle hndl,
+ SANE_Status (*config)(SANE_Handle hndl,
SANE_String_Const optname,
SANE_String_Const optval);
@@ -150,7 +150,7 @@ typedef struct Mustek_pp_config_option {
SANE_String name;
SANE_String value;
-
+
} Mustek_pp_config_option;
typedef struct Mustek_pp_Device {
@@ -174,11 +174,11 @@ typedef struct Mustek_pp_Device {
/* functions */
Mustek_pp_Functions *func;
-
+
/* Modified by EDG: device identification is needed to initialize
private device descriptor */
SANE_Int info;
-
+
/* Array of configuration file options */
int numcfgoptions;
Mustek_pp_config_option *cfgoptions;
@@ -240,8 +240,8 @@ typedef struct Mustek_pp_Handle {
struct Mustek_pp_Handle *next;
-
-
+
+
Mustek_pp_Device *dev;
int fd;
@@ -250,7 +250,7 @@ typedef struct Mustek_pp_Handle {
int pipe;
int state;
-
+
int topX, topY;
int bottomX, bottomY;
int mode;
@@ -263,7 +263,7 @@ typedef struct Mustek_pp_Handle {
int use_ta;
int depth;
int speed;
-
+
/* current parameters */
SANE_Parameters params;
@@ -271,7 +271,7 @@ typedef struct Mustek_pp_Handle {
SANE_Range x_range;
SANE_Range y_range;
SANE_Range gamma_range;
-
+
/* options */
SANE_Option_Descriptor opt[NUM_OPTIONS];
Option_Value val[NUM_OPTIONS];
@@ -280,7 +280,7 @@ typedef struct Mustek_pp_Handle {
time_t lamp_on;
void *priv;
-
+
} Mustek_pp_Handle;
#endif /* mustek_pp_h */
diff --git a/backend/mustek_pp_ccd300.c b/backend/mustek_pp_ccd300.c
index 41ad0ec..2bf06b3 100644
--- a/backend/mustek_pp_ccd300.c
+++ b/backend/mustek_pp_ccd300.c
@@ -36,8 +36,8 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
-
+ If you do not wish that, delete this exception notice.
+
This file implements the hardware driver scanners using a 300dpi CCD */
#include "mustek_pp_ccd300.h"
@@ -1881,7 +1881,7 @@ ccd300_start (SANE_Handle handle)
priv->hwres);
priv->skipimagebytes = dev->topX;
-
+
sanei_pa4s2_enable (dev->fd, SANE_TRUE);
config_ccd (dev);
set_voltages (dev);
diff --git a/backend/mustek_pp_ccd300.h b/backend/mustek_pp_ccd300.h
index 5dfe42d..a8cf009 100644
--- a/backend/mustek_pp_ccd300.h
+++ b/backend/mustek_pp_ccd300.h
@@ -36,8 +36,8 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
-
+ If you do not wish that, delete this exception notice.
+
This file implements the hardware driver scanners using a 300dpi CCD */
#ifndef __MUSTEK_PP_CCD300_H
#define __MUSTEK_PP_CCD300_H
diff --git a/backend/mustek_pp_cis.c b/backend/mustek_pp_cis.c
index 96e89f1..e95c6cf 100644
--- a/backend/mustek_pp_cis.c
+++ b/backend/mustek_pp_cis.c
@@ -44,14 +44,14 @@
/*
Global picture
-
+
Mustek_PP_handle -> Mustek_PP_dev
-> priv = Mustek_PP_CIS_dev -> CIS
*/
-
+
/*
* This flag determines whether the scanner uses fast skipping at high
- * resolutions. It is possible that this fast skipping introduces
+ * resolutions. It is possible that this fast skipping introduces
* inaccuracies. It if turns out to be a problem, fast skipping can
* be disabled by setting this flag to 0.
*/
@@ -68,7 +68,7 @@
#define MUSTEK_PP_CIS_1200CP_DEFAULT_SKIP 330
/*
- * Number of scan lines on which the average is taken to determine the
+ * Number of scan lines on which the average is taken to determine the
* maximum number of color levels.
*/
#define MUSTEK_PP_CIS_AVERAGE_COUNT 32
@@ -110,14 +110,14 @@
*** MA1015 chipset related functionality ***
******************************************************************************
*****************************************************************************/
-
+
/*
- These defines control some debugging functionality
+ These defines control some debugging functionality
#define M1015_TRACE_REGS -> trace the status of the internal registers
#define M1015_LOG_HL -> create a high-level log file (register-level)
#define M1015_LOG_LL -> create a low-level log file (byte-level)
-
+
By default, all logging/tracing is turned off.
*/
@@ -130,13 +130,13 @@
#ifdef M1015_LOG_LL
static FILE* M1015_LOG_1;
-
+
#define M1015_START_LL\
M1015_LOG_1 = fopen("cis_ll.log", "w");
-
+
#define M1015_STOP_LL\
fclose(M1015_LOG_1);
-
+
#define SANEI_PA4S2_WRITEBYTE(fd, reg, val)\
do\
{\
@@ -144,10 +144,10 @@
fprintf(M1015_LOG_1, "\tsanei_pa4s2_writebyte(fd, %d, 0x%02X);\n", \
reg, val);\
} while (0)
-
+
static const char* cis_last_rreg_name;
- static int cis_read_count;
-
+ static int cis_read_count;
+
#define SANEI_PA4S2_READBEGIN(fd, reg)\
do\
{\
@@ -155,14 +155,14 @@
cis_read_count = 0;\
sanei_pa4s2_readbegin(fd, reg);\
} while (0)
-
+
#define SANEI_PA4S2_READBYTE(fd, val)\
do\
{\
sanei_pa4s2_readbyte(fd, val);\
++cis_read_count;\
} while (0)
-
+
#define SANEI_PA4S2_READEND(fd)\
do\
{\
@@ -170,41 +170,41 @@
fprintf(M1015_LOG_1, "\tread_reg(%s, %d);\n", \
cis_last_rreg_name, cis_read_count);\
} while (0)
-
+
#define M1015_MARK_LL(info)\
fprintf(M1015_LOG_1, "* %s\n", info);
-
+
#else /* M1015_LOG_LL */
#define M1015_START_LL
#define M1015_STOP_LL
-
+
#define SANEI_PA4S2_WRITEBYTE(fd, reg, val)\
sanei_pa4s2_writebyte (fd, reg, val)
-
+
#define SANEI_PA4S2_READBEGIN(fd, reg)\
sanei_pa4s2_readbegin(fd, reg)
-
+
#define SANEI_PA4S2_READBYTE(fd, val)\
sanei_pa4s2_readbyte(fd, val)
-
+
#define SANEI_PA4S2_READEND(fd)\
sanei_pa4s2_readend(fd)
-
+
#define M1015_MARK_LL(info)
-
+
#endif /* M1015_LOG_LL */
-
+
/******************************************************************************
* High-level logging: traces the flow of the driver in a hierarchical way
* up to the level of register acccesses.
- *****************************************************************************/
+ *****************************************************************************/
#ifdef M1015_LOG_HL
static FILE* M1015_LOG_2;
static char hl_prev_line[4096], hl_next_line[4096], hl_repeat_count;
-
+
/*
* A few variables for hierarchical log message indentation.
*/
@@ -213,7 +213,7 @@
" ";
static const char* cis_indent;
static const char* cis_indent_end;
-
+
#define M1015_START_HL\
M1015_LOG_2 = fopen("cis_hl.log", "w");\
cis_indent = cis_indent_start + strlen(cis_indent_start);\
@@ -221,7 +221,7 @@
hl_prev_line[0] = 0;\
hl_next_line[0] = 0;\
hl_repeat_count = 0;
-
+
#define M1015_FLUSH_HL\
if (strcmp(hl_prev_line, hl_next_line))\
{\
@@ -238,7 +238,7 @@
{\
hl_repeat_count += 1;\
}
-
+
#define M1015_MARK(info)\
sprintf(&hl_next_line[0], "%s+ %s\n", cis_indent, info);\
M1015_FLUSH_HL
@@ -246,45 +246,45 @@
#define M1015_STOP_HL\
hl_next_line[0] = 0;\
M1015_FLUSH_HL\
- fclose(M1015_LOG_2);
-
-#else /* M1015_LOG_HL */
+ fclose(M1015_LOG_2);
+
+#else /* M1015_LOG_HL */
#define M1015_START_HL
#define M1015_STOP_HL
#define M1015_MARK(info)
#define M1015_FLUSH_HL
-
+
#endif /* M1015_LOG_HL */
#ifdef M1015_TRACE_REGS
#define M1015_DISPLAY_REGS(dev, msg) Mustek_PP_1015_display_regs(dev, msg)
#define M1015_DISPLAY_REG(msg, val) Mustek_PP_1015_display_reg(msg, val)
#else
- #define M1015_DISPLAY_REGS(dev, msg)
- #define M1015_DISPLAY_REG(msg, val)
+ #define M1015_DISPLAY_REGS(dev, msg)
+ #define M1015_DISPLAY_REG(msg, val)
#endif
-
+
#if defined (M1015_LOG_HL) || defined (M1015_LOG_LL)
-static const char*
+static const char*
Mustek_PP_1015_reg_r_name(Mustek_PP_1015R_reg id)
{
static const char* names[4] = { "ASIC", "SCAN_VAL", "MOTOR", "BANK_COUNT" };
return names[id & 0x03];
}
-static const char*
+static const char*
Mustek_PP_1015_bit_name(Mustek_PP_1015R_bit id)
{
static const char* names[4] = { "????", "MOTOR_HOME", "????", "MOTOR_BUSY" };
return names[id & 0x03];
}
-static const char*
+static const char*
Mustek_PP_1015_reg_w_name(Mustek_PP_1015R_reg id)
{
- static const char* names[4][4] =
+ static const char* names[4][4] =
{
{ "RED_REF", "GREEN_REF", "BLUE_REF", "DPI_CONTROL" },
{ "BYTE_COUNT_HB", "BYTE_COUNT_LB", "SKIP_COUNT", "EXPOSE_TIME" },
@@ -304,9 +304,9 @@ Mustek_PP_1015_show_val(int val)
/*
Since we use a static temporary buffer, we must make sure that the
buffer isn't altered while it is still in use (typically because
- more than one value is converted in a printf statement).
+ more than one value is converted in a printf statement).
Therefore the buffer is organized as a ring buffer. If should contain
- at least 21 elements in order to be able to display all registers
+ at least 21 elements in order to be able to display all registers
with one printf statement.
*/
#define Mustek_PP_1015_RING_BUFFER_SIZE 50
@@ -314,9 +314,9 @@ Mustek_PP_1015_show_val(int val)
static int index = 0;
int i;
char* current = (char*)buf[index++];
-
+
if (index >= Mustek_PP_1015_RING_BUFFER_SIZE) index = 0;
-
+
if (val < 0)
{
/* The register has not been initialized yet. */
@@ -345,8 +345,8 @@ Mustek_PP_1015_display_regs(Mustek_PP_CIS_dev * dev, const char* info)
* Rx : read-only register no. x
* ByWx : write-only register no. x of bank no. y
*/
-
- fprintf(stderr,
+
+ fprintf(stderr,
"\n"
"Register status: %s\n"
"\n"
@@ -403,12 +403,12 @@ Mustek_PP_1015_display_regs(Mustek_PP_CIS_dev * dev, const char* info)
(dev->CIS.regs.channel == 0x40 ? "GREEN" :
(dev->CIS.regs.channel == 0xC0 ? "BLUE" : "unknown")))
);
-}
+}
/******************************************************************************
* Displays a single register value
*****************************************************************************/
-static void
+static void
Mustek_PP_1015_display_reg(const char* info, int val)
{
fprintf (stderr, "%s: %s\n", info, Mustek_PP_1015_show_val(val));
@@ -432,21 +432,21 @@ Mustek_PP_1015_read_reg(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg)
{
SANE_Byte tmp;
assert(reg <= 3);
-
- SANEI_PA4S2_READBEGIN (dev->desc->fd, reg & 0x03);
- SANEI_PA4S2_READBYTE (dev->desc->fd, &tmp);
- SANEI_PA4S2_READEND (dev->desc->fd);
-
+
+ SANEI_PA4S2_READBEGIN (dev->desc->fd, reg & 0x03);
+ SANEI_PA4S2_READBYTE (dev->desc->fd, &tmp);
+ SANEI_PA4S2_READEND (dev->desc->fd);
+
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s read_reg(%s); [%s]\n", cis_indent,
+ sprintf(&hl_next_line[0], "%s read_reg(%s); [%s]\n", cis_indent,
Mustek_PP_1015_reg_r_name(reg), Mustek_PP_1015_show_val(tmp));
M1015_FLUSH_HL;
#endif
-
-#ifdef M1015_TRACE_REGS
+
+#ifdef M1015_TRACE_REGS
dev->CIS.regs.in_regs[reg & 0x03] = tmp;
#endif
-
+
return tmp;
}
@@ -463,12 +463,12 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
SANE_Byte tmp;
SANE_Byte mask, val;
int tries = 0;
-
+
assert(reg <= 3);
assert(bit <= 3);
-
+
mask = 1 << bit;
-
+
/* We don't want to wait forever */
while (dev->desc->state != STATE_CANCELLED)
{
@@ -476,26 +476,26 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
++tries;
#endif
- sanei_pa4s2_readbegin (dev->desc->fd, reg & 0x03);
- sanei_pa4s2_readbyte (dev->desc->fd, &tmp);
- sanei_pa4s2_readend (dev->desc->fd);
-
+ sanei_pa4s2_readbegin (dev->desc->fd, reg & 0x03);
+ sanei_pa4s2_readbyte (dev->desc->fd, &tmp);
+ sanei_pa4s2_readend (dev->desc->fd);
+
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d): %s %s;\n", cis_indent,
+ sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d): %s %s;\n", cis_indent,
Mustek_PP_1015_reg_r_name(reg), Mustek_PP_1015_bit_name(bit),
on?1:0, Mustek_PP_1015_show_val(mask), Mustek_PP_1015_show_val(tmp));
M1015_FLUSH_HL;
#endif
val = ((on == SANE_TRUE) ? tmp : ~tmp ) & mask;
-
+
if (val != 0) break;
-
+
if (period) usleep(period);
-
- if (tries > 50000)
+
+ if (tries > 50000)
{
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d): failed;\n", cis_indent,
+ sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d): failed;\n", cis_indent,
Mustek_PP_1015_reg_r_name(reg), Mustek_PP_1015_bit_name(bit), on?1:0);
M1015_FLUSH_HL;
#endif
@@ -504,9 +504,9 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
return SANE_FALSE;
}
}
-
+
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d);\n", cis_indent,
+ sprintf(&hl_next_line[0], "%s wait_bit(%s, %s, %d);\n", cis_indent,
Mustek_PP_1015_reg_r_name(reg), Mustek_PP_1015_bit_name(bit), on?1:0);
M1015_FLUSH_HL;
#endif
@@ -514,12 +514,12 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
fprintf(M1015_LOG_1, "\tread_reg(%s, %d);\n", Mustek_PP_1015_reg_r_name(reg),
tries);
#endif
-
-#ifdef M1015_TRACE_REGS
+
+#ifdef M1015_TRACE_REGS
dev->CIS.regs.in_regs[reg & 0x03] = tmp;
#endif
return dev->desc->state != STATE_CANCELLED ? SANE_TRUE : SANE_FALSE;
-}
+}
/******************************************************************************
*
@@ -540,9 +540,9 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
* Bank 2
* 0: unknown, used to start linear sequence during calibration
* 1: motor control code (forward, return home, ...)
- * 2: never used
+ * 2: never used
* 3: never used
- *
+ *
* Bank 3
* 0: reduction factor (16bit internal -> 8bit) -> target for calibration
* 1: unknown -> always set to 0x05
@@ -550,27 +550,27 @@ Mustek_PP_1015_wait_bit(Mustek_PP_CIS_dev * dev, Mustek_PP_1015R_reg reg,
* 3: never used
*
*****************************************************************************/
-
+
static void
Mustek_PP_1015_write_reg(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg, SANE_Byte val)
{
-
+
SANE_Byte regBank = (reg & 0xF0) >> 4;
SANE_Byte regNo = (reg & 0x0F);
-
+
assert (regNo <= 3);
assert (regBank <= 3);
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (4+regNo))+ regBank);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, regBank);
-
-#ifdef M1015_TRACE_REGS
+
+#ifdef M1015_TRACE_REGS
dev->CIS.regs.out_regs[regBank][regNo] = val;
#endif
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s write_reg(%s, 0x%02X);\n", cis_indent,
+ sprintf(&hl_next_line[0], "%s write_reg(%s, 0x%02X);\n", cis_indent,
Mustek_PP_1015_reg_w_name(reg), val);
M1015_FLUSH_HL;
#endif
@@ -586,28 +586,28 @@ Mustek_PP_1015_write_reg(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg, SANE_
*
*****************************************************************************/
static void
-Mustek_PP_1015_write_reg2(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
+Mustek_PP_1015_write_reg2(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
SANE_Byte val1, SANE_Byte val2)
{
SANE_Byte regBank = (reg & 0xF0) >> 4;
SANE_Byte regNo = (reg & 0x0F);
-
+
assert (regNo <= 2);
assert (regBank <= 3);
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (4+regNo))+ regBank);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val1);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (5+regNo))+ regBank);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val2);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, regBank);
-
-#ifdef M1015_TRACE_REGS
+
+#ifdef M1015_TRACE_REGS
dev->CIS.regs.out_regs[regBank][regNo] = val1;
dev->CIS.regs.out_regs[regBank][regNo+1] = val2;
#endif
-
+
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s write_reg2(%s, 0x%02X, 0x%02X);\n",
+ sprintf(&hl_next_line[0], "%s write_reg2(%s, 0x%02X, 0x%02X);\n",
cis_indent, Mustek_PP_1015_reg_w_name(reg), val1, val2);
M1015_FLUSH_HL;
#endif
@@ -624,15 +624,15 @@ Mustek_PP_1015_write_reg2(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
*
*****************************************************************************/
static void
-Mustek_PP_1015_write_reg3(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
+Mustek_PP_1015_write_reg3(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
SANE_Byte val1, SANE_Byte val2, SANE_Byte val3)
{
SANE_Byte regBank = (reg & 0xF0) >> 4;
SANE_Byte regNo = (reg & 0x0F);
-
+
assert (regNo <= 1);
assert (regBank <= 3);
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (4+regNo))+ regBank);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val1);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (5+regNo))+ regBank);
@@ -640,15 +640,15 @@ Mustek_PP_1015_write_reg3(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (6+regNo))+ regBank);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val3);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, regBank);
-
-#ifdef M1015_TRACE_REGS
+
+#ifdef M1015_TRACE_REGS
dev->CIS.regs.out_regs[regBank][regNo ] = val1;
dev->CIS.regs.out_regs[regBank][regNo+1] = val2;
dev->CIS.regs.out_regs[regBank][regNo+2] = val3;
#endif
-
+
#ifdef M1015_LOG_HL
- sprintf(&hl_next_line[0], "%s write_reg3(%s, 0x%02X, 0x%02X, 0x%02X);\n",
+ sprintf(&hl_next_line[0], "%s write_reg3(%s, 0x%02X, 0x%02X, 0x%02X);\n",
cis_indent, Mustek_PP_1015_reg_w_name(reg), val1, val2, val3);
M1015_FLUSH_HL;
#endif
@@ -656,43 +656,43 @@ Mustek_PP_1015_write_reg3(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg,
/******************************************************************************
* Opens a register for a (series of) write operation(s).
- *****************************************************************************/
+ *****************************************************************************/
static void
Mustek_PP_1015_write_reg_start(Mustek_PP_CIS_dev * dev, Mustek_PP_1015W_reg reg)
{
SANE_Byte regBank = (reg & 0xF0) >> 4;
SANE_Byte regNo = (reg & 0x0F);
-
+
assert (regNo <= 3);
assert (regBank <= 3);
-
+
dev->CIS.regs.current_write_reg = reg;
-
+
#ifdef M1015_LOG_HL
dev->CIS.regs.write_count = 0;
#endif
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, (1 << (4+regNo))+ regBank);
}
/******************************************************************************
* Writes a value to the currently open register.
- *****************************************************************************/
+ *****************************************************************************/
static void
Mustek_PP_1015_write_reg_val(Mustek_PP_CIS_dev * dev, SANE_Byte val)
{
-#ifdef M1015_TRACE_REGS
+#ifdef M1015_TRACE_REGS
SANE_Byte regBank = (dev->CIS.regs.current_write_reg & 0xF0) >> 4;
SANE_Byte regNo = (dev->CIS.regs.current_write_reg & 0x0F);
-
+
assert (regNo <= 3);
assert (regBank <= 3);
-
+
dev->CIS.regs.out_regs[regBank][regNo] = val;
#endif
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 5, val);
-
+
#ifdef M1015_LOG_HL
++dev->CIS.regs.write_count;
#endif
@@ -700,7 +700,7 @@ Mustek_PP_1015_write_reg_val(Mustek_PP_CIS_dev * dev, SANE_Byte val)
/******************************************************************************
* Closes a register after a (series of) write operation(s).
- *****************************************************************************/
+ *****************************************************************************/
static void
Mustek_PP_1015_write_reg_stop(Mustek_PP_CIS_dev * dev)
{
@@ -708,16 +708,16 @@ Mustek_PP_1015_write_reg_stop(Mustek_PP_CIS_dev * dev)
#ifdef M1015_LOG_HL
SANE_Byte regNo = (dev->CIS.regs.current_write_reg & 0x0F);
assert (regNo <= 3);
-
+
sprintf(&hl_next_line[0], "%s write_reg_multi(%s, *%d);\n", cis_indent,
- Mustek_PP_1015_reg_w_name(dev->CIS.regs.current_write_reg),
+ Mustek_PP_1015_reg_w_name(dev->CIS.regs.current_write_reg),
dev->CIS.regs.write_count);
M1015_FLUSH_HL;
#endif
assert (regBank <= 3);
-
+
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, regBank);
-}
+}
/******************************************************************************
*
@@ -725,12 +725,12 @@ Mustek_PP_1015_write_reg_stop(Mustek_PP_CIS_dev * dev)
* internal registers, ie., the 3rd bit should not be zero.
*
*****************************************************************************/
-static void
+static void
Mustek_PP_1015_send_command(Mustek_PP_CIS_dev * dev, SANE_Byte command)
{
assert (command & 0x04);
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, command);
-
+
#ifdef M1015_LOG_HL
sprintf(&hl_next_line[0], "%s send_command(0x%02X);\n", cis_indent, command);
M1015_FLUSH_HL;
@@ -742,7 +742,7 @@ Mustek_PP_1015_send_command(Mustek_PP_CIS_dev * dev, SANE_Byte command)
## CIS driver ##
##############################################################################
*****************************************************************************/
-
+
/******************************************************************************
* Resolution conversion functions
*****************************************************************************/
@@ -810,7 +810,7 @@ cis_wait_bank_change (Mustek_PP_CIS_dev * dev, int bankcount)
struct timeval start, end;
unsigned long diff;
int firsttime = 1;
-
+
gettimeofday (&start, NULL);
do
@@ -830,14 +830,14 @@ cis_wait_bank_change (Mustek_PP_CIS_dev * dev, int bankcount)
}
while ((dev->bank_count != bankcount) && (diff < MUSTEK_PP_CIS_WAIT_BANK));
-
+
if (dev->bank_count != bankcount && dev->desc->state != STATE_CANCELLED)
{
u_char tmp;
tmp = Mustek_PP_1015_read_reg(dev, 3);
DBG(2, "cis_wait_bank_change: Missed a bank: got %d [%s], "
- "wanted %d, waited %d msec\n",
- dev->bank_count, Mustek_PP_1015_show_val(tmp), bankcount,
+ "wanted %d, waited %d msec\n",
+ dev->bank_count, Mustek_PP_1015_show_val(tmp), bankcount,
MUSTEK_PP_CIS_WAIT_BANK);
}
@@ -846,10 +846,10 @@ cis_wait_bank_change (Mustek_PP_CIS_dev * dev, int bankcount)
/******************************************************************************
* Configure the CIS for a given resolution.
- *
- * CIS scanners seem to have 2 modes:
*
- * low resolution (50-300 DPI) and
+ * CIS scanners seem to have 2 modes:
+ *
+ * low resolution (50-300 DPI) and
* high resolution (300-600 DPI).
*
* Depending on the resolution requested by the user, the scanner is used
@@ -861,7 +861,7 @@ static void
cis_set_dpi_value (Mustek_PP_CIS_dev * dev)
{
u_char val = 0;
-
+
if (dev->model == MUSTEK_PP_CIS1200PLUS)
{
/* Toshiba CIS: only 600 DPI + decimation */
@@ -887,7 +887,7 @@ cis_set_dpi_value (Mustek_PP_CIS_dev * dev)
break;
default:
assert (0);
- }
+ }
}
else
{
@@ -916,7 +916,7 @@ cis_set_dpi_value (Mustek_PP_CIS_dev * dev)
assert (0);
}
}
-
+
Mustek_PP_1015_write_reg(dev, MA1015W_DPI_CONTROL, val | 0x04);
DBG (4, "cis_set_dpi_value: dpi: %d -> value 0x%02x\n", dev->CIS.hw_hres, val);
@@ -928,19 +928,19 @@ cis_set_ccd_channel (Mustek_PP_CIS_dev * dev)
SANE_Byte codes[] = { 0x84, 0x44, 0xC4 };
SANE_Byte chancode;
-
+
assert (dev->CIS.channel < 3);
-
+
chancode = codes[dev->CIS.channel];
-
- /*
- The TWAIN driver sets an extra bit in lineart mode.
- When I do this too, I don't see any effect on the image.
- Moreover, for 1 resolution, namely 400 dpi, the bank counter seems
+
+ /*
+ The TWAIN driver sets an extra bit in lineart mode.
+ When I do this too, I don't see any effect on the image.
+ Moreover, for 1 resolution, namely 400 dpi, the bank counter seems
to behave strangely, and the synchronization get completely lost.
I guess the software conversion from gray to lineart is good enough,
so I'll leave it like that.
-
+
if (dev->CIS.setParameters)
{
chancode |= (dev->desc->mode == MODE_BW) ? 0x20: 0;
@@ -948,7 +948,7 @@ cis_set_ccd_channel (Mustek_PP_CIS_dev * dev)
*/
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, chancode);
-
+
#ifdef M1015_TRACE_REGS
dev->CIS.regs.channel = chancode;
#endif
@@ -958,43 +958,43 @@ static void
cis_config_ccd (Mustek_PP_CIS_dev * dev)
{
SANE_Int skipCount, byteCount;
-
+
if (dev->CIS.res != 0)
dev->CIS.hres_step =
SANE_FIX ((float) dev->CIS.hw_hres / (float) dev->CIS.res);
/* CIS: <= 300 dpi -> 0x86
- > 300 dpi -> 0x96 */
+ > 300 dpi -> 0x96 */
if (dev->CIS.cisRes == 600)
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, 0x96);
else
SANEI_PA4S2_WRITEBYTE (dev->desc->fd, 6, 0x86);
-
+
cis_set_dpi_value(dev);
-
+
if (dev->CIS.setParameters)
{
dev->CIS.channel = dev->desc->mode == MODE_COLOR ?
MUSTEK_PP_CIS_CHANNEL_RED : MUSTEK_PP_CIS_CHANNEL_GRAY;
}
else
- {
+ {
dev->CIS.channel = MUSTEK_PP_CIS_CHANNEL_GRAY;
}
-
+
cis_set_ccd_channel (dev);
-
+
Mustek_PP_1015_write_reg (dev, MA1015W_POWER_ON_DELAY, 0xAA);
- Mustek_PP_1015_write_reg (dev, MA1015W_CCD_TIMING, 0x05);
- Mustek_PP_1015_write_reg (dev, MA1015W_CCD_TIMING_ADJ, 0x00);
+ Mustek_PP_1015_write_reg (dev, MA1015W_CCD_TIMING, 0x05);
+ Mustek_PP_1015_write_reg (dev, MA1015W_CCD_TIMING_ADJ, 0x00);
Mustek_PP_1015_send_command (dev, 0x45); /* or 0x05 for no 8kbank */
/*
* Unknown sequence.
* Seems to be always the same during configuration, independent of the
- * mode and the resolution.
+ * mode and the resolution.
*/
CIS_CLEAR_FULLFLAG(dev);
CIS_INC_READ(dev);
@@ -1020,14 +1020,14 @@ cis_config_ccd (Mustek_PP_CIS_dev * dev)
# > 300 DPI
#
# Skip = 67 + skipimage
- #
+ #
# Skip1 = Skip / 32
# Skip2 = Skip % 32
#
# Bytes = Skip2*hw_hres/600 + (imagebytes * hw_hres/res) + 2
#
*/
-
+
skipCount = 67; /* Hardware parameter - fixed */
if (dev->CIS.setParameters == SANE_TRUE)
@@ -1043,11 +1043,11 @@ cis_config_ccd (Mustek_PP_CIS_dev * dev)
*/
DBG(4, "cis_config_ccd: Skip count: %d\n", skipCount);
skipCount += max2cis_hres(dev, dev->CIS.skipimagebytes);
- DBG(4, "cis_config_ccd: Skip count: %d (cis res: %d)\n", skipCount,
+ DBG(4, "cis_config_ccd: Skip count: %d (cis res: %d)\n", skipCount,
dev->CIS.cisRes);
skipCount += (int)(2.0/25.4*dev->CIS.cisRes);
DBG(4, "cis_config_ccd: Skip count: %d\n", skipCount);
-
+
Mustek_PP_1015_write_reg (dev, MA1015W_SKIP_COUNT, skipCount / 32);
DBG(4, "cis_config_ccd: Skip count: %d (x32)\n", skipCount / 32);
}
@@ -1056,12 +1056,12 @@ cis_config_ccd (Mustek_PP_CIS_dev * dev)
Mustek_PP_1015_write_reg (dev, MA1015W_SKIP_COUNT, 0);
DBG(4, "cis_config_ccd: Skip count: 67 (x32)\n");
}
-
+
skipCount %= 32;
skipCount = cis2max_res(dev, skipCount); /* Back to max res */
-
- Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME, dev->CIS.exposeTime);
-
+
+ Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME, dev->CIS.exposeTime);
+
DBG(4, "cis_config_ccd: skipcount: %d imagebytes: %d\n", skipCount, dev->CIS.imagebytes);
/* set_initial_skip_1015 (dev); */
if (dev->CIS.setParameters == SANE_TRUE)
@@ -1071,20 +1071,20 @@ cis_config_ccd (Mustek_PP_CIS_dev * dev)
/* The TWAIN drivers always sends the same value: 0x96 */
Mustek_PP_1015_write_reg3(dev, MA1015W_RED_REF, 0x96, 0x96, 0x96);
dev->CIS.adjustskip = max2hw_hres(dev, skipCount);
- byteCount = max2hw_hres(dev, skipCount + dev->CIS.imagebytes) + 2;
+ byteCount = max2hw_hres(dev, skipCount + dev->CIS.imagebytes) + 2;
dev->CIS.setParameters = SANE_FALSE;
}
else
{
dev->CIS.adjustskip = 0;
- byteCount = max2hw_hres(dev, skipCount);
+ byteCount = max2hw_hres(dev, skipCount);
}
- DBG(4, "cis_config_ccd: adjust skip: %d bytecount: %d\n",
+ DBG(4, "cis_config_ccd: adjust skip: %d bytecount: %d\n",
dev->CIS.adjustskip, byteCount);
-
- Mustek_PP_1015_write_reg2(dev, MA1015W_BYTE_COUNT_HB,
- byteCount >> 8, byteCount & 0xFF);
-
+
+ Mustek_PP_1015_write_reg2(dev, MA1015W_BYTE_COUNT_HB,
+ byteCount >> 8, byteCount & 0xFF);
+
cis_get_bank_count (dev);
DBG(5, "cis_config_ccd: done\n");
}
@@ -1093,8 +1093,8 @@ static SANE_Bool
cis_wait_motor_stable (Mustek_PP_CIS_dev * dev)
{
static struct timeval timeoutVal;
- SANE_Bool ret =
- Mustek_PP_1015_wait_bit (dev, MA1015R_MOTOR, MA1015B_MOTOR_STABLE,
+ SANE_Bool ret =
+ Mustek_PP_1015_wait_bit (dev, MA1015R_MOTOR, MA1015B_MOTOR_STABLE,
SANE_FALSE, 0);
#ifdef HAVE_SYS_SELECT_H
if (dev->engine_delay > 0)
@@ -1111,7 +1111,7 @@ static void
cis_motor_forward (Mustek_PP_CIS_dev * dev)
{
SANE_Byte control;
-
+
if (dev->model == MUSTEK_PP_CIS600)
{
switch (dev->CIS.hw_vres)
@@ -1150,11 +1150,11 @@ cis_motor_forward (Mustek_PP_CIS_dev * dev)
#if MUSTEK_PP_CIS_MOTOR_REVERSE == 1
control ^= 0x10;
#endif
-
+
DBG(4, "cis_motor_forward: @%d dpi: 0x%02X.\n", dev->CIS.hw_vres, control);
if (!cis_wait_motor_stable (dev))
return;
-
+
Mustek_PP_1015_write_reg(dev, MA1015W_MOTOR_CONTROL, control);
}
@@ -1166,20 +1166,20 @@ cis_move_motor (Mustek_PP_CIS_dev * dev, SANE_Int steps) /* steps @ maxres */
SANE_Int fullSteps, biSteps, quadSteps;
/*
* During a multi-step feed, the expose time is fixed. The value depends
- * on the type of the motor (600/1200 CP)
+ * on the type of the motor (600/1200 CP)
*/
SANE_Byte savedExposeTime = dev->CIS.exposeTime;
dev->CIS.exposeTime = 85;
-
+
DBG(4, "cis_move_motor: Moving motor %d steps.\n", steps);
-
+
/* Just in case ... */
if (steps < 0)
{
DBG(1, "cis_move_motor: trying to move negative steps: %d\n", steps);
steps = 0; /* We must go through the configuration procedure */
- }
-
+ }
+
/*
* Using the parameter settings for the 600 CP on a 1200 CP scanner
* doesn't work: the engine doesn't move and makes a sharp noise, which
@@ -1190,8 +1190,8 @@ cis_move_motor (Mustek_PP_CIS_dev * dev, SANE_Int steps) /* steps @ maxres */
dev->CIS.exposeTime <<= 1;
cis_config_ccd(dev);
dev->CIS.exposeTime = savedExposeTime;
-
- /*
+
+ /*
* This is a minor speed optimization: when we are using the high
* resolution mode, long feeds (eg, to move to a scan area at the bottom
* of the page) can be made almost twice as fast by using double motor
@@ -1199,8 +1199,8 @@ cis_move_motor (Mustek_PP_CIS_dev * dev, SANE_Int steps) /* steps @ maxres */
* It is possible, though, that fast skipping (which is the default) is
* not very accurate on some scanners. Therefore, the user can disable
* this through the configuration file.
- */
-
+ */
+
fullSteps = steps & 1;
biSteps = steps >> 1;
if (dev->fast_skip) {
@@ -1210,33 +1210,33 @@ cis_move_motor (Mustek_PP_CIS_dev * dev, SANE_Int steps) /* steps @ maxres */
else {
quadSteps = 0;
}
-
+
M1015_DISPLAY_REGS(dev, "Before move");
-
+
#if MUSTEK_PP_CIS_MOTOR_REVERSE == 1
fullStep ^= 0x10;
biStep ^= 0x10;
quadStep ^= 0x10;
#endif
-
+
DBG(4, "cis_move_motor: 4x%d 2x%d 1x%d\n", quadSteps, biSteps, fullSteps);
- /* Note: the TWAIN driver opens the motor control register only
+ /* Note: the TWAIN driver opens the motor control register only
once before the loop, and closes it after the loop. I've tried this
too, but it resulted in inaccurate skip distances; therefore, the
motor control register is now opened and closed for each step. */
-
+
while (quadSteps-- > 0 && dev->desc->state != STATE_CANCELLED)
{
cis_wait_motor_stable (dev);
Mustek_PP_1015_write_reg(dev, MA1015W_MOTOR_CONTROL, quadStep);
}
-
+
while (biSteps-- > 0 && dev->desc->state != STATE_CANCELLED)
{
cis_wait_motor_stable (dev);
Mustek_PP_1015_write_reg(dev, MA1015W_MOTOR_CONTROL, biStep);
}
-
+
while (fullSteps-- > 0 && dev->desc->state != STATE_CANCELLED)
{
cis_wait_motor_stable (dev);
@@ -1247,16 +1247,16 @@ cis_move_motor (Mustek_PP_CIS_dev * dev, SANE_Int steps) /* steps @ maxres */
static void
cis_set_et_pd_sti (Mustek_PP_CIS_dev * dev)
{
- Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME,
+ Mustek_PP_1015_write_reg(dev, MA1015W_EXPOSE_TIME,
dev->CIS.exposeTime);
- Mustek_PP_1015_write_reg(dev, MA1015W_POWER_ON_DELAY,
+ Mustek_PP_1015_write_reg(dev, MA1015W_POWER_ON_DELAY,
dev->CIS.powerOnDelay[dev->CIS.channel]);
cis_set_ccd_channel (dev);
cis_set_sti (dev);
}
/*
- * Prepare the scanner for catching the next channel and, if necessary,
+ * Prepare the scanner for catching the next channel and, if necessary,
* move the head one step further.
*/
static SANE_Bool
@@ -1264,32 +1264,32 @@ cis_wait_next_channel (Mustek_PP_CIS_dev * dev)
{
int moveAtChannel = dev->desc->mode == MODE_COLOR ?
MUSTEK_PP_CIS_CHANNEL_BLUE : MUSTEK_PP_CIS_CHANNEL_GRAY;
-
+
if (!cis_wait_bank_change (dev, dev->bank_count))
{
DBG(2, "cis_wait_next_channel: Could not get next bank.\n");
return SANE_FALSE;
}
-
+
moveAtChannel = (dev->desc->mode == MODE_COLOR) ?
MUSTEK_PP_CIS_CHANNEL_BLUE : MUSTEK_PP_CIS_CHANNEL_GRAY;
-
+
if (dev->CIS.channel == moveAtChannel && !dev->CIS.dontMove)
{
cis_motor_forward (dev);
}
-
+
cis_set_et_pd_sti (dev);
-
+
if (dev->desc->mode == MODE_COLOR)
{
++dev->CIS.channel;
dev->CIS.channel %= 3;
}
-
+
return SANE_TRUE;
}
-
+
/*
* Wait for the device to be ready for scanning. Cycles through the different
* channels and sets the parameters (only green channel in gray/lineart).
@@ -1299,10 +1299,10 @@ cis_wait_read_ready (Mustek_PP_CIS_dev * dev)
{
int channel;
dev->CIS.dontIncRead = SANE_TRUE;
-
+
dev->CIS.channel = dev->desc->mode == MODE_COLOR ?
MUSTEK_PP_CIS_CHANNEL_RED : MUSTEK_PP_CIS_CHANNEL_GRAY;
-
+
for (channel = 0; channel < 3; ++channel)
{
if (!cis_wait_next_channel(dev)) return SANE_FALSE;
@@ -1313,9 +1313,9 @@ cis_wait_read_ready (Mustek_PP_CIS_dev * dev)
static int
delay_read (int delay)
{
- /*
+ /*
* A (very) smart compiler may complete optimize the delay loop away. By
- * adding some difficult data dependencies, we can try to prevent this.
+ * adding some difficult data dependencies, we can try to prevent this.
*/
static int prevent_removal, i;
for (i = 0; i<delay; ++i)
@@ -1329,8 +1329,8 @@ delay_read (int delay)
** Reads one line of pixels
*/
static void
-cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
- SANE_Int pixel, SANE_Byte * calib_low,
+cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
+ SANE_Int pixel, SANE_Byte * calib_low,
SANE_Byte * calib_hi, SANE_Int * gamma)
{
u_char color;
@@ -1340,7 +1340,7 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
if (pixel <= 0)
return;
-
+
SANEI_PA4S2_READBEGIN (dev->desc->fd, 1);
while(skips-- >= 0)
@@ -1384,7 +1384,7 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
else if (dev->CIS.hw_hres > dev->CIS.res)
{
/* Sub-sampling */
-
+
int pos = 0;
DBG (6, "cis_read_line_low_level: sub-sampling\n");
ctr = 0;
@@ -1428,8 +1428,8 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
int calctr = 0;
SANE_Int pos = 0, nextPos = 1;
/* Step: eg: 600 DPI -> 700 DPI -> hres_step = 6/7 -> step = 1/7 */
- SANE_Int step = SANE_FIX(1) - dev->CIS.hres_step;
-
+ SANE_Int step = SANE_FIX(1) - dev->CIS.hres_step;
+
/* Super-sampling */
DBG (6, "cis_read_line_low_level: super-sampling\n");
do
@@ -1446,11 +1446,11 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
if (calib_hi) {
hi_val = calib_hi[calctr] ;
}
-
+
if (++calctr >= dev->calib_pixels) {
- /* Avoid array boundary violations due to rounding errors
+ /* Avoid array boundary violations due to rounding errors
(due to the incremental calculation, the current position
- may be inaccurate to up to two pixels, so we may need to
+ may be inaccurate to up to two pixels, so we may need to
read a few extra bytes -> use the last calibration value) */
calctr = dev->calib_pixels - 1;
DBG (3, "cis_read_line_low_level: calibration overshoot\n");
@@ -1467,19 +1467,19 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
cval = gamma[cval];
pos += step;
-
+
if ((pos >> SANE_FIXED_SCALE_SHIFT) >= nextPos)
{
nextPos++;
-
+
/* Insert an interpolated value */
buf[bpos] = (buf[bpos-1] + cval)/2; /* Interpolate */
++bpos;
-
+
/* Store the plain value, but only if we still need pixels */
if (bpos < pixel)
buf[bpos++] = cval;
-
+
pos += step; /* Take interpolated value into account for pos */
}
else
@@ -1489,7 +1489,7 @@ cis_read_line_low_level (Mustek_PP_CIS_dev * dev, SANE_Byte * buf,
}
while (bpos < pixel);
}
-
+
SANEI_PA4S2_READEND (dev->desc->fd);
DBG (6, "cis_read_line_low_level: done\n");
}
@@ -1502,8 +1502,8 @@ cis_read_line (Mustek_PP_CIS_dev * dev, SANE_Byte* buf, SANE_Int pixel,
CIS_INC_READ(dev);
else
dev->CIS.dontIncRead = SANE_FALSE;
-
-
+
+
if (raw)
{
/* No color correction; raw data */
@@ -1513,12 +1513,12 @@ cis_read_line (Mustek_PP_CIS_dev * dev, SANE_Byte* buf, SANE_Int pixel,
{
/* Color correction */
cis_read_line_low_level (dev, buf, pixel,
- dev->calib_low[dev->CIS.channel],
- dev->calib_hi[dev->CIS.channel],
- (dev->desc->val[OPT_CUSTOM_GAMMA].w ?
+ dev->calib_low[dev->CIS.channel],
+ dev->calib_hi[dev->CIS.channel],
+ (dev->desc->val[OPT_CUSTOM_GAMMA].w ?
dev->desc->gamma_table[dev->CIS.channel] : NULL));
}
-
+
return cis_wait_next_channel(dev);
}
@@ -1528,7 +1528,7 @@ cis_get_next_line (Mustek_PP_CIS_dev * dev, SANE_Byte * buf)
SANE_Byte *dest, *tmpbuf = dev->tmpbuf;
int ctr, channel, first, last, stride, step = dev->CIS.line_step;
SANE_Byte gotline;
-
+
if (dev->desc->mode == MODE_COLOR)
{
first = MUSTEK_PP_CIS_CHANNEL_RED;
@@ -1541,7 +1541,7 @@ cis_get_next_line (Mustek_PP_CIS_dev * dev, SANE_Byte * buf)
last = MUSTEK_PP_CIS_CHANNEL_GRAY;
stride = 1;
}
-
+
gotline = SANE_FALSE;
do
{
@@ -1556,8 +1556,8 @@ cis_get_next_line (Mustek_PP_CIS_dev * dev, SANE_Byte * buf)
for (channel = first; channel <= last; ++channel)
{
- if (!cis_read_line(dev, tmpbuf, dev->desc->params.pixels_per_line,
- SANE_FALSE))
+ if (!cis_read_line(dev, tmpbuf, dev->desc->params.pixels_per_line,
+ SANE_FALSE))
return;
dest = buf + channel - first;
@@ -1601,7 +1601,7 @@ cis_get_color_line (Mustek_PP_CIS_dev * dev, SANE_Byte * buf)
/******************************************************************************
* Saves the state of the device during reset and calibration.
*****************************************************************************/
-static void
+static void
cis_save_state (Mustek_PP_CIS_dev * dev)
{
dev->Saved_CIS = dev->CIS;
@@ -1610,7 +1610,7 @@ cis_save_state (Mustek_PP_CIS_dev * dev)
/******************************************************************************
* Restores the state of the device after reset and calibration.
*****************************************************************************/
-static void
+static void
cis_restore_state (Mustek_PP_CIS_dev * dev)
{
dev->CIS = dev->Saved_CIS;
@@ -1624,10 +1624,10 @@ static int
cis_check_result(SANE_Byte* buffer, int pixel)
{
int i, maxVal = 0;
-
- for (i=0;i<pixel;++i)
+
+ for (i=0;i<pixel;++i)
if (buffer[i] > maxVal) maxVal = buffer[i];
-
+
if (maxVal > 250) return CIS_TOO_BRIGHT;
if (maxVal < 240) return CIS_TOO_DARK;
return CIS_OK;
@@ -1641,29 +1641,29 @@ cis_maximize_dynamic_range(Mustek_PP_CIS_dev * dev)
SANE_Byte powerOnDelayLower[3], powerOnDelayUpper[3], exposeTime[3];
SANE_Byte buf[3][MUSTEK_PP_CIS_MAX_H_PIXEL];
SANE_Int pixels = dev->calib_pixels;
-
+
DBG(3, "cis_maximize_dynamic_range: starting\n");
-
+
for (channel = 0; channel < 3; ++channel)
{
exposeTime[channel] = 254;
dev->CIS.powerOnDelay[channel] = 170;
powerOnDelayLower[channel] = 1;
powerOnDelayUpper[channel] = 254;
- }
+ }
dev->CIS.setParameters = SANE_TRUE;
dev->CIS.exposeTime = exposeTime[MUSTEK_PP_CIS_CHANNEL_GREEN];
cis_config_ccd(dev);
-
+
M1015_DISPLAY_REGS(dev, "before maximizing dynamic range");
dev->CIS.dontMove = SANE_TRUE; /* Don't move while calibrating */
-
+
if (!cis_wait_read_ready(dev) && dev->desc->state != STATE_CANCELLED)
{
DBG(2, "cis_maximize_dynamic_range: DEVICE NOT READY!\n");
return SANE_FALSE;
}
-
+
if (dev->desc->mode == MODE_COLOR)
{
first = MUSTEK_PP_CIS_CHANNEL_RED;
@@ -1674,10 +1674,10 @@ cis_maximize_dynamic_range(Mustek_PP_CIS_dev * dev)
first = MUSTEK_PP_CIS_CHANNEL_GRAY;
last = MUSTEK_PP_CIS_CHANNEL_GRAY;
}
-
+
dev->CIS.channel = first;
-
- /* Perform a kind of binary search. In the worst case, we should find
+
+ /* Perform a kind of binary search. In the worst case, we should find
the optimal power delay values after 8 iterations */
for( i=0; i<8; i++)
{
@@ -1686,20 +1686,20 @@ cis_maximize_dynamic_range(Mustek_PP_CIS_dev * dev)
dev->CIS.powerOnDelay[channel] = (powerOnDelayLower[channel] +
powerOnDelayUpper[channel]) / 2;
}
- Mustek_PP_1015_write_reg(dev, MA1015W_POWER_ON_DELAY,
+ Mustek_PP_1015_write_reg(dev, MA1015W_POWER_ON_DELAY,
dev->CIS.powerOnDelay[1]); /* Green */
for (pixel = 0; pixel < pixels; ++pixel)
{
buf[0][pixel] = buf[1][pixel] = buf[2][pixel] = 255;
}
-
+
/* Scan 4 lines, but ignore the first 3 ones. */
for (j = 0; j < 4; ++j)
{
for (channel = first; channel <= last; ++channel)
{
- if (!cis_read_line(dev, &buf[channel][0], pixels,
+ if (!cis_read_line(dev, &buf[channel][0], pixels,
/* raw = */ SANE_TRUE))
return SANE_FALSE;
}
@@ -1711,50 +1711,50 @@ cis_maximize_dynamic_range(Mustek_PP_CIS_dev * dev)
{
case CIS_TOO_BRIGHT:
powerOnDelayLower[channel] = dev->CIS.powerOnDelay[channel];
- break;
-
+ break;
+
case CIS_TOO_DARK:
powerOnDelayUpper[channel] = dev->CIS.powerOnDelay[channel];
- break;
-
+ break;
+
default:
- break;
+ break;
}
- }
- DBG (4, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
- dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
+ }
+ DBG (4, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
+ dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
dev->CIS.powerOnDelay[2]);
}
dev->CIS.dontMove = SANE_FALSE;
-
- DBG (3, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
- dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
+
+ DBG (3, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
+ dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
dev->CIS.powerOnDelay[2]);
-
+
minExposeTime = (dev->CIS.hw_hres <= 300) ? 170 : 253;
-
+
for (channel = first; channel <= last; ++channel)
{
dev->CIS.powerOnDelay[channel] = (powerOnDelayLower[channel] +
powerOnDelayUpper[channel]) / 2;
exposeTime[channel] -= dev->CIS.powerOnDelay[channel] - 1;
dev->CIS.powerOnDelay[channel] = 1;
-
+
if (exposeTime[channel] < minExposeTime)
{
- dev->CIS.powerOnDelay[channel] +=
+ dev->CIS.powerOnDelay[channel] +=
minExposeTime - exposeTime[channel];
exposeTime[channel] = minExposeTime;
}
- }
-
+ }
+
dev->CIS.exposeTime = exposeTime[MUSTEK_PP_CIS_CHANNEL_GREEN];
-
+
DBG (3, "cis_maximize_dynamic_range: expose time: %3d\n", exposeTime[1]);
- DBG (3, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
- dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
+ DBG (3, "cis_maximize_dynamic_range: power on delay %3d %3d %3d\n",
+ dev->CIS.powerOnDelay[0], dev->CIS.powerOnDelay[1],
dev->CIS.powerOnDelay[2]);
-
+
/*
* Short the calibration. Temporary, to find out what is wrong with
* the calibration on a 600 CP.
@@ -1776,29 +1776,29 @@ cis_measure_extremes(Mustek_PP_CIS_dev * dev, SANE_Byte* calib[3],
SANE_Byte max[3][MUSTEK_PP_CIS_MAX_H_PIXEL];
SANE_Int sum[3][MUSTEK_PP_CIS_MAX_H_PIXEL];
int channel, cnt, p;
-
+
memset((void*)&min, 255, 3*MUSTEK_PP_CIS_MAX_H_PIXEL*sizeof(SANE_Byte));
memset((void*)&max, 0, 3*MUSTEK_PP_CIS_MAX_H_PIXEL*sizeof(SANE_Byte));
memset((void*)&sum, 0, 3*MUSTEK_PP_CIS_MAX_H_PIXEL*sizeof(SANE_Int));
-
+
dev->CIS.channel = first;
-
+
/* Purge the banks first (there's always a 3-cycle delay) */
for (channel = first; channel <= last; ++channel)
{
- if (!cis_read_line(dev, &buf[channel%3][0], pixels,
+ if (!cis_read_line(dev, &buf[channel%3][0], pixels,
/* raw = */ SANE_TRUE))
return SANE_FALSE;
}
--dev->CIS.skipsToOrigin;
-
+
for (cnt = 0; cnt < MUSTEK_PP_CIS_AVERAGE_COUNT + 2; ++cnt)
{
for (channel = first; channel <= last; ++channel)
{
- DBG(4, "cis_measure_extremes: Reading line %d - channel %d\n",
+ DBG(4, "cis_measure_extremes: Reading line %d - channel %d\n",
cnt, channel);
- if (!cis_read_line(dev, &buf[channel][0], pixels,
+ if (!cis_read_line(dev, &buf[channel][0], pixels,
/* raw = */ SANE_TRUE))
return SANE_FALSE;
@@ -1813,7 +1813,7 @@ cis_measure_extremes(Mustek_PP_CIS_dev * dev, SANE_Byte* calib[3],
--dev->CIS.skipsToOrigin;
}
DBG(4, "cis_measure_extremes: Averaging\n");
- for (channel = first; channel <= last; ++channel)
+ for (channel = first; channel <= last; ++channel)
{
/* Ignore the extreme values and take the average of the others. */
for (p = 0; p < pixels; ++p)
@@ -1825,7 +1825,7 @@ cis_measure_extremes(Mustek_PP_CIS_dev * dev, SANE_Byte* calib[3],
}
DBG(4, "cis_measure_extremes: Done\n");
return SANE_TRUE;
-}
+}
static SANE_Bool
cis_normalize_ranges(Mustek_PP_CIS_dev * dev)
@@ -1834,7 +1834,7 @@ cis_normalize_ranges(Mustek_PP_CIS_dev * dev)
SANE_Byte powerOnDelay[3] ;
SANE_Int pixels = dev->calib_pixels;
SANE_Int channel, p, first, last;
-
+
if (dev->desc->mode == MODE_COLOR)
{
first = MUSTEK_PP_CIS_CHANNEL_RED;
@@ -1845,7 +1845,7 @@ cis_normalize_ranges(Mustek_PP_CIS_dev * dev)
first = MUSTEK_PP_CIS_CHANNEL_GRAY;
last = MUSTEK_PP_CIS_CHANNEL_GRAY;
}
-
+
DBG(3, "cis_normalize_ranges: Measuring high extremes\n");
/* Measure extremes with normal lighting */
if (!cis_measure_extremes(dev, dev->calib_hi, pixels, first, last)) {
@@ -1857,17 +1857,17 @@ cis_normalize_ranges(Mustek_PP_CIS_dev * dev)
powerOnDelay[channel] = dev->CIS.powerOnDelay[channel];
dev->CIS.powerOnDelay[channel] = dev->CIS.exposeTime;
}
-
+
DBG(3, "cis_normalize_ranges: Measuring low extremes\n");
if (!cis_measure_extremes(dev, dev->calib_low, pixels, first, last)) {
return SANE_FALSE;
}
-
+
/* Restore settings */
for (channel=first; channel<=last; ++channel) {
dev->CIS.powerOnDelay[channel] = powerOnDelay[channel];
}
-
+
/* Make sure calib_hi is greater than calib_low */
for (channel = first; channel <= last; ++channel) {
for (p = 0; p<pixels; p++) {
@@ -1894,16 +1894,16 @@ cis_normalize_ranges(Mustek_PP_CIS_dev * dev)
}
DBG(3, "cis_normalize_ranges: calibration done\n");
return SANE_TRUE;
-}
+}
/*
- * This routine measures the time that we have to wait between reading
+ * This routine measures the time that we have to wait between reading
* to pixels from the scanner. Especially at low resolutions, but also
* for narrow-width scans at high resolutions, reading too fast cause
- * color stability problems.
+ * color stability problems.
* This routine sends a test pattern to the scanner memory banks and tries
- * to measure how fast it can be retrieved without errors.
- * The same is done by the TWAIN driver (TESTIO.CPP:TestDelay).
+ * to measure how fast it can be retrieved without errors.
+ * The same is done by the TWAIN driver (TESTIO.CPP:TestDelay).
*/
static SANE_Bool
cis_measure_delay(Mustek_PP_CIS_dev * dev)
@@ -1912,7 +1912,7 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
unsigned i, j, d;
int saved_res;
SANE_Bool error = SANE_FALSE;
-
+
CIS_CLEAR_FULLFLAG(dev);
CIS_CLEAR_WRITE_ADDR(dev);
CIS_CLEAR_WRITE_BANK(dev);
@@ -1921,26 +1921,26 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
M1015_DISPLAY_REGS(dev, "Before delay measurement");
assert(dev->CIS.adjustskip == 0);
-
+
/* Sawtooth */
for (i=0; i<2048; ++i)
{
buf[0][i] = i % 255; /* Why 255 ? Seems to have no real importance */
}
-
+
Mustek_PP_1015_write_reg_start(dev, MA1015W_SRAM_SOURCE_PC);
for (i=0; i<2048; ++i)
{
Mustek_PP_1015_write_reg_val(dev, buf[0][i]);
}
Mustek_PP_1015_write_reg_stop(dev);
-
+
/* Bank offset measurement */
dev->CIS.delay = 0; /* Initialize to zero, measure next */
-
+
saved_res = dev->CIS.res;
dev->CIS.res = dev->CIS.hw_hres;
-
+
/*
* Note: the TWAIN driver seems to have a fast EPP mode too. That one is
* tried first, and then they try the normal mode. I haven't figured out
@@ -1953,7 +1953,7 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
for (d = 0; d < 75 /* 255 */ && dev->desc->state != STATE_CANCELLED; d += 5)
{
dev->CIS.delay = d;
-
+
/*
* We read the line 5 times to make sure that all garbage is flushed.
*/
@@ -1964,7 +1964,7 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
cis_read_line_low_level (dev, &buf[1][0], 2048, NULL, NULL, NULL);
if (dev->desc->state == STATE_CANCELLED) return SANE_FALSE;
}
-
+
error = SANE_FALSE;
/* Check 100 times whether we can read without errors. */
for (i=0; i<100 && !error; ++i)
@@ -1973,24 +1973,24 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
CIS_CLEAR_READ_BANK(dev);
cis_read_line_low_level (dev, &buf[1][0], 2048, NULL, NULL, NULL);
if (dev->desc->state == STATE_CANCELLED) return SANE_FALSE;
-
+
for (j=0; j<2048; ++j)
{
- if (buf[0][j] != buf[1][j])
+ if (buf[0][j] != buf[1][j])
{
error = SANE_TRUE;
break;
}
}
}
-
- DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
+
+ DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
if (!error)
break;
}
-
+
dev->CIS.res = saved_res;
-
+
if (error)
{
fprintf(stderr, "mustek_pp_cis: failed to measure delay.\n");
@@ -2000,10 +2000,10 @@ cis_measure_delay(Mustek_PP_CIS_dev * dev)
fprintf(stderr, "%d ", buf[1][j]);
}
fprintf(stderr, "\n");
- dev->CIS.delay = 0;
+ dev->CIS.delay = 0;
}
-
- DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
+
+ DBG (3, "cis_measure_delay: delay %d\n", dev->CIS.delay);
return SANE_TRUE;
}
@@ -2023,11 +2023,11 @@ cis_return_home (Mustek_PP_CIS_dev * dev, SANE_Bool nowait)
dev->CIS.exposeTime = 170;
cis_config_ccd(dev);
dev->CIS.exposeTime = savedExposeTime;
-
+
cis_motor_control (dev, 0xEB);
if (nowait == SANE_FALSE)
- Mustek_PP_1015_wait_bit(dev, MA1015R_MOTOR, MA1015B_MOTOR_HOME,
+ Mustek_PP_1015_wait_bit(dev, MA1015R_MOTOR, MA1015B_MOTOR_HOME,
SANE_TRUE, 1000);
}
@@ -2043,25 +2043,25 @@ cis_reset_device (Mustek_PP_CIS_dev * dev)
dev->CIS.adjustskip = 0;
dev->CIS.dontIncRead = SANE_TRUE;
dev->CIS.dontMove = SANE_FALSE;
-
+
cis_save_state(dev);
dev->CIS.hw_hres = 300;
dev->CIS.channel = MUSTEK_PP_CIS_CHANNEL_GREEN;
dev->CIS.setParameters = SANE_FALSE;
dev->CIS.exposeTime = 0xAA;
-
+
cis_config_ccd (dev);
-
+
cis_restore_state(dev);
-
+
}
static SANE_Bool
cis_calibrate (Mustek_PP_CIS_dev * dev)
{
int i, saved_res = dev->CIS.res, saved_vres = dev->CIS.hw_vres;
-
+
/*
* Flow of operation observed from the twain driver
* (it is assumed that the lamp is at the origin, and that the CIS is
@@ -2078,11 +2078,11 @@ cis_calibrate (Mustek_PP_CIS_dev * dev)
* doesn't seem to be any correlation with the current mode of the
* scanner, so I assume that the exact number isn't really relevant.
* The values that are read are the one that were sent to the bank,
- * rotated by 1 byte in my case.
+ * rotated by 1 byte in my case.
*
*
- * It seems that the width of the black border is being measured at
- * this stage, possibly multiple times till it stabilizes.
+ * It seems that the width of the black border is being measured at
+ * this stage, possibly multiple times till it stabilizes.
* I assume that the buffer is read 100 times to allow the lamp to
* warm up and that the width of the black border is then being
* measured till it stabilizes. That would explain the minimum number
@@ -2091,38 +2091,38 @@ cis_calibrate (Mustek_PP_CIS_dev * dev)
* - reset the device
*
* - move the motor 110 steps forward. The TWAIN driver moves 90 steps,
- * and I've used 90 steps for a long time too, but occasionally,
- * 90 steps is a fraction to short to reach the start of the
+ * and I've used 90 steps for a long time too, but occasionally,
+ * 90 steps is a fraction to short to reach the start of the
* calibration strip (the motor movements are not very accurate;
* an offset of 1 mm is not unusual). Therefore, I've increased it to
* 110 steps. This gives us an additional 1.6 mm slack, which should
- * prevent calibration errors.
- * (Note that the MUSTEK_PP_CIS_????CP_DEFAULT_SKIP constants have to
+ * prevent calibration errors.
+ * (Note that the MUSTEK_PP_CIS_????CP_DEFAULT_SKIP constants have to
* be adjusted if the number of steps is altered.)
*
* - configure the CIS : actual resolution + set parameters
- *
+ *
*/
-
- /*
+
+ /*
* We must make sure that we are in the scanning state; otherwise we may
* still be in the canceled state from a previous scan (even if terminated
- * normally), and the whole calibration would go wrong.
- */
+ * normally), and the whole calibration would go wrong.
+ */
dev->desc->state = STATE_SCANNING;
-
+
cis_reset_device (dev);
cis_return_home (dev, SANE_FALSE); /* Wait till it's home */
-
+
/* Use maximum resolution during calibration; otherwise we may calibrate
past the calibration strip. */
dev->CIS.hw_vres = dev->desc->dev->maxres;
/* This field remembers how many steps we still have to go @ max res */
dev->CIS.skipsToOrigin = dev->top_skip; /*max2hw_vres(dev, dev->top_skip); */
-
+
if (!cis_measure_delay(dev))
return SANE_FALSE;
-
+
cis_reset_device (dev);
/* Move motor 110 steps @ 300 DPI */
@@ -2140,30 +2140,30 @@ cis_calibrate (Mustek_PP_CIS_dev * dev)
cis_wait_motor_stable (dev);
}
Mustek_PP_1015_write_reg_stop(dev);
-
+
/* Next, we maximize the dynamic range of the scanner. During calibration
we don't want to extrapolate, so we limit the resolution if necessary */
-
- if (dev->CIS.hw_hres < dev->CIS.res)
+
+ if (dev->CIS.hw_hres < dev->CIS.res)
dev->CIS.res = dev->CIS.hw_hres;
-
+
if (!cis_maximize_dynamic_range(dev))
return SANE_FALSE;
-
+
if (!cis_normalize_ranges(dev))
return SANE_FALSE;
-
+
dev->CIS.res = saved_res;
dev->CIS.hw_vres = saved_vres;
-
+
/* Convert steps back to max res size, which are used during skipping */
/* dev->CIS.skipsToOrigin = hw2max_vres(dev, dev->CIS.skipsToOrigin); */
-
+
/* Move to the origin */
- DBG(3, "cis_calibrate: remaining skips to origin @maxres: %d\n",
+ DBG(3, "cis_calibrate: remaining skips to origin @maxres: %d\n",
dev->CIS.skipsToOrigin);
cis_move_motor(dev, dev->CIS.skipsToOrigin);
-
+
if (dev->calib_mode)
{
/* In calibration mode, we scan the interior of the scanner before the
@@ -2172,10 +2172,10 @@ cis_calibrate (Mustek_PP_CIS_dev * dev)
DBG(3, "cis_calibrate: running in calibration mode. Returning home.\n");
cis_return_home (dev, SANE_FALSE); /* Wait till it's home */
}
-
+
return dev->desc->state != STATE_CANCELLED ? SANE_TRUE : SANE_FALSE;
-
-}
+
+}
/******************************************************************************
******************************************************************************
@@ -2189,7 +2189,7 @@ cis_calibrate (Mustek_PP_CIS_dev * dev)
/* Shared initialization routine */
static SANE_Status cis_attach(SANE_String_Const port,
- SANE_String_Const name,
+ SANE_String_Const name,
SANE_Attach_Callback attach,
SANE_Int driverNo,
SANE_Int info)
@@ -2204,19 +2204,19 @@ static SANE_Status cis_attach(SANE_String_Const port,
{
SANE_Status altStatus;
SANE_String_Const altPort;
-
+
DBG (2, "cis_attach: couldn't attach to `%s' (%s)\n", port,
sane_strstatus (status));
-
- /* Make migration to libieee1284 painless for users that used
+
+ /* Make migration to libieee1284 painless for users that used
direct io in the past */
if (strcmp(port, "0x378") == 0) altPort = "parport0";
else if (strcmp(port, "0x278") == 0) altPort = "parport1";
else if (strcmp(port, "0x3BC") == 0) altPort = "parport2";
else return status;
-
+
DBG (2, "cis_attach: trying alternative port name: %s\n", altPort);
-
+
altStatus = sanei_pa4s2_open (altPort, &fd);
if (altStatus != SANE_STATUS_GOOD)
{
@@ -2225,7 +2225,7 @@ static SANE_Status cis_attach(SANE_String_Const port,
return status; /* Return original status, not alternative status */
}
}
-
+
M1015_START_LL;
M1015_START_HL;
@@ -2237,17 +2237,17 @@ static SANE_Status cis_attach(SANE_String_Const port,
sanei_pa4s2_enable (fd, SANE_FALSE);
sanei_pa4s2_close (fd);
-
+
if (asic != 0xA5) /* Identifies the MA1015 chipset */
{
/* CIS driver only works for MA1015 chipset */
DBG (2, "cis_attach: asic id (0x%02x) not recognized\n", asic);
- return SANE_STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
DBG (3, "cis_attach: device %s attached\n", name);
DBG (3, "cis_attach: asic 0x%02x\n", asic);
-
+
return attach(port, name, driverNo, info);
}
@@ -2292,7 +2292,7 @@ void cis_drv_capabilities(SANE_Int info, SANE_String *model,
*caps = CAP_NOTHING;
switch(info)
- {
+ {
case MUSTEK_PP_CIS600:
*model = strdup("600CP");
*maxres = 600;
@@ -2338,19 +2338,19 @@ SANE_Status cis_drv_open (SANE_String port, SANE_Int caps, SANE_Int *fd)
{
SANE_Status altStatus;
SANE_String_Const altPort;
-
+
DBG (2, "cis_attach: couldn't attach to `%s' (%s)\n", port,
sane_strstatus (status));
-
- /* Make migration to libieee1284 painless for users that used
+
+ /* Make migration to libieee1284 painless for users that used
direct io in the past */
if (strcmp(port, "0x378") == 0) altPort = "parport0";
else if (strcmp(port, "0x278") == 0) altPort = "parport1";
else if (strcmp(port, "0x3BC") == 0) altPort = "parport2";
else return status;
-
+
DBG (2, "cis_attach: trying alternative port name: %s\n", altPort);
-
+
altStatus = sanei_pa4s2_open (altPort, fd);
if (altStatus != SANE_STATUS_GOOD)
{
@@ -2379,16 +2379,16 @@ void cis_drv_setup (SANE_Handle hndl)
}
memset(cisdev, 0, sizeof(Mustek_PP_CIS_dev));
DBG(3, "cis_drv_setup: cis device allocated\n");
-
+
dev->lamp_on = 0;
dev->priv = cisdev;
-
+
cisdev->desc = dev;
cisdev->model = dev->dev->info;
cisdev->CIS.hw_hres = 300;
cisdev->CIS.cisRes = 300;
cisdev->CIS.hw_vres = 300;
-
+
/* Default values for configurable parameters; configuration file
may override them. */
cisdev->fast_skip = SANE_TRUE;
@@ -2424,7 +2424,7 @@ SANE_Status cis_drv_config(SANE_Handle hndl, SANE_String_Const optname,
return SANE_STATUS_INVAL;
}
dvalue = atof(optval);
-
+
/* An adjustment of +/- 5 mm should be sufficient and safe */
if (dvalue < -5.0)
{
@@ -2440,13 +2440,13 @@ SANE_Status cis_drv_config(SANE_Handle hndl, SANE_String_Const optname,
}
/* In practice, there is a lower bound on the value that can be used,
but if the top_skip value is smaller than that value, the only result
- will be that the driver tries to move the head a negative number
+ will be that the driver tries to move the head a negative number
of steps after calibration. The move routine just ignores negative
steps, so no harm can be done. */
cisdev->top_skip += MM_TO_PIXEL(dvalue, dev->dev->maxres);
- DBG (3, "cis_drv_config: setting top skip value to %d\n",
+ DBG (3, "cis_drv_config: setting top skip value to %d\n",
cisdev->top_skip);
-
+
/* Just to be cautious; we don't want the head to hit the bottom */
if (cisdev->top_skip > 600) cisdev->top_skip = 600;
if (cisdev->top_skip < -600) cisdev->top_skip = -600;
@@ -2519,7 +2519,7 @@ void cis_drv_close (SANE_Handle hndl)
Mustek_pp_Handle *dev = hndl;
Mustek_PP_CIS_dev *cisdev = dev->priv;
DBG (3, "cis_close: resetting device.\n");
- sanei_pa4s2_enable (dev->fd, SANE_TRUE);
+ sanei_pa4s2_enable (dev->fd, SANE_TRUE);
cis_reset_device (cisdev);
DBG (3, "cis_close: returning home.\n");
cis_return_home (cisdev, SANE_TRUE); /* Don't wait */
@@ -2541,7 +2541,7 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
Mustek_pp_Handle *dev = hndl;
Mustek_PP_CIS_dev *cisdev = dev->priv;
SANE_Int pixels = dev->params.pixels_per_line;
-
+
if (!cisdev)
{
DBG (2, "cis_drv_start: not enough memory for device\n");
@@ -2629,7 +2629,7 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
(cisdev->model == MUSTEK_PP_CIS1200 && dev->res <= 300))
cisdev->CIS.cisRes = 300;
else
- cisdev->CIS.cisRes = 600;
+ cisdev->CIS.cisRes = 600;
/* Calibration only makes sense for hardware pixels, not for interpolated
pixels, so we limit the number of calibration pixels to the maximum
@@ -2638,10 +2638,10 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
cisdev->calib_pixels = (pixels * cisdev->CIS.hw_hres) / dev->res;
else
cisdev->calib_pixels = pixels;
-
- DBG (3, "cis_drv_start: hres: %d vres: %d cisres: %d\n",
+
+ DBG (3, "cis_drv_start: hres: %d vres: %d cisres: %d\n",
cisdev->CIS.hw_hres, cisdev->CIS.hw_vres, cisdev->CIS.cisRes);
-
+
sanei_pa4s2_enable (dev->fd, SANE_TRUE);
cis_reset_device (cisdev);
@@ -2653,7 +2653,7 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
/*
* Set all registers to -1 (uninitialized)
- */
+ */
for (i=0; i<4; ++i)
{
cisdev->CIS.regs.in_regs[i] = -1;
@@ -2682,12 +2682,12 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
dev->priv = NULL;
return SANE_STATUS_NO_MEM;
}
-
- /* Allocate memory for calibration; calibrating interpolated pixels
+
+ /* Allocate memory for calibration; calibrating interpolated pixels
makes no sense */
- if (pixels > (dev->dev->maxhsize >> 1))
+ if (pixels > (dev->dev->maxhsize >> 1))
pixels = (dev->dev->maxhsize >> 1);
-
+
cisdev->calib_low[1] = malloc (pixels);
cisdev->calib_hi[1] = malloc (pixels);
@@ -2751,7 +2751,7 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
cis_move_motor (cisdev, dev->topY); /* Measured in max resolution */
- /* It is vital to reinitialize the scanner right before we start the
+ /* It is vital to reinitialize the scanner right before we start the
real scanning. Otherwise the bank synchronization may have gotten lost
by the time we reach the top of the scan area */
@@ -2759,12 +2759,12 @@ SANE_Status cis_drv_start (SANE_Handle hndl)
cis_config_ccd(cisdev);
cis_wait_read_ready(cisdev);
- sanei_pa4s2_enable (dev->fd, SANE_FALSE);
+ sanei_pa4s2_enable (dev->fd, SANE_FALSE);
cisdev->CIS.line_step =
SANE_FIX ((float) cisdev->CIS.hw_vres / (float) cisdev->CIS.res);
- /*
+ /*
* It is very important that line_diff is not initialized at zero !
* If it is set to zero, the motor will keep on moving forever (or better,
* till the scanner breaks).
@@ -2789,7 +2789,7 @@ void cis_drv_read (SANE_Handle hndl, SANE_Byte *buffer)
Mustek_pp_Handle *dev = hndl;
Mustek_PP_CIS_dev *cisdev = dev->priv;
DBG(6, "cis_drv_read: Reading line\n");
- sanei_pa4s2_enable (dev->fd, SANE_TRUE);
+ sanei_pa4s2_enable (dev->fd, SANE_TRUE);
switch (dev->mode)
{
case MODE_BW:
@@ -2814,13 +2814,13 @@ void cis_drv_stop (SANE_Handle hndl)
{
Mustek_pp_Handle *dev = hndl;
Mustek_PP_CIS_dev *cisdev = dev->priv;
-
+
/* device is scanning: return lamp and free buffers */
DBG (3, "cis_drv_stop: stopping current scan\n");
dev->state = STATE_CANCELLED;
DBG (9, "cis_drv_stop: enabling fd\n");
- sanei_pa4s2_enable (dev->fd, SANE_TRUE);
+ sanei_pa4s2_enable (dev->fd, SANE_TRUE);
Mustek_PP_1015_write_reg(cisdev, MA1015W_MOTOR_CONTROL, 0); /* stop */
DBG (9, "cis_drv_stop: resetting device (1)\n");
cis_reset_device (cisdev);
@@ -2829,7 +2829,7 @@ void cis_drv_stop (SANE_Handle hndl)
DBG (9, "cis_drv_stop: resetting device (2)\n");
cis_reset_device (cisdev);
DBG (9, "cis_drv_stop: disabling fd\n");
- sanei_pa4s2_enable (dev->fd, SANE_FALSE);
+ sanei_pa4s2_enable (dev->fd, SANE_FALSE);
DBG (9, "cis_drv_stop: freeing buffers\n");
/* This is no good: canceling while the device is scanning and
diff --git a/backend/mustek_pp_cis.h b/backend/mustek_pp_cis.h
index 2a38d89..fcbdfa6 100644
--- a/backend/mustek_pp_cis.h
+++ b/backend/mustek_pp_cis.h
@@ -50,28 +50,28 @@
/******************************************************************************
* Read register symbols.
*****************************************************************************/
-typedef enum {
+typedef enum {
MA1015R_ASIC = 0x00,
MA1015R_SCAN_VAL = 0x01,
MA1015R_MOTOR = 0x02,
- MA1015R_BANK_COUNT = 0x03
- }
+ MA1015R_BANK_COUNT = 0x03
+ }
Mustek_PP_1015R_reg;
/******************************************************************************
* Read register bitmask symbols.
*****************************************************************************/
-typedef enum {
+typedef enum {
MA1015B_MOTOR_HOME = 0x01,
- MA1015B_MOTOR_STABLE = 0x03
+ MA1015B_MOTOR_STABLE = 0x03
}
Mustek_PP_1015R_bit;
/******************************************************************************
* Write register symbols: (bank number << 4) + register number.
*****************************************************************************/
-
-typedef enum {
+
+typedef enum {
MA1015W_RED_REF = 0x00,
MA1015W_GREEN_REF = 0x01,
MA1015W_BLUE_REF = 0x02,
@@ -105,13 +105,13 @@ typedef struct Mustek_PP_1015_Registers
SANE_Byte in_regs[4];
SANE_Byte out_regs[4][4];
SANE_Byte channel;
-
+
Mustek_PP_1015R_reg current_read_reg;
SANE_Int read_count;
-
+
Mustek_PP_1015W_reg current_write_reg; /* always used */
SANE_Int write_count;
-}
+}
Mustek_PP_1015_Registers;
@@ -122,74 +122,74 @@ typedef struct Mustek_PP_CIS_Info
{
/* Expose time (= time the lamp is on ?) */
SANE_Byte exposeTime;
-
+
/* Power-on delay (= time between lamp on and start of capturing ?) */
SANE_Byte powerOnDelay[3];
-
+
/* Motor step control */
SANE_Byte phaseType;
-
+
/* Use 8K bank or 4K bank */
SANE_Bool use8KBank;
-
+
/* High resolution (600 DPI) or not (300 DPI) */
SANE_Bool highRes;
-
+
/* delay between pixels; reading too fast causes stability problems */
SANE_Int delay;
/* Register representation */
Mustek_PP_1015_Registers regs;
-
+
/* Current color channel */
SANE_Int channel;
-
+
/* Blocks motor movements during calibration */
SANE_Bool dontMove;
-
+
/* Prevents read increment the before the first read */
SANE_Bool dontIncRead;
-
- /* Controls whether or not calibration parameters are transmitted
+
+ /* Controls whether or not calibration parameters are transmitted
during CIS configuration */
SANE_Bool setParameters;
-
+
/* Number of lines to skip to reach the origin (used during calibration) */
SANE_Int skipsToOrigin;
-
+
/* Physical resolution of the CIS: either 300 or 600 DPI */
SANE_Int cisRes;
-
+
/* CCD mode (color/grayscale/lineart) */
SANE_Int mode;
-
+
/* how many positions to skip until scan area starts @ max res */
SANE_Int skipimagebytes;
-
+
/* how many image bytes to scan @ max res */
SANE_Int imagebytes;
-
+
/* total skip, adjusted to resolution */
SANE_Int adjustskip;
-
+
/* current resolution */
SANE_Int res;
-
+
/* current horizontal hardware resolution */
SANE_Int hw_hres;
-
+
/* current vertical hardware resolution */
SANE_Int hw_vres;
-
+
/* how many positions to scan for one pixel */
SANE_Int hres_step;
-
+
/* how many lines to scan for one scanline */
SANE_Int line_step;
-
+
/* inversion */
SANE_Bool invert;
-
+
} Mustek_PP_CIS_Info;
struct Mustek_pp_Handle;
@@ -200,7 +200,7 @@ typedef struct Mustek_PP_CIS_dev
/* model identification (600CP/1200CP/1200CP+) */
SANE_Int model;
-
+
/* CIS status */
Mustek_PP_CIS_Info CIS;
@@ -216,26 +216,26 @@ typedef struct Mustek_PP_CIS_dev
int line_diff;
int ccd_line;
int lines_left;
-
+
/* Configuration parameters that the user can calibrate */
/* Starting position at the top */
SANE_Int top_skip;
/* Use fast skipping method for head movements ? (default: yes) */
SANE_Bool fast_skip;
/* Discrimination value to choose between black and white */
- SANE_Byte bw_limit;
+ SANE_Byte bw_limit;
/* Run in calibration mode ? (default: no) */
SANE_Bool calib_mode;
/* Extra delay between engine commands (ms). Default: zero. */
SANE_Int engine_delay;
-
+
/* temporary buffer for 1 line (of one color) */
SANE_Byte *tmpbuf;
/* calibration buffers (low cut, high cut) */
SANE_Byte *calib_low[3];
SANE_Byte *calib_hi[3];
-
+
/* Number of pixels in calibration buffers (<= number of pixels to scan) */
int calib_pixels;
diff --git a/backend/mustek_pp_decl.h b/backend/mustek_pp_decl.h
index 3875f3d..2ccce95 100644
--- a/backend/mustek_pp_decl.h
+++ b/backend/mustek_pp_decl.h
@@ -23,25 +23,25 @@ static void debug_drv_stop (SANE_Handle hndl);
/* CIS drivers for 600CP, 1200CP, and 1200CP+
Version 0.13-beta, author Eddy De Greef */
-static SANE_Status cis600_drv_init (SANE_Int options,
+static SANE_Status cis600_drv_init (SANE_Int options,
SANE_String_Const port,
- SANE_String_Const name,
+ SANE_String_Const name,
SANE_Attach_Callback attach);
-static SANE_Status cis1200_drv_init (SANE_Int options,
+static SANE_Status cis1200_drv_init (SANE_Int options,
SANE_String_Const port,
- SANE_String_Const name,
+ SANE_String_Const name,
SANE_Attach_Callback attach);
-static SANE_Status cis1200p_drv_init(SANE_Int options,
+static SANE_Status cis1200p_drv_init(SANE_Int options,
SANE_String_Const port,
- SANE_String_Const name,
+ SANE_String_Const name,
SANE_Attach_Callback attach);
-static void cis_drv_capabilities(SANE_Int info,
+static void cis_drv_capabilities(SANE_Int info,
SANE_String *model,
- SANE_String *vendor,
+ SANE_String *vendor,
SANE_String *type,
- SANE_Int *maxres,
+ SANE_Int *maxres,
SANE_Int *minres,
- SANE_Int *maxhsize,
+ SANE_Int *maxhsize,
SANE_Int *maxvsize,
SANE_Int *caps);
static SANE_Status cis_drv_open (SANE_String port, SANE_Int caps, SANE_Int *fd);
@@ -57,17 +57,17 @@ static void cis_drv_stop (SANE_Handle hndl);
/* CCD drivers for 300 dpi models
Version 0.11-devel, author Jochen Eisinger */
-static SANE_Status ccd300_init (SANE_Int options,
+static SANE_Status ccd300_init (SANE_Int options,
SANE_String_Const port,
- SANE_String_Const name,
+ SANE_String_Const name,
SANE_Attach_Callback attach);
-static void ccd300_capabilities(SANE_Int info,
+static void ccd300_capabilities(SANE_Int info,
SANE_String *model,
- SANE_String *vendor,
+ SANE_String *vendor,
SANE_String *type,
- SANE_Int *maxres,
+ SANE_Int *maxres,
SANE_Int *minres,
- SANE_Int *maxhsize,
+ SANE_Int *maxhsize,
SANE_Int *maxvsize,
SANE_Int *caps);
static SANE_Status ccd300_open (SANE_String port, SANE_Int caps, SANE_Int *fd);
diff --git a/backend/mustek_pp_null.c b/backend/mustek_pp_null.c
index e1c6a35..06045cb 100644
--- a/backend/mustek_pp_null.c
+++ b/backend/mustek_pp_null.c
@@ -39,7 +39,7 @@
If you do not wish that, delete this exception notice.
This file implements a SANE backend for Mustek PP flatbed scanners. */
-
+
#include "../include/sane/config.h"
#if defined(HAVE_STDLIB_H)
@@ -62,7 +62,7 @@
#define MUSTEK_PP_NULL_DRIVER 0
-static SANE_Status
+static SANE_Status
debug_drv_init(SANE_Int options, SANE_String_Const port,
SANE_String_Const name, SANE_Attach_Callback attach)
{
@@ -75,7 +75,7 @@ debug_drv_init(SANE_Int options, SANE_String_Const port,
}
/*ARGSUSED*/
-static void
+static void
debug_drv_capabilities(SANE_Int info __UNUSED__, SANE_String *model,
SANE_String *vendor, SANE_String *type,
SANE_Int *maxres, SANE_Int *minres,
@@ -96,14 +96,14 @@ debug_drv_capabilities(SANE_Int info __UNUSED__, SANE_String *model,
/*ARGSUSED*/
static SANE_Status
-debug_drv_open (SANE_String port __UNUSED__,
+debug_drv_open (SANE_String port __UNUSED__,
SANE_Int caps __UNUSED__, SANE_Int *fd)
{
*fd = 1;
return SANE_STATUS_GOOD;
}
-static void
+static void
debug_drv_setup (SANE_Handle hndl)
{
@@ -115,7 +115,7 @@ debug_drv_setup (SANE_Handle hndl)
/*ARGSUSED*/
static SANE_Status
-debug_drv_config(SANE_Handle hndl __UNUSED__,
+debug_drv_config(SANE_Handle hndl __UNUSED__,
SANE_String_Const optname,
SANE_String_Const optval)
{
@@ -136,7 +136,7 @@ debug_drv_start (SANE_Handle hndl __UNUSED__)
return SANE_STATUS_GOOD;
}
-static void
+static void
debug_drv_read (SANE_Handle hndl, SANE_Byte *buffer)
{
diff --git a/backend/mustek_scsi_pp.c b/backend/mustek_scsi_pp.c
index 3dab544..304afce 100644
--- a/backend/mustek_scsi_pp.c
+++ b/backend/mustek_scsi_pp.c
@@ -793,7 +793,7 @@ mustek_scsi_pp_cmd (int fd, const void *src, size_t src_size,
/*
* Retry the command several times, as occasionally it doesn't
- * work first time.
+ * work first time.
*/
do
{
diff --git a/backend/mustek_scsi_pp.h b/backend/mustek_scsi_pp.h
index 5d1c900..363f2c0 100644
--- a/backend/mustek_scsi_pp.h
+++ b/backend/mustek_scsi_pp.h
@@ -1,7 +1,7 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2003 James Perry
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -36,7 +36,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
This file implements the SCSI-over-parallel port protocol used in,
for example, the Paragon 600 II EP
@@ -113,7 +113,7 @@ static SANE_Status mustek_scsi_pp_cmd (int fd, const void *src, size_t src_size,
*
* @return
* - SANE_STATUS_GOOD - on success
- * - SANE_STATUS_IO_ERROR - if an error occured during the dialog with the
+ * - SANE_STATUS_IO_ERROR - if an error occured during the dialog with the
* device
*/
static SANE_Status mustek_scsi_pp_rdata (int fd, int planes,
diff --git a/backend/mustek_usb.c b/backend/mustek_usb.c
index 58dcc58..d048fef 100644
--- a/backend/mustek_usb.c
+++ b/backend/mustek_usb.c
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#define BUILD 18
@@ -100,10 +100,6 @@ static SANE_Int new_dev_alloced;
static SANE_String_Const mode_list[6];
-static const SANE_Range char_range = {
- -127, 127, 1
-};
-
static const SANE_Range u8_range = {
0, /* minimum */
255, /* maximum */
@@ -1533,7 +1529,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
*len = MIN (max_len, (SANE_Int) s->hw->scan_buffer_len);
memcpy (buf, s->hw->scan_buffer_start, *len);
DBG (4, "sane_read: exit, read %d bytes from scan_buffer; "
- "%ld bytes remaining\n", *len,
+ "%ld bytes remaining\n", *len,
(long int) (s->hw->scan_buffer_len - *len));
s->hw->scan_buffer_len -= (*len);
s->hw->scan_buffer_start += (*len);
diff --git a/backend/mustek_usb.conf.in b/backend/mustek_usb.conf.in
index c9b3ec4..fd58cdd 100644
--- a/backend/mustek_usb.conf.in
+++ b/backend/mustek_usb.conf.in
@@ -36,4 +36,3 @@ usb 0x055f 0x0873
#option 1200cu
#option 1200cu_plus
#option 600cu
-
diff --git a/backend/mustek_usb.h b/backend/mustek_usb.h
index 7e68402..b5a7518 100644
--- a/backend/mustek_usb.h
+++ b/backend/mustek_usb.h
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#ifndef mustek_usb_h
diff --git a/backend/mustek_usb2.c b/backend/mustek_usb2.c
index 58d9e9e..bc112e6 100644
--- a/backend/mustek_usb2.c
+++ b/backend/mustek_usb2.c
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#define BUILD 10
@@ -396,7 +396,7 @@ init_options (Mustek_Scanner * s)
s->opt[OPT_RESOLUTION].unit = SANE_UNIT_DPI;
s->opt[OPT_RESOLUTION].constraint_type = SANE_CONSTRAINT_WORD_LIST;
s->opt[OPT_RESOLUTION].constraint.word_list = dpi_list;
- s->val[OPT_RESOLUTION].w = 300;
+ s->val[OPT_RESOLUTION].w = 300;
/* preview */
s->opt[OPT_PREVIEW].name = SANE_NAME_PREVIEW;
@@ -528,14 +528,14 @@ static unsigned int g_dwAlreadyGetNegLines = 0;
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Check the device connect status
Parameters:
none
-Return value:
+Return value:
if the device is connected
return TRUE
- else
+ else
return FALSE
***********************************************************************/
static SANE_Bool
@@ -547,12 +547,12 @@ GetDeviceStatus ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Turn the lamp on or off
Parameters:
isLampOn: turn the lamp on or off
isTALampOn: turn the TA lamp on or off
-Return value:
+Return value:
if operation success
return TRUE
else
@@ -567,11 +567,11 @@ PowerControl (SANE_Bool isLampOn, SANE_Bool isTALampOn)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Turn the carriage home
Parameters:
none
-Return value:
+Return value:
if the operation success
return TRUE
else
@@ -587,11 +587,11 @@ CarriageHome ()
#ifdef SANE_UNUSED
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Get gamma input/output bit count
Parameters:
pGammaInfo: the gamma information
-Return value:
+Return value:
if the operation success
return TRUE
else
@@ -632,11 +632,11 @@ GetGammaInfo (LPGAMMAINFO pGammaInfo)
#endif
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
set scan parameters
Parameters:
pSetParameters: the information of scaning
-Return value:
+Return value:
if the operation success
return TRUE
else
@@ -861,11 +861,11 @@ SetParameters (LPSETPARAMETERS pSetParameters)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
get the optical dpi and scan area
Parameters:
pGetParameters: the information of scan
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -905,7 +905,7 @@ GetParameters (LPGETPARAMETERS pGetParameters)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
start scan image
Parameters:
none
@@ -949,12 +949,12 @@ StartScan ()
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Read the scanner data
Parameters:
pImageRows: the information of the data
-Return value:
+Return value:
if the operation is seccuss
return TRUE
else
@@ -1090,11 +1090,11 @@ ReadScannedData (LPIMAGEROWS pImageRows)
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Stop scan
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1150,11 +1150,11 @@ StopScan ()
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Check the status of TA
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1187,11 +1187,11 @@ IsTAConnected ()
#ifdef SANE_UNUSED
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Get the status of the HK
Parameters:
pKey: the status of key
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -1250,14 +1250,14 @@ GetKeyStatus (SANE_Byte * pKey)
#endif
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
- Deal with the image with auto level
+Routine Description:
+ Deal with the image with auto level
Parameters:
lpSource: the data of image
scanMode: the scan mode
ScanLines: the rows of image
BytesPerLine: the bytes of per line
-Return value:
+Return value:
none
***********************************************************************/
static void
@@ -1497,13 +1497,13 @@ AutoLevel (SANE_Byte *lpSource, SCANMODE scanMode, unsigned short ScanLines,
#ifdef SANE_UNUSED
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Deal with image with auto level
Parameters:
pDIB: the data of image
ImageWidth: the width of image
ImageHeight: the height of image
-Return value:
+Return value:
none
***********************************************************************/
static void
@@ -1792,14 +1792,14 @@ QBETDetectAutoLevel (void *pDIB, unsigned int ImageWidth, unsigned int ImageHeig
#ifdef SANE_UNUSED
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
- Change the image data and deal with auto level
+Routine Description:
+ Change the image data and deal with auto level
Parameters:
lpSource: the data of image
scanMode: the scan mode
ScanLines: the rows of image
BytesPerLine: the bytes of per line
-Return value:
+Return value:
none
***********************************************************************/
static void
diff --git a/backend/mustek_usb2.h b/backend/mustek_usb2.h
index b80c51a..9dc3a2b 100644
--- a/backend/mustek_usb2.h
+++ b/backend/mustek_usb2.h
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#ifndef MUSTEK_USB2_H
diff --git a/backend/mustek_usb2_asic.c b/backend/mustek_usb2_asic.c
index d9b1a28..b31c749 100644
--- a/backend/mustek_usb2_asic.c
+++ b/backend/mustek_usb2_asic.c
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#include "mustek_usb2_asic.h"
@@ -255,6 +255,7 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
STATUS status = STATUS_GOOD;
unsigned int i, buf[1];
unsigned int read_size;
+ size_t read_size_usb;
DBG (DBG_ASIC, "Mustek_DMARead: Enter\n");
@@ -268,9 +269,11 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
SetRWSize (chip, 1, buf[0]);
status = WriteIOControl (chip, 0x03, 0, 4, (SANE_Byte *) (buf));
+ read_size_usb = buf[0];
status =
sanei_usb_read_bulk (chip->fd, lpdata + i * read_size,
- (size_t *) buf);
+ &read_size_usb);
+ buf[0] = read_size_usb;
if (status != STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMARead: read error\n");
@@ -284,9 +287,11 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
SetRWSize (chip, 1, buf[0]);
status = WriteIOControl (chip, 0x03, 0, 4, (SANE_Byte *) (buf));
+ read_size_usb = buf[0];
status =
sanei_usb_read_bulk (chip->fd, lpdata + i * read_size,
- (size_t *) buf);
+ &read_size_usb);
+ buf[0] = read_size_usb;
if (status != STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMARead: read error\n");
@@ -307,6 +312,7 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
unsigned int buf[1];
unsigned int i;
unsigned int write_size;
+ size_t write_size_usb;
DBG (DBG_ASIC, "Mustek_DMAWrite: Enter:size=%d\n", size);
@@ -320,9 +326,11 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
SetRWSize (chip, 0, buf[0]);
WriteIOControl (chip, 0x02, 0, 4, (SANE_Byte *) buf);
+ write_size_usb = buf[0];
status =
sanei_usb_write_bulk (chip->fd, lpdata + i * write_size,
- (size_t *) buf);
+ &write_size_usb);
+ buf[0] = write_size_usb;
if (status != STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMAWrite: write error\n");
@@ -337,9 +345,11 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
SetRWSize (chip, 0, buf[0]);
WriteIOControl (chip, 0x02, 0, 4, (SANE_Byte *) buf);
+ write_size_usb = buf[0];
status =
sanei_usb_write_bulk (chip->fd, lpdata + i * write_size,
- (size_t *) buf);
+ &write_size_usb);
+ buf[0] = write_size_usb;
if (status != STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMAWrite: write error\n");
@@ -1649,7 +1659,7 @@ LLFMotorMove (PAsic chip, LLF_MOTORMOVE * LLF_MotorMove)
Mustek_SendData (chip, ES01_E5_MotorDecStep, LLF_MotorMove->DecStep);
DBG (DBG_ASIC, "DecStep=%d\n", LLF_MotorMove->DecStep);
- /*set motor uniform speed only for uniform speed
+ /*set motor uniform speed only for uniform speed
//only used for UNIFORM_MOTOR_AND_SCAN_SPEED_ENABLE
//If you use acc mode, this two reg are not used. */
Mustek_SendData (chip, ES01_FD_MotorFixedspeedLSB,
@@ -4541,7 +4551,7 @@ Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
pCalBuffer = (SANE_Byte *) malloc (dwXferBytes);
if (pCalBuffer == NULL)
{
- DBG (DBG_ERR,
+ DBG (DBG_ERR,
"Asic_ReadCalibrationData: Can't malloc bCalBuffer memory\n");
return STATUS_MEM_ERROR;
}
diff --git a/backend/mustek_usb2_asic.h b/backend/mustek_usb2_asic.h
index ffc92ff..1a55903 100644
--- a/backend/mustek_usb2_asic.h
+++ b/backend/mustek_usb2_asic.h
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#ifndef MUSTEK_USB2_ASIC_H
@@ -299,8 +299,8 @@ RGBColor;
/* debug levels */
#define DBG_CRIT 0 /* Critical errors thatshould be printed even
- if user hasn't enabled debugging -- use
- with care and only after sane_open has been
+ if user hasn't enabled debugging -- use
+ with care and only after sane_open has been
called */
#define DBG_ERR 1 /* Other errors */
#define DBG_WARN 2 /* unusual conditions that may not be fatal */
diff --git a/backend/mustek_usb2_high.c b/backend/mustek_usb2_high.c
index 664528e..b1ba65e 100644
--- a/backend/mustek_usb2_high.c
+++ b/backend/mustek_usb2_high.c
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#include <pthread.h> /* HOLD */
@@ -191,10 +191,10 @@ static void ModifyLinePoint (SANE_Byte * lpImageData,
/**********************************************************************
Author: Jack Date: 2005/05/13
- Routine Description:
+ Routine Description:
Parameters:
none
-Return value:
+Return value:
if initialize the scanner success
return TRUE
else
@@ -251,14 +251,14 @@ MustScanner_Init ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
check the scanner connect status
Parameters:
none
-Return value:
+Return value:
if scanner's status is OK
return TRUE
- else
+ else
return FASLE
***********************************************************************/
static SANE_Bool
@@ -279,12 +279,12 @@ MustScanner_GetScannerState ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Turn the lamp on or off
Parameters:
isLampOn: turn the lamp on or off
isTALampOn: turn the TA lamp on or off
-Return value:
+Return value:
if operation success
return TRUE
else
@@ -334,11 +334,11 @@ MustScanner_PowerControl (SANE_Bool isLampOn, SANE_Bool isTALampOn)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
Turn the carriage home
Parameters:
none
-Return value:
+Return value:
if the operation success
return TRUE
else
@@ -377,11 +377,11 @@ MustScanner_BackHome ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
prepare the scan image
Parameters:
bScanSource: the scan source
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -466,7 +466,7 @@ MustScanner_Prepare (SANE_Byte bScanSource)
#ifdef SANE_UNUSED
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Adjuest the offset
Parameters:
nTimes: Adjuest offset the times
@@ -479,7 +479,7 @@ Parameters:
bOffsetLowerBound: the lower bound of offset
wStdMinLevel: the min level of offset
wStdMaxLevel: the max level of offset
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -624,7 +624,7 @@ MustScanner_AdjustOffset (int nTimes, SANE_Bool * bDirection, SANE_Byte * bOffse
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Adjuest the offset second times
Parameters:
nTimes: Adjuest offset the times
@@ -637,7 +637,7 @@ Parameters:
bOffsetLowerBound: the lower bound of offset
wStdMinLevel: the min level of offset
wStdMaxLevel: the max level of offset
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -745,15 +745,15 @@ MustScanner_SecondAdjustOffset (int nTimes, SANE_Bool * bDirection, SANE_Byte *
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Filter the data
Parameters:
pSort: the sort data
- TotalCount: the total count
+ TotalCount: the total count
LowCount: the low count
HighCount: the upper count
-Return value:
- the data of Filter
+Return value:
+ the data of Filter
***********************************************************************/
static unsigned short
MustScanner_FiltLower (unsigned short * pSort, unsigned short TotalCount, unsigned short LowCount,
@@ -786,13 +786,13 @@ MustScanner_FiltLower (unsigned short * pSort, unsigned short TotalCount, unsign
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when single CCD and color is 48bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -982,13 +982,13 @@ MustScanner_GetRgb48BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when double CCD and color is 48bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -1427,13 +1427,13 @@ MustScanner_GetRgb48BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when single CCD and color is 24bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -1680,13 +1680,13 @@ MustScanner_GetRgb24BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when double CCD and color is 24bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2111,13 +2111,13 @@ MustScanner_GetRgb24BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when single CCD and color is 16bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2206,13 +2206,13 @@ MustScanner_GetMono16BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when double CCD and color is 16bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2387,13 +2387,13 @@ MustScanner_GetMono16BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when single CCD and color is 8bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2478,13 +2478,13 @@ MustScanner_GetMono8BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when double CCD and color is 8bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2641,13 +2641,13 @@ MustScanner_GetMono8BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when single CCD and color is 1bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2732,13 +2732,13 @@ MustScanner_GetMono1BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Repair line when double CCD and color is 1bit
Parameters:
lpLine: point to image be repaired
isOrderInvert: RGB or BGR
wLinesCount: how many line be repaired
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -2849,12 +2849,12 @@ MustScanner_GetMono1BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
/**********************************************************************
Author: Jack Date: 2005/05/21
-Routine Description:
- prepare calculate Max and Min value
+Routine Description:
+ prepare calculate Max and Min value
Parameters:
wResolution: the scan resolution
Return value:
- none
+ none
***********************************************************************/
static void
MustScanner_PrepareCalculateMaxMin (unsigned short wResolution)
@@ -2904,7 +2904,7 @@ MustScanner_PrepareCalculateMaxMin (unsigned short wResolution)
/**********************************************************************
Author: Jack Date: 2005/05/21
-Routine Description:
+Routine Description:
calculate the Max and Min value
Parameters:
pBuffer: the image data
@@ -2912,7 +2912,7 @@ Parameters:
lpMinValue: the min value
wResolution: the scan resolution
Return value:
- none
+ none
***********************************************************************/
static void
MustScanner_CalculateMaxMin (SANE_Byte * pBuffer, unsigned short * lpMaxValue,
@@ -2981,11 +2981,11 @@ MustScanner_CalculateMaxMin (SANE_Byte * pBuffer, unsigned short * lpMaxValue,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Read the data from scanner
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -3075,11 +3075,11 @@ MustScanner_ReadDataFromScanner (void * dummy)
/**********************************************************************
Author: Jack Date: 2005/05/26
-Routine Description:
+Routine Description:
get the lines of scanned
Parameters:
none
-Return value:
+Return value:
the lines of scanned
***********************************************************************/
static unsigned int
@@ -3097,7 +3097,7 @@ GetScannedLines ()
/**********************************************************************
Author: Jack Date: 2005/05/26
-Routine Description:
+Routine Description:
get lines which pass to superstratum
Parameters:
none
@@ -3118,11 +3118,11 @@ GetReadyLines ()
/**********************************************************************
Author: Jack Date: 2005/05/26
-Routine Description:
+Routine Description:
add the scanned total lines
Parameters:
wAddLines: add the lines
-Return value:
+Return value:
none
***********************************************************************/
static void
@@ -3137,11 +3137,11 @@ AddScannedLines (unsigned short wAddLines)
/**********************************************************************
Author: Jack Date: 2005/05/26
-Routine Description:
+Routine Description:
add the ready lines
Parameters:
none
-Return value:
+Return value:
none
***********************************************************************/
static void
@@ -3202,8 +3202,8 @@ ModifyLinePoint (SANE_Byte * lpImageData,
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
- Modifiy the image data
+Routine Description:
+ Modifiy the image data
Parameters:
A: the input the image data
B: the input the iamge data
diff --git a/backend/mustek_usb2_high.h b/backend/mustek_usb2_high.h
index 33f463f..aec79bb 100644
--- a/backend/mustek_usb2_high.h
+++ b/backend/mustek_usb2_high.h
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
#ifndef MUSTEK_USB2_HIGH_H
diff --git a/backend/mustek_usb2_reflective.c b/backend/mustek_usb2_reflective.c
index 7bf954c..aa95e5b 100644
--- a/backend/mustek_usb2_reflective.c
+++ b/backend/mustek_usb2_reflective.c
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
/* forward declarations */
@@ -63,11 +63,11 @@ static SANE_Bool Reflective_PrepareScan (void);
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
reset the scanner status
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
els
@@ -140,12 +140,12 @@ Reflective_Reset ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
get the suggest parameter of scaning
Parameters:
pTarget: the information of scaning
pSuggest: suggest parameter of scaning
-Return value:
+Return value:
if the operation is success
return TRUE
els
@@ -341,7 +341,7 @@ Reflective_ScanSuggest (PTARGETIMAGE pTarget, PSUGGESTSETTING pSuggest)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
setup scanning process
Parameters:
ColorMode: ScanMode of Scanning, CM_RGB48, CM_GRAY and so on
@@ -352,7 +352,7 @@ Parameters:
Y: Y start coordinate
Width: Width of Scan Image
Height: Height of Scan Image
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -567,11 +567,11 @@ Reflective_SetupScan (COLORMODE ColorMode,
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
To adjust the value of offset gain of R/G/B
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1102,7 +1102,7 @@ Reflective_AdjustAD ()
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Find top and left side
Parameters:
lpwStartX: the left side
@@ -1284,11 +1284,11 @@ Reflective_FindTopLeft (unsigned short * lpwStartX, unsigned short * lpwStartY)
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Stop scan
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1329,11 +1329,11 @@ Reflective_StopScan ()
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Get the calibration data
Parameters:
none
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -1749,11 +1749,11 @@ Reflective_LineCalibration16Bits ()
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Prepare scan image
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1870,7 +1870,7 @@ Reflective_PrepareScan ()
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Get the data of image
Parameters:
lpBlock: the data of image
diff --git a/backend/mustek_usb2_transparent.c b/backend/mustek_usb2_transparent.c
index 43bda0b..33adcc0 100644
--- a/backend/mustek_usb2_transparent.c
+++ b/backend/mustek_usb2_transparent.c
@@ -42,7 +42,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
+ This file implements a SANE backend for the Mustek BearPaw 2448 TA Pro
and similar USB2 scanners. */
@@ -64,11 +64,11 @@ static SANE_Bool Transparent_PrepareScan (void);
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
reset the scanner
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -132,7 +132,7 @@ Transparent_Reset ()
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
get suggest parameter of scaning
Parameters:
pTarget: the information of scaning
@@ -283,7 +283,7 @@ Transparent_ScanSuggest (PTARGETIMAGE pTarget, PSUGGESTSETTING pSuggest)
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
setup scanning process
Parameters:
ColorMode: ScanMode of Scanning, CM_RGB48, CM_GRAY and so on
@@ -294,7 +294,7 @@ Parameters:
Y: Y start coordinate
Width: Width of Scan Image
Height: Height of Scan Image
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -493,11 +493,11 @@ Transparent_SetupScan (COLORMODE ColorMode, unsigned short XDpi, unsigned short
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Stop scan
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -534,7 +534,7 @@ Transparent_StopScan ()
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Get the data of image
Parameters:
lpBlock: the data of image
@@ -604,11 +604,11 @@ Transparent_GetRows (SANE_Byte * lpBlock, unsigned short * Rows, SANE_Bool isOrd
/**********************************************************************
Author: Jack Date: 2005/05/13
-Routine Description:
+Routine Description:
To adjust the value of offset gain of R/G/B
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
@@ -1114,7 +1114,7 @@ Transparent_AdjustAD ()
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Find top and left side
Parameters:
lpwStartX: the left side
@@ -1266,11 +1266,11 @@ Transparent_FindTopLeft (unsigned short * lpwStartX, unsigned short * lpwStartY)
/**********************************************************************
Author: Jack Date: 2005/05/15
-Routine Description:
+Routine Description:
Get the calibration data
Parameters:
none
-Return value:
+Return value:
if the operation is success
return TRUE
else
@@ -1650,11 +1650,11 @@ Transparent_LineCalibration16Bits (unsigned short wTAShadingMinus)
/**********************************************************************
Author: Jack Date: 2005/05/14
-Routine Description:
+Routine Description:
Prepare scan image
Parameters:
none
-Return value:
+Return value:
if operation is success
return TRUE
else
diff --git a/backend/mustek_usb_high.c b/backend/mustek_usb_high.c
index f6a0125..bf7807e 100644
--- a/backend/mustek_usb_high.c
+++ b/backend/mustek_usb_high.c
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#include "mustek_usb_high.h"
diff --git a/backend/mustek_usb_high.h b/backend/mustek_usb_high.h
index d3f1ae4..916ecb7 100644
--- a/backend/mustek_usb_high.h
+++ b/backend/mustek_usb_high.h
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#ifndef mustek_usb_high_h
@@ -333,7 +333,7 @@ typedef struct Mustek_Usb_Scanner
double tl_y;
double width;
double height;
- /* scan window in dots (at current resolution):
+ /* scan window in dots (at current resolution):
top left x+y and width+height */
SANE_Int tl_x_dots;
SANE_Int tl_y_dots;
diff --git a/backend/mustek_usb_low.c b/backend/mustek_usb_low.c
index e626b65..3e4c760 100644
--- a/backend/mustek_usb_low.c
+++ b/backend/mustek_usb_low.c
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#include <unistd.h>
@@ -170,7 +170,7 @@ usb_low_exit (ma1017 * chip)
DBG (7, "usb_low_exit: freeing chip\n");
free (chip);
}
- DBG (5, "usb_low_exit: read %d URBs, wrote %d URBs\n",
+ DBG (5, "usb_low_exit: read %d URBs, wrote %d URBs\n",
chip->total_read_urbs, chip->total_write_urbs);
DBG (7, "usb_low_exit: exit\n");
return SANE_STATUS_GOOD;
diff --git a/backend/mustek_usb_low.h b/backend/mustek_usb_low.h
index e5605db..46637e8 100644
--- a/backend/mustek_usb_low.h
+++ b/backend/mustek_usb_low.h
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#ifndef mustek_usb_low_h
diff --git a/backend/mustek_usb_mid.c b/backend/mustek_usb_mid.c
index 9ca51d9..5935cb7 100644
--- a/backend/mustek_usb_mid.c
+++ b/backend/mustek_usb_mid.c
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#include "mustek_usb_mid.h"
diff --git a/backend/mustek_usb_mid.h b/backend/mustek_usb_mid.h
index d8701a7..23e9c32 100644
--- a/backend/mustek_usb_mid.h
+++ b/backend/mustek_usb_mid.h
@@ -43,7 +43,7 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- This file implements a SANE backend for Mustek 1200UB and similar
+ This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */
#ifndef mustek_usb_mid_h
diff --git a/backend/nec.c b/backend/nec.c
index d5179d3..f12e997 100644
--- a/backend/nec.c
+++ b/backend/nec.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2000-2001 Kazuya Fukuda, based on sharp.c, which is
+ Copyright (C) 2000-2001 Kazuya Fukuda, based on sharp.c, which is
based on canon.c.
This file is part of the SANE package.
@@ -52,7 +52,7 @@
- resolution setting bug fixed(PC-IN500/4C 10dpi step)
- remove resolution list
Version 0.11
- - get_data_buffer_status is not called in sane_get_parameter and
+ - get_data_buffer_status is not called in sane_get_parameter and
sane_read_direct, sane_read_shuffled.
- change some #include <> to ""
Version 0.10
@@ -114,12 +114,12 @@
#ifndef USE_COLOR_THRESHOLD
#define USE_COLOR_THRESHOLD
#endif
-/* enable a short list of some standard resolutions. XSane provides
+/* enable a short list of some standard resolutions. XSane provides
its own resolution list; therefore its is generally not reasonable
to enable this list, if you mainly using XSane. But it might be handy
if you are working with xscanimage
*/
-/* #define USE_RESOLUTION_LIST */
+/* #define USE_RESOLUTION_LIST */
#define BACKEND_NAME nec
#include "../include/sane/sanei_backend.h"
@@ -202,8 +202,8 @@ static SANE_String use_simple = "Flatbed";
#define HAVE_FSU 1
#define HAVE_ADF 2
-/* The follow #defines are used in NEC_Scanner.adf_fsu_mode
- and as indexes for the arrays x_ranges, y_ranges in NEC_Device
+/* The follow #defines are used in NEC_Scanner.adf_fsu_mode
+ and as indexes for the arrays x_ranges, y_ranges in NEC_Device
*/
#define SCAN_SIMPLE 0
#define SCAN_WITH_FSU 1
@@ -291,19 +291,19 @@ 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 */
#define add_sense_code sense_buffer[12]
#define add_sense_qual sense_buffer[13]
memcpy(sdat->sb, sense_buffer, 16);
-
+
DBG(10, "sense code: %02x %02x %02x %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
- sense_buffer[0], sense_buffer[1], sense_buffer[2], sense_buffer[3],
- sense_buffer[4], sense_buffer[5], sense_buffer[6], sense_buffer[7],
- sense_buffer[8], sense_buffer[9], sense_buffer[10], sense_buffer[11],
+ sense_buffer[0], sense_buffer[1], sense_buffer[2], sense_buffer[3],
+ sense_buffer[4], sense_buffer[5], sense_buffer[6], sense_buffer[7],
+ sense_buffer[8], sense_buffer[9], sense_buffer[10], sense_buffer[11],
sense_buffer[12], sense_buffer[13], sense_buffer[14], sense_buffer[15]);
sense_key = sense_buffer[1] & 0x0F;
@@ -418,7 +418,7 @@ inquiry (int fd, void *inq_buf, size_t *inq_size)
static SANE_Status
mode_select_mud (int fd, int mud)
{
- static u_char cmd[6 + MODEPARAM_LEN] =
+ static u_char cmd[6 + MODEPARAM_LEN] =
{MODE_SELECT6, 0x10, 0, 0, MODEPARAM_LEN, 0};
mode_select_param *mp;
SANE_Status status;
@@ -442,7 +442,7 @@ mode_select_mud (int fd, int mud)
static SANE_Status
mode_select_adf_fsu (int fd, int mode)
{
- static u_char cmd[6 + MODE_SUBDEV_LEN] =
+ static u_char cmd[6 + MODE_SUBDEV_LEN] =
{MODE_SELECT6, 0x10, 0, 0, MODE_SUBDEV_LEN, 0};
mode_select_subdevice *mp;
SANE_Status status;
@@ -478,7 +478,7 @@ mode_select_adf_fsu (int fd, int mode)
static SANE_Status wait_ready(int fd);
static SANE_Status
-mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
+mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
int page)
{
static u_char cmd[6] = {MODE_SENSE6, 0, 0, 0, 0, 0};
@@ -487,7 +487,7 @@ mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
cmd[0] = 0x1a;
cmd[2] = page;
cmd[4] = *modeparam_size;
- status = sanei_scsi_cmd (fd, cmd, sizeof (cmd), modeparam_buf,
+ status = sanei_scsi_cmd (fd, cmd, sizeof (cmd), modeparam_buf,
modeparam_size);
DBG (11, ">>\n");
@@ -525,7 +525,7 @@ send_diagnostics (int fd)
static SANE_Status
set_window (int fd, window_param *wp, int len)
{
- static u_char cmd[10 + WINDOW_LEN] =
+ static u_char cmd[10 + WINDOW_LEN] =
{SET_WINDOW, 0, 0, 0, 0, 0, 0, 0, 0, 0};
window_param *winp;
SANE_Status status;
@@ -560,7 +560,7 @@ get_window (int fd, void *buf, size_t * buf_size)
static SANE_Status
get_data_buffer_status (int fd, void *buf, size_t *buf_size)
{
- static u_char cmd[10] =
+ static u_char cmd[10] =
{GET_DATA_BUFFER_STATUS, 0, 0, 0, 0, 0, 0, 0, 0, 0};
SANE_Status status;
DBG (11, "<< get_data_buffer_status ");
@@ -576,17 +576,17 @@ get_data_buffer_status (int fd, void *buf, size_t *buf_size)
#ifdef USE_FORK
/* the following four functions serve simply the purpose
- to avoid "over-optimised" code when reader_process and
- read_data wait for the buffer to become ready. The simple
- while-loops in these functions which check the buffer
- status may be optimised so that the machine code only
- operates with registers instead of using the variable
- values stored in memory. (This is only a workaround -
+ to avoid "over-optimised" code when reader_process and
+ read_data wait for the buffer to become ready. The simple
+ while-loops in these functions which check the buffer
+ status may be optimised so that the machine code only
+ operates with registers instead of using the variable
+ values stored in memory. (This is only a workaround -
it would be better to set a compiler pragma, which ensures
that the program looks into the RAM in these while loops --
but unfortunately I could not find appropriate information
- about this at least for gcc, not to speak about other
- compilers...
+ about this at least for gcc, not to speak about other
+ compilers...
Abel)
*/
@@ -596,7 +596,7 @@ cancel_requested(NEC_Scanner *s)
return s->rdr_ctl->cancel;
}
-static SANE_Status
+static SANE_Status
rdr_status(NEC_Scanner *s)
{
return s->rdr_ctl->status;
@@ -633,18 +633,18 @@ reader_process(NEC_Scanner *s)
DBG(11, "<< reader_process\n");
sigemptyset (&sigterm_set);
-
+
bytes_to_queue = s->bytes_to_read;
-
+
max_bytes_per_read = s->dev->info.bufsize / s->params.bytes_per_line;
if (max_bytes_per_read)
max_bytes_per_read *= s->params.bytes_per_line;
else
/* this is a really tiny buffer..*/
max_bytes_per_read = s->dev->info.bufsize;
-
+
/* wait_ready(s->fd); */
-
+
if (s->dev->info.queued_reads <= s->dev->info.buffers)
max_queue = s->dev->info.queued_reads;
else
@@ -664,16 +664,16 @@ reader_process(NEC_Scanner *s)
#ifdef QUEUEDEBUG
DBG(2, "reader: req_enter...\n");
#endif
- status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
- bc->buffer,
- &bc->used,
+ status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
+ bc->buffer,
+ &bc->used,
&bc->qid);
#ifdef QUEUEDEBUG
DBG(2, "reader: req_enter ok\n");
#endif
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s",
+ DBG(1, "reader_process: read command failed: %s",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -697,9 +697,9 @@ reader_process(NEC_Scanner *s)
waitindex = 0;
cmdindex = i % s->dev->info.buffers;
- while(s->bytes_to_read > 0)
+ while(s->bytes_to_read > 0)
{
- if (cancel_requested(s))
+ if (cancel_requested(s))
{
#ifdef QUEUEDEBUG
DBG(2, "reader: flushing requests...\n");
@@ -720,7 +720,7 @@ reader_process(NEC_Scanner *s)
}
bc = &s->rdr_ctl->buf_ctl[waitindex];
- if (bc->shm_status == SHM_BUSY)
+ if (bc->shm_status == SHM_BUSY)
{
#ifdef DEBUG
{
@@ -745,7 +745,7 @@ reader_process(NEC_Scanner *s)
#endif
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s",
+ DBG(1, "reader_process: read command failed: %s",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -766,7 +766,7 @@ reader_process(NEC_Scanner *s)
waitindex = 0;
}
-
+
if (bytes_to_queue)
{
/* wait until the next buffer is completely read via read_data */
@@ -801,11 +801,11 @@ reader_process(NEC_Scanner *s)
cmd[6] = nread >> 16;
cmd[7] = nread >> 8;
cmd[8] = nread;
- status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
+ status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
bc->buffer, &bc->used, &bc->qid);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s",
+ DBG(1, "reader_process: read command failed: %s",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -819,13 +819,13 @@ reader_process(NEC_Scanner *s)
bc->shm_status = SHM_BUSY;
bc->nreq = nread;
bytes_to_queue -= nread;
-
+
cmdindex++;
if (cmdindex == s->dev->info.buffers)
cmdindex = 0;
}
-
- if (cancel_requested(s))
+
+ if (cancel_requested(s))
{
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -839,7 +839,7 @@ reader_process(NEC_Scanner *s)
return 1;
}
}
-
+
DBG(1, "buffer full conditions: %i\n", full_count);
DBG(11, " reader_process>>\n");
@@ -852,7 +852,7 @@ read_data (NEC_Scanner *s, SANE_Byte *buf, size_t * buf_size)
{
size_t copysize, copied = 0;
NEC_shmem_ctl *bc;
-
+
DBG(11, "<< read_data ");
bc = &s->rdr_ctl->buf_ctl[s->read_buff];
@@ -861,7 +861,7 @@ read_data (NEC_Scanner *s, SANE_Byte *buf, size_t * buf_size)
{
/* wait until the reader process delivers data or a scanner error occurs: */
while ( buf_status(bc) != SHM_FULL
- && rdr_status(s) == SANE_STATUS_GOOD)
+ && rdr_status(s) == SANE_STATUS_GOOD)
{
usleep(10); /* could perhaps be longer. make this user configurable?? */
}
@@ -873,10 +873,10 @@ read_data (NEC_Scanner *s, SANE_Byte *buf, size_t * buf_size)
}
copysize = bc->used - bc->start;
-
+
if (copysize > *buf_size - copied )
copysize = *buf_size - copied;
-
+
memcpy(buf, &(bc->buffer[bc->start]), copysize);
copied += copysize;
@@ -911,8 +911,8 @@ read_data (NEC_Scanner *s, SANE_Byte *buf, size_t * buf_size)
/* sane_read_shuffled requires that read_data returns
exactly *buf_size bytes, so it must be guaranteed here.
- Further make sure that not more bytes are read in than
- sanei_scsi_max_request_size allows, to avoid a failure
+ Further make sure that not more bytes are read in than
+ sanei_scsi_max_request_size allows, to avoid a failure
of the read command
*/
while (remain > 0)
@@ -923,7 +923,7 @@ read_data (NEC_Scanner *s, SANE_Byte *buf, size_t * buf_size)
cmd[6] = nread >> 16;
cmd[7] = nread >> 8;
cmd[8] = nread;
- status = sanei_scsi_cmd (s->fd, cmd, sizeof (cmd),
+ status = sanei_scsi_cmd (s->fd, cmd, sizeof (cmd),
&buf[*buf_size - remain], &nread);
if (status != SANE_STATUS_GOOD)
{
@@ -971,7 +971,7 @@ wait_ready(int fd)
sleep(3);
}
return (status);
-
+
}
static SANE_Status
@@ -1111,7 +1111,7 @@ attach (const char *devnam, NEC_Device ** devp)
model_name = inquiry_data + 16;
dev->sane.model = strndup ((const char *)model_name, 10);
dev->sane.type = "flatbed scanner";
-
+
dev->sensedat.model = sensedat.model;
DBG (5, "dev->sane.name = %s\n", dev->sane.name);
@@ -1144,7 +1144,7 @@ attach (const char *devnam, NEC_Device ** devp)
dev->info.bmu = msp.bmu;
dev->info.mud = (msp.mud[0] << 8) + msp.mud[1];
-
+
dev->info.adf_fsu_installed = 0;
if (dev->sensedat.model == PCIN500)
{
@@ -1173,7 +1173,7 @@ attach (const char *devnam, NEC_Device ** devp)
dev->info.br_y_ranges[SCAN_SIMPLE].max = SANE_FIX(297); /* 431.8 is the real max */
}
sanei_scsi_close (fd);
-
+
dev->info.threshold_range.min = 1;
dev->info.threshold_range.max = 255;
dev->info.threshold_range.quant = 0;
@@ -1253,12 +1253,12 @@ attach (const char *devnam, NEC_Device ** devp)
}
/* Enabling / disabling of gamma options.
- Depends on many user settable options, so lets put it into
+ Depends on many user settable options, so lets put it into
one function to be called by init_options and by sane_control_option
*/
#ifdef USE_CUSTOM_GAMMA
-static void
+static void
set_gamma_caps(NEC_Scanner *s)
{
/* neither fixed nor custom gamma for line art modes */
@@ -1397,11 +1397,11 @@ clip_value (const SANE_Option_Descriptor * opt, void * value)
/* make sure that enough memory is allocated for each string,
so that the strcpy in sane_control_option / set value cannot
- write behind the end of the allocated memory.
+ write behind the end of the allocated memory.
*/
static SANE_Status
-init_string_option(NEC_Scanner *s, SANE_String_Const name,
- SANE_String_Const title, SANE_String_Const desc,
+init_string_option(NEC_Scanner *s, SANE_String_Const name,
+ SANE_String_Const title, SANE_String_Const desc,
const SANE_String_Const *string_list, int option, int default_index)
{
int i;
@@ -1486,7 +1486,7 @@ init_options (NEC_Scanner * s)
if (default_source < 0)
default_source = SCAN_SIMPLE;
s->dev->info.scansources[i] = 0;
-
+
init_string_option(s, SANE_NAME_SCAN_SOURCE, SANE_TITLE_SCAN_SOURCE,
SANE_DESC_SCAN_SOURCE, (SANE_String_Const*)s->dev->info.scansources,
OPT_SCANSOURCE, 0);
@@ -1514,13 +1514,13 @@ init_options (NEC_Scanner * s)
#ifdef USE_RESOLUTION_LIST
/* select resolution */
if (s->dev->sensedat.model == PCIN500)
- init_string_option(s, "Resolution", "Resolution", "Resolution",
+ init_string_option(s, "Resolution", "Resolution", "Resolution",
resolution_list_pcin500, OPT_RESOLUTION_LIST, RESOLUTION_MAX_PCIN500);
else
- init_string_option(s, "Resolution", "Resolution", "Resolution",
+ init_string_option(s, "Resolution", "Resolution", "Resolution",
resolution_list_pcinxxx, OPT_RESOLUTION_LIST, RESOLUTION_MAX_PCINXXX);
#endif
-
+
/* x & y resolution */
s->opt[OPT_RESOLUTION].name = SANE_NAME_SCAN_RESOLUTION;
if (s->dev->sensedat.model == PCIN500)
@@ -1665,7 +1665,7 @@ init_options (NEC_Scanner * s)
#ifdef USE_COLOR_THRESHOLD
s->opt[OPT_THRESHOLD_R].name = SANE_NAME_THRESHOLD "-red";
/* xxx the titles and decriptions are confusing:
- "set white point (red)"
+ "set white point (red)"
Any idea? maybe "threshold to get the red component on"
*/
s->opt[OPT_THRESHOLD_R].title = SANE_TITLE_THRESHOLD " (red)";
@@ -1710,7 +1710,7 @@ init_options (NEC_Scanner * s)
s->opt[OPT_PREVIEW].type = SANE_TYPE_BOOL;
s->opt[OPT_PREVIEW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
s->val[OPT_PREVIEW].w = SANE_FALSE;
-
+
#ifdef USE_CUSTOM_GAMMA
/* custom-gamma table */
@@ -1796,7 +1796,7 @@ do_cancel (NEC_Scanner * s)
DBG(11, "stopping reader process\n");
s->rdr_ctl->cancel = 1;
- while(reader_running(s) && count < 100)
+ while(reader_running(s) && count < 100)
{
usleep(100000);
count++;
@@ -1838,13 +1838,13 @@ do_cancel (NEC_Scanner * s)
static NEC_New_Device *new_devs = 0;
static NEC_New_Device *new_dev_pool = 0;
-static SANE_Status
+static SANE_Status
attach_and_list(const char *devnam)
{
SANE_Status res;
NEC_Device *devp;
NEC_New_Device *np;
-
+
res = attach(devnam, &devp);
if (res == SANE_STATUS_GOOD)
{
@@ -1975,7 +1975,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
linecount);
DBG(1, "%s\n", line);
}
- else
+ else
queued_reads[opt_index] = i;
}
else
@@ -1989,7 +1989,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
while (new_devs)
{
- if (buffers[1] >= 2)
+ if (buffers[1] >= 2)
new_devs->dev->info.buffers = buffers[1];
else
new_devs->dev->info.buffers = 2;
@@ -2021,7 +2021,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
while (new_devs)
{
- if (buffers[1] >= 2)
+ if (buffers[1] >= 2)
new_devs->dev->info.buffers = buffers[1];
else
new_devs->dev->info.buffers = 2;
@@ -2139,8 +2139,8 @@ sane_open (SANE_String_Const devnam, SANE_Handle * handle)
s->fd = -1;
s->dev = dev;
-
- s->buffer = 0;
+
+ s->buffer = 0;
#ifdef USE_CUSTOM_GAMMA
for (i = 0; i < 4; ++i)
for (j = 0; j < 256; ++j)
@@ -2308,7 +2308,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*info |= SANE_INFO_RELOAD_PARAMS;
case OPT_NUM_OPTS:
case OPT_THRESHOLD:
- /* xxx theoretically, we could use OPT_THRESHOLD in
+ /* xxx theoretically, we could use OPT_THRESHOLD in
bi-level color mode to adjust all three other
threshold together. But this would require to set
the bit SANE_INFO_RELOAD_OPTIONS in *info, and that
@@ -2385,8 +2385,8 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
#endif
s->opt[OPT_HALFTONE].cap |= SANE_CAP_INACTIVE;
}
-#if 0
- if ( strcmp (val, M_LINEART) == 0
+#if 0
+ if ( strcmp (val, M_LINEART) == 0
|| strcmp (val, M_GRAY) == 0)
{
s->opt[OPT_LIGHTCOLOR].cap &= ~SANE_CAP_INACTIVE;
@@ -2395,7 +2395,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{
s->opt[OPT_LIGHTCOLOR].cap |= SANE_CAP_INACTIVE;
}
-#endif
+#endif
strcpy(s->val[option].s, val);
#ifdef USE_CUSTOM_GAMMA
set_gamma_caps(s);
@@ -2432,19 +2432,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
else
range_index = SCAN_SIMPLE;
- s->opt[OPT_TL_X].constraint.range
+ s->opt[OPT_TL_X].constraint.range
= &s->dev->info.tl_x_ranges[range_index];
clip_value (&s->opt[OPT_TL_X], &s->val[OPT_TL_X].w);
- s->opt[OPT_TL_Y].constraint.range
+ s->opt[OPT_TL_Y].constraint.range
= &s->dev->info.tl_y_ranges[range_index];
clip_value (&s->opt[OPT_TL_Y], &s->val[OPT_TL_Y].w);
- s->opt[OPT_BR_X].constraint.range
+ s->opt[OPT_BR_X].constraint.range
= &s->dev->info.br_x_ranges[range_index];
clip_value (&s->opt[OPT_BR_X], &s->val[OPT_BR_X].w);
- s->opt[OPT_BR_Y].constraint.range
+ s->opt[OPT_BR_Y].constraint.range
= &s->dev->info.br_y_ranges[range_index];
clip_value (&s->opt[OPT_BR_Y], &s->val[OPT_BR_Y].w);
@@ -2505,9 +2505,9 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->val[option].s = strdup (val);
#endif
for (i = 0; s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]; i++) {
- if (strcmp (val,
+ if (strcmp (val,
s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]) == 0){
- s->val[OPT_RESOLUTION].w
+ s->val[OPT_RESOLUTION].w
= atoi(s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
@@ -2560,7 +2560,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
scanning starts. */
memset (&s->params, 0, sizeof (s->params));
- width = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_X].w)
+ width = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_X].w)
- SANE_UNFIX(s->val[OPT_TL_X].w),
s->dev->info.mud);
length = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_Y].w)
@@ -2657,7 +2657,7 @@ sprint_gamma(Option_Value val, SANE_Byte *dst)
{
int i;
SANE_Byte *p = dst;
-
+
p += sprintf((char *) p, "%i", val.wa[0]);
for (i = 1; i < 256; i++)
p += sprintf((char *) p, ",%i", val.wa[i] > 255 ? 255 : val.wa[i]);
@@ -2669,17 +2669,17 @@ send_ascii_gamma_tables (NEC_Scanner *s)
{
SANE_Status status;
int i;
-
+
DBG(11, "<< send_ascii_gamma_tables ");
-
+
/* we need: 4 bytes for each gamma value (3 digits + delimiter)
+ 10 bytes for the command header
i.e. 4 * 4 * 256 + 10 = 4106 bytes
*/
-
+
if (s->dev->info.bufsize < 4106)
return SANE_STATUS_NO_MEM;
-
+
memset(s->buffer, 0, 4106);
i = sprint_gamma(s->val[OPT_GAMMA_VECTOR_R], &s->buffer[10]);
@@ -2689,19 +2689,19 @@ send_ascii_gamma_tables (NEC_Scanner *s)
i += sprint_gamma(s->val[OPT_GAMMA_VECTOR_B], &s->buffer[10+i]);
s->buffer[10+i++] = '/';
i += sprint_gamma(s->val[OPT_GAMMA_VECTOR], &s->buffer[10+i]);
-
+
DBG(12, "%s\n", &s->buffer[10]);
s->buffer[0] = SEND;
s->buffer[2] = 0x03;
s->buffer[7] = i >> 8;
s->buffer[8] = i & 0xff;
-
+
wait_ready(s->fd);
status = sanei_scsi_cmd (s->fd, s->buffer, i+10, 0, 0);
DBG(11, ">>\n");
-
+
return status;
}
#endif
@@ -2711,9 +2711,9 @@ send_binary_g_table(NEC_Scanner *s, SANE_Word *a, int dtq)
{
SANE_Status status;
unsigned int i, j;
-
+
dtq = dtq; /* silence compilation warnings */
-
+
DBG(11, "<< send_binary_g_table\n");
i = 256;
@@ -2725,19 +2725,19 @@ send_binary_g_table(NEC_Scanner *s, SANE_Word *a, int dtq)
s->buffer[2] = 0x03;
s->buffer[7] = i >> 8;
s->buffer[8] = i & 0xff;
-
+
for (i = 0; i < 256; i++)
{
s->buffer[i+11] = a[i&0xff] & 0xff;
}
-
+
for (j = 0; j < 256; j += 16)
{
DBG(11, "%02x %02x %02x %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
- a[j ], a[j+1], a[j+2], a[j+3],
+ a[j ], a[j+1], a[j+2], a[j+3],
a[j+4], a[j+5], a[j+6], a[j+7],
- a[j+8], a[j+9], a[j+10], a[j+11],
+ a[j+8], a[j+9], a[j+10], a[j+11],
a[j+12], a[j+13], a[j+14], a[j+15]);
}
DBG(12, "transfer length = %d\n", i);
@@ -2757,20 +2757,20 @@ static SANE_Status
send_binary_gamma_tables (NEC_Scanner *s)
{
SANE_Status status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR].wa, 0x10);
if (status != SANE_STATUS_GOOD)
return status;
DBG(11, "send_binary_gamma_tables\n");
-#if 0
+#if 0
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_R].wa, 0x11);
if (status != SANE_STATUS_GOOD)
return status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_G].wa, 0x12);
if (status != SANE_STATUS_GOOD)
return status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_B].wa, 0x13);
#endif
return status;
@@ -2787,7 +2787,7 @@ send_gamma_tables (NEC_Scanner *s)
{
return send_ascii_gamma_tables(s);
}
-
+
}
#endif
@@ -2800,19 +2800,19 @@ send_threshold_data(NEC_Scanner *s)
SANE_Status status;
SANE_Byte cmd[26] = {SEND, 0, 0x82, 0, 0, 0, 0, 0, 0, 0};
int len;
-
+
memset(cmd, 0, sizeof(cmd));
- /* maximum string length: 3 bytes for each number (they are
+ /* maximum string length: 3 bytes for each number (they are
restricted to the range 0..255), 3 '/' and the null-byte,
total: 16 bytes.
*/
- len = sprintf((char *) &cmd[10], "%i/%i/%i/%i",
+ len = sprintf((char *) &cmd[10], "%i/%i/%i/%i",
s->val[OPT_THRESHOLD_R].w,
s->val[OPT_THRESHOLD_G].w,
s->val[OPT_THRESHOLD_B].w,
s->val[OPT_THRESHOLD].w);
cmd[8] = len;
-
+
wait_ready(s->fd);
status = sanei_scsi_cmd(s->fd, cmd, len + 10, 0, 0);
return status;
@@ -2845,7 +2845,7 @@ sane_start (SANE_Handle handle)
s->dev->info.bufsize = 32 * 1024;
{
int bsize = s->dev->info.bufsize;
- status = sanei_scsi_open_extended (s->dev->sane.name, &s->fd,
+ status = sanei_scsi_open_extended (s->dev->sane.name, &s->fd,
&sense_handler, &s->dev->sensedat, &bsize);
s->dev->info.bufsize = bsize;
}
@@ -2858,8 +2858,8 @@ sane_start (SANE_Handle handle)
}
/* make sure that we got at least 32 kB. Even then, the scan will be
- awfully slow.
-
+ awfully slow.
+
*/
if (s->dev->info.bufsize < 32 * 1024)
{
@@ -2868,13 +2868,13 @@ sane_start (SANE_Handle handle)
return SANE_STATUS_NO_MEM;
}
#else
- status = sanei_scsi_open(s->dev->sane.name, &s->fd, &sense_handler,
+ status = sanei_scsi_open(s->dev->sane.name, &s->fd, &sense_handler,
&s->dev->sensedat);
if (s->dev->info.wanted_bufsize < sanei_scsi_max_request_size)
s->dev->info.bufsize = s->dev->info.wanted_bufsize;
else
s->dev->info.bufsize = sanei_scsi_max_request_size;
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "open of %s failed: %s\n",
@@ -2932,7 +2932,7 @@ sane_start (SANE_Handle handle)
DBG (5, "start: TEST_UNIT_READY\n");
status = test_unit_ready (s->fd);
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "TEST UNIT READY failed: %s\n", sane_strstatus (status));
@@ -3046,7 +3046,7 @@ sane_start (SANE_Handle handle)
else if (strcmp (edge, EDGE_BLUR) == 0)
s->edge = 3;
}
-
+
s->lightcolor = 3;
if (strcmp(lightcolor, LIGHT_GREEN) == 0)
s->lightcolor = 0;
@@ -3058,7 +3058,7 @@ sane_start (SANE_Handle handle)
s->lightcolor = 3;
s->adf_scan = 0;
-
+
#ifdef USE_CUSTOM_GAMMA
if (s->val[OPT_CUSTOM_GAMMA].w == SANE_FALSE)
{
@@ -3136,14 +3136,14 @@ sane_start (SANE_Handle handle)
s->color = s->val[OPT_COLOR].w;
memset (&wp, 0, sizeof (wp));
- /* every NEC scanner seems to have a different
+ /* every NEC scanner seems to have a different
window descriptor block...
*/
if (s->dev->sensedat.model == PCIN500)
buf_size = sizeof(WDB) + sizeof(WDBX500);
else
buf_size = sizeof(WDB);
-
+
wp.wpdh.wdl[0] = buf_size >> 8;
wp.wpdh.wdl[1] = buf_size;
wp.wdb.x_res[0] = s->res >> 8;
@@ -3372,7 +3372,7 @@ sane_start (SANE_Handle handle)
#ifdef USE_FORK
{
size_t i;
- for (i = 0; i < s->dev->info.buffers; i++)
+ for (i = 0; i < s->dev->info.buffers; i++)
s->rdr_ctl->buf_ctl[i].shm_status = SHM_EMPTY;
s->read_buff = 0;
s->rdr_ctl->cancel = 0;
@@ -3388,7 +3388,7 @@ sane_start (SANE_Handle handle)
s->reader_pid);
}
#endif
- if (s->reader_pid == 0)
+ if (s->reader_pid == 0)
{
sigset_t ignore_set;
struct SIGACTION act;
@@ -3409,9 +3409,9 @@ sane_start (SANE_Handle handle)
do_cancel(s);
return SANE_STATUS_NO_MEM;
}
-
+
#endif /* USE_FORK */
-
+
DBG (1, "%d pixels per line, %d bytes, %d lines high, total %lu bytes, "
"dpi=%d\n", s->params.pixels_per_line, s->params.bytes_per_line,
@@ -3421,7 +3421,7 @@ sane_start (SANE_Handle handle)
s->buf_used = 0;
s->buf_pos = 0;
- if (s->cancel == SANE_TRUE)
+ if (s->cancel == SANE_TRUE)
{
do_cancel(s);
DBG (10, ">>\n");
@@ -3447,7 +3447,7 @@ sane_read_direct (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
buffer_status bs;
size_t len = sizeof (buffer_status);
get_data_buffer_status (s->fd, &bs, &len);
- DBG (20, "buffer_status: %i ", bs.fdb[0]*256*256 + bs.fdb[1]*256 + bs.fdb[2]);
+ DBG (20, "buffer_status: %i ", bs.fdb[0]*256*256 + bs.fdb[1]*256 + bs.fdb[2]);
}
#endif
DBG (20, "remaining: %lu ", (u_long) s->bytes_to_read);
@@ -3505,18 +3505,18 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
buffer_status bs;
size_t len = sizeof (buffer_status);
get_data_buffer_status (s->fd, &bs, &len);
- DBG (20, "buffer_status: %i ", bs.fdb[0]*256*256 + bs.fdb[1]*256 + bs.fdb[2]);
+ DBG (20, "buffer_status: %i ", bs.fdb[0]*256*256 + bs.fdb[1]*256 + bs.fdb[2]);
}
#endif
*len = 0;
- if (s->bytes_to_read == 0 && s->buf_pos == s->buf_used)
+ if (s->bytes_to_read == 0 && s->buf_pos == s->buf_used)
{
do_cancel (s);
DBG (10, ">>\n");
return (SANE_STATUS_EOF);
}
-
- if (!s->scanning)
+
+ if (!s->scanning)
{
DBG (10, ">>\n");
return(do_cancel(s));
@@ -3527,14 +3527,14 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
transfer = s->buf_used - s->buf_pos;
if (transfer > max_len)
transfer = max_len;
-
+
memcpy(dst_buf, &(s->buffer[s->buf_pos]), transfer);
s->buf_pos += transfer;
max_len -= transfer;
*len = transfer;
}
- while (max_len > 0 && s->bytes_to_read > 0)
+ while (max_len > 0 && s->bytes_to_read > 0)
{
if (eight_bit_data)
{
@@ -3561,7 +3561,7 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
start_input = s->dev->info.bufsize - nread;
}
ntest = nread;
-
+
#ifdef USE_FORK
status = read_data (s, &(s->buffer[start_input]), &nread);
#else
@@ -3573,8 +3573,8 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG (10, ">>\n");
return (SANE_STATUS_IO_ERROR);
}
-
- if (nread != ntest)
+
+ if (nread != ntest)
{
/* if this happens, something is wrong in the input buffer
management...
@@ -3582,8 +3582,8 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG(1, "Warning: could not read an integral number of scan lines\n");
DBG(1, " image will be scrambled\n");
}
-
-
+
+
s->buf_used = max_line * s->params.bytes_per_line;
s->buf_pos = 0;
s->bytes_to_read -= nread;
@@ -3625,12 +3625,12 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
}
}
}
-
+
transfer = max_len;
if (transfer > s->buf_used)
transfer = s->buf_used;
memcpy(&(dst_buf[*len]), s->buffer, transfer);
-
+
max_len -= transfer;
s->buf_pos += transfer;
*len += transfer;
@@ -3651,13 +3651,13 @@ sane_read (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG (10, "<< sane_read ");
s->busy = SANE_TRUE;
- if (s->cancel == SANE_TRUE)
+ if (s->cancel == SANE_TRUE)
{
do_cancel(s);
*len = 0;
return (SANE_STATUS_CANCELLED);
}
-
+
if (s->image_composition <= 2)
status = sane_read_direct(handle, dst_buf, max_len, len);
else if (s->image_composition <= 4)
@@ -3708,7 +3708,7 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
handle = handle;
fd = fd; /* silence compilation warnings */
-
+
DBG (10, "<< sane_get_select_fd");
DBG (10, ">>\n");
diff --git a/backend/nec.h b/backend/nec.h
index 5f03513..d7848e4 100644
--- a/backend/nec.h
+++ b/backend/nec.h
@@ -47,21 +47,21 @@
/* default values for configurable options.
Though these options are only meaningful if USE_FORK is defined,
- they are
+ they are
DEFAULT_BUFFERS: number of buffers allocated as shared memory
for the data transfer from reader_process to
read_data. The minimum value is 2
DEFAULT_BUFSIZE: default size of one buffer. Must be greater
than zero.
- DEFAULT_QUEUED_READS: number of read requests queued by
+ DEFAULT_QUEUED_READS: number of read requests queued by
sanei_scsi_req_enter. Since queued read requests
- are currently only supported for Linux and
+ are currently only supported for Linux and
DomainOS, this value should automatically be set
dependent on the target OS...
For Linux, 2 is the optimum; for DomainOS, I
don't have any recommendation; other OS
should use the value zero.
-
+
The value for DEFAULT_BUFSIZE is probably too Linux-oriented...
*/
@@ -113,7 +113,7 @@ typedef enum
OPT_COLOR,
OPT_PREVIEW,
-#ifdef USE_CUSTOM_GAMMA
+#ifdef USE_CUSTOM_GAMMA
OPT_GAMMA_VECTOR,
OPT_GAMMA_VECTOR_R,
OPT_GAMMA_VECTOR_G,
@@ -126,7 +126,7 @@ NEC_Option;
#ifdef USE_FORK
-/* status defines for a buffer:
+/* status defines for a buffer:
buffer not used / read request queued / buffer contains data
*/
#define SHM_EMPTY 0
@@ -153,7 +153,7 @@ typedef struct NEC_rdr_ctl
NEC_rdr_ctl;
#endif /* USE_FORK */
-typedef enum
+typedef enum
{
/* PCIN500, PCINXXX are used as array indices, so the corresponding
numbers should start at 0
@@ -192,14 +192,14 @@ NEC_Info;
typedef struct NEC_Sense_Data
{
NEC_Model model;
- /* flag, if conditions like "paper jam" or "cover open"
+ /* flag, if conditions like "paper jam" or "cover open"
are considered as an error. Should be 0 for attach, else
a frontend might refuse to start, if the scanner returns
these errors.
*/
int complain_on_adf_error;
/* Linux returns only 16 bytes of sense data... */
- u_char sb[16];
+ u_char sb[16];
}
NEC_Sense_Data;
@@ -213,7 +213,7 @@ typedef struct NEC_Device
}
NEC_Device;
-typedef struct NEC_New_Device
+typedef struct NEC_New_Device
{
struct NEC_Device *dev;
struct NEC_New_Device *next;
@@ -286,7 +286,7 @@ typedef struct WPDH
{
u_char wpdh[6];
u_char wdl[2];
-}
+}
WPDH;
typedef struct WDB
@@ -416,7 +416,7 @@ typedef struct buffer_status
SANE_Byte block;
SANE_Byte window_id;
SANE_Byte reserved;
- SANE_Byte bsa[3]; /* buffer space available */
+ SANE_Byte bsa[3]; /* buffer space available */
SANE_Byte fdb[3]; /* filled data buffer */
}
buffer_status;
diff --git a/backend/net.c b/backend/net.c
index 57889a2..df19192 100644
--- a/backend/net.c
+++ b/backend/net.c
@@ -197,22 +197,22 @@ add_device (const char *name, Net_Device ** ndp)
}
else
{
- for (resp = res; resp != NULL; resp = resp->ai_next)
- {
- switch (resp->ai_family)
- {
- case AF_INET:
- sin = (struct sockaddr_in *) resp->ai_addr;
- sin->sin_port = sane_port;
- break;
-#ifdef ENABLE_IPV6
- case AF_INET6:
- sin6 = (struct sockaddr_in6 *) resp->ai_addr;
- sin6->sin6_port = sane_port;
- break;
-#endif /* ENABLE_IPV6 */
+ for (resp = res; resp != NULL; resp = resp->ai_next)
+ {
+ switch (resp->ai_family)
+ {
+ case AF_INET:
+ sin = (struct sockaddr_in *) resp->ai_addr;
+ sin->sin_port = sane_port;
+ break;
+#ifdef ENABLE_IPV6
+ case AF_INET6:
+ sin6 = (struct sockaddr_in6 *) resp->ai_addr;
+ sin6->sin6_port = sane_port;
+ break;
+#endif /* ENABLE_IPV6 */
}
- }
+ }
}
}
@@ -220,7 +220,7 @@ add_device (const char *name, Net_Device ** ndp)
if (!nd)
{
DBG (1, "add_device: not enough memory for Net_Device struct\n");
-
+
freeaddrinfo (res);
return SANE_STATUS_NO_MEM;
}
@@ -233,14 +233,14 @@ add_device (const char *name, Net_Device ** ndp)
free(nd);
return SANE_STATUS_NO_MEM;
}
-
+
nd->addr = res;
nd->ctl = -1;
nd->next = first_device;
first_device = nd;
-
+
if (ndp)
*ndp = nd;
DBG (2, "add_device: backend %s added\n", name);
@@ -347,7 +347,7 @@ connect_dev (Net_Device * dev)
i, addrp->ai_family);
continue;
}
-
+
dev->ctl = socket (addrp->ai_family, SOCK_STREAM, 0);
if (dev->ctl < 0)
{
@@ -577,15 +577,15 @@ fetch_options (Net_Scanner * s)
{
DBG (3, "fetch_options: creating %d local option descriptors\n",
s->opt.num_options);
- s->local_opt.desc =
+ s->local_opt.desc =
malloc (s->opt.num_options * sizeof (s->local_opt.desc));
if (!s->local_opt.desc)
{
DBG (1, "fetch_options: couldn't malloc s->local_opt.desc\n");
return SANE_STATUS_NO_MEM;
}
- for (option_number = 0;
- option_number < s->opt.num_options;
+ for (option_number = 0;
+ option_number < s->opt.num_options;
option_number++)
{
s->local_opt.desc[option_number] =
@@ -605,15 +605,15 @@ fetch_options (Net_Scanner * s)
return SANE_STATUS_INVAL;
}
- DBG (3, "fetch_options: copying %d option descriptors\n",
+ DBG (3, "fetch_options: copying %d option descriptors\n",
s->opt.num_options);
-
+
for (option_number = 0; option_number < s->opt.num_options; option_number++)
{
memcpy (s->local_opt.desc[option_number], s->opt.desc[option_number],
sizeof (SANE_Option_Descriptor));
}
-
+
s->options_valid = 1;
DBG (3, "fetch_options: %d options fetched\n", s->opt.num_options);
return SANE_STATUS_GOOD;
@@ -1082,13 +1082,13 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/* add back the ":" that got removed by the strsep() */
host[strlen (host)] = ':';
/* host now holds the IPv6 address */
-
+
/* skip the ':' that could be after ] (avoids a call to strsep() */
if (next[0] == ':')
next++;
}
- /*
+ /*
* if the IPv6 is last in the list, the strsep() call in the while()
* will return a string with the first char being '\0'. Skip it.
*/
@@ -1162,7 +1162,7 @@ sane_exit (void)
if (dev->name)
free ((void *) dev->name);
-#ifdef NET_USES_AF_INDEP
+#ifdef NET_USES_AF_INDEP
if (dev->addr)
freeaddrinfo(dev->addr);
#endif /* NET_USES_AF_INDEP */
@@ -1309,7 +1309,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
memset (mem, 0, sizeof (*dev) + len);
full_name = mem + sizeof (*dev);
-
+
#ifdef ENABLE_IPV6
if (IPv6 == SANE_TRUE)
strcat (full_name, "[");
@@ -1317,7 +1317,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
strcat (full_name, dev->name);
-#ifdef ENABLE_IPV6
+#ifdef ENABLE_IPV6
if (IPv6 == SANE_TRUE)
strcat (full_name, "]");
#endif /* ENABLE_IPV6 */
@@ -1382,7 +1382,7 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
int need_auth;
DBG (3, "sane_open(\"%s\")\n", full_name);
-
+
#ifdef ENABLE_IPV6
/*
* Check whether a numerical IPv6 host was specified
@@ -1405,7 +1405,7 @@ sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
dev_name = strchr (tmp_name, ':');
#else /* !ENABLE_IPV6 */
- dev_name = strchr (full_name, ':');
+ dev_name = strchr (full_name, ':');
#endif /* ENABLE_IPV6 */
if (dev_name)
@@ -2153,7 +2153,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
{
DBG (3, "sane_read: left_over from previous call, return "
"immediately\n");
- /* return the byte, we've currently scanned; hang_over becomes
+ /* return the byte, we've currently scanned; hang_over becomes
left_over */
*data = (SANE_Byte) left_over;
left_over = -1;
@@ -2171,7 +2171,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
if (s->bytes_remaining == 0)
{
/* boy, is this painful or what? */
-
+
DBG (4, "sane_read: reading packet length\n");
nread = read (s->data, s->reclen_buf + s->reclen_buf_offset,
4 - s->reclen_buf_offset);
@@ -2232,7 +2232,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
max_length = s->bytes_remaining;
nread = read (s->data, data, max_length);
-
+
if (nread < 0)
{
DBG (2, "sane_read: error code %s\n", strerror (errno));
@@ -2261,7 +2261,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
/* special case: 1 byte scanned and hang_over */
if ((nread == 1) && (hang_over > -1))
{
- /* return the byte, we've currently scanned; hang_over becomes
+ /* return the byte, we've currently scanned; hang_over becomes
left_over */
left_over = hang_over;
hang_over = -1;
diff --git a/backend/niash_core.c b/backend/niash_core.c
index b87f4f6..951ad67 100644
--- a/backend/niash_core.c
+++ b/backend/niash_core.c
@@ -973,7 +973,7 @@ CircBufferGetLine (int iHandle, TDataPipe * p, unsigned char *pabLine,
}
-/* try to keep the number of transfers the same, but make them all
+/* try to keep the number of transfers the same, but make them all
as good as possible the same size to avoid cranking in critical
situations
*/
diff --git a/backend/niash_core.h b/backend/niash_core.h
index 9bd6b91..fc0adbd 100644
--- a/backend/niash_core.h
+++ b/backend/niash_core.h
@@ -124,7 +124,7 @@ STATIC SANE_Bool CircBufferGetLine (int iHandle, TDataPipe * p,
unsigned char *pabLine,
SANE_Bool iReversedHead);
-/* returns false, when trying to read after end of buffer
+/* returns false, when trying to read after end of buffer
if fReturn==SANE_TRUE, the head will return automatically on an end of scan */
STATIC SANE_Bool
diff --git a/backend/p5.c b/backend/p5.c
index 30ab41e..d4b5724 100644
--- a/backend/p5.c
+++ b/backend/p5.c
@@ -1,6 +1,6 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2009-12 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2009-12 Stéphane Voltz <stef.dev@free.fr>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@ -32,7 +32,7 @@
* \section sane_api SANE API
*
* \subsection sane_flow sane flow
- SANE FLOW
+ SANE FLOW
- sane_init() : initialize backend, attach scanners.
- sane_get_devices() : query list of scanner devices, backend must
probe for new devices.
@@ -60,7 +60,7 @@
/**
* Import directly the low level part needed to
- * operate scanner. The alternative is to prefix all public functions
+ * operate scanner. The alternative is to prefix all public functions
* with sanei_p5_ ,and have all the functions prototyped in
* p5_device.h .
*/
@@ -72,7 +72,7 @@
static int init_count = 0;
/**
- * NULL terminated list of opened frontend sessions. Sessions are
+ * NULL terminated list of opened frontend sessions. Sessions are
* inserted here on sane_open() and removed on sane_close().
*/
static P5_Session *sessions = NULL;
@@ -85,7 +85,7 @@ static P5_Session *sessions = NULL;
static P5_Device *devices = NULL;
/**
- * NULL terminated list of devices needed by sane_get_devices(), since
+ * NULL terminated list of devices needed by sane_get_devices(), since
* the result returned must stay consistent until next call.
*/
static const SANE_Device **devlist = 0;
@@ -112,18 +112,6 @@ static SANE_Range y_range = {
SANE_FIX (0.0) /* no quantization */
};
-static const SANE_Range u8_range = {
- 0, /* minimum */
- 255, /* maximum */
- 0 /* no quantization */
-};
-
-static const SANE_Range threshold_percentage_range = {
- SANE_FIX (0), /* minimum */
- SANE_FIX (100), /* maximum */
- SANE_FIX (1) /* quantization */
-};
-
/**
* finds the maximum string length in a string array.
*/
@@ -155,7 +143,7 @@ static P5_Config p5cfg;
/**
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -195,7 +183,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/**
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -208,7 +196,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -239,7 +227,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
/**
* Since sane_get_devices() may be called repeatedly to detect new devices,
- * the device detection must be run at each call. We are handling
+ * the device detection must be run at each call. We are handling
* hot-plugging : we probe for devices plugged since sane_init() was called.
*/
probe_p5_devices ();
@@ -327,7 +315,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
* the name of the backend as the device name, in this case the first
* available device will also be used.
* @param name name of the device to open
- * @param handle opaque pointer where to store the pointer of
+ * @param handle opaque pointer where to store the pointer of
* the opened P5_Session
* @return SANE_STATUS_GOOD on success
*/
@@ -383,7 +371,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
/* device initialization */
if (device->initialized == SANE_FALSE)
{
- /**
+ /**
* call to hardware initialization function here.
*/
device->fd = open_pp (device->name);
@@ -690,7 +678,7 @@ get_option_value (P5_Session * s, int option, void *val)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -701,7 +689,7 @@ get_option_value (P5_Session * s, int option, void *val)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -917,8 +905,8 @@ sane_start (SANE_Handle handle)
/** @brief compute scan parameters
* This function computes two set of parameters. The one for the SANE's standard
- * and the other for the hardware. Among these parameters are the bit depth, total
- * number of lines, total number of columns, extra line to read for data reordering...
+ * and the other for the hardware. Among these parameters are the bit depth, total
+ * number of lines, total number of columns, extra line to read for data reordering...
* @param session fronted session to compute final scan parameters
* @return SANE_STATUS_GOOD on success
*/
@@ -1086,7 +1074,7 @@ compute_parameters (P5_Session * session)
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle of the
@@ -1113,7 +1101,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
/**
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -1121,7 +1109,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*
@@ -1343,7 +1331,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf,
/**
- * Cancels a scan.
+ * Cancels a scan.
*
* From the SANE spec:
* This function is used to immediately or as quickly as possible
@@ -1393,7 +1381,7 @@ sane_cancel (SANE_Handle handle)
/**
* Ends use of the session.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -1476,7 +1464,7 @@ sane_close (SANE_Handle handle)
/**
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -1542,7 +1530,7 @@ sane_exit (void)
/** @brief probe for all supported devices
- * This functions tries to probe if any of the supported devices of
+ * This functions tries to probe if any of the supported devices of
* the backend is present. Each detected device will be added to the
* 'devices' list
*/
@@ -1609,10 +1597,10 @@ config_attach (SANEI_Config * config, const char *devname)
* using an attach function with a config parameter */
config = config;
- /* the devname has been processed and is ready to be used
+ /* the devname has been processed and is ready to be used
* directly. The config struct contains all the configuration data for
* the corresponding device. Since there is no ressources common to each
- * backends regarding parallel port, we can directly call the attach
+ * backends regarding parallel port, we can directly call the attach
* function. */
attach_p5 (devname, config);
@@ -1661,7 +1649,7 @@ attach_p5 (const char *devicename, SANEI_Config * config)
/**
* do physical probe of the device here. In case the device is recognized,
- * we allocate a device struct and give it options and model.
+ * we allocate a device struct and give it options and model.
* Else we return SANE_STATUS_UNSUPPORTED.
*/
model = probe (devicename);
@@ -1772,7 +1760,7 @@ init_options (struct P5_Session *session)
SANE_CONSTRAINT_NONE;
session->options[OPT_PREVIEW].value.w = SANE_FALSE;
- /** @brief build resolution list
+ /** @brief build resolution list
* We merge xdpi and ydpi list to provide only one resolution option control.
* This is the most common case for backends and fronteds and give 'square'
* pixels. The SANE API allow to control x and y dpi independantly, but this is
diff --git a/backend/p5.h b/backend/p5.h
index 10352a3..eae62f7 100644
--- a/backend/p5.h
+++ b/backend/p5.h
@@ -1,22 +1,22 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2009-2012 stef.dev@free.fr
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
*/
/** @file p5.h
@@ -77,7 +77,7 @@
#include "p5_device.h"
-/**
+/**
* List of all SANE options available for the frontend. Given a specific
* device, some options may be set to inactive when the scanner model is
* detected. The default values and the ranges they belong maybe also model
@@ -95,7 +95,7 @@ enum P5_Options
OPT_RESOLUTION, /** set scan's resolution */
/* @} */
- /** @name geometry group
+ /** @name geometry group
* geometry related options
*/
/* @{ */
@@ -139,9 +139,9 @@ typedef struct P5_Option
Option_Value value; /** option value */
} P5_Option;
-/**
+/**
* Frontend session. This struct holds informations usefull for
- * the functions defined in SANE's standard. Informations closer
+ * the functions defined in SANE's standard. Informations closer
* to the hardware are in the P5_Device structure. There is
* as many session structure than frontends using the backend.
*/
@@ -175,7 +175,7 @@ typedef struct P5_Session
SANE_Bool non_blocking;
/**
- * SANE Parameters describes what the next or current scan will be
+ * SANE Parameters describes what the next or current scan will be
* according to the current values of the options
*/
SANE_Parameters params;
diff --git a/backend/p5_device.c b/backend/p5_device.c
index 924144e..4a257a7 100644
--- a/backend/p5_device.c
+++ b/backend/p5_device.c
@@ -1,4 +1,4 @@
-/**
+/**
* Description of the Primax PagePartner model
*/
static P5_Model pagepartner_model = {
@@ -249,7 +249,7 @@ write_reg2 (int fd, uint8_t index, uint16_t value)
static int
read_data (int fd, uint8_t * data, int length)
-{
+{
if(fd && data && length)
return -1;
return -1;
@@ -463,7 +463,7 @@ setadresses (int fd, uint16_t start, uint16_t end)
#ifdef HAVE_LINUX_PPDEV_H
/** @brief open parallel port device
* opens parallel port's low level device in EPP mode
- * @param devicename nam of the real device or the special value 'auto'
+ * @param devicename nam of the real device or the special value 'auto'
* @return file descriptor in cas of successn -1 otherwise
*/
static int
@@ -532,7 +532,7 @@ open_pp (const char *devicename)
}
else
{
- /*
+ /*
if (mode & PARPORT_MODE_ECP)
{
mode = IEEE1284_MODE_ECP;
@@ -557,7 +557,7 @@ open_pp (const char *devicename)
}
/** close low level device
- * release and close low level hardware device
+ * release and close low level hardware device
*/
static void
close_pp (int fd)
@@ -615,7 +615,7 @@ test_document (int fd)
/**
* return the amount of scanned data available
* @param fd file descriptor to access scanner
- * @return avaible byte number
+ * @return avaible byte number
*/
static int
available_bytes (int fd)
@@ -710,7 +710,7 @@ build_correction (P5_Device * dev, unsigned int dpi, unsigned int mode,
* @param dev device describing hardware
* @param mode color, gray level or lineart.
* @param dpi desired scan resolution.
- * @param startx coordinate of the first pixel to scan in
+ * @param startx coordinate of the first pixel to scan in
* scan's resolution coordinate
* @param width width of the scanned area
* scanner's physical scan aread.
diff --git a/backend/p5_device.h b/backend/p5_device.h
index 4582256..744fe1c 100644
--- a/backend/p5_device.h
+++ b/backend/p5_device.h
@@ -1,17 +1,17 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2009-2012 stef.dev@free.fr
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@ -83,8 +83,8 @@ typedef struct P5_Calibration_Data
uint8_t white_data[MAX_SENSOR_PIXELS * 3];
} P5_Calibration_Data;
-/**
- * This structure describes a particular model which is handled by the backend.
+/**
+ * This structure describes a particular model which is handled by the backend.
* Contained data is immutable and is used to initalize the P5_Device
* structure.
*/
@@ -178,7 +178,7 @@ typedef struct P5_Device
struct P5_Device *next;
/**
- * Points to a structure that decribes model capabilities, geometry
+ * Points to a structure that decribes model capabilities, geometry
* and default settings.
*/
P5_Model *model;
@@ -203,16 +203,16 @@ typedef struct P5_Device
/**
* Configuration options for the device read from
- * configuration file at attach time. This member is filled at
+ * configuration file at attach time. This member is filled at
* attach time.
*/
P5_Config *config;
/** @brief scan parameters
* The scan done by the hardware can be different from the one at the SANE
- * frontend session. For instance:
+ * frontend session. For instance:
* - xdpy and ydpi may be different to accomodate hardware capabilites.
- * - many CCD scanners need to scan more lines to correct the 'line
+ * - many CCD scanners need to scan more lines to correct the 'line
* distance shift' effect.
* - emulated modes (lineart from gray scan, or gray scan for color one)
*/
diff --git a/backend/pie-scsidef.h b/backend/pie-scsidef.h
index d86a0c9..f80e1da 100644
--- a/backend/pie-scsidef.h
+++ b/backend/pie-scsidef.h
@@ -363,12 +363,12 @@ static scsiblk request_sense = { request_senseC, sizeof(request_senseC) };
#define get_RS_filemark(b) getbitfield(b + 0x02, 1, 7)
#define get_RS_EOM(b) getbitfield(b + 0x02, 1, 6)
#define get_RS_ILI(b) getbitfield(b + 0x02, 1, 5)
-#define get_RS_sense_key(b) getbitfield(b + 0x02, 0x0f, 0)
-#define get_RS_information(b) getnbyte(b+0x03, 4)
+#define get_RS_sense_key(b) getbitfield(b + 0x02, 0x0f, 0)
+#define get_RS_information(b) getnbyte(b+0x03, 4)
#define get_RS_additional_length(b) b[0x07]
#define get_RS_ASC(b) b[0x0c]
#define get_RS_ASCQ(b) b[0x0d]
-#define get_RS_SKSV(b) getbitfield(b+0x0f,1,7) /* valid */
+#define get_RS_SKSV(b) getbitfield(b+0x0f,1,7) /* valid */
#define get_RS_CD(b) getbitfield(b+0x0f,1,6) /* 1=CDB */
#define get_RS_field_pointer(b) getnbyte(b+0x10, 2)
diff --git a/backend/pie.c b/backend/pie.c
index 76cbb47..0e56a5a 100644
--- a/backend/pie.c
+++ b/backend/pie.c
@@ -2901,7 +2901,7 @@ do_cancel (Pie_Scanner * scanner)
DBG (DBG_sane_info, "killing reader_process\n");
sanei_thread_kill (scanner->reader_pid);
sanei_thread_waitpid (scanner->reader_pid, 0);
- scanner->reader_pid = -1;
+ sanei_thread_invalidate (scanner->reader_pid);
DBG (DBG_sane_info, "reader_process killed\n");
}
diff --git a/backend/pieusb_usb.c b/backend/pieusb_usb.c
index 71b6bcf..31008fa 100644
--- a/backend/pieusb_usb.c
+++ b/backend/pieusb_usb.c
@@ -176,11 +176,13 @@ _hexdump(char *msg, unsigned char *ptr, int size)
clipped = size;
size = 128;
}
- while (size-- > 0)
- {
- if ((count % 16) == 0)
- fprintf (stderr, "%s\t%08lx:", msg?msg:"", start);
- msg = NULL;
+ while (size-- > 0)
+ {
+ if ((count % 16) == 0)
+ {
+ fprintf (stderr, "%s\t%08lx:", msg?msg:"", start);
+ msg = NULL;
+ }
fprintf (stderr, " %02x", *ptr++);
count++;
start++;
@@ -207,7 +209,7 @@ _hexdump(char *msg, unsigned char *ptr, int size)
if ((count % 16) != 0)
fprintf (stderr, "\n");
if (clipped > 0)
- fprintf (stderr, "\t%08lx bytes clipped\n", clipped);
+ fprintf (stderr, "\t%08lx bytes clipped\n", clipped);
fflush(stderr);
return;
diff --git a/backend/pixma.c b/backend/pixma.c
index d50e4ca..d33a74e 100644
--- a/backend/pixma.c
+++ b/backend/pixma.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2008 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -66,6 +66,7 @@
# include "../include/sane/sanei_thread.h"
# include "../include/sane/sanei_backend.h"
# include "../include/sane/sanei_config.h"
+# include "../include/sane/sanei_jpeg.h"
#ifdef NDEBUG
# define PDBG(x)
@@ -122,8 +123,26 @@ typedef struct pixma_sane_t
SANE_Pid reader_taskid;
int wpipe, rpipe;
SANE_Bool reader_stop;
+
+ /* Valid for JPEG source */
+ djpeg_dest_ptr jdst;
+ struct jpeg_decompress_struct jpeg_cinfo;
+ struct jpeg_error_mgr jpeg_err;
+ SANE_Bool jpeg_header_seen;
} pixma_sane_t;
+typedef struct
+{
+ struct jpeg_source_mgr jpeg;
+
+ pixma_sane_t *s;
+ JOCTET *buffer;
+
+ SANE_Byte *linebuffer;
+ SANE_Int linebuffer_size;
+ SANE_Int linebuffer_index;
+} pixma_jpeg_src_mgr;
+
static const char vendor_str[] = "CANON";
static const char type_str[] = "multi-function peripheral";
@@ -291,7 +310,7 @@ update_button_state (pixma_sane_t * ss, SANE_Int * info)
}
if (b1 != OVAL (opt_button_1).w || b2 != OVAL (opt_button_2).w)
- {
+ {
*info |= SANE_INFO_RELOAD_OPTIONS;
OVAL (opt_button_1).w = b1;
OVAL (opt_button_2).w = b2;
@@ -642,9 +661,9 @@ control_option (pixma_sane_t * ss, SANE_Int n,
SANE_Int dummy;
/* info may be null, better to set a dummy here then test everywhere */
- if (info == NULL)
+ if (info == NULL)
info = &dummy;
-
+
cfg = pixma_get_config (ss->s);
/* PDBG (pixma_dbg (4, "*control_option***** n = %u, a = %u\n", n, a)); */
@@ -697,7 +716,7 @@ control_option (pixma_sane_t * ss, SANE_Int n,
ss->button_option_is_cached[ BUTTON_GROUP_INDEX(n) ] = 0;
}
- /* now deal with getting and setting of options */
+ /* now deal with getting and setting of options */
switch (SOD (n).type)
{
case SANE_TYPE_BOOL:
@@ -1094,7 +1113,7 @@ terminate_reader_task (pixma_sane_t * ss, int *exit_code)
pid = ss->reader_taskid;
if (!sanei_thread_is_valid (pid))
- return -1;
+ return pid;
if (sanei_thread_is_forked ())
{
sanei_thread_kill (pid);
@@ -1105,7 +1124,7 @@ terminate_reader_task (pixma_sane_t * ss, int *exit_code)
/* pixma_cancel (ss->s); What is this for ? Makes end-of-scan buggy => removing */
}
result = sanei_thread_waitpid (pid, &status);
- ss->reader_taskid = -1;
+ sanei_thread_invalidate (ss->reader_taskid);
if (ss->sp.source != PIXMA_SOURCE_ADF && ss->sp.source != PIXMA_SOURCE_ADFDUP)
ss->idle = SANE_TRUE;
@@ -1119,7 +1138,8 @@ terminate_reader_task (pixma_sane_t * ss, int *exit_code)
else
{
PDBG (pixma_dbg (1, "WARNING:waitpid() failed %s\n", strerror (errno)));
- return -1;
+ sanei_thread_invalidate (pid);
+ return pid;
}
}
@@ -1159,7 +1179,7 @@ start_reader_task (pixma_sane_t * ss)
if (is_forked)
{
pid = sanei_thread_begin (reader_process, ss);
- if (pid > 0)
+ if (sanei_thread_is_valid (pid))
{
close (ss->wpipe);
ss->wpipe = -1;
@@ -1184,6 +1204,245 @@ start_reader_task (pixma_sane_t * ss)
return 0;
}
+/* libJPEG API callbacks */
+static void
+jpeg_init_source(j_decompress_ptr __sane_unused__ cinfo)
+{
+ /* No-op */
+}
+
+static void
+jpeg_term_source(j_decompress_ptr __sane_unused__ cinfo)
+{
+ /* No-op */
+}
+
+static boolean
+jpeg_fill_input_buffer(j_decompress_ptr cinfo)
+{
+ pixma_jpeg_src_mgr *mgr = (pixma_jpeg_src_mgr *)cinfo->src;
+ int size;
+ int retry;
+
+ for (retry = 0; retry < 30; retry ++ )
+ {
+ size = read (mgr->s->rpipe, mgr->buffer, 1024);
+ if (size == 0)
+ {
+ return FALSE;
+ }
+ else if (size < 0)
+ {
+ sleep (1);
+ }
+ else
+ {
+ mgr->jpeg.next_input_byte = mgr->buffer;
+ mgr->jpeg.bytes_in_buffer = size;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+jpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
+{
+ pixma_jpeg_src_mgr *mgr = (pixma_jpeg_src_mgr *)cinfo->src;
+
+ if (num_bytes > 0)
+ {
+ /* Read and throw away extra */
+ while (num_bytes > (long)mgr->jpeg.bytes_in_buffer)
+ {
+ num_bytes -= (long)mgr->jpeg.bytes_in_buffer;
+ jpeg_fill_input_buffer(cinfo);
+ }
+
+ /* Update jpeg info structure with leftover */
+ mgr->jpeg.next_input_byte += (size_t) num_bytes;
+ mgr->jpeg.bytes_in_buffer -= (size_t) num_bytes;
+ }
+}
+
+/* Pixma JPEG reader helpers */
+static SANE_Status
+pixma_jpeg_start(pixma_sane_t *s)
+{
+ pixma_jpeg_src_mgr *mgr;
+
+ s->jpeg_cinfo.err = jpeg_std_error(&s->jpeg_err);
+
+ jpeg_create_decompress(&s->jpeg_cinfo);
+
+ s->jpeg_cinfo.src = (struct jpeg_source_mgr *)(*s->jpeg_cinfo.mem->alloc_small)((j_common_ptr)&s->jpeg_cinfo,
+ JPOOL_PERMANENT, sizeof(pixma_jpeg_src_mgr));
+
+ memset(s->jpeg_cinfo.src, 0, sizeof(pixma_jpeg_src_mgr));
+
+ mgr = (pixma_jpeg_src_mgr *)s->jpeg_cinfo.src;
+ mgr->s = s;
+
+ mgr->buffer = (JOCTET *)(*s->jpeg_cinfo.mem->alloc_small)((j_common_ptr)&s->jpeg_cinfo,
+ JPOOL_PERMANENT,
+ 1024 * sizeof(JOCTET));
+
+ mgr->jpeg.init_source = jpeg_init_source;
+ mgr->jpeg.fill_input_buffer = jpeg_fill_input_buffer;
+ mgr->jpeg.skip_input_data = jpeg_skip_input_data;
+ mgr->jpeg.resync_to_restart = jpeg_resync_to_restart;
+ mgr->jpeg.term_source = jpeg_term_source;
+ mgr->jpeg.bytes_in_buffer = 0;
+ mgr->jpeg.next_input_byte = NULL;
+
+ s->jpeg_header_seen = 0;
+
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status
+pixma_jpeg_read_header(pixma_sane_t *s)
+{
+ pixma_jpeg_src_mgr *src = (pixma_jpeg_src_mgr *)s->jpeg_cinfo.src;
+
+ if (jpeg_read_header(&s->jpeg_cinfo, TRUE))
+ {
+ s->jdst = sanei_jpeg_jinit_write_ppm(&s->jpeg_cinfo);
+
+ if (jpeg_start_decompress(&s->jpeg_cinfo))
+ {
+ int size;
+
+ DBG(3, "%s: w: %d, h: %d, components: %d\n",
+ __func__,
+ s->jpeg_cinfo.output_width, s->jpeg_cinfo.output_height,
+ s->jpeg_cinfo.output_components);
+
+ size = s->jpeg_cinfo.output_width * s->jpeg_cinfo.output_components * 1;
+
+ src->linebuffer = (*s->jpeg_cinfo.mem->alloc_large)((j_common_ptr)&s->jpeg_cinfo,
+ JPOOL_PERMANENT, size);
+
+ src->linebuffer_size = 0;
+ src->linebuffer_index = 0;
+
+ s->jpeg_header_seen = 1;
+
+ return SANE_STATUS_GOOD;
+ }
+ else
+ {
+ DBG(0, "%s: decompression failed\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+ }
+ else
+ {
+ DBG(0, "%s: cannot read JPEG header\n", __func__);
+ return SANE_STATUS_IO_ERROR;
+ }
+}
+
+static void
+pixma_jpeg_finish(pixma_sane_t *ss)
+{
+ jpeg_destroy_decompress(&ss->jpeg_cinfo);
+}
+
+static void
+pixma_jpeg_read(pixma_sane_t *ss, SANE_Byte *data,
+ SANE_Int max_length, SANE_Int *length)
+{
+ struct jpeg_decompress_struct cinfo = ss->jpeg_cinfo;
+ pixma_jpeg_src_mgr *src = (pixma_jpeg_src_mgr *)ss->jpeg_cinfo.src;
+
+ int l;
+
+ *length = 0;
+
+ /* copy from line buffer if available */
+ if (src->linebuffer_size && src->linebuffer_index < src->linebuffer_size)
+ {
+ *length = src->linebuffer_size - src->linebuffer_index;
+
+ if (*length > max_length)
+ *length = max_length;
+
+ memcpy(data, src->linebuffer + src->linebuffer_index, *length);
+ src->linebuffer_index += *length;
+
+ return;
+ }
+
+ if (cinfo.output_scanline >= cinfo.output_height)
+ {
+ *length = 0;
+ return;
+ }
+
+ /* scanlines of decompressed data will be in ss->jdst->buffer
+ * only one line at time is supported
+ */
+
+ l = jpeg_read_scanlines(&cinfo, ss->jdst->buffer, 1);
+ if (l == 0)
+ return;
+
+ /* from ss->jdst->buffer to linebuffer
+ * linebuffer holds width * bytesperpixel
+ */
+
+ (*ss->jdst->put_pixel_rows)(&cinfo, ss->jdst, 1, (char *)src->linebuffer);
+
+ *length = ss->sp.w * ss->sp.channels;
+ /* Convert RGB into grayscale */
+ if (ss->sp.channels == 1)
+ {
+ unsigned int i;
+ unsigned char *d = (unsigned char *)src->linebuffer;
+ unsigned char *s = (unsigned char *)src->linebuffer;
+ for (i = 0; i < ss->sp.w; i++)
+ {
+ /* Using BT.709 luma formula, fixed-point */
+ int sum = ( s[0]*2126 + s[1]*7152 + s[2]*722 );
+ *d = sum / 10000;
+ d ++;
+ s += 3;
+ }
+ }
+
+ /* Maybe pack into lineary binary image */
+ if (ss->sp.depth == 1)
+ {
+ *length /= 8;
+ unsigned int i;
+ unsigned char *d = (unsigned char *)src->linebuffer;
+ unsigned char *s = (unsigned char *)src->linebuffer;
+ unsigned char b = 0;
+ for (i = 1; i < ss->sp.w + 1; i++)
+ {
+ if (*(s++) > 127)
+ b = (b << 1) | 0;
+ else
+ b = (b << 1) | 1;
+ }
+ if ((i % 8) == 0)
+ *(d++) = b;
+ }
+
+ src->linebuffer_size = *length;
+ src->linebuffer_index = 0;
+
+ if (*length > max_length)
+ *length = max_length;
+
+ memcpy(data, src->linebuffer + src->linebuffer_index, *length);
+ src->linebuffer_index += *length;
+}
+
+
+
static SANE_Status
read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen)
{
@@ -1199,7 +1458,35 @@ read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen)
if (ss->cancel)
/* ss->rpipe has already been closed by sane_cancel(). */
return SANE_STATUS_CANCELLED;
- count = read (ss->rpipe, buf, size);
+ if (ss->sp.mode_jpeg && !ss->jpeg_header_seen)
+ {
+ status = pixma_jpeg_read_header(ss);
+ if (status != SANE_STATUS_GOOD)
+ {
+ close (ss->rpipe);
+ pixma_jpeg_finish(ss);
+ ss->rpipe = -1;
+ if (sanei_thread_is_valid (terminate_reader_task (ss, &status))
+ && status != SANE_STATUS_GOOD)
+ {
+ return status;
+ }
+ else
+ {
+ /* either terminate_reader_task failed or
+ rpipe was closed but we expect more data */
+ return SANE_STATUS_IO_ERROR;
+ }
+ }
+ }
+
+ if (ss->sp.mode_jpeg)
+ {
+ count = -1;
+ pixma_jpeg_read(ss, buf, size, &count);
+ }
+ else
+ count = read (ss->rpipe, buf, size);
}
while (count == -1 && errno == EINTR);
@@ -1215,6 +1502,8 @@ read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen)
close (ss->rpipe);
ss->rpipe = -1;
terminate_reader_task (ss, NULL);
+ if (ss->sp.mode_jpeg)
+ pixma_jpeg_finish(ss);
return SANE_STATUS_IO_ERROR;
}
@@ -1229,6 +1518,8 @@ read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen)
close (ss->rpipe);
ss->rpipe = -1;
terminate_reader_task (ss, NULL);
+ if (ss->sp.mode_jpeg)
+ pixma_jpeg_finish(ss);
}
else if (count == 0)
{
@@ -1236,6 +1527,8 @@ read_image (pixma_sane_t * ss, void *buf, unsigned size, int *readlen)
PRIu64" bytes received, %"PRIu64" bytes expected\n",
ss->image_bytes_read, ss->sp.image_size));
close (ss->rpipe);
+ if (ss->sp.mode_jpeg)
+ pixma_jpeg_finish(ss);
ss->rpipe = -1;
if (sanei_thread_is_valid (terminate_reader_task (ss, &status))
&& status != SANE_STATUS_GOOD)
@@ -1376,7 +1669,7 @@ sane_open (SANE_String_Const name, SANE_Handle * h)
return SANE_STATUS_NO_MEM;
ss->next = first_scanner;
first_scanner = ss;
- ss->reader_taskid = -1;
+ sanei_thread_initialize (ss->reader_taskid);
ss->wpipe = -1;
ss->rpipe = -1;
ss->idle = SANE_TRUE;
@@ -1441,7 +1734,7 @@ sane_control_option (SANE_Handle h, SANE_Int n,
if (!ss->idle && a != SANE_ACTION_GET_VALUE)
{
PDBG (pixma_dbg (3, "Warning: !idle && !SANE_ACTION_GET_VALUE\n"));
- if (ss->sp.source != PIXMA_SOURCE_ADF && ss->sp.source != PIXMA_SOURCE_ADFDUP)
+ if (ss->sp.source != PIXMA_SOURCE_ADF && ss->sp.source != PIXMA_SOURCE_ADFDUP)
return SANE_STATUS_INVAL;
}
@@ -1454,16 +1747,16 @@ sane_control_option (SANE_Handle h, SANE_Int n,
if ((opt->sod.type != SANE_TYPE_BUTTON && !v) ||
!SANE_OPTION_IS_SETTABLE (opt->sod.cap))
return SANE_STATUS_INVAL; /* or _UNSUPPORTED? */
- break;
+ break;
case SANE_ACTION_SET_AUTO:
if (!(opt->sod.cap & SANE_CAP_AUTOMATIC) ||
!SANE_OPTION_IS_SETTABLE (opt->sod.cap))
return SANE_STATUS_INVAL; /* or _UNSUPPORTED? */
- break;
+ break;
case SANE_ACTION_GET_VALUE:
if (!v || !(opt->sod.cap & SANE_CAP_SOFT_DETECT))
return SANE_STATUS_INVAL; /* or _UNSUPPORTED? */
- break;
+ break;
default:
return SANE_STATUS_UNSUPPORTED;
}
@@ -1527,6 +1820,19 @@ sane_start (SANE_Handle h)
ss->page_count++;
if (calc_scan_param (ss, &ss->sp) < 0)
return SANE_STATUS_INVAL;
+
+ /* Prepare the JPEG decompressor, if needed */
+ if (ss->sp.mode_jpeg)
+ {
+ SANE_Status status;
+ status = pixma_jpeg_start(ss);
+ if (status != SANE_STATUS_GOOD)
+ {
+ PDBG (pixma_dbg(1, "%s: pixma_jpeg_start: %s\n", __func__, sane_strstatus(status)) );
+ return status;
+ }
+ }
+
ss->image_bytes_read = 0;
/* TODO: Check paper here in sane_start(). A function like
pixma_get_status() is needed. */
@@ -1538,6 +1844,22 @@ sane_start (SANE_Handle h)
ss->last_read_status = SANE_STATUS_GOOD;
ss->scanning = SANE_TRUE;
ss->idle = SANE_FALSE;
+ if (ss->sp.mode_jpeg && !ss->jpeg_header_seen)
+ {
+ SANE_Status status;
+ status = pixma_jpeg_read_header(ss);
+ if (status != SANE_STATUS_GOOD)
+ {
+ close (ss->rpipe);
+ pixma_jpeg_finish(ss);
+ ss->rpipe = -1;
+ if (sanei_thread_is_valid (terminate_reader_task (ss, &error))
+ && error != SANE_STATUS_GOOD)
+ {
+ return error;
+ }
+ }
+ }
}
return map_error (error);
}
@@ -1635,6 +1957,8 @@ sane_cancel (SANE_Handle h)
if (ss->idle)
return;
close (ss->rpipe);
+ if (ss->sp.mode_jpeg)
+ pixma_jpeg_finish(ss);
ss->rpipe = -1;
terminate_reader_task (ss, NULL);
ss->idle = SANE_TRUE;
@@ -1799,7 +2123,7 @@ type int original
type int target
default 0
title Target operation type
- cap soft_detect advanced
+ cap soft_detect advanced
type int scan-resolution
default 0
diff --git a/backend/pixma.h b/backend/pixma.h
index 6d723fb..370203a 100644
--- a/backend/pixma.h
+++ b/backend/pixma.h
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2008 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -104,7 +104,7 @@ typedef uint16_t uint16_t;
typedef uint32_t uint32_t;
#endif /* HAVE_STDINT_H */
-#ifdef HAVE_INTTYPES_H
+#ifdef HAVE_INTTYPES_H
# include <inttypes.h> /* available in ISO C99 */
#endif /* HAVE_INTTYPES_H */
@@ -116,8 +116,8 @@ typedef uint32_t uint32_t;
/** \name Version of the driver */
/**@{*/
#define PIXMA_VERSION_MAJOR 0
-#define PIXMA_VERSION_MINOR 17
-#define PIXMA_VERSION_BUILD 37
+#define PIXMA_VERSION_MINOR 23
+#define PIXMA_VERSION_BUILD 0
/**@}*/
/** \name Error codes */
@@ -154,6 +154,7 @@ typedef uint32_t uint32_t;
#define PIXMA_CAP_NEGATIVE (1 << 10)
#define PIXMA_CAP_TPUIR ((1 << 11) | PIXMA_CAP_TPU)
#define PIXMA_CAP_ADF_WAIT (1 << 12)
+#define PIXMA_CAP_ADF_JPEG (1 << 13)
#define PIXMA_CAP_EXPERIMENT (1 << 31)
/**@}*/
@@ -278,7 +279,7 @@ struct pixma_scan_param_t
* line_size >= depth / 8 * channels * w <br>
* This field will be set by pixma_check_scan_param(). */
uint64_t line_size;
-
+
/** Size in bytes of the whole image.
* image_size = line_size * h <br>
* This field will be set by pixma_check_scan_param(). */
@@ -310,11 +311,14 @@ struct pixma_scan_param_t
unsigned x, y, w, h, xs, wx;
/*@} */
- /** Flag indicating whether the offset correction for TPU scans
+ /** Flag indicating whether the offset correction for TPU scans
* was already performed (to avoid repeated corrections).
* Currently only used in pixma_mp810.c sub-driver */
unsigned tpu_offset_added;
+ /* Flag indicating if data from scanner will be in JPEG format */
+ unsigned mode_jpeg;
+
/** Flag indicating whether a software-lineart scan is in progress
* 0 = other scan
* 1 = software-lineart scan */
diff --git a/backend/pixma_bjnp.c b/backend/pixma_bjnp.c
index fc4c501..5a9932e 100644
--- a/backend/pixma_bjnp.c
+++ b/backend/pixma_bjnp.c
@@ -69,7 +69,7 @@
#include <limits.h>
#endif
-/*
+/*
* networking stuff
*/
#ifdef HAVE_SYS_SOCKET_H
@@ -104,7 +104,7 @@
#ifndef SSIZE_MAX
# define SSIZE_MAX LONG_MAX
-#endif
+#endif
/* static data */
static bjnp_device_t device[BJNP_NO_DEVICES];
@@ -198,7 +198,7 @@ static int sa_is_equal( const bjnp_sockaddr_t * sa1, const bjnp_sockaddr_t * sa2
{
return 1;
}
- }
+ }
#ifdef ENABLE_IPV6
else if (sa1 -> addr.sa_family == AF_INET6 )
{
@@ -207,18 +207,18 @@ static int sa_is_equal( const bjnp_sockaddr_t * sa1, const bjnp_sockaddr_t * sa2
{
return 1;
}
- }
+ }
#endif
}
- return 0;
+ return 0;
}
-static int
+static int
sa_size( const bjnp_sockaddr_t *sa)
{
switch (sa -> addr.sa_family)
{
- case AF_INET:
+ case AF_INET:
return (sizeof(struct sockaddr_in) );
#ifdef ENABLE_IPV6
case AF_INET6:
@@ -269,7 +269,7 @@ get_address_info ( const bjnp_sockaddr_t *addr, char * addr_string, int *port)
*port = ntohs (addr->ipv6.sin6_port);
}
#endif
- else
+ else
{
/* unknown address family, should not occur */
strcpy(addr_string, "Unknown address family");
@@ -455,7 +455,7 @@ bjnp_open_tcp (int devno)
* Close this socket when starting another process...
*/
- fcntl (sock, F_SETFD, FD_CLOEXEC);
+ fcntl (sock, F_SETFD, FD_CLOEXEC);
if (connect
(sock, &(addr->addr), sa_size(device[devno].addr) )!= 0)
@@ -510,9 +510,9 @@ split_uri (const char *devname, char *method, char *host, char *port,
{
/* literal IPv6 address */
- char *end_of_address = strchr(start, ']');
+ char *end_of_address = strchr(start, ']');
- if ( ( end_of_address == NULL) ||
+ if ( ( end_of_address == NULL) ||
( (end_of_address[1] != ':') && (end_of_address[1] != '/' ) && (end_of_address[1] != '\0' )) ||
( (end_of_address - start) >= BJNP_HOST_MAX ) )
{
@@ -552,8 +552,8 @@ split_uri (const char *devname, char *method, char *host, char *port,
else
{
char *end_of_port = strchr(start, '/');
- if (end_of_port == NULL)
- {
+ if (end_of_port == NULL)
+ {
next = '\0';
}
else
@@ -669,9 +669,9 @@ static int
udp_command (const int dev_no, char *command, int cmd_len, char *response,
int resp_len)
{
- /*
+ /*
* send udp command to given device and recieve the response`
- * returns: the legth of the response or -1
+ * returns: the legth of the response or -1
*/
int sockfd;
struct timeval timeout;
@@ -681,7 +681,7 @@ udp_command (const int dev_no, char *command, int cmd_len, char *response,
fd_set fdset;
struct BJNP_command *resp = (struct BJNP_command *) response;
struct BJNP_command *cmd = (struct BJNP_command *) command;
-
+
if ( (sockfd = bjnp_setup_udp_socket(dev_no) ) == -1 )
{
PDBG (bjnp_dbg( LOG_CRIT, "udp_command: ERROR - Can not setup socket\n") );
@@ -712,7 +712,7 @@ udp_command (const int dev_no, char *command, int cmd_len, char *response,
}
while (((result =
select (sockfd + 1, &fdset, NULL, NULL, &timeout)) <= 0)
- && (errno == EINTR) && (attempt++ < BJNP_MAX_SELECT_ATTEMPTS)
+ && (errno == EINTR) && (attempt++ < BJNP_MAX_SELECT_ATTEMPTS)
&& resp-> seq_no != cmd->seq_no);
if (result <= 0)
@@ -780,7 +780,7 @@ get_scanner_id (const int dev_no, char *model)
id = (struct IDENTITY *) resp_buf;
if (device[dev_no].protocol == PROTOCOL_BJNP)
- {
+ {
id_len = MIN(ntohl( id-> cmd.payload_len ) - sizeof(id-> payload.bjnp.id_len), BJNP_IEEE1284_MAX);
strncpy(scanner_id, id->payload.bjnp.id, id_len);
scanner_id[id_len] = '\0';
@@ -815,7 +815,7 @@ get_scanner_name(const bjnp_sockaddr_t *scanner_sa, char *host)
struct addrinfo *result;
char ip_address[BJNP_HOST_MAX];
int port;
- int error;
+ int error;
int match = 0;
int level;
char service[64];
@@ -832,10 +832,10 @@ get_scanner_name(const bjnp_sockaddr_t *scanner_sa, char *host)
/* do reverse name lookup, if hostname can not be found return ip-address */
- if( (error = getnameinfo( &(scanner_sa -> addr) , sa_size( scanner_sa),
+ if( (error = getnameinfo( &(scanner_sa -> addr) , sa_size( scanner_sa),
host, BJNP_HOST_MAX , NULL, 0, NI_NAMEREQD) ) != 0 )
{
- PDBG (bjnp_dbg(LOG_INFO, "get_scanner_name: Name for %s not found : %s\n",
+ PDBG (bjnp_dbg(LOG_INFO, "get_scanner_name: Name for %s not found : %s\n",
ip_address, gai_strerror(error) ) );
strcpy(host, ip_address);
return level;
@@ -843,19 +843,19 @@ get_scanner_name(const bjnp_sockaddr_t *scanner_sa, char *host)
else
{
sprintf(service, "%d", port);
- /* some buggy routers return rubbish if reverse lookup fails, so
+ /* some buggy routers return rubbish if reverse lookup fails, so
* we do a forward lookup on the received name to see if the result matches */
- if (getaddrinfo(host , service, NULL, &results) == 0)
+ if (getaddrinfo(host , service, NULL, &results) == 0)
{
result = results;
- while (result != NULL)
+ while (result != NULL)
{
if(sa_is_equal( scanner_sa, (bjnp_sockaddr_t *)result-> ai_addr))
{
/* found match, good */
- PDBG (bjnp_dbg (LOG_INFO,
+ PDBG (bjnp_dbg (LOG_INFO,
"get_scanner_name: Forward lookup for %s succeeded, using as hostname\n", host));
match = 1;
level = BJNP_ADDRESS_HAS_FQDN;
@@ -865,15 +865,15 @@ get_scanner_name(const bjnp_sockaddr_t *scanner_sa, char *host)
}
freeaddrinfo(results);
- if (match != 1)
+ if (match != 1)
{
- PDBG (bjnp_dbg (LOG_INFO,
- "get_scanner_name: Forward lookup for %s succeeded, IP-address does not match, using IP-address %s instead\n",
+ PDBG (bjnp_dbg (LOG_INFO,
+ "get_scanner_name: Forward lookup for %s succeeded, IP-address does not match, using IP-address %s instead\n",
host, ip_address));
strcpy (host, ip_address);
}
- }
- else
+ }
+ else
{
/* forward lookup failed, use ip-address */
PDBG ( bjnp_dbg (LOG_INFO, "get_scanner_name: Forward lookup of %s failed, using IP-address", ip_address));
@@ -956,8 +956,8 @@ static int create_broadcast_socket( const bjnp_sockaddr_t * local_addr )
return sockfd;
}
-static int
-prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
+static int
+prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
const bjnp_sockaddr_t *broadcast_sa, bjnp_sockaddr_t * dest_sa)
{
/*
@@ -975,7 +975,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
if ( local_sa == NULL )
{
- PDBG (bjnp_dbg (LOG_DEBUG,
+ PDBG (bjnp_dbg (LOG_DEBUG,
"prepare_socket: %s is not a valid IPv4 interface, skipping...\n",
if_name));
return -1;
@@ -994,7 +994,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
{
/* not a valid interface */
- PDBG (bjnp_dbg (LOG_DEBUG,
+ PDBG (bjnp_dbg (LOG_DEBUG,
"prepare_socket: %s is not a valid IPv4 interface, skipping...\n",
if_name));
return -1;
@@ -1008,7 +1008,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
/* we fill port when we send the broadcast */
dest_sa -> ipv4.sin_port = htons(0);
- if ( (socket = create_broadcast_socket( &local_sa_copy) ) != -1)
+ if ( (socket = create_broadcast_socket( &local_sa_copy) ) != -1)
{
PDBG (bjnp_dbg (LOG_INFO, "prepare_socket: %s is IPv4 capable, sending broadcast, socket = %d\n",
if_name, socket));
@@ -1030,7 +1030,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
{
/* not a valid interface */
- PDBG (bjnp_dbg (LOG_DEBUG,
+ PDBG (bjnp_dbg (LOG_DEBUG,
"prepare_socket: %s is not a valid IPv6 interface, skipping...\n",
if_name));
return -1;
@@ -1043,7 +1043,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
dest_sa -> ipv6.sin6_port = htons(0);
inet_pton(AF_INET6, "ff02::1", dest_sa -> ipv6.sin6_addr.s6_addr);
- if ( (socket = create_broadcast_socket( &local_sa_copy ) ) != -1)
+ if ( (socket = create_broadcast_socket( &local_sa_copy ) ) != -1)
{
PDBG (bjnp_dbg (LOG_INFO, "prepare_socket: %s is IPv6 capable, sending broadcast, socket = %d\n",
if_name, socket));
@@ -1055,7 +1055,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
return -1;
}
}
- }
+ }
break;
#endif
@@ -1084,7 +1084,7 @@ bjnp_send_broadcast (int sockfd, const bjnp_sockaddr_t * broadcast_addr, int por
if( dest_addr.addr.sa_family == AF_INET6)
{
dest_addr.ipv6.sin6_port = htons(port);
- }
+ }
#endif
if ((num_bytes = sendto (sockfd, &cmd, size, 0,
@@ -1104,7 +1104,7 @@ bjnp_send_broadcast (int sockfd, const bjnp_sockaddr_t * broadcast_addr, int por
static void
bjnp_finish_job (int devno)
{
-/*
+/*
* Signal end of scanjob to scanner
*/
@@ -1138,7 +1138,7 @@ bjnp_finish_job (int devno)
static int
bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *status, int size)
{
-/*
+/*
* send details of user to the scanner
*/
@@ -1149,7 +1149,7 @@ bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *s
int buf_len; /* length of the whole command buffer */
struct POLL_DETAILS *poll;
struct POLL_RESPONSE *response;
- char user_host[256];
+ char user_host[256];
time_t t;
int user_host_len;
@@ -1174,27 +1174,27 @@ bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *s
len = 80;
break;
case 2:
- poll->extensions.type2.dialog = htonl(device[devno].dialog);
- charTo2byte(poll->extensions.type2.user_host, user_host, user_host_len);
+ poll->extensions.type2.dialog = htonl(device[devno].dialog);
+ charTo2byte(poll->extensions.type2.user_host, user_host, user_host_len);
poll->extensions.type2.unknown_1 = htonl(0x14);
- poll->extensions.type2.unknown_2 = htonl(0x10);
+ poll->extensions.type2.unknown_2 = htonl(0x10);
t = time (NULL);
- strftime (poll->extensions.type2.ascii_date,
- sizeof (poll->extensions.type2.ascii_date),
+ strftime (poll->extensions.type2.ascii_date,
+ sizeof (poll->extensions.type2.ascii_date),
"%Y%m%d%H%M%S", localtime (&t));
len = 116;
break;
case 5:
- poll->extensions.type5.dialog = htonl(device[devno].dialog);
- charTo2byte(poll->extensions.type5.user_host, user_host, user_host_len);
+ poll->extensions.type5.dialog = htonl(device[devno].dialog);
+ charTo2byte(poll->extensions.type5.user_host, user_host, user_host_len);
poll->extensions.type5.unknown_1 = htonl(0x14);
- poll->extensions.type5.key = htonl(device[devno].status_key);
+ poll->extensions.type5.key = htonl(device[devno].status_key);
len = 100;
break;
default:
PDBG (bjnp_dbg (LOG_INFO, "bjnp_poll_scanner: unknown packet type: %d\n", type));
return -1;
- };
+ };
/* we can only now set the header as we now know the length of the payload */
set_cmd_for_dev (devno, (struct BJNP_command *) cmd_buf, CMD_UDP_POLL,
len);
@@ -1218,7 +1218,7 @@ bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *s
{
return BJNP_RESTART_POLL;
}
- if ( (response -> result[2] & 0x80) != 0)
+ if ( (response -> result[2] & 0x80) != 0)
{
memcpy( status, response->status, size);
PDBG( bjnp_dbg(LOG_INFO, "bjnp_poll_scanner: received button status!\n"));
@@ -1234,7 +1234,7 @@ bjnp_poll_scanner (int devno, char type,char *hostname, char *user, SANE_Byte *s
static void
bjnp_send_job_details (int devno, char *hostname, char *user, char *title)
{
-/*
+/*
* send details of scanjob to scanner
*/
@@ -1277,7 +1277,7 @@ bjnp_send_job_details (int devno, char *hostname, char *user, char *title)
static int
bjnp_get_scanner_mac_address ( int devno, char *mac_address )
{
-/*
+/*
* send discover to scanner
*/
@@ -1297,7 +1297,7 @@ bjnp_get_scanner_mac_address ( int devno, char *mac_address )
{
PDBG (bjnp_dbg (LOG_DEBUG2, "bjnp_get_scanner_mac_address: Discover response:\n"));
PDBG (bjnp_hexdump (LOG_DEBUG2, resp_buf, resp_len));
- u8tohex( mac_address, resp -> mac_addr, sizeof( resp -> mac_addr ) );
+ u8tohex( mac_address, resp -> mac_addr, sizeof( resp -> mac_addr ) );
return 0;
}
return -1;
@@ -1307,7 +1307,7 @@ static int
bjnp_write (int devno, const SANE_Byte * buf, size_t count)
{
/*
- * This function writes TCP data to the scanner.
+ * This function writes TCP data to the scanner.
* Returns: number of bytes written to the scanner
*/
int sent_bytes;
@@ -1355,9 +1355,9 @@ static int
bjnp_send_read_request (int devno)
{
/*
- * This function reads responses from the scanner.
+ * This function reads responses from the scanner.
* Returns: 0 on success, else -1
- *
+ *
*/
int sent_bytes;
int terrno;
@@ -1398,8 +1398,8 @@ bjnp_recv_header (int devno, size_t *payload_size )
/*
* This function receives the response header to bjnp commands.
* devno device number
- * size: return value for data size returned by scanner
- * Returns:
+ * size: return value for data size returned by scanner
+ * Returns:
* SANE_STATUS_IO_ERROR when any IO error occurs
* SANE_STATUS_GOOD in case no errors were encountered
*/
@@ -1443,7 +1443,7 @@ bjnp_recv_header (int devno, size_t *payload_size )
{
terrno = errno;
PDBG (bjnp_dbg (LOG_CRIT,
- "bjnp_recv_header: ERROR - could not read response header (select timed out after %d ms)!\n",
+ "bjnp_recv_header: ERROR - could not read response header (select timed out after %d ms)!\n",
device[devno].bjnp_timeout ) );
errno = terrno;
return SANE_STATUS_IO_ERROR;
@@ -1512,7 +1512,7 @@ bjnp_init_device_structure(int dn, bjnp_sockaddr_t *sa, bjnp_protocol_defs_t *pr
device[dn].open = 0;
#ifdef PIXMA_BJNP_USE_STATUS
- device[dn].polling_status = BJNP_POLL_STOPPED;
+ device[dn].polling_status = BJNP_POLL_STOPPED;
device[dn].dialog = 0;
device[dn].status_key = 0;
#endif
@@ -1521,7 +1521,7 @@ bjnp_init_device_structure(int dn, bjnp_sockaddr_t *sa, bjnp_protocol_defs_t *pr
device[dn].tcp_socket = -1;
device[dn].addr = (bjnp_sockaddr_t *) malloc(sizeof ( bjnp_sockaddr_t) );
- memset( device[dn].addr, 0, sizeof( bjnp_sockaddr_t ) );
+ memset( device[dn].addr, 0, sizeof( bjnp_sockaddr_t ) );
memcpy(device[dn].addr, sa, sa_size((bjnp_sockaddr_t *)sa) );
device[dn].address_level = get_scanner_name(sa, name);
device[dn].session_id = 0;
@@ -1530,7 +1530,7 @@ bjnp_init_device_structure(int dn, bjnp_sockaddr_t *sa, bjnp_protocol_defs_t *pr
device[dn].bjnp_min_timeout = min_timeout;
device[dn].scanner_data_left = 0;
device[dn].last_cmd = 0;
- device[dn].blocksize = BJNP_BLOCKSIZE_START;
+ device[dn].blocksize = BJNP_BLOCKSIZE_START;
device[dn].last_block = 0;
/* fill mac_address */
@@ -1620,7 +1620,7 @@ bjnp_recv_data (int devno, SANE_Byte * buffer, size_t start_pos, size_t * len)
{
terrno = errno;
PDBG (bjnp_dbg (LOG_CRIT,
- "bjnp_recv_data: ERROR - could not read response payload (select timed out after %d ms)!\n",
+ "bjnp_recv_data: ERROR - could not read response payload (select timed out after %d ms)!\n",
device[devno].bjnp_timeout) );
errno = terrno;
*len = 0;
@@ -1646,10 +1646,10 @@ bjnp_recv_data (int devno, SANE_Byte * buffer, size_t start_pos, size_t * len)
}
static BJNP_Status
-bjnp_allocate_device (SANE_String_Const devname,
+bjnp_allocate_device (SANE_String_Const devname,
SANE_Int * dn, char *resulting_host)
{
- char method[BJNP_METHOD_MAX];
+ char method[BJNP_METHOD_MAX];
char host[BJNP_HOST_MAX];
char port[BJNP_PORT_MAX] = "";
char args[BJNP_ARGS_MAX];
@@ -1697,7 +1697,7 @@ bjnp_allocate_device (SANE_String_Const devname,
{
sprintf( port, "%d", protocol_defs->default_port );
}
-
+
hints.ai_flags = 0;
#ifdef ENABLE_IPV6
hints.ai_family = AF_UNSPEC;
@@ -1712,7 +1712,7 @@ bjnp_allocate_device (SANE_String_Const devname,
hints.ai_next = NULL;
result = getaddrinfo (host, port, &hints, &res );
- if (result != 0 )
+ if (result != 0 )
{
PDBG (bjnp_dbg (LOG_CRIT, "bjnp_allocate_device: ERROR - Cannot resolve host: %s port %s\n", host, port));
return SANE_STATUS_INVAL;
@@ -1724,7 +1724,7 @@ bjnp_allocate_device (SANE_String_Const devname,
while( cur != NULL)
{
/* create a new device structure for this address */
-
+
if (bjnp_no_devices == BJNP_NO_DEVICES)
{
PDBG (bjnp_dbg
@@ -1743,14 +1743,14 @@ bjnp_allocate_device (SANE_String_Const devname,
for (i = 0; i < bjnp_no_devices; i++)
{
- /* Check if found the scanner before, if so we use the best address
+ /* Check if found the scanner before, if so we use the best address
* but still make sure the scanner is listed only once.
- * We check for matching addresses as wel as matching mac_addresses as
+ * We check for matching addresses as wel as matching mac_addresses as
* an IPv6 host can have multiple adresses */
if ( strcmp( device[i].mac_address, device[bjnp_no_devices].mac_address ) == 0 )
{
- if ( device[i].address_level < device[bjnp_no_devices].address_level )
+ if ( device[i].address_level < device[bjnp_no_devices].address_level )
{
/* use the new address instead as it is better */
free (device[i].addr);
@@ -1768,7 +1768,7 @@ bjnp_allocate_device (SANE_String_Const devname,
device[i].bjnp_timeout = device[bjnp_no_devices].bjnp_min_timeout;
device[i].bjnp_min_timeout = device[bjnp_no_devices].bjnp_min_timeout;
}
- freeaddrinfo(res);
+ freeaddrinfo(res);
*dn = i;
bjnp_free_device_structure( bjnp_no_devices);
return BJNP_STATUS_ALREADY_ALLOCATED;
@@ -1795,8 +1795,8 @@ bjnp_allocate_device (SANE_String_Const devname,
return BJNP_STATUS_GOOD;
}
-static void add_scanner(SANE_Int *dev_no,
- const char *uri,
+static void add_scanner(SANE_Int *dev_no,
+ const char *uri,
SANE_Status (*attach_bjnp)
(SANE_String_Const devname,
SANE_String_Const makemodel,
@@ -1816,7 +1816,7 @@ static void add_scanner(SANE_Int *dev_no,
case BJNP_STATUS_GOOD:
if (get_scanner_id (*dev_no, makemodel) != 0)
{
- PDBG (bjnp_dbg (LOG_CRIT, "add_scanner: ERROR - Cannot read scanner make & model: %s\n",
+ PDBG (bjnp_dbg (LOG_CRIT, "add_scanner: ERROR - Cannot read scanner make & model: %s\n",
uri));
}
else
@@ -1829,7 +1829,7 @@ static void add_scanner(SANE_Int *dev_no,
attach_bjnp (uri, makemodel,
serial, pixma_devices);
- PDBG (bjnp_dbg (LOG_NOTICE, "add_scanner: New scanner added: %s, serial %s, mac addres: %s.\n",
+ PDBG (bjnp_dbg (LOG_NOTICE, "add_scanner: New scanner added: %s, serial %s, mac address: %s.\n",
uri, serial, device[*dev_no].mac_address));
}
break;
@@ -1845,7 +1845,7 @@ static void add_scanner(SANE_Int *dev_no,
}
}
-int rewrite_uri(char *uri, int timeout, int max_len)
+int add_default_timeout(char *uri, int timeout, int max_len)
{
char method[BJNP_METHOD_MAX];
char host[BJNP_HOST_MAX];
@@ -1869,7 +1869,7 @@ int rewrite_uri(char *uri, int timeout, int max_len)
sprintf(args, "timeout=%d", timeout);
}
- snprintf(uri, max_len -1, "bjnp://%s:%d/%s", host, port, args);
+ snprintf(uri, max_len -1, "%s://%s:%d/%s", method,host, port, args);
return 0;
}
@@ -1889,7 +1889,7 @@ sanei_bjnp_init (void)
bjnp_no_devices = 0;
}
-/**
+/**
* Find devices that implement the bjnp protocol
*
* The function attach is called for every device which has been found.
@@ -1911,7 +1911,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
int numbytes = 0;
struct BJNP_command cmd;
unsigned char resp_buf[2048];
- struct DISCOVER_RESPONSE *disc_resp = ( struct DISCOVER_RESPONSE *) & resp_buf;
+ struct DISCOVER_RESPONSE *disc_resp = ( struct DISCOVER_RESPONSE *) & resp_buf;
int socket_fd[BJNP_SOCK_MAX];
int no_sockets;
int i;
@@ -1921,19 +1921,19 @@ sanei_bjnp_find_devices (const char **conf_devices,
fd_set fdset;
fd_set active_fdset;
struct timeval timeout;
- char scanner_host[256];
+ char scanner_host[256];
char uri[256];
int dev_no;
int port;
int timeout_default = BJNP_TIMEOUT_DEFAULT;
bjnp_sockaddr_t broadcast_addr[BJNP_SOCK_MAX];
- bjnp_sockaddr_t scanner_sa;
+ bjnp_sockaddr_t scanner_sa;
socklen_t socklen;
bjnp_protocol_defs_t *protocol_defs;
memset( broadcast_addr, 0, sizeof( broadcast_addr) );
memset( &scanner_sa, 0 ,sizeof( scanner_sa ) );
- PDBG (bjnp_dbg (LOG_INFO, "sanei_bjnp_find_devices, pixma backend version: %d.%d.%d\n",
+ PDBG (bjnp_dbg (LOG_INFO, "sanei_bjnp_find_devices, pixma backend version: %d.%d.%d\n",
PIXMA_VERSION_MAJOR, PIXMA_VERSION_MINOR, PIXMA_VERSION_BUILD));
bjnp_no_devices = 0;
@@ -1954,7 +1954,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
timeout_default = atoi(conf_devices[i] + strlen("bjnp-timeout=") );
if (timeout_default < BJNP_TIMEOUT_DEFAULT)
{
- timeout_default = BJNP_TIMEOUT_DEFAULT;
+ timeout_default = BJNP_TIMEOUT_DEFAULT;
}
PDBG ( bjnp_dbg
(LOG_DEBUG, "Set new default timeout value: %d ms.", timeout_default));
@@ -1963,7 +1963,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
PDBG (bjnp_dbg
(LOG_DEBUG, "sanei_bjnp_find_devices: Adding scanner from pixma.conf: %s\n", conf_devices[i]));
strncpy(uri, conf_devices[i], sizeof(uri));
- rewrite_uri(uri, timeout_default, sizeof(uri));
+ add_default_timeout(uri, timeout_default, sizeof(uri));
add_scanner(&dev_no, uri, attach_bjnp, pixma_devices);
}
PDBG (bjnp_dbg
@@ -1988,10 +1988,10 @@ sanei_bjnp_find_devices (const char **conf_devices,
interface = interfaces;
while ((no_sockets < BJNP_SOCK_MAX) && (interface != NULL))
{
- if ( ! (interface -> ifa_flags & IFF_POINTOPOINT) &&
- ( (socket_fd[no_sockets] =
- prepare_socket( interface -> ifa_name,
- (bjnp_sockaddr_t *) interface -> ifa_addr,
+ if ( ! (interface -> ifa_flags & IFF_POINTOPOINT) &&
+ ( (socket_fd[no_sockets] =
+ prepare_socket( interface -> ifa_name,
+ (bjnp_sockaddr_t *) interface -> ifa_addr,
(bjnp_sockaddr_t *) interface -> ifa_broadaddr,
&broadcast_addr[no_sockets] ) ) != -1 ) )
{
@@ -2004,7 +2004,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
no_sockets++;
}
interface = interface->ifa_next;
- }
+ }
freeifaddrs (interfaces);
}
#else
@@ -2022,10 +2022,10 @@ sanei_bjnp_find_devices (const char **conf_devices,
bc_addr.ipv4.sin_port = htons(0);
bc_addr.ipv4.sin_addr.s_addr = htonl (INADDR_BROADCAST);
- socket_fd[no_sockets] = prepare_socket( "any_interface",
- &local,
- &bc_addr,
- &broadcast_addr[no_sockets] );
+ socket_fd[no_sockets] = prepare_socket( "any_interface",
+ &local,
+ &bc_addr,
+ &broadcast_addr[no_sockets] );
if (socket_fd[no_sockets] >= 0)
{
FD_SET (socket_fd[no_sockets], &fdset);
@@ -2039,10 +2039,10 @@ sanei_bjnp_find_devices (const char **conf_devices,
local.ipv6.sin6_family = AF_INET6;
local.ipv6.sin6_addr = in6addr_any;
- socket_fd[no_sockets] = prepare_socket( "any_interface",
- &local,
+ socket_fd[no_sockets] = prepare_socket( "any_interface",
+ &local,
NULL,
- &broadcast_addr[no_sockets] );
+ &broadcast_addr[no_sockets] );
if (socket_fd[no_sockets] >= 0)
{
FD_SET (socket_fd[no_sockets], &fdset);
@@ -2052,7 +2052,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
}
no_sockets++;
}
-#endif
+#endif
}
#endif
@@ -2065,7 +2065,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
while(bjnp_protocol_defs[j].protocol_version != PROTOCOL_NONE)
{
set_cmd_from_string (bjnp_protocol_defs[j].proto_string, &cmd, CMD_UDP_DISCOVER, 0);
- bjnp_send_broadcast ( socket_fd[i], &broadcast_addr[i],
+ bjnp_send_broadcast ( socket_fd[i], &broadcast_addr[i],
bjnp_protocol_defs[j].default_port, cmd, sizeof (cmd));
j++;
}
@@ -2092,7 +2092,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
{
socklen = sizeof(scanner_sa);
if ((numbytes =
- recvfrom (socket_fd[i], resp_buf, sizeof (resp_buf), 0,
+ recvfrom (socket_fd[i], resp_buf, sizeof (resp_buf), 0,
&(scanner_sa.addr), &socklen ) ) == -1)
{
PDBG (bjnp_dbg
@@ -2114,7 +2114,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
char bjnp_id[5];
strncpy(bjnp_id, disc_resp-> response.BJNP_id, 4);
bjnp_id[4] = '\0';
- PDBG (bjnp_dbg (LOG_INFO,
+ PDBG (bjnp_dbg (LOG_INFO,
"sanei_find_devices: Invalid discover response! Length = %d, Id = %s\n",
numbytes, bjnp_id ) );
break;
@@ -2135,7 +2135,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
sprintf (uri, "%s://%s:%d/timeout=%d", protocol_defs->method_string, scanner_host,
port, timeout_default);
- add_scanner( &dev_no, uri, attach_bjnp, pixma_devices);
+ add_scanner( &dev_no, uri, attach_bjnp, pixma_devices);
}
}
@@ -2154,9 +2154,9 @@ sanei_bjnp_find_devices (const char **conf_devices,
/** Open a BJNP device.
*
* The device is opened by its name devname and the device number is
- * returned in dn on success.
+ * returned in dn on success.
*
- * Device names consist of an URI
+ * Device names consist of an URI
* Where:
* type = bjnp
* hostname = resolvable name or IP-address
@@ -2182,13 +2182,13 @@ sanei_bjnp_open (SANE_String_Const devname, SANE_Int * dn)
result = bjnp_allocate_device (devname, dn, NULL);
if ( (result != BJNP_STATUS_GOOD) && (result != BJNP_STATUS_ALREADY_ALLOCATED ) ) {
- return SANE_STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
return SANE_STATUS_GOOD;
}
/** Close a BJNP device.
- *
+ *
* @param dn device number
*/
@@ -2274,7 +2274,7 @@ sanei_bjnp_set_timeout (SANE_Int devno, SANE_Int timeout)
* @param buffer buffer to store read data in
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_EOF - if zero bytes have been read
* - SANE_STATUS_IO_ERROR - if an error occured during the read
@@ -2288,7 +2288,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
SANE_Status result;
SANE_Status error;
size_t recvd;
- size_t read_size;
+ size_t read_size;
size_t read_size_max;
size_t requested;
@@ -2300,7 +2300,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
requested = *size;
PDBG (bjnp_dbg
- (LOG_DEBUG, "bjnp_read_bulk: 0x%lx = %ld bytes available at start\n",
+ (LOG_DEBUG, "bjnp_read_bulk: 0x%lx = %ld bytes available at start\n",
(unsigned long) device[dn].scanner_data_left,
(unsigned long) device[dn].scanner_data_left ) );
@@ -2309,7 +2309,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
PDBG (bjnp_dbg
(LOG_DEBUG,
"bjnp_read_bulk: Already received 0x%lx = %ld bytes, backend requested 0x%lx = %ld bytes\n",
- (unsigned long) recvd, (unsigned long) recvd,
+ (unsigned long) recvd, (unsigned long) recvd,
(unsigned long) requested, (unsigned long)requested ));
/* Check first if there is data in flight from the scanner */
@@ -2332,7 +2332,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
*size = recvd;
return SANE_STATUS_IO_ERROR;
}
- /* correct blocksize if applicable */
+ /* correct blocksize if applicable */
device[dn].blocksize = MAX (device[dn].blocksize, device[dn].scanner_data_left);
@@ -2341,7 +2341,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
/* the scanner will not react at all to a read request, when no more data is available */
/* we now determine end of data by comparing the payload size to the maximun blocksize */
/* this block is shorter than blocksize, so after this block we are done */
-
+
device[dn].last_block = 1;
}
}
@@ -2358,9 +2358,9 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
PDBG (bjnp_dbg
(LOG_DEBUG,
"bjnp_read_bulk: Try to read 0x%lx = %ld (of max 0x%lx = %ld) bytes\n",
- (unsigned long) read_size_max,
(unsigned long) read_size_max,
- (unsigned long) device[dn].scanner_data_left,
+ (unsigned long) read_size_max,
+ (unsigned long) device[dn].scanner_data_left,
(unsigned long) device[dn].scanner_data_left) );
result = bjnp_recv_data (dn, buffer , recvd, &read_size);
@@ -2369,14 +2369,14 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
*size = recvd;
return SANE_STATUS_IO_ERROR;
}
- PDBG (bjnp_dbg (LOG_DEBUG, "bjnp_read_bulk: Expected at most %ld bytes, received this time: %ld\n",
+ PDBG (bjnp_dbg (LOG_DEBUG, "bjnp_read_bulk: Expected at most %ld bytes, received this time: %ld\n",
read_size_max, read_size) );
device[dn].scanner_data_left = device[dn].scanner_data_left - read_size;
recvd = recvd + read_size;
}
- PDBG (bjnp_dbg (LOG_DEBUG, "bjnp_read_bulk: %s: Returning %ld bytes, backend expexts %ld\n",
+ PDBG (bjnp_dbg (LOG_DEBUG, "bjnp_read_bulk: %s: Returning %ld bytes, backend expexts %ld\n",
(recvd == *size)? "OK": "NOTICE",recvd, *size ) );
*size = recvd;
if ( *size == 0 )
@@ -2393,7 +2393,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
* @param buffer buffer to write to device
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_IO_ERROR - if an error occured during the write
* - SANE_STATUS_INVAL - on every other error
@@ -2466,7 +2466,7 @@ sanei_bjnp_write_bulk (SANE_Int dn, const SANE_Byte * buffer, size_t * size)
* @param buffer buffer to store read data in
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_EOF - if zero bytes have been read
* - SANE_STATUS_IO_ERROR - if an error occured during the read
@@ -2491,7 +2491,7 @@ sanei_bjnp_read_int (SANE_Int dn, SANE_Byte * buffer, size_t * size)
int resp_len;
int timeout;
int seconds;
-
+
PDBG (bjnp_dbg
(LOG_INFO, "bjnp_read_int(%d, bufferptr, 0x%lx = %ld):\n", dn,
(unsigned long) *size, (unsigned long) *size));
@@ -2523,7 +2523,7 @@ sanei_bjnp_read_int (SANE_Int dn, SANE_Byte * buffer, size_t * size)
case BJNP_POLL_STARTED:
/* we use only seonds accuracy between poll attempts */
timeout = device[dn].bjnp_timeout /1000;
-
+
do
{
if ( (resp_len = bjnp_poll_scanner (dn, 2, hostname, getusername (), buffer, *size ) ) < 0 )
diff --git a/backend/pixma_bjnp.h b/backend/pixma_bjnp.h
index 998c331..a27082c 100644
--- a/backend/pixma_bjnp.h
+++ b/backend/pixma_bjnp.h
@@ -43,7 +43,7 @@
If you do not wish that, delete this exception notice.
*/
/** @file sanei_bjnp.h
- * This file provides a generic BJNP interface.
+ * This file provides a generic BJNP interface.
*/
#ifndef sanei_bjnp_h
@@ -65,7 +65,7 @@ extern void sanei_bjnp_init (void);
/** Find scanners responding to a BJNP broadcast.
*
- * The function sanei_bjnp_attach is called for every device which has
+ * The function sanei_bjnp_attach is called for every device which has
* been found.
* Serial is the address of the scanner in human readable form of max
* SERIAL_MAX characters
@@ -91,9 +91,9 @@ sanei_bjnp_find_devices (const char **conf_devices,
/** Open a BJNP device.
*
* The device is opened by its name devname and the device number is
- * returned in dn on success.
+ * returned in dn on success.
*
- * Device names consist of an URI
+ * Device names consist of an URI
* Where:
* method = bjnp
* hostname = resolvable name or IP-address
@@ -112,7 +112,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
extern SANE_Status sanei_bjnp_open (SANE_String_Const devname, SANE_Int * dn);
/** Close a BJNP device.
- *
+ *
* @param dn device number
*/
@@ -133,7 +133,7 @@ extern SANE_Status sanei_bjnp_activate (SANE_Int dn);
extern SANE_Status sanei_bjnp_deactivate (SANE_Int dn);
/** Set the libbjnp timeout for bulk and interrupt reads.
- *
+ *
* @param devno device number
* @param timeout the new timeout in ms
*/
@@ -152,7 +152,7 @@ extern void sanei_bjnp_set_timeout (SANE_Int devno, SANE_Int timeout);
* @param buffer buffer to store read data in
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_EOF - if zero bytes have been read
* - SANE_STATUS_IO_ERROR - if an error occured during the read
@@ -171,7 +171,7 @@ sanei_bjnp_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size);
* @param buffer buffer to write to device
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_IO_ERROR - if an error occured during the write
* - SANE_STATUS_INVAL - on every other error
@@ -188,7 +188,7 @@ sanei_bjnp_write_bulk (SANE_Int dn, const SANE_Byte * buffer, size_t * size);
* @param buffer buffer to store read data in
* @param size size of the data
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on succes
* - SANE_STATUS_EOF - if zero bytes have been read
* - SANE_STATUS_IO_ERROR - if an error occured during the read
diff --git a/backend/pixma_bjnp_private.h b/backend/pixma_bjnp_private.h
index 9ecc6ae..84f5c3f 100644
--- a/backend/pixma_bjnp_private.h
+++ b/backend/pixma_bjnp_private.h
@@ -1,5 +1,5 @@
/* SANE - Scanner Access Now Easy.
-
+
Copyright (C) 2008 by Louis Lagendijk
This file is part of the SANE package.
@@ -51,13 +51,13 @@
If you do not wish that, delete this exception notice.
*/
-/*
- * BJNP definitions
+/*
+ * BJNP definitions
*/
/* selection of options */
/* This works now, disable when it gives you problems */
-#define PIXMA_BJNP_USE_STATUS 1
+#define PIXMA_BJNP_USE_STATUS 1
/* sizes */
@@ -80,7 +80,7 @@
/* timers */
#define BJNP_BROADCAST_INTERVAL 10 /* ms between broadcasts */
#define BJNP_BC_RESPONSE_TIMEOUT 500 /* waiting time for broadc. responses */
-#define BJNP_TIMEOUT_DEFAULT 1000 /* minimum tiemout value for network operations */
+#define BJNP_TIMEOUT_DEFAULT 10000 /* minimum tiemout value for network operations */
#define BJNP_USLEEP_MS 1000 /* sleep for 1 msec */
/* retries */
@@ -116,14 +116,14 @@ typedef enum bjnp_port_e
BJNP_PORT_4 = 8614
} bjnp_port_t;
-typedef enum
+typedef enum
{
PROTOCOL_BJNP = 0,
PROTOCOL_MFNP = 1,
PROTOCOL_NONE =2
} bjnp_protocol_t;
-typedef struct
+typedef struct
{
bjnp_protocol_t protocol_version;
int default_port;
@@ -131,7 +131,7 @@ typedef struct
char * method_string;
} bjnp_protocol_defs_t;
-bjnp_protocol_defs_t bjnp_protocol_defs[] =
+bjnp_protocol_defs_t bjnp_protocol_defs[] =
{
{PROTOCOL_BJNP, BJNP_PORT_SCAN,"BJNP", "bjnp"},
{PROTOCOL_MFNP, MFNP_PORT_SCAN,"MFNP", "mfnp"},
@@ -194,7 +194,7 @@ struct __attribute__ ((__packed__)) DISCOVER_RESPONSE
unsigned char ipv4_addr[4];
} ipv4;
struct __attribute__ ((__packed__)) {
- unsigned char ipv6_addr_1[16];
+ unsigned char ipv6_addr_1[16];
unsigned char ipv6_addr_2[16];
} ipv6;
} addresses;
@@ -227,7 +227,7 @@ struct __attribute__ ((__packed__)) POLL_DETAILS
char empty1[6]; /* 0 */
char user_host[64]; /* unicode user <space> <space> hostname */
uint64_t emtpy2; /* 0 */
- } type1; /* length = 80 */
+ } type1; /* length = 80 */
struct __attribute__ ((__packed__)) {
uint16_t empty_1; /* 00 00 */
@@ -256,7 +256,7 @@ struct __attribute__ ((__packed__)) POLL_DETAILS
struct __attribute__ ((__packed__)) POLL_RESPONSE
{
struct BJNP_command cmd; /* command header */
-
+
unsigned char result[4]; /* unknown stuff, result[2] = 80 -> status is available*/
/* result[8] is dialog, size? */
uint32_t dialog; /* to be returned in next request */
@@ -270,7 +270,7 @@ struct __attribute__ ((__packed__)) POLL_RESPONSE
struct __attribute__ ((__packed__)) IDENTITY
{
struct BJNP_command cmd;
- union __attribute__ ((__packed__))
+ union __attribute__ ((__packed__))
{
struct __attribute__ ((__packed__)) payload_s
{
@@ -343,7 +343,7 @@ typedef enum
typedef struct device_s
{
int open; /* connection to scanner is opened */
-
+
/* protocol version */
int protocol;
char *protocol_string;
@@ -380,4 +380,3 @@ typedef struct device_s
uint32_t status_key; /* key of last received status message */
#endif
} bjnp_device_t;
-
diff --git a/backend/pixma_common.c b/backend/pixma_common.c
index 2882453..82c4fde 100644
--- a/backend/pixma_common.c
+++ b/backend/pixma_common.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2008 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -933,7 +933,7 @@ pixma_read_image (pixma_t * s, void *buf, unsigned len)
if (result == 0)
{ /* end of image? */
s->ops->finish_scan (s);
- if (s->cur_image_size != s->param->image_size)
+ if ((s->cur_image_size != s->param->image_size) && !s->param->mode_jpeg)
{
pixma_dbg (1, "WARNING:image size mismatches\n");
pixma_dbg (1,
@@ -947,7 +947,7 @@ pixma_read_image (pixma_t * s, void *buf, unsigned len)
"BUG:received data not multiple of line_size\n");
}
}
- if (s->cur_image_size < s->param->image_size)
+ if ((s->cur_image_size < s->param->image_size) && !s->param->mode_jpeg)
{
s->underrun = 1;
ib.wptr = fill_pixels (s, ib.wptr, ib.wend, 0xff);
diff --git a/backend/pixma_common.h b/backend/pixma_common.h
index 6c55c71..c0ed4ba 100644
--- a/backend/pixma_common.h
+++ b/backend/pixma_common.h
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
This file is part of the SANE package.
diff --git a/backend/pixma_imageclass.c b/backend/pixma_imageclass.c
index 8ad0083..9301bc6 100644
--- a/backend/pixma_imageclass.c
+++ b/backend/pixma_imageclass.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2009 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2008 Dennis Lou, dlou 99 at yahoo dot com
@@ -83,6 +83,7 @@
#define MF8300_PID 0x2708
#define MF4500_PID 0x2736
#define MF4410_PID 0x2737
+#define D550_PID 0x2738
#define MF3010_PID 0x2759
#define MF4570_PID 0x275a
#define MF4800_PID 0x2773
@@ -103,8 +104,22 @@
#define MF820_PID 0x27a6
#define MF220_PID 0x27a8
#define MF210_PID 0x27a9
+#define MF620_PID 0x27b4
+#define MF410_PID 0x27c0
+#define MF510_PID 0x27c2
#define MF230_PID 0x27d1
#define MF240_PID 0x27d2
+#define MF630_PID 0x27e1
+#define MF634_PID 0x27e2
+#define MF730_PID 0x27e4
+#define MF731_PID 0x27e5
+#define D570_PID 0x27e8
+#define MF110_PID 0x27ed
+#define MF520_PID 0x27f0
+#define MF420_PID 0x27f1
+#define MF260_PID 0x27f4
+#define MF740_PID 0x27fb
+#define MF640_PID 0x27fe
enum iclass_state_t
@@ -333,7 +348,7 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
s->cfg->pid == MF8030_PID)
{ /* 32bit size */
*datalen = mf->cb.reslen - hlen;
- *size = (*datalen + hlen == 512) ? pixma_get_be32 (mf->cb.buf + 4) - *datalen : 0;
+ *size = (*datalen + hlen == 512) ? pixma_get_be32 (mf->cb.buf + 4) - *datalen : *size;
memcpy (data, mf->cb.buf + hlen, *datalen);
}
PDBG (pixma_dbg (11, "*request_image_block***** size = %u *****\n", *size));
@@ -351,7 +366,7 @@ read_image_block (pixma_t * s, uint8_t * data, unsigned size)
iclass_t *mf = (iclass_t *) s->subdriver;
int error;
unsigned maxchunksize, chunksize, count = 0;
-
+
maxchunksize = MAX_CHUNK_SIZE * ((mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
@@ -704,7 +719,7 @@ iclass_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
}
first_block_size = 0;
- error = request_image_block (s, 4, &info, &block_size,
+ error = request_image_block (s, 4, &info, &block_size,
mf->blkptr + mf->blk_len, &first_block_size);
/* add current block to remainder of previous */
mf->blk_len += first_block_size;
@@ -919,6 +934,7 @@ const pixma_config_t pixma_iclass_devices[] = {
DEV ("Canon imageCLASS MF3240", "MF3240", MF3200_PID, 600, 0, 640, 877, 0),
DEV ("Canon imageClass MF6500", "MF6500", MF6500_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon imageCLASS MF4410", "MF4410", MF4410_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
+ DEV ("Canon imageCLASS D550", "D550", D550_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF4500 Series", "MF4500", MF4500_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF3010", "MF3010", MF3010_PID, 600, 0, 640, 877, 0),
DEV ("Canon i-SENSYS MF4700 Series", "MF4700", MF4700_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
@@ -934,14 +950,30 @@ const pixma_config_t pixma_iclass_devices[] = {
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),
+ DEV ("Canon imageRUNNER 1133", "iR1133", 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),
DEV ("Canon imageClass MF810/820", "MF810/820", MF820_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
- DEV ("Canon i-SENSYS MF220 Series", "MF220", MF220_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
- DEV ("Canon i-SENSYS MF210 Series", "MF210", MF210_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
- DEV ("Canon i-SENSYS MF230 Series", "MF230", MF230_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
- DEV ("Canon i-SENSYS MF240 Series", "MF240", MF240_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
+ DEV ("Canon i-SENSYS MF220 Series", "MF220", MF220_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
+ DEV ("Canon i-SENSYS MF210 Series", "MF210", MF210_PID, 600, 0, 637, 1050, PIXMA_CAP_ADF), /* max. w = 216mm */
+ DEV ("Canon i-SENSYS MF620 Series", "MF620", MF620_PID, 600, 0, 637, 1050, PIXMA_CAP_ADF),
+ DEV ("Canon i-SENSYS MF410 Series", "MF410", MF410_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
+ DEV ("Canon i-SENSYS MF510 Series", "MF510", MF510_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF230 Series", "MF230", MF230_PID, 600, 0, 637, 1050, PIXMA_CAP_ADF), /* max. w = 216mm */
+ DEV ("Canon i-SENSYS MF240 Series", "MF240", MF240_PID, 600, 300, 634, 1050, PIXMA_CAP_ADF), /* max. w = 215mm, */
+ /* TODO: fix black stripes for 216mm @ 600dpi */
+ DEV ("Canon i-SENSYS MF630 Series", "MF630", MF630_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF730 Series", "MF730", MF730_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF731C", "MF731", MF731_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon imageCLASS MF634C", "MF632C/634C", MF634_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon imageCLASS MF733C", "MF731C/733C", MF731_PID, 600, 0, 637, 1050, PIXMA_CAP_ADFDUP), /* however, we need this for ethernet/wifi */
+ DEV ("Canon imageCLASS D570", "D570", D570_PID, 600, 0, 640, 877, 0),
+ DEV ("Canon i-SENSYS MF110 Series", "MF110", MF110_PID, 600, 0, 640, 1050, 0),
+ DEV ("Canon i-SENSYS MF520 Series", "MF520", MF520_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF420 Series", "MF420", MF420_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF260 Series", "MF260", MF260_PID, 600, 0, 640, 1050, 0),
+ DEV ("Canon i-SENSYS MF740 Series", "MF740", MF740_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
+ DEV ("Canon i-SENSYS MF640 Series", "MF640", MF640_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
DEV (NULL, NULL, 0, 0, 0, 0, 0, 0)
};
diff --git a/backend/pixma_io.h b/backend/pixma_io.h
index 9dc1afb..29bb38d 100644
--- a/backend/pixma_io.h
+++ b/backend/pixma_io.h
@@ -91,7 +91,7 @@ void pixma_io_cleanup (void);
* array of pixma_config_t which is terminated by setting
* pixma_config_t::name to \c NULL.
* \return Number of devices found */
-unsigned pixma_collect_devices (const char ** conf_devices,
+unsigned pixma_collect_devices (const char ** conf_devices,
const struct pixma_config_t *const
pixma_devices[]);
diff --git a/backend/pixma_io_sanei.c b/backend/pixma_io_sanei.c
index 8eec883..4710cf4 100644
--- a/backend/pixma_io_sanei.c
+++ b/backend/pixma_io_sanei.c
@@ -1,7 +1,7 @@
/* SANE - Scanner Access Now Easy.
* For limitations, see function sanei_usb_get_vendor_product().
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
This file is part of the SANE package.
@@ -106,9 +106,9 @@ get_scanner_info (unsigned devnr)
return si;
}
-static const struct pixma_config_t *lookup_scanner(const char *makemodel,
+static const struct pixma_config_t *lookup_scanner(const char *makemodel,
const struct pixma_config_t *const pixma_devices[])
-{
+{
int i;
const struct pixma_config_t *cfg;
char *match;
@@ -120,12 +120,12 @@ static const struct pixma_config_t *lookup_scanner(const char *makemodel,
{
/* loop through devices in class */
if ((match = strcasestr (makemodel, cfg->model)) != NULL)
- {
+ {
/* possible match found, make sure it is not a partial match */
/* MP600 and MP600R are different models! */
/* some models contain ranges, so check for a '-' too */
- if ((match[strlen(cfg->model)] == ' ') ||
+ if ((match[strlen(cfg->model)] == ' ') ||
(match[strlen(cfg->model)] == '\0') ||
(match[strlen(cfg->model)] == '-'))
{
@@ -159,8 +159,8 @@ attach (SANE_String_Const devname)
static SANE_Status
-attach_bjnp (SANE_String_Const devname, SANE_String_Const makemodel,
- SANE_String_Const serial,
+attach_bjnp (SANE_String_Const devname, SANE_String_Const makemodel,
+ SANE_String_Const serial,
const struct pixma_config_t *const pixma_devices[])
{
scanner_info_t *si;
@@ -417,7 +417,7 @@ pixma_connect (unsigned devnr, pixma_io_t ** handle)
error = map_error (sanei_bjnp_open (si->devname, &dev));
else
error = map_error (sanei_usb_open (si->devname, &dev));
-
+
if (error < 0)
return error;
io = (pixma_io_t *) calloc (1, sizeof (*io));
@@ -425,7 +425,7 @@ pixma_connect (unsigned devnr, pixma_io_t ** handle)
{
if (si -> interface == INT_BJNP)
sanei_bjnp_close (dev);
- else
+ else
sanei_usb_close (dev);
return PIXMA_ENOMEM;
}
diff --git a/backend/pixma_mp150.c b/backend/pixma_mp150.c
index dca0965..5f0a4ac 100644
--- a/backend/pixma_mp150.c
+++ b/backend/pixma_mp150.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2009 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -69,7 +69,7 @@
if ((error = (x)) < 0) \
return error; \
} while(0)
-
+
#define WAIT_INTERRUPT(x) do { \
error = handle_interrupt (s, x); \
if (s->cancel) \
@@ -168,6 +168,7 @@
#define MX420_PID 0x174f
#define MX880_PID 0x1750
+/* Generation 5 */
/* 2011 new devices (untested) */
#define MG2100_PID 0x1751
#define MG3100_PID 0x1752
@@ -234,13 +235,60 @@
#define MG5700_PID 0x178e
/* 2016 new devices (untested) */
+#define MB2700_PID 0x1792
+#define MB2100_PID 0x1793
+#define G3000_PID 0x1794
+#define G2000_PID 0x1795
#define TS9000_PID 0x179f
#define TS8000_PID 0x1800
#define TS6000_PID 0x1801
#define TS5000_PID 0x1802
#define MG3000_PID 0x180b
#define E470_PID 0x180c
-#define G3000_PID 0x181d
+#define E410_PID 0x181e
+
+/* 2017 new devices (untested) */
+#define G4000_PID 0x181d
+#define TS6100_PID 0x1822
+#define TS5100_PID 0x1825
+#define TS3100_PID 0x1827
+#define E3100_PID 0x1828
+
+/* 2018 new devices (untested) */
+#define MB5400_PID 0x178f
+#define MB5100_PID 0x1790
+#define TS9100_PID 0x1820
+#define TR8500_PID 0x1823
+#define TR7500_PID 0x1824
+#define TS9500_PID 0x185c
+#define LIDE400_PID 0x1912 /* tested */
+#define LIDE300_PID 0x1913 /* tested */
+
+/* 2019 new devices (untested) */
+#define TS8100_PID 0x1821
+#define G3010_PID 0x183b
+#define G4010_PID 0x183d
+#define TS9180_PID 0x183e
+#define TS8180_PID 0x183f
+#define TS6180_PID 0x1840
+#define TR8580_PID 0x1841
+#define TS8130_PID 0x1842
+#define TS6130_PID 0x1843
+#define TR8530_PID 0x1844
+#define TR7530_PID 0x1845
+#define XK50_PID 0x1846
+#define XK70_PID 0x1847
+#define TR4500_PID 0x1854
+#define E4200_PID 0x1855
+#define TS6200_PID 0x1856
+#define TS6280_PID 0x1857
+#define TS6230_PID 0x1858
+#define TS8200_PID 0x1859
+#define TS8280_PID 0x185a
+#define TS8230_PID 0x185b
+#define TS9580_PID 0x185d
+#define TR9530_PID 0x185e
+#define XK80_PID 0x1873
/* Generation 4 XML messages that encapsulates the Pixma protocol messages */
#define XML_START_1 \
@@ -388,6 +436,12 @@ is_scanning_from_adfdup (pixma_t * s)
}
static int
+is_scanning_jpeg (pixma_t *s)
+{
+ return s->param->mode_jpeg;
+}
+
+static int
is_scanning_from_tpu (pixma_t * s)
{
return (s->param->source == PIXMA_SOURCE_TPU);
@@ -441,7 +495,7 @@ static int
send_cmd_start_calibrate_ccd_3 (pixma_t * s)
{
mp150_t *mp = (mp150_t *) s->subdriver;
-
+
pixma_newcmd (&mp->cb, cmd_start_calibrate_ccd_3, 0, 0);
mp->cb.buf[3] = 0x01;
return pixma_exec (s, &mp->cb);
@@ -469,7 +523,7 @@ static int
has_paper (pixma_t * s)
{
mp150_t *mp = (mp150_t *) s->subdriver;
-
+
if (is_scanning_from_adfdup (s))
return (mp->current_status[1] == 0 || mp->current_status[2] == 0);
else
@@ -512,19 +566,19 @@ select_source (pixma_t * s)
data[0] = 1;
data[1] = 1;
break;
-
+
case PIXMA_SOURCE_ADF:
data[0] = 2;
data[5] = 1;
data[6] = 1;
break;
-
+
case PIXMA_SOURCE_ADFDUP:
data[0] = 2;
data[5] = 3;
data[6] = 3;
break;
-
+
case PIXMA_SOURCE_TPU:
data[0] = 4;
data[1] = 2;
@@ -656,7 +710,7 @@ get_cis_ccd_line_size (pixma_t * s)
return ((s->param->wx ? s->param->line_size / s->param->w * s->param->wx
: s->param->line_size) * ((is_ccd_grayscale (s) || is_ccd_lineart (s)) ? 3 : 1));
}
-
+
static unsigned
calc_shifting (pixma_t * s)
{
@@ -683,7 +737,7 @@ calc_shifting (pixma_t * s)
{
mp->color_shift = s->param->ydpi / ((s->param->ydpi < 1200) ? 150 : 75);
- if (is_scanning_from_tpu (s))
+ if (is_scanning_from_tpu (s))
mp->color_shift = s->param->ydpi / 75;
/* If you're trying to decipher this color-shifting code,
@@ -714,7 +768,7 @@ send_scan_param (pixma_t * s)
mp150_t *mp = (mp150_t *) s->subdriver;
uint8_t *data;
unsigned raw_width = calc_raw_width (mp, s->param);
- unsigned h = MIN (s->param->h + calc_shifting (s),
+ unsigned h = MIN (s->param->h + calc_shifting (s),
s->cfg->height * s->param->ydpi / 75);
/* TPU scan does not support lineart */
@@ -762,7 +816,14 @@ send_scan_param (pixma_t * s)
data[0x02] = 0x03;
data[0x03] = 0x03;
}
- data[0x05] = 0x01; /* This one also seen at 0. Don't know yet what's used for */
+ if (is_scanning_jpeg (s))
+ {
+ data[0x03] = 0x01;
+ }
+ else
+ {
+ data[0x05] = 0x01; /* This one also seen at 0. Don't know yet what's used for */
+ }
pixma_set_be16 (s->param->xdpi | 0x8000, data + 0x08);
pixma_set_be16 (s->param->ydpi | 0x8000, data + 0x0a);
/*PDBG (pixma_dbg (4, "*send_scan_param gen. 3+ ***** Setting: xdpi=%hi ydpi=%hi x=%i y=%i w=%i ***** \n",
@@ -772,7 +833,7 @@ send_scan_param (pixma_t * s)
pixma_set_be32 (raw_width, data + 0x14);
pixma_set_be32 (h, data + 0x18);
data[0x1c] = ((s->param->channels != 1) || is_ccd_grayscale (s) || is_ccd_lineart (s)) ? 0x08 : 0x04;
-
+
#ifdef DEBUG_TPU_48
data[0x1d] = 24;
#else
@@ -783,7 +844,14 @@ send_scan_param (pixma_t * s)
data[0x1f] = 0x01; /* This one also seen at 0. Don't know yet what's used for */
data[0x20] = 0xff;
- data[0x21] = 0x81;
+ if (is_scanning_jpeg (s))
+ {
+ data[0x21] = 0x83;
+ }
+ else
+ {
+ data[0x21] = 0x81;
+ }
data[0x23] = 0x02;
data[0x24] = 0x01;
@@ -882,6 +950,7 @@ read_image_block (pixma_t * s, uint8_t * header, uint8_t * data)
return datalen;
memcpy (header, mp->cb.buf, hlen);
+
if (datalen >= hlen)
{
datalen -= hlen;
@@ -959,12 +1028,14 @@ handle_interrupt (pixma_t * s, int timeout)
* tt: target
* rr: scan resolution
* poll event with 'scanimage -A' */
- if (s->cfg->pid == MG5400_PID
+ if (s->cfg->pid == MG5300_PID
+ || s->cfg->pid == MG5400_PID
|| s->cfg->pid == MG6200_PID
|| s->cfg->pid == MG6300_PID
|| s->cfg->pid == MX520_PID
|| s->cfg->pid == MX720_PID
|| s->cfg->pid == MX920_PID
+ || s->cfg->pid == MB2300_PID
|| s->cfg->pid == MB5000_PID)
/* button no. in buf[7]
* size in buf[10] 01=A4; 02=Letter; 08=10x15; 09=13x18; 0b=auto
@@ -977,6 +1048,15 @@ handle_interrupt (pixma_t * s, int timeout)
if (buf[7] & 2)
s->events = PIXMA_EV_BUTTON2 | buf[11] | buf[10]<<8 | buf[12]<<16; /* b/w scan */
}
+ else if (s->cfg->pid == LIDE300_PID
+ || s->cfg->pid == LIDE400_PID)
+ /* unknown value in buf[4]
+ * target in buf[0x13]
+ * always set button-1 */
+ {
+ if (buf[0x13])
+ s->events = PIXMA_EV_BUTTON1 | buf[0x13];
+ }
else
/* button no. in buf[0]
* original in buf[0]
@@ -1037,8 +1117,8 @@ wait_until_ready (pixma_t * s)
WAIT_INTERRUPT (1000);
if (mp->generation >= 3)
RET_IF_ERR (query_status_3 (s));
- else if (s->cfg->pid == MP600_PID ||
- s->cfg->pid == MP600R_PID ||
+ else if (s->cfg->pid == MP600_PID ||
+ s->cfg->pid == MP600R_PID ||
s->cfg->pid == MP800R_PID)
RET_IF_ERR (query_status (s));
if (--tmo == 0)
@@ -1052,8 +1132,8 @@ wait_until_ready (pixma_t * s)
}
static uint8_t *
-shift_colors (uint8_t * dptr, uint8_t * sptr,
- unsigned w, unsigned dpi, unsigned pid, unsigned c,
+shift_colors (uint8_t * dptr, uint8_t * sptr,
+ unsigned w, unsigned dpi, unsigned pid, unsigned c,
int * colshft, unsigned strshft)
{
unsigned i, sr, sg, sb, st;
@@ -1064,7 +1144,7 @@ shift_colors (uint8_t * dptr, uint8_t * sptr,
{
/* stripes shift for MP800, MP800R at 2400 dpi */
st = (i % 2 == 0) ? strshft : 0;
-
+
*sptr++ = *(dptr++ + sr + st);
if (c == 6) *sptr++ = *(dptr++ + sr + st);
*sptr++ = *(dptr++ + sg + st);
@@ -1076,7 +1156,7 @@ shift_colors (uint8_t * dptr, uint8_t * sptr,
}
static void
-reorder_pixels (uint8_t * linebuf, uint8_t * sptr, unsigned c, unsigned n,
+reorder_pixels (uint8_t * linebuf, uint8_t * sptr, unsigned c, unsigned n,
unsigned m, unsigned w, unsigned line_size)
{
unsigned i;
@@ -1095,7 +1175,7 @@ pack_48_24_bpc (uint8_t * sptr, unsigned n)
unsigned i;
uint8_t *cptr, lsb;
static uint8_t offset = 0;
-
+
cptr = sptr;
if (n % 2 != 0)
PDBG (pixma_dbg (3, "WARNING: misaligned image.\n"));
@@ -1109,9 +1189,9 @@ pack_48_24_bpc (uint8_t * sptr, unsigned n)
}
#endif
-/* This function deals both with PIXMA CCD sensors producing shifted color
+/* This function deals both with PIXMA CCD sensors producing shifted color
* planes images, Grayscale CCD scan and Generation >= 3 high dpi images.
- * Each complete line in mp->imgbuf is processed for shifting CCD sensor
+ * Each complete line in mp->imgbuf is processed for shifting CCD sensor
* color planes, reordering pixels above 600 dpi for Generation >= 3, and
* converting to Grayscale for CCD sensors. */
static unsigned
@@ -1121,19 +1201,28 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
unsigned c, lines, line_size, n, m, cw, cx;
uint8_t *sptr, *dptr, *gptr, *cptr;
+ if (s->param->mode_jpeg)
+ {
+ /* No post-processing, send raw JPEG data to main */
+ ib->rptr = mp->imgbuf;
+ ib->rend = mp->data_left_ofs;
+ return 0; /* # of non processed bytes */
+ }
+
+
c = ((is_ccd_grayscale (s) || is_ccd_lineart (s)) ? 3 : s->param->channels)
* ((s->param->software_lineart) ? 8 : s->param->depth) / 8;
cw = c * s->param->w;
cx = c * s->param->xs;
-
+
if (mp->generation >= 3)
n = s->param->xdpi / 600;
else /* FIXME: maybe need different values for CIS and CCD sensors */
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)
n = s->param->xdpi / 1200;
-
+
m = (n > 0) ? s->param->wx / n : 1;
sptr = dptr = gptr = cptr = mp->imgbuf;
line_size = get_cis_ccd_line_size (s);
@@ -1153,38 +1242,33 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
/*PDBG (pixma_dbg (4, "*post_process_image_data***** Processing with c=%u, n=%u, m=%u, w=%i, line_size=%u ***** \n",
c, n, m, s->param->wx, line_size));*/
if (s->cfg->pid != MG5300_PID && s->cfg->pid != MG6300_PID && c >= 3)
- dptr = shift_colors (dptr, sptr,
+ dptr = shift_colors (dptr, sptr,
s->param->wx, s->param->xdpi, s->cfg->pid, c,
mp->shift, mp->stripe_shift);
-
- /* special image format for *most* devices at high dpi.
- * MP220, MX360, MX370, MX890, MG5300 are exceptions */
+
+ /* special image format for *most* devices at high dpi.
+ * MP220, MX360 and generation 5 scanners are exceptions */
if (n > 0
&& s->cfg->pid != MP220_PID
+ && s->cfg->pid != MP490_PID
&& s->cfg->pid != MX360_PID
- && s->cfg->pid != MX370_PID
- && s->cfg->pid != MX530_PID
- && s->cfg->pid != MX890_PID
- && s->cfg->pid != MX720_PID
- && s->cfg->pid != MX920_PID
- && s->cfg->pid != MG3100_PID
- && s->cfg->pid != MG3500_PID
- && s->cfg->pid != MG3600_PID
- && s->cfg->pid != MG2100_PID
- && s->cfg->pid != MG5300_PID
- && s->cfg->pid != MG5400_PID
- && s->cfg->pid != MG5500_PID
- && s->cfg->pid != MG6300_PID
- && s->cfg->pid != MG6400_PID
- && s->cfg->pid != MG7100_PID
- && s->cfg->pid != MG7500_PID
- && s->cfg->pid != MG7700_PID
- && s->cfg->pid != MB5000_PID)
+ && (mp->generation < 5
+ /* generation 5 scanners *with* special image format */
+ || s->cfg->pid == MG2200_PID
+ || s->cfg->pid == MG3200_PID
+ || s->cfg->pid == MG4200_PID
+ || s->cfg->pid == MG5600_PID
+ || s->cfg->pid == MG5700_PID
+ || s->cfg->pid == MG6200_PID
+ || s->cfg->pid == MP230_PID
+ || s->cfg->pid == MX470_PID
+ || s->cfg->pid == MX510_PID
+ || s->cfg->pid == MX520_PID))
reorder_pixels (mp->linebuf, sptr, c, n, m, s->param->wx, line_size);
-
+
/* Crop line to selected borders */
memmove(cptr, sptr + cx, cw);
-
+
/* Color / Gray to Lineart convert */
if (s->param->software_lineart)
cptr = gptr = pixma_binarize_line (s->param, gptr, cptr, s->param->w, c);
@@ -1237,10 +1321,13 @@ mp150_open (pixma_t * s)
if (s->cfg->pid >= MP250_PID)
mp->generation = 4;
+ if (s->cfg->pid >= MG2100_PID) /* this scanners generation doesn't need */
+ mp->generation = 5; /* special image conversion @ high dpi */
+
/* And exceptions to be added here */
if (s->cfg->pid == MP140_PID)
mp->generation = 2;
-
+
PDBG (pixma_dbg (3, "*mp150_open***** This is a generation %d scanner. *****\n", mp->generation));
/* TPU info data setup */
@@ -1253,7 +1340,7 @@ mp150_open (pixma_t * s)
{
query_status (s);
handle_interrupt (s, 200);
- if (mp->generation == 3 && has_ccd_sensor (s))
+ if (mp->generation == 3 && has_ccd_sensor (s))
send_cmd_start_calibrate_ccd_3 (s);
}
return 0;
@@ -1324,14 +1411,16 @@ mp150_check_param (pixma_t * s, pixma_scan_param_t * sp)
sp->wx = calc_raw_width (mp, sp);
sp->line_size = sp->w * sp->channels * (((sp->software_lineart) ? 8 : sp->depth) / 8); /* bytes per line per color after cropping */
/*PDBG (pixma_dbg (4, "*mp150_check_param***** Final scan width and line-size: %i, %i *****\n", sp->wx, sp->line_size));*/
-
+
/* Some exceptions here for particular devices */
/* Those devices can scan up to legal 14" with ADF, but A4 11.7" in flatbed */
/* PIXMA_CAP_ADF also works for PIXMA_CAP_ADFDUP */
if ((s->cfg->cap & PIXMA_CAP_ADF) && sp->source == PIXMA_SOURCE_FLATBED)
sp->h = MIN (sp->h, 877 * sp->xdpi / 75);
-
- if (sp->source == PIXMA_SOURCE_TPU)
+
+ if (sp->source == PIXMA_SOURCE_TPU
+ || s->cfg->pid == LIDE300_PID
+ || s->cfg->pid == LIDE400_PID)
{
uint8_t k;
@@ -1340,10 +1429,10 @@ mp150_check_param (pixma_t * s, pixma_scan_param_t * sp)
k = MAX (sp->xdpi, 300) / sp->xdpi;
else
k = MAX (sp->xdpi, 150) / sp->xdpi;
- sp->x *= k;
+ sp->x *= k;
sp->xs *= k;
sp->y *= k;
- sp->w *= k;
+ sp->w *= k;
sp->wx *= k;
sp->h *= k;
sp->xdpi *= k;
@@ -1354,7 +1443,7 @@ mp150_check_param (pixma_t * s, pixma_scan_param_t * sp)
{
uint8_t k = 1;
- /* ADF/ADF duplex mode: max scan res is 600 dpi, at least for generation 4 */
+ /* ADF/ADF duplex mode: max scan res is 600 dpi, at least for generation 4+ */
if (mp->generation >= 4)
k = sp->xdpi / MIN (sp->xdpi, 600);
sp->x /= k;
@@ -1367,6 +1456,10 @@ mp150_check_param (pixma_t * s, pixma_scan_param_t * sp)
sp->ydpi = sp->xdpi;
}
+ sp->mode_jpeg = (s->cfg->cap & PIXMA_CAP_ADF_JPEG) &&
+ (sp->source == PIXMA_SOURCE_ADF ||
+ sp->source == PIXMA_SOURCE_ADFDUP);
+
/*PDBG (pixma_dbg (4, "*mp150_check_param***** Finally: channels=%u, depth=%u, x=%u, y=%u, w=%u, h=%u, xs=%u, wx=%u *****\n",
sp->channels, sp->depth, sp->x, sp->y, sp->w, sp->h, sp->xs, sp->wx));*/
return 0;
@@ -1381,9 +1474,15 @@ mp150_scan (pixma_t * s)
if (mp->state != state_idle)
return PIXMA_EBUSY;
- /* Generation 4: send XML dialog */
+ /* no paper inserted after first adf page => abort session */
+ if (s->param->adf_pageid && is_scanning_from_adf(s) && mp->adf_state == state_idle)
+ {
+ return PIXMA_ENO_PAPER;
+ }
+
+ /* Generation 4+: send XML dialog */
/* adf: first page or idle */
- if (mp->generation == 4 && mp->adf_state == state_idle)
+ if (mp->generation >= 4 && mp->adf_state == state_idle)
{
if (!send_xml_dialog (s, XML_START_1))
return PIXMA_EPROTO;
@@ -1423,9 +1522,9 @@ mp150_scan (pixma_t * s)
if (error < 0)
return error;
- /* Generation 4: send XML dialog */
+ /* Generation 4+: send XML dialog */
/* adf: first page or idle */
- if (mp->generation == 4 && mp->adf_state == state_idle)
+ if (mp->generation >= 4 && mp->adf_state == state_idle)
{
if (!send_xml_dialog (s, XML_END))
return PIXMA_EPROTO;
@@ -1442,14 +1541,14 @@ mp150_scan (pixma_t * s)
{
case PIXMA_ECANCELED:
case PIXMA_EBUSY:
- PDBG (pixma_dbg (2, "cmd e920 or d520 returned %s\n",
+ PDBG (pixma_dbg (2, "cmd e920 or d520 returned %s\n",
pixma_strerror (error)));
/* fall through */
case 0:
query_status (s);
break;
default:
- PDBG (pixma_dbg (1, "WARNING:cmd e920 or d520 failed %s\n",
+ PDBG (pixma_dbg (1, "WARNING:cmd e920 or d520 failed %s\n",
pixma_strerror (error)));
return error;
}
@@ -1496,7 +1595,7 @@ mp150_scan (pixma_t * s)
error = select_source (s);
if ((error >= 0) && (mp->generation >= 3) && has_ccd_sensor (s))
error = init_ccd_lamp_3 (s);
- if ((error >= 0) && !is_scanning_from_tpu (s))
+ if ((error >= 0) && !is_scanning_from_tpu (s) && !is_scanning_jpeg (s))
{
int i;
@@ -1511,8 +1610,6 @@ mp150_scan (pixma_t * s)
PDBG (pixma_dbg (4, "*mp150_scan***** scan next sheet from ADF *****\n"));
pixma_sleep (1000000);
}
-
-
if ((error >= 0) || (mp->generation >= 3))
mp->state = state_warmup;
if (error >= 0)
@@ -1610,7 +1707,7 @@ mp150_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
#endif
bytes_received = pack_48_24_bpc (mp->imgbuf + mp->data_left_len, bytes_received);
#endif
-#endif
+#endif
/* Post-process the image data */
mp->data_left_ofs = mp->imgbuf + mp->data_left_len + bytes_received;
mp->data_left_len = post_process_image_data (s, ib);
@@ -1638,7 +1735,7 @@ mp150_finish_scan (pixma_t * s)
/* Send the get TPU info message */
if (is_scanning_from_tpu (s) && mp->tpu_datalen == 0)
send_get_tpu_info_3 (s);
- /* FIXME: to process several pages ADF scan, must not send
+ /* FIXME: to process several pages ADF scan, must not send
* abort_session and start_session between pages (last_block=0x28) */
if (mp->generation <= 2 || !is_scanning_from_adf (s) || mp->last_block == 0x38)
{
@@ -1647,8 +1744,8 @@ mp150_finish_scan (pixma_t * s)
if (error < 0)
PDBG (pixma_dbg (1, "WARNING:abort_session() failed %d\n", error));
- /* Generation 4: send XML end of scan dialog */
- if (mp->generation == 4)
+ /* Generation 4+: send XML end of scan dialog */
+ if (mp->generation >= 4)
{
if (!send_xml_dialog (s, XML_END))
PDBG (pixma_dbg (1, "WARNING:XML_END dialog failed \n"));
@@ -1793,7 +1890,7 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA MG5200", "MG5200", MG5200_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG6100", "MG6100", MG6100_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2011) Generation 4 CIS/CCD */
+ /* Latest devices (2011) Generation 5 CIS/CCD */
DEVICE ("Canon PIXMA MG2100", "MG2100", MG2100_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG3100", "MG3100", MG3100_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG4100", "MG4100", MG4100_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1802,7 +1899,7 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA MP493", "MP493", MP493_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E500", "E500", E500_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2012) Generation 4 CIS */
+ /* Latest devices (2012) Generation 5 CIS */
DEVICE ("Canon PIXMA MX370 Series", "MX370", MX370_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MX430 Series", "MX430", MX430_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MX510 Series", "MX510", MX510_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
@@ -1811,7 +1908,7 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA E600 Series", "E600", E600_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MG4200", "MG4200", MG4200_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2013) Generation 4 CIS */
+ /* Latest devices (2013) Generation 5 CIS */
DEVICE ("Canon PIXMA E510", "E510", E510_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E610", "E610", E610_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MP230", "MP230", MP230_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1832,13 +1929,15 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA MG6500 Series", "MG6500", MG6500_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG7100 Series", "MG7100", MG7100_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2014) Generation 4 CIS */
+ /* Latest devices (2014) Generation 5 CIS */
DEVICE ("Canon PIXMA MX470 Series", "MX470", MX470_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MX530 Series", "MX530", MX530_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon MAXIFY MB5000 Series", "MB5000", MB5000_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
DEVICE ("Canon MAXIFY MB5300 Series", "MB5300", MB5300_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
DEVICE ("Canon MAXIFY MB2000 Series", "MB2000", MB2000_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
- DEVICE ("Canon MAXIFY MB2300 Series", "MB2300", MB2300_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
+ DEVICE ("Canon MAXIFY MB2100 Series", "MB2100", MB2100_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
+ DEVICE ("Canon MAXIFY MB2300 Series", "MB2300", MB2300_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon MAXIFY MB2700 Series", "MB2700", MB2700_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
DEVICE ("Canon PIXMA E400", "E400", E400_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E560", "E560", E560_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG7500 Series", "MG7500", MG7500_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1847,7 +1946,7 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA MG2900 Series", "MG2900", MG2900_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E460 Series", "E460", E460_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2015) Generation 4 CIS */
+ /* Latest devices (2015) Generation 5 CIS */
DEVICE ("Canon PIXMA MX490 Series", "MX490", MX490_PID, 600, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA E480 Series", "E480", E480_PID, 600, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA MG3600 Series", "MG3600", MG3600_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1856,14 +1955,59 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA MG6800 Series", "MG6800", MG6800_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG5700 Series", "MG5700", MG5700_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- /* Latest devices (2016) Generation 4 CIS */
- DEVICE ("Canon PIXMA TS9000 Series", "TS9000", TS9000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS8000 Series", "TS8000", TS8000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS6000 Series", "TS6000", TS6000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS5000 Series", "TS5000", TS5000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ /* Latest devices (2016) Generation 5 CIS */
+ DEVICE ("Canon PIXMA G3000", "G3000", G3000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA G2000", "G2000", G2000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS9000 Series", "TS9000", TS9000_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8000 Series", "TS8000", TS8000_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6000 Series", "TS6000", TS6000_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS5000 Series", "TS5000", TS5000_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA MG3000 Series", "MG3000", MG3000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E470 Series", "E470", E470_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA G4000 Series", "G3000", G3000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA E410 Series", "E410", E410_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+
+ /* Latest devices (2017) Generation 5 CIS */
+ DEVICE ("Canon PIXMA G4000", "G4000", G4000_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6100 Series", "TS6100", TS6100_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS5100 Series", "TS5100", TS5100_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3100 Series", "TS3100", TS3100_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA E3100 Series", "E3100", E3100_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+
+ /* Latest devices (2018) Generation 5 CIS */
+ DEVICE ("Canon MAXIFY MB5400 Series", "MB5400", MB5400_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
+ DEVICE ("Canon MAXIFY MB5100 Series", "MB5100", MB5100_PID, 1200, 0, 0, 638, 1050, PIXMA_CAP_CIS | PIXMA_CAP_ADFDUP),
+ DEVICE ("Canon PIXMA TS9100 Series", "TS9100", TS9100_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TR8500 Series", "TR8500", TR8500_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TR7500 Series", "TR7500", TR7500_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS9500 Series", "TS9500", TS9500_PID, 1200, 0, 600, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("CanoScan LiDE 400", "LIDE400", LIDE400_PID, 4800, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("CanoScan LiDE 300", "LIDE300", LIDE300_PID, 4800, 0, 0, 638, 877, PIXMA_CAP_CIS),
+
+ /* Latest devices (2019) Generation 5 CIS */
+ DEVICE ("Canon PIXMA TS8100 Series", "TS8100", TS8100_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA G3010 Series", "G3010", G3010_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA G4010 Series", "G4010", G4010_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS9180 Series", "TS9180", TS9180_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8180 Series", "TS8180", TS8180_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6180 Series", "TS6180", TS6180_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TR8580 Series", "TR8580", TR8580_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS8130 Series", "TS8130", TS8130_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6130 Series", "TS6130", TS6130_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TR8530 Series", "TR8530", TR8530_PID, 2400, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TR7530 Series", "TR7530", TR7530_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXUS XK50 Series", "XK50", XK50_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXUS XK70 Series", "XK70", XK70_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TR4500 Series", "TR4500", TR4500_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA E4200 Series", "E4200", E4200_PID, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS6200 Series", "TS6200", TS6200_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6280 Series", "TS6280", TS6280_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS6230 Series", "TS6230", TS6230_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8200 Series", "TS8200", TS8200_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8280 Series", "TS8280", TS8280_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8230 Series", "TS8230", TS8230_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS9580 Series", "TS9580", TS9580_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TR9530 Series", "TR9530", TR9530_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXUS XK80 Series", "XK80", XK80_PID, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
END_OF_DEVICE_LIST
};
diff --git a/backend/pixma_mp730.c b/backend/pixma_mp730.c
index 6bf3f42..c801daa 100644
--- a/backend/pixma_mp730.c
+++ b/backend/pixma_mp730.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2008 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -442,10 +442,10 @@ step1 (pixma_t * s)
default:
break;
}
-
+
activate (s, 0);
error = calibrate (s);
-
+
switch (s->cfg->pid)
{
case MF5730_PID:
@@ -836,7 +836,7 @@ const pixma_config_t pixma_mp730_devices[] = {
DEVICE ("PIXMA MP710", "MP710", MP710_PID, 1200, 637, 868, PIXMA_CAP_LINEART),
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 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/pixma_mp750.c b/backend/pixma_mp750.c
index c5ac335..5bd6ef0 100644
--- a/backend/pixma_mp750.c
+++ b/backend/pixma_mp750.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
This file is part of the SANE package.
@@ -229,8 +229,8 @@ is_ccd_grayscale (pixma_t * s)
static unsigned
get_cis_ccd_line_size (pixma_t * s)
{
- return (s->param->wx ? s->param->line_size / s->param->w * s->param->wx
- : s->param->line_size) * ((is_ccd_grayscale (s)) ? 3 : 1);
+ return (s->param->wx ? s->param->line_size / s->param->w * s->param->wx
+ : s->param->line_size) * ((is_ccd_grayscale (s)) ? 3 : 1);
}
static int
@@ -829,17 +829,17 @@ mp750_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
/* Color to Grayscale converion for CCD sensor */
if (is_ccd_grayscale (s)) {
- shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2], mp->stripe_shift, mp->line_size,
- mp->imgcol + mp->imgbuf_ofs);
+ shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2], mp->stripe_shift, mp->line_size,
+ mp->imgcol + mp->imgbuf_ofs);
/* dst: img, src: imgcol */
- rgb_to_gray (mp->img, mp->imgcol, n, c); /* cropping occurs later? */
+ rgb_to_gray (mp->img, mp->imgcol, n, c); /* cropping occurs later? */
PDBG (pixma_dbg (4, "*fill_buffer: did grayscale conversion \n"));
}
/* Color image processing */
else {
- shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2], mp->stripe_shift, mp->line_size,
+ shift_rgb (mp->rawimg, n, shift[0], shift[1], shift[2], mp->stripe_shift, mp->line_size,
mp->img + mp->imgbuf_ofs);
- PDBG (pixma_dbg (4, "*fill_buffer: no grayscale conversion---keep color \n"));
+ PDBG (pixma_dbg (4, "*fill_buffer: no grayscale conversion---keep color \n"));
}
/* entering remaining unprocessed bytes after last complete pixel into mp->rawimg buffer -- no influence on mp->img */
@@ -852,7 +852,7 @@ mp750_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
}
while (mp->shifted_bytes <= 0);
- if ((unsigned) mp->shifted_bytes < mp->last_block_size)
+ if ((unsigned) mp->shifted_bytes < mp->last_block_size)
{
if (is_ccd_grayscale (s))
ib->rptr = mp->img + mp->last_block_size/3 - mp->shifted_bytes/3; /* testing---works OK */
@@ -864,7 +864,7 @@ mp750_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
if (is_ccd_grayscale (s))
ib->rend = mp->img + mp->last_block_size/3; /* testing---works OK */
else
- ib->rend = mp->img + mp->last_block_size;
+ ib->rend = mp->img + mp->last_block_size;
return ib->rend - ib->rptr;
}
diff --git a/backend/pixma_mp810.c b/backend/pixma_mp810.c
index b03bebc..5d81e3f 100644
--- a/backend/pixma_mp810.c
+++ b/backend/pixma_mp810.c
@@ -1,6 +1,6 @@
/* SANE - Scanner Access Now Easy.
- Copyright (C) 2011-2016 Rolf Bensch <rolf at bensch hyphen online dot de>
+ Copyright (C) 2011-2019 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 2007-2009 Nicolas Martin, <nicols-guest at alioth dot debian dot org>
Copyright (C) 2006-2007 Wittawat Yamwong <wittawat@web.de>
@@ -1531,9 +1531,9 @@ pack_48_24_bpc (uint8_t * sptr, unsigned n)
}
#endif
-/* This function deals both with PIXMA CCD sensors producing shifted color
+/* This function deals both with PIXMA CCD sensors producing shifted color
* planes images, Grayscale CCD scan and Generation >= 3 high dpi images.
- * Each complete line in mp->imgbuf is processed for shifting CCD sensor
+ * Each complete line in mp->imgbuf is processed for shifting CCD sensor
* color planes, reordering pixels above 600 dpi for Generation >= 3, and
* converting to Grayscale for CCD sensors. */
static unsigned post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
@@ -2251,7 +2251,7 @@ static int mp810_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
#endif
bytes_received = pack_48_24_bpc (mp->imgbuf + mp->data_left_len, bytes_received);
#endif
-#endif
+#endif
/* Post-process the image data */
mp->data_left_ofs = mp->imgbuf + mp->data_left_len + bytes_received;
mp->data_left_len = post_process_image_data (s, ib);
@@ -2280,7 +2280,7 @@ static void mp810_finish_scan (pixma_t * s)
/* Send the get TPU info message */
if (is_scanning_from_tpu (s) && mp->tpu_datalen == 0)
send_get_tpu_info_3 (s);
- /* FIXME: to process several pages ADF scan, must not send
+ /* FIXME: to process several pages ADF scan, must not send
* abort_session and start_session between pages (last_block=0x28) */
if (mp->generation <= 2 || !is_scanning_from_adf (s)
|| mp->last_block == 0x38)
diff --git a/backend/pixma_sane_options.c b/backend/pixma_sane_options.c
index 2e4a054..6e6abfc 100644
--- a/backend/pixma_sane_options.c
+++ b/backend/pixma_sane_options.c
@@ -1,13 +1,13 @@
/* Automatically generated from pixma_sane.c */
-static const SANE_Range constraint_gamma_table =
+static const SANE_Range constraint_gamma_table =
{ 0,255,0 };
-static const SANE_Range constraint_gamma =
+static const SANE_Range constraint_gamma =
{ SANE_FIX(0.3),SANE_FIX(5),SANE_FIX(0) };
-static const SANE_Range constraint_threshold =
+static const SANE_Range constraint_threshold =
{ 0,100,1 };
-static const SANE_Range constraint_threshold_curve =
+static const SANE_Range constraint_threshold_curve =
{ 0,127,1 };
-static const SANE_Range constraint_adf_wait =
+static const SANE_Range constraint_adf_wait =
{ 0,3600,1 };
@@ -360,4 +360,3 @@ int build_option_descriptors(struct pixma_sane_t *ss)
return 0;
}
-
diff --git a/backend/pixma_sane_options.h b/backend/pixma_sane_options.h
index 669a234..1472f1f 100644
--- a/backend/pixma_sane_options.h
+++ b/backend/pixma_sane_options.h
@@ -49,4 +49,3 @@ typedef struct {
struct pixma_sane_t;
static int build_option_descriptors(struct pixma_sane_t *ss);
-
diff --git a/backend/plustek-pp.h b/backend/plustek-pp.h
index 3c052f2..5a1c453 100644
--- a/backend/plustek-pp.h
+++ b/backend/plustek-pp.h
@@ -566,7 +566,7 @@ typedef struct Plustek_Device
SANE_Int res_list_size; /* resolution values */
ScannerCaps caps; /* caps reported by the driver */
AdjDef adj; /* for driver adjustment */
-
+
/*
* each device we support may need other access functions...
*/
@@ -612,9 +612,9 @@ typedef struct Plustek_Scanner
SANE_Byte *buf; /* the image buffer */
SANE_Bool scanning; /* TRUE during scan-process */
SANE_Parameters params; /* for keeping the parameter */
-
+
/************************** gamma tables *********************************/
-
+
SANE_Word gamma_table[4][4096];
SANE_Range gamma_range;
int gamma_length;
@@ -626,7 +626,7 @@ typedef struct Plustek_Scanner
/** for collecting configuration info...
*/
typedef struct {
-
+
char devName[PATH_MAX];
/* contains the stuff to adjust... */
diff --git a/backend/plustek-pp_dac.c b/backend/plustek-pp_dac.c
index f89d814..f0cfe40 100644
--- a/backend/plustek-pp_dac.c
+++ b/backend/plustek-pp_dac.c
@@ -311,7 +311,7 @@ static void dacP98CheckLastGain( pScanData ps )
if (b[w] < *p.pb)
b[w] = *p.pb;
}
-
+
if (b[w] > _GAIN_P98_HIGH) {
*(pbReg [w]) -= 1;
}
@@ -643,7 +643,7 @@ static void dacP98WriteBackToShadingRAM( pScanData ps )
*pBuffer = Data.wValue;
pBuffer++;
}
-
+
}
dacP98DownloadShadingTable( ps, ps->pScanBuffer2, (5400 * 2 * 3));
}
@@ -763,7 +763,7 @@ static void dacP98Adjust12BitShading( pScanData ps )
*pt.pdw += (ULong)(*pd.pw * 94 / 100 & 0x0fff);
/* one line */
- if (IOReadFifoLength( ps ) <= 2500)
+ if (IOReadFifoLength( ps ) <= 2500)
IORegisterDirectToScanner( ps, ps->RegRefreshScanState );
}
@@ -782,7 +782,7 @@ static Bool dacP98WaitForShading( pScanData ps )
DBG( DBG_LOW, "dacP98WaitForShading()\n" );
- /*
+ /*
* before getting the shading data, (re)init the ASIC
*/
ps->InitialSetCurrentSpeed( ps );
@@ -1079,7 +1079,7 @@ static void dacP96ReadColorShadingLine( pScanData ps )
}
} else
b2ndDiscard--;
-
+
if (!b3rdDiscard) {
if (b3rdReadLines) {
b3rdReadLines--;
@@ -1159,7 +1159,7 @@ static void dacP96SetShadingGainProc( pScanData ps, Byte bHigh, ULong dwCh )
ps->Asic96Reg.RD_ShadingCorrectCtrl &= bMask;
ps->Asic96Reg.RD_ShadingCorrectCtrl |= bGain;
- if (!bGain) {
+ if (!bGain) {
/* GammaGain1 (ps) */
for (dw = ps->BufferSizePerModel; dw; dw--, pbSrce++, pbDest++)
if (*pbSrce > bDark)
@@ -1334,7 +1334,7 @@ static Bool dacP96003WaitForShading( pScanData ps )
dacP96SetInitialGainRAM( ps );
/* SetInitialGainRegister () ++++++++++++++++++++++++++++++++++++*/
- ps->Asic96Reg.u28.RD_RedChShadingOff =
+ ps->Asic96Reg.u28.RD_RedChShadingOff =
ps->Asic96Reg.u29.RD_GreenChShadingOff =
ps->Asic96Reg.RD_BlueChShadingOff =
ps->Asic96Reg.RD_RedChDarkOff =
@@ -1694,7 +1694,7 @@ static Bool dacP96001WaitForShading( pScanData ps )
/* AverageWideBank (pScanData) */
for( dwSum = 0, dw = 0; dw < 2700; dw++ )
dwSum += (ULong)ps->pPrescan16[dw];
-
+
dwSum /= 2700UL;
if( dwSum <= 0x80 ) {
@@ -1860,7 +1860,7 @@ static void dacP98003AdjustRGBGain( pScanData ps )
/* PauseColorMotorRunStates () */
memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
- ps->a_nbNewAdrPointer[1] = 0x77;
+ ps->a_nbNewAdrPointer[1] = 0x77;
IOPutOnAllRegisters( ps );
@@ -2221,7 +2221,7 @@ static void dacP98003AdjustShadingWaveform( pScanData ps )
} else
pwsum->Red = 0;
- if((short)(pwsum->Green -= ps->Shade.DarkOffset.Colors.Green) > 0) {
+ if((short)(pwsum->Green -= ps->Shade.DarkOffset.Colors.Green) > 0) {
pwsum->Green = pwsum->Green * pRGB->Green / 100U;
if( pwsum->Green > 0xfff )
pwsum->Green = 0xfff;
@@ -2312,7 +2312,7 @@ static void dacP98003AdjustDark( pScanData ps )
/* PauseColorMotorRunStates () */
memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
- ps->a_nbNewAdrPointer[1] = 0x77;
+ ps->a_nbNewAdrPointer[1] = 0x77;
IOPutOnAllRegisters( ps );
_DODELAY( 70 );
@@ -2374,7 +2374,7 @@ static Bool dacP98003WaitForShading( pScanData ps )
DBG( DBG_LOW, "dacP98003WaitForShading()\n" );
- /*
+ /*
* before getting the shading data, (re)init the ASIC
*/
ps->ReInitAsic( ps, _TRUE );
@@ -2501,7 +2501,7 @@ _LOC void DacP98FillShadingDarkToShadingRegister( pScanData ps )
pValue = (pUChar)&ps->AsicReg.RD_RedDarkOff;
for (bReg = ps->RegRedChDarkOffsetLow; bReg <= ps->RegBlueChDarkOffsetHigh;
bReg++, pValue++) {
-
+
IODataToRegister( ps, bReg, *pValue );
}
}
diff --git a/backend/plustek-pp_detect.c b/backend/plustek-pp_detect.c
index 51fad69..b7527c3 100644
--- a/backend/plustek-pp_detect.c
+++ b/backend/plustek-pp_detect.c
@@ -161,8 +161,8 @@ static int detectScannerConnection( pScanData ps )
_ASSERT( ps->ReadWriteTest );
/*
- * here we try to detect the operation speed of our parallel
- * port if we have tested all the stuff and had no success,
+ * here we try to detect the operation speed of our parallel
+ * port if we have tested all the stuff and had no success,
* retval will contain the error-code
*/
for( ps->IO.delay = 0; ps->IO.delay < 5; ps->IO.delay++ ) {
@@ -211,11 +211,11 @@ static int detectSetupBuffers( pScanData ps )
*/
if ( 0 == ps->TotalBufferRequire ) {
-#ifdef __KERNEL__
+#ifdef __KERNEL__
_PRINT(
#else
DBG( DBG_HIGH,
-#endif
+#endif
"pt_drv: asic 0x%x probably not supported\n", ps->sCaps.AsicID);
return _E_ALLOC; /* Out of memory */
@@ -419,7 +419,7 @@ _LOC int DetectScanner( pScanData ps, int mode )
DBG( DBG_HIGH, "Starting Scanner-Autodetection\n" );
- /* try to find a 48xx Scanner
+ /* try to find a 48xx Scanner
* (or even a scanner based on the 96001/3) ASIC
*/
result = detectP48xx( ps );
diff --git a/backend/plustek-pp_image.c b/backend/plustek-pp_image.c
index c1ef743..c7d2db2 100644
--- a/backend/plustek-pp_image.c
+++ b/backend/plustek-pp_image.c
@@ -107,7 +107,7 @@ static ThreshDef xferSpeed[4] = {
/** return the correct DPI-value
* The ASIC 96001/3 models are limited to an optical resolution of 300 Dpi
- * so its necessary to scale in X and Y direction (see scale.c)!
+ * so it´s necessary to scale in X and Y direction (see scale.c)!
*/
static UShort imageGetPhysDPI( pScanData ps, pImgDef pImgInf, Bool fDpiX )
{
@@ -287,7 +287,7 @@ static void fnP96GrayDirect( pScanData ps, pVoid pBuf, pVoid pImg, ULong bl )
src = (pUChar)pImg;
dest = (pUChar)pBuf;
-
+
for (; bl; bl--, src++, dest++ )
*dest = ps->pbMapRed [*src];
}
@@ -315,7 +315,7 @@ static void fnHalftoneDirect0( pScanData ps, pVoid pb, pVoid pImg, ULong bL )
src = (pUChar)pImg;
dest = (pUChar)pb;
-
+
pDither = &ps->a_bDitherPattern[ps->dwDitherIndex];
for( ; bL; bL--, dest++, pDither -= 8 ) {
@@ -365,10 +365,10 @@ static void fnP98ColorDirect( pScanData ps, pVoid pb, pVoid pImg, ULong bL )
{
pUChar src;
pRGBByteDef dest;
-
+
src = (pUChar)pImg;
dest = (pRGBByteDef)pb;
-
+
for ( bL = ps->DataInf.dwAsicPixelsPerPlane; bL; bL--, src++, dest++) {
dest->Red = *src;
@@ -384,7 +384,7 @@ static void fnP96ColorDirect( pScanData ps, pVoid pb, pVoid pImg, ULong bL )
src = (pUChar)pImg;
dest = (pRGBByteDef)pb;
-
+
for ( bL = ps->DataInf.dwAsicPixelsPerPlane; bL; bL--, dest++, src++) {
dest->Red =ps->pbMapRed[*src];
@@ -400,13 +400,13 @@ static void fnP98Color48( pScanData ps, pVoid pb, pVoid pImg, ULong bL )
{
pUShort src;
pRGBUShortDef dest;
-
+
register ULong i;
_VAR_NOT_USED( bL );
src = (pUShort)pImg;
dest = (pRGBUShortDef)pb;
-
+
for ( i = ps->DataInf.dwAsicPixelsPerPlane; i; i--, src++, dest++) {
dest->Red = *src;
@@ -960,7 +960,7 @@ static Bool imageP96ReadOneImageLine( pScanData ps )
if ((bData - ps->bCurrentLineCount) < _SCANSTATE_BYTES)
continue;
}
-
+
ps->bMoveDataOutFlag = _DataAfterRefreshState;
}
#endif
@@ -977,7 +977,7 @@ static Bool imageP96ReadOneImageLine( pScanData ps )
(ps->RedDataReady | ps->GreenDataReady | _BLUE_DATA_READY));
ps->pCurrentColorRunTable++);
-#ifdef DEBUG
+#ifdef DEBUG
if( ps->pCurrentColorRunTable >
(ps->pColorRunTable+ps->BufferForColorRunTable))
DBG( DBG_LOW, "WARNING: pCurrentColorRunTab>pColorRunTable\n");
@@ -1216,7 +1216,7 @@ static Bool imageP98003DataIsReady( pScanData ps )
IORegisterToScanner( ps, ps->RegRefreshScanState );
/* direct is done here without copying...*/
- if( fnDataDirect != ps->Scan.DataProcess ) {
+ if( fnDataDirect != ps->Scan.DataProcess ) {
(*ps->Scan.DataProcess)(ps, (pVoid)(ps->Scan.bp.pMonoBuf ),
(pVoid)(ps->Scan.BufPut.red.bp),
ps->DataInf.dwAppPhyBytesPerLine);
@@ -1290,7 +1290,7 @@ static Bool imageP98003ReadOneImageLine( pScanData ps )
} while( !MiscCheckTimer( &timer ));
-#ifdef __KERNEL__
+#ifdef __KERNEL__
_PRINT(
#else
DBG( DBG_HIGH,
@@ -1358,7 +1358,7 @@ static void imageP98003SetupScanStateVariables( pScanData ps, ULong index )
if( var.dwValue && ps->DataInf.dwAsicBytesPerPlane > var.dwValue ) {
if((var.dwValue << 1) > ps->DataInf.dwAsicBytesPerPlane)
- ps->Scan.dwInterval <<= 1;
+ ps->Scan.dwInterval <<= 1;
else
if((var.dwValue << 2) > ps->DataInf.dwAsicBytesPerPlane)
ps->Scan.dwInterval <<= 2;
@@ -1376,7 +1376,7 @@ static void imageP98003SetupScanStateVariables( pScanData ps, ULong index )
if( ps->DataInf.wPhyDataType >= COLOR_TRUE24 ) {
- if( ps->DataInf.xyPhyDpi.y > 75U ) {
+ if( ps->DataInf.xyPhyDpi.y > 75U ) {
if( ps->Device.f0_8_16 ) {
ps->Scan.gd_gk.wGreenDiscard = ps->DataInf.xyPhyDpi.y / 75U;
} else {
@@ -1535,7 +1535,7 @@ static int imageP98003SetupScanSettings( pScanData ps, pScanInfo pInf )
ps->Scan.p48BitBuf.pb = ps->Bufs.b1.pReadBuf;
}
- }
+ }
if( ps->Scan.p48BitBuf.pb ){
ps->Scan.DataRead = fnReadToDriver;
diff --git a/backend/plustek-pp_io.c b/backend/plustek-pp_io.c
index ba68599..d6e99b9 100644
--- a/backend/plustek-pp_io.c
+++ b/backend/plustek-pp_io.c
@@ -110,7 +110,7 @@ static Byte ioDataFromSPPFast( pScanData ps )
/* read low nibble */
tmp = _INB_STATUS( ps );
-
+
/* combine with low nibble */
bData |= (tmp >> 4);
@@ -141,7 +141,7 @@ static Byte ioDataFromSPPMiddle( pScanData ps )
/* read low nibble */
_INB_STATUS( ps );
tmp = _INB_STATUS( ps );
-
+
/* combine with low nibble */
bData |= (tmp >> 4);
@@ -174,7 +174,7 @@ static UChar ioDataFromSPPSlow( pScanData ps )
_INB_STATUS( ps );
_INB_STATUS( ps );
tmp = _INB_STATUS( ps );
-
+
/* combine with low nibble */
bData |= (tmp >> 4);
@@ -209,7 +209,7 @@ static UChar ioDataFromSPPSlowest( pScanData ps )
_INB_STATUS( ps );
_INB_STATUS( ps );
tmp = _INB_STATUS( ps );
-
+
/* combine with low nibble */
bData |= (tmp >> 4);
@@ -309,9 +309,9 @@ static Bool fnBiDirRead( pScanData ps, pUChar pBuffer, ULong ulSize )
case 0:
for( ; ulSize; ulSize--, pBuffer++ ) {
- _OUTB_CTRL( ps, start );
+ _OUTB_CTRL( ps, start );
*pBuffer = _INB_DATA( ps );
- _OUTB_CTRL( ps, end );
+ _OUTB_CTRL( ps, end );
}
break;
@@ -327,7 +327,7 @@ static Bool fnBiDirRead( pScanData ps, pUChar pBuffer, ULong ulSize )
_DO_UDELAY( 1 );
}
break;
-
+
default:
_DO_UDELAY( 2 );
for(; ulSize; ulSize--, pBuffer++ ) {
@@ -466,7 +466,7 @@ static Bool ioP98OpenScanPath( pScanData ps )
#endif
} else {
ioP98003EstablishScannerConnection( ps, dw );
- }
+ }
_INB_STATUS( ps );
tmp = _INB_STATUS( ps );
@@ -524,7 +524,7 @@ static void ioCloseScanPath( pScanData ps )
* (ASIC 9800x only)
*/
static int ioP98ReadWriteTest( pScanData ps )
-{
+{
UChar tmp;
ULong ul;
pUChar buffer;
@@ -539,10 +539,10 @@ static int ioP98ReadWriteTest( pScanData ps )
/* prepare content */
for( ul = 0; ul < _MEMTEST_SIZE; ul++ )
- buffer[ul] = (UChar)ul;
+ buffer[ul] = (UChar)ul;
ps->OpenScanPath(ps);
-
+
/* avoid switching to Lamp0, when previously scanned in transp./neg mode */
tmp = ps->bLastLampStatus + _SCAN_BYTEMODE;
IODataToRegister( ps, ps->RegScanControl, tmp );
@@ -595,7 +595,7 @@ static void ioSPPWrite( pScanData ps, pUChar pBuffer, ULong size )
DBG( DBG_IO , "Moving %u bytes to scanner, IODELAY = %u...\n",
size, ps->IO.delay );
switch( ps->IO.delay ) {
-
+
case 0:
for (; size; size--, pBuffer++) {
_OUTB_DATA( ps, *pBuffer );
@@ -603,7 +603,7 @@ static void ioSPPWrite( pScanData ps, pUChar pBuffer, ULong size )
_OUTB_CTRL( ps, _CTRL_END_DATAWRITE );
}
break;
-
+
case 1:
case 2:
for (; size; size--, pBuffer++) {
@@ -647,7 +647,7 @@ static void ioEnterReadMode( pScanData ps )
ps->IO.bOldControlValue = _INB_CTRL( ps );
/* ask ASIC to enter read mode */
- IORegisterToScanner( ps, ps->RegReadDataMode );
+ IORegisterToScanner( ps, ps->RegReadDataMode );
}
/************************ exported functions *********************************/
@@ -750,7 +750,7 @@ _LOC void IODataToScanner( pScanData ps, Byte bValue )
/* notify asic there is data */
_OUTB_CTRL( ps, _CTRL_START_DATAWRITE );
_DO_UDELAY( deltime );
-
+
/* end write cycle */
_OUTB_CTRL( ps, _CTRL_END_DATAWRITE );
_DO_UDELAY( deltime-1 );
@@ -767,7 +767,7 @@ _LOC void IODataToRegister( pScanData ps, Byte bReg, Byte bData )
#endif
/* specify register */
- IORegisterToScanner( ps, bReg );
+ IORegisterToScanner( ps, bReg );
/* then write the content */
IODataToScanner( ps, bData );
diff --git a/backend/plustek-pp_map.c b/backend/plustek-pp_map.c
index 8afeb32..00b52a3 100644
--- a/backend/plustek-pp_map.c
+++ b/backend/plustek-pp_map.c
@@ -164,23 +164,23 @@ static void mapInvertDitherMap( pScanData ps )
static void mapBuildLinearMap( pScanData ps )
{
ULong i;
-
+
DBG( DBG_LOW, "mapBuildLinearMap()\n" );
if( _IS_ASIC98(ps->sCaps.AsicID)) {
for( i = 0; i < 4096; i++ ) {
- ps->a_bMapTable[i] = (UChar)(i >> 4);
- ps->a_bMapTable[4096+i] = (UChar)(i >> 4);
- ps->a_bMapTable[8192+i] = (UChar)(i >> 4);
+ ps->a_bMapTable[i] = (UChar)(i >> 4);
+ ps->a_bMapTable[4096+i] = (UChar)(i >> 4);
+ ps->a_bMapTable[8192+i] = (UChar)(i >> 4);
}
} else {
for( i = 0; i < 256; i++ ) {
- ps->a_bMapTable[i] = (UChar)(i & 0xff);
- ps->a_bMapTable[256+i] = (UChar)(i & 0xff);
- ps->a_bMapTable[512+i] = (UChar)(i & 0xff);
+ ps->a_bMapTable[i] = (UChar)(i & 0xff);
+ ps->a_bMapTable[256+i] = (UChar)(i & 0xff);
+ ps->a_bMapTable[512+i] = (UChar)(i & 0xff);
}
}
}
@@ -221,7 +221,7 @@ _LOC void MapAdjust( pScanData ps, int which )
long b, c, tmp;
DBG( DBG_LOW, "MapAdjust(%u)\n", which );
-
+
if( _IS_ASIC98(ps->sCaps.AsicID)) {
tabLen = 4096;
} else {
@@ -257,7 +257,7 @@ _LOC void MapAdjust( pScanData ps, int which )
if( tmp > 255 ) tmp = 255;
ps->a_bMapTable[tabLen+i] = (UChar)tmp;
}
-
+
if((_MAP_MASTER == which) || (_MAP_BLUE == which)) {
tmp = ((((long)ps->a_bMapTable[tabLen*2+i] * 100) + b) * c) / 10000;
if( tmp < 0 ) tmp = 0;
@@ -268,33 +268,33 @@ _LOC void MapAdjust( pScanData ps, int which )
if( ps->DataInf.dwScanFlag & SCANDEF_Negative ) {
DBG( DBG_LOW, "inverting...\n" );
-
+
if((_MAP_MASTER == which) || (_MAP_RED == which)) {
-
+
DBG( DBG_LOW, "inverting RED map\n" );
-
+
pdw = (pULong)ps->a_bMapTable;
-
+
for( dw = tabLen / 4; dw; dw--, pdw++ )
*pdw = ~(*pdw);
}
-
+
if((_MAP_MASTER == which) || (_MAP_GREEN == which)) {
-
+
DBG( DBG_LOW, "inverting GREEN map\n" );
-
+
pdw = (pULong)&ps->a_bMapTable[tabLen];
-
+
for( dw = tabLen / 4; dw; dw--, pdw++ )
*pdw = ~(*pdw);
}
-
+
if((_MAP_MASTER == which) || (_MAP_BLUE == which)) {
-
+
DBG( DBG_LOW, "inverting BLUE map\n" );
-
+
pdw = (pULong)&ps->a_bMapTable[tabLen*2];
-
+
for( dw = tabLen / 4; dw; dw--, pdw++ )
*pdw = ~(*pdw);
}
diff --git a/backend/plustek-pp_misc.c b/backend/plustek-pp_misc.c
index d0c1ce7..a0ce200 100644
--- a/backend/plustek-pp_misc.c
+++ b/backend/plustek-pp_misc.c
@@ -280,7 +280,7 @@ static int miscSetFastMode( pScanData ps )
ps->IO.lastPortMode = a; /* save it for restoring later */
/* set to Fast Centronics/bi-directional/PS2 */
- a = (a & 0x1F) | 0x20;
+ a = (a & 0x1F) | 0x20;
_OUTB_ECTL(ps,a); /* write it back */
_DO_UDELAY(1);
@@ -335,7 +335,7 @@ static int miscSetFastMode( pScanData ps )
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");
@@ -458,7 +458,7 @@ _LOC pScanData MiscAllocAndInitStruct( void )
}
DBG( DBG_HIGH, "ScanData = 0x%08lx\n", (unsigned long)ps );
- return ps;
+ return ps;
}
/** re-initialize the memory for the scanner structure
@@ -610,7 +610,7 @@ _LOC void MiscStartTimer( TimerDef *timer , unsigned long us)
#ifdef __KERNEL__
_GET_TIME( &start_time );
#else
- gettimeofday(&start_time, NULL);
+ gettimeofday(&start_time, NULL);
#endif
*timer = (TimerDef)start_time.tv_sec * 1000000 + (TimerDef)start_time.tv_usec + us;
@@ -635,7 +635,7 @@ _LOC int MiscCheckTimer( TimerDef *timer )
if ((TimerDef)current_time.tv_sec * 1000000 + (TimerDef)current_time.tv_usec > *timer) {
return _E_TIMEOUT;
} else {
-#ifdef __KERNEL__
+#ifdef __KERNEL__
schedule();
/*#else
sched_yield();
@@ -739,7 +739,7 @@ _LOC int MiscRegisterPort( pScanData ps, int portAddr )
return _OK;
}
-/** unregisters the port from driver
+/** unregisters the port from driver
*/
_LOC void MiscUnregisterPort( pScanData ps )
{
diff --git a/backend/plustek-pp_models.c b/backend/plustek-pp_models.c
index 55029db..1d29686 100644
--- a/backend/plustek-pp_models.c
+++ b/backend/plustek-pp_models.c
@@ -115,7 +115,7 @@ static void modelInitPageSettings( pScanData ps )
ps->sCaps.wMaxExtentY =
ps->LensInf.rExtentY.wDef =
ps->LensInf.rExtentY.wMax =
- ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 11.6934;
+ ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 11.6934;
break;
case _SCANSIZE_A3:
@@ -124,7 +124,7 @@ static void modelInitPageSettings( pScanData ps )
ps->sCaps.wMaxExtentY =
ps->LensInf.rExtentY.wMax =
ps->LensInf.rExtentY.wDef =
- ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 17;
+ ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 17;
/* _MEASURE_BASE * 11.69 */
ps->sCaps.wMaxExtentX =
@@ -139,7 +139,7 @@ static void modelInitPageSettings( pScanData ps )
ps->sCaps.wMaxExtentY =
ps->LensInf.rExtentY.wDef =
ps->LensInf.rExtentY.wMax =
- ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 11;
+ ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 11;
break;
case _SCANSIZE_LEGAL:
@@ -148,7 +148,7 @@ static void modelInitPageSettings( pScanData ps )
ps->sCaps.wMaxExtentY =
ps->LensInf.rExtentY.wDef =
ps->LensInf.rExtentY.wMax =
- ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 14;
+ ps->LensInf.rExtentY.wPhyMax = _MEASURE_BASE * 14;
}
/*
diff --git a/backend/plustek-pp_motor.c b/backend/plustek-pp_motor.c
index f377b7e..7f4b1ac 100644
--- a/backend/plustek-pp_motor.c
+++ b/backend/plustek-pp_motor.c
@@ -738,7 +738,7 @@ static void motorP98PositionYProc( pScanData ps, ULong dwStates )
}
/*.............................................................................
- * checks if the sensor is in its home position and moves it back if necessary
+ * checks if the sensor is in it´s home position and moves it back if necessary
*/
static int motorP98CheckSensorInHome( pScanData ps )
{
@@ -1248,7 +1248,7 @@ static void motorP96WaitForPositionY( pScanData ps )
MiscStartTimer( &timer, _SECOND / 4);
while (!MiscCheckTimer( &timer ));
- memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
+ memset( ps->a_nbNewAdrPointer, 0, _SCANSTATE_BYTES );
ps->Asic96Reg.RD_MotorControl = ps->IgnorePF|ps->MotorOn|_MotorDirForward;
ps->Scan.fMotorBackward = _FALSE;
@@ -1875,7 +1875,7 @@ static void motorP96SetupRunTable( pScanData ps )
if ((siSum -= (Short)ps->DataInf.xyPhyDpi.y) <= 0) {
siSum += (Short)wP96BaseDpi;
- if((ps->sCaps.Model == MODEL_OP_12000P)||
+ if((ps->sCaps.Model == MODEL_OP_12000P)||
(ps->sCaps.Model == MODEL_OP_A3I)) {
*p.pb |= _COLORRUNTABLE_GREEN;
} else {
@@ -2083,7 +2083,7 @@ static void motorP96WaitBack( pScanData ps )
} else {
dw = _P96_FORWARDMOVES;
}
-
+
memset( a_bScanStateTable, 1, dw );
memset(&a_bScanStateTable[dw], 0xff, 250 - dw );
@@ -2671,7 +2671,7 @@ static void motorP98003WaitForPositionY( pScanData ps )
while(( IOGetExtendedStatus( ps ) & _STILL_FREE_RUNNING) &&
!MiscCheckTimer(&timer));
- IODataToRegister( ps, ps->RegModeControl, _ModeScan );
+ IODataToRegister( ps, ps->RegModeControl, _ModeScan );
} else {
MotorP98003PositionYProc( ps, dwBeginY );
IORegisterToScanner( ps, ps->RegRefreshScanState );
diff --git a/backend/plustek-pp_p12.c b/backend/plustek-pp_p12.c
index 6f46e58..2dc4e45 100644
--- a/backend/plustek-pp_p12.c
+++ b/backend/plustek-pp_p12.c
@@ -121,7 +121,7 @@ static void p12InitiateComponentModel( pScanData ps )
case _SCANNER5Button:
DBG( DBG_LOW, "Scanner has 5 Buttons\n" );
- ps->Device.dwModelOriginY = 64 + 20;
+ ps->Device.dwModelOriginY = 64 + 20;
p12ButtonSetup( ps, 5 );
break;
@@ -153,7 +153,7 @@ static void p12InitiateComponentModel( pScanData ps )
case _SCANNER2Button:
DBG( DBG_LOW, "Scanner has 2 Buttons\n" );
DBG( DBG_LOW, "Seems we have a Genius Colorpage Vivid III V2\n" );
- ps->Device.dwModelOriginY = 64 - 33;
+ ps->Device.dwModelOriginY = 64 - 33;
p12ButtonSetup( ps, 2 );
ps->sCaps.Model = MODEL_GEN_CPV2;
break;
@@ -232,7 +232,7 @@ static void p12SetupScanningCondition( pScanData ps )
ps->Scan.dwMaxReadFifo += (ps->DataInf.dwAsicBytesPerPlane / 2);
- DBG( DBG_LOW, "MinReadFifo=%u, MaxReadFifo=%u\n",
+ DBG( DBG_LOW, "MinReadFifo=%u, MaxReadFifo=%u\n",
ps->Scan.dwMinReadFifo, ps->Scan.dwMaxReadFifo );
/* ------- Set the max. read fifo to asic ------- */
@@ -260,7 +260,7 @@ static void p12SetupScanningCondition( pScanData ps )
channel = _GREEN_FULLSIZE << 16;
ps->AsicReg.RD_BufFullSize = _SIZE_GREENFIFO;
}
-
+
lGreen = (ULong)(-lGreen * ps->DataInf.dwAsicBytesPerPlane);
if( ps->DataInf.wPhyDataType > COLOR_TRUE24 )
@@ -434,7 +434,7 @@ static void p12ProgramCCD( pScanData ps)
DBG( DBG_IO, " %u regs * %u (intermediate)\n",
ps->Device.wNumCCDRegs, ps->Shade.bIntermediate );
- rp = ps->Device.pCCDRegisters +
+ rp = ps->Device.pCCDRegisters +
(ULong)ps->Device.wNumCCDRegs * ps->Shade.bIntermediate;
for( w = ps->Device.wNumCCDRegs; w--; rp++ ) {
diff --git a/backend/plustek-pp_p12ccd.c b/backend/plustek-pp_p12ccd.c
index 178cb2e..1b64b46 100644
--- a/backend/plustek-pp_p12ccd.c
+++ b/backend/plustek-pp_p12ccd.c
@@ -1105,7 +1105,7 @@ _LOC void P12InitCCDandDAC( pScanData ps, Bool shading )
else
ps->Shade.bUniGain = 7;
- ps->Shade.wDarkLevels = 10;
+ ps->Shade.wDarkLevels = 10;
if( ps->Shade.bIntermediate & _ScanMode_Mono ) {
SamsungDAC8531[0].bParam = 0x57;
diff --git a/backend/plustek-pp_p48xx.c b/backend/plustek-pp_p48xx.c
index 6175a34..749005b 100644
--- a/backend/plustek-pp_p48xx.c
+++ b/backend/plustek-pp_p48xx.c
@@ -724,7 +724,7 @@ static void p48xxPutToIdleMode( pScanData ps )
/*.............................................................................
* for P96001/3 ASIC
* do all the preliminary stuff here (calibrate the scanner and move the
- * sensor to its start position, also setup the driver for the
+ * sensor to it´s start position, also setup the driver for the
* current run)
*/
static int p48xxCalibration( pScanData ps )
diff --git a/backend/plustek-pp_p9636.c b/backend/plustek-pp_p9636.c
index 0c3fcfd..62da325 100644
--- a/backend/plustek-pp_p9636.c
+++ b/backend/plustek-pp_p9636.c
@@ -244,7 +244,7 @@ static void p9636Init98001( pScanData ps, Bool shading )
ps->Device.bCCDID = bData;
ps->Device.bCCDID &= _P98_CCD_TYPE_ID;
DBG( DBG_HIGH, "bData = 0x%04X, PCB-ID = 0x%02X\n", bData, (bData >> 4));
-
+
/* encode the CCD-id into the flag parameter */
dwID = (ULong)ps->Device.bCCDID;
dwID = dwID << 16;
@@ -852,7 +852,7 @@ static void p9636PutToIdleMode( pScanData ps )
/*.............................................................................
* do all the preliminary stuff here (calibrate the scanner and move the
- * sensor to its start position, also setup the driver for the
+ * sensor to it´s start position, also setup the driver for the
* current run)
*/
static int p9636Calibration( pScanData ps )
diff --git a/backend/plustek-pp_procfs.c b/backend/plustek-pp_procfs.c
index ed242a8..0cbb999 100644
--- a/backend/plustek-pp_procfs.c
+++ b/backend/plustek-pp_procfs.c
@@ -62,7 +62,7 @@
#include "plustek-pp_scan.h"
/* toggled by your kernel configuration */
-#ifdef CONFIG_PROC_FS
+#ifdef CONFIG_PROC_FS
/****************************** static vars **********************************/
@@ -197,7 +197,7 @@ static int procfsInfoReadProc( char *buf, char **start, off_t offset,
MiscGetModelName(ps->sCaps.Model));
len += sprintf( buf+len, "Portaddress : 0x%X\n", ps->IO.portBase );
len += sprintf( buf+len, "Portmode : %s (%s I/O, %s)\n",
- procfsGetMode(ps->IO.portMode),
+ procfsGetMode(ps->IO.portMode),
(ps->IO.slowIO == _TRUE?"delayed":"fast"),
(ps->IO.forceMode == 0?"autodetect":"forced"));
len += sprintf( buf+len, "Buttons : %u\n", ps->Device.buttons);
@@ -278,7 +278,7 @@ static struct proc_dir_entry *new_entry( const char *name, mode_t mode,
/* position pointer of name to end of the structure*/
ent->name = ((char *) ent) + sizeof(*ent);
strcpy((char *)ent->name, name );
-
+
ent->namelen = strlen(name);
ent->mode = mode;
@@ -310,7 +310,7 @@ static inline void destroy_proc_entry( struct proc_dir_entry *root,
kfree(*d);
#else
DBG(DBG_HIGH, "pt_drv: proc del '%s' root='%s'\n", (*d)->name, root->name);
-
+
remove_proc_entry((*d)->name, root );
#endif
@@ -407,7 +407,7 @@ void ProcFsRegisterDevice( pScanData ps )
memset( &ps->procDir, 0, sizeof(ProcDirDef));
sprintf( str, "device%u", ps->devno );
-
+
ps->procDir.entry = new_entry( str, S_IFDIR, base );
if( NULL == ps->procDir.entry )
goto error_exit;
diff --git a/backend/plustek-pp_procs.h b/backend/plustek-pp_procs.h
index aff67c8..cc84d13 100644
--- a/backend/plustek-pp_procs.h
+++ b/backend/plustek-pp_procs.h
@@ -12,7 +12,7 @@
* 0.32 - no changes
* 0.33 - no changes
* 0.34 - added this history
- * 0.35 - added Kevins changes to MiscRestorePort
+ * 0.35 - added Kevins´ changes to MiscRestorePort
* changed prototype of MiscReinitStruct
* added prototype for function PtDrvLegalRequested()
* 0.36 - added prototype for function MiscLongRand()
diff --git a/backend/plustek-pp_ptdrv.c b/backend/plustek-pp_ptdrv.c
index 9409e56..cb0eeb3 100644
--- a/backend/plustek-pp_ptdrv.c
+++ b/backend/plustek-pp_ptdrv.c
@@ -243,8 +243,8 @@ static CLOSETYPE pt_drv_close( struct inode *, struct file *);
#else
static int pt_drv_ioctl( struct inode *, struct file *, UInt, unsigned long );
#endif
-
-
+
+
/*
* the driver interface
*/
@@ -300,7 +300,7 @@ static pScanData get_pt_from_inode(struct inode *ip)
/*
* unit out of range
*/
- if (minor >= _MAX_PTDEVS )
+ if (minor >= _MAX_PTDEVS )
return NULL;
return( PtDrvDevices[minor] );
@@ -442,7 +442,7 @@ static void ptDrvSwitchLampOn( pScanData ps )
ps->bLastLampStatus = _SCAN_NORMALLAMP_ON;
} else {
-
+
ps->AsicReg.RD_ScanControl |= ps->bLampOn;
ps->bLastLampStatus = ps->bLampOn;
}
@@ -484,12 +484,12 @@ static void ptdrvLampWarmup( pScanData ps )
MiscStartTimer( &timer, _SECOND * ps->warmup );
while( !MiscCheckTimer( &timer )) {
-
+
/* on break, we setup the initial timer again... */
if( _FALSE == ps->fScanningStatus ) {
MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
- return;
- }
+ return;
+ }
};
}
@@ -517,7 +517,7 @@ static void ptdrvLampTimerIrq( int sig_num )
pScanData ps;
DBG( DBG_HIGH, "!! IRQ !! Lamp-Timer stopped.\n" );
-
+
#ifdef __KERNEL__
ps = (pScanData)ptr;
#else
@@ -539,10 +539,10 @@ static void ptdrvLampTimerIrq( int sig_num )
} else {
ps->AsicReg.RD_ScanControl &= ~_SCAN_LAMP_ON;
}
-
+
/* force warmup... */
ps->bLastLampStatus = 0xFF;
-
+
/*
* claim parallel port if necessary...
* if the port is busy, restart the timer
@@ -847,7 +847,7 @@ static int ptdrvInit( int devno )
if( _OK == retval ) {
-#ifdef __KERNEL__
+#ifdef __KERNEL__
_PRINT( "pt_drv%u: %s found on port 0x%04x\n",
devno, MiscGetModelName(ps->sCaps.Model), ps->IO.pbSppDataPort );
#else
@@ -1097,19 +1097,19 @@ static int ptdrvIoctl( pScanData ps, UInt cmd, pVoid arg )
if( ps->devno < _MAX_PTDEVS ) {
if( adj.warmup >= 0 ) {
- warmup[ps->devno] = adj.warmup;
- ps->warmup = adj.warmup;
- }
+ warmup[ps->devno] = adj.warmup;
+ ps->warmup = adj.warmup;
+ }
if( adj.lampOff >= 0 ) {
lampoff[ps->devno] = adj.lampOff;
ps->lampoff = adj.lampOff;
- }
+ }
if( adj.lampOffOnEnd >= 0 ) {
lOffonEnd[ps->devno] = adj.lampOffOnEnd;
ps->lOffonEnd = adj.lampOffOnEnd;
- }
+ }
}
}
break;
@@ -1131,13 +1131,13 @@ static int ptdrvIoctl( pScanData ps, UInt cmd, pVoid arg )
x_len = 256;
if( _IS_ASIC98(ps->sCaps.AsicID))
x_len = 4096;
-
+
/* check for 0 pointer and len */
if((NULL == map.map) || (x_len != map.len)) {
DBG( DBG_LOW, "map pointer == 0, or map len invalid!!\n" );
return _E_INVALID;
- }
-
+ }
+
if( _MAP_MASTER == map.map_id ) {
for( i = 0; i < 3; i++ ) {
@@ -1159,7 +1159,7 @@ static int ptdrvIoctl( pScanData ps, UInt cmd, pVoid arg )
return _E_FAULT;
}
}
-
+
/* here we adjust the maps according to
* the brightness and contrast settings
*/
@@ -1254,7 +1254,7 @@ static int ptdrvIoctl( pScanData ps, UInt cmd, pVoid arg )
retval = _E_SEQUENCE;
ps->DataInf.dwVxdFlag &= ~_VF_ENVIRONMENT_READY;
-
+
} else {
DBG( DBG_LOW, "CANCEL Mode set\n" );
}
@@ -1320,7 +1320,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
if( _FALSE == ps->fScanningStatus )
return _E_ABORT;
-
+
/*
* has the environment been set ?
* this should prevent the driver from causing a seg-fault
@@ -1374,7 +1374,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
(unsigned long)ps->Scan.bp.pMonoBuf,
ps->DataInf.dwAppPhyBytesPerLine, (unsigned long)scaleBuf );
- /*
+ /*
* in case of a previous problem, move the sensor back home
*/
MotorToHomePosition( ps );
@@ -1382,8 +1382,8 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
if( _FALSE == ps->fScanningStatus ) {
retval = _E_ABORT;
goto ReadFinished;
- }
-
+ }
+
dwLinesRead = 0;
/*
@@ -1399,7 +1399,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
else
ps->Scan.fRefreshState = _TRUE;
- ptdrvLampWarmup( ps );
+ ptdrvLampWarmup( ps );
if( _FALSE == ps->fScanningStatus ) {
retval = _E_ABORT;
@@ -1465,17 +1465,17 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
if( ps->Scan.dwLinesToRead > ps->DataInf.dwAppLinesPerArea )
ps->Scan.dwLinesToRead = ps->DataInf.dwAppLinesPerArea;
-
- ps->DataInf.dwAppLinesPerArea -= ps->Scan.dwLinesToRead;
+
+ ps->DataInf.dwAppLinesPerArea -= ps->Scan.dwLinesToRead;
if (ps->DataInf.dwScanFlag & SCANDEF_BmpStyle)
buffer += ((ps->Scan.dwLinesToRead - 1) *
ps->DataInf.dwAppBytesPerLine);
- if (ps->DataInf.dwVxdFlag & _VF_DATATOUSERBUFFER)
+ if (ps->DataInf.dwVxdFlag & _VF_DATATOUSERBUFFER)
ps->DataInf.pCurrentBuffer = ps->Scan.bp.pMonoBuf;
- while(ps->fScanningStatus && ps->Scan.dwLinesToRead) {
+ while(ps->fScanningStatus && ps->Scan.dwLinesToRead) {
_ASSERT(ps->ReadOneImageLine);
if (!ps->ReadOneImageLine(ps)) {
@@ -1549,8 +1549,8 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
ReadFinished:
- if( _ASIC_IS_98003 == ps->sCaps.AsicID )
- ps->CloseScanPath( ps );
+ if( _ASIC_IS_98003 == ps->sCaps.AsicID )
+ ps->CloseScanPath( ps );
if( NULL != ps->Scan.bp.pMonoBuf )
_KFREE( ps->Scan.bp.pMonoBuf );
@@ -1638,7 +1638,7 @@ int init_module( void )
(S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
&pt_drv_fops, NULL );
# else /* DEVFS_26_STYLE */
- devfs_mk_cdev(MKDEV(_PTDRV_MAJOR, devCount),
+ devfs_mk_cdev(MKDEV(_PTDRV_MAJOR, devCount),
(S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
"scanner/pt_drv%d", devCount);
# endif
@@ -1787,7 +1787,7 @@ static int pt_drv_open(struct inode *inode, struct file *file)
return -EAGAIN;
#else
MOD_INC_USE_COUNT;
-#endif
+#endif
ps->flags |= _PTDRV_OPEN;
return _OK;
@@ -1811,7 +1811,7 @@ static CLOSETYPE pt_drv_close(struct inode * inode, struct file * file)
module_put(THIS_MODULE);
#else
MOD_DEC_USE_COUNT;
-#endif
+#endif
CLOSERETURN(0);
} else {
@@ -1851,7 +1851,7 @@ static ssize_t pt_drv_read( struct file *file,
*/
if( _TRUE == deviceScanning ) {
printk( KERN_INFO "pt_drv: device %u busy!!!\n", ps->devno );
- return(-EBUSY);
+ return(-EBUSY);
}
deviceScanning = _TRUE;
@@ -1924,7 +1924,7 @@ static int PtDrvInit( const char *dev_name, UShort model_override )
port[0] = fd;
mov[0] = model_override;
-
+
result = ptdrvInit( 0 );
if( _OK == result ) {
diff --git a/backend/plustek-pp_scale.c b/backend/plustek-pp_scale.c
index 295a566..6879d66 100644
--- a/backend/plustek-pp_scale.c
+++ b/backend/plustek-pp_scale.c
@@ -101,7 +101,7 @@ _LOC void ScaleX( pScanData ps, pUChar inBuf, pUChar outBuf )
ddax = 0;
x = 0;
if( 0 == step ) {
-
+
/* binary scaling
*/
memset( outBuf, 0, ps->DataInf.dwAppBytesPerLine );
@@ -134,7 +134,7 @@ _LOC void ScaleX( pScanData ps, pUChar inBuf, pUChar outBuf )
while( ddax < 0 ) {
for( j = 0; j < (ULong)step; j++ ) {
-
+
if((x+j) < ps->DataInf.dwAppBytesPerLine ) {
outBuf[x+j] = inBuf[i+j];
}
diff --git a/backend/plustek-pp_scan.h b/backend/plustek-pp_scan.h
index 5a8f9d7..1764c79 100644
--- a/backend/plustek-pp_scan.h
+++ b/backend/plustek-pp_scan.h
@@ -73,11 +73,7 @@
# include <stdio.h>
# include <unistd.h>
# include <sys/time.h>
-# ifdef HAVE_SYS_SIGNAL_H
-# include <sys/signal.h>
-# else
-# include <signal.h>
-# endif
+# include <signal.h>
# include <sys/ioctl.h>
# ifdef HAVE_SYS_IO_H
# include <sys/io.h>
diff --git a/backend/plustek-pp_scandata.h b/backend/plustek-pp_scandata.h
index 1ba2c05..1fb987c 100644
--- a/backend/plustek-pp_scandata.h
+++ b/backend/plustek-pp_scandata.h
@@ -162,10 +162,10 @@ typedef struct scandata
*/
ULong devno;
int lampoff;
- int warmup;
+ int warmup;
int lOffonEnd;
- /*
+ /*
* CHECK for controlling the ECP-mode (not used now)
*/
#if 0
@@ -188,7 +188,7 @@ typedef struct scandata
UShort TimePerLine; /* --> to Device */
/*
- * scanner properties
+ * scanner properties
*/
RegData AsicReg; /* here we have the 98001/3 register set */
Reg96 Asic96Reg; /* here we hold the 96001/3 specific regs */
@@ -287,7 +287,7 @@ typedef struct scandata
*/
DataInfo DataInf;
Bool fReshaded;
- ULong dwDitherIndex;
+ ULong dwDitherIndex;
Bool fDoFilter, fFilterFirstLine;
ULong dwDivFilter;
ULong dwMul;
@@ -606,9 +606,9 @@ typedef struct scandata
Byte RegFifoFullLength1;
Byte RegFifoFullLength2;
- Byte RegMotorTotalStep0;
+ Byte RegMotorTotalStep0;
Byte RegMotorTotalStep1;
- Byte RegMotorFreeRunCount0;
+ Byte RegMotorFreeRunCount0;
Byte RegMotorFreeRunCount1;
Byte RegScanControl1;
Byte RegMotorFreeRunTrigger;
diff --git a/backend/plustek-pp_sysdep.h b/backend/plustek-pp_sysdep.h
index 9e064d2..73d00a4 100644
--- a/backend/plustek-pp_sysdep.h
+++ b/backend/plustek-pp_sysdep.h
@@ -1,5 +1,5 @@
/* @file plustek-pp_sysdep.h
- * @brief a trial to centralize changes between the different
+ * @brief a trial to centralize changes between the different
* kernel-versions some stuff is maybe not relevant, but anyway...
*
* Copyright (C) 2000-2013 Gerhard Jaeger <gerhard@gjaeger.de>
diff --git a/backend/plustek-pp_tpa.c b/backend/plustek-pp_tpa.c
index 021bad6..f2ca1f0 100644
--- a/backend/plustek-pp_tpa.c
+++ b/backend/plustek-pp_tpa.c
@@ -104,7 +104,7 @@ static void tpaP98SubNoise( pScanData ps, pULong pdwSum, pUShort pwShading,
for (dwLines = _DEF_DARKEST_SKIP; dwLines--; pw += 5400UL)
dwSum += (ULong) *pw;
-
+
*pwShading = (UShort)((*pdwSum - dwSum) / ps->Shade.dwDiv);
}
if (ps->dwShadingPixels != 5400UL) {
@@ -247,7 +247,7 @@ static void tpaP98GetNegativeTempRamData( pScanData ps )
pNegativeTempRam[dw] = (UShort)((pdwNegativeSumTemp[dw1] +
pdwNegativeSumTemp[dw1+1] +
pdwNegativeSumTemp[dw1+2] +
- pdwNegativeSumTemp[dw1+3]) / 128);
+ pdwNegativeSumTemp[dw1+3]) / 128);
/* shift 6 bits */
}
@@ -259,7 +259,7 @@ static void tpaP98GetNegativeTempRamData( pScanData ps )
}
/* do R shading average */
- for (dw = 0; dw < 240; dw++, dw1 += 4) {
+ for (dw = 0; dw < 240; dw++, dw1 += 4) {
pNegativeTempRam2[dw] = (UShort)(
(((pUShort)ps->pScanBuffer1)[dw1] +
((pUShort)ps->pScanBuffer1)[dw1+1] +
diff --git a/backend/plustek-pp_wrapper.c b/backend/plustek-pp_wrapper.c
index ba635ef..c41d340 100644
--- a/backend/plustek-pp_wrapper.c
+++ b/backend/plustek-pp_wrapper.c
@@ -56,7 +56,7 @@
/******************* wrapper functions for parport device ********************/
#ifndef _BACKEND_ENABLED
-
+
static int PtDrvInit( char *dev_name, unsigned short model_override )
{
_VAR_NOT_USED( dev_name );
@@ -124,7 +124,7 @@ static int ppDev_open( const char *dev_name, void *misc )
handle = PtDrvOpen();
else
handle = open( dev_name, O_RDONLY );
-
+
if ( handle < 0 ) {
DBG( _DBG_ERROR, "open: can't open %s as a device\n", dev_name );
return handle;
@@ -134,7 +134,7 @@ static int ppDev_open( const char *dev_name, void *misc )
result = PtDrvIoctl( _PTDRV_OPEN_DEVICE, &version );
else
result = ioctl( handle, _PTDRV_OPEN_DEVICE, &version );
-
+
if( result < 0 ) {
if( -9019 == result ) {
@@ -149,14 +149,14 @@ static int ppDev_open( const char *dev_name, void *misc )
result = PtDrvIoctl( _PTDRV_OPEN_DEVICE, &version );
else
result = ioctl( handle, _PTDRV_OPEN_DEVICE, &version );
-
+
if( result < 0 ) {
-
+
if( dev->adj.direct_io )
PtDrvClose();
else
close( dev->fd );
-
+
DBG( _DBG_ERROR,
"ioctl PT_DRV_OPEN_DEVICE failed(%d)\n", result );
@@ -294,23 +294,23 @@ static int ppDev_setMap( Plustek_Device *dev, SANE_Word *map,
m.map_id = channel;
m.map = (void *)map;
-
+
DBG(_DBG_INFO,"Setting map[%u] at 0x%08lx\n", channel, (unsigned long)map);
buf = (SANE_Byte*)malloc( m.len );
-
+
if( !buf )
return _E_ALLOC;
-
+
for( i = 0; i < m.len; i++ ) {
buf[i] = (SANE_Byte)map[i];
-
+
if( map[i] > 0xFF )
buf[i] = 0xFF;
}
-
+
m.map = buf;
-
+
if( dev->adj.direct_io )
PtDrvIoctl( _PTDRV_SETMAP, &m );
else
@@ -334,7 +334,7 @@ static int ppDev_stopScan( Plustek_Device *dev, short *mode )
retval = PtDrvIoctl( _PTDRV_STOP_SCAN, mode );
else
retval = ioctl( dev->fd, _PTDRV_STOP_SCAN, mode );
-
+
/* ... and use it here */
if( 0 == tmp ) {
if( dev->adj.direct_io )
diff --git a/backend/plustek-usb.c b/backend/plustek-usb.c
index 6c9e67a..5c6fbeb 100644
--- a/backend/plustek-usb.c
+++ b/backend/plustek-usb.c
@@ -147,7 +147,7 @@ static SANE_Bool usb_normFileName( char *fname, char* buffer, u_long max_len )
}
*dst = '\0';
- return SANE_TRUE;
+ return SANE_TRUE;
}
/** do some range checking and copy the adjustment values from the
@@ -216,13 +216,13 @@ usb_initDev( Plustek_Device *dev, int idx, int handle, int vendor )
/* adjust data origin
*/
- dev->usbDev.Caps.Positive.DataOrigin.x -= dev->adj.tpa.x;
- dev->usbDev.Caps.Positive.DataOrigin.y -= dev->adj.tpa.y;
+ dev->usbDev.Caps.Positive.DataOrigin.x -= dev->adj.tpa.x;
+ dev->usbDev.Caps.Positive.DataOrigin.y -= dev->adj.tpa.y;
- dev->usbDev.Caps.Negative.DataOrigin.x -= dev->adj.neg.x;
- dev->usbDev.Caps.Negative.DataOrigin.y -= dev->adj.neg.y;
+ dev->usbDev.Caps.Negative.DataOrigin.x -= dev->adj.neg.x;
+ dev->usbDev.Caps.Negative.DataOrigin.y -= dev->adj.neg.y;
- dev->usbDev.Caps.Normal.DataOrigin.x -= dev->adj.pos.x;
+ dev->usbDev.Caps.Normal.DataOrigin.x -= dev->adj.pos.x;
dev->usbDev.Caps.Normal.DataOrigin.y -= dev->adj.pos.y;
/** adjust shading position
@@ -297,13 +297,13 @@ usb_initDev( Plustek_Device *dev, int idx, int handle, int vendor )
sParam.Size.dwPixels = 0;
/* create calibration-filename */
- sprintf( tmp_str2, "%s-%s",
+ sprintf( tmp_str2, "%s-%s",
dev->sane.vendor, dev->usbDev.ModelStr );
if( !usb_normFileName( tmp_str2, tmp_str1, PATH_MAX )) {
strcpy( tmp_str1, "plustek-default" );
}
-
+
ptr = getenv ("HOME");
if( NULL == ptr ) {
sprintf( tmp_str2, "/tmp/%s", tmp_str1 );
@@ -378,7 +378,7 @@ static int usb_CheckForPlustekDevice( int handle, Plustek_Device *dev )
/* now roam through the setting list... */
strncpy( tmp, dev->usbId, 13 );
tmp[13] = '\0';
-
+
sprintf( pcbStr, "-%u", pcbID );
strcat ( tmp, pcbStr );
@@ -392,7 +392,7 @@ static int usb_CheckForPlustekDevice( int handle, Plustek_Device *dev )
return handle;
}
}
-
+
return -1;
}
@@ -416,7 +416,7 @@ static void usbDev_shutdown( Plustek_Device *dev )
DBG( _DBG_INFO, "Waiting for scanner-ready...\n" );
usb_IsScannerReady( dev );
-
+
if( 0 != dev->usbDev.bLampOffOnEnd ) {
DBG( _DBG_INFO, "Switching lamp off...\n" );
@@ -439,7 +439,7 @@ static void usbDev_shutdown( Plustek_Device *dev )
static SANE_Bool usb_IsDeviceInList( char *usbIdStr )
{
int i;
-
+
for( i = 0; NULL != Settings[i].pIDString; i++ ) {
if( 0 == strncmp( Settings[i].pIDString, usbIdStr, 13 ))
@@ -516,7 +516,7 @@ usbGetList( DevList **devs )
il = SANE_TRUE;
break;
}
- }
+ }
if( il ) {
DBG( _DBG_INFO2, "Already in list: 0x%04x-0x%04x\n", v, p );
continue;
@@ -528,7 +528,7 @@ usbGetList( DevList **devs )
sanei_usb_find_devices( v, p, usb_attach );
if( getLast(*devs) != tmp ) {
-
+
if( tmp == NULL )
tmp = *devs;
else
@@ -547,7 +547,7 @@ usbGetList( DevList **devs )
DBG( _DBG_INFO, "NONE.\n" );
for( tmp = *devs; tmp; tmp = tmp->next ) {
- DBG( _DBG_INFO, "Device: >%s< - 0x%04xx0x%04x\n",
+ DBG( _DBG_INFO, "Device: >%s< - 0x%04xx0x%04x\n",
tmp->dev_name, tmp->vendor_id, tmp->device_id );
}
}
@@ -568,7 +568,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
SANE_Status status;
DevList *tmp;
- DBG( _DBG_INFO, "usbDev_open(%s,%s) - %p\n",
+ DBG( _DBG_INFO, "usbDev_open(%s,%s) - %p\n",
dev->name, dev->usbId, (void*)devs );
/* preset our internal usb device structure */
@@ -576,7 +576,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
/* devs is NULL, when called from sane_start */
if( devs ) {
-
+
dn[0] = '\0';
if( !strcmp( dev->name, "auto" )) {
@@ -618,7 +618,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
status = sanei_usb_open( dn, &handle );
if( SANE_STATUS_GOOD != status ) {
- DBG( _DBG_ERROR, "sanei_usb_open failed: %s (%d)\n",
+ DBG( _DBG_ERROR, "sanei_usb_open failed: %s (%d)\n",
strerror(errno), errno);
sanei_access_unlock( dev->sane.name );
return -1;
@@ -629,7 +629,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
*/
free( dev->name );
dev->name = strdup(dn);
- dev->sane.name = dev->name;
+ dev->sane.name = dev->name;
} else {
@@ -641,7 +641,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
status = sanei_usb_open( dev->name, &handle );
if( SANE_STATUS_GOOD != status ) {
- DBG( _DBG_ERROR, "sanei_usb_open failed: %s (%d)\n",
+ DBG( _DBG_ERROR, "sanei_usb_open failed: %s (%d)\n",
strerror(errno), errno);
sanei_access_unlock( dev->sane.name );
return -1;
@@ -659,7 +659,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
DBG(_DBG_INFO,"Vendor ID=0x%04X, Product ID=0x%04X\n",vendor,product);
if( dev->usbId[0] != '\0' ) {
-
+
if( 0 != strcmp( dev->usbId, devStr )) {
DBG( _DBG_ERROR, "Specified Vendor and Product ID "
"doesn't match with the ones\n"
@@ -735,9 +735,9 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
* product ID and up to 7 different devices...
*/
if( 0x07B3 == vendor ) {
-
+
handle = usb_CheckForPlustekDevice( handle, dev );
-
+
if( was_empty )
dev->usbId[0] = '\0';
@@ -746,7 +746,7 @@ static int usbDev_open( Plustek_Device *dev, DevList *devs, int keep_lock )
sanei_access_unlock( dev->sane.name );
return handle;
}
-
+
} else {
/* now roam through the setting list... */
@@ -853,9 +853,9 @@ static int usbDev_setMap( Plustek_Device *dev, SANE_Word *map,
DBG(_DBG_INFO,"Setting map[%u] at 0x%08lx\n",channel,(unsigned long)map);
_VAR_NOT_USED( dev );
-
+
if( channel == _MAP_MASTER ) {
-
+
for( i = 0; i < length; i++ ) {
a_bMap[i] = (SANE_Byte)map[i];
a_bMap[length +i] = (SANE_Byte)map[i];
@@ -939,7 +939,7 @@ usbDev_setScanEnv( Plustek_Device *dev, ScanInfo *si )
usb_GetImageInfo ( dev, &si->ImgDef, &scan->sParam.Size );
/* mask the flags */
- scan->dwFlag = si->ImgDef.dwFlag &
+ scan->dwFlag = si->ImgDef.dwFlag &
(SCANFLAG_bgr | SCANFLAG_BottomUp | SCANFLAG_Calibration |
SCANFLAG_DWORDBoundary | SCANFLAG_RightAlign |
SCANFLAG_StillModule | SCANDEF_Adf | SCANDEF_ContinuousScan);
@@ -1141,10 +1141,10 @@ usbDev_Prepare( Plustek_Device *dev, SANE_Byte *buf )
/* CIS devices need special handling... */
if( usb_IsCISDevice(dev)) {
use_alt_cal = SANE_TRUE;
-
+
} else {
- if( dev->adj.altCalibrate )
+ if( dev->adj.altCalibrate )
use_alt_cal = SANE_TRUE;
}
@@ -1350,16 +1350,16 @@ usbDev_Prepare( Plustek_Device *dev, SANE_Byte *buf )
if( !usb_ScanBegin( dev,
(scan->dwFlag&SCANFLAG_StillModule) ? SANE_FALSE:SANE_TRUE)) {
-
+
return _E_INTERNAL;
}
-
+
scan->dwFlag |= SCANFLAG_Scanning;
if( scan->sParam.UserDpi.y != scan->sParam.PhyDpi.y ) {
-
+
if( scan->sParam.UserDpi.y < scan->sParam.PhyDpi.y ) {
-
+
scan->wSumY = scan->sParam.PhyDpi.y - scan->sParam.UserDpi.y;
scan->dwFlag |= SCANFLAG_SampleY;
DBG( _DBG_INFO, "SampleY Flag set (%u != %u, wSumY=%u)\n",
@@ -1374,7 +1374,7 @@ usbDev_Prepare( Plustek_Device *dev, SANE_Byte *buf )
* as the SANE stuff already forked the driver to read data, I think
* we should only read data by using a function...
*/
- scan->dwLinesUser = scan->sParam.Size.dwLines;
+ scan->dwLinesUser = scan->sParam.Size.dwLines;
if( !scan->dwLinesUser )
return _E_BUFFER_TOO_SMALL;
@@ -1388,10 +1388,10 @@ usbDev_Prepare( Plustek_Device *dev, SANE_Byte *buf )
scan->UserBuf.pb = buf;
DBG(_DBG_INFO,"Reading the data now!\n" );
- DBG(_DBG_INFO,"PhyDpi.x = %u\n", scan->sParam.PhyDpi.x );
- DBG(_DBG_INFO,"PhyDpi.y = %u\n", scan->sParam.PhyDpi.y );
- DBG(_DBG_INFO,"UserDpi.x = %u\n", scan->sParam.UserDpi.x );
- DBG(_DBG_INFO,"UserDpi.y = %u\n", scan->sParam.UserDpi.y );
+ DBG(_DBG_INFO,"PhyDpi.x = %u\n", scan->sParam.PhyDpi.x );
+ DBG(_DBG_INFO,"PhyDpi.y = %u\n", scan->sParam.PhyDpi.y );
+ DBG(_DBG_INFO,"UserDpi.x = %u\n", scan->sParam.UserDpi.x );
+ DBG(_DBG_INFO,"UserDpi.y = %u\n", scan->sParam.UserDpi.y );
DBG(_DBG_INFO,"NumberOfScanBufs = %lu\n",scan->dwNumberOfScanBufs);
DBG(_DBG_INFO,"LinesPerScanBufs = %lu\n",scan->dwLinesPerScanBufs);
DBG(_DBG_INFO,"dwPhyBytes = %lu\n",scan->sParam.Size.dwPhyBytes);
diff --git a/backend/plustek-usb.h b/backend/plustek-usb.h
index 0f001c9..d989749 100644
--- a/backend/plustek-usb.h
+++ b/backend/plustek-usb.h
@@ -297,17 +297,14 @@ enum _BUTTONS
_PORT2 = ((_MIO5 | _MIO6) << _BUTTON_SHIFT)
};
-enum _PAPER_SENSE
-{
- _PS_INP1 = (0x01 << _PSENSE_SHIFT),
- _PS_INP2 = (0x02 << _PSENSE_SHIFT),
- _PS_INP_MIO1 = (_MIO1 << (_PSENSE_SHIFT+2)),
- _PS_INP_MIO2 = (_MIO2 << (_PSENSE_SHIFT+2)),
- _PS_INP_MIO3 = (_MIO3 << (_PSENSE_SHIFT+2)),
- _PS_INP_MIO4 = (_MIO4 << (_PSENSE_SHIFT+2)),
- _PS_INP_MIO5 = (_MIO5 << (_PSENSE_SHIFT+2)),
- _PS_INP_MIO6 = (_MIO6 << (_PSENSE_SHIFT+2))
-};
+#define _PS_INP1 (0x01 << _PSENSE_SHIFT)
+#define _PS_INP2 (0x02 << _PSENSE_SHIFT)
+#define _PS_INP_MIO1 (_MIO1 << (_PSENSE_SHIFT+2))
+#define _PS_INP_MIO2 (_MIO2 << (_PSENSE_SHIFT+2))
+#define _PS_INP_MIO3 (_MIO3 << (_PSENSE_SHIFT+2))
+#define _PS_INP_MIO4 (_MIO4 << (_PSENSE_SHIFT+2))
+#define _PS_INP_MIO5 (_MIO5 << (_PSENSE_SHIFT+2))
+#define _PS_INP_MIO6 (_MIO6 << (_PSENSE_SHIFT+2))
/** for encoding a misc I/O register as TPA */
#define _TPA(register) ((u_long)(register << _TPA_SHIFT))
@@ -381,7 +378,7 @@ enum SCANFLAG
SCANFLAG_BottomUp = 0x00008000,
SCANFLAG_DWORDBoundary = 0x00020000,
SCANFLAG_RightAlign = 0x00040000,
- SCANFLAG_StillModule = 0x00080000,
+ SCANFLAG_StillModule = 0x00080000,
SCANFLAG_Pseudo48 = 0x08000000,
SCANFLAG_SampleY = 0x04000000,
SCANFLAG_Calibration = 0x10000000,
@@ -469,10 +466,10 @@ typedef struct HWDefault
u_char bReg_0x0f_Mono [10]; /* 0x0f to 0x18 */
u_char bReg_0x0f_Color [10]; /* 0x0f to 0x18 */
- /* color mode settings */
+ /* color mode settings */
u_char bReg_0x26;
u_char bReg_0x27;
-
+
/* illumination mode reg 0x29 (runtime) */
u_char bReg_0x29;
@@ -484,7 +481,7 @@ typedef struct HWDefault
* format, you have to pay your attention when you
* write this value to register.
*/
- u_short StepperPhaseCorrection;
+ u_short StepperPhaseCorrection;
/* Sensor Pixel Configuration
* Actually, the wActivePixelsStart will be set to 0 for shading purpose.
@@ -656,11 +653,11 @@ typedef struct ScanDef
AnyPtr Green;
AnyPtr Red;
AnyPtr Blue;
-
+
long lBufAdjust; /**< bytes to adjust buffer pointer */
/* after a image line processed */
u_short wSumY; /**< for line sampling */
-
+
u_char bLineDistance; /**< Color offset in specific dpi y */
int fGrayFromColor; /**< channel to use for gray mode */
diff --git a/backend/plustek-usbcal.c b/backend/plustek-usbcal.c
index f2e7608..3b9d93a 100644
--- a/backend/plustek-usbcal.c
+++ b/backend/plustek-usbcal.c
@@ -21,7 +21,7 @@
* or can test.
*
* Therefore, I'm splitting out a few calibration functions I need
- * to modify for the CanoScan which allows me to simplify things
+ * to modify for the CanoScan which allows me to simplify things
* greatly for the CanoScan without worrying about breaking other
* scanners, as well as reuse the vast majority of the Plustek
* driver infrastructure without forking.
@@ -109,7 +109,7 @@ cano_PrepareToReadWhiteCal( Plustek_Device *dev, SANE_Bool mv2shading_pos )
{
SANE_Bool goto_shading_pos = SANE_TRUE;
HWDef *hw = &dev->usbDev.HwSetting;
-
+
switch (strip_state) {
case 0:
if( !usb_IsSheetFedDevice(dev)) {
@@ -152,7 +152,7 @@ cano_PrepareToReadBlackCal( Plustek_Device *dev )
if( strip_state == 0 )
if(cano_PrepareToReadWhiteCal(dev, SANE_FALSE))
return SANE_FALSE;
-
+
if( strip_state != 2 ) {
/*
* if we have a dark shading strip, there's no need to switch
@@ -203,7 +203,7 @@ cano_LampOnAfterCalibration( Plustek_Device *dev )
* @param max - pointer to the max OFF point for the CIS-channel
* @param off - pointer to the current OFF point of the CIS-channel
* @param val - current value to check
- * @return returns 0 if the value is fine, 1, if we need to adjust
+ * @return returns 0 if the value is fine, 1, if we need to adjust
*/
static int
cano_adjLampSetting( u_short *min, u_short *max, u_short *off, u_short val )
@@ -249,7 +249,7 @@ cano_adjLampSetting( u_short *min, u_short *max, u_short *off, u_short val )
* coarse calibration step 0
* [Monty changes]: On the CanoScan at least, the default lamp
* settings are several *hundred* percent too high and vary from
- * scanner-to-scanner by 20-50%. This is only for CIS devices
+ * scanner-to-scanner by 20-50%. This is only for CIS devices
* where the lamp_off parameter is adjustable; I'd make it more general,
* but I only have the CIS hardware to test.
*/
@@ -305,7 +305,7 @@ cano_AdjustLightsource( Plustek_Device *dev )
min_rgb.Green = hw->green_lamp_on;
min_rgb.Blue = hw->blue_lamp_on;
- if((dev->adj.rlampoff != -1) &&
+ if((dev->adj.rlampoff != -1) &&
(dev->adj.glampoff != -1) && (dev->adj.rlampoff != -1)) {
DBG( _DBG_INFO, "- function skipped, using frontend values!\n" );
return SANE_TRUE;
@@ -393,10 +393,10 @@ cano_AdjustLightsource( Plustek_Device *dev )
DBG( _DBG_INFO2, "red_lamp_off = %u/%u/%u\n",
min_rgb.Red ,hw->red_lamp_off, max_rgb.Red );
}
-
+
DBG( _DBG_INFO2, "green_lamp_off = %u/%u/%u\n",
min_rgb.Green, hw->green_lamp_off, max_rgb.Green );
-
+
if( m_ScanParam.bDataType == SCANDATATYPE_Color ) {
DBG( _DBG_INFO2, "blue_lamp_off = %u/%u/%u\n",
min_rgb.Blue, hw->blue_lamp_off, max_rgb.Blue );
@@ -528,7 +528,7 @@ cano_AdjustGain( Plustek_Device *dev )
DBG( _DBG_INFO, "cano_AdjustGain()\n" );
if( !usb_InCalibrationMode(dev)) {
- if((dev->adj.rgain != -1) &&
+ if((dev->adj.rgain != -1) &&
(dev->adj.ggain != -1) && (dev->adj.bgain != -1)) {
setAdjGain( dev->adj.rgain, &dev->usbDev.a_bRegs[0x3b] );
setAdjGain( dev->adj.ggain, &dev->usbDev.a_bRegs[0x3c] );
@@ -559,11 +559,11 @@ cano_AdjustGain( Plustek_Device *dev )
DBG( _DBG_INFO2, "Pixels = %lu\n", m_ScanParam.Size.dwPixels );
DBG( _DBG_INFO2, "Bytes = %lu\n", m_ScanParam.Size.dwBytes );
DBG( _DBG_INFO2, "Origin.X = %u\n", m_ScanParam.Origin.x );
-
+
while( adj ) {
m_ScanParam.dMCLK = dMCLK;
-
+
if( !usb_SetScanParameters( dev, &m_ScanParam ))
return SANE_FALSE;
@@ -615,7 +615,7 @@ cano_AdjustGain( Plustek_Device *dev )
dwR = dwR / dwDiv;
dwG = dwG / dwDiv;
dwB = dwB / dwDiv;
-
+
if(max_rgb.Red < dwR)
max_rgb.Red = dwR;
if(max_rgb.Green < dwG)
@@ -764,7 +764,7 @@ cano_AdjustOffset( Plustek_Device *dev )
u_long *scanbuf = dev->scanning.pScanBuffer;
HWDef *hw = &dev->usbDev.HwSetting;
DCapsDef *scaps = &dev->usbDev.Caps;
-
+
if( usb_IsEscPressed())
return SANE_FALSE;
@@ -977,13 +977,13 @@ cano_AdjustDarkShading( Plustek_Device *dev, u_short cal_dpi )
/* average the n lines, compute reg values */
if( scan->sParam.bDataType == SCANDATATYPE_Color ) {
-
+
stepW = m_ScanParam.Size.dwPhyPixels;
if( usb_IsCISDevice(dev))
step = m_ScanParam.Size.dwPhyPixels + 1;
else
step = (m_ScanParam.Size.dwPhyPixels*3) + 1;
-
+
for( i=0; i<m_ScanParam.Size.dwPhyPixels; i++ ) {
red = 0;
@@ -1036,7 +1036,7 @@ cano_AdjustDarkShading( Plustek_Device *dev, u_short cal_dpi )
step = m_ScanParam.Size.dwPhyPixels + 1;
for( i=0; i<m_ScanParam.Size.dwPhyPixels; i++ ) {
-
+
gray = 0;
bufp = ((u_short *)scanbuf)+i;
@@ -1252,7 +1252,7 @@ cano_DoCalibration( Plustek_Device *dev )
DBG( _DBG_INFO2, "###### ADJUST OFFSET (COARSE) ####\n" );
if(cano_PrepareToReadBlackCal(dev))
return SANE_FALSE;
-
+
if( !cano_AdjustOffset(dev)) {
DBG( _DBG_ERROR, "Coarse Calibration failed!!!\n" );
return SANE_FALSE;
@@ -1261,7 +1261,7 @@ cano_DoCalibration( Plustek_Device *dev )
DBG( _DBG_INFO2, "###### ADJUST GAIN (COARSE)#######\n" );
if(cano_PrepareToReadWhiteCal(dev, SANE_FALSE))
return SANE_FALSE;
-
+
if( !cano_AdjustGain(dev)) {
DBG( _DBG_ERROR, "Coarse Calibration failed!!!\n" );
return SANE_FALSE;
@@ -1367,7 +1367,7 @@ cano_DoCalibration( Plustek_Device *dev )
if( !usb_IsSheetFedDevice(dev))
usb_ModuleToHome( dev, SANE_TRUE );
scan->fCalibrated = SANE_TRUE;
-
+
DBG( _DBG_INFO, "cano_DoCalibration() done\n" );
DBG( _DBG_INFO, "-------------------------\n" );
DBG( _DBG_INFO, "Static Gain:\n" );
diff --git a/backend/plustek-usbcalfile.c b/backend/plustek-usbcalfile.c
index afea3f9..6f5a364 100644
--- a/backend/plustek-usbcalfile.c
+++ b/backend/plustek-usbcalfile.c
@@ -67,7 +67,7 @@ typedef struct {
u_long blue_light_on;
u_long blue_light_off;
u_long green_pwm_duty;
-
+
} LightCtrl;
typedef struct {
@@ -106,7 +106,7 @@ usb_ReadSpecLine( FILE *fp, char *id, char* res )
{
char tmp[1024];
char *ptr;
-
+
/* rewind file pointer */
if( 0 != fseek( fp, 0L, SEEK_SET)) {
DBG( _DBG_ERROR, "fseek: %s\n", strerror(errno));
@@ -124,7 +124,7 @@ usb_ReadSpecLine( FILE *fp, char *id, char* res )
ptr = &tmp[strlen(id)];
if( '\0' == *ptr )
break;
-
+
strcpy( res, ptr );
res[strlen(res)-1] = '\0';
return SANE_TRUE;
@@ -176,7 +176,7 @@ usb_ReadOtherLines( FILE *fp, char *except )
/* we ignore the version line... */
if( 0 == strncmp( tmp, "version=", 8 ))
continue;
-
+
if( !ignore ) {
if(0 != strncmp(tmp, except, strlen(except))) {
@@ -225,9 +225,9 @@ usb_ReadSamples( FILE *fp, char *which, u_long *dim, u_short *buffer )
if( NULL != fgets( rb, 1024, fp )) {
/* we ignore the version line... */
- if( 0 == strncmp( tmp, "version=", 8 ))
+ if( 0 == strncmp( tmp, "version=", 8 ))
continue;
-
+
p = tmp;
if( !ignore && diml == 0) {
if(0 == strncmp(tmp, which, strlen(which))) {
@@ -271,7 +271,7 @@ usb_ReadSamples( FILE *fp, char *which, u_long *dim, u_short *buffer )
/* reached the end? */
if( *next == '\0' ) {
- /* we probably have only parsed a part of a value
+ /* we probably have only parsed a part of a value
* so we copy that back to the input buffer and
* parse it the next time...
*/
@@ -372,7 +372,7 @@ usb_ReadAndSetCalData( Plustek_Device *dev )
FILE *fp;
CalData cal;
SANE_Bool ret;
-
+
DBG( _DBG_INFO, "usb_ReadAndSetCalData()\n" );
if( usb_InCalibrationMode(dev)) {
@@ -388,7 +388,7 @@ usb_ReadAndSetCalData( Plustek_Device *dev )
sprintf( tmp, "%s-coarse.cal", dev->calFile );
DBG( _DBG_INFO, "- Reading coarse calibration data from file\n");
DBG( _DBG_INFO, " %s\n", tmp );
-
+
fp = fopen( tmp, "r" );
if( NULL == fp ) {
DBG( _DBG_ERROR, "File %s not found\n", tmp );
@@ -416,7 +416,7 @@ usb_ReadAndSetCalData( Plustek_Device *dev )
}
usb_CreatePrefix( dev, pfx, SANE_TRUE );
-
+
ret = SANE_FALSE;
if( usb_ReadSpecLine( fp, pfx, tmp )) {
DBG( _DBG_INFO, "- Calibration data: %s\n", tmp );
@@ -445,7 +445,7 @@ usb_ReadAndSetCalData( Plustek_Device *dev )
fclose( fp );
DBG( _DBG_INFO, "usb_ReadAndSetCalData() done -> %u\n", ret );
-
+
return ret;
}
@@ -526,7 +526,7 @@ usb_SaveCalData( Plustek_Device *dev )
other_tmp = NULL;
fp = fopen( fn, "r+" );
if( NULL != fp ) {
-
+
if( usb_ReadSpecLine( fp, "version=", tmp )) {
DBG( _DBG_INFO, "- Calibration file version: %s\n", tmp );
@@ -553,7 +553,7 @@ usb_SaveCalData( Plustek_Device *dev )
if( NULL == fp ) {
DBG( _DBG_ERROR, "- Cannot create file %s\n", fn );
DBG( _DBG_ERROR, "- -> %s\n", strerror(errno));
- if( other_tmp )
+ if( other_tmp )
free( other_tmp );
return;
}
@@ -603,7 +603,7 @@ usb_SaveFineCalData( Plustek_Device *dev, int dpi,
other_tmp = NULL;
fp = fopen( fn, "r+" );
if( NULL != fp ) {
-
+
if( usb_ReadSpecLine( fp, "version=", tmp )) {
DBG( _DBG_INFO, "- Calibration file version: %s\n", tmp );
@@ -664,7 +664,7 @@ usb_ReadFineCalData( Plustek_Device *dev, int dpi,
char tmp[1024];
u_short version;
FILE *fp;
-
+
DBG( _DBG_INFO, "usb_ReadFineCalData()\n" );
if( usb_InCalibrationMode(dev)) {
DBG( _DBG_INFO, "- we are in calibration mode!\n" );
diff --git a/backend/plustek-usbdevs.c b/backend/plustek-usbdevs.c
index 4f53863..8698e54 100644
--- a/backend/plustek-usbdevs.c
+++ b/backend/plustek-usbdevs.c
@@ -115,7 +115,7 @@
* If you do not wish that, delete this exception notice.
* <hr>
*/
-
+
/* the other stuff is included by plustek.c ...*/
#include "plustek-usb.h"
@@ -146,11 +146,11 @@ static DCapsDef Cap0x07B3_0x0017_0 =
},
{ /* Negative */
{1004 + 55, 744 + 12}, /* DataOrigin (X: 7cm + 1.5cm, Y: 8mm + 5.5cm)*/
-
+
/* 533 blaustichig */
537 /* hell */
/* 543 gruenstichig */
-
+
/*543*/, -1, /* ShadingOriginY (Y: 8mm + 3.8cm) */
{567, 414}, /* Size (X: 4.8cm, Y: 3.5cm) */
{150, 150} /* MinDpi */
@@ -332,7 +332,7 @@ static DCapsDef Cap0x07B3_0x0013_4 =
{{1004 + 20, 744 - 20}, 543, -1, { 567, 414}, {150, 150}},
{{ 0, 95}, 0, -1, {2550, 3508}, { 50, 50}},
{1200, 1200},
- DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
+ DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
SENSORORDER_rgb,
12, 4, kNEC3778, 0x03, _WAF_NONE, _NO_MIO
};
@@ -844,7 +844,7 @@ static HWDef Hw0x07B3_0x0017_0 =
{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
/* bReg_0x0f_Color [10] (0x0f to 0x18) */
{5, 23, 1, 3, 0, 0, 0, 12, 10, 22},
-
+
_GREEN_CH, /* bReg_0x26 color mode - bits 4 and 5 */
0, /* bReg 0x27 color mode */
@@ -1102,9 +1102,9 @@ static HWDef Hw0x07B3_0x0013_0 =
0,
0x1e,
0xa8,
- 0,
+ 0,
0xff,
- 64,
+ 64,
20,
0x0d, 0x22, 0x82, 0x88,
0, 0, 0,
@@ -1128,15 +1128,15 @@ static HWDef Hw0x07B3_0x0013_4 =
{20, 4, 13, 16, 19, 22, 0, 0, 23, 11},
_GREEN_CH,
0,
- 1,
+ 1,
/* illumination mode settings (not used for CCD devices) */
{ 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 },
1,
13,
- 62,
- 320,
- 10684,
+ 62,
+ 320,
+ 10684,
0,
16383,
0,
@@ -1164,9 +1164,9 @@ static HWDef Hw0x07B3_0x000F_4 =
{
1.1, 0.9, 0.0,
12, 12,
- 600,
- 2048,
- 8, 8,
+ 600,
+ 2048,
+ 8, 8,
4095, 4095,
0x06, 0x30, 0x2f, 0x2a,
{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
@@ -1259,7 +1259,7 @@ static HWDef Hw0x07B3_0x0017_4 =
8, 8,
4095, 4095,
0x06, 0x20, 0x2f, 0x2a,
- {2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
+ {2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
{20, 4, 13, 16, 19, 22, 0, 0, 23, 11},
_GREEN_CH,
0,
@@ -1327,7 +1327,7 @@ static HWDef Hw0x07B3_0x0017_1 =
0,
0x1e,
0xa8,
- 0,
+ 0,
0xff,
64,
20,
@@ -1414,7 +1414,7 @@ static HWDef Hw0x07B3_0x0017_2 =
0,
16383,
3,
- 0,
+ 0,
0x1e,
0xa8,
0,
@@ -1498,10 +1498,10 @@ static HWDef Hw0x03F0_0x0505 =
/* bReg_0x0f_Color[10] (0x0f to 0x18) */
{ 0x08, 0x17, 0x00, 0x03, 0x08, 0x0b, 0x00, 0x00, 0x0a, 0x14 },
-
+
_GREEN_CH, /* bReg_0x26 color mode - bits 4 and 5 */
0, /* bReg 0x27 color mode */
-
+
1, /* bReg 0x29 illumination mode */
/* illumination mode settings (not used for CCD devices) */
@@ -1520,7 +1520,7 @@ static HWDef Hw0x03F0_0x0505 =
1, /* green lamp off (reg 0x32 + 0x33) */
16383, /* blue lamp on (reg 0x34 + 0x35) */
1, /* blue lamp off (reg 0x36 + 0x37) */
-
+
/* Misc */
0x13, /* bReg_0x45 */
0, /* wStepsAfterPaperSensor2 (0x4c & 0x4d) */
@@ -1566,7 +1566,7 @@ static HWDef Hw0x03F0_0x0605 =
/* bReg_0x0f_Color[10] (0x0f to 0x18) */
{ 0x08, 0x17, 0x00, 0x03, 0x08, 0x0b, 0x00, 0x00, 0x0a, 0x14 },
-
+
_GREEN_CH, /* bReg_0x26 color mode - bits 4 and 5 */
0, /* bReg 0x27 color mode */
1, /* bReg 0x29 illumination mode */
@@ -1587,7 +1587,7 @@ static HWDef Hw0x03F0_0x0605 =
1, /* green lamp off (reg 0x32 + 0x33) */
16383, /* blue lamp on (reg 0x34 + 0x35) */
1, /* blue lamp off (reg 0x36 + 0x37) */
-
+
/* Misc */
0x13, /* bReg_0x45 */
0, /* wStepsAfterPaperSensor2 (0x4c & 0x4d) */
@@ -1985,7 +1985,7 @@ static HWDef Hw0x1606_0x0060 =
0, /* test mode ADC Output CODE MSB (reg 0x5c) */
0, /* test mode ADC Output CODE LSB (reg 0x5d) */
0, /* test mode (reg 0x5e) */
- _LM9832,
+ _LM9832,
MODEL_UMAX,
1.0
};
@@ -2019,7 +2019,7 @@ static HWDef Hw0x1606_0x0160 =
_GREEN_CH, /* bReg_0x26 color mode - bits 4 and 5 */
0x40, /* bReg 0x27 color mode */
1, /* bReg 0x29 illumination mode */
-
+
/* illumination mode settings (not used for CCD devices) */
{ 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 },
@@ -2807,7 +2807,7 @@ static SetDef Settings[] =
{"0x1606-0x0050", &Cap0x1606_0x0060, &Hw0x1606_0x0060, "3400" },
{"0x1606-0x0060", &Cap0x1606_0x0060, &Hw0x1606_0x0060, "3400" },
{"0x1606-0x0160", &Cap0x1606_0x0160, &Hw0x1606_0x0160, "5400" },
-
+
/* COMPAQ... */
{"0x049F-0x001A", &Cap0x1606_0x0060, &Hw0x1606_0x0060, "S4-100" },
diff --git a/backend/plustek-usbhw.c b/backend/plustek-usbhw.c
index a1dae68..05d3cc7 100644
--- a/backend/plustek-usbhw.c
+++ b/backend/plustek-usbhw.c
@@ -27,7 +27,7 @@
* - 0.45 - added function usb_AdjustLamps() to tweak CIS lamp settings
* - fixed NULL pointer problem in lamp-off ISR
* - added usb_AdjustCISLampSettings()
- * - skipping warmup for CIS devices
+ * - skipping warmup for CIS devices
* - 0.46 - fixed problem in usb_GetLampStatus for CIS devices, as we
* read back reg[0x29] to wrong position
* made it compile without itimer definitions
@@ -46,7 +46,7 @@
* - 0.50 - added button support for Plustek/Genius devices
* - changed behaviour of usb_IsScannerReady
* - added special misc I/O setup for CIS devices (usb_ResetRegisters)
- * - 0.51 - change usb_AdjustLamps() and use it now in usb_switchLamp()
+ * - 0.51 - change usb_AdjustLamps() and use it now in usb_switchLamp()
* - added usb_Wait4ScanSample() and usb_InCalibrationMode()
* - tweaked EjectPaper to work correctly with the supported sheet-fed
* devices
@@ -97,7 +97,7 @@
* If you do not wish that, delete this exception notice.
* <hr>
*/
-#ifdef HAVE_SYS_TIME_H
+#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
@@ -228,7 +228,7 @@ static SANE_Bool
usb_IsScannerReady( Plustek_Device *dev )
{
u_char value;
- double len;
+ double len;
long timeout;
struct timeval t;
SANE_Status res;
@@ -242,10 +242,10 @@ usb_IsScannerReady( Plustek_Device *dev )
if( len < 10 )
len = 10;
- gettimeofday( &t, NULL);
+ gettimeofday( &t, NULL);
timeout = t.tv_sec + len;
- do {
+ do {
res = usbio_ReadReg( dev->fd, 7, &value);
if( res != SANE_STATUS_GOOD ) {
sleep(1);
@@ -262,14 +262,14 @@ usb_IsScannerReady( Plustek_Device *dev )
return SANE_FALSE;
}
else {
- return SANE_TRUE;
+ return SANE_TRUE;
}
}
}
gettimeofday( &t, NULL);
-
+
} while( t.tv_sec < timeout );
-
+
DBG( _DBG_ERROR, "Scanner not ready!!!\n" );
return SANE_FALSE;
}
@@ -382,10 +382,10 @@ usb_WaitPos( Plustek_Device *dev, u_long to, SANE_Bool stay )
if( maxf < 5.0 )
maxf = 5.0;
DBG( _DBG_INFO2, ">>>> CURRENT MCLK_DIV = %u\n", mclk_div );
- DBG( _DBG_INFO2, ">>>> MCH = %u\n", mch );
- DBG( _DBG_INFO2, ">>>> FFS = %u\n", ffs );
- DBG( _DBG_INFO2, ">>>> HIGH-SPEED = %.3f (%.3f)\n",
- speed, hw->dHighSpeed);
+ DBG( _DBG_INFO2, ">>>> MCH = %u\n", mch );
+ DBG( _DBG_INFO2, ">>>> FFS = %u\n", ffs );
+ DBG( _DBG_INFO2, ">>>> HIGH-SPEED = %.3f (%.3f)\n",
+ speed, hw->dHighSpeed);
DBG( _DBG_INFO2, ">>>> MIN_FFS = %u (%.3f)\n", min_ffs, maxf);
}
@@ -407,7 +407,7 @@ usb_WaitPos( Plustek_Device *dev, u_long to, SANE_Bool stay )
break;
if( min_ffs != 0xffff ) {
-
+
fac = maxf/step;
if( ffs ) {
if((u_short)fac < ffs ) {
@@ -432,7 +432,7 @@ usb_WaitPos( Plustek_Device *dev, u_long to, SANE_Bool stay )
if(ffs == min_ffs )
ffs = 0;
} else {
-
+
if( !stay ) {
retval = SANE_TRUE;
break;
@@ -609,7 +609,7 @@ usb_ModuleMove( Plustek_Device *dev, u_char action, u_long dwStep )
} else {
return SANE_TRUE;
}
-
+
retval = SANE_FALSE;
/* start the sensor... */
@@ -633,9 +633,9 @@ usb_ModuleMove( Plustek_Device *dev, u_char action, u_long dwStep )
return SANE_TRUE;
}
- gettimeofday(&t2, NULL);
+ gettimeofday(&t2, NULL);
if( t2.tv_sec > secs )
- break;
+ break;
}
} else if( action == MOVE_SkipPaperSensor ) {
@@ -648,7 +648,7 @@ usb_ModuleMove( Plustek_Device *dev, u_char action, u_long dwStep )
return SANE_TRUE;
}
- gettimeofday(&t2, NULL);
+ gettimeofday(&t2, NULL);
if( t2.tv_sec > secs )
break;
}
@@ -750,7 +750,7 @@ usb_ModuleToHome( Plustek_Device *dev, SANE_Bool fWait )
regs[0x57] = 16;
}
break;
-
+
case MODEL_KaoHsiung:
default:
regs[0x56] = 64;
@@ -822,7 +822,7 @@ usb_ModuleToHome( Plustek_Device *dev, SANE_Bool fWait )
if( hw->motorModel == MODEL_Tokyo600) {
u_long dwSpeedUp = GetTickCount () + 250;
-
+
/* while(GetTickCount () < dwSpeedUp) */
while((int)(dwSpeedUp - GetTickCount ()) > 0)
{
@@ -832,9 +832,9 @@ usb_ModuleToHome( Plustek_Device *dev, SANE_Bool fWait )
if (!value)
return TRUE;
}
- wFastFeedStepSize = (WORD)(CRYSTAL_FREQ /
+ wFastFeedStepSize = (WORD)(CRYSTAL_FREQ /
(6UL * 8UL * 1 * Device.HwSetting.dMaxMotorSpeed * 4 *
- Device.HwSetting.wMotorDpi) * 60 / 78);
+ Device.HwSetting.wMotorDpi) * 60 / 78);
regs[0x48] = (u_char)(wFastFeedStepSize >> 8);
regs[0x49] = (u_char)(wFastFeedStepSize & 0xFF);
WriteRegisters(0x48, &regs[0x48], 2);
@@ -856,22 +856,22 @@ usb_MotorSelect( Plustek_Device *dev, SANE_Bool fADF )
if(!_IS_PLUSTEKMOTOR(hw->motorModel)) {
return SANE_TRUE;
}
-
+
if( fADF ) {
if( sCaps->bCCD == kNEC3778 ) {
-
+
hw->wMotorDpi = 300;
hw->dMaxMotorSpeed = 1.5;
hw->dMaxMoveSpeed = 1.5;
sCaps->OpticDpi.y = 600;
}
regs[0x5b] |= 0x80;
-
+
} else {
-
+
if( sCaps->bCCD == kNEC3778 ) {
-
+
hw->wMotorDpi = 600;
hw->dMaxMotorSpeed = 1.1;
hw->dMaxMoveSpeed = 0.9;
@@ -1131,7 +1131,7 @@ usb_GetLampStatus( Plustek_Device *dev )
}
}
- DBG( _DBG_INFO, "LAMP-STATUS: 0x%08x (%s)\n",
+ DBG( _DBG_INFO, "LAMP-STATUS: 0x%08x (%s)\n",
iLampStatus, iLampStatus?"on":"off" );
return iLampStatus;
}
@@ -1278,7 +1278,7 @@ usb_LampOn( Plustek_Device *dev, SANE_Bool fOn, SANE_Bool fResetTimer )
if( fOn ) {
if( iLampStatus != lampId ) {
-
+
DBG( _DBG_INFO, "Switching Lamp on\n" );
/* here we might have to switch off the TPA/Main lamp before
@@ -1292,7 +1292,7 @@ usb_LampOn( Plustek_Device *dev, SANE_Bool fOn, SANE_Bool fResetTimer )
}
memset( &regs[0x29], 0, (0x37-0x29+1));
-
+
regs[0x29] = hw->bReg_0x29;
if( !usb_switchLamp(dev, SANE_TRUE )) {
@@ -1314,12 +1314,12 @@ usb_LampOn( Plustek_Device *dev, SANE_Bool fOn, SANE_Bool fResetTimer )
sanei_lm983x_write( dev->fd, 0x29,
&regs[0x29], 0x37-0x29+1, SANE_TRUE );
if( lampId != dev->usbDev.currentLamp ) {
-
+
dev->usbDev.currentLamp = lampId;
-
+
if( fResetTimer ) {
-
- gettimeofday( &t, NULL );
+
+ gettimeofday( &t, NULL );
dev->usbDev.dwTicksLampOn = t.tv_sec;
DBG( _DBG_INFO, "Warmup-Timer started\n" );
}
@@ -1329,14 +1329,14 @@ usb_LampOn( Plustek_Device *dev, SANE_Bool fOn, SANE_Bool fResetTimer )
} else {
int iStatusChange = iLampStatus & ~lampId;
-
+
if( iStatusChange != iLampStatus ) {
DBG( _DBG_INFO, "Switching Lamp off\n" );
-
+
memset( &regs[0x29], 0, 0x37-0x29+1 );
if( !usb_switchLamp(dev, SANE_FALSE )) {
-
+
if( iStatusChange & DEV_LampReflection ) {
regs[0x2e] = 16383 / 256;
regs[0x2f] = 16383 % 256;
@@ -1389,7 +1389,7 @@ usb_ResetRegisters( Plustek_Device *dev )
HWDef *hw = &dev->usbDev.HwSetting;
u_char *regs = dev->usbDev.a_bRegs;
- DBG( _DBG_INFO, "RESETTING REGISTERS(%i) - 0x%02x\n",
+ DBG( _DBG_INFO, "RESETTING REGISTERS(%i) - 0x%02x\n",
dev->initialized, (int) sizeof(dev->usbDev.a_bRegs));
memset( regs, 0, sizeof(dev->usbDev.a_bRegs));
@@ -1462,7 +1462,7 @@ usb_ResetRegisters( Plustek_Device *dev )
}
/** function which checks if we are already in home position or not.
- *
+ *
*/
static SANE_Bool
usb_SensorStatus( Plustek_Device *dev )
@@ -1486,7 +1486,7 @@ usb_SensorStatus( Plustek_Device *dev )
usbio_WriteReg( dev->fd, 0x07, 0 );
usbio_WriteReg( dev->fd, 0x07, 0x20 );
usbio_WriteReg( dev->fd, 0x07, 0 );
-
+
sanei_lm983x_write( dev->fd, 0x58,
&hw->bReg_0x58, 0x5b-0x58+1, SANE_TRUE );
usbio_ReadReg( dev->fd, 2, &value );
@@ -1632,7 +1632,7 @@ usb_Wait4Warmup( Plustek_Device *dev )
DBG(_DBG_INFO,"Warmup: skipped for CIS devices\n" );
return SANE_TRUE;
}
-
+
if( dev->adj.warmup < 0 )
return SANE_TRUE;
@@ -1699,7 +1699,7 @@ usb_HasTPA( Plustek_Device *dev )
usbio_WriteReg ( dev->fd, 0x58, dev->usbDev.HwSetting.bReg_0x58 );
usbio_WriteReg ( dev->fd, 0x5a, dev->usbDev.HwSetting.bReg_0x5a );
usbio_WriteReg ( dev->fd, 0x5b, dev->usbDev.HwSetting.bReg_0x5b );
-
+
usbio_ReadReg ( dev->fd, 0x02, &val );
DBG( _DBG_INFO, "REG[0x02] = 0x%02x\n", val );
@@ -1707,7 +1707,7 @@ usb_HasTPA( Plustek_Device *dev )
DBG( _DBG_INFO, "UMAX-TPA detected\n" );
dev->usbDev.ModelStr = model;
return SANE_TRUE;
- } else
+ } else
DBG( _DBG_INFO, "UMAX-TPA NOT detected\n" );
if( dev->adj.enableTpa ) {
@@ -1716,7 +1716,7 @@ usb_HasTPA( Plustek_Device *dev )
return SANE_TRUE;
}
}
- }
+ }
return SANE_FALSE;
}
@@ -1737,7 +1737,7 @@ usb_UpdateButtonStatus( Plustek_Scanner *s )
return SANE_FALSE;
status = sanei_access_lock( dev->sane.name, 3 );
- if( SANE_STATUS_GOOD != status )
+ if( SANE_STATUS_GOOD != status )
return SANE_FALSE;
if( -1 == dev->fd ) {
@@ -1754,7 +1754,7 @@ usb_UpdateButtonStatus( Plustek_Scanner *s )
mio[0] = dev->usbDev.HwSetting.bReg_0x59;
mio[1] = dev->usbDev.HwSetting.bReg_0x5a;
mio[2] = dev->usbDev.HwSetting.bReg_0x5b;
-
+
usbio_ReadReg( dev->fd, 0x07, &val );
if( val == 0 ) {
@@ -1814,7 +1814,7 @@ usb_UpdateButtonStatus( Plustek_Scanner *s )
}
for( i = 0; i < 3; i++ ) {
-
+
DBG( _DBG_INFO2, "Checking MISC IO[%u]=0x%02x\n", i, mio[i] );
mask = 0x01;
@@ -1822,9 +1822,9 @@ usb_UpdateButtonStatus( Plustek_Scanner *s )
if((mio[i] & mask) == 0) {
DBG( _DBG_INFO2, "* port %u configured as input,"
- " status: %s (%u)\n", (i*2)+j+1,
+ " status: %s (%u)\n", (i*2)+j+1,
((val & 1)?"PRESSED":"RELEASED"), (OPT_BUTTON_0 + bc));
- s->val[OPT_BUTTON_0 + bc].w = val & 1;
+ s->val[OPT_BUTTON_0 + bc].w = val & 1;
bc++;
}
val >>= 1;
diff --git a/backend/plustek-usbimg.c b/backend/plustek-usbimg.c
index 41c0207..0c28491 100644
--- a/backend/plustek-usbimg.c
+++ b/backend/plustek-usbimg.c
@@ -254,7 +254,7 @@ static void usb_AverageColorWord( Plustek_Device *dev )
if((scan->sParam.bSource == SOURCE_Negative ||
scan->sParam.bSource == SOURCE_Transparency) &&
scan->sParam.PhyDpi.x > 800) {
-
+
scan->Red.pcw[0].Colors[0] = _HILO2WORD(scan->Red.pcw[0].HiLo[0]) >> ls;
scan->Green.pcw[0].Colors[0] = _HILO2WORD(scan->Green.pcw[0].HiLo[0]) >> ls;
scan->Blue.pcw[0].Colors[0] = _HILO2WORD(scan->Blue.pcw[0].HiLo[0]) >> ls;
@@ -334,7 +334,7 @@ static int usb_GetScaler( ScanDef *scan )
double ratio;
ratio = (double)scan->sParam.UserDpi.x/
- (double)scan->sParam.PhyDpi.x;
+ (double)scan->sParam.PhyDpi.x;
return (int)(1.0/ratio * _SCALER);
}
@@ -458,7 +458,7 @@ static void usb_ColorDuplicate16_2( Plustek_Device *dev )
ls = Shift;
else
ls = 0;
-
+
for( dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next) {
if( swap ) {
@@ -484,7 +484,7 @@ static void usb_ColorDuplicate16_2( Plustek_Device *dev )
*/
static void usb_ColorDuplicatePseudo16( Plustek_Device *dev )
{
- int next;
+ int next;
u_short wR, wG, wB;
u_long dw, pixels;
ScanDef *scan = &dev->scanning;
@@ -537,7 +537,7 @@ static void usb_ColorDuplicateGray( Plustek_Device *dev )
}
switch(scan->fGrayFromColor) {
-
+
case 1:
for (dw = 0; dw < scan->sParam.Size.dwPixels; dw++, pixels += next)
scan->UserBuf.pb[pixels] = scan->Red.pcb[dw].a_bColor[0];
@@ -761,7 +761,7 @@ static void usb_GrayDuplicate16( Plustek_Device *dev )
ls = Shift;
else
ls = 0;
-
+
pwm = scan->Green.philo;
for( pixels=scan->sParam.Size.dwPixels; pixels--; pwm++, dest += next ) {
if( swap )
@@ -912,7 +912,7 @@ static void usb_ColorScaleGray( Plustek_Device *dev )
ScanDef *scan = &dev->scanning;
usb_AverageColorByte( dev );
-
+
dw = scan->sParam.Size.dwPixels;
if( scan->sParam.bSource == SOURCE_ADF ) {
@@ -930,19 +930,19 @@ static void usb_ColorScaleGray( Plustek_Device *dev )
}
izoom = usb_GetScaler( scan );
-
+
for( ddax = 0; dw; src++ ) {
ddax -= _SCALER;
while((ddax < 0) && (dw > 0)) {
scan->UserBuf.pb[pixels] = src->a_bColor[0];
-
+
pixels += next;
ddax += izoom;
dw--;
}
- }
+ }
}
/**
@@ -1189,7 +1189,7 @@ static void usb_ColorScale8( Plustek_Device *dev )
pixels = 0;
}
- izoom = usb_GetScaler( scan );
+ izoom = usb_GetScaler( scan );
for( bitsput = 0, ddax = 0; dw; bitsput++ ) {
@@ -1341,7 +1341,7 @@ static void usb_ColorScale16_2( Plustek_Device *dev )
while((ddax < 0) && (dw > 0)) {
if( swap ) {
-
+
tmp = *((HiLoDef*)&scan->Red.pw[bitsput]);
scan->UserBuf.pw_rgb[pixels].Red = _HILO2WORD(tmp) >> ls;
@@ -1384,7 +1384,7 @@ static void usb_ColorScalePseudo16( Plustek_Device *dev )
next = 1;
pixels = 0;
}
-
+
izoom = usb_GetScaler( scan );
wR = (u_short)scan->Red.pcb[0].a_bColor[0];
@@ -1399,13 +1399,13 @@ static void usb_ColorScalePseudo16( Plustek_Device *dev )
scan->UserBuf.pw_rgb[pixels].Red =
(wR + scan->Red.pcb[bitsput].a_bColor[0]) << bShift;
-
+
scan->UserBuf.pw_rgb[pixels].Green =
(wG + scan->Green.pcb[bitsput].a_bColor[0]) << bShift;
-
+
scan->UserBuf.pw_rgb[pixels].Blue =
(wB + scan->Blue.pcb[bitsput].a_bColor[0]) << bShift;
-
+
pixels += next;
ddax += izoom;
dw--;
@@ -1440,7 +1440,7 @@ static void usb_BWScale( Plustek_Device *dev )
}
izoom = usb_GetScaler( scan );
-
+
memset( dest, 0, scan->dwBytesLine );
ddax = 0;
dw = 0;
@@ -1454,7 +1454,7 @@ static void usb_BWScale( Plustek_Device *dev )
tmp = src[(i>>3)];
if((dw>>3) < scan->sParam.Size.dwValidPixels ) {
-
+
if( 0 != (tmp &= (1 << ((~(i & 0x7))&0x7))))
dest[dw>>3] |= (1 << ((~(dw & 0x7))&0x7));
}
@@ -1495,7 +1495,7 @@ static void usb_BWScaleFromColor( Plustek_Device *dev )
d = j = 0;
for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
-
+
ddax -= _SCALER;
while((ddax < 0) && (pixels > 0)) {
@@ -1545,7 +1545,7 @@ static void usb_BWScaleFromColor_2( Plustek_Device *dev )
d = j = 0;
for( pixels = scan->sParam.Size.dwPixels; pixels; src++ ) {
-
+
ddax -= _SCALER;
while((ddax < 0) && (pixels > 0)) {
@@ -1583,7 +1583,7 @@ static void usb_GrayScale8( Plustek_Device *dev )
dest = scan->UserBuf.pb;
next = 1;
}
-
+
izoom = usb_GetScaler( scan );
ddax = 0;
@@ -1625,7 +1625,7 @@ static void usb_GrayScale16( Plustek_Device *dev )
next = 1;
dest = scan->UserBuf.pw;
}
-
+
izoom = usb_GetScaler( scan );
ddax = 0;
@@ -1711,7 +1711,7 @@ static void usb_GetImageProc( Plustek_Device *dev )
case SCANDATATYPE_Color:
if (scan->sParam.bBitDepth > 8) {
- if( usb_IsCISDevice(dev)){
+ if( usb_IsCISDevice(dev)){
scan->pfnProcess = usb_ColorScale16_2;
DBG( _DBG_INFO, "ImageProc is: ColorScale16_2\n" );
} else {
@@ -1719,7 +1719,7 @@ static void usb_GetImageProc( Plustek_Device *dev )
DBG( _DBG_INFO, "ImageProc is: ColorScale16\n" );
}
if (scan->fGrayFromColor) {
- if( usb_IsCISDevice(dev)){
+ if( usb_IsCISDevice(dev)){
scan->pfnProcess = usb_ColorScaleGray16_2;
DBG( _DBG_INFO, "ImageProc is: ColorScaleGray16_2\n" );
} else {
@@ -1730,7 +1730,7 @@ static void usb_GetImageProc( Plustek_Device *dev )
} else if (scan->dwFlag & SCANFLAG_Pseudo48) {
scan->pfnProcess = usb_ColorScalePseudo16;
DBG( _DBG_INFO, "ImageProc is: ColorScalePseudo16\n" );
-
+
} else if (scan->fGrayFromColor) {
if( usb_IsCISDevice(dev)){
@@ -1752,7 +1752,7 @@ static void usb_GetImageProc( Plustek_Device *dev )
}
} else {
- if( usb_IsCISDevice(dev)){
+ if( usb_IsCISDevice(dev)){
scan->pfnProcess = usb_ColorScale8_2;
DBG( _DBG_INFO, "ImageProc is: ColorScale8_2\n" );
} else {
@@ -1829,7 +1829,7 @@ static void usb_GetImageProc( Plustek_Device *dev )
}
}
} else {
- if( usb_IsCISDevice(dev)){
+ if( usb_IsCISDevice(dev)){
scan->pfnProcess = usb_ColorDuplicate8_2;
DBG( _DBG_INFO, "ImageProc is: ColorDuplicate8_2\n" );
} else {
@@ -1860,9 +1860,9 @@ static void usb_GetImageProc( Plustek_Device *dev )
break;
}
}
-
+
if( scan->sParam.bBitDepth == 8 ) {
-
+
if( scan->dwFlag & SCANFLAG_Pseudo48 ) {
if( scan->dwFlag & SCANFLAG_RightAlign ) {
bShift = 5;
diff --git a/backend/plustek-usbio.c b/backend/plustek-usbio.c
index cae0e0d..9677456 100644
--- a/backend/plustek-usbio.c
+++ b/backend/plustek-usbio.c
@@ -23,7 +23,7 @@
* - 0.47 - no changes
* - 0.48 - cleanup
* - 0.49 - no changes
- * - 0.50 - usbio_DetectLM983x() now returns error if register
+ * - 0.50 - usbio_DetectLM983x() now returns error if register
* could not be red
* - usbio_ResetLM983x() checks for reg7 value before writing
* - 0.51 - allow dumpRegs to be called without valid fd
@@ -69,7 +69,7 @@
* If you do not wish that, delete this exception notice.
* <hr>
*/
-
+
#include "../include/sane/sanei_usb.h"
#include "../include/sane/sanei_lm983x.h"
@@ -256,7 +256,7 @@ static SANE_Bool usbio_WriteReg( SANE_Int handle,
for( i = 0; i < 100; i++ ) {
sanei_lm983x_write_byte( handle, reg, value );
-
+
/* Flush register 0x02 when register 0x58 is written */
if( 0x58 == reg ) {
_UIO( usbio_ReadReg( handle, 2, &data ));
@@ -301,7 +301,7 @@ static SANE_Status usbio_DetectLM983x( SANE_Int fd, SANE_Byte *version )
sprintf( buf, "usbio_DetectLM983x: found " );
switch((SANE_Int)value ) {
-
+
case 4: strcat( buf, "LM9832/3" ); break;
case 3: strcat( buf, "LM9831" ); break;
case 2: strcat( buf, "LM9830 --> unsupported!!!" );
diff --git a/backend/plustek-usbmap.c b/backend/plustek-usbmap.c
index 1e54789..c979345 100644
--- a/backend/plustek-usbmap.c
+++ b/backend/plustek-usbmap.c
@@ -75,7 +75,7 @@ static void usb_MapAdjust( Plustek_Device *dev )
{
int i, tabLen;
double b, c, tmp;
-
+
tabLen = _MAP_SIZE;
/* adjust brightness (b) and contrast (c) using the function:
@@ -125,11 +125,11 @@ static SANE_Bool usb_MapDownload( Plustek_Device *dev )
int i, threshold;
SANE_Byte value;
SANE_Bool fInverse = 0;
-
+
DBG( _DBG_INFO, "usb_MapDownload()\n" );
/* the maps are have been already set */
-
+
/* do the brightness and contrast adjustment ... */
if( scanning->sParam.bDataType != SCANDATATYPE_BW )
usb_MapAdjust( dev );
@@ -141,7 +141,7 @@ static SANE_Bool usb_MapDownload( Plustek_Device *dev )
* into trouble elsewhere on CanoScan models using gray mode
*/
for( color = 0; color < 3; color++) {
-
+
/* select color */
value = (color << 2)+2;
@@ -161,13 +161,13 @@ static SANE_Bool usb_MapDownload( Plustek_Device *dev )
threshold = 0;
if(threshold > (int)_MAP_SIZE)
threshold = _MAP_SIZE;
-
+
DBG(_DBG_INFO, "* Threshold is at %u brightness=%i\n",
threshold, scanning->sParam.brightness );
for(i = 0; i < threshold; i++)
a_bMap[color*_MAP_SIZE + i] = 0;
-
+
for(i = threshold; i < _MAP_SIZE; i++)
a_bMap[color*_MAP_SIZE + i] = 255;
@@ -184,23 +184,23 @@ static SANE_Bool usb_MapDownload( Plustek_Device *dev )
}
if( fInverse ) {
-
+
u_char map[_MAP_SIZE];
u_char *pMap = a_bMap+color*_MAP_SIZE;
-
+
DBG( _DBG_INFO, "* Inverting Map\n" );
-
+
for( i = 0; i < _MAP_SIZE; i++, pMap++ )
map[i] = ~*pMap;
-
+
sanei_lm983x_write( dev->fd, 0x06, map, _MAP_SIZE, SANE_FALSE );
-
+
} else {
DBG( _DBG_INFO, "* downloading map %u...\n", color );
sanei_lm983x_write( dev->fd, 0x06, a_bMap+color*_MAP_SIZE,
_MAP_SIZE, SANE_FALSE );
}
-
+
} /* for each color */
DBG( _DBG_INFO, "usb_MapDownload() done.\n" );
diff --git a/backend/plustek-usbscan.c b/backend/plustek-usbscan.c
index c8824fc..bafc86a 100644
--- a/backend/plustek-usbscan.c
+++ b/backend/plustek-usbscan.c
@@ -595,7 +595,7 @@ usb_GetMCLKDiv( Plustek_Device *dev )
DBG( _DBG_INFO, "usb_GetMCLKDiv()\n" );
r = 8; /* line rate */
- if ((regs[0x26] & 7) == 0)
+ if ((regs[0x26] & 7) == 0)
r = 24; /* pixel rate */
/* use high or low res min integration time */
@@ -606,7 +606,7 @@ usb_GetMCLKDiv( Plustek_Device *dev )
min_int_time /((double)1000. * r * m_wLineLength));
minmclk = _MAX(minmclk,MCLKDIV_SCALING);
- maxmclk = (int)(32.5*MCLKDIV_SCALING + .5);
+ maxmclk = (int)(32.5*MCLKDIV_SCALING + .5);
DBG(_DBG_INFO2,"- lower mclkdiv limit=%f\n",(double)minmclk/MCLKDIV_SCALING);
DBG(_DBG_INFO2,"- upper mclkdiv limit=%f\n",(double)maxmclk/MCLKDIV_SCALING);
@@ -622,7 +622,7 @@ usb_GetMCLKDiv( Plustek_Device *dev )
/* compute the horizontal dpi (pixels per inch) */
j = regs[0x9] & 0x7;
- hdpi = ((j&1)*.5+1)*(j&2?2:1)*(j&4?4:1);
+ hdpi = ((j&1)*.5+1)*(j&2?2:1)*(j&4?4:1);
pixelsperline = (int)((256*regs[0x24]+regs[0x25]-256*regs[0x22]-regs[0x23])
*pixelbits/(hdpi * 8));
@@ -644,7 +644,7 @@ usb_GetMCLKDiv( Plustek_Device *dev )
while (mclkdiv * hdpi < 6.*MCLKDIV_SCALING) {
mclkdiv++;
}
- DBG( _DBG_INFO2, "- HIGHSPEED MCLK Divider = %u\n",
+ DBG( _DBG_INFO2, "- HIGHSPEED MCLK Divider = %u\n",
mclkdiv/MCLKDIV_SCALING );
}
@@ -690,7 +690,7 @@ usb_GetMCLKDivider( Plustek_Device *dev, ScanParam *pParam )
(m_dMCLKDivider * m_bCM * m_wLineLength / 6 * 9 / 10) *
(1 + m_bIntTimeAdjust)) {
m_bIntTimeAdjust++;
- }
+ }
if( hw->motorModel == MODEL_HuaLien &&
sCaps->bCCD == kNEC3799 && m_bIntTimeAdjust > bMaxITA) {
@@ -730,7 +730,7 @@ usb_GetMCLKDivider( Plustek_Device *dev, ScanParam *pParam )
m_wStepSize, regs[0x46], regs[0x47] );
usb_GetDPD( dev );
}
-
+
/* Compute maximum MCLK divider base on maximum integration time for
* high lamp PWM, use equation 4
*/
@@ -830,7 +830,7 @@ usb_GetLineLength( Plustek_Device *dev, ScanParam *param )
ctmode = (regs[0x0b] >> 3) & 3; /* cis tr timing mode */
- m_bLineRateColor = 1;
+ m_bLineRateColor = 1;
if (afeop == 1 || afeop == 5) /* if 3 channel line or 1 channel mode b */
m_bLineRateColor = 3;
@@ -845,7 +845,7 @@ usb_GetLineLength( Plustek_Device *dev, ScanParam *param )
b = 1;
if( ctmode == 0 ) { /* CCD mode scanner*/
-
+
b = (ntr + 1) * ((2 * gbnd) + dur + 1);
b += (1 - ntr) * en_tradj;
}
@@ -871,12 +871,12 @@ usb_GetLineLength( Plustek_Device *dev, ScanParam *param )
if( ctmode == 0 )
tr += m_bLineRateColor;
} else {
-
+
int le_phi, num_byteclk, num_mclkf, tr_fast_pix, extra_pix;
-
+
/* Line color or gray mode */
if( afeop != 0 ) {
-
+
le_phi = (tradj + 1) / 2 + 1 + 6;
num_byteclk = ((le_phi + 8 * le + 8 * b + 4) /
(8 * tradj)) + 1;
@@ -893,7 +893,7 @@ usb_GetLineLength( Plustek_Device *dev, ScanParam *param )
tr_fast_pix = num_byteclk;
extra_pix = (num_mclkf - le_phi) % (3 * 8);
}
-
+
tr = b + le + 4 + tr_fast_pix;
if (extra_pix == 0)
tr++;
@@ -970,8 +970,8 @@ usb_GetMotorParam( Plustek_Device *dev, ScanParam *pParam )
}
else if(pParam->PhyDpi.x <= 400)
{
- regs[0x56] = 8;
- regs[0x57] = 48;
+ regs[0x56] = 8;
+ regs[0x57] = 48;
}
else if(pParam->PhyDpi.x <= 600)
{
@@ -1184,7 +1184,7 @@ usb_SetScanParameters( Plustek_Device *dev, ScanParam *pParam )
usb_GetScanRect ( dev, pParam );
usb_PresetStepSize( dev, pParam );
-
+
if( dev->caps.dwFlag & SFLAG_ADF ) {
if( pParam->bCalibration == PARAM_Scan ) {
@@ -1251,7 +1251,7 @@ usb_SetScanParameters( Plustek_Device *dev, ScanParam *pParam )
/* Compute the number of lines to scan using actual Y resolution */
usb_GetScanLinesAndSize( dev, pParam );
-
+
/* Pause limit should be bounded by total bytes to read
* so that the chassis will not move too far.
*/
@@ -1316,7 +1316,7 @@ usb_SetScanParameters( Plustek_Device *dev, ScanParam *pParam )
_UIO(sanei_lm983x_write( dev->fd, 0x08, &regs[0x08], 0x7f - 0x08+1, SANE_TRUE));
usleep(100);
-
+
if( !usbio_WriteReg( dev->fd, 0x07, 0 ))
return SANE_FALSE;
@@ -1363,7 +1363,7 @@ usb_ScanBegin( Plustek_Device *dev, SANE_Bool auto_park )
DBG( _DBG_INFO, "ScanBegin() - Cancel detected...\n" );
return SANE_FALSE;
}
-
+
_UIO(usbio_ReadReg( dev->fd, 0x01, &m_bOldScanData ));
if( m_bOldScanData ) {
@@ -1373,7 +1373,7 @@ usb_ScanBegin( Plustek_Device *dev, SANE_Bool auto_park )
DBG(_DBG_INFO,"Flushing cache - %lu bytes (bOldScanData=%u)\n",
dwBytesToRead, m_bOldScanData );
- _UIO(sanei_lm983x_read( dev->fd, 0x00, pBuffer,
+ _UIO(sanei_lm983x_read( dev->fd, 0x00, pBuffer,
dwBytesToRead, SANE_FALSE ));
free( pBuffer );
@@ -1430,7 +1430,7 @@ usb_ScanEnd( Plustek_Device *dev )
usb_ModuleToHome( dev, SANE_FALSE );
}
else if( SANE_TRUE == cancelRead ) {
-
+
usb_ModuleToHome( dev, SANE_FALSE );
}
return SANE_TRUE;
@@ -1453,14 +1453,14 @@ usb_IsDataAvailableInDRAM( Plustek_Device *dev )
DBG( _DBG_INFO, "usb_IsDataAvailableInDRAM()\n" );
- gettimeofday( &t, NULL);
+ gettimeofday( &t, NULL);
dwTicks = t.tv_sec + 30;
for(;;) {
_UIO( sanei_lm983x_read( dev->fd, 0x01, a_bBand, 3, SANE_FALSE ));
- gettimeofday( &t, NULL);
+ gettimeofday( &t, NULL);
if( t.tv_sec > dwTicks )
break;
@@ -1468,7 +1468,7 @@ usb_IsDataAvailableInDRAM( Plustek_Device *dev )
DBG(_DBG_INFO,"usb_IsDataAvailableInDRAM() - Cancel detected...\n");
return SANE_FALSE;
}
-
+
/* It is not stable for read */
if((a_bBand[0] != a_bBand[1]) && (a_bBand[1] != a_bBand[2]))
continue;
@@ -1549,7 +1549,7 @@ usb_GetImageInfo( Plustek_Device *dev, ImgDef *pInfo, WinInfo *pSize )
case COLOR_TRUE48:
pSize->dwBytes = pSize->dwPixels * 6UL;
break;
-
+
case COLOR_TRUE24:
if( dev->scanning.fGrayFromColor > 7 ){
pSize->dwBytes = (pSize->dwPixels + 7UL) >> 3;
@@ -1597,7 +1597,7 @@ usb_SaveImageInfo( Plustek_Device *dev, ImgDef *pInfo )
case COLOR_TRUE48:
pParam->bBitDepth = 16;
/* fall through... */
-
+
case COLOR_TRUE24:
pParam->bDataType = SCANDATATYPE_Color;
@@ -1638,7 +1638,7 @@ usb_SaveImageInfo( Plustek_Device *dev, ImgDef *pInfo )
* sheetfed device to avoid stripes in the resulting pictures
*/
if( usb_IsSheetFedDevice(dev)) {
-
+
int step, div, org, xdpi;
xdpi = usb_SetAsicDpiX( dev, pParam->UserDpi.x );
diff --git a/backend/plustek-usbshading.c b/backend/plustek-usbshading.c
index 6d08dc7..98a28d9 100644
--- a/backend/plustek-usbshading.c
+++ b/backend/plustek-usbshading.c
@@ -282,9 +282,9 @@ static void usb_SetMCLK( Plustek_Device *dev, ScanParam *param )
HWDef *hw = &dev->usbDev.HwSetting;
dMCLK = usb_GetMCLK( dev, param );
- param->dMCLK = dMCLK;
+ param->dMCLK = dMCLK;
- DBG( _DBG_INFO, "SETMCLK[%u/%u]: %.3f\n",
+ DBG( _DBG_INFO, "SETMCLK[%u/%u]: %.3f\n",
hw->motorModel, param->bDataType, dMCLK );
}
@@ -314,14 +314,14 @@ static SANE_Bool usb_SetDarkShading( Plustek_Device *dev, u_char channel,
/* Download offset coefficients */
if( SANE_STATUS_GOOD == res ) {
-
+
res = sanei_lm983x_write( dev->fd, 0x06,
(u_char*)coeff_buffer, wCount, SANE_FALSE );
if( SANE_STATUS_GOOD == res )
return SANE_TRUE;
}
}
-
+
DBG( _DBG_ERROR, "usb_SetDarkShading() failed\n" );
return SANE_FALSE;
}
@@ -358,7 +358,7 @@ static SANE_Bool usb_SetWhiteShading( Plustek_Device *dev, u_char channel,
return SANE_TRUE;
}
}
-
+
DBG( _DBG_ERROR, "usb_SetWhiteShading() failed\n" );
return SANE_FALSE;
}
@@ -416,7 +416,7 @@ static void usb_GetSWOffsetGain( Plustek_Device *dev )
param->swGain[2] = 800;
#endif
break;
-
+
case kNECSLIM:
DBG( _DBG_INFO2, "kNECSLIM adjustments\n" );
if( param->PhyDpi.x <= 150 ) {
@@ -651,11 +651,11 @@ static void usb_GetSWOffsetGain( Plustek_Device *dev )
param->swOffset[0] = -304;
param->swOffset[1] = -304;
param->swOffset[2] = -304;
- param->swGain[0] = 910;
- param->swGain[1] = 920;
+ param->swGain[0] = 910;
+ param->swGain[1] = 920;
param->swGain[2] = 975;
}
-
+
if(param->bDataType == SCANDATATYPE_BW && param->PhyDpi.x <= 300)
{
param->swOffset[1] = 1000;
@@ -703,7 +703,7 @@ static u_char usb_GetNewGain( Plustek_Device *dev, u_short wMax, int channel )
bGain = (u_char)dAmp + 32;
}
-
+
if( bGain > 0x3f ) {
DBG( _DBG_INFO, "* GAIN Overflow!!!\n" );
bGain = 0x3f;
@@ -734,7 +734,7 @@ static void setAdjGain( int gain, u_char *reg )
* @param l_off -
* @return
*/
-static SANE_Bool adjLampSetting( Plustek_Device *dev, int channel, u_long max,
+static SANE_Bool adjLampSetting( Plustek_Device *dev, int channel, u_long max,
u_long ideal, u_short l_on, u_short *l_off )
{
SANE_Bool adj = SANE_FALSE;
@@ -796,7 +796,7 @@ static SANE_Bool usb_AdjustGain( Plustek_Device *dev, int fNegative )
DBG( _DBG_INFO, "#########################\n" );
DBG( _DBG_INFO, "usb_AdjustGain()\n" );
- if((dev->adj.rgain != -1) &&
+ if((dev->adj.rgain != -1) &&
(dev->adj.ggain != -1) && (dev->adj.bgain != -1)) {
setAdjGain( dev->adj.rgain, &regs[0x3b] );
setAdjGain( dev->adj.ggain, &regs[0x3c] );
@@ -871,7 +871,7 @@ TOGAIN:
dumpPicInit(&m_ScanParam, tmp);
dumpPic(tmp, (u_char*)scanbuf, m_ScanParam.Size.dwPhyBytes, 0);
-
+
#ifdef SWAP_COARSE
if(usb_HostSwap())
#endif
@@ -913,7 +913,7 @@ TOGAIN:
Gain_Hilight.Green = (u_short)(rgb.Green / 20UL);
Gain_Hilight.Blue = (u_short)(rgb.Blue / 20UL);
DBG(_DBG_INFO2, "MAX(R,G,B)= 0x%04x(%u), 0x%04x(%u), 0x%04x(%u)\n",
- Gain_Hilight.Red, Gain_Hilight.Red, Gain_Hilight.Green,
+ Gain_Hilight.Red, Gain_Hilight.Red, Gain_Hilight.Green,
Gain_Hilight.Green, Gain_Hilight.Blue, Gain_Hilight.Blue );
regs[0x3b] = usb_GetNewGain(dev,Gain_Hilight.Red, 0 );
@@ -945,7 +945,7 @@ TOGAIN:
regs[0x3c] = regs[0x3d] = usb_GetNewGain(dev,Gain_Hilight.Green,1);
}
} else {
-
+
if( m_ScanParam.bDataType == SCANDATATYPE_Color ) {
RGBUShortDef max_rgb, min_rgb, tmp_rgb;
@@ -1055,7 +1055,7 @@ TOGAIN:
scanning->sParam.dMCLK = dMCLK = dMCLK - 0.5;
regs[0x3b] = regs[0x3c] = regs[0x3d] = 1;
-
+
adj = SANE_TRUE;
} else if(((regs[0x3b] == 63) || (regs[0x3c] == 63) ||
@@ -1072,7 +1072,7 @@ TOGAIN:
goto TOGAIN;
}
}
-
+
} else {
/* for MODEL KaoHsiung 1200 scanner multi-straight-line bug at
@@ -1265,7 +1265,7 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
DBG( _DBG_INFO, "#########################\n" );
DBG( _DBG_INFO, "usb_AdjustOffset()\n" );
- if((dev->adj.rofs != -1) &&
+ if((dev->adj.rofs != -1) &&
(dev->adj.gofs != -1) && (dev->adj.bofs != -1)) {
regs[0x38] = (dev->adj.rofs & 0x3f);
regs[0x39] = (dev->adj.gofs & 0x3f);
@@ -1329,10 +1329,10 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
DBG( _DBG_ERROR, "usb_AdjustOffset() failed\n" );
return SANE_FALSE;
}
-
+
i = 0;
- DBG( _DBG_INFO2, "S.dwPixels = %lu\n", m_ScanParam.Size.dwPixels );
+ DBG( _DBG_INFO2, "S.dwPixels = %lu\n", m_ScanParam.Size.dwPixels );
DBG( _DBG_INFO2, "dwPixels = %lu\n", dwPixels );
DBG( _DBG_INFO2, "dwPhyBytes = %lu\n", m_ScanParam.Size.dwPhyBytes );
DBG( _DBG_INFO2, "dwPhyPixels = %lu\n", m_ScanParam.Size.dwPhyPixels );
@@ -1350,7 +1350,7 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
}
sprintf( tmp, "coarse-off-%u.raw", i++ );
-
+
#ifdef SWAP_COARSE
if(usb_HostSwap())
usb_Swap((u_short *)scanbuf, m_ScanParam.Size.dwPhyBytes );
@@ -1380,7 +1380,7 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
dwSum[1], dwSum[1] /dwPixels );
DBG( _DBG_INFO2, "BlueSum = %lu, ave = %lu\n",
dwSum[2], dwSum[2] /dwPixels );
-
+
/* do averaging for each channel */
dwSum[0] /= dwPixels;
dwSum[1] /= dwPixels;
@@ -1422,7 +1422,7 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
regs[0x3a] = bExpect[2];
} else {
- regs[0x38] = regs[0x39] = regs[0x3a] = bExpect[0];
+ regs[0x38] = regs[0x39] = regs[0x3a] = bExpect[0];
}
DBG( _DBG_INFO2, "REG[0x38] = %u\n", regs[0x38] );
@@ -1445,7 +1445,7 @@ static SANE_Bool usb_AdjustOffset( Plustek_Device *dev )
/** this function tries to find out some suitable values for the dark
* fine calibration. If the device owns a black calibration strip
- * the data is simply copied. If not, then the white strip is read
+ * the data is simply copied. If not, then the white strip is read
* with the lamp switched off...
*/
static void usb_GetDarkShading( Plustek_Device *dev, u_short *pwDest,
@@ -1527,7 +1527,7 @@ static void usb_GetDarkShading( Plustek_Device *dev, u_short *pwDest,
for( dw = 0; dw < dwPixels; dw++ )
pwDest[dw] = (u_short)dwSum[dw & 1];
} else {
-
+
/* Standard CCD */
/* do some averaging on the line */
@@ -1643,7 +1643,7 @@ static SANE_Bool usb_AdjustDarkShading( Plustek_Device *dev )
DBG( _DBG_ERROR, "usb_AdjustDarkShading() failed\n" );
return SANE_FALSE;
}
-
+
/* set illumination mode and switch lamp on again
*/
regs[0x29] = hw->bReg_0x29;
@@ -1720,7 +1720,7 @@ static SANE_Bool usb_AdjustDarkShading( Plustek_Device *dev )
* @param hilight - defines the number of values to skip.
* @param shading_lines - defines the overall number of shading lines.
*/
-static void usb_CalSortHighlight( Plustek_Device *dev, ScanParam *sp,
+static void usb_CalSortHighlight( Plustek_Device *dev, ScanParam *sp,
u_long hilight, u_long shading_lines )
{
ScanDef *scan = &dev->scanning;
@@ -1766,7 +1766,7 @@ static void usb_CalSortHighlight( Plustek_Device *dev, ScanParam *sp,
/** function to remove the brightest values out of each row
* @param dev - the almighty device structure.
- * @param sp - is a pointer to the scanparam structure used for
+ * @param sp - is a pointer to the scanparam structure used for
* scanning the shading lines.
* @param hilight - defines the number of values to skip.
* @param shading_lines - defines the overall number of shading lines.
@@ -1822,7 +1822,7 @@ static void usb_procHighlightAndShadow( Plustek_Device *dev, ScanParam *sp,
pg = pr + sp->Size.dwPhyPixels;
pb = pg + sp->Size.dwPhyPixels;
- memset(pr, 0, sp->Size.dwPhyPixels * 4UL * 3UL);
+ memset(pr, 0, sp->Size.dwPhyPixels * sizeof(*pr) * 3UL);
/* Sort hilight */
usb_CalSortHighlight(dev, sp, hilight, shading_lines);
@@ -1865,13 +1865,13 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
u_short hilight, shadow;
int i;
SANE_Bool swap = usb_HostSwap();
-
+
if( scaps->workaroundFlag & _WAF_SKIP_FINE )
return SANE_TRUE;
DBG( _DBG_INFO, "#########################\n" );
DBG( _DBG_INFO, "usb_AdjustWhiteShading()\n" );
-
+
m_pAvMono = (u_short*)scan->pScanBuffer;
if( usb_IsEscPressed())
@@ -1904,7 +1904,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
if( usb_IsCISDevice(dev) && m_ScanParam.bDataType == SCANDATATYPE_Color )
m_ScanParam.Size.dwBytes *= 3;
- m_dwPixels = scan->sParam.Size.dwPixels * m_ScanParam.UserDpi.x /
+ m_dwPixels = scan->sParam.Size.dwPixels * m_ScanParam.UserDpi.x /
scan->sParam.UserDpi.x;
dw = (u_long)(hw->wDRAMSize - 196 /*192 KiB*/) * 1024UL;
@@ -1950,7 +1950,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
if( 0 == dwRead ) {
dumpPicInit(&m_ScanParam, tmp);
}
-
+
dumpPic(tmp, (u_char*)pBuf + dwRead, m_ScanParam.Size.dwTotalBytes, 0);
if( usb_ScanEnd( dev )) {
@@ -1965,7 +1965,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
}
m_pSum = (u_long*)((u_char*)pBuf + m_ScanParam.Size.dwPhyBytes * shading_lines);
-
+
/*
* do some reordering on CIS based devices:
* from RRRRRRR.... GGGGGGGG.... BBBBBBBBB, create RGB RGB RGB ...
@@ -2017,7 +2017,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
#ifdef SWAP_FINE
if(usb_HostSwap()) {
#endif
- for( dw = 0; dw < m_dwPixels * m_ScanParam.bChannels; dw++ )
+ for( dw = 0; dw < m_dwPixels * m_ScanParam.bChannels; dw++ )
pwDest[dw] = _HILO2WORD(pwSrce[dw]);
#ifdef SWAP_FINE
} else {
@@ -2077,7 +2077,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
pValue->Mono = 65535U;
else
pValue->Mono = (u_short)*pdw;
-
+
if (pValue->Mono > 16384U)
pValue->Mono = (u_short)(GAIN_Target * 16384U / pValue->Mono);
else
@@ -2153,7 +2153,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
if( scan->sParam.bSource != SOURCE_Negative ) {
for( dw = 0; dw < m_ScanParam.Size.dwPhyPixels; dw++) {
-
+
pdw[dw] = pdw[dw] * 1000 /((shading_lines-hilight-shadow) *
scan->sParam.swGain[1]);
if( pdw[dw] > 65535U )
@@ -2172,7 +2172,7 @@ static SANE_Bool usb_AdjustWhiteShading( Plustek_Device *dev )
#endif
_SWAP(pValue[dw].HiLo.bHi, pValue[dw].HiLo.bLo);
}
-
+
} else{
for( dw = 0; dw < m_ScanParam.Size.dwPhyPixels; dw++ ) {
@@ -2200,17 +2200,17 @@ static void usb_ResizeWhiteShading( double dAmp, u_short *pwShading, int iGain )
{
u_long dw, dwAmp;
u_short w;
-
+
DBG( _DBG_INFO2, "ResizeWhiteShading: dAmp=%.3f, iGain=%i\n", dAmp, iGain );
for( dw = 0; dw < m_ScanParam.Size.dwPhyPixels; dw++ ) {
-
+
dwAmp = (u_long)(GAIN_Target * 0x4000 /
(pwShading[dw] + 1) * dAmp) * iGain / 1000;
if( dwAmp <= GAIN_Target)
w = (u_short)dwAmp;
- else
+ else
w = GAIN_Target;
#ifndef SWAP_FINE
@@ -2252,14 +2252,14 @@ usb_PrepareCalibration( Plustek_Device *dev )
m_ScanParam.bDataType = SCANDATATYPE_Gray;
usb_SetMCLK( dev, &m_ScanParam );
-
+
/* preset these registers offset/gain */
regs[0x38] = regs[0x39] = regs[0x3a] = 0;
regs[0x3b] = regs[0x3c] = regs[0x3d] = 1;
regs[0x45] &= ~0x10;
- memset( a_wWhiteShading, 0, _SHADING_BUF );
- memset( a_wDarkShading, 0, _SHADING_BUF );
+ memset( a_wWhiteShading, 0, _SHADING_BUF * sizeof(a_wWhiteShading[0]) );
+ memset( a_wDarkShading, 0, _SHADING_BUF * sizeof(a_wDarkShading[0]) );
scan->skipCoarseCalib = SANE_FALSE;
@@ -2319,7 +2319,7 @@ usb_SpeedTest( Plustek_Device *dev )
DBG( 1, "#########################\n" );
DBG( 1, "usb_SpeedTest(%d,%lu)\n", dev->initialized, dev->transferRate );
if( dev->transferRate != DEFAULT_RATE ) {
- DBG( 1, "* skipped, using already detected speed: %lu Bytes/s\n",
+ DBG( 1, "* skipped, using already detected speed: %lu Bytes/s\n",
dev->transferRate );
return SANE_TRUE;
}
@@ -2358,7 +2358,7 @@ usb_SpeedTest( Plustek_Device *dev )
DBG( _DBG_ERROR, "usb_SpeedTest() failed\n" );
return SANE_FALSE;
}
- if (!usb_IsDataAvailableInDRAM( dev ))
+ if (!usb_IsDataAvailableInDRAM( dev ))
return SANE_FALSE;
m_fFirst = SANE_FALSE;
@@ -2377,7 +2377,7 @@ usb_SpeedTest( Plustek_Device *dev )
tr = ((double)m_ScanParam.Size.dwPhyBytes * _TLOOPS * 1000000.0)/r;
dev->transferRate = (u_long)tr;
- DBG( 1, "usb_SpeedTest() done - %u loops, %.4fus --> %.4f B/s, %lu\n",
+ DBG( 1, "usb_SpeedTest() done - %u loops, %.4fus --> %.4f B/s, %lu\n",
_TLOOPS, r, tr, dev->transferRate );
return SANE_TRUE;
}
@@ -2459,7 +2459,7 @@ usb_AutoWarmup( Plustek_Device *dev )
thresh = _AUTO_TPA_THRESH;
}
end = start + len;
- DBG( _DBG_INFO2, "Start=%lu, End=%lu, Len=%lu, Thresh=%li\n",
+ DBG( _DBG_INFO2, "Start=%lu, End=%lu, Len=%lu, Thresh=%li\n",
start, end, len, thresh );
lastR = lastG = lastB = 0;
@@ -2485,7 +2485,7 @@ usb_AutoWarmup( Plustek_Device *dev )
curR = curG = curB = 0;
for( dw = start; dw < end; dw++ ) {
-
+
if( usb_IsCISDevice(dev)) {
curR += ((u_short*)scanbuf)[dw];
curG += ((u_short*)scanbuf)[dw+m_ScanParam.Size.dwPhyPixels+1];
@@ -2503,7 +2503,7 @@ usb_AutoWarmup( Plustek_Device *dev )
diffR = curR - lastR; lastR = curR;
diffG = curG - lastG; lastG = curG;
diffB = curB - lastB; lastB = curB;
- DBG( _DBG_INFO2, "%i/%i-AVE(R,G,B)= %lu(%ld), %lu(%ld), %lu(%ld)\n",
+ DBG( _DBG_INFO2, "%i/%i-AVE(R,G,B)= %lu(%ld), %lu(%ld), %lu(%ld)\n",
i, stable_count, curR, diffR, curG, diffG, curB, diffB );
/* we consider the lamp to be stable,
@@ -2523,7 +2523,7 @@ usb_AutoWarmup( Plustek_Device *dev )
}
DBG( _DBG_INFO, "usb_AutoWarmup() done - %u loops\n", i+1 );
- DBG( _DBG_INFO, "* AVE(R,G,B)= %lu(%ld), %lu(%ld), %lu(%ld)\n",
+ DBG( _DBG_INFO, "* AVE(R,G,B)= %lu(%ld), %lu(%ld), %lu(%ld)\n",
curR, diffR, curG, diffG, curB, diffB );
return SANE_TRUE;
}
@@ -2608,8 +2608,8 @@ usb_DoCalibration( Plustek_Device *dev )
/* HEINER: Currently not clear why Plustek didn't use the ShadingOriginY
* for all modes
* It should be okay to remove this and reference to the ShadingOriginY
- */
-#if 0
+ */
+#if 0
if( scanning->sParam.bSource == SOURCE_Negative ) {
DBG( _DBG_INFO, "DataOrigin.x=%u, DataOrigin.y=%u\n",
@@ -2707,7 +2707,7 @@ usb_DoCalibration( Plustek_Device *dev )
Gain_Reg.Green = regs[0x3c];
Gain_Reg.Blue = regs[0x3d];
Gain_NegHilight = Gain_Hilight;
-
+
DBG( _DBG_INFO, "MCLK = %.3f\n", dMCLK );
DBG( _DBG_INFO, "GainRed = %u\n", regs[0x3b] );
DBG( _DBG_INFO, "GainGreen = %u\n", regs[0x3c] );
@@ -2727,7 +2727,7 @@ usb_DoCalibration( Plustek_Device *dev )
if(!usb_AdjustGain( dev, 1 ))
return _E_INTERNAL;
-
+
regs[0x3b] = regs[0x3c] = regs[0x3d] = 1;
DBG( _DBG_INFO, "Settings done, so start...\n" );
@@ -2763,7 +2763,7 @@ usb_DoCalibration( Plustek_Device *dev )
m_ScanParam.Size.dwPhyPixels*2,
scanning->sParam.swGain[2]);
}
- usb_line_statistics( "White", a_wWhiteShading,
+ usb_line_statistics( "White", a_wWhiteShading,
m_ScanParam.Size.dwPhyPixels, SANE_TRUE);
break;
@@ -2904,7 +2904,7 @@ usb_DoCalibration( Plustek_Device *dev )
*/
hw->wLineEnd = 5384;
if(scanning->sParam.bDataType == SCANDATATYPE_Color &&
- ((scanning->sParam.bBitDepth == 8 &&
+ ((scanning->sParam.bBitDepth == 8 &&
(scanning->sParam.PhyDpi.x == 200 ||scanning->sParam.PhyDpi.x == 300))))
hw->wLineEnd = 7000;
regs[0x20] = _HIBYTE(hw->wLineEnd);
@@ -3127,8 +3127,8 @@ usb_DownloadShadingData( Plustek_Device *dev, u_char what )
if (scan->skipCoarseCalib) {
DBG( _DBG_INFO, "...cleaning shading buffer\n" );
- memset( a_wWhiteShading, 0, _SHADING_BUF );
- memset( a_wDarkShading, 0, _SHADING_BUF );
+ memset( a_wWhiteShading, 0, _SHADING_BUF * sizeof(a_wWhiteShading[0]) );
+ memset( a_wDarkShading, 0, _SHADING_BUF * sizeof(a_wDarkShading[0]) );
regs[0x40] = 0x3f;
regs[0x41] = 0xff;
@@ -3161,7 +3161,7 @@ usb_DownloadShadingData( Plustek_Device *dev, u_char what )
}
if( param->bDataType == SCANDATATYPE_Color ) {
- get_ptrs(dev, a_wWhiteShading,
+ get_ptrs(dev, a_wWhiteShading,
m_ScanParam.Size.dwPhyPixels, &r, &g, &b);
usb_SetWhiteShading( dev, CHANNEL_red, r,
diff --git a/backend/plustek.c b/backend/plustek.c
index 062df37..e1d9e09 100644
--- a/backend/plustek.c
+++ b/backend/plustek.c
@@ -129,9 +129,9 @@
/** @mainpage
* @verbinclude Plustek-USB.txt
*/
-
+
#ifdef _AIX
-# include "../include/lalloca.h"
+# include "../include/lalloca.h"
#endif
#include "../include/sane/config.h"
@@ -239,9 +239,9 @@ static const SANE_String_Const source_list[] =
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX( 100), /* maximum */
+ SANE_FIX( 1) /* quantization */
};
static const SANE_Range warmup_range = { -1, 999, 1 };
@@ -339,7 +339,7 @@ getScanMode( Plustek_Scanner *scanner )
{
int mode;
int scanmode;
-
+
/* are we in TPA-mode? */
mode = scanner->val[OPT_MODE].w;
if( scanner->val[OPT_EXT_MODE].w != 0 )
@@ -384,7 +384,7 @@ max_string_size (const SANE_String_Const strings[])
/** shutdown open pipes
*/
-static SANE_Status
+static SANE_Status
close_pipe( Plustek_Scanner *scanner )
{
if( scanner->r_pipe >= 0 ) {
@@ -550,7 +550,7 @@ reader_process( void *args )
(int)status, lerrn );
if( _E_ABORT == (int)status )
return SANE_STATUS_CANCELLED;
-
+
if( lerrn == EBUSY )
return SANE_STATUS_DEVICE_BUSY;
@@ -574,7 +574,7 @@ do_cancel( Plustek_Scanner *scanner, SANE_Bool closepipe )
if( sanei_thread_is_valid (scanner->reader_pid) ) {
- DBG( _DBG_PROC, ">>>>>>>> killing reader_process <<<<<<<<\n" );
+ DBG( _DBG_PROC, "---- killing reader_process ----\n" );
cancelRead = SANE_TRUE;
scanner->calibrating = SANE_FALSE;
@@ -604,7 +604,7 @@ do_cancel( Plustek_Scanner *scanner, SANE_Bool closepipe )
#endif
}
- scanner->reader_pid = -1;
+ sanei_thread_invalidate( scanner->reader_pid );
DBG( _DBG_PROC,"reader_process killed\n");
#ifndef HAVE_SETITIMER
usb_StartLampTimer( scanner->hw );
@@ -746,7 +746,7 @@ init_options( Plustek_Scanner *s )
else
s->opt[OPT_BIT_DEPTH].constraint.word_list = bpp_lm9832_list;
s->val[OPT_BIT_DEPTH].w = 8;
-
+
if (caps->workaroundFlag & _WAF_ONLY_8BIT)
_DISABLE(OPT_BIT_DEPTH);
@@ -851,7 +851,7 @@ init_options( Plustek_Scanner *s )
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
/* "Enhancement" group: */
- s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
+ s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
s->opt[OPT_ENHANCEMENT_GROUP].desc = "";
s->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_ENHANCEMENT_GROUP].cap = 0;
@@ -899,7 +899,7 @@ init_options( Plustek_Scanner *s )
s->opt[OPT_GAMMA_VECTOR_B].constraint.range = &(s->gamma_range);
s->opt[OPT_GAMMA_VECTOR_B].size = s->gamma_length * sizeof(SANE_Word);
- /* GAMMA stuff is disabled per default */
+ /* GAMMA stuff is disabled per default */
_DISABLE(OPT_GAMMA_VECTOR);
_DISABLE(OPT_GAMMA_VECTOR_R);
_DISABLE(OPT_GAMMA_VECTOR_G);
@@ -996,7 +996,7 @@ init_options( Plustek_Scanner *s )
s->opt[OPT_AFE_GROUP].desc = "";
s->opt[OPT_AFE_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_AFE_GROUP].cap = SANE_CAP_ADVANCED;
-
+
s->opt[OPT_OVR_REDGAIN].name = "red-gain";
s->opt[OPT_OVR_REDGAIN].title = SANE_I18N("Red gain");
s->opt[OPT_OVR_REDGAIN].desc = SANE_I18N("Red gain value of the AFE");
@@ -1118,8 +1118,8 @@ init_options( Plustek_Scanner *s )
*/
static void
decodeUsbIDs( char *src, char **dest )
-{
- const char *name;
+{
+ const char *name;
char *tmp = *dest;
int len = strlen(_SECTION);
@@ -1134,11 +1134,11 @@ decodeUsbIDs( char *src, char **dest )
if( '\0' == name[0] ) {
DBG( _DBG_SANE_INIT, "next device uses autodetection\n" );
} else {
-
+
u_short pi = 0, vi = 0;
if( *name ) {
-
+
name = sanei_config_get_string( name, &tmp );
if( tmp ) {
vi = strtol( tmp, 0, 0 );
@@ -1208,7 +1208,7 @@ decodeVal( char *src, char *opt, int what, void *result, void *def )
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
} else if( _FLOAT == what ) {
@@ -1226,7 +1226,7 @@ decodeVal( char *src, char *opt, int what, void *result, void *def )
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
}
}
@@ -1245,7 +1245,7 @@ decodeVal( char *src, char *opt, int what, void *result, void *def )
static SANE_Bool
decodeDevName( char *src, char *dest )
{
- char *tmp;
+ char *tmp;
const char *name;
if( 0 == strncmp( "device", src, 6 )) {
@@ -1360,7 +1360,7 @@ attach( const char *dev_name, CnfDef *cnf, Plustek_Device **devp )
*/
dev->res_list = (SANE_Int *)
calloc((((dev->usbDev.Caps.OpticDpi.x*16)-_DEF_DPI)/25+1),
- sizeof (SANE_Int));
+ sizeof (SANE_Int));
if (NULL == dev->res_list) {
DBG( _DBG_ERROR, "calloc failed: %s\n", strerror(errno));
@@ -1565,10 +1565,10 @@ sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
/* re-initialize the configuration structure */
init_config_struct( &config );
-
+
tmp = config.usbId;
decodeUsbIDs( str, &tmp );
-
+
DBG( _DBG_SANE_INIT, "... next device\n" );
continue;
@@ -1613,7 +1613,7 @@ sane_exit( void )
if( dev->calFile )
free( dev->calFile );
-
+
if( dev->res_list )
free( dev->res_list );
free( dev );
@@ -1807,7 +1807,7 @@ do_calibration( void *args )
continue;
}
}
-
+
dev->scanning.dwFlag |= SCANFLAG_Calibration;
if (SANE_STATUS_GOOD == local_sane_start(s, modes[scanmode])) {
@@ -1937,7 +1937,7 @@ sane_control_option( SANE_Handle handle, SANE_Int option,
strcpy ((char *) value,
s->opt[option].constraint.string_list[s->val[option].w]);
break;
-
+
/* word array options: */
case OPT_GAMMA_VECTOR:
DBG( _DBG_INFO, "Reading MASTER gamma.\n" );
@@ -2000,7 +2000,7 @@ sane_control_option( SANE_Handle handle, SANE_Int option,
*(SANE_Word *)value = best;
if( NULL != info ) {
- if( v != best )
+ if( v != best )
*info |= SANE_INFO_INEXACT;
*info |= SANE_INFO_RELOAD_PARAMS;
}
@@ -2165,10 +2165,10 @@ sane_control_option( SANE_Handle handle, SANE_Int option,
((*(SANE_Word *)value) >> SANE_FIXED_SCALE_SHIFT);
break;
- case OPT_MODE:
+ case OPT_MODE:
s->val[option].w = optval - s->opt[option].constraint.string_list;
scanmode = getScanMode( s );
-
+
_ENABLE(OPT_CONTRAST);
_ENABLE(OPT_BIT_DEPTH);
_ENABLE(OPT_CUSTOM_GAMMA);
@@ -2447,9 +2447,9 @@ local_sane_start(Plustek_Scanner *s, int scanmode )
}
/* position and extent are always relative to 300 dpi */
- dpi_x = (double)dev->usbDev.Caps.OpticDpi.x;
+ dpi_x = (double)dev->usbDev.Caps.OpticDpi.x;
dpi_y = (double)dev->usbDev.Caps.OpticDpi.x * 2;
-
+
left = (int)(SANE_UNFIX (s->val[OPT_TL_X].w)*dpi_x/
(MM_PER_INCH*(dpi_x/300.0)));
top = (int)(SANE_UNFIX (s->val[OPT_TL_Y].w)*dpi_y/
@@ -2504,7 +2504,7 @@ local_sane_start(Plustek_Scanner *s, int scanmode )
sinfo.siContrast = s->val[OPT_CONTRAST].w;
memcpy( &sinfo.ImgDef, &crop.ImgDef, sizeof(ImgDef));
-
+
DBG( _DBG_SANE_INIT, "brightness %i, contrast %i\n",
sinfo.siBrightness, sinfo.siContrast );
@@ -2628,7 +2628,7 @@ sane_start( SANE_Handle handle )
s->reader_pid = sanei_thread_begin( reader_process, s );
cancelRead = SANE_FALSE;
-
+
if( !sanei_thread_is_valid (s->reader_pid) ) {
DBG( _DBG_ERROR, "ERROR: could not start reader task\n" );
s->scanning = SANE_FALSE;
@@ -2687,7 +2687,7 @@ sane_read( SANE_Handle handle, SANE_Byte *data,
}
}
s->hw->transferRate = ipc.transferRate;
- DBG( _DBG_INFO, "IPC: Transferrate = %lu Bytes/s\n",
+ DBG( _DBG_INFO, "IPC: Transferrate = %lu Bytes/s\n",
ipc.transferRate );
}
#endif
@@ -2706,7 +2706,7 @@ sane_read( SANE_Handle handle, SANE_Byte *data,
if( s->bytes_read ==
(unsigned long)(s->params.lines * s->params.bytes_per_line)) {
sanei_thread_waitpid( s->reader_pid, 0 );
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
s->scanning = SANE_FALSE;
drvclose( s->hw );
return close_pipe(s);
@@ -2735,7 +2735,7 @@ sane_read( SANE_Handle handle, SANE_Byte *data,
close_pipe(s);
return s->exit_code;
}
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
s->scanning = SANE_FALSE;
return close_pipe(s);
}
@@ -2773,7 +2773,7 @@ sane_set_io_mode( SANE_Handle handle, SANE_Bool non_blocking )
DBG( _DBG_ERROR, "ERROR: not supported !\n" );
return SANE_STATUS_UNSUPPORTED;
}
-
+
if( fcntl (s->r_pipe, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0) {
DBG( _DBG_ERROR, "ERROR: could not set to non-blocking mode !\n" );
return SANE_STATUS_IO_ERROR;
diff --git a/backend/plustek.conf.in b/backend/plustek.conf.in
index e16823e..3d6f947 100644
--- a/backend/plustek.conf.in
+++ b/backend/plustek.conf.in
@@ -84,7 +84,7 @@ option negShadingY -1
option invertNegatives 0
#
-# to disable the internal sensor speedup function,
+# to disable the internal sensor speedup function,
# 1 disables the feature
#
option disableSpeedup 0
@@ -180,5 +180,5 @@ device auto
#
# to define a new device, start with a new section:
-# [usb]
+# [usb]
#
diff --git a/backend/plustek.h b/backend/plustek.h
index be657c1..cc38f13 100644
--- a/backend/plustek.h
+++ b/backend/plustek.h
@@ -283,7 +283,7 @@ typedef struct {
int rofs;
int gofs;
int bofs;
-
+
int rlampoff; /* for red lamp off setting (CIS-scanner) */
int glampoff; /* for green lamp off setting (CIS-scanner) */
int blampoff; /* for blue lamp off setting (CIS-scanner) */
@@ -408,7 +408,7 @@ typedef struct Plustek_Scanner
/** for collecting configuration info...
*/
typedef struct {
-
+
char devName[PATH_MAX];
char usbId[_MAX_ID_LEN];
diff --git a/backend/plustek_pp.c b/backend/plustek_pp.c
index f48c3dc..551cf27 100644
--- a/backend/plustek_pp.c
+++ b/backend/plustek_pp.c
@@ -58,7 +58,7 @@
/** @mainpage
* @verbinclude Plustek-PARPORT.txt
*/
-
+
#ifdef _AIX
# include "../include/lalloca.h" /* MUST come first for AIX! */
#endif
@@ -216,9 +216,9 @@ static const SANE_String_Const halftone_list[] =
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX( 100), /* maximum */
+ SANE_FIX( 1) /* quantization */
};
/*
@@ -304,17 +304,17 @@ static pModeParam getModeList( Plustek_Scanner *scanner )
if((_ASIC_IS_98003 == scanner->hw->caps.AsicID) ||
(_ASIC_IS_98001 == scanner->hw->caps.AsicID)) {
- mp = mode_9800x_params;
+ mp = mode_9800x_params;
} else {
- mp = mode_params;
- }
+ mp = mode_params;
+ }
/*
* the transparency/negative mode supports only GRAY/COLOR/COLOR32/COLOR48
*/
if( 0 != scanner->val[OPT_EXT_MODE].w ) {
mp = &mp[_TPAModeSupportMin];
- }
+ }
return mp;
}
@@ -396,7 +396,7 @@ static int reader_process( void *args )
act.sa_handler = reader_process_sigterm_handler;
sigaction( SIGTERM, &act, 0 );
-
+
data_length = scanner->params.lines * scanner->params.bytes_per_line;
DBG( _DBG_PROC, "reader_process:"
@@ -407,7 +407,7 @@ static int reader_process( void *args )
DBG( _DBG_FATAL, "NULL Pointer !!!!\n" );
return SANE_STATUS_IO_ERROR;
}
-
+
/* here we read all data from the driver... */
if( scanner->hw->readImage ) {
@@ -419,7 +419,7 @@ static int reader_process( void *args )
status = scanner->hw->prepare( scanner->hw, buf );
-
+
if( 0 == status ) {
for( line = 0; line < scanner->params.lines; line++ ) {
@@ -442,7 +442,7 @@ static int reader_process( void *args )
(int)status, errno );
if( -9009 == (int)status )
return SANE_STATUS_CANCELLED;
-
+
if( errno == EBUSY )
return SANE_STATUS_DEVICE_BUSY;
@@ -473,14 +473,14 @@ static SANE_Status do_cancel( Plustek_Scanner *scanner, SANE_Bool closepipe )
if( sanei_thread_is_valid( scanner->reader_pid )) {
- DBG( _DBG_PROC, ">>>>>>>> killing reader_process <<<<<<<<\n" );
+ DBG( _DBG_PROC, "---- killing reader_process ----\n" );
/* tell the driver to stop scanning */
if( -1 != scanner->hw->fd ) {
int_cnt = 1;
scanner->hw->stopScan( scanner->hw, &int_cnt );
- }
-
+ }
+
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
@@ -494,19 +494,19 @@ static SANE_Status do_cancel( Plustek_Scanner *scanner, SANE_Bool closepipe )
alarm(10);
res = sanei_thread_waitpid( scanner->reader_pid, 0 );
alarm(0);
-
+
if( res != scanner->reader_pid ) {
DBG( _DBG_PROC,"sanei_thread_waitpid() failed !\n");
-
+
/* do it the hard way...*/
#ifdef USE_PTHREAD
sanei_thread_kill( scanner->reader_pid );
#else
sanei_thread_sendsig( scanner->reader_pid, SIGKILL );
#endif
- }
+ }
- scanner->reader_pid = -1;
+ sanei_thread_invalidate( scanner->reader_pid );
DBG( _DBG_PROC,"reader_process killed\n");
}
@@ -547,7 +547,7 @@ static void limitResolution( Plustek_Device *dev )
} else {
dev->dpi_range.max = lens.rDpiY.wPhyMax;
}
-
+
dev->dpi_range.quant = 0;
dev->x_range.min = 0;
dev->x_range.max = SANE_FIX(dev->max_x);
@@ -582,37 +582,37 @@ static SANE_Status initGammaSettings( Plustek_Scanner *s )
s->gamma_length = 256;
}
-
+
DBG( _DBG_INFO, "Presetting Gamma tables (len=%u)\n", s->gamma_length );
DBG( _DBG_INFO, "----------------------------------\n" );
-
+
/*
* preset the gamma maps
*/
for( i = 0; i < 4; i++ ) {
-
+
switch( i ) {
case 1: gamma = s->hw->adj.rgamma; break;
case 2: gamma = s->hw->adj.ggamma; break;
case 3: gamma = s->hw->adj.bgamma; break;
default: gamma = s->hw->adj.graygamma; break;
- }
-
+ }
+
for( j = 0; j < s->gamma_length; j++ ) {
-
+
val = (s->gamma_range.max *
pow((double) j / ((double)s->gamma_length - 1.0),
1.0 / gamma ));
-
+
if( val > s->gamma_range.max )
val = s->gamma_range.max;
-
- s->gamma_table[i][j] = val;
- }
- }
-
+
+ s->gamma_table[i][j] = val;
+ }
+ }
+
return SANE_STATUS_GOOD;
-}
+}
/** Check the gamma vectors we got back and limit if necessary
* @param s - pointer to the scanner specific structure
@@ -685,7 +685,7 @@ static SANE_Status init_options( Plustek_Scanner *s )
s->opt[OPT_EXT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_EXT_MODE].constraint.string_list = ext_mode_list;
s->val[OPT_EXT_MODE].w = 0; /* Normal */
-
+
/* halftone */
s->opt[OPT_HALFTONE].name = SANE_NAME_HALFTONE_PATTERN;
s->opt[OPT_HALFTONE].title = SANE_TITLE_HALFTONE;
@@ -790,14 +790,14 @@ static SANE_Status init_options( Plustek_Scanner *s )
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
/* "Enhancement" group: */
- s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
+ s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
s->opt[OPT_ENHANCEMENT_GROUP].desc = "";
s->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_ENHANCEMENT_GROUP].cap = 0;
s->opt[OPT_ENHANCEMENT_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
initGammaSettings( s );
-
+
/* grayscale gamma vector */
s->opt[OPT_GAMMA_VECTOR].name = SANE_NAME_GAMMA_VECTOR;
s->opt[OPT_GAMMA_VECTOR].title = SANE_TITLE_GAMMA_VECTOR;
@@ -842,12 +842,12 @@ static SANE_Status init_options( Plustek_Scanner *s )
s->opt[OPT_GAMMA_VECTOR_B].constraint.range = &(s->gamma_range);
s->opt[OPT_GAMMA_VECTOR_B].size = s->gamma_length * sizeof(SANE_Word);
- /* GAMMA stuff is disabled per default */
+ /* GAMMA stuff is disabled per default */
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
-
+
/* disable extended mode list for devices without TPA */
if( 0 == (s->hw->caps.dwFlag & SFLAG_TPA)) {
s->opt[OPT_EXT_MODE].cap |= SANE_CAP_INACTIVE;
@@ -856,7 +856,7 @@ static SANE_Status init_options( Plustek_Scanner *s )
/* disable custom gamma, if not supported by the driver... */
if( 0 == (s->hw->caps.dwFlag & SFLAG_CUSTOM_GAMMA)) {
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
- }
+ }
return SANE_STATUS_GOOD;
}
@@ -885,18 +885,18 @@ static SANE_Bool decodeVal( char *src, char *opt,
/* get the name of the option */
name = sanei_config_get_string( name, &tmp );
- if( tmp ) {
+ if( tmp ) {
/* on success, compare wiht the given one */
if( 0 == strcmp( tmp, opt )) {
-
+
DBG( _DBG_SANE_INIT, "Decoding option >%s<\n", opt );
if( _INT == what ) {
-
+
/* assign the default value for this option... */
*((int*)result) = *((int*)def);
-
+
if( *name ) {
/* get the configuration value and decode it */
@@ -907,14 +907,14 @@ static SANE_Bool decodeVal( char *src, char *opt,
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
-
+
} else if( _FLOAT == what ) {
-
+
/* assign the default value for this option... */
*((double*)result) = *((double*)def);
-
+
if( *name ) {
/* get the configuration value and decode it */
@@ -925,13 +925,13 @@ static SANE_Bool decodeVal( char *src, char *opt,
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
}
- }
+ }
free( tmp );
}
-
+
return SANE_FALSE;
}
@@ -944,27 +944,27 @@ static SANE_Bool decodeVal( char *src, char *opt,
*/
static SANE_Bool decodeDevName( char *src, char *dest )
{
- char *tmp;
+ char *tmp;
const char *name;
if( 0 == strncmp( "device", src, 6 )) {
name = (const char*)&src[strlen("device")];
name = sanei_config_skip_whitespace( name );
-
+
DBG( _DBG_SANE_INIT, "Decoding device name >%s<\n", name );
-
+
if( *name ) {
name = sanei_config_get_string( name, &tmp );
if( tmp ) {
-
+
strcpy( dest, tmp );
free( tmp );
return SANE_TRUE;
}
- }
+ }
}
-
+
return SANE_FALSE;
}
@@ -1000,7 +1000,7 @@ static SANE_Status attach( const char *dev_name, pCnfDef cnf,
/* assign all the stuff we need fo this device... */
memset(dev, 0, sizeof (*dev));
-
+
dev->fd = -1;
dev->name = strdup(dev_name); /* hold it double to avoid */
dev->sane.name = dev->name; /* compiler warnings */
@@ -1067,7 +1067,7 @@ static SANE_Status attach( const char *dev_name, pCnfDef cnf,
} else {
dev->sane.model = ModelStr[0];
}
-
+
DBG( _DBG_INFO, "Vendor : %s\n", dev->sane.vendor );
DBG( _DBG_INFO, "Model : %s\n", dev->sane.model );
DBG( _DBG_INFO, "Asic : 0x%02x\n", dev->caps.AsicID );
@@ -1140,7 +1140,7 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
DBG_INIT();
sanei_thread_init();
-
+
res = sanei_pp_init();
if( SANE_STATUS_GOOD != res ) {
DBG( _DBG_ERROR, "Could not initialize Parport library!\n" );
@@ -1178,20 +1178,20 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
}
while( sanei_config_read( str, sizeof(str), fp)) {
-
+
DBG( _DBG_SANE_INIT, ">%s<\n", str );
if( str[0] == '#') /* ignore line comments */
continue;
-
+
len = strlen(str);
if( 0 == len )
continue; /* ignore empty lines */
/* check for options */
if( 0 == strncmp(str, "option", 6)) {
-
+
int ival;
-
+
ival = -1;
decodeVal( str, "warmup", _INT, &config.adj.warmup, &ival);
decodeVal( str, "lampOff", _INT, &config.adj.lampOff, &ival);
@@ -1203,14 +1203,14 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
/* check for sections: */
} else if( 0 == strncmp( str, "[direct]", 8)) {
-
+
/* new section, try and attach previous device */
if( config.devName[0] != '\0' )
attach( config.devName, &config, 0 );
-
+
/* re-initialize the configuration structure */
init_config_struct( &config, SANE_TRUE );
- continue;
+ continue;
} else if( 0 == strncmp( str, "[kernel]", 8 )) {
@@ -1221,11 +1221,11 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
/* re-initialize the configuration structure */
init_config_struct( &config, SANE_FALSE );
continue;
-
+
} else if( SANE_TRUE == decodeDevName( str, config.devName )) {
continue;
}
-
+
/* ignore other stuff... */
DBG( _DBG_SANE_INIT, "ignoring >%s<\n", str );
}
@@ -1234,7 +1234,7 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
/* try to attach the last device in the config file... */
if( config.devName[0] != '\0' )
attach( config.devName, &config, 0 );
-
+
return SANE_STATUS_GOOD;
}
@@ -1328,7 +1328,7 @@ SANE_Status sane_open( SANE_String_Const devicename, SANE_Handle* handle )
if( !dev ) {
memset( &config, 0, sizeof(CnfDef));
-
+
/* check if a valid parport-device is meant... */
status = attach( devicename, &config, &dev );
if( SANE_STATUS_GOOD != status )
@@ -1359,7 +1359,7 @@ SANE_Status sane_open( SANE_String_Const devicename, SANE_Handle* handle )
first_handle = s;
*handle = s;
-
+
return SANE_STATUS_GOOD;
}
@@ -1382,7 +1382,7 @@ void sane_close (SANE_Handle handle)
if (!s) {
DBG( _DBG_ERROR, "close: invalid handle %p\n", handle);
- return;
+ return;
}
close_pipe( s );
@@ -1463,7 +1463,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
strcpy ((char *) value,
s->opt[option].constraint.string_list[s->val[option].w]);
break;
-
+
/* word array options: */
case OPT_GAMMA_VECTOR:
case OPT_GAMMA_VECTOR_R:
@@ -1471,7 +1471,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_B:
memcpy( value, s->val[option].wa, s->opt[option].size );
break;
-
+
default:
return SANE_STATUS_INVAL;
}
@@ -1514,7 +1514,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
*(SANE_Word *)value = best;
if( NULL != info ) {
- if( v != best )
+ if( v != best )
*info |= SANE_INFO_INEXACT;
*info |= SANE_INFO_RELOAD_PARAMS;
}
@@ -1531,22 +1531,22 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
if( NULL != info )
*info |= SANE_INFO_RELOAD_PARAMS;
break;
-
+
case OPT_CUSTOM_GAMMA:
s->val[option].w = *(SANE_Word *)value;
if( NULL != info )
*info |= SANE_INFO_RELOAD_PARAMS | SANE_INFO_RELOAD_OPTIONS;
- mp = getModeList( s );
+ mp = getModeList( s );
scanmode = mp[s->val[OPT_MODE].w].scanmode;
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
-
+
if( SANE_TRUE == s->val[option].w ) {
-
+
if((scanmode == COLOR_256GRAY) ||
(scanmode == COLOR_GRAY16)) {
s->opt[OPT_GAMMA_VECTOR].cap &= ~SANE_CAP_INACTIVE;
@@ -1554,20 +1554,20 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
s->opt[OPT_GAMMA_VECTOR_R].cap &= ~SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap &= ~SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap &= ~SANE_CAP_INACTIVE;
- }
-
+ }
+
} else {
-
+
initGammaSettings( s );
-
+
if((scanmode == COLOR_256GRAY) ||
(scanmode == COLOR_GRAY16)) {
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
- } else {
+ } else {
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
- }
+ }
}
break;
@@ -1587,7 +1587,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
}
mp = getModeList( s );
-
+
if( mp[idx].scanmode != COLOR_HALFTONE ){
s->opt[OPT_HALFTONE].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_CONTRAST].cap &= ~SANE_CAP_INACTIVE;
@@ -1601,16 +1601,16 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
if( mp[idx].scanmode == COLOR_BW ) {
s->opt[OPT_CONTRAST].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
- }
-
+ }
+
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
-
+
if( s->val[OPT_CUSTOM_GAMMA].w &&
!(s->opt[OPT_CUSTOM_GAMMA].cap & SANE_CAP_INACTIVE)) {
-
+
if((mp[idx].scanmode == COLOR_256GRAY) ||
(mp[idx].scanmode == COLOR_GRAY16)) {
s->opt[OPT_GAMMA_VECTOR].cap &= ~SANE_CAP_INACTIVE;
@@ -1677,7 +1677,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
}
if( s->hw->caps.dwFlag & SFLAG_TPA ) {
-
+
s->opt[OPT_MODE].constraint.string_list =
&mode_9800x_list[_TPAModeSupportMin];
} else {
@@ -1702,13 +1702,13 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
checkGammaSettings(s);
if( NULL != info )
*info |= SANE_INFO_RELOAD_PARAMS;
- break;
+ break;
default:
return SANE_STATUS_INVAL;
}
break;
-
+
default:
return SANE_STATUS_INVAL;
@@ -1834,7 +1834,7 @@ SANE_Status sane_start( SANE_Handle handle )
s->hw->close( s->hw );
return SANE_STATUS_IO_ERROR;
}
-
+
result = s->hw->getLensInfo( s->hw, &lens );
if( result < 0 ) {
DBG( _DBG_ERROR, "dev->getLensInfo() failed(%d)\n", result );
@@ -2084,7 +2084,7 @@ SANE_Status sane_read( SANE_Handle handle, SANE_Byte *data,
if( s->bytes_read ==
(unsigned long)(s->params.lines * s->params.bytes_per_line)) {
sanei_thread_waitpid( s->reader_pid, 0 );
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
drvclose( s->hw );
return close_pipe(s);
}
@@ -2112,7 +2112,7 @@ SANE_Status sane_read( SANE_Handle handle, SANE_Byte *data,
close_pipe(s);
return s->exit_code;
}
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
return close_pipe(s);
}
@@ -2148,9 +2148,9 @@ SANE_Status sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
DBG( _DBG_ERROR, "ERROR: not supported !\n" );
return SANE_STATUS_UNSUPPORTED;
}
-
+
if( fcntl (s->r_pipe, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0) {
- DBG( _DBG_ERROR, "ERROR: cant set to non-blocking mode !\n" );
+ DBG( _DBG_ERROR, "ERROR: can´t set to non-blocking mode !\n" );
return SANE_STATUS_IO_ERROR;
}
diff --git a/backend/plustek_pp.conf.in b/backend/plustek_pp.conf.in
index a000343..d357007 100644
--- a/backend/plustek_pp.conf.in
+++ b/backend/plustek_pp.conf.in
@@ -1,5 +1,5 @@
# Plustek-PP SANE Backend configuration file
-# For use with Plustek parallel-port scanners
+# For use with Plustek parallel-port scanners
#
#
diff --git a/backend/pnm.c b/backend/pnm.c
index ff4e2f2..1d1f4fd 100644
--- a/backend/pnm.c
+++ b/backend/pnm.c
@@ -2,7 +2,7 @@
Copyright (C) 1996, 1997 Andreas Beck
Copyright (C) 2000, 2001 Michael Herder <crapsite@gmx.net>
Copyright (C) 2001, 2002 Henning Meier-Geinitz <henning@meier-geinitz.de>
- Copyright (C) 2008 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2008 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -106,9 +106,9 @@ static const SANE_Word resbit_list[] = {
200, 210, 225, 240, 255, 270, 285, 300
};
static const SANE_Range percentage_range = {
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 0 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX(0) /* quantization */
};
static const SANE_Range gamma_range = {
0, /* minimum */
diff --git a/backend/qcam.c b/backend/qcam.c
index 0148bea..4c46fa7 100644
--- a/backend/qcam.c
+++ b/backend/qcam.c
@@ -1248,7 +1248,7 @@ init_options (QC_Scanner * s)
int i;
DBG (3, "init_options: enter\n");
-
+
memset (s->opt, 0, sizeof (s->opt));
memset (s->val, 0, sizeof (s->val));
@@ -1446,7 +1446,7 @@ init_options (QC_Scanner * s)
s->val[OPT_SATURATION].w = 100;
DBG (3, "init_options: exit\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -1497,9 +1497,9 @@ sane_exit (void)
{
QC_Device *dev, *next;
static const SANE_Device **devlist;
-
+
DBG (5, "sane_exit: enter\n");
-
+
for (dev = first_dev; dev; dev = next)
{
next = dev->next;
@@ -1510,7 +1510,7 @@ sane_exit (void)
if (devlist) {
free (devlist);
devlist = NULL;
- }
+ }
DBG (5, "sane_exit: exit\n");
}
@@ -1538,9 +1538,9 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
devlist[i++] = 0;
*device_list = devlist;
-
+
DBG (5, "sane_get_devices: exit\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -1630,7 +1630,7 @@ sane_close (SANE_Handle handle)
QC_Scanner *prev, *s;
DBG (5, "sane_close: enter\n");
-
+
/* remove handle from list of open handles: */
prev = 0;
for (s = first_handle; s; s = s->next)
@@ -1666,9 +1666,9 @@ sane_close (SANE_Handle handle)
close (s->read_fd);
free (s);
-
+
DBG (5, "sane_close: exit\n");
-
+
}
const SANE_Option_Descriptor *
@@ -1677,7 +1677,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
QC_Scanner *s = handle;
DBG (5, "sane_get_option_descriptor: enter\n");
-
+
if ((unsigned) option >= NUM_OPTIONS)
return 0;
@@ -1698,7 +1698,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
int i;
DBG (5, "sane_control_option: enter\n");
-
+
if (info)
*info = 0;
@@ -1866,7 +1866,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
size_t Bpp = 3; /* # of bytes per pixel */
DBG (5, "sane_get_parameters: enter\n");
-
+
if (!s->scanning)
{
/* Only compute new parameters when not scanning---allows
@@ -1912,7 +1912,7 @@ sane_start (SANE_Handle handle)
QC_Scan_Request req;
DBG (5, "sane_start: enter\n");
-
+
if (s->scanning)
return SANE_STATUS_DEVICE_BUSY;
@@ -2099,7 +2099,7 @@ sane_start (SANE_Handle handle)
s->deliver_eof = 0;
DBG (5, "sane_start: exit\n");
-
+
return SANE_STATUS_GOOD;
}
@@ -2114,7 +2114,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
size_t len;
DBG (5, "sane_read: enter\n");
-
+
*lenp = 0;
if (s->deliver_eof)
@@ -2177,7 +2177,7 @@ sane_cancel (SANE_Handle handle)
SANE_Status status;
DBG (5, "sane_cancel: enter\n");
-
+
was_scanning = s->scanning;
s->scanning = SANE_FALSE;
s->deliver_eof = 0;
@@ -2239,7 +2239,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
QC_Scanner *s = handle;
DBG (5, "sane_set_io_mode: enter\n");
-
+
if (!s->scanning)
return SANE_STATUS_INVAL;
diff --git a/backend/ricoh-scsi.c b/backend/ricoh-scsi.c
index 72fd70b..73bd4fa 100644
--- a/backend/ricoh-scsi.c
+++ b/backend/ricoh-scsi.c
@@ -39,9 +39,9 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice. */
-/*
+/*
$Id$
- This file implements the low-level scsi-commands.
+ This file implements the low-level scsi-commands.
*/
@@ -251,7 +251,7 @@ set_window (int fd, struct ricoh_window_data *rwd)
static SANE_Status
get_window (int fd, struct ricoh_window_data *rwd)
{
-
+
static struct scsi_window_cmd cmd;
static size_t rwd_size;
SANE_Status status;
@@ -317,7 +317,7 @@ get_data_status (int fd, struct scsi_status_desc *dbs)
status = sanei_scsi_cmd (fd, &cmd, sizeof (cmd), &ssd, &ssd_size);
memcpy (dbs, &ssd.desc, sizeof(*dbs));
- if (status == SANE_STATUS_GOOD &&
+ if (status == SANE_STATUS_GOOD &&
(((unsigned int) _3btol(ssd.len)) <= sizeof(*dbs) || _3btol(ssd.desc.filled) == 0)) {
DBG (11, "get_data_status: busy\n");
status = SANE_STATUS_DEVICE_BUSY;
diff --git a/backend/ricoh.c b/backend/ricoh.c
index 88f33d1..58b3a53 100644
--- a/backend/ricoh.c
+++ b/backend/ricoh.c
@@ -41,7 +41,7 @@
/*
$Id$
- This file implements a SANE backend for Ricoh flatbed scanners.
+ This file implements a SANE backend for Ricoh flatbed scanners.
*/
#include "../include/sane/config.h"
@@ -187,7 +187,7 @@ attach (const char *devnam, Ricoh_Device ** devp)
DBG (1, "attach: MODE_SELECT failed\n");
sanei_scsi_close (fd);
return (SANE_STATUS_INVAL);
- }
+ }
#endif
#if 0
@@ -510,7 +510,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
if (line[0] == '#') /* ignore line comments */
continue;
len = strlen (line);
-
+
if (!len)
continue; /* ignore empty lines */
@@ -538,7 +538,7 @@ sane_exit (void)
free ((void *) dev->sane.model);
free (dev);
}
-
+
if (devlist)
free (devlist);
@@ -824,7 +824,7 @@ sane_start (SANE_Handle handle)
s->brightness = s->val[OPT_BRIGHTNESS].w;
s->contrast = s->val[OPT_CONTRAST].w;
s->bpp = s->params.depth;
- if (strcmp (mode_str, SANE_VALUE_SCAN_MODE_LINEART) == 0)
+ if (strcmp (mode_str, SANE_VALUE_SCAN_MODE_LINEART) == 0)
{
s->image_composition = RICOH_BINARY_MONOCHROME;
}
@@ -849,11 +849,11 @@ sane_start (SANE_Handle handle)
wbuf.image_comp = s->image_composition;
/* if you throw the MRIF bit the brighness control reverses too */
/* so I reverse the reversal in software for symmetry's sake */
- if (wbuf.image_comp == RICOH_GRAYSCALE || wbuf.image_comp == RICOH_DITHERED_MONOCHROME)
+ if (wbuf.image_comp == RICOH_GRAYSCALE || wbuf.image_comp == RICOH_DITHERED_MONOCHROME)
{
- if (wbuf.image_comp == RICOH_GRAYSCALE)
+ if (wbuf.image_comp == RICOH_GRAYSCALE)
wbuf.mrif_filtering_gamma_id = (SANE_Byte) 0x90;
- if (wbuf.image_comp == RICOH_DITHERED_MONOCHROME)
+ if (wbuf.image_comp == RICOH_DITHERED_MONOCHROME)
wbuf.mrif_filtering_gamma_id = (SANE_Byte) 0x10;
wbuf.brightness = 256 - (SANE_Byte) s->brightness;
if (is50)
@@ -899,7 +899,7 @@ sane_start (SANE_Handle handle)
if (status != SANE_STATUS_GOOD)
{
DBG (1, "GET WINDOW failed: %s\n", sane_strstatus (status));
- return (status);
+ return (status);
}
DBG (5, "xres=%d\n", _2btol(wbuf.x_res));
DBG (5, "yres=%d\n", _2btol(wbuf.y_res));
@@ -937,18 +937,18 @@ sane_start (SANE_Handle handle)
{
DBG (1, "GET DATA STATUS failed: %s\n", sane_strstatus (status));
return (status);
- }
+ }
s->bytes_to_read = s->params.bytes_per_line * s->params.lines;
DBG (1, "%d pixels per line, %d bytes, %d lines high, total %lu bytes, "
"dpi=%d\n", s->params.pixels_per_line, s->params.bytes_per_line,
s->params.lines, (u_long) s->bytes_to_read, s->val[OPT_Y_RESOLUTION].w);
-
+
s->scanning = SANE_TRUE;
- DBG (11, "<< sane_start\n");
- return (SANE_STATUS_GOOD);
+ DBG (11, "<< sane_start\n");
+ return (SANE_STATUS_GOOD);
}
SANE_Status
@@ -963,7 +963,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
*len = 0;
DBG (11, "sane_read: bytes left to read: %ld\n", (u_long) s->bytes_to_read);
-
+
if (s->bytes_to_read == 0)
{
do_cancel (s);
@@ -973,7 +973,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
if (!s->scanning) {
DBG (11, "sane_read: scanning is false!\n");
return (do_cancel (s));
- }
+ }
nread = max_len;
if (nread > s->bytes_to_read)
diff --git a/backend/ricoh.h b/backend/ricoh.h
index f9bb36e..8771297 100644
--- a/backend/ricoh.h
+++ b/backend/ricoh.h
@@ -171,7 +171,7 @@ _4btol(SANE_Byte *bytes)
return (rv);
}
-typedef enum
+typedef enum
{
OPT_NUM_OPTS = 0,
@@ -318,7 +318,7 @@ struct measurements_units_page {
};
struct mode_pages {
- SANE_Byte page_code;
+ SANE_Byte page_code;
SANE_Byte parameter_length;
SANE_Byte rest[6];
#if 0
diff --git a/backend/ricoh2.c b/backend/ricoh2.c
new file mode 100644
index 0000000..8aa938e
--- /dev/null
+++ b/backend/ricoh2.c
@@ -0,0 +1,971 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2018 Stanislav Yuzvinsky
+ Based on the work done by viruxx
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#include "../include/sane/config.h"
+
+#include <string.h>
+
+#include "../include/sane/sane.h"
+#include "../include/sane/sanei.h"
+#include "../include/sane/sanei_usb.h"
+#include "../include/sane/saneopts.h"
+#include "../include/sane/sanei_backend.h"
+#include "../include/sane/sanei_debug.h"
+
+#include "ricoh2_buffer.c"
+
+#define MAX_OPTION_STRING_SIZE 255
+#define MAX_LINE_SIZE 240 * 256 /* = 61440 */
+#define HEIGHT_PIXELS_300DPI 3508
+#define WIDTH_BYTES_300DPI 2560
+#define WIDTH_PIXELS_300DPI 2550
+#define INFO_SIZE (WIDTH_BYTES_300DPI - WIDTH_PIXELS_300DPI)
+#define USB_TIMEOUT_MS 20000
+#define MAX_COMMAND_SIZE 64
+
+#define CHECK_IF(x) if (!(x)) return SANE_STATUS_INVAL
+
+typedef enum
+{
+ OPT_NUM_OPTS = 0,
+ OPT_MODE,
+ OPT_RESOLUTION,
+
+ /* must come last: */
+ NUM_OPTIONS
+}
+Ricoh_Options;
+
+typedef enum
+{
+ SCAN_MODE_COLOR,
+ SCAN_MODE_GRAY
+}
+Scan_Mode;
+
+
+typedef struct Ricoh2_Device {
+ struct Ricoh2_Device *next;
+ SANE_Device sane;
+ SANE_Bool active;
+
+ /* options */
+ SANE_Option_Descriptor opt[NUM_OPTIONS];
+ Option_Value val[NUM_OPTIONS];
+
+ /* acquiring session */
+ SANE_Int dn;
+ SANE_Bool cancelled;
+ Scan_Mode mode;
+ SANE_Int resolution;
+ SANE_Bool eof;
+ size_t bytes_to_read;
+ ricoh2_buffer *buffer;
+
+}
+Ricoh2_Device;
+
+typedef struct Ricoh2_device_info {
+ SANE_Int product_id;
+ SANE_String_Const device_name;
+}
+Ricoh2_device_info;
+
+static Ricoh2_device_info supported_devices[] = {
+ { 0x042c, "Aficio SP100SU" },
+ { 0x0438, "Aficio SG3100SNw" },
+ { 0x0448, "Aficio SP111SU" }
+};
+
+static SANE_String_Const mode_list[] = {
+ SANE_VALUE_SCAN_MODE_COLOR,
+ SANE_VALUE_SCAN_MODE_GRAY,
+ NULL
+};
+static SANE_String_Const default_mode = SANE_VALUE_SCAN_MODE_COLOR;
+
+static SANE_Int resolution_list[] = {
+ 2, 300, 600
+};
+static SANE_Int default_resolution = 300;
+
+static SANE_Bool initialized = SANE_FALSE;
+static Ricoh2_Device *ricoh2_devices = NULL;
+static const SANE_Device **sane_devices = NULL;
+static SANE_Int num_devices = 0;
+
+static Ricoh2_Device *
+lookup_handle(SANE_Handle handle)
+{
+ Ricoh2_Device *device;
+
+ for (device = ricoh2_devices; device; device = device->next)
+ {
+ if (device == handle)
+ return device;
+ }
+
+ return NULL;
+}
+
+static SANE_String_Const get_model_by_productid(SANE_Int id)
+{
+ size_t i = 0;
+ for (; i < sizeof (supported_devices) / sizeof (supported_devices[0]); ++i)
+ {
+ if (supported_devices[i].product_id == id)
+ {
+ return supported_devices[i].device_name;
+ }
+ }
+
+ return "Unidentified device";
+}
+
+static SANE_Status
+attach (SANE_String_Const devname)
+{
+ SANE_Int dn = -1;
+ SANE_Status status = SANE_STATUS_GOOD;
+ Ricoh2_Device *device = NULL;
+ SANE_Int vendor, product;
+
+ for (device = ricoh2_devices; device; device = device->next)
+ {
+ if (strcmp (device->sane.name, devname) == 0)
+ {
+ device->active = SANE_TRUE;
+ return SANE_STATUS_GOOD;
+ }
+ }
+
+ device = (Ricoh2_Device *) malloc (sizeof (Ricoh2_Device));
+ if (!device)
+ {
+ return SANE_STATUS_NO_MEM;
+ }
+
+ DBG (8, "attach %s\n", devname);
+ status = sanei_usb_open (devname, &dn);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "attach: couldn't open device `%s': %s\n", devname,
+ sane_strstatus (status));
+ return status;
+ }
+
+ status = sanei_usb_get_vendor_product (dn, &vendor, &product);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1,
+ "attach: couldn't get vendor and product ids of device `%s': %s\n",
+ devname, sane_strstatus (status));
+ sanei_usb_close (dn);
+ return status;
+ }
+
+ sanei_usb_close (dn);
+ device->sane.name = strdup (devname);
+ device->sane.vendor = "Ricoh";
+ device->sane.model = get_model_by_productid (product);
+ device->sane.type = "flatbed scanner";
+ device->active = SANE_TRUE;
+ device->buffer = NULL;
+
+ device->next = ricoh2_devices;
+ ricoh2_devices = device;
+
+ DBG (2, "Found device %s\n", device->sane.name);
+ ++num_devices;
+
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status
+init_options(Ricoh2_Device *dev)
+{
+ SANE_Option_Descriptor *od;
+
+ DBG (8, "init_options: dev = %p\n", (void *) dev);
+
+ /* number of options */
+ od = &(dev->opt[OPT_NUM_OPTS]);
+ od->name = SANE_NAME_NUM_OPTIONS;
+ od->title = SANE_TITLE_NUM_OPTIONS;
+ od->desc = SANE_DESC_NUM_OPTIONS;
+ od->type = SANE_TYPE_INT;
+ od->unit = SANE_UNIT_NONE;
+ od->size = sizeof (SANE_Word);
+ od->cap = SANE_CAP_SOFT_DETECT;
+ od->constraint_type = SANE_CONSTRAINT_NONE;
+ od->constraint.range = 0;
+ dev->val[OPT_NUM_OPTS].w = NUM_OPTIONS;
+
+ /* mode - sets the scan mode: Color, Gray */
+ od = &(dev->opt[OPT_MODE]);
+ od->name = SANE_NAME_SCAN_MODE;
+ od->title = SANE_TITLE_SCAN_MODE;
+ od->desc = SANE_DESC_SCAN_MODE;
+ od->type = SANE_TYPE_STRING;
+ od->unit = SANE_UNIT_NONE;
+ od->size = MAX_OPTION_STRING_SIZE;
+ od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
+ od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ od->constraint.string_list = mode_list;
+ dev->val[OPT_MODE].s = malloc (od->size);
+ if (!dev->val[OPT_MODE].s)
+ return SANE_STATUS_NO_MEM;
+ strcpy (dev->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR);
+
+ /* resolution */
+ od = &(dev->opt[OPT_RESOLUTION]);
+ od->name = SANE_NAME_SCAN_RESOLUTION;
+ od->title = SANE_TITLE_SCAN_RESOLUTION;
+ od->desc = SANE_DESC_SCAN_RESOLUTION;
+ od->type = SANE_TYPE_INT;
+ od->unit = SANE_UNIT_DPI;
+ od->size = sizeof (SANE_Word);
+ od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
+ od->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ od->constraint.word_list = resolution_list;
+ dev->val[OPT_RESOLUTION].w = 300;
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_init (SANE_Int *vc, SANE_Auth_Callback __sane_unused__ cb)
+{
+ size_t i = 0;
+
+ DBG_INIT ();
+
+ DBG(8, ">sane_init\n");
+
+ sanei_usb_init ();
+ sanei_usb_set_timeout (USB_TIMEOUT_MS);
+
+ num_devices = 0;
+
+ for (; i < sizeof (supported_devices) / sizeof (supported_devices[0]); ++i)
+ {
+ sanei_usb_find_devices (0x5ca, supported_devices[i].product_id, attach);
+ }
+
+ if (vc)
+ *vc = SANE_VERSION_CODE (SANE_CURRENT_MAJOR, V_MINOR, 0);
+ DBG(8, "<sane_init\n");
+
+ initialized = SANE_TRUE;
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_get_devices (const SANE_Device ***dl,
+ SANE_Bool __sane_unused__ local)
+{
+ Ricoh2_Device *device = NULL;
+ SANE_Int i = 0;
+
+ DBG(8, ">sane_get_devices\n");
+
+ num_devices = 0;
+ sanei_usb_find_devices (0x5ca, 0x042c, attach);
+ sanei_usb_find_devices (0x5ca, 0x0448, attach);
+
+ if (sane_devices)
+ free (sane_devices);
+
+ sane_devices = (const SANE_Device **) malloc (sizeof (const SANE_Device *)
+ * (num_devices + 1));
+ if (!sane_devices)
+ return SANE_STATUS_NO_MEM;
+
+ for (device = ricoh2_devices; device; device = device->next)
+ if (device->active)
+ {
+ sane_devices[i++] = &(device->sane);
+ }
+
+ sane_devices[i] = NULL;
+ *dl = sane_devices;
+
+ DBG(2, "found %i devices\n", i);
+ DBG(8, "<sane_get_devices\n");
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_open (SANE_String_Const name, SANE_Handle *handle)
+{
+ Ricoh2_Device *device;
+ SANE_Status status;
+
+ DBG (8, ">sane_open: devicename=\"%s\", handle=%p\n", name,
+ (void *) handle);
+
+ CHECK_IF (initialized);
+ CHECK_IF (handle);
+
+ /* walk the linked list of scanner device until there is a match
+ * with the device name */
+ for (device = ricoh2_devices; device; device = device->next)
+ {
+ DBG (2, "sane_open: devname from list: %s\n",
+ device->sane.name);
+ if (strcmp (name, "") == 0
+ || strcmp (name, "ricoh") == 0
+ || strcmp (name, device->sane.name) == 0)
+ break;
+ }
+
+ *handle = device;
+
+ if (!device)
+ {
+ DBG (1, "sane_open: Not a Ricoh device\n");
+ return SANE_STATUS_INVAL;
+ }
+
+ status = init_options (device);
+ if (status != SANE_STATUS_GOOD)
+ return status;
+
+ DBG (8, "<sane_open\n");
+
+ return SANE_STATUS_GOOD;
+}
+
+const SANE_Option_Descriptor *
+sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
+{
+ Ricoh2_Device *device;
+
+ DBG (8, "<sane_get_option_descriptor: handle=%p, option = %d\n",
+ (void *) handle, option);
+
+ if (!initialized)
+ return NULL;
+
+ /* Check for valid option number */
+ if ((option < 0) || (option >= NUM_OPTIONS))
+ return NULL;
+
+ if (!(device = lookup_handle(handle)))
+ return NULL;
+
+ if (device->opt[option].name)
+ {
+ DBG (8, ">sane_get_option_descriptor: name=%s\n",
+ device->opt[option].name);
+ }
+
+ return &(device->opt[option]);
+}
+
+SANE_Status
+sane_control_option (SANE_Handle handle,
+ SANE_Int option,
+ SANE_Action action,
+ void *value,
+ SANE_Word *info)
+{
+ Ricoh2_Device *device;
+ SANE_Status status;
+
+ DBG (8,
+ ">sane_control_option: handle=%p, opt=%d, act=%d, val=%p, info=%p\n",
+ (void *) handle, option, action, (void *) value, (void *) info);
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+ CHECK_IF (value);
+ CHECK_IF (option >= 0 && option < NUM_OPTIONS);
+ CHECK_IF (device->opt[option].type != SANE_TYPE_GROUP);
+
+ switch (action)
+ {
+ case SANE_ACTION_SET_AUTO:
+ CHECK_IF (SANE_OPTION_IS_SETTABLE (device->opt[option].cap));
+ CHECK_IF (device->opt[option].cap & SANE_CAP_AUTOMATIC);
+
+ switch (option)
+ {
+ case OPT_RESOLUTION:
+ DBG (2,
+ "Setting value to default value of '%d' for option '%s'\n",
+ default_resolution,
+ device->opt[option].name);
+ device->val[option].w = default_resolution;
+ break;
+
+ case OPT_MODE:
+ DBG (2,
+ "Setting value to default value of '%s' for option '%s'\n",
+ (SANE_String_Const) default_mode,
+ device->opt[option].name);
+ strcpy (device->val[option].s, default_mode);
+ break;
+
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ break;
+
+ case SANE_ACTION_SET_VALUE:
+ CHECK_IF (SANE_OPTION_IS_SETTABLE (device->opt[option].cap));
+
+ if (device->opt[option].type == SANE_TYPE_BOOL)
+ {
+ SANE_Bool bool_value = *(SANE_Bool *) value;
+ CHECK_IF (bool_value == SANE_TRUE || bool_value == SANE_FALSE);
+ }
+
+ if (device->opt[option].constraint_type == SANE_CONSTRAINT_RANGE)
+ {
+ status = sanei_constrain_value (&(device->opt[option]), value, info);
+ CHECK_IF (status == SANE_STATUS_GOOD);
+ }
+
+
+ switch (option)
+ {
+ case OPT_RESOLUTION:
+ DBG (2,
+ "Setting value to '%d' for option '%s'\n",
+ *(SANE_Word *) value,
+ device->opt[option].name);
+ device->val[option].w = *(SANE_Word *) value;
+ break;
+
+ case OPT_MODE:
+ DBG (2,
+ "Setting value to '%s' for option '%s'\n",
+ (SANE_String_Const)value,
+ device->opt[option].name);
+ strcpy (device->val[option].s, value);
+ break;
+
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ break;
+
+ case SANE_ACTION_GET_VALUE:
+
+ switch (option)
+ {
+ case OPT_NUM_OPTS:
+ case OPT_RESOLUTION:
+ *(SANE_Word *) value = device->val[option].w;
+ DBG (2, "Option value = %d (%s)\n", *(SANE_Word *) value,
+ device->opt[option].name);
+ break;
+ case OPT_MODE:
+ strcpy (value, device->val[option].s);
+ break;
+ default:
+ return SANE_STATUS_INVAL;
+ }
+ break;
+
+ default:
+ return SANE_STATUS_INVAL;
+ }
+
+ DBG (8, "<sane_control_option\n");
+ return SANE_STATUS_GOOD;
+}
+
+static void
+update_scan_params (Ricoh2_Device *device)
+{
+ /* Scan mode: color or grayscale */
+ if (strcmp(device->val[OPT_MODE].s, SANE_VALUE_SCAN_MODE_COLOR) == 0)
+ {
+ device->mode = SCAN_MODE_COLOR;
+ }
+ else
+ {
+ device->mode = SCAN_MODE_GRAY;
+ }
+
+ /* resolution: 300 or 600dpi */
+ device->resolution = device->val[OPT_RESOLUTION].w;
+}
+
+
+SANE_Status
+sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
+{
+ Ricoh2_Device *device;
+
+ DBG (8, "sane_get_parameters: handle=%p, params=%p\n", (void *) handle,
+ (void *) params);
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+ CHECK_IF (params);
+
+ update_scan_params (device);
+
+ params->format =
+ device->mode == SCAN_MODE_COLOR ? SANE_FRAME_RGB : SANE_FRAME_GRAY;
+ params->last_frame = SANE_TRUE;
+
+ params->pixels_per_line = WIDTH_PIXELS_300DPI;
+ params->bytes_per_line = params->pixels_per_line;
+ params->lines = HEIGHT_PIXELS_300DPI;
+ params->depth = 8;
+
+ if (device->resolution == 600)
+ {
+ params->bytes_per_line *= 2;
+ params->pixels_per_line *= 2;
+ params->lines *= 2;
+ }
+
+ if (device->mode == SCAN_MODE_COLOR)
+ {
+ params->bytes_per_line *= 3;
+ }
+
+ DBG (8, ">sane_get_parameters: format = %s bytes_per_line = %d "
+ "depth = %d "
+ "pixels_per_line = %d "
+ "lines = %d\n",
+ (params->format == SANE_FRAME_RGB ? "rgb" : "gray"),
+ params->bytes_per_line,
+ params->depth,
+ params->pixels_per_line,
+ params->lines);
+
+ return SANE_STATUS_GOOD;
+}
+
+typedef struct
+{
+ SANE_Byte *send_buffer;
+ size_t to_send;
+ SANE_Byte *receive_buffer;
+ size_t to_receive;
+}
+Send_Receive_Pair;
+
+static SANE_Status
+send_receive (SANE_Int dn, Send_Receive_Pair *transfer)
+{
+ SANE_Status status;
+ size_t io_size;
+ SANE_Byte send_buffer[MAX_COMMAND_SIZE];
+
+ assert(transfer->to_send <= MAX_COMMAND_SIZE);
+
+ memset(send_buffer, 0, MAX_COMMAND_SIZE);
+
+ /* send a command */
+ io_size = MAX_COMMAND_SIZE;
+ DBG (128, "sending a packet of size %lu\n", io_size);
+ memcpy (send_buffer, transfer->send_buffer, transfer->to_send);
+ status = sanei_usb_write_bulk (dn, send_buffer, &io_size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "could not send packet: %s\n", sane_strstatus (status));
+ return status;
+ }
+
+ /* receive a result */
+ io_size = transfer->to_receive;
+ DBG (128, "receiving a packet of size %lu\n", io_size);
+ if (io_size)
+ {
+ status = sanei_usb_read_bulk (dn, transfer->receive_buffer, &io_size);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "could not get a response for packet: %s\n",
+ sane_strstatus (status));
+ return status;
+ }
+ if (io_size != transfer->to_receive)
+ {
+ DBG (1, "unexpected size of received packet: expected %lu, "
+ "received %lu\n", transfer->to_receive, io_size);
+ return SANE_STATUS_IO_ERROR;
+ }
+ }
+ return SANE_STATUS_GOOD;
+}
+
+static SANE_Status
+init_scan(SANE_Int dn, Scan_Mode mode, SANE_Int resolution)
+{
+ SANE_Status status = SANE_STATUS_GOOD;
+ SANE_Byte dummy_buffer[11]; /* the longest expected reply */
+ size_t i;
+
+ SANE_Byte urb_init[] = { 0x03, 0x09, 0x01 };
+ SANE_Byte magic0[] = { 0x03, 0x0d, 0x0b };
+ SANE_Byte magic1[] = {
+ 0x03, 0x0c, 0x11, 0x00, 0x00, 0x00, 0x01, 0x02, 0x05,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0xec, 0x13, 0x6c, 0x1b };
+ SANE_Byte magic2[] = { 0x03, 0x0b, 0x08 };
+ SANE_Byte magic3[] = {
+ 0x03, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x50, 0x6d, 0x06, 0x01 };
+
+ Send_Receive_Pair transfer[] =
+ {
+ { urb_init, sizeof (urb_init), dummy_buffer, 1 },
+ { magic0, sizeof (magic0), dummy_buffer, 11 },
+ { magic1, sizeof (magic1), dummy_buffer, 0 },
+ { magic2, sizeof (magic2), dummy_buffer, 8 },
+ { magic3, sizeof (magic3), dummy_buffer, 0 }
+ };
+
+ if (resolution == 600)
+ magic1[6] = 0x02;
+
+ if (mode == SCAN_MODE_COLOR)
+ magic1[7] = 0x03;
+
+ for (i = 0;
+ i < sizeof (transfer) / sizeof (transfer[0])
+ && (status == SANE_STATUS_GOOD);
+ ++i)
+ {
+ DBG (128, "sending initialization packet %zi\n", i);
+ status = send_receive (dn, transfer + i);
+ }
+
+ return status;
+}
+
+void
+teardown_scan(SANE_Int dn)
+{
+ SANE_Byte cancel_command[] = { 0x03, 0x0a };
+ SANE_Byte end_command[] = { 0x03, 0x09, 0x01 };
+ SANE_Byte dummy_buffer;
+ Send_Receive_Pair transfer;
+
+ DBG (128, "Sending cancel command\n");
+ transfer.send_buffer = cancel_command;
+ transfer.to_send = sizeof (cancel_command);
+ transfer.receive_buffer = &dummy_buffer;
+ transfer.to_receive = 0;
+ send_receive (dn, &transfer);
+
+ transfer.send_buffer = end_command;
+ transfer.to_send = sizeof (end_command);
+ transfer.receive_buffer = &dummy_buffer;
+ transfer.to_receive = 1;
+ send_receive (dn, &transfer);
+}
+
+SANE_Status
+sane_start (SANE_Handle handle)
+{
+ Ricoh2_Device *device;
+ SANE_Status status;
+ SANE_Int pixels_per_line;
+ SANE_Int resolution_factor = 1;
+
+ DBG (8, ">sane_start: handle=%p\n", (void *) handle);
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+
+ update_scan_params (device);
+ device->cancelled = SANE_FALSE;
+
+ status = sanei_usb_open (device->sane.name, &(device->dn));
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "could not open device %s: %s\n",
+ device->sane.name, sane_strstatus (status));
+ return status;
+ }
+
+ DBG (2, "usb device %s opened, device number is %d\n",
+ device->sane.name, device->dn);
+
+ status = sanei_usb_claim_interface (device->dn, 0);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "could not claim interface 0: %s\n",
+ sane_strstatus (status));
+ sanei_usb_close (device->dn);
+ return status;
+ }
+
+ sanei_usb_set_endpoint (device->dn,
+ USB_DIR_OUT | USB_ENDPOINT_TYPE_BULK,
+ 0x03);
+
+ sanei_usb_set_endpoint (device->dn,
+ USB_DIR_IN | USB_ENDPOINT_TYPE_BULK,
+ 0x85);
+
+ status = sanei_usb_reset (device->dn);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (1, "could not reset device %s: %s\n",
+ device->sane.name, sane_strstatus (status));
+ sanei_usb_close (device->dn);
+ return status;
+ }
+
+
+ status = init_scan (device->dn, device->mode, device->resolution);
+ if (status != SANE_STATUS_GOOD)
+ {
+ sanei_usb_close (device->dn);
+ return status;
+ }
+
+ resolution_factor = device->resolution == 600 ? 2 : 1;
+
+ pixels_per_line = WIDTH_PIXELS_300DPI * resolution_factor;
+
+ device->bytes_to_read =
+ WIDTH_PIXELS_300DPI * resolution_factor
+ * HEIGHT_PIXELS_300DPI * resolution_factor
+ * (device->mode == SCAN_MODE_COLOR ? 3 : 1);
+
+ device->buffer =
+ ricoh2_buffer_create (MAX_LINE_SIZE,
+ pixels_per_line,
+ INFO_SIZE * resolution_factor,
+ device->mode == SCAN_MODE_COLOR);
+
+ DBG (8, "<sane_start: %lu bytes to read\n", device->bytes_to_read);
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_read (SANE_Handle handle,
+ SANE_Byte *data,
+ SANE_Int maxlen,
+ SANE_Int *length)
+{
+ SANE_Byte read_next_command[] = { 0x03, 0x0E, 0x04, 0, 0, 0, 0, 240 };
+
+ Ricoh2_Device *device;
+ SANE_Status status;
+ Send_Receive_Pair transfer;
+
+ DBG (16, ">sane_read: handle=%p, data=%p, maxlen = %d, length=%p\n",
+ (void *) handle, (void *) data, maxlen, (void *) length);
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+ CHECK_IF (length);
+ CHECK_IF (maxlen);
+
+ /*
+ EOF has already been reached before or acquisition process hasn't
+ been initiated at all
+ */
+ if (device->bytes_to_read <= 0)
+ {
+ return SANE_STATUS_EOF;
+ }
+
+ if (!ricoh2_buffer_get_bytes_remain (device->buffer))
+ {
+ transfer.send_buffer = read_next_command;
+ transfer.to_send = sizeof (read_next_command);
+ transfer.receive_buffer =
+ ricoh2_buffer_get_internal_buffer (device->buffer);
+ transfer.to_receive = MAX_LINE_SIZE;
+ read_next_command[7] = transfer.to_receive / 256;
+
+ DBG (128, "Receiving data of size %zi\n", transfer.to_receive);
+
+ status = send_receive (device->dn, &transfer);
+ if (status != SANE_STATUS_GOOD)
+ {
+ device->bytes_to_read = 0;
+ return status;
+ }
+ }
+
+ *length = ricoh2_buffer_get_data (device->buffer,
+ data,
+ min(maxlen, device->bytes_to_read));
+
+ device->bytes_to_read -= *length;
+
+ DBG (128,
+ "Read length %d, left to read %lu\n",
+ *length,
+ device->bytes_to_read);
+
+ DBG (128,
+ "%d bytes remain in the buffer\n",
+ ricoh2_buffer_get_bytes_remain(device->buffer));
+
+ /* we've just reached expected data size */
+ if (device->bytes_to_read <= 0)
+ {
+ ricoh2_buffer_dispose(device->buffer);
+ device->buffer = NULL;
+ return SANE_STATUS_EOF;
+ }
+
+ DBG (16, "<sane_read\n");
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
+{
+ Ricoh2_Device *device;
+ DBG (8, "sane_set_io_mode: handle = %p, non_blocking = %d\n",
+ (void *) handle, non_blocking);
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+
+ if (non_blocking)
+ return SANE_STATUS_UNSUPPORTED;
+
+ return SANE_STATUS_GOOD;
+}
+
+SANE_Status
+sane_get_select_fd (SANE_Handle handle, SANE_Int *fd)
+{
+ Ricoh2_Device *device;
+ DBG (8, "sane_get_select_fd: handle = %p, fd %s 0\n", (void *) handle,
+ fd ? "!=" : "=");
+
+ CHECK_IF (initialized);
+ device = lookup_handle (handle);
+ CHECK_IF (device);
+
+ return SANE_STATUS_UNSUPPORTED;
+}
+
+void
+sane_cancel (SANE_Handle handle)
+{
+ Ricoh2_Device *device;
+
+ DBG (8, ">sane_cancel: handle = %p\n", (void *) handle);
+
+ if (!initialized)
+ return;
+
+ if (!(device = lookup_handle (handle)))
+ return;
+
+ if (device->cancelled)
+ return;
+
+ device->cancelled = SANE_TRUE;
+
+ teardown_scan (device->dn);
+ if (device->buffer)
+ {
+ ricoh2_buffer_dispose (device->buffer);
+ device->buffer = NULL;
+ }
+
+ sanei_usb_close(device->dn);
+
+ DBG (8, "<sane_cancel\n");
+}
+
+void
+sane_close (SANE_Handle handle)
+{
+ Ricoh2_Device *device;
+
+ DBG (8, ">sane_close\n");
+
+ if (!initialized)
+ return;
+
+ device = lookup_handle (handle);
+ if (!device)
+ return;
+
+ /* noop */
+
+ DBG (8, "<sane_close\n");
+}
+
+void
+sane_exit (void)
+{
+ Ricoh2_Device *device, *next;
+
+ DBG (8, ">sane_exit\n");
+
+ if (!initialized)
+ return;
+
+ for (device = ricoh2_devices, next = device; device; device = next)
+ {
+ next = device->next;
+ free (device);
+ }
+
+ if (sane_devices)
+ free (sane_devices);
+
+ sanei_usb_exit ();
+ initialized = SANE_FALSE;
+
+ DBG (8, "<sane_exit\n");
+}
diff --git a/backend/ricoh2_buffer.c b/backend/ricoh2_buffer.c
new file mode 100644
index 0000000..b8d7d90
--- /dev/null
+++ b/backend/ricoh2_buffer.c
@@ -0,0 +1,229 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2018 Stanislav Yuzvinsky
+ Based on the work done by viruxx
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+
+ As a special exception, the authors of SANE give permission for
+ additional uses of the libraries contained in this release of SANE.
+
+ The exception is that, if you link a SANE library with other files
+ to produce an executable, this does not by itself cause the
+ resulting executable to be covered by the GNU General Public
+ License. Your use of that executable is in no way restricted on
+ account of linking the SANE library code into it.
+
+ This exception does not, however, invalidate any other reasons why
+ the executable file might be covered by the GNU General Public
+ License.
+
+ If you submit changes to SANE to the maintainers to be included in
+ a subsequent release, you agree by submitting the changes that
+ those changes may be distributed with this exception intact.
+
+ If you write modifications of your own for SANE, it is your choice
+ whether to permit this exception to apply to your modifications.
+ If you do not wish that, delete this exception notice.
+*/
+
+#include "../include/sane/config.h"
+
+#include <memory.h>
+#include <assert.h>
+#include <malloc.h>
+
+#include "../include/sane/sanei_debug.h"
+
+typedef struct ricoh2_buffer
+{
+ /* lifetime constants */
+ SANE_Byte *data;
+ SANE_Int size;
+ SANE_Int pixels_per_line;
+ SANE_Int info_size;
+ SANE_Bool is_rgb;
+
+ /* state */
+ SANE_Int current_position;
+ SANE_Int remain_in_line;
+
+}
+ricoh2_buffer;
+
+static ricoh2_buffer *
+ricoh2_buffer_create (SANE_Int size,
+ SANE_Int pixels_per_line,
+ SANE_Int info_size,
+ SANE_Bool is_rgb)
+{
+ ricoh2_buffer *self;
+ assert (size > 0);
+ assert (pixels_per_line > 0);
+ assert (info_size >= 0);
+
+ self = malloc (sizeof (ricoh2_buffer));
+ if (!self)
+ return NULL;
+
+ self->data = malloc (size);
+ if (!self->data)
+ {
+ free (self);
+ return NULL;
+ }
+
+ self->size = size;
+ self->pixels_per_line = pixels_per_line;
+ self->info_size = info_size;
+ self->is_rgb = is_rgb;
+
+ self->current_position = 0;
+ self->remain_in_line = pixels_per_line;
+
+
+ DBG (192,
+ "size = %d pixels_per_line = %d info_size = %d rgb? = %d pos = %d\n",
+ self->size,
+ self->pixels_per_line,
+ self->info_size,
+ self->is_rgb,
+ self->current_position);
+
+ return self;
+}
+
+/* destructor */
+static void
+ricoh2_buffer_dispose (ricoh2_buffer *self)
+{
+ assert (self);
+ free (self->data);
+ free (self);
+}
+
+static SANE_Byte *
+ricoh2_buffer_get_internal_buffer (ricoh2_buffer *self)
+{
+ assert (self);
+ DBG (192, "engaging a buffer of size %d\n", self->size);
+
+ self->current_position = 0;
+ self->remain_in_line = self->pixels_per_line;
+
+ DBG (192, "remain in line = %d\n", self->remain_in_line);
+
+ return self->data;
+}
+
+static SANE_Int
+ricoh2_buffer_get_bytes_remain (ricoh2_buffer *self)
+{
+ assert (self);
+
+ DBG (192,
+ "bytes remain in the buffer %d\n",
+ self->size - self->current_position);
+
+ return self->size - self->current_position;
+}
+
+inline static SANE_Int
+min (SANE_Int v1, SANE_Int v2)
+{
+ return v1 < v2 ? v1 : v2;
+}
+
+static SANE_Int
+ricoh2_buffer_get_data (ricoh2_buffer *self,
+ SANE_Byte *dest,
+ SANE_Int dest_size)
+{
+ SANE_Int actually_copied = 0;
+ SANE_Int pixels_to_copy;
+ SANE_Int bytes_per_pixel;
+ SANE_Int bytes_per_color;
+ SANE_Byte *src;
+ SANE_Byte *end;
+
+ assert (self);
+ assert (dest);
+ assert (self->size > self->current_position);
+
+ bytes_per_pixel = self->is_rgb ? 3 : 1;
+ bytes_per_color = self->pixels_per_line + self->info_size;
+
+ DBG (192,
+ "trying to get %d bytes from the buffer, "
+ "while %d bytes in the line\n",
+ dest_size,
+ self->remain_in_line);
+
+ for (pixels_to_copy =
+ min (dest_size / bytes_per_pixel, self->remain_in_line);
+ pixels_to_copy && self->size > self->current_position;
+ pixels_to_copy =
+ min (dest_size / bytes_per_pixel, self->remain_in_line))
+ {
+
+ DBG (192,
+ "providing %d bytes to the user (until the end of the line), "
+ "position in buffer is %d\n",
+ pixels_to_copy * bytes_per_pixel,
+ self->current_position);
+
+ for (src = self->data + self->current_position,
+ end = src + pixels_to_copy;
+ src < end;
+ ++src)
+ {
+ *(dest++) = *(src);
+ if (bytes_per_pixel == 3)
+ {
+ *(dest++) = *(src + bytes_per_color);
+ *(dest++) = *(src + 2 * bytes_per_color);
+ }
+ }
+
+ dest_size -= pixels_to_copy * bytes_per_pixel;
+ actually_copied += pixels_to_copy * bytes_per_pixel;
+ self->current_position += pixels_to_copy;
+ self->remain_in_line -= pixels_to_copy;
+
+ // move to the next line
+ if (!self->remain_in_line)
+ {
+ self->current_position += self->info_size;
+ if (self->is_rgb)
+ self->current_position += 2 * bytes_per_color;
+ self->remain_in_line = self->pixels_per_line;
+ DBG (192,
+ "Line feed, new position is %d\n",
+ self->current_position);
+ }
+
+ DBG (192,
+ "left in the buffer: %d\n",
+ self->size - self->current_position);
+ }
+
+ /* invariant */
+ assert (self->size >= self->current_position);
+
+ return actually_copied;
+}
diff --git a/backend/rts8891.c b/backend/rts8891.c
index 0eaff7b..93018ab 100644
--- a/backend/rts8891.c
+++ b/backend/rts8891.c
@@ -292,7 +292,7 @@ write_rgb_data (char *name, unsigned char *image, SANE_Int width,
/**
* Called by SANE initially.
- *
+ *
* From the SANE spec:
* This function must be called before any other SANE function can be
* called. The behavior of a SANE backend is undefined if this
@@ -333,7 +333,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
/**
* Called by SANE to find out about supported devices.
- *
+ *
* From the SANE spec:
* This function can be used to query the list of devices that are
* available. If the function executes successfully, it stores a
@@ -346,7 +346,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
* returned (devices directly attached to the machine that SANE is
* running on). If it is false, the device list includes all remote
* devices that are accessible to the SANE library.
- *
+ *
* SANE does not require that this function is called before a
* sane_open() call is performed. A device name may be specified
* explicitly by a user which would make it unnecessary and
@@ -466,7 +466,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
" had only limited testing. Please be careful and \n");
DBG (DBG_error0, " report any failure/success to \n");
DBG (DBG_error0,
- " sane-devel@lists.alioth.debian.org. Please provide as many\n");
+ " sane-devel@alioth-lists.debian.net. Please provide as many\n");
DBG (DBG_error0,
" details as possible, e.g. the exact name of your\n");
DBG (DBG_error0, " scanner and what does (not) work.\n");
@@ -908,7 +908,7 @@ get_option_value (Rts8891_Session * s, int option, void *val)
/**
* Gets or sets an option value.
- *
+ *
* From the SANE spec:
* This function is used to set or inquire the current value of option
* number n of the device represented by handle h. The manner in which
@@ -919,7 +919,7 @@ get_option_value (Rts8891_Session * s, int option, void *val)
* area pointed to by v must be big enough to hold the entire option
* value (determined by member size in the corresponding option
* descriptor).
- *
+ *
* The only exception to this rule is that when setting the value of a
* string option, the string pointed to by argument v may be shorter
* since the backend will stop reading the option value upon
@@ -1388,8 +1388,8 @@ sane_start (SANE_Handle handle)
/**
* This function computes two set of parameters. The one for the SANE's standard
- * and the other for the hardware. Among these parameters are the bit depth, total
- * number of lines, total number of columns, extra line to read for data reordering...
+ * and the other for the hardware. Among these parameters are the bit depth, total
+ * number of lines, total number of columns, extra line to read for data reordering...
*/
static SANE_Status
compute_parameters (Rts8891_Session * session)
@@ -1666,7 +1666,7 @@ compute_parameters (Rts8891_Session * session)
* completion of that request. Outside of that window, the returned
* values are best-effort estimates of what the parameters will be
* when sane_start() gets invoked.
- *
+ *
* Calling this function before a scan has actually started allows,
* for example, to get an estimate of how big the scanned image will
* be. The parameters passed to this function are the handle of the
@@ -1693,7 +1693,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
/**
* Called by SANE to read data.
- *
+ *
* From the SANE spec:
* This function is used to read image data from the device
* represented by handle h. Argument buf is a pointer to a memory
@@ -1701,7 +1701,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
* returned is stored in *len. A backend must set this to zero when
* the call fails (i.e., when a status other than SANE_STATUS_GOOD is
* returned).
- *
+ *
* When the call succeeds, the number of bytes returned can be
* anywhere in the range from 0 to maxlen bytes.
*/
@@ -2077,7 +2077,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf,
/**
- * Cancels a scan.
+ * Cancels a scan.
*
* From the SANE spec:
* This function is used to immediately or as quickly as possible
@@ -2155,7 +2155,7 @@ sane_cancel (SANE_Handle handle)
/**
* Ends use of the session.
- *
+ *
* From the SANE spec:
* This function terminates the association between the device handle
* passed in argument h and the device it represents. If the device is
@@ -2188,7 +2188,7 @@ sane_close (SANE_Handle handle)
DBG (DBG_error, "close: invalid handle %p\n", handle);
return; /* oops, not a handle we know about */
}
-
+
dev=session->dev;
/* cancel any active scan */
@@ -2202,7 +2202,7 @@ sane_close (SANE_Handle handle)
rts8891_wait_for_home (dev, dev->regs);
}
set_lamp_brightness (dev, 0);
-
+
if (prev)
prev->next = session->next;
@@ -2248,7 +2248,7 @@ sane_close (SANE_Handle handle)
/**
* Terminates the backend.
- *
+ *
* From the SANE spec:
* This function must be called to terminate use of a backend. The
* function will first close all device handles that still might be
@@ -2408,8 +2408,8 @@ config_attach_rts8891 (SANEI_Config * config, const char *devname)
return SANE_STATUS_INVAL;
}
- /* the devname has been processed and is ready to be used
- * directly. Since the backend is an USB only one, we can
+ /* the devname has been processed and is ready to be used
+ * directly. Since the backend is an USB only one, we can
* call sanei_usb_attach_matching_devices straight */
sanei_usb_attach_matching_devices (devname, attach_rts8891);
@@ -2863,7 +2863,7 @@ init_options (struct Rts8891_Session *session)
/**
* average scanned rgb data, returns the global average. Each channel avearge is also
- * returned.
+ * returned.
*/
static float
average_area (int color, SANE_Byte * data, int width, int height,
@@ -3028,7 +3028,7 @@ find_origin (struct Rts8891_Device *dev, SANE_Bool * changed)
DBG (DBG_proc, "find_origin: start\n");
- /* check if head is at home
+ /* check if head is at home
* once sensor is correctly set up, we are allways park here,
* but in case sensor has just changed, we are not so we park head */
sanei_rts88xx_read_reg (dev->devnum, CONTROLER_REG, &reg);
@@ -3287,7 +3287,7 @@ find_origin (struct Rts8891_Device *dev, SANE_Bool * changed)
dev->regs[0xe2] = 0x03; /* 0x01 */
- /* dev->regs[0xe5] = 0x0d; 0x1c
+ /* dev->regs[0xe5] = 0x0d; 0x1c
dev->regs[0xe6] = 0x08; 0x10 080d=2061=1030*2+1 */
SET_DOUBLE (dev->regs, EXPOSURE_REG, 2061);
}
@@ -3326,7 +3326,7 @@ find_origin (struct Rts8891_Device *dev, SANE_Bool * changed)
/**
* This function detects the left margin (ie x offset of scanning area) by doing
* a grey scan of the very beginning of the sensor and finding the start of the
- * white area of calibration zone, which is start of usable pixels.
+ * white area of calibration zone, which is start of usable pixels.
*/
static SANE_Status
find_margin (struct Rts8891_Device *dev)
@@ -3390,7 +3390,7 @@ find_margin (struct Rts8891_Device *dev)
dev->regs[0xd7] = 0x14;
dev->regs[0xd8] = 0xf6;
- dev->regs[0xda] = 0xa7; /* XXX STEF XXX l'origine, pas 'bare' */
+ dev->regs[0xda] = 0xa7; /* XXX STEF XXX à l'origine, pas 'bare' */
dev->regs[0xe2] = 0x01;
@@ -3547,7 +3547,7 @@ initialize_device (struct Rts8891_Device *dev)
}
DBG (DBG_io, "initialize_device: lamp status=0x%02x\n", dev->regs[0x8e]);
- /* sensor type the one for 4470c sold with XPA is slightly different
+ /* sensor type the one for 4470c sold with XPA is slightly different
* than those sold bare, for this model we allways start with xpa type sensor,
* and change it later if we detect black scans in find_origin(). In case the
* attach function set up the sensor type, we don't modify it */
@@ -3694,10 +3694,7 @@ initialize_device (struct Rts8891_Device *dev)
}
#else /* FAST_INIT */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
init_registers (struct Rts8891_Device *dev)
{
int i;
@@ -4233,7 +4230,7 @@ init_device (struct Rts8891_Device *dev)
rts8891_write_all (dev->devnum, dev->regs, dev->reg_count);
/* now we are writing and reading back from memory, it is surely a memory test since the written data
- * don't look usefull at first glance
+ * don't look usefull at first glance
*/
reg = 0x06;
sanei_rts88xx_write_reg (dev->devnum, 0x93, &reg);
@@ -4424,7 +4421,7 @@ init_device (struct Rts8891_Device *dev)
sanei_rts88xx_write_reg (dev->devnum, CONTROLER_REG, &reg);
/* now we init nvram */
- /* this is highly dangerous and thus desactivated
+ /* this is highly dangerous and thus desactivated
* in sanei_rts88xx_setup_nvram (HAZARDOUS_EXPERIMENT #define) */
sanei_rts88xx_setup_nvram (dev->devnum, 21, nv_cmd1);
sanei_rts88xx_setup_nvram (dev->devnum, 21, nv_cmd2);
@@ -4513,17 +4510,17 @@ static SANE_Status
detect_device (struct Rts8891_Device *dev)
{
/*
---- 5 74945 bulk_out len 4 wrote 0x80 0xb0 0x00 0x01
---- 6 74946 bulk_in len 1 read 0x80
---- 7 74947 bulk_out len 4 wrote 0x80 0xb3 0x00 0x01
---- 8 74948 bulk_in len 1 read 0x04
---- 9 74949 bulk_out len 4 wrote 0x80 0xb1 0x00 0x01
---- 10 74950 bulk_in len 1 read 0x00
---- 11 74951 bulk_out len 5 wrote 0x88 0xb3 0x00 0x01 0x00
---- 12 74952 bulk_out len 5 wrote 0x88 0xb3 0x00 0x01 0x00
---- 13 74953 bulk_out len 4 wrote 0x80 0x00 0x00 0xf4
---- 14 74954 bulk_in len 192 read 0xf5 0x41 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x70 0x00 0x00 0x00 0x00 0x60 0x1b 0xff 0x3e 0x00 0x00 0xff 0x3e 0x00 0x00 0x00 0x00 0x00 0x22 0x00 0x00 0x00 0x00 0x00 0xff 0x00 0xff 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x42 0x00 0x00 0x10 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x20 0x24 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x10 0x00 0x80 0x00 0x10 0x00 0x01 0x00 0x00 0x10 0x00 0x00 0x20 0x20 0x00 0x00 0x00 0x00 0x20 0x01 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x41 0x00 0x10 0x21 0x20 0x00 0x20 0x81 0x20 0x01 0x01 0x00 0x22 0x00 0x40 0x05 0x00 0x00 0x01 0x1e 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xcc 0x27 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
---- 15 74955 bulk_in len 52 read 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x06 0x1b 0x10 0x7a 0x00 0x15 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+--- 5 74945 bulk_out len 4 wrote 0x80 0xb0 0x00 0x01
+--- 6 74946 bulk_in len 1 read 0x80
+--- 7 74947 bulk_out len 4 wrote 0x80 0xb3 0x00 0x01
+--- 8 74948 bulk_in len 1 read 0x04
+--- 9 74949 bulk_out len 4 wrote 0x80 0xb1 0x00 0x01
+--- 10 74950 bulk_in len 1 read 0x00
+--- 11 74951 bulk_out len 5 wrote 0x88 0xb3 0x00 0x01 0x00
+--- 12 74952 bulk_out len 5 wrote 0x88 0xb3 0x00 0x01 0x00
+--- 13 74953 bulk_out len 4 wrote 0x80 0x00 0x00 0xf4
+--- 14 74954 bulk_in len 192 read 0xf5 0x41 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x70 0x00 0x00 0x00 0x00 0x60 0x1b 0xff 0x3e 0x00 0x00 0xff 0x3e 0x00 0x00 0x00 0x00 0x00 0x22 0x00 0x00 0x00 0x00 0x00 0xff 0x00 0xff 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x42 0x00 0x00 0x10 0x00 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00 0x00 0x00 0x18 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x20 0x24 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x10 0x00 0x80 0x00 0x10 0x00 0x01 0x00 0x00 0x10 0x00 0x00 0x20 0x20 0x00 0x00 0x00 0x00 0x20 0x01 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x41 0x00 0x10 0x21 0x20 0x00 0x20 0x81 0x20 0x01 0x01 0x00 0x22 0x00 0x40 0x05 0x00 0x00 0x01 0x1e 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xcc 0x27 0x64 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00 0x06 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+--- 15 74955 bulk_in len 52 read 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x06 0x1b 0x10 0x7a 0x00 0x15 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
*/
SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte control;
@@ -4666,7 +4663,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
dev->regs[0xd8] = 0x52;
dev->regs[0xe2] = 0x1f;
- /*dev->regs[0xe5] = 0x28; 28=40
+ /*dev->regs[0xe5] = 0x28; 28=40
dev->regs[0xe6] = 0x00; */
SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
@@ -4747,7 +4744,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
dev->regs[0xf0] = 0xa8; /* 0x70 */
}
- /* we loop scanning a 637 (1911 bytes) pixels wide area in color mode
+ /* we loop scanning a 637 (1911 bytes) pixels wide area in color mode
* until each black average reaches the desired value */
sanei_rts88xx_set_status (dev->devnum, dev->regs, mode, light);
do
@@ -4858,7 +4855,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/*
- * do gain calibration. We do scans until averaged values of the area match
+ * do gain calibration. We do scans until averaged values of the area match
* the target code. We're doing a dichotomy again.
*/
static SANE_Status
@@ -4973,7 +4970,7 @@ gain_calibration (struct Rts8891_Device *dev, int mode, int light)
dev->regs[0xd7] = 0x10;
dev->regs[0xd8] = 0x52;
dev->regs[0xe2] = 0x1f;
- /* dev->regs[0xe5] = 0x28; 0028 -> 40
+ /* dev->regs[0xe5] = 0x28; 0028 -> 40
dev->regs[0xe6] = 0x00; */
SET_DOUBLE (dev->regs, EXPOSURE_REG, 40);
dev->regs[0xe7] = 0x75;
@@ -5218,7 +5215,7 @@ gain_calibration (struct Rts8891_Device *dev, int mode, int light)
/**
* Do fine offset calibration. Scans are done with gains from gain calibration
- * at 75 dpi regardless of the dpi of the final scan. We loop scanning a 637
+ * at 75 dpi regardless of the dpi of the final scan. We loop scanning a 637
* (1911 bytes) pixels wide area in color mode until each black average
* reaches the desired value (OFFSET_TARGET).
*/
@@ -5449,10 +5446,7 @@ offset_calibration (struct Rts8891_Device *dev, int mode, int light)
* We scan a 637 pixels by 66 linesxoffset=24 , xend=661, pixels=637
y offset=1 , yend=67, lines =66
*/
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int *status1, SANE_Byte * regs)
{
SANE_Status status = SANE_STATUS_GOOD;
@@ -5532,7 +5526,7 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
/* regs[0xd3] = 0x02; 0x0e */
regs[0xd4] = 0x04; /* 0x10 */
regs[0xe2] = 0x02; /* 0x05 */
- /* regs[0xe5] = 0xbb;
+ /* regs[0xe5] = 0xbb;
regs[0xe6] = 0x01; 1bb =443 */
exposure=443;
}
@@ -5739,7 +5733,7 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
regs[0x88] = 0x1b;
regs[0x8d] = 0xde;
- regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
+ regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
the scanned width 1de => 5100 wide scan */
regs[0xc0] = 0xff;
@@ -5826,7 +5820,7 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
regs[0x88] = 0x30;
regs[0x8d] = 0xde;
- regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
+ regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
the scanned width 1de => 5100 wide scan */
regs[0xc0] = 0xff;
regs[0xc1] = 0xff;
@@ -5870,7 +5864,7 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
regs[0x87] = 0x00;
regs[0x88] = 0x06;
- regs[0x8d] = 0x00;
+ regs[0x8d] = 0x00;
regs[0x8e] = 0x60; /* XXX STEF XXX */
regs[0xc0] = 0xf8;
@@ -5895,7 +5889,7 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
regs[0xd3] = 0x0e;
regs[0xd4] = 0x10;
regs[0xd7] = 0x31;
-
+
timing=0x0032;
exposure=915;
break;
@@ -6109,8 +6103,8 @@ setup_shading_calibration (struct Rts8891_Device *dev, int mode, int *light, int
}
break;
}
-
- /* apply computed settings */
+
+ /* apply computed settings */
SET_DOUBLE (regs, EXPOSURE_REG, exposure);
SET_DOUBLE (regs, TIMING_REG, timing);
SET_DOUBLE (regs, TIMING1_REG, timing+1);
@@ -6167,8 +6161,8 @@ shading_calibration (struct Rts8891_Device *dev, SANE_Bool color, int mode, int
"shading_calibration: failed to allocate memory for data\n");
return SANE_STATUS_NO_MEM;
}
-
- /* set up registers */
+
+ /* set up registers */
status=setup_shading_calibration(dev, mode, &light, &status1, dev->regs);
if (status != SANE_STATUS_GOOD)
{
@@ -6279,7 +6273,7 @@ fill_gamma (SANE_Byte * calibration, int *idx, SANE_Word * gamma)
/*
* build and send calibration data which contains gamma table and
* shading correction coefficient
- *
+ *
*/
static SANE_Status
send_calibration_data (struct Rts8891_Session *session)
@@ -6309,28 +6303,28 @@ send_calibration_data (struct Rts8891_Session *session)
DBG (DBG_io, "send_calibration_data: size=%d\n", size);
- /*
+ /*
* FORMAT:
- * 00
+ * 00
* 512 bytes gamma table (256 16 bit entry)
- * FF
- * 00
+ * FF
+ * 00
* 512 bytes gamma table (256 16 bit entry)
- * FF
- * 00
+ * FF
+ * 00
* 512 bytes gamma table (256 16 bit entry)
- * FF
+ * FF
* 5400 max shading coefficients at 600 dpi repeated 3 times
* overall size rounded at 32 bytes multiple
* 675 CCD elements at 75 DPI. 16 bit per element. 1 or 3 channels.
* there is a 0xFF marker at end of each coefficients row.
- * a gamma table comes first
+ * a gamma table comes first
* 75 DPI: 5600=1542+(675)*2*3+8 ->size rounded to 'upper 32'
* 150 DPI: 9664=675*2*2*3=1542+(675*2)*2*3+22
* 17760 4 +18
* 33952 8 +10
* 65472+896=66368= 16 +26
- *
+ *
* COEFFICIENT 16 bit value
* first is 00, 0x40, 0x80 or 0xC0 => 10 significant bit
* coeff*average=K => coeff=K/average
@@ -6369,7 +6363,7 @@ send_calibration_data (struct Rts8891_Session *session)
fill_gamma (calibration, &idx, gamma_b);
/* compute calibration coefficients */
- /* real witdh != 675 --> 637
+ /* real witdh != 675 --> 637
* shading data calibration starts at 1542. There are 3 rows of 16 bits values
* first row is green calibration
*/
@@ -6404,7 +6398,7 @@ send_calibration_data (struct Rts8891_Session *session)
green_code = atoi (getenv ("BLUE_CODE"));
}
- /* correction coefficient is target code divided by average scanned value
+ /* correction coefficient is target code divided by average scanned value
* but it is put in a 16 bits number. Only 10 first bits are significants.
*/
/* first color component red data */
@@ -6511,7 +6505,7 @@ send_calibration_data (struct Rts8891_Session *session)
}
/* move at dev->model->min_ydpi dpi up to the scanning area. Which speeds
- * up scanning
+ * up scanning
*/
static SANE_Status
move_to_scan_area (struct Rts8891_Session *session)
@@ -6554,10 +6548,7 @@ move_to_scan_area (struct Rts8891_Session *session)
/* The windows driver is allways scanning in color, so we do the same. */
/* For now, the only mode that could be done would be 300 dpi gray scan, */
/* based on the register settings of find_origin() */
-#ifndef UNIT_TESTING
-static
-#endif
-SANE_Status
+static SANE_Status
setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_Byte *status2, SANE_Byte *regs)
{
SANE_Status status = SANE_STATUS_GOOD;
@@ -7130,7 +7121,7 @@ setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_
regs[0xef] = 0x00;
regs[0xf0] = 0x00;
regs[0x8d] = 0xf0;
- regs[0x8e] = 0x60; /* low nibble of 8e and 8d are proportional to
+ regs[0x8e] = 0x60; /* low nibble of 8e and 8d are proportional to
the scanned width 1de => 5100 wide scan */
regs[0xc0] = 0xff;
@@ -7228,7 +7219,7 @@ setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_
regs[0x88] = 0x5a;
regs[0x8d] = 0xde;
- regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
+ regs[0x8e] = 0x61; /* low nibble of 8e and 8d are proportional to
the scanned width 1de => 5100 wide scan */
regs[0xc0] = 0xff;
@@ -7275,7 +7266,7 @@ setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_
regs[0x3a] = 0x1b;
regs[0x40] = 0x2c; /* 0x24 */
regs[0x50] = 0x00; /* 0x18 */
-
+
regs[0x64] = 0x01; /* 0x02 */
regs[0x65] = 0x20; /* 0x10 */
@@ -7421,7 +7412,7 @@ setup_scan_registers (struct Rts8891_Session *session, SANE_Byte *status1, SANE_
regs[0x88] = 0xae;
regs[0x8d] = 0xbd; /* about twice the 600 dpi values */
- regs[0x8e] = 0x63; /* low nibble of 8e and 8d are proportional to
+ regs[0x8e] = 0x63; /* low nibble of 8e and 8d are proportional to
the scanned width 3b5 => 10124 wide scan */
regs[0xc0] = 0xff;
regs[0xc1] = 0xff;
@@ -7716,7 +7707,7 @@ park_head (struct Rts8891_Device *dev, SANE_Bool wait)
return status;
}
-/* update button status
+/* update button status
* button access is allowed during scan, which is usefull for 'cancel' button
*/
static SANE_Status
diff --git a/backend/rts8891.h b/backend/rts8891.h
index 5fbf8b5..fa3feb6 100644
--- a/backend/rts8891.h
+++ b/backend/rts8891.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007-2012 stef.dev@free.fr
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef RTS8891_H
@@ -113,13 +113,13 @@ enum Rts8891_Option
enum Rts8891_Configure_Option
{
CFG_MODEL_NUMBER = 0, /* first option number must be zero */
- CFG_SENSOR_NUMBER,
+ CFG_SENSOR_NUMBER,
CFG_ALLOW_SHARING,
NUM_CFG_OPTIONS /* MUST be last */
};
/** Scanner object. This struct holds informations usefull for
- * the functions defined in SANE's standard. Informations closer
+ * the functions defined in SANE's standard. Informations closer
* to the hardware are in the Rts8891_Device structure. There is
* as many session structure than frontends using the scanner.
*/
diff --git a/backend/rts8891_devices.c b/backend/rts8891_devices.c
index 151b283..a46f98b 100644
--- a/backend/rts8891_devices.c
+++ b/backend/rts8891_devices.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007-2012 stef.dev@free.fr
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
diff --git a/backend/rts8891_low.c b/backend/rts8891_low.c
index 917d514..4fc5666 100644
--- a/backend/rts8891_low.c
+++ b/backend/rts8891_low.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007-2013 stef.dev@free.fr
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/* this file contains all the low level functions needed for the higher level
@@ -849,21 +849,21 @@ read_data (struct Rts8891_Session *session, SANE_Byte * dest, SANE_Int length)
/**
* set scanner idle before leaving xxx_quiet()
-write_reg(0x33,1)=0x00
-write_reg(0x33,1)=0x00
-write_reg(0x36,1)=0x00
+write_reg(0x33,1)=0x00
+write_reg(0x33,1)=0x00
+write_reg(0x36,1)=0x00
prepare();
------
-write_reg(LAMP_REG,1)=0x80
-write_reg(LAMP_REG,1)=0xad
-read_reg(0x14,2)=0xf8 0x28
-write_reg(0x14,2)=0x78 0x28
-get_status()=0x20 0x3f
-read_reg(0xb1,1)=0x00
-read_control()=0x00
+write_reg(LAMP_REG,1)=0x80
+write_reg(LAMP_REG,1)=0xad
+read_reg(0x14,2)=0xf8 0x28
+write_reg(0x14,2)=0x78 0x28
+get_status()=0x20 0x3f
+read_reg(0xb1,1)=0x00
+read_control()=0x00
reset_lamp()=(0x20,0x3f)
-write_reg(LAMP_REG,1)=0x8d
-write_reg(LAMP_REG,1)=0xad
+write_reg(LAMP_REG,1)=0x8d
+write_reg(LAMP_REG,1)=0xad
*/
/* vim: set sw=2 cino=>2se-1sn-1s{s^-1st0(0u0 smarttab expandtab: */
diff --git a/backend/rts8891_low.h b/backend/rts8891_low.h
index a6df802..6b12316 100644
--- a/backend/rts8891_low.h
+++ b/backend/rts8891_low.h
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2007-2012 stef.dev@free.fr
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
#ifndef RTS8891_LOW_H
@@ -80,7 +80,7 @@
typedef struct Rts8891_Device Rts8891_Device;
#define SET_DOUBLE(regs,idx,value) regs[idx]=(SANE_Byte)((value)>>8); regs[idx-1]=(SANE_Byte)((value) & 0xff);
-/*
+/*
* defines for RTS8891 registers name
*/
#define BUTTONS_REG2 0x1a
@@ -128,7 +128,7 @@ typedef struct Rts8891_Model
SANE_Int ld_shift_r; /* red */
SANE_Int ld_shift_g; /* green */
SANE_Int ld_shift_b; /* blue */
-
+
/* default sensor type */
SANE_Int sensor;
diff --git a/backend/rts88xx_lib.c b/backend/rts88xx_lib.c
index 8e921f2..f19ceef 100644
--- a/backend/rts88xx_lib.c
+++ b/backend/rts88xx_lib.c
@@ -123,7 +123,7 @@ sanei_rts88xx_set_scan_frequency (SANE_Byte * regs, int frequency)
}
/*
- * read one register at given index
+ * read one register at given index
*/
SANE_Status
sanei_rts88xx_read_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
@@ -153,7 +153,7 @@ sanei_rts88xx_read_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
}
/*
- * write one register at given index
+ * write one register at given index
*/
SANE_Status
sanei_rts88xx_write_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
@@ -200,7 +200,7 @@ sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
start, length, message);
}
- /* when writing several registers at a time, we avoid writing the 0xb3 register
+ /* when writing several registers at a time, we avoid writing the 0xb3 register
* which is used to control the status of the scanner */
if ((start + length > 0xb3) && (length > 1))
{
@@ -297,7 +297,7 @@ sanei_rts88xx_read_regs (SANE_Int devnum, SANE_Int start,
}
/*
- * get status by reading registers 0x10 and 0x11
+ * get status by reading registers 0x10 and 0x11
*/
SANE_Status
sanei_rts88xx_get_status (SANE_Int devnum, SANE_Byte * regs)
@@ -310,7 +310,7 @@ sanei_rts88xx_get_status (SANE_Int devnum, SANE_Byte * regs)
}
/*
- * set status by writing registers 0x10 and 0x11
+ * set status by writing registers 0x10 and 0x11
*/
SANE_Status
sanei_rts88xx_set_status (SANE_Int devnum, SANE_Byte * regs,
@@ -394,7 +394,7 @@ sanei_rts88xx_reset_lamp (SANE_Int devnum, SANE_Byte * regs)
"sanei_rts88xx_reset_lamp: expected reg[0xda]=0xa7, got 0x%02x\n",
reg);
}
-
+
/* store read value in shadow register */
regs[0xda] = reg;
@@ -415,7 +415,7 @@ sanei_rts88xx_get_lcd (SANE_Int devnum, SANE_Byte * regs)
}
/*
- * write to special control register CONTROL_REG=0xb3
+ * write to special control register CONTROL_REG=0xb3
*/
SANE_Status
sanei_rts88xx_write_control (SANE_Int devnum, SANE_Byte value)
diff --git a/backend/rts88xx_lib.h b/backend/rts88xx_lib.h
index 71bd72a..fa7abbd 100644
--- a/backend/rts88xx_lib.h
+++ b/backend/rts88xx_lib.h
@@ -60,7 +60,7 @@
#define DBG_io2 7 /* io functions that are called very often */
#define DBG_data 8 /* log data sent and received */
-/*
+/*
* defines for registers name
*/
#define CONTROL_REG 0xb3
@@ -97,7 +97,7 @@ void sanei_rts88xx_set_scan_area (SANE_Byte * reg, SANE_Int ystart,
SANE_Int xend);
/*
- * read one register at given index
+ * read one register at given index
*/
SANE_Status sanei_rts88xx_read_reg (SANE_Int devnum, SANE_Int index,
SANE_Byte * reg);
@@ -109,7 +109,7 @@ SANE_Status sanei_rts88xx_read_data (SANE_Int devnum, SANE_Word * length,
unsigned char *dest);
/*
- * write one register at given index
+ * write one register at given index
*/
SANE_Status sanei_rts88xx_write_reg (SANE_Int devnum, SANE_Int index,
SANE_Byte * reg);
@@ -127,17 +127,17 @@ SANE_Status sanei_rts88xx_read_regs (SANE_Int devnum, SANE_Int start,
SANE_Byte * dest, SANE_Int length);
/*
- * get status by reading registers 0x10 and 0x11
+ * get status by reading registers 0x10 and 0x11
*/
SANE_Status sanei_rts88xx_get_status (SANE_Int devnum, SANE_Byte * regs);
/*
- * set status by writing registers 0x10 and 0x11
+ * set status by writing registers 0x10 and 0x11
*/
SANE_Status sanei_rts88xx_set_status (SANE_Int devnum, SANE_Byte * regs,
SANE_Byte reg10, SANE_Byte reg11);
/*
- * get lamp status by reading registers 0x84 to 0x8d
+ * get lamp status by reading registers 0x84 to 0x8d
*/
SANE_Status sanei_rts88xx_get_lamp_status (SANE_Int devnum, SANE_Byte * regs);
@@ -148,7 +148,7 @@ SANE_Status sanei_rts88xx_reset_lamp (SANE_Int devnum, SANE_Byte * regs);
SANE_Status sanei_rts88xx_get_lcd (SANE_Int devnum, SANE_Byte * regs);
/*
- * write to special control register CONTROL_REG=0xb3
+ * write to special control register CONTROL_REG=0xb3
*/
SANE_Status sanei_rts88xx_write_control (SANE_Int devnum, SANE_Byte value);
diff --git a/backend/s9036.c b/backend/s9036.c
index 1b97f80..aa18df7 100644
--- a/backend/s9036.c
+++ b/backend/s9036.c
@@ -51,7 +51,7 @@ static S9036_Device *s9036_devices;
/* sets loc_s bytes long value at offset loc in scsi command to value size */
-static void
+static void
set_size (Byte * loc, int loc_s, size_t size)
{
int i;
@@ -62,7 +62,7 @@ set_size (Byte * loc, int loc_s, size_t size)
}
}
-static long
+static long
reserve_unit (int fd)
{
const Byte scsi_reserve[] =
@@ -73,7 +73,7 @@ reserve_unit (int fd)
return sanei_scsi_cmd (fd, scsi_reserve, sizeof (scsi_reserve), 0, 0);
}
-static long
+static long
release_unit (int fd)
{
const Byte scsi_release[] =
@@ -654,9 +654,9 @@ init_options (S9036_Scanner * s)
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX(1) /* quantization */
};
static const SANE_Range automatic_adjust_range =
@@ -871,7 +871,7 @@ sane_exit (void)
sane_close (dev->handle);
free (dev);
}
-
+
if (devlist)
free (devlist);
}
@@ -881,7 +881,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 */
if (devlist)
@@ -1237,7 +1237,7 @@ sane_start (SANE_Handle handle)
return SANE_STATUS_GOOD;
}
-static void
+static void
copy_buffer (S9036_Scanner * s, SANE_Byte ** buf, SANE_Int * max_len,
SANE_Int * len)
{
@@ -1327,7 +1327,7 @@ SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
handle = handle; /* silence compilation warnings */
-
+
DBG (1, "sane_set_io_mode(%d)\n", non_blocking);
return (non_blocking == SANE_TRUE) ?
diff --git a/backend/sceptre.c b/backend/sceptre.c
index fa0da20..3670f3c 100644
--- a/backend/sceptre.c
+++ b/backend/sceptre.c
@@ -2,47 +2,47 @@
Copyright (C) 2002 Frank Zago (sane at zago dot net)
Copyright (C) 2002 Other SANE contributors
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
Sceptre S1200 SCSI scanner (sometimes also called S120)
*/
@@ -366,7 +366,7 @@ sceptre_get_status (Sceptre_Scanner * dev, size_t * data_left)
return (SANE_STATUS_GOOD);
}
-/*
+/*
* Adjust the rasters. This function is used during a color scan,
* because the scanner does not present a format sane can interpret
* directly.
@@ -374,9 +374,9 @@ sceptre_get_status (Sceptre_Scanner * dev, size_t * data_left)
* The scanner sends the colors by rasters (R then G then B), whereas
* sane is waiting for a group of 3 bytes per color. To make things
* funnier, the rasters are shifted. This shift factor depends on the
- * resolution used. The format of those raster is:
+ * resolution used. The format of those raster is:
* R...R RG...RG RGB...RGB BG...GB B...B
- *
+ *
* So this function reorders all that mess. It gets the input from
* dev->buffer and write the output in dev->image. size_in the the
* length of the valid data in dev->buffer.
@@ -401,7 +401,7 @@ sceptre_adjust_raster (Sceptre_Scanner * dev, size_t size_in)
return;
}
- /*
+ /*
* The color coding is one line for each color (in the RGB order).
* Recombine that stuff to create a RGB value for each pixel.
*/
@@ -411,7 +411,7 @@ sceptre_adjust_raster (Sceptre_Scanner * dev, size_t size_in)
for (raster = 0; raster < nb_rasters; raster++)
{
- /*
+ /*
* Find the color to which this raster belongs to.
* 0 = red
* 1 = green
@@ -516,7 +516,7 @@ sceptre_adjust_raster (Sceptre_Scanner * dev, size_t size_in)
DBG (DBG_proc, "sceptre_adjust_raster: exit\n");
}
-/* SCSI sense handler. Callback for SANE.
+/* SCSI sense handler. Callback for SANE.
*
* Since this scanner does not have REQUEST SENSE, it is always an
* error if this function is called.*/
@@ -596,14 +596,14 @@ attach_scanner (const char *devicename, Sceptre_Scanner ** devp)
dev->resolution_range.max = SANE_FIX (1200);
dev->resolution_range.quant = SANE_FIX (1);
- /*
+ /*
* The S1200 has an area of 8.5 inches / 11.7 inches. (A4 like)
* That's roughly 215*297 mm
* The values are coded by
* size in inch * 600 dpi.
* The maximums are:
* X: 8.5 inches * 600 = 5100 dots
- * Y: 11.7 inches * 600 = 7020
+ * Y: 11.7 inches * 600 = 7020
* (although the windows driver stops at 7019)
*
* The values are stored in mm. Inches sucks anyway.
@@ -840,7 +840,7 @@ sceptre_init_options (Sceptre_Scanner * dev)
/* Wait until the scanner is ready.
*
* The only reason I know the scanner is not ready is because it is
- * moving the CCD.
+ * moving the CCD.
*/
static SANE_Status
sceptre_wait_scanner (Sceptre_Scanner * dev)
@@ -873,7 +873,7 @@ sceptre_wait_scanner (Sceptre_Scanner * dev)
return (SANE_STATUS_IO_ERROR);
}
- /* Apparently the scanner returns only 2 values:
+ /* Apparently the scanner returns only 2 values:
* 0x00 - ready
* 0xff - not ready
*/
@@ -1067,7 +1067,7 @@ sceptre_fill_image (Sceptre_Scanner * dev)
/* Copy the complete lines, plus the imcompletes
* ones. We don't keep the real end of data used
- * in image, so we copy the biggest possible.
+ * in image, so we copy the biggest possible.
*
* This is a no-op for non color images.
*/
@@ -1083,7 +1083,7 @@ sceptre_fill_image (Sceptre_Scanner * dev)
return (status);
}
- /*
+ /*
* Try to read the maximum number of bytes.
*/
size = data_left;
@@ -1105,7 +1105,7 @@ sceptre_fill_image (Sceptre_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -1163,7 +1163,7 @@ sceptre_fill_image (Sceptre_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
@@ -1693,11 +1693,11 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
dev->width = dev->x_br - dev->x_tl;
dev->length = dev->y_br - dev->y_tl;
- /*
+ /*
* Adjust the "X Resolution". The sceptre S1200 ignores the
* Y-Resolution parameter in the windows block. X-Resolution
* is used instead. However the limits are not the same for X
- * (600 dpi) and Y (1200 dpi).
+ * (600 dpi) and Y (1200 dpi).
*/
x_dpi = dev->resolution;
if (x_dpi > 600)
@@ -1779,7 +1779,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
* 2n + [0.0 .. 2.0[ -> round to 2n
*
* Note: the rounding is often incorrect at high
- * resolution (ag more than 300dpi)
+ * resolution (ag more than 300dpi)
*/
dev->params.lines = (dev->length * dev->resolution) / 600;
dev->params.lines &= ~1;
diff --git a/backend/sceptre.h b/backend/sceptre.h
index 726c131..8ba5cd8 100644
--- a/backend/sceptre.h
+++ b/backend/sceptre.h
@@ -37,10 +37,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -269,8 +269,8 @@ enum Sceptre_Option
/*--------------------------------------------------------------------------*/
-/*
- * Scanner supported by this backend.
+/*
+ * Scanner supported by this backend.
*/
struct scanners_supported
{
@@ -382,7 +382,7 @@ Sceptre_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/scripts/pixma_gen_options.py b/backend/scripts/pixma_gen_options.py
new file mode 100755
index 0000000..c4c75e0
--- /dev/null
+++ b/backend/scripts/pixma_gen_options.py
@@ -0,0 +1,389 @@
+#!/usr/bin/env python
+
+import sys,os,re
+
+class Error(Exception):
+ pass
+
+
+class ParseError(Error):
+ def __init__(self, errline):
+ Error.__init__(self, errline)
+
+
+class Struct:
+ pass
+
+
+def createCNameMap():
+ t = ''
+ for i in range(256):
+ if ((ord('A') <= i) and (i <= ord('Z'))) or \
+ ((ord('a') <= i) and (i <= ord('z'))) or \
+ ((ord('0') <= i) and (i <= ord('9'))):
+ t += chr(i)
+ else:
+ t += '_'
+ return t
+
+
+def seekBegin(f):
+ while True:
+ line = f.readline()
+ if not line:
+ return False
+ if line.startswith('BEGIN SANE_Option_Descriptor'):
+ return True
+
+
+def parseVerbatim(o, line):
+ words = line.split(None, 1)
+ if (len(words) < 2) or (words[1][0] != '@'):
+ return False
+ o[words[0]] = words[1]
+ return True
+
+
+def parseLine_type(o, line):
+ words = line.split(None, 2)
+ otype = words[1]
+ o['type'] = 'SANE_TYPE_' + otype.upper()
+ if otype == 'group':
+ g.ngroups += 1
+ oname = '_group_%d' % g.ngroups
+ o['size'] = 0
+ else:
+ temp = words[2]
+ idx = temp.find('[')
+ if idx == -1:
+ oname = temp
+ o['size'] = 1
+ else:
+ oname = temp[0:idx]
+ o['size'] = int(temp[idx+1:-1])
+ o['name'] = oname
+
+
+def parseLine_title(o, line):
+ o['title'] = line.split(None, 1)[1]
+
+
+def parseLine_desc(o, line):
+ o['desc'] = line.split(None, 1)[1]
+
+
+def parseLine_unit(o, line):
+ o['unit'] = 'SANE_UNIT_' + line.split(None, 1)[1].upper()
+
+
+def parseLine_default(o, line):
+ o['default'] = line.split(None, 1)[1]
+
+
+def parseLine_cap(o, line):
+ words = line.split()
+ o['cap'] = ['SANE_CAP_' + s.upper() for s in words[1:]]
+
+
+def parseLine_constraint(o, line):
+ c = line.split(None,1)[1]
+ if c[0] == '{':
+ o['constraint'] = c[1:-1].split('|')
+ elif c[0] == '(':
+ o['constraint'] = tuple(c[1:-1].split(','))
+ else:
+ sys.stderr.write('Ignored: %s\n' % line)
+
+
+def parseLine_info(o, line):
+ words = line.split()
+ o['info'] = ['SANE_INFO_' + s.upper() for s in words[1:]]
+
+def parseLine_rem(o, line):
+ pass
+
+def normalize(o):
+ if 'cname' not in o:
+ cname = o['name'].translate(cnameMap)
+ o['cname'] = cname
+ else:
+ cname = o['cname']
+ o['cname_opt'] = 'opt_' + cname
+ o['cname_con'] = 'constraint_' + cname
+ if 'title' not in o:
+ o['title'] = 'NO TITLE'
+ if 'desc' not in o:
+ o['desc'] = '@sod->title' % o
+ if 'unit' not in o:
+ o['unit'] = 'SANE_UNIT_NONE'
+ if 'constraint_type' not in o:
+ if 'constraint' not in o:
+ ct = 'SANE_CONSTRAINT_NONE'
+ elif isinstance(o['constraint'], list):
+ if o['type'] == 'SANE_TYPE_STRING':
+ ct = 'SANE_CONSTRAINT_STRING_LIST'
+ else:
+ ct = 'SANE_CONSTRAINT_WORD_LIST'
+ elif isinstance(o['constraint'], tuple):
+ ct = 'SANE_CONSTRAINT_RANGE'
+ elif isinstance(o['constraint'], str):
+ oc = o['constraint']
+ if oc.startswith('@range'):
+ ct = 'SANE_CONSTRAINT_RANGE'
+ elif oc.startswith('@word_list'):
+ ct = 'SANE_CONSTRAINT_WORD_LIST'
+ elif oc.startswith('@string_list'):
+ ct = 'SANE_CONSTRAINT_STRING_LIST'
+ o['constraint_type'] = ct
+ return o
+
+
+def parseFile(f):
+ if not seekBegin(f):
+ return None
+ options = [ {
+ 'name' : '',
+ 'cname' : 'opt_num_opts',
+ 'title' : '@SANE_TITLE_NUM_OPTIONS',
+ 'desc' : '@SANE_DESC_NUM_OPTIONS',
+ 'type' : 'SANE_TYPE_INT',
+ 'unit' : 'SANE_UNIT_NONE',
+ 'size' : 1,
+ 'cap' : ['SANE_CAP_SOFT_DETECT'],
+ 'constraint_type' : 'SANE_CONSTRAINT_NONE',
+ 'default' : '@w = ' + opt_prefix + 'last'
+ } ]
+ o = {}
+ while True:
+ line = f.readline()
+ if not line:
+ break
+ line = line.strip()
+ if not line:
+ continue
+ token = line.split(None, 1)[0].lower()
+ if token == 'end':
+ break
+ if token == 'type':
+ if 'name' in o:
+ options.append(o)
+ o = {}
+ funcName = 'parseLine_' + token
+ if funcName in globals():
+ if not parseVerbatim(o, line):
+ func = globals()[funcName]
+ func(o, line)
+ else:
+ sys.stderr.write('Skip: %s\n' % line)
+ if 'name' in o:
+ options.append(o)
+ return [normalize(o) for o in options]
+
+
+def genHeader(options):
+ print """
+typedef union {
+ SANE_Word w;
+ SANE_Int i;
+ SANE_Bool b;
+ SANE_Fixed f;
+ SANE_String s;
+ void *ptr;
+} option_value_t;
+"""
+ print 'typedef enum {'
+ for o in options:
+ print ' %(cname_opt)s,' % o
+ print ' ' + opt_prefix + 'last'
+ print '} option_t;'
+ print """
+
+typedef struct {
+ SANE_Option_Descriptor sod;
+ option_value_t val,def;
+ SANE_Word info;
+} option_descriptor_t;
+
+
+struct pixma_sane_t;
+static int build_option_descriptors(struct pixma_sane_t *ss);
+"""
+
+
+def genMinMaxRange(n, t, r):
+ if t == 'SANE_TYPE_FIXED':
+ r = ['SANE_FIX(%s)' % x for x in r]
+ print 'static const SANE_Range ' + n + ' = '
+ print ' { ' + r[0] + ',' + r[1] + ',' + r[2] + ' };'
+
+
+def genList(n, t, l):
+ if t == 'SANE_TYPE_INT':
+ etype = 'SANE_Word'
+ l = [str(len(l))] + l
+ elif t == 'SANE_TYPE_FIXED':
+ etype = 'SANE_Word'
+ l = [str(len(l))] + ['SANE_FIX(%s)' % x for x in l]
+ elif t == 'SANE_TYPE_STRING':
+ etype = 'SANE_String_Const'
+ l = ['SANE_I18N("%s")' % x for x in l] + ['NULL']
+ print 'static const %s %s[%d] = {' % (etype, n, len(l))
+ for x in l[0:-1]:
+ print '\t' + x + ','
+ print '\t' + l[-1] + ' };'
+
+
+def genConstraints(options):
+ for o in options:
+ if 'constraint' not in o: continue
+ c = o['constraint']
+ oname = o['cname_con']
+ otype = o['type']
+ if isinstance(c, tuple):
+ genMinMaxRange(oname, otype, c)
+ elif isinstance(c, list):
+ genList(oname, otype, c)
+ print
+
+def buildCodeVerbatim(o):
+ for f in ('name', 'title', 'desc', 'type', 'unit', 'size', 'cap',
+ 'constraint_type', 'constraint', 'default'):
+ if (f not in o): continue
+ temp = o[f]
+ if (not isinstance(temp,str)) or \
+ (len(temp) < 1) or (temp[0] != '@'):
+ continue
+ o['code_' + f] = temp[1:]
+
+def ccode(o):
+ buildCodeVerbatim(o)
+ if 'code_name' not in o:
+ o['code_name'] = '"' + o['name'] + '"'
+ for f in ('title', 'desc'):
+ cf = 'code_' + f
+ if cf in o: continue
+ o[cf] = 'SANE_I18N("' + o[f] + '")'
+
+ for f in ('type', 'unit', 'constraint_type'):
+ cf = 'code_' + f
+ if cf in o: continue
+ o[cf] = o[f]
+
+ if 'code_size' not in o:
+ otype = o['type']
+ osize = o['size']
+ if otype == 'SANE_TYPE_STRING':
+ code = str(osize + 1)
+ elif otype == 'SANE_TYPE_INT' or otype == 'SANE_TYPE_FIXED':
+ code = str(osize) + ' * sizeof(SANE_Word)'
+ elif otype == 'SANE_TYPE_BUTTON':
+ code = '0'
+ else:
+ code = 'sizeof(SANE_Word)'
+ o['code_size'] = code
+
+ if ('code_cap' not in o) and ('cap' in o):
+ o['code_cap'] = reduce(lambda a,b: a+'|'+b, o['cap'])
+ else:
+ o['code_cap'] = '0'
+
+ if ('code_info' not in o) and ('info' in o):
+ o['code_info'] = reduce(lambda a,b: a+'|'+b, o['info'])
+ else:
+ o['code_info'] = '0'
+
+ if ('code_default' not in o) and ('default' in o):
+ odefault = o['default']
+ otype = o['type']
+ if odefault == '_MIN':
+ rhs = 'w = sod->constraint.range->min'
+ elif odefault == '_MAX':
+ rhs = 'w = sod->constraint.range->max'
+ elif otype in ('SANE_TYPE_INT', 'SANE_TYPE_BOOL'):
+ rhs = 'w = %(default)s'
+ elif otype == 'SANE_TYPE_FIXED':
+ rhs = 'w = SANE_FIX(%(default)s)'
+ elif otype == 'SANE_TYPE_STRING':
+ rhs = 's = SANE_I18N("%(default)s")'
+ o['code_default'] = rhs % o
+ if 'code_default' in o:
+ code = ' opt->def.%(code_default)s;\n'
+ if o['constraint_type'] != 'SANE_CONSTRAINT_STRING_LIST':
+ code += ' opt->val.%(code_default)s;\n'
+ else:
+ code += ' opt->val.w = find_string_in_list' \
+ '(opt->def.s, sod->constraint.string_list);\n'
+ o['full_code_default'] = code % o
+ else:
+ o['full_code_default'] = ''
+
+ if ('code_constraint' not in o) and ('constraint' in o):
+ ct = o['constraint_type']
+ idx = len('SANE_CONSTRAINT_')
+ ctype = ct[idx:].lower()
+ if ctype == 'range':
+ rhs = '&%(cname_con)s' % o
+ else:
+ rhs = '%(cname_con)s' % o
+ o['code_constraint'] = ctype + ' = ' + rhs
+ if 'code_constraint' in o:
+ code = ' sod->constraint.%(code_constraint)s;\n'
+ o['full_code_constraint'] = code % o
+ else:
+ o['full_code_constraint'] = ''
+
+ return o
+
+def genBuildOptions(options):
+ print """
+static
+int find_string_in_list(SANE_String_Const str, const SANE_String_Const *list)
+{
+ int i;
+ for (i = 0; list[i] && strcmp(str, list[i]) != 0; i++) {}
+ return i;
+}
+
+static
+int build_option_descriptors(struct pixma_sane_t *ss)
+{
+ SANE_Option_Descriptor *sod;
+ option_descriptor_t *opt;
+
+ memset(OPT_IN_CTX, 0, sizeof(OPT_IN_CTX));"""
+
+ for o in options:
+ o = ccode(o)
+ otype = o['type']
+ code = '\n opt = &(OPT_IN_CTX[%(cname_opt)s]);\n' \
+ ' sod = &opt->sod;\n' \
+ ' sod->type = %(code_type)s;\n' \
+ ' sod->title = %(code_title)s;\n' \
+ ' sod->desc = %(code_desc)s;\n'
+ if otype != 'SANE_TYPE_GROUP':
+ code += ' sod->name = %(code_name)s;\n' \
+ ' sod->unit = %(code_unit)s;\n' \
+ ' sod->size = %(code_size)s;\n' \
+ ' sod->cap = %(code_cap)s;\n' \
+ ' sod->constraint_type = %(code_constraint_type)s;\n' \
+ '%(full_code_constraint)s' \
+ ' OPT_IN_CTX[%(cname_opt)s].info = %(code_info)s;\n' \
+ '%(full_code_default)s'
+ sys.stdout.write(code % o)
+ print
+ print ' return 0;\n'
+ print '}'
+ print
+
+g = Struct()
+g.ngroups = 0
+opt_prefix = 'opt_'
+con_prefix = 'constraint_'
+cnameMap = createCNameMap()
+options = parseFile(sys.stdin)
+print "/* Automatically generated from pixma_sane.c */"
+if (len(sys.argv) == 2) and (sys.argv[1] == 'h'):
+ genHeader(options)
+else:
+ genConstraints(options)
+ genBuildOptions(options)
diff --git a/backend/sharp.c b/backend/sharp.c
index 69f5000..b2807d7 100644
--- a/backend/sharp.c
+++ b/backend/sharp.c
@@ -2,7 +2,7 @@
Copyright (C) 1998, 1999
Kazuya Fukuda, Abel Deuring based on BYTEC GmbH Germany
- Written by Helmut Koeberle previous Work on canon.c file from the
+ Written by Helmut Koeberle previous Work on canon.c file from the
SANE package.
This file is part of the SANE package.
@@ -50,18 +50,18 @@
changes to version 0.31:
- support for JX320 added (Thanks to Isaac Wilcox for providind the
patch)
-
+
Version 0.31
changes to version 0.30:
- support for JX350 added (Thanks to Shuhei Tomita for providind the
patch)
-
+
changes to version 0.20
- support for the proposed extended open function in sanei_scsi.c added
- support for ADF and FSU (transparency adapter) added
- simple sense handler added
- preview added
- - added several missing statements "s->fd = -1;" after
+ - added several missing statements "s->fd = -1;" after
"sanei_scsi_close(s->fd)" to error returns in sane_start();
- maximum scan sizes are read from the scanner, if a JX330 or JX250
is used. (this avoids the guessing of scan sizes for the JX330)
@@ -69,7 +69,7 @@
- "Fixed gamma selection (1.0/2.2)", available for JX330 and JX610,
is now implemented for the JX250 by downloading a gamma table
- changed the calls to free() and strdup() in sane_control_option to
- strcpy.
+ strcpy.
(I don't like too frequent unchecked malloc()s and strdups :) Abel)
- cleaned up some quirks in option handling, eg, that "threshold"
was initially enabled, while the initial scan mode is "color"
@@ -133,12 +133,12 @@
*/
#define USE_CUSTOM_GAMMA
#define USE_COLOR_THRESHOLD
-/* enable a short list of some standard resolutions. XSane provides
+/* enable a short list of some standard resolutions. XSane provides
its own resolution list; therefore its is generally not reasonable
to enable this list, if you mainly using XSane. But it might be handy
if you are working with xscanimage
*/
-/* #define USE_RESOLUTION_LIST */
+/* #define USE_RESOLUTION_LIST */
/* enable separate specification of resolution in X and Y direction.
XSane will show the Y-resolution at a quite different place than
@@ -220,15 +220,15 @@ static SANE_String use_adf = "Automatic Document Feeder";
static SANE_String use_fsu = "Transparency Adapter";
static SANE_String use_simple = "Flatbed";
-/* auto selection of ADF and FSU, as described in the JX330 manual,
- is a nice idea -- but I assume that the possible scan window
- sizes depend not only for the JX250, but also for JX330 on the
+/* auto selection of ADF and FSU, as described in the JX330 manual,
+ is a nice idea -- but I assume that the possible scan window
+ sizes depend not only for the JX250, but also for JX330 on the
usage of ADF or FSU. Thus, the user might be able to select scan
windows of an "illegal" size, which would have to be automatically
- corrected, and I don't see, how the user could be informed about
- this "window clipping". More important, I don't see, how the
+ corrected, and I don't see, how the user could be informed about
+ this "window clipping". More important, I don't see, how the
frontend could be informed that the ADF is automatically enabled.
-
+
Insert a "#define ALLOW_AUTO_SELECT_ADF", if you want to play
with this feature.
*/
@@ -239,8 +239,8 @@ static SANE_String_Const use_auto = "AutoSelection";
#define HAVE_FSU 1
#define HAVE_ADF 2
-/* The follow #defines are used in SHARP_Scanner.adf_fsu_mode
- and as indexes for the arrays x_ranges, y_ranges in SHARP_Device
+/* The follow #defines are used in SHARP_Scanner.adf_fsu_mode
+ and as indexes for the arrays x_ranges, y_ranges in SHARP_Device
*/
#define SCAN_SIMPLE 0
#define SCAN_WITH_FSU 1
@@ -326,17 +326,17 @@ sense_handler(int __sane_unused__ fd, u_char *sense_buffer, void *s)
{
int sense_key;
SHARP_Sense_Data *sdat = (SHARP_Sense_Data *) s;
-
+
#define add_sense_code sense_buffer[12]
#define add_sense_qual sense_buffer[13]
memcpy(sdat->sb, sense_buffer, 16);
-
+
DBG(10, "sense code: %02x %02x %02x %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
- sense_buffer[0], sense_buffer[1], sense_buffer[2], sense_buffer[3],
- sense_buffer[4], sense_buffer[5], sense_buffer[6], sense_buffer[7],
- sense_buffer[8], sense_buffer[9], sense_buffer[10], sense_buffer[11],
+ sense_buffer[0], sense_buffer[1], sense_buffer[2], sense_buffer[3],
+ sense_buffer[4], sense_buffer[5], sense_buffer[6], sense_buffer[7],
+ sense_buffer[8], sense_buffer[9], sense_buffer[10], sense_buffer[11],
sense_buffer[12], sense_buffer[13], sense_buffer[14], sense_buffer[15]);
sense_key = sense_buffer[2] & 0x0F;
@@ -394,7 +394,7 @@ sense_handler(int __sane_unused__ fd, u_char *sense_buffer, void *s)
DBG(1, "scan head positioning error\n");
return SANE_STATUS_IO_ERROR;
}
-
+
}
else if (sdat->model == JX250 || sdat->model == JX330 ||
sdat->model == JX350 || sdat->model == JX320)
@@ -561,7 +561,7 @@ inquiry (int fd, void *inq_buf, size_t *inq_size)
static SANE_Status
mode_select_mud (int fd, int mud)
{
- static u_char cmd[6 + MODEPARAM_LEN] =
+ static u_char cmd[6 + MODEPARAM_LEN] =
{MODE_SELECT6, 0x10, 0, 0, MODEPARAM_LEN, 0};
mode_select_param *mp;
SANE_Status status;
@@ -583,7 +583,7 @@ mode_select_mud (int fd, int mud)
static SANE_Status
mode_select_adf_fsu (int fd, int mode)
{
- static u_char cmd[6 + MODE_SUBDEV_LEN] =
+ static u_char cmd[6 + MODE_SUBDEV_LEN] =
{MODE_SELECT6, 0x10, 0, 0, MODE_SUBDEV_LEN, 0};
mode_select_subdevice *mp;
SANE_Status status;
@@ -670,7 +670,7 @@ release_unit (int fd)
#endif
static SANE_Status
-mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
+mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
int page)
{
static u_char cmd[6];
@@ -681,7 +681,7 @@ mode_sense (int fd, void *modeparam_buf, size_t * modeparam_size,
cmd[0] = 0x1a;
cmd[2] = page;
cmd[4] = *modeparam_size;
- status = sanei_scsi_cmd (fd, cmd, sizeof (cmd), modeparam_buf,
+ status = sanei_scsi_cmd (fd, cmd, sizeof (cmd), modeparam_buf,
modeparam_size);
DBG (11, ">>\n");
@@ -740,7 +740,7 @@ send (int fd, SHARP_Send * ss)
static SANE_Status
set_window (int fd, window_param *wp, int len)
{
- static u_char cmd[10 + WINDOW_LEN] =
+ static u_char cmd[10 + WINDOW_LEN] =
{SET_WINDOW, 0, 0, 0, 0, 0, 0, 0, 0, 0};
window_param *winp;
SANE_Status status;
@@ -775,17 +775,17 @@ get_window (int fd, void *buf, size_t * buf_size)
#ifdef USE_FORK
/* the following four functions serve simply the purpose
- to avoid "over-optimised" code when reader_process and
- read_data wait for the buffer to become ready. The simple
- while-loops in these functions which check the buffer
- status may be optimised so that the machine code only
- operates with registers instead of using the variable
- values stored in memory. (This is only a workaround -
+ to avoid "over-optimised" code when reader_process and
+ read_data wait for the buffer to become ready. The simple
+ while-loops in these functions which check the buffer
+ status may be optimised so that the machine code only
+ operates with registers instead of using the variable
+ values stored in memory. (This is only a workaround -
it would be better to set a compiler pragma, which ensures
that the program looks into the RAM in these while loops --
but unfortunately I could not find appropriate information
- about this at least for gcc, not to speak about other
- compilers...
+ about this at least for gcc, not to speak about other
+ compilers...
Abel)
*/
@@ -795,7 +795,7 @@ cancel_requested(SHARP_Scanner *s)
return s->rdr_ctl->cancel;
}
-static SANE_Status
+static SANE_Status
rdr_status(SHARP_Scanner *s)
{
return s->rdr_ctl->status;
@@ -832,9 +832,9 @@ reader_process(SHARP_Scanner *s)
DBG(11, "<< reader_process\n");
sigemptyset (&sigterm_set);
-
+
bytes_to_queue = s->bytes_to_read;
-
+
/* it seems that some carriage stops can be avoided with the
JX-250, if the data of an integral number of scan lines is
read with one SCSI command
@@ -845,9 +845,9 @@ reader_process(SHARP_Scanner *s)
else
/* this is a really tiny buffer..*/
max_bytes_per_read = s->dev->info.bufsize;
-
+
/* wait_ready(s->fd); */
-
+
if (s->dev->info.queued_reads <= s->dev->info.buffers)
max_queue = s->dev->info.queued_reads;
else
@@ -869,16 +869,16 @@ reader_process(SHARP_Scanner *s)
#ifdef QUEUEDEBUG
DBG(2, "reader: req_enter...\n");
#endif
- status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
- bc->buffer,
- &bc->used,
+ status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
+ bc->buffer,
+ &bc->used,
&bc->qid);
#ifdef QUEUEDEBUG
DBG(2, "reader: req_enter ok\n");
#endif
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s",
+ DBG(1, "reader_process: read command failed: %s",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -902,9 +902,9 @@ reader_process(SHARP_Scanner *s)
waitindex = 0;
cmdindex = i % s->dev->info.buffers;
- while(s->bytes_to_read > 0)
+ while(s->bytes_to_read > 0)
{
- if (cancel_requested(s))
+ if (cancel_requested(s))
{
#ifdef QUEUEDEBUG
DBG(2, "reader: flushing requests...\n");
@@ -925,7 +925,7 @@ reader_process(SHARP_Scanner *s)
}
bc = &s->rdr_ctl->buf_ctl[waitindex];
- if (bc->shm_status == SHM_BUSY)
+ if (bc->shm_status == SHM_BUSY)
{
#ifdef DEBUG
{
@@ -948,7 +948,7 @@ reader_process(SHARP_Scanner *s)
DBG(2, "rd: data received %li.%06li\n", t.tv_sec, t.tv_usec);
}
#endif
- if (status == SANE_STATUS_DEVICE_BUSY && retries)
+ if (status == SANE_STATUS_DEVICE_BUSY && retries)
{
bc->used = 0;
retries--;
@@ -958,7 +958,7 @@ reader_process(SHARP_Scanner *s)
}
else if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s\n",
+ DBG(1, "reader_process: read command failed: %s\n",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -969,7 +969,7 @@ reader_process(SHARP_Scanner *s)
s->rdr_ctl->running = 0;
return 2;
}
- else
+ else
{
retries = MAX_RETRIES;
}
@@ -982,7 +982,7 @@ reader_process(SHARP_Scanner *s)
/* memset(bc->buffer + bc->used, 0, bc->nreq - bc->used); */
bc->used = bc->nreq;
/* bytes_to_queue += bc->nreq - bc->used; */
- DBG(1, "btr: %i btq: %i nreq: %i nrcv: %i\n",
+ DBG(1, "btr: %i btq: %i nreq: %i nrcv: %i\n",
s->bytes_to_read, bytes_to_queue, bc->nreq, bc->used);
#endif
bc->start = 0;
@@ -993,7 +993,7 @@ reader_process(SHARP_Scanner *s)
waitindex = 0;
}
-
+
if (bytes_to_queue)
{
/* wait until the next buffer is completely read via read_data */
@@ -1028,11 +1028,11 @@ reader_process(SHARP_Scanner *s)
cmd[6] = nread >> 16;
cmd[7] = nread >> 8;
cmd[8] = nread;
- status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
+ status = sanei_scsi_req_enter (s->fd, cmd, sizeof (cmd),
bc->buffer, &bc->used, &bc->qid);
if (status != SANE_STATUS_GOOD)
{
- DBG(1, "reader_process: read command failed: %s",
+ DBG(1, "reader_process: read command failed: %s",
sane_strstatus(status));
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -1046,13 +1046,13 @@ reader_process(SHARP_Scanner *s)
bc->shm_status = SHM_BUSY;
bc->nreq = nread;
bytes_to_queue -= nread;
-
+
cmdindex++;
if (cmdindex == s->dev->info.buffers)
cmdindex = 0;
}
-
- if (cancel_requested(s))
+
+ if (cancel_requested(s))
{
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
sanei_scsi_req_flush_all_extended(s->fd);
@@ -1066,7 +1066,7 @@ reader_process(SHARP_Scanner *s)
return 1;
}
}
-
+
DBG(1, "buffer full conditions: %i\n", full_count);
DBG(11, " reader_process>>\n");
@@ -1079,7 +1079,7 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
{
size_t copysize, copied = 0;
SHARP_shmem_ctl *bc;
-
+
DBG(11, "<< read_data ");
bc = &s->rdr_ctl->buf_ctl[s->read_buff];
@@ -1088,7 +1088,7 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
{
/* wait until the reader process delivers data or a scanner error occurs: */
while ( buf_status(bc) != SHM_FULL
- && rdr_status(s) == SANE_STATUS_GOOD)
+ && rdr_status(s) == SANE_STATUS_GOOD)
{
usleep(10); /* could perhaps be longer. make this user configurable?? */
}
@@ -1100,10 +1100,10 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
}
copysize = bc->used - bc->start;
-
+
if (copysize > *buf_size - copied )
copysize = *buf_size - copied;
-
+
memcpy(buf, &(bc->buffer[bc->start]), copysize);
copied += copysize;
@@ -1139,8 +1139,8 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
/* sane_read_shuffled requires that read_data returns
exactly *buf_size bytes, so it must be guaranteed here.
- Further make sure that not more bytes are read in than
- sanei_scsi_max_request_size allows, to avoid a failure
+ Further make sure that not more bytes are read in than
+ sanei_scsi_max_request_size allows, to avoid a failure
of the read command
*/
while (remain > 0)
@@ -1151,7 +1151,7 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
cmd[6] = nread >> 16;
cmd[7] = nread >> 8;
cmd[8] = nread;
- status = sanei_scsi_cmd (s->fd, cmd, sizeof (cmd),
+ status = sanei_scsi_cmd (s->fd, cmd, sizeof (cmd),
&buf[*buf_size - remain], &nread);
if (status == SANE_STATUS_DEVICE_BUSY && retries)
{
@@ -1164,7 +1164,7 @@ read_data (SHARP_Scanner *s, SANE_Byte *buf, size_t * buf_size)
DBG(11, ">>\n");
return(status);
}
- else
+ else
{
retries = MAX_RETRIES;
}
@@ -1208,7 +1208,7 @@ wait_ready(int fd)
sleep(3);
}
return (status);
-
+
}
/* ask the scanner for the maximum scan sizes with/without ADF and
@@ -1220,7 +1220,7 @@ get_max_scan_size(int fd, SHARP_Device *dev, int mode)
SANE_Status status;
mode_sense_subdevice m_subdev;
size_t buf_size;
-
+
status = mode_select_adf_fsu(fd, mode);
if (status != SANE_STATUS_GOOD)
{
@@ -1245,7 +1245,7 @@ get_max_scan_size(int fd, SHARP_Device *dev, int mode)
(m_subdev.max_x[0] << 24) + (m_subdev.max_x[1] << 16) +
(m_subdev.max_x[2] << 8) + m_subdev.max_x[3] - 1, dev->info.mud));
dev->info.tl_x_ranges[mode].quant = 0;
-
+
dev->info.br_x_ranges[mode].min = SANE_FIX(PIX_TO_MM(1, dev->info.mud));
dev->info.br_x_ranges[mode].max = SANE_FIX(PIX_TO_MM(
(m_subdev.max_x[0] << 24) + (m_subdev.max_x[1] << 16) +
@@ -1261,19 +1261,19 @@ get_max_scan_size(int fd, SHARP_Device *dev, int mode)
else
/* The manual for the JX250 states on page 62 that the maximum
value for tl_y in FSU mode is 13199, while the max value for
- br_y is 13900, which is (probably -- I don't have a FSU) returned
- by mode sense/subdevice page. Therefore, we cannot simply
+ br_y is 13900, which is (probably -- I don't have a FSU) returned
+ by mode sense/subdevice page. Therefore, we cannot simply
decrement that value and store it as max(tl_y).
*/
dev->info.tl_y_ranges[mode].max = 13199;
dev->info.tl_y_ranges[mode].quant = 0;
-
+
dev->info.br_y_ranges[mode].min = SANE_FIX(PIX_TO_MM(1, dev->info.mud));
dev->info.br_y_ranges[mode].max = SANE_FIX(PIX_TO_MM(
(m_subdev.max_y[0] << 24) + (m_subdev.max_y[1] << 16) +
(m_subdev.max_y[2] << 8) + m_subdev.max_y[3], dev->info.mud));
dev->info.br_y_ranges[mode].quant = 0;
-
+
return SANE_STATUS_GOOD;
}
@@ -1374,7 +1374,7 @@ attach (const char *devnam, SHARP_Device ** devp)
}
DBG (3, "attach: sending MODE SELECT\n");
- /* JX-610 probably supports only 25 MUD size
+ /* JX-610 probably supports only 25 MUD size
JX-320 only supports 25 MUD size
*/
if (strncmp (inquiry_data + 16, "JX610", 5) == 0)
@@ -1412,7 +1412,7 @@ attach (const char *devnam, SHARP_Device ** devp)
model_name = (char*) inquiry_data + 16;
dev->sane.model = strndup (model_name, 10);
dev->sane.type = "flatbed scanner";
-
+
dev->sensedat.model = sensedat.model;
DBG (5, "dev->sane.name = %s\n", dev->sane.name);
@@ -1441,7 +1441,7 @@ attach (const char *devnam, SHARP_Device ** devp)
dev->info.bmu = msp.bmu;
dev->info.mud = (msp.mud[0] << 8) + msp.mud[1];
-
+
dev->info.adf_fsu_installed = 0;
if (dev->sensedat.model == JX610)
{
@@ -1475,7 +1475,7 @@ attach (const char *devnam, SHARP_Device ** devp)
}
else
{
- /* ask the scanner, if ADF or FSU are installed, and ask for
+ /* ask the scanner, if ADF or FSU are installed, and ask for
the maximum scan sizes with/without ADF and FSU.
*/
@@ -1489,23 +1489,23 @@ attach (const char *devnam, SHARP_Device ** devp)
sanei_scsi_close (fd);
return (SANE_STATUS_INVAL);
}
-
+
/* The JX330 manual is not very clear about the ADF- und FSU-Bits
- returned by a JX320 and JX325 for the mode sense command:
+ returned by a JX320 and JX325 for the mode sense command:
Are these bits set to zero or not? To be on the safe side, let's
clear them.
*/
-
+
if ( strncmp(inquiry_data + 16, "JX320", 5) == 0
|| strncmp(inquiry_data + 16, "JX325", 5) == 0)
{
m_subdev.f_mode_type = 0;
m_subdev.a_mode_type = 0;
}
-
+
get_max_scan_size(fd, dev, SCAN_SIMPLE);
-
- if (m_subdev.a_mode_type & 0x03)
+
+ if (m_subdev.a_mode_type & 0x03)
{
dev->info.adf_fsu_installed = HAVE_ADF;
get_max_scan_size(fd, dev, SCAN_WITH_ADF);
@@ -1516,7 +1516,7 @@ attach (const char *devnam, SHARP_Device ** devp)
get_max_scan_size(fd, dev, SCAN_WITH_FSU);
}
- if ( dev->sensedat.model == JX320
+ if ( dev->sensedat.model == JX320
|| dev->sensedat.model == JX330
|| dev->sensedat.model == JX350)
{
@@ -1540,7 +1540,7 @@ attach (const char *devnam, SHARP_Device ** devp)
}
}
sanei_scsi_close (fd);
-
+
dev->info.threshold_range.min = 1;
dev->info.threshold_range.max = 255;
dev->info.threshold_range.quant = 0;
@@ -1616,12 +1616,12 @@ attach (const char *devnam, SHARP_Device ** devp)
}
/* Enabling / disabling of gamma options.
- Depends on many user settable options, so lets put it into
+ Depends on many user settable options, so lets put it into
one function to be called by init_options and by sane_control_option
*/
#ifdef USE_CUSTOM_GAMMA
-static void
+static void
set_gamma_caps(SHARP_Scanner *s)
{
/* neither fixed nor custom gamma for line art modes */
@@ -1761,11 +1761,11 @@ clip_value (const SANE_Option_Descriptor * opt, void * value)
/* make sure that enough memory is allocated for each string,
so that the strcpy in sane_control_option / set value cannot
- write behind the end of the allocated memory.
+ write behind the end of the allocated memory.
*/
static SANE_Status
-init_string_option(SHARP_Scanner *s, SANE_String_Const name,
- SANE_String_Const title, SANE_String_Const desc,
+init_string_option(SHARP_Scanner *s, SANE_String_Const name,
+ SANE_String_Const title, SANE_String_Const desc,
const SANE_String_Const *string_list, int option, int default_index)
{
int i;
@@ -1869,7 +1869,7 @@ init_options (SHARP_Scanner * s)
sourcename_index = i;
s->dev->info.scansources[i++] = use_adf;
}
- else
+ else
{
if (default_source == SCAN_WITH_ADF)
default_source = SCAN_SIMPLE;
@@ -1893,7 +1893,7 @@ init_options (SHARP_Scanner * s)
sourcename_index = i;
s->dev->info.scansources[i++] = use_simple;
s->dev->info.scansources[i] = 0;
-
+
#if 0
s->opt[OPT_SCANSOURCE].name = SANE_NAME_SCAN_SOURCE;
s->opt[OPT_SCANSOURCE].title = SANE_TITLE_SCAN_SOURCE;
@@ -1927,7 +1927,7 @@ init_options (SHARP_Scanner * s)
s->opt[OPT_PAPER].constraint.string_list = paper_list_jx610;
s->val[OPT_PAPER].s = strdup (paper_list_jx610[1]);
}
- else
+ else
{
s->opt[OPT_PAPER].size = max_string_size (paper_list_jx330);
s->opt[OPT_PAPER].constraint_type = SANE_CONSTRAINT_STRING_LIST;
@@ -1975,10 +1975,10 @@ init_options (SHARP_Scanner * s)
#ifdef USE_RESOLUTION_LIST
if (s->dev->sensedat.model == JX610 || s->dev->sensedat.model == JX330 ||
s->dev->sensedat.model == JX350 || s->dev->sensedat.model == JX320)
- init_string_option(s, "ResolutionList", "ResolutionList", "ResolutionList",
+ init_string_option(s, "ResolutionList", "ResolutionList", "ResolutionList",
resolution_list_jx610, OPT_RESOLUTION_LIST, RESOLUTION_MAX_JX610);
else
- init_string_option(s, "ResolutionList", "ResolutionList", "ResolutionList",
+ init_string_option(s, "ResolutionList", "ResolutionList", "ResolutionList",
resolution_list_jx250, OPT_RESOLUTION_LIST, RESOLUTION_MAX_JX250);
#endif
/* x resolution */
@@ -2050,7 +2050,7 @@ init_options (SHARP_Scanner * s)
s->opt[OPT_BR_Y].unit = SANE_UNIT_MM;
s->opt[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE;
s->opt[OPT_BR_Y].constraint.range = &s->dev->info.br_y_ranges[default_source];
- /* The FSU for JX250 allows a maximum scan length of 11.5 inch,
+ /* The FSU for JX250 allows a maximum scan length of 11.5 inch,
which is less than the default value of 297 mm
*/
scalar = s->dev->info.y_default;
@@ -2097,7 +2097,7 @@ init_options (SHARP_Scanner * s)
#ifdef USE_COLOR_THRESHOLD
s->opt[OPT_THRESHOLD_R].name = SANE_NAME_THRESHOLD "-red";
/* xxx the titles and decriptions are confusing:
- "set white point (red)"
+ "set white point (red)"
Any idea? maybe "threshold to get the red component on"
*/
s->opt[OPT_THRESHOLD_R].title = SANE_TITLE_THRESHOLD " (red)";
@@ -2153,7 +2153,7 @@ init_options (SHARP_Scanner * s)
s->opt[OPT_PREVIEW].type = SANE_TYPE_BOOL;
s->opt[OPT_PREVIEW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
s->val[OPT_PREVIEW].w = SANE_FALSE;
-
+
#ifdef USE_CUSTOM_GAMMA
/* custom-gamma table */
@@ -2241,14 +2241,14 @@ do_cancel (SHARP_Scanner * s)
DBG(11, "stopping reader process\n");
s->rdr_ctl->cancel = 1;
- while(reader_running(s) && count < 100)
+ while(reader_running(s) && count < 100)
{
usleep(100000);
count++;
};
if (reader_running(s))
{
- /* be brutal...
+ /* be brutal...
!! The waiting time of 10 seconds might be far too short
!! if the resolution limit of the JX 250 is increased to
!! to more than 400 dpi: for these (interpolated) resolutions,
@@ -2299,13 +2299,13 @@ do_cancel (SHARP_Scanner * s)
static SHARP_New_Device *new_devs = 0;
static SHARP_New_Device *new_dev_pool = 0;
-static SANE_Status
+static SANE_Status
attach_and_list(const char *devnam)
{
SANE_Status res;
SHARP_Device *devp;
SHARP_New_Device *np;
-
+
res = attach(devnam, &devp);
if (res == SANE_STATUS_GOOD)
{
@@ -2332,10 +2332,10 @@ static int bufsize[2] = {DEFAULT_BUFSIZE, DEFAULT_BUFSIZE};
static int queued_reads[2] = {DEFAULT_QUEUED_READS, DEFAULT_QUEUED_READS};
static int stop_on_fsu_error[2] = {COMPLAIN_ON_FSU_ERROR | COMPLAIN_ON_ADF_ERROR,
COMPLAIN_ON_FSU_ERROR | COMPLAIN_ON_ADF_ERROR};
-static int default_scan_mode[2] = {-1, -1};
+static int default_scan_mode[2] = {-1, -1};
SANE_Status
-sane_init (SANE_Int * version_code,
+sane_init (SANE_Int * version_code,
SANE_Auth_Callback __sane_unused__ authorize)
{
char devnam[PATH_MAX] = "/dev/scanner";
@@ -2347,7 +2347,7 @@ sane_init (SANE_Int * version_code,
int opt_index = 0;
int linecount = 0;
#if 1
- SHARP_Device sd;
+ SHARP_Device sd;
SHARP_Device *dp = &sd;
#else
SHARP_Device *dp;
@@ -2443,7 +2443,7 @@ sane_init (SANE_Int * version_code,
linecount);
DBG(1, "%s\n", line);
}
- else
+ else
queued_reads[opt_index] = i;
}
else if (strcmp(word, "stop_on_fsu_error") == 0)
@@ -2458,8 +2458,8 @@ sane_init (SANE_Int * version_code,
linecount);
DBG(1, "%s\n", line);
}
- else
- stop_on_fsu_error[opt_index]
+ else
+ stop_on_fsu_error[opt_index]
= i ? COMPLAIN_ON_FSU_ERROR : 0;
}
else if (strcmp(word, "default_scan_source") == 0)
@@ -2493,7 +2493,7 @@ sane_init (SANE_Int * version_code,
{
while (new_devs)
{
- if (buffers[1] >= 2)
+ if (buffers[1] >= 2)
new_devs->dev->info.buffers = buffers[1];
else
new_devs->dev->info.buffers = 2;
@@ -2529,7 +2529,7 @@ sane_init (SANE_Int * version_code,
while (new_devs)
{
- if (buffers[1] >= 2)
+ if (buffers[1] >= 2)
new_devs->dev->info.buffers = buffers[1];
else
new_devs->dev->info.buffers = 2;
@@ -2574,7 +2574,7 @@ sane_exit (void)
free ((void *) dev->sane.model);
free (dev);
}
-
+
if (devlist)
free(devlist);
devlist = 0;
@@ -2653,8 +2653,8 @@ sane_open (SANE_String_Const devnam, SANE_Handle * handle)
s->fd = -1;
s->dev = dev;
-
- s->buffer = 0;
+
+ s->buffer = 0;
#ifdef USE_CUSTOM_GAMMA
for (i = 0; i < 4; ++i)
for (j = 0; j < 256; ++j)
@@ -2827,7 +2827,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*info |= SANE_INFO_RELOAD_PARAMS;
case OPT_NUM_OPTS:
case OPT_THRESHOLD:
- /* xxx theoretically, we could use OPT_THRESHOLD in
+ /* xxx theoretically, we could use OPT_THRESHOLD in
bi-level color mode to adjust all three other
threshold together. But this would require to set
the bit SANE_INFO_RELOAD_OPTIONS in *info, and that
@@ -2879,8 +2879,8 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
#endif
s->opt[OPT_HALFTONE].cap |= SANE_CAP_INACTIVE;
}
-
- if ( strcmp (val, M_LINEART) == 0
+
+ if ( strcmp (val, M_LINEART) == 0
|| strcmp (val, M_GRAY) == 0)
{
s->opt[OPT_LIGHTCOLOR].cap &= ~SANE_CAP_INACTIVE;
@@ -2889,7 +2889,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
{
s->opt[OPT_LIGHTCOLOR].cap |= SANE_CAP_INACTIVE;
}
-
+
strcpy(s->val[option].s, val);
#ifdef USE_CUSTOM_GAMMA
set_gamma_caps(s);
@@ -2926,19 +2926,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
else
range_index = SCAN_SIMPLE;
- s->opt[OPT_TL_X].constraint.range
+ s->opt[OPT_TL_X].constraint.range
= &s->dev->info.tl_x_ranges[range_index];
clip_value (&s->opt[OPT_TL_X], &s->val[OPT_TL_X].w);
- s->opt[OPT_TL_Y].constraint.range
+ s->opt[OPT_TL_Y].constraint.range
= &s->dev->info.tl_y_ranges[range_index];
clip_value (&s->opt[OPT_TL_Y], &s->val[OPT_TL_Y].w);
- s->opt[OPT_BR_X].constraint.range
+ s->opt[OPT_BR_X].constraint.range
= &s->dev->info.br_x_ranges[range_index];
clip_value (&s->opt[OPT_BR_X], &s->val[OPT_BR_X].w);
- s->opt[OPT_BR_Y].constraint.range
+ s->opt[OPT_BR_Y].constraint.range
= &s->dev->info.br_y_ranges[range_index];
clip_value (&s->opt[OPT_BR_Y], &s->val[OPT_BR_Y].w);
@@ -2994,11 +2994,11 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
if (info)
*info |= SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
for (i = 0; s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]; i++) {
- if (strcmp (val,
+ if (strcmp (val,
s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]) == 0){
- s->val[OPT_X_RESOLUTION].w
+ s->val[OPT_X_RESOLUTION].w
= atoi(s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]);
- s->val[OPT_Y_RESOLUTION].w
+ s->val[OPT_Y_RESOLUTION].w
= atoi(s->opt[OPT_RESOLUTION_LIST].constraint.string_list[i]);
if (info)
*info |= SANE_INFO_RELOAD_PARAMS;
@@ -3055,7 +3055,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
scanning starts. */
memset (&s->params, 0, sizeof (s->params));
- width = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_X].w)
+ width = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_X].w)
- SANE_UNFIX(s->val[OPT_TL_X].w),
s->dev->info.mud);
length = MM_TO_PIX( SANE_UNFIX(s->val[OPT_BR_Y].w)
@@ -3077,14 +3077,14 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
/* if async reads are used, )ie. if USE_FORK is defined,
this command may only be issued immediately after the
- "start scan" command. Later calls will confuse the
+ "start scan" command. Later calls will confuse the
read queue.
*/
if (!s->get_params_called)
{
wait_ready(s->fd);
status = sanei_scsi_cmd (s->fd, cmd, sizeof (cmd), buf, &len);
-
+
if (status != SANE_STATUS_GOOD)
{
do_cancel(s);
@@ -3142,7 +3142,7 @@ sprint_gamma(Option_Value val, SANE_Byte *dst)
{
int i;
SANE_Byte *p = dst;
-
+
p += sprintf((char *) p, "%i", val.wa[0] > 255 ? 255 : val.wa[0]);
/* val.wa[i] is over 255, so val.wa[i] is limitied to 255 */
for (i = 1; i < 256; i++)
@@ -3155,17 +3155,17 @@ send_ascii_gamma_tables (SHARP_Scanner *s)
{
SANE_Status status;
int i;
-
+
DBG(11, "<< send_ascii_gamma_tables ");
-
+
/* we need: 4 bytes for each gamma value (3 digits + delimiter)
+ 10 bytes for the command header
i.e. 4 * 4 * 256 + 10 = 4106 bytes
*/
-
+
if (s->dev->info.bufsize < 4106)
return SANE_STATUS_NO_MEM;
-
+
memset(s->buffer, 0, 4106);
i = sprint_gamma(s->val[OPT_GAMMA_VECTOR_R], &s->buffer[10]);
@@ -3175,19 +3175,19 @@ send_ascii_gamma_tables (SHARP_Scanner *s)
i += sprint_gamma(s->val[OPT_GAMMA_VECTOR_B], &s->buffer[10+i]);
s->buffer[10+i++] = '/';
i += sprint_gamma(s->val[OPT_GAMMA_VECTOR], &s->buffer[10+i]);
-
+
DBG(11, "%s\n", &s->buffer[10]);
s->buffer[0] = SEND;
s->buffer[2] = 0x03;
s->buffer[7] = i >> 8;
s->buffer[8] = i & 0xff;
-
+
wait_ready(s->fd);
status = sanei_scsi_cmd (s->fd, s->buffer, i+10, 0, 0);
DBG(11, ">>\n");
-
+
return status;
}
#endif
@@ -3197,29 +3197,29 @@ send_binary_g_table(SHARP_Scanner *s, SANE_Word *a, int dtq)
{
SANE_Status status;
int i;
-
+
DBG(11, "<< send_binary_g_table\n");
memset(s->buffer, 0, 522);
-
+
s->buffer[0] = SEND;
s->buffer[2] = 0x03;
s->buffer[5] = dtq;
s->buffer[7] = 2;
s->buffer[8] = 0;
-
+
for (i = 0; i < 256; i++)
{
s->buffer[2*i+11] = a[i] > 255 ? 255 : a[i];
}
-
+
for (i = 0; i < 256; i += 16)
{
DBG(11, "%02x %02x %02x %02x %02x %02x %02x %02x "
"%02x %02x %02x %02x %02x %02x %02x %02x\n",
- a[i ], a[i+1], a[i+2], a[i+3],
+ a[i ], a[i+1], a[i+2], a[i+3],
a[i+4], a[i+5], a[i+6], a[i+7],
- a[i+8], a[i+9], a[i+10], a[i+11],
+ a[i+8], a[i+9], a[i+10], a[i+11],
a[i+12], a[i+13], a[i+14], a[i+15]);
}
@@ -3236,19 +3236,19 @@ static SANE_Status
send_binary_gamma_tables (SHARP_Scanner *s)
{
SANE_Status status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR].wa, 0x10);
if (status != SANE_STATUS_GOOD)
return status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_R].wa, 0x11);
if (status != SANE_STATUS_GOOD)
return status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_G].wa, 0x12);
if (status != SANE_STATUS_GOOD)
return status;
-
+
status = send_binary_g_table(s, s->val[OPT_GAMMA_VECTOR_B].wa, 0x13);
return status;
@@ -3265,7 +3265,7 @@ send_gamma_tables (SHARP_Scanner *s)
{
return send_binary_gamma_tables(s);
}
-
+
}
#endif
@@ -3276,19 +3276,19 @@ send_threshold_data(SHARP_Scanner *s)
SANE_Status status;
SANE_Byte cmd[26] = {SEND, 0, 0x82, 0, 0, 0, 0, 0, 0, 0};
int len;
-
+
memset(cmd, 0, sizeof(cmd));
- /* maximum string length: 3 bytes for each number (they are
+ /* maximum string length: 3 bytes for each number (they are
restricted to the range 0..255), 3 '/' and the null-byte,
total: 16 bytes.
*/
- len = sprintf((char *) &cmd[10], "%i/%i/%i/%i",
+ len = sprintf((char *) &cmd[10], "%i/%i/%i/%i",
s->val[OPT_THRESHOLD_R].w,
s->val[OPT_THRESHOLD_G].w,
s->val[OPT_THRESHOLD_B].w,
s->val[OPT_THRESHOLD].w);
cmd[8] = len;
-
+
wait_ready(s->fd);
status = sanei_scsi_cmd(s->fd, cmd, len + 10, 0, 0);
return status;
@@ -3315,7 +3315,7 @@ sane_start (SANE_Handle handle)
if (status != SANE_STATUS_GOOD)
return status;
- s->dev->sensedat.complain_on_errors
+ s->dev->sensedat.complain_on_errors
= COMPLAIN_ON_ADF_ERROR | s->dev->info.complain_on_errors;
#ifdef HAVE_SANEI_SCSI_OPEN_EXTENDED
@@ -3324,11 +3324,11 @@ sane_start (SANE_Handle handle)
s->dev->info.bufsize = 32 * 1024;
{
int bsize = s->dev->info.bufsize;
- status = sanei_scsi_open_extended (s->dev->sane.name, &s->fd,
+ status = sanei_scsi_open_extended (s->dev->sane.name, &s->fd,
&sense_handler, &s->dev->sensedat, &bsize);
s->dev->info.bufsize = bsize;
}
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "open of %s failed: %s\n",
@@ -3337,10 +3337,10 @@ sane_start (SANE_Handle handle)
}
/* make sure that we got at least 32 kB. Even then, the scan will be
- awfully slow.
-
+ awfully slow.
+
NOTE: If you need to decrease this value, remember that s->buffer
- is used in send_ascii_gamma_tables (JX330/JX610) and in
+ is used in send_ascii_gamma_tables (JX330/JX610) and in
send_binary_g_table (JX250/JX350). send_ascii_gamma_tables needs 4106
bytes, and send_binary_g_table needs 522 bytes.
*/
@@ -3351,13 +3351,13 @@ sane_start (SANE_Handle handle)
return SANE_STATUS_NO_MEM;
}
#else
- status = sanei_scsi_open(s->dev->sane.name, &s->fd, &sense_handler,
+ status = sanei_scsi_open(s->dev->sane.name, &s->fd, &sense_handler,
&s->dev->sensedat);
if (s->dev->info.wanted_bufsize < sanei_scsi_max_request_size)
s->dev->info.bufsize = s->dev->info.wanted_bufsize;
else
s->dev->info.bufsize = sanei_scsi_max_request_size;
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "open of %s failed: %s\n",
@@ -3415,7 +3415,7 @@ sane_start (SANE_Handle handle)
DBG (5, "start: TEST_UNIT_READY\n");
status = test_unit_ready (s->fd);
-
+
if (status != SANE_STATUS_GOOD)
{
DBG (1, "TEST UNIT READY failed: %s\n", sane_strstatus (status));
@@ -3462,7 +3462,7 @@ sane_start (SANE_Handle handle)
s->uly = MM_TO_PIX(SANE_UNFIX(s->val[OPT_TL_Y].w), s->dev->info.mud);
s->threshold = s->val[OPT_THRESHOLD].w;
s->bpp = s->params.depth;
-
+
s->adf_fsu_mode = SCAN_SIMPLE; /* default: scan without ADF and FSU */
#ifdef ALLOW_AUTO_SELECT_ADF
if (strcmp (adf_fsu, use_auto) == 0)
@@ -3565,7 +3565,7 @@ sane_start (SANE_Handle handle)
DBG (11, "EDGE EMPHASIS BLUR\n");
s->edge = 3;
}
-
+
s->lightcolor = 3;
if (strcmp(lightcolor, LIGHT_GREEN) == 0)
s->lightcolor = 0;
@@ -3592,7 +3592,7 @@ sane_start (SANE_Handle handle)
memset (&m_subdev, 0, sizeof (m_subdev));
buf_size = sizeof (m_subdev);
status = mode_sense (s->fd, &m_subdev, &buf_size, 0x20);
- DBG(11, "mode sense result a_mode: %x f_mode: %x\n",
+ DBG(11, "mode sense result a_mode: %x f_mode: %x\n",
m_subdev.a_mode_type, m_subdev.f_mode_type);
if (status != SANE_STATUS_GOOD)
{
@@ -3601,7 +3601,7 @@ sane_start (SANE_Handle handle)
s->fd = -1;
return (status);
}
- if (s->adf_fsu_mode == SCAN_WITH_ADF)
+ if (s->adf_fsu_mode == SCAN_WITH_ADF)
s->adf_scan = 1;
#ifdef ALLOW_AUTO_SELECT_ADF
else if (s->adf_fsu_mode == SCAN_ADF_FSU_AUTO)
@@ -3612,7 +3612,7 @@ sane_start (SANE_Handle handle)
#endif
}
-
+
#ifdef USE_CUSTOM_GAMMA
if (s->val[OPT_CUSTOM_GAMMA].w == SANE_FALSE)
{
@@ -3639,7 +3639,7 @@ sane_start (SANE_Handle handle)
}
else
{
- /* the JX250 does not support the "fixed gamma selection",
+ /* the JX250 does not support the "fixed gamma selection",
therefore, lets calculate & send gamma values
*/
int i;
@@ -3684,7 +3684,7 @@ sane_start (SANE_Handle handle)
s->fd = -1;
return (status);
}
-
+
#ifdef USE_COLOR_THRESHOLD
status = send_threshold_data(s);
if (status != SANE_STATUS_GOOD)
@@ -3696,9 +3696,9 @@ sane_start (SANE_Handle handle)
}
#endif
}
-
+
memset (&wp, 0, sizeof (wp));
- /* every Sharp scanner seems to have a different
+ /* every Sharp scanner seems to have a different
window descriptor block...
*/
if ( s->dev->sensedat.model == JX610
@@ -3714,7 +3714,7 @@ sane_start (SANE_Handle handle)
{
buf_size = sizeof (WDB) + sizeof(WDBX330) + sizeof(WDBX250);
}
-
+
wp.wpdh.wdl[0] = buf_size >> 8;
wp.wpdh.wdl[1] = buf_size;
wp.wdb.x_res[0] = s->xres >> 8;
@@ -3780,7 +3780,7 @@ sane_start (SANE_Handle handle)
DBG (5, "bpp=%d\n", wp.wdb.bpp);
DBG (5, "rif_padding=%d\n", wp.wdb.rif_padding);
DBG (5, "eletu=%d\n", wp.wdb.eletu);
-
+
#if 0
{
unsigned char *p = (unsigned char*) &wp.wdb;
@@ -3890,7 +3890,7 @@ sane_start (SANE_Handle handle)
#ifdef USE_FORK
{
size_t i;
- for (i = 0; i < s->dev->info.buffers; i++)
+ for (i = 0; i < s->dev->info.buffers; i++)
s->rdr_ctl->buf_ctl[i].shm_status = SHM_EMPTY;
s->read_buff = 0;
s->rdr_ctl->cancel = 0;
@@ -3906,7 +3906,7 @@ sane_start (SANE_Handle handle)
s->reader_pid);
}
#endif
- if (s->reader_pid == 0)
+ if (s->reader_pid == 0)
{
sigset_t ignore_set;
struct SIGACTION act;
@@ -3927,9 +3927,9 @@ sane_start (SANE_Handle handle)
do_cancel(s);
return SANE_STATUS_NO_MEM;
}
-
+
#endif /* USE_FORK */
-
+
DBG (1, "%d pixels per line, %d bytes, %d lines high, total %lu bytes, "
"dpi=%d\n", s->params.pixels_per_line, s->params.bytes_per_line,
@@ -3939,7 +3939,7 @@ sane_start (SANE_Handle handle)
s->buf_used = 0;
s->buf_pos = 0;
- if (s->cancel == SANE_TRUE)
+ if (s->cancel == SANE_TRUE)
{
do_cancel(s);
DBG (10, ">>\n");
@@ -4008,14 +4008,14 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG (10, "<< sane_read_shuffled ");
*len = 0;
- if (s->bytes_to_read == 0 && s->buf_pos == s->buf_used)
+ if (s->bytes_to_read == 0 && s->buf_pos == s->buf_used)
{
do_cancel (s);
DBG (10, ">>\n");
return (SANE_STATUS_EOF);
}
-
- if (!s->scanning)
+
+ if (!s->scanning)
{
DBG (10, ">>\n");
return(do_cancel(s));
@@ -4026,14 +4026,14 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
transfer = s->buf_used - s->buf_pos;
if (transfer > max_len)
transfer = max_len;
-
+
memcpy(dst_buf, &(s->buffer[s->buf_pos]), transfer);
s->buf_pos += transfer;
max_len -= transfer;
*len = transfer;
}
- while (max_len > 0 && s->bytes_to_read > 0)
+ while (max_len > 0 && s->bytes_to_read > 0)
{
if (eight_bit_data)
{
@@ -4060,7 +4060,7 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
start_input = s->dev->info.bufsize - nread;
}
ntest = nread;
-
+
#ifdef USE_FORK
status = read_data (s, &(s->buffer[start_input]), &nread);
#else
@@ -4073,8 +4073,8 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG (10, ">>\n");
return (SANE_STATUS_IO_ERROR);
}
-
- if (nread != ntest)
+
+ if (nread != ntest)
{
/* if this happens, something is wrong in the input buffer
management...
@@ -4082,8 +4082,8 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
DBG(1, "Warning: could not read an integral number of scan lines\n");
DBG(1, " image will be scrambled\n");
}
-
-
+
+
s->buf_used = max_line * s->params.bytes_per_line;
s->buf_pos = 0;
s->bytes_to_read -= nread;
@@ -4125,12 +4125,12 @@ sane_read_shuffled (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
}
}
}
-
+
transfer = max_len;
if (transfer > s->buf_used)
transfer = s->buf_used;
memcpy(&(dst_buf[*len]), s->buffer, transfer);
-
+
max_len -= transfer;
s->buf_pos += transfer;
*len += transfer;
@@ -4150,13 +4150,13 @@ sane_read (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
SANE_Status status;
s->busy = SANE_TRUE;
- if (s->cancel == SANE_TRUE)
+ if (s->cancel == SANE_TRUE)
{
do_cancel(s);
*len = 0;
return (SANE_STATUS_CANCELLED);
}
-
+
/* RGB scans with a JX 250 and bi-level color scans
must be handled differently: */
if (s->image_composition <= 2)
@@ -4167,7 +4167,7 @@ sane_read (SANE_Handle handle, SANE_Byte *dst_buf, SANE_Int max_len,
status = sane_read_direct(handle, dst_buf, max_len, len);
else
status = sane_read_shuffled(handle, dst_buf, max_len, len, 1);
-
+
s->busy = SANE_FALSE;
if (s->cancel == SANE_TRUE)
{
@@ -4192,7 +4192,7 @@ sane_cancel (SANE_Handle handle)
}
SANE_Status
-sane_set_io_mode (SANE_Handle __sane_unused__ handle,
+sane_set_io_mode (SANE_Handle __sane_unused__ handle,
SANE_Bool __sane_unused__ non_blocking)
{
DBG (10, "<< sane_set_io_mode");
@@ -4202,7 +4202,7 @@ sane_set_io_mode (SANE_Handle __sane_unused__ handle,
}
SANE_Status
-sane_get_select_fd (SANE_Handle __sane_unused__ handle,
+sane_get_select_fd (SANE_Handle __sane_unused__ handle,
SANE_Int __sane_unused__ * fd)
{
DBG (10, "<< sane_get_select_fd");
diff --git a/backend/sharp.conf.in b/backend/sharp.conf.in
index 0541240..eef72c4 100644
--- a/backend/sharp.conf.in
+++ b/backend/sharp.conf.in
@@ -9,7 +9,7 @@
# option readqueue: number of queued read requests. This is
# with the current SANE version (1.01) only useful for
# Linux, since queued read requests are not supported
-# for other operating systems.
+# for other operating systems.
#
# For Linux, a value of 2 is recommended, at least if a
# JX-250 is used. Bigger values are only a waste of memory.
@@ -22,8 +22,8 @@
#
# option default_scan_source: valid values are "auto", "fsu", "adf"
# and "flatbed". For "auto", the backend will enable an ADF or
-# or FSU, if installed.
-#
+# or FSU, if installed.
+#
# global options:
option buffers 4
option buffersize 131072
diff --git a/backend/sharp.h b/backend/sharp.h
index 6797224..c5dad27 100644
--- a/backend/sharp.h
+++ b/backend/sharp.h
@@ -47,21 +47,21 @@
/* default values for configurable options.
Though these options are only meaningful if USE_FORK is defined,
- they are
+ they are
DEFAULT_BUFFERS: number of buffers allocated as shared memory
for the data transfer from reader_process to
read_data. The minimum value is 2
DEFAULT_BUFSIZE: default size of one buffer. Must be greater
than zero.
- DEFAULT_QUEUED_READS: number of read requests queued by
+ DEFAULT_QUEUED_READS: number of read requests queued by
sanei_scsi_req_enter. Since queued read requests
- are currently only supported for Linux and
+ are currently only supported for Linux and
DomainOS, this value should automatically be set
dependent on the target OS...
For Linux, 2 is the optimum; for DomainOS, I
don't have any recommendation; other OS
should use the value zero.
-
+
The value for DEFAULT_BUFSIZE is probably too Linux-oriented...
*/
@@ -110,7 +110,7 @@ typedef enum
OPT_LIGHTCOLOR,
OPT_PREVIEW,
-#ifdef USE_CUSTOM_GAMMA
+#ifdef USE_CUSTOM_GAMMA
OPT_GAMMA_VECTOR,
OPT_GAMMA_VECTOR_R,
OPT_GAMMA_VECTOR_G,
@@ -123,7 +123,7 @@ SHARP_Option;
#ifdef USE_FORK
-/* status defines for a buffer:
+/* status defines for a buffer:
buffer not used / read request queued / buffer contains data
*/
#define SHM_EMPTY 0
@@ -150,7 +150,7 @@ typedef struct SHARP_rdr_ctl
SHARP_rdr_ctl;
#endif /* USE_FORK */
-typedef enum
+typedef enum
{
/* JX250, JX330, JX350, JX610 are used as array indices, so the
corresponding numbers should start at 0
@@ -187,8 +187,8 @@ typedef struct SHARP_Info
int wanted_bufsize;
size_t queued_reads;
int complain_on_errors;
- /* default scan mode:
- -1 -> "automatic": Use the ADF, if installed,
+ /* default scan mode:
+ -1 -> "automatic": Use the ADF, if installed,
else use the FSU, if installed.
or: SCAN_ADF, SCAN_FSU, SCAN_SIMPLE
*/
@@ -201,14 +201,14 @@ SHARP_Info;
typedef struct SHARP_Sense_Data
{
SHARP_Model model;
- /* flag, if conditions like "paper jam" or "cover open"
+ /* flag, if conditions like "paper jam" or "cover open"
are considered as an error. Should be 0 for attach, else
a frontend might refuse to start, if the scanner returns
these errors.
*/
int complain_on_errors;
/* Linux returns only 16 bytes of sense data... */
- u_char sb[16];
+ u_char sb[16];
}
SHARP_Sense_Data;
@@ -222,7 +222,7 @@ typedef struct SHARP_Device
}
SHARP_Device;
-typedef struct SHARP_New_Device
+typedef struct SHARP_New_Device
{
struct SHARP_Device *dev;
struct SHARP_New_Device *next;
@@ -292,7 +292,7 @@ typedef struct WPDH
{
u_char wpdh[6];
u_char wdl[2];
-}
+}
WPDH;
typedef struct WDB
@@ -325,7 +325,7 @@ typedef struct WDB
SANE_Byte lightness_g[2];
SANE_Byte lightness_b[2];
SANE_Byte lightness_bw[2];
-
+
}
WDB;
diff --git a/backend/sm3600-color.c b/backend/sm3600-color.c
index 9b3c540..2e42ada 100644
--- a/backend/sm3600-color.c
+++ b/backend/sm3600-color.c
@@ -171,7 +171,7 @@ TState StartScanColor(TInstance *this)
this->state.cyTotalPath =
this->param.y/2-(2*this->state.ySensorSkew)*600/this->param.res;
DoJog(this,this->state.cyTotalPath); INST_ASSERT();
- this->state.cyTotalPath +=
+ this->state.cyTotalPath +=
(this->state.cyPixel+2*this->state.ySensorSkew)
*600/this->param.res; /* for jogging back */
@@ -214,7 +214,7 @@ TState StartScanColor(TInstance *this)
RegWrite(this,R_SLEN, 2,
this->state.cyWindow+
(2*this->state.ySensorSkew)*600/this->param.res);
- this->state.szOrder=ORDER_BRG;
+ this->state.szOrder=ORDER_BRG;
RegWrite(this,R_CCAL, 3, this->calibration.rgbBias); INST_ASSERT(); /* 0xBBGGRR */
switch (this->param.res)
{
@@ -294,7 +294,7 @@ TState StartScanColor(TInstance *this)
}
/* calculate and prepare intermediate line transfer buffer */
-
+
this->state.cchLineOut=3*this->state.cxPixel;
this->state.pchLineOut = malloc(this->state.cchLineOut);
if (!this->state.pchLineOut)
@@ -310,4 +310,3 @@ TState StartScanColor(TInstance *this)
this->state.bScanning = true;
return SANE_STATUS_GOOD;
}
-
diff --git a/backend/sm3600-gray.c b/backend/sm3600-gray.c
index d9fda86..c5efe55 100644
--- a/backend/sm3600-gray.c
+++ b/backend/sm3600-gray.c
@@ -204,7 +204,7 @@ static TState ReadNextGrayLine(PTInstance this)
{
int iWrite;
int iDot;
- unsigned char chBits;
+ unsigned char chBits;
int iRead; /* read position in raw line */
int nInterpolator;
@@ -328,7 +328,7 @@ TState StartScanGray(TInstance *this)
DoJog(this,this->state.cyTotalPath);
INST_ASSERT();
this->state.cyTotalPath += this->param.cy/2; /* for jogging back */
-
+
/*
regular scan is asynchronously, that is,
the scanning is issued, and the driver does bulk reads,
@@ -370,7 +370,7 @@ TState StartScanGray(TInstance *this)
this->state.cchLineOut=(this->mode==gray)
? this->state.cxPixel
: (this->state.cxPixel+7)/8;
-
+
this->state.pchLineOut = malloc(this->state.cchLineOut);
if (!this->state.pchLineOut)
return FreeState(this,SetError(this,
@@ -386,4 +386,3 @@ TState StartScanGray(TInstance *this)
this->state.bScanning = true;
return SANE_STATUS_GOOD;
}
-
diff --git a/backend/sm3600-homerun.c b/backend/sm3600-homerun.c
index fe647ef..b77a76e 100644
--- a/backend/sm3600-homerun.c
+++ b/backend/sm3600-homerun.c
@@ -67,7 +67,7 @@ typedef enum { ltHome, ltUnknown, ltBed, ltError } TLineType;
static unsigned char auchRegsSingleLine[]={
0x00 /*0x01*/, 0x00 /*0x02*/, 0x3F /*0x03*/,
- 0xB4 /*!!0x04!!*/, 0x14 /*!!0x05!!*/, 0,0,
+ 0xB4 /*!!0x04!!*/, 0x14 /*!!0x05!!*/, 0,0,
0x00 /*0x08*/, 0x3F /*!!0x09!!*/,
1,0,
0x6D /*0x0C*/,
@@ -119,7 +119,7 @@ static TLineType GetLineType(TInstance *this)
RegWrite(this,R_CTL, 1, 0x59); /* #2496[062.5] */
RegWrite(this,R_CTL, 1, 0xD9); /* #2497[062.5] */
i=WaitWhileScanning(this,5); if (i) return i;
-
+
cchBulk=MAX_PIXEL_PER_SCANLINE;
/*
cchBulk=RegRead(this,R_STAT, 2);
@@ -298,7 +298,7 @@ TState DoCalibration(TInstance *this)
case sm3750:
default:
yStart=100; /* 54 is perimeter */
- cStripes=MAX_CALIB_STRIPES;
+ cStripes=MAX_CALIB_STRIPES;
cyGap=10;
break;
} /* switch */
@@ -359,7 +359,7 @@ TState DoCalibration(TInstance *this)
this->calibration.achStripeY[i]=(unsigned char)
((2*(int)auchHanning[i]+auchHanning[i-1]+auchHanning[i+1])/4);
#endif
-
+
DoJog(this,-yStart-cStripes*cyGap);
INST_ASSERT();
this->calibration.bCalibrated=true;
@@ -496,4 +496,3 @@ TState DoJog(TInstance *this, int nDistance)
usleep(100);
return WaitWhileBusy(this,1000); /* thanks Mattias Ellert */
}
-
diff --git a/backend/sm3600-scanusb.c b/backend/sm3600-scanusb.c
index 3ca9a8a..7ae90d3 100644
--- a/backend/sm3600-scanusb.c
+++ b/backend/sm3600-scanusb.c
@@ -61,7 +61,7 @@ TransferControlMsg()
static int TransferControlMsg(TInstance *this,
int nReqType,
- int nRequest,
+ int nRequest,
int nValue,
int nIndex,
void *pBuffer,
@@ -302,7 +302,7 @@ int BulkRead(TInstance *this, FILE *fhOut, unsigned int cchBulk)
{
int cchChunk;
int cchReal;
-
+
cchChunk=cchBulk;
if (cchChunk>0x1000)
cchChunk=0x1000;
@@ -366,7 +366,7 @@ int BulkReadBuffer(TInstance *this,
{
int cchChunk;
int cchReal;
-
+
cchChunk=cchBulk;
if (cchChunk>0x1000)
cchChunk=0x1000;
@@ -391,7 +391,7 @@ int BulkReadBuffer(TInstance *this,
);
}
dprintf(DEBUG_COMM,"writing %d bytes\n",cchRead);
-
+
if (!rc && puchBufferOut)
memcpy(puchBufferOut,pchBuffer,cchRead);
free(pchBuffer);
@@ -440,4 +440,3 @@ unsigned int RegRead(TInstance *this, int iRegister, int cch)
SetError(this,SANE_STATUS_IO_ERROR,"error during register read");
return 0;
}
-
diff --git a/backend/sm3600-scanutil.c b/backend/sm3600-scanutil.c
index 62ba0f1..022984e 100644
--- a/backend/sm3600-scanutil.c
+++ b/backend/sm3600-scanutil.c
@@ -97,7 +97,7 @@ int SetError(TInstance *this, int nError, const char *szFormat, ...)
if (this->nErrorState) return 0; /* do not overwrite error state */
this->nErrorState=nError;
this->szErrorReason=malloc(500);
-
+
if (szFormat!=NULL && this->szErrorReason)
{
va_start(ap,szFormat);
@@ -200,7 +200,7 @@ TState CancelScan(TInstance *this)
usleep(200);
DoReset(this);
EndScan(this); /* and step back! */
-
+
DBG(DEBUG_JUNK,"cs4: %d\n",(int)this->nErrorState);
bCanceled=this->state.bCanceled;
this->state.bCanceled=false; /* re-enable Origination! */
diff --git a/backend/sm3600.c b/backend/sm3600.c
index 908e8be..6e411c3 100644
--- a/backend/sm3600.c
+++ b/backend/sm3600.c
@@ -180,7 +180,7 @@ InitOptions(TInstance *this)
Some hints:
*every* field needs a constraint, elseway there will be a warning.
*/
-
+
switch (iOpt)
{
case optCount:
@@ -353,8 +353,8 @@ RegisterSaneDev (TModel model, SANE_String_Const szName)
return SANE_STATUS_GOOD;
}
-
-static SANE_Status
+
+static SANE_Status
sm_usb_attach (SANE_String_Const dev_name)
{
int fd;
@@ -398,9 +398,9 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authCB)
}
pdevFirst=NULL;
-
+
sanei_usb_init();
- for (i = 0; aScanners[i].idProduct; i++)
+ for (i = 0; aScanners[i].idProduct; i++)
{
sanei_usb_find_devices(SCANNER_VENDOR, aScanners[i].idProduct, sm_usb_attach);
}
@@ -417,7 +417,7 @@ sane_exit (void)
/* free all bound resources and instances */
while (pinstFirst)
sane_close((SANE_Handle)pinstFirst); /* free all resources */
-
+
/* free all device descriptors */
for (dev = pdevFirst; dev; dev = pNext)
{
@@ -511,7 +511,7 @@ sane_close (SANE_Handle handle)
if (p==this) break;
pParent=p;
}
-
+
if (!p)
{
DBG(1,"invalid handle in close()\n");
@@ -545,7 +545,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int iOpt)
SANE_Status
sane_control_option (SANE_Handle handle, SANE_Int iOpt,
- SANE_Action action, void *pVal,
+ SANE_Action action, void *pVal,
SANE_Int *pnInfo)
{
SANE_Word cap;
@@ -562,7 +562,7 @@ sane_control_option (SANE_Handle handle, SANE_Int iOpt,
return SANE_STATUS_INVAL;
cap=this->aoptDesc[iOpt].cap;
-
+
switch (action)
{
@@ -699,7 +699,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *p)
p->depth=1;
p->bytes_per_line=(p->pixels_per_line+7)/8;
break;
- }
+ }
DBG(DEBUG_INFO,"getting parameters (%d,%d)...\n",p->bytes_per_line,p->lines);
return SANE_STATUS_GOOD;
}
diff --git a/backend/snapscan-data.c b/backend/snapscan-data.c
index 1fd1a53..6a20499 100644
--- a/backend/snapscan-data.c
+++ b/backend/snapscan-data.c
@@ -41,14 +41,14 @@
If you do not wish that, delete this exception notice.
This file contains static calibration data for the Benq 5150C scanner.
- Once it is known how calibration for this scanner works this file
+ Once it is known how calibration for this scanner works this file
becomes obsolete.
*/
/* $Id$
SANE SnapScan backend */
-
+
static const SANE_Byte calibration_data_5150[] =
{
0x78,0x01,0xcc,0x47,0xca,0x53,0xcd,0x4a,0xd0,0x57,0xd5,0x46,0xda,0x56,0xdd,0x49,
diff --git a/backend/snapscan-mutex.c b/backend/snapscan-mutex.c
index ad0538a..72b8fe1 100644
--- a/backend/snapscan-mutex.c
+++ b/backend/snapscan-mutex.c
@@ -1,8 +1,8 @@
/*
Mutex implementation for SnapScan backend
-
+
Copyright (C) 2000, 2004 Henrik Johansson, Oliver Schwartz
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -38,7 +38,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.*/
-
+
#if defined __BEOS__
#include <OS.h>
@@ -122,14 +122,14 @@ static unsigned int snapscani_bernstein(const unsigned char* str)
{
unsigned int hash = 5381; /* some arbitrary number */
int c;
-
+
while (*str)
{
- c = *str++;
+ c = *str++;
hash = ((hash << 5) + hash) + c;
}
return hash;
-}
+}
static int snapscani_mutex_open(snapscan_mutex_t* sem_id, const char* dev)
{
diff --git a/backend/snapscan-options.c b/backend/snapscan-options.c
index 52fee81..3ef85ae 100644
--- a/backend/snapscan-options.c
+++ b/backend/snapscan-options.c
@@ -232,23 +232,23 @@ static const SANE_Range focus_range =
static const SANE_Range brightness_range =
{
- -400 << SANE_FIXED_SCALE_SHIFT,
- 400 << SANE_FIXED_SCALE_SHIFT,
- 1 << SANE_FIXED_SCALE_SHIFT
+ SANE_FIX(-400),
+ SANE_FIX(400),
+ SANE_FIX(1)
};
static const SANE_Range contrast_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT,
- 400 << SANE_FIXED_SCALE_SHIFT,
- 1 << SANE_FIXED_SCALE_SHIFT
+ SANE_FIX(-100),
+ SANE_FIX(400),
+ SANE_FIX(1)
};
static const SANE_Range positive_percent_range =
{
- 0 << SANE_FIXED_SCALE_SHIFT,
- 100 << SANE_FIXED_SCALE_SHIFT,
- 1 << SANE_FIXED_SCALE_SHIFT
+ SANE_FIX(0),
+ SANE_FIX(100),
+ SANE_FIX(1)
};
static void control_options(SnapScan_Scanner *pss);
diff --git a/backend/snapscan-scsi.c b/backend/snapscan-scsi.c
index 861ff32..b6e43a1 100644
--- a/backend/snapscan-scsi.c
+++ b/backend/snapscan-scsi.c
@@ -80,9 +80,9 @@ static SnapScan_Model snapscani_get_model_id(char* model_str, int fd, SnapScan_B
if ((bus_type == USB) &&
(sanei_usb_get_vendor_product(fd, &vendor_id, &product_id) == SANE_STATUS_GOOD))
{
- DBG(DL_MINOR_INFO,
+ DBG(DL_MINOR_INFO,
"%s: looking up scanner for ID 0x%04x,0x%04x.\n",
- me, vendor_id, product_id);
+ me, vendor_id, product_id);
for (i = 0; i < known_usb_scanners; i++)
{
if ((usb_scanners[i].vendor_id == vendor_id) &&
@@ -1320,7 +1320,7 @@ static SANE_Status wait_scanner_ready (SnapScan_Scanner *pss)
else
{
/* This seems to happen for Epson scanners. Return
- SANE_STATUS_GOOD and hope the scanner accepts the
+ SANE_STATUS_GOOD and hope the scanner accepts the
next command... */
DBG (DL_CALL_TRACE, "%s: No timeout specified, returning immediately\n", me);
return SANE_STATUS_GOOD;
diff --git a/backend/snapscan-sources.c b/backend/snapscan-sources.c
index dc78394..e8bbb90 100644
--- a/backend/snapscan-sources.c
+++ b/backend/snapscan-sources.c
@@ -238,7 +238,7 @@ typedef struct
static SANE_Int FDSource_remaining (Source *pself)
{
- FDSource *ps = (FDSource *) pself;
+ FDSource *ps = (FDSource *) pself;
return ps->bytes_remaining;
}
@@ -660,19 +660,19 @@ static SANE_Status create_Expander (SnapScan_Scanner *pss,
return status;
}
-/*
+/*
This filter implements a fix for scanners that have some columns
of pixels offset. Currently it only shifts every other column
starting with the first one down ch_offset pixels.
-
+
The Deinterlacer detects if data is in SANE RGB frame format (3 bytes/pixel)
or in Grayscale (1 byte/pixel).
-
+
The first ch_offset lines of data in the output are fudged so that even indexed
add odd indexed pixels will have the same value. This is necessary because
- the real pixel values of the columns that are shifted down are not
+ the real pixel values of the columns that are shifted down are not
in the data for the first ch_offset lines. A better way to handle this would be to
- scan in ch_offset extra lines of data, but I haven't figured out how to do this
+ scan in ch_offset extra lines of data, but I haven't figured out how to do this
yet.
*/
@@ -707,7 +707,7 @@ static SANE_Status Deinterlacer_get (Source *pself, SANE_Byte *pbuf, SANE_Int *p
SANE_Int remaining = *plen;
SANE_Int org_len = *plen;
char *me = "Deinterlacer_get";
-
+
DBG(DL_DATA_TRACE, "%s: remaining=%d, pself->remaining=%d, ch_ndata=%d, ch_pos=%d\n",
me, remaining, pself->remaining(pself), ps->ch_ndata, ps->ch_pos);
@@ -784,8 +784,8 @@ static SANE_Status Deinterlacer_get (Source *pself, SANE_Byte *pbuf, SANE_Int *p
*pbuf = ps->ch_buf[(ps->ch_pos + (ps->ch_line_size)) % ps->ch_size];
}else{
/* Use data from the next pixel for even indexed pixels
- if we are on the first few lines.
- TODO: also we will overread the buffer if the buffer read ended
+ if we are on the first few lines.
+ TODO: also we will overread the buffer if the buffer read ended
on the first pixel. */
if (ps->ch_pos % (ps->ch_line_size) == 0 )
*pbuf = ps->ch_buf[ps->ch_pos+ps->ch_bytes_per_pixel];
@@ -807,7 +807,7 @@ static SANE_Status Deinterlacer_get (Source *pself, SANE_Byte *pbuf, SANE_Int *p
}
*plen -= remaining;
-
+
DBG(DL_DATA_TRACE,
"%s: Request=%d, remaining=%d, read=%d, TXSource_rem=%d, bytes_rem=%lu\n",
me,
@@ -815,7 +815,7 @@ static SANE_Status Deinterlacer_get (Source *pself, SANE_Byte *pbuf, SANE_Int *p
pself->remaining(pself),
*plen,
TxSource_remaining(pself),
- (u_long) ps->pss->bytes_remaining);
+ (u_long) ps->pss->bytes_remaining);
return status;
}
@@ -859,7 +859,7 @@ static SANE_Status Deinterlacer_init (Deinterlacer *pself,
break;
}
pself->ch_line_size = TxSource_bytesPerLine((Source *) pself);
- /* We need at least ch_offset+1 lines of buffer in order
+ /* We need at least ch_offset+1 lines of buffer in order
to shift up ch_offset pixels. */
pself->ch_size = pself->ch_line_size * (pself->ch_offset + 1);
pself->ch_buf = (SANE_Byte *) malloc(pself->ch_size);
@@ -1216,10 +1216,10 @@ static SANE_Status create_source_chain (SnapScan_Scanner *pss,
{
case MD_COLOUR:
status = create_RGBRouter (pss, *pps, pps);
- /* We only have the interlace probelms on
- some scanners like the Epson Perfection 2480/2580
+ /* We only have the interlace probelms on
+ some scanners like the Epson Perfection 2480/2580
at 2400 dpi. */
- if (status == SANE_STATUS_GOOD &&
+ if (status == SANE_STATUS_GOOD &&
((pss->pdev->model == PERFECTION2480 && pss->res == 2400) ||
(pss->pdev->model == PERFECTION3490 && pss->res == 3200) ||
(pss->pdev->model == PRISA5000E && pss->res == 1200)))
@@ -1229,7 +1229,7 @@ static SANE_Status create_source_chain (SnapScan_Scanner *pss,
status = create_Expander (pss, *pps, pps);
if (status == SANE_STATUS_GOOD)
status = create_RGBRouter (pss, *pps, pps);
- if (status == SANE_STATUS_GOOD &&
+ if (status == SANE_STATUS_GOOD &&
((pss->pdev->model == PERFECTION2480 && pss->res == 2400) ||
(pss->pdev->model == PERFECTION3490 && pss->res == 3200) ||
(pss->pdev->model == PRISA5000E && pss->res == 1200)))
diff --git a/backend/snapscan-sources.h b/backend/snapscan-sources.h
index a5ed3df..595b48b 100644
--- a/backend/snapscan-sources.h
+++ b/backend/snapscan-sources.h
@@ -1,48 +1,48 @@
/* sane - Scanner Access Now Easy.
-
+
Copyright (C) 1997, 1998 Franck Schnefra, Michel Roelofs,
Emmanuel Blot, Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Oliver Schwartz
and Kevin Charter
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
-
+
This file is a component of the implementation of a backend for many
of the AGFA SnapScan and Acer Vuego/Prisa flatbed scanners. */
diff --git a/backend/snapscan-usb.c b/backend/snapscan-usb.c
index ec6a53e..116f9db 100644
--- a/backend/snapscan-usb.c
+++ b/backend/snapscan-usb.c
@@ -1,8 +1,8 @@
/*
Snapscan 1212U modifications for the Snapscan SANE backend
-
+
Copyright (C) 2000 Henrik Johansson
-
+
Henrik Johansson (henrikjo@post.urfors.se)
This program is free software; you can redistribute it and/or
@@ -43,7 +43,7 @@
This file implements USB equivalents to the SCSI routines used by the Snapscan
backend.
-
+
History
0.1 2000-02-01
@@ -174,7 +174,7 @@ static SANE_Status snapscani_usb_open(const char *dev, int *fdp,
usb_sense_handler=sense_handler;
usb_pss = pss;
urb_counters->read_urbs = 0;
- urb_counters->write_urbs = 0;
+ urb_counters->write_urbs = 0;
return sanei_usb_open(dev, fdp);
}
@@ -182,13 +182,13 @@ static SANE_Status snapscani_usb_open(const char *dev, int *fdp,
static void snapscani_usb_close(int fd) {
static const char me[] = "snapscani_usb_close";
SANE_Word vendor_id, product_id;
-
+
DBG (DL_CALL_TRACE, "%s(%d)\n", me, fd);
DBG (DL_DATA_TRACE,"1st read %ld write %ld\n", urb_counters->read_urbs, urb_counters->write_urbs);
-
+
/* Check if URB counting is needed. If yes, ensure the number of sent and
received URBs is even.
- Odd number of URBs only cause problems with libusb and certain
+ Odd number of URBs only cause problems with libusb and certain
scanner models. On other scanner models, sending additional commands
seems to cause problems (e.g. 1212u_2).
If sanei_usb_get_vendor_product returns an error there's probably no
@@ -197,12 +197,12 @@ static void snapscani_usb_close(int fd) {
if (sanei_usb_get_vendor_product(fd, &vendor_id, &product_id) == SANE_STATUS_GOOD)
{
/* Exclude 1212u_2 */
- if (!((vendor_id == USB_VENDOR_AGFA) && (product_id == USB_PRODUCT_1212U2)))
+ if (!((vendor_id == USB_VENDOR_AGFA) && (product_id == USB_PRODUCT_1212U2)))
{
if ((urb_counters->read_urbs & 0x01) && (urb_counters->write_urbs & 0x01))
{
char cmd[] = {TEST_UNIT_READY, 0, 0, 0, 0, 0};
-
+
snapscani_usb_cmd (fd, cmd, sizeof (cmd), NULL, 0);
}
else if (urb_counters->read_urbs & 0x01)
@@ -211,7 +211,7 @@ static void snapscani_usb_close(int fd) {
char cmd[] = {TEST_UNIT_READY, 0, 0, 0, 0, 0};
char cmd2[] = {INQUIRY, 0, 0, 0, 120, 0};
char data[120];
-
+
read_bytes = 120;
snapscani_usb_cmd (fd, cmd2, sizeof (cmd2), data, &read_bytes);
snapscani_usb_cmd (fd, cmd, sizeof (cmd), NULL, 0);
@@ -221,11 +221,11 @@ static void snapscani_usb_close(int fd) {
size_t read_bytes;
char cmd[] = {INQUIRY, 0, 0, 0, 120, 0};
char data[120];
-
+
read_bytes = 120;
snapscani_usb_cmd (fd, cmd, sizeof (cmd), data, &read_bytes);
}
- DBG (DL_DATA_TRACE,"2nd read %ld write %ld\n", urb_counters->read_urbs,
+ DBG (DL_DATA_TRACE,"2nd read %ld write %ld\n", urb_counters->read_urbs,
urb_counters->write_urbs);
}
}
@@ -302,7 +302,7 @@ static SANE_Status usb_read(SANE_Int fd, void *buf, size_t n) {
DBG (DL_MAJOR_ERROR, "%s Only %lu bytes read\n",me, (u_long) bytes_read);
status = SANE_STATUS_IO_ERROR;
}
- urb_counters->read_urbs += ((63 + bytes_read) / 64);
+ urb_counters->read_urbs += ((63 + bytes_read) / 64);
DBG(DL_DATA_TRACE, "%s: reading: %s\n",me,usb_debug_data(dbgmsg,buf,n));
DBG(DL_DATA_TRACE, "Read %lu bytes\n", (u_long) bytes_read);
return status;
@@ -521,7 +521,7 @@ static SANE_Status snapscani_usb_shm_init(void)
}
memset(urb_counters, 0, shm_size);
return SANE_STATUS_GOOD;
-
+
}
static void snapscani_usb_shm_exit(void)
@@ -546,7 +546,7 @@ static SANE_Status snapscani_usb_shm_init(void)
strerror (errno));
return SANE_STATUS_NO_MEM;
}
-
+
shm_area = shmat (shm_id, NULL, 0);
if (shm_area == (void *) -1)
{
@@ -555,7 +555,7 @@ static SANE_Status snapscani_usb_shm_init(void)
shmctl (shm_id, IPC_RMID, NULL);
return SANE_STATUS_NO_MEM;
}
-
+
if (shmctl (shm_id, IPC_RMID, NULL) == -1)
{
DBG (DL_MAJOR_ERROR, "snapscani_usb_shm_init: cannot remove shared memory segment id: %s\n",
@@ -653,4 +653,3 @@ static void snapscani_usb_shm_exit(void)
* - Change copyright notice
*
* */
-
diff --git a/backend/snapscan.c b/backend/snapscan.c
index c88537b..b93f1f7 100644
--- a/backend/snapscan.c
+++ b/backend/snapscan.c
@@ -1286,7 +1286,7 @@ static SANE_Status start_reader (SnapScan_Scanner *pss)
pss->nonblocking = SANE_FALSE;
pss->rpipe[0] = pss->rpipe[1] = -1;
- pss->child = -1;
+ sanei_thread_initialize (pss->child);
if (pipe (pss->rpipe) != -1)
{
@@ -1812,7 +1812,7 @@ SANE_Status sane_read (SANE_Handle h,
if (sanei_thread_is_valid (pss->child))
{
sanei_thread_waitpid (pss->child, 0); /* ensure no zombies */
- pss->child = -1;
+ sanei_thread_invalidate (pss->child);
}
release_unit (pss);
close_scanner (pss);
@@ -1871,7 +1871,7 @@ void sane_cancel (SANE_Handle h)
/* signal the reader, if any */
if (sanei_thread_is_valid (pss->child))
{
- DBG( DL_INFO, ">>>>>>>> killing reader_process <<<<<<<<\n" );
+ DBG( DL_INFO, "---- killing reader_process ----\n" );
sigemptyset(&(act.sa_mask));
act.sa_flags = 0;
@@ -1904,7 +1904,7 @@ void sane_cancel (SANE_Handle h)
sanei_thread_sendsig( pss->child, SIGKILL );
#endif
}
- pss->child = -1;
+ sanei_thread_invalidate( pss->child );
DBG( DL_INFO,"reader_process killed\n");
}
release_unit (pss);
diff --git a/backend/sp15c-scsi.h b/backend/sp15c-scsi.h
index 4babc8b..13553a2 100644
--- a/backend/sp15c-scsi.h
+++ b/backend/sp15c-scsi.h
@@ -1,7 +1,6 @@
#ifndef SP15C_SCSI_H
#define SP15C_SCSI_H
-static const char RCSid_sh[] = "$Header$";
/* sane - Scanner Access Now Easy.
This file is part of the SANE package.
diff --git a/backend/sp15c.c b/backend/sp15c.c
index 0cabed8..20b2c80 100644
--- a/backend/sp15c.c
+++ b/backend/sp15c.c
@@ -1,4 +1,3 @@
-static const char RCSid[] = "$Header$";
/* sane - Scanner Access Now Easy.
This file is part of the SANE package.
@@ -313,7 +312,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 */
DBG (10, "sane_get_devices\n");
@@ -392,7 +391,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
SANE_Status
sane_set_io_mode (SANE_Handle h, SANE_Bool non_blocking)
{
- h = h;
+ h = h;
non_blocking = non_blocking; /* silence compilation warnings */
DBG (10, "sane_set_io_mode\n");
@@ -989,7 +988,7 @@ sane_exit (void)
free (dev->buffer);
free (dev);
}
-
+
if (devlist)
free (devlist);
} /* sane_exit */
@@ -1322,7 +1321,7 @@ static SANE_Status
sp15c_do_inquiry (struct sp15c *s)
{
static SANE_Status ret;
-
+
DBG (10, "do_inquiry\n");
memset (s->buffer, '\0', 256); /* clear buffer */
@@ -1606,7 +1605,7 @@ sp15c_free_scanner (struct sp15c *s)
if (ret)
return ret;
#endif
-
+
wait_scanner (s);
ret = do_scsi_cmd (s->sfd, release_unitB.cmd, release_unitB.size, NULL, 0);
@@ -1626,7 +1625,7 @@ sp15c_free_scanner (struct sp15c *s)
* GOOD
* RESERVE UNIT
* GOOD
- *
+ *
* It is then responsible for installing appropriate signal handlers
* to call emergency_give_scanner() if user aborts.
*/
@@ -1647,7 +1646,7 @@ sp15c_grab_scanner (struct sp15c *s)
return 0;
} /* sp15c_grab_scanner */
-/*
+/*
* wait_scanner spins until TEST_UNIT_READY returns 0 (GOOD)
* returns 0 on success,
* returns -1 on error or timeout
@@ -1770,7 +1769,7 @@ do_cancel (struct sp15c *scanner)
sanei_thread_kill (scanner->reader_pid);
DBG (50, "wait for scanner to stop\n");
sanei_thread_waitpid (scanner->reader_pid, &exit_status);
- scanner->reader_pid = -1;
+ sanei_thread_invalidate (scanner->reader_pid);
}
if (scanner->sfd >= 0)
@@ -1788,7 +1787,7 @@ static void
swap_res (struct sp15c *s)
{
s = s; /* silence compilation warnings */
-
+
/* for the time being, do nothing */
} /* swap_res */
@@ -1820,7 +1819,7 @@ sp15c_set_window_param (struct sp15c *s, int prescan)
int active_buffer_size;
prescan = prescan; /* silence compilation warnings */
-
+
wait_scanner (s);
DBG (10, "set_window_param\n");
memset (buffer_r, '\0', WDB_size_max); /* clear buffer */
@@ -1979,7 +1978,7 @@ reader_process (void *data)
DBG (10, "reader_process started\n");
- if (sanei_thread_is_forked ())
+ if (sanei_thread_is_forked ())
close (scanner->pipe);
sigfillset (&ignore_set);
diff --git a/backend/sp15c.h b/backend/sp15c.h
index e078316..f4b0b7f 100644
--- a/backend/sp15c.h
+++ b/backend/sp15c.h
@@ -1,7 +1,6 @@
#ifndef SP15C_H
#define SP15C_H
-static const char RCSid_h[] = "$Header$";
/* sane - Scanner Access Now Easy.
This file is part of the SANE package.
diff --git a/backend/st400.c b/backend/st400.c
index b8ee6d1..16c7f9f 100644
--- a/backend/st400.c
+++ b/backend/st400.c
@@ -1201,7 +1201,7 @@ sane_cancel( SANE_Handle handle )
#if 0
st400_stop_scan(dev->fd);
#endif
- if( st400_light_delay )
+ if( st400_light_delay )
st400_light_off(dev->fd);
st400_release(dev->fd);
sanei_scsi_close(dev->fd);
diff --git a/backend/stubs.c b/backend/stubs.c
index 3fb5ce3..a8afd3e 100644
--- a/backend/stubs.c
+++ b/backend/stubs.c
@@ -5,6 +5,10 @@
/* Now define the wrappers (we could use aliases here, but go for
robustness for now...: */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
SANE_Status
sane_init (SANE_Int *vc, SANE_Auth_Callback cb)
{
@@ -83,3 +87,7 @@ sane_exit (void)
{
ENTRY(exit) ();
}
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
diff --git a/backend/stv680.c b/backend/stv680.c
index 15a8472..8d2fda3 100644
--- a/backend/stv680.c
+++ b/backend/stv680.c
@@ -2,10 +2,10 @@
Copyright (C) 2004 - 2006 Gerard Klaver <gerard at gkall dot hobby dot nl>
- The teco2 and gl646 backend (Frank Zago) are used as a template for
+ The teco2 and gl646 backend (Frank Zago) are used as a template for
this backend.
- For the usb commands and bayer decoding parts of the following
+ For the usb commands and bayer decoding parts of the following
program are used:
The pencam2 program (GNU GPL license 2)
@@ -13,22 +13,22 @@
The libgphoto2 (camlib stv0680) (GNU GPL license 2)
The stv680.c/.h kernel module (GNU GPL license 2)
- For the stv680_add_text routine the add_text routine and font_6x11.h file
+ For the stv680_add_text routine the add_text routine and font_6x11.h file
are taken from the webcam.c file, part of xawtv program,
(c) 1998-2002 Gerd Knorr (GNU GPL license 2).
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@ -54,7 +54,7 @@
. . - sane_start() : start image acquisition
. . - sane_get_parameters() : returns actual scan parameters
. . - sane_read() : read image data (from pipe)
- . . (sane_read called multiple times;
+ . . (sane_read called multiple times;
. . after sane_read returns EOF)
. . go back to sane_start() if more frames desired
. . - sane_cancel() : cancel operation
@@ -559,7 +559,7 @@ stv680_identify_vidcam (Stv680_Vidcam * dev)
"stv680_vidcam_init: STV680 FAILED to set configure\n");
return status;
}
- */
+ */
sizer = 0x02;
status =
sanei_usb_control_msg (dev->fd, 0xc1, 0x88, 0x5678, 0, sizer,
@@ -1180,7 +1180,7 @@ stv680_fill_image (Stv680_Vidcam * dev)
/* i = stv_sndctrl (0, dev, 0x80, 0, &window, 0x02); *//* Get Last Error */
/* DBG (DBG_proc, "STV(i): last error: %i, command = 0x%x", window[0], window[1]);
return -1; */
-/*
+/*
}
return 0; */
@@ -1315,9 +1315,9 @@ stv680_bayer_unshuffle (Stv680_Vidcam * dev, SANE_Byte * buf, size_t * size)
} /* for y */
/****** gamma correction plus hardcoded white balance */
- /* Correction values red[], green[], blue[], are generated by
- (pow(i/256.0, GAMMA)*255.0)*white balanceRGB where GAMMA=0.55, 1<i<255.
- White balance (RGB)= 1.0, 1.17, 1.48. Values are calculated as double float and
+ /* Correction values red[], green[], blue[], are generated by
+ (pow(i/256.0, GAMMA)*255.0)*white balanceRGB where GAMMA=0.55, 1<i<255.
+ White balance (RGB)= 1.0, 1.17, 1.48. Values are calculated as double float and
converted to unsigned char. Values are in stv680.h */
if (dev->scan_mode == STV680_COLOR_RGB
|| dev->scan_mode == STV680_COLOR_RGB_TEXT)
diff --git a/backend/stv680.h b/backend/stv680.h
index e08976b..a4f5fbe 100644
--- a/backend/stv680.h
+++ b/backend/stv680.h
@@ -2,10 +2,10 @@
Copyright (C) 2004 -2006 Gerard Klaver (gerard at gkall dot hobby dot nl)
- The teco2 and gl646 backend (Frank Zago) are used as a template for
+ The teco2 and gl646 backend (Frank Zago) are used as a template for
this backend.
-
- For the usb commands and bayer decoding parts of the following
+
+ For the usb commands and bayer decoding parts of the following
program are used:
The pencam2 program (GNU GPL license 2)
@@ -13,7 +13,7 @@
The libgphoto2 (camlib stv0680) (GNU GPL license 2)
The stv680.c/.h kernel module (GNU GPL license 2)
- For the stv680_add_text routine the add_text routine and font_6x11.h file
+ For the stv680_add_text routine the add_text routine and font_6x11.h file
are taken from the webcam.c file, part of xawtv program,
(c) 1998-2002 Gerd Knorr (GNU GPL license 2).
@@ -36,7 +36,7 @@
---------------------------------------------------------------------
*/
-/*
+/*
$Id$
update 20-04-2006*/
@@ -94,8 +94,8 @@ enum Stv680_Option
/*--------------------------------------------------------------------------*/
-/*
- * Video Camera supported by this backend.
+/*
+ * Video Camera supported by this backend.
*/
struct vidcam_hardware
{
@@ -207,7 +207,7 @@ Stv680_Vidcam;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/tamarack.c b/backend/tamarack.c
index 6fc259f..feb9ee1 100644
--- a/backend/tamarack.c
+++ b/backend/tamarack.c
@@ -23,8 +23,8 @@
exception gives you, Please do contact me, and we'll work something
out.
- R.E.Wolff@BitWizard.nl
- tel: +31-152137555
+ R.E.Wolff@BitWizard.nl
+ tel: +31-152137555
fax: +31-152138217
This file implements a SANE backend for Tamarack flatbed scanners. */
@@ -92,16 +92,18 @@ static const SANE_String_Const mode_list[] =
};
+#if 0
static const SANE_Range u8_range =
{
0, /* minimum */
255, /* maximum */
0 /* quantization */
};
+#endif
/* David used " 100 << SANE_FIXED_SCALE_SHIFT ". This assumes that
- * it is implemented that way. I want to hide the datatype.
+ * it is implemented that way. I want to hide the datatype.
*/
static const SANE_Range percentage_range =
{
@@ -111,7 +113,7 @@ static const SANE_Range percentage_range =
};
/* David used " 100 << SANE_FIXED_SCALE_SHIFT ". This assumes that
- * it is implemented that way. I want to hide the datatype.
+ * it is implemented that way. I want to hide the datatype.
*/
static const SANE_Range abs_percentage_range =
{
@@ -139,7 +141,7 @@ static const uint8_t stop[] =
static const uint8_t get_status[] =
{
- TAMARACK_SCSI_GET_DATA_STATUS, 0x00, 0x00, 0x00, 0x00, 0x00,
+ TAMARACK_SCSI_GET_DATA_STATUS, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0c, 0x00
};
@@ -250,17 +252,17 @@ attach (const char *devname, Tamarack_Device **devp)
mfg = strdup (result+8);
DBG(1, "attach: Inquiry gives mfg=%s, model=%s.\n", mfg, model);
-
+
if (strcmp (mfg, "TAMARACK") != 0) {
DBG(1, "attach: device doesn't look like a Tamarack scanner "
"(result[0]=%#02x)\n", result[0]);
return SANE_STATUS_INVAL;
}
-
+
dev = malloc (sizeof (*dev));
if (!dev)
return SANE_STATUS_NO_MEM;
-
+
memset (dev, 0, sizeof (*dev));
dev->sane.name = strdup (devname);
@@ -333,7 +335,7 @@ scan_area_and_windows (Tamarack_Scanner *s)
memset (&dwp,'\0',sizeof (dwp));
dwp.dwph.opc = TAMARACK_SCSI_AREA_AND_WINDOWS;
- set_triple (dwp.dwph.len,8 + sizeof (dwp.wdb));
+ set_triple (dwp.dwph.len,8 + sizeof (dwp.wdb));
set_double (dwp.wdh.wpll, sizeof (dwp.wdb));
@@ -343,7 +345,7 @@ scan_area_and_windows (Tamarack_Scanner *s)
set_quad (dwp.wdb.ulx, (int) (47.2 * SANE_UNFIX (s->val[OPT_TL_X].w)));
set_quad (dwp.wdb.uly, (int) (47.2 * SANE_UNFIX (s->val[OPT_TL_Y].w)));
- set_quad (dwp.wdb.width,
+ set_quad (dwp.wdb.width,
(int) (47.2 * SANE_UNFIX (s->val[OPT_BR_X].w - s->val[OPT_TL_X].w)));
set_quad (dwp.wdb.length,
(int) (47.2 * SANE_UNFIX (s->val[OPT_BR_Y].w - s->val[OPT_TL_Y].w)));
@@ -357,7 +359,7 @@ scan_area_and_windows (Tamarack_Scanner *s)
case THRESHOLDED:
dwp.wdb.bpp = 1;
dwp.wdb.image_comp = 0;
- dwp.wdb.thresh = 1 + 2.55 * (SANE_UNFIX (s->val[OPT_THRESHOLD].w));
+ dwp.wdb.thresh = 1 + 2.55 * (SANE_UNFIX (s->val[OPT_THRESHOLD].w));
break;
case DITHERED:
dwp.wdb.bpp = 1;
@@ -375,7 +377,7 @@ scan_area_and_windows (Tamarack_Scanner *s)
DBG(1, "Invalid mode. %d\n", s->mode);
return SANE_STATUS_INVAL;
}
- DBG(1, "bright, thresh, contrast = %d(%5.1f), %d, %d(%5.1f)\n",
+ DBG(1, "bright, thresh, contrast = %d(%5.1f), %d, %d(%5.1f)\n",
dwp.wdb.brightness, SANE_UNFIX (s->val[OPT_BRIGHTNESS].w),
dwp.wdb.thresh ,
dwp.wdb.contrast , SANE_UNFIX (s->val[OPT_CONTRAST].w));
@@ -399,7 +401,7 @@ mode_select (Tamarack_Scanner *s)
struct tamarack_page page;
} c;
- memset (&c, '\0', sizeof (c));
+ memset (&c, '\0', sizeof (c));
c.cmd.opc = TAMARACK_SCSI_MODE_SELECT;
c.cmd.pad0[0] = 0x10; /* Suddenly the pad bytes are no long pad... */
c.cmd.pad0[1] = 0;
@@ -412,7 +414,7 @@ mode_select (Tamarack_Scanner *s)
case THRESHOLDED:
case DITHERED:
case GREYSCALE:
- c.page.masks = 0x80;
+ c.page.masks = 0x80;
break;
case TRUECOLOR:
c.page.masks = 0x40 >> s->pass;
@@ -431,7 +433,7 @@ start_scan (Tamarack_Scanner *s)
struct command_header cmd;
unsigned char winid[1];
} c;
-
+
memset (&c,'\0',sizeof (c));
c.cmd.opc = TAMARACK_SCSI_START_STOP;
c.cmd.len = sizeof (c.winid);
@@ -442,9 +444,9 @@ start_scan (Tamarack_Scanner *s)
static SANE_Status
stop_scan (Tamarack_Scanner *s)
-{
+{
/* XXX I don't think a TAMARACK can stop in mid-scan. Just stop
- sending it requests for data....
+ sending it requests for data....
*/
return sanei_scsi_cmd (s->fd, stop, sizeof (stop), 0, 0);
}
@@ -477,7 +479,7 @@ do_cancel (Tamarack_Scanner *s)
/* ensure child knows it's time to stop: */
sanei_thread_kill (s->reader_pid);
sanei_thread_waitpid (s->reader_pid, &exit_status);
- s->reader_pid = -1;
+ sanei_thread_invalidate (s->reader_pid);
}
if (s->fd >= 0)
@@ -526,10 +528,10 @@ get_image_status (Tamarack_Scanner *s)
result, &len);
if ((status != SANE_STATUS_GOOD) && (status != SANE_STATUS_DEVICE_BUSY))
return status;
-
- s->params.bytes_per_line =
+
+ s->params.bytes_per_line =
result[ 8] | (result[ 7] << 8) | (result[6] << 16);
- s->params.lines =
+ s->params.lines =
result[11] | (result[10] << 8) | (result[9] << 16);
switch (s->mode) {
@@ -855,7 +857,7 @@ reader_process (void *scanner)
if (!lines_per_buffer)
return 2; /* resolution is too high */
- /* Limit the size of a single transfer to one inch.
+ /* Limit the size of a single transfer to one inch.
XXX Add a stripsize option. */
if (lines_per_buffer > SANE_UNFIX (s->val[OPT_RESOLUTION].w))
lines_per_buffer = SANE_UNFIX (s->val[OPT_RESOLUTION].w);
@@ -877,14 +879,14 @@ reader_process (void *scanner)
return 3;
}
DBG(3, "reader_process: read %d lines\n", lines_per_buffer);
-
+
if ((s->mode == TRUECOLOR) || (s->mode == GREYSCALE)) {
fwrite (data, lines_per_buffer, bpl, fp);
} else {
/* in singlebit mode, the scanner returns 1 for black. ;-( --DM */
/* Hah! Same for Tamarack... -- REW */
int i;
-
+
for (i = 0; i < lines_per_buffer * bpl; ++i)
fputc (~data[i], fp);
}
@@ -929,10 +931,10 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
if (dev_name[0] == '#') /* ignore line comments */
continue;
len = strlen (dev_name);
-
+
if (!len)
continue; /* ignore empty lines */
-
+
sanei_config_attach_matching_devices (dev_name, attach_one);
}
fclose (fp);
@@ -951,7 +953,7 @@ sane_exit (void)
free ((void *) dev->sane.model);
free (dev);
}
-
+
if (devlist)
free (devlist);
}
@@ -1063,7 +1065,7 @@ const SANE_Option_Descriptor *
sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
{
Tamarack_Scanner *s = handle;
-
+
if ((unsigned) option >= NUM_OPTIONS)
return 0;
return s->opt + option;
@@ -1151,7 +1153,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
status = constrain_value (s, option, val, info);
if (status != SANE_STATUS_GOOD)
return status;
-
+
switch (option)
{
/* (mostly) side-effect-free word options: */
@@ -1235,7 +1237,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
#endif
- if (strcmp (val, SANE_VALUE_SCAN_MODE_LINEART) == 0)
+ if (strcmp (val, SANE_VALUE_SCAN_MODE_LINEART) == 0)
s->opt[OPT_THRESHOLD].cap &= ~SANE_CAP_INACTIVE;
else {
s->opt[OPT_BRIGHTNESS].cap &= ~SANE_CAP_INACTIVE;
@@ -1271,10 +1273,10 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
if (!s->scanning) {
double width, height, dpi;
-
+
memset (&s->params, 0, sizeof (s->params));
-
+
width = SANE_UNFIX (s->val[OPT_BR_X].w - s->val[OPT_TL_X].w);
height = SANE_UNFIX (s->val[OPT_BR_Y].w - s->val[OPT_TL_Y].w);
dpi = SANE_UNFIX (s->val[OPT_RESOLUTION].w);
@@ -1284,7 +1286,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
scanning starts. */
if (dpi > 0.0 && width > 0.0 && height > 0.0) {
double dots_per_mm = dpi / MM_PER_INCH;
-
+
s->params.pixels_per_line = width * dots_per_mm;
s->params.lines = height * dots_per_mm;
}
@@ -1308,14 +1310,14 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters *params)
}
s->params.last_frame = (s->mode != TRUECOLOR) || (s->pass == 2);
-
+
if (params)
*params = s->params;
DBG(1, "Got parameters: format:%d, ppl: %d, bpl:%d, depth:%d, "
- "last %d pass %d\n",
- s->params.format, s->params.pixels_per_line,
- s->params.bytes_per_line, s->params.depth,
+ "last %d pass %d\n",
+ s->params.format, s->params.pixels_per_line,
+ s->params.bytes_per_line, s->params.depth,
s->params.last_frame, s->pass);
return SANE_STATUS_GOOD;
}
@@ -1349,7 +1351,7 @@ sane_start (SANE_Handle handle)
s->params.last_frame = SANE_TRUE;
}
}
-
+
status = sanei_scsi_open (s->hw->sane.name, &s->fd, sense_handler, 0);
if (status != SANE_STATUS_GOOD) {
DBG(1, "open: open of %s failed: %s\n",
@@ -1374,7 +1376,7 @@ sane_start (SANE_Handle handle)
status = mode_select (s);
if (status != SANE_STATUS_GOOD)
goto stop_scanner_and_return;
-
+
s->scanning = SANE_TRUE;
status = start_scan (s);
@@ -1417,7 +1419,7 @@ sane_read (SANE_Handle handle, SANE_Byte *buf, SANE_Int max_len, SANE_Int *len)
if (!s->scanning)
return do_cancel (s);
-
+
if (nread < 0) {
if (errno == EAGAIN) {
return SANE_STATUS_GOOD;
@@ -1474,4 +1476,3 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int *fd)
*fd = s->pipe;
return SANE_STATUS_GOOD;
}
-
diff --git a/backend/tamarack.conf.in b/backend/tamarack.conf.in
index 4c5ae7d..52f24d0 100644
--- a/backend/tamarack.conf.in
+++ b/backend/tamarack.conf.in
@@ -1,3 +1,2 @@
scsi TAMARACK
/dev/scanner
-
diff --git a/backend/tamarack.h b/backend/tamarack.h
index 65697ac..3b1e1c5 100644
--- a/backend/tamarack.h
+++ b/backend/tamarack.h
@@ -167,11 +167,11 @@ Tamarack_Scanner;
#define TAMARACK_SCSI_TEST_UNIT_READY 0x00
#define TAMARACK_SCSI_INQUIRY 0x12
-#define TAMARACK_SCSI_MODE_SELECT 0x15
+#define TAMARACK_SCSI_MODE_SELECT 0x15
#define TAMARACK_SCSI_START_STOP 0x1b
#define TAMARACK_SCSI_AREA_AND_WINDOWS 0x24
#define TAMARACK_SCSI_READ_SCANNED_DATA 0x28
-#define TAMARACK_SCSI_GET_DATA_STATUS 0x34
+#define TAMARACK_SCSI_GET_DATA_STATUS 0x34
/* The structures that you have to send to the tamarack to get it to
@@ -190,7 +190,7 @@ struct win_desc_block {
unsigned char yres[2];
unsigned char ulx[4];
unsigned char uly[4];
- unsigned char width[4];
+ unsigned char width[4];
unsigned char length[4];
unsigned char brightness;
unsigned char thresh;
@@ -209,7 +209,7 @@ struct win_desc_block {
struct command_header {
unsigned char opc;
- unsigned char pad0[3];
+ unsigned char pad0[3];
unsigned char len;
unsigned char pad1;
};
@@ -217,7 +217,7 @@ struct command_header {
struct command_header_10 {
unsigned char opc;
- unsigned char pad0[5];
+ unsigned char pad0[5];
unsigned char len[3];
unsigned char pad1;
};
diff --git a/backend/teco1.c b/backend/teco1.c
index 2a13201..136f537 100644
--- a/backend/teco1.c
+++ b/backend/teco1.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Frank Zago (sane at zago dot net)
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
@@ -190,16 +190,16 @@ static const struct scanners_supported scanners[] = {
99
},
- {6, "TECO VM4540",
- TECO_VM4540,
- "Relisys", "RELI 4816",
- {1, 1600, 1}, /* resolution */
- 400, 1600, /* max x and Y resolution */
- 1, /* color 1 pass */
- 256, /* number of bytes per gamma color */
- 99 /* number of bytes in a window */
+ {6, "TECO VM4540",
+ TECO_VM4540,
+ "Relisys", "RELI 4816",
+ {1, 1600, 1}, /* resolution */
+ 400, 1600, /* max x and Y resolution */
+ 1, /* color 1 pass */
+ 256, /* number of bytes per gamma color */
+ 99 /* number of bytes in a window */
},
-
+
{6, "TECO VM4542",
TECO_VM4542,
"Relisys", "RELI 4830",
@@ -1240,7 +1240,7 @@ teco_init_options (Teco_Scanner * dev)
(SANE_String_Const *) scan_mode_list[0], NULL);
}
-/*
+/*
* Wait until the scanner is ready.
*/
static SANE_Status
@@ -1295,7 +1295,7 @@ teco_fill_image (Teco_Scanner * dev)
while (dev->real_bytes_left)
{
- /*
+ /*
* Try to read the maximum number of bytes.
*/
size = 0;
@@ -1318,7 +1318,7 @@ teco_fill_image (Teco_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -1389,7 +1389,7 @@ teco_fill_image (Teco_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
diff --git a/backend/teco1.h b/backend/teco1.h
index 1b5fecb..528613f 100644
--- a/backend/teco1.h
+++ b/backend/teco1.h
@@ -38,10 +38,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -253,8 +253,8 @@ enum Teco_Option
/*--------------------------------------------------------------------------*/
-/*
- * Scanner supported by this backend.
+/*
+ * Scanner supported by this backend.
*/
struct scanners_supported
{
@@ -363,7 +363,7 @@ Teco_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/teco2.c b/backend/teco2.c
index 9bc8bf4..a104189 100644
--- a/backend/teco2.c
+++ b/backend/teco2.c
@@ -4,42 +4,42 @@
Copyright (C) 2003-2008 Gerard Klaver (gerard at gkall dot hobby dot nl)
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
@@ -61,7 +61,7 @@
changed use of %d to %ld (when bytes values are displayed)
update 2005/03/04, use of __sane_unused__
update 2005/07/29. Removed using teco_request_sense (dev) routine for VM3564
- update 2008/01/12, Update teco_request_sense routine due to no
+ update 2008/01/12, Update teco_request_sense routine due to no
init value for size.
*/
@@ -317,10 +317,6 @@ static const struct dpi_color_adjust vm6586_dpi_color_adjust[] = {
{0, 0, 0, 0, 0, 0}
};
-static const struct dpi_color_adjust default_dpi_color_adjust[1] = {
- {0, 0, 1, 2, 0, 0}
-};
-
/* For all scanners. Must be reasonable (eg. between 50 and 300) and
* appear in the ...._dpi_color_adjust list of all supported scanners. */
#define DEF_RESOLUTION 150
@@ -1129,17 +1125,17 @@ teco_wait_for_data (Teco_Scanner * dev)
/* Do the calibration stuff. Get 12 or 8 lines of data. Each pixel is coded
* in 6 bytes (2 per color) or 3 bytes (3564 and 356A). To do the calibration,
* allocates an array big enough for one line, read the 12 or 8 lines of calibration,
- * subtract the highest and lowest value and do a average.
+ * subtract the highest and lowest value and do a average.
* The input line is 1 raster for each color. However
* the output line is interlaced (ie RBG for the first pixel, then RGB
* for the second, and so on...). The output line are the value to use
- * to compensate for the white point.
+ * to compensate for the white point.
* There is two algorithms:
*
* The range goes from 0 to 0xfff, and the average is 0x800. So if
* the average input is 0x700, the output value for that dot must be
* 0x1000-0x700=0x900.
- *
+ *
* and
*
* the calibration needs to be a multiplication factor, to
@@ -1169,7 +1165,7 @@ teco_do_calibration (Teco_Scanner * dev)
colsub1_0 = 0;
colsub1_1 = 0;
colsub1_2 = 0;
-
+
DBG (DBG_proc, "teco_do_calibration: enter\n");
/* Get default calibration algorithm. */
@@ -1251,7 +1247,7 @@ teco_do_calibration (Teco_Scanner * dev)
memset (tmp_max_buf, 0x0000, tmp_max_buf_size);
break;
}
-
+
if ((tmp_buf == NULL) || (tmp_min_buf == NULL) || (tmp_max_buf == NULL))
{
DBG (DBG_proc, "teco_do_calibration: not enough memory (%ld bytes)\n",
@@ -1362,29 +1358,29 @@ teco_do_calibration (Teco_Scanner * dev)
tmp_min_buf[3 * j + 0] = dev->buffer[3 * j + 0];
}
/* get highest value */
- if (tmp_max_buf[3 * j + 0] < dev->buffer[3 * j + 0])
+ if (tmp_max_buf[3 * j + 0] < dev->buffer[3 * j + 0])
{
tmp_max_buf[3 * j + 0] = dev->buffer[3 * j + 0];
}
tmp_buf[3 * j + 1] += dev->buffer[3 * j + 1];
/* get lowest value */
- if (tmp_min_buf[3 * j + 1] >> dev->buffer[3 * j + 1])
+ if (tmp_min_buf[3 * j + 1] >> dev->buffer[3 * j + 1])
{
tmp_min_buf[3 * j + 1] = dev->buffer[3 * j + 1];
}
/* get hightest value */
- if (tmp_max_buf[3 * j + 1] < dev->buffer[3 * j + 1])
+ if (tmp_max_buf[3 * j + 1] < dev->buffer[3 * j + 1])
{
tmp_max_buf[3 * j + 1] = dev->buffer[3 * j + 1];
}
tmp_buf[3 * j + 2] += dev->buffer[3 * j + 2];
/* get lowest value */
- if (tmp_min_buf[3 * j + 2] >> dev->buffer[3 * j + 2])
+ if (tmp_min_buf[3 * j + 2] >> dev->buffer[3 * j + 2])
{
tmp_min_buf[3 * j + 2] = dev->buffer[3 * j + 2];
}
/* get highest value */
- if (tmp_max_buf[3 * j + 2] < dev->buffer[3 * j + 2])
+ if (tmp_max_buf[3 * j + 2] < dev->buffer[3 * j + 2])
{
tmp_max_buf[3 * j + 2] = dev->buffer[3 * j + 2];
}
@@ -1404,7 +1400,7 @@ teco_do_calibration (Teco_Scanner * dev)
/* hexdump (DBG_info2, "calibration before average:", tmp_buf, tmp_buf_size); */
/* hexdump (DBG_info2, "calibration before average min value:", tmp_min_buf, tmp_min_buf_size); */
/* hexdump (DBG_info2, "calibration before average max value:", tmp_max_buf, tmp_max_buf_size); */
-
+
/* Do the average. Since we got 12 or 8 lines, divide all values by 10 or 6
* and create the final calibration value that compensates for the
* white values read. */
@@ -1419,28 +1415,28 @@ teco_do_calibration (Teco_Scanner * dev)
for (j = 0; j < dev->def->cal_length; j++)
{
/* subtract lowest and highest value */
- tmp_buf[j] = tmp_buf[j] - (tmp_min_buf[j] + tmp_max_buf[j]);
- tmp_buf[j + dev->def->cal_length] = tmp_buf[j + dev->def->cal_length]
- - (tmp_min_buf[j + dev->def->cal_length]
- + tmp_max_buf[j + dev->def->cal_length]);
- tmp_buf[j + 2 * dev->def->cal_length] = tmp_buf[j + 2 * dev->def->cal_length]
- - (tmp_min_buf[j + 2 * dev->def->cal_length]
- + tmp_max_buf[j + 2 *dev->def->cal_length]);
+ tmp_buf[j] = tmp_buf[j] - (tmp_min_buf[j] + tmp_max_buf[j]);
+ tmp_buf[j + dev->def->cal_length] = tmp_buf[j + dev->def->cal_length]
+ - (tmp_min_buf[j + dev->def->cal_length]
+ + tmp_max_buf[j + dev->def->cal_length]);
+ tmp_buf[j + 2 * dev->def->cal_length] = tmp_buf[j + 2 * dev->def->cal_length]
+ - (tmp_min_buf[j + 2 * dev->def->cal_length]
+ + tmp_max_buf[j + 2 *dev->def->cal_length]);
/* sequence colors first color row one then two and last three */
- if (cal_algo == 1)
+ if (cal_algo == 1)
{
tmp_buf[j] = (colsub1_0 * (dev->def->cal_lines - 2)) / tmp_buf[j];
- tmp_buf[j + dev->def->cal_length] = (colsub1_1 * (dev->def->cal_lines - 2))
+ tmp_buf[j + dev->def->cal_length] = (colsub1_1 * (dev->def->cal_lines - 2))
/ tmp_buf[j + dev->def->cal_length];
- tmp_buf[j + 2 * dev->def->cal_length] = (colsub1_2 * (dev->def->cal_lines - 2))
+ tmp_buf[j + 2 * dev->def->cal_length] = (colsub1_2 * (dev->def->cal_lines - 2))
/ tmp_buf[j + 2 * dev->def->cal_length];
}
- else
+ else
{
tmp_buf[j] = colsub0_0 - (tmp_buf[j] / (dev->def->cal_lines - 2));
- tmp_buf[j + dev->def->cal_length] = colsub0_1 - (tmp_buf[j + dev->def->cal_length]
+ tmp_buf[j + dev->def->cal_length] = colsub0_1 - (tmp_buf[j + dev->def->cal_length]
/ (dev->def->cal_lines - 2));
- tmp_buf[j + 2 * dev->def->cal_length] = colsub0_2
+ tmp_buf[j + 2 * dev->def->cal_length] = colsub0_2
- (tmp_buf[j + 2 * dev->def->cal_length] / (dev->def->cal_lines - 2));
}
}
@@ -1450,7 +1446,7 @@ teco_do_calibration (Teco_Scanner * dev)
{
if (cal_algo == 1)
tmp_buf[j] = (colsub1_1 * dev->def->cal_lines) / tmp_buf[j];
- else
+ else
tmp_buf[j] = colsub0_1 - (tmp_buf[j] / dev->def->cal_lines);
}
break; */
@@ -1531,10 +1527,10 @@ teco_request_sense (Teco_Scanner * dev)
/* size = 0; */
DBG (DBG_proc, "teco_request_sense: enter\n");
-
+
size = sizeof (buf);
MKSCSI_REQUEST_SENSE (cdb, size);
-
+
/*size = cdb.data[5];
hexdump (DBG_info2, "teco_request_sense", cdb.data, cdb.len);
@@ -1545,7 +1541,7 @@ teco_request_sense (Teco_Scanner * dev)
NULL, 0, buf, &size);
hexdump (DBG_info2, "teco_request_sense:", buf, size);
-
+
DBG (DBG_proc, "teco_request_sense: exit, status=%d\n", status);
return (status);
@@ -2083,7 +2079,7 @@ teco_init_options (Teco_Scanner * dev)
dev->opt[OPT_WHITE_LEVEL_G].constraint_type = SANE_CONSTRAINT_RANGE;
dev->opt[OPT_WHITE_LEVEL_G].constraint.range = &green_level_range;
dev->val[OPT_WHITE_LEVEL_G].w = 32; /* to get middle value */
-
+
/* blue level calibration manual correction */
dev->opt[OPT_WHITE_LEVEL_B].name = SANE_NAME_WHITE_LEVEL_B;
dev->opt[OPT_WHITE_LEVEL_B].title = SANE_TITLE_WHITE_LEVEL_B;
@@ -2093,14 +2089,14 @@ teco_init_options (Teco_Scanner * dev)
dev->opt[OPT_WHITE_LEVEL_B].constraint_type = SANE_CONSTRAINT_RANGE;
dev->opt[OPT_WHITE_LEVEL_B].constraint.range = &blue_level_range;
dev->val[OPT_WHITE_LEVEL_B].w = 32; /* to get middle value */
-
+
/* Lastly, set the default scan mode. This might change some
* values previously set here. */
sane_control_option (dev, OPT_MODE, SANE_ACTION_SET_VALUE,
(SANE_String_Const *) scan_mode_list[0], NULL);
}
-/*
+/*
* Wait until the scanner is ready.
*/
static SANE_Status
@@ -2136,7 +2132,7 @@ teco_wait_scanner (Teco_Scanner * dev)
return (SANE_STATUS_IO_ERROR);
}
-/*
+/*
* Adjust the rasters. This function is used during a color scan,
* because the scanner does not present a format sane can interpret
* directly.
@@ -2147,7 +2143,7 @@ teco_wait_scanner (Teco_Scanner * dev)
*
* The order of the color is dependant on each scanners. Also the same
* scanner can change the order depending on the resolution.
- *
+ *
* For instance, the VM6586 at 300dpi has a color shift of 2 lines. The rasters sent are:
* starts with two blue rasters - BB,
* then red in added - BRBR
@@ -2156,7 +2152,7 @@ teco_wait_scanner (Teco_Scanner * dev)
* and finaly only green stays - GG
*
* Overall there is the same number of RGB rasters.
- * The VM3575 is a variant (when factor_x is 0). It does not keep the same order,
+ * The VM3575 is a variant (when factor_x is 0). It does not keep the same order,
* but reverses it, eg:
* BB RBRB GRB... GRGR GG
* (ie it adds the new color in front of the previous one, instead of after).
@@ -2192,7 +2188,7 @@ teco_adjust_raster (Teco_Scanner * dev, size_t size_in)
return;
}
- /*
+ /*
* The color coding is one line for each color (in the RGB order).
* Recombine that stuff to create a RGB value for each pixel.
*/
@@ -2202,7 +2198,7 @@ teco_adjust_raster (Teco_Scanner * dev, size_t size_in)
for (raster = 0; raster < nb_rasters; raster++)
{
- /*
+ /*
* Find the color and the line which this raster belongs to.
*/
line = 0;
@@ -2365,7 +2361,7 @@ teco_fill_image (Teco_Scanner * dev)
/* Copy the complete lines, plus the incompletes
* ones. We don't keep the real end of data used
- * in image, so we copy the biggest possible.
+ * in image, so we copy the biggest possible.
*
* This is a no-op for non color images.
*/
@@ -2376,7 +2372,7 @@ teco_fill_image (Teco_Scanner * dev)
while (dev->real_bytes_left)
{
- /*
+ /*
* Try to read the maximum number of bytes.
*/
size = dev->real_bytes_left;
@@ -2398,7 +2394,7 @@ teco_fill_image (Teco_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -2446,7 +2442,7 @@ teco_fill_image (Teco_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
diff --git a/backend/teco2.conf.in b/backend/teco2.conf.in
index a012e56..f5db0bb 100644
--- a/backend/teco2.conf.in
+++ b/backend/teco2.conf.in
@@ -1,5 +1,5 @@
# VM3564 RELISYS AVEC II S3 scanner
-scsi "RELISYS" "AVEC II S3"
+scsi "RELISYS" "AVEC II S3"
# VM356A Primax Jewel 4800 scanner
scsi "Primax" "Jewel"
@@ -13,7 +13,7 @@ scsi "RELISYS" "AVEC Super 3"
# VM3575 Relisys SCORPIO Super 3
# VM3575 Mustek ScanMagic 4830S
# VM6586 Relisys SCORPIO Pro-S
-scsi "" "Flatbed Scanner"
+scsi "" "Flatbed Scanner"
# VM656A Relisys APOLLO Express 6
scsi "RELISYS" "APOLLO Express 6"
diff --git a/backend/teco2.h b/backend/teco2.h
index 9975f03..ead4525 100644
--- a/backend/teco2.h
+++ b/backend/teco2.h
@@ -39,10 +39,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -307,8 +307,8 @@ enum Teco_Option
/*--------------------------------------------------------------------------*/
-/*
- * Scanner supported by this backend.
+/*
+ * Scanner supported by this backend.
*/
struct scanners_supported
{
@@ -434,7 +434,7 @@ Teco_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/teco3.c b/backend/teco3.c
index e66d95d..b58312a 100644
--- a/backend/teco3.c
+++ b/backend/teco3.c
@@ -1,44 +1,44 @@
/* sane - Scanner Access Now Easy.
Copyright (C) 2002 Frank Zago (sane at zago dot net)
-
+
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
-
+
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
-
+
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/*
@@ -629,7 +629,7 @@ get_filled_data_length (Teco_Scanner * dev, size_t * to_read)
if (dev->buffer[17] == 0x07)
{
/* There is no RAM extension present. The colors will
- * be shifted and the backend will need to fix that.
+ * be shifted and the backend will need to fix that.
*/
dev->does_color_shift = 1;
}
@@ -1065,7 +1065,7 @@ teco_init_options (Teco_Scanner * dev)
(SANE_String_Const *) scan_mode_list[0], NULL);
}
-/*
+/*
* Wait until the scanner is ready.
*/
static SANE_Status
@@ -1101,7 +1101,7 @@ teco_wait_scanner (Teco_Scanner * dev)
return (SANE_STATUS_IO_ERROR);
}
-/*
+/*
* Get the sense
*/
static SANE_Status
@@ -1125,19 +1125,19 @@ teco_query_sense (Teco_Scanner * dev)
return (status);
}
-/*
+/*
* Adjust the rasters. This function is used during a color scan,
* because the scanner does not present a format sane can interpret
* directly.
*
* The scanner sends the colors by rasters (B then G then R), whereas
* sane is waiting for a group of 3 bytes per color. To make things
- * funnier, the rasters are shifted. The format of those raster is:
+ * funnier, the rasters are shifted. The format of those raster is:
* BGR...BGR
*
* For a proper scan, the first 2 R and 1 G, and the last 1 G and 2 B
* must be ignored. (TODO)
- *
+ *
* So this function reorders all that mess. It gets the input from
* dev->buffer and write the output in dev->image. size_in the the
* length of the valid data in dev->buffer. */
@@ -1169,7 +1169,7 @@ teco_adjust_raster (Teco_Scanner * dev, size_t size_in)
return;
}
- /*
+ /*
* The color coding is one line for each color (in the RGB order).
* Recombine that stuff to create a RGB value for each pixel.
*/
@@ -1179,7 +1179,7 @@ teco_adjust_raster (Teco_Scanner * dev, size_t size_in)
for (raster = 0; raster < nb_rasters; raster++)
{
- /*
+ /*
* Find the color to which this raster belongs to.
*/
line = 0;
@@ -1295,7 +1295,7 @@ teco_fill_image (Teco_Scanner * dev)
/* Copy the complete lines, plus the incompletes
* ones. We don't keep the real end of data used
- * in image, so we copy the biggest possible.
+ * in image, so we copy the biggest possible.
*/
if (dev->scan_mode == TECO_COLOR)
{
@@ -1313,13 +1313,13 @@ teco_fill_image (Teco_Scanner * dev)
if (dev->raster_ahead + dev->image_end + dev->params.bytes_per_line >
dev->image_size)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
}
- /*
+ /*
* Try to read the maximum number of bytes.
*/
size = 0;
@@ -1346,7 +1346,7 @@ teco_fill_image (Teco_Scanner * dev)
if (size == 0)
{
- /* Probably reached the end of the buffer.
+ /* Probably reached the end of the buffer.
* Check, just in case. */
assert (dev->image_end != 0);
return (SANE_STATUS_GOOD);
@@ -1401,7 +1401,7 @@ teco_fill_image (Teco_Scanner * dev)
return (SANE_STATUS_GOOD); /* unreachable */
}
-/* Copy from the raw buffer to the buffer given by the backend.
+/* Copy from the raw buffer to the buffer given by the backend.
*
* len in input is the maximum length available in buf, and, in
* output, is the length written into buf.
diff --git a/backend/teco3.h b/backend/teco3.h
index 64e894d..4c0e1af 100644
--- a/backend/teco3.h
+++ b/backend/teco3.h
@@ -38,10 +38,10 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
-/*
+/*
$Id$
*/
@@ -267,8 +267,8 @@ enum Teco_Option
/*--------------------------------------------------------------------------*/
-/*
- * Scanner supported by this backend.
+/*
+ * Scanner supported by this backend.
*/
struct scanners_supported
{
@@ -391,7 +391,7 @@ Teco_Scanner;
/*--------------------------------------------------------------------------*/
-/* Debug levels.
+/* Debug levels.
* Should be common to all backends. */
#define DBG_error0 0
diff --git a/backend/test-picture.c b/backend/test-picture.c
index e2d81ce..46407dc 100644
--- a/backend/test-picture.c
+++ b/backend/test-picture.c
@@ -36,7 +36,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
This file implements test picture functions for the test backend.
*/
diff --git a/backend/test.c b/backend/test.c
index 2ca5b3b..3ead456 100644
--- a/backend/test.c
+++ b/backend/test.c
@@ -1375,7 +1375,7 @@ finish_pass (Test_Device * test_device)
DBG (2, "finish_pass: reader process terminated with status: %s\n",
sane_strstatus (status));
}
- test_device->reader_pid = -1;
+ sanei_thread_invalidate (test_device->reader_pid);
}
/* this happens when running in thread context... */
if (test_device->reader_fds >= 0)
@@ -1641,7 +1641,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
test_device->eof = SANE_FALSE;
test_device->scanning = SANE_FALSE;
test_device->cancelled = SANE_FALSE;
- test_device->reader_pid = -1;
+ sanei_thread_initialize (test_device->reader_pid);
test_device->pipe = -1;
DBG (4, "sane_init: new device: `%s' is a %s %s %s\n",
test_device->sane.name, test_device->sane.vendor,
@@ -2521,7 +2521,7 @@ sane_start (SANE_Handle handle)
{
test_device->number_of_scans++;
DBG (3, "sane_start: scanning page %d\n", test_device->number_of_scans);
-
+
if ((strcmp (test_device->val[opt_scan_source].s, "Automatic Document Feeder") == 0) &&
(((test_device->number_of_scans) % 11) == 0))
{
diff --git a/backend/u12-ccd.c b/backend/u12-ccd.c
index 3f1ad77..fdbb54e 100644
--- a/backend/u12-ccd.c
+++ b/backend/u12-ccd.c
@@ -483,7 +483,7 @@ static void fnCCDInitWolfson3799( U12_Device *dev )
}
}
-/**
+/**
*/
static void fnCCDInitWolfson548( U12_Device *dev )
{
@@ -788,7 +788,7 @@ static void fnDACDarkWolfson( U12_Device *dev, ShadingVarDef *sTbl,
if ((short) w < 0)
w = 0;
-
+
if( w != (u_short)dev->shade.DarkDAC.bColors[dwCh] ) {
dev->shade.DarkDAC.bColors [dwCh] = (SANE_Byte)w;
dev->shade.fStop = SANE_FALSE;
@@ -926,7 +926,7 @@ static void u12ccd_InitCCDandDAC( U12_Device *dev, SANE_Bool shading )
DBG( _DBG_INFO, "* DAC: Samsung 1224\n" );
switch( dev->CCDID ) {
-
+
case _CCD_3797:
DBG( _DBG_INFO, "* CCD-3797\n" );
pDAC_CCD = ShadingVar3797;
diff --git a/backend/u12-hw.c b/backend/u12-hw.c
index e21c78a..fb81ee6 100644
--- a/backend/u12-hw.c
+++ b/backend/u12-hw.c
@@ -216,7 +216,7 @@ static void u12hw_InitiateComponentModel( U12_Device *dev )
dev->regs.RD_MotorDriverType |= _MOTORR_WEAK;
/* } */
}
-
+
/**
*/
static SANE_Status u12hw_InitAsic( U12_Device *dev, SANE_Bool shading )
@@ -259,7 +259,7 @@ static SANE_Status u12hw_InitAsic( U12_Device *dev, SANE_Bool shading )
if( dev->shade.intermediate & _ScanMode_Mono )
dev->regs.RD_Model1Control += _SCAN_GRAYTYPE;
- DBG( _DBG_INFO, "* MotorDrvType = 0x%02x\n", dev->regs.RD_MotorDriverType);
+ DBG( _DBG_INFO, "* MotorDrvType = 0x%02x\n", dev->regs.RD_MotorDriverType);
DBG( _DBG_INFO, "* Model1Cntrl = 0x%02x\n", dev->regs.RD_Model1Control );
#if 0
@@ -383,7 +383,7 @@ static void u12hw_SetupPreviewCondition( U12_Device *dev )
dev->scan.dwMaxReadFifo += (dev->DataInf.dwAsicBytesPerPlane / 2);
- if( dev->DataInf.wPhyDataType > COLOR_256GRAY )
+ if( dev->DataInf.wPhyDataType > COLOR_256GRAY )
dev->scan.bFifoSelect = REG_BFIFOOFFSET;
else
dev->scan.bFifoSelect = REG_GFIFOOFFSET;
@@ -714,7 +714,7 @@ static SANE_Status u12hw_Memtest( U12_Device *dev )
u12io_DataToRegister( dev, REG_WIDTHPIXELHI, 5 );
memset( buf, 0, _TEST_SIZE );
-
+
dev->regs.RD_ModeControl = _ModeReadMappingMem;
u12io_ReadData( dev, buf, _TEST_SIZE );
@@ -793,7 +793,7 @@ static void u12hw_CancelSequence( U12_Device *dev )
{
int c = 0;
SANE_Byte rb[6];
-
+
DBG( _DBG_INFO, "u12hw_CancelSequence()\n" );
u12motor_PositionModuleToHome( dev );
@@ -888,7 +888,7 @@ static void usb_LampTimerIrq( int sig )
} else if( tmp & _TPALAMP_ON ) {
DBG( _DBG_INFO, "* TPA lamp is ON\n" );
}
-
+
u12io_DataToRegister( dev_xxx, REG_SCANCONTROL, 0 );
u12io_CloseScanPath( dev_xxx );
}
diff --git a/backend/u12-hwdef.h b/backend/u12-hwdef.h
index ac86cf5..43ea64f 100644
--- a/backend/u12-hwdef.h
+++ b/backend/u12-hwdef.h
@@ -224,7 +224,7 @@
#define _MotorHFullStepH 0x00
#define _MotorHHalfStep 0x04
#define _MotorHQuarterStep 0x08
-#define _MotorPowerEnable 0x40
+#define _MotorPowerEnable 0x40
#define _MotorHHomeStop 0x80
#define _DIR_FW 1
@@ -269,7 +269,7 @@
#define _AGFA_PCB 0x1f
/* Register RegModelControl (Addr: 0x1f) */
-#define _HOME_SENSOR_POLARITY 0x01
+#define _HOME_SENSOR_POLARITY 0x01
#define _LED_CONTROL 0x02
#define _LED_ACTIVITY 0x04
#define _MODEL_DPI200 0x00
@@ -393,7 +393,7 @@
#define _DEFAULT_LINESCANTIME 96
-#define _LINE_TIMEOUT (_SECOND * 5 )
+#define _LINE_TIMEOUT (_SECOND * 5 )
/** for mirroring parts of the 98003 ASIC register set
@@ -439,7 +439,7 @@ typedef struct svd
SANE_Byte Reserved;
} ShadingVarDef;
-typedef struct
+typedef struct
{
ShadingVarDef *pCcdDac;
ColorByte DarkDAC;
diff --git a/backend/u12-if.c b/backend/u12-if.c
index be213b4..91a8c1f 100644
--- a/backend/u12-if.c
+++ b/backend/u12-if.c
@@ -68,7 +68,7 @@ typedef struct {
#define _PLUSTEK_VENID 0x07B3
#define _KYE_VENID 0x0458
-
+
/** to allow different vendors...
*/
static TabDef u12Vendors[] = {
@@ -148,7 +148,7 @@ static void u12if_shutdown( U12_Device *dev )
DBG( _DBG_INFO, "Shutdown called (dev->fd=%d, %s)\n",
dev->fd, dev->sane.name );
if( SANE_STATUS_GOOD == sanei_usb_open( dev->sane.name, &handle )) {
-
+
dev->fd = handle;
u12io_OpenScanPath( dev );
@@ -234,7 +234,7 @@ static SANE_Bool usbDev_autodetect( SANE_Word *vendor, SANE_Word *product )
{
int i;
SANE_Word p, v;
-
+
DBG( _DBG_INFO, "Autodetection...\n" );
for( i = 0; NULL != u12Devices[i].name; i++ ) {
@@ -310,7 +310,7 @@ static int u12if_open( U12_Device *dev )
*/
free( dev->name );
dev->name = strdup( USB_devname );
- dev->sane.name = dev->name;
+ dev->sane.name = dev->name;
} else {
@@ -329,7 +329,7 @@ static int u12if_open( U12_Device *dev )
DBG(_DBG_INFO,"Vendor ID=0x%04X, Product ID=0x%04X\n",vendor,product);
if( dev->usbId[0] != '\0' ) {
-
+
if( 0 != strcmp( dev->usbId, devStr )) {
DBG( _DBG_ERROR, "Specified Vendor and Product ID "
"doesn't match with the ones\n"
@@ -340,7 +340,7 @@ static int u12if_open( U12_Device *dev )
} else {
sprintf( dev->usbId, "0x%04X-0x%04X", vendor, product );
was_empty = SANE_TRUE;
- }
+ }
} else {
@@ -397,7 +397,7 @@ static int u12if_open( U12_Device *dev )
if( dev->Tpa )
dev->sane.model = "UT12";
}
-
+
dev->initialized = SANE_TRUE;
return handle;
}
@@ -413,7 +413,7 @@ static int u12if_close( U12_Device *dev )
return 0;
}
-/**
+/**
*/
static SANE_Status u12if_getCaps( U12_Device *dev )
{
@@ -459,7 +459,7 @@ static SANE_Status u12if_getCaps( U12_Device *dev )
dev->res_list_size++;
dev->res_list[dev->res_list_size - 1] = (SANE_Int)cntr;
}
-
+
return SANE_STATUS_GOOD;
}
@@ -500,7 +500,7 @@ static SANE_Status u12if_stopScan( U12_Device *dev )
static SANE_Status u12if_prepare( U12_Device *dev )
{
SANE_Status res;
-
+
DBG( _DBG_INFO, "u12if_prepare()\n" );
u12motor_ToHomePosition( dev, SANE_TRUE );
@@ -514,11 +514,11 @@ static SANE_Status u12if_prepare( U12_Device *dev )
return res;
u12image_PrepareScaling( dev );
-
+
u12motor_ForceToLeaveHomePos( dev );
if( dev->DataInf.dwScanFlag & _SCANDEF_PREVIEW )
u12hw_SetupPreviewCondition( dev );
- else
+ else
u12hw_SetupScanningCondition( dev );
res = u12motor_WaitForPositionY( dev );
diff --git a/backend/u12-image.c b/backend/u12-image.c
index 1d9acda..df721db 100644
--- a/backend/u12-image.c
+++ b/backend/u12-image.c
@@ -217,7 +217,7 @@ static void fnColor42( U12_Device *dev, void *pb, void *img, u_long len )
{
u_short *src;
RGBUShortDef *dest;
-
+
register u_long i;
_VAR_NOT_USED( len );
@@ -317,7 +317,7 @@ u12image_GetPhysDPI( U12_Device *dev, ImgDef *img, SANE_Bool fDpiX )
return img->xyDpi.x;
} else {
-
+
if( img->xyDpi.y > dev->dpi_max_y )
return dev->dpi_max_y;
else
@@ -374,7 +374,7 @@ static void u12image_GetImageInfo( U12_Device *dev, ImgDef *image )
switch( image->wDataType ) {
- case COLOR_BW:
+ case COLOR_BW:
dev->scan.DataProcess = fnDataDirect;
dev->DataInf.wPhyDataType = COLOR_BW;
dev->shade.intermediate = _ScanMode_Mono;
@@ -407,7 +407,7 @@ static void u12image_GetImageInfo( U12_Device *dev, ImgDef *image )
/* raus mit einem von beiden!!!!*/
dev->DataInf.dwAppBytesPerLine = dev->DataInf.dwAppPhyBytesPerLine;
-
+
DBG( _DBG_INFO, "AppLinesPerArea = %lu\n", dev->DataInf.dwAppLinesPerArea );
DBG( _DBG_INFO, "AppPixelsPerLine = %lu\n", dev->DataInf.dwAppPixelsPerLine );
DBG( _DBG_INFO, "AppPhyBytesPerLine = %lu\n", dev->DataInf.dwAppPhyBytesPerLine );
@@ -418,7 +418,7 @@ static void u12image_GetImageInfo( U12_Device *dev, ImgDef *image )
DBG( _DBG_INFO, "Physical Bytes = %lu\n", dev->DataInf.dwPhysBytesPerLine );
}
-/**
+/**
*/
static int imageSetupScanSettings( U12_Device *dev, ImgDef *img )
{
@@ -483,7 +483,7 @@ static SANE_Status u12image_SetupScanSettings( U12_Device *dev, ImgDef *img )
wPreviewScanned = 0;
dev->scan.dpiIdx = 0;
dev->scan.negScan = negScan;
-
+
imageSetupScanSettings( dev, img );
if( !(dev->DataInf.dwScanFlag & _SCANDEF_TPA )) {
@@ -816,7 +816,7 @@ static void u12image_PrepareScaling( U12_Device *dev )
dev->DataInf.xyAppDpi.x, dev->dpi_max_x );
if( dev->DataInf.xyAppDpi.x > dev->dpi_max_x ) {
-
+
dev->scaleBuf = malloc( dev->DataInf.dwAppBytesPerLine );
ratio = (double)dev->DataInf.xyAppDpi.x/(double)dev->dpi_max_x;
@@ -837,7 +837,7 @@ static void u12image_PrepareScaling( U12_Device *dev )
} else {
DBG( _DBG_INFO, "u12image_PrepareScaling: DISABLED\n" );
- }
+ }
}
/** scaling picture data in x-direction, using a DDA algorithm
diff --git a/backend/u12-io.c b/backend/u12-io.c
index cd65b72..3c5bcb8 100644
--- a/backend/u12-io.c
+++ b/backend/u12-io.c
@@ -182,7 +182,7 @@ gl640WriteControl(int fd, GL640_Request req, u_char * data, unsigned int size)
/* ind */ 0,
/* len */ size,
/* dat */ data);
-
+
if( status != SANE_STATUS_GOOD ) {
DBG( _DBG_ERROR, "gl640WriteControl error\n");
}
@@ -507,7 +507,7 @@ static SANE_Status u12io_DataToRegs( U12_Device *dev, SANE_Byte *buf, int len )
return SANE_STATUS_GOOD;
}
-/** write data to the DAC
+/** write data to the DAC
*/
static void
u12io_DataRegisterToDAC( U12_Device *dev, SANE_Byte reg, SANE_Byte val )
@@ -619,7 +619,7 @@ static SANE_Bool u12io_IsConnected( U12_Device *dev )
dev->mode = mode ;
}
return SANE_FALSE;
- }
+ }
u12io_SwitchToEPPMode( dev );
DBG( _DBG_INFO, "* Scanner is connected!\n" );
@@ -693,7 +693,7 @@ static SANE_Status u12io_DownloadScanStates( U12_Device *dev )
dev->scanStates, _SCANSTATE_BYTES ));
bulk_setup_data[1] = 0x11;
-/* FIXME: refreshState probably always FALSE */
+/* FIXME: refreshState probably always FALSE */
if( dev->scan.refreshState ) {
u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE );
@@ -724,7 +724,7 @@ static void u12io_PutOnAllRegisters( U12_Device *dev )
c = 0;
rb = buf;
-
+
*(rb++) = REG_MODECONTROL;
*(rb++) = dev->regs.RD_ModeControl;
c++;
@@ -780,7 +780,7 @@ static u_long u12io_GetFifoLength( U12_Device *dev )
DBG( _DBG_READ, "Using cached FIFO len\n" );
memcpy( data, cacheLen, 13 );
u12io_ResetFifoLen();
-
+
} else {
memset( bulk_setup_data, 0, 8 );
diff --git a/backend/u12-motor.c b/backend/u12-motor.c
index c3d5120..5f28236 100644
--- a/backend/u12-motor.c
+++ b/backend/u12-motor.c
@@ -91,7 +91,7 @@ static void u12motor_Force16Steps( U12_Device *dev, int dir )
static void u12motor_ModuleFreeRun( U12_Device *dev, u_long steps )
{
SANE_Byte rb[6];
-
+
rb[0] = REG_MOTORFREERUNCOUNT1; rb[1] = _HIBYTE(steps);
rb[2] = REG_MOTORFREERUNCOUNT0; rb[3] = _LOBYTE(steps);
rb[4] = REG_MOTORFREERUNTRIGGER; rb[5] = 0;
@@ -124,7 +124,7 @@ static SANE_Status u12motor_PositionYProc( U12_Device *dev, u_long steps )
if( u12io_IsEscPressed()) {
DBG( _DBG_INFO, "* CANCEL detected!\n" );
return SANE_STATUS_CANCELLED;
- }
+ }
} while( !u12io_CheckTimer( &timer ));
DBG( _DBG_INFO, "u12motor_PositionYProc() - done\n" );
@@ -289,7 +289,7 @@ static SANE_Status u12motor_ModuleToHome( U12_Device *dev )
res = u12motor_PositionYProc( dev, 40 );
if( SANE_STATUS_GOOD != res )
return res;
-
+
res = u12motor_BackToHomeSensor( dev );
if( SANE_STATUS_GOOD != res )
return res;
@@ -382,7 +382,7 @@ static SANE_Status u12motor_WaitForPositionY( U12_Device *dev )
while(( u12io_GetExtendedStatus( dev ) & _STILL_FREE_RUNNING) &&
!u12io_CheckTimer(&timer));
- u12io_DataToRegister( dev, REG_MODECONTROL, _ModeScan );
+ u12io_DataToRegister( dev, REG_MODECONTROL, _ModeScan );
} else {
u12motor_PositionYProc( dev, dwBeginY );
u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE );
@@ -425,7 +425,7 @@ static SANE_Status u12motor_GotoShadingPosition( U12_Device *dev )
SANE_Byte rb[20];
SANE_Status res;
int c;
-
+
DBG( _DBG_INFO, "u12motor_GotoShadingPosition()\n" );
res = u12motor_ModuleToHome( dev );
if( SANE_STATUS_GOOD == res )
diff --git a/backend/u12-scanner.h b/backend/u12-scanner.h
index be0c200..c2e9cc8 100644
--- a/backend/u12-scanner.h
+++ b/backend/u12-scanner.h
@@ -61,7 +61,7 @@ typedef double TimerDef;
#define _DODELAY(msecs) u12io_udelay(1000*msecs)
/*{ int i; for( i = msecs; i--; ) _DO_UDELAY(1000); }*/
#else
-#define _DODELAY(msecs)
+#define _DODELAY(msecs)
#endif
/* ModuleStates */
diff --git a/backend/u12-shading.c b/backend/u12-shading.c
index e31c7ee..76cc690 100644
--- a/backend/u12-shading.c
+++ b/backend/u12-shading.c
@@ -795,7 +795,7 @@ static SANE_Status u12shading_DoCalibration( U12_Device *dev )
SANE_Byte bScanControl, rb[20];
SANE_Status res;
int c;
-
+
DBG( _DBG_INFO, "u12shading_DoCalibration()\n" );
/** before getting the shading data, (re)init the ASIC
@@ -847,7 +847,7 @@ static SANE_Status u12shading_DoCalibration( U12_Device *dev )
res = u12shading_AdjustRGBGain( dev );
if( SANE_STATUS_GOOD != res )
return res;
-
+
res = u12shadingAdjustDark( dev );
if( SANE_STATUS_GOOD != res )
return res;
diff --git a/backend/u12.c b/backend/u12.c
index 083d9f3..57e1f63 100644
--- a/backend/u12.c
+++ b/backend/u12.c
@@ -161,9 +161,9 @@ static const SANE_String_Const src_list[] =
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX( 100), /* maximum */
+ SANE_FIX( 1) /* quantization */
};
/* authorization stuff */
@@ -307,7 +307,7 @@ static int reader_process( void *args )
struct SIGACTION act;
sigset_t ignore_set;
SANE_Status status;
-
+
U12_Scanner *scanner = (U12_Scanner *)args;
if( sanei_thread_is_forked()) {
@@ -348,11 +348,11 @@ static int reader_process( void *args )
DBG( _DBG_FATAL, "NULL Pointer !!!!\n" );
return SANE_STATUS_IO_ERROR;
}
-
+
/* here we read all data from the scanner... */
buf = scanner->buf;
status = u12if_prepare( scanner->hw );
-
+
if( SANE_STATUS_GOOD == status ) {
for( line = 0; line < scanner->params.lines; line++ ) {
@@ -393,7 +393,7 @@ static SANE_Status do_cancel( U12_Scanner *scanner, SANE_Bool closepipe )
if( sanei_thread_is_valid (scanner->reader_pid) ) {
- DBG( _DBG_PROC, ">>>>>>>> killing reader_process <<<<<<<<\n" );
+ DBG( _DBG_PROC, "---- killing reader_process ----\n" );
cancelRead = SANE_TRUE;
@@ -413,7 +413,7 @@ static SANE_Status do_cancel( U12_Scanner *scanner, SANE_Bool closepipe )
if( res != scanner->reader_pid ) {
DBG( _DBG_PROC,"sanei_thread_waitpid() failed !\n");
-
+
/* do it the hard way...*/
#ifdef USE_PTHREAD
sanei_thread_kill( scanner->reader_pid );
@@ -421,7 +421,7 @@ static SANE_Status do_cancel( U12_Scanner *scanner, SANE_Bool closepipe )
sanei_thread_sendsig( scanner->reader_pid, SIGKILL );
#endif
}
- scanner->reader_pid = -1;
+ sanei_thread_invalidate( scanner->reader_pid );
DBG( _DBG_PROC, "reader_process killed\n");
if( scanner->hw->fd >= 0 ) {
@@ -589,12 +589,12 @@ static SANE_Status init_options( U12_Scanner *s )
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
/* "Enhancement" group: */
- s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
+ s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
s->opt[OPT_ENHANCEMENT_GROUP].desc = "";
s->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_ENHANCEMENT_GROUP].cap = 0;
s->opt[OPT_ENHANCEMENT_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
-
+
u12map_InitGammaSettings( s->hw );
/* grayscale gamma vector */
@@ -641,7 +641,7 @@ static SANE_Status init_options( U12_Scanner *s )
s->opt[OPT_GAMMA_VECTOR_B].constraint.range = &(s->hw->gamma_range);
s->opt[OPT_GAMMA_VECTOR_B].size = s->hw->gamma_length * sizeof(SANE_Word);
- /* GAMMA stuff is disabled per default */
+ /* GAMMA stuff is disabled per default */
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
@@ -661,8 +661,8 @@ static SANE_Status init_options( U12_Scanner *s )
* @param dest - pointer to a string to receive the USB ID
*/
static void decodeUsbIDs( char *src, char **dest )
-{
- const char *name;
+{
+ const char *name;
char *tmp = *dest;
int len = strlen(_SECTION);
@@ -677,11 +677,11 @@ static void decodeUsbIDs( char *src, char **dest )
if( '\0' == name[0] ) {
DBG( _DBG_SANE_INIT, "next device uses autodetection\n" );
} else {
-
+
u_short pi = 0, vi = 0;
if( *name ) {
-
+
name = sanei_config_get_string( name, &tmp );
if( tmp ) {
vi = strtol( tmp, 0, 0 );
@@ -691,7 +691,7 @@ static void decodeUsbIDs( char *src, char **dest )
name = sanei_config_skip_whitespace( name );
if( *name ) {
-
+
name = sanei_config_get_string( name, &tmp );
if( tmp ) {
pi = strtol( tmp, 0, 0 );
@@ -733,14 +733,14 @@ static SANE_Bool decodeVal( char *src, char *opt,
/* on success, compare wiht the given one */
if( 0 == strcmp( tmp, opt )) {
-
+
DBG( _DBG_SANE_INIT, "Decoding option >%s<\n", opt );
if( _INT == what ) {
-
+
/* assign the default value for this option... */
*((int*)result) = *((int*)def);
-
+
if( *name ) {
/* get the configuration value and decode it */
@@ -751,14 +751,14 @@ static SANE_Bool decodeVal( char *src, char *opt,
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
-
+
} else if( _FLOAT == what ) {
-
+
/* assign the default value for this option... */
*((double*)result) = *((double*)def);
-
+
if( *name ) {
/* get the configuration value and decode it */
@@ -769,13 +769,13 @@ static SANE_Bool decodeVal( char *src, char *opt,
free( tmp2 );
}
}
- free( tmp );
+ free( tmp );
return SANE_TRUE;
}
- }
+ }
free( tmp );
}
-
+
return SANE_FALSE;
}
@@ -788,27 +788,27 @@ static SANE_Bool decodeVal( char *src, char *opt,
*/
static SANE_Bool decodeDevName( char *src, char *dest )
{
- char *tmp;
+ char *tmp;
const char *name;
if( 0 == strncmp( "device", src, 6 )) {
name = (const char*)&src[strlen("device")];
name = sanei_config_skip_whitespace( name );
-
+
DBG( _DBG_SANE_INIT, "Decoding device name >%s<\n", name );
-
+
if( *name ) {
name = sanei_config_get_string( name, &tmp );
if( tmp ) {
-
+
strcpy( dest, tmp );
free( tmp );
return SANE_TRUE;
}
- }
+ }
}
-
+
return SANE_FALSE;
}
@@ -842,7 +842,7 @@ static SANE_Status attach( const char *dev_name,
/* assign all the stuff we need fo this device... */
memset(dev, 0, sizeof (*dev));
-
+
dev->fd = -1;
dev->name = strdup(dev_name); /* hold it double to avoid */
dev->sane.name = dev->name; /* compiler warnings */
@@ -855,7 +855,7 @@ static SANE_Status attach( const char *dev_name,
show_cnf( cnf );
strncpy( dev->usbId, cnf->usbId, _MAX_ID_LEN );
-
+
/* go ahead and open the scanner device */
handle = u12if_open( dev );
if( handle < 0 ) {
@@ -939,7 +939,7 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
first_handle = NULL;
num_devices = 0;
- /* initialize the configuration structure */
+ /* initialize the configuration structure */
init_config_struct( &config );
if( version_code != NULL )
@@ -953,26 +953,26 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
}
while( sanei_config_read( str, sizeof(str), fp)) {
-
+
DBG( _DBG_SANE_INIT, ">%s<\n", str );
if( str[0] == '#') /* ignore line comments */
continue;
-
+
len = strlen(str);
if( 0 == len )
continue; /* ignore empty lines */
/* check for options */
if( 0 == strncmp(str, "option", 6)) {
-
+
int ival;
double dval;
-
+
ival = -1;
decodeVal( str, "warmup", _INT, &config.adj.warmup, &ival);
decodeVal( str, "lampOff", _INT, &config.adj.lampOff, &ival);
decodeVal( str, "lOffOnEnd", _INT, &config.adj.lampOffOnEnd,&ival);
-
+
ival = 0;
dval = 1.5;
@@ -984,9 +984,9 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
/* check for sections: */
} else if( 0 == strncmp( str, _SECTION, strlen(_SECTION))) {
-
+
char *tmp;
-
+
/* new section, try and attach previous device */
if( config.devName[0] != '\0' ) {
attach( config.devName, &config, 0 );
@@ -996,20 +996,20 @@ SANE_Status sane_init( SANE_Int *version_code, SANE_Auth_Callback authorize )
" ignored!\n" );
}
}
-
+
/* re-initialize the configuration structure */
init_config_struct( &config );
-
+
tmp = config.usbId;
decodeUsbIDs( str, &tmp );
-
+
DBG( _DBG_SANE_INIT, "... next device\n" );
- continue;
+ continue;
} else if( SANE_TRUE == decodeDevName( str, config.devName )) {
continue;
}
-
+
/* ignore other stuff... */
DBG( _DBG_SANE_INIT, "ignoring >%s<\n", str );
}
@@ -1107,7 +1107,7 @@ SANE_Status sane_open( SANE_String_Const devicename, SANE_Handle* handle )
if( !dev ) {
memset( &config, 0, sizeof(CnfDef));
-
+
status = attach( devicename, &config, &dev );
if( SANE_STATUS_GOOD != status )
return status;
@@ -1137,7 +1137,7 @@ SANE_Status sane_open( SANE_String_Const devicename, SANE_Handle* handle )
first_handle = s;
*handle = s;
-
+
return SANE_STATUS_GOOD;
}
@@ -1201,7 +1201,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
int idx;
#endif
int scanmode;
-
+
if ( s->scanning )
return SANE_STATUS_DEVICE_BUSY;
@@ -1306,7 +1306,7 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
if( NULL != info )
*info |= SANE_INFO_RELOAD_PARAMS;
break;
-
+
case OPT_CUSTOM_GAMMA:
s->val[option].w = *(SANE_Word *)value;
if( NULL != info )
@@ -1325,26 +1325,26 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
if( SANE_TRUE == s->val[option].w ) {
-
+
if( scanmode == COLOR_256GRAY ) {
s->opt[OPT_GAMMA_VECTOR].cap &= ~SANE_CAP_INACTIVE;
} else {
s->opt[OPT_GAMMA_VECTOR_R].cap &= ~SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap &= ~SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap &= ~SANE_CAP_INACTIVE;
- }
-
+ }
+
} else {
-
+
u12map_InitGammaSettings( s->hw );
-
+
if( scanmode == COLOR_256GRAY ) {
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
- } else {
+ } else {
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
- }
+ }
}
break;
@@ -1355,26 +1355,26 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
break;
#ifdef ALL_MODES
- case OPT_MODE:
+ case OPT_MODE:
idx = (optval - mode_list);
mp = getModeList( s );
-
+
s->opt[OPT_CONTRAST].cap &= ~SANE_CAP_INACTIVE;
s->opt[OPT_CUSTOM_GAMMA].cap &= ~SANE_CAP_INACTIVE;
if( mp[idx].scanmode == COLOR_BW ) {
s->opt[OPT_CONTRAST].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_INACTIVE;
- }
-
+ }
+
s->opt[OPT_GAMMA_VECTOR].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_R].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_G].cap |= SANE_CAP_INACTIVE;
s->opt[OPT_GAMMA_VECTOR_B].cap |= SANE_CAP_INACTIVE;
-
+
if( s->val[OPT_CUSTOM_GAMMA].w &&
!(s->opt[OPT_CUSTOM_GAMMA].cap & SANE_CAP_INACTIVE)) {
-
+
if( mp[idx].scanmode == COLOR_256GRAY ) {
s->opt[OPT_GAMMA_VECTOR].cap &= ~SANE_CAP_INACTIVE;
} else {
@@ -1595,7 +1595,7 @@ SANE_Status sane_start( SANE_Handle handle )
u12if_close( dev );
return SANE_STATUS_IO_ERROR;
}
-
+
/* All ready to go. Set image def and see what the scanner
* says for crop info.
*/
@@ -1728,9 +1728,9 @@ SANE_Status sane_start( SANE_Handle handle )
s->r_pipe = fds[0];
s->w_pipe = fds[1];
s->reader_pid = sanei_thread_begin( reader_process, s );
-
+
cancelRead = SANE_FALSE;
-
+
if( !sanei_thread_is_valid (s->reader_pid) ) {
DBG( _DBG_ERROR, "ERROR: could not start reader task\n" );
s->scanning = SANE_FALSE;
@@ -1743,7 +1743,7 @@ SANE_Status sane_start( SANE_Handle handle )
close( s->w_pipe );
s->w_pipe = -1;
}
-
+
DBG( _DBG_SANE_INIT, "sane_start done\n" );
return SANE_STATUS_GOOD;
}
@@ -1773,7 +1773,7 @@ SANE_Status sane_read( SANE_Handle handle, SANE_Byte *data,
if( s->bytes_read ==
(unsigned long)(s->params.lines * s->params.bytes_per_line)) {
sanei_thread_waitpid( s->reader_pid, 0 );
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
drvClose( s->hw );
return drvClosePipes(s);
}
@@ -1801,7 +1801,7 @@ SANE_Status sane_read( SANE_Handle handle, SANE_Byte *data,
drvClosePipes(s);
return s->exit_code;
}
- s->reader_pid = -1;
+ sanei_thread_invalidate( s->reader_pid );
return drvClosePipes(s);
}
@@ -1837,9 +1837,9 @@ SANE_Status sane_set_io_mode( SANE_Handle handle, SANE_Bool non_blocking )
DBG( _DBG_ERROR, "ERROR: not supported !\n" );
return SANE_STATUS_UNSUPPORTED;
}
-
+
if( fcntl (s->r_pipe, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0) {
- DBG( _DBG_ERROR, "ERROR: cant set to non-blocking mode !\n" );
+ DBG( _DBG_ERROR, "ERROR: can´t set to non-blocking mode !\n" );
return SANE_STATUS_IO_ERROR;
}
diff --git a/backend/u12.conf.in b/backend/u12.conf.in
index c5457cb..baeea79 100644
--- a/backend/u12.conf.in
+++ b/backend/u12.conf.in
@@ -63,5 +63,5 @@ device auto
#
# to define a new device, start with a new section:
-# [usb]
+# [usb]
#
diff --git a/backend/u12.h b/backend/u12.h
index 5d18c96..41b19b9 100644
--- a/backend/u12.h
+++ b/backend/u12.h
@@ -72,7 +72,7 @@ typedef union
#define _MEASURE_BASE 300UL
#define _DEF_DPI 50
-/** the default image
+/** the default image
*/
#define _DEFAULT_TLX 0
#define _DEFAULT_TLY 0
@@ -184,7 +184,7 @@ typedef struct {
double graygamma;
/* for adjusting scan-area */
- long upNormal;
+ long upNormal;
long upPositive;
long upNegative;
long leftNormal;
@@ -240,7 +240,7 @@ typedef struct u12d
SANE_Int res_list_size; /* resolution values */
ScannerCaps caps; /* caps reported by the driver */
AdjDef adj; /* for driver adjustment */
-
+
char usbId[_MAX_ID_LEN];/* to keep Vendor and product */
/* ID string (from conf) file */
/* our gamma tables */
@@ -322,7 +322,7 @@ typedef struct u12s
/** for collecting configuration info...
*/
typedef struct {
-
+
char devName[PATH_MAX];
char usbId[_MAX_ID_LEN];
diff --git a/backend/umax-scanner.c b/backend/umax-scanner.c
index 21f24ce..03bca0e 100644
--- a/backend/umax-scanner.c
+++ b/backend/umax-scanner.c
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------- */
/* umax-scanner.c: scanner-definiton file for UMAX scanner driver.
-
+
(C) 1997-2004 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -39,7 +39,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
-
+
*/
/* -------------------------------------------------------------------- */
@@ -95,9 +95,9 @@ static char *scanner_str[] =
"UMAX ", "Astra 600S ",
"UMAX ", "Astra 610S ",
"UMAX ", "Astra 1200S ",
- "UMAX ", "Astra 1220S ",
- "UMAX ", "Astra 2100S ",
- "UMAX ", "Astra 2200 ",
+ "UMAX ", "Astra 1220S ",
+ "UMAX ", "Astra 2100S ",
+ "UMAX ", "Astra 2200 ",
"UMAX ", "Astra 2400S ",
/* "UMAX ", "Astra 6400 ", */ /* this is a firewire scanner */
/* "UMAX ", "Astra 6450 ", */ /* this is a firewire scanner */
@@ -124,8 +124,8 @@ static char *scanner_str[] =
"HDM ", "LS4H1S ", /* Linoscan 1400 */
"Nikon ", "AX-110 ", /* is a Vista S6E */
"Nikon ", "AX-210 ", /* is a Supervista S12 */
- "KYE ", "ColorPage-HR5 ",
- "EPSON ", "Perfection600 ",
+ "KYE ", "ColorPage-HR5 ",
+ "EPSON ", "Perfection600 ",
"ESCORT ", "Galleria 600S ", /* is an Astra 600S */
"EDGE ", "KTX-9600US ", /* may be an Astra 1220S */
"TriGem ", "PowerScanII ", /* is a Supervista S12 */
@@ -133,4 +133,3 @@ static char *scanner_str[] =
};
/* ==================================================================== */
-
diff --git a/backend/umax-scanner.h b/backend/umax-scanner.h
index 6c9a93a..da10b7b 100644
--- a/backend/umax-scanner.h
+++ b/backend/umax-scanner.h
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------- */
/* umax-scanner.h: scanner-definiton header-file for UMAX scanner driver.
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -39,7 +39,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
-
+
*/
/* -------------------------------------------------------------------- */
@@ -58,4 +58,3 @@ typedef struct
} inquiry_blk;
#endif
-
diff --git a/backend/umax-scsidef.h b/backend/umax-scsidef.h
index f192e2c..ddb04bb 100644
--- a/backend/umax-scsidef.h
+++ b/backend/umax-scsidef.h
@@ -287,9 +287,9 @@ static scsiblk inquiry = { inquiryC, sizeof(inquiryC) };
#define get_inquiry_0x65(in) in[0x65]
#define get_inquiry_gib(in) in[0x66]
-#define get_inquiry_gib_8bpp(in) getbitfield(in + 0x66, 1, 0)
+#define get_inquiry_gib_8bpp(in) getbitfield(in + 0x66, 1, 0)
#define get_inquiry_gib_9bpp(in) getbitfield(in + 0x66, 1, 1)
-#define get_inquiry_gib_10bpp(in) getbitfield(in + 0x66, 1, 2)
+#define get_inquiry_gib_10bpp(in) getbitfield(in + 0x66, 1, 2)
#define get_inquiry_gib_12bpp(in) getbitfield(in + 0x66, 1, 3)
#define get_inquiry_gib_14bpp(in) getbitfield(in + 0x66, 1, 4)
#define get_inquiry_gib_16bpp(in) getbitfield(in + 0x66, 1, 5)
@@ -301,9 +301,9 @@ static scsiblk inquiry = { inquiryC, sizeof(inquiryC) };
#define get_inquiry_0x67(in) in[0x67]
#define get_inquiry_gob(in) in[0x68]
-#define get_inquiry_gob_8bpp(in) getbitfield(in + 0x68, 1, 0)
+#define get_inquiry_gob_8bpp(in) getbitfield(in + 0x68, 1, 0)
#define get_inquiry_gob_9bpp(in) getbitfield(in + 0x68, 1, 1)
-#define get_inquiry_gob_10bpp(in) getbitfield(in + 0x68, 1, 2)
+#define get_inquiry_gob_10bpp(in) getbitfield(in + 0x68, 1, 2)
#define get_inquiry_gob_12bpp(in) getbitfield(in + 0x68, 1, 3)
#define get_inquiry_gob_14bpp(in) getbitfield(in + 0x68, 1, 4)
#define get_inquiry_gob_16bpp(in) getbitfield(in + 0x68, 1, 5)
@@ -653,7 +653,7 @@ static unsigned char window_descriptor_blockC[] =
# define WD_calibration_lineart 0x0f
# define WD_calibration_dither 0x0e
# define WD_calibration_gray 0x0d
-# define WD_calibration_rgb 0x0a
+# define WD_calibration_rgb 0x0a
# define WD_calibration_ignore 0x09
/* 0x3a */ 0x01, /* Color Sequence, Color Ordering Support */
@@ -722,7 +722,7 @@ static scsiblk window_descriptor_block = { window_descriptor_blockC, sizeof(wind
/* --------------------------------------------------------------------------------------------------------- */
-
+
#define set_WDB_length(length) (window_descriptor_block.size = (length))
#define WPDB_OFF(b) (b + set_window.size)
@@ -744,7 +744,7 @@ static scsiblk scan = { scanC, sizeof(scanC) - 3 };
#define set_SC_quality(sb, val) setbitfield(sb + 0x05, 1, 5, val)
#define set_SC_adf(sb, val) setbitfield(sb + 0x05, 1, 6, val)
#define set_SC_preview(sb, val) setbitfield(sb + 0x05, 1, 7, val)
-#define set_SC_wid(sb, n, val) sb[0x05 + n] = val
+#define set_SC_wid(sb, n, val) sb[0x05 + n] = val
/* --------------------------------------------------------------------------------------------------------- */
@@ -907,12 +907,12 @@ static scsiblk request_sense = { request_senseC, sizeof(request_senseC) };
#define get_RS_filemark(b) getbitfield(b + 0x02, 1, 7)
#define get_RS_EOM(b) getbitfield(b + 0x02, 1, 6)
#define get_RS_ILI(b) getbitfield(b + 0x02, 1, 5)
-#define get_RS_sense_key(b) getbitfield(b + 0x02, 0x0f, 0)
-#define get_RS_information(b) getnbyte(b+0x03, 4)
+#define get_RS_sense_key(b) getbitfield(b + 0x02, 0x0f, 0)
+#define get_RS_information(b) getnbyte(b+0x03, 4)
#define get_RS_additional_length(b) b[0x07]
#define get_RS_ASC(b) b[0x0c]
#define get_RS_ASCQ(b) b[0x0d]
-#define get_RS_SKSV(b) getbitfield(b+0x0f,1,7) /* valid */
+#define get_RS_SKSV(b) getbitfield(b+0x0f,1,7) /* valid */
#define get_RS_CD(b) getbitfield(b+0x0f,1,6) /* 1=CDB */
#define get_RS_field_pointer(b) getnbyte(b+0x10, 2)
diff --git a/backend/umax-uc1200s.c b/backend/umax-uc1200s.c
index 97e5416..5569a2b 100644
--- a/backend/umax-uc1200s.c
+++ b/backend/umax-uc1200s.c
@@ -2,7 +2,7 @@
/* ------------------------------------------------------------------------- */
/* umax-uc1200s.c: inquiry for UMAX scanner uc1200s
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -59,13 +59,13 @@ static unsigned char UC1200S_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -78,7 +78,7 @@ static unsigned char UC1200S_INQUIRY[] =
/* 60 -62 scanner capability*/
0x2f,
0x0c,
- 0x07,
+ 0x07,
/* 63 reserved */
0x00,
@@ -151,7 +151,7 @@ static unsigned char UC1200S_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
diff --git a/backend/umax-uc1200se.c b/backend/umax-uc1200se.c
index defe65a..f1e8e31 100644
--- a/backend/umax-uc1200se.c
+++ b/backend/umax-uc1200se.c
@@ -2,7 +2,7 @@
/* ------------------------------------------------------------------------- */
/* umax-uc1200se.c: inquiry for UMAX scanner uc1200se
-
+
(C) 1998-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -59,13 +59,13 @@ static unsigned char UC1200SE_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -78,7 +78,7 @@ static unsigned char UC1200SE_INQUIRY[] =
/* 60 -62 scanner capability*/
0x3e,
0x0c,
- 0x03,
+ 0x03,
/* 63 reserved */
0x00,
@@ -151,7 +151,7 @@ static unsigned char UC1200SE_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
diff --git a/backend/umax-uc1260.c b/backend/umax-uc1260.c
index 7743cd4..4de9170 100644
--- a/backend/umax-uc1260.c
+++ b/backend/umax-uc1260.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/* umax-uc1260.c: inquiry for UMAX scanner uc1260
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -58,13 +58,13 @@ static unsigned char UC1260_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -75,9 +75,9 @@ static unsigned char UC1260_INQUIRY[] =
00, 00, 00, 00, 00, 00, 00, 00,
/* 60 -62 scanner capability*/
- 0x31,
+ 0x31,
0x0c,
- 0x07,
+ 0x07,
/* 63 reserved */
0x00,
@@ -151,7 +151,7 @@ static unsigned char UC1260_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
diff --git a/backend/umax-uc630.c b/backend/umax-uc630.c
index 0fbc59f..440064c 100644
--- a/backend/umax-uc630.c
+++ b/backend/umax-uc630.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/* umax-uc630.c: inquiry for UMAX scanner uc630
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -58,13 +58,13 @@ static unsigned char UC630_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -77,7 +77,7 @@ static unsigned char UC630_INQUIRY[] =
/* 60 -62 scanner capability */
0xfd,
0x80,
- 0x03,
+ 0x03,
/* 63 reserved */
0x00,
@@ -150,7 +150,7 @@ static unsigned char UC630_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
@@ -192,4 +192,3 @@ static inquiry_blk inquiry_uc630 =
{
"UC630 ", UC630_INQUIRY, UC630_INQUIRY_LEN
};
-
diff --git a/backend/umax-uc840.c b/backend/umax-uc840.c
index 8f430fe..0592c95 100644
--- a/backend/umax-uc840.c
+++ b/backend/umax-uc840.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/* umax-uc840.c: inquiry for UMAX scanner uc840
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -58,13 +58,13 @@ static unsigned char UC840_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -77,13 +77,13 @@ static unsigned char UC840_INQUIRY[] =
/* 60 -62 scanner capability*/
0xfd,
0x8c, /* 0xbc ? */
- 0x03,
+ 0x03,
/* 63 reserved */
0x00,
/* 64 gamma */
- 0xa1,
+ 0xa1,
/* 65 reserved */
0x00,
@@ -150,7 +150,7 @@ static unsigned char UC840_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
@@ -192,4 +192,3 @@ static inquiry_blk inquiry_uc840 =
{
"UC840 ", UC840_INQUIRY, UC840_INQUIRY_LEN
};
-
diff --git a/backend/umax-ug630.c b/backend/umax-ug630.c
index 0a584b2..3a339fc 100644
--- a/backend/umax-ug630.c
+++ b/backend/umax-ug630.c
@@ -1,7 +1,7 @@
/* ------------------------------------------------------------------------- */
/* umax-ug630.c: inquiry for UMAX scanner ug630
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -58,13 +58,13 @@ static unsigned char UG630_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -150,7 +150,7 @@ static unsigned char UG630_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
@@ -192,4 +192,3 @@ static inquiry_blk inquiry_ug630 =
{
"UG630 ", UG630_INQUIRY, UG630_INQUIRY_LEN
};
-
diff --git a/backend/umax-ug80.c b/backend/umax-ug80.c
index b9d1d42..2e31d61 100644
--- a/backend/umax-ug80.c
+++ b/backend/umax-ug80.c
@@ -1,9 +1,9 @@
/* ------------------------------------------------------------------------- */
/* umax-ug80.c: inquiry for UMAX scanner ug80
-
+
(C) 1998-2002 Oliver Rauch
-
+
Thanks to Andreas Hofmeister <hofmeist@informatik.uni-freiburg.de>
for his help!
@@ -61,13 +61,13 @@ static unsigned char UG80_INQUIRY[] =
/* 28 - 29 reserved */
0x00, 0x00,
-/* 2a - 35 exposure times */
+/* 2a - 35 exposure times */
0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
-/* 36 - 37 reserved */
+/* 36 - 37 reserved */
0x00, 0x00,
/* 38 - 5f scsi reserved */
@@ -153,7 +153,7 @@ static unsigned char UG80_INQUIRY[] =
/* 8a-8b dor max scan width in 0.01 inch */
0x00, 0x00,
-
+
/* 8c-8d dor max scan length in 0.01 inch */
0x00, 0x00,
@@ -195,4 +195,3 @@ static inquiry_blk inquiry_ug80 =
{
"UG80 ",UG80_INQUIRY,UG80_INQUIRY_LEN,
};
-
diff --git a/backend/umax-usb.c b/backend/umax-usb.c
index c26aeae..75f4739 100644
--- a/backend/umax-usb.c
+++ b/backend/umax-usb.c
@@ -2,7 +2,7 @@
/* sane - Scanner Access Now Easy.
- umax-usb.c
+ umax-usb.c
(C) 2001-2002 Frank Zago
@@ -77,7 +77,7 @@ static u_char cdb_sizes[8] = {
/* Sends a CDB to the scanner. Also sends the parameters and receives
* the data, if necessary. When this function returns with a
- * SANE_STATUS_GOOD, the SCSI command has been completed.
+ * SANE_STATUS_GOOD, the SCSI command has been completed.
*
* Note: I don't know about deferred commands.
*/
@@ -88,7 +88,7 @@ static SANE_Status sanei_umaxusb_cmd(int fd, const void *src, size_t src_size, v
size_t param_size = src_size - cmd_size;
const char * param_ptr = ((const char *) src) + cmd_size;
size_t tmp_len;
-
+
DBG(DBG_info, "Sending SCSI cmd 0x%02x cdb len %ld, param len %ld, result len %ld\n", ((const unsigned char *)src)[0], (long)cmd_size, (long)param_size, dst_size? (long)*dst_size:(long)0);
/* This looks like some kind of pre-initialization. */
@@ -100,7 +100,7 @@ static SANE_Status sanei_umaxusb_cmd(int fd, const void *src, size_t src_size, v
sanei_pv8630_write_byte(fd, PV8630_RMODE, 0x16);
sanei_pv8630_flush_buffer(fd);
sanei_pv8630_prep_bulkwrite(fd, cmd_size);
-
+
tmp_len = cmd_size;
sanei_pv8630_bulkwrite(fd, src, &tmp_len);
sanei_pv8630_wait_byte(fd, PV8630_RSTATUS, 0xf8, 0xff, 1000);
@@ -118,19 +118,19 @@ static SANE_Status sanei_umaxusb_cmd(int fd, const void *src, size_t src_size, v
}
return(SANE_STATUS_IO_ERROR);
}
-
+
/* Send the parameters and check they've been received OK. */
if (param_size) {
sanei_pv8630_flush_buffer(fd);
sanei_pv8630_prep_bulkwrite(fd, param_size);
-
+
tmp_len = param_size;
sanei_pv8630_bulkwrite(fd, param_ptr, &tmp_len);
sanei_pv8630_wait_byte(fd, PV8630_RSTATUS, 0xf8, 0xff, 1000);
-
+
sanei_pv8630_flush_buffer(fd);
sanei_pv8630_prep_bulkread(fd, 1);
-
+
result = 0xA5; /* to be sure */
tmp_len = 1;
sanei_pv8630_bulkread(fd, &result, &tmp_len);
@@ -174,7 +174,7 @@ static SANE_Status sanei_umaxusb_cmd(int fd, const void *src, size_t src_size, v
sanei_pv8630_wait_byte(fd, PV8630_RSTATUS, 0xd0, 0xff, 1000);
DBG(DBG_info, " SCSI command successfully executed\n");
-
+
return(SANE_STATUS_GOOD);
}
@@ -214,12 +214,12 @@ static SANE_Status pv8630_init_umaxusb_scanner(int fd)
sanei_pv8630_write_byte(fd, PV8630_RMODE, 0x16);
DBG(DBG_info, "PV8630 initialized\n");
-
+
return(SANE_STATUS_GOOD);
}
-/*
+/*
* SCSI functions for the emulation.
*
* The following functions emulate their sanei_scsi_* counterpart.
@@ -227,7 +227,7 @@ static SANE_Status pv8630_init_umaxusb_scanner(int fd)
*/
-/*
+/*
* sanei_umaxusb_req_wait() and sanei_umaxusb_req_enter()
*
* I don't know if it is possible to queue the reads to the
@@ -255,7 +255,7 @@ sanei_umaxusb_req_wait (void *id)
return(SANE_STATUS_GOOD);
}
-/* Open the device.
+/* Open the device.
*/
static SANE_Status
sanei_umaxusb_open (const char *dev, int *fdp,
@@ -290,16 +290,16 @@ sanei_umaxusb_open (const char *dev, int *fdp,
*fdp = -1;
return SANE_STATUS_UNSUPPORTED;
}
-
- /* It's a good scanner. Initialize it.
+
+ /* It's a good scanner. Initialize it.
*
* Note: pv8630_init_umaxusb_scanner() is for the UMAX
* 2200. Other UMAX scanner might need a different
* initialization routine. */
- pv8630_init_umaxusb_scanner(*fdp);
+ pv8630_init_umaxusb_scanner(*fdp);
}
-
+
return(SANE_STATUS_GOOD);
}
@@ -318,7 +318,3 @@ sanei_umaxusb_close (int fd)
{
sanei_usb_close(fd);
}
-
-
-
-
diff --git a/backend/umax.c b/backend/umax.c
index 22fa2d3..94f8aa4 100644
--- a/backend/umax.c
+++ b/backend/umax.c
@@ -2,7 +2,7 @@
/* sane - Scanner Access Now Easy.
- umax.c
+ umax.c
(C) 1997-2007 Oliver Rauch
@@ -106,7 +106,7 @@ in ADF mode this is done often:
#ifndef SANE_I18N
#define SANE_I18N(text) text
-#endif
+#endif
/* ------------------------------------------------------------ INCLUDES ----------------------------------- */
@@ -275,16 +275,16 @@ static const SANE_Range u8_range =
static const SANE_Range percentage_range =
{
- -100 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 1 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX(-100), /* minimum */
+ SANE_FIX( 100), /* maximum */
+ SANE_FIX( 1) /* quantization */
};
static const SANE_Range percentage_range_100 =
{
- 0 << SANE_FIXED_SCALE_SHIFT, /* minimum */
- 100 << SANE_FIXED_SCALE_SHIFT, /* maximum */
- 0 << SANE_FIXED_SCALE_SHIFT /* quantization */
+ SANE_FIX( 0), /* minimum */
+ SANE_FIX(100), /* maximum */
+ SANE_FIX( 0) /* quantization */
};
static int num_devices = 0;
@@ -377,7 +377,7 @@ static void umax_print_inquiry(Umax_Device *dev)
if (dev->inquiry_len<=0x8e)
{
DBG(DBG_inquiry, "Inquiry block is unexpected short, should be at least 147 bytes\n");
- }
+ }
DBG(DBG_inquiry,"\n");
DBG(DBG_inquiry,"ISO Version (reserved).......: %d\n", get_inquiry_iso_version(inquiry_block));
@@ -668,7 +668,7 @@ static void umax_print_inquiry(Umax_Device *dev)
DBG(DBG_inquiry,"FB maximum scan length....................: %2.2f inch\n", dev->inquiry_fb_length);
/* ---------- */
-
+
/* 0x7a - 0x81 */
if (dev->inquiry_len<=0x81)
{
@@ -679,9 +679,9 @@ static void umax_print_inquiry(Umax_Device *dev)
DBG(DBG_inquiry,"UTA (transparency-mode):\n");
DBG(DBG_inquiry,"UTA x-original point......................: %2.2f inch\n", dev->inquiry_uta_x_off);
DBG(DBG_inquiry,"UTA y-original point......................: %2.2f inch\n", dev->inquiry_uta_y_off);
- DBG(DBG_inquiry,"UTA maximum scan width....................: %2.2f inch\n", dev->inquiry_uta_width);
+ DBG(DBG_inquiry,"UTA maximum scan width....................: %2.2f inch\n", dev->inquiry_uta_width);
DBG(DBG_inquiry,"UTA maximum scan length...................: %2.2f inch\n", dev->inquiry_uta_length);
-
+
/* ---------- */
/* 0x82-0x85 */
@@ -743,7 +743,7 @@ static void umax_print_inquiry(Umax_Device *dev)
}
DBG(DBG_inquiry,"lamp warmup maximum time..................: %d sec\n", dev->inquiry_max_warmup_time);
-
+
/* 0x92 0x93 */
if (dev->inquiry_len<=0x93)
{
@@ -861,7 +861,7 @@ static SANE_Status sense_handler(int scsi_fd, unsigned char *result, void *arg)
asc_ascq = (int)(256 * asc + ascq);
len = 7 + get_RS_additional_length(result);
- if ( get_RS_error_code(result) != 0x70 )
+ if ( get_RS_error_code(result) != 0x70 )
{
DBG(DBG_error, "invalid sense key error code (%d)\n", get_RS_error_code(result));
@@ -1318,18 +1318,18 @@ static void umax_order_line(Umax_Device *dev, unsigned char *source)
{
color = dev->CCD_color[1 + ((dev->pixelline_opt_res - CCD_distance) % 2)]; /* color 1,2 */
}
- else if (dev->pixelline_opt_res < length * 3 - CCD_distance * 3)
+ else if (dev->pixelline_opt_res < length * 3 - CCD_distance * 3)
{
color = dev->CCD_color[3 + (dev->pixelline_opt_res % 3)]; /* color 3,4,5 */
}
- else if (dev->pixelline_opt_res < length * 3 - CCD_distance)
+ else if (dev->pixelline_opt_res < length * 3 - CCD_distance)
{
color = dev->CCD_color[6 + ((dev->pixelline_opt_res - length*3 + CCD_distance*3) % 2)]; /* color 6,7 */
}
- else
+ else
{
color = dev->CCD_color[8]; /* color 8 */
- }
+ }
} while(umax_forget_line(dev, color) != 0); /* until found correct line */
umax_order_line_to_pixel(dev, source, color);
@@ -1393,7 +1393,7 @@ static SANE_Status umax_scsi_cmd(Umax_Device *dev, const void *src, size_t src_s
static SANE_Status umax_scsi_open_extended(const char *devicename, Umax_Device *dev,
SANEI_SCSI_Sense_Handler handler, void *handler_arg, int *buffersize)
{
- switch (dev->connection_type)
+ switch (dev->connection_type)
{
case SANE_UMAX_SCSI:
return sanei_scsi_open_extended(devicename, &dev->sfd, handler, handler_arg, buffersize);
@@ -1449,7 +1449,7 @@ static void umax_scsi_close(Umax_Device *dev)
dev->sfd=-1;
break;
#endif
- }
+ }
}
/* ------------------------------------------------------------ UMAX SCSI REQ ENTER ------------------------ */
@@ -1583,7 +1583,7 @@ static SANE_Status umax_get_data_buffer_status(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_get_data_buffer_status: command returned status %s\n", sane_strstatus(status));
- }
+ }
return status;
}
@@ -1599,12 +1599,12 @@ static void umax_do_request_sense(Umax_Device *dev)
SANE_Status status;
DBG(DBG_proc, "do_request_sense\n");
- set_RS_allocation_length(request_sense.cmd, rs_return_block_size);
+ set_RS_allocation_length(request_sense.cmd, rs_return_block_size);
status = umax_scsi_cmd(dev, request_sense.cmd, request_sense.size, dev->buffer[0], &size);
if (status)
{
DBG(DBG_error, "umax_do_request_sense: command returned status %s\n", sane_strstatus(status));
- }
+ }
}
@@ -1663,7 +1663,7 @@ static int umax_grab_scanner(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_grab_scanner: command returned status %s\n", sane_strstatus(status));
- }
+ }
else
{
DBG(DBG_info, "scanner reserved\n");
@@ -1681,7 +1681,7 @@ static int umax_reposition_scanner(Umax_Device *dev)
int status;
int pause;
- pause = dev->pause_after_reposition + dev->pause_for_moving * (dev->upper_left_y + dev->scanlength) /
+ pause = dev->pause_after_reposition + dev->pause_for_moving * (dev->upper_left_y + dev->scanlength) /
( (dev->inquiry_fb_length * dev->y_coordinate_base) );
DBG(DBG_info2, "trying to reposition scanner ...\n");
@@ -1724,7 +1724,7 @@ static int umax_give_scanner(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_give_scanner: command returned status %s\n", sane_strstatus(status));
- }
+ }
else
{
DBG(DBG_info, "scanner released\n");
@@ -1760,7 +1760,7 @@ static void umax_send_gamma_data(Umax_Device *dev, void *gamma_data, int color)
DBG(DBG_error, "ERROR: gamma download not available\n");
return;
}
-
+
memcpy(dev->buffer[0], send.cmd, send.size); /* send */
set_S_datatype_code(dev->buffer[0], S_datatype_gamma); /* gamma curve */
@@ -1790,7 +1790,7 @@ static void umax_send_gamma_data(Umax_Device *dev, void *gamma_data, int color)
if (status)
{
DBG(DBG_error, "umax_send_gamma_data(DCF=0, one color): command returned status %s\n", sane_strstatus(status));
- }
+ }
}
else /* three colors */
{
@@ -1816,7 +1816,7 @@ static void umax_send_gamma_data(Umax_Device *dev, void *gamma_data, int color)
if (status)
{
DBG(DBG_error, "umax_send_gamma_data(DCF=0, RGB): command returned status %s\n", sane_strstatus(status));
- }
+ }
}
}
else if (dev->inquiry_gamma_DCF == 1) /* gamma format type 1 */
@@ -1839,7 +1839,7 @@ static void umax_send_gamma_data(Umax_Device *dev, void *gamma_data, int color)
if (status)
{
DBG(DBG_error, "umax_send_gamma_data(DCF=1): command returned status %s\n", sane_strstatus(status));
- }
+ }
}
else if (dev->inquiry_gamma_DCF == 2) /* gamma format type 2 */
{
@@ -1904,7 +1904,7 @@ static void umax_send_gamma_data(Umax_Device *dev, void *gamma_data, int color)
if (status)
{
DBG(DBG_error, "umax_send_gamma_data(DCF=2): command returned status %s\n", sane_strstatus(status));
- }
+ }
}
else
{
@@ -1937,7 +1937,7 @@ static void umax_send_data(Umax_Device *dev, void *data, int size, int datatype)
if (status)
{
DBG(DBG_error, "umax_send_data: command returned status %s\n", sane_strstatus(status));
- }
+ }
}
@@ -2037,7 +2037,7 @@ static int umax_read_data(Umax_Device *dev, size_t length, int datatype)
{
DBG(DBG_error, "umax_read_data: command returned status %s\n", sane_strstatus(status));
return -1;
- }
+ }
return length;
}
@@ -2082,7 +2082,7 @@ static int umax_read_image_data(Umax_Device *dev, unsigned int length)
static int umax_correct_light(int light, int analog_gamma_byte) /* correct highlight/shadow if analog gamma is set */
-{
+{
double analog_gamma;
analog_gamma=analog_gamma_table[analog_gamma_byte];
return( (int) 255 * pow( ((double) light)/255.0 , (1.0/analog_gamma) )+.5 );
@@ -2121,7 +2121,7 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
set_WD_brightness(buffer_r, dev->brightness); /* brightness, only halftone */
set_WD_threshold(buffer_r, dev->threshold); /* threshold, only lineart */
set_WD_contrast(buffer_r, dev->contrast); /* contrast, only halftone */
-
+
/* scanmode, preset to LINEART */
set_WD_composition(buffer_r, WD_comp_lineart); /* image composition */
/* = (scan-mode) */
@@ -2136,16 +2136,16 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
set_WD_shadow(buffer_r, umax_correct_light(dev->shadow_r, dev->analog_gamma_r));
/* scan options */
- set_WD_gamma(buffer_r, dev->digital_gamma_r); /* set digital gamma */
- set_WD_module(buffer_r, dev->module); /* flatbed or transparency */
- set_WD_CBHS(buffer_r, dev->cbhs_range); /* 50 or 255 */
+ set_WD_gamma(buffer_r, dev->digital_gamma_r); /* set digital gamma */
+ set_WD_module(buffer_r, dev->module); /* flatbed or transparency */
+ set_WD_CBHS(buffer_r, dev->cbhs_range); /* 50 or 255 */
set_WD_FF(buffer_r, dev->fix_focus_position); /* fix focus position */
set_WD_RMIF(buffer_r, dev->reverse_multi); /* reverse color-values */
set_WD_FDC(buffer_r, dev->lens_cal_in_doc_pos); /* lens calibration in document position */
set_WD_PF(buffer_r, dev->disable_pre_focus); /* disable pre focus */
set_WD_LCL(buffer_r, dev->holder_focus_pos_0mm); /* 0.6mm <-> 0.0mm holder focus position */
set_WD_HBT(buffer_r, dev->low_byte_first); /* set byte order for 16 bit scanners */
- set_WD_DOR(buffer_r, dev->dor); /* double-resolution-mode */
+ set_WD_DOR(buffer_r, dev->dor); /* double-resolution-mode */
set_WD_scan_exposure_level(buffer_r, dev->exposure_time_scan_r); /* scan exposure time */
set_WD_calibration_exposure_level(buffer_r, dev->exposure_time_calibration_r);/* calibration exposure time */
@@ -2217,7 +2217,7 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
if (dev->do_color_ordering != 0)
{
- set_WD_line_arrangement(buffer_r, WD_line_arrengement_by_driver);
+ set_WD_line_arrangement(buffer_r, WD_line_arrengement_by_driver);
if (dev->CCD_distance == 0)
{
@@ -2248,17 +2248,17 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
set_WD_analog_gamma(buffer_g, dev->analog_gamma_g);
set_WD_analog_gamma(buffer_b, dev->analog_gamma_b);
- /* set highlight in dependence of analog gamma */
+ /* set highlight in dependence of analog gamma */
set_WD_highlight(buffer_r, umax_correct_light(dev->highlight_r, dev->analog_gamma_r));
set_WD_highlight(buffer_g, umax_correct_light(dev->highlight_g, dev->analog_gamma_g));
set_WD_highlight(buffer_b, umax_correct_light(dev->highlight_b, dev->analog_gamma_b));
- /* set shadow in dependence of analog gamma */
+ /* set shadow in dependence of analog gamma */
set_WD_shadow(buffer_r, umax_correct_light(dev->shadow_r, dev->analog_gamma_r));
set_WD_shadow(buffer_g, umax_correct_light(dev->shadow_g, dev->analog_gamma_g));
set_WD_shadow(buffer_b, umax_correct_light(dev->shadow_b, dev->analog_gamma_b));
- set_WD_scan_exposure_level(buffer_r, dev->exposure_time_scan_r); /* set scan exposure times */
+ set_WD_scan_exposure_level(buffer_r, dev->exposure_time_scan_r); /* set scan exposure times */
set_WD_scan_exposure_level(buffer_g, dev->exposure_time_scan_g);
set_WD_scan_exposure_level(buffer_b, dev->exposure_time_scan_b);
@@ -2291,7 +2291,7 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
set_WD_gamma(buffer_r, dev->digital_gamma_r);
set_WD_analog_gamma(buffer_r, dev->analog_gamma_r);
set_WD_highlight(buffer_r, umax_correct_light(dev->highlight_r, dev->analog_gamma_r));
- set_WD_shadow(buffer_r, umax_correct_light(dev->shadow_r, dev->analog_gamma_r));
+ set_WD_shadow(buffer_r, umax_correct_light(dev->shadow_r, dev->analog_gamma_r));
set_WD_scan_exposure_level(buffer_r, dev->exposure_time_scan_r);
set_WD_calibration_exposure_level(buffer_r, dev->exposure_time_calibration_r);
break;
@@ -2344,10 +2344,10 @@ static SANE_Status umax_set_window_param(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_set_window_param: command returned status %s\n", sane_strstatus(status));
- }
+ }
else
{
- DBG(DBG_info, "window(s) set\n");
+ DBG(DBG_info, "window(s) set\n");
}
return status;
@@ -2372,7 +2372,7 @@ static void umax_do_inquiry(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_do_inquiry: command returned status %s\n", sane_strstatus(status));
- }
+ }
size = get_inquiry_additional_length(dev->buffer[0]) + 5;
@@ -2381,7 +2381,7 @@ static void umax_do_inquiry(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_do_inquiry: command returned status %s\n", sane_strstatus(status));
- }
+ }
}
@@ -2419,7 +2419,7 @@ static SANE_Status umax_start_scan(Umax_Device *dev)
set_SC_quality(scan.cmd, dev->quality); /* 1=qual, 0=fast */
set_SC_adf( scan.cmd, dev->adf); /* ADF, 0=off, 1=use */
set_SC_preview(scan.cmd, dev->preview); /* 1=preview */
-
+
set_SC_wid(scan.cmd, 1, 0); /* Window-Identifier */
set_SC_xfer_length(scan.cmd, size); /* following Bytes */
@@ -2430,7 +2430,7 @@ static SANE_Status umax_start_scan(Umax_Device *dev)
if (status)
{
DBG(DBG_error, "umax_start_scan: command returned status %s\n", sane_strstatus(status));
- }
+ }
return status;
}
@@ -2485,7 +2485,7 @@ static SANE_Status umax_do_calibration(Umax_Device *dev)
if (dev->calibration_width_offset > -99999) /* driver or user (umax.conf) define an offset */
{
- width = width + dev->calibration_width_offset;
+ width = width + dev->calibration_width_offset;
DBG(DBG_warning," Using calibration width offset of %d\n", dev->calibration_width_offset);
}
@@ -2515,7 +2515,7 @@ static SANE_Status umax_do_calibration(Umax_Device *dev)
{
if (dev->calibration_width_offset_batch > -99999) /* driver or user (umax.conf) define an offset for batch scanning */
{
- width = width + dev->calibration_width_offset_batch;
+ width = width + dev->calibration_width_offset_batch;
DBG(DBG_warning," Using calibration width offset for batch scanning of %d\n", dev->calibration_width_offset_batch);
}
}
@@ -2523,7 +2523,7 @@ static SANE_Status umax_do_calibration(Umax_Device *dev)
{
if (dev->calibration_width_offset > -99999) /* driver or user (umax.conf) define an offset */
{
- width = width + dev->calibration_width_offset;
+ width = width + dev->calibration_width_offset;
DBG(DBG_warning," Using calibration width offset of %d\n", dev->calibration_width_offset);
}
}
@@ -2705,7 +2705,7 @@ static void umax_do_new_inquiry(Umax_Device *dev, size_t size) /* call in
if (status)
{
DBG(DBG_error, "umax_do_new_inquiry: command returned status %s\n", sane_strstatus(status));
- }
+ }
}
@@ -3154,7 +3154,7 @@ static int umax_identify_scanner(Umax_Device *dev)
{
*pp-- = '\0';
}
-
+
pp = &version[4];
while (*pp == ' ')
{
@@ -3172,12 +3172,12 @@ static int umax_identify_scanner(Umax_Device *dev)
while (strncmp("END_OF_LIST", scanner_str[2*i], 11) != 0) /* Now identify full supported scanners */
{
if (!strncmp(vendor, scanner_str[2*i], strlen(scanner_str[2*i])) )
- {
+ {
if (!strncmp(product, scanner_str[2*i+1], strlen(scanner_str[2*i+1])) )
{
umax_correct_inquiry(dev, vendor, product, version);
return 0;
- }
+ }
}
i++;
}
@@ -3199,7 +3199,7 @@ static int umax_identify_scanner(Umax_Device *dev)
"If you already use the most recent umax-backend version\n"
"then please contact me: Oliver.Rauch@rauch-domain.de\n");
- return 0;
+ return 0;
}
else /* inquiry-data not complete */
if (!strncmp(vendor, "UMAX ", 5)) /* test UMAX-scanners with short inquiry */
@@ -3210,7 +3210,7 @@ static int umax_identify_scanner(Umax_Device *dev)
for(i=0; i < known_inquiry; i++)
{
inq_data = *inquiry_table[i];
- if (!strncmp(product, inq_data.scanner, strlen(inq_data.scanner)))
+ if (!strncmp(product, inq_data.scanner, strlen(inq_data.scanner)))
{
DBG(DBG_warning, "inquiry-block-length: %d\n", get_inquiry_additional_length(dev->buffer[0])+5);
DBG(DBG_warning, "using driver-internal inquiry-data for this scanner!\n");
@@ -3222,7 +3222,7 @@ static int umax_identify_scanner(Umax_Device *dev)
set_inquiry_sc_uta(dev->buffer[0], get_inquiry_transavail(dev->buffer[0])); /* transparancy available ? */
set_inquiry_sc_adf(dev->buffer[0], get_inquiry_scanmode(dev->buffer[0])); /* automatic document feeder available ? */
- set_inquiry_length(dev->buffer[0], inq_data.inquiry_len);
+ set_inquiry_length(dev->buffer[0], inq_data.inquiry_len);
umax_correct_inquiry(dev, vendor, product, version);
return 0; /* ok */
@@ -3268,7 +3268,7 @@ static void umax_trim_rowbufsize(Umax_Device *dev)
/* ------------------------------------------------------------ UMAX CALCULATE EXPOSURE TIME --------------- */
-
+
static void umax_calculate_exposure_time(Umax_Device *dev, int def, int *value)
{
int level;
@@ -3285,7 +3285,7 @@ static void umax_calculate_exposure_time(Umax_Device *dev, int def, int *value)
}
}
-
+
/* ------------------------------------------------------------ UMAX CHECK VALUES -------------------------- */
@@ -3306,7 +3306,7 @@ static int umax_check_values(Umax_Device *dev)
/* --------------------------------- uta --------------------------------- */
- if (dev->uta != 0)
+ if (dev->uta != 0)
{
dev->module = WD_module_transparency;
if ( (dev->inquiry_uta == 0) || (dev->inquiry_transavail == 0) )
@@ -3318,7 +3318,7 @@ static int umax_check_values(Umax_Device *dev)
/* --------------------------------- adf --------------------------------- */
- if (dev->adf != 0)
+ if (dev->adf != 0)
{
if (dev->inquiry_adf == 0)
{
@@ -3334,7 +3334,7 @@ static int umax_check_values(Umax_Device *dev)
if (dev->inquiry_dor == 0)
{
DBG(DBG_error, "ERROR: double optical resolution not supported by scanner\n");
- return(1);
+ return(1);
}
}
@@ -3522,7 +3522,7 @@ static int umax_check_values(Umax_Device *dev)
if (dev->wdb_len <= 0)
{
- dev->wdb_len = dev->inquiry_wdb_len;
+ dev->wdb_len = dev->inquiry_wdb_len;
if (dev->wdb_len <= 0)
{
DBG(DBG_error,"ERROR: wdb-length not given\n");
@@ -3668,7 +3668,7 @@ static int umax_check_values(Umax_Device *dev)
}
/* ---------------------------- speed and smear ------------------------- */
-
+
if (dev->slow == 1)
{
dev->WD_speed = WD_speed_slow;
@@ -3684,7 +3684,7 @@ static int umax_check_values(Umax_Device *dev)
}
/* ---------------------- test bits per pixel --------------------------- */
-
+
if ( ( (dev->inquiry_GIB | 1) & dev->gamma_input_bits_code) == 0 )
{
DBG(DBG_warning,"WARNING: selected gamma input bits not supported, gamma ignored\n");
@@ -3697,7 +3697,7 @@ static int umax_check_values(Umax_Device *dev)
DBG(DBG_error,"ERROR: selected bits per pixel not supported\n");
return(1);
}
-
+
/* ----------------------- scan mode dependencies ------------------------ */
switch(dev->colormode)
@@ -3706,7 +3706,7 @@ static int umax_check_values(Umax_Device *dev)
case RGB_LINEART: /* ---------- RGB_LINEART ----------- */
dev->use_exposure_time_min = dev->inquiry_exposure_time_l_min;
- if (dev->module == WD_module_flatbed)
+ if (dev->module == WD_module_flatbed)
{
dev->use_exposure_time_def_r = dev->inquiry_exposure_time_l_fb_def;
}
@@ -3725,7 +3725,7 @@ static int umax_check_values(Umax_Device *dev)
case HALFTONE: /* ----------- HALFTONE------------ */
case RGB_HALFTONE: /* --------- RGB_HALFTONE---------- */
dev->use_exposure_time_min = dev->inquiry_exposure_time_h_min;
- if (dev->module == WD_module_flatbed)
+ if (dev->module == WD_module_flatbed)
{
dev->use_exposure_time_def_r = dev->inquiry_exposure_time_h_fb_def;
}
@@ -3744,7 +3744,7 @@ static int umax_check_values(Umax_Device *dev)
case GRAYSCALE: /* ---------- GRAYSCALE ------------- */
dev->use_exposure_time_min = dev->inquiry_exposure_time_g_min;
- if (dev->module == WD_module_flatbed)
+ if (dev->module == WD_module_flatbed)
{
dev->use_exposure_time_def_r = dev->inquiry_exposure_time_g_fb_def;
}
@@ -3762,7 +3762,7 @@ static int umax_check_values(Umax_Device *dev)
case RGB: /* ----------------- COLOR ---------- */
dev->use_exposure_time_min = dev->inquiry_exposure_time_c_min;
- if (dev->module == WD_module_flatbed)
+ if (dev->module == WD_module_flatbed)
{
dev->use_exposure_time_def_r = dev->inquiry_exposure_time_c_fb_def_r;
dev->use_exposure_time_def_g = dev->inquiry_exposure_time_c_fb_def_g;
@@ -3838,7 +3838,7 @@ static int umax_check_values(Umax_Device *dev)
dev->CCD_color[1] = CCD_color_blue;
dev->CCD_color[2] = CCD_color_red;
-
+
dev->CCD_color[3] = CCD_color_blue;
dev->CCD_color[4] = CCD_color_green;
dev->CCD_color[5] = CCD_color_red;
@@ -3893,13 +3893,13 @@ static int umax_check_values(Umax_Device *dev)
dev->CCD_color[6] = CCD_color_green;
dev->CCD_color[7] = CCD_color_blue;
-
+
dev->CCD_color[8] = CCD_color_green;
break;
default:
dev->CCD_color[0] = CCD_color_green;
-
+
dev->CCD_color[1] = CCD_color_blue;
dev->CCD_color[2] = CCD_color_green;
@@ -3915,12 +3915,12 @@ static int umax_check_values(Umax_Device *dev)
DBG(DBG_info,"scanner uses color-line-ordering with CCD-distance of %d lines\n", dev->CCD_distance);
}
else
- {
+ {
DBG(DBG_error,"ERROR: color-ordering-type not supported \n");
return(1);
}
}
- else
+ else
{
DBG(DBG_info,"using three pass scanning mode\n");
dev->three_pass=1;
@@ -3971,7 +3971,7 @@ static void umax_get_inquiry_values(Umax_Device *dev)
dev->inquiry_highlight_min = 1; /* minimum value for h */
dev->inquiry_highlight_max = 50; /* maximum value for h */
dev->inquiry_shadow_min = 0; /* minimum value for s */
- dev->inquiry_shadow_max = 49; /* maximum value for s */
+ dev->inquiry_shadow_max = 49; /* maximum value for s */
}
get_inquiry_vendor( (char *)inquiry_block, dev->vendor); dev->vendor[8] ='\0';
@@ -4161,7 +4161,7 @@ static void umax_get_inquiry_values(Umax_Device *dev)
if (dev->inquiry_len<=0x9d)
{
return;
- }
+ }
dev->inquiry_CCD_line_distance = get_inquiry_CCD_line_distance(inquiry_block);
return;
@@ -4185,7 +4185,7 @@ static int umax_calculate_analog_gamma(double value)
while (value>analog_gamma_table[gamma])
{
gamma++;
- }
+ }
if (gamma)
{
@@ -4194,7 +4194,7 @@ static int umax_calculate_analog_gamma(double value)
gamma--;
}
}
-
+
return(gamma);
}
@@ -4211,7 +4211,7 @@ static void umax_output_image_data(Umax_Device *dev, FILE *fp, unsigned int data
for (i=0; i<data_to_read; i++)
{
- old = dev->buffer[bufnr][i];
+ old = dev->buffer[bufnr][i];
new = 0;
for (j=0; j<8; j++) /* reverse bit order of 1 byte */
{
@@ -4463,11 +4463,11 @@ static void umax_initialize_values(Umax_Device *dev) /* called each time b
dev->pixelline_optic[0] = 1;
dev->pixelline_optic[1] = 1;
dev->pixelline_optic[2] = 1;
- dev->pixelline_max = 0;
- dev->pixelline_opt_res = 0;
- dev->pixelline_read = 0;
- dev->pixelline_written = 0;
- dev->CCD_distance = 0;
+ dev->pixelline_max = 0;
+ dev->pixelline_opt_res = 0;
+ dev->pixelline_read = 0;
+ dev->pixelline_written = 0;
+ dev->CCD_distance = 0;
dev->calib_lines = 0; /* request calibration lines */
dev->do_calibration = 0; /* no calibration by driver */
@@ -4497,7 +4497,7 @@ static void umax_init(Umax_Device *dev) /* umax_init is called once while
else /* SANE_UMAX_USB, USB does not support command queueing */
{
DBG(DBG_info2, "setting request_scsi_maxqueue = 1 for USB connection\n");
- dev->request_scsi_maxqueue = 1;
+ dev->request_scsi_maxqueue = 1;
}
dev->request_preview_lines = umax_preview_lines;
@@ -4578,7 +4578,7 @@ static void umax_init(Umax_Device *dev) /* umax_init is called once while
dev->inquiry_highlight_min = 1; /* minimum value for h */
dev->inquiry_highlight_max = 255; /* maximum value for h */
dev->inquiry_shadow_min = 0; /* minimum value for s */
- dev->inquiry_shadow_max = 254; /* maximum value for s */
+ dev->inquiry_shadow_max = 254; /* maximum value for s */
dev->inquiry_quality_ctrl = 0;
dev->inquiry_preview = 0;
dev->inquiry_lamp_ctrl = 0;
@@ -4686,7 +4686,7 @@ static SANE_Status do_cancel(Umax_Scanner *scanner)
DBG(DBG_sane_info, "do_cancel: reader_process terminated with status: %s\n", sane_strstatus(status));
}
- scanner->reader_pid = -1;
+ sanei_thread_invalidate (scanner->reader_pid);
if (scanner->device->pixelbuffer != NULL) /* pixelbuffer exists? */
{
@@ -4870,7 +4870,7 @@ static SANE_Status attach_scanner(const char *devicename, Umax_Device **devp, in
dev->sane.name = dev->devicename;
dev->sane.vendor = dev->vendor;
dev->sane.model = dev->product;
- dev->sane.type = "flatbed scanner";
+ dev->sane.type = "flatbed scanner";
if (strcmp(dev->sane.model,"PSD ") == 0)
{
@@ -5001,7 +5001,7 @@ static int reader_process(void *data) /* executed as a child process or as threa
if (!fp)
{
return SANE_STATUS_IO_ERROR;
- }
+ }
DBG(DBG_sane_info,"reader_process: starting to READ data\n");
@@ -5076,17 +5076,17 @@ static SANE_Status init_options(Umax_Scanner *scanner)
if (scanner->device->inquiry_color)
{
-/*
+/*
if (scanner->device->inquiry_lineart)
{ scan_mode_list[++scan_modes]= COLOR_LINEART_STR; }
- if (scanner->device->inquiry_halftone)
+ if (scanner->device->inquiry_halftone)
{ scan_mode_list[++scan_modes]= COLOR_HALFTONE_STR; }
*/
- scan_mode_list[++scan_modes]= COLOR_STR;
+ scan_mode_list[++scan_modes]= COLOR_STR;
}
- scan_mode_list[scan_modes + 1] = 0;
+ scan_mode_list[scan_modes + 1] = 0;
{
int i=0;
@@ -5104,7 +5104,7 @@ static SANE_Status init_options(Umax_Scanner *scanner)
source_list[i] = 0;
}
-
+
/* scan mode */
scanner->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE;
scanner->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE;
@@ -5124,7 +5124,7 @@ static SANE_Status init_options(Umax_Scanner *scanner)
scanner->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
scanner->opt[OPT_SOURCE].constraint.string_list = source_list;
scanner->val[OPT_SOURCE].s = (SANE_Char*)strdup(source_list[0]);
-
+
/* x-resolution */
scanner->opt[OPT_X_RESOLUTION].name = SANE_NAME_SCAN_RESOLUTION;
scanner->opt[OPT_X_RESOLUTION].title = SANE_TITLE_SCAN_RESOLUTION;
@@ -5906,7 +5906,7 @@ static SANE_Status init_options(Umax_Scanner *scanner)
sane_control_option(scanner, OPT_MODE, SANE_ACTION_SET_VALUE,
(SANE_String *) scan_mode_list[scan_modes], NULL );
-
+
return SANE_STATUS_GOOD;
}
@@ -5944,7 +5944,7 @@ static SANE_Status umax_test_configure_option(const char *option_str, char *test
errno = 0;
value = strtol(value_str, &end_ptr, 10);
- if (end_ptr == value_str || errno)
+ if (end_ptr == value_str || errno)
{
DBG(DBG_error, "ERROR: invalid value \"%s\" for option %s in %s\n", value_str, test_name, UMAX_CONFIG_FILE);
}
@@ -6013,7 +6013,7 @@ SANE_Status sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize)
#endif
fp = sanei_config_open(UMAX_CONFIG_FILE);
- if (!fp)
+ if (!fp)
{
/* no config-file: try /dev/scanner and /dev/usbscanner. */
attach_scanner("/dev/scanner", 0, SANE_UMAX_SCSI);
@@ -6308,7 +6308,7 @@ void sane_close(SANE_Handle handle)
prev = scanner;
}
-
+
if (!scanner)
{
DBG(DBG_error, "ERROR: sane_close: invalid handle %p\n", handle);
@@ -6318,7 +6318,7 @@ void sane_close(SANE_Handle handle)
if (scanner->scanning) /* stop scan if still scanning */
{
do_cancel(handle);
- }
+ }
if (scanner->device->lamp_control_available) /* lamp state can be controlled by driver */
{
@@ -6380,7 +6380,7 @@ static void umax_set_max_geometry(Umax_Scanner *scanner)
scanner->device->y_range.max = SANE_FIX( (scanner->device->inquiry_dor_y_off + scanner->device->inquiry_dor_length) * MM_PER_INCH);
scanner->device->x_dpi_range.max = SANE_FIX(scanner->device->inquiry_dor_x_res);
- scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_dor_y_res);
+ scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_dor_y_res);
}
else if ( (strcmp(scanner->val[OPT_SOURCE].s, FLB_STR) == 0) || (strcmp(scanner->val[OPT_SOURCE].s, ADF_STR) == 0) )
{
@@ -6390,7 +6390,7 @@ static void umax_set_max_geometry(Umax_Scanner *scanner)
scanner->device->y_range.max = SANE_FIX(scanner->device->inquiry_fb_length * MM_PER_INCH);
scanner->device->x_dpi_range.max = SANE_FIX(scanner->device->inquiry_x_res);
- scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_y_res);
+ scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_y_res);
}
else if (strcmp(scanner->val[OPT_SOURCE].s, UTA_STR) == 0)
{
@@ -6400,7 +6400,7 @@ static void umax_set_max_geometry(Umax_Scanner *scanner)
scanner->device->y_range.max = SANE_FIX( ( scanner->device->inquiry_uta_y_off + scanner->device->inquiry_uta_length) * MM_PER_INCH);
scanner->device->x_dpi_range.max = SANE_FIX(scanner->device->inquiry_x_res);
- scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_y_res);
+ scanner->device->y_dpi_range.max = SANE_FIX(scanner->device->inquiry_y_res);
}
DBG(DBG_info,"x_range = [%f .. %f]\n", SANE_UNFIX(scanner->device->x_range.min), SANE_UNFIX(scanner->device->x_range.max));
@@ -6414,7 +6414,7 @@ static void umax_set_max_geometry(Umax_Scanner *scanner)
{
scanner->val[OPT_TL_X].w = scanner->device->x_range.min;
}
-
+
if (scanner->val[OPT_TL_Y].w < scanner->device->y_range.min)
{
scanner->val[OPT_TL_Y].w = scanner->device->y_range.min;
@@ -6424,7 +6424,7 @@ static void umax_set_max_geometry(Umax_Scanner *scanner)
{
scanner->val[OPT_BR_X].w = scanner->device->x_range.max;
}
-
+
if (scanner->val[OPT_BR_Y].w > scanner->device->y_range.max)
{
scanner->val[OPT_BR_Y].w = scanner->device->y_range.max;
@@ -6528,7 +6528,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
case OPT_MANUAL_PRE_FOCUS:
case OPT_FIX_FOCUS_POSITION:
case OPT_LENS_CALIBRATION_DOC_POS:
- case OPT_HOLDER_FOCUS_POS_0MM:
+ case OPT_HOLDER_FOCUS_POS_0MM:
case OPT_LAMP_OFF_AT_EXIT:
case OPT_SELECT_LAMP_DENSITY:
*(SANE_Word *) val = scanner->val[option].w;
@@ -6645,7 +6645,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
case OPT_MANUAL_PRE_FOCUS:
case OPT_FIX_FOCUS_POSITION:
case OPT_LENS_CALIBRATION_DOC_POS:
- case OPT_HOLDER_FOCUS_POS_0MM:
+ case OPT_HOLDER_FOCUS_POS_0MM:
case OPT_LAMP_OFF_AT_EXIT:
scanner->val[option].w = *(SANE_Word *) val;
return SANE_STATUS_GOOD;
@@ -6663,7 +6663,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
}
DBG(DBG_info,"sane_control_option: set DOR = %d\n", scanner->val[option].w);
- umax_set_max_geometry(scanner);
+ umax_set_max_geometry(scanner);
}
return SANE_STATUS_GOOD;
}
@@ -6895,7 +6895,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
case OPT_CUSTOM_GAMMA:
{
w = *(SANE_Word *) val;
- if (w == scanner->val[OPT_CUSTOM_GAMMA].w) { return SANE_STATUS_GOOD; }
+ if (w == scanner->val[OPT_CUSTOM_GAMMA].w) { return SANE_STATUS_GOOD; }
scanner->val[OPT_CUSTOM_GAMMA].w = w;
if (w) /* use custom_gamma_table */
@@ -6944,7 +6944,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
*info |=SANE_INFO_RELOAD_OPTIONS | SANE_INFO_RELOAD_PARAMS;
}
- scanner->opt[OPT_NEGATIVE].cap |= SANE_CAP_INACTIVE;
+ scanner->opt[OPT_NEGATIVE].cap |= SANE_CAP_INACTIVE;
scanner->opt[OPT_BIT_DEPTH].cap |= SANE_CAP_INACTIVE;
@@ -7025,7 +7025,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
if (scanner->val[OPT_SELECT_EXPOSURE_TIME].w == SANE_TRUE)
{
- scanner->opt[OPT_CAL_EXPOS_TIME].cap &= ~SANE_CAP_INACTIVE;
+ scanner->opt[OPT_CAL_EXPOS_TIME].cap &= ~SANE_CAP_INACTIVE;
scanner->opt[OPT_SCAN_EXPOS_TIME].cap &= ~SANE_CAP_INACTIVE;
}
@@ -7062,7 +7062,7 @@ SANE_Status sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action
if (scanner->device->inquiry_reverse_multi)
{
- scanner->opt[OPT_NEGATIVE].cap &= ~SANE_CAP_INACTIVE;
+ scanner->opt[OPT_NEGATIVE].cap &= ~SANE_CAP_INACTIVE;
}
if (scanner->device->inquiry_gamma_dwload)
@@ -7285,9 +7285,9 @@ SANE_Status sane_start(SANE_Handle handle)
DBG(DBG_sane_init,"sane_start\n");
- /* Initialize reader_pid to invalid so a subsequent error and following call
- * to do_cancel() won't trip over it. */
- scanner->reader_pid = -1;
+ /* Invalidate reader_pid so a subsequent error and following call to
+ * do_cancel() won't trip over it. */
+ sanei_thread_invalidate(scanner->reader_pid);
mode = scanner->val[OPT_MODE].s;
@@ -7452,11 +7452,11 @@ SANE_Status sane_start(SANE_Handle handle)
scanner->device->analog_gamma_b = umax_calculate_analog_gamma(SANE_UNFIX(scanner->val[OPT_ANALOG_GAMMA].w));
scanner->device->highlight_r =
- scanner->device->highlight_g =
+ scanner->device->highlight_g =
scanner->device->highlight_b = P_100_TO_255(scanner->val[OPT_HIGHLIGHT].w);
scanner->device->shadow_r =
- scanner->device->shadow_g =
+ scanner->device->shadow_g =
scanner->device->shadow_b = P_100_TO_255(scanner->val[OPT_SHADOW].w);
if (scanner->val[OPT_SELECT_EXPOSURE_TIME].w == SANE_TRUE)
@@ -7634,7 +7634,7 @@ SANE_Status sane_start(SANE_Handle handle)
}
scanner->params.bytes_per_line = scanner->device->row_len;
- scanner->params.pixels_per_line = scanner->device->width_in_pixels;
+ scanner->params.pixels_per_line = scanner->device->width_in_pixels;
scanner->params.lines = scanner->device->length_in_pixels;
@@ -7825,7 +7825,7 @@ SANE_Status sane_start(SANE_Handle handle)
scanner->device->halftone = WD_halftone_download;
} /* end of send halftonepattern */
#endif
-
+
} /* ------------ end of first call -------------- */
@@ -7990,7 +7990,7 @@ SANE_Status sane_start(SANE_Handle handle)
return SANE_STATUS_IO_ERROR;
}
- scanner->pipe_read_fd = fds[0];
+ scanner->pipe_read_fd = fds[0];
scanner->pipe_write_fd = fds[1];
/* start reader_process, deponds on OS if fork() or threads are used */
@@ -8067,7 +8067,7 @@ SANE_Status sane_read(SANE_Handle handle, SANE_Byte *buf, SANE_Int max_len, SANE
scanner->pipe_read_fd = -1;
}
- return SANE_STATUS_EOF;
+ return SANE_STATUS_EOF;
}
return SANE_STATUS_GOOD;
@@ -8104,8 +8104,8 @@ SANE_Status sane_set_io_mode(SANE_Handle handle, SANE_Bool non_blocking)
if (fcntl(scanner->pipe_read_fd, F_SETFL, non_blocking ? O_NONBLOCK : 0) < 0)
{
return SANE_STATUS_IO_ERROR;
- }
- return SANE_STATUS_GOOD;
+ }
+ return SANE_STATUS_GOOD;
}
diff --git a/backend/umax.conf.in b/backend/umax.conf.in
index a57cf53..06b2750 100644
--- a/backend/umax.conf.in
+++ b/backend/umax.conf.in
@@ -17,7 +17,7 @@
# 0 = handle as device busy
# 1 = handle as ok
# 2 = handle as i/o error
-# 3 = ignore bad error code - continue sense handler,
+# 3 = ignore bad error code - continue sense handler,
#option handle-bad-sense-error 0
# define if a request sense command shall be executed
@@ -43,7 +43,7 @@
# define if the calibration shall be done for selected scanarea or for each ccd pixel
# -1 = automatically set by driver - if known
# 0 = disabled
-# 1 = enabled
+# 1 = enabled
#option calibration-full-ccd 1
# define if an offset of the calculate calibration with has to be used
@@ -54,7 +54,7 @@
# -1 = disabled
# 0 = not set
# 1 = 1 byte/pixel,
-# 2 = 2 bytes/pixel
+# 2 = 2 bytes/pixel
#option calibration-bytes-pixel -1
# define if scanner uses the same exposure times for red, green and blue
@@ -66,18 +66,18 @@
# define if shading data shall be inverted befor sending it back to the scanner
# -1 = automatically set by driver - if known
# 0 = disabled
-# 1 = enabled
+# 1 = enabled
#option invert-shading-data 0
# define if the scanner supports lamp control commands
# 0 = automatically set by driver - if known
-# 1 = enabled
+# 1 = enabled
#option lamp-control-available 0
# define how 16 bit gamma data is padded
# -1 = automatically set by driver - if known
# 0 = gamma data is msb padded
-# 1 = gamma data is lsb padded
+# 1 = gamma data is lsb padded
#option gamma-lsb-padded 0
# define connection type of following devices
@@ -114,4 +114,3 @@ option connection-type 1
# usb device list
option connection-type 2
/dev/usbscanner
-
diff --git a/backend/umax.h b/backend/umax.h
index 682e58b..e6b83fd 100644
--- a/backend/umax.h
+++ b/backend/umax.h
@@ -1,7 +1,7 @@
/* --------------------------------------------------------------------------------------------------------- */
/* umax.h - headerfile for SANE-backend for umax scanners
-
+
(C) 1997-2002 Oliver Rauch
This program is free software; you can redistribute it and/or
@@ -39,7 +39,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
-
+
*/
/* --------------------------------------------------------------------------------------------------------- */
@@ -58,7 +58,7 @@
/* #define SANE_UMAX_DEBUG_S12 */
/* #define UMAX_CALIBRATION_MODE_SELECTABLE */
-
+
/* --------------------------------------------------------------------------------------------------------- */
#define SANE_UMAX_SCSI_MAXQUEUE 8
@@ -269,7 +269,7 @@ typedef struct Umax_Device
double inquiry_dor_y_off; /* double resolution y offset in inches */
int inquiry_exposure_adj; /* 1 if exposure adjust is supported */
- int inquiry_exposure_time_step_unit; /* exposure time unit in micro sec */
+ int inquiry_exposure_time_step_unit; /* exposure time unit in micro sec */
int inquiry_exposure_time_max; /* exposure time maximum */
int inquiry_exposure_time_l_min; /* exposure tine minimum for lineart */
int inquiry_exposure_time_l_fb_def; /* exposure time default for lineart/flatbed */
diff --git a/backend/umax1220u-common.c b/backend/umax1220u-common.c
index 43a4a6f..e14dfea 100644
--- a/backend/umax1220u-common.c
+++ b/backend/umax1220u-common.c
@@ -7,7 +7,7 @@
Parts copyright (C) 2006 Patrick Lessard
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -66,7 +66,7 @@
#include <sys/ioctl.h>
#include <math.h>
-/*
+/*
* The backend performs test scans in order to calibrate
* the CCD and to find the zero location. If you would like
* to look at those scans, define DEBUG_CALIBRATION to have
diff --git a/backend/umax1220u.c b/backend/umax1220u.c
index 79b8c92..30c9e86 100644
--- a/backend/umax1220u.c
+++ b/backend/umax1220u.c
@@ -376,7 +376,7 @@ optionTopLeftYCallback (SANE_Option * option, SANE_Handle handle,
This option controls the bot-right-x corner of the scan
*/
-static SANE_Fixed optionBotRightXValue
+static SANE_Fixed optionBotRightXValue
= SANE_FIX (UMAX_MAX_WIDTH * MM_IN_INCH / 600);
static SANE_Option_Descriptor optionBotRightXDescriptor = {
diff --git a/backend/umax_pp.c b/backend/umax_pp.c
index 0f7ce4e..b1121ef 100644
--- a/backend/umax_pp.c
+++ b/backend/umax_pp.c
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -41,10 +41,10 @@
This file implements a SANE backend for Umax PP flatbed scanners. */
/* CREDITS:
- Started by being a mere copy of mustek_pp
- by Jochen Eisinger <jochen.eisinger@gmx.net>
- then evolved in its own thing
-
+ Started by being a mere copy of mustek_pp
+ by Jochen Eisinger <jochen.eisinger@gmx.net>
+ then evolved in its own thing
+
support for the 610P has been made possible thank to an hardware donation
from William Stuart
*/
diff --git a/backend/umax_pp.conf.in b/backend/umax_pp.conf.in
index e7e9fd4..f220f1f 100644
--- a/backend/umax_pp.conf.in
+++ b/backend/umax_pp.conf.in
@@ -39,19 +39,19 @@ option buffer 2097152
# valid values are 610, 1220, 1600 and 2000
#
# by default, no model, we rely on autodetection
-# in case you have black or 'inverted' scans,
+# in case you have black or 'inverted' scans,
# you may override detection by providing the
# model number
#option astra 1220
# DEVICES #
-# specify the port your scanner is connected to.
+# specify the port your scanner is connected to.
#
# the value 'auto' will make the backend find the correct value
# by itself, it will scan ppdev, ppi device, then hardware address
# 'safe-auto' will do the same but won't do direct hardware access
-# on linux systems, you may provide the device name of the ppdev character
+# on linux systems, you may provide the device name of the ppdev character
# device : /dev/parport0, /dev/parport1, ......
#
# on *BSD, you may provide the device name of the ppi device: /dev/ppi0,
diff --git a/backend/umax_pp.h b/backend/umax_pp.h
index dbedab8..c8ffdfa 100644
--- a/backend/umax_pp.h
+++ b/backend/umax_pp.h
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
diff --git a/backend/umax_pp_low.c b/backend/umax_pp_low.c
index 1e38aba..c5d9a93 100644
--- a/backend/umax_pp_low.c
+++ b/backend/umax_pp_low.c
@@ -1,5 +1,5 @@
/**
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -297,7 +297,7 @@ sanei_outb (unsigned int port, unsigned char value)
static void
sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
{
- int i;
+ unsigned int i;
for (i = 0; i < count; i++)
addr[i] = sanei_inb (port);
@@ -306,7 +306,7 @@ sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
static void
sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
{
- int i;
+ unsigned int i;
for (i = 0; i < count * 4; i++)
addr[i] = sanei_inb (port);
@@ -316,7 +316,7 @@ static void
sanei_outsb (unsigned int port, const unsigned char *addr,
unsigned long count)
{
- int i;
+ unsigned int i;
for (i = 0; i < count; i++)
sanei_outb (port, addr[i]);
@@ -326,7 +326,7 @@ static void
sanei_outsl (unsigned int port, const unsigned char *addr,
unsigned long count)
{
- int i;
+ unsigned int i;
for (i = 0; i < count * 4; i++)
sanei_outb (port, addr[i]);
@@ -865,7 +865,7 @@ sanei_parport_find_device (void)
else
{
#ifdef HAVE_LINUX_PPDEV_H
- /* on kernel < 2.4.23, you have to CLAIM the device
+ /* on kernel < 2.4.23, you have to CLAIM the device
* to check it really exists
* we may hang if another program already claimed it
*/
@@ -926,13 +926,22 @@ sanei_parport_find_device (void)
int
sanei_umax_pp_initPort (int port, char *name)
{
- int fd, ectr;
+#ifndef IO_SUPPORT_MISSING
+# ifdef HAVE_LINUX_PPDEV_H
int found = 0;
-#if ((defined HAVE_IOPERM)||(defined HAVE_MACHINE_CPUFUNC_H)||(defined HAVE_LINUX_PPDEV_H))
+ int fd;
int mode, modes, rc;
-#endif
-#ifdef HAVE_LINUX_PPDEV_H
+# ifdef PPGETMODES
char strmodes[160];
+# endif
+# endif
+# ifdef HAVE_DEV_PPBUS_PP_H
+ int found = 0;
+ int fd;
+# endif
+# ifdef HAVE_IOPERM
+ int ectr;
+# endif
#endif
/* since this function must be called before */
@@ -1793,8 +1802,8 @@ sanei_umax_pp_setauto (int autoset)
}
#ifdef HAVE_LINUX_PPDEV_H
-/* set to the parallel port needed using ppdev
- * returns 1 if ok, 0 else
+/* set to the parallel port needed using ppdev
+ * returns 1 if ok, 0 else
*/
static int
ppdev_set_mode (int mode)
@@ -2807,7 +2816,7 @@ ECPregisterRead (int reg)
Outb (CONTROL, 0x4);
- /* ECP FIFO mode, interrupt bit, dma disabled,
+ /* ECP FIFO mode, interrupt bit, dma disabled,
service bit, fifo full=0, fifo empty=0 */
ECPFifoMode (); /*Outb (ECR, 0x60); */
if (waitFifoEmpty () == 0)
@@ -2825,12 +2834,12 @@ ECPregisterRead (int reg)
}
breg = Inb (ECR);
- /* byte mode, interrupt bit, dma disabled,
+ /* byte mode, interrupt bit, dma disabled,
service bit, fifo full=0, fifo empty=0 */
byteMode (); /*Outb (ECR, 0x20); */
Outb (CONTROL, 0x20); /* data reverse */
- /* ECP FIFO mode, interrupt bit, dma disabled,
+ /* ECP FIFO mode, interrupt bit, dma disabled,
service bit, fifo full=0, fifo empty=0 */
ECPFifoMode (); /*Outb (ECR, 0x60); */
if (waitFifoNotEmpty () == 0)
@@ -2859,9 +2868,9 @@ EPPregisterRead (int reg)
#ifdef HAVE_LINUX_PPDEV_H
int fd, mode, rc;
unsigned char breg, bval;
+ int value;
#endif
int control;
- int value;
#ifdef HAVE_LINUX_PPDEV_H
@@ -2910,7 +2919,7 @@ EPPregisterRead (int reg)
control = Inb (CONTROL);
control = (control & 0x1F) | 0x20;
Outb (CONTROL, control);
- value = Inb (EPPDATA);
+ Inb (EPPDATA);
control = Inb (CONTROL);
control = control & 0x1F;
Outb (CONTROL, control);
@@ -2943,9 +2952,8 @@ registerRead (int reg)
static void
ECPregisterWrite (int reg, int value)
{
- unsigned char breg;
-
#ifdef HAVE_LINUX_PPDEV_H
+ unsigned char breg;
int rc, fd;
fd = sanei_umax_pp_getparport ();
@@ -2963,12 +2971,12 @@ ECPregisterWrite (int reg, int value)
}
#endif
- /* standard mode, interrupt bit, dma disabled,
+ /* standard mode, interrupt bit, dma disabled,
service bit, fifo full=0, fifo empty=0 */
compatMode ();
Outb (CONTROL, 0x04); /* reset ? */
- /* ECP FIFO mode, interrupt bit, dma disabled,
+ /* ECP FIFO mode, interrupt bit, dma disabled,
service bit, fifo full=0, fifo empty=0 */
ECPFifoMode (); /*Outb (ECR, 0x60); */
if (waitFifoEmpty () == 0)
@@ -2977,7 +2985,7 @@ ECPregisterWrite (int reg, int value)
__FILE__, __LINE__);
return;
}
- breg = Inb (ECR);
+ Inb (ECR);
Outb (DATA, reg);
if (waitFifoEmpty () == 0)
@@ -2986,7 +2994,7 @@ ECPregisterWrite (int reg, int value)
__FILE__, __LINE__);
return;
}
- breg = Inb (ECR);
+ Inb (ECR);
Outb (ECPDATA, value);
if (waitFifoEmpty () == 0)
@@ -2995,7 +3003,7 @@ ECPregisterWrite (int reg, int value)
__FILE__, __LINE__);
return;
}
- breg = Inb (ECR);
+ Inb (ECR);
Outb (CONTROL, 0x04);
byteMode ();
return;
@@ -3429,8 +3437,8 @@ ECPbufferWrite (int size, unsigned char *source)
}
breg = Inb (ECR);
- /* block transfer direction
- * 0x80 means from scanner to PC, 0xC0 means PC to scanner
+ /* block transfer direction
+ * 0x80 means from scanner to PC, 0xC0 means PC to scanner
*/
Outb (DATA, 0xC0);
@@ -4957,7 +4965,7 @@ sendWord (int *cmd)
/******************************************************************************/
/* ringScanner: returns 1 if scanner present, else 0 */
/******************************************************************************/
-/*
+/*
* in fact this function is really close to CPP macro in
* /usr/src/linux/drivers/block/paride/epat.c .....
* we have almost CPP(8)
@@ -6005,7 +6013,7 @@ initScanner610p (int recover)
return 1;
}
- /* here we do re-homing
+ /* here we do re-homing
* since it is first probe or recover */
/* move forward */
CMDSYNC (0xC2);
@@ -6096,7 +6104,7 @@ initScanner610p (int recover)
/* 1: OK
2: homing happened
3: scanner busy
- 0: init failed
+ 0: init failed
init transport layer
init scanner
@@ -6308,13 +6316,13 @@ sanei_umax_pp_initScanner (int recover)
}
-/*
+/*
1: OK
2: failed, try again
- 0: init failed
+ 0: init failed
initialize the transport layer
-
+
*/
static int
@@ -6400,13 +6408,13 @@ initTransport610p (void)
return 1;
}
-/*
+/*
1: OK
2: failed, try again
- 0: init failed
+ 0: init failed
initialize the transport layer
-
+
*/
static int
@@ -6605,13 +6613,13 @@ initTransport1220P (int recover) /* ECP OK !! */
return 1;
}
-/*
+/*
1: OK
2: failed, try again
- 0: init failed
+ 0: init failed
initialize the transport layer
-
+
*/
int
@@ -6643,7 +6651,7 @@ probe610p (int recover)
return 0;
}
- /* make sure we won't try 1220/200P later
+ /* make sure we won't try 1220/200P later
* since we got here, we have a 610, and in any case
* NOT a 1220P/2000P, since no EPAT present */
sanei_umax_pp_setastra (610);
@@ -6660,7 +6668,7 @@ probe610p (int recover)
}
- /*
+ /*
* try PS2 mode
* returns 1 on success, 0 on failure
*/
@@ -7018,7 +7026,7 @@ probeECP (unsigned char *dest)
* inb ECR,35
*/
/* routine A */
- breg = Inb (CONTROL); /* 0x04 videmment! */
+ breg = Inb (CONTROL); /* 0x04 évidemment! */
breg = Inb (ECR);
breg = Inb (ECR);
breg = Inb (ECR);
@@ -8617,9 +8625,9 @@ EPPcmdGetBuffer610p (int cmd, int len, unsigned char *buffer)
int word[5];
int count, needed, max;
#ifdef HAVE_LINUX_PPDEV_H
- int fd, mode, rc;
+ int fd, mode, rc, wait;
#endif
- int loop, wait, remain;
+ int loop, remain;
/* first we set length and channel */
/* compute word */
@@ -8702,7 +8710,6 @@ EPPcmdGetBuffer610p (int cmd, int len, unsigned char *buffer)
else
remain = 4;
loop = (needed - remain) / 2;
- wait = 0;
DBG (32, "EPPcmdGetBuffer610p: %d loops to do \n", loop);
status = 0x20;
@@ -8742,6 +8749,7 @@ EPPcmdGetBuffer610p (int cmd, int len, unsigned char *buffer)
/* there is one form for full CCD width reads, and another for other
reads */
#ifdef HAVE_LINUX_PPDEV_H
+ wait = 0;
/* check we have ppdev working */
fd = sanei_umax_pp_getparport ();
if (fd > 0)
@@ -9368,7 +9376,7 @@ cmdGetBlockBuffer (int cmd, int len, int window, unsigned char *buffer)
return read;
}
-/*
+/*
* encodes DC offsets: must be in [0..0x0F] range
*/
static void
@@ -9387,7 +9395,7 @@ decodeDC (int *motor)
}
-/*
+/*
* encodes VGA : must be in [0..0x0F] range
*/
static void
@@ -9402,10 +9410,10 @@ encodeVGA (int vgaRed, int vgaGreen, int vgaBlue, int *motor)
{
motor[10] = (vgaGreen << 4) | vgaBlue;
motor[11] = (motor[11] & 0xF0) | vgaRed;
- /* ancien
- F00: vert
+ /* ancien
+ F00: vert
0F0: bleu
- 00F: rouge
+ 00F: rouge
motor[10] = (vgaRed << 4) | vgaGreen;
motor[11] = (motor[11] & 0xF0) | vgaBlue; */
}
@@ -9693,7 +9701,7 @@ bloc8Decode (int *op)
static int
completionWait (void)
{
- /* for 610P, wait and sync is done while
+ /* for 610P, wait and sync is done while
* reading data from the scanner */
CMDSYNC (0x40);
usleep (100000);
@@ -9893,7 +9901,7 @@ evalGain (int sum, int count)
avg = (float) (sum) / (float) (count);
pct = 100.0 - (avg * 100.0) / targetCode;
gn = (int) (pct / 0.57);
-
+
/* give gain for dark areas a boost */
#ifdef UMAX_PP_DANGEROUS_EXPERIMENT
if(getenv("AREA")!=NULL)
@@ -9907,7 +9915,7 @@ evalGain (int sum, int count)
pct = gn;
avg = exp((-pct)/area)*coeff+cnst;
gn = gn * avg;
-
+
/* bound checking : there are sightings of >127 values being negative */
if (gn < 0)
gn = 0;
@@ -9985,7 +9993,7 @@ computeCalibrationData (int color, int width, unsigned char *source,
/* move head by the distance given using precision or not */
-/* 0: failed
+/* 0: failed
1: success */
static int
move (int distance, int precision, unsigned char *buffer)
@@ -10437,11 +10445,11 @@ shadingCalibration1220p (int color,
/* get calibration data */
/*
if (sanei_umax_pp_getauto ())
- { auto settings doesn't use offset
+ { auto settings doesn't use offset
offset = 0x000;
}
else
- { manual settings
+ { manual settings
gain = 0x777;
offset = 0x000;
}
@@ -10743,7 +10751,7 @@ sanei_umax_pp_scan (int x, int y, int width, int height, int dpi, int color,
read += len;
}
- /* in color mode we have to fill the 'reserve' area
+ /* in color mode we have to fill the 'reserve' area
* so that we can reorder data lines */
while ((read - dataoffset < reserve) && (!gCancel))
{
@@ -10823,8 +10831,8 @@ sanei_umax_pp_scan (int x, int y, int width, int height, int dpi, int color,
}
}
/* copy tail lines for next block */
- /* memcpy (buffer,
- * (buffer + reserve) + (hp * bpl - reserve),
+ /* memcpy (buffer,
+ * (buffer + reserve) + (hp * bpl - reserve),
* reserve + remain); */
memcpy (buffer, buffer + hp * bpl, reserve + remain);
break;
@@ -11194,8 +11202,8 @@ sanei_umax_pp_startScan (int x, int y, int width, int height, int dpi,
th = (height * dpi) / hwdpi;
tw = (width * xdpi) / hwdpi;
- /* corrects y to match exact scan area start
- * and lets room for a leading zone so that
+ /* corrects y to match exact scan area start
+ * and lets room for a leading zone so that
* we can reorder data */
switch (sanei_umax_pp_getastra ())
{
@@ -11476,7 +11484,7 @@ sanei_umax_pp_startScan (int x, int y, int width, int height, int dpi,
/* 3 ccd lines + 3 gamma tables + end tag */
if (sanei_umax_pp_getastra () <= 610)
{
- /* XXX STEF XXX : there is a 4 pixels shift to the right
+ /* XXX STEF XXX : there is a 4 pixels shift to the right
* the first shading correction value applies to the forth
* pixel of scan (at 300 dpi), we allready shift to the left
* when doing shadingCalibration, but now we have to move coeffs
@@ -11504,7 +11512,7 @@ sanei_umax_pp_startScan (int x, int y, int width, int height, int dpi,
return 1;
}
-/*
+/*
* check the scanner model. Return 1220 for
* a 1220P, or 2000 for a 2000P.
* and 610 for a 610p
@@ -11728,7 +11736,7 @@ loadDefaultTables (void)
}
/* set and reread first table */
- /* since 1660P seems to have another type of CCD
+ /* since 1660P seems to have another type of CCD
* this table is not sent/needed
*/
err = 0;
@@ -11829,7 +11837,7 @@ loadDefaultTables (void)
return rc;
}
-/* inquire scanner status
+/* inquire scanner status
* O: failure
* 1: OK
* 2: first scanner init, needs re-homing
@@ -12070,7 +12078,7 @@ offsetCalibration1220p (int color, int *offRed, int *offGreen, int *offBlue)
* computes DC offset to have black pixel really black out of
* CCD ie black gives 0
* 610P doesn't implement method described in LM9811 datasheet
- * but scan a black line with decreasing offsets until the
+ * but scan a black line with decreasing offsets until the
* scanned data reach a 'good black level'.
* returns 1 and DC offsets in the corresponding vars on success .
* On failure, returns 0.
@@ -12247,7 +12255,7 @@ offsetCalibration610p (int color, int *offRed, int *offGreen, int *offBlue)
return 1;
}
-/*
+/*
* generic offset calibration function
*/
static int
@@ -12339,7 +12347,7 @@ coarseGainCalibration610p (int color, int dcRed, int dcGreen, int dcBlue,
/* move back to desired area */
MOVE (-69, PRECISION_OFF, NULL);
- /* first scan : taking a reference full width scan to
+ /* first scan : taking a reference full width scan to
* find usable full width of the CCD
*/
*vgaRed = 0x08;
diff --git a/backend/umax_pp_low.h b/backend/umax_pp_low.h
index 7cef9dd..5e986c0 100644
--- a/backend/umax_pp_low.h
+++ b/backend/umax_pp_low.h
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
diff --git a/backend/umax_pp_mid.c b/backend/umax_pp_mid.c
index ee8d98d..5f9fd5e 100644
--- a/backend/umax_pp_mid.c
+++ b/backend/umax_pp_mid.c
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -131,7 +131,7 @@ unlock_parport (void)
-/*
+/*
*
* This function recognize the scanner model by sending an image
* filter command. 1220P will use it as is, but 2000P will return
diff --git a/backend/umax_pp_mid.h b/backend/umax_pp_mid.h
index 32245c6..5903a45 100644
--- a/backend/umax_pp_mid.h
+++ b/backend/umax_pp_mid.h
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
- Copyright (C) 2001-2012 Stphane Voltz <stef.dev@free.fr>
+ Copyright (C) 2001-2012 Stéphane Voltz <stef.dev@free.fr>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
@@ -87,7 +87,7 @@ extern int sanei_umax_pp_attach (int port, char *name);
extern int sanei_umax_pp_model (int port, int *model);
-/*
+/*
if on=1 -> lights scanner lamp
if on=0 -> lights off scanner lamp
@@ -116,7 +116,7 @@ extern int sanei_umax_pp_open (int port, char *name);
-/*
+/*
release any ressource acquired during open
since there may be only one scanner, no port parameter
*/
@@ -145,9 +145,9 @@ extern int sanei_umax_pp_cancel (void);
gain value is 256*red_gain+16*green_gain+blue_gain
if gain is given (ie <> 0), auto gain will not be performed
-
- returns UMAX1220P_OK on success, or one of the error above
+
+ returns UMAX1220P_OK on success, or one of the error above
if successful, rbpp holds bytes/pixel, rth the height and rtw
the width of scanned area expressed in pixels
*/
@@ -159,7 +159,7 @@ extern int sanei_umax_pp_start (int x, int y, int width, int height, int dpi,
/* reads one block of data from scanner
returns UMAX1220P_OK on success, or UMAX1220P_READ_FAILED on error
it also sets internal cancel flag on error
-
+
len if the length of the block needed
window if the width in pixels of the scanned area
dpi is the resolution, it is used to choose the best read method
diff --git a/backend/v4l-frequencies.h b/backend/v4l-frequencies.h
index 646120e..e926e7c 100644
--- a/backend/v4l-frequencies.h
+++ b/backend/v4l-frequencies.h
@@ -3,7 +3,7 @@
*
* Nathan Laredo (laredo@broked.net)
*
- * Frequencies are given in kHz
+ * Frequencies are given in kHz
*/
#define NTSC_AUDIO_CARRIER 4500
#define PAL_AUDIO_CARRIER_I 6000
@@ -16,7 +16,7 @@
containing 8 bits frame sync, 5 bits control, 11 bits additional data, and
704 bits audio data. The bit rate is reduced by transmitting only 10 bits
plus parity of each 14 bit sample, the largest sample in a frame determines
- which 10 bits are transmitted. The parity bits for audio samples also
+ which 10 bits are transmitted. The parity bits for audio samples also
specify the scaling factor used for that channel during that frame. The
companeded audio data is interleaved to reduce the influence of dropouts
and the whole frame except for sync bits is scrambled for spectrum shaping.
diff --git a/backend/v4l.c b/backend/v4l.c
index 1e032c7..006e7f7 100644
--- a/backend/v4l.c
+++ b/backend/v4l.c
@@ -653,7 +653,7 @@ sane_open (SANE_String_Const devname, SANE_Handle * handle)
DBG (5, "sane_open: x=%d, y=%d, width=%d, height=%d\n",
s->window.x, s->window.y, s->window.width, s->window.height);
- /* already done in sane_start
+ /* already done in sane_start
if (-1 == v4l1_ioctl (v4lfd, VIDIOCGMBUF, &mbuf))
DBG (1, "sane_open: can't ioctl VIDIOCGMBUF (no Fbuffer?)\n");
*/
diff --git a/backend/v4l.h b/backend/v4l.h
index 6aee586..e6673d0 100644
--- a/backend/v4l.h
+++ b/backend/v4l.h
@@ -73,7 +73,7 @@ struct video_picture
#define VIDEO_PALETTE_HI240 2 /* High 240 cube (BT848) */
#define VIDEO_PALETTE_RGB565 3 /* 565 16 bit RGB */
#define VIDEO_PALETTE_RGB24 4 /* 24bit RGB */
-#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
+#define VIDEO_PALETTE_RGB32 5 /* 32bit RGB */
#define VIDEO_PALETTE_RGB555 6 /* 555 15bit RGB */
#define VIDEO_PALETTE_YUV422 7 /* YUV422 capture */
#define VIDEO_PALETTE_YUYV 8
@@ -112,7 +112,7 @@ struct video_mbuf
int frames; /* Frames */
int offsets[VIDEO_MAX_FRAME];
};
-
+
struct video_mmap
{
unsigned int frame; /* Frame (0 - n) for double buffer */
@@ -130,7 +130,7 @@ struct video_channel
#define VIDEO_VC_AUDIO 2 /* Channel has audio */
__u16 type;
#define VIDEO_TYPE_TV 1
-#define VIDEO_TYPE_CAMERA 2
+#define VIDEO_TYPE_CAMERA 2
__u16 norm; /* Norm set by channel */
};
diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c
index 8b8c895..b7fcbee 100644
--- a/backend/xerox_mfp.c
+++ b/backend/xerox_mfp.c
@@ -206,9 +206,13 @@ static int isSupportedDevice(struct device __sane_unused__ *dev)
{
#ifdef HAVE_LIBJPEG
/* Checking device which supports JPEG Lossy compression for color scanning*/
- if (dev->compressionTypes & (1 << 6))
+ if (dev->compressionTypes & (1 << 6)) {
+ /* blacklist malfunctioning device(s) */
+ if (!strncmp(dev->sane.model, "SCX-4500W", 9) ||
+ !strncmp(dev->sane.model, "M288x", 5))
+ return 0;
return 1;
- else
+ } else
return 0;
#else
return 0;
diff --git a/backend/xerox_mfp.conf.in b/backend/xerox_mfp.conf.in
index b17c7d7..39bf669 100644
--- a/backend/xerox_mfp.conf.in
+++ b/backend/xerox_mfp.conf.in
@@ -196,6 +196,12 @@ usb 0x04e8 0x3466
#Samsung C460 Series
usb 0x04e8 0x3468
+#Samsung M2070 Series
+usb 0x04e8 0x3469
+
+#Samsung C1860FW
+usb 0x04e8 0x346b
+
#Samsung M458x Series
usb 0x04e8 0x346f
@@ -208,6 +214,9 @@ usb 0x04e8 0x3477
#Samsung K401 Series
usb 0x04e8 0x3478
+#Samsung C480W
+usb 0x04e8 0x347e
+
#Samsung K3250 Series
usb 0x04e8 0x3481
@@ -245,4 +254,3 @@ usb 0x413c 0x5124
#Dell 1235cn (clone of Samsung CLX-3175)
usb 0x413c 0x5310
-
diff --git a/compile b/compile
deleted file mode 100755
index 531136b..0000000
--- a/compile
+++ /dev/null
@@ -1,347 +0,0 @@
-#! /bin/sh
-# Wrapper for compilers which do not understand '-c -o'.
-
-scriptversion=2012-10-14.11; # UTC
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-# Written by Tom Tromey <tromey@cygnus.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU 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 <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent tools from complaining about whitespace usage.
-IFS=" "" $nl"
-
-file_conv=
-
-# func_file_conv build_file lazy
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts. If the determined conversion
-# type is listed in (the comma separated) LAZY, no conversion will
-# take place.
-func_file_conv ()
-{
- file=$1
- case $file in
- / | /[!/]*) # absolute file, and not a UNC file
- if test -z "$file_conv"; then
- # lazily determine how to convert abs files
- case `uname -s` in
- MINGW*)
- file_conv=mingw
- ;;
- CYGWIN*)
- file_conv=cygwin
- ;;
- *)
- file_conv=wine
- ;;
- esac
- fi
- case $file_conv/,$2, in
- *,$file_conv,*)
- ;;
- mingw/*)
- file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
- ;;
- cygwin/*)
- file=`cygpath -m "$file" || echo "$file"`
- ;;
- wine/*)
- file=`winepath -w "$file" || echo "$file"`
- ;;
- esac
- ;;
- esac
-}
-
-# func_cl_dashL linkdir
-# Make cl look for libraries in LINKDIR
-func_cl_dashL ()
-{
- func_file_conv "$1"
- if test -z "$lib_path"; then
- lib_path=$file
- else
- lib_path="$lib_path;$file"
- fi
- linker_opts="$linker_opts -LIBPATH:$file"
-}
-
-# func_cl_dashl library
-# Do a library search-path lookup for cl
-func_cl_dashl ()
-{
- lib=$1
- found=no
- save_IFS=$IFS
- IFS=';'
- for dir in $lib_path $LIB
- do
- IFS=$save_IFS
- if $shared && test -f "$dir/$lib.dll.lib"; then
- found=yes
- lib=$dir/$lib.dll.lib
- break
- fi
- if test -f "$dir/$lib.lib"; then
- found=yes
- lib=$dir/$lib.lib
- break
- fi
- if test -f "$dir/lib$lib.a"; then
- found=yes
- lib=$dir/lib$lib.a
- break
- fi
- done
- IFS=$save_IFS
-
- if test "$found" != yes; then
- lib=$lib.lib
- fi
-}
-
-# func_cl_wrapper cl arg...
-# Adjust compile command to suit cl
-func_cl_wrapper ()
-{
- # Assume a capable shell
- lib_path=
- shared=:
- linker_opts=
- for arg
- do
- if test -n "$eat"; then
- eat=
- else
- case $1 in
- -o)
- # configure might choose to run compile as 'compile cc -o foo foo.c'.
- eat=1
- case $2 in
- *.o | *.[oO][bB][jJ])
- func_file_conv "$2"
- set x "$@" -Fo"$file"
- shift
- ;;
- *)
- func_file_conv "$2"
- set x "$@" -Fe"$file"
- shift
- ;;
- esac
- ;;
- -I)
- eat=1
- func_file_conv "$2" mingw
- set x "$@" -I"$file"
- shift
- ;;
- -I*)
- func_file_conv "${1#-I}" mingw
- set x "$@" -I"$file"
- shift
- ;;
- -l)
- eat=1
- func_cl_dashl "$2"
- set x "$@" "$lib"
- shift
- ;;
- -l*)
- func_cl_dashl "${1#-l}"
- set x "$@" "$lib"
- shift
- ;;
- -L)
- eat=1
- func_cl_dashL "$2"
- ;;
- -L*)
- func_cl_dashL "${1#-L}"
- ;;
- -static)
- shared=false
- ;;
- -Wl,*)
- arg=${1#-Wl,}
- save_ifs="$IFS"; IFS=','
- for flag in $arg; do
- IFS="$save_ifs"
- linker_opts="$linker_opts $flag"
- done
- IFS="$save_ifs"
- ;;
- -Xlinker)
- eat=1
- linker_opts="$linker_opts $2"
- ;;
- -*)
- set x "$@" "$1"
- shift
- ;;
- *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
- func_file_conv "$1"
- set x "$@" -Tp"$file"
- shift
- ;;
- *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
- func_file_conv "$1" mingw
- set x "$@" "$file"
- shift
- ;;
- *)
- set x "$@" "$1"
- shift
- ;;
- esac
- fi
- shift
- done
- if test -n "$linker_opts"; then
- linker_opts="-link$linker_opts"
- fi
- exec "$@" $linker_opts
- exit 1
-}
-
-eat=
-
-case $1 in
- '')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: compile [--help] [--version] PROGRAM [ARGS]
-
-Wrapper for compilers which do not understand '-c -o'.
-Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
-arguments, and rename the output as expected.
-
-If you are trying to build a whole package this is not the
-right script to run: please start by reading the file 'INSTALL'.
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "compile $scriptversion"
- exit $?
- ;;
- cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
- func_cl_wrapper "$@" # Doesn't return...
- ;;
-esac
-
-ofile=
-cfile=
-
-for arg
-do
- if test -n "$eat"; then
- eat=
- else
- case $1 in
- -o)
- # configure might choose to run compile as 'compile cc -o foo foo.c'.
- # So we strip '-o arg' only if arg is an object.
- eat=1
- case $2 in
- *.o | *.obj)
- ofile=$2
- ;;
- *)
- set x "$@" -o "$2"
- shift
- ;;
- esac
- ;;
- *.c)
- cfile=$1
- set x "$@" "$1"
- shift
- ;;
- *)
- set x "$@" "$1"
- shift
- ;;
- esac
- fi
- shift
-done
-
-if test -z "$ofile" || test -z "$cfile"; then
- # If no '-o' option was seen then we might have been invoked from a
- # pattern rule where we don't need one. That is ok -- this is a
- # normal compilation that the losing compiler can handle. If no
- # '.c' file was seen then we are probably linking. That is also
- # ok.
- exec "$@"
-fi
-
-# Name of file we expect compiler to create.
-cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
-
-# Create the lock directory.
-# Note: use '[/\\:.-]' here to ensure that we don't use the same name
-# that we are using for the .o file. Also, base the name on the expected
-# object file name, since that is what matters with a parallel build.
-lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
-while true; do
- if mkdir "$lockdir" >/dev/null 2>&1; then
- break
- fi
- sleep 1
-done
-# FIXME: race condition here if user kills between mkdir and trap.
-trap "rmdir '$lockdir'; exit 1" 1 2 15
-
-# Run the compile.
-"$@"
-ret=$?
-
-if test -f "$cofile"; then
- test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
-elif test -f "${cofile}bj"; then
- test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
-fi
-
-rmdir "$lockdir"
-exit $ret
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/config.guess b/config.guess
deleted file mode 100755
index faa63aa..0000000
--- a/config.guess
+++ /dev/null
@@ -1,1466 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-# Copyright 1992-2017 Free Software Foundation, Inc.
-
-timestamp='2017-05-11'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# 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 <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-#
-# Please send patches to <config-patches@gnu.org>.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2017 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help" >&2
- exit 1 ;;
- * )
- break ;;
- esac
-done
-
-if test $# != 0; then
- echo "$me: too many arguments$help" >&2
- exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
-
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
- #include <features.h>
- #if defined(__UCLIBC__)
- LIBC=uclibc
- #elif defined(__dietlibc__)
- LIBC=dietlibc
- #else
- LIBC=gnu
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
- ;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
- # compatibility and a consistent mechanism for selecting the
- # object file format.
- #
- # Note: NetBSD doesn't particularly care about the vendor
- # portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- /sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || \
- echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
- armeb) machine=armeb-unknown ;;
- arm*) machine=arm-unknown ;;
- sh3el) machine=shl-unknown ;;
- sh3eb) machine=sh-unknown ;;
- sh5el) machine=sh5le-unknown ;;
- earmv*)
- arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine=${arch}${endian}-unknown
- ;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- esac
- # The Operating System including object format, if it has switched
- # to ELF recently (or will in the future) and ABI.
- case "${UNAME_MACHINE_ARCH}" in
- earm*)
- os=netbsdelf
- ;;
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ELF__
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
- ;;
- *)
- os=netbsd
- ;;
- esac
- # Determine ABI tags.
- case "${UNAME_MACHINE_ARCH}" in
- earm*)
- expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
- ;;
- esac
- # The OS release
- # Debian GNU/NetBSD machines have a different userland, and
- # thus, need a distinct triplet. However, they do not need
- # kernel version information, so it can be replaced with a
- # suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
- Debian*)
- release='-gnu'
- ;;
- *)
- release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
- ;;
- esac
- # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
- # contains redundant information, the shorter form:
- # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}${abi}"
- exit ;;
- *:Bitrig:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
- exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
- *:LibertyBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
- exit ;;
- *:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
- exit ;;
- *:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
- exit ;;
- macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
- exit ;;
- *:Sortix:*:*)
- echo ${UNAME_MACHINE}-unknown-sortix
- exit ;;
- alpha:OSF1:*:*)
- case $UNAME_RELEASE in
- *4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- ;;
- *5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- ;;
- esac
- # According to Compaq, /usr/sbin/psrinfo has been available on
- # OSF/1 and Tru64 systems produced since 1995. I hope that
- # covers most systems running today. This code pipes the CPU
- # types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
- case "$ALPHA_CPU_TYPE" in
- "EV4 (21064)")
- UNAME_MACHINE=alpha ;;
- "EV4.5 (21064)")
- UNAME_MACHINE=alpha ;;
- "LCA4 (21066/21068)")
- UNAME_MACHINE=alpha ;;
- "EV5 (21164)")
- UNAME_MACHINE=alphaev5 ;;
- "EV5.6 (21164A)")
- UNAME_MACHINE=alphaev56 ;;
- "EV5.6 (21164PC)")
- UNAME_MACHINE=alphapca56 ;;
- "EV5.7 (21164PC)")
- UNAME_MACHINE=alphapca57 ;;
- "EV6 (21264)")
- UNAME_MACHINE=alphaev6 ;;
- "EV6.7 (21264A)")
- UNAME_MACHINE=alphaev67 ;;
- "EV6.8CB (21264C)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.8AL (21264B)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.8CX (21264D)")
- UNAME_MACHINE=alphaev68 ;;
- "EV6.9A (21264/EV69A)")
- UNAME_MACHINE=alphaev69 ;;
- "EV7 (21364)")
- UNAME_MACHINE=alphaev7 ;;
- "EV7.9 (21364A)")
- UNAME_MACHINE=alphaev79 ;;
- esac
- # A Pn.n version is a patched version.
- # A Vn.n version is a released version.
- # A Tn.n version is a released field test version.
- # A Xn.n version is an unreleased experimental baselevel.
- # 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
- Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
- *:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
- exit ;;
- *:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
- exit ;;
- *:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
- *:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
- *:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
- arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
- exit ;;
- arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
- SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
- Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
- NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
- DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
- DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
- s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
- exit ;;
- i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH=i386
- # If there is a compiler, see if it is configured for 64-bit objects.
- # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- # This test works for both compilers.
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- SUN_ARCH=x86_64
- fi
- fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:6*:*)
- # According to config.sub, this is the proper way to canonicalize
- # SunOS6. Hard to guess exactly what SunOS6 will be like, but
- # it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
- Series*|S4*)
- UNAME_RELEASE=`uname -v`
- ;;
- esac
- # Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit ;;
- sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
- exit ;;
- sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
- sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
- ;;
- sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
- ;;
- esac
- exit ;;
- aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
- exit ;;
- # The situation for MiNT is a little confusing. The machine name
- # can be virtually everything (everything which is not
- # "atarist" or "atariste" at least should have a processor
- # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
- # to the lowercase version "mint" (or "freemint"). Finally
- # the system name "TOS" denotes a system which is actually not
- # MiNT. But MiNT is downward compatible to TOS, so this should
- # be no problem.
- atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
- milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
- hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
- *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
- m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
- exit ;;
- powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
- exit ;;
- RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
- RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
- exit ;;
- VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
- exit ;;
- 2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
- exit ;;
- mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
- #if defined (host_mips) && defined (MIPSEB)
- #if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
- #endif
- #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
- #endif
- #endif
- exit (-1);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
- exit ;;
- Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
- Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
- Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
- m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
- m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
- m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
- AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
- then
- echo m88k-dg-dgux${UNAME_RELEASE}
- else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
- fi
- else
- echo i586-dg-dgux${UNAME_RELEASE}
- fi
- exit ;;
- M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
- M88*:*:R3*:*)
- # Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
- XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
- Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
- *:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit ;;
- ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
- i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
- ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:2:3)
- if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <sys/systemcfg.h>
-
- main()
- {
- if (!__power_pc())
- exit(1);
- puts("powerpc-ibm-aix3.2.5");
- exit(0);
- }
-EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
- then
- echo "$SYSTEM_NAME"
- else
- echo rs6000-ibm-aix3.2.5
- fi
- elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
- else
- echo rs6000-ibm-aix3.2
- fi
- exit ;;
- *:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- IBM_ARCH=rs6000
- else
- IBM_ARCH=powerpc
- fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
- else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit ;;
- *:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
- *:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
- DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
- 9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
- hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
- 9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
- 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH=hppa2.0n ;;
- 64) HP_ARCH=hppa2.0w ;;
- '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
- esac ;;
- esac
- fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
-
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
-
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
-
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
-EOF
- (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- test -z "$HP_ARCH" && HP_ARCH=hppa
- fi ;;
- esac
- if [ ${HP_ARCH} = hppa2.0w ]
- then
- eval $set_cc_for_build
-
- # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
- # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
- # generating 64-bit code. GNU and HP use different nomenclature:
- #
- # $ CC_FOR_BUILD=cc ./config.guess
- # => hppa2.0w-hp-hpux11.23
- # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
- # => hppa64-hp-hpux11.23
-
- if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
- grep -q __LP64__
- then
- HP_ARCH=hppa2.0w
- else
- HP_ARCH=hppa64
- fi
- fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit ;;
- ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
- exit ;;
- 3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <unistd.h>
- int
- main ()
- {
- long cpu = sysconf (_SC_CPU_VERSION);
- /* The order matters, because CPU_IS_HP_MC68K erroneously returns
- true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
- results, however. */
- if (CPU_IS_PA_RISC (cpu))
- {
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
- case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
- default: puts ("hppa-hitachi-hiuxwe2"); break;
- }
- }
- else if (CPU_IS_HP_MC68K (cpu))
- puts ("m68k-hitachi-hiuxwe2");
- else puts ("unknown-hitachi-hiuxwe2");
- exit (0);
- }
-EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
- { echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- echo hppa1.1-hp-bsd
- exit ;;
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- echo hppa1.1-hp-osf
- exit ;;
- hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
- i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
- else
- echo ${UNAME_MACHINE}-unknown-osf1
- fi
- exit ;;
- parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
- C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
- C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- if getsysinfo -f scalar_acc
- then echo c32-convex-bsd
- else echo c2-convex-bsd
- fi
- exit ;;
- C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
- C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
- C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
- CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- *:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit ;;
- F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- 5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
- i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
- exit ;;
- sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
- amd64)
- UNAME_PROCESSOR=x86_64 ;;
- i386)
- UNAME_PROCESSOR=i586 ;;
- esac
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
- exit ;;
- *:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
- exit ;;
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
- *:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
- exit ;;
- i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
- exit ;;
- *:Interix*:*)
- case ${UNAME_MACHINE} in
- x86)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
- IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
- exit ;;
- esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
- i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
- exit ;;
- amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
- exit ;;
- prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
- *:GNU:*:*)
- # the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit ;;
- *:GNU/*:*:*)
- # other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
- exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
- aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- aarch64_be:Linux:*:*)
- UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- arm*:Linux:*:*)
- eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_EABI__
- then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- else
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
- else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
- fi
- fi
- exit ;;
- avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
- exit ;;
- e2k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
- exit ;;
- ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- k1om:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
- #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
- #else
- #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
- #else
- CPU=
- #endif
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
- ;;
- mips64el:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- openrisc*:Linux:*:*)
- echo or1k-unknown-linux-${LIBC}
- exit ;;
- or32:Linux:*:* | or1k*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
- exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
- exit ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
- # Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
- esac
- exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
- exit ;;
- ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
- exit ;;
- ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
- exit ;;
- sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
- exit ;;
- x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
- exit ;;
- xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:DYNIX/ptx:4*:*)
- # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- # earlier versions are messed up and put the nodename in both
- # sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
- i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
- # I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit ;;
- i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
- exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
- else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit ;;
- i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
- *486*) UNAME_MACHINE=i486 ;;
- *Pentium) UNAME_MACHINE=i586 ;;
- *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
- elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
- (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- && UNAME_MACHINE=i686
- (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- && UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- else
- echo ${UNAME_MACHINE}-pc-sysv32
- fi
- exit ;;
- pc:*:*:*)
- # Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
- # Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configure will decide that
- # this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
- Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
- paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
- i860:*:4.*:*) # i860-SVR4
- if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
- fi
- exit ;;
- mini*:CTIX:SYS*5:*)
- # "miniframe"
- echo m68010-convergent-sysv
- exit ;;
- mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
- M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
- M68*:*:R3V[5678]*:*)
- test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
- 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- OS_REL=''
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- OS_REL='.3'
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
- m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
- TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit ;;
- SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
- exit ;;
- RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
- *:SINIX-*:*:*)
- if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
- else
- echo ns32k-sni-sysv
- fi
- exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
- *:UNIX_System_V:4*:FTX*)
- # From Gerald Hewes <hewes@openmarket.com>.
- # How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
- *:*:*:FTX*)
- # From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
- i*86:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
- exit ;;
- *:VOS:*:*)
- # From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
- mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
- exit ;;
- news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
- R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
- else
- echo mips-unknown-sysv${UNAME_RELEASE}
- fi
- exit ;;
- BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
- BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
- BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
- x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
- SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
- exit ;;
- SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux${UNAME_RELEASE}
- exit ;;
- Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit ;;
- *:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
- fi
- if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- fi
- elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
- fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit ;;
- *:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
- if test "$UNAME_PROCESSOR" = x86; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
- fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit ;;
- *:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
- NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk${UNAME_RELEASE}
- exit ;;
- *:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
- BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
- DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit ;;
- *:Plan9:*:*)
- # "uname -m" is not consistent, so use $cputype instead. 386
- # is converted to i386 for consistency with other x86
- # operating systems.
- if test "$cputype" = 386; then
- UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
- fi
- echo ${UNAME_MACHINE}-unknown-plan9
- exit ;;
- *:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
- *:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
- KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
- XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
- *:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
- *:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
- SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
- exit ;;
- *:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit ;;
- *:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
- esac ;;
- *:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
- i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
- exit ;;
- i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
- exit ;;
- x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
- exit ;;
- amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
-esac
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
-
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
-and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-If $0 has already been updated, send the following data and any
-information you think might be pertinent to config-patches@gnu.org to
-provide the necessary information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/config.rpath b/config.rpath
deleted file mode 100755
index 17298f2..0000000
--- a/config.rpath
+++ /dev/null
@@ -1,672 +0,0 @@
-#! /bin/sh
-# Output a system dependent set of variables, describing how to set the
-# run time search path of shared libraries in an executable.
-#
-# Copyright 1996-2010 Free Software Foundation, Inc.
-# Taken from GNU libtool, 2001
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# The first argument passed to this file is the canonical host specification,
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-# should be set by the caller.
-#
-# The set of defined variables is at the end of this script.
-
-# Known limitations:
-# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
-# than 256 bytes, otherwise the compiler driver will dump core. The only
-# known workaround is to choose shorter directory names for the build
-# directory and/or the installation directory.
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-shrext=.so
-
-host="$1"
-host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-# Code taken from libtool.m4's _LT_CC_BASENAME.
-
-for cc_temp in $CC""; do
- case $cc_temp in
- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
-
-# Code taken from libtool.m4's _LT_COMPILER_PIC.
-
-wl=
-if test "$GCC" = yes; then
- wl='-Wl,'
-else
- case "$host_os" in
- aix*)
- wl='-Wl,'
- ;;
- darwin*)
- case $cc_basename in
- xlc*)
- wl='-Wl,'
- ;;
- esac
- ;;
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- ;;
- hpux9* | hpux10* | hpux11*)
- wl='-Wl,'
- ;;
- irix5* | irix6* | nonstopux*)
- wl='-Wl,'
- ;;
- newsos6)
- ;;
- linux* | k*bsd*-gnu)
- case $cc_basename in
- ecc*)
- wl='-Wl,'
- ;;
- icc* | ifort*)
- wl='-Wl,'
- ;;
- lf95*)
- wl='-Wl,'
- ;;
- pgcc | pgf77 | pgf90)
- wl='-Wl,'
- ;;
- ccc*)
- wl='-Wl,'
- ;;
- como)
- wl='-lopt='
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- wl='-Wl,'
- ;;
- esac
- ;;
- esac
- ;;
- osf3* | osf4* | osf5*)
- wl='-Wl,'
- ;;
- rdos*)
- ;;
- solaris*)
- wl='-Wl,'
- ;;
- sunos4*)
- wl='-Qoption ld '
- ;;
- sysv4 | sysv4.2uw2* | sysv4.3*)
- wl='-Wl,'
- ;;
- sysv4*MP*)
- ;;
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- wl='-Wl,'
- ;;
- unicos*)
- wl='-Wl,'
- ;;
- uts4*)
- ;;
- esac
-fi
-
-# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
-
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-
-case "$host_os" in
- cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
- interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
- with_gnu_ld=yes
- ;;
- openbsd*)
- with_gnu_ld=no
- ;;
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
- # Set some defaults for GNU ld with shared library support. These
- # are reset later if shared libraries are not supported. Putting them
- # here allows them to be overridden if necessary.
- # Unlike libtool, we use -rpath here, not --rpath, since the documented
- # option of GNU ld is called -rpath, not --rpath.
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- case "$host_os" in
- aix[3-9]*)
- # On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
- ld_shlibs=no
- fi
- ;;
- amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we cannot use
- # them.
- ld_shlibs=no
- ;;
- beos*)
- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- :
- else
- ld_shlibs=no
- fi
- ;;
- cygwin* | mingw* | pw32* | cegcc*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
- :
- else
- ld_shlibs=no
- fi
- ;;
- interix[3-9]*)
- hardcode_direct=no
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- gnu* | linux* | k*bsd*-gnu)
- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- :
- else
- ld_shlibs=no
- fi
- ;;
- netbsd*)
- ;;
- solaris*)
- if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- :
- else
- ld_shlibs=no
- fi
- ;;
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
- case `$LD -v 2>&1` in
- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
- ld_shlibs=no
- ;;
- *)
- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
- else
- ld_shlibs=no
- fi
- ;;
- esac
- ;;
- sunos4*)
- hardcode_direct=yes
- ;;
- *)
- if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
- :
- else
- ld_shlibs=no
- fi
- ;;
- esac
- if test "$ld_shlibs" = no; then
- hardcode_libdir_flag_spec=
- fi
-else
- case "$host_os" in
- aix3*)
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$GCC" = yes; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
- aix[4-9]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- else
- aix_use_runtimelinking=no
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- ;;
- esac
- fi
- hardcode_direct=yes
- hardcode_libdir_separator=':'
- if test "$GCC" = yes; then
- case $host_os in aix4.[012]|aix4.[012].*)
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- hardcode_direct=unsupported
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- ;;
- esac
- fi
- # Begin _LT_AC_SYS_LIBPATH_AIX.
- echo 'int main () { return 0; }' > conftest.c
- ${CC} ${LDFLAGS} conftest.c -o conftest
- aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
- if test -z "$aix_libpath"; then
- aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
- fi
- if test -z "$aix_libpath"; then
- aix_libpath="/usr/lib:/lib"
- fi
- rm -f conftest.c conftest
- # End _LT_AC_SYS_LIBPATH_AIX.
- if test "$aix_use_runtimelinking" = yes; then
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- else
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- fi
- fi
- ;;
- amigaos*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
- ;;
- bsdi[45]*)
- ;;
- cygwin* | mingw* | pw32* | cegcc*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- libext=lib
- ;;
- darwin* | rhapsody*)
- hardcode_direct=no
- if test "$GCC" = yes ; then
- :
- else
- case $cc_basename in
- xlc*)
- ;;
- *)
- ld_shlibs=no
- ;;
- esac
- fi
- ;;
- dgux*)
- hardcode_libdir_flag_spec='-L$libdir'
- ;;
- freebsd1*)
- ld_shlibs=no
- ;;
- freebsd2.2*)
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- ;;
- freebsd2*)
- hardcode_direct=yes
- hardcode_minus_L=yes
- ;;
- freebsd* | dragonfly*)
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- ;;
- hpux9*)
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- ;;
- hpux10*)
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- fi
- ;;
- hpux11*)
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- case $host_cpu in
- hppa*64*|ia64*)
- hardcode_direct=no
- ;;
- *)
- hardcode_direct=yes
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- ;;
- esac
- fi
- ;;
- irix5* | irix6* | nonstopux*)
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
- netbsd*)
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- ;;
- newsos6)
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- hardcode_direct=yes
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- else
- case "$host_os" in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- else
- ld_shlibs=no
- fi
- ;;
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- ;;
- osf3*)
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
- osf4* | osf5*)
- if test "$GCC" = yes; then
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- # Both cc and cxx compiler support -rpath directly
- hardcode_libdir_flag_spec='-rpath $libdir'
- fi
- hardcode_libdir_separator=:
- ;;
- solaris*)
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- sunos4*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- ;;
- sysv4)
- case $host_vendor in
- sni)
- hardcode_direct=yes # is this really true???
- ;;
- siemens)
- hardcode_direct=no
- ;;
- motorola)
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
- esac
- ;;
- sysv4.3*)
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- ld_shlibs=yes
- fi
- ;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- ;;
- sysv5* | sco3.2v5* | sco5v6*)
- hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
- hardcode_libdir_separator=':'
- ;;
- uts4*)
- hardcode_libdir_flag_spec='-L$libdir'
- ;;
- *)
- ld_shlibs=no
- ;;
- esac
-fi
-
-# Check dynamic linker characteristics
-# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
-# Unlike libtool.m4, here we don't care about _all_ names of the library, but
-# only about the one the linker finds when passed -lNAME. This is the last
-# element of library_names_spec in libtool.m4, or possibly two of them if the
-# linker has special search rules.
-library_names_spec= # the last element of library_names_spec in libtool.m4
-libname_spec='lib$name'
-case "$host_os" in
- aix3*)
- library_names_spec='$libname.a'
- ;;
- aix[4-9]*)
- library_names_spec='$libname$shrext'
- ;;
- amigaos*)
- library_names_spec='$libname.a'
- ;;
- beos*)
- library_names_spec='$libname$shrext'
- ;;
- bsdi[45]*)
- library_names_spec='$libname$shrext'
- ;;
- cygwin* | mingw* | pw32* | cegcc*)
- shrext=.dll
- library_names_spec='$libname.dll.a $libname.lib'
- ;;
- darwin* | rhapsody*)
- shrext=.dylib
- library_names_spec='$libname$shrext'
- ;;
- dgux*)
- library_names_spec='$libname$shrext'
- ;;
- freebsd1*)
- ;;
- freebsd* | dragonfly*)
- case "$host_os" in
- freebsd[123]*)
- library_names_spec='$libname$shrext$versuffix' ;;
- *)
- library_names_spec='$libname$shrext' ;;
- esac
- ;;
- gnu*)
- library_names_spec='$libname$shrext'
- ;;
- hpux9* | hpux10* | hpux11*)
- case $host_cpu in
- ia64*)
- shrext=.so
- ;;
- hppa*64*)
- shrext=.sl
- ;;
- *)
- shrext=.sl
- ;;
- esac
- library_names_spec='$libname$shrext'
- ;;
- interix[3-9]*)
- library_names_spec='$libname$shrext'
- ;;
- irix5* | irix6* | nonstopux*)
- library_names_spec='$libname$shrext'
- case "$host_os" in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in
- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
- *) libsuff= shlibsuff= ;;
- esac
- ;;
- esac
- ;;
- linux*oldld* | linux*aout* | linux*coff*)
- ;;
- linux* | k*bsd*-gnu)
- library_names_spec='$libname$shrext'
- ;;
- knetbsd*-gnu)
- library_names_spec='$libname$shrext'
- ;;
- netbsd*)
- library_names_spec='$libname$shrext'
- ;;
- newsos6)
- library_names_spec='$libname$shrext'
- ;;
- nto-qnx*)
- library_names_spec='$libname$shrext'
- ;;
- openbsd*)
- library_names_spec='$libname$shrext$versuffix'
- ;;
- os2*)
- libname_spec='$name'
- shrext=.dll
- library_names_spec='$libname.a'
- ;;
- osf3* | osf4* | osf5*)
- library_names_spec='$libname$shrext'
- ;;
- rdos*)
- ;;
- solaris*)
- library_names_spec='$libname$shrext'
- ;;
- sunos4*)
- library_names_spec='$libname$shrext$versuffix'
- ;;
- sysv4 | sysv4.3*)
- library_names_spec='$libname$shrext'
- ;;
- sysv4*MP*)
- library_names_spec='$libname$shrext'
- ;;
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- library_names_spec='$libname$shrext'
- ;;
- uts4*)
- library_names_spec='$libname$shrext'
- ;;
-esac
-
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
-shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
-escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
-
-LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
-
-# How to pass a linker flag through the compiler.
-wl="$escaped_wl"
-
-# Static library suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally "so").
-shlibext="$shlibext"
-
-# Format of library name prefix.
-libname_spec="$escaped_libname_spec"
-
-# Library names that the linker finds when passed -lNAME.
-library_names_spec="$escaped_library_names_spec"
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator="$hardcode_libdir_separator"
-
-# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct="$hardcode_direct"
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L="$hardcode_minus_L"
-
-EOF
diff --git a/config.sub b/config.sub
deleted file mode 100755
index 40ea5df..0000000
--- a/config.sub
+++ /dev/null
@@ -1,1836 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright 1992-2017 Free Software Foundation, Inc.
-
-timestamp='2017-04-02'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# 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 <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2017 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
- kopensolaris*-gnu* | cloudabi*-eabi* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | ba \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | e2k | epiphany \
- | fido | fr30 | frv | ft32 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia16 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 | or1k | or1knd | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pru \
- | pyramid \
- | riscv32 | riscv64 \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | wasm32 \
- | we32k \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- leon|leon[3-9])
- basic_machine=sparc-$basic_machine
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
- ;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- xscaleeb)
- basic_machine=armeb-unknown
- ;;
-
- xscaleel)
- basic_machine=armel-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | ba-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa32r6-* | mipsisa32r6el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64r6-* | mipsisa64r6el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | or1k*-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pru-* \
- | pyramid-* \
- | riscv32-* | riscv64-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | visium-* \
- | wasm32-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- e500v[12])
- basic_machine=powerpc-unknown
- os=$os"spe"
- ;;
- e500v[12]-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=$os"spe"
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- os=-moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- nsx-tandem)
- basic_machine=nsx-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh5el)
- basic_machine=sh5le-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- wasm32)
- basic_machine=wasm32-unknown
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
- ;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -dicos*)
- os=-dicos
- ;;
- -nacl*)
- ;;
- -ios)
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- score-*)
- os=-elf
- ;;
- spu-*)
- os=-elf
- ;;
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- c8051-*)
- os=-elf
- ;;
- hexagon-*)
- os=-elf
- ;;
- tic54x-*)
- os=-coff
- ;;
- tic55x-*)
- os=-coff
- ;;
- tic6x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mep-*)
- os=-elf
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- pru-*)
- os=-elf
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -cnk*|-aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure b/configure
deleted file mode 100755
index 216aaea..0000000
--- a/configure
+++ /dev/null
@@ -1,24492 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for sane-backends 1.0.27.
-#
-# Report bugs to <sane-devel@lists.alioth.debian.org>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
- # into an infinite loop, continuously re-executing ourselves.
- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
- _as_can_reexec=no; export _as_can_reexec;
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
- fi
- # We don't want this to propagate to other subprocesses.
- { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-"
- as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
- exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
-
- test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
- ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
- ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
- PATH=/empty FPATH=/empty; export PATH FPATH
- test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
- || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
- as_have_required=yes
-else
- as_have_required=no
-fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- as_found=:
- case $as_dir in #(
- /*)
- for as_base in sh bash ksh sh5; do
- # Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
- CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
- break 2
-fi
-fi
- done;;
- esac
- as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
- if test "x$CONFIG_SHELL" != x; then :
- export CONFIG_SHELL
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
- else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: sane-devel@lists.alioth.debian.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
- fi
- exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
- # already done that, so ensure we don't try to do so again and fall
- # in an infinite loop. This has already happened in practice.
- _as_can_reexec=no; export _as_can_reexec
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='sane-backends'
-PACKAGE_TARNAME='sane-backends'
-PACKAGE_VERSION='1.0.27'
-PACKAGE_STRING='sane-backends 1.0.27'
-PACKAGE_BUGREPORT='sane-devel@lists.alioth.debian.org'
-PACKAGE_URL=''
-
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-gt_needs=
-ac_config_libobj_dir=lib
-ac_header_list=
-ac_subst_vars='am__EXEEXT_FALSE
-am__EXEEXT_TRUE
-LTLIBOBJS
-AM_LDFLAGS
-AM_CFLAGS
-AM_CPPFLAGS
-WITH_API_HTML_FALSE
-WITH_API_HTML_TRUE
-WITH_API_PDF_FALSE
-WITH_API_PDF_TRUE
-WITH_API_PS_FALSE
-WITH_API_PS_TRUE
-PPMTOGIF
-DLH
-GS
-FIG2DEV
-PDFLATEX
-LATEX
-DVIPS
-MAKEINDEX
-BACKEND_MANS_ENABLED
-BACKEND_CONFS_ENABLED
-PRELOADABLE_BACKENDS_ENABLED
-PRELOADABLE_BACKENDS
-INSTALL_UMAX_PP_TOOLS_FALSE
-INSTALL_UMAX_PP_TOOLS_TRUE
-BACKEND_LIBS_ENABLED
-SANEI_SANEI_JPEG_LO
-HAVE_JPEG_FALSE
-HAVE_JPEG_TRUE
-BACKENDS
-COMPILE_SANED_FALSE
-COMPILE_SANED_TRUE
-configdir
-locksanedir
-SCSI_LIBS
-have_usblib_FALSE
-have_usblib_TRUE
-USB_LIBS
-USB_CFLAGS
-SYSTEMD_LIBS
-SYSTEMD_CFLAGS
-SOCKET_LIBS
-LTALLOCA
-LIBOBJS
-ALLOCA
-RESMGR_LIBS
-SNMP_CFLAGS
-SNMP_LIBS
-SNMP_CONFIG_PATH
-AVAHI_LIBS
-AVAHI_CFLAGS
-LIBV4L_LIBS
-LIBV4L_CFLAGS
-GPHOTO2_LDFLAGS
-GPHOTO2_LIBS
-GPHOTO2_CPPFLAGS
-HAVE_GPHOTO2
-LOCKPATH_GROUP
-INSTALL_LOCKPATH
-PTHREAD_LIBS
-IEEE1284_LIBS
-PNG_LIBS
-TIFF_LIBS
-JPEG_LIBS
-SYSLOG_LIBS
-MATH_LIB
-DYNAMIC_FLAG
-DL_LIBS
-effective_target
-STRICT_LDFLAGS
-CROSS_COMPILING_FALSE
-CROSS_COMPILING_TRUE
-PKG_CONFIG_LIBDIR
-PKG_CONFIG_PATH
-PKG_CONFIG
-SANE_CONFIG_PATH
-POSUB
-LTLIBINTL
-LIBINTL
-INTLLIBS
-LTLIBICONV
-LIBICONV
-INTL_MACOSX_LIBS
-XGETTEXT_EXTRA_OPTIONS
-MSGMERGE
-XGETTEXT_015
-XGETTEXT
-GMSGFMT_015
-MSGFMT_015
-GMSGFMT
-MSGFMT
-GETTEXT_MACRO_VERSION
-USE_NLS
-OTOOL64
-OTOOL
-LIPO
-NMEDIT
-DSYMUTIL
-MANIFEST_TOOL
-RANLIB
-LN_S
-NM
-ac_ct_DUMPBIN
-DUMPBIN
-LD
-FGREP
-SED
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-LIBTOOL
-OBJDUMP
-DLLTOOL
-AS
-ac_ct_AR
-AR
-EGREP
-GREP
-CPP
-am__fastdepCC_FALSE
-am__fastdepCC_TRUE
-CCDEPMODE
-am__nodep
-AMDEPBACKSLASH
-AMDEP_FALSE
-AMDEP_TRUE
-am__quote
-am__include
-DEPDIR
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-V_REV
-V_MINOR
-V_MAJOR
-MAINT
-MAINTAINER_MODE_FALSE
-MAINTAINER_MODE_TRUE
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
-am__untar
-am__tar
-AMTAR
-am__leading_dot
-SET_MAKE
-AWK
-mkdir_p
-MKDIR_P
-INSTALL_STRIP_PROGRAM
-STRIP
-install_sh
-MAKEINFO
-AUTOHEADER
-AUTOMAKE
-AUTOCONF
-ACLOCAL
-VERSION
-PACKAGE
-CYGPATH_W
-am__isrc
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-enable_silent_rules
-enable_maintainer_mode
-enable_dependency_tracking
-enable_static
-enable_shared
-with_pic
-enable_fast_install
-with_gnu_ld
-with_sysroot
-enable_libtool_lock
-enable_nls
-enable_rpath
-with_libiconv_prefix
-with_libintl_prefix
-enable_warnings
-enable_dynamic
-enable_pthread
-enable_locking
-with_group
-with_gphoto2
-with_v4l
-enable_avahi
-with_snmp
-with_systemd
-with_usb
-enable_scsibuffersize
-enable_scsi_directio
-enable_ipv6
-enable_preload
-with_lockdir
-enable_local_backends
-enable_pnm_backend
-enable_parport_directio
-with_api_spec
-'
- ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP
-PKG_CONFIG
-PKG_CONFIG_PATH
-PKG_CONFIG_LIBDIR
-LIBV4L_CFLAGS
-LIBV4L_LIBS
-AVAHI_CFLAGS
-AVAHI_LIBS
-SYSTEMD_CFLAGS
-SYSTEMD_LIBS
-USB_CFLAGS
-USB_LIBS
-BACKENDS
-PRELOADABLE_BACKENDS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval $ac_prev=\$ac_option
- ac_prev=
- continue
- fi
-
- case $ac_option in
- *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
- *=) ac_optarg= ;;
- *) ac_optarg=yes ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case $ac_dashdash$ac_option in
- --)
- ac_dashdash=yes ;;
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir=$ac_optarg ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build_alias ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build_alias=$ac_optarg ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file=$ac_optarg ;;
-
- --config-cache | -C)
- cache_file=config.cache ;;
-
- -datadir | --datadir | --datadi | --datad)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=*)
- datadir=$ac_optarg ;;
-
- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
- | --dataroo | --dataro | --datar)
- ac_prev=datarootdir ;;
- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
- datarootdir=$ac_optarg ;;
-
- -disable-* | --disable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=no ;;
-
- -docdir | --docdir | --docdi | --doc | --do)
- ac_prev=docdir ;;
- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
- docdir=$ac_optarg ;;
-
- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
- ac_prev=dvidir ;;
- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
- dvidir=$ac_optarg ;;
-
- -enable-* | --enable-*)
- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"enable_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval enable_$ac_useropt=\$ac_optarg ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix=$ac_optarg ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he | -h)
- ac_init_help=long ;;
- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
- ac_init_help=recursive ;;
- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
- ac_init_help=short ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host_alias ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host_alias=$ac_optarg ;;
-
- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
- ac_prev=htmldir ;;
- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
- | --ht=*)
- htmldir=$ac_optarg ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir=$ac_optarg ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir=$ac_optarg ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir=$ac_optarg ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir=$ac_optarg ;;
-
- -localedir | --localedir | --localedi | --localed | --locale)
- ac_prev=localedir ;;
- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
- localedir=$ac_optarg ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst | --locals)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
- localstatedir=$ac_optarg ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir=$ac_optarg ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c | -n)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir=$ac_optarg ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix=$ac_optarg ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix=$ac_optarg ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix=$ac_optarg ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name=$ac_optarg ;;
-
- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
- ac_prev=pdfdir ;;
- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
- pdfdir=$ac_optarg ;;
-
- -psdir | --psdir | --psdi | --psd | --ps)
- ac_prev=psdir ;;
- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
- psdir=$ac_optarg ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir=$ac_optarg ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir=$ac_optarg ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site=$ac_optarg ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir=$ac_optarg ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir=$ac_optarg ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target_alias ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target_alias=$ac_optarg ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers | -V)
- ac_init_version=: ;;
-
- -with-* | --with-*)
- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=\$ac_optarg ;;
-
- -without-* | --without-*)
- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
- # Reject names that are not valid shell variable names.
- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
- ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
- case $ac_user_opts in
- *"
-"with_$ac_useropt"
-"*) ;;
- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
- ac_unrecognized_sep=', ';;
- esac
- eval with_$ac_useropt=no ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes=$ac_optarg ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries=$ac_optarg ;;
-
- -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
- ;;
-
- *=*)
- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
- # Reject names that are not valid shell variable names.
- case $ac_envvar in #(
- '' | [0-9]* | *[!_$as_cr_alnum]* )
- as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
- esac
- eval $ac_envvar=\$ac_optarg
- export $ac_envvar ;;
-
- *)
- # FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
- as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
- case $enable_option_checking in
- no) ;;
- fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
- esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
- datadir sysconfdir sharedstatedir localstatedir includedir \
- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
-do
- eval ac_val=\$$ac_var
- # Remove trailing slashes.
- case $ac_val in
- */ )
- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
- eval $ac_var=\$ac_val;;
- esac
- # Be sure to have absolute directory names.
- case $ac_val in
- [\\/$]* | ?:[\\/]* ) continue;;
- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
- esac
- as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
- if test "x$build_alias" = x; then
- cross_compiling=maybe
- elif test "x$build_alias" != "x$host_alias"; then
- cross_compiling=yes
- fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
- as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
- as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then the parent directory.
- ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_myself" : 'X\(//\)[^/]' \| \
- X"$as_myself" : 'X\(//\)$' \| \
- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- srcdir=$ac_confdir
- if test ! -r "$srcdir/$ac_unique_file"; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
- as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
- pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
- srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
- eval ac_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_env_${ac_var}_value=\$${ac_var}
- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
- eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat <<_ACEOF
-\`configure' configures sane-backends 1.0.27 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE. See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
- -h, --help display this help and exit
- --help=short display options specific to this package
- --help=recursive display the short help of all the included packages
- -V, --version display version information and exit
- -q, --quiet, --silent do not print \`checking ...' messages
- --cache-file=FILE cache test results in FILE [disabled]
- -C, --config-cache alias for \`--cache-file=config.cache'
- -n, --no-create do not create output files
- --srcdir=DIR find the sources in DIR [configure dir or \`..']
-
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
- --infodir=DIR info documentation [DATAROOTDIR/info]
- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
- --mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/sane-backends]
- --htmldir=DIR html documentation [DOCDIR]
- --dvidir=DIR dvi documentation [DOCDIR]
- --pdfdir=DIR pdf documentation [DOCDIR]
- --psdir=DIR ps documentation [DOCDIR]
-_ACEOF
-
- cat <<\_ACEOF
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-
-System types:
- --build=BUILD configure for building on BUILD [guessed]
- --host=HOST cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
- case $ac_init_help in
- short | recursive ) echo "Configuration of sane-backends 1.0.27:";;
- esac
- cat <<\_ACEOF
-
-Optional Features:
- --disable-option-checking ignore unrecognized --enable/--with options
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --enable-silent-rules less verbose build output (undo: "make V=1")
- --disable-silent-rules verbose build output (undo: "make V=0")
- --enable-maintainer-mode
- enable make rules and dependencies not useful (and
- sometimes confusing) to the casual installer
- --enable-dependency-tracking
- do not reject slow dependency extractors
- --disable-dependency-tracking
- speeds up one-time build
- --enable-static[=PKGS] build static libraries [default=no]
- --enable-shared[=PKGS] build shared libraries [default=yes]
- --enable-fast-install[=PKGS]
- optimize for fast installation [default=yes]
- --disable-libtool-lock avoid locking (might break parallel builds)
- --disable-nls do not use Native Language Support
- --disable-rpath do not hardcode runtime library paths
- --enable-warnings turn on tons of compiler warnings (GCC only)
- --disable-dynamic Disable dynamic loading of backends
- --enable-pthread use pthread instead of fork (default=yes for
- Linux/MacOS X/MINGW, no for everything else)
- --enable-locking activate device locking (default=yes, but only used
- by some backends)
- --enable-avahi enable Avahi support for saned and the net backend
- --enable-scsibuffersize=N
- specify the default size in bytes of the buffer for
- SCSI commands [default=131072]
- --enable-scsi-directio enable SCSI direct IO (Linux only, dangerous, see
- README.linux)
- --disable-ipv6 disable IPv6 support
- --disable-preload Disable preloading of backends
- --disable-local-backends
- turn off compilation of all backends but net
- --enable-pnm-backend enable the pnm backend for testing frontends
- (possible security risk, see PROBLEMS file)
- --enable-parport-directio
- enable direct hardware access to the parallel port,
- so frontends will require special permission level
-
-Optional Packages:
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
- both]
- --with-gnu-ld assume the C compiler uses GNU ld [default=no]
- --with-sysroot=DIR Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).
- --with-gnu-ld assume the C compiler uses GNU ld default=no
- --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
- --without-libiconv-prefix don't search for libiconv in includedir and libdir
- --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
- --without-libintl-prefix don't search for libintl in includedir and libdir
- --with-group use the specified group for lock dir [default=uucp]
- --with-gphoto2 include the gphoto2 backend [default=yes]
- --with-v4l include the v4l backend [default=yes]
- --with-snmp enable SNMP support [default=yes]
- --with-systemd enable systemd support [default=yes]
- --with-usb enable USB support [default=check]
- --with-lockdir=DIR set SANE lockdir [localstatedir/lock/sane]
- --with-api-spec convert API spec to supported output formats
- [default=check]
-
-Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
- nonstandard directory <lib dir>
- LIBS libraries to pass to the linker, e.g. -l<library>
- CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
- you have headers in a nonstandard directory <include dir>
- CPP C preprocessor
- PKG_CONFIG path to pkg-config utility
- PKG_CONFIG_PATH
- directories to add to pkg-config's search path
- PKG_CONFIG_LIBDIR
- path overriding pkg-config's built-in search path
- LIBV4L_CFLAGS
- C compiler flags for LIBV4L, overriding pkg-config
- LIBV4L_LIBS linker flags for LIBV4L, overriding pkg-config
- AVAHI_CFLAGS
- C compiler flags for AVAHI, overriding pkg-config
- AVAHI_LIBS linker flags for AVAHI, overriding pkg-config
- SYSTEMD_CFLAGS
- C compiler flags for SYSTEMD, overriding pkg-config
- SYSTEMD_LIBS
- linker flags for SYSTEMD, overriding pkg-config
- USB_CFLAGS C compiler flags for USB, overriding pkg-config
- USB_LIBS linker flags for USB, overriding pkg-config
- BACKENDS list of backends to compile
- PRELOADABLE_BACKENDS
- list of backends to preload into single DLL
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <sane-devel@lists.alioth.debian.org>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
- # If there are subdirs, report their specific --help.
- for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
- test -d "$ac_dir" ||
- { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
- continue
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
- cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
- if test -f "$ac_srcdir/configure.gnu"; then
- echo &&
- $SHELL "$ac_srcdir/configure.gnu" --help=recursive
- elif test -f "$ac_srcdir/configure"; then
- echo &&
- $SHELL "$ac_srcdir/configure" --help=recursive
- else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
- fi || ac_status=$?
- cd "$ac_pwd" || { ac_status=$?; break; }
- done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
- cat <<\_ACEOF
-sane-backends configure 1.0.27
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
- exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
- if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------------------- ##
-## Report this to sane-devel@lists.alioth.debian.org ##
-## ------------------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
-# -------------------------------------------
-# Tests whether TYPE exists after having included INCLUDES, setting cache
-# variable VAR accordingly.
-ac_fn_c_check_type ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=no"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof ($2))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-if (sizeof (($2)))
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- eval "$3=yes"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_type
-
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_lo=0 ac_mid=0
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=$ac_mid; break
-else
- as_fn_arith $ac_mid + 1 && ac_lo=$as_val
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0;
-return test_array [0];
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=-1 ac_mid=-1
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_lo=$ac_mid; break
-else
- as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- done
-else
- ac_lo= ac_hi=
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
- as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0;
-return test_array [0];
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_hi=$ac_mid
-else
- as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in #((
-?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
-'') ac_retval=1 ;;
-esac
- else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
- FILE *f = fopen ("conftest.val", "w");
- if (! f)
- return 1;
- if (($2) < 0)
- {
- long int i = longval ();
- if (i != ($2))
- return 1;
- fprintf (f, "%ld", i);
- }
- else
- {
- unsigned long int i = ulongval ();
- if (i != ($2))
- return 1;
- fprintf (f, "%lu", i);
- }
- /* Do not output a trailing newline, as this causes \r\n confusion
- on some platforms. */
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
- ac_retval=1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-rm -f conftest.val
-
- fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_compute_int
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by sane-backends $as_me 1.0.27, which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
-
-/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
-/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
-/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
- done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
- for ac_arg
- do
- case $ac_arg in
- -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- continue ;;
- *\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- case $ac_pass in
- 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
- 2)
- as_fn_append ac_configure_args1 " '$ac_arg'"
- if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
- else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
- fi
- as_fn_append ac_configure_args " '$ac_arg'"
- ;;
- esac
- done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log. We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
- # Save into config.log some information that might help in debugging.
- {
- echo
-
- $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
- echo
- # The following way of writing the cache mishandles newlines in values,
-(
- for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
- (set) 2>&1 |
- case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- sed -n \
- "s/'\''/'\''\\\\'\'''\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
- ;; #(
- *)
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-)
- echo
-
- $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
- echo
- for ac_var in $ac_subst_vars
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
-
- if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
- echo
- for ac_var in $ac_subst_files
- do
- eval ac_val=\$$ac_var
- case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
- esac
- $as_echo "$ac_var='\''$ac_val'\''"
- done | sort
- echo
- fi
-
- if test -s confdefs.h; then
- $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
- echo
- cat confdefs.h
- echo
- fi
- test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
- } >&5
- rm -f core *.core core.conftest.* &&
- rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
- exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
- trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
-elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
-else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
- sed 's/^/| /' "$ac_site_file" >&5
- . "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
- fi
-done
-
-if test -r "$cache_file"; then
- # Some versions of bash will fail to source /dev/null (special files
- # actually), so we avoid doing that. DJGPP emulates it as a regular file.
- if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
- case $cache_file in
- [\\/]* | ?:[\\/]* ) . "$cache_file";;
- *) . "./$cache_file";;
- esac
- fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
- >$cache_file
-fi
-
-gt_needs="$gt_needs "
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_config_headers="$ac_config_headers include/sane/config.h"
-
-
-am__api_version='1.14'
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
- /usr/ucb/* ) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- rm -rf conftest.one conftest.two conftest.dir
- echo one > conftest.one
- echo two > conftest.two
- mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
- test -s conftest.one && test -s conftest.two &&
- test -s conftest.dir/conftest.one &&
- test -s conftest.dir/conftest.two
- then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
- fi
- done
- done
- ;;
-esac
-
- done
-IFS=$as_save_IFS
-
-rm -rf conftest.one conftest.two conftest.dir
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- INSTALL=$ac_install_sh
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
-# Reject unsafe characters in $srcdir or the absolute working directory
-# name. Accept space and tab only in the latter.
-am_lf='
-'
-case `pwd` in
- *[\\\"\#\$\&\'\`$am_lf]*)
- as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
-esac
-case $srcdir in
- *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
- as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
-esac
-
-# Do 'set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- am_has_slept=no
- for am_try in 1 2; do
- echo "timestamp, slept: $am_has_slept" > conftest.file
- set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
- if test "$*" = "X"; then
- # -L didn't work.
- set X `ls -t "$srcdir/configure" conftest.file`
- fi
- if test "$*" != "X $srcdir/configure conftest.file" \
- && test "$*" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- as_fn_error $? "ls -t appears to fail. Make sure there is not a broken
- alias in your environment" "$LINENO" 5
- fi
- if test "$2" = conftest.file || test $am_try -eq 2; then
- break
- fi
- # Just in case.
- sleep 1
- am_has_slept=yes
- done
- test "$2" = conftest.file
- )
-then
- # Ok.
- :
-else
- as_fn_error $? "newly created file is older than distributed files!
-Check your system clock" "$LINENO" 5
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-# If we didn't sleep, we still need to ensure time stamps of config.status and
-# generated files are strictly newer.
-am_sleep_pid=
-if grep 'slept: no' conftest.file >/dev/null 2>&1; then
- ( sleep 1 ) &
- am_sleep_pid=$!
-fi
-
-rm -f conftest.file
-
-test "$program_prefix" != NONE &&
- program_transform_name="s&^&$program_prefix&;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.
-# By default was `s,x,x', remove it if useless.
-ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-if test x"${MISSING+set}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
- *)
- MISSING="\${SHELL} $am_aux_dir/missing" ;;
- esac
-fi
-# Use eval to expand $SHELL
-if eval "$MISSING --is-lightweight"; then
- am_missing_run="$MISSING "
-else
- am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
-fi
-
-if test x"${install_sh}" != xset; then
- case $am_aux_dir in
- *\ * | *\ *)
- install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
- *)
- install_sh="\${SHELL} $am_aux_dir/install-sh"
- esac
-fi
-
-# Installed binaries are usually stripped using 'strip' when the user
-# run "make install-strip". However 'strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the 'STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
-if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in mkdir gmkdir; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
- 'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
- break 3;;
- esac
- done
- done
- done
-IFS=$as_save_IFS
-
-fi
-
- test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
- MKDIR_P="$ac_cv_path_mkdir -p"
- else
- # As a last resort, use the slow shell script. Don't cache a
- # value for MKDIR_P within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the value is a relative name.
- MKDIR_P="$ac_install_sh -d"
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
-
-for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
- @echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
- *@@@%%%=?*=@@@%%%*)
- eval ac_cv_prog_make_${ac_make}_set=yes;;
- *)
- eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- SET_MAKE=
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
-else
- am__leading_dot=_
-fi
-rmdir .tst 2>/dev/null
-
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
- enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
- @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
- am_cv_make_support_nested_variables=yes
-else
- am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-if test "`cd $srcdir && pwd`" != "`pwd`"; then
- # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
- # is not polluted with repeated "-I."
- am__isrc=' -I$(srcdir)'
- # test to see if srcdir already configured
- if test -f $srcdir/config.status; then
- as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
- fi
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-
-
-# Define the identity of the package.
- PACKAGE='sane-backends'
- VERSION='1.0.27'
-
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
-
-# Some tools Automake needs.
-
-ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
-
-
-AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
-
-
-AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
-
-
-AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
-
-
-MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-# For better backward compatibility. To be removed once Automake 1.9.x
-# dies out for good. For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
-mkdir_p='$(MKDIR_P)'
-
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-# Always define AMTAR for backward compatibility. Yes, it's still used
-# in the wild :-( We should find a proper way to deprecate it ...
-AMTAR='$${TAR-tar}'
-
-
-# We'll loop over all known methods to create a tar archive until one works.
-_am_tools='gnutar pax cpio none'
-
-am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
-
-
-
-
-
-
-# POSIX will say in a future version that running "rm -f" with no argument
-# is OK; and we want to be able to make that assumption in our Makefile
-# recipes. So use an aggressive probe to check that the usage we want is
-# actually supported "in the wild" to an acceptable degree.
-# See automake bug#10828.
-# To make any issue more visible, cause the running configure to be aborted
-# by default if the 'rm' program in use doesn't match our expectations; the
-# user can still override this though.
-if rm -f && rm -fr && rm -rf; then : OK; else
- cat >&2 <<'END'
-Oops!
-
-Your 'rm' program seems unable to run without file operands specified
-on the command line, even when the '-f' option is present. This is contrary
-to the behaviour of most rm programs out there, and not conforming with
-the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
-
-Please tell bug-automake@gnu.org about your system, including the value
-of your $PATH and any error possibly output before this message. This
-can help us improve future automake versions.
-
-END
- if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
- echo 'Configuration will proceed anyway, since you have set the' >&2
- echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
- echo >&2
- else
- cat >&2 <<'END'
-Aborting the configuration process, to ensure you take notice of the issue.
-
-You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
-
-If you want to complete the configuration process using your problematic
-'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
-to "yes", and re-run configure.
-
-END
- as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
- fi
-fi
-# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
- enableval=$enable_silent_rules;
-fi
-
-case $enable_silent_rules in # (((
- yes) AM_DEFAULT_VERBOSITY=0;;
- no) AM_DEFAULT_VERBOSITY=1;;
- *) AM_DEFAULT_VERBOSITY=1;;
-esac
-am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
-BAR0=false
-BAR1=true
-V=1
-am__doit:
- @$(TRUE)
-.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
- am_cv_make_support_nested_variables=yes
-else
- am_cv_make_support_nested_variables=no
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
-if test $am_cv_make_support_nested_variables = yes; then
- AM_V='$(V)'
- AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
-else
- AM_V=$AM_DEFAULT_VERBOSITY
- AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
-fi
-AM_BACKSLASH='\'
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
- # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
- enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
- USE_MAINTAINER_MODE=no
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
- if test $USE_MAINTAINER_MODE = yes; then
- MAINTAINER_MODE_TRUE=
- MAINTAINER_MODE_FALSE='#'
-else
- MAINTAINER_MODE_TRUE='#'
- MAINTAINER_MODE_FALSE=
-fi
-
- MAINT=$MAINTAINER_MODE_TRUE
-
-
-
-if test x = "x$AWK"; then :
- for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AWK" && break
-done
-
-fi
-if test x = "x`echo $VERSION | sed 's/[.0-9]//g'`"; then :
- is_release=yes
-else
- is_release=no
-fi
-V_MAJOR=`echo $VERSION | $AWK -F. '{print $1}'`
-V_MINOR=`echo $VERSION | $AWK -F. '{print $2}'`
-V_REV=`echo $VERSION | $AWK -F. '{print $3}' | sed 's/[^0-9]//g'`;
-
-
-cat >>confdefs.h <<_ACEOF
-#define SANE_DLL_V_MAJOR $V_MAJOR
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define SANE_DLL_V_MINOR $V_MINOR
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define SANE_DLL_V_BUILD $V_REV
-_ACEOF
-
-
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-else
- CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- fi
-fi
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# != 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl.exe
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$CC" && break
- done
-fi
-if test -z "$CC"; then
- ac_ct_CC=$CC
- for ac_prog in cl.exe
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
- ac_file=''
-fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
- { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if { ac_try='./conftest$ac_cv_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
- else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
- fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
-done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_compiler_gnu=yes
-else
- ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
- GCC=yes
-else
- GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_save_c_werror_flag=$ac_c_werror_flag
- ac_c_werror_flag=yes
- ac_cv_prog_cc_g=no
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-else
- CFLAGS=""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- ac_c_werror_flag=$ac_save_c_werror_flag
- CFLAGS="-g"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-g"
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
- # Make sure it works both with $CC and with simple cc.
- # Following AC_PROG_CC_C_O, we do the test twice because some
- # compilers refuse to overwrite an existing .o file with -o,
- # though they will create one.
- am_cv_prog_cc_c_o=yes
- for am_i in 1 2; do
- if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
- ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } \
- && test -f conftest2.$ac_objext; then
- : OK
- else
- am_cv_prog_cc_c_o=no
- break
- fi
- done
- rm -f core conftest*
- unset am_i
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-if test "$am_cv_prog_cc_c_o" != yes; then
- # Losing compiler, so override with the script.
- # FIXME: It is wrong to rewrite CC.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__CC in this case,
- # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
- CC="$am_aux_dir/compile $CC"
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
- am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
-
-depcc="$CC" am_compiler_list=
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
- # We make a subdir and do the tests there. Otherwise we can end up
- # making bogus files that we don't know about and never remove. For
- # instance it was reported that on HP-UX the gcc test will end up
- # making a dummy file named 'D' -- because '-MD' means "put the output
- # in D".
- rm -rf conftest.dir
- mkdir conftest.dir
- # Copy depcomp to subdir because otherwise we won't find it if we're
- # using a relative directory.
- cp "$am_depcomp" conftest.dir
- cd conftest.dir
- # We will build objects and dependencies in a subdirectory because
- # it helps to detect inapplicable dependency modes. For instance
- # both Tru64's cc and ICC support -MD to output dependencies as a
- # side effect of compilation, but ICC will put the dependencies in
- # the current directory while Tru64 will put them in the object
- # directory.
- mkdir sub
-
- am_cv_CC_dependencies_compiler_type=none
- if test "$am_compiler_list" = ""; then
- am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
- fi
- am__universal=false
- case " $depcc " in #(
- *\ -arch\ *\ -arch\ *) am__universal=true ;;
- esac
-
- for depmode in $am_compiler_list; do
- # Setup a source with many dependencies, because some compilers
- # like to wrap large dependency lists on column 80 (with \), and
- # we should not choose a depcomp mode which is confused by this.
- #
- # We need to recreate these files for each test, as the compiler may
- # overwrite some of them when testing with obscure command lines.
- # This happens at least with the AIX C compiler.
- : > sub/conftest.c
- for i in 1 2 3 4 5 6; do
- echo '#include "conftst'$i'.h"' >> sub/conftest.c
- # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
- # Solaris 10 /bin/sh.
- echo '/* dummy */' > sub/conftst$i.h
- done
- echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
-
- # We check with '-c' and '-o' for the sake of the "dashmstdout"
- # mode. It turns out that the SunPro C++ compiler does not properly
- # handle '-M -o', and we need to detect this. Also, some Intel
- # versions had trouble with output in subdirs.
- am__obj=sub/conftest.${OBJEXT-o}
- am__minus_obj="-o $am__obj"
- case $depmode in
- gcc)
- # This depmode causes a compiler race in universal mode.
- test "$am__universal" = false || continue
- ;;
- nosideeffect)
- # After this tag, mechanisms are not by side-effect, so they'll
- # only be used when explicitly requested.
- if test "x$enable_dependency_tracking" = xyes; then
- continue
- else
- break
- fi
- ;;
- msvc7 | msvc7msys | msvisualcpp | msvcmsys)
- # This compiler won't grok '-c -o', but also, the minuso test has
- # not run yet. These depmodes are late enough in the game, and
- # so weak that their functioning should not be impacted.
- am__obj=conftest.${OBJEXT-o}
- am__minus_obj=
- ;;
- none) break ;;
- esac
- if depmode=$depmode \
- source=sub/conftest.c object=$am__obj \
- depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
- $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
- >/dev/null 2>conftest.err &&
- grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
- grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
- grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
- ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
- # icc doesn't choke on unknown options, it will just issue warnings
- # or remarks (even with -Werror). So we grep stderr for any message
- # that says an option was ignored or not supported.
- # When given -MP, icc 7.0 and 7.1 complain thusly:
- # icc: Command line warning: ignoring option '-M'; no argument required
- # The diagnosis changed in icc 8.0:
- # icc: Command line remark: option '-MP' not supported
- if (grep 'ignoring option' conftest.err ||
- grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
- am_cv_CC_dependencies_compiler_type=$depmode
- break
- fi
- fi
- done
-
- cd ..
- rm -rf conftest.dir
-else
- am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
- test "x$enable_dependency_tracking" != xno \
- && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
- am__fastdepCC_TRUE=
- am__fastdepCC_FALSE='#'
-else
- am__fastdepCC_TRUE='#'
- am__fastdepCC_FALSE=
-fi
-
-
-
-sane_save_CC=$CC
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-// Check varargs macros. These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
-#define showlist(...) puts (#__VA_ARGS__)
-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-static void
-test_varargs_macros (void)
-{
- int x = 1234;
- int y = 5678;
- debug ("Flag");
- debug ("X = %d\n", x);
- showlist (The first, second, and third items.);
- report (x>y, "x is %d but y is %d", x, y);
-}
-
-// Check long long types.
-#define BIG64 18446744073709551615ull
-#define BIG32 4294967295ul
-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-#if !BIG_OK
- your preprocessor is broken;
-#endif
-#if BIG_OK
-#else
- your preprocessor is broken;
-#endif
-static long long int bignum = -9223372036854775807LL;
-static unsigned long long int ubignum = BIG64;
-
-struct incomplete_array
-{
- int datasize;
- double data[];
-};
-
-struct named_init {
- int number;
- const wchar_t *name;
- double average;
-};
-
-typedef const char *ccp;
-
-static inline int
-test_restrict (ccp restrict text)
-{
- // See if C++-style comments work.
- // Iterate through items via the restricted pointer.
- // Also check for declarations in for loops.
- for (unsigned int i = 0; *(text+i) != '\0'; ++i)
- continue;
- return 0;
-}
-
-// Check varargs and va_copy.
-static void
-test_varargs (const char *format, ...)
-{
- va_list args;
- va_start (args, format);
- va_list args_copy;
- va_copy (args_copy, args);
-
- const char *str;
- int number;
- float fnumber;
-
- while (*format)
- {
- switch (*format++)
- {
- case 's': // string
- str = va_arg (args_copy, const char *);
- break;
- case 'd': // int
- number = va_arg (args_copy, int);
- break;
- case 'f': // float
- fnumber = va_arg (args_copy, double);
- break;
- default:
- break;
- }
- }
- va_end (args_copy);
- va_end (args);
-}
-
-int
-main ()
-{
-
- // Check bool.
- _Bool success = false;
-
- // Check restrict.
- if (test_restrict ("String literal") == 0)
- success = true;
- char *restrict newvar = "Another string";
-
- // Check varargs.
- test_varargs ("s, d' f .", "string", 65, 34.234);
- test_varargs_macros ();
-
- // Check flexible array members.
- struct incomplete_array *ia =
- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
- ia->datasize = 10;
- for (int i = 0; i < ia->datasize; ++i)
- ia->data[i] = i * 1.234;
-
- // Check named initializers.
- struct named_init ni = {
- .number = 34,
- .name = L"Test wide string",
- .average = 543.34343,
- };
-
- ni.number = 58;
-
- int dynamic_array[ni.number];
- dynamic_array[ni.number - 1] = 543;
-
- // work around unused variable warnings
- return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
- || dynamic_array[ni.number - 1] != 543);
-
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c99=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c99" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c99"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
-
-fi
-
- if test xno != "x$ac_cv_prog_cc_c99"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $sane_save_CC option for ISO C99 w/o extensions" >&5
-$as_echo_n "checking for $sane_save_CC option for ISO C99 w/o extensions... " >&6; }
- case $ac_cv_prog_cc_c99 in #(
- -std=gnu99) :
- sane_prog_cc_c99="-std=c99" ;; #(
- -qlanglvl=extc99) :
- sane_prog_cc_c99="-qlanglvl=stdc99" ;; #(
- *) :
- ;;
-esac
- if test "x$ac_cv_prog_cc_c99" = "x$sane_prog_cc_c99"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_99" >&5
-$as_echo "$ac_cv_prog_cc_99" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sane_prog_cc_c99" >&5
-$as_echo "$sane_prog_cc_c99" >&6; }
- CC="$sane_save_CC $sane_prog_cc_c99"
-fi
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-if test $ac_cv_c_compiler_gnu = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if ${ac_cv_prog_gcc_traditional+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_pattern="Autoconf.*'x'"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
- ac_cv_prog_gcc_traditional=yes
-else
- ac_cv_prog_gcc_traditional=no
-fi
-rm -f conftest*
-
-
- if test $ac_cv_prog_gcc_traditional = no; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
- ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
- fi
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
-
-
- if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-if test -n "$ac_tool_prefix"; then
- for ac_prog in ar lib "link -lib"
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AR" && break
- done
-fi
-if test -z "$AR"; then
- ac_ct_AR=$AR
- for ac_prog in ar lib "link -lib"
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AR"; then
- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_AR" && break
-done
-
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AR=$ac_ct_AR
- fi
-fi
-
-: ${AR=ar}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
-$as_echo_n "checking the archiver ($AR) interface... " >&6; }
-if ${am_cv_ar_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- am_cv_ar_interface=ar
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int some_variable = 0;
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
- (eval $am_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=ar
- else
- am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
- (eval $am_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=lib
- else
- am_cv_ar_interface=unknown
- fi
- fi
- rm -f conftest.lib libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
-$as_echo "$am_cv_ar_interface" >&6; }
-
-case $am_cv_ar_interface in
-ar)
- ;;
-lib)
- # Microsoft lib, so override with the ar-lib wrapper script.
- # FIXME: It is wrong to rewrite AR.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__AR in this case,
- # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
- # similar.
- AR="$am_aux_dir/ar-lib $AR"
- ;;
-unknown)
- as_fn_error $? "could not determine $AR interface" "$LINENO" 5
- ;;
-esac
-
-case `pwd` in
- *\ * | *\ *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
-esac
-
-
-
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
- ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
- ECHO='printf %s\n'
-else
- # Use this function as a fallback that always works.
- func_fallback_echo ()
- {
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
- }
- ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
- $ECHO ""
-}
-
-case "$ECHO" in
- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
- for ac_i in 1 2 3 4 5 6 7; do
- ac_script="$ac_script$as_nl$ac_script"
- done
- echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
- { ac_script=; unset ac_script;}
- if test -z "$SED"; then
- ac_path_SED_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_SED" || continue
-# Check for GNU ac_path_SED and select it if it is found.
- # Check for GNU $ac_path_SED
-case `"$ac_path_SED" --version 2>&1` in
-*GNU*)
- ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
- "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_SED_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_SED="$ac_path_SED"
- ac_path_SED_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_SED_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_SED"; then
- as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
- fi
-else
- ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
- rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
- then ac_cv_path_FGREP="$GREP -F"
- else
- if test -z "$FGREP"; then
- ac_path_FGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in fgrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
- # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'FGREP' >> "conftest.nl"
- "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_FGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_FGREP="$ac_path_FGREP"
- ac_path_FGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_FGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_FGREP"; then
- as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_FGREP=$FGREP
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
-
-
-test -z "$GREP" && GREP=grep
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | ?:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${lt_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
-else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- lt_cv_prog_gnu_ld=yes
- ;;
-*)
- lt_cv_prog_gnu_ld=no
- ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
-else
- lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
- lt_nm_to_check="$lt_nm_to_check nm"
- fi
- for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
- */dev/null* | *'Invalid file or object type'*)
- lt_cv_path_NM="$tmp_nm -B"
- break
- ;;
- *)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
- */dev/null*)
- lt_cv_path_NM="$tmp_nm -p"
- break
- ;;
- *)
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- ;;
- esac
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
- done
- : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
-else
- # Didn't find any BSD compatible name lister, look for dumpbin.
- if test -n "$DUMPBIN"; then :
- # Let the user override the test.
- else
- if test -n "$ac_tool_prefix"; then
- for ac_prog in dumpbin "link -dump"
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DUMPBIN"; then
- ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$DUMPBIN" && break
- done
-fi
-if test -z "$DUMPBIN"; then
- ac_ct_DUMPBIN=$DUMPBIN
- for ac_prog in dumpbin "link -dump"
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DUMPBIN"; then
- ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_DUMPBIN" && break
-done
-
- if test "x$ac_ct_DUMPBIN" = x; then
- DUMPBIN=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DUMPBIN=$ac_ct_DUMPBIN
- fi
-fi
-
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
- *COFF*)
- DUMPBIN="$DUMPBIN -symbols"
- ;;
- *)
- DUMPBIN=:
- ;;
- esac
- fi
-
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
- fi
-fi
-test -z "$NM" && NM=nm
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_nm_interface="BSD nm"
- echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
- (eval "$ac_compile" 2>conftest.err)
- cat conftest.err >&5
- (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
- cat conftest.err >&5
- (eval echo "\"\$as_me:$LINENO: output\"" >&5)
- cat conftest.out >&5
- if $GREP 'External.*some_variable' conftest.out > /dev/null; then
- lt_cv_nm_interface="MS dumpbin"
- fi
- rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- i=0
- teststring="ABCD"
-
- case $build_os in
- msdosdjgpp*)
- # On DJGPP, this test can blow up pretty badly due to problems in libc
- # (any single argument exceeding 2000 bytes causes a buffer overrun
- # during glob expansion). Even if it were fixed, the result of this
- # check would be larger than it should be.
- lt_cv_sys_max_cmd_len=12288; # 12K is about right
- ;;
-
- gnu*)
- # Under GNU Hurd, this test is not required because there is
- # no limit to the length of command line arguments.
- # Libtool will interpret -1 as no limit whatsoever
- lt_cv_sys_max_cmd_len=-1;
- ;;
-
- cygwin* | mingw* | cegcc*)
- # On Win9x/ME, this test blows up -- it succeeds, but takes
- # about 5 minutes as the teststring grows exponentially.
- # Worse, since 9x/ME are not pre-emptively multitasking,
- # you end up with a "frozen" computer, even though with patience
- # the test eventually succeeds (with a max line length of 256k).
- # Instead, let's just punt: use the minimum linelength reported by
- # all of the supported platforms: 8192 (on NT/2K/XP).
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- mint*)
- # On MiNT this can take a long time and run out of memory.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- amigaos*)
- # On AmigaOS with pdksh, this test takes hours, literally.
- # So we just punt and use a minimum line length of 8192.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
- # This has been around since 386BSD, at least. Likely further.
- if test -x /sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
- elif test -x /usr/sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
- else
- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
- fi
- # And add a safety zone
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- ;;
-
- interix*)
- # We know the value 262144 and hardcode it with a safety zone (like BSD)
- lt_cv_sys_max_cmd_len=196608
- ;;
-
- os2*)
- # The test takes a long time on OS/2.
- lt_cv_sys_max_cmd_len=8192
- ;;
-
- osf*)
- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
- # nice to cause kernel panics so lets avoid the loop below.
- # First set a reasonable default.
- lt_cv_sys_max_cmd_len=16384
- #
- if test -x /sbin/sysconfig; then
- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
- *1*) lt_cv_sys_max_cmd_len=-1 ;;
- esac
- fi
- ;;
- sco3.2v5*)
- lt_cv_sys_max_cmd_len=102400
- ;;
- sysv5* | sco5v6* | sysv4.2uw2*)
- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
- if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
- else
- lt_cv_sys_max_cmd_len=32768
- fi
- ;;
- *)
- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len" && \
- test undefined != "$lt_cv_sys_max_cmd_len"; then
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- else
- # Make teststring a little bigger before we do anything with it.
- # a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
- teststring=$teststring$teststring
- done
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
- = "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- # Only check the string length outside the loop.
- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
- teststring=
- # Add a significant safety factor because C++ compilers can tack on
- # massive amounts of additional arguments before passing them to the
- # linker. It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
- fi
- ;;
- esac
-
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
-
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- lt_unset=unset
-else
- lt_unset=false
-fi
-
-
-
-
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
- lt_SP2NL='tr \040 \012'
- lt_NL2SP='tr \015\012 \040\040'
- ;;
- *) # EBCDIC based system
- lt_SP2NL='tr \100 \n'
- lt_NL2SP='tr \r\n \100\100'
- ;;
-esac
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $host in
- *-*-mingw* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
- ;;
- *-*-cygwin* )
- lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
- ;;
- * ) # otherwise, assume *nix
- lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
- ;;
- esac
- ;;
- *-*-cygwin* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
- ;;
- *-*-cygwin* )
- lt_cv_to_host_file_cmd=func_convert_file_noop
- ;;
- * ) # otherwise, assume *nix
- lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
- ;;
- esac
- ;;
- * ) # unhandled hosts (and "normal" native builds)
- lt_cv_to_host_file_cmd=func_convert_file_noop
- ;;
-esac
-
-fi
-
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
- *-*-mingw* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
- ;;
- esac
- ;;
-esac
-
-fi
-
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
- reload_cmds=false
- fi
- ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
- else
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- fi
- ;;
-esac
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-beos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-bsdi[45]*)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
-cygwin*)
- # func_win32_libid is a shell function defined in ltmain.sh
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- ;;
-
-mingw* | pw32*)
- # Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump',
- # unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
- # Keep this pattern in sync with the one in func_win32_libid.
- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-
-cegcc*)
- # use the weaker test based on 'objdump'. See mingw*.
- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
-darwin* | rhapsody*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-freebsd* | dragonfly*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
- esac
- else
- lt_cv_deplibs_check_method=pass_all
- fi
- ;;
-
-haiku*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
- case $host_cpu in
- ia64*)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
- ;;
- hppa*64*)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
- ;;
- *)
- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
- esac
- ;;
-
-interix[3-9]*)
- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $LD in
- *-32|*"-32 ") libmagic=32-bit;;
- *-n32|*"-n32 ") libmagic=N32;;
- *-64|*"-64 ") libmagic=64-bit;;
- *) libmagic=never-match;;
- esac
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
- fi
- ;;
-
-newos6*)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-*nto* | *qnx*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
- fi
- ;;
-
-osf3* | osf4* | osf5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-rdos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-solaris*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv4 | sysv4.3*)
- case $host_vendor in
- motorola)
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
- lt_cv_deplibs_check_method=pass_all
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
- siemens)
- lt_cv_deplibs_check_method=pass_all
- ;;
- pc)
- lt_cv_deplibs_check_method=pass_all
- ;;
- esac
- ;;
-
-tpf*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
- case $host_os in
- mingw* | pw32*)
- if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
- want_nocaseglob=yes
- else
- file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
- fi
- ;;
- esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DLLTOOL"; then
- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
- ac_ct_DLLTOOL=$DLLTOOL
- # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DLLTOOL"; then
- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DLLTOOL" = x; then
- DLLTOOL="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DLLTOOL=$ac_ct_DLLTOOL
- fi
-else
- DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
- case `$DLLTOOL --help 2>&1` in
- *--identify-strict*)
- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
- ;;
- *)
- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
- ;;
- esac
- ;;
-*)
- # fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
- ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- for ac_prog in ar
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AR" && break
- done
-fi
-if test -z "$AR"; then
- ac_ct_AR=$AR
- for ac_prog in ar
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AR"; then
- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_AR" && break
-done
-
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AR=$ac_ct_AR
- fi
-fi
-
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ar_at_file=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- echo conftest.$ac_objext > conftest.lst
- lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
- (eval $lt_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
- # Ensure the archiver fails upon bogus file names.
- rm -f conftest.$ac_objext libconftest.a
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
- (eval $lt_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -ne 0; then
- lt_cv_ar_at_file=@
- fi
- fi
- rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
- archiver_list_spec=
-else
- archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$STRIP"; then
- ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
- ac_ct_STRIP=$STRIP
- # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_STRIP"; then
- ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_STRIP" = x; then
- STRIP=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- STRIP=$ac_ct_STRIP
- fi
-else
- STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
- ac_ct_RANLIB=$RANLIB
- # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_RANLIB"; then
- ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_RANLIB" = x; then
- RANLIB=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- RANLIB=$ac_ct_RANLIB
- fi
-else
- RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
- case $host_os in
- openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
- ;;
- esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
- darwin*)
- lock_old_archive_extraction=yes ;;
- *)
- lock_old_archive_extraction=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
- symcode='[BCDT]'
- ;;
-cygwin* | mingw* | pw32* | cegcc*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*)
- if test "$host_cpu" = ia64; then
- symcode='[ABCDEGRST]'
- fi
- ;;
-irix* | nonstopux*)
- symcode='[BCDEGRST]'
- ;;
-osf*)
- symcode='[BCDEGQRST]'
- ;;
-solaris*)
- symcode='[BDRT]'
- ;;
-sco3.2v5*)
- symcode='[DT]'
- ;;
-sysv4.2uw2*)
- symcode='[DT]'
- ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
- symcode='[ABDT]'
- ;;
-sysv4)
- symcode='[DFNSTU]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
- symcode='[ABCDGIRSTW]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
- symxfrm="\\1 $ac_symprfx\\2 \\2"
-
- # Write the raw and C identifiers.
- if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
- # Also find C++ and __fastcall symbols from MSVC++,
- # which start with @ or ?.
- lt_cv_sys_global_symbol_pipe="$AWK '"\
-" {last_section=section; section=\$ 3};"\
-" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-" \$ 0!~/External *\|/{next};"\
-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-" ' prfx=^$ac_symprfx"
- else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
- fi
- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-
- rm -f conftest*
- cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
- (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
- relocations are performed -- see ld's documentation on pseudo-relocs. */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data. */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
- # Now generate the symbol file.
- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
- cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols. */
-LT_DLSYM_CONST struct {
- const char *name;
- void *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[] =
-{
- { "@PROGRAM@", (void *) 0 },
-_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
- cat <<\_LT_EOF >> conftest.$ac_ext
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
- lt_globsym_save_LIBS=$LIBS
- lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
- LIBS=$lt_globsym_save_LIBS
- CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&5
- fi
- else
- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
- fi
- else
- echo "$progname: failed program was:" >&5
- cat conftest.$ac_ext >&5
- fi
- rm -rf conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- lt_cv_sys_global_symbol_pipe=
- fi
-done
-
-fi
-
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
- lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
- nm_file_list_spec='@'
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
-
-# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
- withval=$with_sysroot;
-else
- with_sysroot=no
-fi
-
-
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
- if test "$GCC" = yes; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
- fi
- ;; #(
- /*)
- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
- ;; #(
- no|'')
- ;; #(
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
- as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
- ;;
-esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
-
-
-
-
-
-# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
- enableval=$enable_libtool_lock;
-fi
-
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- case `/usr/bin/file conftest.$ac_objext` in
- *ELF-32*)
- HPUX_IA64_MODE="32"
- ;;
- *ELF-64*)
- HPUX_IA64_MODE="64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '#line '$LINENO' "configure"' > conftest.$ac_ext
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- if test "$lt_cv_prog_gnu_ld" = yes; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -melf32bsmip"
- ;;
- *N32*)
- LD="${LD-ld} -melf32bmipn32"
- ;;
- *64-bit*)
- LD="${LD-ld} -melf64bmip"
- ;;
- esac
- else
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- fi
- rm -rf conftest*
- ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- case `/usr/bin/file conftest.o` in
- *32-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_i386_fbsd"
- ;;
- x86_64-*linux*)
- case `/usr/bin/file conftest.o` in
- *x86-64*)
- LD="${LD-ld} -m elf32_x86_64"
- ;;
- *)
- LD="${LD-ld} -m elf_i386"
- ;;
- esac
- ;;
- powerpc64le-*)
- LD="${LD-ld} -m elf32lppclinux"
- ;;
- powerpc64-*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
- LD="${LD-ld} -m elf_s390"
- ;;
- sparc64-*linux*)
- LD="${LD-ld} -m elf32_sparc"
- ;;
- esac
- ;;
- *64-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_x86_64_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- powerpcle-*)
- LD="${LD-ld} -m elf64lppc"
- ;;
- powerpc-*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
- LD="${LD-ld} -m elf64_s390"
- ;;
- sparc*-*linux*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- lt_cv_cc_needs_belf=yes
-else
- lt_cv_cc_needs_belf=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-*-*solaris*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- case `/usr/bin/file conftest.o` in
- *64-bit*)
- case $lt_cv_prog_gnu_ld in
- yes*)
- case $host in
- i?86-*-solaris*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- sparc*-*-solaris*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
- if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
- fi
- ;;
- *)
- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- LD="${LD-ld} -64"
- fi
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-esac
-
-need_locks="$enable_libtool_lock"
-
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MANIFEST_TOOL"; then
- ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
-if test -n "$MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
- ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
- # Extract the first word of "mt", so it can be a program name with args.
-set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_MANIFEST_TOOL"; then
- ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
-if test -n "$ac_ct_MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_MANIFEST_TOOL" = x; then
- MANIFEST_TOOL=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
- fi
-else
- MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
-fi
-
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_path_mainfest_tool=no
- echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
- $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
- cat conftest.err >&5
- if $GREP 'Manifest Tool' conftest.out > /dev/null; then
- lt_cv_path_mainfest_tool=yes
- fi
- rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
- MANIFEST_TOOL=:
-fi
-
-
-
-
-
-
- case $host_os in
- rhapsody* | darwin*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DSYMUTIL"; then
- ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
- ac_ct_DSYMUTIL=$DSYMUTIL
- # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DSYMUTIL"; then
- ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DSYMUTIL" = x; then
- DSYMUTIL=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DSYMUTIL=$ac_ct_DSYMUTIL
- fi
-else
- DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$NMEDIT"; then
- ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
- ac_ct_NMEDIT=$NMEDIT
- # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_NMEDIT"; then
- ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_NMEDIT="nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_NMEDIT" = x; then
- NMEDIT=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- NMEDIT=$ac_ct_NMEDIT
- fi
-else
- NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
-set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$LIPO"; then
- ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-LIPO=$ac_cv_prog_LIPO
-if test -n "$LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_LIPO"; then
- ac_ct_LIPO=$LIPO
- # Extract the first word of "lipo", so it can be a program name with args.
-set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_LIPO"; then
- ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_LIPO="lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
-if test -n "$ac_ct_LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_LIPO" = x; then
- LIPO=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- LIPO=$ac_ct_LIPO
- fi
-else
- LIPO="$ac_cv_prog_LIPO"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OTOOL"; then
- ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL=$ac_cv_prog_OTOOL
-if test -n "$OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL"; then
- ac_ct_OTOOL=$OTOOL
- # Extract the first word of "otool", so it can be a program name with args.
-set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OTOOL"; then
- ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_OTOOL="otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
-if test -n "$ac_ct_OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OTOOL" = x; then
- OTOOL=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OTOOL=$ac_ct_OTOOL
- fi
-else
- OTOOL="$ac_cv_prog_OTOOL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
-set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OTOOL64"; then
- ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OTOOL64=$ac_cv_prog_OTOOL64
-if test -n "$OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OTOOL64"; then
- ac_ct_OTOOL64=$OTOOL64
- # Extract the first word of "otool64", so it can be a program name with args.
-set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OTOOL64"; then
- ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_OTOOL64="otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
-if test -n "$ac_ct_OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OTOOL64" = x; then
- OTOOL64=":"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OTOOL64=$ac_ct_OTOOL64
- fi
-else
- OTOOL64="$ac_cv_prog_OTOOL64"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
- # By default we will add the -single_module flag. You can override
- # by either setting the environment variable LT_MULTI_MODULE
- # non-empty at configure time, or by adding -multi_module to the
- # link flags.
- rm -rf libconftest.dylib*
- echo "int foo(void){return 1;}" > conftest.c
- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&5
- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
- _lt_result=$?
- # If there is a non-empty error log, and "single_module"
- # appears in it, assume the flag caused a linker warning
- if test -s conftest.err && $GREP single_module conftest.err; then
- cat conftest.err >&5
- # Otherwise, if the output was created with a 0 exit code from
- # the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
- lt_cv_apple_cc_single_mod=yes
- else
- cat conftest.err >&5
- fi
- rm -rf libconftest.dylib*
- rm -f conftest.*
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ld_exported_symbols_list=no
- save_LDFLAGS=$LDFLAGS
- echo "_main" > conftest.sym
- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- lt_cv_ld_exported_symbols_list=yes
-else
- lt_cv_ld_exported_symbols_list=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_ld_force_load=no
- cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
- echo "$AR cru libconftest.a conftest.o" >&5
- $AR cru libconftest.a conftest.o 2>&5
- echo "$RANLIB libconftest.a" >&5
- $RANLIB libconftest.a 2>&5
- cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
- _lt_result=$?
- if test -s conftest.err && $GREP force_load conftest.err; then
- cat conftest.err >&5
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
- lt_cv_ld_force_load=yes
- else
- cat conftest.err >&5
- fi
- rm -f conftest.err libconftest.a conftest conftest.c
- rm -rf conftest.dSYM
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
- case $host_os in
- rhapsody* | darwin1.[012])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
- darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- 10.[012]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- 10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- esac
- ;;
- esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
- _lt_dar_single_mod='$single_module'
- fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
- else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
- _lt_dsymutil='~$DSYMUTIL $lib || :'
- else
- _lt_dsymutil=
- fi
- ;;
- esac
-
-for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
-"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-# Set options
-# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
- enableval=$enable_static; p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_static=no
-fi
-
-
-
-
-
-
-
-enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AS"; then
- ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_AS"; then
- ac_ct_AS=$AS
- # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AS"; then
- ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_AS" = x; then
- AS="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AS=$ac_ct_AS
- fi
-else
- AS="$ac_cv_prog_AS"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DLLTOOL"; then
- ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
- ac_ct_DLLTOOL=$DLLTOOL
- # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_DLLTOOL"; then
- ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_DLLTOOL" = x; then
- DLLTOOL="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- DLLTOOL=$ac_ct_DLLTOOL
- fi
-else
- DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$OBJDUMP"; then
- ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
- ac_ct_OBJDUMP=$OBJDUMP
- # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_OBJDUMP"; then
- ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_OBJDUMP" = x; then
- OBJDUMP="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- OBJDUMP=$ac_ct_OBJDUMP
- fi
-else
- OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
- ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-
-
-
-
-
-
- enable_dlopen=no
-
-
-
- # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
- enableval=$enable_shared; p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_shared=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
- withval=$with_pic; lt_p=${PACKAGE-default}
- case $withval in
- yes|no) pic_mode=$withval ;;
- *)
- pic_mode=default
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
- if test "X$lt_pkg" = "X$lt_p"; then
- pic_mode=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
-
-
-
-
-
- # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
- enableval=$enable_fast_install; p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac
-else
- enable_fast_install=yes
-fi
-
-
-
-
-
-
-
-
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-test -z "$LN_S" && LN_S="ln -s"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- lt_cv_objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
-
-
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
-
-
-
-
-case $host_os in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-for cc_temp in $compiler""; do
- case $cc_temp in
- compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
- distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $MAGIC_CMD in
-[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/${ac_tool_prefix}file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $MAGIC_CMD in
-[\\/*] | ?:[\\/]*)
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/file; then
- lt_cv_path_MAGIC_CMD="$ac_dir/file"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- else
- MAGIC_CMD=:
- fi
-fi
-
- fi
- ;;
-esac
-
-# Use C for the default configuration in the libtool script
-
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-
-
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
-
-lt_prog_compiler_no_builtin_flag=
-
-if test "$GCC" = yes; then
- case $cc_basename in
- nvcc*)
- lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
- *)
- lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
- esac
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_rtti_exceptions=no
- ac_outfile=conftest.$ac_objext
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="-fno-rtti -fno-exceptions"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_rtti_exceptions=yes
- fi
- fi
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
-
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
- lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
- :
-fi
-
-fi
-
-
-
-
-
-
- lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
-
-
- if test "$GCC" = yes; then
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_static='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_prog_compiler_static='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- lt_prog_compiler_pic='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- lt_prog_compiler_pic='-DDLL_EXPORT'
- ;;
-
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- lt_prog_compiler_pic='-fno-common'
- ;;
-
- haiku*)
- # PIC is the default for Haiku.
- # The "-static" flag exists, but is broken.
- lt_prog_compiler_static=
- ;;
-
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- # +Z the default
- ;;
- *)
- lt_prog_compiler_pic='-fPIC'
- ;;
- esac
- ;;
-
- interix[3-9]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
-
- msdosdjgpp*)
- # Just because we use GCC doesn't mean we suddenly get shared libraries
- # on systems that don't support them.
- lt_prog_compiler_can_build_shared=no
- enable_shared=no
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- lt_prog_compiler_pic='-fPIC -shared'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- lt_prog_compiler_pic=-Kconform_pic
- fi
- ;;
-
- *)
- lt_prog_compiler_pic='-fPIC'
- ;;
- esac
-
- case $cc_basename in
- nvcc*) # Cuda Compiler Driver 2.2
- lt_prog_compiler_wl='-Xlinker '
- if test -n "$lt_prog_compiler_pic"; then
- lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
- fi
- ;;
- esac
- else
- # PORTME Check for flag to pass linker flags through the system compiler.
- case $host_os in
- aix*)
- lt_prog_compiler_wl='-Wl,'
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- lt_prog_compiler_static='-Bstatic'
- else
- lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- lt_prog_compiler_pic='-DDLL_EXPORT'
- ;;
-
- hpux9* | hpux10* | hpux11*)
- lt_prog_compiler_wl='-Wl,'
- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
- # not for PA HP-UX.
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- lt_prog_compiler_pic='+Z'
- ;;
- esac
- # Is there a better lt_prog_compiler_static that works with the bundled CC?
- lt_prog_compiler_static='${wl}-a ${wl}archive'
- ;;
-
- irix5* | irix6* | nonstopux*)
- lt_prog_compiler_wl='-Wl,'
- # PIC (with -KPIC) is the default.
- lt_prog_compiler_static='-non_shared'
- ;;
-
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
- ecc*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-static'
- ;;
- # icc used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- icc* | ifort*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fPIC'
- lt_prog_compiler_static='-static'
- ;;
- # Lahey Fortran 8.1.
- lf95*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='--shared'
- lt_prog_compiler_static='--static'
- ;;
- nagfor*)
- # NAG Fortran compiler
- lt_prog_compiler_wl='-Wl,-Wl,,'
- lt_prog_compiler_pic='-PIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fpic'
- lt_prog_compiler_static='-Bstatic'
- ;;
- ccc*)
- lt_prog_compiler_wl='-Wl,'
- # All Alpha code is PIC.
- lt_prog_compiler_static='-non_shared'
- ;;
- xl* | bgxl* | bgf* | mpixl*)
- # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-qpic'
- lt_prog_compiler_static='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
- # Sun Fortran 8.3 passes all unrecognized flags to the linker
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- lt_prog_compiler_wl=''
- ;;
- *Sun\ F* | *Sun*Fortran*)
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- lt_prog_compiler_wl='-Qoption ld '
- ;;
- *Sun\ C*)
- # Sun C 5.9
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- lt_prog_compiler_wl='-Wl,'
- ;;
- *Intel*\ [CF]*Compiler*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fPIC'
- lt_prog_compiler_static='-static'
- ;;
- *Portland\ Group*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-fpic'
- lt_prog_compiler_static='-Bstatic'
- ;;
- esac
- ;;
- esac
- ;;
-
- newsos6)
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- lt_prog_compiler_pic='-fPIC -shared'
- ;;
-
- osf3* | osf4* | osf5*)
- lt_prog_compiler_wl='-Wl,'
- # All OSF/1 code is PIC.
- lt_prog_compiler_static='-non_shared'
- ;;
-
- rdos*)
- lt_prog_compiler_static='-non_shared'
- ;;
-
- solaris*)
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- case $cc_basename in
- f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- lt_prog_compiler_wl='-Qoption ld ';;
- *)
- lt_prog_compiler_wl='-Wl,';;
- esac
- ;;
-
- sunos4*)
- lt_prog_compiler_wl='-Qoption ld '
- lt_prog_compiler_pic='-PIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
- lt_prog_compiler_pic='-Kconform_pic'
- lt_prog_compiler_static='-Bstatic'
- fi
- ;;
-
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_pic='-KPIC'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- unicos*)
- lt_prog_compiler_wl='-Wl,'
- lt_prog_compiler_can_build_shared=no
- ;;
-
- uts4*)
- lt_prog_compiler_pic='-pic'
- lt_prog_compiler_static='-Bstatic'
- ;;
-
- *)
- lt_prog_compiler_can_build_shared=no
- ;;
- esac
- fi
-
-case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
- *djgpp*)
- lt_prog_compiler_pic=
- ;;
- *)
- lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
- ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
-lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_pic_works=no
- ac_outfile=conftest.$ac_objext
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_pic_works=yes
- fi
- fi
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
- case $lt_prog_compiler_pic in
- "" | " "*) ;;
- *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
- esac
-else
- lt_prog_compiler_pic=
- lt_prog_compiler_can_build_shared=no
-fi
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_static_works=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- echo "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The linker can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_static_works=yes
- fi
- else
- lt_cv_prog_compiler_static_works=yes
- fi
- fi
- $RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
-
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
- :
-else
- lt_prog_compiler_static=
-fi
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_c_o=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_c_o=yes
- fi
- fi
- chmod u+w . 2>&5
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler_c_o=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- lt_cv_prog_compiler_c_o=yes
- fi
- fi
- chmod u+w . 2>&5
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
-
-
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
- hard_links=yes
- $RM conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
- if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
-
- runpath_var=
- allow_undefined_flag=
- always_export_symbols=no
- archive_cmds=
- archive_expsym_cmds=
- compiler_needs_object=no
- enable_shared_with_static_runtimes=no
- export_dynamic_flag_spec=
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- hardcode_automatic=no
- hardcode_direct=no
- hardcode_direct_absolute=no
- hardcode_libdir_flag_spec=
- hardcode_libdir_separator=
- hardcode_minus_L=no
- hardcode_shlibpath_var=unsupported
- inherit_rpath=no
- link_all_deplibs=unknown
- module_cmds=
- module_expsym_cmds=
- old_archive_from_new_cmds=
- old_archive_from_expsyms_cmds=
- thread_safe_flag_spec=
- whole_archive_flag_spec=
- # include_expsyms should be a list of space-separated symbols to be *always*
- # included in the symbol list
- include_expsyms=
- # exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
- exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
- # platforms (ab)use it in PIC code, but their linkers get confused if
- # the symbol is explicitly referenced. Since portable code cannot
- # rely on this symbol name, it's probably fine to never include it in
- # preloaded symbol tables.
- # Exclude shared library initialization/finalization symbols.
- extract_expsyms_cmds=
-
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
- interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
- with_gnu_ld=yes
- ;;
- openbsd*)
- with_gnu_ld=no
- ;;
- linux* | k*bsd*-gnu | gnu*)
- link_all_deplibs=no
- ;;
- esac
-
- ld_shlibs=yes
-
- # On some targets, GNU ld is compatible enough with the native linker
- # that we're better off using the native interface for both.
- lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
- case $host_os in
- aix*)
- # The AIX port of GNU ld has always aspired to compatibility
- # with the native linker. However, as the warning in the GNU ld
- # block says, versions before 2.19.5* couldn't really create working
- # shared libraries, regardless of the interface used.
- case `$LD -v 2>&1` in
- *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
- *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
- *\ \(GNU\ Binutils\)\ [3-9]*) ;;
- *)
- lt_use_gnu_ld_interface=yes
- ;;
- esac
- ;;
- *)
- lt_use_gnu_ld_interface=yes
- ;;
- esac
- fi
-
- if test "$lt_use_gnu_ld_interface" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # Set some defaults for GNU ld with shared library support. These
- # are reset later if shared libraries are not supported. Putting them
- # here allows them to be overridden if necessary.
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- supports_anon_versioning=no
- case `$LD -v 2>&1` in
- *GNU\ gold*) supports_anon_versioning=yes ;;
- *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
- *\ 2.11.*) ;; # other 2.11 versions
- *) supports_anon_versioning=yes ;;
- esac
-
- # See if GNU ld supports shared libraries.
- case $host_os in
- aix[3-9]*)
- # On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds=''
- ;;
- m68k)
- archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- ;;
- esac
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
- # as there is no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- export_dynamic_flag_spec='${wl}--export-all-symbols'
- allow_undefined_flag=unsupported
- always_export_symbols=no
- enable_shared_with_static_runtimes=yes
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
- exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- haiku*)
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- link_all_deplibs=yes
- ;;
-
- interix[3-9]*)
- hardcode_direct=no
- hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
-
- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
- tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
- case $cc_basename in
- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
- esac
- fi
- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
- then
- tmp_addflag=' $pic_flag'
- tmp_sharedflag='-shared'
- case $cc_basename,$host_cpu in
- pgcc*) # Portland Group C compiler
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag'
- ;;
- pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group f77 and f90 compilers
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag -Mnomain' ;;
- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
- tmp_addflag=' -i_dynamic' ;;
- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
- tmp_addflag=' -i_dynamic -nofor_main' ;;
- ifc* | ifort*) # Intel Fortran compiler
- tmp_addflag=' -nofor_main' ;;
- lf95*) # Lahey Fortran 8.1
- whole_archive_flag_spec=
- tmp_sharedflag='--shared' ;;
- xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- tmp_sharedflag='-qmkshrobj'
- tmp_addflag= ;;
- nvcc*) # Cuda Compiler Driver 2.2
- whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- compiler_needs_object=yes
- ;;
- esac
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*) # Sun C 5.9
- whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- compiler_needs_object=yes
- tmp_sharedflag='-G' ;;
- *Sun\ F*) # Sun Fortran 8.3
- tmp_sharedflag='-G' ;;
- esac
- archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
-
- case $cc_basename in
- xlf* | bgf* | bgxlf* | mpixlf*)
- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
- else
- ld_shlibs=no
- fi
- ;;
-
- netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris*)
- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
- case `$LD -v 2>&1` in
- *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
- ld_shlibs=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- ;;
- *)
- # For security reasons, it is highly recommended that you always
- # use absolute paths for naming shared libraries, and exclude the
- # DT_RUNPATH tag from executables and libraries. But doing so
- # requires that you compile everything twice, which is a pain.
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = no; then
- runpath_var=
- hardcode_libdir_flag_spec=
- export_dynamic_flag_spec=
- whole_archive_flag_spec=
- fi
- else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case $host_os in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix[4-9]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- # Also, AIX nm treats weak defined symbols like other global
- # defined symbols, whereas GNU nm marks them as "W".
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- archive_cmds=''
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- hardcode_libdir_separator=':'
- link_all_deplibs=yes
- file_list_spec='${wl}-f,'
-
- if test "$GCC" = yes; then
- case $host_os in aix4.[012]|aix4.[012].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- ;;
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- link_all_deplibs=no
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- export_dynamic_flag_spec='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to export.
- always_export_symbols=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- allow_undefined_flag='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
- aix_libpath=$lt_cv_aix_libpath
-else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
- lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\([^ ]*\) *$/\1/
- p
- }
- }'
- lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- # Check for a 64-bit object if we didn't find anything.
- if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
- fi
-
-fi
-
- aix_libpath=$lt_cv_aix_libpath_
-fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
- allow_undefined_flag="-z nodefs"
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- if test "${lt_cv_aix_libpath+set}" = set; then
- aix_libpath=$lt_cv_aix_libpath
-else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
- lt_aix_libpath_sed='
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\([^ ]*\) *$/\1/
- p
- }
- }'
- lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- # Check for a 64-bit object if we didn't find anything.
- if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test -z "$lt_cv_aix_libpath_"; then
- lt_cv_aix_libpath_="/usr/lib:/lib"
- fi
-
-fi
-
- aix_libpath=$lt_cv_aix_libpath_
-fi
-
- hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- no_undefined_flag=' ${wl}-bernotok'
- allow_undefined_flag=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
- # We only use this code for GNU lds that support --whole-archive.
- whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- else
- # Exported symbols can be pulled into shared objects from archives
- whole_archive_flag_spec='$convenience'
- fi
- archive_cmds_need_lc=yes
- # This is similar to how AIX traditionally builds its shared libraries.
- archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds=''
- ;;
- m68k)
- archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- ;;
- esac
- ;;
-
- bsdi[45]*)
- export_dynamic_flag_spec=-rdynamic
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- case $cc_basename in
- cl*)
- # Native MSVC
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- file_list_spec='@'
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
- # The linker will not automatically build a static lib if we build a DLL.
- # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
- enable_shared_with_static_runtimes=yes
- exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
- # Don't use ranlib
- old_postinstall_cmds='chmod 644 $oldlib'
- postlink_cmds='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
- ;;
- *)
- # Assume MSVC wrapper
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
- enable_shared_with_static_runtimes=yes
- ;;
- esac
- ;;
-
- darwin* | rhapsody*)
-
-
- archive_cmds_need_lc=no
- hardcode_direct=no
- hardcode_automatic=yes
- hardcode_shlibpath_var=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-
- else
- whole_archive_flag_spec=''
- fi
- link_all_deplibs=yes
- allow_undefined_flag="$_lt_dar_allow_undefined"
- case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
- *) _lt_dar_can_shared=$GCC ;;
- esac
- if test "$_lt_dar_can_shared" = "yes"; then
- output_verbose_link_cmd=func_echo_all
- archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-
- else
- ld_shlibs=no
- fi
-
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2.*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9*)
- if test "$GCC" = yes; then
- archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- fi
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- fi
- ;;
-
- hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- case $host_cpu in
- hppa*64*)
- archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
- case $host_cpu in
- hppa*64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
-
- # Older versions of the 11.00 compiler do not understand -b yet
- # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_prog_compiler__b=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -b"
- echo "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The linker can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- lt_cv_prog_compiler__b=yes
- fi
- else
- lt_cv_prog_compiler__b=yes
- fi
- fi
- $RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
-
-if test x"$lt_cv_prog_compiler__b" = xyes; then
- archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-else
- archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-fi
-
- ;;
- esac
- fi
- if test "$with_gnu_ld" = no; then
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- hardcode_direct=no
- hardcode_shlibpath_var=no
- ;;
- *)
- hardcode_direct=yes
- hardcode_direct_absolute=yes
- export_dynamic_flag_spec='${wl}-E'
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- hardcode_minus_L=yes
- ;;
- esac
- fi
- ;;
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
- # This should be the same for all languages, so no per-tag cache variable.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int foo (void) { return 0; }
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- lt_cv_irix_exported_symbol=yes
-else
- lt_cv_irix_exported_symbol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS="$save_LDFLAGS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
- if test "$lt_cv_irix_exported_symbol" = yes; then
- archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
- fi
- else
- archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- inherit_rpath=yes
- link_all_deplibs=yes
- ;;
-
- netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
- fi
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- newsos6)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_shlibpath_var=no
- ;;
-
- *nto* | *qnx*)
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- hardcode_direct_absolute=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
- else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- else
- ld_shlibs=no
- fi
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
- # Both c and cxx compiler support -rpath directly
- hardcode_libdir_flag_spec='-rpath $libdir'
- fi
- archive_cmds_need_lc='no'
- hardcode_libdir_separator=:
- ;;
-
- solaris*)
- no_undefined_flag=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
- wlarc=''
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- ;;
- *)
- wlarc='${wl}'
- archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- ;;
- esac
- fi
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case $host_os in
- solaris2.[0-5] | solaris2.[0-5].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
- # but is careful enough not to reorder.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- else
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
- fi
- ;;
- esac
- link_all_deplibs=yes
- ;;
-
- sunos4*)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
- fi
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- case $host_vendor in
- sni)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=yes # is this really true???
- ;;
- siemens)
- ## LD is ld it makes a PLAMLIB
- ## CC just makes a GrossModule.
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- reload_cmds='$CC -r -o $output$reload_objs'
- hardcode_direct=no
- ;;
- motorola)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
- esac
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
- no_undefined_flag='${wl}-z,text'
- archive_cmds_need_lc=no
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- no_undefined_flag='${wl}-z,text'
- allow_undefined_flag='${wl}-z,nodefs'
- archive_cmds_need_lc=no
- hardcode_shlibpath_var=no
- hardcode_libdir_flag_spec='${wl}-R,$libdir'
- hardcode_libdir_separator=':'
- link_all_deplibs=yes
- export_dynamic_flag_spec='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-
- if test x$host_vendor = xsni; then
- case $host in
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- export_dynamic_flag_spec='${wl}-Blargedynsym'
- ;;
- esac
- fi
- fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
-
-with_gnu_ld=$with_gnu_ld
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc" in
-x|xyes)
- # Assume -lc should be added
- archive_cmds_need_lc=yes
-
- if test "$enable_shared" = yes && test "$GCC" = yes; then
- case $archive_cmds in
- *'~'*)
- # FIXME: we may have to deal with multi-command sequences.
- ;;
- '$CC '*)
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- $RM conftest*
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } 2>conftest.err; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
- deplibs=
- wl=$lt_prog_compiler_wl
- pic_flag=$lt_prog_compiler_pic
- compiler_flags=-v
- linker_flags=-v
- verstring=
- output_objdir=.
- libname=conftest
- lt_save_allow_undefined_flag=$allow_undefined_flag
- allow_undefined_flag=
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
- (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- then
- lt_cv_archive_cmds_need_lc=no
- else
- lt_cv_archive_cmds_need_lc=yes
- fi
- allow_undefined_flag=$lt_save_allow_undefined_flag
- else
- cat conftest.err 1>&5
- fi
- $RM conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
- archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
- ;;
- esac
- fi
- ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
-
-if test "$GCC" = yes; then
- case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
- esac
- case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
- esac
- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
- case $lt_search_path_spec in
- *\;*)
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
- ;;
- *)
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
- ;;
- esac
- # Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
- lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
- for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
- test -d "$lt_sys_path" && \
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
- fi
- done
- lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
- for (lt_i = NF; lt_i > 0; lt_i--) {
- if ($lt_i != "" && $lt_i != ".") {
- if ($lt_i == "..") {
- lt_count++;
- } else {
- if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
- } else {
- lt_count--;
- }
- }
- }
- }
- if (lt_foo != "") { lt_freq[lt_foo]++; }
- if (lt_freq[lt_foo] == 1) { print lt_foo; }
-}'`
- # AWK program above erroneously prepends '/' to C:/dos/paths
- # for these hosts.
- case $host_os in
- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([A-Za-z]:\),\1,g'` ;;
- esac
- sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
-
-aix[4-9]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
- # for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[01] | aix4.[01].*)
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
- esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
- fi
- shlibpath_var=LIBPATH
- fi
- ;;
-
-amigaos*)
- case $host_cpu in
- powerpc)
- # Since July 2007 AmigaOS4 officially supports .so libraries.
- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- ;;
- m68k)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
- ;;
- esac
- ;;
-
-beos*)
- library_names_spec='${libname}${shared_ext}'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi[45]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
- version_type=windows
- shrext_cmds=".dll"
- need_version=no
- need_lib_prefix=no
-
- case $GCC,$cc_basename in
- yes,*)
- # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname~
- chmod a+x \$dldir/$dlname~
- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
- fi'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
-
- case $host_os in
- cygwin*)
- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
- ;;
- mingw* | cegcc*)
- # MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- pw32*)
- # pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
- ;;
-
- *,cl*)
- # Native MSVC
- libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
-
- case $build_os in
- mingw*)
- sys_lib_search_path_spec=
- lt_save_ifs=$IFS
- IFS=';'
- for lt_path in $LIB
- do
- IFS=$lt_save_ifs
- # Let DOS variable expansion print the short 8.3 style file name.
- lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
- sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
- done
- IFS=$lt_save_ifs
- # Convert to MSYS style.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
- ;;
- cygwin*)
- # Convert to unix form, then to dos form, then back to unix form
- # but this time dos style (no spaces!) so that the unix form looks
- # like /cygdrive/c/PROGRA~1:/cygdr...
- sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
- sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
- sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- ;;
- *)
- sys_lib_search_path_spec="$LIB"
- if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
- # It is most probably a Windows format PATH.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- # FIXME: find the short name or the path components, as spaces are
- # common. (e.g. "Program Files" -> "PROGRA~1")
- ;;
- esac
-
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
- dynamic_linker='Win32 link.exe'
- ;;
-
- *)
- # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
- dynamic_linker='Win32 ld.exe'
- ;;
- esac
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-
-darwin* | rhapsody*)
- dynamic_linker="$host_os dyld"
- version_type=darwin
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
- ;;
-
-dgux*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-freebsd* | dragonfly*)
- # DragonFly does not have aout. When/if they implement a new
- # versioning mechanism, adjust this.
- if test -x /usr/bin/objformat; then
- objformat=`/usr/bin/objformat`
- else
- case $host_os in
- freebsd[23].*) objformat=aout ;;
- *) objformat=elf ;;
- esac
- fi
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
- freebsd2.*)
- shlibpath_overrides_runpath=yes
- ;;
- freebsd3.[01]* | freebsdelf3.[01]*)
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
- freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
- *) # from 4.6 on, and DragonFly
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- esac
- ;;
-
-haiku*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- case $host_cpu in
- ia64*)
- shrext_cmds='.so'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.so"
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
- else
- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
- fi
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- hppa*64*)
- shrext_cmds='.sl'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- *)
- shrext_cmds='.sl'
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
- esac
- # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
- postinstall_cmds='chmod 555 $lib'
- # or fails outright, so override atomically:
- install_override_mode=555
- ;;
-
-interix[3-9]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $host_os in
- nonstopux*) version_type=nonstopux ;;
- *)
- if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux # correct to gnu/linux during the next big refactor
- else
- version_type=irix
- fi ;;
- esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
- case $host_os in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
- libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
- libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
- libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- hardcode_into_libs=yes
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
- dynamic_linker=no
- ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
-
- # Some binutils ld are patched to set DT_RUNPATH
- if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- lt_cv_shlibpath_overrides_runpath=no
- save_LDFLAGS=$LDFLAGS
- save_libdir=$libdir
- eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
- LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
- lt_cv_shlibpath_overrides_runpath=yes
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS=$save_LDFLAGS
- libdir=$save_libdir
-
-fi
-
- shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
- # This implies no fast_install, which is unacceptable.
- # Some rework will be needed to allow for fast_install
- # before this can be enabled.
- hardcode_into_libs=yes
-
- # Append ld.so.conf contents to the search path
- if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
- fi
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
- # most powerpc-linux boxes support dynamic linking these days and
- # people can always --disable-shared, the test was removed, and we
- # assume the GNU/Linux dynamic linker is in use.
- dynamic_linker='GNU/Linux ld.so'
- ;;
-
-netbsdelf*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='NetBSD ld.elf_so'
- ;;
-
-netbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
-
-newsos6)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-
-*nto* | *qnx*)
- version_type=qnx
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='ldqnx.so'
- ;;
-
-openbsd*)
- version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
- need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[89] | openbsd2.[89].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
- else
- shlibpath_overrides_runpath=yes
- fi
- ;;
-
-os2*)
- libname_spec='$name'
- shrext_cmds=".dll"
- need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rdos*)
- dynamic_linker=no
- ;;
-
-solaris*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.3*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
- need_lib_prefix=no
- runpath_var=LD_RUN_PATH
- ;;
- siemens)
- need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- ;;
- esac
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- version_type=freebsd-elf
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
- else
- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
- case $host_os in
- sco3.2v5*)
- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
- ;;
- esac
- fi
- sys_lib_dlsearch_path_spec='/usr/lib'
- ;;
-
-tpf*)
- # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-uts4*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
- test -n "$runpath_var" ||
- test "X$hardcode_automatic" = "Xyes" ; then
-
- # We can hardcode non-existent directories.
- if test "$hardcode_direct" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
- test "$hardcode_minus_L" != no; then
- # Linking always hardcodes the temporary library directory.
- hardcode_action=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- hardcode_action=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
- test "$inherit_rpath" = yes; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-
-
-
-
-
-
- if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dl_dlopen=yes
-else
- ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
-
-fi
-
- ;;
-
- *)
- ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dld_shl_load=yes
-else
- ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dl_dlopen=yes
-else
- ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_svld_dlopen=yes
-else
- ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
- lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dld_dld_link=yes
-else
- ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
- correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else
- {
- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- else puts (dlerror ());
- }
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}
-_LT_EOF
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&5 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
- x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- lt_cv_dlopen_self_static=cross
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
- correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else
- {
- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- else puts (dlerror ());
- }
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}
-_LT_EOF
- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&5 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
- x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
- esac
- else :
- # compilation failed
- lt_cv_dlopen_self_static=no
- fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- old_striplib="$STRIP -S"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- fi
- ;;
- *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- ;;
- esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
- # Report which library types will actually be built
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
- aix[4-9]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-
-
-
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
- [\\/$]* | ?:[\\/]*) ;;
- */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
- # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
- enableval=$enable_nls; USE_NLS=$enableval
-else
- USE_NLS=yes
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
-
-
-
-
- GETTEXT_MACRO_VERSION=0.18
-
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgfmt", so it can be a program name with args.
-set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGFMT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
- ;;
-esac
-fi
-MSGFMT="$ac_cv_path_MSGFMT"
-if test "$MSGFMT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- # Extract the first word of "gmsgfmt", so it can be a program name with args.
-set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GMSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $GMSGFMT in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
- ;;
-esac
-fi
-GMSGFMT=$ac_cv_path_GMSGFMT
-if test -n "$GMSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
- *) GMSGFMT_015=$GMSGFMT ;;
- esac
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "xgettext", so it can be a program name with args.
-set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$XGETTEXT" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
- ;;
-esac
-fi
-XGETTEXT="$ac_cv_path_XGETTEXT"
-if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- rm -f messages.po
-
- case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
- *) XGETTEXT_015=$XGETTEXT ;;
- esac
-
-
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "msgmerge", so it can be a program name with args.
-set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGMERGE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case "$MSGMERGE" in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&5
- if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
- ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
- test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
- ;;
-esac
-fi
-MSGMERGE="$ac_cv_path_MSGMERGE"
-if test "$MSGMERGE" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
-$as_echo "$MSGMERGE" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$localedir" || localedir='${datadir}/locale'
-
-
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
-
-
- ac_config_commands="$ac_config_commands po-directories"
-
-
-
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
- withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
-fi
-if ${acl_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${acl_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
-$as_echo "$acl_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$acl_cv_prog_gnu_ld
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
-$as_echo_n "checking for shared library run path origin... " >&6; }
-if ${acl_cv_rpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
-$as_echo "$acl_cv_rpath" >&6; }
- wl="$acl_cv_wl"
- acl_libext="$acl_cv_libext"
- acl_shlibext="$acl_cv_shlibext"
- acl_libname_spec="$acl_cv_libname_spec"
- acl_library_names_spec="$acl_cv_library_names_spec"
- acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- acl_hardcode_direct="$acl_cv_hardcode_direct"
- acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
- # Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
- enableval=$enable_rpath; :
-else
- enable_rpath=yes
-fi
-
-
-
-
- acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
-$as_echo_n "checking for 64-bit host... " >&6; }
-if ${gl_cv_solaris_64bit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#ifdef _LP64
-sixtyfour bits
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sixtyfour bits" >/dev/null 2>&1; then :
- gl_cv_solaris_64bit=yes
-else
- gl_cv_solaris_64bit=no
-fi
-rm -f conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
-$as_echo "$gl_cv_solaris_64bit" >&6; }
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-
-
-
-
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
- withval=$with_libiconv_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
- fi
- fi
-
-fi
-
- LIBICONV=
- LTLIBICONV=
- INCICONV=
- LIBICONV_PREFIX=
- HAVE_LIBICONV=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='iconv '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no \
- || test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$acl_hardcode_direct" = yes; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- if test "$name" = 'iconv'; then
- LIBICONV_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- */$acl_libdirstem2 | */$acl_libdirstem2/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
- if test "$name" = 'iconv'; then
- LIBICONV_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBICONV; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
- done
- fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFPreferences.h>
-int
-main ()
-{
-CFPreferencesCopyAppValue(NULL, NULL)
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFPreferencesCopyAppValue=yes
-else
- gt_cv_func_CFPreferencesCopyAppValue=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
-
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <CoreFoundation/CFLocale.h>
-int
-main ()
-{
-CFLocaleCopyCurrent();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_CFLocaleCopyCurrent=yes
-else
- gt_cv_func_CFLocaleCopyCurrent=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$gt_save_LIBS"
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
-
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
-
-
-
-
-
-
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- case " $gt_needs " in
- *" need-formatstring-macros "*) gt_api_version=3 ;;
- *" need-ngettext "*) gt_api_version=2 ;;
- *) gt_api_version=1 ;;
- esac
- gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
- gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
-
-
- if test $gt_api_version -ge 3; then
- gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-'
- else
- gt_revision_test_code=
- fi
- if test $gt_api_version -ge 2; then
- gt_expression_test_code=' + * ngettext ("", "", 0)'
- else
- gt_expression_test_code=
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
-$as_echo_n "checking for GNU gettext in libc... " >&6; }
-if eval \${$gt_func_gnugettext_libc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;
-int
-main ()
-{
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- eval "$gt_func_gnugettext_libc=yes"
-else
- eval "$gt_func_gnugettext_libc=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$gt_func_gnugettext_libc
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
-
-
-
-
-
- am_save_CPPFLAGS="$CPPFLAGS"
-
- for element in $INCICONV; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if ${am_cv_func_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <iconv.h>
-int
-main ()
-{
-iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LIBS="$am_save_LIBS"
- fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
- if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
-$as_echo_n "checking for working iconv... " >&6; }
-if ${am_cv_func_iconv_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- am_save_LIBS="$LIBS"
- if test $am_cv_lib_iconv = yes; then
- LIBS="$LIBS $LIBICONV"
- fi
- if test "$cross_compiling" = yes; then :
- case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
- returns. */
- {
- iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
- if (cd_utf8_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\342\202\254"; /* EURO SIGN */
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
- /* Test against Solaris 10 bug: Failures are not distinguishable from
- successful returns. */
- {
- iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
- if (cd_ascii_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\263";
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_ascii_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
-#if 0 /* This bug could be worked around by the caller. */
- /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
- char buf[50];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if ((int)res > 0)
- return 1;
- }
- }
-#endif
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- am_cv_func_iconv_works=yes
-else
- am_cv_func_iconv_works=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- LIBS="$am_save_LIBS"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
-$as_echo "$am_cv_func_iconv_works" >&6; }
- case "$am_cv_func_iconv_works" in
- *no) am_func_iconv=no am_cv_lib_iconv=no ;;
- *) am_func_iconv=yes ;;
- esac
- else
- am_func_iconv=no am_cv_lib_iconv=no
- fi
- if test "$am_func_iconv" = yes; then
-
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
-
- fi
- if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
- else
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
-
-
-
-
-
-
-
-
-
-
-
- use_additional=yes
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-# Check whether --with-libintl-prefix was given.
-if test "${with_libintl_prefix+set}" = set; then :
- withval=$with_libintl_prefix;
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
- fi
- fi
-
-fi
-
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- LIBINTL_PREFIX=
- HAVE_LIBINTL=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='intl '
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value"
- else
- :
- fi
- else
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no \
- || test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- if test "$acl_hardcode_direct" = yes; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- haveit=
- for x in $LDFLAGS $LIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name"
- fi
- fi
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- if test "$name" = 'intl'; then
- LIBINTL_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- */$acl_libdirstem2 | */$acl_libdirstem2/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
- if test "$name" = 'intl'; then
- LIBINTL_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INCINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- if test -n "$found_la"; then
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIBINTL; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
- ;;
- esac
- done
- fi
- else
- LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
- else
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- for found_dir in $ltrpathdirs; do
- LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
- done
- fi
-
-
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
-$as_echo_n "checking for GNU gettext in libintl... " >&6; }
-if eval \${$gt_func_gnugettext_libintl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-int
-main ()
-{
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- eval "$gt_func_gnugettext_libintl=yes"
-else
- eval "$gt_func_gnugettext_libintl=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);
-int
-main ()
-{
-bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- eval "$gt_func_gnugettext_libintl=yes"
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"
-fi
-eval ac_res=\$$gt_func_gnugettext_libintl
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- fi
-
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
- || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
-
-
- if test -n "$INTL_MACOSX_LIBS"; then
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
- fi
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
-
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
-
- else
- USE_NLS=no
- fi
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
-$as_echo_n "checking whether to use NLS... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
- if test "$USE_NLS" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
-$as_echo_n "checking where the gettext function comes from... " >&6; }
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
-$as_echo "$gt_source" >&6; }
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
-$as_echo_n "checking how to link with libintl... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
-$as_echo "$LIBINTL" >&6; }
-
- for element in $INCINTL; do
- haveit=
- for x in $CPPFLAGS; do
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- eval x=\"$x\"
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
- fi
- done
-
- fi
-
-
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
-
-
-$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
-
- fi
-
- POSUB=po
- fi
-
-
-
- INTLLIBS="$LIBINTL"
-
-
-
-
-
-
-
-
-# Extract the first word of "sane-config", so it can be a program name with args.
-set dummy sane-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SANE_CONFIG_PATH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $SANE_CONFIG_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_SANE_CONFIG_PATH="$SANE_CONFIG_PATH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SANE_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_SANE_CONFIG_PATH" && ac_cv_path_SANE_CONFIG_PATH="no"
- ;;
-esac
-fi
-SANE_CONFIG_PATH=$ac_cv_path_SANE_CONFIG_PATH
-if test -n "$SANE_CONFIG_PATH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SANE_CONFIG_PATH" >&5
-$as_echo "$SANE_CONFIG_PATH" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKG_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
- ac_pt_PKG_CONFIG=$PKG_CONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKG_CONFIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_pt_PKG_CONFIG" = x; then
- PKG_CONFIG=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKG_CONFIG=$ac_pt_PKG_CONFIG
- fi
-else
- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=0.9.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- PKG_CONFIG=""
- fi
-fi
-
- if test x$cross_compiling = xyes; then
- CROSS_COMPILING_TRUE=
- CROSS_COMPILING_FALSE='#'
-else
- CROSS_COMPILING_TRUE='#'
- CROSS_COMPILING_FALSE=
-fi
-
-
-
-if test "${ac_cv_c_compiler_gnu}" = "yes"; then
- DEFAULT_CFLAGS="\
- -Wall"
- EXTRA_WARNINGS="\
- -Wextra \
- -pedantic"
-
- for flag in $DEFAULT_CFLAGS; do
- case "$AM_CFLAGS" in
-"$flag" | "$flag "* | *" $flag" | *" $flag "* )
- :
- ;;
-*)
- AM_CFLAGS="$AM_CFLAGS $flag"
- ;;
-esac
-
- done
-
- # Check whether --enable-warnings was given.
-if test "${enable_warnings+set}" = set; then :
- enableval=$enable_warnings;
- if eval "test x$enable_warnings = xyes"; then
- for flag in $EXTRA_WARNINGS; do
- case "$AM_CFLAGS" in
-"$flag" | "$flag "* | *" $flag" | *" $flag "* )
- :
- ;;
-*)
- AM_CFLAGS="$AM_CFLAGS $flag"
- ;;
-esac
-
- done
- fi
-
-else
- if test x$is_release = xno; then
- # Warnings enabled by default (development)
- for flag in $EXTRA_WARNINGS; do
- case "$AM_CFLAGS" in
-"$flag" | "$flag "* | *" $flag" | *" $flag "* )
- :
- ;;
-*)
- AM_CFLAGS="$AM_CFLAGS $flag"
- ;;
-esac
-
- done
- fi
-fi
-
-fi # ac_cv_c_compiler_gnu
-
-
- # Define stricter linking policy on GNU systems. This is not
- # added to global LDFLAGS because we may want to create convenience
- # libraries that don't require such strick linking.
- if test "$GCC" = yes; then
- case ${host_os} in
- linux* | solaris*)
- STRICT_LDFLAGS="-Wl,-z,defs"
- ;;
- esac
- fi
-
- case "${host_os}" in
- aix*) #enable .so libraries, disable archives
- AM_LDFLAGS="$AM_LDFLAGS -Wl,-brtl"
- ;;
- darwin*) #include frameworks
- LIBS="$LIBS -framework CoreFoundation -framework IOKit"
- ;;
- esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_strerror+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_strerror+:} false; then :
-
-else
- ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-
-
-ac_byteorder_h=`echo include/byteorder.h`
-ac_dir=`echo $ac_byteorder_h|sed 's%/[^/][^/]*$%%'`
-if test "$ac_dir" != "$ac_byteorder" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
-fi
-
-# We're only interested in the target CPU, but it's not always set
-effective_target="$target"
-if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then
- effective_target="$host"
-fi
-
-
-ac_byteorder=_byteorder.tmp
-cat > "$ac_byteorder" << EOF
-/* This file is generated automatically by configure */
-/* It is valid only for the system type ${effective_target} */
-
-#ifndef __BYTEORDER_H
-#define __BYTEORDER_H
-
-EOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_bigendian=unknown
- # See if we're dealing with a universal compiler.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- # Check for potential -arch flags. It is not universal unless
- # there are at least two -arch flags with different values.
- ac_arch=
- ac_prev=
- for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
- if test -n "$ac_prev"; then
- case $ac_word in
- i?86 | x86_64 | ppc | ppc64)
- if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
- ac_arch=$ac_word
- else
- ac_cv_c_bigendian=universal
- break
- fi
- ;;
- esac
- ac_prev=
- elif test "x$ac_word" = "x-arch"; then
- ac_prev=arch
- fi
- done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $ac_cv_c_bigendian = unknown; then
- # See if sys/param.h defines the BYTE_ORDER macro.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
- && LITTLE_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to _BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # Compile a test program.
- if test "$cross_compiling" = yes; then :
- # Try to guess by grepping values from an object file.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-short int ascii_mm[] =
- { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
- { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
- int use_ascii (int i) {
- return ascii_mm[i] + ascii_ii[i];
- }
- short int ebcdic_ii[] =
- { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
- { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
- int use_ebcdic (int i) {
- return ebcdic_mm[i] + ebcdic_ii[i];
- }
- extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
- ac_cv_c_bigendian=yes
- fi
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
- if test "$ac_cv_c_bigendian" = unknown; then
- ac_cv_c_bigendian=no
- else
- # finding both strings is unlikely to happen, but who knows?
- ac_cv_c_bigendian=unknown
- fi
- fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Are we little or big endian? From Harbison&Steele. */
- union
- {
- long int l;
- char c[sizeof (long int)];
- } u;
- u.l = 1;
- return u.c[sizeof (long int) - 1] == 1;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_bigendian=no
-else
- ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
- yes)
- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
- no)
- ;; #(
- universal)
-
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
- ;; #(
- *)
- as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for le32toh in machine/endian.h" >&5
-$as_echo_n "checking for le32toh in machine/endian.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef le32toh
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<le32toh\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-HAVE_LE32TOH=1
- cat >> "$ac_byteorder" << EOF
-/* extended byte swapping macros are already available */
-#include <machine/endian.h>
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ntohl in arpa/inet.h" >&5
-$as_echo_n "checking for ntohl in arpa/inet.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <arpa/inet.h>
-#ifdef ntohl
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<ntohl\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* ntohl and relatives live here */
-#include <arpa/inet.h>
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ntohl in netinet/in.h" >&5
-$as_echo_n "checking for ntohl in netinet/in.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <netinet/in.h>
-#ifdef ntohl
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<ntohl\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* ntohl and relatives live here */
-#include <netinet/in.h>
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-true
-
-fi
-rm -f conftest*
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for swap32 in machine/endian.h" >&5
-$as_echo_n "checking for swap32 in machine/endian.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef swap32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<swap32\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* swap32 and swap16 are defined in machine/endian.h */
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap_32 in byteswap.h" >&5
-$as_echo_n "checking for bswap_32 in byteswap.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <byteswap.h>
-#ifdef bswap_32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<bswap_32\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* Define generic byte swapping functions */
-#include <byteswap.h>
-#define swap16(x) bswap_16(x)
-#define swap32(x) bswap_32(x)
-#define swap64(x) bswap_64(x)
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap32 in machine/endian.h" >&5
-$as_echo_n "checking for bswap32 in machine/endian.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <machine/endian.h>
-#ifdef bswap32
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<bswap32\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- cat >> "$ac_byteorder" << EOF
-/* Define generic byte swapping functions */
-EOF
- if test "$HAVE_LE32TOH" != "1"; then
- echo '#include <machine/endian.h>'>> "$ac_byteorder"
- fi
-cat >> "$ac_byteorder" << EOF
-#define swap16(x) bswap16(x)
-#define swap32(x) bswap32(x)
-#define swap64(x) bswap64(x)
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __byte_swap_long in sys/types.h" >&5
-$as_echo_n "checking for __byte_swap_long in sys/types.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/types.h>
-#ifdef __byte_swap_long
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<__byte_swap_long\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* Define generic byte swapping functions */
-#include <sys/types.h>
-#define swap16(x) __byte_swap_word(x)
-#define swap32(x) __byte_swap_long(x)
-/* No optimized 64 bit byte swapping macro is available */
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for NXSwapLong in machine/byte_order.h" >&5
-$as_echo_n "checking for NXSwapLong in machine/byte_order.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <machine/byte_order.h>
-#ifdef NXSwapLong
- symbol is present
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "symbol is present|\<NXSwapLong\>" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-cat >> "$ac_byteorder" << EOF
-/* Define generic byte swapping functions */
-#include <machine/byte_order.h>
-#define swap16(x) NXSwapShort(x)
-#define swap32(x) NXSwapLong(x)
-#define swap64(x) NXSwapLongLong(x)
-
-EOF
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
- if test $ac_cv_c_bigendian = yes; then
- cat >> "$ac_byteorder" << EOF
-/* No other byte swapping functions are available on this big-endian system */
-#define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8)))
-#define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\
- ((uint32_t)(x) << 8) & 0x00ff0000UL | \\
- ((x) >> 8) & 0x0000ff00UL | \\
- ((x) >> 24) & 0x000000ffUL))
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
- else
- cat >> "$ac_byteorder" << EOF
-/* Use these as generic byteswapping macros on this little endian system */
-#define swap16(x) ntohs(x)
-#define swap32(x) ntohl(x)
-/* No optimized 64 bit byte swapping macro is available */
-#define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\
- ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\
- ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\
- ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\
- ((x) >> 8) & 0x00000000ff000000ULL | \\
- ((x) >> 24) & 0x0000000000ff0000ULL | \\
- ((x) >> 40) & 0x000000000000ff00ULL | \\
- ((x) >> 56) & 0x00000000000000ffULL))
-
-EOF
- fi
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-fi
-rm -f conftest*
-
-
-
-
-if test "$HAVE_LE32TOH" != "1"; then
- cat >> "$ac_byteorder" << EOF
-/* The byte swapping macros have the form: */
-/* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
-/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
-/* if present, indicates that the endian side is a pointer to an */
-/* array of uint8_t bytes instead of an integer of the specified length. */
-/* h refers to the host's ordering method. */
-
-/* So, to convert a 32-bit integer stored in a buffer in little-endian */
-/* format into a uint32_t usable on this machine, you could use: */
-/* uint32_t value = le32atoh(&buf[3]); */
-/* To put that value back into the buffer, you could use: */
-/* htole32a(&buf[3], value); */
-
-/* Define aliases for the standard byte swapping macros */
-/* Arguments to these macros must be properly aligned on natural word */
-/* boundaries in order to work properly on all architectures */
-#ifndef htobe16
-#define htobe16(x) htons(x)
-#endif
-#ifndef htobe32
-#define htobe32(x) htonl(x)
-#endif
-#ifndef be16toh
-#define be16toh(x) ntohs(x)
-#endif
-#ifndef be32toh
-#define be32toh(x) ntohl(x)
-#endif
-
-#define HTOBE16(x) (x) = htobe16(x)
-#define HTOBE32(x) (x) = htobe32(x)
-#define BE32TOH(x) (x) = be32toh(x)
-#define BE16TOH(x) (x) = be16toh(x)
-
-EOF
-
- if test $ac_cv_c_bigendian = yes; then
- cat >> "$ac_byteorder" << EOF
-/* Define our own extended byte swapping macros for big-endian machines */
-#ifndef htole16
-#define htole16(x) swap16(x)
-#endif
-#ifndef htole32
-#define htole32(x) swap32(x)
-#endif
-#ifndef le16toh
-#define le16toh(x) swap16(x)
-#endif
-#ifndef le32toh
-#define le32toh(x) swap32(x)
-#endif
-
-#ifndef htobe64
-#define htobe64(x) (x)
-#endif
-#ifndef be64toh
-#define be64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (x) = htole16(x)
-#define HTOLE32(x) (x) = htole32(x)
-#define LE16TOH(x) (x) = le16toh(x)
-#define LE32TOH(x) (x) = le32toh(x)
-
-#define HTOBE64(x) (void) (x)
-#define BE64TOH(x) (void) (x)
-
-EOF
- else
- cat >> "$ac_byteorder" << EOF
-/* On little endian machines, these macros are null */
-#ifndef htole16
-#define htole16(x) (x)
-#endif
-#ifndef htole32
-#define htole32(x) (x)
-#endif
-#ifndef htole64
-#define htole64(x) (x)
-#endif
-#ifndef le16toh
-#define le16toh(x) (x)
-#endif
-#ifndef le32toh
-#define le32toh(x) (x)
-#endif
-#ifndef le64toh
-#define le64toh(x) (x)
-#endif
-
-#define HTOLE16(x) (void) (x)
-#define HTOLE32(x) (void) (x)
-#define HTOLE64(x) (void) (x)
-#define LE16TOH(x) (void) (x)
-#define LE32TOH(x) (void) (x)
-#define LE64TOH(x) (void) (x)
-
-/* These don't have standard aliases */
-#ifndef htobe64
-#define htobe64(x) swap64(x)
-#endif
-#ifndef be64toh
-#define be64toh(x) swap64(x)
-#endif
-
-#define HTOBE64(x) (x) = htobe64(x)
-#define BE64TOH(x) (x) = be64toh(x)
-
-EOF
- fi
-fi
-
-cat >> "$ac_byteorder" << EOF
-/* Define the C99 standard length-specific integer types */
-#include <_stdint.h>
-
-EOF
-
-case "${effective_target}" in
- i[3456]86-*)
- cat >> "$ac_byteorder" << EOF
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* The i386 and compatibles can handle unaligned memory access, */
-/* so use the optimized macros above to do this job */
-#define be16atoh(x) be16toh(*(uint16_t*)(x))
-#define be32atoh(x) be32toh(*(uint32_t*)(x))
-#define be64atoh(x) be64toh(*(uint64_t*)(x))
-#define le16atoh(x) le16toh(*(uint16_t*)(x))
-#define le32atoh(x) le32toh(*(uint32_t*)(x))
-#define le64atoh(x) le64toh(*(uint64_t*)(x))
-
-#define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x)
-#define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x)
-#define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x)
-#define htole16a(a,x) *(uint16_t*)(a) = htole16(x)
-#define htole32a(a,x) *(uint32_t*)(a) = htole32(x)
-#define htole64a(a,x) *(uint64_t*)(a) = htole64(x)
-
-EOF
- ;;
-
- *)
- cat >> "$ac_byteorder" << EOF
-/* Here are some macros to create integers from a byte array */
-/* These are used to get and put integers from/into a uint8_t array */
-/* with a specific endianness. This is the most portable way to generate */
-/* and read messages to a network or serial device. Each member of a */
-/* packet structure must be handled separately. */
-
-/* Non-optimized but portable macros */
-#define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1]))
-#define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3]))
-#define be64atoh(x) ((uint64_t)(((x)[0]<<56)|((x)[1]<<48)|((x)[2]<<40)| \\
- ((x)[3]<<32)|((x)[4]<<24)|((x)[5]<<16)|((x)[6]<<8)|(x)[7]))
-#define le16atoh(x) ((uint16_t)(((x)[1]<<8)|(x)[0]))
-#define le32atoh(x) ((uint32_t)(((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0]))
-#define le64atoh(x) ((uint64_t)(((x)[7]<<56)|((x)[6]<<48)|((x)[5]<<40)| \\
- ((x)[4]<<32)|((x)[3]<<24)|((x)[2]<<16)|((x)[1]<<8)|(x)[0]))
-
-#define htobe16a(a,x) (a)[0]=(uint8_t)((x)>>8), (a)[1]=(uint8_t)(x)
-#define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\
- (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x)
-#define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\
- (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\
- (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\
- (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x)
-#define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-#define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\
- (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\
- (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\
- (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x)
-
-EOF
- ;;
-esac
-
-
-cat >> "$ac_byteorder" << EOF
-#endif /*__BYTEORDER_H*/
-EOF
-
-if cmp -s $ac_byteorder_h $ac_byteorder 2>/dev/null; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_byteorder_h is unchanged" >&5
-$as_echo "$as_me: $ac_byteorder_h is unchanged" >&6;}
- rm $ac_byteorder
-else
- rm -f $ac_byteorder_h
- mv $ac_byteorder $ac_byteorder_h
-fi
-
-# ------ AX CREATE STDINT H -------------------------------------
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5
-$as_echo_n "checking for stdint types... " >&6; }
-ac_stdint_h=`echo include/_stdint.h`
-# try to shortcircuit - if the default include path of the compiler
-# can find a "stdint.h" header then we assume that all compilers can.
-if ${ac_cv_header_stdint_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
-old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
-old_CFLAGS="$CFLAGS" ; CFLAGS=""
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdint.h>
-int
-main ()
-{
-int_least32_t v = 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_stdint_result="(assuming C99 compatible system)"
- ac_cv_header_stdint_t="stdint.h";
-else
- ac_cv_header_stdint_t=""
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
-CFLAGS="-std=c99"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdint.h>
-int
-main ()
-{
-int_least32_t v = 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&5
-$as_echo "$as_me: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&2;}
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-CXXFLAGS="$old_CXXFLAGS"
-CPPFLAGS="$old_CPPFLAGS"
-CFLAGS="$old_CFLAGS"
-fi
-
-
-v="... $ac_cv_header_stdint_h"
-if test "$ac_stdint_h" = "stdint.h" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./stdint.h?)" >&5
-$as_echo "(are you sure you want them in ./stdint.h?)" >&6; }
-elif test "$ac_stdint_h" = "inttypes.h" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./inttypes.h?)" >&5
-$as_echo "(are you sure you want them in ./inttypes.h?)" >&6; }
-elif test "_$ac_cv_header_stdint_t" = "_" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (putting them into $ac_stdint_h)$v" >&5
-$as_echo "(putting them into $ac_stdint_h)$v" >&6; }
-else
- ac_cv_header_stdint="$ac_cv_header_stdint_t"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint (shortcircuit)" >&5
-$as_echo "$ac_cv_header_stdint (shortcircuit)" >&6; }
-fi
-
-if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
-
-
-inttype_headers=`echo | sed -e 's/,/ /g'`
-
-ac_cv_stdint_result="(no helpful system typedefs seen)"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
-$as_echo_n "checking for stdint uintptr_t... " >&6; }
-if ${ac_cv_header_stdint_x+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
- for i in stdint.h inttypes.h sys/inttypes.h $inttype_headers
- do
- unset ac_cv_type_uintptr_t
- unset ac_cv_type_uint64_t
- ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <$i>
-"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
- ac_cv_header_stdint_x=$i
-else
- continue
-fi
-
- ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
- and64="/uint64_t"
-else
- and64=""
-fi
-
- stdint.h inttypes.h sys/inttypes.h $inttype_headers
- break
- done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5
-$as_echo_n "checking for stdint uintptr_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5
-$as_echo "$ac_cv_header_stdint_x" >&6; }
-
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
-$as_echo_n "checking for stdint uint32_t... " >&6; }
-if ${ac_cv_header_stdint_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
- for i in inttypes.h sys/inttypes.h stdint.h $inttype_headers
- do
- unset ac_cv_type_uint32_t
- unset ac_cv_type_uint64_t
- ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <$i>
-"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
- ac_cv_header_stdint_o=$i
-else
- continue
-fi
-
- ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
- and64="/uint64_t"
-else
- and64=""
-fi
-
- inttypes.h sys/inttypes.h stdint.h $inttype_headers
- break
- break;
- done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5
-$as_echo_n "checking for stdint uint32_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5
-$as_echo "$ac_cv_header_stdint_o" >&6; }
-
-fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-if test "_$ac_cv_header_stdint_o" = "_" ; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
-$as_echo_n "checking for stdint u_int32_t... " >&6; }
-if ${ac_cv_header_stdint_u+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
- for i in sys/types.h inttypes.h sys/inttypes.h $inttype_headers ; do
- unset ac_cv_type_u_int32_t
- unset ac_cv_type_u_int64_t
- ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <$i>
-"
-if test "x$ac_cv_type_u_int32_t" = xyes; then :
- ac_cv_header_stdint_u=$i
-else
- continue
-fi
-
- ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i>
-"
-if test "x$ac_cv_type_u_int64_t" = xyes; then :
- and64="/u_int64_t"
-else
- and64=""
-fi
-
- sys/types.h inttypes.h sys/inttypes.h $inttype_headers
- break
- break;
- done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5
-$as_echo_n "checking for stdint u_int32_t... " >&6; }
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5
-$as_echo "$ac_cv_header_stdint_u" >&6; }
-
-fi fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint datatype model" >&5
-$as_echo_n "checking for stdint datatype model... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5
-$as_echo "(..)" >&6; }
-
- # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
-$as_echo_n "checking size of char... " >&6; }
-if ${ac_cv_sizeof_char+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_char" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (char)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_char=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
-$as_echo "$ac_cv_sizeof_char" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
-
-
- # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_short" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (short)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_short=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
-
-
- # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (int)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_int=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-
- # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (long)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_long=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
- # The cast to long int works around a bug in the HP C Compiler
-# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5
-$as_echo_n "checking size of void*... " >&6; }
-if ${ac_cv_sizeof_voidp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default"; then :
-
-else
- if test "$ac_cv_type_voidp" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute sizeof (void*)
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_sizeof_voidp=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5
-$as_echo "$ac_cv_sizeof_voidp" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOIDP $ac_cv_sizeof_voidp
-_ACEOF
-
-
- ac_cv_char_data_model=""
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
- ac_cv_long_data_model=""
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking data model" >&5
-$as_echo_n "checking data model... " >&6; }
- case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
- 122/242) ac_cv_data_model="IP16" ; n="standard 16bit machine" ;;
- 122/244) ac_cv_data_model="LP32" ; n="standard 32bit machine" ;;
- 122/*) ac_cv_data_model="i16" ; n="unusual int16 model" ;;
- 124/444) ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
- 124/488) ac_cv_data_model="LP64" ; n="standard 64bit unixish" ;;
- 124/448) ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
- 124/*) ac_cv_data_model="i32" ; n="unusual int32 model" ;;
- 128/888) ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
- 128/*) ac_cv_data_model="i64" ; n="unusual int64 model" ;;
- 222/*2) ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
- 333/*3) ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
- 444/*4) ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
- 666/*6) ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
- 888/*8) ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
- 222/*|333/*|444/*|666/*|888/*) :
- ac_cv_data_model="iDSP" ; n="unusual dsptype" ;;
- *) ac_cv_data_model="none" ; n="very unusual model" ;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_data_model ($ac_cv_long_data_model, $n)" >&5
-$as_echo "$ac_cv_data_model ($ac_cv_long_data_model, $n)" >&6; }
-
-fi
-
-if test "_$ac_cv_header_stdint_x" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_x"
-elif test "_$ac_cv_header_stdint_o" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_o"
-elif test "_$ac_cv_header_stdint_u" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_u"
-else
- ac_cv_header_stdint="stddef.h"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra inttypes in chosen header" >&5
-$as_echo_n "checking for extra inttypes in chosen header... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ($ac_cv_header_stdint)" >&5
-$as_echo "($ac_cv_header_stdint)" >&6; }
-unset ac_cv_type_int_least32_t
-unset ac_cv_type_int_fast32_t
-ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_int_least32_t" = xyes; then :
-
-fi
-
-ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include<$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_int_fast32_t" = xyes; then :
-
-fi
-
-ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "#include <$ac_cv_header_stdint>
-"
-if test "x$ac_cv_type_intmax_t" = xyes; then :
-
-fi
-
-
-fi # shortcircut to system "stdint.h"
-# ------------------ PREPARE VARIABLES ------------------------------
-if test "$GCC" = "yes" ; then
-ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
-else
-ac_cv_stdint_message="using $CC"
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&5
-$as_echo "make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&6; }
-
-# ----------------- DONE inttypes.h checks START header -------------
-ac_config_commands="$ac_config_commands $ac_stdint_h"
-
-
-
-# Check whether --enable-dynamic was given.
-if test "${enable_dynamic+set}" = set; then :
- enableval=$enable_dynamic; enable_dynamic=$enableval
-else
- enable_dynamic=auto
-fi
-
-
- DL_LIBS=""
- if test "${enable_dynamic}" = "auto"; then
- # default to disabled unless library found.
- enable_dynamic=no
- # dlopen
- for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dl_dlopen=yes
-else
- ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- DL_LIBS=-ldl
-fi
-
- saved_LIBS="${LIBS}"
- LIBS="${LIBS} ${DL_LIBS}"
- for ac_func in dlopen
-do :
- ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
- enable_dynamic=yes
-fi
-done
-
- LIBS="${saved_LIBS}"
-
-fi
-
-done
-
- # HP/UX DLL handling
- for ac_header in dl.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default"
-if test "x$ac_cv_header_dl_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DL_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dld_shl_load=yes
-else
- ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
- DL_LIBS=-ldld
-fi
-
- saved_LIBS="${LIBS}"
- LIBS="${LIBS} ${DL_LIBS}"
- for ac_func in shl_load
-do :
- ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SHL_LOAD 1
-_ACEOF
- enable_dynamic=yes
-fi
-done
-
- LIBS="${saved_LIBS}"
-
-fi
-
-done
-
- if test -z "$DL_LIBS" ; then
- # old Mac OS X/Darwin (without dlopen)
- for ac_header in mach-o/dyld.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "mach-o/dyld.h" "ac_cv_header_mach_o_dyld_h" "$ac_includes_default"
-if test "x$ac_cv_header_mach_o_dyld_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MACH_O_DYLD_H 1
-_ACEOF
- for ac_func in NSLinkModule
-do :
- ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule"
-if test "x$ac_cv_func_NSLinkModule" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NSLINKMODULE 1
-_ACEOF
- enable_dynamic=yes
-fi
-done
-
-
-fi
-
-done
-
- fi
- fi
-
-
- DYNAMIC_FLAG=
- if test "${enable_dynamic}" = yes ; then
- DYNAMIC_FLAG=-module
- fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqrt in -lm" >&5
-$as_echo_n "checking for sqrt in -lm... " >&6; }
-if ${ac_cv_lib_m_sqrt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sqrt ();
-int
-main ()
-{
-return sqrt ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_m_sqrt=yes
-else
- ac_cv_lib_m_sqrt=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sqrt" >&5
-$as_echo "$ac_cv_lib_m_sqrt" >&6; }
-if test "x$ac_cv_lib_m_sqrt" = xyes; then :
- MATH_LIB="-lm"
-fi
-
-
-case ${host_os} in
- os2*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sylog in -lsyslog" >&5
-$as_echo_n "checking for sylog in -lsyslog... " >&6; }
-if ${ac_cv_lib_syslog_sylog+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsyslog $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sylog ();
-int
-main ()
-{
-return sylog ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_syslog_sylog=yes
-else
- ac_cv_lib_syslog_sylog=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_syslog_sylog" >&5
-$as_echo "$ac_cv_lib_syslog_sylog" >&6; }
-if test "x$ac_cv_lib_syslog_sylog" = xyes; then :
- SYSLOG_LIBS="-lsyslog"
-fi
-
- ;;
- beos*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for syslog in -lbe" >&5
-$as_echo_n "checking for syslog in -lbe... " >&6; }
-if ${ac_cv_lib_be_syslog+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbe $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char syslog ();
-int
-main ()
-{
-return syslog ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_be_syslog=yes
-else
- ac_cv_lib_be_syslog=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_be_syslog" >&5
-$as_echo "$ac_cv_lib_be_syslog" >&6; }
-if test "x$ac_cv_lib_be_syslog" = xyes; then :
- SYSLOG_LIBS="-lbe"
-fi
-
- ;;
-esac
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_start_decompress in -ljpeg" >&5
-$as_echo_n "checking for jpeg_start_decompress in -ljpeg... " >&6; }
-if ${ac_cv_lib_jpeg_jpeg_start_decompress+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljpeg $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jpeg_start_decompress ();
-int
-main ()
-{
-return jpeg_start_decompress ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_jpeg_jpeg_start_decompress=yes
-else
- ac_cv_lib_jpeg_jpeg_start_decompress=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_start_decompress" >&5
-$as_echo "$ac_cv_lib_jpeg_jpeg_start_decompress" >&6; }
-if test "x$ac_cv_lib_jpeg_jpeg_start_decompress" = xyes; then :
-
- ac_fn_c_check_header_mongrel "$LINENO" "jconfig.h" "ac_cv_header_jconfig_h" "$ac_includes_default"
-if test "x$ac_cv_header_jconfig_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeglib - version >= 61 (6a)" >&5
-$as_echo_n "checking for jpeglib - version >= 61 (6a)... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #include <jpeglib.h>
- #if JPEG_LIB_VERSION >= 61
- sane_correct_jpeg_lib_version_found
- #endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sane_correct_jpeg_lib_version_found" >/dev/null 2>&1; then :
- sane_cv_use_libjpeg="yes"; JPEG_LIBS="-ljpeg";
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f conftest*
-
-
-fi
-
-
-
-fi
-
- if test "$sane_cv_use_libjpeg" = "yes" ; then
-
-$as_echo "#define HAVE_LIBJPEG 1" >>confdefs.h
-
- fi
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIFFFdOpen in -ltiff" >&5
-$as_echo_n "checking for TIFFFdOpen in -ltiff... " >&6; }
-if ${ac_cv_lib_tiff_TIFFFdOpen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltiff $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char TIFFFdOpen ();
-int
-main ()
-{
-return TIFFFdOpen ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_tiff_TIFFFdOpen=yes
-else
- ac_cv_lib_tiff_TIFFFdOpen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tiff_TIFFFdOpen" >&5
-$as_echo "$ac_cv_lib_tiff_TIFFFdOpen" >&6; }
-if test "x$ac_cv_lib_tiff_TIFFFdOpen" = xyes; then :
-
- ac_fn_c_check_header_mongrel "$LINENO" "tiffio.h" "ac_cv_header_tiffio_h" "$ac_includes_default"
-if test "x$ac_cv_header_tiffio_h" = xyes; then :
- sane_cv_use_libtiff="yes"; TIFF_LIBS="-ltiff"
-fi
-
-
-
-fi
-
-
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for png_init_io in -lpng" >&5
-$as_echo_n "checking for png_init_io in -lpng... " >&6; }
-if ${ac_cv_lib_png_png_init_io+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpng $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char png_init_io ();
-int
-main ()
-{
-return png_init_io ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_png_png_init_io=yes
-else
- ac_cv_lib_png_png_init_io=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_png_init_io" >&5
-$as_echo "$ac_cv_lib_png_png_init_io" >&6; }
-if test "x$ac_cv_lib_png_png_init_io" = xyes; then :
-
- ac_fn_c_check_header_mongrel "$LINENO" "png.h" "ac_cv_header_png_h" "$ac_includes_default"
-if test "x$ac_cv_header_png_h" = xyes; then :
- sane_cv_use_libpng="yes"; PNG_LIBS="-lpng"
-fi
-
-
-
-fi
-
- if test "$sane_cv_use_libpng" = "yes" ; then
-
-$as_echo "#define HAVE_LIBPNG 1" >>confdefs.h
-
- fi
-
-
-
- ac_fn_c_check_header_mongrel "$LINENO" "ieee1284.h" "ac_cv_header_ieee1284_h" "$ac_includes_default"
-if test "x$ac_cv_header_ieee1284_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libieee1284 >= 0.1.5" >&5
-$as_echo_n "checking for libieee1284 >= 0.1.5... " >&6; }
-if ${sane_cv_use_libieee1284+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ieee1284.h>
-int
-main ()
-{
-
- struct parport p; char *buf;
- ieee1284_nibble_read(&p, 0, buf, 1);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- sane_cv_use_libieee1284="yes"; IEEE1284_LIBS="-lieee1284"
-
-else
- sane_cv_use_libieee1284="no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sane_cv_use_libieee1284" >&5
-$as_echo "$sane_cv_use_libieee1284" >&6; }
-
-fi
-
-
- if test "$sane_cv_use_libieee1284" = "yes" ; then
-
-$as_echo "#define HAVE_LIBIEEE1284 1" >>confdefs.h
-
- fi
-
-
-
-
- case "${host_os}" in
- linux* | darwin* | mingw*) # enabled by default on Linux, MacOS X and MINGW
- use_pthread=yes
- ;;
- *)
- use_pthread=no
- esac
- have_pthread=no
-
- #
- # now that we have the systems preferences, we check
- # the user
-
- # Check whether --enable-pthread was given.
-if test "${enable_pthread+set}" = set; then :
- enableval=$enable_pthread;
- if test $enableval = yes ; then
- use_pthread=yes
- else
- use_pthread=no
- fi
-
-fi
-
-
- if test $use_pthread = yes ; then
- for ac_header in pthread.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5
-$as_echo_n "checking for pthread_create in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_create+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpthread $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_create ();
-int
-main ()
-{
-return pthread_create ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_pthread_pthread_create=yes
-else
- ac_cv_lib_pthread_pthread_create=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_create" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then :
- PTHREAD_LIBS="-lpthread"
-fi
-
- have_pthread=yes
- save_LIBS="$LIBS"
- LIBS="$LIBS $PTHREAD_LIBS"
- for ac_func in pthread_create pthread_kill pthread_join pthread_detach pthread_cancel pthread_testcancel
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
- have_pthread=no; use_pthread=no
-fi
-done
-
- LIBS="$save_LIBS"
-
-else
- have_pthread=no; use_pthread=no
-fi
-
-done
-
- fi
-
- if test $use_pthread = yes ; then
-
-cat >>confdefs.h <<_ACEOF
-#define USE_PTHREAD "$use_pthread"
-_ACEOF
-
- else
- PTHREAD_LIBS=""
- fi
- if test "$have_pthread" = "yes" ; then
- AM_CPPFLAGS="${AM_CPPFLAGS} -D_REENTRANT"
- fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable pthread support" >&5
-$as_echo_n "checking whether to enable pthread support... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_pthread" >&5
-$as_echo "$have_pthread" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use pthread instead of fork" >&5
-$as_echo_n "checking whether to use pthread instead of fork... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_pthread" >&5
-$as_echo "$use_pthread" >&6; }
-
-
- LOCKPATH_GROUP=uucp
- use_locking=yes
- case "${host_os}" in
- os2* )
- use_locking=no
- ;;
- esac
-
- #
- # we check the user
- # Check whether --enable-locking was given.
-if test "${enable_locking+set}" = set; then :
- enableval=$enable_locking;
- if test $enableval = yes ; then
- use_locking=yes
- else
- use_locking=no
- fi
-
-fi
-
- if test $use_locking = yes ; then
-
-# Check whether --with-group was given.
-if test "${with_group+set}" = set; then :
- withval=$with_group; LOCKPATH_GROUP="$withval"
-
-fi
-
- # 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
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Group $LOCKPATH_GROUP does not exist on this system." >&5
-$as_echo "$as_me: WARNING: Group $LOCKPATH_GROUP does not exist on this system." >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Locking feature will be disabled." >&5
-$as_echo "$as_me: WARNING: Locking feature will be disabled." >&2;}
- use_locking=no
- fi
- fi
- if test $use_locking = yes ; then
- INSTALL_LOCKPATH=install-lockpath
-
-$as_echo "#define ENABLE_LOCKING 1" >>confdefs.h
-
- else
- INSTALL_LOCKPATH=
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable device locking" >&5
-$as_echo_n "checking whether to enable device locking... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_locking" >&5
-$as_echo "$use_locking" >&6; }
- if test $use_locking = yes ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Setting lockdir group to $LOCKPATH_GROUP" >&5
-$as_echo "$as_me: Setting lockdir group to $LOCKPATH_GROUP" >&6;}
- fi
-
-
-
-
-
-# Check whether --with-gphoto2 was given.
-if test "${with_gphoto2+set}" = set; then :
- withval=$with_gphoto2; # If --with-gphoto2=no or --without-gphoto2, disable backend
- # as "$with_gphoto2" will be set to "no"
-fi
-
-
- # If --with-gphoto2=yes (or not supplied), first check if
- # pkg-config exists, then use it to check if libgphoto2 is
- # present. If all that works, then see if we can actually link
- # 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.
- if test "$with_gphoto2" != "no" ; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_HAVE_GPHOTO2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$HAVE_GPHOTO2"; then
- ac_cv_prog_HAVE_GPHOTO2="$HAVE_GPHOTO2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_HAVE_GPHOTO2="${ac_tool_prefix}pkg-config"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-HAVE_GPHOTO2=$ac_cv_prog_HAVE_GPHOTO2
-if test -n "$HAVE_GPHOTO2"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_GPHOTO2" >&5
-$as_echo "$HAVE_GPHOTO2" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_HAVE_GPHOTO2"; then
- ac_ct_HAVE_GPHOTO2=$HAVE_GPHOTO2
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_HAVE_GPHOTO2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_HAVE_GPHOTO2"; then
- ac_cv_prog_ac_ct_HAVE_GPHOTO2="$ac_ct_HAVE_GPHOTO2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_HAVE_GPHOTO2="pkg-config"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_HAVE_GPHOTO2=$ac_cv_prog_ac_ct_HAVE_GPHOTO2
-if test -n "$ac_ct_HAVE_GPHOTO2"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_HAVE_GPHOTO2" >&5
-$as_echo "$ac_ct_HAVE_GPHOTO2" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_HAVE_GPHOTO2" = x; then
- HAVE_GPHOTO2="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- HAVE_GPHOTO2=$ac_ct_HAVE_GPHOTO2
- fi
-else
- HAVE_GPHOTO2="$ac_cv_prog_HAVE_GPHOTO2"
-fi
-
-
- if test ${HAVE_GPHOTO2} != "false" ; then
- if pkg-config --exists libgphoto2 ; then
- with_gphoto2="`pkg-config --modversion libgphoto2`"
- GPHOTO2_CPPFLAGS="`pkg-config --cflags libgphoto2`"
- GPHOTO2_LIBS="`pkg-config --libs libgphoto2`"
-
- saved_CPPFLAGS="${CPPFLAGS}"
- CPPFLAGS="${GPHOTO2_CPPFLAGS}"
- saved_LIBS="${LIBS}"
- LIBS="${LIBS} ${GPHOTO2_LIBS}"
- # Make sure we an really use the library
- for ac_func in gp_camera_init
-do :
- ac_fn_c_check_func "$LINENO" "gp_camera_init" "ac_cv_func_gp_camera_init"
-if test "x$ac_cv_func_gp_camera_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GP_CAMERA_INIT 1
-_ACEOF
- HAVE_GPHOTO2=true
-else
- HAVE_GPHOTO2=false
-fi
-done
-
- if test "${HAVE_GPHOTO2}" = "true"; then
- for ac_func in gp_port_info_get_path
-do :
- ac_fn_c_check_func "$LINENO" "gp_port_info_get_path" "ac_cv_func_gp_port_info_get_path"
-if test "x$ac_cv_func_gp_port_info_get_path" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GP_PORT_INFO_GET_PATH 1
-_ACEOF
-
-fi
-done
-
- fi
- CPPFLAGS="${saved_CPPFLAGS}"
- LIBS="${saved_LIBS}"
- else
- HAVE_GPHOTO2=false
- fi
- if test "${HAVE_GPHOTO2}" = "false"; then
- GPHOTO2_CPPFLAGS=""
- GPHOTO2_LIBS=""
- else
-
- tmp_LIBS=""
- for param in ${GPHOTO2_LIBS}; do
- case "${param}" in
- -l*)
- tmp_LIBS="${tmp_LIBS} ${param}"
- ;;
- *)
- GPHOTO2_LDFLAGS="${GPHOTO2_LDFLAGS} ${param}"
- ;;
- esac
- done
- GPHOTO2_LIBS="${tmp_LIBS}"
- unset tmp_LIBS
- unset param
-
- if pkg-config --atleast-version=2.5.0 libgphoto2; then
-
-$as_echo "#define GPLOGFUNC_NO_VARGS 1" >>confdefs.h
-
- fi
- fi
- fi
- fi
-
-
-
-
-
-
-
-# Check whether --with-v4l was given.
-if test "${with_v4l+set}" = set; then :
- withval=$with_v4l; # If --with-v4l=no or --without-v4l, disable backend
- # as "$with_v4l" will be set to "no"
-fi
-
-
-if test "$with_v4l" != "no" ; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBV4L" >&5
-$as_echo_n "checking for LIBV4L... " >&6; }
-
-if test -n "$LIBV4L_CFLAGS"; then
- pkg_cv_LIBV4L_CFLAGS="$LIBV4L_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libv4l1\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libv4l1") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_LIBV4L_CFLAGS=`$PKG_CONFIG --cflags "libv4l1" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$LIBV4L_LIBS"; then
- pkg_cv_LIBV4L_LIBS="$LIBV4L_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libv4l1\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libv4l1") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_LIBV4L_LIBS=`$PKG_CONFIG --libs "libv4l1" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- LIBV4L_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libv4l1" 2>&1`
- else
- LIBV4L_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libv4l1" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$LIBV4L_PKG_ERRORS" >&5
-
- have_libv4l1=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_libv4l1=no
-else
- LIBV4L_CFLAGS=$pkg_cv_LIBV4L_CFLAGS
- LIBV4L_LIBS=$pkg_cv_LIBV4L_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_libv4l1=yes
-fi
-fi
-
-# Check whether --enable-avahi was given.
-if test "${enable_avahi+set}" = set; then :
- enableval=$enable_avahi; enable_avahi=$enableval
-else
- enable_avahi=no
-fi
-
-
-if test "$enable_avahi" = "yes"; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVAHI" >&5
-$as_echo_n "checking for AVAHI... " >&6; }
-
-if test -n "$AVAHI_CFLAGS"; then
- pkg_cv_AVAHI_CFLAGS="$AVAHI_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" avahi-client >= 0.6.24 \""; } >&5
- ($PKG_CONFIG --exists --print-errors " avahi-client >= 0.6.24 ") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_AVAHI_CFLAGS=`$PKG_CONFIG --cflags " avahi-client >= 0.6.24 " 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$AVAHI_LIBS"; then
- pkg_cv_AVAHI_LIBS="$AVAHI_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" avahi-client >= 0.6.24 \""; } >&5
- ($PKG_CONFIG --exists --print-errors " avahi-client >= 0.6.24 ") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_AVAHI_LIBS=`$PKG_CONFIG --libs " avahi-client >= 0.6.24 " 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- AVAHI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " avahi-client >= 0.6.24 " 2>&1`
- else
- AVAHI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " avahi-client >= 0.6.24 " 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$AVAHI_PKG_ERRORS" >&5
-
- enable_avahi=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- enable_avahi=no
-else
- AVAHI_CFLAGS=$pkg_cv_AVAHI_CFLAGS
- AVAHI_LIBS=$pkg_cv_AVAHI_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define WITH_AVAHI 1" >>confdefs.h
-
-fi
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sane_init in -lsane" >&5
-$as_echo_n "checking for sane_init in -lsane... " >&6; }
-if ${ac_cv_lib_sane_sane_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsane $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char sane_init ();
-int
-main ()
-{
-return sane_init ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_sane_sane_init=yes
-else
- ac_cv_lib_sane_sane_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sane_sane_init" >&5
-$as_echo "$ac_cv_lib_sane_sane_init" >&6; }
-if test "x$ac_cv_lib_sane_sane_init" = xyes; then :
- LIBSANE_EXISTS="yes"
-fi
-
-
-
-
-
-# Check whether --with-snmp was given.
-if test "${with_snmp+set}" = set; then :
- withval=$with_snmp;
-fi
-
-
-if test "$with_snmp" = "no"; then
- echo "Not including SNMP support"
-else
- # Extract the first word of "net-snmp-config", so it can be a program name with args.
-set dummy net-snmp-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SNMP_CONFIG_PATH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $SNMP_CONFIG_PATH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_SNMP_CONFIG_PATH="$SNMP_CONFIG_PATH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SNMP_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_SNMP_CONFIG_PATH" && ac_cv_path_SNMP_CONFIG_PATH=""no""
- ;;
-esac
-fi
-SNMP_CONFIG_PATH=$ac_cv_path_SNMP_CONFIG_PATH
-if test -n "$SNMP_CONFIG_PATH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SNMP_CONFIG_PATH" >&5
-$as_echo "$SNMP_CONFIG_PATH" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for snmp_timeout in -lnetsnmp" >&5
-$as_echo_n "checking for snmp_timeout in -lnetsnmp... " >&6; }
-if ${ac_cv_lib_netsnmp_snmp_timeout+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnetsnmp $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char snmp_timeout ();
-int
-main ()
-{
-return snmp_timeout ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_netsnmp_snmp_timeout=yes
-else
- ac_cv_lib_netsnmp_snmp_timeout=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netsnmp_snmp_timeout" >&5
-$as_echo "$ac_cv_lib_netsnmp_snmp_timeout" >&6; }
-if test "x$ac_cv_lib_netsnmp_snmp_timeout" = xyes; then :
- LIBSNMP_EXISTS="yes"
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for proper SNMP version" >&5
-$as_echo_n "checking for proper SNMP version... " >&6; }
- 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`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- with_snmp="yes"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You need at least net-snmp 5.6, your version is $snmp_version" >&5
-$as_echo "$as_me: WARNING: You need at least net-snmp 5.6, your version is $snmp_version" >&2;}
- with_snmp="no"
- fi
- else
- with_snmp="no"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- fi
-fi
-
-if test "$with_snmp" = "yes" && test "${LIBSNMP_EXISTS}x" = "yesx"; then
-
-
-
-$as_echo "#define HAVE_LIBSNMP 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: net-snmp library disabled, autodetecting network scanners will not be supported." >&5
-$as_echo "$as_me: WARNING: net-snmp library disabled, autodetecting network scanners will not be supported." >&2;}
-fi
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-for ac_header in fcntl.h unistd.h libc.h sys/dsreq.h sys/select.h \
- sys/time.h sys/shm.h sys/ipc.h sys/signal.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 \
- 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
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in asm/io.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "asm/io.h" "ac_cv_header_asm_io_h" "#include <sys/types.h>
-"
-if test "x$ac_cv_header_asm_io_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ASM_IO_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
- MISSING_HEADERS=
- if test "${ac_cv_header_fcntl_h}" != "yes" ; then
- MISSING_HEADERS="${MISSING_HEADERS}\"fcntl.h\" "
- fi
- if test "${ac_cv_header_sys_time_h}" != "yes" ; then
- MISSING_HEADERS="${MISSING_HEADERS}\"sys/time.h\" "
- fi
- if test "${ac_cv_header_unistd_h}" != "yes" ; then
- MISSING_HEADERS="${MISSING_HEADERS}\"unistd.h\" "
- fi
- if test "${ac_cv_header_stdc}" != "yes" ; then
- MISSING_HEADERS="${MISSING_HEADERS}\"ANSI C headers\" "
- fi
- if test "${MISSING_HEADERS}" != "" ; then
- echo "*** The following essential header files couldn't be found:"
- echo "*** ${MISSING_HEADERS}"
- echo "*** Maybe the compiler isn't ANSI C compliant or not properly installed?"
- echo "*** For details on what went wrong see config.log."
- as_fn_error $? "Exiting now." "$LINENO" 5
- fi
-
-
-for ac_header in winsock2.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
-if test "x$ac_cv_header_winsock2_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_WINSOCK2_H 1
-_ACEOF
- SOCKET_LIB="-lws2_32"
-fi
-
-done
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "resmgr.h" "ac_cv_header_resmgr_h" "$ac_includes_default"
-if test "x$ac_cv_header_resmgr_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rsm_open_device in -lresmgr" >&5
-$as_echo_n "checking for rsm_open_device in -lresmgr... " >&6; }
-if ${ac_cv_lib_resmgr_rsm_open_device+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lresmgr $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char rsm_open_device ();
-int
-main ()
-{
-return rsm_open_device ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_resmgr_rsm_open_device=yes
-else
- ac_cv_lib_resmgr_rsm_open_device=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resmgr_rsm_open_device" >&5
-$as_echo "$ac_cv_lib_resmgr_rsm_open_device" >&6; }
-if test "x$ac_cv_lib_resmgr_rsm_open_device" = xyes; then :
-
-
-$as_echo "#define HAVE_RESMGR 1" >>confdefs.h
-
- RESMGR_LIBS="-lresmgr"
-
-
-fi
-
-
-fi
-
-
-
-
-
-ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define ssize_t int
-_ACEOF
-
-fi
-
-
-ac_fn_c_check_type "$LINENO" "u_char" "ac_cv_type_u_char" "$ac_includes_default"
-if test "x$ac_cv_type_u_char" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_U_CHAR 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "u_short" "ac_cv_type_u_short" "$ac_includes_default"
-if test "x$ac_cv_type_u_short" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_U_SHORT 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default"
-if test "x$ac_cv_type_u_int" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_U_INT 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_type "$LINENO" "u_long" "ac_cv_type_u_long" "$ac_includes_default"
-if test "x$ac_cv_type_u_long" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_U_LONG 1
-_ACEOF
-
-
-fi
-
-
-
-# from Python, check for "long long" type
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support" >&5
-$as_echo_n "checking for long long support... " >&6; }
-have_long_long=no
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-long long x; x = (long long)0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
- have_long_long=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_long_long" >&5
-$as_echo "$have_long_long" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t in <sys/socket.h>" >&5
-$as_echo_n "checking for socklen_t in <sys/socket.h>... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/socket.h>
-
-int
-main ()
-{
-socklen_t len
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
-$as_echo "#define socklen_t int" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for union semun in <sys/sem.h>" >&5
-$as_echo_n "checking for union semun in <sys/sem.h>... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/sem.h>
-
-int
-main ()
-{
-union semun test_semun
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_UNION_SEMUN 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct flock in fcntl.h" >&5
-$as_echo_n "checking for struct flock in fcntl.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <fcntl.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "struct flock" >/dev/null 2>&1; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; } ;
-
-$as_echo "#define HAVE_STRUCT_FLOCK 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f conftest*
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Linux ioctl defines" >&5
-$as_echo_n "checking for Linux ioctl defines... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/ioctl.h>
-#include <asm/types.h>
-
-int
-main ()
-{
-
-__u32 houba = _IOR('v',14, unsigned long);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-have_linux_ioctl_defines="yes";
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_bigendian=unknown
- # See if we're dealing with a universal compiler.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __APPLE_CC__
- not a universal capable compiler
- #endif
- typedef int dummy;
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- # Check for potential -arch flags. It is not universal unless
- # there are at least two -arch flags with different values.
- ac_arch=
- ac_prev=
- for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
- if test -n "$ac_prev"; then
- case $ac_word in
- i?86 | x86_64 | ppc | ppc64)
- if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
- ac_arch=$ac_word
- else
- ac_cv_c_bigendian=universal
- break
- fi
- ;;
- esac
- ac_prev=
- elif test "x$ac_word" = "x-arch"; then
- ac_prev=arch
- fi
- done
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test $ac_cv_c_bigendian = unknown; then
- # See if sys/param.h defines the BYTE_ORDER macro.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
- && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
- && LITTLE_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- #include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
- bogus endian macros
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- # It does; now see whether it defined to _BIG_ENDIAN or not.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <limits.h>
-
-int
-main ()
-{
-#ifndef _BIG_ENDIAN
- not big endian
- #endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_bigendian=yes
-else
- ac_cv_c_bigendian=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
- if test $ac_cv_c_bigendian = unknown; then
- # Compile a test program.
- if test "$cross_compiling" = yes; then :
- # Try to guess by grepping values from an object file.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-short int ascii_mm[] =
- { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
- { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
- int use_ascii (int i) {
- return ascii_mm[i] + ascii_ii[i];
- }
- short int ebcdic_ii[] =
- { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
- { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
- int use_ebcdic (int i) {
- return ebcdic_mm[i] + ebcdic_ii[i];
- }
- extern int foo;
-
-int
-main ()
-{
-return use_ascii (foo) == use_ebcdic (foo);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
- ac_cv_c_bigendian=yes
- fi
- if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
- if test "$ac_cv_c_bigendian" = unknown; then
- ac_cv_c_bigendian=no
- else
- # finding both strings is unlikely to happen, but who knows?
- ac_cv_c_bigendian=unknown
- fi
- fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-main ()
-{
-
- /* Are we little or big endian? From Harbison&Steele. */
- union
- {
- long int l;
- char c[sizeof (long int)];
- } u;
- u.l = 1;
- return u.c[sizeof (long int) - 1] == 1;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_bigendian=no
-else
- ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
- case $ac_cv_c_bigendian in #(
- yes)
- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
-;; #(
- no)
- ;; #(
- universal)
-
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
-
- ;; #(
- *)
- as_fn_error $? "unknown endianness
- presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
- esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
-#ifndef __cplusplus
- /* Ultrix mips cc rejects this sort of thing. */
- typedef int charset[2];
- const charset cs = { 0, 0 };
- /* SunOS 4.1.1 cc rejects this. */
- char const *const *pcpcc;
- char **ppc;
- /* NEC SVR4.0.2 mips cc rejects this. */
- struct point {int x, y;};
- static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in
- an arm of an if-expression whose if-part is not a constant
- expression */
- const char *g = "string";
- pcpcc = &g + (g ? g-g : 0);
- /* HPUX 7.0 cc rejects these. */
- ++pcpcc;
- ppc = (char**) pcpcc;
- pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this sort of thing. */
- char tx;
- char *t = &tx;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
- if (s) return 0;
- }
- { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
- }
- { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
- }
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; } bx;
- struct s *b = &bx; b->j = 5;
- }
- { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
- if (!foo) return 0;
- }
- return !cs[0] && !zero.x;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_const=yes
-else
- ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_c_inline=$ac_kw
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
-
-case $ac_cv_c_inline in
- inline | yes) ;;
- *)
- case $ac_cv_c_inline in
- no) ac_val=;;
- *) ac_val=$ac_cv_c_inline;;
- esac
- cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
- ;;
-esac
-
-
-
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_working_alloca_h=yes
-else
- ac_cv_working_alloca_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_alloca_works=yes
-else
- ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_c_stack_direction=0
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
- int dir, dummy = 0;
- if (! addr)
- addr = &dummy;
- *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
- dir = depth ? find_stack_direction (addr, depth - 1) : 0;
- return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
- return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_stack_direction=1
-else
- ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
-ac_fn_c_check_func "$LINENO" "getenv" "ac_cv_func_getenv"
-if test "x$ac_cv_func_getenv" = xyes; then :
- $as_echo "#define HAVE_GETENV 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" getenv.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS getenv.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
-if test "x$ac_cv_func_inet_ntop" = xyes; then :
- $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" inet_ntop.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS inet_ntop.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton"
-if test "x$ac_cv_func_inet_pton" = xyes; then :
- $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" inet_pton.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS inet_pton.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "isfdtype" "ac_cv_func_isfdtype"
-if test "x$ac_cv_func_isfdtype" = xyes; then :
- $as_echo "#define HAVE_ISFDTYPE 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" isfdtype.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS isfdtype.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask"
-if test "x$ac_cv_func_sigprocmask" = xyes; then :
- $as_echo "#define HAVE_SIGPROCMASK 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" sigprocmask.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS sigprocmask.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "sleep" "ac_cv_func_sleep"
-if test "x$ac_cv_func_sleep" = xyes; then :
- $as_echo "#define HAVE_SLEEP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" sleep.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS sleep.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
-if test "x$ac_cv_func_snprintf" = xyes; then :
- $as_echo "#define HAVE_SNPRINTF 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" snprintf.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS snprintf.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr"
-if test "x$ac_cv_func_strcasestr" = xyes; then :
- $as_echo "#define HAVE_STRCASESTR 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" strcasestr.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS strcasestr.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
-if test "x$ac_cv_func_strdup" = xyes; then :
- $as_echo "#define HAVE_STRDUP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" strdup.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS strdup.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup"
-if test "x$ac_cv_func_strndup" = xyes; then :
- $as_echo "#define HAVE_STRNDUP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" strndup.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS strndup.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep"
-if test "x$ac_cv_func_strsep" = xyes; then :
- $as_echo "#define HAVE_STRSEP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" strsep.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS strsep.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "syslog" "ac_cv_func_syslog"
-if test "x$ac_cv_func_syslog" = xyes; then :
- $as_echo "#define HAVE_SYSLOG 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" syslog.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS syslog.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep"
-if test "x$ac_cv_func_usleep" = xyes; then :
- $as_echo "#define HAVE_USLEEP 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" usleep.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS usleep.$ac_objext"
- ;;
-esac
-
-fi
-
-ac_fn_c_check_func "$LINENO" "vsyslog" "ac_cv_func_vsyslog"
-if test "x$ac_cv_func_vsyslog" = xyes; then :
- $as_echo "#define HAVE_VSYSLOG 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" vsyslog.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS vsyslog.$ac_objext"
- ;;
-esac
-
-fi
-
-
-if test x != x$ALLOCA; then :
- LTALLOCA=`echo "$ALLOCA" | sed 's/\.o$//; s/\.obj$//'`.lo
-fi
-
-
-ac_fn_c_check_func "$LINENO" "gethostbyaddr" "ac_cv_func_gethostbyaddr"
-if test "x$ac_cv_func_gethostbyaddr" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr in -lbind" >&5
-$as_echo_n "checking for gethostbyaddr in -lbind... " >&6; }
-if ${ac_cv_lib_bind_gethostbyaddr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbind $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyaddr ();
-int
-main ()
-{
-return gethostbyaddr ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_bind_gethostbyaddr=yes
-else
- ac_cv_lib_bind_gethostbyaddr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bind_gethostbyaddr" >&5
-$as_echo "$ac_cv_lib_bind_gethostbyaddr" >&6; }
-if test "x$ac_cv_lib_bind_gethostbyaddr" = xyes; then :
- BIND_LIB="-lbind"
-fi
-
-fi
-
-ac_fn_c_check_func "$LINENO" "gethostbyaddr" "ac_cv_func_gethostbyaddr"
-if test "x$ac_cv_func_gethostbyaddr" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyaddr in -lnsl" >&5
-$as_echo_n "checking for gethostbyaddr in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_gethostbyaddr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyaddr ();
-int
-main ()
-{
-return gethostbyaddr ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_nsl_gethostbyaddr=yes
-else
- ac_cv_lib_nsl_gethostbyaddr=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyaddr" >&5
-$as_echo "$ac_cv_lib_nsl_gethostbyaddr" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyaddr" = xyes; then :
- NSL_LIB="-lnsl"
-fi
-
-fi
-
-ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
-if test "x$ac_cv_func_socket" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
-$as_echo_n "checking for socket in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_socket_socket=yes
-else
- ac_cv_lib_socket_socket=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
-$as_echo "$ac_cv_lib_socket_socket" >&6; }
-if test "x$ac_cv_lib_socket_socket" = xyes; then :
- SOCKET_LIB="-lsocket"
-fi
-
-fi
-
-ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
-if test "x$ac_cv_func_inet_aton" = xyes; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton in -lresolv" >&5
-$as_echo_n "checking for inet_aton in -lresolv... " >&6; }
-if ${ac_cv_lib_resolv_inet_aton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lresolv $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char inet_aton ();
-int
-main ()
-{
-return inet_aton ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_resolv_inet_aton=yes
-else
- ac_cv_lib_resolv_inet_aton=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_resolv_inet_aton" >&5
-$as_echo "$ac_cv_lib_resolv_inet_aton" >&6; }
-if test "x$ac_cv_lib_resolv_inet_aton" = xyes; then :
- RESOLV_LIB="-lresolv"
-fi
-
-fi
-
-
-SOCKET_LIBS="$SOCKET_LIB $NSL_LIB $BIND_LIB $RESOLV_LIB"
-
-
-save_LIBS="$LIBS"
-LIBS="$LIBS $SOCKET_LIBS"
-for ac_func in inet_addr inet_aton inet_ntoa
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-LIBS="$save_LIBS"
-
-if test "$ac_cv_header_be_kernel_OS_h" = "yes" ; then
- ac_cv_func_getaddrinfo=no
- ac_cv_func_getnameinfo=no
-fi
-
-
-
-
- for ac_header in $ac_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-for ac_func in getpagesize
-do :
- ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-fi
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_mmap_fixed_mapped=no
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
- Here is a matrix of mmap possibilities:
- mmap private not fixed
- mmap private fixed at somewhere currently unmapped
- mmap private fixed at somewhere already mapped
- mmap shared not fixed
- mmap shared fixed at somewhere currently unmapped
- mmap shared fixed at somewhere already mapped
- For private mappings, we should verify that changes cannot be read()
- back from the file, nor mmap's back from the file at a different
- address. (There have been systems where private was not correctly
- implemented like the infamous i386 svr4.0, and systems where the
- VM page cache was not coherent with the file system buffer cache
- like early versions of FreeBSD and possibly contemporary NetBSD.)
- For shared mappings, we should conversely verify that changes get
- propagated back to all the places they're supposed to be.
-
- Grep wants private fixed already mapped.
- The main things grep needs to know about mmap are:
- * does it exist and is it safe to write into the mmap'd area
- * how to use it (BSD variants) */
-
-#include <fcntl.h>
-#include <sys/mman.h>
-
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h. */
-#ifndef HAVE_GETPAGESIZE
-# ifdef _SC_PAGESIZE
-# define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-# ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-# ifdef EXEC_PAGESIZE
-# define getpagesize() EXEC_PAGESIZE
-# else /* no EXEC_PAGESIZE */
-# ifdef NBPG
-# define getpagesize() NBPG * CLSIZE
-# ifndef CLSIZE
-# define CLSIZE 1
-# endif /* no CLSIZE */
-# else /* no NBPG */
-# ifdef NBPC
-# define getpagesize() NBPC
-# else /* no NBPC */
-# ifdef PAGESIZE
-# define getpagesize() PAGESIZE
-# endif /* PAGESIZE */
-# endif /* no NBPC */
-# endif /* no NBPG */
-# endif /* no EXEC_PAGESIZE */
-# else /* no HAVE_SYS_PARAM_H */
-# define getpagesize() 8192 /* punt totally */
-# endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
- char *data, *data2, *data3;
- const char *cdata2;
- int i, pagesize;
- int fd, fd2;
-
- pagesize = getpagesize ();
-
- /* First, make a file with some known garbage in it. */
- data = (char *) malloc (pagesize);
- if (!data)
- return 1;
- for (i = 0; i < pagesize; ++i)
- *(data + i) = rand ();
- umask (0);
- fd = creat ("conftest.mmap", 0600);
- if (fd < 0)
- return 2;
- if (write (fd, data, pagesize) != pagesize)
- return 3;
- close (fd);
-
- /* Next, check that the tail of a page is zero-filled. File must have
- non-zero length, otherwise we risk SIGBUS for entire page. */
- fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);
- if (fd2 < 0)
- return 4;
- cdata2 = "";
- if (write (fd2, cdata2, 1) != 1)
- return 5;
- data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L);
- if (data2 == MAP_FAILED)
- return 6;
- for (i = 0; i < pagesize; ++i)
- if (*(data2 + i))
- return 7;
- close (fd2);
- if (munmap (data2, pagesize))
- return 8;
-
- /* Next, try to mmap the file at a fixed address which already has
- something else allocated at it. If we can, also make sure that
- we see the same garbage. */
- fd = open ("conftest.mmap", O_RDWR);
- if (fd < 0)
- return 9;
- if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_FIXED, fd, 0L))
- return 10;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data2 + i))
- return 11;
-
- /* Finally, make sure that changes to the mapped area do not
- percolate back to the file as seen by read(). (This is a bug on
- some variants of i386 svr4.0.) */
- for (i = 0; i < pagesize; ++i)
- *(data2 + i) = *(data2 + i) + 1;
- data3 = (char *) malloc (pagesize);
- if (!data3)
- return 12;
- if (read (fd, data3, pagesize) != pagesize)
- return 13;
- for (i = 0; i < pagesize; ++i)
- if (*(data + i) != *(data3 + i))
- return 14;
- close (fd);
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_func_mmap_fixed_mapped=yes
-else
- ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
-
-fi
-rm -f conftest.mmap conftest.txt
-
-for ac_func in atexit ioperm i386_set_ioperm \
- mkdir strftime strstr strtod \
- cfmakeraw tcsendbreak strcasecmp strncasecmp _portaccess \
- getaddrinfo getnameinfo poll setitimer iopl getuid getpass
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-if test "${ac_cv_header_sys_io_h}" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inb,outb (provided by sys/io.h)" >&5
-$as_echo_n "checking for inb,outb (provided by sys/io.h)... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/io.h>
-int
-main ()
-{
-inb(0);outb(0,0);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- sane_cv_have_sys_io_h_with_inb_outb="yes"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- sane_cv_have_sys_io_h_with_inb_outb="no"
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sys/io.h does not provide inb,outb (non i386/x32/x86_64 arch?)" >&5
-$as_echo "$as_me: WARNING: sys/io.h does not provide inb,outb (non i386/x32/x86_64 arch?)" >&2;}
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- if test "$sane_cv_have_sys_io_h_with_inb_outb" = "yes"; then
-
-$as_echo "#define SANE_HAVE_SYS_IO_H_WITH_INB_OUTB 1" >>confdefs.h
-
- fi
-else
- sane_cv_have_sys_io_h_with_inb_outb="no"
-fi
-
-
-
-
-
-if test "$ac_cv_header_os2_h" = "yes" ; then
-
-$as_echo "#define strncasecmp strnicmp" >>confdefs.h
-
-
-$as_echo "#define strcasecmp stricmp" >>confdefs.h
-
-fi
-
-if test "$ac_cv_header_getopt_h" = "yes" ; then
- for ac_func in getopt_long
-do :
- ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long"
-if test "x$ac_cv_func_getopt_long" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETOPT_LONG 1
-_ACEOF
-
-fi
-done
-
-fi
-
-# Slightly abuse the AC_LIBOBJ macro to mark files as replacement code
-if test x$ac_cv_header_getopt_h != xyes \
- && test x$ac_cv_func_getopt_long != xyes; then :
- case " $LIBOBJS " in
- *" getopt.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS getopt.$ac_objext"
- ;;
-esac
-
- case " $LIBOBJS " in
- *" getopt1.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS getopt1.$ac_objext"
- ;;
-esac
-
-fi
-
-if test -c /dev/urandom ; then
-
-$as_echo "#define HAVE_DEV_URANDOM 1" >>confdefs.h
-
-fi
-
-
-# Check whether --with-systemd was given.
-if test "${with_systemd+set}" = set; then :
- withval=$with_systemd;
-fi
-
-if test "x$with_systemd" != xno ; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5
-$as_echo_n "checking for SYSTEMD... " >&6; }
-
-if test -n "$SYSTEMD_CFLAGS"; then
- pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$SYSTEMD_LIBS"; then
- pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1`
- else
- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$SYSTEMD_PKG_ERRORS" >&5
-
- have_systemd=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_systemd=no
-else
- SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
- SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_systemd=yes
-fi
- if test "x$have_systemd" = xno; then
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5
-$as_echo_n "checking for SYSTEMD... " >&6; }
-
-if test -n "$SYSTEMD_CFLAGS"; then
- pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-daemon" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$SYSTEMD_LIBS"; then
- pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-daemon\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libsystemd-daemon") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd-daemon" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd-daemon" 2>&1`
- else
- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd-daemon" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$SYSTEMD_PKG_ERRORS" >&5
-
- have_systemd=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_systemd=no
-else
- SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
- SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_systemd=yes
-fi
- fi
- if test "x$have_systemd" = xyes; then
-
-$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
-
- else
- if test "x$with_systemd" = xyes; then
- as_fn_error $? "Systemd support was requested but systemd was not found" "$LINENO" 5
- fi
- fi
-fi
-
-
-
-# Check whether --with-usb was given.
-if test "${with_usb+set}" = set; then :
- withval=$with_usb;
-else
- with_usb=check
-fi
-
-if test xno != "x$with_usb"; then :
- have_usb=no
- case x$host_os in #(
- beos*) :
- ac_fn_c_check_header_mongrel "$LINENO" "be/drivers/USB_scanner.h" "ac_cv_header_be_drivers_USB_scanner_h" "$ac_includes_default"
-if test "x$ac_cv_header_be_drivers_USB_scanner_h" = xyes; then :
- have_usb=yes
-fi
-
- ;; #(
- os2*) :
- ac_fn_c_check_header_compile "$LINENO" "usbcalls.h" "ac_cv_header_usbcalls_h" "#include <usb.h>
- #include <os2.h>
-
-"
-if test "x$ac_cv_header_usbcalls_h" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UsbQueryNumberDevices in -lusbcall" >&5
-$as_echo_n "checking for UsbQueryNumberDevices in -lusbcall... " >&6; }
-if ${ac_cv_lib_usbcall_UsbQueryNumberDevices+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusbcall $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char UsbQueryNumberDevices ();
-int
-main ()
-{
-return UsbQueryNumberDevices ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usbcall_UsbQueryNumberDevices=yes
-else
- ac_cv_lib_usbcall_UsbQueryNumberDevices=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usbcall_UsbQueryNumberDevices" >&5
-$as_echo "$ac_cv_lib_usbcall_UsbQueryNumberDevices" >&6; }
-if test "x$ac_cv_lib_usbcall_UsbQueryNumberDevices" = xyes; then :
- USB_LIBS="-lusbcall"
- have_usb=yes
-
-$as_echo "#define HAVE_USBCALLS 1" >>confdefs.h
-
-
-fi
-
-
-fi
-
-
- ;; #(
- *) :
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for USB" >&5
-$as_echo_n "checking for USB... " >&6; }
-
-if test -n "$USB_CFLAGS"; then
- pkg_cv_USB_CFLAGS="$USB_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_CFLAGS=`$PKG_CONFIG --cflags "libusb-1.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$USB_LIBS"; then
- pkg_cv_USB_LIBS="$USB_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_LIBS=`$PKG_CONFIG --libs "libusb-1.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- USB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb-1.0" 2>&1`
- else
- USB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb-1.0" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$USB_PKG_ERRORS" >&5
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for USB" >&5
-$as_echo_n "checking for USB... " >&6; }
-
-if test -n "$USB_CFLAGS"; then
- pkg_cv_USB_CFLAGS="$USB_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_CFLAGS=`$PKG_CONFIG --cflags "libusb >= 0.1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$USB_LIBS"; then
- pkg_cv_USB_LIBS="$USB_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_LIBS=`$PKG_CONFIG --libs "libusb >= 0.1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- USB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb >= 0.1.8" 2>&1`
- else
- USB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb >= 0.1.8" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$USB_PKG_ERRORS" >&5
-
- ac_fn_c_check_header_mongrel "$LINENO" "usb.h" "ac_cv_header_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_usb_h" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-
- for ac_header in lusb0_usb.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "lusb0_usb.h" "ac_cv_header_lusb0_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_lusb0_usb_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LUSB0_USB_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-done
-
-
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- ac_fn_c_check_header_mongrel "$LINENO" "usb.h" "ac_cv_header_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_usb_h" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-
- for ac_header in lusb0_usb.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "lusb0_usb.h" "ac_cv_header_lusb0_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_lusb0_usb_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LUSB0_USB_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-done
-
-
-else
- USB_CFLAGS=$pkg_cv_USB_CFLAGS
- USB_LIBS=$pkg_cv_USB_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_LIBUSB_LEGACY 1" >>confdefs.h
-
- have_usb=yes
-
-fi
-
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for USB" >&5
-$as_echo_n "checking for USB... " >&6; }
-
-if test -n "$USB_CFLAGS"; then
- pkg_cv_USB_CFLAGS="$USB_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_CFLAGS=`$PKG_CONFIG --cflags "libusb >= 0.1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$USB_LIBS"; then
- pkg_cv_USB_LIBS="$USB_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_USB_LIBS=`$PKG_CONFIG --libs "libusb >= 0.1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- USB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb >= 0.1.8" 2>&1`
- else
- USB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb >= 0.1.8" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$USB_PKG_ERRORS" >&5
-
- ac_fn_c_check_header_mongrel "$LINENO" "usb.h" "ac_cv_header_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_usb_h" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-
- for ac_header in lusb0_usb.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "lusb0_usb.h" "ac_cv_header_lusb0_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_lusb0_usb_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LUSB0_USB_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-done
-
-
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- ac_fn_c_check_header_mongrel "$LINENO" "usb.h" "ac_cv_header_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_usb_h" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-
- for ac_header in lusb0_usb.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "lusb0_usb.h" "ac_cv_header_lusb0_usb_h" "$ac_includes_default"
-if test "x$ac_cv_header_lusb0_usb_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LUSB0_USB_H 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for usb_interrupt_read in -lusb" >&5
-$as_echo_n "checking for usb_interrupt_read in -lusb... " >&6; }
-if ${ac_cv_lib_usb_usb_interrupt_read+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lusb $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char usb_interrupt_read ();
-int
-main ()
-{
-return usb_interrupt_read ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_usb_usb_interrupt_read=yes
-else
- ac_cv_lib_usb_usb_interrupt_read=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_usb_interrupt_read" >&5
-$as_echo "$ac_cv_lib_usb_usb_interrupt_read" >&6; }
-if test "x$ac_cv_lib_usb_usb_interrupt_read" = xyes; then :
- USB_LIBS="-lusb"
- have_usb=yes
-
-fi
-
-fi
-
-done
-
-
-else
- USB_CFLAGS=$pkg_cv_USB_CFLAGS
- USB_LIBS=$pkg_cv_USB_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_LIBUSB_LEGACY 1" >>confdefs.h
-
- have_usb=yes
-
-fi
-
-else
- USB_CFLAGS=$pkg_cv_USB_CFLAGS
- USB_LIBS=$pkg_cv_USB_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAVE_LIBUSB 1" >>confdefs.h
-
- have_usb=yes
-
-fi
- ;;
-esac
-
-fi
-if test xyes = "x$with_usb" && test xyes != "x$have_usb"; then :
- as_fn_error $? "USB support requested but required libraries not found." "$LINENO" 5
-
-fi
- if test x != "x$USB_LIBS"; then
- have_usblib_TRUE=
- have_usblib_FALSE='#'
-else
- have_usblib_TRUE='#'
- have_usblib_FALSE=
-fi
-
-
-
-
-# Unset VERSION during the SCSI header check
-sed "s!^#define VERSION .*!/* & */!" confdefs.h > confdefs.h.tmp
-mv confdefs.h.tmp confdefs.h
-
-for ac_header in IOKit/scsi/SCSITaskLib.h IOKit/cdb/IOSCSILib.h \
- IOKit/scsi/SCSICommandOperationCodes.h \
- IOKit/scsi-commands/SCSICommandOperationCodes.h scsi.h sys/scsi.h \
- sys/scsicmd.h sys/scsiio.h bsd/dev/scsireg.h scsi/sg.h \
- camlib.h gscdds.h sys/scsi/scsi.h sys/scsi/sgdefs.h \
- sys/scsi/targets/scgio.h apollo/scsi.h sys/sdi_comm.h \
- sys/passthrudef.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-# Restore VERSION
-sed "s!/\* \(#define VERSION .*\) \*/!\1!" confdefs.h > confdefs.h.tmp
-mv confdefs.h.tmp confdefs.h
-
-for ac_header in io/cam/cam.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "io/cam/cam.h" "ac_cv_header_io_cam_cam_h" "#include <io/common/iotypes.h>
-"
-if test "x$ac_cv_header_io_cam_cam_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_IO_CAM_CAM_H 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in ntddscsi.h ddk/ntddscsi.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <windows.h>
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-if test "$ac_cv_header_sys_scsiio_h" = "yes" \
- && test "$ac_cv_header_scsi_h" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 'scsireq_t' needs to be defined as 'struct scsireq'" >&5
-$as_echo_n "checking if 'scsireq_t' needs to be defined as 'struct scsireq'... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/scsiio.h>
-#include <scsi.h>
-
-int
-main ()
-{
-scsireq_t req
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define scsireq_t struct scsireq_t" >>confdefs.h
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for scsireq_enter in -lscsi" >&5
-$as_echo_n "checking for scsireq_enter in -lscsi... " >&6; }
-if ${ac_cv_lib_scsi_scsireq_enter+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lscsi $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char scsireq_enter ();
-int
-main ()
-{
-return scsireq_enter ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_scsi_scsireq_enter=yes
-else
- ac_cv_lib_scsi_scsireq_enter=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_scsi_scsireq_enter" >&5
-$as_echo "$ac_cv_lib_scsi_scsireq_enter" >&6; }
-if test "x$ac_cv_lib_scsi_scsireq_enter" = xyes; then :
- SCSI_LIBS="-lscsi"
-fi
- # FreeBSD needs this
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cam_open_device in -lcam" >&5
-$as_echo_n "checking for cam_open_device in -lcam... " >&6; }
-if ${ac_cv_lib_cam_cam_open_device+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcam $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char cam_open_device ();
-int
-main ()
-{
-return cam_open_device ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_cam_cam_open_device=yes
-else
- ac_cv_lib_cam_cam_open_device=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cam_cam_open_device" >&5
-$as_echo "$ac_cv_lib_cam_cam_open_device" >&6; }
-if test "x$ac_cv_lib_cam_cam_open_device" = xyes; then :
- SCSI_LIBS="-lcam"
-fi
- # FreeBSD 3+ needs this
-
-for ac_func in scsireq_enter
-do :
- ac_fn_c_check_func "$LINENO" "scsireq_enter" "ac_cv_func_scsireq_enter"
-if test "x$ac_cv_func_scsireq_enter" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SCSIREQ_ENTER 1
-_ACEOF
-
-fi
-done
-
-
-if test "$ac_cv_header_scsi_sg_h" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sg_header.target_status in <scsi/sg.h>" >&5
-$as_echo_n "checking for sg_header.target_status in <scsi/sg.h>... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <sys/types.h>
-#include <scsi/sg.h>
-
-int
-main ()
-{
-
-struct sg_header hdr;
-hdr.target_status = 1;
-return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_SG_TARGET_STATUS 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-if test "$ac_cv_header_IOKit_scsi_SCSITaskLib_h" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SCSITaskSGElement in IOKit/scsi/SCSITaskLib.h" >&5
-$as_echo_n "checking for SCSITaskSGElement in IOKit/scsi/SCSITaskLib.h... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#undef VERSION
-#include <IOKit/scsi/SCSITaskLib.h>
-
-int
-main ()
-{
-
-SCSITaskSGElement range;
-return 0;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_SCSITASKSGELEMENT 1" >>confdefs.h
-
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-# Multiple platforms can set SCSI_LIBS so do substitution at end.
-
-
-# Check whether --enable-scsibuffersize was given.
-if test "${enable_scsibuffersize+set}" = set; then :
- enableval=$enable_scsibuffersize; set_scsibuffersize="$enableval"
-else
- set_scsibuffersize=131072
-fi
-
-
-cat >>confdefs.h <<_ACEOF
-#define SCSIBUFFERSIZE $set_scsibuffersize
-_ACEOF
-
-echo "scsi buffersize: $set_scsibuffersize"
-
-# Check whether --enable-scsi-directio was given.
-if test "${enable_scsi_directio+set}" = set; then :
- enableval=$enable_scsi_directio;
- if eval "test x$enable_scsi_directio = xyes"; then
- AM_CFLAGS="$AM_CFLAGS -DENABLE_SCSI_DIRECTIO"
- fi
-
-fi
-
-
-
-if test "$ac_cv_func_getnameinfo" = "yes" \
- && test "$ac_cv_func_getaddrinfo" = "yes" ; then
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6" >&5
-$as_echo_n "checking whether to enable IPv6... " >&6; }
- # Check whether --enable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then :
- enableval=$enable_ipv6; if test "$enableval" = "no" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, manually disabled" >&5
-$as_echo "no, manually disabled" >&6; }
- ipv6=no
- fi
-
-fi
-
-
- if test "$ipv6" != "no" ; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #define INET6
- #include <sys/types.h>
- #include <sys/socket.h>
-int
-main ()
-{
-
- /* AF_INET6 available check */
- if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
- exit(1);
- else
- exit(0);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define ENABLE_IPV6 1" >>confdefs.h
-
- ipv6=yes
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (couldn't compile test program)" >&5
-$as_echo "no (couldn't compile test program)" >&6; }
- ipv6=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
-
- if test "$ipv6" != "no" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct sockaddr_storage has an ss_family member" >&5
-$as_echo_n "checking whether struct sockaddr_storage has an ss_family member... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #define INET6
- #include <sys/types.h>
- #include <sys/socket.h>
-int
-main ()
-{
-
- /* test if the ss_family member exists in struct sockaddr_storage */
- struct sockaddr_storage ss;
- ss.ss_family = AF_INET;
- exit (0);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-$as_echo "#define HAS_SS_FAMILY 1" >>confdefs.h
-
-
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
- #define INET6
- #include <sys/types.h>
- #include <sys/socket.h>
-int
-main ()
-{
-
- /* test if the __ss_family member exists in struct sockaddr_storage */
- struct sockaddr_storage ss;
- ss.__ss_family = AF_INET;
- exit (0);
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, but __ss_family exists" >&5
-$as_echo "no, but __ss_family exists" >&6; }
-
-$as_echo "#define HAS___SS_FAMILY 1" >>confdefs.h
-
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- ipv6=no
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- fi
-
-else
- ipv6="no"
-fi
-
-# Check whether --enable-preload was given.
-if test "${enable_preload+set}" = set; then :
- enableval=$enable_preload; enable_preload=$enableval
-else
- enable_preload=auto
-fi
-
-
-case $host_os in
- cygwin* | mingw* | beos* | os2*)
- AM_LDFLAGS="$AM_LDFLAGS -no-undefined"
-esac
-
-
-
-# Check whether --with-lockdir was given.
-if test "${with_lockdir+set}" = set; then :
- withval=$with_lockdir; locksanedir=$withval
-else
- locksanedir=${localstatedir}/lock/sane
-fi
-
-
-
-configdir="${sysconfdir}/sane.d"
-
-
-
-AM_CPPFLAGS="${AM_CPPFLAGS} -DPATH_SANE_CONFIG_DIR=\$(configdir) \
- -DPATH_SANE_DATA_DIR=\$(datadir) \
- -DPATH_SANE_LOCK_DIR=\$(locksanedir) \
- -DV_MAJOR=${V_MAJOR} -DV_MINOR=${V_MINOR}"
-
-if test "${ac_cv_header_sys_socket_h}" = "no"; then
- echo "*** disabling saned (sys/socket.h not found)"
- SANED=
-else
- SANED=saned
-fi
- if test x$SANED = xsaned; then
- COMPILE_SANED_TRUE=
- COMPILE_SANED_FALSE='#'
-else
- COMPILE_SANED_TRUE='#'
- COMPILE_SANED_FALSE=
-fi
-
-
-
-# Check whether --enable-local-backends was given.
-if test "${enable_local_backends+set}" = set; then :
- enableval=$enable_local_backends;
-fi
-
-
-ALL_BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e \
- avision bh canon canon630u canon_dr canon_pp cardscan \
- coolscan coolscan2 coolscan3 dc25 dc210 dc240 \
- dell1600n_net dmc epjitsu epson epson2 epsonds fujitsu genesys \
- gphoto2 gt68xx hp hp3500 hp3900 hp4200 hp5400 \
- hp5590 hpsj5s hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx \
- kvs40xx leo lexmark ma1509 magicolor \
- matsushita microtek microtek2 mustek mustek_pp \
- mustek_usb mustek_usb2 nec net niash pie pieusb pint \
- pixma plustek plustek_pp qcam ricoh rts8891 s9036 \
- sceptre sharp sm3600 sm3840 snapscan sp15c st400 \
- stv680 tamarack teco1 teco2 teco3 test u12 umax
- umax_pp umax1220u v4l xerox_mfp p5"
-
-# If user specifies backends manually then cause configure
-# to fail if its detected it can't be compiled. If we
-# are in automatic mode then remove backend from list instead.
-user_selected_backends="yes"
-
-
-if eval "test x$enable_local_backends = xno"; then
- BACKENDS="net"
-else
- if test "${BACKENDS}" != "" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Manually selected backends: ${BACKENDS}" >&5
-$as_echo "$as_me: Manually selected backends: ${BACKENDS}" >&6;}
- else
- BACKENDS="$ALL_BACKENDS"
- user_selected_backends="no"
- fi
-fi
-
-
-if test "${user_selected_backends}" = "yes"; then
- DISABLE_MSG="aborting"
-else
- DISABLE_MSG="disabling"
-fi
-
-FILTERED_BACKENDS=""
-for be in ${BACKENDS}; do
- backend_supported="yes"
- case $be in
- plustek_pp)
- case "$host_os" in
- gnu*)
- echo "*** $be backend not supported on GNU/Hurd - $DISABLE_MSG"
- backend_supported="no"
- ;;
- esac
- ;;
-
- dc210|dc240)
- if test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires JPEG library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- canon_pp|hpsj5s)
- if test "${sane_cv_use_libieee1284}" != "yes"; then
- echo "*** $be backend requires libieee1284 library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- mustek_pp)
- if test "${sane_cv_use_libieee1284}" != "yes" && test "${enable_parport_directio}" != "yes"; then
- echo "*** $be backend requires libieee1284 or parport-directio libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- dell1600n_net)
- if test "${sane_cv_use_libjpeg}" != "yes" || test "${sane_cv_use_libtiff}" != "yes"; then
- echo "*** $be backend requires JPEG and TIFF library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- epsonds)
- if test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires JPEG library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- gphoto2)
- if test "${HAVE_GPHOTO2}" != "true" \
- || test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires gphoto2 and JPEG libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- pint)
- if test "${ac_cv_header_sys_scanio_h}" = "no"; then
- echo "*** $be backend requires sys/scanio.h - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- qcam)
- if ( test "${ac_cv_func_ioperm}" = "no" || test "${sane_cv_have_sys_io_h_with_inb_outb}" = "no" )\
- && test "${ac_cv_func__portaccess}" = "no"; then
- echo "*** $be backend requires (ioperm, inb and outb) or portaccess functions - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- v4l)
- if test "${have_linux_ioctl_defines}" != "yes" \
- || test "${have_libv4l1}" != "yes"; then
- echo "*** $be backend requires v4l libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- net)
- if test "${ac_cv_header_sys_socket_h}" = "no"; then
- echo "*** $be backend requires sys/socket.h - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- mustek_usb2|kvs40xx)
- if test "${have_pthread}" != "yes"; then
- echo "*** $be backend requires pthread library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
- esac
- if test "${backend_supported}" = "no"; then
- if test "${user_selected_backends}" = "yes"; then
- exit 1
- fi
- else
- FILTERED_BACKENDS="${FILTERED_BACKENDS} $be"
- fi
-done
-
-
-if test "${sane_cv_use_libjpeg}" = "yes"; then
- SANEI_SANEI_JPEG_LO="../sanei/sanei_jpeg.lo"
-fi
- if test x$sane_cv_use_libjpeg = xyes; then
- HAVE_JPEG_TRUE=
- HAVE_JPEG_FALSE='#'
-else
- HAVE_JPEG_TRUE='#'
- HAVE_JPEG_FALSE=
-fi
-
-
-
-# Check whether --enable-pnm-backend was given.
-if test "${enable_pnm_backend+set}" = set; then :
- enableval=$enable_pnm_backend; FILTERED_BACKENDS="${FILTERED_BACKENDS} pnm"
-else
- echo "*** pnm backend not manually selected - disabling"
-fi
-
-
-BACKENDS="$FILTERED_BACKENDS"
-BACKEND_LIBS_ENABLED=""
-BACKEND_CONFS_ENABLED=""
-BACKEND_MANS_ENABLED=""
-for backend in ${BACKENDS} ; do
- BACKEND_LIBS_ENABLED="${BACKEND_LIBS_ENABLED} libsane-${backend}.la"
- BACKEND_CONFS_ENABLED="${BACKEND_CONFS_ENABLED} ${backend}.conf"
- BACKEND_MANS_ENABLED="${BACKEND_MANS_ENABLED} sane-${backend}.5"
- if test x$backend = xumax_pp; then
- install_umax_pp_tools=yes
- fi
-done
-
- if test xyes = x$install_umax_pp_tools; then
- INSTALL_UMAX_PP_TOOLS_TRUE=
- INSTALL_UMAX_PP_TOOLS_FALSE='#'
-else
- INSTALL_UMAX_PP_TOOLS_TRUE='#'
- INSTALL_UMAX_PP_TOOLS_FALSE=
-fi
-
-
-
-if test "${enable_preload}" = "auto"; then
- if test "${enable_shared}" = "no" || test "${enable_dynamic}" != "yes"; then
- enable_preload=yes
- fi
-fi
-if test "${enable_preload}" = "yes"; then
- echo "preloading backends into DLL"
-
- # If user specifies backends manually then cause configure
- # to fail if its detected it can't be compiled. If we
- # are in automatic mode then remove backend from list instead.
- user_selected_backends="yes"
-
- if eval "test x$enable_local_backends = xno"; then
- PRELOADABLE_BACKENDS="net"
- else
- if test "${PRELOADABLE_BACKENDS}" != "" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Manually selected preloadable backends: ${PRELOADABLE_BACKENDS}" >&5
-$as_echo "$as_me: Manually selected preloadable backends: ${PRELOADABLE_BACKENDS}" >&6;}
- else
- PRELOADABLE_BACKENDS="$BACKENDS"
- user_selected_backends="no"
- fi
- fi
-
- saved_BACKENDS="$BACKENDS"
- BACKENDS="${PRELOADABLE_BACKENDS}"
-
-
-if test "${user_selected_backends}" = "yes"; then
- DISABLE_MSG="aborting"
-else
- DISABLE_MSG="disabling"
-fi
-
-FILTERED_BACKENDS=""
-for be in ${BACKENDS}; do
- backend_supported="yes"
- case $be in
- plustek_pp)
- case "$host_os" in
- gnu*)
- echo "*** $be backend not supported on GNU/Hurd - $DISABLE_MSG"
- backend_supported="no"
- ;;
- esac
- ;;
-
- dc210|dc240)
- if test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires JPEG library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- canon_pp|hpsj5s)
- if test "${sane_cv_use_libieee1284}" != "yes"; then
- echo "*** $be backend requires libieee1284 library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- mustek_pp)
- if test "${sane_cv_use_libieee1284}" != "yes" && test "${enable_parport_directio}" != "yes"; then
- echo "*** $be backend requires libieee1284 or parport-directio libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- dell1600n_net)
- if test "${sane_cv_use_libjpeg}" != "yes" || test "${sane_cv_use_libtiff}" != "yes"; then
- echo "*** $be backend requires JPEG and TIFF library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- epsonds)
- if test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires JPEG library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- gphoto2)
- if test "${HAVE_GPHOTO2}" != "true" \
- || test "${sane_cv_use_libjpeg}" != "yes"; then
- echo "*** $be backend requires gphoto2 and JPEG libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- pint)
- if test "${ac_cv_header_sys_scanio_h}" = "no"; then
- echo "*** $be backend requires sys/scanio.h - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- qcam)
- if ( test "${ac_cv_func_ioperm}" = "no" || test "${sane_cv_have_sys_io_h_with_inb_outb}" = "no" )\
- && test "${ac_cv_func__portaccess}" = "no"; then
- echo "*** $be backend requires (ioperm, inb and outb) or portaccess functions - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- v4l)
- if test "${have_linux_ioctl_defines}" != "yes" \
- || test "${have_libv4l1}" != "yes"; then
- echo "*** $be backend requires v4l libraries - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- net)
- if test "${ac_cv_header_sys_socket_h}" = "no"; then
- echo "*** $be backend requires sys/socket.h - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
-
- mustek_usb2|kvs40xx)
- if test "${have_pthread}" != "yes"; then
- echo "*** $be backend requires pthread library - $DISABLE_MSG"
- backend_supported="no"
- fi
- ;;
- esac
- if test "${backend_supported}" = "no"; then
- if test "${user_selected_backends}" = "yes"; then
- exit 1
- fi
- else
- FILTERED_BACKENDS="${FILTERED_BACKENDS} $be"
- fi
-done
-
-
- PRELOADABLE_BACKENDS="$FILTERED_BACKENDS"
- BACKENDS="$saved_BACKENDS"
-else
- PRELOADABLE_BACKENDS=""
-fi
-PRELOADABLE_BACKENDS_ENABLED=""
-# Do not initialize BACKEND_CONFS_ENABLED so that its a combination
-# of all backends.
-for backend in ${PRELOADABLE_BACKENDS} ; do
- BACKEND_CONFS_ENABLED="${BACKEND_CONFS_ENABLED} ${backend}.conf"
- BACKEND_MANS_ENABLED="${BACKEND_MANS_ENABLED} sane-${backend}.5"
- # Special hacks. Normally, we create a convenience library that
- # matches the backend's name but in some cases that will conflict
- # with an external library name that also matches backend name.
- # Work around that here by renaming internal library.
- if test "${backend}" = "gphoto2"; then
- backend=gphoto2_i
- fi
- PRELOADABLE_BACKENDS_ENABLED="${PRELOADABLE_BACKENDS_ENABLED} lib${backend}.la"
-done
-
-
-
-
-
-
-case $host_os in
- beos*)
- libdir='${exec_prefix}/add-ons'
- ;;
-esac
-
-# Check whether --enable-parport-directio was given.
-if test "${enable_parport_directio+set}" = set; then :
- enableval=$enable_parport_directio;
- if eval "test x$enable_parport_directio = xyes"; then
- AM_CFLAGS="$AM_CFLAGS -DENABLE_PARPORT_DIRECTIO"
- fi
-
-fi
-
-
-
-# Check whether --with-api-spec was given.
-if test "${with_api_spec+set}" = set; then :
- withval=$with_api_spec;
-else
- with_api_spec=check
-fi
-
-# Extract the first word of "makeindex", so it can be a program name with args.
-set dummy makeindex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MAKEINDEX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $MAKEINDEX in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_MAKEINDEX="$MAKEINDEX" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MAKEINDEX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_MAKEINDEX" && ac_cv_path_MAKEINDEX="no"
- ;;
-esac
-fi
-MAKEINDEX=$ac_cv_path_MAKEINDEX
-if test -n "$MAKEINDEX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKEINDEX" >&5
-$as_echo "$MAKEINDEX" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "dvips", so it can be a program name with args.
-set dummy dvips; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DVIPS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $DVIPS in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_DVIPS="$DVIPS" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DVIPS="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_DVIPS" && ac_cv_path_DVIPS="no"
- ;;
-esac
-fi
-DVIPS=$ac_cv_path_DVIPS
-if test -n "$DVIPS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DVIPS" >&5
-$as_echo "$DVIPS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "latex", so it can be a program name with args.
-set dummy latex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LATEX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $LATEX in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_LATEX="$LATEX" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LATEX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_LATEX" && ac_cv_path_LATEX="no"
- ;;
-esac
-fi
-LATEX=$ac_cv_path_LATEX
-if test -n "$LATEX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LATEX" >&5
-$as_echo "$LATEX" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "pdflatex", so it can be a program name with args.
-set dummy pdflatex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PDFLATEX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PDFLATEX in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PDFLATEX="$PDFLATEX" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PDFLATEX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_PDFLATEX" && ac_cv_path_PDFLATEX="no"
- ;;
-esac
-fi
-PDFLATEX=$ac_cv_path_PDFLATEX
-if test -n "$PDFLATEX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PDFLATEX" >&5
-$as_echo "$PDFLATEX" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "fig2dev", so it can be a program name with args.
-set dummy fig2dev; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_FIG2DEV+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $FIG2DEV in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_FIG2DEV="$FIG2DEV" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_FIG2DEV="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_FIG2DEV" && ac_cv_path_FIG2DEV="no"
- ;;
-esac
-fi
-FIG2DEV=$ac_cv_path_FIG2DEV
-if test -n "$FIG2DEV"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIG2DEV" >&5
-$as_echo "$FIG2DEV" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "gs", so it can be a program name with args.
-set dummy gs; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $GS in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_GS="$GS" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_GS" && ac_cv_path_GS="no"
- ;;
-esac
-fi
-GS=$ac_cv_path_GS
-if test -n "$GS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GS" >&5
-$as_echo "$GS" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "dlh", so it can be a program name with args.
-set dummy dlh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_DLH+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $DLH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_DLH="$DLH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_DLH="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_DLH" && ac_cv_path_DLH="no"
- ;;
-esac
-fi
-DLH=$ac_cv_path_DLH
-if test -n "$DLH"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLH" >&5
-$as_echo "$DLH" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-# Extract the first word of "ppmtogif", so it can be a program name with args.
-set dummy ppmtogif; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PPMTOGIF+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PPMTOGIF in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PPMTOGIF="$PPMTOGIF" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PPMTOGIF="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
- test -z "$ac_cv_path_PPMTOGIF" && ac_cv_path_PPMTOGIF="no"
- ;;
-esac
-fi
-PPMTOGIF=$ac_cv_path_PPMTOGIF
-if test -n "$PPMTOGIF"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PPMTOGIF" >&5
-$as_echo "$PPMTOGIF" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-if test xno != "x$with_api_spec"; then :
- if test xno != "x$MAKEINDEX" \
- && test xno != "x$DVIPS" \
- && test xno != "x$FIG2DEV" \
- && test xno != "x$LATEX"; then :
- with_api_ps=yes
-fi
- if test xno != "x$MAKEINDEX" \
- && test xno != "x$PDFLATEX" \
- && test xno != "x$FIG2DEV" \
- && test xno != "x$GS"; then :
- with_api_pdf=yes
-fi
- if test xno != "x$MAKEINDEX" \
- && test xno != "x$DVIPS" \
- && test xno != "x$FIG2DEV" \
- && test xno != "x$DLH" \
- && test xno != "x$GS" \
- && test xno != "x$PPMTOFIG" ; then :
- with_api_html=yes
-fi
-
- if test xyes = "x$with_api_spec" \
- && test xyes != "x$with_api_ps" \
- && test xyes != "x$with_api_pdf" \
- && test xyes != "x$with_api_html"; then :
- as_fn_error $? "tools to convert the API spec are missing" "$LINENO" 5
-
-fi
-
-fi
- if test x$with_api_ps = xyes; then
- WITH_API_PS_TRUE=
- WITH_API_PS_FALSE='#'
-else
- WITH_API_PS_TRUE='#'
- WITH_API_PS_FALSE=
-fi
-
- if test x$with_api_pdf = xyes; then
- WITH_API_PDF_TRUE=
- WITH_API_PDF_FALSE='#'
-else
- WITH_API_PDF_TRUE='#'
- WITH_API_PDF_FALSE=
-fi
-
- if test x$with_api_html = xyes; then
- WITH_API_HTML_TRUE=
- WITH_API_HTML_FALSE='#'
-else
- WITH_API_HTML_TRUE='#'
- WITH_API_HTML_FALSE=
-fi
-
-
-
-
-
-
-
-ac_config_files="$ac_config_files Makefile lib/Makefile sanei/Makefile frontend/Makefile japi/Makefile backend/Makefile include/Makefile doc/Makefile po/Makefile.in testsuite/Makefile testsuite/sanei/Makefile testsuite/tools/Makefile tools/Makefile doc/doxygen-sanei.conf doc/doxygen-genesys.conf"
-
-ac_config_files="$ac_config_files tools/sane-config"
-
-ac_config_files="$ac_config_files tools/sane-backends.pc"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems. If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
- for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
- eval ac_val=\$$ac_var
- case $ac_val in #(
- *${as_nl}*)
- case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
- esac
- case $ac_var in #(
- _ | IFS | as_nl) ;; #(
- BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
- *) { eval $ac_var=; unset $ac_var;} ;;
- esac ;;
- esac
- done
-
- (set) 2>&1 |
- case $as_nl`(ac_space=' '; set) 2>&1` in #(
- *${as_nl}ac_space=\ *)
- # `set' does not quote correctly, so add quotes: double-quote
- # substitution turns \\\\ into \\, and sed turns \\ into \.
- sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
- ;; #(
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
- ;;
- esac |
- sort
-) |
- sed '
- /^ac_cv_env_/b end
- t clear
- :clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
- t end
- s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
- :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
- if test -w "$cache_file"; then
- if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
- if test ! -f "$cache_file" || test -h "$cache_file"; then
- cat confcache >"$cache_file"
- else
- case $cache_file in #(
- */* | ?:*)
- mv -f confcache "$cache_file"$$ &&
- mv -f "$cache_file"$$ "$cache_file" ;; #(
- *)
- mv -f confcache "$cache_file" ;;
- esac
- fi
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
- fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
- # 1. Remove the extension, and $U if already installed.
- ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
- # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
- # will be set to the directory where LIBOBJS objects are built.
- as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
- as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
- if test -n "$am_sleep_pid"; then
- # Hide warnings about reused PIDs.
- wait $am_sleep_pid 2>/dev/null
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
- if test -n "$EXEEXT"; then
- am__EXEEXT_TRUE=
- am__EXEEXT_FALSE='#'
-else
- am__EXEEXT_TRUE='#'
- am__EXEEXT_FALSE=
-fi
-
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
- as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
- as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
- as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${CROSS_COMPILING_TRUE}" && test -z "${CROSS_COMPILING_FALSE}"; then
- as_fn_error $? "conditional \"CROSS_COMPILING\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-
-if test -z "${have_usblib_TRUE}" && test -z "${have_usblib_FALSE}"; then
- as_fn_error $? "conditional \"have_usblib\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${COMPILE_SANED_TRUE}" && test -z "${COMPILE_SANED_FALSE}"; then
- as_fn_error $? "conditional \"COMPILE_SANED\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${HAVE_JPEG_TRUE}" && test -z "${HAVE_JPEG_FALSE}"; then
- as_fn_error $? "conditional \"HAVE_JPEG\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${INSTALL_UMAX_PP_TOOLS_TRUE}" && test -z "${INSTALL_UMAX_PP_TOOLS_FALSE}"; then
- as_fn_error $? "conditional \"INSTALL_UMAX_PP_TOOLS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_API_PS_TRUE}" && test -z "${WITH_API_PS_FALSE}"; then
- as_fn_error $? "conditional \"WITH_API_PS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_API_PDF_TRUE}" && test -z "${WITH_API_PDF_FALSE}"; then
- as_fn_error $? "conditional \"WITH_API_PDF\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${WITH_API_HTML_TRUE}" && test -z "${WITH_API_HTML_FALSE}"; then
- as_fn_error $? "conditional \"WITH_API_HTML\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
- emulate sh
- NULLCMD=:
- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in #(
- *posix*) :
- set -o posix ;; #(
- *) :
- ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- PATH_SEPARATOR=:
- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
- PATH_SEPARATOR=';'
- }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
-# Find who we are. Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
- *[\\/]* ) as_myself=$0 ;;
- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
- done
-IFS=$as_save_IFS
-
- ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
- as_myself=$0
-fi
-if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
- exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
- as_status=$1; test $as_status -eq 0 && as_status=1
- if test "$4"; then
- as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
- fi
- $as_echo "$as_me: error: $2" >&2
- as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
- { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
- eval 'as_fn_append ()
- {
- eval $1+=\$2
- }'
-else
- as_fn_append ()
- {
- eval $1=\$$1\$2
- }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
- eval 'as_fn_arith ()
- {
- as_val=$(( $* ))
- }'
-else
- as_fn_arith ()
- {
- as_val=`expr "$@" || test $? -eq 1`
- }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
- as_dirname=dirname
-else
- as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
- case `echo 'xy\c'` in
- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
- xy) ECHO_C='\c';;
- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
- ECHO_T=' ';;
- esac;;
-*)
- ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
- rm -f conf$$.dir/conf$$.file
-else
- rm -f conf$$.dir
- mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
- if ln -s conf$$.file conf$$ 2>/dev/null; then
- as_ln_s='ln -s'
- # ... but there are two gotchas:
- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
- elif ln conf$$.file conf$$ 2>/dev/null; then
- as_ln_s=ln
- else
- as_ln_s='cp -pR'
- fi
-else
- as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
- case $as_dir in #(
- -*) as_dir=./$as_dir;;
- esac
- test -d "$as_dir" || eval $as_mkdir_p || {
- as_dirs=
- while :; do
- case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
- *) as_qdir=$as_dir;;
- esac
- as_dirs="'$as_qdir' $as_dirs"
- as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- test -d "$as_dir" && break
- done
- test -z "$as_dirs" || eval "mkdir $as_dirs"
- } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
- as_mkdir_p='mkdir -p "$as_dir"'
-else
- test -d ./-p && rmdir ./-p
- as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by sane-backends $as_me 1.0.27, which was
-generated by GNU Autoconf 2.69. Invocation command line was
-
- CONFIG_FILES = $CONFIG_FILES
- CONFIG_HEADERS = $CONFIG_HEADERS
- CONFIG_LINKS = $CONFIG_LINKS
- CONFIG_COMMANDS = $CONFIG_COMMANDS
- $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-config_commands="$ac_config_commands"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration. Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
- -h, --help print this help, then exit
- -V, --version print version number and configuration settings, then exit
- --config print configuration, then exit
- -q, --quiet, --silent
- do not print progress messages
- -d, --debug don't remove temporary files
- --recheck update $as_me by reconfiguring in the same conditions
- --file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
- --header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Configuration commands:
-$config_commands
-
-Report bugs to <sane-devel@lists.alioth.debian.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-sane-backends config.status 1.0.27
-configured by $0, generated by GNU Autoconf 2.69,
- with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-INSTALL='$INSTALL'
-MKDIR_P='$MKDIR_P'
-AWK='$AWK'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
- case $1 in
- --*=?*)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
- ac_shift=:
- ;;
- --*=)
- ac_option=`expr "X$1" : 'X\([^=]*\)='`
- ac_optarg=
- ac_shift=:
- ;;
- *)
- ac_option=$1
- ac_optarg=$2
- ac_shift=shift
- ;;
- esac
-
- case $ac_option in
- # Handling of the options.
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- ac_cs_recheck=: ;;
- --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
- --config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
- --debug | --debu | --deb | --de | --d | -d )
- debug=: ;;
- --file | --fil | --fi | --f )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- '') as_fn_error $? "missing file argument" ;;
- esac
- as_fn_append CONFIG_FILES " '$ac_optarg'"
- ac_need_defaults=false;;
- --header | --heade | --head | --hea )
- $ac_shift
- case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
- esac
- as_fn_append CONFIG_HEADERS " '$ac_optarg'"
- ac_need_defaults=false;;
- --he | --h)
- # Conflict between --help and --header
- as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
- --help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil | --si | --s)
- ac_cs_silent=: ;;
-
- # This is an error.
- -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
- *) as_fn_append ac_config_targets " $1"
- ac_need_defaults=false ;;
-
- esac
- shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
- exec 6>/dev/null
- ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
- shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
- CONFIG_SHELL='$SHELL'
- export CONFIG_SHELL
- exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
- echo
- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
- $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-#
-# INIT-COMMANDS
-#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
-SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
-ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
-PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
-host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
-host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
-host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
-hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib; do
- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
- *[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
- *[\\\\\\\`\\"\\\$]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-
- PACKAGE='$PACKAGE'
- VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
- RM='$RM'
- ofile='$ofile'
-
-
-
-# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake < 1.5.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
-
-# variables for create stdint.h replacement
-PACKAGE="$PACKAGE"
-VERSION="$VERSION"
-ac_stdint_h="$ac_stdint_h"
-_ac_stdint_h=`$as_echo "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp`
-ac_cv_stdint_message="$ac_cv_stdint_message"
-ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
-ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
-ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
-ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
-ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
-ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
-ac_cv_char_data_model="$ac_cv_char_data_model"
-ac_cv_long_data_model="$ac_cv_long_data_model"
-ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
-ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
-ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
-
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
- case $ac_config_target in
- "include/sane/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/sane/config.h" ;;
- "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
- "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
- "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
- "$ac_stdint_h") CONFIG_COMMANDS="$CONFIG_COMMANDS $ac_stdint_h" ;;
- "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
- "sanei/Makefile") CONFIG_FILES="$CONFIG_FILES sanei/Makefile" ;;
- "frontend/Makefile") CONFIG_FILES="$CONFIG_FILES frontend/Makefile" ;;
- "japi/Makefile") CONFIG_FILES="$CONFIG_FILES japi/Makefile" ;;
- "backend/Makefile") CONFIG_FILES="$CONFIG_FILES backend/Makefile" ;;
- "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
- "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
- "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
- "testsuite/sanei/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/sanei/Makefile" ;;
- "testsuite/tools/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/tools/Makefile" ;;
- "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
- "doc/doxygen-sanei.conf") CONFIG_FILES="$CONFIG_FILES doc/doxygen-sanei.conf" ;;
- "doc/doxygen-genesys.conf") CONFIG_FILES="$CONFIG_FILES doc/doxygen-genesys.conf" ;;
- "tools/sane-config") CONFIG_FILES="$CONFIG_FILES tools/sane-config" ;;
- "tools/sane-backends.pc") CONFIG_FILES="$CONFIG_FILES tools/sane-backends.pc" ;;
-
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
- esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used. Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
-fi
-
-# Have a temporary directory for convenience. Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
- tmp= ac_tmp=
- trap 'exit_status=$?
- : "${ac_tmp:=$tmp}"
- { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
- trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
- tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -d "$tmp"
-} ||
-{
- tmp=./conf$$-$RANDOM
- (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
- eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
- ac_cs_awk_cr='\\r'
-else
- ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
- echo "cat >conf$$subs.awk <<_ACEOF" &&
- echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
- echo "_ACEOF"
-} >conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
- . ./conf$$subs.sh ||
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
- ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
- if test $ac_delim_n = $ac_delim_num; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
- N
- s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
- for (key in S) S_is_set[key] = 1
- FS = ""
-
-}
-{
- line = $ 0
- nfields = split(line, field, "@")
- substed = 0
- len = length(field[1])
- for (i = 2; i < nfields; i++) {
- key = field[i]
- keylen = length(key)
- if (S_is_set[key]) {
- value = S[key]
- line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
- len += length(value) + length(field[++i])
- substed = 1
- } else
- len += 1 + keylen
- }
-
- print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
- sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
- cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
- || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
-h
-s///
-s/^/:/
-s/[ ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[ ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[ ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
- ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_tt"; then
- break
- elif $ac_last_try; then
- as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
- else
- ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
- fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any. Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[ ]*#[ ]*define[ ][ ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- for (key in D) D_is_set[key] = 1
- FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
- line = \$ 0
- split(line, arg, " ")
- if (arg[1] == "#") {
- defundef = arg[2]
- mac1 = arg[3]
- } else {
- defundef = substr(arg[1], 2)
- mac1 = arg[2]
- }
- split(mac1, mac2, "(") #)
- macro = mac2[1]
- prefix = substr(line, 1, index(line, defundef) - 1)
- if (D_is_set[macro]) {
- # Preserve the white space surrounding the "#".
- print prefix "define", macro P[macro] D[macro]
- next
- } else {
- # Replace #undef with comments. This is necessary, for example,
- # in the case of _POSIX_SOURCE, which is predefined and required
- # on some systems where configure will not decide to define it.
- if (defundef == "undef") {
- print "/*", prefix defundef, macro, "*/"
- next
- }
- }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
- as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
-shift
-for ac_tag
-do
- case $ac_tag in
- :[FHLC]) ac_mode=$ac_tag; continue;;
- esac
- case $ac_mode$ac_tag in
- :[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
- :[FH]-) ac_tag=-:-;;
- :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
- esac
- ac_save_IFS=$IFS
- IFS=:
- set x $ac_tag
- IFS=$ac_save_IFS
- shift
- ac_file=$1
- shift
-
- case $ac_mode in
- :L) ac_source=$1;;
- :[FH])
- ac_file_inputs=
- for ac_f
- do
- case $ac_f in
- -) ac_f="$ac_tmp/stdin";;
- *) # Look for the file first in the build tree, then in the source tree
- # (if the path is not absolute). The absolute path cannot be DOS-style,
- # because $ac_f cannot contain `:'.
- test -f "$ac_f" ||
- case $ac_f in
- [\\/$]*) false;;
- *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
- esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
- esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
- as_fn_append ac_file_inputs " '$ac_f'"
- done
-
- # Let's still pretend it is `configure' which instantiates (i.e., don't
- # use $as_me), people would be surprised to read:
- # /* config.h. Generated by config.status. */
- configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
- `' by configure.'
- if test x"$ac_file" != x-; then
- configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
- fi
- # Neutralize special characters interpreted by sed in replacement strings.
- case $configure_input in #(
- *\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
- sed 's/[\\\\&|]/\\\\&/g'`;; #(
- *) ac_sed_conf_input=$configure_input;;
- esac
-
- case $ac_tag in
- *:-:* | *:-) cat >"$ac_tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
- esac
- ;;
- esac
-
- ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
- # A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
- case $ac_top_builddir_sub in
- "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
- *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
- esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
- .) # We are building in place.
- ac_srcdir=.
- ac_top_srcdir=$ac_top_builddir_sub
- ac_abs_top_srcdir=$ac_pwd ;;
- [\\/]* | ?:[\\/]* ) # Absolute name.
- ac_srcdir=$srcdir$ac_dir_suffix;
- ac_top_srcdir=$srcdir
- ac_abs_top_srcdir=$srcdir ;;
- *) # Relative name.
- ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
- ac_top_srcdir=$ac_top_build_prefix$srcdir
- ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
- case $ac_mode in
- :F)
- #
- # CONFIG_FILE
- #
-
- case $INSTALL in
- [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
- *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
- esac
- ac_MKDIR_P=$MKDIR_P
- case $MKDIR_P in
- [\\/$]* | ?:[\\/]* ) ;;
- */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
- esac
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
- p
- q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
- ac_datarootdir_hack='
- s&@datadir@&$datadir&g
- s&@docdir@&$docdir&g
- s&@infodir@&$infodir&g
- s&@localedir@&$localedir&g
- s&@mandir@&$mandir&g
- s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-s&@INSTALL@&$ac_INSTALL&;t t
-s&@MKDIR_P@&$ac_MKDIR_P&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
- >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
- "$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined. Please make sure it is defined" >&2;}
-
- rm -f "$ac_tmp/stdin"
- case $ac_file in
- -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
- *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
- esac \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
- :H)
- #
- # CONFIG_HEADER
- #
- if test x"$ac_file" != x-; then
- {
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
- } >"$ac_tmp/config.h" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
- else
- rm -f "$ac_file"
- mv "$ac_tmp/config.h" "$ac_file" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- fi
- else
- $as_echo "/* $configure_input */" \
- && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
- || as_fn_error $? "could not create -" "$LINENO" 5
- fi
-# Compute "$ac_file"'s index in $config_headers.
-_am_arg="$ac_file"
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $_am_arg | $_am_arg:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
-$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$_am_arg" : 'X\(//\)[^/]' \| \
- X"$_am_arg" : 'X\(//\)$' \| \
- X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`/stamp-h$_am_stamp_count
- ;;
-
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
- ;;
- esac
-
-
- case $ac_file$ac_mode in
- "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
- # Older Autoconf quotes --file arguments for eval, but not when files
- # are listed without --file. Let's play safe and only enable the eval
- # if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
- shift
- for mf
- do
- # Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
- # limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir=$dirpart/$fdir; as_fn_mkdir_p
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
- done
-}
- ;;
- "libtool":C)
-
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
- fi
-
- cfgfile="${ofile}T"
- trap "$RM \"$cfgfile\"; exit 1" 1 2 15
- $RM "$cfgfile"
-
- cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-# The names of the tagged configurations supported by this script.
-available_tags=""
-
-# ### BEGIN LIBTOOL CONFIG
-
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Assembler program.
-AS=$lt_AS
-
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# What type of objects to build.
-pic_mode=$pic_mode
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# An echo program that protects backslashes.
-ECHO=$lt_ECHO
-
-# The PATH separator for the build system.
-PATH_SEPARATOR=$lt_PATH_SEPARATOR
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
-
-# A grep program that handles long lines.
-GREP=$lt_GREP
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# A literal string matcher.
-FGREP=$lt_FGREP
-
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
-
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
-
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
-
-# Object file suffix (normally "o").
-objext=$ac_objext
-
-# Executable file suffix (normally "").
-exeext=$exeext
-
-# whether the shell understands "unset".
-lt_unset=$lt_unset
-
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
-
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
-
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
-
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
-
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
-
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
-
-# The archiver.
-AR=$lt_AR
-
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
-
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
-
-# A symbol stripping program.
-STRIP=$lt_STRIP
-
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
-
-# A C compiler.
-LTCC=$lt_CC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
-
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
-
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
-
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
-
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
-
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
-
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
-
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
-
-# Old archive suffix (normally "a").
-libext=$libext
-
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
-
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Library versioning type.
-version_type=$version_type
-
-# Shared library runtime path variable.
-runpath_var=$runpath_var
-
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names. First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
-
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
-
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
-
-# A language specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
-
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
-
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
-
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
-
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
-
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
- case $host_os in
- aix3*)
- cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-_LT_EOF
- ;;
- esac
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- sed '$q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- if test x"$xsi_shell" = xyes; then
- sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\ case ${1} in\
-\ */*) func_dirname_result="${1%/*}${2}" ;;\
-\ * ) func_dirname_result="${3}" ;;\
-\ esac\
-\ func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\ # positional parameters, so assign one to ordinary parameter first.\
-\ func_stripname_result=${3}\
-\ func_stripname_result=${func_stripname_result#"${1}"}\
-\ func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\ func_split_long_opt_name=${1%%=*}\
-\ func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\ func_split_short_opt_arg=${1#??}\
-\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\ case ${1} in\
-\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\ *) func_lo2o_result=${1} ;;\
-\ esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
- func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
- func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
- func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
- sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
- eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\ func_quote_for_eval "${2}"\
-\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
- mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-
- ;;
- "po-directories":C)
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- # Treat a directory as a PO directory if and only if it has a
- # POTFILES.in file. This allows packages to have multiple PO
- # directories under different names or in different locations.
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done ;;
- "$ac_stdint_h":C)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_stdint_h : $_ac_stdint_h" >&5
-$as_echo "$as_me: creating $ac_stdint_h : $_ac_stdint_h" >&6;}
-ac_stdint=$tmp/_stdint.h
-
-echo "#ifndef" $_ac_stdint_h >$ac_stdint
-echo "#define" $_ac_stdint_h "1" >>$ac_stdint
-echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
-echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
-echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_t" != "_" ; then
-echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
-echo "#include <stdint.h>" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-else
-
-cat >>$ac_stdint <<STDINT_EOF
-
-/* ................... shortcircuit part ........................... */
-
-#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
-#include <stdint.h>
-#else
-#include <stddef.h>
-
-/* .................... configured part ............................ */
-
-STDINT_EOF
-
-echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_x" != "_" ; then
- ac_header="$ac_cv_header_stdint_x"
- echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
-fi
-
-echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_o" != "_" ; then
- ac_header="$ac_cv_header_stdint_o"
- echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
-fi
-
-echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_u" != "_" ; then
- ac_header="$ac_cv_header_stdint_u"
- echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
-fi
-
-echo "" >>$ac_stdint
-
-if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
- echo "#include <$ac_header>" >>$ac_stdint
- echo "" >>$ac_stdint
-fi fi
-
-echo "/* which 64bit typedef has been found */" >>$ac_stdint
-if test "$ac_cv_type_uint64_t" = "yes" ; then
-echo "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
-fi
-if test "$ac_cv_type_u_int64_t" = "yes" ; then
-echo "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* which type model has been detected */" >>$ac_stdint
-if test "_$ac_cv_char_data_model" != "_" ; then
-echo "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
-echo "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
-else
-echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
-echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* whether int_least types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_least32_t" = "yes"; then
-echo "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
-fi
-echo "/* whether int_fast types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_fast32_t" = "yes"; then
-echo "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
-fi
-echo "/* whether intmax_t type was detected */" >>$ac_stdint
-if test "$ac_cv_type_intmax_t" = "yes"; then
-echo "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
- cat >>$ac_stdint <<STDINT_EOF
-/* .................... detections part ............................ */
-
-/* whether we need to define bitspecific types from compiler base types */
-#ifndef _STDINT_HEADER_INTPTR
-#ifndef _STDINT_HEADER_UINT32
-#ifndef _STDINT_HEADER_U_INT32
-#define _STDINT_NEED_INT_MODEL_T
-#else
-#define _STDINT_HAVE_U_INT_TYPES
-#endif
-#endif
-#endif
-
-#ifdef _STDINT_HAVE_U_INT_TYPES
-#undef _STDINT_NEED_INT_MODEL_T
-#endif
-
-#ifdef _STDINT_CHAR_MODEL
-#if _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
-#ifndef _STDINT_BYTE_MODEL
-#define _STDINT_BYTE_MODEL 12
-#endif
-#endif
-#endif
-
-#ifndef _STDINT_HAVE_INT_LEAST32_T
-#define _STDINT_NEED_INT_LEAST_T
-#endif
-
-#ifndef _STDINT_HAVE_INT_FAST32_T
-#define _STDINT_NEED_INT_FAST_T
-#endif
-
-#ifndef _STDINT_HEADER_INTPTR
-#define _STDINT_NEED_INTPTR_T
-#ifndef _STDINT_HAVE_INTMAX_T
-#define _STDINT_NEED_INTMAX_T
-#endif
-#endif
-
-
-/* .................... definition part ............................ */
-
-/* some system headers have good uint64_t */
-#ifndef _HAVE_UINT64_T
-#if defined _STDINT_HAVE_UINT64_T || defined HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#elif defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
-#define _HAVE_UINT64_T
-typedef u_int64_t uint64_t;
-#endif
-#endif
-
-#ifndef _HAVE_UINT64_T
-/* .. here are some common heuristics using compiler runtime specifics */
-#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-
-#elif !defined __STRICT_ANSI__
-#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
-#define _HAVE_UINT64_T
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
-/* note: all ELF-systems seem to have loff-support which needs 64-bit */
-#if !defined _NO_LONGLONG
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-#endif
-
-#elif defined __alpha || (defined __mips && defined _ABIN32)
-#if !defined _NO_LONGLONG
-typedef long int64_t;
-typedef unsigned long uint64_t;
-#endif
- /* compiler/cpu type to define int64_t */
-#endif
-#endif
-#endif
-
-#if defined _STDINT_HAVE_U_INT_TYPES
-/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
-typedef u_int8_t uint8_t;
-typedef u_int16_t uint16_t;
-typedef u_int32_t uint32_t;
-
-/* glibc compatibility */
-#ifndef __int8_t_defined
-#define __int8_t_defined
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INT_MODEL_T
-/* we must guess all the basic types. Apart from byte-adressable system, */
-/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
-/* (btw, those nibble-addressable systems are way off, or so we assume) */
-
-
-#if defined _STDINT_BYTE_MODEL
-#if _STDINT_LONG_MODEL+0 == 242
-/* 2:4:2 = IP16 = a normal 16-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned long uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef long int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
-/* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */
-/* 4:4:4 = ILP32 = a normal 32-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
-/* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */
-/* 4:8:8 = LP64 = a normal 64-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-/* this system has a "long" of 64bit */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-typedef unsigned long uint64_t;
-typedef long int64_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 448
-/* LLP64 a 64-bit system derived from a 32-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-/* assuming the system has a "long long" */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef unsigned long long uint64_t;
-typedef long long int64_t;
-#endif
-#else
-#define _STDINT_NO_INT32_T
-#endif
-#else
-#define _STDINT_NO_INT8_T
-#define _STDINT_NO_INT32_T
-#endif
-#endif
-
-/*
- * quote from SunOS-5.8 sys/inttypes.h:
- * Use at your own risk. As of February 1996, the committee is squarely
- * behind the fixed sized types; the "least" and "fast" types are still being
- * discussed. The probability that the "fast" types may be removed before
- * the standard is finalized is high enough that they are not currently
- * implemented.
- */
-
-#if defined _STDINT_NEED_INT_LEAST_T
-typedef int8_t int_least8_t;
-typedef int16_t int_least16_t;
-typedef int32_t int_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef int64_t int_least64_t;
-#endif
-
-typedef uint8_t uint_least8_t;
-typedef uint16_t uint_least16_t;
-typedef uint32_t uint_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t uint_least64_t;
-#endif
- /* least types */
-#endif
-
-#if defined _STDINT_NEED_INT_FAST_T
-typedef int8_t int_fast8_t;
-typedef int int_fast16_t;
-typedef int32_t int_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef int64_t int_fast64_t;
-#endif
-
-typedef uint8_t uint_fast8_t;
-typedef unsigned uint_fast16_t;
-typedef uint32_t uint_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t uint_fast64_t;
-#endif
- /* fast types */
-#endif
-
-#ifdef _STDINT_NEED_INTMAX_T
-#ifdef _HAVE_UINT64_T
-typedef int64_t intmax_t;
-typedef uint64_t uintmax_t;
-#else
-typedef long intmax_t;
-typedef unsigned long uintmax_t;
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INTPTR_T
-#ifndef __intptr_t_defined
-#define __intptr_t_defined
-/* we encourage using "long" to store pointer values, never use "int" ! */
-#if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
-typedef unsigned int uintptr_t;
-typedef int intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
-typedef unsigned long uintptr_t;
-typedef long intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
-typedef uint64_t uintptr_t;
-typedef int64_t intptr_t;
-#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
-typedef unsigned long uintptr_t;
-typedef long intptr_t;
-#endif
-#endif
-#endif
-
-/* The ISO C99 standard specifies that in C++ implementations these
- should only be defined if explicitly requested. */
-#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
-#ifndef UINT32_C
-
-/* Signed. */
-# define INT8_C(c) c
-# define INT16_C(c) c
-# define INT32_C(c) c
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define INT64_C(c) c ## L
-# else
-# define INT64_C(c) c ## LL
-# endif
-
-/* Unsigned. */
-# define UINT8_C(c) c ## U
-# define UINT16_C(c) c ## U
-# define UINT32_C(c) c ## U
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define UINT64_C(c) c ## UL
-# else
-# define UINT64_C(c) c ## ULL
-# endif
-
-/* Maximal type. */
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define INTMAX_C(c) c ## L
-# define UINTMAX_C(c) c ## UL
-# else
-# define INTMAX_C(c) c ## LL
-# define UINTMAX_C(c) c ## ULL
-# endif
-
- /* literalnumbers */
-#endif
-#endif
-
-/* These limits are merily those of a two complement byte-oriented system */
-
-/* Minimum of signed integral types. */
-# define INT8_MIN (-128)
-# define INT16_MIN (-32767-1)
-# define INT32_MIN (-2147483647-1)
-# define INT64_MIN (-__INT64_C(9223372036854775807)-1)
-/* Maximum of signed integral types. */
-# define INT8_MAX (127)
-# define INT16_MAX (32767)
-# define INT32_MAX (2147483647)
-# define INT64_MAX (__INT64_C(9223372036854775807))
-
-/* Maximum of unsigned integral types. */
-# define UINT8_MAX (255)
-# define UINT16_MAX (65535)
-# define UINT32_MAX (4294967295U)
-# define UINT64_MAX (__UINT64_C(18446744073709551615))
-
-/* Minimum of signed integral types having a minimum size. */
-# define INT_LEAST8_MIN INT8_MIN
-# define INT_LEAST16_MIN INT16_MIN
-# define INT_LEAST32_MIN INT32_MIN
-# define INT_LEAST64_MIN INT64_MIN
-/* Maximum of signed integral types having a minimum size. */
-# define INT_LEAST8_MAX INT8_MAX
-# define INT_LEAST16_MAX INT16_MAX
-# define INT_LEAST32_MAX INT32_MAX
-# define INT_LEAST64_MAX INT64_MAX
-
-/* Maximum of unsigned integral types having a minimum size. */
-# define UINT_LEAST8_MAX UINT8_MAX
-# define UINT_LEAST16_MAX UINT16_MAX
-# define UINT_LEAST32_MAX UINT32_MAX
-# define UINT_LEAST64_MAX UINT64_MAX
-
- /* shortcircuit*/
-#endif
- /* once */
-#endif
-#endif
-STDINT_EOF
-fi
- if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_stdint_h is unchanged" >&5
-$as_echo "$as_me: $ac_stdint_h is unchanged" >&6;}
- else
- ac_dir=`$as_dirname -- "$ac_stdint_h" ||
-$as_expr X"$ac_stdint_h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_stdint_h" : 'X\(//\)[^/]' \| \
- X"$ac_stdint_h" : 'X\(//\)$' \| \
- X"$ac_stdint_h" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_stdint_h" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
- as_dir="$ac_dir"; as_fn_mkdir_p
- rm -f $ac_stdint_h
- mv $ac_stdint $ac_stdint_h
- fi
- ;;
- "tools/sane-config":F) chmod a+x tools/sane-config ;;
-
- esac
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
- as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded. So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status. When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
- ac_cs_success=:
- ac_config_status_args=
- test "$silent" = yes &&
- ac_config_status_args="$ac_config_status_args --quiet"
- exec 5>/dev/null
- $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
- exec 5>>config.log
- # Use ||, not &&, to avoid exiting from the if with $? = 1, which
- # would make configure fail if this is the last instruction.
- $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-
-echo "-> Variables used for compilation/linking:"
-echo AM_CPPFLAGS=\"${AM_CPPFLAGS}\"
-echo AM_CFLAGS=\"${AM_CFLAGS}\"
-echo AM_LDFLAGS=\"${AM_LDFLAGS}\"
-echo LIBS=\"${LIBS}\"
-echo "-> Installation directories:"
-echo "Configuration: `eval eval echo ${sysconfdir}`"
-echo "Libraries: `eval eval echo ${libdir}`"
-echo "Binaries: `eval eval echo ${bindir}` and `eval eval echo ${sbindir}`"
-echo "Manpages: `eval eval echo ${mandir}`"
-echo "Documentation: `eval eval echo ${docdir}`"
-if eval "test x$INSTALL_LOCKPATH = xinstall-lockpath" ; then
- echo "Lockfiles: `eval eval echo ${locksanedir}`"
-else
- echo "Lockfiles: Feature is disabled!"
-fi
-echo "-> Network parameters:"
-if test "${SANED}" = "saned" ; then
- echo "Build saned: yes"
-else
- echo "Build saned: no"
-fi
-echo "IPv6 support: `eval eval echo ${ipv6}`"
-echo "Avahi support: `eval eval echo ${enable_avahi}`"
-echo "SNMP support: `eval eval echo ${with_snmp}`"
-echo "-> The following backends will be built:"
-for backend in ${BACKENDS} ; do
- echo $ECHO_N "${backend} "
-done
-echo
-echo
-echo "-> The following preload backends will be built:"
-for backend in ${PRELOADABLE_BACKENDS} ; do
- echo $ECHO_N "${backend} "
-done
-echo
-
-if test "$SANE_CONFIG_PATH" != "no" ; then
- SANE_INSTALLED_VERSION=`$SANE_CONFIG_PATH --version`
- SANE_INSTALLED_PREFIX=`$SANE_CONFIG_PATH --prefix`
- if test "$SANE_INSTALLED_PREFIX" != "$prefix" ; then
- echo "*** WARNING: SANE is already installed (version $SANE_INSTALLED_VERSION). The old"
- echo "*** installation is at $SANE_INSTALLED_PREFIX while SANE will now be installed"
- echo "*** at $prefix. It is recommended to uninstall the old SANE version"
- echo "*** before installing the new one to avoid problems."
- fi
-else
- if test "$LIBSANE_EXISTS" = "yes" ; then
- echo "*** Warning: An old version of SANE was detected but the sane-config program"
- echo "*** couldn't be found. If you encounter any problems with SANE remove the old"
- echo "*** SANE files and reinstall this version."
- fi
-fi
-if eval "test x${sysconfdir} = x/usr/etc" ; then
- echo "*** WARNING: Configuration files are stored in /usr/etc. If this is not"
- echo "*** intended, use --sysconfdir to set another path (e.g. "/etc")."
-fi
-if test "$SELECTED_BACKENDS" != "" ; then
- echo "*** Warning: Local backends have been disabled. This means that scanners"
- echo "*** connected to your local computer won't be supported. Only a network"
- echo "*** connection to a remote host is possible."
-fi
-if test "$with_usb" != "no" && test "$have_usb" != "yes" ; then
- echo "*** Warning: sane-backends will be built without USB support. There may"
- echo "*** be valid reasons to do so, e.g. if you don't use USB scanners or on"
- echo "*** platforms without USB support but generally this means that you"
- echo "*** can't use USB devices with SANE. The most probable cause is that"
- if test "${ac_cv_header_usb_h}" != "yes"; then
- echo "*** the libusb header file usb.h is not installed. If you use Linux"
- echo "*** you may need a package called 'libusb-dev', 'libusb-devel' or similar."
- else
- echo "*** libusb is not installed at all or is too old. See README."
- fi
-fi
-
-echo "****************************************************************"
-echo "* Please be sure to read file PROBLEMS in this directory *"
-echo "* BEFORE running any of the SANE applications. Some devices *"
-echo "* may be damaged by improper operation, so please do heed this *"
-echo "* advice. *"
-echo "****************************************************************"
diff --git a/configure.ac b/configure.ac
index fc6e8a2..376f290 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,13 +5,13 @@ dnl Set up autoconf and automake
dnl When preparing a release, modify the numeric version components
dnl and remove the git suffix.
dnl ******************************************************************
-AC_INIT([sane-backends],[1.0.27],
- [sane-devel@lists.alioth.debian.org])
-AC_PREREQ(2.69) dnl minimum autoconf version required
+AC_INIT([sane-backends],m4_esyscmd_s([git describe --dirty]),
+ [sane-devel@alioth-lists.debian.net])
+AC_PREREQ([2.69]) dnl minimum autoconf version required
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([include/sane/config.h])
-AM_INIT_AUTOMAKE([1.11.6 subdir-objects -Wall])
+AM_INIT_AUTOMAKE([1.15 subdir-objects -Wall])
AM_SILENT_RULES
dnl Turn off feature were automake will automatically run autoreconf.
dnl This is because we used to check in generated files into CVS which
@@ -27,7 +27,7 @@ AS_IF([test x = "x`echo $VERSION | sed 's/[[.0-9]]//g'`"],
[is_release=no])
V_MAJOR=`echo $VERSION | $AWK -F. '{print $1}'`
V_MINOR=`echo $VERSION | $AWK -F. '{print $2}'`
-V_REV=`echo $VERSION | $AWK -F. '{print $3}' | sed 's/[[^0-9]]//g'`;
+V_REV=`echo $VERSION | $AWK -F. '{print $3}' | sed 's/^\([[0-9]]*\).*/\1/'`;
AC_DEFINE_UNQUOTED(SANE_DLL_V_MAJOR, $V_MAJOR, [SANE DLL major number])
AC_DEFINE_UNQUOTED(SANE_DLL_V_MINOR, $V_MINOR, [SANE DLL minor number])
@@ -40,6 +40,7 @@ dnl ******************************************************************
dnl Set up the compiler and linker
dnl ******************************************************************
AC_PROG_CC
+AC_PROG_CXX
AM_PROG_CC_C_O
sane_save_CC=$CC
AC_PROG_CC_C99 dnl enables extensions to ISO C99 :-(
@@ -58,13 +59,13 @@ AC_USE_SYSTEM_EXTENSIONS dnl call before running the C compiler
AM_PROG_AR
LT_INIT([disable-static win32-dll])
-LT_PREREQ([2.4.2])
+LT_PREREQ([2.4.6])
dnl *****************************************************************
dnl Set up I18N/L10N support
dnl *****************************************************************
AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION([0.18.1])
+AM_GNU_GETTEXT_VERSION([0.19.8])
dnl ***********************************************************************
dnl Checks for programs.
@@ -80,6 +81,7 @@ dnl ***********************************************************************
dnl set compiler/linker flags
dnl ***********************************************************************
SANE_SET_AM_CFLAGS([$is_release])
+AX_CXX_COMPILE_STDCXX_11([noext], [optional])
SANE_SET_AM_LDFLAGS
dnl ***********************************************************************
@@ -192,7 +194,7 @@ dnl Checks for header files.
dnl ***********************************************************************
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/signal.h sys/scanio.h os2.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 \
windows.h be/kernel/OS.h limits.h sys/ioctl.h asm/types.h\
@@ -273,14 +275,14 @@ dnl ***********************************************************************
dnl Functions for which we provide an implementation if missing
AC_CONFIG_LIBOBJ_DIR([lib])
AC_FUNC_ALLOCA
-AC_REPLACE_FUNCS([getenv inet_ntop inet_pton isfdtype sigprocmask \
+AC_REPLACE_FUNCS([getenv inet_ntop inet_pton sigprocmask \
sleep snprintf strcasestr strdup strndup strsep syslog usleep \
vsyslog])
AS_IF([test x != x$ALLOCA],
[LTALLOCA=`echo "$ALLOCA" | sed 's/\.o$//; s/\.obj$//'`.lo])
AC_SUBST(LTALLOCA)
-dnl Define SOCKET_LIB, NSL_LIB, BIND_LIB, and RESOLV_LIB when required
+dnl Define SOCKET_LIB, NSL_LIB, BIND_LIB, and RESOLV_LIB when required
dnl for functions we use.
AC_CHECK_FUNC(gethostbyaddr,, [AC_CHECK_LIB(bind, gethostbyaddr, BIND_LIB="-lbind")])
AC_CHECK_FUNC(gethostbyaddr,, [AC_CHECK_LIB(nsl, gethostbyaddr, NSL_LIB="-lnsl")])
@@ -381,9 +383,9 @@ AC_ARG_WITH(usb,
AS_IF([test xno != "x$with_usb"],
[have_usb=no
AS_CASE(x$host_os, dnl odd-ball operating systems first
- [beos*],
+ [xbeos*],
[AC_CHECK_HEADER(be/drivers/USB_scanner.h, [have_usb=yes])],
- [os2*],
+ [xos2*],
[AC_CHECK_HEADER(usbcalls.h,
[AC_CHECK_LIB(usbcall, UsbQueryNumberDevices,
[USB_LIBS="-lusbcall"
@@ -439,7 +441,7 @@ dnl conditional scans for more specific only as needed.
# Unset VERSION during the SCSI header check
sed "s!^#define VERSION .*!/* & */!" confdefs.h > confdefs.h.tmp
mv confdefs.h.tmp confdefs.h
-
+
AC_CHECK_HEADERS(IOKit/scsi/SCSITaskLib.h IOKit/cdb/IOSCSILib.h \
IOKit/scsi/SCSICommandOperationCodes.h \
IOKit/scsi-commands/SCSICommandOperationCodes.h scsi.h sys/scsi.h \
@@ -506,7 +508,7 @@ fi
# Multiple platforms can set SCSI_LIBS so do substitution at end.
AC_SUBST(SCSI_LIBS)
-AC_ARG_ENABLE(scsibuffersize,
+AC_ARG_ENABLE(scsibuffersize,
AS_HELP_STRING([--enable-scsibuffersize=N],
[specify the default size in bytes of the buffer for SCSI
commands @<:@default=131072@:>@]),
@@ -597,9 +599,9 @@ ALL_BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e \
kvs40xx leo lexmark ma1509 magicolor \
matsushita microtek microtek2 mustek mustek_pp \
mustek_usb mustek_usb2 nec net niash pie pieusb pint \
- pixma plustek plustek_pp qcam ricoh rts8891 s9036 \
+ 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
@@ -608,7 +610,7 @@ ALL_BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e \
user_selected_backends="yes"
AC_ARG_VAR(BACKENDS, [list of backends to compile])
-if eval "test x$enable_local_backends = xno"; then
+if eval "test x$enable_local_backends = xno"; then
BACKENDS="net"
else
if test "${BACKENDS}" != "" ; then
@@ -627,7 +629,7 @@ fi
AM_CONDITIONAL(HAVE_JPEG, test x$sane_cv_use_libjpeg = xyes)
AC_SUBST(SANEI_SANEI_JPEG_LO)
-AC_ARG_ENABLE(pnm-backend,
+AC_ARG_ENABLE(pnm-backend,
AS_HELP_STRING([--enable-pnm-backend],
[enable the pnm backend for testing frontends (possible security risk, see PROBLEMS file)]),
[FILTERED_BACKENDS="${FILTERED_BACKENDS} pnm"],
@@ -662,7 +664,7 @@ if test "${enable_preload}" = "yes"; then
# are in automatic mode then remove backend from list instead.
user_selected_backends="yes"
- if eval "test x$enable_local_backends = xno"; then
+ if eval "test x$enable_local_backends = xno"; then
PRELOADABLE_BACKENDS="net"
else
if test "${PRELOADABLE_BACKENDS}" != "" ; then
@@ -698,6 +700,8 @@ for backend in ${PRELOADABLE_BACKENDS} ; do
fi
PRELOADABLE_BACKENDS_ENABLED="${PRELOADABLE_BACKENDS_ENABLED} lib${backend}.la"
done
+AM_CONDITIONAL([preloadable_backends_enabled],
+ [test x != "x$PRELOADABLE_BACKENDS_ENABLED"])
AC_SUBST(PRELOADABLE_BACKENDS)
AC_SUBST(PRELOADABLE_BACKENDS_ENABLED)
@@ -714,7 +718,7 @@ esac
AC_ARG_ENABLE(parport-directio,
AS_HELP_STRING([--enable-parport-directio],
- [enable direct hardware access to the parallel port, so
+ [enable direct hardware access to the parallel port, so
frontends will require special permission level]),
[
if eval "test x$enable_parport_directio = xyes"; then
@@ -776,11 +780,15 @@ dnl ***********************************************************************
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_CFLAGS)
+AC_SUBST(AM_CXXFLAGS)
AC_SUBST(AM_LDFLAGS)
AC_CONFIG_FILES([Makefile lib/Makefile sanei/Makefile frontend/Makefile \
japi/Makefile backend/Makefile include/Makefile doc/Makefile \
- po/Makefile.in testsuite/Makefile testsuite/sanei/Makefile testsuite/tools/Makefile \
+ po/Makefile.in testsuite/Makefile \
+ testsuite/backend/Makefile \
+ testsuite/backend/genesys/Makefile \
+ testsuite/sanei/Makefile testsuite/tools/Makefile \
tools/Makefile doc/doxygen-sanei.conf doc/doxygen-genesys.conf])
AC_CONFIG_FILES([tools/sane-config], [chmod a+x tools/sane-config])
AC_CONFIG_FILES([tools/sane-backends.pc])
@@ -793,6 +801,7 @@ dnl ***********************************************************************
echo "-> Variables used for compilation/linking:"
echo AM_CPPFLAGS=\"${AM_CPPFLAGS}\"
echo AM_CFLAGS=\"${AM_CFLAGS}\"
+echo AM_CXXFLAGS=\"${AM_CXXFLAGS}\"
echo AM_LDFLAGS=\"${AM_LDFLAGS}\"
echo LIBS=\"${LIBS}\"
echo "-> Installation directories:"
@@ -817,13 +826,13 @@ echo "Avahi support: `eval eval echo ${enable_avahi}`"
echo "SNMP support: `eval eval echo ${with_snmp}`"
echo "-> The following backends will be built:"
for backend in ${BACKENDS} ; do
- echo $ECHO_N "${backend} "
+ echo $ECHO_N "${backend} "
done
-echo
+echo
echo
echo "-> The following preload backends will be built:"
for backend in ${PRELOADABLE_BACKENDS} ; do
- echo $ECHO_N "${backend} "
+ echo $ECHO_N "${backend} "
done
echo
diff --git a/depcomp b/depcomp
deleted file mode 100755
index 4ebd5b3..0000000
--- a/depcomp
+++ /dev/null
@@ -1,791 +0,0 @@
-#! /bin/sh
-# depcomp - compile a program generating dependencies as side-effects
-
-scriptversion=2013-05-30.07; # UTC
-
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU 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 <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
-
-case $1 in
- '')
- echo "$0: No command. Try '$0 --help' for more information." 1>&2
- exit 1;
- ;;
- -h | --h*)
- cat <<\EOF
-Usage: depcomp [--help] [--version] PROGRAM [ARGS]
-
-Run PROGRAMS ARGS to compile a file, generating dependencies
-as side-effects.
-
-Environment variables:
- depmode Dependency tracking mode.
- source Source file read by 'PROGRAMS ARGS'.
- object Object file output by 'PROGRAMS ARGS'.
- DEPDIR directory where to store dependencies.
- depfile Dependency file to output.
- tmpdepfile Temporary file to use when outputting dependencies.
- libtool Whether libtool is used (yes/no).
-
-Report bugs to <bug-automake@gnu.org>.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "depcomp $scriptversion"
- exit $?
- ;;
-esac
-
-# Get the directory component of the given path, and save it in the
-# global variables '$dir'. Note that this directory component will
-# be either empty or ending with a '/' character. This is deliberate.
-set_dir_from ()
-{
- case $1 in
- */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
- *) dir=;;
- esac
-}
-
-# Get the suffix-stripped basename of the given path, and save it the
-# global variable '$base'.
-set_base_from ()
-{
- base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
-}
-
-# If no dependency file was actually created by the compiler invocation,
-# we still have to create a dummy depfile, to avoid errors with the
-# Makefile "include basename.Plo" scheme.
-make_dummy_depfile ()
-{
- echo "#dummy" > "$depfile"
-}
-
-# Factor out some common post-processing of the generated depfile.
-# Requires the auxiliary global variable '$tmpdepfile' to be set.
-aix_post_process_depfile ()
-{
- # If the compiler actually managed to produce a dependency file,
- # post-process it.
- if test -f "$tmpdepfile"; then
- # Each line is of the form 'foo.o: dependency.h'.
- # Do two passes, one to just change these to
- # $object: dependency.h
- # and one to simply output
- # dependency.h:
- # which is needed to avoid the deleted-header problem.
- { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
- sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
- } > "$depfile"
- rm -f "$tmpdepfile"
- else
- make_dummy_depfile
- fi
-}
-
-# A tabulation character.
-tab=' '
-# A newline character.
-nl='
-'
-# Character ranges might be problematic outside the C locale.
-# These definitions help.
-upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
-lower=abcdefghijklmnopqrstuvwxyz
-digits=0123456789
-alpha=${upper}${lower}
-
-if test -z "$depmode" || test -z "$source" || test -z "$object"; then
- echo "depcomp: Variables source, object and depmode must be set" 1>&2
- exit 1
-fi
-
-# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
-depfile=${depfile-`echo "$object" |
- sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
-tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
-
-rm -f "$tmpdepfile"
-
-# Avoid interferences from the environment.
-gccflag= dashmflag=
-
-# Some modes work just like other modes, but use different flags. We
-# parameterize here, but still list the modes in the big case below,
-# to make depend.m4 easier to write. Note that we *cannot* use a case
-# here, because this file can only contain one case statement.
-if test "$depmode" = hp; then
- # HP compiler uses -M and no extra arg.
- gccflag=-M
- depmode=gcc
-fi
-
-if test "$depmode" = dashXmstdout; then
- # This is just like dashmstdout with a different argument.
- dashmflag=-xM
- depmode=dashmstdout
-fi
-
-cygpath_u="cygpath -u -f -"
-if test "$depmode" = msvcmsys; then
- # This is just like msvisualcpp but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvisualcpp
-fi
-
-if test "$depmode" = msvc7msys; then
- # This is just like msvc7 but w/o cygpath translation.
- # Just convert the backslash-escaped backslashes to single forward
- # slashes to satisfy depend.m4
- cygpath_u='sed s,\\\\,/,g'
- depmode=msvc7
-fi
-
-if test "$depmode" = xlc; then
- # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
- gccflag=-qmakedep=gcc,-MF
- depmode=gcc
-fi
-
-case "$depmode" in
-gcc3)
-## gcc 3 implements dependency tracking that does exactly what
-## we want. Yay! Note: for some reason libtool 1.4 doesn't like
-## it if -MD -MP comes after the -MF stuff. Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am. Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
- for arg
- do
- case $arg in
- -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
- *) set fnord "$@" "$arg" ;;
- esac
- shift # fnord
- shift # $arg
- done
- "$@"
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- mv "$tmpdepfile" "$depfile"
- ;;
-
-gcc)
-## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
-## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
-## (see the conditional assignment to $gccflag above).
-## There are various ways to get dependency output from gcc. Here's
-## why we pick this rather obscure method:
-## - Don't want to use -MD because we'd like the dependencies to end
-## up in a subdir. Having to rename by hand is ugly.
-## (We might end up doing this anyway to support other compilers.)
-## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-## -MM, not -M (despite what the docs say). Also, it might not be
-## supported by the other compilers which use the 'gcc' depmode.
-## - Using -M directly means running the compiler twice (even worse
-## than renaming).
- if test -z "$gccflag"; then
- gccflag=-MD,
- fi
- "$@" -Wp,"$gccflag$tmpdepfile"
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- # The second -e expression handles DOS-style file names with drive
- # letters.
- sed -e 's/^[^:]*: / /' \
- -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the "deleted header file" problem.
-## The problem is that when a header file which appears in a .P file
-## is deleted, the dependency causes make to die (because there is
-## typically no way to rebuild the header). We avoid this by adding
-## dummy dependencies for each header file. Too bad gcc doesn't do
-## this for us directly.
-## Some versions of gcc put a space before the ':'. On the theory
-## that the space means something, we add a space to the output as
-## well. hp depmode also adds that space, but also prefixes the VPATH
-## to the object. Take care to not repeat it in the output.
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly. Breaking it into two sed invocations is a workaround.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-sgi)
- if test "$libtool" = yes; then
- "$@" "-Wp,-MDupdate,$tmpdepfile"
- else
- "$@" -MDupdate "$tmpdepfile"
- fi
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
-
- if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
- echo "$object : \\" > "$depfile"
- # Clip off the initial element (the dependent). Don't try to be
- # clever and replace this with sed code, as IRIX sed won't handle
- # lines with more than a fixed number of characters (4096 in
- # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
- # the IRIX cc adds comments like '#:fec' to the end of the
- # dependency line.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
- | tr "$nl" ' ' >> "$depfile"
- echo >> "$depfile"
- # The second pass generates a dummy entry for each header file.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
- >> "$depfile"
- else
- make_dummy_depfile
- fi
- rm -f "$tmpdepfile"
- ;;
-
-xlc)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-aix)
- # The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. In older versions, this file always lives in the
- # current directory. Also, the AIX compiler puts '$object:' at the
- # start of each line; $object doesn't have directory information.
- # Version 6 uses the directory in both cases.
- set_dir_from "$object"
- set_base_from "$object"
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$base.u
- tmpdepfile3=$dir.libs/$base.u
- "$@" -Wc,-M
- else
- tmpdepfile1=$dir$base.u
- tmpdepfile2=$dir$base.u
- tmpdepfile3=$dir$base.u
- "$@" -M
- fi
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- do
- test -f "$tmpdepfile" && break
- done
- aix_post_process_depfile
- ;;
-
-tcc)
- # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
- # FIXME: That version still under development at the moment of writing.
- # Make that this statement remains true also for stable, released
- # versions.
- # It will wrap lines (doesn't matter whether long or short) with a
- # trailing '\', as in:
- #
- # foo.o : \
- # foo.c \
- # foo.h \
- #
- # It will put a trailing '\' even on the last line, and will use leading
- # spaces rather than leading tabs (at least since its commit 0394caf7
- # "Emit spaces for -MD").
- "$@" -MD -MF "$tmpdepfile"
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
- # We have to change lines of the first kind to '$object: \'.
- sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
- # And for each line of the second kind, we have to emit a 'dep.h:'
- # dummy dependency, to avoid the deleted-header problem.
- sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-## The order of this option in the case statement is important, since the
-## shell code in configure will try each of these formats in the order
-## listed in this file. A plain '-MD' option would be understood by many
-## compilers, so we must ensure this comes after the gcc and icc options.
-pgcc)
- # Portland's C compiler understands '-MD'.
- # Will always output deps to 'file.d' where file is the root name of the
- # source file under compilation, even if file resides in a subdirectory.
- # The object file name does not affect the name of the '.d' file.
- # pgcc 10.2 will output
- # foo.o: sub/foo.c sub/foo.h
- # and will wrap long lines using '\' :
- # foo.o: sub/foo.c ... \
- # sub/foo.h ... \
- # ...
- set_dir_from "$object"
- # Use the source, not the object, to determine the base name, since
- # that's sadly what pgcc will do too.
- set_base_from "$source"
- tmpdepfile=$base.d
-
- # For projects that build the same source file twice into different object
- # files, the pgcc approach of using the *source* file root name can cause
- # problems in parallel builds. Use a locking strategy to avoid stomping on
- # the same $tmpdepfile.
- lockdir=$base.d-lock
- trap "
- echo '$0: caught signal, cleaning up...' >&2
- rmdir '$lockdir'
- exit 1
- " 1 2 13 15
- numtries=100
- i=$numtries
- while test $i -gt 0; do
- # mkdir is a portable test-and-set.
- if mkdir "$lockdir" 2>/dev/null; then
- # This process acquired the lock.
- "$@" -MD
- stat=$?
- # Release the lock.
- rmdir "$lockdir"
- break
- else
- # If the lock is being held by a different process, wait
- # until the winning process is done or we timeout.
- while test -d "$lockdir" && test $i -gt 0; do
- sleep 1
- i=`expr $i - 1`
- done
- fi
- i=`expr $i - 1`
- done
- trap - 1 2 13 15
- if test $i -le 0; then
- echo "$0: failed to acquire lock after $numtries attempts" >&2
- echo "$0: check lockdir '$lockdir'" >&2
- exit 1
- fi
-
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- # Each line is of the form `foo.o: dependent.h',
- # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
- # Do two passes, one to just change these to
- # `$object: dependent.h' and one to simply `dependent.h:'.
- sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
- | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-hp2)
- # The "hp" stanza above does not work with aCC (C++) and HP's ia64
- # compilers, which have integrated preprocessors. The correct option
- # to use with these is +Maked; it writes dependencies to a file named
- # 'foo.d', which lands next to the object file, wherever that
- # happens to be.
- # Much of this is similar to the tru64 case; see comments there.
- set_dir_from "$object"
- set_base_from "$object"
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir.libs/$base.d
- "$@" -Wc,+Maked
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- "$@" +Maked
- fi
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add 'dependent.h:' lines.
- sed -ne '2,${
- s/^ *//
- s/ \\*$//
- s/$/:/
- p
- }' "$tmpdepfile" >> "$depfile"
- else
- make_dummy_depfile
- fi
- rm -f "$tmpdepfile" "$tmpdepfile2"
- ;;
-
-tru64)
- # The Tru64 compiler uses -MD to generate dependencies as a side
- # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
- # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
- # dependencies in 'foo.d' instead, so we check for that too.
- # Subdirectories are respected.
- set_dir_from "$object"
- set_base_from "$object"
-
- if test "$libtool" = yes; then
- # Libtool generates 2 separate objects for the 2 libraries. These
- # two compilations output dependencies in $dir.libs/$base.o.d and
- # in $dir$base.o.d. We have to check for both files, because
- # one of the two compilations can be disabled. We should prefer
- # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
- # automatically cleaned when .libs/ is deleted, while ignoring
- # the former would cause a distcleancheck panic.
- tmpdepfile1=$dir$base.o.d # libtool 1.5
- tmpdepfile2=$dir.libs/$base.o.d # Likewise.
- tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
- "$@" -Wc,-MD
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- tmpdepfile3=$dir$base.d
- "$@" -MD
- fi
-
- stat=$?
- if test $stat -ne 0; then
- rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
- do
- test -f "$tmpdepfile" && break
- done
- # Same post-processing that is required for AIX mode.
- aix_post_process_depfile
- ;;
-
-msvc7)
- if test "$libtool" = yes; then
- showIncludes=-Wc,-showIncludes
- else
- showIncludes=-showIncludes
- fi
- "$@" $showIncludes > "$tmpdepfile"
- stat=$?
- grep -v '^Note: including file: ' "$tmpdepfile"
- if test $stat -ne 0; then
- rm -f "$tmpdepfile"
- exit $stat
- fi
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- # The first sed program below extracts the file names and escapes
- # backslashes for cygpath. The second sed program outputs the file
- # name when reading, but also accumulates all include files in the
- # hold buffer in order to output them again at the end. This only
- # works with sed implementations that can handle large buffers.
- sed < "$tmpdepfile" -n '
-/^Note: including file: *\(.*\)/ {
- s//\1/
- s/\\/\\\\/g
- p
-}' | $cygpath_u | sort -u | sed -n '
-s/ /\\ /g
-s/\(.*\)/'"$tab"'\1 \\/p
-s/.\(.*\) \\/\1:/
-H
-$ {
- s/.*/'"$tab"'/
- G
- p
-}' >> "$depfile"
- echo >> "$depfile" # make sure the fragment doesn't end with a backslash
- rm -f "$tmpdepfile"
- ;;
-
-msvc7msys)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-#nosideeffect)
- # This comment above is used by automake to tell side-effect
- # dependency tracking mechanisms from slower ones.
-
-dashmstdout)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout, regardless of -o.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove '-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for ':'
- # in the target name. This is to cope with DOS-style filenames:
- # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
- "$@" $dashmflag |
- sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
- rm -f "$depfile"
- cat < "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process this sed invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- tr ' ' "$nl" < "$tmpdepfile" \
- | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-dashXmstdout)
- # This case only exists to satisfy depend.m4. It is never actually
- # run, as this mode is specially recognized in the preamble.
- exit 1
- ;;
-
-makedepend)
- "$@" || exit $?
- # Remove any Libtool call
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
- # X makedepend
- shift
- cleared=no eat=no
- for arg
- do
- case $cleared in
- no)
- set ""; shift
- cleared=yes ;;
- esac
- if test $eat = yes; then
- eat=no
- continue
- fi
- case "$arg" in
- -D*|-I*)
- set fnord "$@" "$arg"; shift ;;
- # Strip any option that makedepend may not understand. Remove
- # the object too, otherwise makedepend will parse it as a source file.
- -arch)
- eat=yes ;;
- -*|$object)
- ;;
- *)
- set fnord "$@" "$arg"; shift ;;
- esac
- done
- obj_suffix=`echo "$object" | sed 's/^.*\././'`
- touch "$tmpdepfile"
- ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
- rm -f "$depfile"
- # makedepend may prepend the VPATH from the source file name to the object.
- # No need to regex-escape $object, excess matching of '.' is harmless.
- sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
- # Some versions of the HPUX 10.20 sed can't process the last invocation
- # correctly. Breaking it into two sed invocations is a workaround.
- sed '1,2d' "$tmpdepfile" \
- | tr ' ' "$nl" \
- | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
- | sed -e 's/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile" "$tmpdepfile".bak
- ;;
-
-cpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- # Remove '-o $object'.
- IFS=" "
- for arg
- do
- case $arg in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift # fnord
- shift # $arg
- ;;
- esac
- done
-
- "$@" -E \
- | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
- | sed '$ s: \\$::' > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- cat < "$tmpdepfile" >> "$depfile"
- sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvisualcpp)
- # Important note: in order to support this mode, a compiler *must*
- # always write the preprocessed file to stdout.
- "$@" || exit $?
-
- # Remove the call to Libtool.
- if test "$libtool" = yes; then
- while test "X$1" != 'X--mode=compile'; do
- shift
- done
- shift
- fi
-
- IFS=" "
- for arg
- do
- case "$arg" in
- -o)
- shift
- ;;
- $object)
- shift
- ;;
- "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
- set fnord "$@"
- shift
- shift
- ;;
- *)
- set fnord "$@" "$arg"
- shift
- shift
- ;;
- esac
- done
- "$@" -E 2>/dev/null |
- sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
- rm -f "$depfile"
- echo "$object : \\" > "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
- echo "$tab" >> "$depfile"
- sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
- rm -f "$tmpdepfile"
- ;;
-
-msvcmsys)
- # This case exists only to let depend.m4 do its work. It works by
- # looking at the text of this script. This case will never be run,
- # since it is checked for above.
- exit 1
- ;;
-
-none)
- exec "$@"
- ;;
-
-*)
- echo "Unknown depmode $depmode" 1>&2
- exit 1
- ;;
-esac
-
-exit 0
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 0000000..076d975
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,25 @@
+*.1
+*.5
+*.7
+*.8
+*.eps
+*.html
+*.pdf
+descriptions-external.db
+descriptions.db
+doxygen-genesys.conf
+doxygen-sanei.conf
+doxygen_sqlite3.db
+genesys-html
+sane.aux
+sane.cb
+sane.dvi
+sane.idx
+sane.ilg
+sane.ind
+sane.lof
+sane.log
+sane.lot
+sane.ps
+sane.toc
+sanei-html
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 162d01a..1651ed9 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -24,7 +24,7 @@ BACKEND_5MANS = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 \
sane-nec.5 sane-net.5 sane-pie.5 sane-pieusb.5 sane-pint.5 sane-pnm.5 \
sane-umax.5 sane-qcam.5 sane-scsi.5 sane-artec.5 sane-kodak.5 sane-kodakaio.5 \
sane-fujitsu.5 sane-sharp.5 sane-s9036.5 sane-tamarack.5 \
- sane-ricoh.5 sane-avision.5 sane-plustek.5 sane-st400.5 \
+ sane-ricoh.5 sane-ricoh.5 sane-avision.5 sane-plustek.5 sane-st400.5 \
sane-mustek_pp.5 sane-dc210.5 sane-v4l.5 sane-snapscan.5 \
sane-canon.5 sane-coolscan.5 sane-bh.5 sane-dc240.5 \
sane-umax_pp.5 sane-umax1220u.5 sane-sm3600.5 sane-usb.5 \
@@ -47,7 +47,7 @@ EXTRA_DIST += sane-abaton.man sane-agfafocus.man sane-apple.man sane-as6e.man \
sane-pie.man sane-pieusb.man sane-pint.man sane-pnm.man sane-umax.man \
sane-qcam.man sane-scsi.man sane-artec.man sane-fujitsu.man \
sane-sharp.man sane-s9036.man sane-tamarack.man sane-kodak.man sane-kodakaio.man\
- sane-ricoh.man sane-avision.man sane-plustek.man sane-st400.man \
+ sane-ricoh.man sane-ricoh2.man sane-avision.man sane-plustek.man sane-st400.man \
sane-mustek_pp.man sane-dc210.man sane-v4l.man sane-snapscan.man \
sane-canon.man sane-coolscan.man sane-bh.man sane-dc240.man \
sane-umax_pp.man sane-umax1220u.man sane-sm3600.man sane-usb.man \
@@ -174,7 +174,8 @@ DESC_FILES = descriptions/abaton.desc descriptions/agfafocus.desc \
descriptions/niash.desc descriptions/pie.desc descriptions/pieusb.desc descriptions/pint.desc \
descriptions/p5.desc descriptions/pixma.desc descriptions/plustek.desc \
descriptions/plustek_pp.desc descriptions/pnm.desc descriptions/qcam.desc \
- descriptions/ricoh.desc descriptions/rts8891.desc descriptions/s9036.desc \
+ descriptions/ricoh.desc descriptions/ricoh2.desc \
+ descriptions/rts8891.desc descriptions/s9036.desc \
descriptions/sceptre.desc descriptions/sharp.desc descriptions/sm3600.desc \
descriptions/sm3840.desc descriptions/snapscan.desc descriptions/sp15c.desc \
descriptions/st400.desc descriptions/stv680.desc descriptions/tamarack.desc \
@@ -183,12 +184,11 @@ 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 \
descriptions-external/brother.desc \
descriptions-external/brother-mfc4600.desc \
- descriptions-external/canon_mfp.desc \
descriptions-external/cs3200f.desc \
descriptions-external/epkowa.desc \
descriptions-external/geniusvp2.desc \
diff --git a/doc/Makefile.in b/doc/Makefile.in
deleted file mode 100644
index d678cf1..0000000
--- a/doc/Makefile.in
+++ /dev/null
@@ -1,1062 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@WITH_API_PS_TRUE@am__append_1 = sane.ps
-@WITH_API_PDF_TRUE@am__append_2 = sane.pdf
-@WITH_API_HTML_TRUE@am__append_3 = sane-html
-subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(srcdir)/doxygen-sanei.conf.in \
- $(srcdir)/doxygen-genesys.conf.in $(dist_doc_DATA) \
- $(nobase_dist_doc_DATA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES = doxygen-sanei.conf doxygen-genesys.conf
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-man1dir = $(mandir)/man1
-am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" \
- "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)" \
- "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"
-man7dir = $(mandir)/man7
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(man1_MANS) $(man7_MANS) $(man8_MANS)
-DATA = $(dist_doc_DATA) $(doc_DATA) $(nobase_dist_doc_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-man1_MANS = scanimage.1 sane-config.1 sane-find-scanner.1 gamma4scanimage.1
-EXTRA_DIST = scanimage.man sane-config.man sane-find-scanner.man \
- gamma4scanimage.man sane-abaton.man sane-agfafocus.man \
- sane-apple.man sane-as6e.man sane-dll.man sane-dc25.man \
- sane-dmc.man sane-epson.man sane-epson2.man sane-epsonds.man \
- sane-hp.man sane-gphoto2.man sane-leo.man sane-lexmark.man \
- sane-matsushita.man sane-microtek.man sane-microtek2.man \
- sane-mustek.man sane-nec.man sane-net.man sane-pie.man \
- sane-pieusb.man sane-pint.man sane-pnm.man sane-umax.man \
- sane-qcam.man sane-scsi.man sane-artec.man sane-fujitsu.man \
- sane-sharp.man sane-s9036.man sane-tamarack.man sane-kodak.man \
- sane-kodakaio.man sane-ricoh.man sane-avision.man \
- sane-plustek.man sane-st400.man sane-mustek_pp.man \
- sane-dc210.man sane-v4l.man sane-snapscan.man sane-canon.man \
- sane-coolscan.man sane-bh.man sane-dc240.man sane-umax_pp.man \
- sane-umax1220u.man sane-sm3600.man sane-usb.man \
- sane-mustek_usb.man sane-sceptre.man sane-canon_pp.man \
- sane-canon630u.man sane-teco1.man sane-teco2.man \
- sane-teco3.man sane-test.man sane-sp15c.man sane-coolscan2.man \
- sane-hpsj5s.man sane-gt68xx.man sane-artec_eplus48u.man \
- sane-ma1509.man sane-ibm.man sane-hp5400.man \
- sane-plustek_pp.man sane-u12.man sane-niash.man \
- sane-sm3840.man sane-genesys.man sane-hp4200.man \
- sane-mustek_usb2.man sane-hp3500.man sane-pixma.man \
- sane-stv680.man sane-hp5590.man sane-hpljm1005.man \
- sane-cardscan.man sane-hp3900.man sane-epjitsu.man \
- sane-hs2p.man sane-canon_dr.man sane-xerox_mfp.man \
- sane-rts8891.man sane-coolscan3.man sane-kvs1025.man \
- sane-kvs20xx.man sane-kvs40xx.man sane-p5.man \
- sane-magicolor.man sane.man saned.man descriptions.txt \
- releases.txt sane-logo2.jpg sane-logo.png sane.png \
- $(DESC_FILES) descriptions/template.desc. $(DESC_EXT_FILES) \
- descriptions-external/template.desc. $(API_SPEC_INPUTS) \
- $(API_SPEC_TEX_FIGS) $(API_SPEC_HTML_ICONS)
-
-# Create a list of man pages for only backends that are compiled in so
-# that is all that gets installed. Also, build a complete list of all
-# backend man pages. This allows a user to optionally generate all
-# man pages in HTML form for things like posting to a web site.
-#
-# Backend man pages bypass standard automake man5_MANS because there is not
-# a man page for every supported backend. We could get rid of
-# custom install/uninstall if we required man pages for every backend.
-BACKEND_5MANS = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 \
- sane-dll.5 sane-dc25.5 sane-dmc.5 sane-epson.5 sane-epson2.5 sane-epsonds.5 \
- sane-hp.5 sane-gphoto2.5 sane-leo.5 sane-lexmark.5 \
- sane-matsushita.5 sane-microtek.5 sane-microtek2.5 sane-mustek.5 \
- sane-nec.5 sane-net.5 sane-pie.5 sane-pieusb.5 sane-pint.5 sane-pnm.5 \
- sane-umax.5 sane-qcam.5 sane-scsi.5 sane-artec.5 sane-kodak.5 sane-kodakaio.5 \
- sane-fujitsu.5 sane-sharp.5 sane-s9036.5 sane-tamarack.5 \
- sane-ricoh.5 sane-avision.5 sane-plustek.5 sane-st400.5 \
- sane-mustek_pp.5 sane-dc210.5 sane-v4l.5 sane-snapscan.5 \
- sane-canon.5 sane-coolscan.5 sane-bh.5 sane-dc240.5 \
- sane-umax_pp.5 sane-umax1220u.5 sane-sm3600.5 sane-usb.5 \
- sane-mustek_usb.5 sane-sceptre.5 sane-canon_pp.5 sane-canon630u.5 \
- sane-teco1.5 sane-teco2.5 sane-teco3.5 sane-test.5 sane-sp15c.5 \
- sane-coolscan2.5 sane-hpsj5s.5 sane-gt68xx.5 sane-artec_eplus48u.5 \
- sane-ma1509.5 sane-ibm.5 sane-hp5400.5 sane-plustek_pp.5 sane-u12.5 \
- sane-niash.5 sane-sm3840.5 sane-genesys.5 sane-hp4200.5 \
- sane-mustek_usb2.5 sane-hp3500.5 sane-pixma.5 sane-stv680.5 \
- sane-hp5590.5 sane-hpljm1005.5 sane-cardscan.5 sane-hp3900.5 \
- sane-epjitsu.5 sane-hs2p.5 sane-canon_dr.5 sane-xerox_mfp.5 \
- sane-rts8891.5 sane-coolscan3.5 sane-kvs1025.5 sane-kvs20xx.5 \
- sane-kvs40xx.5 sane-p5.5 sane-magicolor.5
-
-man7_MANS = sane.7
-man8_MANS = saned.8
-MANPAGES = $(man1_MANS) $(BACKEND_5MANS) $(man7_MANS) $(man8_MANS)
-@CROSS_COMPILING_FALSE@HTML_PAGES = sane-backends.html sane-backends-external.html \
-@CROSS_COMPILING_FALSE@ sane-mfgs.html sane-mfgs-external.html
-
-@CROSS_COMPILING_TRUE@HTML_PAGES =
-doc_DATA = $(HTML_PAGES) $(API_SPECS)
-dist_doc_DATA = backend-writing.txt
-nobase_dist_doc_DATA = $(BEDOCS)
-MAN2HTML = nroff -c -man |\
- man2html -compress -topm 6 -botm 6 -nodepage -title $${page} \
- -cgiurl '$$title.$$section.html'|\
- sed 's,<BODY>,<BODY BGCOLOR=\#FFFFFF TEXT=\#000000><H1 ALIGN=CENTER><IMG SRC="/images/sane.png" HEIGHT=117 WIDTH=346></H1>,'
-
-beman5dir = $(mandir)/man5
-BEDOCS = canon/canon.changes canon/canon.install2700F.txt \
- gt68xx/gt68xx.CHANGES gt68xx/gt68xx.TODO leo/leo.txt \
- matsushita/matsushita.txt mustek/mustek.CHANGES \
- mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO \
- mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO \
- niash/niash.TODO plustek/FAQ plustek/MakeModule.sh \
- plustek/Makefile.kernel24 plustek/Makefile.kernel26 \
- 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 sceptre/s1200.txt teco/teco1.txt \
- teco/teco2.txt teco/teco3.txt u12/U12.changes u12/U12.todo \
- umax/negative-types.txt umax/sane-logo.jpg \
- umax/sane-umax-advanced-options-doc.html \
- umax/sane-umax-advanced.jpg umax/sane-umax-astra-doc.html \
- umax/sane-umax-config-doc.html umax/sane-umax-doc.html \
- umax/sane-umax-histogram.jpg umax/sane-umax-mirage-doc.html \
- umax/sane-umax-not-listed-doc.html \
- umax/sane-umax-others-doc.html umax/sane-umax-parport-doc.html \
- umax/sane-umax-powerlook-doc.html \
- umax/sane-umax-scanner-clones-doc.html \
- umax/sane-umax-speed-doc.html \
- umax/sane-umax-standard-options-doc.html \
- umax/sane-umax-standard.jpg umax/sane-umax-text.jpg \
- umax/sane-umax-text2.jpg umax/sane-umax-text4.jpg \
- umax/sane-umax-uc-doc.html umax/sane-umax-vista-doc.html \
- umax/sane-umax.jpg umax/umax.BUGS umax/umax.CHANGES \
- umax/umax.FAQ umax/umax.TODO
-DESC_FILES = descriptions/abaton.desc descriptions/agfafocus.desc \
- descriptions/apple.desc descriptions/artec.desc \
- descriptions/artec_eplus48u.desc descriptions/as6e.desc \
- descriptions/avision.desc descriptions/bh.desc descriptions/canon630u.desc \
- descriptions/canon.desc descriptions/canon_dr.desc \
- descriptions/canon_pp.desc descriptions/cardscan.desc \
- descriptions/coolscan2.desc descriptions/coolscan.desc \
- descriptions/coolscan3.desc \
- descriptions/dc210.desc descriptions/dc240.desc descriptions/dc25.desc \
- descriptions/dell1600n_net.desc descriptions/dll.desc descriptions/dmc.desc \
- descriptions/epjitsu.desc descriptions/epson2.desc descriptions/epson.desc \
- descriptions/epsonds.desc \
- descriptions/fujitsu.desc descriptions/genesys.desc \
- descriptions/gphoto2.desc descriptions/gt68xx.desc descriptions/hp3500.desc \
- descriptions/hp3900.desc descriptions/hp4200.desc descriptions/hp5400.desc \
- descriptions/hp5590.desc descriptions/hp.desc descriptions/hpljm1005.desc \
- descriptions/hpsj5s.desc descriptions/hs2p.desc descriptions/ibm.desc \
- descriptions/kodak.desc descriptions/kodakaio.desc descriptions/kvs1025.desc \
- descriptions/kvs20xx.desc descriptions/kvs40xx.desc \
- descriptions/leo.desc descriptions/lexmark.desc descriptions/ma1509.desc \
- descriptions/magicolor.desc \
- descriptions/matsushita.desc descriptions/microtek2.desc \
- descriptions/microtek.desc descriptions/mustek.desc \
- descriptions/mustek_pp.desc descriptions/mustek_usb2.desc \
- descriptions/mustek_usb.desc descriptions/nec.desc descriptions/net.desc \
- descriptions/niash.desc descriptions/pie.desc descriptions/pieusb.desc descriptions/pint.desc \
- descriptions/p5.desc descriptions/pixma.desc descriptions/plustek.desc \
- descriptions/plustek_pp.desc descriptions/pnm.desc descriptions/qcam.desc \
- descriptions/ricoh.desc descriptions/rts8891.desc descriptions/s9036.desc \
- descriptions/sceptre.desc descriptions/sharp.desc descriptions/sm3600.desc \
- descriptions/sm3840.desc descriptions/snapscan.desc descriptions/sp15c.desc \
- descriptions/st400.desc descriptions/stv680.desc descriptions/tamarack.desc \
- descriptions/teco1.desc descriptions/teco2.desc descriptions/teco3.desc \
- descriptions/test.desc descriptions/u12.desc \
- descriptions/umax1220u.desc descriptions/umax.desc \
- descriptions/umax_pp.desc descriptions/unsupported.desc \
- descriptions/v4l.desc descriptions/xerox_mfp.desc
-
-DESC_EXT_FILES = descriptions-external/brother2.desc \
- descriptions-external/brother.desc \
- descriptions-external/brother-mfc4600.desc \
- descriptions-external/canon_mfp.desc \
- descriptions-external/cs3200f.desc \
- descriptions-external/epkowa.desc \
- descriptions-external/geniusvp2.desc \
- descriptions-external/hp3770.desc \
- descriptions-external/hp8200.desc \
- descriptions-external/hpaio.desc \
- descriptions-external/hpoj.desc \
- descriptions-external/kodak-twain.desc \
- descriptions-external/lhii.desc \
- descriptions-external/mustek_a3p1.desc \
- descriptions-external/panamfs.desc \
- descriptions-external/primascan.desc \
- descriptions-external/primax.desc \
- descriptions-external/samsung.desc \
- descriptions-external/scanwit.desc \
- descriptions-external/utsushi.desc \
- descriptions-external/v4l2.desc \
- descriptions-external/viceo.desc
-
-API_SPECS = $(am__append_1) $(am__append_2) $(am__append_3)
-API_SPEC_INPUTS = $(srcdir)/sane.tex $(srcdir)/net.tex
-API_SPEC_TEX_FIGS = figs/area.fig figs/flow.fig figs/hierarchy.fig \
- figs/image-data.fig figs/xfer.fig
-API_SPEC_EPS_FIGS = figs/area.eps figs/flow.eps figs/hierarchy.eps \
- figs/image-data.eps figs/xfer.eps
-API_SPEC_PDF_FIGS = figs/area.pdf figs/flow.pdf figs/hierarchy.pdf \
- figs/image-data.pdf figs/xfer.pdf
-API_SPEC_HTML_ICONS = icons/contents.gif icons/index.gif \
- icons/next.gif icons/next_gr.gif icons/previous.gif \
- icons/previous_gr.gif icons/references.gif \
- icons/references_gr.gif icons/up.gif icons/up_gr.gif
-am_TEXINPUTS = TEXINPUTS="$(builddir):$(srcdir):$$TEXINPUTS"
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .eps .fig .pdf
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu doc/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-doxygen-sanei.conf: $(top_builddir)/config.status $(srcdir)/doxygen-sanei.conf.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-doxygen-genesys.conf: $(top_builddir)/config.status $(srcdir)/doxygen-genesys.conf.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-man1: $(man1_MANS)
- @$(NORMAL_INSTALL)
- @list1='$(man1_MANS)'; \
- list2=''; \
- test -n "$(man1dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.1[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
- done; }
-
-uninstall-man1:
- @$(NORMAL_UNINSTALL)
- @list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
-install-man7: $(man7_MANS)
- @$(NORMAL_INSTALL)
- @list1='$(man7_MANS)'; \
- list2=''; \
- test -n "$(man7dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man7dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man7dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.7[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man7dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man7dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man7dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man7dir)" || exit $$?; }; \
- done; }
-
-uninstall-man7:
- @$(NORMAL_UNINSTALL)
- @list='$(man7_MANS)'; test -n "$(man7dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^7][0-9a-z]*$$,7,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man7dir)'; $(am__uninstall_files_from_dir)
-install-man8: $(man8_MANS)
- @$(NORMAL_INSTALL)
- @list1='$(man8_MANS)'; \
- list2=''; \
- test -n "$(man8dir)" \
- && test -n "`echo $$list1$$list2`" \
- || exit 0; \
- echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
- { for i in $$list1; do echo "$$i"; done; \
- if test -n "$$list2"; then \
- for i in $$list2; do echo "$$i"; done \
- | sed -n '/\.8[a-z]*$$/p'; \
- fi; \
- } | while read p; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; echo "$$p"; \
- done | \
- sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
- sed 'N;N;s,\n, ,g' | { \
- list=; while read file base inst; do \
- if test "$$base" = "$$inst"; then list="$$list $$file"; else \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
- fi; \
- done; \
- for i in $$list; do echo "$$i"; done | $(am__base_list) | \
- while read files; do \
- test -z "$$files" || { \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
- done; }
-
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
- files=`{ for i in $$list; do echo "$$i"; done; \
- } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
- -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
- dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
-install-dist_docDATA: $(dist_doc_DATA)
- @$(NORMAL_INSTALL)
- @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
- done
-
-uninstall-dist_docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-install-docDATA: $(doc_DATA)
- @$(NORMAL_INSTALL)
- @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
- done
-
-uninstall-docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-install-nobase_dist_docDATA: $(nobase_dist_doc_DATA)
- @$(NORMAL_INSTALL)
- @list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
- fi; \
- $(am__nobase_list) | while read dir files; do \
- xfiles=; for file in $$files; do \
- if test -f "$$file"; then xfiles="$$xfiles $$file"; \
- else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
- test -z "$$xfiles" || { \
- test "x$$dir" = x. || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(docdir)/$$dir'"; \
- $(MKDIR_P) "$(DESTDIR)$(docdir)/$$dir"; }; \
- echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(docdir)/$$dir'"; \
- $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(docdir)/$$dir" || exit $$?; }; \
- done
-
-uninstall-nobase_dist_docDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(nobase_dist_doc_DATA)'; test -n "$(docdir)" || list=; \
- $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
- dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(MANS) $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man7dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(docdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-local mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am: html-local
-
-info: info-am
-
-info-am:
-
-install-data-am: install-data-local install-dist_docDATA \
- install-docDATA install-man install-nobase_dist_docDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man: install-man1 install-man7 install-man8
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-dist_docDATA uninstall-docDATA uninstall-local \
- uninstall-man uninstall-nobase_dist_docDATA
-
-uninstall-man: uninstall-man1 uninstall-man7 uninstall-man8
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- clean-local cscopelist-am ctags-am distclean distclean-generic \
- distclean-libtool distclean-local distdir dvi dvi-am html \
- html-am html-local info info-am install install-am \
- install-data install-data-am install-data-local \
- install-dist_docDATA install-docDATA install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-man1 install-man7 install-man8 \
- install-nobase_dist_docDATA install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
- uninstall-am uninstall-dist_docDATA uninstall-docDATA \
- uninstall-local uninstall-man uninstall-man1 uninstall-man7 \
- uninstall-man8 uninstall-nobase_dist_docDATA
-
-
-all: bemans $(API_SPECS) html-pages
-
-%.1 %.5 %.7 %.8: %.man
- @echo "Generating manpage $@...";
- @sed -e 's|@DATADIR@|$(datadir)|g' \
- -e 's|@CONFIGDIR@|$(configdir)|g' \
- -e 's|@DOCDIR@|$(docdir)|g' \
- -e 's|@LIBDIR@|$(libdir)/sane|g' \
- -e 's|@BINDIR@|$(bindir)|g' \
- -e 's|@SBINDIR@|$(sbindir)|g' \
- -e 's|@PACKAGEVERSION@|$(package_version)|g' $^ >$@
-
-bemans: $(BACKEND_5MANS)
-install-beman5: $(BACKEND_5MANS)
- test -z "$(beman5dir)" || $(MKDIR_P) "$(DESTDIR)$(beman5dir)"
- @list="$(BACKEND_MANS_ENABLED) sane-dll.5 sane-scsi.5 sane-usb.5"; for man in $$list; do \
- if test ! -r $${man}; then continue; fi; \
- echo "installing $${man} in $(beman5dir)/$${man}..."; \
- $(INSTALL_DATA) $${man} $(DESTDIR)$(beman5dir)/$${man} \
- || exit 1; \
- done
-
-install-data-local: install-beman5
-
-uninstall-local:
- rm -rf $(DESTDIR)$(beman5dir)/sane-*.5
-
-sane.ind: $(API_SPEC_INPUTS)
- @echo Generating index for $<...
- @touch sane.ind
- @$(am_TEXINPUTS) $(LATEX) $< </dev/null >/dev/null && \
- $(MAKEINDEX) -q sane.idx && \
- $(am_TEXINPUTS) $(LATEX) $< </dev/null >/dev/null
-
-.fig.eps:
- @test -d $(@D) || $(MKDIR_P) $(@D)
- $(FIG2DEV) -L eps $< $@
-
-sane.dvi: $(API_SPEC_INPUTS) $(API_SPEC_EPS_FIGS) sane.ind
- @echo Generating $@ from $<...
- @$(am_TEXINPUTS) $(LATEX) $< </dev/null >/dev/null
-
-sane.ps: sane.dvi
- @echo Generating $@ from $<...
- @$(am_TEXINPUTS) $(DVIPS) -q $< -o $@
-
-.fig.pdf:
- @test -d $(@D) || $(MKDIR_P) $(@D)
- $(FIG2DEV) -L pdf $< $@
-
-sane.pdf: $(API_SPEC_INPUTS) $(API_SPEC_PDF_FIGS) sane.ind
- @echo Generating $@ from $<...
- @$(am_TEXINPUTS) $(PDFLATEX) $< >/dev/null
-
-sane-html: sane.dvi
- $(am_TEXINPUTS) $(DLH) $(srcdir)/sane.tex
-
-html-man: $(MANPAGES)
- @for page in $(MANPAGES); do \
- echo "translating $${page} to $${page}.html..."; \
- cat $${page} | $(MAN2HTML) > $${page}.html; \
- done
-
-../tools/sane-desc:
- cd ../tools ; $(MAKE) sane-desc
-
-sane-backends.html: $(DESC_FILES) ../tools/sane-desc
- @../tools/sane-desc -m html-backends-split -s ${srcdir}/descriptions \
- -i "The following table summarizes the backends/drivers distributed \
- with $(PACKAGE)-$(VERSION), and the hardware or software they \
- support." -d 0 > sane-backends.html
-
-sane-backends-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
- @../tools/sane-desc -m html-backends-split \
- -s ${srcdir}/descriptions-external \
- -i "The following table summarizes the backends/drivers that \
- have not yet been included in the SANE distribution, and the \
- hardware or software they support." \
- -t "SANE: External Backends (Drivers)" -d 0 \
- > sane-backends-external.html
-
-sane-mfgs.html: $(DESC_FILES) ../tools/sane-desc
- @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions \
- -i "The following table summarizes the devices supported \
- by $(PACKAGE)-$(VERSION)." \
- -d 0 > sane-mfgs.html
-
-sane-mfgs-external.html: $(DESC_EXT_FILES) ../tools/sane-desc
- @../tools/sane-desc -m html-mfgs -s ${srcdir}/descriptions-external \
- -i "The following table summarizes the devices that \
- are supported by external backends." \
- -t "SANE: Devices Supported by External Backends" -d 0 \
- > sane-mfgs-external.html
-
-descriptions.db: $(DESC_FILES) ../tools/sane-desc
- @../tools/sane-desc -m ascii -s ${srcdir}/descriptions \
- > descriptions.db
-
-descriptions-external.db: $(DESC_EXT_FILES) ../tools/sane-desc
- @../tools/sane-desc -m ascii -s ${srcdir}/descriptions-external \
- > descriptions-external.db
-
-html-pages: $(HTML_PAGES)
-html-local: html-pages html-man sane-html
-
-clean-local:
- rm -f *.toc *.aux *.log *.cp *.fn *.tp *.vr *.pg *.ky *.blg *.idx *.cb
- rm -f *.ilg
- rm -f $(API_SPEC_EPS_FIGS) $(API_SPEC_PDF_FIGS)
- -rmdir figs
-
-distclean-local:
- rm -f $(MANPAGES)
- rm -f *.lot *.lof *.ind
- rm -f sane.dvi sane.ps sane-backends.html sane-backends-external.html
- rm -f sane-mfgs.html sane-mfgs-external.html
- rm -f sane/*.html sane/*.gif
- rm -f doxygen-sanei.conf doxygen-genesys.conf
- -rm -rf sane sanei-html
- for manpage in $(MANPAGES) ; do \
- rm -f $${manpage}.html ; \
- done
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/doc/backend-writing.txt b/doc/backend-writing.txt
index 7e34d6a..576e8e4 100644
--- a/doc/backend-writing.txt
+++ b/doc/backend-writing.txt
@@ -45,12 +45,11 @@ CONFIGURATION AND BUILD SYSTEM
Sane-backends uses the autoconf and automake tools. The configure script is
generated from configure.ac and aclocal.m4 by running "autoreconf".
Simple checks (e.g. for headers) should be placed into configure.ac while
-for more complex stuff acinclude.m4 is the right file. After changes in one
+for more complex stuff acinclude.m4 is the right file. After changes in one
of these files, "autoreconf" should be called. This will then call a
chain of autotools, such as autoconf to generate configure, autoheader
to generate include/sane/config.h.in, and automake to generate various
-Makefile.in's from Makefile.am's. All changes made by "autoreconf" must
-be commited together.
+Makefile.in's from Makefile.am's.
When running configure, the Makefiles in the main and sub-directories are
created from their respective Makefile.in files. Also include/sane/config.h
@@ -60,13 +59,13 @@ Running "make" runs the respective targets in the sub directories recursively.
The Makefile.am in each directory contains lists of files which are part of the
distribution and which are therefore copied to the tar.gz archive, when a
-release is made. It's important that newly added files are also added to
+release is made. It's important that newly added files are also added to
a variable that will cause them to be distributed (EXTRA_DIST at a minimum).
For creating binaries and libraries libtool is used. The ltmain.sh script
-contains special modifications for SANE. These modifications ensure that
-the soname of each SANE backend library is "libsane.so". Without this
-change, backend libraries (like "libsane-epson.so") could not used as
+contains special modifications for SANE. These modifications ensure that
+the soname of each SANE backend library is "libsane.so". Without this
+change, backend libraries (like "libsane-epson.so") could not used as
on-the-fly replacement for the dll backend.
DIRECTORY OVERVIEW
@@ -76,7 +75,7 @@ This chapter explains some details about the files and directories used in the
sane-backends distribution.
sane-backends/
- * acinclude.m4 aclocal.m4 compile config.guess config.sub configure
+ * acinclude.m4 aclocal.m4 compile config.guess config.sub configure
configure.ac depcomp install-sh ltmain.sh Makefile.am Makefile.in missing
mkinstalldirs: Part of the build system as explained above.
* ChangeLog:
@@ -94,19 +93,17 @@ sane-backends/
General documentation + license.
* NEWS:
This is some kind of executive summary of the ChangeLog. It will be created
- before a release.
+ before a release.
* PROBLEMS:
General (severe) problems that all SANE users should be
- aware. Backend-specific trouble should normally not mentioned there.
+ aware. Backend-specific trouble should normally not mentioned there.
* PROJECTS:
Planned SANE-related development (e.g. ports, frontends). New backends won't
be listed here but a new .desc file will be created for them (see below).
* README:
General building instructions.
* README.aix README.beos (...):
- Platform-dependent building and usage instructions.
- * sane-backends.lsm:
- The .lsm file as used for the ibiblio archive.
+ Platform-dependent building and usage instructions.
sane-backends/backend/
This is where the actual backend code is placed. As an example the file
@@ -117,13 +114,13 @@ sane-backends/backend/
directory. Code which is useful for more than one backend should be placed in
sanei/ instead.
* newbackend.c:
- The main backend file, usually contains the SANE API code. Mandatory.
+ The main backend file, usually contains the SANE API code. Mandatory.
* newbackend.h:
Header file, containing includes and so on.
* newbackend.conf.in:
- Configuration file for the backend, newbackend.conf will be created by
- running "make" from this file. Some variables are substituted, e.g. for
- installation directories. This is especially useful for firmware
+ Configuration file for the backend, newbackend.conf will be created by
+ running "make" from this file. Some variables are substituted, e.g. for
+ installation directories. This is especially useful for firmware
directories. See Makefile.am for a list.
* newbackend-low.c:
Contains low level code for the "newbackend" backend. Depending on the
@@ -147,16 +144,16 @@ sane-backends/backend/
sane-backends/doc/
Documentation for SANE. For some more details, see chapter DOCUMENTATION
below. Again an example for "newbackend":
- * sane-newbackend.man:
+ * sane-newbackend.man:
The manual page of the backend. From this file, "sane-newbackend.5" is
- generated by running "make".
+ generated by running "make".
* newbackend/ (directory)
Contains additional information about newbackend, e.g. READMEs or TODO
- files.
+ files.
General files:
* Makefile.am:
"sane-newbackend.5" must be added to variable BACKEND_5MANS and
- "sane-newbackend.man" to EXTRA_DIST. A backend documentation directory
+ "sane-newbackend.man" to EXTRA_DIST. A backend documentation directory
(if used) must be added to the BEDOCS variable.
* backend-writing.txt:
This file.
@@ -169,13 +166,13 @@ sane-backends/doc/
* sane.tex, net.tex:
Contains the LaTeX source of the SANE standard.
* descriptions/ (directory)
- Contains the .desc files for every backend that is included into
+ Contains the .desc files for every backend that is included into
sane-backends.
* descriptions-external/ (directory)
Contains the .desc files for backend that are not included into
sane-backends yet (external backends). These files should only be created
if the code it points to is really a SANE backend (and not just a command
- line program).
+ line program).
sane-backends/frontend/
Contains the frontends scanimage, saned, and tstbackend.
@@ -186,8 +183,8 @@ sane-backends/include/
SANE-specific headers are located in include/sane/:
* config.h.in:
Main header file needed for portablility. config.h is created from this
- file and must be included by every backend.
- * sane.h:
+ file and must be included by every backend.
+ * sane.h:
Official SANE API header file. Don't change this without discussion on
the sane-devel mailing list.
* saneopts.h:
@@ -202,14 +199,14 @@ sane-backends/japi/
sane-backends/lib/
Contains various library functions that may miss in the standard C library
- of some platforms.
+ of some platforms.
sane-backends/po/
Translations of SANEbackend options. See README for details.
sane-backends/sanei/
Sanei (SANE internal) code. Needed for code used in several backends
- like USB access. For more details, see the documentaion on the SANE
+ like USB access. For more details, see the documentaion on the SANE
website.
sane-backends/testsuite/
@@ -231,14 +228,14 @@ PROGRAMMING
least:
- add the backend name to ALL_BACKENDS in configure.ac (and run autoreconf)
- Add new backend to BACKEND_CONFS, be_convenience_libs, be_dlopen_libs,
- and define _lib${backend}_la_SOURCES and
+ and define _lib${backend}_la_SOURCES and
nodist_libsane_${backend}_la_SOURCES; using an existing backend as
a template. Any sanei reference code should be listed in
libsane_${backend}_la_LIBADD as well as any external libraries
required to resolve all symbols.
- - Add the source code files to the backend/ directories. All file names
+ - Add the source code files to the backend/ directories. All file names
must start with the backend name (e.g. newbackend.c, newbackend.h and
- newbackend-usb.c).
+ newbackend-usb.c).
* Please follow the GNU coding standards. It's clear that the style
outlined there is nobody's favorite, but it's much easier to
@@ -295,7 +292,7 @@ PROGRAMMING
* If you use headers or libraries that may not be available on all systems,
write a check for configure.ac and include it conditionally. If your backend
- depends on these libraries or headers, compile the backend only if they are
+ depends on these libraries or headers, compile the backend only if they are
available (see pint for an example).
* Use #include ".../include/sane/..." to include the sane header files
@@ -311,9 +308,9 @@ PROGRAMMING
* It's no longer necessary to #define PATH_MAX (now in sanei_backend.h).
If you define it, do so *after* the system includes.
-* Please use sanei functions whenever possible (e.g.
+* Please use sanei functions whenever possible (e.g.
sanei_config_read()). This makes porting to other os/platforms much
- easier. Most of these functions are documented in their respective
+ easier. Most of these functions are documented in their respective
header files in include/sane/sanei_*.h. For most of them there is also
documentation in doxygen format: http://www.sane-project.org/sanei/. These
HTML pages can be generated by calling "doxygen sanei-doxygen.conf" in
@@ -389,7 +386,7 @@ TESTING
compiled nor installed by default. To do that, cd into frontend and
run "make tstbackend".
-* Please test a backend not just with scanimage and xscanimage
+* Please test a backend not just with scanimage and xscanimage
(+ other frontends), but also with saned. Based on past experience,
it is often the case that remote scanning can uncover subtle bugs.
Note that you don't have to use two different machines to test "remote"
@@ -402,7 +399,7 @@ TESTING
access to other platforms, ask sane-devel.
* Please make sure that all global symbols exported from a SANE backend start
- with the prefix "sane" or "sanei" to avoid clashes with exported symbols
+ with the prefix "sane" or "sanei" to avoid clashes with exported symbols
of other backends. Only symbols mentioned in the SANE standard should start
with "sane_*". Make sure, the sanei_* symbols are unique, e.g. by using
sanei_backendname_*. Only export symbols that are absolutely necessary.
@@ -410,7 +407,7 @@ TESTING
nm -g backend/.libs/libsane-hp.a
- would list all global symbols in the HP backend.
+ would list all global symbols in the HP backend.
"./configure; make; make libcheck" in the sane-backends root directory
will name all backend libraries, that contain "illegal" symbols.
@@ -433,14 +430,14 @@ DOCUMENTATION
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
- "./sane-desc -h") or use "make html-pages" in "doc/".
+ enter "make sane-desc". You can either use sane-desc directly (try
+ "./sane-desc -h") or use "make html-pages" in "doc/".
* For external backends, you don't need to supply :manpage and :version. The
manpage link won't work anyway and version will be outdated soon.
* When your backend is included in the SANE distribution, add an entry to
- doc/sane.man, AUTHORS and sane-backends.lsm. The sane.man entry should point
+ doc/sane.man and AUTHORS. The sane.man entry should point
to your documentation (man-page, website, readme). Also move your .desc
file from "doc/descriptions-external" to "doc/descriptions" and update
them.
@@ -458,7 +455,7 @@ DOCUMENTATION
version numbers.
-CHECKLIST: SUBMITTING A NEW BACKEND
+CHECKLIST: SUBMITTING A NEW BACKEND
-----------------------------------
In sane-backends/
@@ -481,7 +478,7 @@ In sane-backends/doc/
check the html pages result with a browser.
* Check that the backend version is the same in the source and in the
description file.
-
+
In sane-backends/po/
* Add all files using SANE_I18N() to po/POTFILES
diff --git a/doc/canon/canon.changes b/doc/canon/canon.changes
index 30eb6e9..f07c225 100644
--- a/doc/canon/canon.changes
+++ b/doc/canon/canon.changes
@@ -37,6 +37,3 @@ Version 990201:
because it sets the resolution down first.
* I have included a new directory containing scripts I find useful.
-
-
-
diff --git a/doc/canon/canon.install2700F.txt b/doc/canon/canon.install2700F.txt
index 923a6d4..b80e8d9 100644
--- a/doc/canon/canon.install2700F.txt
+++ b/doc/canon/canon.install2700F.txt
@@ -1,6 +1,6 @@
-----------------------------------------------------------------------
-How to install a CanoScan 2700F on a Linux box ?
+How to install a CanoScan 2700F on a Linux box ?
by Stephan Hegel <ea273@fen.baynet.de>.
Date: Fri Jan 15 16:13:15 MEZ 1999
-----------------------------------------------------------------------
@@ -17,13 +17,13 @@ Corrections and suggestions are welcome, of course. Thank you.
-----------------------------------------
The AVA-1502AP is is a small ISA Adaptec SCSI controller which is
- shipped with the CanoScan slide scanner. Per default is has the
+ shipped with the CanoScan slide scanner. Per default is has the
address 0x140, the IRQ 10 and the SCSI host id 7. Check first for
conflicts with your already existing hardware.
Install the controller into the computer.
- After starting the BIOS should detect the board as a PNP board.
+ After starting the BIOS should detect the board as a PNP board.
Boot the computer with the "SCSISelect" disk which is shipped with
the scanner to check that the controller is detected. Don't change
any settings except address, IRQ or SCSI id if necessary.
@@ -32,13 +32,13 @@ Corrections and suggestions are welcome, of course. Thank you.
SCSI Support (yes)
SCSI Generic support (yes)
Low level driver for aha152x (yes)
- Note: here you can try to compile the SCSI support as modules as
+ Note: here you can try to compile the SCSI support as modules as
long as you don't boot the computer from a SCSI disk. But this
is not tested.
Compile and install the new Linux kernel.
- Add "aha152x=0x140,10,7" to the "append" line to the already existing
+ Add "aha152x=0x140,10,7" to the "append" line to the already existing
kernel parameters in lilo.conf, e.g:
-------------------
# Linux bootable partition config begins
@@ -46,7 +46,7 @@ Corrections and suggestions are welcome, of course. Thank you.
root = /dev/hdc1
label = linux
append = "sbpcd=0x230,SoundBlaster aha152x=0x140,10,7"
- # Linux bootable partition config ends
+ # Linux bootable partition config ends
-------------------
Invoke lilo to activate the changes.
@@ -64,12 +64,12 @@ Corrections and suggestions are welcome, of course. Thank you.
on" since the scanner is the one and only device connected to my host
adapter.
- Turn on the scanner first and wait for a few second. The scanner
+ Turn on the scanner first and wait for a few second. The scanner
performs a short self test.
Turn on the computer.
- Watch the boot messages, there should be a message indicating that
+ Watch the boot messages, there should be a message indicating that
the SCSI host adapter and the scanner are there.
Now you can check again that the scanner device is there:
@@ -85,18 +85,18 @@ Corrections and suggestions are welcome, of course. Thank you.
Fetch the latest SANE distribution from the SANE homepage at:
http://www.sane-project.org/
-
+
Unpack and configure it.
-
+
Get the latest canon backend from Manuel's homepage:
http://www.rzg.mpg.de/~mpd/sane
Put the files in the sane/backend directory as described in the
README of the package. This overwrites the existing canon.* files
with the latest version of these files.
-
+
Compile and install SANE.
-
+
Add the "canon" scanner to the /usr/local/etc/sane.d/dll.conf file:
-------- cut here ------------
# enable the next line if you want to allow access through the network:
@@ -108,12 +108,12 @@ Corrections and suggestions are welcome, of course. Thank you.
#umax
canon
-------- cut here ------------
-
+
Add a "canon.conf" file to the /usr/local/etc/sane.d directory:
-------- cut here ------------
- scsi CANON
+ scsi CANON
-------- cut here ------------
-
+
Check the available scanners:
scanimage -L
This should give something like this:
@@ -122,14 +122,14 @@ Corrections and suggestions are welcome, of course. Thank you.
device `pnm:1' is a Noname PNM file reader virtual device
Invoke the frontend:
- xscanimage &
- NOTE: The "xscanimage" frontend is in the SANE distribution. There
- is also another SANE frontend available which is called "xsane" by
- Oliver Rauch. It is still under heavy development and can be grabbed
+ xscanimage &
+ NOTE: The "xscanimage" frontend is in the SANE distribution. There
+ is also another SANE frontend available which is called "xsane" by
+ Oliver Rauch. It is still under heavy development and can be grabbed
from:
http://www.wolfsburg.de/~rauch
- A dialog box appears, select the canon scanner and here we go ...
+ A dialog box appears, select the canon scanner and here we go ...
Happy scanning !!!
-
+
-----------------------------------------------------------------------
diff --git a/doc/descriptions-external/brother-mfc4600.desc b/doc/descriptions-external/brother-mfc4600.desc
index 1d57e47..18bd3cb 100644
--- a/doc/descriptions-external/brother-mfc4600.desc
+++ b/doc/descriptions-external/brother-mfc4600.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://sourceforge.net/projects/brother-mfc"
-;:comment ""
+;:comment ""
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -32,6 +32,3 @@
:interface "USB"
:usbid "0x04f9" "0x0111"
:comment "Only USB version of this scanner is supported. Please report how well it works. See link."
-
-
-
diff --git a/doc/descriptions-external/brother.desc b/doc/descriptions-external/brother.desc
index a261712..39c54da 100644
--- a/doc/descriptions-external/brother.desc
+++ b/doc/descriptions-external/brother.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://solutions.brother.com/linux/sol/printer/linux/sane_drivers.html" ; backend's web page
-:comment "External backend made by brother. 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 brother website which contains the latest list."
+:comment "External backend made by brother. 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 brother website which contains the latest list."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -400,4 +400,3 @@
:interface "USB"
:usbid "0x04f9" "0x011b"
:comment "There is a report that this scanner does not work with the brother backend (I/O errors)"
-
diff --git a/doc/descriptions-external/brother2.desc b/doc/descriptions-external/brother2.desc
index 92b5450..afdb1a6 100644
--- a/doc/descriptions-external/brother2.desc
+++ b/doc/descriptions-external/brother2.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://solutions.brother.com/linux/sol/printer/linux/sane_drivers.html" ; backend's web page
-:comment "External backend made by brother. 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 brother website which contains the latest list."
+:comment "External backend made by brother. 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 brother website which contains the latest list."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions-external/canon_mfp.desc b/doc/descriptions-external/canon_mfp.desc
deleted file mode 100644
index e181d53..0000000
--- a/doc/descriptions-external/canon_mfp.desc
+++ /dev/null
@@ -1,73 +0,0 @@
-;
-; 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 "canon_mfp" ; name of backend
-;:version "1.0.0" ; version of backend (or "unmaintained")
-;:new :yes ; Is the backend new to this SANE release?
- ; :yes or :no
-;:manpage "sane-template" ; name of manpage (if it exists)
-:url "http://cweb.canon.jp/drv-upd/bj/other.html#linux";
-:url "http://support-asia.canon-asia.com/";
-:comment "External backend made by canon. 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 canon website which contains the latest list."
-:comment "Note: these backend are designed by Canon and are part of their proprietary scanning software. They may not work at all with SANE, or with SANE frontends."
- ; comment about the backend
-
-:devicetype :scanner ; start of a list of devices....
- ; other types: :stillcam, :vidcam,
- ; :meta, :api
-
-:mfg "Canon" ; name a manufacturer
-:url "http://www.canon.com/" ; manufacturer's URL
-;:comment ""
- ; comment about the manufacturer
-
-:model "MP140"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x172b"
-:comment "No report yet."
-
-:model "MP160"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1714"
-:comment "No report yet."
-
-:model "MP210"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1721"
-:comment "No report yet."
-
-:model "MP510"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1717"
-:comment "No report yet."
-
-:model "MP520"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1724"
-:comment "No report yet."
-
-:model "MP600"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1718"
-:comment "No report yet."
-
-:model "MP610"
-:status :untested
-:interface "USB"
-:usbid "0x04a9" "0x1725"
-:comment "Could not have it working with SANE."
diff --git a/doc/descriptions-external/cs3200f.desc b/doc/descriptions-external/cs3200f.desc
index b734d02..15c8c33 100644
--- a/doc/descriptions-external/cs3200f.desc
+++ b/doc/descriptions-external/cs3200f.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-cs3200f" ; name of manpage (if it exists)
;:url "http://www.luser.com/temp/" ; backend's web page
-:comment "Backend is in experimental CVS"
+:comment "Backend is in experimental CVS"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions-external/hp3770.desc b/doc/descriptions-external/hp3770.desc
index 7c2c60e..c6e8b9f 100644
--- a/doc/descriptions-external/hp3770.desc
+++ b/doc/descriptions-external/hp3770.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.cyberbaladeur.fr/telechargement.html" ; backend's web page
-:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
+:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions-external/hp8200.desc b/doc/descriptions-external/hp8200.desc
index 7dcf663..0a259be 100644
--- a/doc/descriptions-external/hp8200.desc
+++ b/doc/descriptions-external/hp8200.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.cyberbaladeur.fr/telechargement.html" ; backend's web page
-:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
+:comment "This backend can't be added to the SANE distribution because it consists of binary-only code."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -37,4 +37,3 @@
:usbid "0x03f0" "0x0b01"
:url "http://ftp.cyberbaladeur.fr/82xxc%20Linux%20drivers.tar.gz" ; model's URL
:comment "External backend. Binary-only Linux i386 code. Not supported by the SANE developers."
-
diff --git a/doc/descriptions-external/hpaio.desc b/doc/descriptions-external/hpaio.desc
index 5b4cc5c..dab5a8c 100644
--- a/doc/descriptions-external/hpaio.desc
+++ b/doc/descriptions-external/hpaio.desc
@@ -2238,4 +2238,3 @@
:model "HP Color LaserJet 9500 Multifunction Printer"
:status :good
-
diff --git a/doc/descriptions-external/kodak-twain.desc b/doc/descriptions-external/kodak-twain.desc
index 2d75cd1..97455b2 100644
--- a/doc/descriptions-external/kodak-twain.desc
+++ b/doc/descriptions-external/kodak-twain.desc
@@ -84,4 +84,3 @@
:interface "USB"
:usbid "0x040a" "0x6011"
:comment "Flatbed attachment for use with Kodak ADF scanner. Requires 12V power over usb cable. No report yet."
-
diff --git a/doc/descriptions-external/lhii.desc b/doc/descriptions-external/lhii.desc
index a755709..1877e0c 100644
--- a/doc/descriptions-external/lhii.desc
+++ b/doc/descriptions-external/lhii.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.sane-project.org/backends/lhii/lhii-v0.2.tgz" ; backend's web page
-:comment "This backend is for old handscanners with proprietary adapter cards. You also need a kernel driver. You may find such drivers at that page: http://www.willamowius.de/scanner.html ."
+:comment "This backend is for old handscanners with proprietary adapter cards. You also need a kernel driver. You may find such drivers at that page: http://www.willamowius.de/scanner.html ."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -42,5 +42,3 @@
; and at the top-level.
; :status specifier is optional after :model and at the top-level
-
-
diff --git a/doc/descriptions-external/mustek_a3p1.desc b/doc/descriptions-external/mustek_a3p1.desc
index e38b87a..3808cae 100644
--- a/doc/descriptions-external/mustek_a3p1.desc
+++ b/doc/descriptions-external/mustek_a3p1.desc
@@ -15,7 +15,3 @@
:status :minimal
:usbid "0x055f" "0x0401"
:comment "Reports about scanning problems. 1800 dpi seems to work if only small scan areas are selected."
-
-
-
-
diff --git a/doc/descriptions-external/panamfs.desc b/doc/descriptions-external/panamfs.desc
index fd49925..5a34cea 100644
--- a/doc/descriptions-external/panamfs.desc
+++ b/doc/descriptions-external/panamfs.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://panasonic.net/pcc/support/fax/common/table/linuxdriver.html" ; backend's web page
-:comment "External backend made by panasonic."
+:comment "External backend made by panasonic."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -54,4 +54,3 @@
:model "KX-MC6000 series"
:status :untested
:comment "No report yet."
-
diff --git a/doc/descriptions-external/primascan.desc b/doc/descriptions-external/primascan.desc
index 1f02202..6815bcd 100644
--- a/doc/descriptions-external/primascan.desc
+++ b/doc/descriptions-external/primascan.desc
@@ -16,7 +16,7 @@
; :yes or :no
;:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.geocities.com/trsh0101/index.html" ; backend's web page
-:comment "SANE backend and stand-alone program"
+:comment "SANE backend and stand-alone program"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions-external/primax.desc b/doc/descriptions-external/primax.desc
index 30633b0..db245d4 100644
--- a/doc/descriptions-external/primax.desc
+++ b/doc/descriptions-external/primax.desc
@@ -40,7 +40,3 @@
:model "Colorpage-Vivid+"
:interface "Parport"
:status :untested
-
-
-
-
diff --git a/doc/descriptions-external/template.desc. b/doc/descriptions-external/template.desc.
index 25b9b5a..a6b6bab 100644
--- a/doc/descriptions-external/template.desc.
+++ b/doc/descriptions-external/template.desc.
@@ -17,7 +17,7 @@
:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.luser.com/temp/" ; backend's web page
:url "http://www.luser.com/b/" ; another backend webpage
-:comment "This backend supports only the USB and SCSI models"
+:comment "This backend supports only the USB and SCSI models"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -77,5 +77,3 @@
; and at the top-level.
; :status specifier is optional after :model and at the top-level
-
-
diff --git a/doc/descriptions-external/utsushi.desc b/doc/descriptions-external/utsushi.desc
index d82ed18..08ad17f 100644
--- a/doc/descriptions-external/utsushi.desc
+++ b/doc/descriptions-external/utsushi.desc
@@ -1,5 +1,5 @@
;;; utsushi.desc -*- emacs-lisp -*- (sort of)
-;;; Copyright (C) 2015, 2016 Meeuwissen
+;;; Copyright (C) 2015-2019 Olaf Meeuwissen
;;;
;;; License: GPL-3.0+
;;; Author : Olaf Meeuwissen
@@ -21,7 +21,7 @@
;; Backend data
;;
:backend "utsushi"
-:url "https://github.com/utsushi/utsushi"
+:url "https://gitlab.com/utsushi/utsushi"
;; Device and manufacturer information.
;;
@@ -36,6 +36,20 @@
:usbid "0x04b8" "0x0152"
:status :good
+:model "DS-70"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x0160, 0x0166, 0x016c or 0x016e"
+
+:model "DS-80W"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x0160, 0x0166, 0x016c or 0x016e"
+
+:model "DS-410"
+:interface "USB"
+:status :good
+
:model "DS-510"
:interface "USB"
:usbid "0x04b8" "0x014c"
@@ -46,16 +60,38 @@
:usbid "0x04b8" "0x0154"
:status :good
+:model "DS-530"
+:interface "USB"
+:usbid "0x04b8" "0x0155"
+:status :good
+
+:model "DS-535"
+:interface "USB"
+:status :good
+
+:model "DS-535"
+:interface "USB"
+:usbid "0x04b8" "0x017a"
+:status :good
+
:model "DS-560"
:interface "USB"
:usbid "0x04b8" "0x0150"
:status :good
+:model "DS-575W"
+:interface "USB"
+:status :good
+
:model "DS-760"
:interface "USB"
:usbid "0x04b8" "0x014d"
:status :good
+:model "DS-775"
+:interface "USB"
+:status :good
+
:model "DS-780N"
:interface "USB"
:usbid "0x04b8" "0x0164"
@@ -66,6 +102,11 @@
:usbid "0x04b8" "0x014d"
:status :good
+:model "DS-1630"
+:interface "USB"
+:usbid "0x04b8" "0x015c"
+:status :good
+
:model "DS-5500"
:interface "USB"
:usbid "0x04b8" "0x0145"
@@ -111,11 +152,36 @@
:usbid "0x04b8" "0x1109"
:status :good
+:model "ES-50"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x0160, 0x0166, 0x016c or 0x016e"
+
+:model "ES-55R"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x016d or 0x016f"
+
+:model "ES-60W"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x0160, 0x0166, 0x016c or 0x016e"
+
+:model "ES-65WR"
+:interface "USB"
+:status :good
+:comment "USB product ID one of 0x016d or 0x016f"
+
:model "ES-400"
:interface "USB"
:usbid "0x04b8" "0x0156"
:status :good
+:model "ES-8500"
+:interface "USB"
+:usbid "0x04b8" "0x0109"
+:status :basic
+
:model "ET-2500"
:interface "USB"
:usbid "0x04b8" "0x1105"
@@ -136,6 +202,11 @@
:usbid "0x04b8" "0x1101"
:status :good
+:model "Expression 1640XL"
+:interface "USB"
+:usbid "0x04b8" "0x0109"
+:status :basic
+
:model "L220"
:interface "USB"
:usbid "0x04b8" "0x08d1"
@@ -156,6 +227,11 @@
:usbid "0x04b8" "0x08d2"
:status :good
+:model "L380 Series"
+:interface "USB"
+:usbid "0x04b8" "0x1120"
+:status :good
+
:model "L455"
:interface "USB"
:usbid "0x04b8" "0x08c2"
@@ -196,6 +272,16 @@
:usbid "0x04b8" "0x08ce"
:status :good
+:model "PX-M884F"
+:interface "USB"
+:usbid "0x04b8" "0x112e"
+:status :good
+
+:model "WF-4720"
+:interface "USB"
+:usbid "0x04b8" "0x1125"
+:status :good
+
:model "WF-6530"
:interface "USB"
:usbid "0x04b8" "0x08cd"
@@ -266,6 +352,21 @@
:usbid "0x04b8" "0x110c"
:status :good
+:model "XP-540"
+:interface "USB"
+:usbid "0x04b8" "0x1117"
+:status :good
+
+:model "XP-630"
+:interface "USB"
+:usbid "0x04b8" "0x110c"
+:status :good
+
+:model "XP-640"
+:interface "USB"
+:usbid "0x04b8" "0x1117"
+:status :good
+
:model "XP-830"
:interface "USB"
:usbid "0x04b8" "0x110b"
@@ -280,11 +381,6 @@
; Upstream releases have stopped providing the information we
; need to fill out the :model fields :-(
-:model "PID 0155"
-:interface "USB"
-:usbid "0x04b8" "0x0155"
-:status :good
-
:model "PID 0157"
:interface "USB"
:usbid "0x04b8" "0x0157"
@@ -330,6 +426,60 @@
:usbid "0x04b8" "0x0163"
:status :good
+:model "PID 0165"
+:interface "USB"
+:usbid "0x04b8" "0x0165"
+:status :good
+:comment "propably one of DS-410, DS-535, DS-575W, DS-775"
+
+:model "PID 0167"
+:interface "USB"
+:usbid "0x04b8" "0x0167"
+:status :good
+:comment "propably one of DS-410, DS-535, DS-575W, DS-775"
+
+:model "PID 0168"
+:interface "USB"
+:usbid "0x04b8" "0x0168"
+:status :good
+:comment "propably one of DS-410, DS-535, DS-575W, DS-775"
+
+:model "PID 0169"
+:interface "USB"
+:usbid "0x04b8" "0x0169"
+:status :good
+:comment "propably one of DS-410, DS-535, DS-575W, DS-775"
+
+:model "PID 016B"
+:interface "USB"
+:usbid "0x04b8" "0x016b"
+:status :good
+:comment "probably a FastFoto 680W, could be a WorkForce ES-300WR or ES-500WR"
+
+:model "PID 016D"
+:interface "USB"
+:usbid "0x04b8" "0x016d"
+:status :good
+:comment "propably one of ES-55R, ES-65WR"
+
+:model "PID 016F"
+:interface "USB"
+:usbid "0x04b8" "0x016f"
+:status :good
+:comment "propably one of ES-55R, ES-65WR"
+
+:model "PID 0176"
+:interface "USB"
+:usbid "0x04b8" "0x0176"
+:status :good
+:comment "probably a WorkForce ES-300WR or ES-500WR, could be a FastFoto 680W"
+
+:model "PID 0177"
+:interface "USB"
+:usbid "0x04b8" "0x0177"
+:status :good
+:comment "probably a WorkForce ES-500WR or ES-300WR, could be a FastFoto 680W"
+
:model "PID 110D"
:interface "USB"
:usbid "0x04b8" "0x110d"
@@ -411,11 +561,6 @@
:usbid "0x04b8" "0x111f"
:status :good
-:model "PID 1120"
-:interface "USB"
-:usbid "0x04b8" "0x1120"
-:status :good
-
:model "PID 1121"
:interface "USB"
:usbid "0x04b8" "0x1121"
@@ -451,8 +596,363 @@
:interface "USB"
:usbid "0x04b8" "0x1128"
:status :good
+:comment "PX-Mxxxx?"
+
+:model "PID 1129"
+:interface "USB"
+:usbid "0x04b8" "0x1129"
+:status :good
+:comment "L61x0?"
+
+:model "PID 112A"
+:interface "USB"
+:usbid "0x04b8" "0x112a"
+:status :good
+:comment "L61x0?"
:model "PID 112B"
:interface "USB"
:usbid "0x04b8" "0x112b"
:status :good
+:comment "ET-77xx?"
+
+:model "PID 112C"
+:interface "USB"
+:usbid "0x04b8" "0x112c"
+:status :good
+:comment "ET-77xx?"
+
+:model "PID 112D"
+:interface "USB"
+:usbid "0x04b8" "0x112d"
+:status :good
+
+:model "PID 112F"
+:interface "USB"
+:usbid "0x04b8" "0x112f"
+:status :good
+
+:model "PID 1130"
+:interface "USB"
+:usbid "0x04b8" "0x1130"
+:status :good
+:comment "L61x0?"
+
+:model "PID 1131"
+:interface "USB"
+:usbid "0x04b8" "0x1131"
+:status :good
+:comment "EP-8xxA?"
+
+:model "PID 1132"
+:interface "USB"
+:usbid "0x04b8" "0x1132"
+:status :good
+
+:model "PID 1133"
+:interface "USB"
+:usbid "0x04b8" "0x1133"
+:status :good
+:comment "EP-810A?"
+
+:model "PID 1134"
+:interface "USB"
+:usbid "0x04b8" "0x1134"
+:status :good
+:comment "EP-710A?"
+
+:model "PID 1135"
+:interface "USB"
+:usbid "0x04b8" "0x1135"
+:status :good
+:comment "L61x0?"
+
+:model "PID 1136"
+:interface "USB"
+:usbid "0x04b8" "0x1136"
+:status :good
+:comment "L61x0?"
+
+:model "PID 1137"
+:interface "USB"
+:usbid "0x04b8" "0x1137"
+:status :good
+:comment "L61x0?"
+
+:model "PID 1138"
+:interface "USB"
+:usbid "0x04b8" "0x1138"
+:status :good
+:comment "L61x0?"
+
+:model "PID 1139"
+:interface "USB"
+:usbid "0x04b8" "0x1139"
+:status :good
+
+:model "PID 113A"
+:interface "USB"
+:usbid "0x04b8" "0x113a"
+:status :good
+
+:model "PID 113B"
+:interface "USB"
+:usbid "0x04b8" "0x113b"
+:status :good
+:comment "PX-Mxxxx?"
+
+:model "PID 113C"
+:interface "USB"
+:usbid "0x04b8" "0x113c"
+:status :good
+:comment "PX-Mxxxx?"
+
+:model "PID 113D"
+:interface "USB"
+:usbid "0x04b8" "0x113d"
+:status :good
+
+:model "PID 113E"
+:interface "USB"
+:usbid "0x04b8" "0x113e"
+:status :good
+
+:model "PID 113F"
+:interface "USB"
+:usbid "0x04b8" "0x113f"
+:status :good
+
+:model "PID 1140"
+:interface "USB"
+:usbid "0x04b8" "0x1140"
+:status :good
+
+:model "PID 1141"
+:interface "USB"
+:usbid "0x04b8" "0x1141"
+:status :good
+
+:model "PID 1142"
+:interface "USB"
+:usbid "0x04b8" "0x1142"
+:status :good
+
+:model "PID 1143"
+:interface "USB"
+:usbid "0x04b8" "0x1143"
+:status :good
+:comment "L3xxx?"
+
+:model "PID 1145"
+:interface "USB"
+:usbid "0x04b8" "0x1145"
+:status :good
+:comment "EP-81xA?"
+
+:model "PID 1146"
+:interface "USB"
+:usbid "0x04b8" "0x1146"
+:status :good
+:comment "EP-71xA?"
+
+:model "PID 1147"
+:interface "USB"
+:usbid "0x04b8" "0x1147"
+:status :good
+:comment "XP-7xxx?"
+
+:model "PID 1148"
+:interface "USB"
+:usbid "0x04b8" "0x1148"
+:status :good
+:comment "PX-M8xxFX?"
+
+:model "PID 1149"
+:interface "USB"
+:usbid "0x04b8" "0x1149"
+:status :good
+:comment "WF-37xx?"
+
+:model "PID 114A"
+:interface "USB"
+:usbid "0x04b8" "0x114a"
+:status :good
+:comment "L61x0?"
+
+:model "PID 114B"
+:interface "USB"
+:usbid "0x04b8" "0x114b"
+:status :good
+:comment "EP-8xxA?"
+
+:model "PID 114C"
+:interface "USB"
+:usbid "0x04b8" "0x114c"
+:status :good
+:comment "EP-8xxA?"
+
+:model "PID 114D"
+:interface "USB"
+:usbid "0x04b8" "0x114d"
+:status :good
+:comment "L5xxx"
+
+:model "PID 114E"
+:interface "USB"
+:usbid "0x04b8" "0x114e"
+:status :good
+:comment "XP21xx"
+
+:model "PID 114F"
+:interface "USB"
+:usbid "0x04b8" "0x114f"
+:status :good
+:comment "L5xxx"
+
+:model "PID 1150"
+:interface "USB"
+:usbid "0x04b8" "0x1150"
+:status :good
+:comment "L5xxx"
+
+:model "PID 1151"
+:interface "USB"
+:usbid "0x04b8" "0x1151"
+:status :good
+:comment "L5xxx"
+
+:model "PID 1152"
+:interface "USB"
+:usbid "0x04b8" "0x1152"
+:status :good
+:comment "PX-Mxxxx"
+
+:model "PID 1153"
+:interface "USB"
+:usbid "0x04b8" "0x1153"
+:status :good
+:comment "PX-Mxxxx"
+
+:model "PID 1154"
+:interface "USB"
+:usbid "0x04b8" "0x1154"
+:status :good
+:comment "L61x0"
+
+:model "PID 1155"
+:interface "USB"
+:usbid "0x04b8" "0x1155"
+:status :good
+:comment "L61x0"
+
+:model "PID 1156"
+:interface "USB"
+:usbid "0x04b8" "0x1156"
+:status :good
+:comment "L61x0"
+
+:model "PID 1157"
+:interface "USB"
+:usbid "0x04b8" "0x1157"
+:status :good
+:comment "L3xxx"
+
+:model "PID 1158"
+:interface "USB"
+:usbid "0x04b8" "0x1158"
+:status :good
+:comment "L3xxx"
+
+:model "PID 1159"
+:interface "USB"
+:usbid "0x04b8" "0x1159"
+:status :good
+
+:model "PID 115A"
+:interface "USB"
+:usbid "0x04b8" "0x115a"
+:status :good
+:comment "EP8xxA"
+
+:model "PID 115B"
+:interface "USB"
+:usbid "0x04b8" "0x115b"
+:status :good
+:comment "EP9xxA3"
+
+:model "PID 115C"
+:interface "USB"
+:usbid "0x04b8" "0x115c"
+:status :good
+:comment "EP7xxA"
+
+:model "PID 115D"
+:interface "USB"
+:usbid "0x04b8" "0x115c"
+:status :good
+:comment "EP9xxA3"
+
+:model "PID 1160"
+:interface "USB"
+:usbid "0x04b8" "0x1160"
+:status :good
+:comment "L5xxx"
+
+:model "PID 1161"
+:interface "USB"
+:usbid "0x04b8" "0x1161"
+:status :good
+:comment "LX-10xxx"
+
+:model "PID 1162"
+:interface "USB"
+:usbid "0x04b8" "0x1162"
+:status :good
+:comment "EWM7xxTR"
+
+:model "PID 1163"
+:interface "USB"
+:usbid "0x04b8" "0x1163"
+:status :good
+:comment "EPM5xxT"
+
+:model "PID 1164"
+:interface "USB"
+:usbid "0x04b8" "0x1164"
+:status :good
+:comment "L61x0"
+
+:model "PID 1165"
+:interface "USB"
+:usbid "0x04b8" "0x1165"
+:status :good
+:comment "L61x0"
+
+:model "PID 1166"
+:interface "USB"
+:usbid "0x04b8" "0x1166"
+:status :good
+:comment "L61x0"
+
+:model "PID 1169"
+:interface "USB"
+:usbid "0x04b8" "0x1169"
+:status :good
+:comment "EWM7xxTR"
+
+:model "PID 116A"
+:interface "USB"
+:usbid "0x04b8" "0x116a"
+:status :good
+:comment "EWM7xxTR"
+
+:model "PID 116B"
+:interface "USB"
+:usbid "0x04b8" "0x116b"
+:status :good
+
+:model "PID 116E"
+:interface "USB"
+:usbid "0x04b8" "0x116e"
+:status :good
+:comment "EWM7xxTR"
diff --git a/doc/descriptions.txt b/doc/descriptions.txt
index d4cab94..13bd991 100644
--- a/doc/descriptions.txt
+++ b/doc/descriptions.txt
@@ -44,7 +44,7 @@ should be `unmaintained' or contain this tag together with the version number.
`:new' indicates that the backend is brand-new in the latest SANE release if
the keyword argument is `:yes'. Otherwise, `:no' should be used or `:new'
-should be omitted at all.
+should be omitted at all.
Example: `:new :yes'
The `:manpage' keyword token has one string argument that names the manual
@@ -117,7 +117,7 @@ Multi-level keyword tokens
--------------------------
The following keyword tokens can be used after `:backend', `:mfg', `:model',
-and `:desc'.
+and `:desc'.
One or more `:url' keyword tokens can be used to point to more information
about the entry the keyword refers to. The string argument contains a URL to
diff --git a/doc/descriptions/agfafocus.desc b/doc/descriptions/agfafocus.desc
index bcb482f..950dd58 100644
--- a/doc/descriptions/agfafocus.desc
+++ b/doc/descriptions/agfafocus.desc
@@ -1,6 +1,6 @@
:backend "agfafocus"
:version "unmaintained"
-:manpage "sane-agfafocus"
+:manpage "sane-agfafocus"
:devicetype :scanner
diff --git a/doc/descriptions/apple.desc b/doc/descriptions/apple.desc
index 046bb4e..462c745 100644
--- a/doc/descriptions/apple.desc
+++ b/doc/descriptions/apple.desc
@@ -6,9 +6,9 @@
;:url "http://no.www.page.yet/" ; backend's web page
:devicetype :scanner ; start of a list of devices....
-
+
:mfg "Apple"
-:url "http://developer.apple.com/"
+:url "http://developer.apple.com/"
:model "Apple Scanner"
:interface "SCSI"
:status :good ; :alpha, :beta, :stable, :new
diff --git a/doc/descriptions/avision.desc b/doc/descriptions/avision.desc
index bff25f5..f428fe8 100644
--- a/doc/descriptions/avision.desc
+++ b/doc/descriptions/avision.desc
@@ -14,7 +14,7 @@
:backend "avision"
; version of backend
-:version "Build: 296"
+:version "Build: 296 (unmaintained)"
;status: alpha, beta, stable, new
;:status :stable
@@ -854,4 +854,3 @@
:usbid "0x0482" "0x0335"
:comment "1 pass, ??? dpi, A4"
:status :untested
-
diff --git a/doc/descriptions/bh.desc b/doc/descriptions/bh.desc
index cea51d7..08bf565 100644
--- a/doc/descriptions/bh.desc
+++ b/doc/descriptions/bh.desc
@@ -53,4 +53,3 @@
:comment "Simplex Scanner (with ACE)"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
diff --git a/doc/descriptions/canon.desc b/doc/descriptions/canon.desc
index c6db616..78a20c4 100644
--- a/doc/descriptions/canon.desc
+++ b/doc/descriptions/canon.desc
@@ -10,7 +10,7 @@
:backend "canon" ; name of backend
:manpage "sane-canon"
-:version "1.12" ; version of backend
+:version "1.12 (unmaintained)" ; version of backend
;:status :good ; :alpha, :beta, :stable, :new
:url "http://www.rzg.mpg.de/~mpd/sane/" ; backend home page
@@ -62,4 +62,3 @@
:interface "SCSI"
:comment "Rebadged CanoScan 300"
:status :good
-
diff --git a/doc/descriptions/canon_dr.desc b/doc/descriptions/canon_dr.desc
index 8bf6964..7a45d25 100644
--- a/doc/descriptions/canon_dr.desc
+++ b/doc/descriptions/canon_dr.desc
@@ -10,10 +10,10 @@
;
:backend "canon_dr" ; name of backend
-:url "http://www.thebility.com/canon/"
-:version "51" ; version of backend
+:url "http://www.thebility.com/canon/"
+:version "57" ; version of backend
:manpage "sane-canon_dr" ; name of manpage (if it exists)
-:comment "Backend updated for SANE release 1.0.25, see sane-canon_dr manpage"
+:comment "Backend updated for SANE release 1.0.28, see sane-canon_dr manpage"
:devicetype :scanner ; start of a list of devices....
; other types: :stillcam, :vidcam,
; :meta, :api
@@ -262,8 +262,8 @@
:model "DR-X10C"
:interface "USB SCSI"
:usbid "0x1083" "0x1618"
-:status :untested
-:comment "Please test!"
+:status :good
+:comment "Simplex, duplex, all resolutions, binary/ht/gray/color, async mode, dropout-color, multifeed/staple detection, deskew, autocrop working. Imprinter, barcode, custom gamma and multistream unsupported"
:model "DR-C120"
:interface "USB"
@@ -398,4 +398,3 @@
:interface "USB"
:usbid "0x1083" "0x1648"
:status :untested
-
diff --git a/doc/descriptions/canon_pp.desc b/doc/descriptions/canon_pp.desc
index 6a3613a..37e08f8 100644
--- a/doc/descriptions/canon_pp.desc
+++ b/doc/descriptions/canon_pp.desc
@@ -59,4 +59,3 @@
:interface "Parport (ECP)"
:status :good
:comment "Just an N640P in a different box?"
-
diff --git a/doc/descriptions/cardscan.desc b/doc/descriptions/cardscan.desc
index df106de..bfa61e6 100644
--- a/doc/descriptions/cardscan.desc
+++ b/doc/descriptions/cardscan.desc
@@ -10,7 +10,7 @@
;
:backend "cardscan" ; name of backend
-:url "http://www.thebility.com/cardscan/"
+:url "http://www.thebility.com/cardscan/"
:version "3" ; version of backend
:manpage "sane-cardscan" ; name of manpage (if it exists)
:comment "Backend updated for SANE release 1.0.21, see sane-cardscan manpage"
@@ -40,4 +40,3 @@
:usbid "0x0451" "0x6250"
:status :good
:comment "4 inch wide 8bit Gray or 24bit Color simplex card/receipt scanner"
-
diff --git a/doc/descriptions/coolscan.desc b/doc/descriptions/coolscan.desc
index 6ccb496..ea33f5c 100644
--- a/doc/descriptions/coolscan.desc
+++ b/doc/descriptions/coolscan.desc
@@ -26,7 +26,7 @@
:model "LS-30" ; name models for above-specified mfg.
:interface "SCSI"
-:comment "alpha: only 24/30 bit RGB + 32/40 bit RGBI"
+:comment "alpha: only 24/30 bit RGB + 32/40 bit RGBI"
:status :basic
:model "LS-2000" ; name models for above-specified mfg.
@@ -36,7 +36,7 @@
:model "LS-1000"
:interface "SCSI"
-:comment "Doesn't support gamma correction"
+:comment "Doesn't support gamma correction"
:status :basic
; :comment and :url specifiers are optional after :mfg, :model, :desc,
diff --git a/doc/descriptions/coolscan2.desc b/doc/descriptions/coolscan2.desc
index 7e34b33..377bc99 100644
--- a/doc/descriptions/coolscan2.desc
+++ b/doc/descriptions/coolscan2.desc
@@ -38,19 +38,19 @@
:comment "needs linux kernel 2.4.19 or later"
:model "LS 50 ED"
-;:url "/unsupported/nikon-ls50-ed.html"
+;:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Coolscan V ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Super Coolscan LS-5000 ED"
-:url "/unsupported/nikon-ls5000-ed.html"
+:url "unsupported/nikon-ls5000-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4002"
:status :untested
diff --git a/doc/descriptions/coolscan3.desc b/doc/descriptions/coolscan3.desc
index 136d75f..f11e10d 100644
--- a/doc/descriptions/coolscan3.desc
+++ b/doc/descriptions/coolscan3.desc
@@ -38,13 +38,13 @@
:comment "Rebadged LS 40?"
:model "LS 50 ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Coolscan V ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
@@ -60,7 +60,7 @@
:comment "needs linux kernel 2.4.19 or later"
:model "Super Coolscan LS-5000 ED"
-:url "/unsupported/nikon-ls5000-ed.html"
+:url "unsupported/nikon-ls5000-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4002"
:status :untested
diff --git a/doc/descriptions/dc210.desc b/doc/descriptions/dc210.desc
index 1f6191e..3012fdd 100644
--- a/doc/descriptions/dc210.desc
+++ b/doc/descriptions/dc210.desc
@@ -6,7 +6,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :stillcam ; start of a list of devices....
-
+
:mfg "Kodak"
:url "http://www.kodak.com/global/en/service/digCam/dc210/dc210.shtml"
:model "DC210"
diff --git a/doc/descriptions/dc240.desc b/doc/descriptions/dc240.desc
index 6250ce5..cfc6ab2 100644
--- a/doc/descriptions/dc240.desc
+++ b/doc/descriptions/dc240.desc
@@ -6,7 +6,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :stillcam ; start of a list of devices....
-
+
:mfg "Kodak"
:url "http://www.kodak.com/global/en/service/products/ekn006568.jhtml"
:model "DC240"
diff --git a/doc/descriptions/dell1600n_net.desc b/doc/descriptions/dell1600n_net.desc
index 6759564..0c31ea1 100644
--- a/doc/descriptions/dell1600n_net.desc
+++ b/doc/descriptions/dell1600n_net.desc
@@ -14,4 +14,3 @@
:usbid "0x413c" "0x5250"
:status :basic
:comment "Supports colour and monochrome scans over ethernet (USB not supported)"
-
diff --git a/doc/descriptions/dmc.desc b/doc/descriptions/dmc.desc
index 348d737..08a01bb 100644
--- a/doc/descriptions/dmc.desc
+++ b/doc/descriptions/dmc.desc
@@ -26,4 +26,3 @@
:status :good
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
diff --git a/doc/descriptions/epson.desc b/doc/descriptions/epson.desc
index 65f466f..fc901a7 100644
--- a/doc/descriptions/epson.desc
+++ b/doc/descriptions/epson.desc
@@ -316,10 +316,10 @@
:usbid "0x04b8" "0x082b"
:status :good
-:model "DX-6000"
-:interface "USB"
-:usbid "0x04b8" "0x082e"
-:status :good
+:model "DX-6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
:model "DX-7400"
:interface "USB"
@@ -350,4 +350,3 @@
:interface "USB IEEE-1394"
:usbid "0x04b8" "0x012c"
:status :good
-
diff --git a/doc/descriptions/epson2.desc b/doc/descriptions/epson2.desc
index 772a77f..d1f3bed 100644
--- a/doc/descriptions/epson2.desc
+++ b/doc/descriptions/epson2.desc
@@ -6,8 +6,6 @@
;
; This file is derived from epkowa.desc, Copyright (C) Olaf Meeuwissen,
; distributed with "Image Scan!" and released under GPL.
-;
-; DO NOT EDIT - It's automatically generated.
:backend "epson2"
:version "1.0.124 (unmaintained)"
@@ -163,6 +161,11 @@
:status :unsupported
:comment "supported by the epkowa backend plus non-free interpreter"
+:model "DS-G20000"
+:interface "USB"
+:usbid "0x04b8" "0x015b"
+:status :good
+
:model "EP-702A"
:interface "USB"
:usbid "0x04b8" "0x0850"
@@ -525,6 +528,11 @@
:status :good
:comment "network interface supported via DFSG non-free iscan-network-nt package"
+:model "ET-2650"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x1121"
+:status :good
+
:model "Expression 636"
:interface "SCSI"
:status :complete
@@ -590,6 +598,12 @@
:status :good
:comment "overseas version of the ES-G11000"
+:model "Expression 12000XL"
+:interface "USB"
+:usbid "0x04b8" "0x015b"
+:status :good
+:comment "overseas version of the DS-G20000"
+
:model "F-3200" ; product spec (JP)
:interface "USB IEEE1394"
:usbid "0x04b8" "0x080a"
@@ -1040,6 +1054,16 @@
:status :complete
:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+:model "L380"
+:interface "USB"
+:usbid "0x04b8" "0x1120"
+:status :good
+
+:model "L495"
+:interface "USB Ethernet"
+:usbid "0x04b8" "0x1121"
+:status :good
+
:model "L550 Series"
:interface "USB"
:usbid "0x04b8" "0x08a9"
@@ -3346,6 +3370,17 @@
:status :complete
:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one<br>overseas version of the PX-047A"
+:model "XP-243 245 247 Series"
+:interface "USB"
+:usbid "0x04b8" "0x1116"
+:status :good
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
+:model "XP-255"
+:interface "USB"
+:usbid "0x04b8" "0x113d"
+:status :good
+
:model "XP-300 Series"
:interface "USB"
:usbid "0x04b8" "0x0898"
@@ -3382,6 +3417,12 @@
:status :complete
:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+:model "XP-427"
+:interface "USB"
+:usbid "0x04b8" "0x1116"
+:status :good
+:comment "network interface supported via DFSG non-free iscan-network-nt package<br>all-in-one"
+
:model "XP-600 Series"
:interface "USB"
:usbid "0x04b8" "0x089e"
@@ -3487,4 +3528,3 @@
:interface "USB"
:usbid "0x04b8" "0x08a7"
:status :good
-
diff --git a/doc/descriptions/epsonds.desc b/doc/descriptions/epsonds.desc
index 99121d1..690dd25 100644
--- a/doc/descriptions/epsonds.desc
+++ b/doc/descriptions/epsonds.desc
@@ -94,4 +94,3 @@
:interface "USB"
:usbid "0x04b8" "0x08cc"
:status :untested
-
diff --git a/doc/descriptions/fujitsu.desc b/doc/descriptions/fujitsu.desc
index 60f8c5b..99e5d7a 100644
--- a/doc/descriptions/fujitsu.desc
+++ b/doc/descriptions/fujitsu.desc
@@ -11,10 +11,10 @@
:backend "fujitsu" ; name of backend
-:url "http://www.thebility.com/fujitsu/"
-:version "133" ; version of backend
+:url "http://www.thebility.com/fujitsu/"
+:version "134" ; version of backend
:manpage "sane-fujitsu" ; name of manpage (if it exists)
-:comment "Backend updated for SANE release 1.0.26, see sane-fujitsu manpage"
+:comment "Backend updated for SANE release 1.0.28, see sane-fujitsu manpage"
:devicetype :scanner ; start of a list of devices....
; other types: :stillcam, :vidcam,
; :meta, :api
@@ -26,7 +26,7 @@
; DISCONTINUED OLDER MODELS, SMALL
:model "M3091DC"
:interface "SCSI"
-:url "http://www.remote.org/frederik/projects/software/sane/"
+:url "http://www.remote.org/frederik/projects/software/sane/"
:status :complete
:comment "small, old, discontinued"
@@ -131,12 +131,6 @@
:usbid "0x04c5" "0x116f"
:comment "small, recent, discontinued"
-:model "fi-6125"
-:interface "USB"
-:status :complete
-:usbid "0x04c5" "0x11ee"
-:comment "small, recent, discontinued"
-
:model "fi-6130"
:interface "USB"
:status :complete
@@ -563,34 +557,11 @@
:status :untested
:usbid "0x04c5" "0x14bd"
-:model "fi-6225"
-:interface "USB"
-:status :untested
-:usbid "0x04c5" "0x11ef"
-
:model "ScanSnap iX500EE"
:interface "USB"
:status :untested
:usbid "0x04c5" "0x13f3"
-:model "ScanPartner SP25"
-:interface "USB"
-:status :unsupported
-:usbid "0x04c5" "0x1409"
-:comment "Possibly Genesys protocol?"
-
-:model "ScanPartner SP30"
-:interface "USB"
-:status :unsupported
-:usbid "0x04c5" "0x140a"
-:comment "Possibly Genesys protocol?"
-
-:model "ScanPartner SP30F"
-:interface "USB"
-:status :unsupported
-:usbid "0x04c5" "0x140c"
-:comment "Possibly Genesys protocol?"
-
:model "N7100"
:interface "USB Ethernet"
:status :untested
diff --git a/doc/descriptions/genesys.desc b/doc/descriptions/genesys.desc
index f6fb8a3..77c1fd8 100644
--- a/doc/descriptions/genesys.desc
+++ b/doc/descriptions/genesys.desc
@@ -181,6 +181,13 @@
:status :unsupported
:comment "GL847 based, to be added to the genesys backend"
+:model "CanoScan 8600F"
+:url "unsupported/canon-8600.html"
+:interface "USB"
+:usbid "0x04a9" "0x2229"
+:status :basic
+:comment "normal and transparency scans work up to 1200 dpi resolution"
+
:model "CanoScan 700F"
:interface "USB"
:usbid "0x04a9" "0x1907"
diff --git a/doc/descriptions/gphoto2.desc b/doc/descriptions/gphoto2.desc
index f341649..dacc15d 100644
--- a/doc/descriptions/gphoto2.desc
+++ b/doc/descriptions/gphoto2.desc
@@ -6,7 +6,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :api ; start of a list of devices....
-
+
:desc "Multiple cameras supported by the gphoto2 libraries"
:url "http://www.gphoto.org"
;:interface "USB, serial port"
diff --git a/doc/descriptions/gt68xx.desc b/doc/descriptions/gt68xx.desc
index 16e4af9..f101cd1 100644
--- a/doc/descriptions/gt68xx.desc
+++ b/doc/descriptions/gt68xx.desc
@@ -48,7 +48,7 @@
:url "http://www.genius-kye.com/"
:model "ColorPage Slim 1200"
-;:url "/unsupported/genius-colorpage-slim-1200.html"
+;:url "unsupported/genius-colorpage-slim-1200.html"
:interface "USB"
:usbid "0x0458" "0x201e"
:status :untested
@@ -130,7 +130,7 @@
:mfg "Medion/Lifetec/Tevion/Cytron"
:url "http://www.medion.com"
:comment "Sold by Aldi and Tchibo."
-
+
:model "MD 4394"
:interface "USB"
:usbid "0x05d8" "0x4002"
@@ -406,6 +406,12 @@
:status :good
:comment "Same as OpticSlim 2400."
+:model "OpticSlim 500 plus"
+:interface "USB"
+:usbid "0x07b3" "0x046e"
+:status :good
+:comment "Need firmware from windows driver. Image is upside down because hardware in this model is upside down. Buttons not tested."
+
:model "Iriscan Express 2"
:interface "USB"
:usbid "0x07b3" "0x045f"
diff --git a/doc/descriptions/hp.desc b/doc/descriptions/hp.desc
index 24f4f4a..8cf94af 100644
--- a/doc/descriptions/hp.desc
+++ b/doc/descriptions/hp.desc
@@ -124,4 +124,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
diff --git a/doc/descriptions/hp3500.desc b/doc/descriptions/hp3500.desc
index b67c01f..a8be5ef 100644
--- a/doc/descriptions/hp3500.desc
+++ b/doc/descriptions/hp3500.desc
@@ -9,7 +9,7 @@
;
:backend "hp3500" ; name of backend
-:version "1.1" ; version of backend
+:version "1.1 (unmaintained)" ; version of backend
:manpage "sane-hp3500" ; name of manpage (if it exists)
:url "http://projects.troy.rollo.name/rt-scanners/" ; backend's web page
:comment "HP3500 series scanners."
@@ -42,6 +42,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
-
-
diff --git a/doc/descriptions/hp3900.desc b/doc/descriptions/hp3900.desc
index d1aa9a1..6c26b11 100644
--- a/doc/descriptions/hp3900.desc
+++ b/doc/descriptions/hp3900.desc
@@ -79,4 +79,3 @@
:usbid "0x04a5" "0x2211"
:status :minimal
:comment "developing yet"
-
diff --git a/doc/descriptions/hp4200.desc b/doc/descriptions/hp4200.desc
index 6c25882..8fe9b0f 100644
--- a/doc/descriptions/hp4200.desc
+++ b/doc/descriptions/hp4200.desc
@@ -40,4 +40,4 @@
:comment "8bpp color, 75/150/300/600 dpi only"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
-; and at the top-level.
+; and at the top-level.
diff --git a/doc/descriptions/hp5400.desc b/doc/descriptions/hp5400.desc
index 49d386f..1b6cb20 100644
--- a/doc/descriptions/hp5400.desc
+++ b/doc/descriptions/hp5400.desc
@@ -43,6 +43,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
-
-
diff --git a/doc/descriptions/hp5590.desc b/doc/descriptions/hp5590.desc
index 6bb9ff5..5062f75 100644
--- a/doc/descriptions/hp5590.desc
+++ b/doc/descriptions/hp5590.desc
@@ -52,4 +52,3 @@
:usbid "0x03f0" "0x1805"
:status :complete
:comment "Lineart/grayscale/color (24 bit), 100/200/300/600/1200/2400 DPI, flatbed/ADF/ADF duplex/TMA slides/TMA negatives"
-
diff --git a/doc/descriptions/hpsj5s.desc b/doc/descriptions/hpsj5s.desc
index c4bc100..4aa4de9 100644
--- a/doc/descriptions/hpsj5s.desc
+++ b/doc/descriptions/hpsj5s.desc
@@ -29,4 +29,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
diff --git a/doc/descriptions/hs2p.desc b/doc/descriptions/hs2p.desc
index d02df83..4e2c2b4 100644
--- a/doc/descriptions/hs2p.desc
+++ b/doc/descriptions/hs2p.desc
@@ -10,7 +10,7 @@
:backend "hs2p" ; name of backend
:url "http://www.acjlaw.net:8080/~jeremy/Ricoh/"
-:version "1.00" ; version of backend
+:version "1.00 (unmaintained)" ; version of backend
;
:manpage "sane-hs2p" ; name of manpage (if it exists)
:comment "This backend has been tested with the IS450DE (Duplex/Endorser). All major functions necessary for scanning are supported. This backend should work with all Ricoh scanners in the IS450 family as well as the IS420 series, but the IS420 has not yet been tested. Features provided by the optional Image Processing Unit (IPU) are not yet integrated into the backend, as my scanner lacks the IPU."
diff --git a/doc/descriptions/kodak.desc b/doc/descriptions/kodak.desc
index 7f0108a..7fd2167 100644
--- a/doc/descriptions/kodak.desc
+++ b/doc/descriptions/kodak.desc
@@ -1,5 +1,5 @@
:backend "kodak"
-:url "http://www.thebility.com/kodak/"
+:url "http://www.thebility.com/kodak/"
:version "7"
:manpage "sane-kodak"
:comment "New backend for SANE release 1.0.21, see sane-kodak manpage"
@@ -187,4 +187,3 @@
:interface "SCSI"
:status :untested
:comment "Please test!"
-
diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc
index 8c9c4ce..c2e12c4 100644
--- a/doc/descriptions/kodakaio.desc
+++ b/doc/descriptions/kodakaio.desc
@@ -1,5 +1,5 @@
:backend "kodakaio"
-:url "http://sourceforge.net/projects/cupsdriverkodak/"
+:url "http://sourceforge.net/projects/cupsdriverkodak/"
:version "2.7.2"
:manpage "sane-kodakaio"
:comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
@@ -180,6 +180,3 @@
:usbid "0x040a" "0x4060"
:status :untested
:comment "Please test!"
-
-
-
diff --git a/doc/descriptions/kvs20xx.desc b/doc/descriptions/kvs20xx.desc
index 35178e1..4463b8e 100644
--- a/doc/descriptions/kvs20xx.desc
+++ b/doc/descriptions/kvs20xx.desc
@@ -45,4 +45,3 @@
:interface "USB"
:usbid "0x04da" "0x1009"
:status :untested
-
diff --git a/doc/descriptions/kvs40xx.desc b/doc/descriptions/kvs40xx.desc
index 8cc054f..24684be 100644
--- a/doc/descriptions/kvs40xx.desc
+++ b/doc/descriptions/kvs40xx.desc
@@ -32,4 +32,3 @@
:interface "USB"
:usbid "0x04da" "0x100e"
:status :untested
-
diff --git a/doc/descriptions/leo.desc b/doc/descriptions/leo.desc
index cf0cec3..02a1156 100644
--- a/doc/descriptions/leo.desc
+++ b/doc/descriptions/leo.desc
@@ -17,7 +17,7 @@
:devicetype :scanner ; start of a list of devices....
:mfg "LEO"
-:model "LEOScan S3"
+:model "LEOScan S3"
:interface "SCSI"
:comment "FCC ID LUZFS1130"
:status :good
@@ -32,5 +32,3 @@
:model "FS-1130 Colorpage Scanner"
:interface "SCSI"
:status :good
-
-
diff --git a/doc/descriptions/lexmark.desc b/doc/descriptions/lexmark.desc
index ac0b97c..a97dd69 100644
--- a/doc/descriptions/lexmark.desc
+++ b/doc/descriptions/lexmark.desc
@@ -15,7 +15,7 @@
:url "http://stef.dev.free.fr/sane/lexmark"
; backend's web page
-:comment "This backend supports lexmark x1100 series scanners."
+:comment "This backend supports lexmark x1100 series scanners."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions/ma1509.desc b/doc/descriptions/ma1509.desc
index d28aeed..99456b2 100644
--- a/doc/descriptions/ma1509.desc
+++ b/doc/descriptions/ma1509.desc
@@ -26,7 +26,7 @@
:interface "USB"
:usbid "0x055f" "0x0010"
:status :good
-:comment "Works upto 600 dpi. No support for TA and ADF yet."
+:comment "Works upto 600 dpi. No support for TA and ADF yet."
:mfg "Fujitsu" ; name a manufacturer
:url "http://www.fujitsu.com/"
@@ -35,4 +35,3 @@
:usbid "0x04c5" "0x1040"
:status :unsupported
:comment "Uses ma1509 chip, but very different from other scanners supported by the ma1509 backend"
-
diff --git a/doc/descriptions/magicolor.desc b/doc/descriptions/magicolor.desc
index 7f0c341..f650c90 100644
--- a/doc/descriptions/magicolor.desc
+++ b/doc/descriptions/magicolor.desc
@@ -39,4 +39,3 @@
:usbid "ignore"
:status :unsupported
:comment "Uses a similar protocol as the magicolor 1690MF, according to Ilia Sotnikov."
-
diff --git a/doc/descriptions/matsushita.desc b/doc/descriptions/matsushita.desc
index 51f330f..e671feb 100644
--- a/doc/descriptions/matsushita.desc
+++ b/doc/descriptions/matsushita.desc
@@ -69,6 +69,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
-
-
diff --git a/doc/descriptions/microtek.desc b/doc/descriptions/microtek.desc
index 09203f5..e573cba 100644
--- a/doc/descriptions/microtek.desc
+++ b/doc/descriptions/microtek.desc
@@ -1,6 +1,6 @@
:backend "microtek"
:version "0.13.1 (unmaintained)"
-:manpage "sane-microtek"
+:manpage "sane-microtek"
:url "http://www.mir.com/mtek/"
:devicetype :scanner
diff --git a/doc/descriptions/microtek2.desc b/doc/descriptions/microtek2.desc
index ae2b78d..8380d17 100644
--- a/doc/descriptions/microtek2.desc
+++ b/doc/descriptions/microtek2.desc
@@ -86,7 +86,7 @@
:status :good
:model "ScanMaker 9800XL"
-:url "/unsupported/microtek-scanmaker-9800.html"
+:url "unsupported/microtek-scanmaker-9800.html"
:interface "IEEE-1394"
:status :minimal
:comment "IEEE-1394 seems to work. See link. More reports welcome."
@@ -164,4 +164,3 @@
:model "ColorPage-EP"
:interface "Parport"
:status :good
-
diff --git a/doc/descriptions/niash.desc b/doc/descriptions/niash.desc
index 9be55f2..e4b66d9 100644
--- a/doc/descriptions/niash.desc
+++ b/doc/descriptions/niash.desc
@@ -57,7 +57,3 @@
:interface "USB"
:usbid "0x047b" "0x1000"
:status :complete
-
-
-
-
diff --git a/doc/descriptions/p5.desc b/doc/descriptions/p5.desc
index 7548902..b62a95a 100644
--- a/doc/descriptions/p5.desc
+++ b/doc/descriptions/p5.desc
@@ -24,7 +24,7 @@
:model "PagePartner"
:interface "Parport (EPP/ECP)"
-:status :basic
+:status :basic
:comment "Sheetfed scanner, work in gray and color, but uncalibrated scans"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc
index ad33faa..be2ec1d 100644
--- a/doc/descriptions/pixma.desc
+++ b/doc/descriptions/pixma.desc
@@ -11,7 +11,7 @@
; See doc/descriptions.txt for details.
:backend "pixma" ; name of backend
-:version "0.17.37" ; version of backend (or "unmaintained")
+:version "0.23.0" ; version of backend (or "unmaintained")
:manpage "sane-pixma" ; name of manpage (if it exists)
;:comment "Devices marked as experimantal are disabled by default. See the manual page for how to enable them."
@@ -28,8 +28,14 @@
:status :untested
:comment "Testers needed!"
-:model "PIXMA E460 Series"
+:model "PIXMA E410 Series"
:interface "USB"
+:usbid "0x04a9" "0x181e"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA E460 Series"
+:interface "USB Ethernet"
:usbid "0x04a9" "0x1788"
:status :untested
:comment "Testers needed!"
@@ -55,8 +61,8 @@
:model "PIXMA E510"
:interface "USB"
:usbid "0x04a9" "0x1761"
-:status :untested
-:comment "Testers needed!"
+:status :complete
+:comment "All resolutions supported (up to 1200DPI)."
:model "PIXMA E560"
:interface "USB"
@@ -76,12 +82,54 @@
:status :untested
:comment "Testers needed!"
-:model "PIXMA G3000"
-:interface "USB WIFI"
+:model "PIXMA E3100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1828"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA E4200 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1855"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA G2000"
+:interface "USB"
+:usbid "0x04a9" "0x1795"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)."
+
+:model "PIXMA G2100"
+:interface "USB"
+:usbid "0x04a9" "0x1795"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)."
+
+:model "PIXMA G3000 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1794"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA G3010 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x183b"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA G4000 Series"
+:interface "USB WiFi"
:usbid "0x04a9" "0x181d"
:status :untested
:comment "Testers needed!"
+:model "PIXMA G4010 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x183d"
+:status :untested
+:comment "Testers needed!"
+
:model "PIXMA MG2100 Series"
:interface "USB"
:usbid "0x04a9" "0x1751"
@@ -245,7 +293,7 @@
:comment "Testers needed!"
:model "PIXMA MG7100 Series"
-:interface "USB"
+:interface "USB Ethernet WiFi"
:usbid "0x04a9" "0x1772"
:status :complete
:comment "All resolutions supported (up to 2400DPI)."
@@ -274,18 +322,6 @@
:status :complete
:comment "All resolutions supported (up to 4800DPI)."
-:model "PIXUS MP5"
-:interface "USB"
-:usbid "0x04a9" "0x2635"
-:status :untested
-:comment "Testers needed! Identical with imageCLASS MPC190."
-
-:model "PIXUS MP10"
-:interface "USB"
-:usbid "0x04a9" "0x261f"
-:status :complete
-:comment "All resolutions supported (up to 600DPI). Identical with imageCLASS MPC200."
-
:model "PIXMA MP140"
:interface "USB"
:usbid "0x04a9" "0x172b"
@@ -791,27 +827,207 @@
:status :complete
:comment "Flatbed and ADF scan. All resolutions supported (up to 4800DPI)"
-:model "PIXMA TS9000 Series"
+:model "PIXMA TR4500 Series"
:interface "USB WiFi"
-:usbid "0x04a9" "0x179f"
+:usbid "0x04a9" "0x1854"
:status :untested
:comment "Testers needed!"
-:model "PIXMA TS8000 Series"
+:model "PIXMA TR7500 Series"
:interface "USB WiFi"
-:usbid "0x04a9" "0x1800"
+:usbid "0x04a9" "0x1824"
:status :untested
:comment "Testers needed!"
-:model "PIXMA TS6000 Series"
+:model "PIXMA TR7530 Series"
:interface "USB WiFi"
-:usbid "0x04a9" "0x1801"
+:usbid "0x04a9" "0x1845"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TR8500 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x1823"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TR8530 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x1844"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TR8580 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x1841"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TR9530 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x185e"
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS3100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1827"
+:status :good
+:comment "All resolutions supported (up to 600DPI). WiFi not working."
+
:model "PIXMA TS5000 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x1802"
+:status :good
+:comment "All resolutions supported (up to 1200DPI). WiFi not working."
+
+:model "PIXMA TS5100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1825"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6000 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1801"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1822"
+:status :good
+:comment "All resolutions supported (up to 2400DPI). WiFi not working."
+
+:model "PIXMA TS6130 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1843"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6180 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1840"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6200 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1856"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6230 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1858"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS6280 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1857"
+: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 TS8100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1821"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS8130 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1842"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS8180 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x183f"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS8200 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1859"
+:status :good
+:comment "All resolutions supported (up to 1200DPI). WiFi not working."
+
+:model "PIXMA TS8230 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x185b"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS8280 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x185a"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS9000 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x179f"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS9100 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x1820"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS9180 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x183e"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS9500 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x185c"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS9580 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x185d"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXUS MP5"
+:interface "USB"
+:usbid "0x04a9" "0x2635"
+:status :untested
+:comment "Testers needed! Identical with imageCLASS MPC190."
+
+:model "PIXUS MP10"
+:interface "USB"
+:usbid "0x04a9" "0x261f"
+:status :complete
+:comment "All resolutions supported (up to 600DPI). Identical with imageCLASS MPC200."
+
+:model "PIXUS XK50 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1846"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXUS XK70 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1847"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXUS XK80 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1873"
:status :untested
:comment "Testers needed!"
@@ -833,11 +1049,29 @@
:status :complete
:comment "All resolutions supported (up to 600DPI)"
+:model "imageCLASS D550"
+:interface "USB"
+:usbid "0x04a9" "0x2738"
+:status :untested
+:comment "Testers needed!"
+
+:model "imageCLASS D570"
+:interface "USB"
+:usbid "0x04a9" "0x27e8"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF110 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27ed"
+:status :untested
+:comment "Testers needed! WiFi only for w Types."
+
:model "i-SENSYS MF210 Series"
:interface "USB Ethernet WiFi"
:usbid "0x04a9" "0x27a9"
-:status :untested
-:comment "Testers needed!"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). WiFi only for w Types."
:model "i-SENSYS MF220 Series"
:interface "USB Ethernet WiFi"
@@ -854,8 +1088,88 @@
:model "i-SENSYS MF240 Series"
:interface "USB Ethernet WiFi"
:usbid "0x04a9" "0x27d2"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI, ADF up to 300DPI). 216mm image width buggy, restricted to 215mm."
+
+:model "i-SENSYS MF260 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27f4"
+:status :untested
+:comment "Testers needed! Duplex only for MF269."
+
+:model "i-SENSYS MF410 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27c0"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF420 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27f1"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF510 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27c2"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF520 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27f0"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF620 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27b4"
:status :complete
-:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). ADF only 300DPI."
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+:model "i-SENSYS MF630 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27e1"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF640 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27fe"
+:status :untested
+:comment "Testers needed!"
+
+:model "i-SENSYS MF730 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27e4"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI). Ethernet and WiFi not tested yet"
+
+
+:model "imageCLASS MF634C"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27e2"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+
+:model "imageCLASS MF733Cdw"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27e5"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+:model "i-SENSYS MF731/733"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27e5"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)."
+
+:model "i-SENSYS MF740 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x27fb"
+:status :untested
+:comment "Testers needed!"
:model "i-SENSYS MF810/820"
:interface "USB Ethernet"
@@ -1070,8 +1384,8 @@
:model "imageCLASS MF8030"
:interface "USB"
:usbid "0x04a9" "0x2707"
-:status :untested
-:comment "Testers needed!"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
:model "imageCLASS MF8170c"
:interface "USB"
@@ -1118,30 +1432,54 @@
:model "imageRUNNER 1133"
:interface "USB"
:usbid "0x04a9" "0x2742"
-:status :untested
-:comment "Testers needed!"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
:model "MAXIFY MB2000 Series"
-:interface "USB"
+:interface "USB WiFi"
:usbid "0x04a9" "0x1778"
-:status :untested
-:comment "Testers needed!"
+:status :good
+:comment "Flatbed works, All resolutions supported (up to 1200DPI), ADF does not work"
+
+:model "MAXIFY MB2100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1793"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)."
:model "MAXIFY MB2300 Series"
-:interface "USB"
+:interface "USB Ethernet WiFi"
:usbid "0x04a9" "0x1779"
-:status :untested
-:comment "Testers needed!"
+:status :good
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI), ADF does not work"
+
+:model "MAXIFY MB2700 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1792"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 1200DPI)."
:model "MAXIFY MB5000 Series"
:interface "USB"
:usbid "0x04a9" "0x1776"
-:status :complete
+:status :good
:comment "Flatbed works, All resolutions supported (up to 1200DPI), ADF does not work"
+:model "MAXIFY MB5100 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x1790"
+:status :untested
+:comment "Testers needed!"
+
:model "MAXIFY MB5300 Series"
-:interface "USB"
+:interface "USB Ethernet"
:usbid "0x04a9" "0x1777"
+:status :good
+:comment "1200dpi scans do not work"
+
+:model "MAXIFY MB5400 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x178f"
:status :untested
:comment "Testers needed!"
@@ -1162,3 +1500,15 @@
:usbid "0x04a9" "0x190d"
:status :complete
:comment "Full flatbed support up to 4800DPI (Note: flatbed does not have 9600DPI capability). Full TPU support (negatives, slides and infrared) up to 9600DPI."
+
+:model "CanoScan LiDE 300"
+:interface "USB"
+:usbid "0x04a9" "0x1913"
+:status :complete
+:comment "Support up to 4800DPI (Note: does not have less than 300DPI support)"
+
+:model "CanoScan LiDE 400"
+:interface "USB"
+:usbid "0x04a9" "0x1912"
+:status :complete
+:comment "Support up to 4800DPI (Note: does not have less than 300DPI support)"
diff --git a/doc/descriptions/plustek.desc b/doc/descriptions/plustek.desc
index ba69b47..a8204aa 100644
--- a/doc/descriptions/plustek.desc
+++ b/doc/descriptions/plustek.desc
@@ -5,8 +5,6 @@
:backend "plustek"
:version "0.52"
:manpage "sane-plustek"
-; backend's web page
-:url "http://www.gjaeger.de/scanner/plustek/"
:devicetype :scanner
@@ -202,27 +200,51 @@
:mfg "Canon"
:url "http://www.canon.com/"
-:model "CanoScan N650U/N656U"
+:model "CanoScan N650U"
:interface "USB"
:usbid "0x04a9" "0x2206"
:status :complete
+:model "CanoScan N656U"
+:interface "USB"
+:usbid "0x04a9" "0x2206"
+:status :complete
+:comment "Identical to CanoScan N650U"
+
:model "CanoScan N1220U"
:interface "USB"
:usbid "0x04a9" "0x2207"
:status :complete
-:model "CanoScan N670U/N676U/LiDE20"
+:model "CanoScan N670U"
+:interface "USB"
+:usbid "0x04a9" "0x220d"
+:status :complete
+
+:model "CanoScan N676U"
:interface "USB"
:usbid "0x04a9" "0x220d"
:status :complete
+:comment "Identical to CanoScan N670U"
+
+:model "CanoScan LiDE 20"
+:interface "USB"
+:usbid "0x04a9" "0x220d"
+:status :complete
+:comment "Identical to CanoScan N670U"
+
+:model "CanoScan N1240U"
+:interface "USB"
+:usbid "0x04a9" "0x220e"
+:status :complete
-:model "CanoScan N1240U/LiDE30"
+:model "CanoScan LiDE 30"
:interface "USB"
:usbid "0x04a9" "0x220e"
:status :complete
+:comment "Identical to CanoScan N1240U"
-:model "CanoScan LiDE25"
+:model "CanoScan LiDE 25"
:interface "USB"
:usbid "0x04a9" "0x2220"
:status :good
diff --git a/doc/descriptions/plustek_pp.desc b/doc/descriptions/plustek_pp.desc
index 5b1cec5..fd19262 100644
--- a/doc/descriptions/plustek_pp.desc
+++ b/doc/descriptions/plustek_pp.desc
@@ -5,8 +5,6 @@
:backend "plustek_pp"
:version "0.43"
:manpage "sane-plustek_pp"
-; backend's web page
-:url "http://www.gjaeger.de/scanner/plustek_pp/"
:devicetype :scanner
@@ -153,4 +151,3 @@
:interface "Parport (SPP, EPP)"
:status :complete
:comment "Reported as P12"
-
diff --git a/doc/descriptions/ricoh.desc b/doc/descriptions/ricoh.desc
index b4928f2..bdaea31 100644
--- a/doc/descriptions/ricoh.desc
+++ b/doc/descriptions/ricoh.desc
@@ -26,4 +26,3 @@
:interface "SCSI"
:status :basic
;:comment "?"
-
diff --git a/doc/descriptions/ricoh2.desc b/doc/descriptions/ricoh2.desc
new file mode 100644
index 0000000..55ee372
--- /dev/null
+++ b/doc/descriptions/ricoh2.desc
@@ -0,0 +1,40 @@
+;
+; 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 "ricoh2" ; name of backend
+:version "1.0" ; version of backend (or "unmaintained")
+:new :yes ; Is the backend new to this SANE release?
+ ; :yes or :no
+:manpage "sane-ricoh2" ; name of manpage (if it exists)
+:url "http://www.ricoh.com/" ; backend's web page
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Ricoh" ; name a manufacturer
+:url "http://www.ricoh.com/" ; manufacturer's URL
+
+:model "SG-3100SNw"
+:status :basic
+:interface "USB"
+:usbid "0x05ca" "0x0438"
+
+:model "SP-100SU"
+:status :untested
+:interface "USB"
+:usbid "0x05ca" "0x042c"
+
+:model "SP-111SU"
+:status :basic
+:interface "USB"
+:usbid "0x05ca" "0x0448"
diff --git a/doc/descriptions/rts8891.desc b/doc/descriptions/rts8891.desc
index e37f158..7d5a63c 100644
--- a/doc/descriptions/rts8891.desc
+++ b/doc/descriptions/rts8891.desc
@@ -12,10 +12,10 @@
:backend "rts8891" ; name of backend
:version "1.0-0 (unmaintained)" ; version of backend (or "unmaintained")
:manpage "sane-rts8891" ; name of manpage (if it exists)
-:url "http://stef.dev.free.fr/sane/rts8891/index.html"
+:url "http://stef.dev.free.fr/sane/rts8891/index.html"
; backend's web page
-:comment "This backend supports Realtek RTS8891 ASIC bases scanners."
+:comment "This backend supports Realtek RTS8891 ASIC bases scanners."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
diff --git a/doc/descriptions/sceptre.desc b/doc/descriptions/sceptre.desc
index aa4f515..e636bdb 100644
--- a/doc/descriptions/sceptre.desc
+++ b/doc/descriptions/sceptre.desc
@@ -18,13 +18,13 @@
:mfg "Sceptre"
:url "http://www.sceptre.com/"
-:model "Vividscan S1200"
+:model "Vividscan S1200"
:interface "SCSI"
:status :basic
:mfg "Komodo"
:url "http://www.komodo.com/"
-:model "S1200"
+:model "S1200"
:interface "SCSI"
:status :untested
:comment "rebadged Sceptre S1200"
diff --git a/doc/descriptions/sharp.desc b/doc/descriptions/sharp.desc
index 63000af..10349ba 100644
--- a/doc/descriptions/sharp.desc
+++ b/doc/descriptions/sharp.desc
@@ -1,7 +1,7 @@
:backend "sharp" ; name of backend
:version "0.32 (unmaintained)" ; version of backend
;:status :beta ; :alpha, :beta, :stable, :new
-:url "http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html"
+:url "http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html"
; backend's homepage
:manpage "sane-sharp"
:devicetype :scanner
diff --git a/doc/descriptions/sm3840.desc b/doc/descriptions/sm3840.desc
index e40193f..75c499c 100644
--- a/doc/descriptions/sm3840.desc
+++ b/doc/descriptions/sm3840.desc
@@ -14,7 +14,7 @@
:version "1.1 (unmaintained)" ; version of backend (or "unmaintained")
:manpage "sane-sm3840" ; name of manpage (if it exists)
:url "http://www.ziplabel.com/sm3840/" ; backend's web page
-:comment "This reverse-engineered backend supports the USB ScanMaker 3840 model"
+:comment "This reverse-engineered backend supports the USB ScanMaker 3840 model"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -52,5 +52,3 @@
; and at the top-level.
; :status specifier is optional after :model and at the top-level
-
-
diff --git a/doc/descriptions/tamarack.desc b/doc/descriptions/tamarack.desc
index 731e6b8..7b52fd5 100644
--- a/doc/descriptions/tamarack.desc
+++ b/doc/descriptions/tamarack.desc
@@ -32,4 +32,3 @@
:interface "SCSI"
:status :good
:comment "3 pass, 600 DPI"
-
diff --git a/doc/descriptions/teco1.desc b/doc/descriptions/teco1.desc
index e5b4132..1b37918 100644
--- a/doc/descriptions/teco1.desc
+++ b/doc/descriptions/teco1.desc
@@ -122,6 +122,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
-
-
diff --git a/doc/descriptions/teco3.desc b/doc/descriptions/teco3.desc
index a2f3e92..0a84ab2 100644
--- a/doc/descriptions/teco3.desc
+++ b/doc/descriptions/teco3.desc
@@ -57,6 +57,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
-
-
diff --git a/doc/descriptions/template.desc. b/doc/descriptions/template.desc.
index 25b9b5a..a6b6bab 100644
--- a/doc/descriptions/template.desc.
+++ b/doc/descriptions/template.desc.
@@ -17,7 +17,7 @@
:manpage "sane-template" ; name of manpage (if it exists)
:url "http://www.luser.com/temp/" ; backend's web page
:url "http://www.luser.com/b/" ; another backend webpage
-:comment "This backend supports only the USB and SCSI models"
+:comment "This backend supports only the USB and SCSI models"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -77,5 +77,3 @@
; and at the top-level.
; :status specifier is optional after :model and at the top-level
-
-
diff --git a/doc/descriptions/test.desc b/doc/descriptions/test.desc
index 657c2ea..e0989f4 100644
--- a/doc/descriptions/test.desc
+++ b/doc/descriptions/test.desc
@@ -20,4 +20,3 @@
:desc "Frontend-tester"
:comment "Backend for testing frontends. Also serves as example for SANE backend options."
-
diff --git a/doc/descriptions/u12.desc b/doc/descriptions/u12.desc
index ccf37f0..81bed1c 100644
--- a/doc/descriptions/u12.desc
+++ b/doc/descriptions/u12.desc
@@ -5,8 +5,6 @@
:backend "u12"
:version "0.02"
:manpage "sane-u12"
-; backend's web page
-:url "http://www.gjaeger.de/scanner/u12/"
:devicetype :scanner
diff --git a/doc/descriptions/umax_pp.desc b/doc/descriptions/umax_pp.desc
index e07a4a0..f95e82f 100644
--- a/doc/descriptions/umax_pp.desc
+++ b/doc/descriptions/umax_pp.desc
@@ -22,41 +22,41 @@
:mfg "UMAX" ; name a manufacturer
:url "http://www.umax.com.tw/"
-; These scanners are known to have the same ASIC family.
+; These scanners are known to have the same ASIC family.
:model "Astra 1220P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 2000P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 1600P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 600P"
:interface "Parport (SPP/ECP)"
-:status :unsupported
+:status :unsupported
:comment "untested, but should be close to 610P"
:model "Astra 610P"
:interface "Parport (SPP/ECP)"
-:status :good
+:status :good
:mfg "Hewlett-Packard"
:model "Scanjet 3200C"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:comment "works (relabelled 1220P and 2000P)"
:mfg "Genius"
:model "ColorPage-Life Pro"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:comment "works (relabelled 1220P and 2000P)"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
diff --git a/doc/descriptions/unsupported.desc b/doc/descriptions/unsupported.desc
index 2217594..496ebea 100644
--- a/doc/descriptions/unsupported.desc
+++ b/doc/descriptions/unsupported.desc
@@ -10,7 +10,7 @@
:backend "unsupported" ; name of backend
:version "2010-06-09" ; version of backend
-:url "/contrib.html"
+:url "contrib.html"
;:manpage "sane-mustek" ; name of manpage (if it exists)
:comment "The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs."
@@ -21,14 +21,14 @@
:mfg "Agfa"
:model "DuoScan f40"
-:url "/unsupported/agfa-duoscan-f40.html"
+:url "unsupported/agfa-duoscan-f40.html"
:interface "USB IEEE-1394"
:usbid "0x06bd" "0x02bf"
:status :unsupported
:comment "Unsupported. See link for details."
:model "DuoScan T2000XL"
-:url "/unsupported/agfa-duoscan-t2000xl.html"
+:url "unsupported/agfa-duoscan-t2000xl.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. Same as Microtek ArtixScan 2020?"
@@ -39,25 +39,25 @@
:comment "Unsupported. Same as Microtek Artixscan 2500f"
:model "SnapScan 310P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan EZ"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan 1200P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan 1212P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
@@ -68,7 +68,7 @@
:url "http://www.artecusa.com/"
:model "1236 USB"
-:url "/unsupported/artec_1236usb.html"
+:url "unsupported/artec_1236usb.html"
:interface "USB"
:usbid "0x05d8" "0x4001"
:status :unsupported
@@ -80,7 +80,7 @@
:comment "Unsupported. Chips found inside: AT015, AD9816JS. Maybe similar to SCSI version or as6e?"
:model "Ultima 2000 (0x4001)"
-:url "/unsupported/artec-ultima-2000-2.html"
+:url "unsupported/artec-ultima-2000-2.html"
:interface "USB"
:usbid "0x05d8" "0x4001"
:status :unsupported
@@ -91,7 +91,7 @@
:mfg "Avigramm"
:model "Minidoc"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -113,14 +113,14 @@
:comment "Not supported. No chipset information available. Same as UMAX Astra 6700."
:model "iVina 1600"
-:url "/unsupported/umax-astra-4500.html"
+:url "unsupported/umax-astra-4500.html"
:interface "USB"
:usbid "0x0638" "0x0a10"
:status :unsupported
:comment "GL646 based, to be added to genesys backend. Same as UMAX Astra 4500."
:model "iVina FB1800"
-:url "/unsupported/umax-astra-4700.html"
+:url "unsupported/umax-astra-4700.html"
:interface "USB"
:usbid "0x0638" "0x0a20"
:status :unsupported
@@ -134,49 +134,49 @@
:comment "Formerly Acer Peripherals"
:model "310P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "320P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "340P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "610P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "610PT"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "620P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "620PT"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "640P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
@@ -188,7 +188,7 @@
:comment "Unsupported."
:model "5550"
-:url "/unsupported/benq-5550.html"
+:url "unsupported/benq-5550.html"
:interface "USB"
:usbid "0x04a5" "0x2211"
:status :unsupported
@@ -198,10 +198,10 @@
:interface "USB"
:usbid "0x04a5" "0x2311"
:status :unsupported
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html"
:model "7400UT"
-:url "/unsupported/benq-7400ut.html"
+:url "unsupported/benq-7400ut.html"
:interface "USB"
:usbid "0x04a5" "0x2202"
:status :unsupported
@@ -211,7 +211,7 @@
:mfg "Boeder"
:model "Sm@rtScan Office"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -223,7 +223,7 @@
:url "http://www.brother.com/"
:model "MFC 2500"
-:url "/unsupported/brother-mfc-2500.html"
+:url "unsupported/brother-mfc-2500.html"
:interface "USB"
:usbid "0x04f9" "0x000a"
:status :unsupported
@@ -236,13 +236,13 @@
:comment "The parport 200x400dpi grayscale version of this scanner is unsupported. Dmitri Katchalov did some investigations on this scanner. If you want to write a backend, contact him (see link)."
:model "MFC 7300c"
-:url "/unsupported/brother-mfc-7300.html"
+:url "unsupported/brother-mfc-7300.html"
:interface "Parport USB"
:usbid "0x04f9" "0x0106"
:status :unsupported
:model "MFC 9600"
-:url "/unsupported/brother-mfc-9600.html"
+:url "unsupported/brother-mfc-9600.html"
:interface "USB"
:usbid "0x04f9" "0x0101"
:status :unsupported
@@ -253,7 +253,7 @@
:url "http://www.c-channel.ch/"
:model "MyPen Pro"
-:url "/unsupported/c-channel-mypen-pro.html"
+:url "unsupported/c-channel-mypen-pro.html"
:interface "USB"
;:usbid "" ""
:status :unsupported
@@ -266,7 +266,7 @@
:comment "See bug #306792 for details."
:model "MoneyPen II"
-;:url "/unsupported/c-channel-mypen-pro.html"
+;:url "unsupported/c-channel-mypen-pro.html"
:interface "USB"
;:usbid "" ""
:status :unsupported
@@ -278,120 +278,112 @@
:url "http://www.canon.com/"
:model "CanoScan 3000"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based."
:model "CanoScan 3000ex"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based."
:model "CanoScan 3000F"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based, to be added to genesys backend"
:model "CanoScan 4200F"
-:url "/unsupported/canon-4200f.html"
+:url "unsupported/canon-4200f.html"
:interface "USB"
:usbid "0x04a9" "0x221b"
:status :unsupported
:comment "Probably unsupported. See link."
:model "CanoScan 4400F"
-:url "/unsupported/canon-4400.html"
+:url "unsupported/canon-4400.html"
:interface "USB"
:usbid "0x04a9" "0x2228"
:status :unsupported
:comment "GL843 based, to be added to genesys backend"
:model "CanoScan 5000F"
-:url "/unsupported/canon-5000f.html"
+:url "unsupported/canon-5000f.html"
:interface "USB"
:usbid "0x04a9" "0x2212"
:status :unsupported
:comment "Unsupported. See link for details."
:model "CanoScan 5200F"
-:url "/unsupported/canon-5200f.html"
+:url "unsupported/canon-5200f.html"
:interface "USB"
:usbid "0x04a9" "0x2217"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "CanoScan 8000F"
-:url "/unsupported/canon-8000f.html"
+:url "unsupported/canon-8000f.html"
:interface "USB"
:usbid "0x04a9" "0x220f"
:status :unsupported
:comment "Not supported. See link for more information. With transparency adapter."
:model "CanoScan 8400F"
-:url "/unsupported/canon-8400f.html"
+:url "unsupported/canon-8400f.html"
:interface "USB"
:usbid "0x04a9" "0x221e"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
-:model "CanoScan 8600F"
-:url "/unsupported/canon-8600.html"
-:interface "USB"
-:usbid "0x04a9" "0x2229"
-:status :unsupported
-:comment "GL841 based, to be added to genesys backend"
-
-
:model "CanoScan 9900F"
-:url "/unsupported/canon-9900f.html"
+:url "unsupported/canon-9900f.html"
:interface "USB"
:usbid "0x04a9" "0x2210"
:status :unsupported
:comment "Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter."
:model "CanoScan 9950F"
-:url "/unsupported/canon-9950f.html"
+:url "unsupported/canon-9950f.html"
:interface "USB"
:usbid "0x04a9" "0x2219"
:status :unsupported
:comment "Probably unsupported."
:model "CanoScan D646U"
-:url "/unsupported/canon-d646u.html"
+:url "unsupported/canon-d646u.html"
:interface "USB"
:usbid "0x04a9" "0x220b"
:status :unsupported
:comment "Probably not supported. See link for more information and test program."
:model "CanoScan D646U ex"
-:url "/unsupported/canon-d646u.html"
+:url "unsupported/canon-d646u.html"
:interface "USB"
:usbid "0x04a9" "0x220b"
:status :unsupported
:comment "Probably not supported. See D646."
:model "CanoScan D1230U"
-:url "/unsupported/canon-d1230u.html"
+:url "unsupported/canon-d1230u.html"
:interface "USB"
:usbid "0x04a9" "0x2209"
:status :unsupported
:comment "Probably not supported. "
:model "CanoScan D1250U2"
-:url "/unsupported/canon-d1250u2.html"
+:url "unsupported/canon-d1250u2.html"
:interface "USB"
:usbid "0x04a9" "0x220c"
:status :unsupported
:comment "Not supported. However, someone started working on this scanner and some information is available (see link)."
:model "CanoScan D2400UF"
-:url "/unsupported/canon-d2400uf.html"
+:url "unsupported/canon-d2400uf.html"
:interface "USB"
:usbid "0x04a9" "0x220a"
:status :unsupported
@@ -404,7 +396,7 @@
:comment "Probably not supported. No details known."
:model "CanoScan FB620U"
-:url "/unsupported/canon-fb620u.html"
+:url "unsupported/canon-fb620u.html"
:interface "USB"
:usbid "0x04a9" "0x2202"
:status :unsupported
@@ -425,14 +417,14 @@
:comment "Philips chip. Backend started, see link"
:model "CanoScan LiDE 90"
-:url "/unsupported/canon-lide-90.html"
+:url "unsupported/canon-lide-90.html"
:interface "USB"
:usbid "0x04a9" "0x1900"
:status :unsupported
:comment "Unsupported. See link for details."
:model "CanoScan LiDE 500F"
-:url "/unsupported/canon-canoscan-lide-500f.html"
+:url "unsupported/canon-canoscan-lide-500f.html"
:interface "USB"
:usbid "0x04a9" "0x221f"
:status :unsupported
@@ -453,67 +445,67 @@
:comment "Philips chip. Backend started, see link"
:model "FS4000"
-:url "/unsupported/canon-fs4000.html"
+:url "unsupported/canon-fs4000.html"
:interface "USB SCSI"
:usbid "0x04a9" "0x3042"
:status :unsupported
:comment "Not supported. See link for more details."
:model "IS 12"
-:url "/unsupported/canon-is-12.html"
+:url "unsupported/canon-is-12.html"
:interface "USB"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 22"
-:url "/unsupported/canon-is-22.html"
+:url "unsupported/canon-is-22.html"
:interface "Parport"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 32"
-:url "/unsupported/canon-is-32.html"
+:url "unsupported/canon-is-32.html"
:interface "USB"
:usbid "0x04a9" "0x105d"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 52"
-:url "/unsupported/canon-is-52.html"
+:url "unsupported/canon-is-52.html"
:interface "USB"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "ImageRunner iR1018"
-:url "/unsupported/canon-imagerunner.html"
+: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"
+: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"
+: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"
+:url "unsupported/canon-pixma-mp110.html"
:interface "USB"
:usbid "0x04a9" "0x1700"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "PIXMA MP130"
-:url "/unsupported/canon-pixma-mp130.html"
+:url "unsupported/canon-pixma-mp130.html"
:interface "USB"
:usbid "0x04a9" "0x1701"
:status :unsupported
@@ -528,7 +520,7 @@
:mfg "Chinon"
:model "DS-3000"
-:url "/unsupported/chinon-ds3000.html"
+:url "unsupported/chinon-ds3000.html"
:interface "Parport Serial Port"
:status :unsupported
:comment "Unsupported at the moment, but a backend is in preparation. See link."
@@ -549,7 +541,7 @@
:mfg "Compeye"
:model "Simplex 1236C"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -561,14 +553,14 @@
:url "http://www.cardscan.com/"
:model "Cardscan 500"
-:url "/unsupported/corex-cardscan-500.html"
+:url "unsupported/corex-cardscan-500.html"
:interface "USB"
:usbid "0x08f0" "0x0001"
:status :unsupported
:comment "Probably not supported. Businesscard reader."
:model "Cardscan 700 C"
-:url "/unsupported/corex-cardscan-700.html"
+:url "unsupported/corex-cardscan-700.html"
:interface "USB"
:usbid "0x08f0" "0x0004"
:status :unsupported
@@ -586,14 +578,14 @@
:comment "Probably rebadged Lexmark X5150. May work with sane-lexmark? See bug #312130"
:model "A960"
-:url "/unsupported/dell-a960.html"
+:url "unsupported/dell-a960.html"
:interface "USB"
:usbid "0x413c" "0x5107"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "922"
-:url "/unsupported/dell-922.html"
+:url "unsupported/dell-922.html"
:interface "USB"
:usbid "0x413c" "0x5109"
:status :unsupported
@@ -617,7 +609,7 @@
:comment "Probably unsupported. No details known."
:model "Stylus DX4450"
-:url "/unsupported/epson-stylus-dx4450.html"
+:url "unsupported/epson-stylus-dx4450.html"
:interface "USB"
:usbid "0x04b8" "0x083f"
:status :unsupported
@@ -634,7 +626,7 @@
:url "http://www.bizcardreader.com/"
:model "BizCardReader 900C"
-:url "/unsupported/edt-900c.html"
+:url "unsupported/edt-900c.html"
:interface "USB"
:usbid "0x0a53" "0x5001"
:status :unsupported
@@ -689,6 +681,24 @@
:status :unsupported
:comment "Genesys GL310 chipset, not supported by sane-genesys backend."
+:model "ScanPartner SP25"
+:interface "USB"
+:status :unsupported
+:usbid "0x04c5" "0x1409"
+:comment "Possibly Genesys protocol?"
+
+:model "ScanPartner SP30"
+:interface "USB"
+:status :unsupported
+:usbid "0x04c5" "0x140a"
+:comment "Possibly Genesys protocol?"
+
+:model "ScanPartner SP30F"
+:interface "USB"
+:status :unsupported
+:usbid "0x04c5" "0x140c"
+:comment "Possibly Genesys protocol?"
+
;********************************************************************************************
:mfg "Genius"
@@ -696,41 +706,41 @@
:url "http://www.genius-kye.com/"
:model "ColorPage CS"
-:url "/unsupported/genius-colorpage-cs.html"
+:url "unsupported/genius-colorpage-cs.html"
:interface "SCSI"
:status :unsupported
:comment "Probably unsupported, see link for details."
:model "ColorPage-Slim 1200 USB2"
-:url "/unsupported/genius-colorpage-slim-1200-usb2.html"
+:url "unsupported/genius-colorpage-slim-1200-usb2.html"
:interface "USB"
:usbid "0x0458" "0x2020"
:status :unsupported
:comment "GL841 based, to be added to genesys backend."
:model "ColorPage HR6X Slim"
-:url "/unsupported/genius-colorpage-hr6x.html"
+:url "unsupported/genius-colorpage-hr6x.html"
:interface "USB"
:usbid "0x0458" "0x2019"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "ColorPage HR7X"
-:url "/unsupported/genius-colorpage-hr7x.html"
+:url "unsupported/genius-colorpage-hr7x.html"
:interface "USB"
:usbid "0x0458" "0x2018"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "ColorPage HR7XE"
-:url "/unsupported/genius-colorpage-hr7xe.html"
+:url "unsupported/genius-colorpage-hr7xe.html"
:interface "USB"
:usbid "0x06dc" "0x0012"
:status :unsupported
:comment "Unsuported. See link for details."
:model "ColorPage HR8"
-:url "/unsupported/genius-colorpage-hr8.html"
+:url "unsupported/genius-colorpage-hr8.html"
:interface "USB"
:usbid "0x0458" "0x201c"
:status :unsupported
@@ -741,7 +751,7 @@
:mfg "Guillemot" ; name a manufacturer
:model "SCAN@HOME 48 USB"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -758,7 +768,7 @@
:mfg "Hercules" ; name a manufacturer
:model "SCAN@HOME 48 USB"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -771,7 +781,7 @@
:url "http://www.hp.com/"
:model "Photo Scanner 1000"
-:url "/unsupported/hp-photo-1000.html"
+:url "unsupported/hp-photo-1000.html"
:interface "USB"
:usbid "0x03f0" "0x1001"
:status :unsupported
@@ -783,28 +793,28 @@
:comment "Probably not supported by SANE. No details known. 10x15 cm. Maybe similar to Photo Scanner 1000?"
:model "Photosmart S20 (C5101A)"
-:url "/unsupported/hp-photosmart-s20xi.html"
+:url "unsupported/hp-photosmart-s20xi.html"
:interface "USB"
:usbid "0x03f0" "0x0102"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "Photosmart S20xi (C7150A)"
-:url "/unsupported/hp-photosmart-s20xi.html"
+:url "unsupported/hp-photosmart-s20xi.html"
:interface "USB"
:usbid "0x03f0" "0x0102"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "Photosmart C5100 series"
-:url "/unsupported/hp-photosmart-5100.html"
+:url "unsupported/hp-photosmart-5100.html"
:interface "USB"
:usbid "0x03f0" "0x5811"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "Photosmart C3180"
-:url "/unsupported/hp-photosmart-3180.html"
+:url "unsupported/hp-photosmart-3180.html"
:interface "USB"
:usbid "0x03f0" "0x5611"
:status :unsupported
@@ -817,7 +827,7 @@
:comment "While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms."
:model "ScanJet 4600"
-:url "/unsupported/hp-scanjet-4600.html"
+:url "unsupported/hp-scanjet-4600.html"
:interface "USB"
:usbid "0x03f0" "0x3005"
:comment "Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code"
@@ -830,28 +840,28 @@
:status :unsupported
:model "ScanJet 4890C"
-:url "/unsupported/hp-scanjet-4850.html"
+:url "unsupported/hp-scanjet-4850.html"
:interface "USB"
:usbid "0x03f0" "0x1b05"
:comment "GL843, maybe can be added to genesys backend "
:status :unsupported
:model "ScanJet 5530C Photosmart"
-:url "/unsupported/hp-scanjet-5530.html"
+:url "unsupported/hp-scanjet-5530.html"
:interface "USB"
:usbid "0x03f0" "0x1605"
:comment "Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend"
:status :unsupported
:model "ScanJet 8390"
-:url "/unsupported/hp-scanjet-8390.html"
+:url "unsupported/hp-scanjet-8390.html"
:interface "USB"
:usbid "0x03f0" "0x3805"
:comment "Probably not supported. See link for details."
:status :unsupported
:model "ScanJet G4000"
-:url "/unsupported/hp-g4000.html"
+:url "unsupported/hp-g4000.html"
:interface "USB"
:usbid "0x03f0" "0x4505"
:comment "Probably not supported. See link for details."
@@ -873,7 +883,7 @@
:url "http://www.iomagic.com/"
:model "MobileScan USB"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -885,21 +895,21 @@
:url "http://irislink.com/"
:model "IriScan"
-:url "/unsupported/iris-iriscan.html"
+:url "unsupported/iris-iriscan.html"
:interface "USB"
:usbid "0x0a53" "0x1000"
:status :unsupported
:comment "Unsupported. LM9832/3. See link for details."
:model "IRISPen Translator Executive"
-:url "/unsupported/iris-irispen-translator.html"
+:url "unsupported/iris-irispen-translator.html"
:interface "USB"
:usbid "0x0f43" "0x015a"
:status :unsupported
:comment "Unsupported. See link for details."
:model "IRISCard Pro (IBCR II)"
-:url "/unsupported/iris-business.html"
+:url "unsupported/iris-business.html"
:interface "USB"
:usbid "0x0a38" "0x0301"
:status :unsupported
@@ -921,84 +931,84 @@
:url "http://www.lexmark.com/"
:model "P6250"
-:url "/unsupported/lexmark-p6250.html"
+:url "unsupported/lexmark-p6250.html"
:interface "USB"
:usbid "0x043d" "0x0097"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Photo 3150"
-:url "/unsupported/lexmark-3150.html"
+:url "unsupported/lexmark-3150.html"
:interface "USB"
:usbid "0x043d" "0x007d"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X74"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X75"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X75 PrinTrio"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X83"
-:url "/unsupported/lexmark-x83.html"
+:url "unsupported/lexmark-x83.html"
:interface "USB"
:usbid "0x043d" "0x003d"
:status :unsupported
:comment "Unsupported. GL640."
:model "X2330"
-:url "/unsupported/lexmark-x2330.html"
+:url "unsupported/lexmark-x2330.html"
:interface "USB"
:usbid "0x043d" "0x00bb"
:status :unsupported
:comment "Unsupported. See link for details."
-
+
:model "X3450"
-:url "/unsupported/lexmark-x3450.html"
+:url "unsupported/lexmark-x3450.html"
:interface "USB"
:usbid "0x043d" "0x00f6"
:status :unsupported
:comment "Unsupported. See link for details."
-
+
:model "X5130"
-:url "/unsupported/lexmark-x5130.html"
+:url "unsupported/lexmark-x5130.html"
:interface "USB"
:usbid "0x043d" "0x0065"
:status :unsupported
:comment "Unsupported."
:model "X5150"
-:url "/unsupported/lexmark-x5130.html"
+:url "unsupported/lexmark-x5130.html"
:interface "USB"
:usbid "0x043d" "0x0065"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "X5250"
-:url "/unsupported/lexmark-x5250.html"
+:url "unsupported/lexmark-x5250.html"
:interface "USB"
:usbid "0x043d" "0x0093"
:status :unsupported
:comment "Unsupported."
:model "X6170"
-:url "/unsupported/lexmark-x6170.html"
+:url "unsupported/lexmark-x6170.html"
:interface "USB"
:usbid "0x043d" "0x0072"
:status :unsupported
@@ -1011,14 +1021,14 @@
:comment "Unsupported. See bug #310889 for details."
:model "X7350"
-:url "/unsupported/lexmark-x7350.html"
+:url "unsupported/lexmark-x7350.html"
:interface "USB"
:usbid "0x043d" "0x00b8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X8350"
-:url "/unsupported/lexmark-x8350.html"
+:url "unsupported/lexmark-x8350.html"
:interface "USB"
:usbid "0x043d" "0x00b9"
:status :unsupported
@@ -1035,7 +1045,7 @@
:comment "Most probably unsupported."
:model "PageScan USB"
-:url "/unsupported/logitech-pagescan-usb.html"
+:url "unsupported/logitech-pagescan-usb.html"
:interface "USB"
:usbid "0x046d" "0x040f"
:status :unsupported
@@ -1048,42 +1058,42 @@
:url "http://www.medion.de/"
:model "MD 6190"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x0392"
:status :unsupported
:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
:model "MD 6190"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
:model "MD 40420"
-:url "/unsupported/tevion-md40420.html"
+:url "unsupported/tevion-md40420.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 41260"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 41985"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 42666"
-:url "/unsupported/tevion-md40420.html"
+:url "unsupported/tevion-md40420.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
@@ -1097,21 +1107,21 @@
:comment "Fingerprint sensor. See link for details."
:model "MD 90009"
-:url "/unsupported/tevion-md90009.html"
+:url "unsupported/tevion-md90009.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 90070"
-:url "/unsupported/tevion-md90070.html"
+:url "unsupported/tevion-md90070.html"
:interface "USB"
:usbid "0x05da" "0x3022"
:status :unsupported
:comment "Unsupported. See link for details."
:model "MD 90090"
-:url "/unsupported/tevion-md90070.html"
+:url "unsupported/tevion-md90070.html"
:interface "USB"
:usbid "0x05da" "0x3022"
:status :unsupported
@@ -1123,28 +1133,28 @@
:url "http://www.memorex.com/"
:model "6136u"
-:url "/unsupported/memorex-maxx-6136u.html"
+:url "unsupported/memorex-maxx-6136u.html"
:interface "USB"
:usbid "0x0461" "0x0346"
:status :unsupported
:comment "Probably unsupported."
:model "6142u"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Probably unsupported. Same as Visioneer Onetouch 4400. See link for details."
:model "MaxxScan 6122"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
:comment "Unsupported. See link for details."
:model "SCF 9612P"
-:url "/unsupported/memorex-scf-9612p.html"
+:url "unsupported/memorex-scf-9612p.html"
:interface "Parport"
:status :unsupported
:comment "Probably unsupported. See link for details."
@@ -1159,7 +1169,7 @@
:comment "Unsupported. Same as Agfa DuoScan T2000XL?"
:model "ArtixScanDI 2020"
-:url "/unsupported/microtek-artixscan-2020.html"
+:url "unsupported/microtek-artixscan-2020.html"
:interface "USB"
:usbid "0x05da" "0x202e"
:status :unsupported
@@ -1176,7 +1186,7 @@
:comment "Unsupported. Uses ALI M5611B."
:model "FilmScan 35"
-:url "/unsupported/microtek-filmscan-35.html"
+:url "unsupported/microtek-filmscan-35.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
@@ -1188,89 +1198,89 @@
:comment "Probably unsupported. Seems to be similar to the Microtek 330 CX and is detected by the microtek2 backend. Scanning doesn't seem to work however."
:model "Scanmaker 1850S"
-:url "/unsupported/microtek-scanmaker-1850s.html"
+:url "unsupported/microtek-scanmaker-1850s.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 3630"
-:url "/unsupported/microtek-scanmaker-3630.html"
+:url "unsupported/microtek-scanmaker-3630.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Unsupported. Doesn't seem to be compatible to 3600 series, see link."
:model "ScanMaker 3800"
-:url "/unsupported/microtek-scanmaker-3800.html"
+:url "unsupported/microtek-scanmaker-3800.html"
:interface "USB"
:usbid "0x05da" "0x30ce"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 3830"
-:url "/unsupported/microtek-scanmaker-3830.html"
+:url "unsupported/microtek-scanmaker-3830.html"
:interface "USB"
:usbid "0x05da" "0x30ce"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 3860"
-:url "/unsupported/microtek-scanmaker-3880.html"
+:url "unsupported/microtek-scanmaker-3880.html"
:interface "USB"
:usbid "0x05da" "0x3023"
:status :unsupported
:comment "Unsupported. See link for more details. Appears to be similar to ScanMaker 3880."
:model "ScanMaker 3880"
-:url "/unsupported/microtek-scanmaker-3880.html"
+:url "unsupported/microtek-scanmaker-3880.html"
:interface "USB"
:usbid "0x05da" "0x3021"
:status :unsupported
:comment "Unsupported. SQ113 chip. See link for more details."
:model "ScanMaker 4600"
-:url "/unsupported/microtek-scanmaker-4600.html"
+:url "unsupported/microtek-scanmaker-4600.html"
:interface "USB"
:usbid "0x05da" "0x40c7"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 4700"
-:url "/unsupported/microtek-scanmaker-4700.html"
+:url "unsupported/microtek-scanmaker-4700.html"
:interface "USB"
:usbid "0x05da" "0x20b4"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 4850"
-:url "/unsupported/microtek-scanmaker-4900.html"
+:url "unsupported/microtek-scanmaker-4900.html"
:interface "USB"
:usbid "0x05da" "0x30d9"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ScanMaker 4850 II"
-:url "/unsupported/microtek-scanmaker-4850-2.html"
+:url "unsupported/microtek-scanmaker-4850-2.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ScanMaker 4900"
-:url "/unsupported/microtek-scanmaker-4900.html"
+:url "unsupported/microtek-scanmaker-4900.html"
:interface "USB"
:usbid "0x05da" "0x30b9"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 5"
-:url "/unsupported/microtek-scanmaker-5600.html"
+:url "unsupported/microtek-scanmaker-5600.html"
:interface "SCSI"
:status :unsupported
:comment "Probably unsupported. See link for more details."
:model "ScanMaker 5600"
-:url "/unsupported/microtek-scanmaker-5600.html"
+:url "unsupported/microtek-scanmaker-5600.html"
:interface "USB"
:usbid "0x05da" "0x20a7"
:status :unsupported
@@ -1283,49 +1293,49 @@
:comment "Unsupported. Uses ALI M5615 like the ScanMaker 4700."
:model "ScanMaker 5800"
-:url "/unsupported/microtek-scanmaker-5800.html"
+:url "unsupported/microtek-scanmaker-5800.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 5800"
-:url "/unsupported/microtek-scanmaker-5800.html"
+:url "unsupported/microtek-scanmaker-5800.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 5900"
-:url "/unsupported/microtek-scanmaker-5900.html"
+:url "unsupported/microtek-scanmaker-5900.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 5950"
-:url "/unsupported/microtek-scanmaker-5950.html"
+:url "unsupported/microtek-scanmaker-5950.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6000"
-:url "/unsupported/microtek-scanmaker-6000.html"
+:url "unsupported/microtek-scanmaker-6000.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6100"
-:url "/unsupported/microtek-scanmaker-6100.html"
+:url "unsupported/microtek-scanmaker-6100.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6700"
-:url "/unsupported/microtek-scanmaker-6700.html"
+:url "unsupported/microtek-scanmaker-6700.html"
:interface "USB IEEE-1394"
:usbid "0x05da" "0x20c9"
:status :unsupported
@@ -1333,7 +1343,7 @@
:model "ScanMaker 8700"
:status :unsupported
-:url "/unsupported/microtek-scanmaker-8700.html"
+:url "unsupported/microtek-scanmaker-8700.html"
:interface "USB IEEE-1394"
:usbid "0x05da" "0x20b1"
:comment "Unsupported. See link for details. USB vendor and product ids to be checked."
@@ -1345,35 +1355,35 @@
:comment "Probably unsupported. SCSI seems to work with microtek2 backend."
:model "ScanMaker 9800XL"
-:url "/unsupported/microtek-scanmaker-9800.html"
+:url "unsupported/microtek-scanmaker-9800.html"
:interface "USB SCSI"
:usbid "0x05da" "0x20de"
:status :unsupported
:comment "Partly unsupported. IEEE-1394 works with microtek2 backend. See link."
:model "ScanMaker i320"
-:url "/unsupported/microtek-scanmaker-i320.html"
+:url "unsupported/microtek-scanmaker-i320.html"
:interface "USB"
:usbid "0x05da" "0x30e6"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanMaker s400"
-:url "/unsupported/microtek-scanmaker-s400.html"
+:url "unsupported/microtek-scanmaker-s400.html"
:interface "USB"
:usbid "0x05da" "0x201c"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanMaker S400"
-:url "/unsupported/microtek-scanmaker-s400.html"
+:url "unsupported/microtek-scanmaker-s400.html"
:interface "USB"
:usbid "0x05da" "0x300b"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanPort 3000"
-:url "/unsupported/microtek-scanport-3000.html"
+:url "unsupported/microtek-scanport-3000.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
@@ -1386,35 +1396,35 @@
:url "http://www.konicaminolta.com/"
:model "Dual Scan III"
-:url "/unsupported/minolta-dual-scan-III.html"
+:url "unsupported/minolta-dual-scan-III.html"
:interface "USB"
:usbid "0x0686" "0x400d"
:status :unsupported
:comment "Unsupported. May work with vuescan. See link for details."
:model "Dual Scan IV"
-:url "/unsupported/minolta-dual-scan-IV.html"
+:url "unsupported/minolta-dual-scan-IV.html"
:interface "USB"
:usbid "0x132b" "0x000a"
:status :unsupported
:comment "Unsupported. Works with vuescan. See link for details."
:model "DiMAGE Scan Elite 5400"
-:url "/unsupported/minolta-dse-5400.html"
+:url "unsupported/minolta-dse-5400.html"
:interface "USB IEEE-1394"
:usbid "0x0686" "0x400e"
:status :unsupported
:comment "Probably unsupported. May work with vuescan. See link for details."
:model "DiMAGE Scan Elite 5400 2"
-:url "/unsupported/minolta-dse-5400-2.html"
+:url "unsupported/minolta-dse-5400-2.html"
:interface "USB"
:usbid "0x132b" "0x0012"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "DiMAGE Scan Multi Pro"
-:url "/unsupported/minolta-dimage-scan-multi-pro.html"
+:url "unsupported/minolta-dimage-scan-multi-pro.html"
:interface "IEEE-1394"
:status :unsupported
:comment "Probably unsupported. See link for details."
@@ -1450,21 +1460,21 @@
:status :unsupported
:model "BearPaw 2448 CU Pro"
-:url "/unsupported/mustek-bearpaw-2448-cu-pro.html"
+:url "unsupported/mustek-bearpaw-2448-cu-pro.html"
:usbid "0x055f" "0x0408"
:interface "USB"
:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
:status :unsupported
:model "BearPaw 4800 TA Pro"
-:url "/unsupported/mustek-bearpaw-4800ta-pro.html"
+:url "unsupported/mustek-bearpaw-4800ta-pro.html"
:interface "USB"
:usbid "0x055f" "0x1000"
:comment "Not supported. See link for some information."
:status :unsupported
:model "BearPaw 4800 TA Pro II"
-:url "/unsupported/mustek-bearpaw-4800ta-pro-ii.html"
+:url "unsupported/mustek-bearpaw-4800ta-pro-ii.html"
:interface "USB"
:usbid "0x055f" "0x040a"
:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
@@ -1521,7 +1531,7 @@
:comment "Probably unsupported. USB business card scanner. Maybe works as USB storage device?"
:model "ScanMagic 9636P"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html"
:interface "Parport"
:status :unsupported
:comment "Probably not supported. Same as Mustek 12000 P?. ASIC 1505."
@@ -1532,7 +1542,7 @@
:url "http://www.nevt.co.jp/"
:model "Petiscan"
-:url "/unsupported/nec-petiscan.html"
+:url "unsupported/nec-petiscan.html"
:interface "USB"
:usbid "0x0475" "0x0100"
:status :unsupported
@@ -1544,7 +1554,7 @@
:url "http://www.nikon.com/"
:model "LS-9000 ED"
-:url "/unsupported/nikon-ls9000-ed.html"
+:url "unsupported/nikon-ls9000-ed.html"
:interface "IEEE-1394"
:status :unsupported
:comment "Probably not supported. See link for details. Possibly similar to LS-8000 ED."
@@ -1555,7 +1565,7 @@
:url "http://www.olivetti.com"
:model "Job-Jet M400"
-:url "/unsupported/olivetti-job-jet-m400.html"
+:url "unsupported/olivetti-job-jet-m400.html"
:interface "USB"
:usbid "0x0b3c" "0xa880"
:status :unsupported
@@ -1566,12 +1576,12 @@
:url "http://www.olympus.com"
:model "ES-10P"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html"
:interface "Parport"
:status :unsupported
:model "ES-10S"
-:url "/unsupported/olympus-es10s.html"
+:url "unsupported/olympus-es10s.html"
:interface "SCSI"
:status :unsupported
:comment "Probably not supported. See link for details."
@@ -1696,7 +1706,7 @@
:mfg "Pentax"
:model "DSmobile USB"
-:url "/unsupported/syscan-travelscan-pro.html"
+:url "unsupported/syscan-travelscan-pro.html"
:interface "USB"
:usbid "0x0a82" "0x2000"
:status :unsupported
@@ -1709,7 +1719,7 @@
:comment "Pacific Image Electronics"
:model "Primefilm 1800u"
-:url "/unsupported/pie-1800u.html"
+:url "unsupported/pie-1800u.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
@@ -1718,7 +1728,7 @@
:model "Primefilm 2700"
:interface "USB"
:status :unsupported
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html"
:model "Primefilm 3600PRO"
:interface "USB IEEE-1394"
@@ -1726,14 +1736,14 @@
:comment "Probably not supported. "
:model "Powerslide 3600"
-:url "/unsupported/reflecta-digitdia-3600.html"
+:url "unsupported/reflecta-digitdia-3600.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0142"
:status :unsupported
:comment "Probably unsupported. Film scanner that can scan directly from the magazine."
:model "PF3650 Pro3 Film Scanner"
-:url "/unsupported/pie-pf3650.html"
+:url "unsupported/pie-pf3650.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0143"
:status :unsupported
@@ -1750,7 +1760,7 @@
:url "http://www.plustek.com/"
:model "OpticFilm 7200"
-:url "/unsupported/plustek-opticfilm-7200.html"
+:url "unsupported/plustek-opticfilm-7200.html"
:interface "USB"
:usbid "0x07b3" "0x0807"
:status :unsupported
@@ -1773,21 +1783,21 @@
:comment "Uses RealTek chipset (RTL8801D)"
:model "OpticPro S12"
-:url "/unsupported/plustek-opticpro-st12.html"
+:url "unsupported/plustek-opticpro-st12.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
:model "OpticPro ST12"
-:url "/unsupported/plustek-opticpro-st12.html"
+:url "unsupported/plustek-opticpro-st12.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
:model "OpticPro ST16"
-:url "/unsupported/plustek-opticpro-st16.html"
+:url "unsupported/plustek-opticpro-st16.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
@@ -1799,14 +1809,14 @@
:comment "Probably LM983x based."
:model "OpticPro S24"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
:comment "Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend."
:model "OpticPro ST24"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
@@ -1814,83 +1824,83 @@
:model "OpticPro S28"
:interface "USB"
-:url "/unsupported/plustek-opticpro-s28.html"
+:url "unsupported/plustek-opticpro-s28.html"
:usbid "0x07b3" "0x0801"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST28"
-:url "/unsupported/plustek-opticpro-s28.html"
+:url "unsupported/plustek-opticpro-s28.html"
:interface "USB"
:usbid "0x07b3" "0x0801"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST28"
-:url "/unsupported/plustek-opticpro-st28.html"
+:url "unsupported/plustek-opticpro-st28.html"
:interface "USB"
:usbid "0x07b3" "0x0802"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "Umax AstraScan 4750"
-:url "/unsupported/umax-astrscan-4750.html"
+:url "unsupported/umax-astrscan-4750.html"
:interface "USB"
:usbid "0x07b3" "0x0802"
:status :unsupported
:comment "GL841 based, to be added to genesys backend, rebadged Plustek ST28"
:model "OpticPro ST48"
-:url "/unsupported/plustek-opticpro-st48.html"
+:url "unsupported/plustek-opticpro-st48.html"
:interface "USB"
:usbid "0x07b3" "0x0800"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST64"
-:url "/unsupported/plustek-opticpro-st64.html"
+:url "unsupported/plustek-opticpro-st64.html"
:interface "USB"
:usbid "0x07b3" "0x0c00"
:status :unsupported
:comment "GL843 based, maybe to be added to genesys backend"
:model "OpticPro ST64+"
-:url "/unsupported/plustek-opticpro-st64plus.html"
+:url "unsupported/plustek-opticpro-st64plus.html"
:interface "USB"
:usbid "0x07b3" "0x0c03"
:status :unsupported
:comment "GL843 based. See link for more details."
:model "PL 806"
-:url "/unsupported/plustek-pl806.html"
+:url "unsupported/plustek-pl806.html"
:interface "USB"
:usbid "0x07b3" "0x0c0c"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "SmartOffice PL 812"
-:url "/unsupported/plustek-pl812.html"
+:url "unsupported/plustek-pl812.html"
:interface "USB"
:usbid "0x07b3" "0x0c0d"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "OpticSlim 500"
-:url "/unsupported/plustek-opticslim-500.html"
+:url "unsupported/plustek-opticslim-500.html"
:interface "USB"
:usbid "0x07b3" "0x0458"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "OpticSlim 2420"
-:url "/unsupported/plustek-opticslim-2420.html"
+:url "unsupported/plustek-opticslim-2420.html"
:interface "USB"
:usbid "0x07b3" "0x0806"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticSlim 2420+"
-:url "/unsupported/plustek-opticslim-2420plus.html"
+:url "unsupported/plustek-opticslim-2420plus.html"
:interface "USB"
:usbid "0x07b3" "0x0914"
:status :unsupported
@@ -1907,7 +1917,7 @@
:comment "Business card reader. No further information available."
:model "ScanCopy 115"
-:url "/unsupported/plustek-scancopy-115.html"
+:url "unsupported/plustek-scancopy-115.html"
:interface "USB"
:usbid "0x07b3" "0x081c"
:status :unsupported
@@ -1966,7 +1976,7 @@
:comment "Probably not supported. No details known."
:model "DocuPen R700"
-:url "/unsupported/planon-docupen-r700.html"
+:url "unsupported/planon-docupen-r700.html"
:interface "USB"
:usbid "0x10c4" "0xea60"
:status :unsupported
@@ -1983,7 +1993,7 @@
:url "http://www.primax.nl/"
:model "Colorado 600U"
-:url "/unsupported/primax-colorado-600u.html"
+:url "unsupported/primax-colorado-600u.html"
:interface "USB"
:usbid "0x0461" "0x0341"
:status :unsupported
@@ -2002,7 +2012,7 @@
:comment "Probably unsupported. No details known."
:model "Primascan Colorado 2600u"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
@@ -2021,7 +2031,7 @@
:comment "Not supported. However, a stand-alone program is available."
:model "Colorado USB 9600"
-:url "/unsupported/primax-colorado-usb-9600.html"
+:url "unsupported/primax-colorado-usb-9600.html"
:interface "USB"
:usbid "0x0461" "0x0340"
:status :unsupported
@@ -2086,7 +2096,7 @@
:comment "Maybe GL646. Maybe similar to Medion MD 6228?"
:model "Onetouch 8920"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x0461" "0x0371"
:status :unsupported
@@ -2098,7 +2108,7 @@
:url "http://www.fida.com/"
:model "Winscan Pro 2448U"
-:url "/unsupported/prolink-2448u.html"
+:url "unsupported/prolink-2448u.html"
:interface "USB"
:usbid "0x06dc" "0x0014"
:status :unsupported
@@ -2129,21 +2139,21 @@
:mfg "Reflecta"
:model "DigitDia 3600"
-:url "/unsupported/reflecta-digitdia-3600.html"
+:url "unsupported/reflecta-digitdia-3600.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0142"
:status :unsupported
:comment "Film scanner that can scan directly from the magazine."
:model "iScan 1800"
-:url "/unsupported/reflecta-iscan-1800.html"
+:url "unsupported/reflecta-iscan-1800.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ProScan 4000"
-:url "/unsupported/reflecta-proscan-4000.html"
+:url "unsupported/reflecta-proscan-4000.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0143"
:status :unsupported
@@ -2154,21 +2164,21 @@
:mfg "Relisys"
:model "Eclipse 1200U"
-:url "/unsupported/relisys-eclipse-1200u.html"
+:url "unsupported/relisys-eclipse-1200u.html"
:interface "USB"
:usbid "0x0475" "0x0103"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "Scorpio Ultra 3"
-:url "/unsupported/relisys-scorpio-ultra3.html"
+:url "unsupported/relisys-scorpio-ultra3.html"
:interface "USB"
:usbid "0x0475" "0x0210"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "Episode"
-:url "/unsupported/relisys-episode.html"
+:url "unsupported/relisys-episode.html"
:interface "USB"
:usbid "0x0475" "0x0103"
:status :unsupported
@@ -2184,7 +2194,7 @@
:mfg "Samsung"
:model "SCX-4725FN"
-:url "/unsupported/samsung-scx-4725.html"
+:url "unsupported/samsung-scx-4725.html"
:interface "USB"
:usbid "0x04e8" "0x341f"
:status :unsupported
@@ -2195,7 +2205,7 @@
:mfg "Scanshell"
:model "800N"
-:url "/unsupported/scanshell-800n.html"
+:url "unsupported/scanshell-800n.html"
:interface "USB"
:usbid "0x0a82" "0x6605"
:status :unsupported
@@ -2265,14 +2275,14 @@
:mfg "Syscan"
:model "TravelScan FS-531"
-:url "/unsupported/syscan-travelscan-fs531.html"
+:url "unsupported/syscan-travelscan-fs531.html"
:interface "USB"
:usbid "0x0a82" "0x0530"
:status :unsupported
:comment "Not supported. May work with the Plustek backend in future. See link for details."
:model "TravelScan Pro"
-:url "/unsupported/syscan-travelscan-pro.html"
+:url "unsupported/syscan-travelscan-pro.html"
:interface "USB"
:usbid "0x0a82" "0x2000"
:status :unsupported
@@ -2295,7 +2305,7 @@
:comment "Unsupported at the moment. See link for a project for that scanner."
:model "Artiscan 2400FS"
-:url "/unsupported/tamarack-artiscan-2400.html"
+:url "unsupported/tamarack-artiscan-2400.html"
:interface "USB"
:usbid "0x05e3" "0x0100"
:status :unsupported
@@ -2308,7 +2318,7 @@
:url "http://www.tce.com.br/"
:model "MK600U"
-:url "/unsupported/memorex-maxx-6136u.html"
+:url "unsupported/memorex-maxx-6136u.html"
:interface "USB"
:usbid "0x0461" "0x0346"
:status :unsupported
@@ -2326,7 +2336,7 @@
:url "http://www.tecoimage.com.tw/"
:model "VM6509F"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -2337,7 +2347,7 @@
:mfg "Tiny"
:model "FU661E"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
@@ -2349,19 +2359,19 @@
:url "http://www.trust-site.com"
:model "CombiScan 19200"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
:comment "Unsupported. See link for details."
:model "EasyScan 19200"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html"
:interface "Parport"
:status :unsupported
:model "SCSI Scan 19200 -Excellence Series-"
-:url "/unsupported/trust-scsi-scan-19200.html"
+:url "unsupported/trust-scsi-scan-19200.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. See link for details."
@@ -2372,49 +2382,49 @@
:url "http://www.umax.com/"
:model "Astra 2500"
-:url "/unsupported/umax-astra-2500.html"
+:url "unsupported/umax-astra-2500.html"
:interface "USB"
:usbid "0x0461" "0x0374"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 2850"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
:comment "Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details."
:model "Astra 3000"
-:url "/unsupported/umax-astra-3000.html"
+:url "unsupported/umax-astra-3000.html"
:interface "USB"
:usbid "0x0461" "0x038a"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 3600"
-:url "/unsupported/umax-astra-3600.html"
+:url "unsupported/umax-astra-3600.html"
:interface "USB"
:usbid "0x0461" "0x038a"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 4000"
-:url "/unsupported/umax-astra-4000.html"
+:url "unsupported/umax-astra-4000.html"
:interface "USB"
:usbid "0x1606" "0x1030"
:status :unsupported
:comment "Not supported. See link for details."
:model "Astra 4100"
-:url "/unsupported/umax-astra-4100.html"
+:url "unsupported/umax-astra-4100.html"
:interface "USB"
:usbid "0x0461" "0x038c"
:status :unsupported
:comment "Not supported, to be added to genesys backend."
:model "Astra 4500"
-:url "/unsupported/umax-astra-4500.html"
+:url "unsupported/umax-astra-4500.html"
:interface "USB"
:usbid "0x0638" "0x0a10"
:status :unsupported
@@ -2426,7 +2436,7 @@
:comment "Probably not supported, no details known."
:model "Astra 4700"
-:url "/unsupported/umax-astra-4700.html"
+:url "unsupported/umax-astra-4700.html"
:interface "USB"
:usbid "0x0638" "0x0a20"
:status :unsupported
@@ -2439,21 +2449,21 @@
:comment "Not supported. No chipset information available. Same as Avision iVina FB2400."
:model "AstraSlim"
-:url "/unsupported/umax-astraslim.html"
+:url "unsupported/umax-astraslim.html"
:usbid "0x080d" "0x0104"
:interface "USB"
:status :unsupported
:comment "Probably not supported currently. See link for more details."
:model "AstraSlim 1200"
-:url "/unsupported/umax-astraslim-1200.html"
+:url "unsupported/umax-astraslim-1200.html"
:interface "USB"
:usbid "0x080d" "0x0110"
:status :unsupported
:comment "See link for more details."
:model "AstraSlim 6000"
-:url "/unsupported/umax-astraslim-6000.html"
+:url "unsupported/umax-astraslim-6000.html"
:interface "USB"
:usbid "0x080d" "0x0104"
:status :unsupported
@@ -2465,7 +2475,7 @@
:comment "Probably not supported. No details known.."
:model "Powerlook 180"
-:url "/unsupported/umax-powerlook-180.html"
+:url "unsupported/umax-powerlook-180.html"
:interface "USB"
;:usbid "0x3902" "0xc470" #correct?
:status :unsupported
@@ -2481,7 +2491,7 @@
:mfg "Vantas"
:model "3000"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
@@ -2505,35 +2515,35 @@
:comment "Not supported. Id is from Primax? Yet another scanner with the same name?"
:model "9420"
-:url "/unsupported/visioneer-9420.html"
+:url "unsupported/visioneer-9420.html"
:interface "USB"
:usbid "0x0461" "0x03a8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "9450 USB"
-:url "/unsupported/visioneer-9450-usb.html"
+:url "unsupported/visioneer-9450-usb.html"
:interface "USB"
:usbid "0x04a7" "0x0421"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 4400"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Not supported. E5 chipset? See link for more details."
:model "OneTouch 4800 USB"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
:comment "Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details."
:model "OneTouch 5300 USB"
-:url "/unsupported/visioneer-onetouch5300.html"
+:url "unsupported/visioneer-onetouch5300.html"
:interface "USB"
:usbid "0x04a7" "0x0226"
:status :unsupported
@@ -2546,98 +2556,98 @@
:comment "Not supported. Yet another scanner with this name?"
:model "OneTouch 5800 USB"
-:url "/unsupported/visioneer-onetouch5800.html"
+:url "unsupported/visioneer-onetouch5800.html"
:interface "USB"
:usbid "0x04a7" "0x0226"
:status :unsupported
:comment "Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C."
:model "OneTouch 6600"
-:url "/unsupported/visioneer-onetouch6600.html"
+:url "unsupported/visioneer-onetouch6600.html"
:interface "USB"
:usbid "0x04a7" "0x022a"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 7100"
-:url "/unsupported/visioneer-onetouch7100.html"
+:url "unsupported/visioneer-onetouch7100.html"
:interface "USB"
:usbid "0x04a7" "0x0229"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "Onetouch 7700"
-:url "/unsupported/visioneer-onetouch7700.html"
+:url "unsupported/visioneer-onetouch7700.html"
:interface "USB"
:usbid "0x04a7" "0x0380"
:status :unsupported
:comment "LM9832/3 based, to be added to plustek backend"
:model "OneTouch 8100"
-:url "/unsupported/visioneer-onetouch8100.html"
+:url "unsupported/visioneer-onetouch8100.html"
:interface "USB"
:usbid "0x04a7" "0x0321"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 8700"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 8900"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. Same as 8920 but without TA?"
:model "Onetouch 8920"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices."
:model "Onetouch 9000"
-:url "/unsupported/visioneer-onetouch9020.html"
+:url "unsupported/visioneer-onetouch9020.html"
:interface "USB"
:usbid "0x04a7" "0x022c"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 9020"
-:url "/unsupported/visioneer-onetouch9020.html"
+:url "unsupported/visioneer-onetouch9020.html"
:interface "USB"
:usbid "0x04a7" "0x022c"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 9320"
-:url "/unsupported/visioneer-onetouch9320.html"
+:url "unsupported/visioneer-onetouch9320.html"
:interface "USB"
:usbid "0x04a7" "0x0362"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Onetouch Pro 8800"
-:url "/unsupported/visioneer-onetouch8820.html"
+:url "unsupported/visioneer-onetouch8820.html"
:interface "USB"
:usbid "0x04a7" "0x0410"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Onetouch Pro 8820"
-:url "/unsupported/visioneer-onetouch8820.html"
+:url "unsupported/visioneer-onetouch8820.html"
:interface "USB"
:usbid "0x04a7" "0x0410"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "PaperPort 3100b"
-:url "/unsupported/visioneer-paperport-3100b.html"
+:url "unsupported/visioneer-paperport-3100b.html"
:interface "Parport"
:status :unsupported
:comment "Most probably not supported. See link for details."
@@ -2648,13 +2658,13 @@
:comment "Most probably not supported. More details would be appreciated."
:model "PaperPort OneTouch"
-:url "/unsupported/visioneer-paperport-onetouch.html"
+:url "unsupported/visioneer-paperport-onetouch.html"
:interface "Parport"
:status :unsupported
:comment "Most probably not supported. See link for details."
:model "Strobe Pro USB"
-:url "/unsupported/visioneer-strobe-pro-usb.html"
+:url "unsupported/visioneer-strobe-pro-usb.html"
:interface "USB"
:usbid "0x04a7" "0x0102"
:status :unsupported
@@ -2663,82 +2673,82 @@
;********************************************************************************************
:model "4800 One Touch"
-:url "/unsupported/xerox-4800-onetouch.html"
+:url "unsupported/xerox-4800-onetouch.html"
:interface "USB"
:usbid "0x04a7" "0x03a0"
:status :unsupported
:comment "Unsupported. See link for details. Different id compared to One Touch 4800?"
:model "DocuImage 620S"
-:url "/unsupported/xerox-docuimage-620s.html"
+:url "unsupported/xerox-docuimage-620s.html"
:interface "SCSI"
:status :unsupported
:comment "Not supported. See link for more details."
:model "DocuMate 510"
-:url "/unsupported/xerox-documate-510.html"
+:url "unsupported/xerox-documate-510.html"
:interface "USB"
:status :unsupported
:usbid "0x04a7" "0x0446"
:comment "Not supported. See link for more details."
:model "DocuMate 510"
-:url "/unsupported/xerox-documate-510.html"
+:url "unsupported/xerox-documate-510.html"
:interface "USB"
:status :unsupported
:usbid "0x04a7" "0x047c"
:comment "Not supported. See link for more details. Yet another USB id."
:model "One Touch 4800"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
:comment "Unsupported. See link for details. Different id compared to 4800 One Touch?"
:model "WorkCentre 470cx"
-:url "/unsupported/xerox-workcentre-470cx.html"
+:url "unsupported/xerox-workcentre-470cx.html"
:interface "Parport"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre M15i"
-:url "/unsupported/xerox-workcentre-m15i.html"
+:url "unsupported/xerox-workcentre-m15i.html"
:interface "USB"
:usbid "0x0924" "0xffef"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre XK35c"
-:url "/unsupported/xerox-workcentre-xk35c.html"
+:url "unsupported/xerox-workcentre-xk35c.html"
:interface "USB Parport"
:usbid "0x043d" "0x0020"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre XK50cx"
-:url "/unsupported/xerox-workcentre-xk50cx.html"
+:url "unsupported/xerox-workcentre-xk50cx.html"
:interface "USB"
:usbid "0x04e8" "0x3903"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre Pro 412"
-:url "/unsupported/xerox-workcentre-pro412.html"
+:url "unsupported/xerox-workcentre-pro412.html"
:interface "USB Parport"
:usbid "0x043d" "0x4303"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre PE16"
-:url "/unsupported/xerox-workcentre-pe16.html"
+:url "unsupported/xerox-workcentre-pe16.html"
:interface "USB Parport"
:usbid "0x0924" "0x4220"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre PE120i"
-:url "/unsupported/xerox-workcentre-pe120i.html"
+:url "unsupported/xerox-workcentre-pe120i.html"
:interface "USB"
:usbid "0x0924" "0x4237"
:status :unsupported
@@ -2754,7 +2764,7 @@
:mfg "Biolux"
:model "654 (micrOcular)"
-:url "/unsupported/biolux-654.html"
+:url "unsupported/biolux-654.html"
:interface "USB"
:usbid "0x0923" "0x010f"
:status :unsupported
@@ -2766,7 +2776,7 @@
:mfg "Grandtek Scopecam"
:model "8x30 Binocular & Digital Camera"
-:url "/unsupported/grandtech-scopecam.html"
+:url "unsupported/grandtech-scopecam.html"
:interface "USB"
:usbid "0x0797" "0x801c"
:status :unsupported
@@ -2778,4 +2788,3 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
diff --git a/doc/descriptions/xerox_mfp.desc b/doc/descriptions/xerox_mfp.desc
index dd9d283..46c2867 100644
--- a/doc/descriptions/xerox_mfp.desc
+++ b/doc/descriptions/xerox_mfp.desc
@@ -6,17 +6,18 @@
:mfg "Xerox"
:url "http://www.office.xerox.com/"
-:model "Phaser 6110MFP"
-:interface "USB"
-:usbid "0x0924" "0x3d5d"
-:status :good
-
:model "Phaser 3200MFP"
:interface "USB"
:usbid "0x0924" "0x3da4"
+:comment "All these models are turned out to be rebranded Samsungs."
:status :complete
:url "http://www.office.xerox.com/multifunction-printer/multifunction-under-30ppm/phaser-3200mfp/spec-enus.html"
+:model "Phaser 6110MFP"
+:interface "USB"
+:usbid "0x0924" "0x3d5d"
+:status :good
+
:model "WorkCentre 3119 Series"
:interface "USB"
:usbid "0x0924" "0x4265"
@@ -86,7 +87,7 @@
:model "SCX-4x16"
:interface "USB"
:usbid "0x04e8" "0x3409"
-:status :untested
+:status :unsupported
:model "SCX-6x20"
:interface "USB"
@@ -279,7 +280,7 @@
:status :untested
:model "SCX-4623FW"
-:interface "USB"
+:interface "USB Ethernet"
:usbid "0x04e8" "0x3440"
:status :good
@@ -382,6 +383,16 @@
:usbid "0x04e8" "0x3468"
:status :untested
+:model "M2070"
+:interface "USB"
+:usbid "0x04e8" "0x3469"
+:status :good
+
+:model "C1860FW"
+:interface "USB"
+:usbid "0x04e8" "0x346b"
+:status :untested
+
:model "M458x Series"
:interface "USB"
:usbid "0x04e8" "0x346f"
@@ -402,6 +413,11 @@
:usbid "0x04e8" "0x3478"
:status :untested
+:model "C480W"
+:interface "USB"
+:usbid "0x04e8" "0x347e"
+:status :untested
+
:model "K3250 Series"
:interface "USB"
:usbid "0x04e8" "0x3481"
@@ -411,4 +427,3 @@
:interface "USB"
:usbid "0x04e8" "0x3482"
:status :untested
-
diff --git a/doc/doxygen-genesys.conf.in b/doc/doxygen-genesys.conf.in
index af9309f..213d2bb 100644
--- a/doc/doxygen-genesys.conf.in
+++ b/doc/doxygen-genesys.conf.in
@@ -1,1793 +1,313 @@
-# Doxyfile 1.8.1.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ").
+# Doxyfile 1.8.8
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should
-# identify the project. Note that if you do not use Doxywizard you need
-# to put quotes around the project name if it contains spaces.
-
PROJECT_NAME = GENESYS
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
PROJECT_NUMBER = @VERSION@
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer
-# a quick idea about the purpose of the project. Keep the description short.
-
PROJECT_BRIEF = GENESYS backend documentation
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is
-# included in the documentation. The maximum height of the logo should not
-# exceed 55 pixels and the maximum width should not exceed 200 pixels.
-# Doxygen will copy the logo to the output directory.
-
PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
OUTPUT_DIRECTORY = ./
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
+ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful if your file system
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding
-# "class=itcl::class" will allow you to use the command class in the
-# itcl::class meaning.
-
TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this
-# tag. The format is ext=language, where ext is a file extension, and language
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
EXTENSION_MAPPING =
-
-# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
-# comments according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you
-# can mix doxygen, HTML, and XML commands with Markdown formatting.
-# Disable only in case of backward compatibilities issues.
-
MARKDOWN_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also makes the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
+AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
DISTRIBUTE_GROUP_DOC = YES
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
-# unions are shown inside the group in which they are included (e.g. using
-# @ingroup) instead of on a separate page (for HTML and Man pages) or
-# section (for LaTeX and RTF).
-
INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
-# unions with only public data fields will be shown inline in the documentation
-# of the scope in which they are defined (i.e. file, namespace, or group
-# documentation), provided this scope is documented. If set to NO (the default),
-# structs, classes, and unions are shown on a separate page (for HTML and Man
-# pages) or section (for LaTeX and RTF).
-
INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
TYPEDEF_HIDES_STRUCT = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penalty.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will roughly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-SYMBOL_CACHE_SIZE = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
-# their name and scope. Since this can be an expensive process and often the
-# same symbol appear multiple times in the code, doxygen keeps a cache of
-# pre-resolved symbols. If the cache is too small doxygen will become slower.
-# If the cache is too large, memory is wasted. The cache size is given by this
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
LOOKUP_CACHE_SIZE = 0
-
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
-
EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespaces are hidden.
-
EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_MEMBERS = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_CLASSES = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
SHOW_INCLUDE_FILES = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
-# will list include files with double quotes in the documentation
-# rather than with sharp brackets.
-
+SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
SORT_MEMBER_DOCS = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
-# will sort the (brief and detailed) documentation of class members so that
-# constructors and destructors are listed first. If set to NO (the default)
-# the constructors will appear in the respective orders defined by
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
-# do proper type resolution of all parameters of a function it will reject a
-# match between the prototype and the implementation of a member function even
-# if there is only one candidate or it is obvious which candidate to choose
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
-# will still accept a match between prototype and implementation in such cases.
-
STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or macro consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and macros in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option.
-# You can optionally specify a file name after the option, if omitted
-# DoxygenLayout.xml will be used as the name of the layout file.
-
LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files
-# containing the references data. This must be a list of .bib files. The
-# .bib extension is automatically appended if omitted. Using this command
-# requires the bibtex tool to be installed. See also
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
-# feature you need bibtex and perl available in the search path.
-
CITE_BIB_FILES =
-
#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
WARN_IF_DOC_ERROR = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
WARN_LOGFILE =
-
#---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
INPUT = ../include/sane/ \
../backend
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
-# *.f90 *.f *.for *.vhd *.vhdl
-
FILE_PATTERNS = genesys*.[ch]
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-
EXCLUDE_SYMLINKS = YES
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
IMAGE_PATH = ./
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty or if
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
-# and it is also possible to disable source filtering for a specific pattern
-# using *.ext= (so without naming a filter). This option only has effect when
-# FILTER_SOURCE_FILES is enabled.
-
FILTER_SOURCE_PATTERNS =
-
+USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C, C++ and Fortran comments will always remain visible.
-
STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
+SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
VERBATIM_HEADERS = YES
-
+CLANG_ASSISTED_PARSING = NO
+CLANG_OPTIONS =
#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
IGNORE_PREFIX =
-
#---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
HTML_OUTPUT = ./genesys-html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header. Note that when using a custom header you are responsible
-# for the proper inclusion of any scripts and style sheets that doxygen
-# needs, which is dependent on the configuration options used.
-# It is advised to generate a default header using "doxygen -w html
-# header.html footer.html stylesheet.css YourConfigFile" and then modify
-# that header. Note that the header is subject to change so you typically
-# have to redo this when upgrading to a newer version of doxygen or when
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# style sheet in the HTML output directory as well, or it will be erased!
-
HTML_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that
-# the files will be copied as-is; there are no commands or markers available.
-
+HTML_EXTRA_STYLESHEET =
HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
-# Doxygen will adjust the colors in the style sheet and background images
-# according to this color. Hue is specified as an angle on a colorwheel,
-# see http://en.wikipedia.org/wiki/Hue for more information.
-# For instance the value 0 represents red, 60 is yellow, 120 is green,
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
-# The allowed range is 0 to 359.
-
HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
-# the colors in the HTML output. For a value of 0 the output will use
-# grayscales only. A value of 255 will produce the most vivid colors.
-
HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
-# the luminance component of the colors in the HTML output. Values below
-# 100 gradually make the output lighter, whereas values above 100 make
-# the output darker. The value divided by 100 is the actual gamma applied,
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
-# and 100 does not change the gamma.
-
HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting
-# this to NO can help when comparing the output of multiple runs.
-
HTML_TIMESTAMP = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-
HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
-# entries shown in the various tree structured indices initially; the user
-# can expand and collapse entries dynamically later on. Doxygen will expand
-# the tree to such a level that at most the specified number of entries are
-# visible (unless a fully collapsed tree already exceeds this amount).
-# So setting the number of entries 1 will produce a full collapsed tree by
-# default. 0 is a special value representing an infinite number of entries
-# and will result in a full expanded tree by default.
-
HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-
GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
-# that can be used as input for Qt's qhelpgenerator to generate a
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
QHP_VIRTUAL_FOLDER = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
-# add. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
-# Qt Help Project / Custom Filters</a>.
-
QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
-# Qt Help Project / Filter Attributes</a>.
-
QHP_SECT_FILTER_ATTRS =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
-# will be generated, which together with the HTML files, form an Eclipse help
-# plugin. To install this plugin and make it available under the help contents
-# menu in Eclipse, the contents of the directory containing the HTML and XML
-# files needs to be copied into the plugins directory of eclipse. The name of
-# the directory within the plugins directory should be the same as
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
-# the help appears.
-
GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have
-# this name.
-
ECLIPSE_DOC_ID = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
-# at top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it. Since the tabs have the same information as the
-# navigation tree you can set this option to NO if you already set
-# GENERATE_TREEVIEW to YES.
-
DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-# Since the tree basically has the same information as the tab index you
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
GENERATE_TREEVIEW = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML
-# documentation. Note that a value of 0 will completely suppress the enum
-# values from appearing in the overview section.
-
ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
TREEVIEW_WIDTH = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
-# links to external symbols imported via tag files in a separate window.
-
EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are
-# not supported properly for IE 6.0, but are supported on all modern browsers.
-# Note that when changing this option you need to delete any form_*.png files
-# in the HTML output before the changes have effect.
-
FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
-# (see http://www.mathjax.org) which uses client side Javascript for the
-# rendering instead of using prerendered bitmaps. Use this if you do not
-# have LaTeX installed or if you want to formulas look prettier in the HTML
-# output. When enabled you may also need to install MathJax separately and
-# configure the path to it using the MATHJAX_RELPATH option.
-
USE_MATHJAX = NO
-
-# When MathJax is enabled you need to specify the location relative to the
-# HTML output directory using the MATHJAX_RELPATH option. The destination
-# directory should contain the MathJax.js script. For instance, if the mathjax
-# directory is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to
-# the MathJax Content Delivery Network so you can quickly see the result without
-# installing MathJax.
-# However, it is strongly recommended to install a local
-# copy of MathJax from http://www.mathjax.org before deployment.
-
+MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
-# names that should be enabled during MathJax rendering.
-
MATHJAX_EXTENSIONS =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box
-# for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
-# (GENERATE_DOCSET) there is already a search function so this one should
-# typically be disabled. For large projects the javascript based search engine
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
+MATHJAX_CODEFILE =
SEARCHENGINE = NO
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a PHP enabled web server instead of at the web client
-# using Javascript. Doxygen will generate the search PHP script and index
-# file to put on the web server. The advantage of the server
-# based approach is that it scales better to large projects and allows
-# full text search. The disadvantages are that it is more difficult to setup
-# and does not have live searching capabilities.
-
SERVER_BASED_SEARCH = NO
-
+EXTERNAL_SEARCH = NO
+SEARCHENGINE_URL =
+SEARCHDATA_FILE = searchdata.xml
+EXTERNAL_SEARCH_ID =
+EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
LATEX_OUTPUT =
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-# Note that when enabling USE_PDFLATEX this option is only used for
-# generating bitmaps for formulas in the HTML output, but not in the
-# Makefile that is written to the output directory.
-
LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, letter, legal and
-# executive. If left blank a4wide will be used.
-
PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
-# the generated latex document. The footer should contain everything after
-# the last chapter. If it is left blank doxygen will generate a
-# standard footer. Notice: only use this tag if you know what you are doing!
-
LATEX_FOOTER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
+LATEX_EXTRA_FILES =
PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
LATEX_HIDE_INDICES = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include
-# source code with syntax highlighting in the LaTeX output.
-# Note that which sources are shown also depends on other settings
-# such as SOURCE_BROWSER.
-
LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
LATEX_BIB_STYLE = plain
-
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
RTF_HYPERLINKS = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
RTF_EXTENSIONS_FILE =
-
#---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
+MAN_SUBDIR =
MAN_LINKS = NO
-
#---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
XML_PROGRAMLISTING = YES
-
#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+GENERATE_DOCBOOK = NO
+DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
GENERATE_AUTOGEN_DEF = NO
-
#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
PERLMOD_MAKEVAR_PREFIX =
-
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
INCLUDE_PATH = ../backend
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition that
-# overrules the definition found in the source code.
-
EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all references to function-like macros
-# that are alone on a line, have an all uppercase name, and do not end with a
-# semicolon, because these will confuse the parser if not removed.
-
SKIP_FUNCTION_MACROS = YES
-
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. For each
-# tag file the location of the external documentation should be added. The
-# format of a tag file without this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths
-# or URLs. Note that each tag file must have a unique name (where the name does
-# NOT include the path). If a tag file is not located in the directory in which
-# doxygen is run, you must also specify the path to the tagfile here.
-
TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
+EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
-
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option also works with HAVE_DOT disabled, but it is recommended to
-# install and use dot, since it yields more powerful graphs.
-
CLASS_DIAGRAMS = NO
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
+DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
HAVE_DOT = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
-# allowed to run in parallel. When set to 0 (the default) doxygen will
-# base this on the number of processors available in the system. You can set it
-# explicitly to a value larger than 0 to get control over the balance
-# between CPU load and processing speed.
-
DOT_NUM_THREADS = 0
-
-# By default doxygen will use the Helvetica font for all dot files that
-# doxygen generates. When you want a differently looking font you can specify
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find
-# the font, which can be done by putting it in a standard location or by setting
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
-# directory containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
+DOT_FONTNAME =
DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the Helvetica font.
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
-# set the path where dot can find it.
-
DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# CLASS_DIAGRAMS tag to NO.
-
CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside
-# the class node. If there are many fields or methods and many nodes the
-# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
-# threshold limits the number of items for each type to make the size more
-# managable. Set this to 0 for no limit. Note that the threshold may be
-# exceeded by 50% before the limit is enforced.
-
UML_LIMIT_NUM_FIELDS = 10
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are svg, png, jpg, or gif.
-# If left blank png will be used. If you choose svg you need to set
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible in IE 9+ (other browsers do not have this requirement).
-
DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-# Note that this requires a modern browser other than Internet Explorer.
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
-# visible. Older versions of IE do not have SVG support.
-
INTERACTIVE_SVG = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the
-# \mscfile command).
-
MSCFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
DOT_CLEANUP = YES
diff --git a/doc/doxygen-sanei.conf.in b/doc/doxygen-sanei.conf.in
index 0b28011..68e0a85 100644
--- a/doc/doxygen-sanei.conf.in
+++ b/doc/doxygen-sanei.conf.in
@@ -1,1473 +1,312 @@
-# Doxyfile 1.5.7.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
+# Doxyfile 1.8.8
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
PROJECT_NAME = SANEI
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
PROJECT_NUMBER = @VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
+PROJECT_BRIEF =
+PROJECT_LOGO =
OUTPUT_DIRECTORY = ./
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
-# Spanish, Swedish, and Ukrainian.
-
+ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
+ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
JAVADOC_AUTOBRIEF = YES
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
+ALIASES =
+TCL_SUBST =
OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
OPTIMIZE_OUTPUT_VHDL = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
+EXTENSION_MAPPING =
+MARKDOWN_SUPPORT = YES
+AUTOLINK_SUPPORT = YES
BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
DISTRIBUTE_GROUP_DOC = YES
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS = NO
TYPEDEF_HIDES_STRUCT = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE = 0
-
+LOOKUP_CACHE_SIZE = 0
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
+EXTRACT_PACKAGE = NO
EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_MEMBERS = YES
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
HIDE_UNDOC_CLASSES = YES
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
SHOW_INCLUDE_FILES = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
+SHOW_GROUPED_MEMB_INC = NO
+FORCE_LOCAL_INCLUDES = NO
INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
SORT_MEMBER_DOCS = NO
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
SORT_BRIEF_DOCS = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
+SORT_MEMBERS_CTORS_1ST = NO
SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
+STRICT_PROTO_MATCHING = NO
GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
+ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
-
-LAYOUT_FILE =
-
+FILE_VERSION_FILTER =
+LAYOUT_FILE =
+CITE_BIB_FILES =
#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
+WARN_LOGFILE =
#---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
INPUT = ../include/sane/
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
FILE_PATTERNS = sanei*.h
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
+EXCLUDE =
EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
IMAGE_PATH = ./
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
+INPUT_FILTER =
+FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
-
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
+SOURCE_TOOLTIPS = YES
USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
VERBATIM_HEADERS = YES
-
+CLANG_ASSISTED_PARSING = NO
+CLANG_OPTIONS =
#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
HTML_OUTPUT = ./sanei-html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
+HTML_HEADER =
+HTML_FOOTER =
+HTML_STYLESHEET =
+HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_FILES =
+HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_GAMMA = 80
+HTML_TIMESTAMP = YES
HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
+HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME = Publisher
GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
+CHM_FILE =
+HHC_LOCATION =
GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
+CHM_INDEX_ENCODING =
BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
-
GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#namespace">Qt Help Project / Namespace</a>.
-
+QCH_FILE =
QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#virtual-folders">Qt Help Project / Virtual Folders</a>.
-
QHP_VIRTUAL_FOLDER = doc
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file .
-
-QHG_LOCATION =
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
+QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
+QHG_LOCATION =
+GENERATE_ECLIPSEHELP = NO
+ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
-
GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
+ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
+EXT_LINKS_IN_WINDOW = NO
FORMULA_FONTSIZE = 10
-
+FORMULA_TRANSPARENT = YES
+USE_MATHJAX = NO
+MATHJAX_FORMAT = HTML-CSS
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_EXTENSIONS =
+MATHJAX_CODEFILE =
+SEARCHENGINE = NO
+SERVER_BASED_SEARCH = NO
+EXTERNAL_SEARCH = NO
+SEARCHENGINE_URL =
+SEARCHDATA_FILE = searchdata.xml
+EXTERNAL_SEARCH_ID =
+EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT =
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
+LATEX_OUTPUT =
LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
+EXTRA_PACKAGES =
+LATEX_HEADER =
+LATEX_FOOTER =
+LATEX_EXTRA_FILES =
PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
LATEX_HIDE_INDICES = NO
-
+LATEX_SOURCE_CODE = NO
+LATEX_BIB_STYLE = plain
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
+MAN_SUBDIR =
MAN_LINKS = NO
-
#---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
XML_PROGRAMLISTING = YES
-
#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+GENERATE_DOCBOOK = NO
+DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
GENERATE_AUTOGEN_DEF = NO
-
#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
+# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
-
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
+TAGFILES =
+GENERATE_TAGFILE =
ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
+EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
-
#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
+# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
CLASS_DIAGRAMS = NO
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
+MSCGEN_PATH =
+DIA_PATH =
HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
HAVE_DOT = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
+DOT_NUM_THREADS = 0
+DOT_FONTNAME =
DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
+DOT_FONTPATH =
CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
+UML_LIMIT_NUM_FIELDS = 10
TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
+INTERACTIVE_SVG = NO
+DOT_PATH =
+DOTFILE_DIRS =
+MSCFILE_DIRS =
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/doc/gamma4scanimage.man b/doc/gamma4scanimage.man
index fe81b15..576d148 100644
--- a/doc/gamma4scanimage.man
+++ b/doc/gamma4scanimage.man
@@ -3,9 +3,9 @@
.SH NAME
gamma4scanimage \- create a gamma table for scanimage
.SH SYNOPSIS
-.B gamma4scanimage
+.B gamma4scanimage
.I gamma
-.RI [ shadow
+.RI [ shadow
.RI [ highlight
.RI [ maxin
.RI [ maxout ]]]]
@@ -52,7 +52,7 @@ defines the maximum output value. Take a look at the output of scanimage \-h to
find out what maxout has to be. The default value is 255.
.PP
.SH EXAMPLE
-.B scanimage \-\-custom\-gamma=yes \-\-gamma\-table
+.B scanimage \-\-custom\-gamma=yes \-\-gamma\-table
.I `gamma4scanimage 1.8 0 11500 16383 255`
>image.pnm
diff --git a/doc/gt68xx/gt68xx.CHANGES b/doc/gt68xx/gt68xx.CHANGES
index 43f2e85..aa87504 100644
--- a/doc/gt68xx/gt68xx.CHANGES
+++ b/doc/gt68xx/gt68xx.CHANGES
@@ -17,7 +17,7 @@ V 1.0.82 (2006-10-03)
V 1.0.81 (2006-05-21)
* Added support for Plustek OpticPro S24 (some models). Added .conf entry for
- Plustek OpticPro S12.
+ Plustek OpticPro S12.
V 1.0.80 (2006-01-02)
@@ -34,7 +34,7 @@ V 1.0.79 (2005-12-09) sane-backends 1.0.17
scanners are not detected anymore after closing the device.
* Fixed wait_lamp_stable. Wait for a maximum time of 60 seconds. Print
warming up message after 5 seconds. Print how long warming up took.
-* For Mustek ScanExpress A3 USB, use more intelligent warm-up mechanism. The
+* For Mustek ScanExpress A3 USB, use more intelligent warm-up mechanism. The
brightness for this scanner first decreases and then increases again. With the
previous logic the scanner always warmed up for at least 10 seconds even if it
wasn't necessary.
@@ -50,7 +50,7 @@ V 1.0.78 (2005-10-16)
V 1.0.77 (2005-09-29)
* Added support for Plustek OpticSlim M12 (untested). Based on patch from
- Gerhard Jaeger <gerhard@gjaeger.de>.
+ Gerhard Jaeger <gerhard@gjaeger.de>.
* Fixed gt68xx homepage links in man page. Changed minimum version of libusb
to 0.1.8.
@@ -290,7 +290,7 @@ V 1.0-55 (2004-03-06)
* Added detection for Genius Vivid 1200 EX.
* Fixed product id of Mustek BearPaw 2448 TA Plus.
* Other minor updates.
-
+
V 1.0-54 (2004-02-10)
* Added basic support for Plustek OpticSlim 2400. Thanks to Radoslaw Grzanka and
@@ -335,7 +335,7 @@ V 1.0-49 (2003-09-30)
* Added ScanMagic 1200 UB Plus to man page and .desc.
* Added Settings for Plustek OpticSlim 1200
* Added detection of Genius Vivid 4x. It won't work out-of-the-box, however.
-* CCD coarse calib shouldn't run into an endless loop anymore. Plustek 1248U
+* CCD coarse calib shouldn't run into an endless loop anymore. Plustek 1248U
is much faster now.
V 1.0-48 (2003-07-25)
@@ -376,7 +376,7 @@ V 1.0-43 (2003-03-06)
- Small requests are done with a response buffer of 8 bytes (instead of 64)
now. Looks like GT-6816 based scanners return 8 bytes if the firmware is
loaded and 64 bytes if it's not loaded.
-- Changed GT-6816 firmware check to ignore errors from above change.
+- Changed GT-6816 firmware check to ignore errors from above change.
GT-6816 scanners work with the BSDs now (at least once).
- Updated manpage concerning the BSDs.
@@ -527,8 +527,8 @@ V 1.0-27 (2002-10-25)
- Removed override for Trust Copmact Scan and Medion/Tevion/Lifetec LT 9452
(Mustek ScanExpress 1200 UB Plus clones).
- Removed override for Tevion MD 9458 (seems to be an Artec Ultima 2000 (e +?)
- clone).
-
+ clone).
+
V 1.0-26 (2002-10-22)
- Several fixes for Medion MD-9385 and Artec Ultima 2000 based scanners. The
diff --git a/doc/leo/leo.txt b/doc/leo/leo.txt
index 4f4eb61..26dbe21 100644
--- a/doc/leo/leo.txt
+++ b/doc/leo/leo.txt
@@ -3,8 +3,8 @@
Across Technologies FS-1130
(A rebadged LEO Technologies)
- 000: 06 31 14 01 1f 00 00 00 41 43 52 4f 53 53 20 20 .1......ACROSS
- 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 000: 06 31 14 01 1f 00 00 00 41 43 52 4f 53 53 20 20 .1......ACROSS
+ 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
032: 31 2e 31 36 09 f6 0d b6 01 2c 01 2c 39 36 30 30 1.16.....,.,9600
@@ -16,12 +16,12 @@ LEO LEOScan S3:
or
000: 06 00 02 02 1f 00 00 00 4c 45 4f 00 00 00 00 00 ........LEO.....
016: 4c 45 4f 53 63 61 6e 2d 53 33 00 00 00 00 00 00 LEOScan-S3......
- 032: 31 2e 31 30 1.10
+ 032: 31 2e 31 30 1.10
Genius FS1130
000: 06 31 14 01 1f 00 00 00 4b 59 45 20 43 4f 52 50 .1......KYE CORP
016: 43 6f 6c 6f 72 50 61 67 65 2d 43 53 20 20 20 20 ColorPage-CS
- 032: 31 2e 31 34 1.14
+ 032: 31 2e 31 34 1.14
/*--------------------------------------------------------------------------*/
@@ -52,7 +52,7 @@ Start a scan
SET WINDOW
24 00 00 00 00 00 30 00 00 00
Total length is 48 bytes
- 01 = 0x2E (may be 0x30 - 2, ie total length -2)
+ 01 = 0x2E (may be 0x30 - 2, ie total length -2)
07 = length (48-8 = 40 = 0x28)
10-11 = X Resolution
12-13 = Y resolution
@@ -66,7 +66,7 @@ Total length is 48 bytes
0x01 = halftone
0x02 = grayscale
0x05 = color
- 34 = bit depth
+ 34 = bit depth
1 or 8
37 = ? RIF + other
43 = ? 0x01
@@ -77,7 +77,7 @@ READ
SEND
-2A 00 03 00 00 01 00 03 00 00
+2A 00 03 00 00 01 00 03 00 00
2A 00 02 00 00 0F 00 01 00 00
2 = data type code
0x02 = halftone pattern
@@ -89,13 +89,13 @@ GET DATA BUFFER STATUS
7-8 allocation length
returned buffer is 0x10 bytes long.
- 00 00 0D 00 00 00 03 D3 60 00 00 00 01 48 00 EE
-
+ 00 00 0D 00 00 00 03 D3 60 00 00 00 01 48 00 EE
+
0-2 = additional length (0x10-3 = 0x0D)
6-8 = (?) total scan length
9-11 = filled data buffer
12-13 = number of lines left (decrease during a scan)
- 14-15 = bytes per line (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
/*--------------------------------------------------------------------------*/
@@ -119,7 +119,7 @@ park the CCD:
SET WINDOWS
TUR
SCAN
-
+
/*--------------------------------------------------------------------------*/
Command sequence for the S3
diff --git a/doc/matsushita/matsushita.txt b/doc/matsushita/matsushita.txt
index 72b8fcd..0de6d94 100644
--- a/doc/matsushita/matsushita.txt
+++ b/doc/matsushita/matsushita.txt
@@ -38,12 +38,12 @@ REQUEST SENSE:
INQUIRY:
12 00 00 00 60 00
result:
- 06 00 02 02 5B 00 00 10 4B 2E 4D 2E 45 2E 20 20
- 4B 56 2D 53 53 32 35 41 20 20 20 20 20 20 20 20
- 31 2E 30 35 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 06 00 02 02 5B 00 00 10 4B 2E 4D 2E 45 2E 20 20
+ 4B 56 2D 53 53 32 35 41 20 20 20 20 20 20 20 20
+ 31 2E 30 35 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
SET WINDOWS:
24 00 00 00 00 00 00 00 00 00
@@ -51,9 +51,9 @@ SET WINDOWS:
24 00 00 00 00 00 00 00 48 00
72 bytes.
6-7 = 0x40 = window descriptor length
-
+
Window Descriptor Block:
- 0 = page side
+ 0 = page side
0x00 = front
0x80 = back
2-3 = X resolution
@@ -80,7 +80,7 @@ SET WINDOWS:
0x80 = User downloaded pattern
29 = reverse image
0x00 = no reverse
- 0x80 = reverse
+ 0x80 = reverse
43 = image emphasis
0x80 smooth
0x00 none
@@ -111,7 +111,7 @@ SET WINDOWS:
0x82 = mode 3
59 = automatic separation
0x00 = no (twain default)
- 0x80 = yes
+ 0x80 = yes
60 = white level
0x00 = from white stick (twain default)
0x80 = from paper
@@ -136,7 +136,7 @@ READ:
5: page side
0x00 = front
0x80 = back
-
+
0x80 image size in dots
3(?)-4: number of the page to read. Multipage mode.
@@ -147,7 +147,7 @@ READ:
SEND(10):
2A 00 03 00 00 01 00 01 0A 00
2 = data type code
- 0x02 = halftone pattern
+ 0x02 = halftone pattern
data is 10 bytes of header + 64 bytes for the matrix
0x03 = gamma table
data is 10 bytes of header + 256 bytes for the table
diff --git a/doc/mustek/mustek.CHANGES b/doc/mustek/mustek.CHANGES
index b7c7e2b..c5de63c 100644
--- a/doc/mustek/mustek.CHANGES
+++ b/doc/mustek/mustek.CHANGES
@@ -212,7 +212,7 @@ CHANGES for the SANE Mustek backend
* Added OS/2 compatibility fixes from "Franz Bakan" <fbakan@gmx.net>.
2001-11-18
- * The Primax Compact 4800 seems to bes also supported. Added .desc and
+ * The Primax Compact 4800 seems to bes also supported. Added .desc and
manpage entries.
2001-09-10
@@ -290,7 +290,7 @@ CHANGES for the SANE Mustek backend
2001-04-19
* Don't check for macro VERSION any longer in sane_init. Print out
- PACKAGE_VERSION instead.
+ PACKAGE_VERSION instead.
* Update email address and homepage.
2001-08-08
@@ -348,7 +348,7 @@ CHANGES for the SANE Mustek backend
2000-12-31
* Released Mustek backend 1.0-103
-
+
2000-12-30
* Implemented calibration (color and gray mode) for the Paragon 1200 Pro.
It's not perfect and needs lots of tests. It may work for the Paragon
@@ -360,14 +360,14 @@ CHANGES for the SANE Mustek backend
* Increased scan width to 8.6" for 1200 Pro.
2000-12-26
- * Added calibration for the SE 12000 SP Plus. Doesn't fully work until now
+ * Added calibration for the SE 12000 SP Plus. Doesn't fully work until now
(images are too dark and colored).
2000-12-23
* Added option for Legal format (because the ScanExpress 12000 SP A4 size
scanner can't be distinguished from the Paragon 1200 LS Legal size scanner
by software).
-
+
2000-12-21
* Added a few checks for Null-Pointers.
* Removed old code for SE calibration.
@@ -378,7 +378,7 @@ CHANGES for the SANE Mustek backend
2000-12-10
* Released Mustek backend 1.0-102
-
+
2000-12-09
* Fixed wrong comment in encode_resolution
* Added missing test for return status in sane_start
@@ -386,7 +386,7 @@ CHANGES for the SANE Mustek backend
2000-12-05
* Released Mustek backend 1.0-101
-
+
2000-12-05
* Fixed lamp setting (avoid problems with some SE scanners).
@@ -443,18 +443,18 @@ CHANGES for the SANE Mustek backend
scanning (seems to work for firmware >= 2.00)
* Adjusted transparency adapter support for all ScanExpress scanners.
The 12000 A3 SP can only do A4 beacuse I don't have the right TA.
- * don't use u_int* types in mustek.h because the definitions for these
+ * don't use u_int* types in mustek.h because the definitions for these
types are not included
2000-11-04
* SE scanners can now scan 75, 100, 150, 200, 250, 300, 400, 500, 600,
- 900 and 1200 dpi in color mode (the 1200 dpi models). These are fixed
+ 900 and 1200 dpi in color mode (the 1200 dpi models). These are fixed
resolutions, a resolution >= the wanted resolution is selected. This
makes preview and some resolutions faster than before (at least for
some scanners), because lower resolutions can be used.
- * Minimum scan resolution is 60 dpi in gray and lineart and 75 dpi in
+ * Minimum scan resolution is 60 dpi in gray and lineart and 75 dpi in
color mode for the SE scanners now.
-
+
2000-10-29
* Fixed a bug concerning block LD. Paragon 1 and 2 were exchanged.
* Paragon 12000SP color mode works now without garbage at the end
@@ -479,9 +479,9 @@ CHANGES for the SANE Mustek backend
2000-10-03
* Released backend version 1.0-98.
-
+
2000-10-03
- * Fixed segmentation fault in sane_init (else statement was missing).
+ * Fixed segmentation fault in sane_init (else statement was missing).
Thanks to Oliver Rauch who spotted this problem.
* Re-enabled double buffering.
@@ -518,7 +518,7 @@ CHANGES for the SANE Mustek backend
2000-09-24
* Released backend version 1.0-97.
-
+
2000-09-24
* Added RGB brightness and contrast for 3pass scanners
* Brightness and contrast is +-100% for 3pass scanners now
@@ -635,7 +635,7 @@ CHANGES for the SANE Mustek backend
2000-07-26
* fixed possible segfault pointer info was not checked for 0 (found by
Petter Reinholdtsen)
- * Updated comment about Paragon 600 II N linedistance correction in man
+ * Updated comment about Paragon 600 II N linedistance correction in man
page
2000-07-25
@@ -643,7 +643,7 @@ CHANGES for the SANE Mustek backend
2000-07-25
* Released backend version 1.0-92
-
+
2000-07-24
* Fixed ADF handling (output was mirrored in x direction). Gray and lineart
seems to work now. Color and halftone modes look somewhat crazy.
@@ -682,7 +682,7 @@ CHANGES for the SANE Mustek backend
* Released backend version 1.0-89
2000-06-30
- * Fixed bug in do_stop. The scan slider didn't return after the scan
+ * Fixed bug in do_stop. The scan slider didn't return after the scan
in some situations.
2000-06-28
@@ -703,7 +703,7 @@ CHANGES for the SANE Mustek backend
2000-06-25
* updated manpage concerning parport and USB scanners
- * added example for 600 II N to mustek.conf
+ * added example for 600 II N to mustek.conf
2000-06-22
* fixed debug output bug in fix_linedistance_se (found by Jan-Erik Karlsson)
@@ -750,7 +750,7 @@ CHANGES for the SANE Mustek backend
* Code cleanup and reorganization for inclusion of the Paragon 1200 A3 Pro.
2000-06-07
- * Fixed bug in sane_close where the chain of handles got destroyed by
+ * Fixed bug in sane_close where the chain of handles got destroyed by
closing the first device. This bug is in the backend since 3 1/2 years.
Thanks to Jochen Eisinger for spotting this.
@@ -762,7 +762,7 @@ CHANGES for the SANE Mustek backend
2000-06-04
* changed (again) Paragon 12000 SP linedistance handling, now 1.02 uses
- normal LD corrections, all other use none. We'll see, if this works.
+ normal LD corrections, all other use none. We'll see, if this works.
Thanks to Reinhard Günzel who helped to debug this.
* fixed some long lines (>80 chars)
@@ -805,7 +805,7 @@ CHANGES for the SANE Mustek backend
2000-05-08
* fixed remaining sane_cancel problems (in non_blocking mode)
- * fixed color stripes and segmentation fault for Paragon MFS-12000SP
+ * fixed color stripes and segmentation fault for Paragon MFS-12000SP
1.00 (at least for me)
* added more debug output to inquiry
* added possibility to distinguish old and new firmware formats
@@ -816,14 +816,14 @@ CHANGES for the SANE Mustek backend
* released backend version 1.0-81
2000-05-06
- * added transparency adapter support for the Paragon 600 II CD, 600S,
+ * added transparency adapter support for the Paragon 600 II CD, 600S,
800 II SP, 600 II N, ScannExpress 6000SP and 12000SP
* removed "color lineart" and "color halftone" for all scanners.
These modes didn't work for any of my scanners.
* added more debug output for ADF and TA
* fixed bug when ADF is out of documents
* Scan source option is only available if TA or ADF is present. For
- SE and N models TA is always available because it can't be detected
+ SE and N models TA is always available because it can't be detected
by hardware
* removed "backtrack", "speed" and "grain" from 600 II N options,
the scanner doesn't support them
@@ -839,12 +839,12 @@ CHANGES for the SANE Mustek backend
* Added Warning for scanners that are not (fully) tested
2000-04-26
- * changed sane_init to use sanei_config_read () and
+ * changed sane_init to use sanei_config_read () and
sanei_config_get_string ()
2000-04-24
* released backend version 1.0-80
-
+
2000-04-23
* fixed lineart and color scanning >600 dpi for the SE 12000SP
* added variable debug_level to be faster without debugging in attach ()
@@ -863,13 +863,13 @@ CHANGES for the SANE Mustek backend
2000-04-20
* Output of scanning time now works with scanimage, too.
- * Adjusted scan area to the Windows driver defaults for Paragon
+ * Adjusted scan area to the Windows driver defaults for Paragon
MFS-6000CX
* Added transparency adapter support for the Paragon MFS-6000CX and
MFS-12000SP
2000-04-19
- * Adjusted scan area to the Windows driver defaults for Paragon
+ * Adjusted scan area to the Windows driver defaults for Paragon
MFS-12000SP
2000-04-17
@@ -883,14 +883,14 @@ CHANGES for the SANE Mustek backend
These modes didn't work for any of my scanners.
* fixed problems in color mode for the MFS-8000SP (gamma table is now
uploaded even if not selected)
- * Output "cover open" only for ScanExpress scanners (Paragon scanners
+ * Output "cover open" only for ScanExpress scanners (Paragon scanners
don't have a cover sensor)
* Added transparency adapter support for the Paragon MFS-6000SP and
MFS-12000CX
* Added output of transfer speed (kb/s)
* maximum allocated memory for read request can be set by a #define
* buffer size can be set on a per scanner basis
- * Adjusted scan area to the Windows driver defaults for Paragon
+ * Adjusted scan area to the Windows driver defaults for Paragon
800 II SP
* Added quotation marks to inquiry output
@@ -899,7 +899,7 @@ CHANGES for the SANE Mustek backend
ScanExpress 12000SP
* Fixed scan area settings (TL-X and TL-Y) for transparency adapter (TA)
* Added TA support for Paragon 8000SP
-
+
2000-04-13
* Added more debug output in sane_read and some other functions
* removed warnings
@@ -913,7 +913,7 @@ CHANGES for the SANE Mustek backend
2000-04-09
* released backend version 1.0-79
-
+
2000-04-08
* added output of scanning time (debuglevel 2 and higher)
* removed old code from sane_cancel
@@ -931,16 +931,16 @@ CHANGES for the SANE Mustek backend
2000-04-03
* output backend and version information
* fixed resolution encoding for MFS12000cx
- * Changed version system to be compatible to the SANE standard
+ * Changed version system to be compatible to the SANE standard
(major, minor, build); 0.78 --> 1.0-78
-
+
2000-04-02
* released backend version 0.78
* added MUSTEK_FLAG_DOUBLE_RES for the MFS-12000CX 3-pass scanner,
resolutions > 600 dpi should work now
-
+
2000-04-01
- * reduced scan area for Paragon 800 S / II SP
+ * reduced scan area for Paragon 800 S / II SP
2000-03-29
* released backend version 0.77
@@ -948,17 +948,17 @@ CHANGES for the SANE Mustek backend
* more debug level tweaking
* man page update
* model name update
-
+
2000-03-25
* corrected some spelling errors
-
+
2000-03-24
* reduced scanarea for the MSF-6000SP
* restructured scanner recognition
2000-03-18
* released backend version 0.76
-
+
2000-03-17
* removed some compiler warnings
* changed the sane.model names (e.g. ScanExpress 12000SP instead of
@@ -978,12 +978,12 @@ CHANGES for the SANE Mustek backend
possibly never happen)
* fixed firmware version identification for newer ScanExpress models
(patch from Marco G. Salvagno)
- * probably fixed linedistance correction at high resolutions for
+ * probably fixed linedistance correction at high resolutions for
MFS-1200SP firmware 1.00 and possibly others (patch from Andreas Beck)
* added check for ADF ready in sane_start (patch from Joerg Anders)
* Bug fix in the STORE makros (patch from Norbert Mueller)
-
-
+
+
2000-03-06
* created mustek.CHANGES file
* released backend version 0.74
diff --git a/doc/mustek_usb/mustek_usb.CHANGES b/doc/mustek_usb/mustek_usb.CHANGES
index 7b01c4a..b31f248 100644
--- a/doc/mustek_usb/mustek_usb.CHANGES
+++ b/doc/mustek_usb/mustek_usb.CHANGES
@@ -17,7 +17,7 @@ CHANGES for the SANE Mustek USB backend
* Fixed check for single quotation marks.
2003-02-22:
- * Release of version 1.0-16.
+ * Release of version 1.0-16.
2003-02-22:
* Iniatialize global variables explicitely.
@@ -34,7 +34,7 @@ CHANGES for the SANE Mustek USB backend
to other backends for Mustek scanners.
2002-07-17:
- * Release of version 1.0-15.
+ * Release of version 1.0-15.
2002-07-17:
* Added manufacturer comment in mustek_usb.desc.
@@ -43,7 +43,7 @@ CHANGES for the SANE Mustek USB backend
* Really check the status in usb_low_open.
2002-04-24:
- * Release of version 1.0-14.
+ * Release of version 1.0-14.
2002-04-24:
* Undef MIN and MAX if they are defined in mustek_usb_low.h to avoid
@@ -53,7 +53,7 @@ CHANGES for the SANE Mustek USB backend
* Free devlist in sane_exit.
2002-04-10:
- * Release of version 1.0-13.
+ * Release of version 1.0-13.
2002-04-10:
* sane_set_io_mode must return SANE_STAUS_GOOD if non_blocking is false.
@@ -63,7 +63,7 @@ CHANGES for the SANE Mustek USB backend
* sane_exit: set freed variable to 0.
2002-03-20:
- * Release of version 1.0-12.
+ * Release of version 1.0-12.
2002-03-19:
* Option 0 has an empty name now.
@@ -73,7 +73,7 @@ CHANGES for the SANE Mustek USB backend
* Added more debug output in sane_control_option.
2002-03-17:
- * Release of version 1.0-11.
+ * Release of version 1.0-11.
2002-03-16:
* mustek_usb.c: Fixed segfault when opening device again after closing.
@@ -90,7 +90,7 @@ CHANGES for the SANE Mustek USB backend
* Fixed undefined operation warnings.
2002-01-11
- * Release of version 1.0-10.
+ * Release of version 1.0-10.
2002-01-11
* mustek_usb_high.(c|h), mustek_usb_mid.(c|h): commented out unused CCD code.
@@ -106,7 +106,7 @@ CHANGES for the SANE Mustek USB backend
* Added link to plustek to manual page.
2001-12-08
- * Release of version 1.0-9.
+ * Release of version 1.0-9.
2001-12-08
@@ -118,7 +118,7 @@ CHANGES for the SANE Mustek USB backend
size of data acquired in one turn.
2001-11-15
- * Release of version 1.0-8.
+ * Release of version 1.0-8.
2001-11-15
* Updated manual page concerning FreeBSD and kernel configuration.
@@ -140,7 +140,7 @@ CHANGES for the SANE Mustek USB backend
* Removed load_private_profile (now in usb_high_scan_init).
2001-10-07
- * Release of version 1.0-7.
+ * Release of version 1.0-7.
2001-10-07
@@ -312,7 +312,7 @@ CHANGES for the SANE Mustek USB backend
* mustek_usb_low:
- fixed compilation warnings
- fixed compilation problems
- - fixed C++ to C transition issues (e.g. "initializer element is not
+ - fixed C++ to C transition issues (e.g. "initializer element is not
computable at load time")
- fixed debug output
- adjusted some names
@@ -355,7 +355,7 @@ CHANGES for the SANE Mustek USB backend
2001-07-22
* mustek_usb_low: Only one data structure: ma1017.
- * mustek_usb_mid:
+ * mustek_usb_mid:
- removed //
- remove SANE disclaimers
- use SANE types
@@ -404,7 +404,7 @@ CHANGES for the SANE Mustek USB backend
* Used "../include/sane" in #include statements
* Used /dev/usbscanner in mustek_usb.conf
* Fixed mustek_usb.desc
- * Fixed mustek_usb.*:
+ * Fixed mustek_usb.*:
- use correct names
- no leading "_"
- use only C-style comments
@@ -418,4 +418,4 @@ CHANGES for the SANE Mustek USB backend
- commented out all references to c_scanner
- removed references to WORD and other non-standard types
- moved read_rows from global to Mustek_Usb_Scanner
- --> mustek_usb.* compiles \ No newline at end of file
+ --> mustek_usb.* compiles
diff --git a/doc/mustek_usb2/mustek_usb2.CHANGES b/doc/mustek_usb2/mustek_usb2.CHANGES
index 38886e8..6e37236 100644
--- a/doc/mustek_usb2/mustek_usb2.CHANGES
+++ b/doc/mustek_usb2/mustek_usb2.CHANGES
@@ -7,7 +7,7 @@ V 1.0-10 (2005-10-16)
V 1.0-9 (2005-10-02)
-- Removed global variables in mustek_usb2.c:
+- Removed global variables in mustek_usb2.c:
Deleted the following variables (not necessary):
m_bIsOpen
Moved the following varaiables to Mustek_Scanner structure:
@@ -81,7 +81,7 @@ V 1.0-4 (2005-09-27)
a2nu2/spicall/spicall.c --> included in mustek_usb2.c
a2nu2/spicall/spicall_ex.h
a2nu2/spicall/spicall_g.h --> included in mustek_usb2_high.c
- a2nu2/include/asic.h --> included in mustek_usb2_asic_low.h
+ a2nu2/include/asic.h --> included in mustek_usb2_asic_low.h
a2nu2/include/debug.h --> removed
a2nu2/include/ini.h
a2nu2/include/msam.ini --> removed
@@ -94,11 +94,11 @@ V 1.0-4 (2005-09-27)
a2nu2/asic/asic_libusb.h --> removed
a2nu2/asic/asic_mid.c --> mustek_usb2_asic_mid.c
a2nu2/asic/asic_mid.h --> included in mustek_usb2_asic_mid.c
- a2nu2/asic/asic_motor.c --> mustek_usb2_asic_motor.c
+ a2nu2/asic/asic_motor.c --> mustek_usb2_asic_motor.c
a2nu2/asic/asic_motor.h --> mustek_usb2_asic_motor.h
- a2nu2/asic/asic_usb.c --> mustek_usb2_asic_low.c
+ a2nu2/asic/asic_usb.c --> mustek_usb2_asic_low.c
a2nu2/asic/asic_usb.h --> included in mustek_usb2_asic_low.h
- a2nu2/asic/DefineScanner.h --> mustek_usb2_asic_low.h
+ a2nu2/asic/DefineScanner.h --> mustek_usb2_asic_low.h
a2nu2/asic/ScanRegDef.h --> included in mustek_usb2_asic_low.h
- Changed backend name to mustek_usb2.
diff --git a/doc/net.tex b/doc/net.tex
index a29fb75..d6bc110 100644
--- a/doc/net.tex
+++ b/doc/net.tex
@@ -86,7 +86,7 @@ The four primitive types of the SANE standard are encoded as follows:
\code{SANE\_Char} array. The trailing NUL byte is considered part
of the array and a \code{NULL} pointer is encoded as a zero-length
array.
-
+
\item[\code{\defn{SANE\_Handle}}:] A handle is encoded like a word.
The network backend needs to take care of converting these integer
values to the opaque pointer values that are presented to the user
@@ -473,7 +473,7 @@ are no request or reply arguments in this call. As a result of this
call, the connection between the client and the server that was
established by the \code{SANE\_NET\_INIT} call will be closed.
-% Local Variables:
+% Local Variables:
% mode: latex
% TeX-master: "sane.tex"
-% End:
+% End:
diff --git a/doc/plustek/FAQ b/doc/plustek/FAQ
index 7d65f41..a3a224f 100644
--- a/doc/plustek/FAQ
+++ b/doc/plustek/FAQ
@@ -51,7 +51,7 @@ SOLUTION:
---------
Set the link /usr/src/linux
to your current kernel-source tree before recompiling
-kernel-modules like pt_drv, then your version mismatch
+kernel-modules like pt_drv, then your version mismatch
problem should be solved.
@@ -303,7 +303,7 @@ A: Normally, there is no need to do so, because once you
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
@@ -382,4 +382,3 @@ A: In general you can install it over. BUT this has caused
This should cover all the directories where maybe some
sane files are installed...
-
diff --git a/doc/plustek/Makefile.kernel24 b/doc/plustek/Makefile.kernel24
index 207ef39..28677c1 100644
--- a/doc/plustek/Makefile.kernel24
+++ b/doc/plustek/Makefile.kernel24
@@ -43,7 +43,7 @@ REFOPT = -xref-all -index-all -html32
#
# add the following to get assembly listing
-# -Wa,-alh,-L -g
+# -Wa,-alh,-L -g
#
# get some version numbers
@@ -248,4 +248,3 @@ depend .depend dep:
ifeq (.depend,$(wildcard .depend))
#include .depend
endif
-
diff --git a/doc/plustek/Plustek-PARPORT-TODO.txt b/doc/plustek/Plustek-PARPORT-TODO.txt
index 94ef5f7..6eb8667 100644
--- a/doc/plustek/Plustek-PARPORT-TODO.txt
+++ b/doc/plustek/Plustek-PARPORT-TODO.txt
@@ -28,7 +28,7 @@ Genius HR6 negative scanning not okay none
********************************* DONE ***************************************
-- PS/2 bidi does not work (libieee1284)
+- PS/2 bidi does not work (libieee1284)
- Update the IOCTL interface and remove some old structs (CmdBlk)
******************************** SKIPPED *************************************
diff --git a/doc/plustek/Plustek-PARPORT.changes b/doc/plustek/Plustek-PARPORT.changes
index 0e7d73b..6aa878b 100644
--- a/doc/plustek/Plustek-PARPORT.changes
+++ b/doc/plustek/Plustek-PARPORT.changes
@@ -149,11 +149,11 @@ Version 0.43-7 05/11/2005
1.0 Fixed timer issues in user-space (Thanx to Rod Roark)
Version 0.43-8 08/10/2005
- 1.0 Fixed problem on ASIC96003/1 based devices, when scanning
+ 1.0 Fixed problem on ASIC96003/1 based devices, when scanning
lineart at 200 and 300 dpi
Version 0.43-9 11/14/2005
- 1.0 Fixed sizeof(long) issue for 64bit platforms, see
+ 1.0 Fixed sizeof(long) issue for 64bit platforms, see
bug #302195
Version 0.43-10 02/16/2006
@@ -177,4 +177,4 @@ Version 0.43-13 06/18/2007
Version 0.44-1 02/13/2013
1.0 Fixed issues for Kernels > 2.6.35
2.0 Define ULong and friends to uint32_t to make the driver
- work in a 64 bit environment \ No newline at end of file
+ work in a 64 bit environment
diff --git a/doc/plustek/Plustek-PARPORT.txt b/doc/plustek/Plustek-PARPORT.txt
index e5b6097..a181b9c 100644
--- a/doc/plustek/Plustek-PARPORT.txt
+++ b/doc/plustek/Plustek-PARPORT.txt
@@ -22,7 +22,7 @@ in sane-backends/backend. Simply do (as root user)
Then the module should be compiled, installed and loaded.
-Add the following three lines to file /etc/modules.conf
+Add the following three lines to file /etc/modules.conf
alias char-major-40 pt_drv
pre-install pt_drv modprobe -k parport
@@ -44,6 +44,3 @@ 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-TODO.txt b/doc/plustek/Plustek-USB-TODO.txt
index 0ea7e8b..7d03e9b 100644
--- a/doc/plustek/Plustek-USB-TODO.txt
+++ b/doc/plustek/Plustek-USB-TODO.txt
@@ -50,4 +50,3 @@ make mono/gray modes work on Canon scanners done
copy picture line by line to backend done
cancel function does not work correctly in large resolutions fixed
Move documents to its correct SANE place done
-
diff --git a/doc/plustek/Plustek-USB.changes b/doc/plustek/Plustek-USB.changes
index 8ed5cc8..ae6e69e 100644
--- a/doc/plustek/Plustek-USB.changes
+++ b/doc/plustek/Plustek-USB.changes
@@ -148,7 +148,7 @@ optical one (sensor stops too early)
V 0.50-2 (2005-08-19)
---------------------
More cleanup.
-Removed obsolete _WAF_BLACKFINE.
+Removed obsolete _WAF_BLACKFINE.
LiDE20 does not seem to have a reliable black calibration area,
so the devices now will switch off the lamp for dark calibration.
Fixed line statistics and added calibration data output.
@@ -283,7 +283,7 @@ V 0.47-1 - 0.47-4
V 0.46-9 (2003-11-03)
---------------------
-- Added alternate calibration for CIS devices
+- Added alternate calibration for CIS devices
- Added coarse calibration data-cache
- Moved parallelport code to extra backend file plustek_pp
- Fixed some minor bugs
diff --git a/doc/plustek/Plustek-USB.txt b/doc/plustek/Plustek-USB.txt
index e1ee793..939d4d7 100644
--- a/doc/plustek/Plustek-USB.txt
+++ b/doc/plustek/Plustek-USB.txt
@@ -20,7 +20,7 @@ PLUSTEK
=======
Vendor ID: 0x07B3
-Product ID Device-description and status
+Product ID Device-description and status
0x0005 not identified yet
0x0007 not identified yet
0x000F not identified yet
@@ -32,21 +32,21 @@ Product ID Device-description and status
0x0015 U24 (LM9832) - working
0x0016 not identified yet
0x0017 UT12 - working, UT16 - working, UT24 - working
-
+
MUSTEK
======
BearPaw vendor ID: 0x0400 (They use the NationalSemiconductors ID!!!)
-Product ID Device-description and status
+Product ID Device-description and status
0x1000 BearPaw 1200 (LM9831) - working
0x1001 BearPaw 1200 (LM9832) - not tested
0x1001 BearPaw 2400 (LM9832) - mostly working
-
+
KYE (Genius)
============
Vendor ID: 0x0458
-
-Product ID Device-description and status
+
+Product ID Device-description and status
0x2007 ColorPage-HR6 V2 - working
0x2008 ColorPage-HR6 V2 - not tested
0x2009 ColorPage-HR6A - not tested
@@ -58,7 +58,7 @@ Hewlett Packard
===============
Vendor ID: 0x03F0
-Product ID Device-description and status
+Product ID Device-description and status
0x0505 HP Scanjet 2100c - working
0x0605 HP Scanjet 2200c - working
@@ -66,7 +66,7 @@ EPSON
=====
Vendor ID: 0x04b8
-Product ID Device-description and status
+Product ID Device-description and status
0x010F EPSON Perfection 1250/Photo - working
0x011D EPSON Perfection 1260/Photo - working
@@ -74,9 +74,9 @@ UMAX
====
Vendor ID: 0x1606
-Product ID Device-description and status
-0x0050 UMAX 3400 - working
-0x0060 UMAX 3400/3450 - working
+Product ID Device-description and status
+0x0050 UMAX 3400 - working
+0x0060 UMAX 3400/3450 - working
0x0160 UMAX 5400 - working
COMPAQ
@@ -90,7 +90,7 @@ CANON
=====
Vendor ID: 0x04A9
-Product ID Device-description and status
+Product ID Device-description and status
0x???? FB620U - not integrated
0x2206 N650U - working
0x2207 N1220U - working
@@ -216,7 +216,7 @@ usbscanner 0x0003 0x1606 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00
The example line shows the vendor ID of UMAX 0x1606 and the product ID of the 5400
0x0160 - these values must match the ones of your scanner.
-Last step is adding a script in
+Last step is adding a script in
/etc/hotplug/usb/
It is called "usbscanner" (don't forget the executable rights)
@@ -232,7 +232,7 @@ fi
This script will correct the access right to your scanner device when the device
is plugged in.
-
+
Debugging your USB scanner (written by Kev Green)
-------------------------------------------------
@@ -454,4 +454,3 @@ CM - Color Mode (unitless), 3 for channel pixel rate color, else 1
-------------------------
-
diff --git a/doc/releases.txt b/doc/releases.txt
index 1579b15..abd007e 100644
--- a/doc/releases.txt
+++ b/doc/releases.txt
@@ -1,4 +1,4 @@
-2009-05-05
+2019-07-30
This text summarizes some points to pay attention to when a new release
of sane-backends is planned.
@@ -6,8 +6,9 @@ of sane-backends is planned.
Timetable (approximate periods):
Day 0: Announcement of upcoming release on sane-devel including timetable
+ and pointer to the GitLab milestone
Day 14: Feature freeze (only bugfixes + documentation updates)
-Day 28: Code freeze (only fixes for bugs that can destroy hardware, can cause
+Day 28: Code freeze (only fixes for bugs that can destroy hardware, can cause
compilation problems or render a backend completely unusable, and
documentation updates are allowed)
Day 35: Release
@@ -16,79 +17,49 @@ Before the release:
* set :new :yes on any new backend .desc files, by looking for added files:
- cd backend
- ls | while read aa; do git log --follow --diff-filter=A --find-renames=40% --format="%ai $aa" "$aa"; done > foo.log
+ version=1.0.27
+ git ls-files -- backend | while read f; do
+ git log --follow --diff-filter=A --find-renames=40% \
+ --format="%ai $f" $version..HEAD -- "$f"
+ done | cat
- Then inspect foo.log for any files added since the last release.
-* Make sure that config.guess and config.sub are up-to-date (get them from
- savannah.gnu.org/projects/config) (git clone is easiest)
-* configure.ac: remove 'git' from textual version number, and increment it
-* run autoreconf --force but do *NOT* use the --install option as it will
- overwrite our custom ltmain.sh
-* ChangeLog: generate from git log, something like:
- git log RELEASE_1_0_25..HEAD > ChangeLog
* NEWS: update and enter date of release, etc
- Get list of heavily change backends via: git diff --stat RELEASE_1_0_25
- Get other things by reading ChangeLog
-* sane-backends.lsm: update
+ Get list of heavily change backends via: git diff --stat $version..HEAD
+ Get list of details from: git log $version..HEAD
* git commit -a
-* tag git with release tag; e.g.: 'git tag -a RELEASE_1_0_15'
-* probably DONT want to git push here, because alioth will rebuild it's local
- checkout needlessly
+* git push origin master
Making the release:
-* make tar.gz, sane-backends-x.y.z.lsm, and .md5sum with "make sane-backends"
-* unpack tar.gz in temporary directory
-* make diff from last release by unpacking it also in temporary directory
- and running e.g.
- diff -uNr sane-backends-1.0.23 sane-backends-1.0.24 > sane-backends-1.0.23-1.0.24.diff
-* check that the diff applies cleanly to the old version
-* gzip the diff
-* install devel headers required to build optional backends (1284,gphoto,etc)
-* check that the new version .tar.gz can be compiled
-* upload the .tar.gz, tar.gz.md5 and .diff.gz to the FTP/HTTP servers
- (at the moment: alioth.debian.org, ftp files are in
- /srv/alioth.debian.org/chroot/ftproot/pub/sane/ )
- In the alioth web interface, you should upload the smallest file first,
- since you don't get error messages until after an upload completes,
- and you might need to change something.
- You can add the larger files afterwards. You may have to split larger
- files.
+* temporarily set a PRIVATE_TOKEN variable in the GitLab CI/CD
+ variables You have to create one in your own Settings > Access
+ Tokens. Set it to expire in a few hours to avoid abuse.
+* git tag -a -s 1.0.28 -m Release
+* git push --tags origin master
+* trigger the manual 'release' stage of the build via the web UI when
+ this becomes possible. This requires a valid PRIVATE_TOKEN.
Announcing the release:
-* checkout the sane/website.git module and:
-* copy sane-backends.html to sane-backends-"old-version".html
-* update sane-supported-devices.html with link to above "old" file
-* rebuild sane-backends.html and sane-mfgs.html (make -C doc html-pages)
-* use man2html from http://hydra.nac.uci.edu/indiv/ehood/man2html.html
+* [TBD] checkout the sane/website.git module and:
+* [TBD] copy sane-backends.html to sane-backends-"old-version".html
+* [TBD] update sane-supported-devices.html with link to above "old" file
+* [TBD] rebuild sane-backends.html and sane-mfgs.html (make -C doc html-pages)
+* [TBD] use man2html from http://hydra.nac.uci.edu/indiv/ehood/man2html.html
to rebuild html man pages (make -C doc html-man) (no other version works)
-* add md5 sum to sane-md5sums.txt
-* check and update platforms page (sane-support.html)
+* [TBD] add md5 sum to sane-md5sums.txt
+* [TBD] check and update platforms page (sane-support.html)
* add announcement to index.html
* git commit -a && git push
-* check that website was updated automatically. if not, see:
- /home/groups/sane/bin/update-htdocs.sh
-* rebuild descriptions.db (make -C doc descriptions.db)
-* scp doc/descriptions.db to alioth:
- /home/groups/sane/search/release
-* write announcements sane-devel, maybe others (e.g. freshmeat),
- include the md5 hash
+* check that website was updated automatically
+* [TBD] rebuild descriptions.db (make -C doc descriptions.db)
+* announce release on sane-devel and sane-announce mailing lists
After the release:
-#### consider not adding old changelogs to release package
-* move ChangeLog to ChangeLogs/ChangeLog-"version"
-* start a new ChangeLog, with the following message:
-
-This file is automatically generated at release time using git commit messages.
-
-For the latest changes please refer to the output of `git log` or see:
-https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=sane/sane-backends.git;a=log
-
-* configure.ac: bump textual version & add 'git' suffix
-* configure: regenerate with autoconf
-* remove the ':new' tag from any new backends .desc files
-* git add new files and commit
-* git push && git push --tags (one of these might give an error 'remote: fatal: bad object 0000000000000000000000000000000000000000', try the other one)
+* [TBD] copy ChangeLog to ChangeLogs/ChangeLog-$version
+* [TBD] start a new ChangeLog via git checkout ChangeLog
+* [TBD] bump version number in tools/create-changelog.sh
+* remove the ':new' tag from all doc/descriptions*/*.desc files
+* git add new and changed files and commit
+* git push
diff --git a/doc/sane-abaton.man b/doc/sane-abaton.man
index 84d8997..f1f33cb 100644
--- a/doc/sane-abaton.man
+++ b/doc/sane-abaton.man
@@ -14,7 +14,7 @@ is recognized, but support for it is untested.
If you own a Abaton scanner other than the ones listed above that
works with this backend, or if you own an Abaton scanner that does not
work with this backend, please contact
-.IR sane\-devel@lists.alioth.debian.org
+.IR sane\-devel@alioth-lists.debian.net
with the model number, so that arrangements can be made to include
support for it. Have a look at http://www.sane\-project.org/mailing\-lists.html
concerning subscription to sane\-devel.
@@ -107,7 +107,7 @@ former is more likely than the latter.
If you have found something that you think is a bug, please attempt to
recreate it with the SANE_DEBUG_ABATON environment variable set to
255, and send a report detailing the conditions surrounding the bug to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
.SH TODO
.TP
diff --git a/doc/sane-agfafocus.man b/doc/sane-agfafocus.man
index f4c1852..34ec463 100644
--- a/doc/sane-agfafocus.man
+++ b/doc/sane-agfafocus.man
@@ -31,7 +31,7 @@ color scans.
If you own a scanner other than the ones listed above that works with
this backend, please let us know by sending the scanner's model name,
SCSI id, and firmware revision to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
Have a look at http://www.sane\-project.org/mailing\-lists.html
concerning subscription to sane\-devel.
.PP
@@ -107,11 +107,11 @@ variable controls the debug level for this backend. E.g., a value of 128
requests all debug output to be printed. Smaller levels reduce verbosity.
SANE_DEBUG_AGFAFOCUS values:
-.sp
+.sp
.ft CR
.nf
Number Remark
-\
+\
0 print important errors (printed each time)
1 print errors
2 print sense
@@ -151,7 +151,7 @@ SANE_DEBUG_AGFAFOCUS to 128 and try to regenerate the problem. Then
send me a report with the log attached.
.PP
If you encounter a SCSI bus error or trimmed and/or displaced images please
-also set the environment variable SANE_DEBUG_SANEI_SCSI to 128 before sending
+also set the environment variable SANE_DEBUG_SANEI_SCSI to 128 before sending
me the report.
.SH TODO
@@ -172,4 +172,3 @@ sane(7), sane\-scsi(5)
.SH AUTHOR
Ingo Schneider and Karl Anders \[/O]ygard.
-
diff --git a/doc/sane-apple.man b/doc/sane-apple.man
index 7c55a5a..3418fd0 100644
--- a/doc/sane-apple.man
+++ b/doc/sane-apple.man
@@ -23,7 +23,7 @@ ColorOneScanner 24bit RGB color 3-pass
If you own a Apple scanner other than the ones listed above that
works with this backend, please let us know by sending the scanner's
model name, SCSI id, and firmware revision to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
See http://www.sane\-project.org/mailing\-lists.html for details on how to subscribe to
sane\-devel.
@@ -216,7 +216,7 @@ SANE_DEBUG_APPLE to 255 and rerun the exact sequence of keystrokes
and menu selections to reproduce it. Then send me a report with the
log attached.
.PP
-If you have an Apple Macintosh with the AppleScanners driver installed,
+If you have an Apple Macintosh with the AppleScanners driver installed,
reporting to me which options are grayed out (inactive) in what modes
would be very helpful.
.PP
diff --git a/doc/sane-artec.man b/doc/sane-artec.man
index 5f700a8..9dd4f44 100644
--- a/doc/sane-artec.man
+++ b/doc/sane-artec.man
@@ -132,7 +132,7 @@ SANE_DEBUG_ARTEC values
.ft CR
.nf
Number Remark
-\
+\
0 print important errors
1 print errors
2 print sense
@@ -147,12 +147,12 @@ Number Remark
11 print called sane\-procedures
12 print sane infos
13 print sane option-control messages
-\
+\
50 print verbose data/debug messages
-\
+\
== 100 print software RGB calibration data
== 101 print raw data from scanner to artec.data.raw file
-\
+\
== 128 print out all messages
.fi
.ft R
diff --git a/doc/sane-artec_eplus48u.man b/doc/sane-artec_eplus48u.man
index 19f461c..7e7ec37 100644
--- a/doc/sane-artec_eplus48u.man
+++ b/doc/sane-artec_eplus48u.man
@@ -139,6 +139,5 @@ Interpolation with 1200 dpi is weak.
.PP
Support for buttons is missing due to missing support in SANE.
.PP
-Please contact us if you find a bug:
+Please contact us if you find a bug:
.IR http://www.sane\-project.org/bugs.html .
-
diff --git a/doc/sane-as6e.man b/doc/sane-as6e.man
index efaf0d5..2e7dbf6 100644
--- a/doc/sane-as6e.man
+++ b/doc/sane-as6e.man
@@ -7,20 +7,20 @@ sane\-as6e \- SANE backend for using the Artec AS6E parallel port interface scan
The
.B sane\-as6e
library implements a SANE (Scanner Access Now Easy) backend
-that provides access to Artec AS6E flatbed scanner.
-.B It requires the as6edriver program in order to operate.
+that provides access to Artec AS6E flatbed scanner.
+.B It requires the as6edriver program in order to operate.
The as6edriver program is
.B not
-included with the SANE package.
-It can be found at
+included with the SANE package.
+It can be found at
.BR http://as6edriver.sourceforge.net.
See the as6edriver documentation for technical information.
.PP
The
-.I as6edriver
+.I as6edriver
program must be in the path for executables ($PATH). Especially if you run
.I saned
-(the SANE network scanning daemon), take care to setup the path for
+(the SANE network scanning daemon), take care to setup the path for
.I inetd
or
.I xinetd
@@ -29,7 +29,7 @@ correctly or place the program in a directory that is in the path.
.PP
.SH FILES
-.B as6edriver
+.B as6edriver
\- driver program that controls the scanner.
.SH SEE ALSO
diff --git a/doc/sane-avision.man b/doc/sane-avision.man
index 6a991b6..f0a5091 100644
--- a/doc/sane-avision.man
+++ b/doc/sane-avision.man
@@ -24,23 +24,23 @@ you try the first scans \- especially with film-scanners!
.SH CONFIGURATION
-The configuration file for this backend resides in
+The configuration file for this backend resides in
.IR @CONFIGDIR@/avision.conf .
Its contents is a list of device names that correspond to Avision and Avision
compatible scanners and backend-options. Empty lines and lines starting with
-a hash mark (#) are ignored. A sample configuration file is shown below:
+a hash mark (#) are ignored. A sample configuration file is shown below:
.nf
# this is a comment
-\
+\
option force\-a4
option force\-a3
option skip\-adf
option disable\-gamma\-table
option disable\-calibration
-\
- #scsi Vendor Model Type Bus Channel ID LUN
+\
+ #scsi Vendor Model Type Bus Channel ID LUN
scsi AVISION
scsi HP
scsi /dev/scanner
@@ -119,7 +119,7 @@ libusb corresponding to the USB scanner. For example "0x03f0 0x0701" or
"libusb:002:003". See sane\-usb(5) for details.
The program
-.IR sane\-find\-scanner
+.IR sane\-find\-scanner
helps to find out the correct scsi or usb device name.
A list with supported devices is built into the avision backend so
@@ -161,7 +161,7 @@ environment variable controls the debug level for this backend.
Higher debug levels increase the verbosity of the output. The debug
level 7 is the author's preferred value to debug backend problems.
-Example:
+Example:
export SANE_DEBUG_AVISION=7
.SH "SEE ALSO"
diff --git a/doc/sane-bh.man b/doc/sane-bh.man
index 8306976..2c0fadc 100644
--- a/doc/sane-bh.man
+++ b/doc/sane-bh.man
@@ -30,7 +30,7 @@ COPISCAN II 3338(A) Simplex Scanner (with ACE)
.PP
If you have a Bell+Howell scanner and are able to test it with this
backend, please contact
-.IR sane\-devel@lists.alioth.debian.org
+.IR sane\-devel@alioth-lists.debian.net
with the model number and testing results. Have a look at
http://www.sane\-project.org/mailing\-lists.html concerning subscription to
sane\-devel. Additionally, the author is curious as to the likelihood of using
@@ -38,17 +38,17 @@ this backend with the newer 4000 and 8000 series scanners. If you have such a
beast, please let me know.
.PP
The Bell+Howell Copiscan II series document scanners are high
-volume, high throughput scanners designed for document scanning
+volume, high throughput scanners designed for document scanning
applications. As such, they are lineart/grayscale scanners supporting
-a fixed number of fairly low resolutions (e.g. 200/240/300dpi).
-However, they do have a number of interesting and useful features
-suited to needs of document imaging applications.
+a fixed number of fairly low resolutions (e.g. 200/240/300dpi).
+However, they do have a number of interesting and useful features
+suited to needs of document imaging applications.
This backend attempts to support as many of these features as possible.
.PP
The main technical reference used in writing this backend is the
-.B Bell and Howell Copiscan II Remote SCSI Controller (RSC) OEM
-.B Technical Manual Version 1.5.
-The Linux SCSI programming HOWTO, the SANE API documentation, and
+.B Bell and Howell Copiscan II Remote SCSI Controller (RSC) OEM
+.B Technical Manual Version 1.5.
+The Linux SCSI programming HOWTO, the SANE API documentation, and
SANE source code were also extremely valuable resources.
.PP
@@ -80,9 +80,9 @@ The contents of the
.I bh.conf
file is a list of device names that correspond to Bell+Howell
scanners. See sane\-scsi(5) on details of what constitutes a valid device name.
-Additionally, options can be specified; these lines begin with the word "option".
-Each option is described in detail below. Empty lines and lines starting
-with a hash mark (#) are ignored.
+Additionally, options can be specified; these lines begin with the word "option".
+Each option is described in detail below. Empty lines and lines starting
+with a hash mark (#) are ignored.
.SH OPTIONS
The following options can be specified in the
@@ -99,9 +99,9 @@ These frames are generated based on the compression and barcode options.
These frames are never sent in preview mode.
.TP
.B fake\-inquiry
-This option is used for debugging purposes and its use is not encouraged.
+This option is used for debugging purposes and its use is not encouraged.
Essentially, it allows the backend to initialize in the absence of
-a scanner. This is useful for development and not much else.
+a scanner. This is useful for development and not much else.
This option must be specified earlier in the configuration file than
the devices which are to be "faked".
@@ -144,8 +144,8 @@ levels reduce verbosity.
.TP
.B ADF support
With document scanners, automatic document feeder (ADF) support is a key
-feature. The backend supports the ADF by default and returns
-.B SANE_STATUS_NO_DOCS
+feature. The backend supports the ADF by default and returns
+.B SANE_STATUS_NO_DOCS
when the out-of-paper condition is detected. The SANE frontend
.B scanadf
is a command line frontend that supports multi-page scans. It has been
@@ -158,8 +158,8 @@ scans is included in xsane version 0.35 and above.
.B Duplex scanning
Some models, such as the COPISCAN II 6338, support duplex scanning. That
is, they scan both sides of the document during a single pass through the
-scanner (the scanner has two cameras). This backend supports duplex
-scanning (with the
+scanner (the scanner has two cameras). This backend supports duplex
+scanning (with the
.B \-\-duplex
option). The front and back page images are delivered consecutively
as if they were separately scanned pages.
@@ -167,16 +167,16 @@ as if they were separately scanned pages.
.TP
.B Hardware compression
The scanner is capable of compressing the data into several industry
-standard formats (CCITT G3, CCITT G3-2D, CCITT G4). This results in
+standard formats (CCITT G3, CCITT G3-2D, CCITT G4). This results in
increased performance as less data is passed from the scanner to the
host over the SCSI bus. The backend supports these compression formats
-via the
+via the
.B \-\-g31d, \-\-g32d, \-\-g42d
options, respectively. Many SANE frontends are not equipped to deal with
these formats, however. The SANE frontend
.B scanadf
-supports these optional frame formats. The compressed image data
-is written directly to a file and can then be processed by a scan-script
+supports these optional frame formats. The compressed image data
+is written directly to a file and can then be processed by a scan-script
using the
.B \-\-scan\-script
option. Examples of this are given on the scanadf homepage.
@@ -197,18 +197,18 @@ parameters must remain constant during the entire batch.
.TP
.B Icon Generation
The Icon function generates a thumbnail of the full page image, that can be
-transferred as if it were a separate page. This allows the host to
+transferred as if it were a separate page. This allows the host to
quickly display a thumbnail representation during the scanning operation.
-Perhaps this would be a great way of implementing a preview scan, but
+Perhaps this would be a great way of implementing a preview scan, but
since a normal scan is so quick, it might not be worth the trouble.
.TP
.B Multiple Sections
Multiple sections (scanning sub-windows) can be defined for the front and
-back pages. Each section can have different characteristics (e.g. geometry,
+back pages. Each section can have different characteristics (e.g. geometry,
compression). The sections are returned as if they were separately
scanned images. Additionally sections can be used to greatly enhance the
-accuracy and efficiency of the barcode/patchcode decoding process by
+accuracy and efficiency of the barcode/patchcode decoding process by
limiting the search area to a small subset of the page. Most Copiscan II
series scanners support up to 8 user-defined sections.
@@ -218,18 +218,18 @@ The RSC unit can recognize Bar and Patch Codes of various types embedded
in the scanned image. The codes are decoded and the data is returned to
the frontend as a text frame. The text is encoded in xml and contains
a great deal of information about the decoded data such as the location
-where it was found, its orientation, and the time it took to find.
-Further information on the content of this text frame as well as some
+where it was found, its orientation, and the time it took to find.
+Further information on the content of this text frame as well as some
barcode decoding examples can be found on the backend homepage.
.SH LIMITATIONS
.TP
.B Decoding a single barcode type per scan
The RSC unit can search for up to six different barcode types at a time.
-While the code generally supports this as well, the
+While the code generally supports this as well, the
.B \-\-barcode\-search\-bar
-option only allows the user to specify a single barcode type.
-Perhaps another option which allows a comma separated list of barcode
+option only allows the user to specify a single barcode type.
+Perhaps another option which allows a comma separated list of barcode
type codes could be added to address this.
.TP
.B Scanning a fixed number of pages in batch mode
@@ -241,12 +241,12 @@ prior to initiating the last scan command. Currently, there is no mechanism
available for the frontend to pass this knowledge to the backend.
If batch mode is enabled and the \-\-end\-count terminates a scanadf session,
an extra page will be pulled through the scanner, but is neither read
-nor delivered to the frontend. The issue can be avoided by specifying
+nor delivered to the frontend. The issue can be avoided by specifying
\-\-batch=no when scanning a fixed number of pages.
.TP
.B Revision 1.2 Patch detector
There is an enhanced patchcode detection algorithm available in the RSC
-with revision 1.2 or higher that is faster and more reliable than the
+with revision 1.2 or higher that is faster and more reliable than the
standard Bar/Patch code decoder. This is not currently supported.
.SH OPTIONS
@@ -255,14 +255,14 @@ standard Bar/Patch code decoder. This is not currently supported.
.TP
.B \-\-preview[=(yes|no)] [no]
Request a preview-quality scan. When preview is set to yes image
-compression is disabled and the image is delivered in a
+compression is disabled and the image is delivered in a
SANE_FRAME_GRAY frame.
.TP
.B \-\-mode lineart|halftone [lineart]
Selects the scan mode (e.g., lineart,monochrome, or color).
.TP
.B \-\-resolution 200|240|300dpi [200]
-Sets the resolution of the scanned image. Each scanner model supports
+Sets the resolution of the scanned image. Each scanner model supports
a list of standard resolutions; only these resolutions can be used.
.TP
.B \-\-compression none|g31d|g32d|g42d [none]
@@ -313,7 +313,7 @@ Bottom-right y position of scan area.
.B Feeder Options:
.TP
.B \-\-source Automatic Document Feeder|Manual Feed Tray [Automatic Document Feeder]
-Selects the scan source (such as a document feeder). This option is provided
+Selects the scan source (such as a document feeder). This option is provided
to allow multiple image scans with xsane; it has no other purpose.
.TP
.B \-\-batch[=(yes|no)] [no]
@@ -329,7 +329,7 @@ affect both the front and back pages.
.TP
.B \-\-timeout\-adf 0..255 [0]
Sets the timeout in seconds for the automatic document feeder (ADF).
-The value 0 specifies the hardware default value which varies based
+The value 0 specifies the hardware default value which varies based
on the scanner model.
.TP
.B \-\-timeout\-manual 0..255 [0]
@@ -388,40 +388,40 @@ feature is completely disabled. The valid barcode type are:
.RS
.br
.B none
-.br
+.br
.B ean\-8
.br
.B ean\-13
-.br
+.br
.B reserved\-ean\-add
-.br
+.br
.B code39
-.br
+.br
.B code2\-5\-interleaved
-.br
+.br
.B code2\-5\-3lines\-matrix
-.br
+.br
.B code2\-5\-3lines\-datalogic
-.br
+.br
.B code2\-5\-5lines\-industrial
-.br
+.br
.B patchcode
-.br
+.br
.B codabar
-.br
+.br
.B codabar\-with\-start\-stop
-.br
+.br
.B code39ascii
-.br
+.br
.B code128
-.br
+.br
.B code2\-5\-5lines\-iata
.br
.RE
.TP
.B \-\-barcode\-search\-count 1..7 [3]
Number of times that the RSC performs the decoding algorithm. Specify
-the smallest number possible to increase performance. If you are having
+the smallest number possible to increase performance. If you are having
trouble recognizing barcodes, it is suggested that you increase this option
to its maximum value (7).
.TP
@@ -440,7 +440,7 @@ are:
.RE
.TP
.B \-\-barcode\-hmin 0..1660mm [5]
-Sets the barcode minimum height in millimeters (larger values increase
+Sets the barcode minimum height in millimeters (larger values increase
recognition speed). Of course the actual barcodes in the document must be
of sufficient size.
.TP
@@ -450,67 +450,67 @@ expires, the decoder will stop trying to decode barcodes.
.TP
.B \-\-section <string> []
Specifies a series of image sections. A section can be used to gather
-a subset image or to provide a small area for barcode decoding.
+a subset image or to provide a small area for barcode decoding.
Each section is specified in the following format (units are in millimeters):
.PP
.B <width>x<height>+<top-left-x>+<top-left-y>[:functioncode...]
-.PP
+.PP
Multiple sections can be specified by separating them with commas.
.PP
For example
.B 76.2x25.4+50.8+0:frontbar
-identifies an area 3 inches wide and 1 inch high with a top left corner
+identifies an area 3 inches wide and 1 inch high with a top left corner
at the top of the page two inches from the left hand edge of the page.
-This section will be used for barcode decoding on the front page only.
+This section will be used for barcode decoding on the front page only.
.PP
For example
-.B 50.8x25.4+25.4+0:frontbar:front:g42d
-identifies an area 2 inches wide and 1 inch high with a top left corner
-at the top of the page one inch from the left hand edge of the page.
-This section will be used for barcode decoding on the front page as well
-as generating an image compressed in g42d format.
+.B 50.8x25.4+25.4+0:frontbar:front:g42d
+identifies an area 2 inches wide and 1 inch high with a top left corner
+at the top of the page one inch from the left hand edge of the page.
+This section will be used for barcode decoding on the front page as well
+as generating an image compressed in g42d format.
.PP
Ordinarily barcodes are searched in the entire image. However, when you
specify sections all barcode searching is done within the specific sections
-identified. This can significantly speed up the decoding process.
+identified. This can significantly speed up the decoding process.
The following functioncodes are available:
.RS
.br
.B front
\- generate an image for the front page section
-.br
+.br
.B back
\- generate an image for the back page section
.br
.B frontbar
\- perform barcode search in front page section
-.br
+.br
.B backbar
\- perform barcode search in back page section
.br
.B frontpatch
\- perform patchcode search in front page section
-.br
+.br
.B backpatch
\- perform patchcode search in back page section
.br
.B none
\- use no image compression
-.br
+.br
.B g31d
\- use Group 3 1 dimension image compression
-.br
+.br
.B g32d
\- use Group 3 2 dimensions image compression
-.br
+.br
.B g42d
\- use Group 4 2 dimensions image compression
.br
.RE
.PP
If you omit a compression functioncode, the full page compression setting
-is used. If you specify multiple compression functioncodes, only the
+is used. If you specify multiple compression functioncodes, only the
last one is used.
.TP
@@ -536,7 +536,7 @@ This is a new backend; detailed bug reports are welcome -- and expected ;)
If you have found something that you think is a bug, please attempt to
recreate it with the SANE_DEBUG_BH environment variable set to
255, and send a report detailing the conditions surrounding the bug to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
.SH "SEE ALSO"
sane(7), sane\-scsi(5), scanimage(1), scanadf(1)
diff --git a/doc/sane-canon.man b/doc/sane-canon.man
index be7693c..6085b16 100644
--- a/doc/sane-canon.man
+++ b/doc/sane-canon.man
@@ -17,9 +17,9 @@ CanoScan FB620S
.br
CanoScan FB1200S
.br
-CanoScan FS2700F
+CanoScan FS2700F
.br
-CanoScan FS2710S
+CanoScan FS2710S
.br
.RE
.PP
@@ -44,7 +44,7 @@ FS2710S Ulrich Deiters <ukd@xenon.pc.uni\-koeln.de>.
.SH TIPS (FS2700F)
.PP
Scanning either slides or negatives has been found to require rather
-large gamma corrections of about 2.2 to 2.4 (same value for red, green,
+large gamma corrections of about 2.2 to 2.4 (same value for red, green,
and blue). It is recommended to use the automatic exposure controls
of the frontend xsane for best results.
.PP
@@ -82,9 +82,9 @@ support dynamic loading).
.B SANE_DEBUG_CANON
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_CANON=4
.SH "SEE ALSO"
diff --git a/doc/sane-canon630u.man b/doc/sane-canon630u.man
index bdfb874..e9ec3cd 100644
--- a/doc/sane-canon630u.man
+++ b/doc/sane-canon630u.man
@@ -26,10 +26,10 @@ The contents of the
.I canon630u.conf
file is a list of device names that correspond to Canon
USB scanners. Empty lines and lines starting with a hash mark (#) are
-ignored. Only one device name can be listed in
+ignored. Only one device name can be listed in
.IR canon630u.conf .
The program
-.IR sane\-find\-scanner
+.IR sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name
could be
.I /dev/usb/scanner0
@@ -46,7 +46,7 @@ software was developed by analyzing the USB traffic of the Windows
it seems to work for my scanner. If you have complaints, let me know.
.PP
This driver requires the ability to send USB Control Messages, available in
-kernel 2.4.12 or later.
+kernel 2.4.12 or later.
.PP
Some users have reported that this driver doesn't work at all. This seems
to be a hardware specific issue, although I don't know what exactly the
@@ -71,7 +71,7 @@ support dynamic loading).
.I /tmp/canon.cal
The calibration file used to normalize pixel brightness. This is
calculated every time the scanner is first used after it has lost power.
-Deleting this file will force recalibration.
+Deleting this file will force recalibration.
.SH ENVIRONMENT
.TP
.B SANE_CONFIG_DIR
@@ -91,10 +91,10 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_CANON630U
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
Example:
-.br
+.br
SANE_DEBUG_CANON630U=12 scanimage > /dev/null
.SH "SEE ALSO"
sane(7), sane\-usb(5), sane\-find\-scanner(1)
@@ -103,4 +103,3 @@ http://canon-fb630u.sourceforge.net/
.br
.SH AUTHOR
Nathan Rutman
-
diff --git a/doc/sane-canon_dr.man b/doc/sane-canon_dr.man
index 3e8ac06..4fbc635 100644
--- a/doc/sane-canon_dr.man
+++ b/doc/sane-canon_dr.man
@@ -5,16 +5,16 @@
sane\-canon_dr \- SANE backend for Canon DR-series scanners
.SH DESCRIPTION
-The
+The
.B sane\-canon_dr
library implements a SANE (Scanner Access Now Easy) backend which
provides access to some Canon DR-series scanners.
-This document describes backend version 51, which shipped with SANE 1.0.25.
+This document describes backend version 57, which shipped with SANE 1.0.28.
.SH SUPPORTED HARDWARE
-This version has only been tested with a few scanner models. Please see
-http://www.sane\-project.org/sane\-supported\-devices.html for the most recent
+This version has only been tested with a few scanner models. Please see
+http://www.sane\-project.org/sane\-supported\-devices.html for the most recent
list.
This backend may support other Canon scanners. The best
@@ -23,8 +23,8 @@ or to collect a trace of the windows driver in action.
Please contact the author for help or with test results.
In general, the larger machines (DR-4000 and up) which have been tested use
-a fairly complete protocol, with hardware support for many modes, resolutions
-and features. The smaller machines have many limitations, like missing
+a fairly complete protocol, with hardware support for many modes, resolutions
+and features. The smaller machines have many limitations, like missing
horizontal resolutions, missing binary mode, always scanning full-width, etc.
There is code in the backend to address these problems, but there seems to be
no way to detect if they are required, so they must be hard-coded.
@@ -32,26 +32,26 @@ no way to detect if they are required, so they must be hard-coded.
.SH OPTIONS
Effort has been made to expose most hardware options, including:
.PP
-source s
+source s
.RS
Selects the source for the scan. Options
may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
.RE
.PP
-mode m
+mode m
.RS
Selects the mode for the scan. Options
may include "Lineart", "Halftone", "Gray", and "Color".
.RE
.PP
-resolution
+resolution
.RS
Controls scan resolution.
.RE
.PP
tl\-x, tl\-y, br\-x, br\-y
.RS
-Sets scan area upper left and lower right coordinates. These are renamed
+Sets scan area upper left and lower right coordinates. These are renamed
t, l, x, y by some frontends.
.RE
.PP
@@ -67,37 +67,37 @@ enhancement, compression, buttons and sensors, etc.
Additionally, several 'software' options are exposed by the backend. These
are reimplementations of features provided natively by larger scanners, but
running on the host computer. This enables smaller machines to have similar
-capabilities. Please note that these features are somewhat simplistic, and
-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
+capabilities. Please note that these features are somewhat simplistic, and
+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
+swcrop
.RS
-Requests the driver to detect the extremities of the paper within the larger
-image, and crop the empty edges.
+Requests the driver to detect the extremities of the paper within the larger
+image, and crop the empty edges.
.RE
.PP
-swdeskew
+swdeskew
.RS
-Requests the driver to detect the rotation of the paper within the larger
+Requests the driver to detect the rotation of the paper within the larger
image, and counter the rotation.
.RE
.PP
-swdespeck X
+swdespeck X
.RS
-Requests the driver to find and remove dots of X diameter or smaller from the
+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.
.RE
-Use 'scanimage \-\-help' to get a list, but be aware that some options may
-be settable only when another option has been set, and that advanced options
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
may be hidden by some frontend programs.
.PP
.SH CONFIGURATION FILE
The configuration file "canon_dr.conf" is used to tell the backend how to look
for scanners, and provide options controlling the operation of the backend.
-This file is read each time the frontend asks the backend for a list
+This file is read each time the frontend asks the backend for a list
of scanners, generally only when the frontend starts. If the configuration
file is missing, the backend will fail to run.
.PP
@@ -105,9 +105,9 @@ Scanners can be specified in the configuration file in 4 ways:
.PP
"scsi CANON DR"
.RS
-Requests backend to search all scsi busses in the system for a device
+Requests backend to search all scsi busses in the system for a device
which reports itself to be a scanner made by 'CANON', with a model name
-starting with 'DR'.
+starting with 'DR'.
.RE
.PP
"scsi /dev/sg0" (or other scsi device file)
@@ -119,7 +119,7 @@ specify one. Probably should not be used with the other "scsi" line above.
.PP
"usb 0x04a9 0x1603" (or other vendor/product ids)
.RS
-Requests backend to search all usb busses in the system for a device
+Requests backend to search all usb busses in the system for a device
which uses that vendor and product id. The device will then be queried
to determine if it is a Canon scanner.
.RE
@@ -129,12 +129,12 @@ to determine if it is a Canon scanner.
Some systems use a kernel driver to access usb scanners. This method is untested.
.RE
.PP
-Besides the 'scsi' and 'usb' lines, the configuration file supports the
+Besides the 'scsi' and 'usb' lines, the configuration file supports the
following 'option' lines:
.PP
"option buffer-size [number of bytes]"
.RS
-Set the number of bytes in the data buffer to something other than the
+Set the number of bytes in the data buffer to something other than the
compiled\-in default of 4MB. Large values may cause timeouts or hangs, small
values may cause slow scans.
.PP
@@ -150,7 +150,7 @@ warned.
.br
"option version-name [string of text]"
.RS
-These options can be used collectively to override the values provided by the
+These options can be used collectively to override the values provided by the
scanner, or to provide the values when the scanner cannot.
.RE
.PP
@@ -189,12 +189,12 @@ enables debugging output to stderr. Valid values are:
.RE
.SH KNOWN ISSUES
-This backend was entirely reverse engineered from usb traces of the proprietary
+This backend was entirely reverse engineered from usb traces of the proprietary
driver. Various advanced features of the machines may not be enabled. Many
machines have not been tested. Their protocol is unknown.
.SH CREDITS
-
+
The various authors of the sane\-fujitsu backend provided useful code
.br
Yabarana Corp. www.yabarana.com provided significant funding
@@ -218,4 +218,3 @@ sane\-usb(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-canon_pp.man b/doc/sane-canon_pp.man
index ae307cb..46bb823 100644
--- a/doc/sane-canon_pp.man
+++ b/doc/sane-canon_pp.man
@@ -5,7 +5,7 @@ sane\-canon_pp \- SANE backend for Canon CanoScan Parallel Port flatbed scanners
.SH DESCRIPTION
The
.B sane\-canon_pp
-library implements a SANE (Scanner Access Now Easy) backend that provides
+library implements a SANE (Scanner Access Now Easy) backend that provides
access to the following Canon flatbed scanners:
.PP
.RS
@@ -25,11 +25,11 @@ CanoScan N640P ex
.br
.RE
.PP
-No USB scanners are supported and there are no plans to support them in the
-future. Other projects are working on support for USB scanners. See the
-.B PROJECTS
+No USB scanners are supported and there are no plans to support them in the
+future. Other projects are working on support for USB scanners. See the
+.B PROJECTS
file for more detail. The FB310P and FB610P are re-badged Avision scanners
-which use a different command set, so are unlikely to be supported by this
+which use a different command set, so are unlikely to be supported by this
backend in the future.
.PP
IMPORTANT: this is alpha code. While we have made every effort to make it as
@@ -42,77 +42,77 @@ below).
.
.PP
.SH "DEVICE NAMES"
-This backend expects device names of the form presented by libieee1284. These
+This backend expects device names of the form presented by libieee1284. These
names are highly dependent on operating system and version.
-On Linux 2.4 kernels this will be of the form
+On Linux 2.4 kernels this will be of the form
.I "parport0"
-or older (2.2 and before) kernels may produce names like
+or older (2.2 and before) kernels may produce names like
.IR "0x378"
-(the base address of your port) or simply
+(the base address of your port) or simply
.IR "0"
-depending on your module configuration. Check the contents of
+depending on your module configuration. Check the contents of
.I /proc/parport
-if it exists. If you don't want to specify a default port (or don't know its
+if it exists. If you don't want to specify a default port (or don't know its
name), the backend should be able to detect which port your scanner is on.
.SH CONFIGURATION
The contents of the
.I canon_pp.conf
-file is a list of options for the driver to use. Empty lines and lines
+file is a list of options for the driver to use. Empty lines and lines
starting with a hash mark (#) are ignored.
.PP
The supported options are currently
.BR ieee1284 ,
.BR calibrate ,
.BR init_mode ,
-and
+and
.BR force_nibble
Option
-.B ieee1284
+.B ieee1284
.IR port-name
-defines which port to use. The format of port-name is OS dependent, based on
+defines which port to use. The format of port-name is OS dependent, based on
the names presented by libieee1284. Please only have one of these lines, or
all but one will be ignored.
-Option
-.B calibrate
-.IR cal-file
+Option
+.B calibrate
+.IR cal-file
.IR [port-name]
-defines which calibration file to use on a per-port basis. If you only have
-one parport, the port-name argument may be omitted \- but be careful as this
+defines which calibration file to use on a per-port basis. If you only have
+one parport, the port-name argument may be omitted \- but be careful as this
will cause problems on multi-scanner systems. You may have as many of these
-lines as you like, as long as each has a unique port name. The tilde (`~')
-character is acceptable and will be expanded to the value of the HOME
+lines as you like, as long as each has a unique port name. The tilde (`~')
+character is acceptable and will be expanded to the value of the HOME
environment.
-Option
+Option
.B init_mode
.IR <AUTO|FB620P|FB630P>
.IR [portname]
-defines which initialisation (wake-up) mode to use on a per-port basis.
-If you only have one parport, the portname argument may be omitted \- but
-be careful as this may cause problems on multi-scanner systems.
-You may have as many of these lines as you like, as long as each has a unique
-port name. The valid initialisation modes are FB620P (which strobes 10101010
-and 01010101 on the data pins), FB630P (which strobes 11001100 and 00110011
+defines which initialisation (wake-up) mode to use on a per-port basis.
+If you only have one parport, the portname argument may be omitted \- but
+be careful as this may cause problems on multi-scanner systems.
+You may have as many of these lines as you like, as long as each has a unique
+port name. The valid initialisation modes are FB620P (which strobes 10101010
+and 01010101 on the data pins), FB630P (which strobes 11001100 and 00110011
on the data pins) and AUTO, which will try FB630P mode first then FB620P mode
second. The FB620P mode is also used by the FB320P. The FB630P mode is used
by the FB330P, N340P, and N640P.
Option
.B force_nibble
-forces the driver to use nibble mode even if ECP mode is reported to work by
-libieee1284. This works-around the rare issue of ECP mode being reported to
+forces the driver to use nibble mode even if ECP mode is reported to work by
+libieee1284. This works-around the rare issue of ECP mode being reported to
work by the library, then not working.
.SH TIPS
.PP
-Hit the "Calibrate" button before scanning. It vastly improves the quality of
+Hit the "Calibrate" button before scanning. It vastly improves the quality of
scans.
.PP
-To enable automatic detection of your scanner, uncomment the "canon_pp" line
+To enable automatic detection of your scanner, uncomment the "canon_pp" line
from
.I @CONFIGDIR@/dll.conf
.PP
@@ -127,40 +127,40 @@ below).
The static library implementing this backend.
.TP
.I @LIBDIR@/libsane\-canon_pp.so
-The shared library implementing this backend (present on systems that support
+The shared library implementing this backend (present on systems that support
dynamic loading).
.SH ENVIRONMENT
.TP
.B SANE_CONFIG_DIR
-This environment variable specifies the list of directories that may contain
-the configuration file. Under UNIX, the directories are separated by a colon
+This environment variable specifies the list of directories that may contain
+the configuration file. Under UNIX, the directories are separated by a colon
(`:'), under OS/2, they are separated by a semi-colon (`;'). If this variable
-is not set, the configuration file is searched in two default directories:
-first, the current working directory (".") and then in @CONFIGDIR@. If the
+is not set, the configuration file is searched in two default directories:
+first, the current working directory (".") and then in @CONFIGDIR@. If the
value of the environment variable ends with the directory separator character,
-then the default directories are searched after the explicitly specified
+then the default directories are searched after the explicitly specified
directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories "tmp/config", ".", and
"@CONFIGDIR@" being searched (in this order).
.TP
.B SANE_DEBUG_CANON_PP
-If the library was compiled with debug support enabled, this environment
-variable controls the debug level for this backend. Higher debug levels
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend. Higher debug levels
increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_CANON_PP=4
.SH NOTES
.B Features available in the Windows interface
.TP
-.B Brightness and Contrast
-These are not implemented, and probably never will be. These appear to be
-implemented entirely in software. Use GIMP or a similar program if you need
+.B Brightness and Contrast
+These are not implemented, and probably never will be. These appear to be
+implemented entirely in software. Use GIMP or a similar program if you need
these features.
.TP
.B Descreen Mode
-This appears on our first analysis to be just oversampling with an
+This appears on our first analysis to be just oversampling with an
anti-aliasing filter. Again, it seems to be implemented entirely in software,
so GIMP is your best bet for now.
.TP
@@ -170,51 +170,51 @@ one returned during calibration) will be loaded.
.PP
.B Communication Problems
.PP
-ECP mode in libieee1284 doesn't always work properly, even with new hardware.
+ECP mode in libieee1284 doesn't always work properly, even with new hardware.
We believe that this is a ppdev problem. If you change the configuration file
-to include
+to include
.B force_nibble
, the problem will go away, but you will only be able to scan in nibble mode.
.PP
Sometimes the scanner can be left in a state where our code cannot revive it.
-If the backend reports no scanner present, try unplugging the power and
+If the backend reports no scanner present, try unplugging the power and
plugging it back in. Also try unplugging printers from the pass-through port.
.PP
-The scanner will not respond correctly to our commands when you first plug in
-the power. You may find if you try a scan very soon after plugging in the
+The scanner will not respond correctly to our commands when you first plug in
+the power. You may find if you try a scan very soon after plugging in the
power that the backend will incorrectly report that you have no scanner present.
-To avoid this, give it about 10 seconds to reset itself before attempting any
+To avoid this, give it about 10 seconds to reset itself before attempting any
scans.
.PP
.B Repeated Lines
.PP
Sometimes at high resolutions (ie. 600dpi) you will notice lines which appear
twice. These lines correspond to points where the scanner head has stopped
-during the scan (it stops every time the internal 64kb buffer is full).
+during the scan (it stops every time the internal 64kb buffer is full).
Basically it's a mechanical problem inside the scanner, that the tolerance of
movement for a start/stop event is greater than 1/600 inches. I've never tried
-the windows driver so I'm not sure how (or if) it works around this problem,
-but as we don't know how to rewind the scanner head to do these bits again,
+the windows driver so I'm not sure how (or if) it works around this problem,
+but as we don't know how to rewind the scanner head to do these bits again,
there's currently no nice way to deal with the problem.
.PP
.B Grey-scale Scans
.PP
-Be aware that the scanner uses the green LEDs to read grey-scale scans, meaning
-green coloured things will appear lighter than normal, and red and blue
-coloured items will appear darker than normal. For high-accuracy grey-scale
-scans of colour items, it's best just to scan in colour and convert to
+Be aware that the scanner uses the green LEDs to read grey-scale scans, meaning
+green coloured things will appear lighter than normal, and red and blue
+coloured items will appear darker than normal. For high-accuracy grey-scale
+scans of colour items, it's best just to scan in colour and convert to
grey-scale in graphics software such as the GIMP.
.PP
.B FB620P/FB320P Caveats
.PP
These models can not be reset in the same way as the others. The windows driver
-doesn't know how to reset them either \- when left with an inconsistent scanner,
+doesn't know how to reset them either \- when left with an inconsistent scanner,
it will start scanning half way down the page!
.PP
Aborting is known to work correctly on the FB*30P models, and is known to be
-broken on the FB*20P models. The FB620P which I tested on simply returns
-garbage after a scan has been aborted using the method we know.
-Aborting is able to leave the scanner in a state where it can be shut down,
+broken on the FB*20P models. The FB620P which I tested on simply returns
+garbage after a scan has been aborted using the method we know.
+Aborting is able to leave the scanner in a state where it can be shut down,
but not where another scan can be made.
@@ -224,9 +224,8 @@ sane(7), sane\-dll(5)
http://canon\-fb330p.sourceforge.net/
.SH AUTHOR
-This backend is primarily the work of Simon Krix (Reverse Engineering), and
-Matthew Duggan (SANE interface).
+This backend is primarily the work of Simon Krix (Reverse Engineering), and
+Matthew Duggan (SANE interface).
.PP
-Many thanks to Kevin Easton for his comments and help, and Kent A. Signorini
+Many thanks to Kevin Easton for his comments and help, and Kent A. Signorini
for his help with the N340P.
-
diff --git a/doc/sane-cardscan.man b/doc/sane-cardscan.man
index 7c081af..e5872a8 100644
--- a/doc/sane-cardscan.man
+++ b/doc/sane-cardscan.man
@@ -5,16 +5,16 @@
sane\-cardscan \- SANE backend for Corex CardScan usb scanners
.SH DESCRIPTION
-The
+The
.B sane\-cardscan
library implements a SANE (Scanner Access Now Easy) backend which
provides access to the Corex CardScan 800c & 600c small-format scanners.
-The backend supports only grayscale and color modes and media of
+The backend supports only grayscale and color modes and media of
(theoretically) infinite length.
This backend may support other scanners. The best
-way to determine level of support is to get a trace of the windows
+way to determine level of support is to get a trace of the windows
driver in action, and send it to the author.
.SH OPTIONS
@@ -28,7 +28,7 @@ Selects the mode for the scan. Options are "Gray" and "Color".
.SH CONFIGURATION FILE
The configuration file "cardscan.conf" is used to tell the backend how to look
for scanners, and provide options controlling the operation of the backend.
-This file is read each time the frontend asks the backend for a list
+This file is read each time the frontend asks the backend for a list
of scanners, generally only when the frontend starts. If the configuration
file is missing, the backend will use a set of compiled defaults, which
are identical to the default configuration file shipped with SANE.
@@ -37,7 +37,7 @@ Scanners can be specified in the configuration file in 2 ways:
.PP
"usb 0x04c5 0x1042" (or other vendor/product ids)
.RS
-Requests backend to search all usb busses in the system for a device
+Requests backend to search all usb busses in the system for a device
which uses that vendor and product id. The device will then be queried
to determine if it is a cardscan scanner.
.RE
@@ -91,11 +91,11 @@ cannot set x/y coordinate values, resolutions, etc. These things could
be simulated in the backend, but there are plenty of command line tools.
.br
.br
-The backend also does not send all the commands that the windows driver
+The backend also does not send all the commands that the windows driver
does, so it may not function the same.
.br
.br
-The backend does not have the calibration or ejection options of the
+The backend does not have the calibration or ejection options of the
windows driver.
.br
.br
@@ -111,4 +111,3 @@ sane\-usb(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-config.man b/doc/sane-config.man
index 42c6f9a..997a342 100644
--- a/doc/sane-config.man
+++ b/doc/sane-config.man
@@ -37,7 +37,7 @@ frontend to libsane.
.B \-\-cflags
Print the compiler flags that are necessary to compile a
.B SANE
-frontend.
+frontend.
.TP 8
.B \-\-prefix
Print the prefix used during compilation of libsane.
diff --git a/doc/sane-coolscan.man b/doc/sane-coolscan.man
index 5952039..65c8d53 100644
--- a/doc/sane-coolscan.man
+++ b/doc/sane-coolscan.man
@@ -6,7 +6,7 @@ sane\-coolscan \- SANE backend for Nikon film-scanners
.SH ABOUT THIS FILE
-This file is a short description of the coolscan-backend for sane!
+This file is a short description of the coolscan-backend for sane!
.SH DESCRIPTION
@@ -18,22 +18,22 @@ library implements a SANE backend that provides the interface to the following N
.SH CONFIGURATION
-The configuration file for this backend resides in
+The configuration file for this backend resides in
.IR @CONFIGDIR@/coolscan.conf .
Its contents is a list of device names that correspond to Nikon Coolscan scanners. Empty lines
and lines starting with a hash mark (#) are ignored. A sample configuration file is
-shown below:
+shown below:
.nf
- #scsi Vendor Model Type
- scsi Nikon * Scanner
- /dev/scanner
+ #scsi Vendor Model Type
+ scsi Nikon * Scanner
+ /dev/scanner
.fi
The special device name must be a generic SCSI device or a symlink to such a device.
To find out to which device your scanner is assigned and how you have to set the
-permissions of that device, have a look at sane\-scsi.
+permissions of that device, have a look at sane\-scsi.
.SH SCSI ADAPTER TIPS
diff --git a/doc/sane-coolscan2.man b/doc/sane-coolscan2.man
index af27f1a..71f589a 100644
--- a/doc/sane-coolscan2.man
+++ b/doc/sane-coolscan2.man
@@ -6,12 +6,12 @@ sane\-coolscan2 \- SANE backend for Nikon Coolscan film scanners
The
.B sane\-coolscan2
library implements a SANE (Scanner Access Now Easy) backend that
-provides access to Nikon Coolscan film scanners. Some functions of this
+provides access to Nikon Coolscan film scanners. Some functions of this
backend should be considered
.B beta-quality
-software. Most functions have been stable for a long time, but of
+software. Most functions have been stable for a long time, but of
course new development can not and will not function properly from
-the very first day. Please report any strange behaviour to the
+the very first day. Please report any strange behaviour to the
maintainer of the backend.
.PP
@@ -38,7 +38,7 @@ report successes or failures.
The options the backend supports can either be selected through command line
options to programs like scanimage or through GUI elements in xscanimage or xsane.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d coolscan2:<interface>:<device>
.RE
@@ -69,7 +69,7 @@ unit is mm).
.I \-\-infrared=yes/no
If set to "yes", the scanner will read the infrared channel, thus allowing
defect removal in software. The infrared image is read during a second scan,
-with no options altered. The backend must not be restarted between the scans.
+with no options altered. The backend must not be restarted between the scans.
If you use scanimage, perform a batch scan with batch\-count=2 to obtain the
IR information.
.TP
diff --git a/doc/sane-coolscan3.man b/doc/sane-coolscan3.man
index 364d5ef..238f127 100644
--- a/doc/sane-coolscan3.man
+++ b/doc/sane-coolscan3.man
@@ -6,11 +6,11 @@ sane\-coolscan3 \- SANE backend for Nikon Coolscan film scanners
The
.B sane\-coolscan3
library implements a SANE (Scanner Access Now Easy) backend that
-provides access to Nikon Coolscan film scanners. Some functions of this
-backend should be considered
+provides access to Nikon Coolscan film scanners. Some functions of this
+backend should be considered
.B beta-quality
-software. Most functions have been stable for a long time, but of
-course new development can not and will not function properly from
+software. Most functions have been stable for a long time, but of
+course new development can not and will not function properly from
the very first day.
.PP
@@ -31,27 +31,27 @@ LS-8000 ED IEEE 1394
.ft R
.RE
-Please send mail to sane-devel@lists.alioth.debian.org to report successes
+Please send mail to sane-devel@alioth-lists.debian.net to report successes
or failures.
.SH OPTIONS
-The options the backend supports can either be selected through command line
+The options the backend supports can either be selected through command line
options to programs like scanimage or through GUI elements in xscanimage or xsane.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d coolscan3:<interface>:<device>
.RE
where <interface> and <device> specify the device in question, as in the
configuration file (see next section). The \-d parameter and its argument
can be omitted to obtain information on the first scanner identified. Use
-the command
+the command
.RS
scanimage \-L
.RE
to list all devices recognized by your SANE installation.
-The options should be fully described by the description or tooltips given by
+The options should be fully described by the description or tooltips given by
frontend. Here is a description of some of the most important options, in the
syntax with which they must be supplied to scanimage:
.TP
@@ -69,7 +69,7 @@ unit is mm).
.I \-\-infrared=yes/no
If set to "yes", the scanner will read the infrared channel, thus allowing
defect removal in software. The infrared image is read during a second scan,
-with no options altered. The backend must not be restarted between the scans.
+with no options altered. The backend must not be restarted between the scans.
If you use scanimage, perform a batch scan with batch\-count=2 to obtain the
IR information.
.TP
@@ -109,7 +109,7 @@ Eject the film strip or mounted slide when using the slide loader.
Reset scanner. The scanner will perform the same action as when power is
turned on: it will eject the film strip and calibrate itself. Use this
whenever the scanner refuses to load a film strip properly, as a result of
-which
+which
.I \-\-eject
does not work.
@@ -126,7 +126,7 @@ entries are case-sensitive:
These lines are ignored, thus '#' can be used to include comments.
.TP
.I containing only the word """auto"""
-This instructs the backend to probe for a scanner by scanning the buses for
+This instructs the backend to probe for a scanner by scanning the buses for
devices with know identifiers. This is the action taken when no
configuration file is present.
.TP
@@ -178,5 +178,4 @@ No real bugs currently known, please report any to the SANE developers' list.
.SH AUTHORS
coolscan3 written by A. Zummo (a.zummo@towertech.it), based heavily on
-coolscan2 written by Andr\['a]s Major (andras@users.sourceforge.net).
-
+coolscan2 written by Andr\['a]s Major (andras@users.sourceforge.net).
diff --git a/doc/sane-dc210.man b/doc/sane-dc210.man
index bc0db75..7d3ad65 100644
--- a/doc/sane-dc210.man
+++ b/doc/sane-dc210.man
@@ -14,15 +14,15 @@ connected. The device name is always "0".
.SH CONFIGURATION
The contents of the
.I dc210.conf
-specify the serial port and baud rate to use. The baud rate
+specify the serial port and baud rate to use. The baud rate
specifies the maximum rate to use while downloading pictures. (The
camera is always initialized using 9600 baud, then switches to the
higher rate). On my 90MHz Pentium, I usually have no problems downloading
-at 115200 baud as long as the system is not excessively busy and
+at 115200 baud as long as the system is not excessively busy and
the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
.PP
-The dumpinquiry line causes some information about the camera to
+The dumpinquiry line causes some information about the camera to
be printed.
.PP
cmdrespause specifies how many usec (1,000,000ths of a) between
@@ -30,7 +30,7 @@ writing the command and reading the result should be used. 125000
seems to be the lowest I could go reliably.
.PP
breakpause is the time in 1,000,000ths of a usec between sending the
-"back to default" break sending commands.
+"back to default" break sending commands.
.PP
Empty lines and lines starting with a hash mark (#) are
ignored. A sample configuration file is shown below:
@@ -81,7 +81,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.TP
.B SANE_DEBUG_DC210
If the library was compiled with debugging support enabled, this
-environment variable controls the debug level for this backend.
+environment variable controls the debug level for this backend.
A value of 128 requests maximally copious debug output; smaller
levels reduce verbosity.
@@ -101,7 +101,7 @@ Henning Meier-Geinitz.
Known bugs/limitations are: ?
.PP
More general comments, suggestions, and inquiries about frontends
-or SANE should go to the SANE Developers mailing list
-(see http://www.sane\-project.org/mailing\-lists.html for details).
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
You must be subscribed to the list, otherwise your mail won't be
sent to the subscribers.
diff --git a/doc/sane-dc240.man b/doc/sane-dc240.man
index ba7fd63..70629ab 100644
--- a/doc/sane-dc240.man
+++ b/doc/sane-dc240.man
@@ -14,16 +14,16 @@ connected. The device name is always "0".
.SH CONFIGURATION
The contents of the
.I dc240.conf
-specify the serial port and baud rate to use. The baud rate
+specify the serial port and baud rate to use. The baud rate
specifies the maximum rate to use while downloading pictures. (The
camera is always initialized using 9600 baud, then switches to the
higher rate). On a 450MHz Pentium, I usually have no problems downloading
at 115200 baud, though the camera sometimes has to resend packets due
-to lost characters. Results are better when
+to lost characters. Results are better when
the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
.PP
-The dumpinquiry line causes some information about the camera to
+The dumpinquiry line causes some information about the camera to
be printed.
.PP
cmdrespause specifies how many usec (1,000,000ths of a) between
@@ -31,7 +31,7 @@ writing the command and reading the result should be used. 125000
seems to be the lowest I could go reliably.
.PP
breakpause is the time in 1,000,000ths of a usec between sending the
-"back to default" break sending commands.
+"back to default" break sending commands.
.PP
Empty lines and lines starting with a hash mark (#) are
ignored. A sample configuration file is shown below:
@@ -82,7 +82,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.TP
.B SANE_DEBUG_DC240
If the library was compiled with debugging support enabled, this
-environment variable controls the debug level for this backend.
+environment variable controls the debug level for this backend.
A value of 128 requests maximally copious debug output; smaller
levels reduce verbosity.
@@ -101,13 +101,12 @@ The manpage was largely copied from the dc210 manpage.
.SH BUGS
The major limitation that I know of is that the backend assumes
the directory in the camera is 100dc240. Once the camera has
-taken more than 9999 pictures, the directory will increment to 101dc240.
+taken more than 9999 pictures, the directory will increment to 101dc240.
Not only should we check for the additional directory, but pictures may
actually be found in multiple directories.
.PP
More general comments, suggestions, and inquiries about frontends
-or SANE should go to the SANE Developers mailing list
-(see http://www.sane\-project.org/mailing\-lists.html for details).
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
You must be subscribed to the list, otherwise your mail won't be
sent to the subscribers.
-
diff --git a/doc/sane-dc25.man b/doc/sane-dc25.man
index eabe765..889fd2d 100644
--- a/doc/sane-dc25.man
+++ b/doc/sane-dc25.man
@@ -15,15 +15,15 @@ connected. The device name is always "0".
.SH CONFIGURATION
The contents of the
.I dc25.conf
-specify the serial port and baud rate to use. The baud rate
+specify the serial port and baud rate to use. The baud rate
specifies the maximum rate to use while downloading pictures. (The
camera is always initialized using 9600 baud, then switches to the
higher rate). On my 90MHz Pentium, I usually have no problems downloading
-at 115200 baud as long as the system is not excessively busy and
+at 115200 baud as long as the system is not excessively busy and
the "interrupt-unmask flag" is set in the IDE driver (hdparm \-u1).
Supported baud rates are: 9600, 19200, 38400, 57600, and 115200.
.PP
-The dumpinquiry line causes some information about the camera to
+The dumpinquiry line causes some information about the camera to
be printed to stderr during startup. Note: This is not compatible
with saned, so make sure you don't have any dumpinquiry lines if you are
using saned (i.e. scanning on a remote machine using a
@@ -74,7 +74,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.TP
.B SANE_DEBUG_DC25
If the library was compiled with debugging support enabled, this
-environment variable controls the debug level for this backend.
+environment variable controls the debug level for this backend.
A value of 128 requests maximally copious debug output; smaller
levels reduce verbosity.
@@ -93,7 +93,7 @@ slider that is used to select the picture from the camera may not be
updated immediately.
.PP
More general comments, suggestions, and inquiries about frontends
-or SANE should go to the SANE Developers mailing list
-(see http://www.sane\-project.org/mailing\-lists.html for details).
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
You must be subscribed to the list, otherwise your mail won't be
sent to the subscribers.
diff --git a/doc/sane-dll.man b/doc/sane-dll.man
index 54f9686..e93f897 100644
--- a/doc/sane-dll.man
+++ b/doc/sane-dll.man
@@ -55,11 +55,11 @@ mustek
.PP
It is also possible to add a file in
.I @CONFIGDIR@/dll.d
-that contains the list of backends to be added. Backends mentioned in a
-file included in this directory will be added before any backends listed
-in
+that contains the list of backends to be added. Backends mentioned in a
+file included in this directory will be added before any backends listed
+in
.I dll.conf.
-Files in
+Files in
.I @CONFIGDIR@/dll.d
can be freely named. They shall follow the format conventions as apply for
.I dll.conf.
@@ -76,7 +76,7 @@ in file backend/Makefile.in of the SANE source code distribution. After
changing the value of this macro, it is necessary to reconfigure, rebuild,
and reinstall SANE for the change to take effect.
-Aliases are defined in the config file
+Aliases are defined in the config file
.IR dll.aliases .
It can contain entries of the form
.PP
@@ -152,7 +152,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. E.g.,
a value of 128 requests all debug output to be printed. Smaller
-levels reduce verbosity.
+levels reduce verbosity.
.ft CR
.nf
@@ -165,7 +165,7 @@ Value Description
.fi
.ft R
-Example:
+Example:
export SANE_DEBUG_DLL=3
diff --git a/doc/sane-epjitsu.man b/doc/sane-epjitsu.man
index 3552691..9a31da2 100644
--- a/doc/sane-epjitsu.man
+++ b/doc/sane-epjitsu.man
@@ -5,12 +5,12 @@
sane\-epjitsu \- SANE backend for Epson-based Fujitsu USB scanners.
.SH DESCRIPTION
-The
+The
.B sane\-epjitsu
library implements a SANE (Scanner Access Now Easy) backend which provides basic access the Fujitsu fi\-60F/fi\-65F and ScanSnap S300/S1300(i)/S1100(i) scanners.
.SH HARDWARE SUPPORT
-These scanners are fairly limited, only supporting a couple of modes and resolutions, and always scanning full width. The backend supports missing modes (binary, grayscale) and intermediate resolutions in software, but provides only minimal scan area controls. See
+These scanners are fairly limited, only supporting a couple of modes and resolutions, and always scanning full width. The backend supports missing modes (binary, grayscale) and intermediate resolutions in software, but provides only minimal scan area controls. See
.B KNOWN ISSUES.
This backend may support other scanners. If physical inspection reveals an Epson chipset, please contact the author for instructions on collecting a USB trace under Windows to verify.
@@ -18,12 +18,12 @@ This backend may support other scanners. If physical inspection reveals an Epson
.SH OPTIONS
A limited effort has been made to expose the standard options to the API. This allows a frontend to set resolution, color mode, and choose the ADF setting. The epjitsu backend supports the following basic options for most scanners:
.PP
-source s
+source s
.RS
Selects the source for the scan. Options may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
.RE
.PP
-mode m
+mode m
.RS
Selects the mode for the scan. Options may include "Lineart", "Gray", "Color".
.RE
@@ -52,13 +52,13 @@ Some systems use a kernel driver to access usb scanners. This method is untested
.PP
The only configuration option supported is "firmware /PATH/TO/FILE", allowing you to set the location of the firmware file you have extracted from the Windows driver.
.PP
-.B Note:
+.B Note:
This firmware is a copyrighted work of Fujitsu, so cannot be provided by the backend or the author. Please do not ask.
.PP
-.B Note:
+.B Note:
These scanners REQUIRE a firmware file to function. See the supplied configuration file for more detail.
.PP
-.B Note:
+.B Note:
This option may appear multiple times in the configuration file. It only applies to scanners discovered by 'usb' lines that follow this option.
.PP
@@ -103,4 +103,3 @@ sane\-usb(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-epson.man b/doc/sane-epson.man
index af2b3cf..f09f075 100644
--- a/doc/sane-epson.man
+++ b/doc/sane-epson.man
@@ -6,12 +6,12 @@ sane\-epson \- SANE backend for EPSON scanners
The
.B sane\-epson
library implements a SANE (Scanner Access Now Easy) backend that
-provides access to Epson flatbed scanners. Some functions of this
+provides access to Epson flatbed scanners. Some functions of this
backend should be considered
.B beta-quality
-software! Most functions have been stable for a long time, but of
+software! Most functions have been stable for a long time, but of
course new development can not and often times will not function properly from
-the very first day. Please report any strange behavior to the
+the very first day. Please report any strange behavior to the
maintainer of the backend.
.PP
At present, the following scanners are known to work with this backend:
@@ -48,23 +48,23 @@ CX-5200 USB
and many more. The official list is on the Sane web site.
.RE
-For other scanners the software may or may not work. Please send mail to
+For other scanners the software may or may not work. Please send mail to
the backend author (khk@khk.net) to report success with scanners not on
-the list or problems with scanners that are listed.
+the list or problems with scanners that are listed.
.SH OPTIONS
The options the backend supports can either be selected through command line
options to programs like scanimage or through GUI elements in programs like
xscanimage or xsane.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d epson
.RE
Not all devices support all options.
.TP
.I Scan Mode
-The
-.I \-\-mode
+The
+.I \-\-mode
switch selects the basic mode of operation of the scanner. Valid choices
are Binary, Gray and Color. The Binary mode is black and white only,
Gray will produce 256 levels of gray or more depending on the scanner
@@ -89,7 +89,7 @@ are "None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C
(4x4 Net Screen)", "Dither D (8x4 Net Screen)", "Text Enhanced Technology",
"Download pattern A", and "Download pattern B".
-The
+The
.I \-\-dropout
switch selects the so called dropout color. Valid options are None,
Red, Green and Blue. The default is None. The dropout color is used for
@@ -109,62 +109,62 @@ switch sets the sharpness of the image data. Valid options are integer
values from \-2 to 2, with \-2 meaning "Defocus", \-1 "Defocus slightly",
0 "Normal", 1 "Sharpen slightly" and 2 "Sharpen".
-The
+The
.I \-\-gamma\-correction
switch controls the scanner's internal gamma correction. Valid options are
"Default", "User defined", "High density printing" "Low density printing"
and "High contrast printing".
-The
+The
.I \-\-color\-correction
switch controls the scanner's internal color correction function. Valid
options are "No Correction", "Impact\-dot printers", "Thermal printers",
"Ink\-jet printers" and "CRT monitors". The default is "CRT monitors".
-The
+The
.I \-\-resolution
switch selects the resolution for a scan. Some EPSON scanners will scan in
any resolution between the lowest and highest possible value. The list
reported by the scanner can be displayed using the "\-\-help \-d epson"
parameters to scanimage.
-The
+The
.I \-\-mirror
option controls the way the image is scanned. By reading the image data
from right to left the image is mirrored. Valid options are "yes" and
"no". The default is "no".
-The
+The
.I \-\-speed
option can improve the scan speed in monochrome mode. Valid options are
"yes" or "no", the "yes" option will speed up the scan if this option
is supported.
-The
-.I \-\-auto\-area\-segmentation
+The
+.I \-\-auto\-area\-segmentation
switch activates the automatic area segmentation for monochrome scans. The
scanner will try to determine which areas are text and which contain
images. The image areas will be halftoned, and the text will be
improved. Valid options are "yes" and "no". The default is "yes".
-The
+The
.I \-\-gamma\-table
parameter can be used to download a user defined gamma table. The option
takes 256 values from the range 0-255. In color mode this option equally
affects the red, green, and blue channel.
-The
-.I \-\-red\-gamma\-table
+The
+.I \-\-red\-gamma\-table
parameter can be used to download a user defined gamma table for the
red channel. The valid options are the same as for \-\-gamma\-table.
-The
-.I \-\-green\-gamma\-table
+The
+.I \-\-green\-gamma\-table
parameter can be used to download a user defined gamma table for the
green channel. The valid options are the same as for \-\-gamma\-table.
-The
-.I \-\-blue\-gamma\-table
+The
+.I \-\-blue\-gamma\-table
parameter can be used to download a user defined gamma table for the
blue channel. The valid options are the same as for \-\-gamma\-table.
@@ -173,19 +173,19 @@ The color correction coefficients
will install color correction coefficients for the user defined color
correction. Values are specified as integers in the range \-127..127.
-The
+The
.I \-\-preview
-option requests a preview scan. The frontend software automatically selects a low
+option requests a preview scan. The frontend software automatically selects a low
resolution. Valid options are "yes" and "no". The default is "no".
-The
+The
.I \-\-preview\-speed
options will increase the scan speed if this is supported by the
scanner. Valid options are "yes" and "no", the default is "no".
The geometry options
-.I \-l \-t \-x \-y
+.I \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters.
@@ -201,9 +201,9 @@ The
option selects the scan source. Valid options depend on the installed
options. The default is "Flatbed".
-The
+The
.I \-\-auto\-eject
-option will eject a page after scanning from the document feeder.
+option will eject a page after scanning from the document feeder.
The
.I \-\-film\-type
@@ -222,7 +222,7 @@ will ignore this option.
.SH CONFIGURATION FILE
-The configuration file @CONFIGDIR@/epson.conf specifies the device(s) that the
+The configuration file @CONFIGDIR@/epson.conf specifies the device(s) that the
backend will use. Possible connection types are:
.TP
.I SCSI
@@ -230,22 +230,22 @@ This is the default, and if nothing else is specified the backend software will
open a given path as SCSI device. More information about valid syntax for SCSI
devices can be found in sane\-scsi(5).
.br
-Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
+Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
some cases it may be necessary to only use the string "scsi" (e.g. for the GT-6500).
.TP
.I PIO \- Parallel Interface
The parallel interface can be configured in two ways: An integer value starting
at the beginning of a line will be interpreted as the IO address of the parallel
-port. To make it clearer that a configured IO address is a parallel port the
+port. To make it clearer that a configured IO address is a parallel port the
port address can be preceded by the string "PIO". The PIO connection does not
use a special device file in the /dev directory. The IO address can be specified
in hex mode (prefixed with "0x").
.TP
.I USB
-A device file that is preceded by the string "USB" is treated as a scanner
+A device file that is preceded by the string "USB" is treated as a scanner
connected via the Universal Serial Bus. The correct special device file has
-to be created prior to using it with Sane. See the USB documentation for
-more information about how to set up the USB subsystem and the required
+to be created prior to using it with Sane. See the USB documentation for
+more information about how to set up the USB subsystem and the required
device files.
.SH FILES
.TP
@@ -265,14 +265,14 @@ levels reduce verbosity.
.TP
.B SANE_DEBUG_EPSON_SCSI
If the library was compiled with debug support enabled, this
-environment variable controls the SCSI related debug level for this backend.
+environment variable controls the SCSI related debug level for this backend.
Only a value of 2 is supported.
.TP
.B SANE_EPSON_CMD_LVL
This allows one to override the function or command level that the backend
uses to communicate with the scanner. The function level a scanner
supports is determined during the initialization of the device. If
-the backend does not recognize the function level reported by the
+the backend does not recognize the function level reported by the
scanner it will default to function level B3. Valid function levels
are A1, A2, B1, B2, B3, B4, B5, B6, B7, B8, D1 and F5. Use this feature
only if you know what you are doing!
@@ -286,18 +286,18 @@ sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1)
None :-) At least none are currently known.
.SH UNSUPPORTED DEVICES
-The backend may be used with Epson scanners that are not yet listed
+The backend may be used with Epson scanners that are not yet listed
under the list of supported devices. A scanner that is not recognized
-may default to the function level B3, which means that not all
-functions that the scanner may be capable of are accessible.
+may default to the function level B3, which means that not all
+functions that the scanner may be capable of are accessible.
If the scanner is not even recognized as an Epson scanner this is
probably because the device name reported by the scanner is not in the
correct format. Please send this information to the backend maintainer
(email address is in the AUTHOR section of this man page or in the
-AUTHORS file of the SANE distribution).
+AUTHORS file of the SANE distribution).
-The Perfection 600, Perfection 650, Perfection 660, Perfection 1250 and
+The Perfection 600, Perfection 650, Perfection 660, Perfection 1250 and
Perfection 1260 are not supported by this backend.
.SH AUTHOR
diff --git a/doc/sane-epson2.man b/doc/sane-epson2.man
index 6d47eea..33acd78 100644
--- a/doc/sane-epson2.man
+++ b/doc/sane-epson2.man
@@ -13,11 +13,11 @@ include network access.
.PP
Because
.B sane\-epson
-and
-.B sane\-epson2
+and
+.B sane\-epson2
drivers support many of the same devices, if one
driver gives you problems you may try disabling it to try the other.
-This can be done by removing the driver name from the
+This can be done by removing the driver name from the
.I dll.conf
or perhaps by commenting out the options in
.I epson.conf
@@ -94,23 +94,23 @@ V750 USB, IEEE-1394
and many more. The official list is on the Sane web site.
.RE
-For other scanners the software may or may not work. Please send mail to
+For other scanners the software may or may not work. Please send mail to
the sane-backend mailing list to report success with scanners not on
-the list or problems with scanners that are listed.
+the list or problems with scanners that are listed.
.SH OPTIONS
The options the backend supports can either be selected through command line
options to programs like scanimage or through GUI elements in programs like
xscanimage or xsane.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d epson2
.RE
Not all devices support all options.
.TP
.I Scan Mode
-The
-.I \-\-mode
+The
+.I \-\-mode
switch selects the basic mode of operation of the scanner. Valid choices
are Binary, Gray and Color. The Binary mode is black and white only,
Gray will produce 256 levels of gray or more depending on the scanner
@@ -135,7 +135,7 @@ are "None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C
(4x4 Net Screen)", "Dither D (8x4 Net Screen)", "Text Enhanced Technology",
"Download pattern A", and "Download pattern B".
-The
+The
.I \-\-dropout
switch selects the so called dropout color. Valid options are None,
Red, Green and Blue. The default is None. The dropout color is used for
@@ -155,54 +155,54 @@ switch sets the sharpness of the image data. Valid options are integer
values from \-2 to 2, with \-2 meaning "Defocus", \-1 "Defocus slightly",
0 "Normal", 1 "Sharpen slightly" and 2 "Sharpen".
-The
+The
.I \-\-gamma\-correction
switch controls the scanner's internal gamma correction. Valid options are
"Default", "User defined", "High density printing" "Low density printing"
and "High contrast printing".
-The
+The
.I \-\-color\-correction
switch controls the scanner's internal color correction function. Valid
options are "No Correction", "Impact\-dot printers", "Thermal printers",
"Ink\-jet printers" and "CRT monitors". The default is "CRT monitors".
-The
+The
.I \-\-resolution
switch selects the resolution for a scan. Some EPSON scanners will scan in
any resolution between the lowest and highest possible value. The list
reported by the scanner can be displayed using the "\-\-help \-d epson"
parameters to scanimage.
-The
+The
.I \-\-threshold
switch selects the minimum brightness to get a white point.
-The
+The
.I \-\-mirror
option controls the way the image is scanned. By reading the image data
from right to left the image is mirrored. Valid options are "yes" and
"no". The default is "no".
-The
-.I \-\-auto\-area\-segmentation
+The
+.I \-\-auto\-area\-segmentation
switch activates the automatic area segmentation for monochrome scans. The
scanner will try to determine which areas are text and which contain
images. The image areas will be halftoned, and the text will be
improved. Valid options are "yes" and "no". The default is "yes".
-The
-.I \-\-red\-gamma\-table
+The
+.I \-\-red\-gamma\-table
parameter can be used to download a user defined gamma table for the
red channel. The valid options are the same as for \-\-gamma\-table.
-The
-.I \-\-green\-gamma\-table
+The
+.I \-\-green\-gamma\-table
parameter can be used to download a user defined gamma table for the
green channel. The valid options are the same as for \-\-gamma\-table.
-The
-.I \-\-blue\-gamma\-table
+The
+.I \-\-blue\-gamma\-table
parameter can be used to download a user defined gamma table for the
blue channel. The valid options are the same as for \-\-gamma\-table.
@@ -216,13 +216,13 @@ The color correction coefficients
will install color correction coefficients for the user defined color
correction. Values are specified as integers in the range \-127..127.
-The
+The
.I \-\-preview
-option requests a preview scan. The frontend software automatically selects a low
+option requests a preview scan. The frontend software automatically selects a low
resolution. Valid options are "yes" and "no". The default is "no".
The geometry options
-.I \-l \-t \-x \-y
+.I \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters.
@@ -232,9 +232,9 @@ The
option selects the scan source. Valid options depend on the installed
options. The default is "Flatbed".
-The
+The
.I \-\-auto\-eject
-option will eject a page after scanning from the document feeder.
+option will eject a page after scanning from the document feeder.
The
.I \-\-film\-type
@@ -264,7 +264,7 @@ The
option select the ADF mode (simplex/duplex).
.SH CONFIGURATION FILE
-The configuration file @CONFIGDIR@/epson2.conf specifies the device(s) that the
+The configuration file @CONFIGDIR@/epson2.conf specifies the device(s) that the
backend will use. Possible connection types are:
.TP
.I SCSI
@@ -272,28 +272,28 @@ This is the default, and if nothing else is specified the backend software will
open a given path as SCSI device. More information about valid syntax for SCSI
devices can be found in sane\-scsi(5).
.br
-Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
+Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
some cases it may be necessary to only use the string "scsi" (e.g. for the GT-6500).
.TP
.I PIO \- Parallel Interface
The parallel interface can be configured in two ways: An integer value starting
at the beginning of a line will be interpreted as the IO address of the parallel
-port. To make it clearer that a configured IO address is a parallel port the
+port. To make it clearer that a configured IO address is a parallel port the
port address can be preceded by the string "PIO". The PIO connection does not
use a special device file in the /dev directory. The IO address can be specified
in hex mode (prefixed with "0x").
.TP
.I USB
For USB scanners not automatically detect, their VENDOR and PRODUCT ID can
-be specified manually in the config file.
+be specified manually in the config file.
More information about valid syntax for USB devices can be found in sane\-usb(5).
.TP
.I Network
Network scanners can be auto-discovered if
.I autodiscovery
-is specified after
+is specified after
.I
-net
+net
keyword. An IP address to connect to can also be used.
.SH FILES
.TP
@@ -313,20 +313,20 @@ levels reduce verbosity.
.TP
.B SANE_DEBUG_EPSON2_SCSI
If the library was compiled with debug support enabled, this
-environment variable controls the SCSI related debug level for this backend.
+environment variable controls the SCSI related debug level for this backend.
Only a value of 2 is supported.
.TP
.B SANE_DEBUG_EPSON2_NET
If the library was compiled with debug support enabled, this
-environment variable controls the network related debug level for this
-backend. E.g., a value of 128 requests all debug output to be printed.
+environment variable controls the network related debug level for this
+backend. E.g., a value of 128 requests all debug output to be printed.
Smaller levels reduce verbosity.
.TP
.B SANE_EPSON2_CMD_LVL
This allows one to override the function or command level that the backend
uses to communicate with the scanner. The function level a scanner
supports is determined during the initialization of the device. If
-the backend does not recognize the function level reported by the
+the backend does not recognize the function level reported by the
scanner it will default to function level B3. Valid function levels
are A1, A2, B1, B2, B3, B4, B5, B6, B7, B8, D1 and F5. Use this feature
only if you know what you are doing!
@@ -340,16 +340,16 @@ sane\-scsi(5), sane\-usb(5), scanimage(1), xscanimage(1), xsane(1)
None :-) At least none are currently known.
.SH UNSUPPORTED DEVICES
-The backend may be used with Epson scanners that are not yet listed
+The backend may be used with Epson scanners that are not yet listed
under the list of supported devices. A scanner that is not recognized
-may default to the function level B3, which means that not all
-functions that the scanner may be capable of are accessible.
+may default to the function level B3, which means that not all
+functions that the scanner may be capable of are accessible.
If the scanner is not even recognized as an Epson scanner this is
probably because the device name reported by the scanner is not in the
correct format. Please send this information to the backend maintainer
(email address is in the AUTHOR section of this man page or in the
-AUTHORS file of the SANE distribution).
+AUTHORS file of the SANE distribution).
.SH AUTHOR
diff --git a/doc/sane-epsonds.man b/doc/sane-epsonds.man
index 3324804..03bbbd2 100644
--- a/doc/sane-epsonds.man
+++ b/doc/sane-epsonds.man
@@ -8,15 +8,15 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to Epson ESC/I-2 scanners.
.PP
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d epsonds
.RE
Not all devices support all options.
.TP
.I Scan Mode
-The
-.I \-\-mode
+The
+.I \-\-mode
switch selects the basic mode of operation of the scanner. Valid choices
are Lineart, Gray and Color. The Lineart mode is black and white only,
Gray will produce 256 levels of gray or more depending on the scanner
@@ -33,7 +33,7 @@ allow one to select either 8 bits, 12 or 14 bits per color channel. For a
color scan this means an effective color depth of 36 or 42 bits over
all three channels. The valid choices depend on the scanner model.
-The
+The
.I \-\-resolution
switch selects the resolution for a scan. Some EPSON scanners will scan in
any resolution between the lowest and highest possible value. The list
@@ -41,7 +41,7 @@ reported by the scanner can be displayed using the "\-\-help \-d epson"
parameters to scanimage.
The geometry options
-.I \-l \-t \-x \-y
+.I \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters.
@@ -60,20 +60,20 @@ The
option select the ADF mode (simplex/duplex).
.SH CONFIGURATION FILE
-The configuration file @CONFIGDIR@/epsonds.conf specifies the device(s) that the
+The configuration file @CONFIGDIR@/epsonds.conf specifies the device(s) that the
backend will use. Possible connection types are:
.TP
.I USB
For not automatically detected USB scanners, their VENDOR and PRODUCT ID can
-be specified manually in the config file.
+be specified manually in the config file.
More information about valid syntax for USB devices can be found in sane\-usb(5).
.TP
.I Network (not yet supported)
Network scanners can be auto-discovered if
.I autodiscovery
-is specified after
+is specified after
.I
-net
+net
keyword. An IP address to connect to can also be used.
.SH FILES
.TP
diff --git a/doc/sane-find-scanner.man b/doc/sane-find-scanner.man
index da2d377..26c5258 100644
--- a/doc/sane-find-scanner.man
+++ b/doc/sane-find-scanner.man
@@ -4,12 +4,12 @@
sane\-find\-scanner \- find SCSI and USB scanners and their device files
.SH SYNOPSIS
.B sane\-find\-scanner
-.RB [ \-h | \-? ]
+.RB [ \-? | \-h | \-\-help ]
.RB [ \-v ]
.RB [ \-q ]
.RB [ \-p ]
.RB [ \-f ]
-.RB [ \-F
+.RB [ \-F
.IR filename ]
.RI [ devname ]
@@ -19,15 +19,15 @@ is a command-line tool to find SCSI and USB scanners and determine their Unix
device files. Its primary aim is to make sure that scanners can be detected by
SANE backends.
.PP
-For
+For
.B SCSI
-scanners, it checks the default generic SCSI device files (e.g.,
+scanners, it checks the default generic SCSI device files (e.g.,
.IR /dev/sg0 )
-and
+and
.IR /dev/scanner .
The test is done by sending a SCSI inquiry command and looking for a device
type of "scanner" or "processor" (some old HP scanners seem to send
-"processor"). So
+"processor"). So
.B sane\-find\-scanner
will find any SCSI scanner connected to those default device files even if it
isn't supported by any SANE backend.
@@ -42,12 +42,12 @@ and
are tested. The files are opened and the vendor and device ids are determined,
if the operating system supports this feature. Currently USB scanners are only
found this way if they are supported by the Linux scanner module or the
-FreeBSD or OpenBSD uscanner driver. After that test,
+FreeBSD or OpenBSD uscanner driver. After that test,
.B sane\-find\-scanner
tries to scan for USB devices found by the USB library libusb (if
available). There is no special USB class for scanners, so the heuristics used
to distinguish scanners from other USB devices is not
-perfect.
+perfect.
.B sane\-find\-scanner
also tries to find out the type of USB chip used in the scanner. If detected,
it will be printed after the vendor and product ids.
@@ -55,20 +55,20 @@ it will be printed after the vendor and product ids.
will even find USB scanners, that are not supported by any SANE backend.
.PP
.B sane\-find\-scanner
-won't find most
+won't find most
parallel port scanners, or scanners connected to proprietary ports. Some
.B parallel port
scanners may be detected by
-.B sane\-find\-scanner -p.
+.B sane\-find\-scanner -p.
At the time of writing this will only detect Mustek parallel port scanners.
.SH OPTIONS
.TP 8
-.B \-h, \-?
+.B \-?, \-h, \-\-help
Prints a short usage message.
.TP 8
.B \-v
-Verbose output. If used once,
+Verbose output. If used once,
.B sane\-find\-scanner
shows every device name and the test result. If used twice, SCSI inquiry
information and the USB device descriptors are also printed.
@@ -81,7 +81,7 @@ Probe parallel port scanners.
.TP 8
.B \-f
Force opening all explicitly given devices as SCSI and USB devices. That's
-useful if
+useful if
.B sane\-find\-scanner
is wrong in determining the device type.
.TP 8
@@ -128,7 +128,6 @@ SCSI support is available on Irix, EMX, Linux, Next, AIX, Solaris, FreeBSD,
NetBSD, OpenBSD, and HP-UX.
.SH BUGS
-No support for most parallel port scanners yet.
+No support for most parallel port scanners yet.
.br
Detection of USB chipsets is limited to a few chipsets.
-
diff --git a/doc/sane-fujitsu.man b/doc/sane-fujitsu.man
index 6bd5f73..ccc3d89 100644
--- a/doc/sane-fujitsu.man
+++ b/doc/sane-fujitsu.man
@@ -5,18 +5,18 @@
sane\-fujitsu \- SANE backend for Fujitsu flatbed and ADF scanners
.SH DESCRIPTION
-The
+The
.B sane\-fujitsu
library implements a SANE (Scanner Access Now Easy) backend which
provides access to most Fujitsu flatbed and ADF scanners.
-This document describes backend version 133, which shipped with SANE 1.0.26.
+This document describes backend version 134, which shipped with SANE 1.0.28.
.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
+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
+the USB iX1xx/5xx series scanners are supported. Please see the list at
http://www.sane\-project.org/sane\-supported\-devices.html for details.
This backend may support other Fujitsu scanners. The best
@@ -40,7 +40,7 @@ ScanStation M3093E/DE/EX fi\-4110EOX/2
ScanPartner M3096EX fi\-4010CU
SP\-Jr M3097E+/DE S300/S300M
SP\-10/10C M3099A/EH/EX S1300/S1100
-SP\-15C/300C fi\-60F
+SP\-15C/300C fi\-60F/65F
SP\-600C/620C fi\-5015C
SP\-2x/3x
.fi
@@ -51,13 +51,13 @@ SP\-600C/620C fi\-5015C
.SH OPTIONS
Effort has been made to expose all hardware options, including:
.PP
-source s
+source s
.RS
Selects the source for the scan. Options
may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
.RE
.PP
-mode m
+mode m
.RS
Selects the mode for the scan. Options
may include "Lineart", "Halftone", "Gray", and "Color".
@@ -65,13 +65,13 @@ may include "Lineart", "Halftone", "Gray", and "Color".
.PP
resolution, y\-resolution
.RS
-Controls scan resolution. Setting \-\-resolution also sets \-\-y\-resolution,
+Controls scan resolution. Setting \-\-resolution also sets \-\-y\-resolution,
though this behavior is overridden by some frontends.
.RE
.PP
tl\-x, tl\-y, br\-x, br\-y
.RS
-Sets scan area upper left and lower right coordinates. These are renamed
+Sets scan area upper left and lower right coordinates. These are renamed
t, l, x, y by some frontends.
.RE
.PP
@@ -89,19 +89,19 @@ group of endorser options.
Additionally, several 'software' options are exposed by the backend. These
are reimplementations of features provided natively by larger scanners, but
running on the host computer. This enables smaller machines to have similar
-capabilities. Please note that these features are somewhat simplistic, and
-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
+capabilities. Please note that these features are somewhat simplistic, and
+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.
-Use 'scanimage \-\-help' to get a list, but be aware that some options may
-be settable only when another option has been set, and that advanced options
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
may be hidden by some frontend programs.
.PP
.SH CONFIGURATION FILE
The configuration file "fujitsu.conf" is used to tell the backend how to look
for scanners, and provide options controlling the operation of the backend.
-This file is read each time the frontend asks the backend for a list
+This file is read each time the frontend asks the backend for a list
of scanners, generally only when the frontend starts. If the configuration
file is missing, the backend will be unable to locate any scanners.
.PP
@@ -109,8 +109,8 @@ Scanners can be specified in the configuration file in 4 ways:
.PP
"scsi FUJITSU"
.RS
-Requests backend to search all scsi busses in the system for a device
-which reports itself to be a scanner made by 'FUJITSU'.
+Requests backend to search all scsi busses in the system for a device
+which reports itself to be a scanner made by 'FUJITSU'.
.RE
.PP
"scsi /dev/sg0" (or other scsi device file)
@@ -122,7 +122,7 @@ specify one. Probably should not be used with the other "scsi" line above.
.PP
"usb 0x04c5 0x1042" (or other vendor/product ids)
.RS
-Requests backend to search all usb busses in the system for a device
+Requests backend to search all usb busses in the system for a device
which uses that vendor and product id. The device will then be queried
to determine if it is a Fujitsu scanner.
.RE
@@ -134,7 +134,7 @@ untested.
.RE
.PP
The only configuration option supported is "buffer\-size=xxx", allowing you
-to set the number of bytes in the data buffer to something other than the
+to set the number of bytes in the data buffer to something other than the
compiled\-in default, 65536 (64K). Some users report that their scanner will
"hang" mid\-page, or fail to transmit the image if the buffer is not large
enough.
@@ -174,13 +174,13 @@ enables debugging output to stderr. Valid values are:
Flatbed units may fail to scan at maximum area, particularly at
high resolution.
.PP
-Any model that does not support VPD during inquiry will not function until
+Any model that does not support VPD during inquiry will not function until
an override is added to the backend.
.PP
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.
+disabled in this release. It can be enabled if you rebuild from source.
.SH CREDITS
m3091 backend: Frederik Ramm <frederik a t remote d o t org>
@@ -234,4 +234,3 @@ sane\-epjitsu(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-genesys.man b/doc/sane-genesys.man
index cd00cc3..6540754 100644
--- a/doc/sane-genesys.man
+++ b/doc/sane-genesys.man
@@ -8,14 +8,14 @@ The
library implements a SANE (Scanner Access Now Easy) backend that provides
access to USB flatbed scanners based on the Genesys GL646, GL841, GL843, GL847 and GL124 chips.
At present, the following scanners are known to work with this backend:
-.PP
+.PP
.RS
Canon LiDE 35/40/50/60/100/110/120/200/210/220/700
.br
Hewlett-Packard HP2300C/HP2400/HP3670/HP3690/G4010/G4050
.br
Medion MD5345/MD6228/MD6274
-.br
+.br
Panasonic KV-SS080
.br
Plustek OpticBook 3600
@@ -29,11 +29,11 @@ Visioneer OneTouch 7100/Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
Xerox Travel Scanner 100, OneTouch 2400
.RE
-.PP
+.PP
This is stable software for supported models. But if you test new or untested scanners, keep
your hand at the scanner's plug and unplug it, if the head bumps at the end of
the scan area.
-.PP
+.PP
If you own a scanner other than the ones listed above that works with this
backend, please let me know this by sending the scanner's exact model name and
the USB vendor and device ids (e.g. from
@@ -41,10 +41,10 @@ the USB vendor and device ids (e.g. from
.I sane\-find\-scanner
or syslog) to the sane\-devel mailing list. Even if the scanner's name is only
slightly different from the models mentioned above, please let me know.
-.PP
+.PP
If you own a scanner that isn't detected by the genesys backend but has a GL646,
-GL841, GL843, GL847 or GL124 chipset, you can try to add it to the backend.
-.PP
+GL841, GL843, GL847 or GL124 chipset, you can try to add it to the backend.
+.PP
.SH "CALIBRATION"
To give correct image quality, sheet fed scanners need to be calibrated using the
calibration sheet sold with the scanner. To do calibration, you must insert this target
@@ -135,26 +135,26 @@ userwith the calibration clear option. A value of 0 means cache is disabled.
Additionally, several 'software' options are exposed by the backend. These
are reimplementations of features provided natively by larger scanners, but
running on the host computer. This enables smaller machines to have similar
-capabilities. Please note that these features are somewhat simplistic, and
-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
+capabilities. Please note that these features are somewhat simplistic, and
+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
-.B \-\-swcrop
+.B \-\-swcrop
.RS
- Requests the driver to detect the extremities of the paper within the larger
-image, and crop the empty edges.
+ Requests the driver to detect the extremities of the paper within the larger
+image, and crop the empty edges.
.RE
.PP
-.B \-\-swdeskew
+.B \-\-swdeskew
.RS
- Requests the driver to detect the rotation of the paper within the larger
+ Requests the driver to detect the rotation of the paper within the larger
image, and counter the rotation.
.RE
.PP
.B \-\-swdespeck \-\-despeck X
.RS
- Requests the driver to find and remove dots of X diameter or smaller from the
+ 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.
.RE
.PP
@@ -187,24 +187,24 @@ autodetected by
statements which are already included into
.IR genesys.conf .
"vendor_id" and "product_id" are hexadecimal numbers that identify the
-scanner.
-.PP
+scanner.
+.PP
.SH "FILES"
-.TP
+.TP
.I @CONFIGDIR@/genesys.conf
The backend configuration file (see also description of
.B SANE_CONFIG_DIR
below).
-.TP
+.TP
.I @LIBDIR@/libsane\-genesys.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-genesys.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_CONFIG_DIR
This environment variable specifies the list of directories that may
contain the configuration file. Under UNIX, the directories are
@@ -218,7 +218,7 @@ directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories "tmp/config", ".", and
"@CONFIGDIR@" being searched (in this order).
-.TP
+.TP
.B SANE_DEBUG_GENESYS
If the library was compiled with debug support enabled, this environment
variable controls the debug level for this backend. Higher debug levels
@@ -229,29 +229,29 @@ care. This will print messages related to core genesys functions.
.B SANE_DEBUG_GENESYS_LOW
This environment variable controls the debug level for low level functions
common to all genesys ASICs.
-.TP
+.TP
.B SANE_DEBUG_GENESYS_GL646
This environment variable controls the debug level for the specific GL646 code
part.
-.TP
+.TP
.B SANE_DEBUG_GENESYS_GL841
This environment variable controls the debug level for the specific GL841 code
part.
-.TP
+.TP
.B SANE_DEBUG_GENESYS_GL843
This environment variable controls the debug level for the specific GL843 code
part.
-.TP
+.TP
.B SANE_DEBUG_GENESYS_GL847
This environment variable controls the debug level for the specific GL847 code
part.
-.TP
+.TP
.B SANE_DEBUG_GENESYS_GL124
This environment variable controls the debug level for the specific GL124 code
part.
-Example (full and highly verbose output for gl646):
+Example (full and highly verbose output for gl646):
.br
export SANE_DEBUG_GENESYS=255
.br
@@ -260,12 +260,12 @@ export SANE_DEBUG_GENESYS_LOW=255
export SANE_DEBUG_GENESYS_GL646=255
.SH CREDITS
-
+
Jack McGill for donating several sheetfed and flatbed scanners, which made possible to add support
for them in the genesys backend:
.RS
Hewlett-Packard HP3670
-.br
+.br
Visioneer Strobe XP100 (rev3)/XP200/XP300/Roadwarrior
.br
Canon LiDE 200
@@ -292,20 +292,20 @@ Luc Verhaegen for donating a Canoscan LiDE 120.
.SH "SEE ALSO"
.BR sane (7),
.BR sane\-usb (5)
-.br
+.br
.SH "AUTHOR"
Oliver Rauch
-.br
+.br
Henning Meier-Geinitz <henning@meier\-geinitz.de>
-.br
+.br
Gerhard Jaeger <gerhard@gjaeger.de>
-.br
+.br
St\['e]phane Voltz <stef.dev@free.fr>
-.br
+.br
Philipp Schmid <philipp8288@web.de>
-.br
+.br
Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
.br
Alexey Osipov <simba@lerlan.ru> for HP2400 final support
@@ -321,4 +321,4 @@ This backend will be much slower if not using libusb\-1.0. So be sure that sane\
.SH "BUGS"
For the LiDE 200, the scanned data at 4800 dpi is obtained "as is" from sensor. It seems the windows driver does some digital processing
to improve it, which is not implemented in the backend.
-.PP
+.PP
diff --git a/doc/sane-gphoto2.man b/doc/sane-gphoto2.man
index ef8141f..3e2a046 100644
--- a/doc/sane-gphoto2.man
+++ b/doc/sane-gphoto2.man
@@ -6,7 +6,7 @@ sane\-gphoto2 \- SANE backend for gphoto2 supported cameras
The
.B sane\-gphoto2
library implements a SANE (Scanner Access Now Easy) backend that
-provides access to the digital cameras supported by gphoto2.
+provides access to the digital cameras supported by gphoto2.
This backend has only been tested with a handful of cameras so far. Patches
to support other models are welcome.
.PP
@@ -26,16 +26,16 @@ required since they are needed by the sane frontends, but can't be obtained
through the gphoto2 interface. Valid ports and cameras can be obtained
by "gphoto2 \-\-list\-cameras" and "gphoto2 \-\-list\-ports".
.PP
-The dumpinquiry line causes some information about the camera to
+The dumpinquiry line causes some information about the camera to
be printed.
.PP
Empty lines and lines starting with a hash mark (#) are
ignored. A sample configuration file is shown below:
.PP
-The "topfolder" line specifies the "fixed" part of the file path. For
-example, on the Kodak DC-240, files are stored in the directory
+The "topfolder" line specifies the "fixed" part of the file path. For
+example, on the Kodak DC-240, files are stored in the directory
/DCIM/100DC240. The /DCIM portion is constant, but 100DC240 will
-change and must be read from the camera. In this case, the
+change and must be read from the camera. In this case, the
line would read "topfolder=/DCIM"
.PP
Some cameras don't implement a file structure and store all pictures
@@ -90,12 +90,12 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.TP
.B SANE_DEBUG_GPHOTO2
If the library was compiled with debugging support enabled, this
-environment variable controls the debug level for this backend.
+environment variable controls the debug level for this backend.
A value of 128 requests maximally copious debug output; smaller
levels reduce verbosity.
-.TP
+.TP
.B GP_DEBUG
-Set to 1, 2, or 3, to enable various levels of debugging within the
+Set to 1, 2, or 3, to enable various levels of debugging within the
gphoto2 libraries.
.SH "SEE ALSO"
@@ -111,8 +111,7 @@ The manpage was largely copied from the dc210 manpage.
Many, no doubt.
.PP
More general comments, suggestions, and inquiries about frontends
-or SANE should go to the SANE Developers mailing list
-(see http://www.sane\-project.org/mailing\-lists.html for details).
+or SANE should go to the SANE Developers mailing list
+(see http://www.sane\-project.org/mailing\-lists.html for details).
You must be subscribed to the list, otherwise your mail won't be
sent to the subscribers.
-
diff --git a/doc/sane-gt68xx.man b/doc/sane-gt68xx.man
index e3d29af..2e6d3c5 100644
--- a/doc/sane-gt68xx.man
+++ b/doc/sane-gt68xx.man
@@ -8,7 +8,7 @@ The
library implements a SANE (Scanner Access Now Easy) backend that provides
access to USB flatbed scanners based on the Grandtech GT-6801 and GT-6816
chips. A list of supported scanners can be found on the gt68xx backend
-homepage:
+homepage:
.IR http://www.meier\-geinitz.de/sane/gt68xx\-backend/ .
.PP
This is BETA software. Especially if you test new or untested scanners, keep
@@ -24,7 +24,7 @@ the models already listed as supported, please let me know.
.PP
If you own a scanner that isn't detected by the gt68xx backend but has a GT-6801
or GT-6816 chipset, you can try to add it to the backend. Have a look at the
-following web page:
+following web page:
.I http://www.meier\-geinitz.de/sane/gt68xx\-backend/adding.html
.PP
.SH LIBUSB ISSUES
@@ -38,7 +38,7 @@ USB information looks at
.SH FIRMWARE FILE
You need a firmware file for your scanner. That's a small file containing
software that will be uploaded to the scanner's memory. It's usually named
-*.usb, e.g.
+*.usb, e.g.
.IR PS1fw.usb .
It comes on the installation CD that was provided by the manufacturer, but it
may be packaged together with the installation program in an .exe file. For
@@ -64,9 +64,9 @@ autodetected by
statements which are already included into
.IR gt68xx.conf .
"vendor_id" and "product_id" are hexadecimal numbers that identify the
-scanner.
+scanner.
.PP
-The
+The
.BR override ,
.BR firmware ,
.BR vendor ,
@@ -82,7 +82,7 @@ Option
is used to override the default model parameters. That's necessary for some
scanners that use the same vendor/product ids but are different. For these
scanners there are already commented out override lines in the configuration
-file.
+file.
.B override "mustek\-scanexpress\-1200\-ub\-plus"
is necessary for the Mustek Scanexpress 1200 UB Plus, the
Medion/Lifetec/Tevion LT 9452, and the Trust Compact Scan USB 19200.
@@ -93,7 +93,7 @@ Medion/ Lifetec/ Tevion/ Cytron MD/LT 9385, the Medion/ Lifetec/ Tevion MD
.B override "mustek\-bearpaw\-2400\-cu"
is necessary for the Mustek BearPaw 2400 CU and the Fujitsu 1200CUS. The
.B override
-option must be the first one after the
+option must be the first one after the
.B usb
line.
.PP
@@ -107,7 +107,7 @@ at a different path, use a
.B firmware
line.
.PP
-The
+The
.B vendor
and
.B model
@@ -178,7 +178,7 @@ increase the verbosity of the output. If the debug level is set to 1 or higher,
some debug options become available that are normally hidden. Handle them with
care.
-Example:
+Example:
export SANE_DEBUG_GT68XX=4
.SH "SEE ALSO"
@@ -214,5 +214,5 @@ Support for buttons is missing.
More detailed bug information is available at the gt68xx backend homepage
.IR http://www.meier\-geinitz.de/sane/gt68xx\-backend/ .
Please contact us if you find a bug or missing feature:
-<sane\-devel@lists.alioth.debian.org>. Please send a debug log if your scanner isn't
+<sane\-devel@alioth-lists.debian.net>. Please send a debug log if your scanner isn't
detected correctly (see SANE_DEBUG_GT68XX above).
diff --git a/doc/sane-hp.man b/doc/sane-hp.man
index 4e7d35d..1aeaea8 100644
--- a/doc/sane-hp.man
+++ b/doc/sane-hp.man
@@ -39,7 +39,7 @@ PhotoSmart C5100A R029,R030,R032 SCSI
.RE
.PP
Support for models 5100C/5200C connected to the parallel port requires
-the ppSCSI driver available at
+the ppSCSI driver available at
.I http://cyberelk.net/tim/parport/ppscsi.html
and
.IR http://penguin-breeder.org/kernel/download/ .
@@ -52,7 +52,7 @@ for more details.
.PP
The "hp" backend no longer supports OfficeJet multi-function peripherals.
For these devices use the external "hpoj" backend in version 0.90 and later of
-the "HP OfficeJet Linux driver", available at
+the "HP OfficeJet Linux driver", available at
.br
.IR http://hpoj.sourceforge.net
.
@@ -66,7 +66,7 @@ by another one. See
You can also watch the sane\-devel mailing list at
.IR http://www.sane\-project.org/mailing\-lists.html .
.PP
-More details about the hp backend can be found on its homepage
+More details about the hp backend can be found on its homepage
.IR http://www.kirchgessner.net/sane.html .
.PP
.SH "DEVICE NAMES"
@@ -104,7 +104,7 @@ and
.BR sane\-usb (5)
on details of what constitutes a valid device name.
.PP
-Options specified in front of the first line that contains a device name
+Options specified in front of the first line that contains a device name
are defaults for all devices. Options specified below a line that
contains a device name apply just to the most recently mentioned device.
.PP
@@ -203,7 +203,7 @@ levels reduce verbosity.
.TP
.B SANE_HOME_HP
Only used for OS/2 and along with use of HP PhotoSmart PhotoScanner.
-Must be set to the directory where the directory .sane is located.
+Must be set to the directory where the directory .sane is located.
Is used to save and read the calibration file.
.TP
.B SANE_HP_KEEPOPEN_SCSI
@@ -237,7 +237,7 @@ and 24 bit color.
.B Automatic Document Feeder (ADF)
For use of the ADF with xscanimage(1), first place paper in the ADF and
then change option scan source to 'ADF'. Press 'change document'
-to load a sheet. Then press 'scan' to start a scan.
+to load a sheet. Then press 'scan' to start a scan.
Maybe it is sufficient to press 'scan' without 'change document'
for repeated scans. The use of the preview window is not recommended
when working with the ADF.
diff --git a/doc/sane-hp3500.man b/doc/sane-hp3500.man
index 2785b0e..5192983 100644
--- a/doc/sane-hp3500.man
+++ b/doc/sane-hp3500.man
@@ -37,9 +37,9 @@ support dynamic loading).
.B SANE_DEBUG_HP3500
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_HP3500=4
.SH "SEE ALSO"
@@ -50,4 +50,3 @@ export SANE_DEBUG_HP3500=4
.SH AUTHOR
Troy Rollo <sane@troy.rollo.name>
-
diff --git a/doc/sane-hp3900.man b/doc/sane-hp3900.man
index ab0a100..b623ee5 100644
--- a/doc/sane-hp3900.man
+++ b/doc/sane-hp3900.man
@@ -26,7 +26,7 @@ BenQ 5550 RTS8823L-01E *
.ft R
.RE
.PP
-More details can be found on the hp3900 backend homepage
+More details can be found on the hp3900 backend homepage
.IR http://sourceforge.net/projects/hp3900\-series/ .
.PP
This is ALPHA software. Keep your hand at the scanner's plug and unplug it, if
@@ -88,9 +88,9 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_HP3900
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_HP3900=4
.SH "SEE ALSO"
@@ -107,4 +107,3 @@ Jonathan Bravo Lopez <jkdsoft@gmail.com>
Scanning is only tested with Linux/ix86/gcc. Be careful when testing on other
operating systems and especially on big-endian platforms. The scanner may get
wrong data.
-
diff --git a/doc/sane-hp4200.man b/doc/sane-hp4200.man
index e392d85..cbb8c5e 100644
--- a/doc/sane-hp4200.man
+++ b/doc/sane-hp4200.man
@@ -16,11 +16,11 @@ ScanJet 4200 Cxi
ScanJet 4200 Cse
.RE
.PP
-More details can be found on the hp4200 backend homepage
+More details can be found on the hp4200 backend homepage
.IR http://hp4200\-backend.sourceforge.net/ .
.PP
This is BETA software. Keep your hand at the scanner's plug and unplug it, if
-the head bumps at the end of the scan area.
+the head bumps at the end of the scan area.
.PP
If you own a scanner other than the ones listed above that works with this
backend, please let us know this by sending the scanner's exact model name and
@@ -79,9 +79,9 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_HP4200
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_HP4200=4
.SH "SEE ALSO"
@@ -102,4 +102,4 @@ Only 8 bit color mode works.
Scanning is slow due to backtracking.
.PP
Send bug reports to the sane\-devel mailing list:
-sane\-devel@lists.alioth.debian.org.
+sane\-devel@alioth-lists.debian.net.
diff --git a/doc/sane-hp5400.man b/doc/sane-hp5400.man
index d789215..23c40d8 100644
--- a/doc/sane-hp5400.man
+++ b/doc/sane-hp5400.man
@@ -16,7 +16,7 @@ ScanJet 5470C
ScanJet 5490C
.RE
.PP
-More details can be found on the hp5400 backend homepage
+More details can be found on the hp5400 backend homepage
.IR http://hp5400backend.sourceforge.net/ .
.PP
This is ALPHA software. Keep your hand at the scanner's plug and unplug it, if
@@ -79,9 +79,9 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_HP5400
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_HP5400=4
.SH "SEE ALSO"
@@ -99,4 +99,3 @@ Martijn van Oosterhout <kleptog@svana.org>, Thomas Soumarmon
Scanning is only tested with Linux/ix86/gcc. Be careful when testing on other
operating systems and especially on big-endian platforms. The scanner may get
wrong data.
-
diff --git a/doc/sane-hp5590.man b/doc/sane-hp5590.man
index 2ccfcc5..5330800 100644
--- a/doc/sane-hp5590.man
+++ b/doc/sane-hp5590.man
@@ -1,69 +1,320 @@
-.TH sane\-hp5590 5 "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
-.IX sane\-hp5590
+.\" Automatically generated by Pandoc 2.7.2
+.\"
+.TH "sane-hp5590" "5" "13 Jul 2008" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.hy
.SH NAME
-sane\-hp5590 \- SANE backend for
-Hewlett-Packard 4500C/4570C/5500C/5550C/5590/7650 Workgroup/Document scanners
+.PP
+sane-hp5590 - SANE backend for Hewlett-Packard
+4500C/4570C/5500C/5550C/5590/7650 Workgroup/Document scanners
.SH DESCRIPTION
-The
-.B sane\-hp5590
-library implements a SANE (Scanner Access Now Easy) backend that provides
-access to the following Hewlett-Packard Workgroup/Document scanners:
.PP
-.RS
+The \f[B]sane-hp5590\f[R] library implements a SANE (Scanner Access Now
+Easy) backend that provides access to the following Hewlett-Packard
+Workgroup/Document scanners:
+.IP \[bu] 2
ScanJet 4500C
-.br
+.IP \[bu] 2
ScanJet 4570C
-.br
+.IP \[bu] 2
ScanJet 5500C
-.br
+.IP \[bu] 2
ScanJet 5550C
-.br
+.IP \[bu] 2
ScanJet 5590
-.br
+.IP \[bu] 2
ScanJet 7650
+.PP
+If you own a scanner other than the ones listed above that works with
+this backend, please let us know this by sending the scanner\[cq]s exact
+model name and the USB vendor and device ids (e.g.\ from
+\f[I]/sys/bus/usb/devices\f[R], \f[I]sane-find-scanner\f[R] or syslog)
+to us.
+Even if the scanner\[cq]s name is only slightly different from the
+models mentioned above, please let us know.
+.SH OPTIONS
+.PP
+The options the backend supports can either be selected through command
+line options to programs like scanimage or through GUI elements in
+\f[I]xscanimage\f[R] or \f[I]xsane\f[R].
+Valid command line options and their syntax can be listed by using:
+.IP
+.nf
+\f[C]
+scanimage --help -d hp5590:interface:device
+\f[R]
+.fi
+.PP
+where \f[I]interface\f[R] and \f[I]device\f[R] specify the device in
+question, as in the configuration file.
+Add \f[I]--all-options\f[R] to also list the hardware read-out options.
+The -d parameter and its argument can be omitted to obtain information
+on the first scanner identified.
+.PP
+Use the command:
+.IP
+.nf
+\f[C]
+scanimage -L
+\f[R]
+.fi
+.PP
+to list all devices recognized by your SANE installation.
+.SH DEVICE SPECIFIC OPTIONS
+.TP
+.B -l \f[I]n\f[R]
+Top-left X position of scan area in \f[B]mm\f[R].
+Allowed range: 0 ..
+215.889.
+.TP
+.B -t \f[I]n\f[R]
+Top-left Y position of scan area in \f[B]mm\f[R].
+Allowed range: 0 ..
+297.699.
+.TP
+.B -x \f[I]n\f[R]
+X width of scan-area in \f[B]mm\f[R].
+Allowed range: 0 ..
+215.889.
+.TP
+.B -y \f[I]n\f[R]
+Y height of scan-area in \f[B]mm\f[R].
+Allowed range: 0 ..
+297.699.
+.PP
+By default, the maximum size will be scanned.
+.TP
+.B --mode \f[I]mode\f[R]
+Select color mode.
+\f[I]mode\f[R] must be one of: \[lq]Color\[rq], \[lq]Color (48
+bits)\[rq], \[lq]Gray\[rq], \[lq]Lineart\[rq].
+.RS
+.IP \[bu] 2
+\[lq]Color\[rq] - Scanning is done with 3 * 8 bit RGB color values per
+pixel.
+.IP \[bu] 2
+\[lq]Color (48 bits)\[rq] - Scanning is done with 3 * 16 bit RGB color
+values per pixel.
+.IP \[bu] 2
+\[lq]Gray\[rq] - Scanning is done with 1 * 8 bit gray value per pixel.
+.IP \[bu] 2
+\[lq]Lineart\[rq] - Scanning is done with 1 bit black and white value
+per pixel.
+.RE
+.TP
+.B --source \f[I]source\f[R]
+Select the source for scanning.
+\f[I]source\f[R] must be one of: \[lq]Flatbed\[rq], \[lq]ADF\[rq],
+\[lq]ADF Duplex\[rq], \[lq]TMA Slides\[rq], \[lq]TMA Negatives\[rq].
+.RS
+.IP \[bu] 2
+\[lq]Flatbed\[rq] - Scan document on the flat document glass.
+.IP \[bu] 2
+\[lq]ADF\[rq] - Scan frontsides of documents with automatic document
+feeder.
+.IP \[bu] 2
+\[lq]ADF Duplex\[rq] - Scan front- and backsides of documents with
+automatic document feeder.
+Note, the backside images must be rotated in a separate post process
+step.
+.IP \[bu] 2
+\[lq]TMA Slides\[rq] - Slide scanning with transparent media adapter.
+(Not fully supported by hp5590 backend).
+.IP \[bu] 2
+\[lq]TMA Negatives\[rq] - Negative film scanning with transparent media
+adapter.
+(Not fully supported by hp5590 backend).
+.RE
+.TP
+.B --resolution \f[I]res\f[R]
+Set the resolution of the scanned image in \f[B]dpi\f[R].
+\f[I]res\f[R] must be one of: 100, 200, 300, 600, 1200, 2400.
+.PP
+Default settings: Lineart, Flatbed, 100dpi.
+.TP
+.B --extend-lamp-timeout[=yes|no]
+Extend lamp timeout period.
+no = 15 minutes, yes = 1 hour.
+(Default: no)
+.TP
+.B --wait-for-button[=yes|no]
+Wait for button press before scanning starts.
+(Default: no)
+.TP
+.B --preview[=yes|no]
+Request a preview-quality scan.
+(Default: no)
+.TP
+.B --hide-eop-pixel[=yes|no]
+Hide end-of-page indicator pixels and overwrite with color of next
+neighbor pixels.
+(Default: yes)
+.PD 0
+.P
+.PD
+The scanner uses the last pixel in every scan line for storing the
+end-of-page status.
+This is needed to detect the end of the document sheet when the
+automatic document feeder (ADF) is used.
+Unfortunately the end-of-page pixels are also generated in flatbed
+scans.
+It is recommended to hide these pixels.
+.TP
+.B --trailing-lines-mode \f[I]mode\f[R]
+Filling mode of trailing lines after end of page when automatic document
+feeder (ADF) is used.
+\f[I]mode\f[R] must be one of: \[lq]last\[rq], \[lq]raw\[rq],
+\[lq]raster\[rq], \[lq]white\[rq], \[lq]black\[rq], \[lq]color\[rq].
+(Default: \[lq]last\[rq])
+.RS
+.IP \[bu] 2
+\[lq]last\[rq] = repeat the last scan line (recommended),
+.IP \[bu] 2
+\[lq]raw\[rq] = read raw scan data (not recommended),
+.IP \[bu] 2
+\[lq]raster\[rq] = generate black and white pixel pattern,
+.IP \[bu] 2
+\[lq]white\[rq] = white pixels,
+.IP \[bu] 2
+\[lq]black\[rq] = black pixels,
+.IP \[bu] 2
+\[lq]color\[rq] = RGB or gray colored pixels (see next option).
.RE
+.TP
+.B --trailing-lines-color \f[I]n\f[R]
+Set color value for filling trailing scan lines in trailing lines mode
+\[lq]color\[rq] (see previous option).
+(Default color: violet)
+.PD 0
+.P
+.PD
+The RGB color value must be specified and calculated as 65536 * r + 256
+* g + b, with r, g, b being values in the range of 0 ..
+255.
+.SH READ OUT OPTIONS
.PP
-If you own a scanner other than the ones listed above that works with this
-backend, please let us know this by sending the scanner's exact model name and
-the USB vendor and device ids (e.g. from
-.IR /proc/bus/usb/devices ,
-.I sane\-find\-scanner
-or syslog) to us. Even if the scanner's name is only slightly different from
-the models mentioned above, please let us know.
-.SH CONFIGURATION
-None required.
+The following options allow reading out the button state, counter value,
+color setting, and the state of document in ADF.
+This can be used to programmatically control corresponding scanner
+options like switching between \f[I]flatbed\f[R] and \f[I]ADF\f[R] mode,
+or triggering prost processing tasks after scanning.
+.TP
+.B --button-pressed
+Get the id of the last button pressed.
+Id is one of \[lq]none\[rq], \[lq]power\[rq], \[lq]scan\[rq],
+\[lq]collect\[rq], \[lq]file\[rq], \[lq]email\[rq], \[lq]copy\[rq],
+\[lq]up\[rq], \[lq]down\[rq], \[lq]mode\[rq], \[lq]cancel\[rq].
+.PD 0
+.P
+.PD
+The scanner stores the id of the last button pressed until it is read.
+After read out, the state is reset and subsequent readings will return
+\[lq]none\[rq].
+.TP
+.B --color-led
+Get the state of the color LED indicators.
+The state is either \[lq]color\[rq] or \[lq]black_white\[rq].
+.TP
+.B --counter-value
+Get the counter value as shown on LCD.
+The value is in the range of 1 ..
+99.
+.TP
+.B --doc-in-adf
+Get the state of the document-available indicator of the automatic
+document feeder (ADF).
+The state is either \[lq]yes\[rq] or \[lq]no\[rq].
+.SH HINTS FOR USERS OF SCANBD
+.PP
+\f[I]Scanbd\f[R] is a scanner button daemon, which can read scanner
+buttons and trigger scan actions.
+.PP
+Do not use the old \f[I]scanbuttond\f[R] interface with hp5590.
+It is outdated and shall not be used any more.
+Scanbd\[cq]s regular interface is fully supported by the current version
+of the \f[I]hp5590\f[R] backend.
+.PP
+This example shows a minimum configuration file and the corresponding
+script file for scanbd to be included in \f[I]scanbd.conf\f[R].
+.IP \[bu] 2
+\f[B]hp5590.conf\f[R]
+.IP
+.nf
+\f[C]
+device hp5590 {
+ # Device matching
+ filter = \[dq]\[ha]hp5590.*\[dq]
+ desc = \[dq]HP5590 Scanner Family\[dq]
+
+ # Read out counter value and store in environment variable.
+ function function_lcd_counter {
+ filter = \[dq]\[ha]counter-value.*\[dq]
+ desc = \[dq]hp5590: LCD counter\[dq]
+ env = \[dq]SCANBD_FUNCTION_LCD_COUNTER\[dq]
+ }
+
+ # Run scan script when button is pressed.
+ action do-scan {
+ filter = \[dq]\[ha]button-pressed.*\[dq]
+ desc = \[dq]hp5590: Scan button pressed\[dq]
+ script = \[dq]scan_action.script\[dq]
+ string-trigger {
+ from-value = \[dq]none\[dq]
+ to-value = \[dq]scan\[dq]
+ }
+ }
+}
+\f[R]
+.fi
+.IP \[bu] 2
+\f[B]scan_action.script\f[R]
+.IP
+.nf
+\f[C]
+#!/bin/bash
+echo device = $SCANBD_DEVICE
+echo action = $SCANBD_ACTION
+echo counter = $SCANBD_FUNCTION_LCD_COUNTER
+scanfile=\[dq]$HOME/tmp/scans/scan-$(date +%s).pnm\[dq]
+case $SCANBD_ACTION in
+do-scan)
+ scanimage -d \[dq]$SCANBD_DEVICE\[dq] > \[dq]$scanfile\[dq]
+ ;;
+*)
+ echo Warning: Unknown scanbd action: \[dq]$SCANBD_ACTION\[dq]
+ ;;
+esac
+\f[R]
+.fi
.SH FILES
.TP
-.I @LIBDIR@/libsane\-hp5590.a
+.B \f[I]\[at]LIBDIR\[at]/libsane-hp5590.a\f[R]
The static library implementing this backend.
.TP
-.I @LIBDIR@/libsane\-hp5590.so
+.B \f[I]\[at]LIBDIR\[at]/libsane-hp5590.so\f[R]
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH ENVIRONMENT
+.PP
+If the library was compiled with debug support enabled, this environment
+variable controls the debug level for this backend.
+.PP
+\f[B]SANE_DEBUG_HP5590\f[R]
+.PP
+Higher debug levels increase the verbosity of the output:
+.IP
+.nf
+\f[C]
+10 - generic processing
+20 - verbose backend messages
+40 - HP5590 high-level commands
+50 - HP5590 low-level (USB-in-USB) commands
+\f[R]
+.fi
.TP
-.B SANE_DEBUG_HP5590
-If the library was compiled with debug support enabled, this
-environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output. See used levels below.
-.P
-.RS
-Level 10 - generic processing
-.br
-Level 20 - verbose backend messages
-.br
-Level 40 - HP5590 high-level commands
-.br
-Level 50 - HP5590 low-level (USB-in-USB) commands
-
-.P
-Example:
-
+.B Example:
export SANE_DEBUG_HP5590=50
-
-.SH "SEE ALSO"
-.BR sane (7),
-.BR sane\-usb (5),
-
-.SH AUTHOR
-Ilia Sotnikov <hostcc@gmail.com>
+.SH SEE ALSO
+.PP
+\f[B]sane\f[R](7), \f[B]sane-usb\f[R](5)
+.SH AUTHORS
+Ilia Sotnikov <hostcc@gmail.com>.
diff --git a/doc/sane-hs2p.man b/doc/sane-hs2p.man
index b0df57d..9757eff 100644
--- a/doc/sane-hs2p.man
+++ b/doc/sane-hs2p.man
@@ -25,12 +25,12 @@ Where
.I special
is either the path-name for the special device that corresponds to a SCSI
scanner. The program
-.I sane\-find\-scanner
+.I sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name could be
.I /dev/sg0
or
.IR /dev/sga ,
-for example. See
+for example. See
.BR sane\-scsi (5)
for details.
@@ -39,7 +39,7 @@ The contents of the
.I hs2p.conf
file is a list of device names that correspond to SCSI
scanners. Empty lines and lines starting with a hash mark (#) are
-ignored. See
+ignored. See
.BR sane\-scsi (5)
on details of what constitutes a valid device name.
@@ -84,29 +84,29 @@ from the flatbed or ADF (either simplex or duplex) is supported. Lineart,
halftone, 4-bit gray, and 8-bit gray are supported. Pre-set gamma tables and
halftone patterns are supported, as well as brightness, threshold, contrast.
Also supported is scan wait mode, binary and gray filtering, negative scanning,
-and absolute or relative white setting. Printing with the optional endorser
+and absolute or relative white setting. Printing with the optional endorser
also is supported.
.SH PLANNED FUNCTIONALITY
-This scanner can scan from the ADF in continuous simplex mode.
+This scanner can scan from the ADF in continuous simplex mode.
Surprisingly, many scanners scan an entire document from the ADF
into memory before ejecting the sheet. Thus if the document is too
-long, the scanner cannot hold the entire image data in memory.
-But if the scanner would send its image data when its memory got full,
-and then read the next buffer's worth of data, continuous scanning
-could be achieved.
+long, the scanner cannot hold the entire image data in memory.
+But if the scanner would send its image data when its memory got full,
+and then read the next buffer's worth of data, continuous scanning
+could be achieved.
.SH MISSING FUNCTIONALITY
The SCSI commands for uploading (2AH) or downloading (28H)
-custom halftone patterns (02H) and gamma vectors (03H) should work,
-but require implementing the SANE Option-Value code to allow the
-user to create the tables to be uploaded to the scanner. No support
-for Maintenance Data (80H) is planned as this functionality is more
-suited to a stand-alone utility to be used by a technician when
-replacing the lamp or ADF unit. Nor is support for reading or changing
+custom halftone patterns (02H) and gamma vectors (03H) should work,
+but require implementing the SANE Option-Value code to allow the
+user to create the tables to be uploaded to the scanner. No support
+for Maintenance Data (80H) is planned as this functionality is more
+suited to a stand-alone utility to be used by a technician when
+replacing the lamp or ADF unit. Nor is support for reading or changing
IPU (93H) parameters and adjustments planned, since my IS450 lacks
-such a unit. The 31-byte Auto Photo/Letter struct and 21-byte Dynamic
-threshold struct are documented in the hs2p-scsi.h file should someone
+such a unit. The 31-byte Auto Photo/Letter struct and 21-byte Dynamic
+threshold struct are documented in the hs2p-scsi.h file should someone
wish to use their IPU for image data processing.
.SH "SEE ALSO"
diff --git a/doc/sane-ibm.man b/doc/sane-ibm.man
index 50138d7..0b5013c 100644
--- a/doc/sane-ibm.man
+++ b/doc/sane-ibm.man
@@ -25,12 +25,12 @@ Where
.I special
is either the path-name for the special device that corresponds to a SCSI
scanner. The program
-.I sane\-find\-scanner
+.I sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name could be
.I /dev/sg0
or
.IR /dev/sga ,
-for example. See
+for example. See
.BR sane\-scsi (5)
for details.
@@ -39,7 +39,7 @@ The contents of the
.I ibm.conf
file is a list of device names that correspond to SCSI
scanners. Empty lines and lines starting with a hash mark (#) are
-ignored. See
+ignored. See
.BR sane\-scsi (5)
on details of what constitutes a valid device name.
@@ -75,7 +75,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_IBM
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
.SH "SEE ALSO"
.BR sane (7),
diff --git a/doc/sane-kodak.man b/doc/sane-kodak.man
index 2566f3d..61ea88e 100644
--- a/doc/sane-kodak.man
+++ b/doc/sane-kodak.man
@@ -5,7 +5,7 @@
sane\-kodak \- SANE backend for big Kodak flatbed and ADF scanners
.SH DESCRIPTION
-The
+The
.B sane\-kodak
library implements a SANE (Scanner Access Now Easy) backend which
provides access to large Kodak flatbed and ADF scanners.
@@ -13,44 +13,44 @@ provides access to large Kodak flatbed and ADF scanners.
This document describes backend version 7, which shipped with SANE 1.0.21.
.SH SUPPORTED HARDWARE
-This version should support models which speak the Kodak SCSI and Firewire
-protocols. The i1860 was used to develop the backend, but other models may
-work with only minimal modifications. Please see the list at
+This version should support models which speak the Kodak SCSI and Firewire
+protocols. The i1860 was used to develop the backend, but other models may
+work with only minimal modifications. Please see the list at
http://www.sane\-project.org/sane\-supported\-devices.html for an updated list.
-If you have a machine not on that list, or reported as 'untested': the best way
-to determine level of support is to test the scanner directly, or to collect a
-trace of the windows driver in action. Please contact the author for help or
+If you have a machine not on that list, or reported as 'untested': the best way
+to determine level of support is to test the scanner directly, or to collect a
+trace of the windows driver in action. Please contact the author for help or
with test results.
.SH UNSUPPORTED HARDWARE
-Most of the recent Kodak consumer or workgroup level machines are based on
-other chipsets and are not supported by this backend. Some of these scanners
+Most of the recent Kodak consumer or workgroup level machines are based on
+other chipsets and are not supported by this backend. Some of these scanners
may be supported by another backend.
.SH OPTIONS
Effort has been made to expose the basic hardware options, including:
.PP
-source s
+source s
.RS
Selects the source for the scan. Options
may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
.RE
.PP
-mode m
+mode m
.RS
Selects the mode for the scan. Options
may include "Lineart", "Halftone", "Gray", and "Color".
.RE
.PP
-resolution
+resolution
.RS
Controls scan resolution. Available choices may be limited by mode.
.RE
.PP
tl\-x, tl\-y, br\-x, br\-y
.RS
-Sets scan area upper left and lower right coordinates. These are renamed
+Sets scan area upper left and lower right coordinates. These are renamed
t, l, x, y by some frontends.
.RE
.PP
@@ -61,14 +61,14 @@ coordinates when using ADF and to detect double feed errors.
.RE
.PP
Other options will be available based on the capabilities of the scanner.
-Use 'scanimage \-\-help' to get a list, but be aware that some options may
-be settable only when another option has been set, and that advanced options
+Use 'scanimage \-\-help' to get a list, but be aware that some options may
+be settable only when another option has been set, and that advanced options
may be hidden by some frontend programs.
.PP
.SH CONFIGURATION FILE
The configuration file "kodak.conf" is used to tell the backend how to look
for scanners, and provide options controlling the operation of the backend.
-This file is read each time the frontend asks the backend for a list
+This file is read each time the frontend asks the backend for a list
of scanners, generally only when the frontend starts. If the configuration
file is missing, the backend will use a set of compiled defaults, which
are identical to the default configuration file shipped with SANE.
@@ -77,8 +77,8 @@ Scanners can be specified in the configuration file in 2 ways:
.PP
"scsi KODAK"
.RS
-Requests backend to search all scsi busses in the system for a device
-which reports itself to be a scanner made by 'KODAK'.
+Requests backend to search all scsi busses in the system for a device
+which reports itself to be a scanner made by 'KODAK'.
.RE
.PP
"scsi /dev/sg0" (or other scsi device file)
@@ -89,7 +89,7 @@ specify one. Probably should not be used with the other "scsi" line above.
.RE
.PP
The only configuration option supported is "buffer\-size=xxx", allowing you
-to set the number of bytes in the data buffer to something other than the
+to set the number of bytes in the data buffer to something other than the
compiled\-in default, 32768 (32K). Some users report that their scanner will
"hang" mid\-page, or fail to transmit the image if the buffer is not large
enough.
@@ -124,7 +124,7 @@ enables debugging output to stderr. Valid values are:
.RE
.SH KNOWN ISSUES
-Most hardware options are either not supported or not exposed for control by
+Most hardware options are either not supported or not exposed for control by
the user, including: multifeed detection, image compression, autocropping,
endorser, iThresholding, multi\-stream, etc.
.PP
@@ -133,7 +133,7 @@ endorser, iThresholding, multi\-stream, etc.
The various authors of the sane\-fujitsu backend provided useful code.
.br
Kodak provided access to hardware, documentation and personnel.
-
+
.SH "SEE ALSO"
sane(7),
sane\-scsi(5)
diff --git a/doc/sane-kodakaio.man b/doc/sane-kodakaio.man
index 40310ed..664a418 100644
--- a/doc/sane-kodakaio.man
+++ b/doc/sane-kodakaio.man
@@ -5,7 +5,7 @@
sane\-kodakaio \- SANE backend for Kodak aio printer / scanners
.SH DESCRIPTION
-The
+The
.B sane\-kodakaio
library implements a SANE (Scanner Access Now Easy) backend which
provides access to Kodak aio printer / scanners, like the ESP and Hero series.
@@ -15,24 +15,24 @@ incorporation in sane-backends.
.SH SUPPORTED HARDWARE
This version should support models of the Kodak ESP and Hero series, and possibly some
-Advent AiO scanners. The ESP 5250 and Hero 9.1 were used to develop the backend,
+Advent AiO scanners. The ESP 5250 and Hero 9.1 were used to develop the backend,
but other models may work. Please see the desc file.
-If you have a model not on that list, or reported as 'untested': the best way
+If you have a model not on that list, or reported as 'untested': the best way
to determine level of support is to test the scanner directly.
.SH CONFIGURATION FILE
The configuration file "kodakaio.conf" is used to tell the backend how to look
for scanners, and provide options controlling the operation of the backend.
-This file is read each time the frontend asks the backend for a list
+This file is read each time the frontend asks the backend for a list
of scanners, generally only when the frontend starts.
.SH ENVIRONMENT
The backend uses a single environment variable, SANE_DEBUG_KODAKAIO, which
-enables debugging output to stderr.
+enables debugging output to stderr.
.SH KNOWN ISSUES
-Most hardware options are either not supported or not exposed for control by
+Most hardware options are either not supported or not exposed for control by
the user, including: multifeed detection, image compression etc.
.PP
diff --git a/doc/sane-kvs1025.man b/doc/sane-kvs1025.man
index 23dcd50..23a67f3 100644
--- a/doc/sane-kvs1025.man
+++ b/doc/sane-kvs1025.man
@@ -5,7 +5,7 @@
sane\-kvs1025 \- SANE backend for Panasonic KV-S102xC USB ADF scanners.
.SH DESCRIPTION
-The
+The
.B sane\-kvs1025
library implements a SANE (Scanner Access Now Easy) backend which
provides access to the Panasonic KV-S1020C/1025C and KV-S1045C scanners.
@@ -28,4 +28,3 @@ sane(7), sane\-usb(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-kvs20xx.man b/doc/sane-kvs20xx.man
index 8cb8b9c..bd3ecc2 100644
--- a/doc/sane-kvs20xx.man
+++ b/doc/sane-kvs20xx.man
@@ -5,7 +5,7 @@
sane\-kvs20xx \- SANE backend for Panasonic KV-S20xxC USB/SCSI ADF scanners.
.SH DESCRIPTION
-The
+The
.B sane\-kvs20xx
library implements a SANE (Scanner Access Now Easy) backend which
provides access to the Panasonic KV-S202xC and KV-S204xC scanners.
@@ -26,4 +26,3 @@ sane(7), sane\-usb(5), sane\-scsi(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-kvs40xx.man b/doc/sane-kvs40xx.man
index f1aecbc..5a53853 100644
--- a/doc/sane-kvs40xx.man
+++ b/doc/sane-kvs40xx.man
@@ -5,7 +5,7 @@
sane\-kvs40xx \- SANE backend for Panasonic KV-S40xxC USB/SCSI ADF scanners.
.SH DESCRIPTION
-The
+The
.B sane\-kvs40xx
library implements a SANE (Scanner Access Now Easy) backend which
provides access to the Panasonic KV-S40xxC and KV-S70xxC scanners.
@@ -28,4 +28,3 @@ sane(7), sane\-usb(5), sane\-scsi(5)
.SH AUTHOR
m. allan noah: <kitno455 a t gmail d o t com>
-
diff --git a/doc/sane-leo.man b/doc/sane-leo.man
index a346403..f0d9266 100644
--- a/doc/sane-leo.man
+++ b/doc/sane-leo.man
@@ -32,7 +32,7 @@ elements in xscanimage or xsane.
If you have any strange behavior, please report to the backend
maintainer or to the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d leo
.RE
@@ -42,7 +42,7 @@ scanimage \-\-help \-d leo
.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.I Black & White
,
.I Grayscale
@@ -62,7 +62,7 @@ between 1 and 300, in increments of 1.
.B Geometry options
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters by default.
@@ -76,24 +76,24 @@ area. All parameters are specified in millimeters by default.
(grayscale and color mode only) allows the user to specify a gamma table (see the
next 3 parameters).
-.TP
-.B \-\-red\-gamma\-table
+.TP
+.B \-\-red\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the red channel. The table must be 256 bytes long.
-.TP
-.B \-\-green\-gamma\-table
+.TP
+.B \-\-green\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the green channel. The table must be 256 bytes long.
.TP
-.B \-\-blue\-gamma\-table
+.B \-\-blue\-gamma\-table
(color mode only) can be used to download a user defined gamma table
for the blue channel. The table must be 256 bytes long.
.TP
.B \-\-halftone
-(Black & White only) select the halftone mask to use. Possible values are
+(Black & White only) select the halftone mask to use. Possible values are
.I Diamond
,
.I 8x8 Coarse Fatting
@@ -104,7 +104,7 @@ for the blue channel. The table must be 256 bytes long.
and
.I 8x8 Vertical Line
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 28 dpi
and the scan area is the maximum allowed. The scan mode is user
diff --git a/doc/sane-lexmark.man b/doc/sane-lexmark.man
index 30bba87..06e3359 100644
--- a/doc/sane-lexmark.man
+++ b/doc/sane-lexmark.man
@@ -9,13 +9,13 @@ library implements a SANE (Scanner Access Now Easy) backend that
provides access to the scanner part of Lexmark X1100/X1200 AIOs. This backend
should be considered
.B beta-quality
-software!
-.PP
+software!
+.PP
The scanners that should work with this backend are:
-.PP
+.PP
.RS
.ft CR
-.nf
+.nf
Vendor Model status
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-
Lexmark X74 good
@@ -28,7 +28,7 @@ The scanners that should work with this backend are:
Lexmark X12xx good in USB1.1,
not fully tested in USB2.0
Dell A920 good
-.fi
+.fi
.ft R
.RE
@@ -36,58 +36,58 @@ The options the backend supports can either be selected through
command line options to programs like scanimage or through GUI
elements in xscanimage or xsane.
-.br
+.br
If you have any strange behavior, please report to the backend
maintainer or to the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d lexmark:usb:<usb port>
.RE
-.TP
+.TP
.B Scan Mode Options
-.TP
+.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.IR Color ,
.I Gray
and
.I Lineart
-The default mode is Color. The Lineart mode is black and white only (1 bit).
+The default mode is Color. The Lineart mode is black and white only (1 bit).
Grayscale will produce 256 levels of gray (8 bits). Color mode allows for over
16 million different colors produced from 24 bits of color information.
-.TP
+.TP
.B \-\-resolution
-selects the resolution for a scan. The horizontal and vertical resolutions are set
+selects the resolution for a scan. The horizontal and vertical resolutions are set
by the value of this option. The scanner is capable of the following resolutions for the specified option value:
-.PP
+.PP
.RS
.ft CR
-.nf
- Value Hor. Resolution Vert. Resolution
+.nf
+ Value Hor. Resolution Vert. Resolution
\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
75 75dpi 75dpi
- 150 150dpi 150dpi
- 300 300dpi 300dpi
- 600 600dpi 600dpi
+ 150 150dpi 150dpi
+ 300 300dpi 300dpi
+ 600 600dpi 600dpi
1200 600dpi 1200dpi (only for X11xx models with 'B2' sensor)
-.fi
+.fi
.ft R
.RE
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 75 dpi
-and the scan area and the scan mode are as specified through their options,
+and the scan area and the scan mode are as specified through their options,
or the default if not specified. The default value for preview mode is "no".
-.TP
+.TP
.B \-\-threshold
selects the minimum-brightness to get a white point. The threshold is only used with Lineart mode scans.
-It is specified as a percentage in the range 0..100% (in steps of 1).
+It is specified as a percentage in the range 0..100% (in steps of 1).
The default value of the threshold option is 50.
@@ -96,17 +96,17 @@ The configuration file @CONFIGDIR@/lexmark.conf contains only the usb device id
.SH "FILES"
-.TP
+.TP
.I @LIBDIR@/libsane\-lexmark.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-lexmark.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_DEBUG_LEXMARK
.B SANE_DEBUG_LEXMARK_LOW
If the library was compiled with debug support enabled, this
@@ -125,7 +125,7 @@ The data compression isn't supported for the X1200 series on USB 1.1,
leading to slow scans.
.SH "BUGS"
-.br
+.br
No bugs currently known.
@@ -135,16 +135,16 @@ sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
.SH "AUTHOR"
-.TP
+.TP
The backend was originally written by Fred Odendaal.
.I http://ca.geocities.com/freshshelf@rogers.com/
-.TP
+.TP
The new version is currently developed by St\['e]phane Voltz.
.I http://stef.dev.free.fr/sane/lexmark
.TP
X74 support was written by Torsten Houwaart (<ToHo@gmx.de>)
.SH "CREDITS"
-.TP
+.TP
Many thanks go to:
Julien Furgerot who lend me a Dell A920.
Robert Price, Dani Ele and Dalai Felinto for the time they spent recording
diff --git a/doc/sane-ma1509.man b/doc/sane-ma1509.man
index bdd20f7..2677fcd 100644
--- a/doc/sane-ma1509.man
+++ b/doc/sane-ma1509.man
@@ -13,7 +13,7 @@ also work.
This backend is ALPHA software. Be careful and remove the power plug
immediately if your hear unusual noises.
.PP
-More details can be found on the ma1509 backend homepage
+More details can be found on the ma1509 backend homepage
.IR http://www.meier\-geinitz.de/sane/ma1509\-backend/ .
.PP
Other Mustek USB scanners are supported by the gt68xx, mustek_usb and the
@@ -25,7 +25,7 @@ and
for details.
.PP
This backend can only work with scanners that are already detected by the
-operating system. See
+operating system. See
.BR sane\-usb (5)
for details.
.PP
@@ -59,20 +59,20 @@ file is a list of options and device names that correspond to Mustek BearPaw
1200F scanners. Empty lines and lines starting with a hash mark (#) are
ignored.
.PP
-Instead of using the device name, the scanner can be autodetected by
+Instead of using the device name, the scanner can be autodetected by
.B "usb vendor_id product_id"
statements which are already included into
.IR ma1509.conf .
This is only supported with Linux 2.4.8 and higher and all systems that
support libsub. "vendor_id" and "product_id" are hexadecimal numbers that
identify the scanner. If this doesn't work, a device name must be placed in
-.I ma1509.conf
+.I ma1509.conf
as described above.
.PP
To set the time the lamp needs for warm-up, use
.B option
.B warmup-time
-in
+in
.IR ma1509.conf .
The time is given in seconds after the option. The default is 30 seconds.
.SH FILES
@@ -107,7 +107,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_MA1509
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
.SH "SEE ALSO"
.BR sane (7),
diff --git a/doc/sane-magicolor.man b/doc/sane-magicolor.man
index 1e6c0a5..17ef387 100644
--- a/doc/sane-magicolor.man
+++ b/doc/sane-magicolor.man
@@ -10,21 +10,21 @@ backend supports KONICA MINOLTA magicolor scanners connected via USB or LAN. Cur
The following scanner should work with this backend:
Device Details
-.br
+.br
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-.br
+.br
Vendor: KONICA MINOLTA
-.br
+.br
Model: magicolor 1690MF
.SH "CONFIGURATION"
-.PP
+.PP
This section describes the backend's configuration file entries. The file is located at:
-.IP
+.IP
.I @CONFIGDIR@/magicolor.conf
-.PP
+.PP
For a proper setup, at least one of the following entries are needed:
-.IP
+.IP
.I net autodiscovery
.br
.I net [IP ADDRESS] [DEVICE-ID]
@@ -34,22 +34,22 @@ For a proper setup, at least one of the following entries are needed:
.I usb [VENDOR-ID] [DEVICE-ID]
.SH "FILES"
-.TP
+.TP
.I @CONFIGDIR@/magicolor.conf
The backend configuration file
-.TP
+.TP
.I @LIBDIR@/libsane\-magicolor.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-magicolor.so
The shared library implementing this backend (present on systems that support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_CONFIG_DIR
This environment variable specifies the list of directories that may contain the configuration file. Under UNIX, the directories are separated by a colon (`:'), under OS/2, they are separated by a semi\-colon (`;'). If this variable is not set, the configuration file is searched in two default directories: first, the current working directory (".") and then in @CONFIGDIR@. If the value of the environment variable ends with the directory separator character, then the default directories are searched after the explicitly specified directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories "/tmp/config", ".", and "@CONFIGDIR@" being searched (in this order).
-.TP
+.TP
.B SANE_DEBUG_MAGICOLOR
If the library was compiled with debug support enabled, this environment variable controls the debug level for this backend. Higher debug levels increase the verbosity of the output.
@@ -59,14 +59,14 @@ To obtain debug messages from the backend, set this environment variable before
Example: SANE_DEBUG_MAGICOLOR=65 xscanimage
.SH "KNOWN BUGS AND RESTRICTIONS"
-.PP
+.PP
Large color scans may sometimes timeout due to unknown reasons (the scanner simply stops returning data)
-.PP
+.PP
Cancelling large scans may lock up the scanner.
.SH "SEE ALSO"
.BR sane (7),
-.br
+.br
.I http://wiki.kainhofer.com/hardware/magicolor_scan
.SH "AUTHOR"
-.PP
+.PP
Reinhold Kainhofer <reinhold@kainhofer.com>
diff --git a/doc/sane-matsushita.man b/doc/sane-matsushita.man
index 578421a..5bbf734 100644
--- a/doc/sane-matsushita.man
+++ b/doc/sane-matsushita.man
@@ -31,7 +31,7 @@ backend:
Other Panasonic high speed scanners may or may not work with that backend.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d matsushita
.RE
@@ -57,12 +57,12 @@ selects the number of pages to scan (one or until the tray is empty).
.TP
.B \-\-paper\-size A4|...|Legal|Letter [A4]
-options selects the area to scan. It adjust the
+options selects the area to scan. It adjust the
.B \-l \-t \-x \-y
options accordingly. It does not need to be the real size of the paper.
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters. It is possible to use
@@ -87,7 +87,7 @@ automatically sets brightness, contrast, white level, gamma, noise reduction and
option sets the tonal gradation for the halftone mode. Pattern downloading is not implemented by the backend.
.TP
.B \-\-autoseparation
-provides automatic separation of text and images.
+provides automatic separation of text and images.
.TP
.B \-\-white\-level
option indicate the source of the white base.
diff --git a/doc/sane-microtek.man b/doc/sane-microtek.man
index 84047dc..d3bf21c 100644
--- a/doc/sane-microtek.man
+++ b/doc/sane-microtek.man
@@ -46,7 +46,7 @@ port models may work (under Linux), if they use a parport->scsi chip,
and if you can find a scsi->parport driver. This is known to be the
case for the Color PageWiz.
.PP
-The driver does
+The driver does
.B not
support the newest Microtek scanners, such as the V330 and V660, which use
a new and very different SCSI-II command set. For those, try the alternate
@@ -144,7 +144,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.TP
.B SANE_DEBUG_MICROTEK
If the library was compiled with debugging support enabled, this
-environment variable controls the debug level for this backend.
+environment variable controls the debug level for this backend.
A value of 128 requests maximally copious debug output; smaller
levels reduce verbosity.
@@ -169,7 +169,7 @@ i.e. don't complain about these --- but if brightness and/or contrast
.B do
work for you, please tell me.
.PP
-If your scanner locks up, try setting the
+If your scanner locks up, try setting the
.I norealcal
or
.I noprecal
@@ -188,7 +188,7 @@ setenv SANE_DEBUG_MICROTEK 128
.RE
.PP
More general comments, suggestions, and inquiries about frontends
-or SANE should go to
-.BR sane\-devel@lists.alioth.debian.org ,
+or SANE should go to
+.BR sane\-devel@alioth-lists.debian.net ,
the SANE Developers mailing list. Have a look at
http://www.sane\-project.org/mailing\-lists.html concerning subscription to sane\-devel.
diff --git a/doc/sane-microtek2.man b/doc/sane-microtek2.man
index b0e359b..cc4f6f4 100644
--- a/doc/sane-microtek2.man
+++ b/doc/sane-microtek2.man
@@ -311,8 +311,3 @@ sane\-scsi(5), sane(7)
Bernd Schroeder (not active anymore)
.br
Karsten Festag karsten.festag@gmx.de
-
-
-
-
-
diff --git a/doc/sane-mustek.man b/doc/sane-mustek.man
index 536466f..f06d9c1 100644
--- a/doc/sane-mustek.man
+++ b/doc/sane-mustek.man
@@ -15,7 +15,7 @@ Paragon MFS-6000CX
.br
Paragon MFS-12000CX
.br
-Paragon MFC-600S, 600 II CD, ScanMagic 600 II SP
+Paragon MFC-600S, 600 II CD, ScanMagic 600 II SP
.br
Paragon MFC-800S, 800 II SP
.br
@@ -37,7 +37,7 @@ Paragon 1200 SP Pro
.br
Paragon 1200 A3 Pro
.br
-Paragon 600 II EP
+Paragon 600 II EP
.br
Paragon 600 II N
.br
@@ -53,7 +53,7 @@ Primax Compact 4800 SCSI
.br
.RE
.PP
-More details can be found on the Mustek SCSI backend homepage
+More details can be found on the Mustek SCSI backend homepage
.IR http://www.meier\-geinitz.de/sane/mustek\-backend/ .
.PP
Don't mix up MFS (Paragon), Pro and ScanExpress models! They're
@@ -92,7 +92,7 @@ If you own a Mustek (or Trust) scanner other than the ones listed
above that works with this backend, please let us know by sending the
scanner's exact model name (look at the front and back of the scanner)
and a debug output to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
You can get the debug output by setting the environment variable
.B SANE_DEBUG_MUSTEK
to 5 and showing the list of available scanners with scanimage \-L. Please
@@ -112,17 +112,17 @@ Where
.I special
is either the path-name for the special device that corresponds to a
SCSI scanner or the port number at which the parallel port scanners can
-be found (see section
+be found (see section
.B "PARALLEL PORT SCANNERS"
below). For SCSI scanners, the special device name must be a generic SCSI
device or a symlink to such a device. The program
-.I sane\-find\-scanner
+.I sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name
could be
.I /dev/sg0
or
.IR /dev/sg3 ,
-for example. See
+for example. See
.BR sane\-scsi (5)
for details.
.SH CONFIGURATION
@@ -130,7 +130,7 @@ The contents of the
.I mustek.conf
file is a list of options and device names that correspond to Mustek
scanners. Empty lines and lines starting with a hash mark (#) are
-ignored. See
+ignored. See
.BR sane\-scsi (5)
on details of what constitutes a valid device name.
.PP
@@ -279,7 +279,7 @@ for driver- and platform-specific information.
The ScanExpress models have sometimes trouble with high resolution
color mode. If you encounter sporadic corrupted images (parts duplicated
or shifted horizontally) kill all other applications before scanning
-and (if sufficient memory is available) disable swapping.
+and (if sufficient memory is available) disable swapping.
.PP
Details on how to get the Mustek SCSI adapters and other cards running can be
found at
@@ -306,12 +306,12 @@ only one number on a single line. Example:
.RE
.PP
Note that for these scanners usually root privileges are required to access the
-I/O ports. Thus, either make frontends such as
+I/O ports. Thus, either make frontends such as
.BR scanimage (1)
-and
+and
.BR xscanimage (1)
setuid root (generally not recommended for safety reasons) or, alternatively,
-access this backend through the network daemon
+access this backend through the network daemon
.BR saned (8).
.PP
If the Mustek backend blocks while sending the inquiry command to the scanner,
@@ -360,7 +360,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_MUSTEK
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
.ft CR
.nf
@@ -374,15 +374,15 @@ Value Description
.fi
.ft R
-Example:
+Example:
export SANE_DEBUG_MUSTEK=4
.SH "SEE ALSO"
.BR sane (7),
.BR sane\-find\-scanner (1),
.BR sane\-scsi (5),
-.BR sane\-mustek_usb (5),
-.BR sane\-gt68xx (5),
+.BR sane\-mustek_usb (5),
+.BR sane\-gt68xx (5),
.BR sane\-plustek (5),
.BR sane\-mustek_pp (5)
.br
@@ -396,7 +396,7 @@ Henning Meier-Geinitz, James Perry (600 II EP).
.SH BUGS
Scanning with the SCSI adapters supplied by Mustek is very slow at
-high resolutions and wide scan areas.
+high resolutions and wide scan areas.
.PP
Some scanners (e.g. Paragon 1200 A3 + Pro, SE A3) need more testing.
.PP
diff --git a/doc/sane-mustek_pp.man b/doc/sane-mustek_pp.man
index 253759d..acc2f9b 100644
--- a/doc/sane-mustek_pp.man
+++ b/doc/sane-mustek_pp.man
@@ -18,10 +18,10 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to Mustek parallel port flatbed scanners and OEM versions.
-There are 2 classes of Mustek parallel port scanners: regular
+There are 2 classes of Mustek parallel port scanners: regular
.B CCD
-(cold cathode device) scanners and
-.B CIS
+(cold cathode device) scanners and
+.B CIS
(contact image sensor) scanners.
.P
The current version of this backend supports both CCD type scanners and
@@ -29,7 +29,7 @@ CIS type scanners.
.P
The following scanners might work with this backend:
-.SS "CCD scanners"
+.SS "CCD scanners"
.EX
Model: ASIC ID: CCD Type: works:
@@ -56,25 +56,25 @@ Mustek 1200 CP+ 1015 yes
.EE
.EX
-OEM versions Original works
+OEM versions Original works
--------------------------------------------------
Medion/LifeTec/Tevion
MD/LT 9350/9351 1200 CP yes
MD/LT 9850/9851 1200 CP maybe (**)
MD/LT 9858 1200 CP probably
MD/LT 9890/9891 1200 CP yes
-Targa
+Targa
Funline TS12EP 1200 CP yes
Funline TS6EP 600 CP yes
Trust
Easy Connect 9600+ 600 CP yes
-Cybercom
+Cybercom
9352 1200 CP yes (***)
.EE
-.HP
+.HP
(*) Calibration problems existed with earlier version of
this driver. They seem to be solved now.
-.HP
+.HP
(**) Problems have been reported in the past for the
MD/LT9850 type (striped scans, head moving in wrong
direction at some resolutions). It is not known whether
@@ -82,7 +82,7 @@ the current version of the driver still has these problems.
.PP
.B IF YOU HEAR LOUD CLICKING NOISES, IMMEDIATELY UNPLUG THE SCANNER !
(This holds for any type of scanner).
-.HP
+.HP
(***) Possibly, the engine_delay parameter has to be set to 1 ms
for accurate engine movements.
.PP
@@ -90,15 +90,15 @@ Please note that this backend is still under construction. Certain models
are currently not supported and some may never be because the communication
protocol is still unknown (eg., SE 12000 P).
.PP
-Some scanners work faster when
+Some scanners work faster when
.B EPP/ECP
is enabled in the BIOS. EPP mode however may lead to hard-locks on some Linux
systems. If that is the case for you, you can either disable ECP/EPP in your
BIOS or disable it in the backend itself (see GLOBAL OPTIONS).
.PP
Note that the backend needs to run as root or has to have appropriate access
-rights to /dev/parport* if libieee1284 support is compiled in. To allow user
-access to the scanner run the backend through the network interface (See
+rights to /dev/parport* if libieee1284 support is compiled in. To allow user
+access to the scanner run the backend through the network interface (See
saned(8) and sane\-net(5)). Note also that the backend
.I does not
support
@@ -112,7 +112,7 @@ to enable the backend explicitly in your dll.conf, just remove the hash mark
in the line "mustek_pp".
.SH "DEVICE DEFINITION"
-This backend allows multiple devices being defined and configured via the
+This backend allows multiple devices being defined and configured via the
.B mustek_pp.conf
file (even simultaneously, provided that they are connected to different
parallel ports). Please make sure to edit this file
@@ -134,23 +134,23 @@ for instance "LifeTec 9350".
.B <port name>
is the name of the parallel port to which the device is connected. In case
libieee1284 is used for communication with the port
-.I (default
-.IR setup) ,
-valid port names are
-.BR parport0 ,
-.BR parport1 ,
+.I (default
+.IR setup) ,
+valid port names are
+.BR parport0 ,
+.BR parport1 ,
and
.BR parport2 .
.PP
In case the backend is configured for raw IO
-.I (old
+.I (old
.IR setup) ,
port addresses have to be used instead of port names:
.BR 0x378 ,
-.BR 0x278 ,
+.BR 0x278 ,
or
.BR 0x3BC .
-The mapping of parallel ports (lp0, lp1, and lp2) to these addresses
+The mapping of parallel ports (lp0, lp1, and lp2) to these addresses
can be different for different Linux kernel versions. For instance,
if you are using a Kernel 2.2.x or better and you have only one
parallel port, this port is named lp0 regardless of the base address. However,
@@ -159,7 +159,7 @@ port your scanner is connected to, have a look at your /etc/conf.modules,
/etc/modules.conf and/or /proc/ioports.
.PP
If you are unsure which port to use, you can use the magic value
-.BR *
+.BR *
to probe for your scanner.
.PP
.HP
@@ -169,7 +169,7 @@ is the driver to use for this device. Currently available drivers are:
.BR cis600 " : for 600 CP, 96 CP & OEM versions"
.br
.BR cis1200 " : for 1200 CP & OEM versions"
-.br
+.br
.BR cis1200+ " : for 1200 CP+ & OEM versions"
.br
.BR ccd300 " : for 600 IIIE P & OEM version"
@@ -187,12 +187,12 @@ cover only half of the width of the scan area (also not dangerous).
.PP
If unsure about the exact model of your OEM version, check the optical
resolution in the manual or on the box: the 600CP has a maximum optical
-resolution of 300x600 DPI, whereas the 1200CP and 1200CP+ have a maximum
-optical resolution of 600x1200 DPI.
+resolution of 300x600 DPI, whereas the 1200CP and 1200CP+ have a maximum
+optical resolution of 600x1200 DPI.
.PP
Examples:
.PP
-.RS
+.RS
scanner "LifeTec 9350" 0x378 cis1200
.PP
scanner Mustek_600CP 0x378 cis600
@@ -201,7 +201,7 @@ scanner Mustek_600IIIEP * ccd300
.RE
If in doubt which port you have to use, or whether your scanner is
-detected at all, you can use
+detected at all, you can use
.B sane\-find\-scanner \-p
to probe all configured ports.
@@ -209,7 +209,7 @@ to probe all configured ports.
.PP
The contents of the
.B mustek_pp.conf
-file is a list of device definitions and device options that correspond to
+file is a list of device definitions and device options that correspond to
Mustek scanners. Empty lines and lines starting with a hash mark (#) are
ignored. Options have the following format:
.PP
@@ -220,19 +220,19 @@ ignored. Options have the following format:
Depending on the nature of the option, a value may or may not be present.
Options always apply to the scanner definition that precedes them. There
are no global options. Options are also driver-specific: not all drivers
-support all possible options.
+support all possible options.
.SS Common options
.TP
.B bw <value>
Black/white discrimination value to be used during lineart scanning. Pixel
values below this value are assumed to be black, values above are
-assumed to be white.
+assumed to be white.
.br
Default value: 127
-.br
+.br
Minimum: 0
-.br
+.br
Maximum: 255
.sp
Example: option bw 150
@@ -240,7 +240,7 @@ Example: option bw 150
.SS CIS driver options
.TP
.B top_adjust <value>
-Vertical adjustment of the origin, expressed in millimeter (floating point).
+Vertical adjustment of the origin, expressed in millimeter (floating point).
This option can be used to calibrate the position of the origin, within
certain limits. Note that CIS scanners are probably temperature sensitive, and
that a certain inaccuracy may be hard to avoid. Differences in offset between
@@ -261,7 +261,7 @@ scan does not start at the origin, the driver will try to move the scanhead
to the start of the scan area at the fastest possible speed. On some models,
this may not work, resulting in large inaccuracies (up to centimeters).
By setting this option, the driver is forced to use normal speed during
-skipping, which can circumvent the accuracy problems. Currently, there are
+skipping, which can circumvent the accuracy problems. Currently, there are
no models for which these inaccuracy problems are known to occur.
.sp
By default, fast skipping is used.
@@ -454,13 +454,13 @@ For additional information on the CIS driver, see
.SH AUTHORS
.nf
-Jochen Eisinger <jochen at penguin\-breeder dot org>
+Jochen Eisinger <jochen at penguin\-breeder dot org>
Eddy De Greef <eddy_de_greef at scarlet dot be>
.fi
.SH BUGS
-Too many... please send bug reports to
-.I sane\-devel@lists.alioth.debian.org
+Too many... please send bug reports to
+.I sane\-devel@alioth-lists.debian.net
(note that you have to subscribe first to the list before you can send
emails... see http://www.sane\-project.org/mailing\-lists.html)
diff --git a/doc/sane-mustek_usb.man b/doc/sane-mustek_usb.man
index a934e8a..a70ad5e 100644
--- a/doc/sane-mustek_usb.man
+++ b/doc/sane-mustek_usb.man
@@ -23,11 +23,11 @@ Trust Compact Scan USB 19200
.br
.RE
.PP
-More details can be found on the Mustek USB backend homepage
+More details can be found on the Mustek USB backend homepage
.IR http://www.meier\-geinitz.de/sane/mustek_usb\-backend/ .
.PP
The Mustek BearPaw 1200 and 2400 scanners are supported by the plustek
-backend. See
+backend. See
.BR sane\-plustek (5)
for details. The Mustek BearPaw 1200F is supported by the MA-1509 backend. See
.BR sane\-ma1509 (5)
@@ -36,7 +36,7 @@ see
.BR sane\-gt68xx (5).
.PP
This backend can only work with scanners that are already detected by the
-operating system. See
+operating system. See
.BR sane\-usb (5)
for details.
.PP
@@ -70,7 +70,7 @@ The contents of the
.I mustek_usb.conf
file is a list of options and device names that correspond to Mustek
USB scanners. Empty lines and lines starting with a hash mark (#) are
-ignored. If a device name is placed in
+ignored. If a device name is placed in
.IR mustek_usb.conf ,
it must be followed by a line containing the keyword
.B option
@@ -81,7 +81,7 @@ and an option specifying the scanner type. The following options can be used:
.BR 1200ub .
For the Trust Compact Scan USB 19200 use `option 1200ub'.
.PP
-Instead of using the device name, the scanner can be autodetected by
+Instead of using the device name, the scanner can be autodetected by
.B "usb vendor_id product_id"
statements which are already included into
.IR mustek_usb.conf .
@@ -89,7 +89,7 @@ This is only supported with Linux 2.4.8 and higher and all systems that
support libsub. "vendor_id" and "product_id" are hexadecimal numbers that
identify the scanner. If this doesn't work, a device name and the option
specifying the scanner type must be placed in
-.I mustek_usb.conf
+.I mustek_usb.conf
as described above.
.PP
The global
@@ -114,7 +114,7 @@ option 600cu
The first line is ignored. The second line sets the buffer size to a maximum of
1024 bytes. The third line tries to autodetect a scanner with vendor id 0x055f
and product id 0x0001 (Mustek 1200 CU). The fourth line tells the backend to
-attach to
+attach to
.I /dev/usb/scanner0
and the fifth line specifies that
.I /dev/usb/scanner0
@@ -151,7 +151,7 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_MUSTEK_USB
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
.ft CR
.nf
@@ -167,7 +167,7 @@ Value Description
.fi
.ft R
-Example:
+Example:
export SANE_DEBUG_MUSTEK_USB=4
.SH "SEE ALSO"
diff --git a/doc/sane-mustek_usb2.man b/doc/sane-mustek_usb2.man
index b134afa..dab26dc 100644
--- a/doc/sane-mustek_usb2.man
+++ b/doc/sane-mustek_usb2.man
@@ -9,7 +9,7 @@ library implements a SANE (Scanner Access Now Easy) backend that provides
access to USB flatbed scanners based on the Service & Quality SQ113 chipset. At
the moment, only the Mustek BearPaw 2448 TA Pro is supported. It's planned to add
support for other scanners that are based on the SQ113 and maybe SQ11 chip. For
-more details, see the mustek_usb2 backend homepage:
+more details, see the mustek_usb2 backend homepage:
.IR http://www.meier\-geinitz.de/sane/mustek_usb2\-backend/ .
.PP
This is BETA software. Especially if you test new or untested scanners, keep
@@ -44,9 +44,9 @@ support dynamic loading).
.B SANE_DEBUG_MUSTEK_USB2
If the library was compiled with debug support enabled, this environment
variable controls the debug level for this backend. Higher debug levels
-increase the verbosity of the output.
+increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_MUSTEK_USB2=4
.SH "SEE ALSO"
diff --git a/doc/sane-nec.man b/doc/sane-nec.man
index 0fd895e..e36ebe9 100644
--- a/doc/sane-nec.man
+++ b/doc/sane-nec.man
@@ -9,7 +9,7 @@ library implements a SANE (Scanner Access Now Easy) backend that
provides access to NEC SCSI scanners. This backend should be
considered
.B alpha-quality
-software! In the current state it is known to work with PC-IN500/4C
+software! In the current state it is known to work with PC-IN500/4C
scanners. Another MultiReader scanner series is not supported. PC-IN
500/4C and MultiReader scanner are only sold in Japan.(except Multi
Reader PetiScan.)
diff --git a/doc/sane-p5.man b/doc/sane-p5.man
index 860a019..1c21f12 100644
--- a/doc/sane-p5.man
+++ b/doc/sane-p5.man
@@ -7,28 +7,28 @@ The
.B sane\-p5
library implements a SANE (Scanner Access Now Easy) backend that
provides access to the Primax PagePartner parallel port sheet fed scanner.
-.PP
+.PP
This backend handles 100, 150, 200, 300 and 600 dpi scan resolutions,
in color and gray modes. The 600 dpi is actually 300x600 with lines
enlarged to match the vertical resolution.
-.PP
+.PP
.B EPP/ECP MODES ONLY
-The current version of the backend uses only EPP or ECP mode to communicate
-with the scanner. It is
-recommended that you set your parallel port to EPP in BIOS with the current
+The current version of the backend uses only EPP or ECP mode to communicate
+with the scanner. It is
+recommended that you set your parallel port to EPP in BIOS with the current
version of this backend. ECPEPP will only
work if you use a 2.4 or 2.6 kernel with ppdev character device support.
-.PP
+.PP
.SH "DEVICE NAMES"
This backend expects device names of the form:
-.PP
+.PP
.RS
.I port value
.RE
-.PP
+.PP
Where
-\fBvalue\fR is :
+\fBvalue\fR is :
.RS
.TP
@@ -40,43 +40,43 @@ them for scanner
uses linux ppdev device, depending on the
number of available parallel port, you
have to use /dev/parport1, /dev/parport2, ...
-.PP
+.PP
.RE
You can rename any device using the
-.PP
+.PP
.RS
.br
.I option name my_name
.RE
-.PP
-option. This option apply to the last port option.
+.PP
+option. This option apply to the last port option.
.SH "CONFIGURATION"
Please make sure to edit dll.conf
.B before
you use the backend, since this backend isn't enabled by default.
-.PP
+.PP
-.PP
+.PP
.SH "FILES"
-.TP
+.TP
.I @CONFIGDIR@/p5.conf
The backend configuration file (see also description of
.B SANE_CONFIG_DIR
below).
-.TP
+.TP
.I @LIBDIR@/libsane\-p5.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-p5.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_CONFIG_DIR
This environment variable specifies the list of directories that may
contain the configuration file. Under UNIX, the directories are
@@ -90,14 +90,14 @@ directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories "tmp/config", ".", and
"@CONFIGDIR@" being searched (in this order).
-.TP
+.TP
.B SANE_DEBUG_P5
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. E.g.,
a value of 255 requests all debug output to be printed. Smaller
levels reduce verbosity.
-.PP
+.PP
.RS
.ft CR
.nf
@@ -108,23 +108,23 @@ level debug output
2 warnings & minor errors
4 information messages
8 start/stop of functions
- 16 tracing messages
+ 16 tracing messages
32 I/O functions
64 I/O functions with traces
128 scanned/calibration data
.fi
.ft R
.RE
-.PP
-.TP
+.PP
+.TP
-.PP
+.PP
.RS
.ft CR
.nf
-.PP
-
-.PP
+.PP
+
+.PP
.SH "SEE ALSO"
sane(7), sane\-net(5), saned(8)
@@ -136,25 +136,26 @@ Support for the Prima PagePartner has been made possible thank to an hardware do
by S\['e]bastien Lange.
.SH "BUG REPORTS"
-If something doesn't work mail sane-devel@lists.alioth.debian.org or use the bug
-tracker at https://alioth.debian.org/tracker/?atid=410366&group_id=30186 .
-Please give as much information as you can.
+If something doesn't work mail sane-devel@alioth-lists.debian.net or submit an
+issue via https://gitlab.com/sane-project/backends/issues/new with a label of
+backend/p5.
+Please give as much information as you can.
-.TP
+.TP
.I SANE version
run "scanimage \-V" to determine this
-.TP
+.TP
.I the backend version and your scanner hardware
run "SANE_DEBUG_P5=255 scanimage \-L 2>log" as root. If you don't get any output
from the p5 backend, make sure a line "p5" is included into
your @CONFIGDIR@/dll.conf.
If your scanner isn't detected, make sure you've defined the right port address, or the
-correct device
+correct device
in your p5.conf.
-.TP
+.TP
.I the name of your scanner/vendor
also a worthy information. Please also include the optical resolution and lamp type of your scanner, both can be found in the manual of your scanner.
-.TP
+.TP
.I any further comments
if you have comments about the documentation (what could be done better), or you
think I should know something, please include it.
diff --git a/doc/sane-pint.man b/doc/sane-pint.man
index 7e863a5..1a59608 100644
--- a/doc/sane-pint.man
+++ b/doc/sane-pint.man
@@ -21,7 +21,7 @@ successfully.
If have successfully used the PINT driver with your scanner, but it
does not work using this SANE backend, please let us know. To do
this, send a mail with the relevant information for your scanner to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
Have a look at http://www.sane\-project.org/mailing\-lists.html concerning subscription
to sane\-devel.
diff --git a/doc/sane-pixma.man b/doc/sane-pixma.man
index 1058e92..1ceb6d6 100644
--- a/doc/sane-pixma.man
+++ b/doc/sane-pixma.man
@@ -1,4 +1,4 @@
-.TH "sane\-pixma" "5" "20 May 2017" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.TH "sane\-pixma" "5" "29 Jul 2019" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX sane\-pixma
.SH NAME
sane\-pixma \- SANE backend for Canon Multi-Function Printers and CanoScan Scanners
@@ -8,13 +8,17 @@ The
library implements a SANE (Scanner Access Now Easy) backend that provides
access to Canon PIXMA / i-SENSYS / imageCLASS / imageRUNNER multi-function
devices (All-in-one printers) and the Canon CanoScan Flatbed/TPU scanners.
-The backend implements both the USB interface and network interface
-(using Canon's BJNP and MFNP protocols). The network interface supports scanners
+The backend implements both the USB interface and network interface
+(using Canon's BJNP and MFNP protocols). The network interface supports scanners
over IPv4 as well as IPv6 (MFNP over IPv6 is untested).
.PP
Currently, the following models work with this backend:
.PP
.RS
+PIXMA E510
+.br
+PIXMA G2000, G2100
+.br
PIXMA MG2100, MG2200, MG2400, MG2500, MG2900, MG3100, MG3200
.br
PIXMA MG3500, MG3600, MG4200, MG5100, MG5200, MG5300, MG5400
@@ -47,8 +51,12 @@ PIXMA MX410, MX420, MX470, MX510, MX520, MX530, MX700, MX720
.br
PIXMA MX850, MX860, MX870, MX882, MX885, MX890, MX920, MX7600
.br
+PIXMA TS3100, TS5000, TS6100, TS8000, TS8200
+.br
PIXUS MP10
.br
+imageCLASS MF634Cdw, MF733Cdw
+.br
imageCLASS MF3110, MF3240, MF4010, MF4018
.br
imageCLASS MF4120, MF4122, MF4140, MF4150
@@ -59,15 +67,19 @@ imageCLASS MF4410, MF4430, MF4570dw, MF4660, MF4690
.br
imageCLASS MF5730, MF5770, MF6550, MPC200, D420, D480, D530
.br
-i-SENSYS MF230, MF240, MF3010, MF4320d, MF4330d, MF4500, MF4700
+i-SENSYS MF210, MF230, MF240, MF620, MF730, MF731/733, MF3010
.br
-i-SENSYS MF4800, MF6100, MF8200C, MF8300
+i-SENSYS MF4320d, MF4330d, MF4500, MF4700, MF4800, MF6100
.br
-imageRUNNER 1020/1024/1025
+i-SENSYS MF8030, MF8200C, MF8300
+.br
+imageRUNNER 1020/1024/1025, 1133
.br
CanoScan 8800F, 9000F, 9000F Mark II
.br
-MAXIFY MB5000 (ADF is not working)
+CanoScan LiDE 300, 400
+.br
+MAXIFY MB2000, MB2100, MB2300, MB2700, MB5000
.RE
.PP
The following models are not well tested and/or the scanner sometimes hangs
@@ -77,13 +89,15 @@ and must be switched off and on.
PIXMA MP760, MP770, MP780, MP790
.RE
.PP
-The following models may use the same Pixma protocol as those listed
-above, but have not yet been reported to work (or not). They are declared
-in the backend so that they get recognized and activated.
+The following models may use the same Pixma protocol as those listed
+above, but have not yet been reported to work (or not). They are declared
+in the backend so that they get recognized and activated.
Feedback in the sane\-devel mailing list welcome.
.PP
.RS
-PIXMA E400, E460, E470, E480, E500, E510, E560, E600, E610
+PIXMA E400, E410, E460, E470, E480, E500, E560, E600, E610
+.br
+PIXMA E3100, E4200
.br
PIXMA MG3000, MG4100, MG6500, MG6600, MG6800, MG6900, MG8100
.br
@@ -91,26 +105,32 @@ PIXMA MP375R, MP493, MP495, MP740
.br
PIXMA MX320, MX390, MX430, MX450, MX490, MX710
.br
-PIXMA G3000
+PIXMA G3000, G3010, G4000, G4010
.br
-PIXMA TS9000, TS800, TS6000, TS5000
+PIXMA TR4500, TR7500, TR7530, TR8500, TR8530, TR8580, TR9530
.br
-PIXUS MP5
+PIXMA TS5100, TS6000, TS6130, TS6180, TS6200, TS6230, TS6280
.br
-imageCLASS MF810/820, MF5630, MF5650, MF5750, MF8030, MF8170c
+PIXMA TS8100, TS8130, TS8180, TS8230, TS8280, TS9000, TS9100
.br
-imageCLASS MPC190
+PIXMA TS9180, TS9500, TS9580
.br
-imageRUNNER 1133
+PIXUS MP5, XK50, XK70, XK80
.br
-i-SENSYS MF210, MF220, MF5880dn, MF5900, MF6680dn, MF8500C
+imageCLASS MF810/820, MF5630, MF5650, MF5750, MF8170c
.br
-MAXIFY MB2000, MB2300, MB5300
+imageCLASS MPC190, D550, D570
+.br
+i-SENSYS MF110, MF220, MF260, MF410, MF420, MF510, MF520, MF630
+.br
+i-SENSYS MF640, MF740, MF5880dn, MF5900, MF6680dn, MF8500C
+.br
+MAXIFY MB5100, MB5300, MB5400
.RE
.PP
\#The following models may use partly the same Pixma protocol as other devices
-\#listed above, but may still need some work. They are declared in the backend
-\#as experimental. Snoop logs are required to further investigate, please contact
+\#listed above, but may still need some work. They are declared in the backend
+\#as experimental. Snoop logs are required to further investigate, please contact
\#the sane\-devel mailing list.
\#.PP
\#.RS
@@ -133,7 +153,7 @@ The backend supports:
.PP
The device name for USB devices is in the form pixma:xxxxyyyy_zzzzz
where x, y and z are vendor ID, product ID and serial number respectively.
-.PP
+.PP
Example: pixma:04A91709_123456 is a MP150.
.PP
Device names for BJNP/MFNP devices is in the form pixma:aaaa_bbbbb
@@ -141,12 +161,12 @@ where aaaa is the scanners model and bbbb is the hostname or ip-adress.
.PP
Example: pixma:MF4800_192.168.1.45 is a MF4800 Series multi-function peripheral.
.PP
-This backend, based on cloning original Canon drivers protocols, is in
+This backend, based on cloning original Canon drivers protocols, is in
a production stage. Designed has been carried out without any applicable
-manufacturer documentation, probably never available. However, we have tested
-it as well as we could, but it may not work in all situations. You will find
-an up-to-date status at the project homepage. (See below).
-Users feedback is essential to help improve features and performances.
+manufacturer documentation, probably never available. However, we have tested
+it as well as we could, but it may not work in all situations. You will find
+an up-to-date status at the project homepage. (See below).
+Users feedback is essential to help improve features and performances.
.SH OPTIONS
Besides "well-known" options (e.g. resolution, mode etc.) pixma backend also
provides the following options, i.e. the options might change in the future.
@@ -178,20 +198,20 @@ the button and so on. When you finished, press the gray-scan button. (For
MP150 you have to stop the frontend by pressing Ctrl-C for example.)
.TP
.I button\-update (deprecated)
-(write only) In the past this option was required to be set to force
+(write only) In the past this option was required to be set to force
reading of the button status for
.I button\-1
and
.I button\-2.
-The
+The
.B sane\-pixma
-no longer requires this option to be used: if no fresh data is available, it
-will be now requested automatically from the scanner. This option is left for
+no longer requires this option to be used: if no fresh data is available, it
+will be now requested automatically from the scanner. This option is left for
backward compatibility reasons.
.TP
.I button\-1 button\-2
(read only) These options will return the value of the respective buttons.
-value 0 means that the button was not pressed, 1 is returned when the button
+value 0 means that the button was not pressed, 1 is returned when the button
was pressed. Some scanners with more than two buttons send the button number
as target.
.TP
@@ -225,52 +245,52 @@ support dynamic loading).
.I @CONFIGDIR@/pixma.conf
The backend configuration file (see also description of
.B SANE_CONFIG_DIR
-below). The file contains an optional list of networked scanners. Normally
-only scanners that cannot be auto-detected because they are on a different
-subnet shall be listed here. If your OS does not allow enumeration of
-interfaces (i.e. it does not support the getifaddrs() function) you also may need
+below). The file contains an optional list of networked scanners. Normally
+only scanners that cannot be auto-detected because they are on a different
+subnet shall be listed here. If your OS does not allow enumeration of
+interfaces (i.e. it does not support the getifaddrs() function) you also may need
to add your scanner here as well.
.RS
.PP
-.I Scanners shall be listed in the configuraton file as follows:
+.I Scanners shall be listed in the configuration file as follows:
.PP
.RS
.I <method>://<host>[:port][/timeout=<value>]
.RE
.PP
where method indicates the protocol used (bjnp is used for inkjet multi-functionals
-and mfnp is used for laser multi-functionals).
+and mfnp is used for laser multi-functionals).
.PP
-host is the hostname or IP address of the scanner, e.g. bjnp://10.0.1.4
-for IPv4, bjnp://[2001:888:118e:18e2:21e:8fff:fe36:b64a] for a literal
+host is the hostname or IP address of the scanner, e.g. bjnp://10.0.1.4
+for IPv4, bjnp://[2001:888:118e:18e2:21e:8fff:fe36:b64a] for a literal
IPv6-address or bjnp://myscanner.mydomain.org for a hostname.
.PP
The port number is optional and in normally implied by the method.
Port 8610 is the standard port for mfnp, 8612 for bjnp.
.PP
-A scanner specific timeout value for the network protocol can be set using the
+A scanner specific timeout value for the network protocol can be set using the
bjnp-timeout parameter. The value is in ms.
.PP
Define scanners each on a new line.
.PP
-More globally applicable tinmeouts can be set using the bjnp-timeout parameter as folllows:
+More globally applicable timeouts can be set using the bjnp-timeout parameter as follows:
.PP
.RS
.I bjnp-timeout=<value>
.RE
.PP
A timeout defined using bjnp-timeout will apply to the following scanner definitions
-in the file. If required the bjnp-timeout setting
+in the file. If required the bjnp-timeout setting
can be defined multiple times, where each settng will apply only to the scanners that
follow the setting. The last setting is used for the auto discovered scanners.
-If not explicitely set, the default 1000ms setting will apply.
+If not explicitly set, the default 1000ms setting will apply.
.PP
Setting timeouts should only be required in exceptional cases.
.PP
.SH USB SUPPORT
USB scanners will be auto-detected and require no configuration.
.SH NETWORKING SUPPORT
-The pixma backend supports network scanners using the so called Canon BJNP
+The pixma backend supports network scanners using the so called Canon BJNP
protocol and MFNP protocol. Both IPv4 and IPv6 are supported, but IPv6 is as
yet untested with MFNP. Please report your results on the mailing list.
.PP
@@ -278,28 +298,28 @@ Configuration is normally not required.
The pixma backend will auto-detect your scanner if it is within
the same subnet as your computer if your OS does support this.
.PP
-If your scanner can not be auto-detected, you can add it to the pixma
+If your scanner can not be auto-detected, you can add it to the pixma
configuration file (see above).
.SH FIREWALLING FOR NETWORKED SCANNERS
-The sane pixma backend communicates with port 8610 for MFNP or port 8612
+The sane pixma backend communicates with port 8610 for MFNP or port 8612
for BJNP on the scanner. So
-you will have to allow outgoing traffic TO port 8610 or 8612 on the
+you will have to allow outgoing traffic TO port 8610 or 8612 on the
common subnet for scanning.
.PP
Scanner detection is slightly more complicated. The pixma backend sends
-a broadcast on all direct connected subnets it can find (provided your OS
-allows for enumeration of all netowrk interfaces). The broadcast is sent FROM
+a broadcast on all direct connected subnets it can find (provided your OS
+allows for enumeration of all netowrk interfaces). The broadcast is sent FROM
port 8612 TO port 8610 or 8612 on the broadcast address of each interface.
The outgoing packets will be allowed by the rule described above.
.PP
Responses from the scanner are sent back to the computer TO port 8612.
Connection tracking however does not see a match as the response does not come
from the broadcast address but from the scanners own address.
-For automatic detection of your scanner, you will therefore have to allow
+For automatic detection of your scanner, you will therefore have to allow
incoming packets TO port 8612 on your computer. This applies to both MFNP and
BJNP.
.PP
-So in short: open the firewall for all traffic from your computer to port
+So in short: open the firewall for all traffic from your computer to port
8610 (for MFNP) or 8612 (for BJNP)
AND to port 8612 (for both BJNP and MFNP) to your computer.
.PP
@@ -331,7 +351,7 @@ the verbosity and includes the information printed at the lower levels.
.TP
.B SANE_DEBUG_BJNP
If the library was compiled with debug support enabled, this environment
-variable controls the debug level for the
+variable controls the debug level for the
.B BJNP and MFNP
network protocols for this backend. Higher value increases
the verbosity and includes the information printed at the lower levels.
@@ -341,7 +361,7 @@ the verbosity and includes the information printed at the lower levels.
1 Print error and warning messages (recommended)
.br
2 Print high level function tracing information
-.br
+.br
3 Print more detailed protocol tracing information
.br
4 Print protocol headers
@@ -369,13 +389,11 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.SH "SEE ALSO"
.BR sane (7),
.BR sane\-dll (5),
-.I http://home.arcor.de/wittawat/pixma/,
-.I http://mp610.blogspot.com/
.PP
-In case of trouble with a recent Pixma model, try the latest code for
+In case of trouble with a recent Pixma model, try the latest code for
the pixma backend, available in the Sane git repository at:
.br
-.I http://git.debian.org/?p=sane/sane-backends.git
+.I https://gitlab.com/sane-project/backends.git
.PP
You can also post into the Sane-devel mailing list for support.
diff --git a/doc/sane-plustek.man b/doc/sane-plustek.man
index a6bb993..2df85b6 100644
--- a/doc/sane-plustek.man
+++ b/doc/sane-plustek.man
@@ -1,4 +1,4 @@
-.TH sane\-plustek 5 "13 Feb 2013" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.TH sane\-plustek 5 "03 Nov 2017" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX sane\-plustek
.SH NAME
sane\-plustek \- SANE backend for LM983[1/2/3] based
@@ -241,7 +241,7 @@ The Options:
option warmup t
.RS
.I t
-specifies the warmup period in seconds, if set to \-1, the
+specifies the warmup period in seconds, if set to \-1, the
automatic warmup function will be used
.RE
.PP
@@ -468,8 +468,6 @@ export SANE_DEBUG_PLUSTEK=10
.BR sane\-gt68xx (5),
.br
.I @DOCDIR@/plustek/Plustek-USB.changes
-.br
-.I http://www.gjaeger.de/scanner/plustek/
.SH "CONTACT AND BUG-REPORTS"
Please send any information and bug-reports to:
@@ -482,16 +480,12 @@ Mailing-List archive at:
.br
.B http://www.sane\-project.org/mailing\-lists.html
.PP
-or directly from the projects' homepage at:
-.br
-.B http://www.gjaeger.de/scanner/plustek/
-.PP
To obtain debug messages from the backend, please set the
environment-variable
.I SANE_DEBUG_PLUSTEK
-before calling your favorite scan-frontend (i.e. xscanimage).
+before calling your favorite scan-frontend (i.e. scanimage).
.br
-.B i.e.: export SANE_DEBUG_PLUSTEK=20 ; xscanimage
+.B i.e.: export SANE_DEBUG_PLUSTEK=20 ; scanimage
.PP
The value controls the verbosity of the backend. Please note, that
values greater than 24 force the backend to output raw data files,
@@ -505,13 +499,13 @@ For problem reports it should be enough the set the verbosity to
* The driver does not support these manic scalings up
to 16 times the physical resolution. The only scaling
is done on resolutions between the physical resolution
-of the CCD-/CIS-sensor and the stepper motor i.e. you
-have a 600x1200 dpi scanner and you are scanning using
-800dpi, so scaling is necessary, because the sensor only
-delivers 600dpi but the motor is capable to perform
+of the CCD-/CIS-sensor and the stepper motor i.e. you
+have a 600x1200 dpi scanner and you are scanning using
+800dpi, so scaling is necessary, because the sensor only
+delivers 600dpi but the motor is capable to perform
1200dpi steps.
.PP
-* Plusteks' model policy is somewhat inconsistent. They
+* Plusteks' model policy is somewhat inconsistent. They
sell technically different devices under the
same product name. Therefore it is possible that some
devices like the UT12 or U12 won't work \- please check
diff --git a/doc/sane-plustek_pp.man b/doc/sane-plustek_pp.man
index c01aba6..3d70971 100644
--- a/doc/sane-plustek_pp.man
+++ b/doc/sane-plustek_pp.man
@@ -13,7 +13,7 @@ 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 plustek_pp backend code \- see also section
.B "BUILDING THE KERNEL MODULE"
-for further information.
+for further information.
.SH "SUPPORTED DEVICES"
@@ -242,13 +242,13 @@ Within this directory, you should find a script called:
.br
.I MakeModule.sh
.br
-Now if your Linux kernelsources are installed correctly,
-it should be possible to build, install and load the
+Now if your Linux kernelsources are installed correctly,
+it should be possible to build, install and load the
module
.B pt_drv.
-.B Please note,
+.B Please note,
that the kernelsources need to be configured correctly.
-Refer to your distributions
+Refer to your distributions
manual on how this is done. As root user, try
.br
.I ./MakeModule.sh
@@ -257,7 +257,7 @@ 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
+.B Note: Installing and loading the can only be done as
superuser.
.PP
@@ -448,8 +448,6 @@ export SANE_DEBUG_PLUSTEK_PP=10
.BR sane (7),
.br
.I @DOCDIR@/plustek/Plustek\-PARPORT.changes
-.br
-.I http://www.gjaeger.de/scanner/plustek_pp/
.SH "CONTACT AND BUG-REPORTS"
Please send any information and bug-reports to:
@@ -462,10 +460,6 @@ Mailing-List archive at:
.br
.B http://www.sane\-project.org/mailing\-lists.html
.PP
-or directly from the projects' homepage at:
-.br
-.B http://www.gjaeger.de/scanner/plustek_pp/
-.PP
To obtain debug messages from the backend, please set the
environment-variable
.I SANE_DEBUG_PLUSTEK_PP
@@ -510,7 +504,7 @@ and without transparency unit.
* 30bit mode is currently not supported.
.PP
* On low end systems under heavy system load the
-driver may lose data, which can result in picture
+driver may lose data, which can result in picture
corruption or cause the sensor to hit the scan bed.
.PP
* The scanning speed on 600x1200 dpi models is slow.
diff --git a/doc/sane-ricoh.man b/doc/sane-ricoh.man
index 8cb38a2..1452e24 100644
--- a/doc/sane-ricoh.man
+++ b/doc/sane-ricoh.man
@@ -26,8 +26,8 @@ Where
.I special
is the path-name for the special device that corresponds to a
SCSI scanner. The special device name must be a generic SCSI device or a
-symlink to such a device. The program
-.IR sane\-find\-scanner
+symlink to such a device. The program
+.IR sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name
could be
.I /dev/sga
@@ -67,13 +67,12 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_RICOH
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_RICOH=4
.SH "SEE ALSO"
sane(7), sane\-scsi(5)
.SH AUTHOR
Feico W. Dillema
-
diff --git a/doc/sane-ricoh2.man b/doc/sane-ricoh2.man
new file mode 100644
index 0000000..86db7c6
--- /dev/null
+++ b/doc/sane-ricoh2.man
@@ -0,0 +1,57 @@
+.TH sane\-ricoh2 5 "28 Sep 2018" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.IX sane\-ricoh2
+.SH NAME
+sane\-ricoh2 \- SANE backend for Ricoh flatbed scanners
+.SH DESCRIPTION
+The
+.B sane\-ricoh2
+library implements a SANE (Scanner Access Now Easy) backend that
+provides access to the following Ricoh flatbed scanners:
+.PP
+.RS
+SG-3100SNw
+.br
+SP-100SU
+.br
+SP-111SU
+.RE
+.PP
+.SH FILES
+.TP
+.I @LIBDIR@/libsane\-ricoh2.a
+The static library implementing this backend.
+.TP
+.I @LIBDIR@/libsane\-ricoh2.so
+The shared library implementing this backend (present on systems that
+support dynamic loading).
+
+.SH OPTIONS
+The options the backend supports can either be selected through command line
+options to programs like scanimage or through GUI elements in programs like
+xscanimage or xsane.
+.PP
+The following options are supported by ricoh2:
+
+.B \-\-mode color|gray
+
+.RS
+Color or grayscale mode.
+.RE
+
+.B \-\-resolution 300|600
+
+.RS
+DPI resolution.
+
+.RE
+.SH ENVIRONMENT
+.TP
+.B SANE_DEBUG_RICOH2
+If the library was compiled with debug support enabled, this
+environment variable controls the debug level for this backend. Higher
+debug levels increase the verbosity of the output.
+
+.SH "SEE ALSO"
+sane(7), sane\-usb(5)
+.SH AUTHOR
+Stanislav Yuzvinsky
diff --git a/doc/sane-rts8891.man b/doc/sane-rts8891.man
index 6424f7a..de0683d 100644
--- a/doc/sane-rts8891.man
+++ b/doc/sane-rts8891.man
@@ -6,19 +6,19 @@ The
.B sane\-rts8891
library implements a SANE (Scanner Access Now Easy) backend that
provides access to scanners based on the rts8891 ASIC.
-.PP
+.PP
The scanners that work with this backend are:
-.PP
+.PP
.RS
.ft CR
-.nf
+.nf
Vendor Model status
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-
Umax Astra 4400 untested
Umax Astra 4450 untested
HP scanjet 4000c good
HP scanjet 4470c good
-.fi
+.fi
.ft R
.RE
@@ -26,58 +26,58 @@ The options the backend supports can either be selected through
command line options to programs like scanimage or through GUI
elements in xscanimage or xsane.
-.br
+.br
If you have any strange behavior, please report to the backend
maintainer or to the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d rts8891
.RE
-.TP
+.TP
.B Scan Mode Options
-.TP
+.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.I R Color ,
.I Gray
and
.I Lineart
-The default mode is Color. The Lineart mode is black and white only (1 bit).
+The default mode is Color. The Lineart mode is black and white only (1 bit).
Grayscale will produce 256 levels of gray (8 bits). Color mode allows for over
16 million different colors produced from 24 bits of color information.
-.TP
+.TP
.B \-\-resolution
-selects the resolution for a scan. The horizontal and vertical resolutions are set
+selects the resolution for a scan. The horizontal and vertical resolutions are set
by the value of this option. The scanner is capable of the following resolutions for the specified option value:
-.PP
+.PP
.RS
.ft CR
-.nf
- Value Hor. Resolution Vert. Resolution
+.nf
+ Value Hor. Resolution Vert. Resolution
\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
75 75dpi 75dpi
- 150 150dpi 150dpi
- 300 300dpi 300dpi
- 600 600dpi 600dpi
+ 150 150dpi 150dpi
+ 300 300dpi 300dpi
+ 600 600dpi 600dpi
1200 1200dpi 1200dpi
-.fi
+.fi
.ft R
.RE
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 75 dpi
-and the scan area and the scan mode are as specified through their options,
+and the scan area and the scan mode are as specified through their options,
or the default if not specified. The default value for preview mode is "no".
-.TP
+.TP
.B \-\-threshold
selects the minimum\-brightness to get a white point. The threshold is only used with Lineart mode scans.
-It is specified as a percentage in the range 0..100% (in steps of 1).
+It is specified as a percentage in the range 0..100% (in steps of 1).
The default value of the threshold option is 50.
@@ -87,11 +87,11 @@ The configuration file
contains the usb device ids of supported scanners (eg usb 0x043d 0x007c) and scanner configuration options.
Empty lines and lines starting with a hash mark (#) are
ignored.
-.PP
+.PP
The options supported are
.B allowsharing
,
-.B modelnumber
+.B modelnumber
.
Option
@@ -103,27 +103,27 @@ enables or not the sharing of the scanner between multiple frontends at the same
is used to force the reported model by the backend and is only useful in the case of a scanner which NVRAM has been erased.
.RS
.ft CR
-.nf
+.nf
0 to report a HP4470c.
1 to report a HP4400c.
2 to report an Astra 4400.
-.fi
+.fi
.ft R
.RE
-.PP
+.PP
.SH "FILES"
-.TP
+.TP
.I @LIBDIR@/libsane\-rts8891.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-rts8891.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_DEBUG_RTS8891 SANE_DEBUG_RTS8891_LOW SANE_DEBUG_RTS88XX_LIB
If the library was compiled with debug support enabled, these
environment variables controls the debug level for this backend. E.g.,
@@ -139,7 +139,7 @@ at the same time (allowsharing option) may not work on some USB controllers.
.PP
XPA is no (yet) supported.
.SH "BUGS"
-.br
+.br
No bugs currently known.
@@ -148,11 +148,11 @@ sane\-scsi(5), scanimage(1), xscanimage(1), xsane(1), sane(7)
.SH "AUTHOR"
-.TP
+.TP
This backend has been developed by St\['e]phane Voltz.
.I http://stef.dev.free.fr/sane/rts8891
.SH "CREDITS"
-.TP
+.TP
Many thanks go to:
Laurent Fournier who donated me a HP4470c.
Vladimir Sysoev and "TheUnruly Squash" for the time they spent recording
diff --git a/doc/sane-s9036.man b/doc/sane-s9036.man
index fe194b6..468b44e 100644
--- a/doc/sane-s9036.man
+++ b/doc/sane-s9036.man
@@ -19,8 +19,8 @@ Where
.I special
is the path-name for the special device that corresponds to a
SCSI scanner. The special device name must be a generic SCSI device or a
-symlink to such a device. The program
-.IR sane\-find\-scanner
+symlink to such a device. The program
+.IR sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name
could be
.I /dev/sga
@@ -60,9 +60,9 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_S9036
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_S9036=4
.SH "SEE ALSO"
diff --git a/doc/sane-sceptre.man b/doc/sane-sceptre.man
index 9c34413..b60da27 100644
--- a/doc/sane-sceptre.man
+++ b/doc/sane-sceptre.man
@@ -29,7 +29,7 @@ The make of this scanner is KINPO, so other scanners from that manufacturer may
The options the backend supports can either be selected through command line
options to programs like scanimage or through GUI elements in xscanimage or xsane.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d sceptre
.RE
@@ -38,9 +38,9 @@ scanimage \-\-help \-d sceptre
.B Scan Mode
.TP
-.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
-.I Lineart, Halftone, Gray and Color.
+.B \-\-mode
+selects the basic mode of operation of the scanner valid choices are
+.I Lineart, Halftone, Gray and Color.
The Lineart and Halftone mode are black and white only (1 bit). Gray
will produce 256 levels of gray (8 bits). Color will produce a 24 bits
color image. The scanner supports 30 bits internally but it only
@@ -56,7 +56,7 @@ resolutions between 50 and 1200.
selects the pattern mode that is used in Halftone mode. Valid options
are 1, 2, 3 and 4.
-.TP
+.TP
.B \-\-gamma\-correction
controls the scanner internal gamma correction. Valid options are
"Default", "User defined", "High density printing" "Low density
@@ -67,18 +67,18 @@ printing" and "High contrast printing".
(color mode only) allows the user to specify a gamma table (see the
next 3 parameters).
-.TP
-.B \-\-red\-gamma\-table
+.TP
+.B \-\-red\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the red channel. The table must be 256 bytes long.
-.TP
-.B \-\-green\-gamma\-table
+.TP
+.B \-\-green\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the green channel. The table must be 256 bytes long.
.TP
-.B \-\-blue\-gamma\-table
+.B \-\-blue\-gamma\-table
(color mode only) can be used to download a user defined gamma table
for the blue channel. The table must be 256 bytes long.
@@ -87,7 +87,7 @@ for the blue channel. The table must be 256 bytes long.
sets the threshold for black and white pixels in lineart
mode. Possible values are from 0 (darker) to 255 (lighter).
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 30 dpi
and the scan area is the maximum allowed. The scan mode is user
@@ -97,7 +97,7 @@ selected. The default is "no".
.B The geometry options
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters by default.
diff --git a/doc/sane-scsi.man b/doc/sane-scsi.man
index bcb7d77..5a27555 100644
--- a/doc/sane-scsi.man
+++ b/doc/sane-scsi.man
@@ -21,9 +21,9 @@ to the generic SCSI device that the scanner is connected to. In this
case, the configuration file simply lists the line
.BR /dev/scanner .
For a detailed description of each backend's configuration file,
-please refer to the relevant backend manual page (e.g.,
+please refer to the relevant backend manual page (e.g.,
.BR sane\-epson (5)
-for Epson scanners,
+for Epson scanners,
.BR sane\-hp (5)
for HP scanners, etc.).
.PP
@@ -65,7 +65,7 @@ will be probed by the backend one by one and registered if the backend thinks
it is a compatible device. For example, the line
.PP
.RS
-scsi MUSTEK MFS\-06000CX Scanner 0 00 03 00
+scsi MUSTEK MFS\-06000CX Scanner 0 00 03 00
.RE
.PP
would attach the Mustek SCSI scanner with the following /proc/scsi/scsi entry:
@@ -84,7 +84,7 @@ Usually it's sufficient to use vendor and model strings only or even only the
vendor string. The following example
.PP
.RS
-scsi MUSTEK * * * * * *
+scsi MUSTEK * * * * * *
.RE
.PP
would have the effect that all SCSI devices in the system with a
@@ -188,10 +188,10 @@ version 2.2.7 on. If the new SG driver is available some backends
buffers. If a backend does not automatically request a larger scsi buffer, set
the environment variable
.B SANE_SG_BUFFERSIZE
-to the desired buffer size in bytes. It is not recommended to use more
-than 1 MB, because for large values the probability increases that the
-SG driver cannot allocate the necessary buffer(s). For ISA cards, even
-1 MB might be a too large value. For a detailed discussion of memory
+to the desired buffer size in bytes. It is not recommended to use more
+than 1 MB, because for large values the probability increases that the
+SG driver cannot allocate the necessary buffer(s). For ISA cards, even
+1 MB might be a too large value. For a detailed discussion of memory
issues of the SG driver, see http://www.torque.net/sg.
.PP
For Linux kernels before version 2.2.7 the size of the buffer is only 32KB.
@@ -266,7 +266,7 @@ therefore while a scan is in progress, the system becomes almost unusable.
You may change the values of the USLEEP macros in drivers/scsi/g_NCR5380.c.
Some documentation is in this file and NCR5380.c.
.TP
-NCR/Symbios 810
+NCR/Symbios 810
For some scanners it may be necessary to disable disconnect/reconnect. To
achieve this use the option ncr53c8xx="disc:n". Some people reported that
their scanner only worked with the 53c7,8xx driver, not the ncr53c8xx. Try
@@ -315,7 +315,7 @@ of 255 also prints kernel messages from the SCSI subsystem (where available).
Smaller levels reduce verbosity.
.TP
.B SANE_SCSICMD_TIMEOUT
-sets the timeout value for SCSI commands in seconds. Overriding the default
+sets the timeout value for SCSI commands in seconds. Overriding the default
value of 120 seconds should only be necessary for very slow scanners.
.SH "SEE ALSO"
diff --git a/doc/sane-sharp.man b/doc/sane-sharp.man
index f089538..b4453ee 100644
--- a/doc/sane-sharp.man
+++ b/doc/sane-sharp.man
@@ -9,7 +9,7 @@ library implements a SANE (Scanner Access Now Easy) backend that
provides access to Sharp SCSI scanners. This backend should be
considered
.B beta-quality
-software! In the current state it is known to work with JX-610 and JX-250
+software! In the current state it is known to work with JX-610 and JX-250
scanners. It is prepared for usage with the JX-330 series scanners,
but we are not able to test it with these devices.
.PP
@@ -63,18 +63,18 @@ for example. See sane\-scsi(5) for details.
.SH SCAN OPTIONS
.B Scan Mode
-(parameter
+(parameter
.B \-\-mode
-for scanimage). Possible settings:
+for scanimage). Possible settings:
.RS
.B Lineart
-(1 bit black & white scans),
+(1 bit black & white scans),
.br
.B Gray
(8 bit gray scale scans),
.br
.B Lineart Color
-(bi-level color scans),
+(bi-level color scans),
.br
.B Color
(8 bit RGB scans).
@@ -91,11 +91,11 @@ Possible settings:
.B none
.br
.B Dither Bayer
-.br
+.br
.B Dither Spiral
.br
.B Dither Dispersed
-.br
+.br
.B Error Diffusion
.RE
The default value is
@@ -114,12 +114,12 @@ feeder or a transparency adapter is installed. Possible settings:
.B Transparency Adapter
.RE
If an ADF or a transparency adapter is installed, using it is the
-default selection.
+default selection.
.B Custom Gamma
-(parameter
+(parameter
.B \-\-custom\-gamma
-for scanimage). This option determines whether a builtin or a custom
+for scanimage). This option determines whether a builtin or a custom
gamma-table is used. Possible settings:
.RS
.B yes
@@ -130,11 +130,11 @@ enables a built gamma table
.RE
.B Gamma
-(parameter
+(parameter
.B \-\-Gamma
-for scanimage). This option is only available, if
+for scanimage). This option is only available, if
.B Custom Gamma
-is set to
+is set to
.B no.
Possible values:
.RS
@@ -142,32 +142,32 @@ Possible values:
.br
.B 2.2
.RE
-The default value is 2.2. (The JX-250 and JX-350 have no built in gamma
-correction; for these scanner, a gamma table is downloaded to the scanner
+The default value is 2.2. (The JX-250 and JX-350 have no built in gamma
+correction; for these scanner, a gamma table is downloaded to the scanner
by the backend.)
.B Gamma Table
-(parameter
+(parameter
.B \-\-gamma\-table
-for scanimage). Allowed values: 0..255; 256 numbers must be defined.
-The default values are 0, 1, 2, .. 255 (i.e., gamma == 1). This table
+for scanimage). Allowed values: 0..255; 256 numbers must be defined.
+The default values are 0, 1, 2, .. 255 (i.e., gamma == 1). This table
is only used for gray scale scans.
.B Red Gamma Table
-(parameter
-.B \-\-red\-gamma\-table
+(parameter
+.B \-\-red\-gamma\-table
for scanimage). Allowed values: 0..255; 256 numbers must be defined.
The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
.B Green Gamma Table
-(parameter
-.B \-\-green\-gamma\-table
+(parameter
+.B \-\-green\-gamma\-table
for scanimage). Allowed values: 0..255; 256 numbers must be defined.
The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
.B Blue Gamma Table
-(parameter
-.B \-\-blue\-gamma\-table
+(parameter
+.B \-\-blue\-gamma\-table
for scanimage). Allowed values: 0..255; 256 numbers must be defined.
The default values are 0, 1, 2, .. 255 (i.e., gamma == 1).
@@ -177,7 +177,7 @@ in pixel per inch (parameter
for scanimage). Selects the resolution of the scanned image. Allowed values:
.RS
.B 30..600
-(JX-330, JX-350 and JX-610) resp.
+(JX-330, JX-350 and JX-610) resp.
.B 30..400
(JX-250)
.RE
@@ -203,19 +203,19 @@ in order to see the allowed parameter values for the scan window.
The scan window parameters are:
.RS
-Top-left x position of scan area (parameter
+Top-left x position of scan area (parameter
.B \-l
for scanimage);
.br
-Top-left y position of scan area (parameter
+Top-left y position of scan area (parameter
.B \-t
for scanimage);
.br
-bottom right x position of scan area (parameter
+bottom right x position of scan area (parameter
.B \-x
for scanimage);
.br
-bottom right y position of scan area (parameter
+bottom right y position of scan area (parameter
.B \-y
for scanimage);
.RE
@@ -223,7 +223,7 @@ for scanimage);
.B Edge emphasis
(parameter
.B \-\-Edge emphasis
-for scanimage). This option is not available for the JX-250 and the JX-350.
+for scanimage). This option is not available for the JX-250 and the JX-350.
Possible settings:
.RS
.B None
@@ -234,59 +234,59 @@ Possible settings:
.br
.B Blur
.RE
-The default value is
+The default value is
.B None.
.B Threshold
-(parameter
+(parameter
.B \-\-threshold
for scanimage). Sets the threshold for black and white pixels in lineart
mode. Possible values:
.RS
.B 1..255
.RE
-The default value is
+The default value is
.B 128.
This option is only available in scan mode lineart.
.B Threshold Red
-(parameter
+(parameter
.B \-\-threshold-red
for scanimage). Sets the threshold for the red component of a pixel in
in lineart color scan mode. Possible values:
.RS
.B 1..255
.RE
-The default value is
+The default value is
.B 128.
This option is only available in scan mode color lineart.
.B Threshold Green
-(parameter
+(parameter
.B \-\-threshold-green
for scanimage). Sets the threshold for the green component of a pixel in
in lineart color scan mode. Possible values:
.RS
.B 1..255
.RE
-The default value is
+The default value is
.B 128.
This option is only available in scan mode color lineart.
.B Threshold Blue
-(parameter
+(parameter
.B \-\-threshold-blue
for scanimage). Sets the threshold for the blue component of a pixel in
in lineart color scan mode. Possible values:
.RS
.B 1..255
.RE
-The default value is
+The default value is
.B 128.
This option is only available in scan mode color lineart.
.B Light Color
-(parameter
+(parameter
.B \-\-LightColor
for scanimage). Sets the color of the light source. Possible values:
.RS
@@ -298,7 +298,7 @@ for scanimage). Sets the color of the light source. Possible values:
.br
.B blue
.RE
-The default value is
+The default value is
.B white.
This option is only available in scan modes lineart color and color.
@@ -310,75 +310,75 @@ be opened and closed, even if the jammed paper can be removed without opening
the maintenance cover. Otherwise, the error condition cannot be cleared.
.SH CONFIGURATION
-The contents of the
+The contents of the
.I sharp.conf
-file is a list of options and device names that correspond to Sharp
+file is a list of options and device names that correspond to Sharp
scanners. Empty lines and lines beginning with a hash mark (#) are
ignored. See sane\-scsi(5) for details about device names.
.PP
Lines setting an option start with the key word
.B option,
followed by the option's name and the option's value. At present, three
-options are defined:
-.B buffers, buffersize,
+options are defined:
+.B buffers, buffersize,
and
-.B readqueue.
+.B readqueue.
.PP
-Options defined at the start of
+Options defined at the start of
.I sharp.conf
apply to all devices; options defined after a
device name apply to this device.
.PP
-The options
+The options
.B buffers
and
.B
readqueue
are only significant if the backend has been compiled
-so that for each scan a second process is forked (switch
+so that for each scan a second process is forked (switch
.B USE_FORK
-in
+in
.I sharp.c
). This process reads the
scan data from the scanner and writes this data into a block of shared memory.
-The parent process reads the data from this memory block and delivers it
-to the frontend. The options control the size and usage of this shared
+The parent process reads the data from this memory block and delivers it
+to the frontend. The options control the size and usage of this shared
memory block.
.PP
.B option buffers
-defines the number of buffers used. The smallest number allowed is 2.
+defines the number of buffers used. The smallest number allowed is 2.
.PP
.B option buffersize
-defines the size of one buffer. Since each buffer is filled with a
+defines the size of one buffer. Since each buffer is filled with a
single read command sent to the scanner, its size is limited automatically
to the size allowed by the operating system or by the Sane SCSI library
for SCSI read commands. A buffer size of 128 kB or 256 kB is recommended
for scan resolutions of 300 dpi and above.
.PP
-.B option readqueue
+.B option readqueue
defines how many read commands to be sent to the scanner
-are queued. At present, the Sane SCSI library supports queued read
-commands only for for Linux. For other operating systems,
+are queued. At present, the Sane SCSI library supports queued read
+commands only for for Linux. For other operating systems,
.B option readqueue
-should be set to 0. For Linux,
+should be set to 0. For Linux,
.B option readqueue
should be set to 2. Larger values than 2 for
.B option readqueue
are not reasonable in most cases.
.B option buffers
-should be greater than
+should be greater than
.B option readqueue.
.SH Performance Considerations
This section focuses on the problem of stops of the scanner's carriage
-during a scan. Carriage stops happen mainly with the JX-250. This scanner
-has obviously only a small internal buffer compared to its speed. That
-means that the backend must read the data as fast as possible from the
-scanner in order to avoid carriage stops.
+during a scan. Carriage stops happen mainly with the JX-250. This scanner
+has obviously only a small internal buffer compared to its speed. That
+means that the backend must read the data as fast as possible from the
+scanner in order to avoid carriage stops.
.PP
-Even the JX-250 needs only less than 10 seconds for a 400 dpi A4 gray
-scale scan, which results in a data transfer rate of more than 1.6 MB
-per second. This means that the data produced by the scanner must be
+Even the JX-250 needs only less than 10 seconds for a 400 dpi A4 gray
+scale scan, which results in a data transfer rate of more than 1.6 MB
+per second. This means that the data produced by the scanner must be
processed fairly fast. Due to the small internal buffer of the JX-250,
the backend must issue a read request for the next data block as soon
as possible after reading a block of data in order to avoid carriage
@@ -395,25 +395,25 @@ Stops of the carriage can be caused by the following reasons:
.PP
.RE
Too much "traffic" on the SCSI bus: This happens for example, if hard disks
-are connected to the same SCSI bus as the scanner, and when data transfer
+are connected to the same SCSI bus as the scanner, and when data transfer
from/to these hard disks requires a considerable part of the SCSI bandwidth
-during a scan. If this is the case, you should consider to connect the
+during a scan. If this is the case, you should consider to connect the
scanner to a separate SCSI adapter.
.PP
Slow responses by the backend to the scanner: Unfortunately,
Unix-like operating systems generally have no real time capabilities.
Thus there is no guarantee that the backend is under any circumstances
able to communicate with the scanner as fast as required. To minimize this
-problem, the backend should be compiled so that a separate reader process
+problem, the backend should be compiled so that a separate reader process
is forked: Make sure that
.B USE_FORK
-is defined when you compile
+is defined when you compile
.I sharp.c.
If slow responses of the backend remain to be problem, you could try to
-reduce the load of the system. Even while the backend and the reader
-process need only a minor amount of processor time, other running
+reduce the load of the system. Even while the backend and the reader
+process need only a minor amount of processor time, other running
processes can cause an increase in the time delay between two time
-slices given to the reader process. On slower systems, such an
+slices given to the reader process. On slower systems, such an
increased delay can be enough to cause a carriage stop with the JX-250.
For Linux, the usage of the SG driver version 2.1.36 or above is
recommended, because it supports, in combination with
@@ -424,20 +424,20 @@ This queueing implementation, combined with a buffer size of at least
Slow processing of the scan data: An example for this situation is
the access to the scanner via a 10 MBit Ethernet, which is definitely
too slow to transfer the scan data as fast as they are produced by the
-scanner. If you have enough memory available, you can increase
+scanner. If you have enough memory available, you can increase
.B option buffers,
-so that an entire image can be stored in these buffers.
+so that an entire image can be stored in these buffers.
.PP
In order to see, if the backend is too slow or if the further processing
of the data is too slow, set the environment variable
.B SANE_DEBUG_SHARP
to 1. When a scan is finished, the backend writes the line "buffer full
-conditions:
+conditions:
.I nn"
to stderr. If
.I nn
is zero, carriage stops are caused by too slow responses of the backend
-or too much "traffic" on the SCSI bus. If
+or too much "traffic" on the SCSI bus. If
.I nn
is greater than zero, the backend had to wait
.I nn
@@ -469,21 +469,21 @@ levels reduce verbosity.
1. ADF Mode
.RS
After several ADF scans, the scanner moves the carriage back to the idle
-position and back to ADF scan position, before a scan starts. We do not
-know, if this is a problem of the scanner, or if this is a bug of the
+position and back to ADF scan position, before a scan starts. We do not
+know, if this is a problem of the scanner, or if this is a bug of the
backend. At present, the scanner must power off and on to stop this
annoying behaviour.
.RE
2. Threshold level does not work (only JX-610)
.PP
-3. The maximum resolution is limited to 600 dpi(JX-610 supported
+3. The maximum resolution is limited to 600 dpi(JX-610 supported
to 1200 dpi) resp. 400 dpi (JX-250)
.PP
4. If the JX250 is used with an ADF, the following situation can occur: After
several scans, the scanner moves, after loading a new sheet of paper, the
carriage to the idle position, and then back to the position used for ADF
-scans. This happens for
+scans. This happens for
.I
every
scan, in contrast to the calibration, which is done after 10 scans. (For the
diff --git a/doc/sane-sm3600.man b/doc/sane-sm3600.man
index 8f58622..7f5c9a4 100644
--- a/doc/sane-sm3600.man
+++ b/doc/sane-sm3600.man
@@ -8,7 +8,7 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to some Microtek scanners with the Toshiba M011 custom
USB chip. This backend should be considered alpha.
-.PP
+.PP
There are also backends for Microtek scanners with SCSI command set.
Refer to sane\-microtek(5) and sane\-microtek2(5) for details.
.PP
@@ -79,4 +79,3 @@ Marian Eichholz (eichholz@computer.org)
.br
Glenn Ramsey (glenn@componic.com)
.br
-
diff --git a/doc/sane-sm3840.man b/doc/sane-sm3840.man
index 96959b6..e6af3a1 100644
--- a/doc/sane-sm3840.man
+++ b/doc/sane-sm3840.man
@@ -8,7 +8,7 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to some Microtek scanners with the SCAN08
USB chip.
-.PP
+.PP
There exist backends for Microtek scanners with SCSI command set.
Refer to sane\-microtek(5) and sane\-microtek2(5) for details.
.PP
@@ -92,4 +92,3 @@ sane\-microtek2(5), sane\-sm3600(5), http://www.ziplabel.com/sm3840
.br
Earle F. Philhower III (earle@ziplabel.com)
.br
-
diff --git a/doc/sane-snapscan.man b/doc/sane-snapscan.man
index 3914868..6e71875 100644
--- a/doc/sane-snapscan.man
+++ b/doc/sane-snapscan.man
@@ -33,8 +33,8 @@ or
.IR /dev/sge ,
for example. See sane\-scsi(5) for details.
.P
-For USB scanners the devicename must contain the keyword "usb", as in
-.I /dev/usbscanner
+For USB scanners the devicename must contain the keyword "usb", as in
+.I /dev/usbscanner
or
.IR /dev/usb/scanner0 .
For scanners that need a firmware upload before scanning add a line starting
@@ -107,5 +107,5 @@ Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Oliver Schwartz
and Mikael Magnusson.
.br
-Man page by Henning Meier-Geinitz (mostly based on the web pages and
+Man page by Henning Meier-Geinitz (mostly based on the web pages and
source code).
diff --git a/doc/sane-st400.man b/doc/sane-st400.man
index 9dac97c..affdf72 100644
--- a/doc/sane-st400.man
+++ b/doc/sane-st400.man
@@ -22,7 +22,7 @@ The Siemens ST/Highscan series includes several more models, e.g. the ST300
and ST600. If you own one of these scanners, or a scanner other than the
ones listed above that works with this backend, please let us know by sending
the scanner's model name, SCSI ID, and firmware revision to
-.IR sane\-devel@lists.alioth.debian.org .
+.IR sane\-devel@alioth-lists.debian.net .
Have a look at http://www.sane\-project.org/mailing\-lists.html concerning subscription
to sane\-devel.
@@ -139,7 +139,7 @@ me the report.
.SH "SEE ALSO"
sane(7), sane\-scsi(5)
.br
-http://www.informatik.uni-oldenburg.de/~ingo/sane/
+http://www.informatik.uni-oldenburg.de/~ingo/sane/
.SH AUTHOR
diff --git a/doc/sane-stv680.man b/doc/sane-stv680.man
index 7b63b92..90cdf53 100644
--- a/doc/sane-stv680.man
+++ b/doc/sane-stv680.man
@@ -32,7 +32,7 @@ for the exact status of each camera.
For startup of this backend check that if present the stv680 kernel module is
removed or disabled.
.br
-Also before using, enable the backend by editing the /etc/sane.d/dll.conf file,
+Also before using, enable the backend by editing the /etc/sane.d/dll.conf file,
change #stv680 to stv680.
For problems with the untested cameras, you
@@ -62,7 +62,7 @@ If you have any success with a camera not listed here, or if you have
any strange behavior, please report to the backend maintainer or to
the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d stv680
.RE
@@ -75,7 +75,7 @@ scanimage \-\-help \-d stv680
.B \-\-mode
selects the basic mode of operation of the webcams valid choices.
-The read resolution mode is 8 bits, output resolution is 24 bits.
+The read resolution mode is 8 bits, output resolution is 24 bits.
Selects the resolution for a scan.
The camera can do only the resolutions listed.
.TP
@@ -98,7 +98,7 @@ Bayer unshuffle, color correction, textline with date and time is added
.TP
.B \-\-white\-level\-r
Selects what red radiance level should be
-considered "white", when scanning some sheets by changing the calibration
+considered "white", when scanning some sheets by changing the calibration
value loaded into the scanner. Scale \-32 .. 0 .. +32 in steps of 1.
.TP
@@ -173,4 +173,3 @@ STV680 kernel module
pencam2 program
.br
libghoto2 program (camlib stv0680)
-
diff --git a/doc/sane-tamarack.man b/doc/sane-tamarack.man
index 628069c..7084924 100644
--- a/doc/sane-tamarack.man
+++ b/doc/sane-tamarack.man
@@ -28,8 +28,8 @@ Where
.I special
is the path-name for the special device that corresponds to a
SCSI scanner. The special device name must be a generic SCSI device or a
-symlink to such a device. The program
-.IR sane\-find\-scanner
+symlink to such a device. The program
+.IR sane\-find\-scanner
helps to find out the correct device. Under Linux, such a device name
could be
.I /dev/sga
@@ -69,9 +69,9 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_TAMARACK
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_TAMARACK=4
.SH "SEE ALSO"
diff --git a/doc/sane-teco1.man b/doc/sane-teco1.man
index acb4985..4f4ce85 100644
--- a/doc/sane-teco1.man
+++ b/doc/sane-teco1.man
@@ -20,21 +20,21 @@ The scanners that should work with this backend are:
.nf
Vendor Model TECO model status
---------------------- -------------- -----------
- Relisys AVEC 2400 VM3520 tested
+ Relisys AVEC 2400 VM3520 tested
Relisys AVEC 2412 VM3520+ tested
- Relisys AVEC 4800 VM4530 untested
- Relisys AVEC 4816 VM4530+ untested
- Relisys RELI 2400 VM3530 untested
+ Relisys AVEC 4800 VM4530 untested
+ Relisys AVEC 4816 VM4530+ untested
+ Relisys RELI 2400 VM3530 untested
Relisys RELI 2412 VM3530+ tested
- Relisys RELI 2412 VM3530+ untested
- Relisys RELI 4816 VM4540 tested
+ Relisys RELI 2412 VM3530+ untested
+ Relisys RELI 4816 VM4540 tested
Relisys RELI 4830 VM4542 tested
- Relisys RELI 9600 VM6530 untested
- Relisys RELI 9612 VM6530* untested
- Relisys RELI 9624 VM6530+ untested
- Relisys RELI 9630 VM6540 untested
- Relisys RELI DS15 VM3440 untested
- Relisys RELI DS6 VM3420 untested
+ Relisys RELI 9600 VM6530 untested
+ Relisys RELI 9612 VM6530* untested
+ Relisys RELI 9624 VM6530+ untested
+ Relisys RELI 9630 VM6540 untested
+ Relisys RELI DS15 VM3440 untested
+ Relisys RELI DS6 VM3420 untested
Dextra DF-600P VM3510 tested
Dextra DF-4830T VM4542 untested
Dextra DF-1200T+ VM3530+ untested
@@ -59,7 +59,7 @@ If you have any success with a scanner not listed here, or if you have
any strange behavior, please report to the backend maintainer or to
the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d teco1
.RE
@@ -69,7 +69,7 @@ scanimage \-\-help \-d teco1
.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.I Black & White
,
.I Grayscale
@@ -89,7 +89,7 @@ between 1 and 600, in increments of 1.
.B Geometry options
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters by default.
@@ -103,24 +103,24 @@ area. All parameters are specified in millimeters by default.
(color mode only) allows the user to specify a gamma table (see the
next 3 parameters).
-.TP
-.B \-\-red\-gamma\-table
+.TP
+.B \-\-red\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the red channel. The table must be 256 bytes long.
-.TP
-.B \-\-green\-gamma\-table
+.TP
+.B \-\-green\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the green channel. The table must be 256 bytes long.
.TP
-.B \-\-blue\-gamma\-table
+.B \-\-blue\-gamma\-table
(color mode only) can be used to download a user defined gamma table
for the blue channel. The table must be 256 bytes long.
.TP
.B \-\-dither
-(Black & White only) select the dither mask to use. Possible values are
+(Black & White only) select the dither mask to use. Possible values are
.I Line art
,
.I 2x2
@@ -140,7 +140,7 @@ and
.I 8x8 vertical
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 22 dpi
and the scan area is the maximum allowed. The scan mode is user
diff --git a/doc/sane-teco2.man b/doc/sane-teco2.man
index 3abd3b8..4b79960 100644
--- a/doc/sane-teco2.man
+++ b/doc/sane-teco2.man
@@ -45,7 +45,7 @@ Note that the untested scanner will not be directly supported. You
should contact the author for that.
The TECO VM number can usually be found at the back of the
-scanner. It is also part of the FCC ID.
+scanner. It is also part of the FCC ID.
The options the backend supports can either be selected through
command line options to programs like scanimage or through GUI
@@ -56,7 +56,7 @@ If you have any success with a scanner not listed here, or if you have
any strange behavior, please report to the backend maintainer or to
the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d teco2
.RE
@@ -66,7 +66,7 @@ scanimage \-\-help \-d teco2
.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.I Lineart
,
.I Gray
@@ -84,21 +84,21 @@ between 1 and 600, in increments of 1.
Color
-selects the resolution for a scan. The scanner can do only the
+selects the resolution for a scan. The scanner can do only the
resolutions listed.
-All values with ydpi > 300 (300 x 600) or 600 (600 x 1200) result in
-a wrong proportion for the scan. The proportion can be adjusted with
-the following imagemagick command:
-convert \-geometry (dpi/max_xdpi * 100%)x100%
-max_xdpi is for the vm3575 constant with 300 dpi
-e.g. 600dpi adjust with: convert \-geometry 200%x100%
+All values with ydpi > 300 (300 x 600) or 600 (600 x 1200) result in
+a wrong proportion for the scan. The proportion can be adjusted with
+the following imagemagick command:
+convert \-geometry (dpi/max_xdpi * 100%)x100%
+max_xdpi is for the vm3575 constant with 300 dpi
+e.g. 600dpi adjust with: convert \-geometry 200%x100%
.TP
.B Geometry options
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters by default.
@@ -112,25 +112,25 @@ area. All parameters are specified in millimeters by default.
(color mode only) allows the user to specify a gamma table (see the
next 3 parameters).
-.TP
-.B \-\-red\-gamma\-table
+.TP
+.B \-\-red\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the red channel. The table must be 256 bytes long.
-.TP
-.B \-\-green\-gamma\-table
+.TP
+.B \-\-green\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the green channel. The table must be 256 bytes long.
.TP
-.B \-\-blue\-gamma\-table
+.B \-\-blue\-gamma\-table
(color mode only) can be used to download a user defined gamma table
for the blue channel. The table must be 256 bytes long.
.TP
.B \-\-white\-level\-r
(VM3564, VM356A, VM3575 and VM6575 only) Selects what red radiance level should be
-considered "white", when scanning some sheets by changing the calibration
+considered "white", when scanning some sheets by changing the calibration
value loaded into the scanner. Scale 0..64 in steps of 1.
.TP
@@ -145,10 +145,10 @@ value loaded into the scanner. Scale 0..64 in steps of 1.
considered "white", when scanning some sheets by changing the calibration
value loaded into the scanner. Scale 0..64 in steps of 1.
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 50 dpi
-(for VM356A and VM6575 75 dpi) and the scan area is the maximum allowed.
+(for VM356A and VM6575 75 dpi) and the scan area is the maximum allowed.
The scan mode is user selected. The default is "no".
diff --git a/doc/sane-teco3.man b/doc/sane-teco3.man
index a2b041d..8fc6c3c 100644
--- a/doc/sane-teco3.man
+++ b/doc/sane-teco3.man
@@ -31,7 +31,7 @@ The scanners that should work with this backend are:
.RE
The TECO VM number can usually be found at the back of the
-scanner. It is also part of the FCC ID.
+scanner. It is also part of the FCC ID.
The options the backend supports can either be selected through
command line options to programs like scanimage or through GUI
@@ -42,7 +42,7 @@ If you have any success with a scanner not listed here, or if you have
any strange behavior, please report to the backend maintainer or to
the SANE mailing list.
-Valid command line options and their syntax can be listed by using
+Valid command line options and their syntax can be listed by using
.RS
scanimage \-\-help \-d teco3
.RE
@@ -52,7 +52,7 @@ scanimage \-\-help \-d teco3
.TP
.B \-\-mode
-selects the basic mode of operation of the scanner valid choices are
+selects the basic mode of operation of the scanner valid choices are
.I Black & White
,
.I Grayscale
@@ -72,7 +72,7 @@ between 1 and 1200, in increments of 1.
.B Geometry options
.TP
-.B \-l \-t \-x \-y
+.B \-l \-t \-x \-y
control the scan area: \-l sets the top left x coordinate, \-t the top
left y coordinate, \-x selects the width and \-y the height of the scan
area. All parameters are specified in millimeters by default.
@@ -86,23 +86,23 @@ area. All parameters are specified in millimeters by default.
(color mode only) allows the user to specify a gamma table (see the
next 3 parameters).
-.TP
-.B \-\-red\-gamma\-table
+.TP
+.B \-\-red\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the red channel. The table must be 1024 bytes long.
-.TP
-.B \-\-green\-gamma\-table
+.TP
+.B \-\-green\-gamma\-table
(color mode only) can be used to download a user defined
gamma table for the green channel. The table must be 1024 bytes long.
.TP
-.B \-\-blue\-gamma\-table
+.B \-\-blue\-gamma\-table
(color mode only) can be used to download a user defined gamma table
for the blue channel. The table must be 1024 bytes long.
-.TP
+.TP
.B \-\-preview
requests a preview scan. The resolution used for that scan is 22 dpi
and the scan area is the maximum allowed. The scan mode is user
diff --git a/doc/sane-test.man b/doc/sane-test.man
index e582895..08c9f86 100644
--- a/doc/sane-test.man
+++ b/doc/sane-test.man
@@ -15,10 +15,10 @@ The idea is not only to find bugs in frontends but also to show all
capabilities of SANE. Therefore
.B sane\-test
implements functions and options that are not (or seldom) found in other
-backends.
+backends.
.PP
The backend is commented out in @CONFIGDIR@/dll.conf, so either the comment
-character must be removed or the backend must be called explicitly. E.g.
+character must be removed or the backend must be called explicitly. E.g.
`scanimage \-d test' or `xscanimage test'.
.SH SCAN MODE OPTIONS
@@ -86,7 +86,7 @@ If option
is set, the maximum amount of data transferred with each call to sane_read() is
limited.
.PP
-Option
+Option
.B read\-limit\-size
sets the limit for option read-limit. A low limit slows down scanning. It
can be used to detect errors in frontend that occur because of wrong
@@ -198,7 +198,7 @@ backend.
.PP
.SH INT TEST OPTIONS
-There are 6 int test options in total.
+There are 6 int test options in total.
.PP
Option
.B int
@@ -229,7 +229,7 @@ Option
constraint.
.SH FIXED TEST OPTIONS
-There are 3 fixed test options in total.
+There are 3 fixed test options in total.
.PP
Option
.B fixed
@@ -246,7 +246,7 @@ Option
.PP
.SH STRING TEST OPTIONS
-There are 3 string test options in total.
+There are 3 string test options in total.
.PP
Option
.B string
@@ -276,7 +276,7 @@ The backend configuration file (see also description of
below). The initial values of most of the basic SANE options can be configured
in this file. A template containing all the default values is provided
together with this backend. One of the more interesting values may be
-.BR number_of_devices .
+.BR number_of_devices .
It can be used to check the frontend's ability to show a long list of devices.
The config values concerning resolution and geometry can be useful to test
the handling of big file sizes.
@@ -307,13 +307,13 @@ to "/tmp/config:" would result in directories "tmp/config", ".", and
.B SANE_DEBUG_TEST
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_TEST=4
.SH "SEE ALSO"
-sane(7),
+sane(7),
.IR http://www.meier\-geinitz.de/sane/test\-backend/
diff --git a/doc/sane-u12.man b/doc/sane-u12.man
index 8b35fdf..680ce0c 100644
--- a/doc/sane-u12.man
+++ b/doc/sane-u12.man
@@ -150,8 +150,6 @@ export SANE_DEBUG_U12=10
.BR sane\-plustek (5),
.br
.I @DOCDIR@/u12/U12.changes
-.br
-.I http://www.gjaeger.de/scanner/u12/
.SH "CONTACT AND BUG-REPORTS"
Please send any information and bug-reports to:
@@ -164,10 +162,6 @@ Mailing-List archive at:
.br
.B http://www.sane\-project.org/mailing\-lists.html
.PP
-or directly from the projects' homepage at:
-.br
-.B http://www.gjaeger.de/scanner/u12/
-.PP
To obtain debug messages from the backend, please set the
environment-variable
.I SANE_DEBUG_U12
@@ -180,5 +174,5 @@ The value controls the verbosity of the backend.
.SH "KNOWN BUGS & RESTRICTIONS"
* The driver is in alpha state, so please don't expect too much!!!
.PP
-* When using libusb, it might be, that the backend hangs.
+* When using libusb, it might be, that the backend hangs.
In that case, reconnect the scanner.
diff --git a/doc/sane-umax.man b/doc/sane-umax.man
index 7dd9382..41b4beb 100644
--- a/doc/sane-umax.man
+++ b/doc/sane-umax.man
@@ -20,12 +20,12 @@ parallel- and USB-scanners are not (and probably will never be) supported!
.SH CONFIGURATION
-The configuration file for this backend resides in
+The configuration file for this backend resides in
.IR @CONFIGDIR@/umax.conf .
Its contents is a list of device names that correspond to UMAX and UMAX compatible scanners. Empty lines
and lines starting with a hash mark (#) are ignored. A sample configuration file is
-shown below:
+shown below:
.nf
# this is a comment
@@ -44,19 +44,19 @@ shown below:
option calibration\-width\-offset \-1
option calibration\-bytes\-pixel \-1
option exposure\-time\-rgb\-bind \-1
- option invert\-shading\-data \-1
+ option invert\-shading\-data \-1
option lamp\-control\-available 0
option gamma\-lsb\-padded 0
- /dev/sge
-\
- #scsi Vendor Model Type Bus Channel ID LUN
+ /dev/sge
+\
+ #scsi Vendor Model Type Bus Channel ID LUN
# The following scanner supports lamp control
option lamp\-control\-available 1
- scsi UMAX * Scanner * * * * *
-\
+ scsi UMAX * Scanner * * * * *
+\
# scanner on /dev/scanner does not support lamp control
option lamp\-control\-available 0
- /dev/scanner
+ /dev/scanner
.fi
.TP
@@ -194,7 +194,7 @@ command queueing you can try to set this value to 1.
.PP
The special device name must be a generic SCSI device or a symlink to such a device.
To find out to which device your scanner is assigned and how you have to set the
-permissions of that device, have a look at sane\-scsi.
+permissions of that device, have a look at sane\-scsi.
.SH SCSI ADAPTER TIPS
@@ -203,7 +203,7 @@ well by Linux (I suggest not to use it), the PCI-SCSI-adapters that come with so
Umax-scanners are not supported at all (as far as I know). On other platforms these
SCSI-adapters are not supported. So you typically need to purchase another SCSI-adapter
that is supported by your platform. See the relevant hardware FAQs and HOWTOs for your
-platform for more information.
+platform for more information.
The UMAX-scanners do block the scsi-bus for a few seconds while scanning. It is not
necessary to connect the scanner to its own SCSI-adapter. But if you need short
@@ -240,7 +240,7 @@ SANE_DEBUG_UMAX values
.ft CR
.nf
Number Remark
-\
+\
0 print important errors (printed each time)
1 print errors
2 print sense
diff --git a/doc/sane-umax1220u.man b/doc/sane-umax1220u.man
index e90a4e9..a83db59 100644
--- a/doc/sane-umax1220u.man
+++ b/doc/sane-umax1220u.man
@@ -18,7 +18,7 @@ For more information on this backend, please visit
This backend is also able to drive the UMAX Astra 1600U/2000U/2100U. The
2100U is confirmed to work. For the other scanners no reports have been received
yet. Please contact us and tell us if your scanner works
-(sane\-devel@lists.alioth.debian.org).
+(sane\-devel@alioth-lists.debian.net).
.SH CONFIGURATION
@@ -27,13 +27,13 @@ Usually, no manual configuration is necessary. The configuration file for this b
Its contents is a list of device names that correspond to UMAX Astra scanners.
Empty lines and lines starting with a hash mark (#) are ignored. A sample
-configuration file is shown below:
+configuration file is shown below:
.nf
#usb vendor product
usb 0x1606 0x0010
# Device list for non-linux systems
- /dev/scanner
+ /dev/scanner
/dev/usb/scanner0
.fi
@@ -66,7 +66,7 @@ SANE_DEBUG_UMAX1220U values
.ft CR
.nf
Number Remark
-\
+\
1 print failures
2 print information
3 print high-level function calls
@@ -106,7 +106,7 @@ sane(7), sane\-usb(5)
Marcio Luis Teixeira <marciot@users.sourceforge.net>
.SH EMAIL-CONTACT
-sane\-devel@lists.alioth.debian.org
+sane\-devel@alioth-lists.debian.net
.SH REPORTING BUGS
diff --git a/doc/sane-umax_pp.man b/doc/sane-umax_pp.man
index 09e6ea0..40972ce 100644
--- a/doc/sane-umax_pp.man
+++ b/doc/sane-umax_pp.man
@@ -8,52 +8,52 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to Umax parallel port flatbed scanners. The
following scanners work with this backend:
-.PP
+.PP
.RS
-Model:
-.br
-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
-.br
-Astra 610P
-.br
-Astra 1220P
-.br
-HP3200C
-.br
-Astra 1600P
-.br
-Astra 2000P
-.br
+Model:
+.br
+\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+.br
+Astra 610P
+.br
+Astra 1220P
+.br
+HP3200C
+.br
+Astra 1600P
+.br
+Astra 2000P
+.br
Genius ColorPage-Life Pro
-.br
+.br
.RE
-.PP
+.PP
This backend handles 75x75, 150x150, 300x300, 600x600 and 600x1200 for 1220P/1600P/2000P
-dpi scan resolutions, and 75x75, 150x150, 300x300 and 300x600 for 610P. In color and gray
+dpi scan resolutions, and 75x75, 150x150, 300x300 and 300x600 for 610P. In color and gray
levels, there is a software lineart mode.
-.PP
-The new generation models share a newer version of the 610P ASIC embedded in an EPAT chip.
+.PP
+The new generation models share a newer version of the 610P ASIC embedded in an EPAT chip.
Only parts such as CCD and ADC change from
one to another. They even all reports being UMAX Astra 1220P via IEEE1284.
There isn't software way to recognize them properly. Under windows, model is
-set by the driver installed, regardless of the hardware.
-.PP
-.TP
+set by the driver installed, regardless of the hardware.
+.PP
+.TP
.B EPP/ECP MODES ONLY
-The current version of the backend uses only EPP or ECP mode to communicate
-with the scanner. PS/2 mode isn't implemented. The 610P only use SPP. It is
-recommended that you set your parallel port to EPP in BIOS with the current
-version of this
+The current version of the backend uses only EPP or ECP mode to communicate
+with the scanner. PS/2 mode isn't implemented. The 610P only use SPP. It is
+recommended that you set your parallel port to EPP in BIOS with the current
+version of this
backend. You can leave it to ECP or ECP+EPP, but in this case you may not use
ppdev but only direct hardware access if you have to use ECP. ECPEPP will only
work if you use a 2.4 or 2.6 kernel with ppdev character device support.
-.PP
-This backend does support parport sharing only
-.I
+.PP
+This backend does support parport sharing only
+.I
if you have a kernel with ppdev support.
-.I
-.PP
-Note that if you don't use the ppdev character device, the backend
+.I
+.PP
+Note that if you don't use the ppdev character device, the backend
needs to run as root. To allow user access to the scanner
run the backend through the network interface (See saned(8) and sane\-net(5)).
A more relaxed solution (security wise) is to add suid bit to the frontend
@@ -63,13 +63,13 @@ access to IO ports, which lessen risks when being root.
.SH "DEVICE NAMES"
This backend expects device names of the form:
-.PP
+.PP
.RS
.I port value
.RE
-.PP
+.PP
Where
-\fBvalue\fR is :
+\fBvalue\fR is :
.RS
.TP
@@ -95,40 +95,40 @@ have to use /dev/parport1, /dev/parport2, ...
0x378
does direct hardware access on the given
address. Usual values are 0x378, 0x278, 0x3BC
-In this case, you have to run the scanner as
+In this case, you have to run the scanner as
root (*BSD and linux), or with 'IOPL=yes' on
OS/2
-.PP
+.PP
.RE
\fBNOTE:\fR in all cases, you must have sufficient privileges
to get access to the chosen device or address. Depending on the
security settings, devices may not be available for all users.
-You have to change permissions on the dev/ppi* or /dev/parport* devices.
-.PP
+You have to change permissions on the dev/ppi* or /dev/parport* devices.
+.PP
.RE
You can rename any device using the
-.PP
+.PP
.RS
.I name devname
-.br
+.br
.I model model
-.br
+.br
.I vendor vendor
.RE
-.PP
-options. These options apply to the last port option.
+.PP
+options. These options apply to the last port option.
.SH "CONFIGURATION"
Please make sure to edit umax_pp.conf
.B before
you use the backend.
-.PP
+.PP
The contents of the
.B umax_pp.conf
file is a list of options and device names that correspond to Umax
scanners. Empty lines and lines starting with a hash mark (#) are
ignored.
-.PP
+.PP
The eight options supported are
.BR red\-gain ,
.BR green\-gain ,
@@ -151,7 +151,7 @@ range from 0 (lowest gain) to 15 (highest). If the advanced option "Gain" isn't
checked in the frontend, the backend does automatic gain calibration, and do not use
user provided values.
-.PP
+.PP
Options
.B red\-offset
@@ -160,21 +160,21 @@ Options
and
.B blue\-offset
allow you to adjust the offset of your scanner for the given color. Values
-range from 0 (lowest offset) to 15 (highest).
-.PP
+range from 0 (lowest offset) to 15 (highest).
+.PP
Option
.B astra
allows you to change the model of your scanner. Current auto detection is based
on side effects on scanning when using 1220P command set on other models, so
-it may fail on unknown hardware combination. Valid values are 610, 1220, 1600
+it may fail on unknown hardware combination. Valid values are 610, 1220, 1600
and 2000. It is useful only when autodetection fails to detect properly
-your scanner model. If your scanner work properly but is reported wrongly,
-let it be that way.
-The only valid case to change the model is when your scanner produces "black" or
-"inverted" scans. In this case you can put the model. Be aware that it will
+your scanner model. If your scanner work properly but is reported wrongly,
+let it be that way.
+The only valid case to change the model is when your scanner produces "black" or
+"inverted" scans. In this case you can put the model. Be aware that it will
prevent scanner model autodetection.
-.PP
+.PP
Option
.B buffer
@@ -183,26 +183,26 @@ bytes. The default value is 2 megabytes. Decreasing this value will improve the
smoothness of progress bar in the frontend, but will stall the
scan more often.
-.PP
+.PP
.SH "FILES"
-.TP
+.TP
.I @CONFIGDIR@/umax_pp.conf
The backend configuration file (see also description of
.B SANE_CONFIG_DIR
below).
-.TP
+.TP
.I @LIBDIR@/libsane\-umax_pp.a
The static library implementing this backend.
-.TP
+.TP
.I @LIBDIR@/libsane\-umax_pp.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH "ENVIRONMENT"
-.TP
+.TP
.B SANE_CONFIG_DIR
This environment variable specifies the list of directories that may
contain the configuration file. Under UNIX, the directories are
@@ -216,14 +216,14 @@ directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories "tmp/config", ".", and
"@CONFIGDIR@" being searched (in this order).
-.TP
+.TP
.B SANE_DEBUG_UMAX_PP
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. E.g.,
a value of 128 requests all debug output to be printed. Smaller
levels reduce verbosity.
-.PP
+.PP
.RS
.ft CR
.nf
@@ -239,14 +239,14 @@ level debug output
.fi
.ft R
.RE
-.PP
-.TP
+.PP
+.TP
.B SANE_DEBUG_UMAX_PP_LOW
This variable sets the debug level for the SANE interface for the Umax
ASIC. Note that enabling this will spam your terminal with some
million lines of debug output.
-.PP
+.PP
.RS
.ft CR
.nf
@@ -256,18 +256,18 @@ level debug output
1 errors
8 command blocks
16 detailed code flow
- 32 dump datafiles
+ 32 dump datafiles
255 everything
.fi
.ft R
.RE
-.PP
-
-.PP
+.PP
+
+.PP
.SH "SEE ALSO"
sane(7), sane\-net(5), saned(8)
-.TP
+.TP
For latest bug fixes and information see
.I http://umax1220p.sourceforge.net/
@@ -282,21 +282,21 @@ by William Stuart.
If something doesn't work, please contact me. But I need some information about
your scanner to be able to help you...
-.TP
+.TP
.I SANE version
run "scanimage \-V" to determine this
-.TP
+.TP
.I the backend version and your scanner hardware
run "SANE_DEBUG_UMAX_PP=255 scanimage \-L 2>log" as root. If you don't get any output
from the umax_pp backend, make sure a line "umax_pp" is included into
your @CONFIGDIR@/dll.conf.
If your scanner isn't detected, make sure you've defined the right port address, or the
-correct device
+correct device
in your umax_pp.conf.
-.TP
+.TP
.I the name of your scanner/vendor
also a worthy information. Please also include the optical resolution and lamp type of your scanner, both can be found in the manual of your scanner.
-.TP
+.TP
.I any further comments
if you have comments about the documentation (what could be done better), or you
think I should know something, please include it.
diff --git a/doc/sane-usb.man b/doc/sane-usb.man
index 8237a8a..cb65c7f 100644
--- a/doc/sane-usb.man
+++ b/doc/sane-usb.man
@@ -12,7 +12,7 @@ sanei_usb interface. However, there is one exceptions: USB Scanners
supported by the microtek2 backend need a special USB kernel
driver, see
.BR sane\-microtek2 (5)
-for details.
+for details.
.SH "QUICK START"
This is a short HOWTO-like section. For the full details, read the following
@@ -71,11 +71,11 @@ Usually udev or for older distributions the hotplug utilities are used, which
support dynamic setting of access permissions. SANE comes with udev and hotplug
scripts in the directory tools/udev and tools/hotplug. They can be used for
setting permissions, see @DOCDIR@/README.linux, tools/README and the README in
-the tools/hotplug directory for more details.
+the tools/hotplug directory for more details.
.PP
For the
.BR BSDs ,
-the device files used by libusb are named
+the device files used by libusb are named
.IR /dev/ugen* .
Use chmod to apply appropriate permissions.
@@ -114,7 +114,7 @@ usb 0x055f 0x0006
.PP
would have the effect that all USB devices in the system with a vendor id of
0x55f and a product id of 0x0006 would be probed and recognized by the
-backend.
+backend.
.PP
If your scanner is not detected automatically, it may be necessary to edit the
appropriate backend configuration file before using SANE for the first time.
@@ -138,6 +138,13 @@ environment variable controls the debug level for the USB I/O
subsystem. E.g., a value of 128 requests all debug output to be
printed. Smaller levels reduce verbosity. Values greater than 4 enable
libusb debugging (if available). Example: export SANE_DEBUG_SANEI_USB=4.
+.PP
+.TP
+.B SANE_USB_WORKAROUND
+If your scanner does not work when plugged into a USB3 port, try
+setting the environment variable SANE_USB_WORKAROUND to 1. This
+may work around issues which happen with particular kernel
+versions. Example: export SANE_USB_WORKAROUND=1.
.SH "SEE ALSO"
.BR sane (7),
diff --git a/doc/sane-v4l.man b/doc/sane-v4l.man
index c0cae22..5af92ce 100644
--- a/doc/sane-v4l.man
+++ b/doc/sane-v4l.man
@@ -83,7 +83,7 @@ Juergen G. Schimmer, Henning Meier-Geinitz
If more than one video card is present, a crash may occur. Frequency and geometry
selection is missing.
.br
-Send bug reports to the SANE mailing list: sane\-devel@lists.alioth.debian.org. You must
+Send bug reports to the SANE mailing list: sane\-devel@alioth-lists.debian.net. You must
be subscribed to the list to send mail. See
http://www.sane\-project.org/mailing\-lists.html for details.
diff --git a/doc/sane-xerox_mfp.man b/doc/sane-xerox_mfp.man
index 0ffa3e8..c03ddd4 100644
--- a/doc/sane-xerox_mfp.man
+++ b/doc/sane-xerox_mfp.man
@@ -20,7 +20,7 @@ For SCX\-4500W in network mode you need to specify
.B tcp host_address [port]
.RE
.PP
-The
+The
.B host_address
is passed through resolver, thus can be a dotted quad or a name from /etc/hosts or resolvable through DNS.
.SH FILES
@@ -39,9 +39,9 @@ support dynamic loading).
.B SANE_DEBUG_XEROX_MFP
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. Higher
-debug levels increase the verbosity of the output.
+debug levels increase the verbosity of the output.
-Example:
+Example:
export SANE_DEBUG_XEROX_MFP=4
.SH LIMITATIONS
@@ -49,7 +49,7 @@ Multicast autoconfiguration for LAN scanners is not implemented yet. IPv6 addres
.SH BUGS AND SUPPORT
If you have found a bug or need support please follow open\-source way of acquiring support via
-mail\-lists http://www.sane\-project.org/mailing\-lists.html or SANE bug tracker
+mail\-lists http://www.sane\-project.org/mailing\-lists.html or SANE bug tracker
http://www.sane\-project.org/bugs.html
.SH AUTHORS
@@ -65,4 +65,3 @@ Laxmeesh Onkar Markod <m.laxmeesh@samsung.com>
.BR sane (7),
.BR sane\-usb (5)
.br
-
diff --git a/doc/sane.man b/doc/sane.man
index 3eadf42..a9fd50a 100644
--- a/doc/sane.man
+++ b/doc/sane.man
@@ -24,33 +24,33 @@ If you have trouble getting your scanner detected, read the PROBLEMS section.
.SH TERMINOLOGY
-An application that uses the
+An application that uses the
.B SANE
-interface is called a
+interface is called a
.B SANE frontend.
-A driver that implements the
+A driver that implements the
.B SANE
interface is called a
.B SANE backend.
-A
+A
.B meta backend
provides some means to manage one or more other backends.
.SH "SOFTWARE PACKAGES"
-The package
+The package
.RB ` sane\-backends '
-contains a lot of backends, documentation (including the
+contains a lot of backends, documentation (including the
.B SANE
-standard), networking support, and the command line frontend
+standard), networking support, and the command line frontend
.RB ` scanimage '.
-The frontends
+The frontends
.RB ` xscanimage "', `" xcam "', and `" scanadf '
are included in the package
-.RB ` sane\-frontends '.
+.RB ` sane\-frontends '.
Both packages can be downloaded from the
.B SANE
-homepage
+homepage
.RI ( http://www.sane\-project.org/ ).
Information about other frontends and backends can also be found on the
.B SANE
@@ -60,15 +60,15 @@ homepage.
The following sections provide short descriptions and links to more
information about several aspects of
.B SANE.
-A name with a number in parenthesis (e.g.
+A name with a number in parenthesis (e.g.
.RB ` sane\-dll (5)')
-points to a manual page. In this case
+points to a manual page. In this case
.RB ` "man 5 sane\-dll" '
will display the page. Entries like
.RI ` @DOCDIR@/sane.tex '
are references to text files that were copied to the
.B SANE
-documentation directory
+documentation directory
.RI ( @DOCDIR@/ )
during installation. Everything else is a URL to a resource on the web.
@@ -79,9 +79,9 @@ can be found on the SANE homepage:
.IR http://www.sane\-project.org/ .
.TP
.B SANE device lists
-The
+The
.B SANE
-device lists contain information about the status of
+device lists contain information about the status of
.B SANE
support for a specific device. If your scanner is not listed there (either
supported or unsupported), please contact us. See section HOW CAN YOU HELP
@@ -100,9 +100,9 @@ unsubscribe:
.TP
.B SANE IRC channel
The IRC (Internet Relay Chat) channel #sane can be found on the Freenode
-network (irc.freenode.net). It's for discussing
+network (irc.freenode.net). It's for discussing
.B SANE
-problems, talking about development and general
+problems, talking about development and general
.B SANE
related chatting. Before asking for help, please read the other documentation
mentioned in this manual page. The channel's topic is also used for
@@ -127,13 +127,13 @@ For information about USB configuration see
.SH "FRONTENDS AND MISCELLANEOUS PROGRAMS"
.TP 2
.B scanimage
-Command-line frontend. See
+Command-line frontend. See
.BR scanimage (1).
.TP
.B saned
.B SANE
network daemon that allows remote clients to access image acquisition devices
-available on the local host. See
+available on the local host. See
.BR saned (8).
.TP
.B sane\-find\-scanner
@@ -192,7 +192,7 @@ This backend supports several Avision based scanners. This includes the
original Avision scanners (like AV 630, AV 620, ...) as well as the HP
ScanJet 53xx and 74xx series, Fujitsu ScanPartner, some Mitsubishi and
Minolta film-scanners.
-See
+See
.BR sane\-avision (5)
for details.
.TP
@@ -225,7 +225,7 @@ parallel port scanners. See
for details.
.TP
.B cardscan
-This backend provides support for Corex Cardscan USB scanners. See
+This backend provides support for Corex Cardscan USB scanners. See
.BR sane\-cardscan (5)
for details.
.TP
@@ -260,7 +260,7 @@ and adf scanners. See
for details.
.TP
.B genesys
-The genesys backend provides support for several scanners based on the Genesys Logic
+The genesys backend provides support for several scanners based on the Genesys Logic
GL646, GL841, GL843, GL847 and GL124 chips like the Medion 6471 and Hewlett-Packard 2300c.
See
.BR sane\-genesys (5)
@@ -363,7 +363,7 @@ for details.
.TP
.B microtek
The microtek backend provides access to the "second generation" Microtek
-scanners with SCSI-1 command set. See
+scanners with SCSI-1 command set. See
.BR sane\-microtek (5)
for details.
.TP
@@ -448,6 +448,12 @@ scanners: IS50 and IS60. See
.BR sane\-ricoh (5)
for details.
.TP
+.B ricoh2
+The ricoh2 backend provides access to the following Ricoh flatbed
+scanners: SG-3100SNw, SP-100SU, and SP-111SU. See
+.BR sane\-ricoh2 (5)
+for details.
+.TP
.B s9036
The s9036 backend provides access to Siemens 9036 flatbed scanners. See
.BR sane\-s9036 (5)
@@ -515,7 +521,7 @@ for details.
.TP
.B umax_pp
The sane\-umax_pp backend provides access to Umax parallel port flatbed scanners
-and the HP 3200C. See
+and the HP 3200C. See
.BR sane\-umax_pp (5)
for details.
.TP
@@ -565,12 +571,12 @@ backend. See
.BR sane\-gphoto2 (5).
.TP
.B qcam
-Backend for Connectix QuickCam cameras. See
+Backend for Connectix QuickCam cameras. See
.BR sane\-qcam (5).
.TP
.B stv680
-The sane\-st680 backend provides access to webcams with a stv680 chip. See
-.BR sane\-st680 (5)
+The sane\-stv680 backend provides access to webcams with a stv680 chip. See
+.BR sane\-stv680 (5)
for details.
.PP
Also, have a look at the backend information page at
@@ -589,7 +595,7 @@ backends by dynamic loading. See
.BR sane\-dll (5).
.TP
.B net
-The
+The
.B SANE
network daemon saned provides access to scanners located on different
computers in connection with the net backend. See
@@ -634,9 +640,9 @@ and the list of projects in
.IR @DOCDIR@/PROJECTS .
.SH "CHANGING THE TOP-LEVEL BACKEND"
-By default, all
+By default, all
.B SANE
-backends (drivers) are loaded dynamically by the
+backends (drivers) are loaded dynamically by the
.B sane\-dll
meta backend. If you have any questions about the dynamic loading,
read
@@ -655,8 +661,8 @@ It's not hard to write a
backend. It can take some time, however. You should have basic knowledge of C
and enough patience to work through the documentation and find out how your
scanner works. Appended is a list of some documents that help to write backends
-and frontends.
-.PP
+and frontends.
+.PP
The
.B SANE
standard defines the application programming interface (API) that is used to
@@ -685,7 +691,7 @@ for projects that are planned or not yet included into the
distribution and at our bug-tracking system:
.IR http://www.http://www.sane\-project.org/bugs.html .
.PP
-There are some links on how to find out about the protocol of a scanner:
+There are some links on how to find out about the protocol of a scanner:
.IR http://www.meier\-geinitz.de/sane/misc/develop.html .
.PP
@@ -731,9 +737,9 @@ If your scanner (or other device) is not connected over the SCSI bus or USB,
read the backend's manual page for details on how to set it up.
.PP
-Now your scanner is detected by the operating system but not by
+Now your scanner is detected by the operating system but not by
.BR SANE ?
-Try
+Try
.BR "scanimage \-L" .
If the scanner is not found, check that the backend's name is mentioned in
.IR @CONFIGDIR@/dll.conf .
@@ -741,7 +747,7 @@ Some backends are commented out by default. Remove the comment sign for your
backend in this case. Also some backends aren't compiled at all if one of their
prerequisites are missing. Examples include dc210, dc240, canon_pp, hpsj5s,
gphoto2, pint, qcam, v4l, net, sm3600, snapscan, pnm. If you need one of these
-backends and they aren't available, read the build instructions in the
+backends and they aren't available, read the build instructions in the
.B README
file and the individual manual pages of the backends.
.PP
@@ -761,7 +767,7 @@ debugging. The environment variables are documented in the
relevant manual pages. For example, to get the maximum amount of debug
information when testing a Mustek SCSI scanner, set environment variables
.BR SANE_DEBUG_DLL ", " SANE_DEBUG_MUSTEK ", and " SANE_DEBUG_SANEI_SCSI
-to 128 and then invoke
+to 128 and then invoke
.B scanimage
.B \-L .
The debug messages for the dll backend tell if the mustek backend was found
@@ -803,11 +809,11 @@ works and you want to use one of the graphical frontends like
.BR xscanimage ", or"
.B quiteinsane
but those frontends don't detect your scanner? One reason may be that you
-installed two versions of
+installed two versions of
.BR SANE .
-E.g. the version that was installed by your distribution in
+E.g. the version that was installed by your distribution in
.I /usr
-and one you installed from source in
+and one you installed from source in
.IR /usr/local/ .
Make sure that only one version is installed. Another possible reason is, that
your system's dynamic loader can't find the
@@ -825,7 +831,7 @@ See also the documentation of the frontends.
.SH "HOW CAN YOU HELP SANE"
We appreciate any help we can get. Please have a look at our web page about
-contributing to
+contributing to
.BR SANE :
.I http://www.sane\-project.org/contrib.html
.PP
@@ -903,6 +909,7 @@ for details).
.BR sane\-pnm (5),
.BR sane\-qcam (5),
.BR sane\-ricoh (5),
+.BR sane\-ricoh2 (5),
.BR sane\-s9036 (5),
.BR sane\-sceptre (5),
.BR sane\-scsi (5),
diff --git a/doc/sane.tex b/doc/sane.tex
index 4611797..71ff6fc 100644
--- a/doc/sane.tex
+++ b/doc/sane.tex
@@ -423,7 +423,7 @@ numbers.
frontend/backend pair is compatible. The minor version and the
build revision are used for informational and bug-fixing purposes
only.
-
+
\item[\code{\defn{SANE\_VERSION\_MAJOR}(\var{vc})}:] This macro returns the
major version number component of the version code passed in
argument \var{vc}.
@@ -574,7 +574,7 @@ typedef char SANE_Char;
Type \code{\defn{SANE\_String}} represents a text string as a sequence
of C \verb|char| values. The end of the sequence is indicated by a
-\verb|'\0'| (\defn{NUL}) character.
+\verb|'\0'| (\defn{NUL}) character.
\begin{quote}
\begin{verbatim}
typedef SANE_Char *SANE_String;
@@ -702,20 +702,20 @@ will be expanded as need arises):
\hline
\multicolumn{2}{|c|}{\bf \defn{Vendor Strings}} \\
\hline\hline
- \code{AGFA} & \code{Microtek} \\
- \code{Abaton} & \code{Minolta} \\
- \code{Acer} & \code{Mitsubishi} \\
- \code{Apple} & \code{Mustek} \\
- \code{Artec} & \code{NEC} \\
- \code{Avision} & \code{Nikon} \\
- \code{CANON} & \code{Plustek} \\
- \code{Connectix} & \code{Polaroid} \\
- \code{Epson} & \code{Relisys} \\
- \code{Fujitsu} & \code{Ricoh} \\
- \code{Hewlett-Packard} & \code{Sharp} \\
- \code{IBM} & \code{Siemens} \\
- \code{Kodak} & \code{Tamarack} \\
- \code{Lexmark} & \code{UMAX} \\
+ \code{AGFA} & \code{Microtek} \\
+ \code{Abaton} & \code{Minolta} \\
+ \code{Acer} & \code{Mitsubishi} \\
+ \code{Apple} & \code{Mustek} \\
+ \code{Artec} & \code{NEC} \\
+ \code{Avision} & \code{Nikon} \\
+ \code{CANON} & \code{Plustek} \\
+ \code{Connectix} & \code{Polaroid} \\
+ \code{Epson} & \code{Relisys} \\
+ \code{Fujitsu} & \code{Ricoh} \\
+ \code{Hewlett-Packard} & \code{Sharp} \\
+ \code{IBM} & \code{Siemens} \\
+ \code{Kodak} & \code{Tamarack} \\
+ \code{Lexmark} & \code{UMAX} \\
\code{Logitech} & \code{Noname} \\
\hline
\end{tabular}
@@ -823,29 +823,29 @@ in Table \ref{tab:valuetype}.
\hline\hline
\code{\defn{SANE\_TYPE\_BOOL}} & 0 & Option value is of type
- \verb|SANE_Bool|. \\
+ \verb|SANE_Bool|. \\
\code{\defn{SANE\_TYPE\_INT}} & 1 & Option value is of type
- \verb|SANE_Int|. \\
+ \verb|SANE_Int|. \\
\code{\defn{SANE\_TYPE\_FIXED}}&2 & Option value is of type
- \verb|SANE_Fixed|. \\
+ \verb|SANE_Fixed|. \\
\code{\defn{SANE\_TYPE\_STRING}}&3 & Option value is of type
- \verb|SANE_String|. \\
+ \verb|SANE_String|. \\
\code{\defn{SANE\_TYPE\_BUTTON}} & 4 & An option of this type has no value.
Instead, setting an option of this type has an option-specific
side-effect. For example, a button-typed option could be used by a
backend to provide a means to select default values or to the tell an
-automatic document feeder to advance to the next sheet of paper. \\
+automatic document feeder to advance to the next sheet of paper. \\
\code{\defn{SANE\_TYPE\_GROUP}} & 5 & An option of this type has no value.
This type is used to group logically related options. A group option
is in effect up to the point where another group option is encountered
(or up to the end of the option list, if there are no other group
options). For group options, only members \code{title} and
-\code{type} are valid in the option descriptor. \\
+\code{type} are valid in the option descriptor. \\
\hline
\end{tabular}
@@ -945,14 +945,14 @@ capability bitset:
\hline\hline
\code{\defn{SANE\_CAP\_SOFT\_SELECT}} & 1 & The option
- value can be set by a call to \code{sane\_con\-trol\_opt\-ion()}.\\
+ value can be set by a call to \code{sane\_con\-trol\_opt\-ion()}.\\
\code{\defn{SANE\_CAP\_HARD\_SELECT}} & 2 & The option value can be set by
user-intervention (e.g., by flipping a switch). The user-interface
should prompt the user to execute the appropriate action to set such
an option. This capability is mutually exclusive with
SANE\_CAP\_SOFT\_SELECT (either one of them can be set, but not both
- simultaneously). \\
+ simultaneously). \\
\code{\defn{SANE\_CAP\_SOFT\_DETECT}} & 4 & The option
value can be detected by software. If
@@ -961,23 +961,23 @@ capability bitset:
may or may not be set. If this capability is set but neither
\code{SANE\_CAP\_SO\-FT\_SEL\-ECT} nor \code{SANE\_CAP\_HA\-RD\_SEL\-ECT}
are, then there is no way to control the option. That is, the
- option provides read-out of the current value only. \\
+ option provides read-out of the current value only. \\
\code{\defn{SANE\_CAP\_EMULATED}} & 8 & If set, this capability indicates
that an option is not directly supported by the device and is
instead emulated in the backend. A sophisticated frontend may
elect to use its own (presumably better) emulation in lieu of an emulated
- option. \\
+ option. \\
\code{\defn{SANE\_CAP\_AUTOMATIC}} & 16 & If set, this capability indicates
that the backend (or the device) is capable to picking a reasonable
option value automatically. For such options, it is possible to
select automatic operation by calling \code{sane\_control\_option()}
- with an action value of \code{SANE\_ACTION\_SET\_AUTO}. \\
+ with an action value of \code{SANE\_ACTION\_SET\_AUTO}. \\
\code{\defn{SANE\_CAP\_INACTIVE}} & 32 & If set, this capability indicates
that the option is not currently active (e.g., because it's
- meaningful only if another option is set to some other value). \\
+ meaningful only if another option is set to some other value). \\
\code{\defn{SANE\_CAP\_ADVANCED}} & 64 &
If set, this capability indicates that the option should be
@@ -985,7 +985,7 @@ capability bitset:
displays such options in a less conspicuous way than regular options
(e.g., a command line interface may list such options last or a
graphical interface may make them available in a seperate ``advanced
- settings'' dialog).
+ settings'' dialog).
\\
\hline
@@ -1045,7 +1045,7 @@ SANE_Range;
specifies the quantization value. If $l$ is the minimum value, $u$
the maximum value and $q$ the (non-zero) quantization of a range,
then the legal values are $v=k\cdot q+l$ for all non-negative
- integer values of $k$ such that $v<=u$. \\
+ integer values of $k$ such that $v<=u$. \\
\code{\defn{SANE\_CONSTRAINT\_WORD\_LIST}} & 2 & This constraint is applicable
to integer and fixed-point valued options only. It constrains the
@@ -1055,7 +1055,7 @@ SANE_Range;
integer (\verb|SANE_Int|) that specifies the length of the list (not
counting the length itself). The remaining elements in the list are
interpreted according to the type of the option value
- (\verb|SANE_TYPE_INT| or \verb|SANE_TYPE_FIXED|). \\
+ (\verb|SANE_TYPE_INT| or \verb|SANE_TYPE_FIXED|). \\
\code{\defn{SANE\_CONSTRAINT\_STRING\_LIST}} & 3 & This constraint is
applicable to string-valued options only. It constrains the option
@@ -1288,7 +1288,7 @@ described in Table~\ref{tab:actions}.
\code{\defn{SANE\_ACTION\_SET\_VALUE}} & 1 & Set option value. The
option value passed through argument \code{v} may be modified by the
- backend if the value cannot be set exactly. \\
+ backend if the value cannot be set exactly. \\
\code{\defn{SANE\_ACTION\_SET\_AUTO}} & 2 & Turn on automatic mode. Backend
or device will automatically select an appropriate value. This mode
@@ -1862,7 +1862,7 @@ regarding these options:
\item A frontend must work properly with any or all of these options
missing.
-
+
\end{itemize}
\input{net.tex}
@@ -1873,7 +1873,7 @@ The SANE standard is discussed and evolved via a mailing list.
Anybody with email access to the Internet can automatically join and
leave the discussion group by sending mail to the following address.
\begin{quote}\index{mailing list}
-\url{sane-devel-request@lists.alioth.debian.org}
+\url{sane-devel-request@alioth-lists.debian.net}
\end{quote}
To subscribe, send a mail with the body ``\verb|subscribe sane-devel|'' to the
above address.
diff --git a/doc/saned.man b/doc/saned.man
index 7b0fa4a..d019901 100644
--- a/doc/saned.man
+++ b/doc/saned.man
@@ -1,17 +1,26 @@
-.TH saned 8 "20 Apr 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.TH saned 8 "29 Sep 2017" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX saned
.SH NAME
saned \- SANE network daemon
.SH SYNOPSIS
.B saned
-.B [ \-a
+.B [ \-a
.I [ username ]
-.B | \-d
-.I [ n ]
-.B | \-s
-.I [ n ]
-.B | \-h
.B ]
+.B [ \-u
+.I username
+.B ]
+.B [ \-b
+.I address
+.B ]
+.B [ \-l ]
+.B [ \-D ]
+.B [ \-o ]
+.B [ \-d
+.I n
+.B ]
+.B [ \-e ]
+.B [ \-h ]
.SH DESCRIPTION
.B saned
is the SANE (Scanner Access Now Easy) daemon that allows remote clients
@@ -19,59 +28,77 @@ to access image acquisition devices available on the local host.
.SH OPTIONS
.PP
The
-.B \-a
+.B \-l
flag requests that
.B saned
-run in standalone daemon mode. In this mode,
+run in standalone daemon mode. In this mode,
.B saned
-will detach from the console and run in the background, listening for incoming
-client connections;
+will listen for incoming client connections;
.B inetd
is not required for
.B saned
-operations in this mode. If the optional
-.B username
-is given after
-.B \-a
-,
+operations in this mode. The
+.B \-b
+flag tells
+.B saned
+to bind to the
+.I address
+given. The
+.B \-u
+flag requests that
.B saned
-will drop root privileges and run as this user (and group).
+drop root privileges and run as the user (and group) associated with
+.I username
+after binding.
+The
+.B \-D
+flag will request
+.B saned
+to detach from the console and run in the background.
+The flag
+.B \-a
+is equivalent to the combination of
+.B \-l \-B \-u
+.I username
+options.
.PP
The
.B \-d
-and
-.B \-s
-flags request that
-.B saned
-run in debug mode (as opposed to
-.BR inetd (8)
-daemon mode). In this mode,
+flag sets the level of
.B saned
-explicitly waits for a connection request. When compiled with
-debugging enabled, these flags may be followed by a number to request
-debug info. The larger the number, the more verbose the debug output.
-E.g.,
+debug output. When compiled with debugging enabled, this flag may be
+followed by a number to request more or less debug info. The larger
+the number, the more verbose the debug output. E.g.,
.B \-d128
-will request printing of all debug info. Debug level 0 means no debug output
-at all. The default value is 2. If flag
-.B \-d
-is used, the debug messages will be printed to stderr while
-.B \-s
-requests using syslog.
+will request output of all debug info. A level of 0 produces no
+output at all. The default value is 2.
.PP
-If
+The
+.B \-e
+flag will divert
+.B saned
+debug output to stderr instead of the syslog default.
+.PP
+The
+.B \-o
+flag requests that
.B saned
-is run from inetd, xinetd or systemd, no option can be given.
+exits after the first client disconnects. This is useful for debugging.
.PP
The
.B \-h
flag displays a short help message.
+.PP
+If
+.B saned
+is run from other programs such as inetd, xinetd and systemd, check that
+program's documentation on how to pass command-line options.
.SH CONFIGURATION
-First and foremost:
+First and foremost:
.B saned
is not intended to be exposed to the internet or other non-trusted
networks. Make sure that access is limited by tcpwrappers and/or a firewall
-setup. Don't depend only on
+setup. Don't depend only on
.BR saned 's
own authentication. Don't run
.B saned
@@ -81,7 +108,7 @@ install
.B saned
as setuid root.
.PP
-The
+The
.I saned.conf
configuration file contains both options for the daemon and the access
list.
@@ -93,6 +120,13 @@ may have performance issues. Use this option if your \fBsaned\fP
server is sitting behind a firewall. If that firewall is a Linux
machine, we strongly recommend using the Netfilter
\fInf_conntrack_sane\fP module instead.
+.TP
+\fBdata_connect_timeout\fP = \fItimeout\fP
+Specify the time in milliseconds that saned will wait for a data
+connection. Without this option, if the data connection is not done
+before the scanner reaches the end of scan, the scanner will continue
+to scan past the end and may damage it depending on the
+backend. Specify zero to have the old behavior. The default is 4000ms.
.PP
The access list is a list of host names, IP addresses or IP subnets
(CIDR notation) that are permitted to use local SANE devices. IPv6
@@ -131,21 +165,21 @@ identical to ahost.com.
.SH SERVER DAEMON CONFIGURATION
For
.B saned
-to work properly in its default mode of operation, it is also necessary to
-add the appropriate configuration for
+to work properly in its default mode of operation, it is also necessary to
+add the appropriate configuration for
.I (x)inetd or systemd.
(see below).
Note that your inetd must support IPv6 if you
-want to connect to saned over IPv6 ; xinetd, openbsd-inetd and systemd
+want to connect to saned over IPv6 ; xinetd, openbsd-inetd and systemd
are known to support IPv6, check the documentation for your inetd daemon.
.PP
-In the sections below the configuration for
+In the sections below the configuration for
.I inetd, xinetd
and
.I systemd
are described in more detail.
.PP
-For the configurations below it is necessary to add a line of the following
+For the configurations below it is necessary to add a line of the following
form to
.IR /etc/services :
.PP
@@ -153,7 +187,7 @@ form to
sane\-port 6566/tcp # SANE network scanner daemon
.RE
.PP
-The official IANA short name for port 6566 is "sane\-port". The older name
+The official IANA short name for port 6566 is "sane\-port". The older name
"sane" is now deprecated.
.SH INETD CONFIGURATION
It is required to add a single line to the inetd configuration file
@@ -183,22 +217,22 @@ Note that both examples assume that there is a
.B saned
group and a
.B saned
-user. If you follow this example, please make sure that the
+user. If you follow this example, please make sure that the
access permissions on the special device are set such that
.B saned
can access the scanner (the program generally needs read and
write access to scanner devices).
.SH XINETD CONFIGURATION
If xinetd is installed on your system instead of inetd the following example
-for
-.I /etc/xinetd.conf
+for
+.I /etc/xinetd.conf
may be helpful:
.PP
.RS
.ft CR
.nf
# default: off
-# description: The sane server accepts requests
+# description: The sane server accepts requests
# for network access to a local scanner via the
# network.
service sane\-port
@@ -214,14 +248,14 @@ service sane\-port
.ft R
.RE
.SH SYSTEMD CONFIGURATION
-Saned can be compiled with explicit systemd support. This
+Saned can be compiled with explicit systemd support. This
will allow logging debugging information to be forwarded
to the systemd journal. The systemd support
requires compilation with the systemd-devel package
installed on the system. this is the preferred option.
-Saned can be used wih systemd without the systemd integration
-compiled in, but then logging of debug information is not supported.
+Saned can be used wih systemd without the systemd integration
+compiled in, but then logging of debug information is not supported.
The systemd configuration is different for the 2 options, so
both are described below.
@@ -229,8 +263,8 @@ both are described below.
for the systemd configuration we need to add 2 configuration files in
.I /etc/systemd/system.
.PP
-The first file we need to add here is called
-.I saned.socket.
+The first file we need to add here is called
+.I saned.socket.
It shall have
the following contents:
.PP
@@ -251,8 +285,8 @@ WantedBy=sockets.target
.ft R
.RE
.PP
-The second file to be added is
-.I saned@.service
+The second file to be added is
+.I saned@.service
with the following contents:
.PP
.RS
@@ -269,7 +303,7 @@ Group=saned
StandardInput=null
StandardOutput=syslog
StandardError=syslog
-Environment=SANE_CONFIG_DIR=@CONFIGDIR@
+Environment=SANE_CONFIG_DIR=@CONFIGDIR@
# If you need to debug your configuration uncomment the next line and
# change it as appropriate to set the desired debug options
# Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_BJNP=5
@@ -280,21 +314,21 @@ Also=saned.socket
.ft R
.RE
.PP
-You need to set an environment variable for
+You need to set an environment variable for
.B SANE_CONFIG_DIR
pointing to the directory where saned can find its configuration files.
-you will have to remove the # on the last line and set the variables
-for the desired debugging information if required. Multiple variables
-can be set by separating the assignments by spaces as shown in the
+you will have to remove the # on the last line and set the variables
+for the desired debugging information if required. Multiple variables
+can be set by separating the assignments by spaces as shown in the
example above.
.PP
-Unlike
+Unlike
.I (x)inetd
, systemd allows debugging output from backends set using
.B SANE_DEBUG_XXX
to be captured. See the man-page for your backend to see what options
are supported.
-With the service unit as described above, the debugging output is
+With the service unit as described above, the debugging output is
forwarded to the system log.
.SH Systemd configuration when saned is compiled without systemd support
@@ -305,7 +339,7 @@ for systemd configuration for saned, we need to add 2 configuration files in
.I /etc/systemd/system.
.PP
The first file we need to add here is called
-.I saned.socket.
+.I saned.socket.
It is identical to the version for systemd with the support compiled in.
It shall have the following contents:
.PP
diff --git a/doc/scanimage.man b/doc/scanimage.man
index 4d47eb8..83624a4 100644
--- a/doc/scanimage.man
+++ b/doc/scanimage.man
@@ -11,7 +11,7 @@ scanimage \- scan an image
.RB [ \-i | \-\-icc\-profile
.IR profile ]
.RB [ \-L | \-\-list\-devices ]
-.RB [ \-f | \-\-formatted\-device\-list
+.RB [ \-f | \-\-formatted\-device\-list
.IR format ]
.RB [ \-b | \-\-batch
.RI [= format ]]
@@ -24,6 +24,7 @@ scanimage \- scan an image
.RB [ \-\-batch\-double ]
.RB [ \-\-accept\-md5\-only ]
.RB [ \-p | \-\-progress ]
+.RB [ \-o | \-\-output-file ]
.RB [ \-n | \-\-dont\-scan ]
.RB [ \-T | \-\-test ]
.RB [ \-A | \-\-all-options ]
@@ -84,9 +85,9 @@ or
.B \-\-device\-name
options must be followed by a
.B SANE
-device-name like
+device-name like
.RI ` epson:/dev/sg0 '
-or
+or
.RI ` hp:/dev/usbscanner0 '.
A (partial) list of available devices can be obtained with the
.B \-\-list\-devices
@@ -94,14 +95,15 @@ option (see below). If no device-name is specified explicitly,
.B scanimage
reads a device-name from the environment variable
.BR SANE_DEFAULT_DEVICE .
-If this variable is not set,
+If this variable is not set,
.B scanimage
will attempt to open the first available device.
.PP
The
-.B \-\-format
+.B \-\-format
.I format
-option selects how image data is written to standard output.
+option selects how image data is written to standard output or the file specified by
+the \-\-output\-file option.
.I format
can be
.BR pnm ,
@@ -111,7 +113,7 @@ or
.BR jpeg .
If
.B \-\-format
-is not used, PNM is written.
+is not specified, PNM is written by default.
.PP
The
.B \-i
@@ -126,7 +128,7 @@ or
option requests a (partial) list of devices that are available. The
list is not complete since some devices may be available, but are not
listed in any of the configuration files (which are typically stored
-in directory
+in directory
.IR @CONFIGDIR@ ).
This is particularly the case when accessing scanners through the network. If
a device is not listed in a configuration file, the only way to access it is
@@ -161,7 +163,7 @@ SCSI, produced by SHARP
The
.B \-\-batch*
options provide the features for scanning documents using document
-feeders.
+feeders.
.BR \-\-batch
.RI [ format ]
is used to specify the format of the filename that each page will be written
@@ -169,6 +171,7 @@ to. Each page is written out to a single file. If
.I format
is not specified, the default of out%d.pnm (or out%d.tif for \-\-format tiff,
out%d.png for \-\-format png or out%d.jpg for \-\- format jpeg) will be used.
+This option is incompatible with the \-\-output\-path option.
.I format
is given as a printf style string with one integer parameter.
.B \-\-batch\-start
@@ -177,11 +180,11 @@ selects the page number to start naming files with. If this option is not
given, the counter will start at 1.
.B \-\-batch\-count
.I count
-specifies the number of pages to attempt to scan. If not given,
+specifies the number of pages to attempt to scan. If not given,
scanimage will continue scanning until the scanner returns a state
other than OK. Not all scanners with document feeders signal when the
ADF is empty, use this command to work around them.
-With
+With
.B \-\-batch\-increment
.I increment
you can change the amount that the number in the filename is incremented
@@ -211,10 +214,20 @@ option requests that
.B scanimage
prints a progress counter. It shows how much image data of the current image has
already been received by
-.B scanimage
+.B scanimage
(in percent).
.PP
The
+.B \-o
+or
+.B \-\-output\-file
+option requests that
+.B scanimage
+saves the scanning output to the given path. This option is incompatible with the
+\-\-batch option. The program will try to guess \-\-format from the file name.
+If that is not possible, it will print an error message and exit.
+.PP
+The
.B \-n
or
.B \-\-dont\-scan
@@ -265,7 +278,7 @@ level.
.PP
The
.B \-B
-option without argument changes the input buffer size from the default 32KB to 1MB. For finer grained control, use
+option without argument changes the input buffer size from the default 32KB to 1MB. For finer grained control, use
.B \-\-buffer-size=
followed by the number of KB.
.PP
@@ -426,7 +439,7 @@ is possible to specify multiple such linear segments. For example,
"[0]3-[2]3-[6]7,[7]10-[9]6" is equivalent to "3,3,3,4,5,6,7,10,8,6".
The program
.B gamma4scanimage
-can be used to generate such gamma tables (see
+can be used to generate such gamma tables (see
.BR gamma4scanimage (1)
for details).
.RE
@@ -440,7 +453,7 @@ for details).
The description above is an example of an option that takes an
arbitrary string value (which happens to be a filename). Again,
the value in brackets show that the option is current set to the
-filename
+filename
.BR /tmp/input.ppm .
.RE
diff --git a/doc/sceptre/s1200.txt b/doc/sceptre/s1200.txt
index ade81db..2dc100a 100644
--- a/doc/sceptre/s1200.txt
+++ b/doc/sceptre/s1200.txt
@@ -30,13 +30,13 @@ Vendor Spec
02 00 00 00 04 00
Get 4 bytes of status. Used to check the button.
Default result when the button is not pressed
- 06 00 00 00
+ 06 00 00 00
INQUIRY
result:
- 06 00 02 02 30 00 00 10 4b 49 4e 50 4f 20 20 20 ....0...KINPO
- 56 69 76 69 64 73 63 61 6e 20 53 31 32 30 20 20 Vividscan S120
- 53 31 33 20 20 20 20 20 02 01 00 00 4a 45 46 46 S13 ....JEFF
+ 06 00 02 02 30 00 00 10 4b 49 4e 50 4f 20 20 20 ....0...KINPO
+ 56 69 76 69 64 73 63 61 6e 20 53 31 32 30 20 20 Vividscan S120
+ 53 31 33 20 20 20 20 20 02 01 00 00 4a 45 46 46 S13 ....JEFF
...
MODE SEL
@@ -55,15 +55,15 @@ SET WINDOW
24 00 00 00 00 00 00 00 52 00
The window size is always 0x52 bytes. The parameters look standard:
- X/Y resolution |
- - Upper left X,Y |- all three coded in 600 dpi units
+ - Upper left X,Y |- all three coded in 600 dpi units
- Width, Length |
-
+
The supported scan modes are:
- lineart image comp=0, halftone=0, depth=1
- halftone image comp=0, haltone=1 to 4, depth=1
- grayscale image comp=2, halftone=0, depth=8
- color image comp=5, halftone=0, depth=24
-
+
Y resolution is not used (X is also used for Y)
X resolution is limited to 600 (if above, scanner defaults to 600)
Y resolution is limited to 1200 (if above, scanner defaults to 1200)
@@ -105,5 +105,3 @@ The shifts are:
50 0
Some resolution give garbage. However that table might not be complete.
-
-
diff --git a/doc/teco/teco1.txt b/doc/teco/teco1.txt
index d555e9e..47519fa 100644
--- a/doc/teco/teco1.txt
+++ b/doc/teco/teco1.txt
@@ -6,8 +6,8 @@
Relisys RELI 2412 (no ADF, no transparency adapter)
single pass scanner - 300*1200 dpi - 8.5*14
Inquiry:
- 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
- 016: 56 4d 33 35 33 30 2b 20 20 20 20 20 20 20 20 20 VM3530+
+ 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
+ 016: 56 4d 33 35 33 30 2b 20 20 20 20 20 20 20 20 20 VM3530+
032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V
048: 4d 33 35 33 41 M353A
Inquiry page 0x82
@@ -16,16 +16,16 @@ Inquiry page 0x82
AVEC Colour 2412
three pass scanner - 300*600 dpi - 8.5*14
- 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
- 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
+ 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
+ 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V
048: 4d 33 35 32 41 M352A
Avec Color Office 2400 (no ADF, no transparency adapter)
three pass scanner - 300*600 dpi - 8.5*14
Inquiry:
- 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
- 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
+ 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0...
+ 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner
032: 32 2e 30 34 32 2e 30 34 02 00 54 45 43 4f 20 56 2.042.04..TECO V
048: 4d 33 35 32 30 M3520
Inquiry page 0x82
@@ -33,8 +33,8 @@ Inquiry page 0x82
016: 20 56 32 2e 30 34 V2.04
RELI 4830 (no ADF, with transparency adapter)
- 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
- 016: 52 45 4c 49 20 34 38 33 30 20 20 20 20 20 20 20 RELI 4830
+ 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS
+ 016: 52 45 4c 49 20 34 38 33 30 20 20 20 20 20 20 20 RELI 4830
032: 31 2e 30 33 31 2e 30 33 02 00 54 45 43 4f 20 56 1.031.03..TECO V
048: 4d 34 35 34 32 M4542
Inquiry page 0x82
@@ -42,9 +42,9 @@ Inquiry page 0x82
016: 20 56 31 2e 30 33 V1.03
Dextra DF-600P - VM3510
- 000: 06 00 02 02 24 00 00 10 44 46 2D 36 30 30 4D 20 ....$...DF-600M
- 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
- 032: 31 2E 31 37 31 2E 31 37 02 1.171.17.
+ 000: 06 00 02 02 24 00 00 10 44 46 2D 36 30 30 4D 20 ....$...DF-600M
+ 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 032: 31 2E 31 37 31 2E 31 37 02 1.171.17.
/*--------------------------------------------------------------------------*/
@@ -54,13 +54,13 @@ SCSI commands supported by the RELISYS VM3530+:
TEST UNIT READY
00 00 00 00 00 00
-REQ SENSE
+REQ SENSE
03 00 00 00 12 00
VENDOR-09
09 00 00 78 00 00
- 3-4 = length of data to receive. Always 30720 bytes.
- Probably 12 lines of calibration at 300dpi.
+ 3-4 = length of data to receive. Always 30720 bytes.
+ Probably 12 lines of calibration at 300dpi.
8.5*300*12=30600
VENDOR-0E (?)
@@ -77,21 +77,21 @@ INQUIRY:
page 0x82 (vendor specific) - real scanner name with version
0-3 = page header
- 4 = string length
+ 4 = string length
5-21 = real scanner name with version
MODE SELECT
15 10 00 00 18 00
always sends:
- 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 01
- 03 06 02 00 00 01 00 00
+ 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 01
+ 03 06 02 00 00 01 00 00
SCAN
1B 00 00 00 00 00
SET WINDOW
-24 00 00 00 00 00 00 00 63 00
+24 00 00 00 00 00 00 00 63 00
Total length is 99
07 = length (99-8 = 91)
10-11 = X Resolution
@@ -116,7 +116,7 @@ Total length is 99
0x06 = 8 X 8 Smooth
0x07 = 8 X 8 Horizontal
0x08 = 8 X 8 Vertical
- 37 =
+ 37 =
0x80 = RIF (VM353A only?)
63 = calibration?
0x00 yes
@@ -127,9 +127,9 @@ Total length is 99
93 =
0x80 = ? (seems to activate a contrast value on VM353A)
- 37, 55, 57, 59, 61, 65, 67, 69, 71, 73, 75, 77, 79 = 0x80
+ 37, 55, 57, 59, 61, 65, 67, 69, 71, 73, 75, 77, 79 = 0x80
85, 89, 93, 97 = 0xff
-
+
READ
28 00 00 00 00 00 00 00 3E 00
6-8 = length
@@ -147,10 +147,10 @@ GET DATA BUFFER STATUS
returned buffer is 0x10 bytes long.
0-2 = additional length (0x10-3 = 0x0D)
3 = reserved(?)
- 8 = ?
+ 8 = ?
9-11 = filled data buffer
12-13 = number of lines (constant during a scan)
- 14-15 = bytes per line (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
/*--------------------------------------------------------------------------*/
diff --git a/doc/teco/teco2.txt b/doc/teco/teco2.txt
index 5b64a83..b45b795 100644
--- a/doc/teco/teco2.txt
+++ b/doc/teco/teco2.txt
@@ -4,15 +4,15 @@
INQUIRY
TECO VM3564 (1)
-000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
-016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
+000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
032: 31 2e 30 37 31 2e 30 37 00 01 54 45 43 4f 20 56 1.071.07..TECO V
048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X..
064: 0d af 01 2c 00 08 01 00 ...,....
TECO VM3564 (2)
-000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
-016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
+000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS
+016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3
032: 31 2e 30 39 31 2e 30 39 00 01 54 45 43 4f 20 56 1.091.09..TECO V
048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X..
064: 0d af 01 2c 00 08 01 00 ...,....
@@ -25,21 +25,21 @@ TECO VM356A (1)
064: 0d af 01 2c 00 08 01 00 ...,....
TECO VM356A (2)
-000: 06 00 02 02 43 00 00 10 50 72 69 6d 61 78 20 20 ....C...Primax
-016: 4a 65 77 65 6c 20 20 20 20 20 20 20 20 20 20 20 Jewel
+000: 06 00 02 02 43 00 00 10 50 72 69 6d 61 78 20 20 ....C...Primax
+016: 4a 65 77 65 6c 20 20 20 20 20 20 20 20 20 20 20 Jewel
032: 31 2e 30 31 31 2e 30 31 00 01 54 45 43 4f 20 56 1.011.01..TECO V
048: 4d 33 35 36 41 20 00 01 01 2c 00 01 02 58 09 f6 M356A ...,...X..
064: 0d af 01 2c 00 08 01 00 ...,....
TECO VM3575
-000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
-016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
+000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
+016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V
048: 4d 33 35 37 35 20 00 01 01 2c 00 01 02 58 09 f6 M3575 ...,...X..
064: 0d af 01 2c 00 08 01 00 ...,....
TECO VM656A
-000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS
+000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS
016: 41 50 4f 4c 4c 4f 20 45 78 70 72 65 73 73 20 36 APOLLO Express 6
032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V
048: 4d 36 35 36 41 00 01 01 2c 00 01 02 58 09 f6 0d M656A...,...X...
@@ -53,8 +53,8 @@ TECO VM6575
064: 0d af 01 2c 00 08 01 00 ...,....
TECO VM6586
-000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
-016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
+000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C...
+016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner
032: 33 2e 30 31 33 2e 30 31 00 01 54 45 43 4f 20 56 3.013.01..TECO V
048: 4d 36 35 38 36 20 00 01 01 2c 00 01 02 58 09 f6 M6586 ...,...X..
064: 0d af 01 2c 00 08 01 00 ...,....
@@ -93,7 +93,7 @@ Set calibration. Apparently the line is computed from the calibration lines. It
INQUIRY
-12 00 00 00 48 00
+12 00 00 00 48 00
standard inquiry
72 bytes
32-39: firmware version
@@ -123,8 +123,8 @@ SET WINDOW
24 00 00 00 00 00 00 00 35 00 (VM3575)
24 00 00 00 00 00 00 00 38 00 (VM6586)
-Total length is
- 07 = length
+Total length is
+ 07 = length
VM3575 53-8 = 45
VM6586 56-8 = 48
VM3552 69-8 = 61
@@ -142,11 +142,11 @@ Total length is
34 = bit depth? - invariant, always 8
36 = (vm6586 only ?) halftone pattern ?
1 = type 1 dithering
- 37 =
+ 37 =
0x80 = RIF?
48 = color channel to use
if scan mode is 0 or 2:
- 0x00 = red
+ 0x00 = red
0x01 = green
0x02 = blue
if scan mode is 05 -> ignored
@@ -161,10 +161,10 @@ Total length is
READ
28 00 00 00 00 19 00 1f 0e 00
5 = number of lines to read
- 7-8 = buffer size.
+ 7-8 = buffer size.
Always number of lines to read * size of a line.
0x2000 appears to be the upper limit
-
+
SEND
2A 00 03 00 00 04 00 0C 00 00
@@ -194,7 +194,7 @@ GET DATA BUFFER STATUS
7 = ? always 0x14
11 = bit 7 - (maybe) scanner is ready to send data
12-13 = number of lines (constant during a scan)
- 14-15 = bytes per line (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
16-17 = garbage (the command only returns 0x10 bytes)
@@ -236,32 +236,31 @@ TECO VM656A reads 8 lines of calibration
TECO VM6586 ??
Algorithms used (text from Alex Wulms):
-The old algorithm was based on the assumption that the calibration value needs
-to be an offset, to go from the value obtained during input to the average
+The old algorithm was based on the assumption that the calibration value needs
+to be an offset, to go from the value obtained during input to the average
value (0x800).
-E.g., if the input value is 0x800, the calibration value must be 0x800 (0x1000
+E.g., if the input value is 0x800, the calibration value must be 0x800 (0x1000
- 0x800).
-Likewise, if the input value is 0x700, the calibration value must be 0x900
+Likewise, if the input value is 0x700, the calibration value must be 0x900
(0x1000 - 0x700)
And if the input value is 0x600, the calibration value must be 0xA00
-The new algorithm is based on the assumption that the calibration needs to be
-a multiplication factor, to compensate for the too strong or too weak pixel
-in the sensor. Again, we want to obtain the average value (approximately
+The new algorithm is based on the assumption that the calibration needs to be
+a multiplication factor, to compensate for the too strong or too weak pixel
+in the sensor. Again, we want to obtain the average value (approximately
0x800) for every pixel read during calibration.
-E.g., if the input value is 0x800, the calibration value must be 0x800
+E.g., if the input value is 0x800, the calibration value must be 0x800
(0x800*0x800 / 0x800).
-Likewise, if the input value is 0x700, the calibration value must be 0x924
+Likewise, if the input value is 0x700, the calibration value must be 0x924
(0x800*0x800 / 0x700).
-And if the input value is 0x600, the calibration value must 0xAAA (0x800*0x800
+And if the input value is 0x600, the calibration value must 0xAAA (0x800*0x800
/ 0x600)
-Though, carefull comparison with scans done under windows has shown that the
-factor is slightly different from 0x800*0x800(=0x400000) but in stead it
-seems to be approximately 0x40302f (which would mean that the average value
+Though, carefull comparison with scans done under windows has shown that the
+factor is slightly different from 0x800*0x800(=0x400000) but in stead it
+seems to be approximately 0x40302f (which would mean that the average value
is approximately 0x803 in stead of 0x800).
Hope this is clarifies the new algorithm.
-
diff --git a/doc/teco/teco3.txt b/doc/teco/teco3.txt
index bc6391f..c263f95 100644
--- a/doc/teco/teco3.txt
+++ b/doc/teco/teco3.txt
@@ -7,7 +7,7 @@ sharing features of both. Hence a third backend.
PIOTECH 3024 (TECO Scorpio/Taurus Infinity VM3552):
- 000: 06 00 02 02 43 00 00 10 20 20 20 20 20 20 20 20 ....C...
+ 000: 06 00 02 02 43 00 00 10 20 20 20 20 20 20 20 20 ....C...
016: 46 6c 61 74 2d 62 65 64 20 73 63 61 6e 6e 65 72 Flat-bed scanner
032: 35 2e 30 38 35 2e 30 38 03 02 54 45 43 4f 20 56 5.085.08..TECO V
048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,......
@@ -41,13 +41,13 @@ SCSI commands supported by the RELISYS VM3530+:
TEST UNIT READY
00 00 00 00 00 00
-REQ SENSE
+REQ SENSE
03 00 00 00 12 00
VENDOR-09
09 00 00 78 00 00
- 3-4 = length of data to receive. Always 30720 bytes.
- Probably 12 lines of calibration at 300dpi.
+ 3-4 = length of data to receive. Always 30720 bytes.
+ Probably 12 lines of calibration at 300dpi.
8.5*300*12=30600
VENDOR-0E (?)
@@ -91,7 +91,7 @@ Total length is 99
0x06 = 8 X 8 Smooth
0x07 = 8 X 8 Horizontal
0x08 = 8 X 8 Vertical
- 37 =
+ 37 =
0x80 = RIF ?
48 = color channel to use
if scan mode is 0 or 2:
@@ -105,7 +105,7 @@ Total length is 99
02 = no
53, 57, 61, 65: 0xff
-
+
READ
28 00 00 00 00 00 00 00 3E 00
6-8 = length
@@ -130,7 +130,7 @@ GET DATA BUFFER STATUS
6-8 = scanner memory (with no RAM, it is 32KB on the VM3552)
9-11 = filled data buffer
12-13 = number of lines (constant during a scan)
- 14-15 = bytes per line (constant during a scan)
+ 14-15 = bytes per line (constant during a scan)
16 = ?
17 = in color mode, 0x07 seems to means to the colors are shifted
and given by rasters. 0x00 seems to mean that there is no
@@ -163,4 +163,3 @@ park the CCD:
OBJECT POSITION
/*--------------------------------------------------------------------------*/
-
diff --git a/doc/umax/negative-types.txt b/doc/umax/negative-types.txt
index c1f26ce..142807f 100644
--- a/doc/umax/negative-types.txt
+++ b/doc/umax/negative-types.txt
@@ -12,4 +12,3 @@ konica 38% 21% 14% 3% 0% 0%
---------------------------------------------------------------
agfa 61% 24% 13% 6% 2% 0%
---------------------------------------------------------------
-
diff --git a/doc/umax/sane-umax-advanced-options-doc.html b/doc/umax/sane-umax-advanced-options-doc.html
index dd2277b..fa29952 100644
--- a/doc/umax/sane-umax-advanced-options-doc.html
+++ b/doc/umax/sane-umax-advanced-options-doc.html
@@ -64,7 +64,7 @@ Supported scanners:
<li><a href="http://www.xsane.org/">XSane homepage</a></li>
</ul>
<br>
-</td>
+</td>
<td VALIGN=TOP BGCOLOR="#FFFFFF">
<blockquote>
diff --git a/doc/umax/sane-umax-config-doc.html b/doc/umax/sane-umax-config-doc.html
index c5f43b1..a269079 100644
--- a/doc/umax/sane-umax-config-doc.html
+++ b/doc/umax/sane-umax-config-doc.html
@@ -194,7 +194,7 @@ with the calibration please enable debug output.
<p>
<i>calibration-full-ccd</i>:<br>
The calibration can be done for each element of the CCD (1)
-or for each pixel of the requested image(0).
+or for each pixel of the requested image(0).
The value -1 enables the value defined in the driver.
<p>
<i>calibration-width-offset</i>:<br>
@@ -205,7 +205,7 @@ The value -1 enables the value defined in the driver.
<i>calibration-bytes-pixel</i>:<br>
Some scanners use 1 byte calibration data although the
scanner supports more than 8 bits/pixel. You can define
-1 or 2 bytes per pixel calinration data.
+1 or 2 bytes per pixel calinration data.
The value -1 enables the value defined in the driver.
<p>
<i>invert-shading-data</i>:<br>
diff --git a/doc/umax/sane-umax-mirage-doc.html b/doc/umax/sane-umax-mirage-doc.html
index 7c81b43..5d15982 100644
--- a/doc/umax/sane-umax-mirage-doc.html
+++ b/doc/umax/sane-umax-mirage-doc.html
@@ -278,4 +278,3 @@ Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
</body>
</html>
-
diff --git a/doc/umax/sane-umax-standard-options-doc.html b/doc/umax/sane-umax-standard-options-doc.html
index da0ade3..b80ca40 100644
--- a/doc/umax/sane-umax-standard-options-doc.html
+++ b/doc/umax/sane-umax-standard-options-doc.html
@@ -64,7 +64,7 @@ Supported scanners:
<li><a href="http://www.xsane.org/">XSane homepage</a></li>
</ul>
<br>
-</td>
+</td>
<td VALIGN=TOP BGCOLOR="#FFFFFF">
<br>
@@ -271,4 +271,3 @@ Author: <a href="mailto:Oliver.Rauch@rauch-domain.de">Oliver Rauch</a>
</body>
</html>
-
diff --git a/doc/umax/umax.BUGS b/doc/umax/umax.BUGS
index 90af9b8..37e55da 100644
--- a/doc/umax/umax.BUGS
+++ b/doc/umax/umax.BUGS
@@ -9,4 +9,3 @@ KNOWN BUGS:
* pixel count in x-direction is sometimes wrong if xres > 600dpi (Vista S12)
* first scan with Astra 2400S produces wrong colors
-
diff --git a/doc/umax/umax.CHANGES b/doc/umax/umax.CHANGES
index 77d8d62..79cca89 100644
--- a/doc/umax/umax.CHANGES
+++ b/doc/umax/umax.CHANGES
@@ -101,7 +101,7 @@ sane-0.6 / 0.61 / 0.62 -> 0.63
* added support for each color (R,G,B) for highlight and shadow
- * added "Astra 1200S" and "UC840" as supported
+ * added "Astra 1200S" and "UC840" as supported
* added bad bugfix for preview-problem with S6E
(in umax-scsi.c function start_scan)
@@ -344,7 +344,7 @@ sane-0.70/0.71 -> 0.72
* combined bind for highlight, shadow, analog-gamma and new
exposure time functions to rgb-bind
-
+
* added set_WD_line_arrangement(buffer_r, WD_line_arrengement_by_driver);
if driver is doing color-ordering from line to pixel
@@ -423,11 +423,11 @@ sane-0.73 -> 0.74
* added sigterm_handler for umax_reader_process
changed sane_canel, do_canel and do_eof(=close_pipe),
cancel now works!
-
+
* changed trim_rowbufsize that made problems with SGI,
there has been an overflow because of big buffersize
-
+
sane-0.74 -> 1.00 (build 0)
---------------------------
@@ -682,7 +682,7 @@ build-15 -> build-16
* OPT_SOURCE: removed change of width/height and "*info |= SANE_INFO_RELOAD_PARAMS;"
from get_value to set_value and added "*info |= SANE_INFO_RELOAD_OPTIONS;"
-
+
build-16 -> build-17
--------------------
@@ -782,7 +782,7 @@ build-21 -> build-22
scsi-read commands, it also is possible to give
bothe scanners different scsi command queueing depth).
- * prepared replacement of pipe by sanei_ipc_* routines
+ * prepared replacement of pipe by sanei_ipc_* routines
* added routines umax_get_lamp_status and umax_set_lamp_status
@@ -826,7 +826,7 @@ build-22 -> build-23
* for Astra 2200 selection for different x/y resolutions is disabled
-
+
build-23 -> build-24 (sane-1.0.4)
--------------------
@@ -837,8 +837,8 @@ build-23 -> build-24 (sane-1.0.4)
* enabled lamp control for Astra 2100S
* Added warning in sane_control_option if option could not be set
-
-
+
+
build-24 -> build-25
--------------------
@@ -906,7 +906,7 @@ build-24 -> build-25
* added #define SANE_I18N(text) text to umax.c. This is to mark the backend
specific texts that shall be translated by the frontend
-
+
build-25 -> build-26
--------------------
@@ -925,11 +925,11 @@ build-25 -> build-26
* changed some static unsigned int to static int
- * sane_exit does free devlist
+ * sane_exit does free devlist
* added some options for Powerlook 3000 - still is not completly supported
-
+
build-26 -> build-27
--------------------
@@ -940,7 +940,7 @@ build-26 -> build-27
* changed default minimum scsi buffer size from 64KB to 32 KB
-
+
build-27 -> build-28
--------------------
@@ -967,7 +967,7 @@ build-27 -> build-28
* added Heidelberg Linoscan 1400 "HDM LS4H1S" as supported scanner
-
+
build-28 -> build-29
--------------------
@@ -1026,10 +1026,10 @@ build-32 -> build-33
* added USB support for Astra 2200
thanks to Frank Zago <fzago@greshamstorage.com>
for creating umax-usb.c and suggesting several changes to umax.c
-
+
* added umax.conf option "connection-type", values: 1=scsi, 2=usb
- * added umax.conf device selection "usb 0x1606 0x0230" (usb vendor_id product_id)
+ * added umax.conf device selection "usb 0x1606 0x0230" (usb vendor_id product_id)
* removed #ifdef HAVE_SANEI_IPC parts (SANEI_IPC was never defined)
@@ -1169,4 +1169,3 @@ build-44 -> build-45
* added defualt options for Linotype Opal2
* changed bug in highlight-blue function (using green value)
-
diff --git a/doc/umax/umax.FAQ b/doc/umax/umax.FAQ
index 0901a2c..2ffbdfd 100644
--- a/doc/umax/umax.FAQ
+++ b/doc/umax/umax.FAQ
@@ -39,7 +39,7 @@ A: There are at least two kind of scsi controller cards that
On linux you may have the chance to get it work with the recent
g_NCR5380-driver. The card does not have IRQ/DMA.
- Try the following option for kernel: dtc3181e=0x280,255
+ Try the following option for kernel: dtc3181e=0x280,255
or use the following command:
insmod g_NCR5380 ncr_irq=255 ncr_addr=0x280 dtc3181e=1
@@ -143,5 +143,3 @@ A: The optimization set by "-O2" makes problems, try which one of the following
You find a lot of tips and informations in the internet. E.g. take a look
at http://www.scantips.com
-
-
diff --git a/doc/umax/umax.TODO b/doc/umax/umax.TODO
index 6af64b6..0d6f5a9 100644
--- a/doc/umax/umax.TODO
+++ b/doc/umax/umax.TODO
@@ -19,4 +19,3 @@ TODO UMAX BACKEND FOR SANE
- I will NOT add support for parallel-port and USB scanners to this backend!
Don`t ask for it.
-
diff --git a/frontend/.gitignore b/frontend/.gitignore
new file mode 100644
index 0000000..90f73a9
--- /dev/null
+++ b/frontend/.gitignore
@@ -0,0 +1,2 @@
+saned
+scanimage
diff --git a/frontend/Makefile.in b/frontend/Makefile.in
deleted file mode 100644
index 9ea467f..0000000
--- a/frontend/Makefile.in
+++ /dev/null
@@ -1,804 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-EXTRA_PROGRAMS = test$(EXEEXT) tstbackend$(EXEEXT) $(am__EXEEXT_1)
-bin_PROGRAMS = scanimage$(EXEEXT)
-@COMPILE_SANED_TRUE@sbin_PROGRAMS = saned$(EXEEXT)
-@COMPILE_SANED_FALSE@am__append_1 = saned
-subdir = frontend
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-@COMPILE_SANED_FALSE@am__EXEEXT_1 = saned$(EXEEXT)
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"
-PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
-am_saned_OBJECTS = saned.$(OBJEXT)
-saned_OBJECTS = $(am_saned_OBJECTS)
-am__DEPENDENCIES_1 =
-saned_DEPENDENCIES = ../backend/libsane.la ../sanei/libsanei.la \
- ../lib/liblib.la $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-am_scanimage_OBJECTS = scanimage.$(OBJEXT) sicc.$(OBJEXT) \
- stiff.$(OBJEXT)
-scanimage_OBJECTS = $(am_scanimage_OBJECTS)
-scanimage_DEPENDENCIES = ../backend/libsane.la ../sanei/libsanei.la \
- ../lib/liblib.la $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_test_OBJECTS = test.$(OBJEXT)
-test_OBJECTS = $(am_test_OBJECTS)
-test_DEPENDENCIES = ../lib/liblib.la ../backend/libsane.la
-am_tstbackend_OBJECTS = tstbackend.$(OBJEXT)
-tstbackend_OBJECTS = $(am_tstbackend_OBJECTS)
-tstbackend_DEPENDENCIES = ../lib/liblib.la ../backend/libsane.la
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(saned_SOURCES) $(scanimage_SOURCES) $(test_SOURCES) \
- $(tstbackend_SOURCES)
-DIST_SOURCES = $(saned_SOURCES) $(scanimage_SOURCES) $(test_SOURCES) \
- $(tstbackend_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-scanimage_SOURCES = scanimage.c sicc.c sicc.h stiff.c stiff.h
-scanimage_LDADD = ../backend/libsane.la ../sanei/libsanei.la ../lib/liblib.la \
- $(PNG_LIBS) $(JPEG_LIBS)
-
-saned_SOURCES = saned.c
-saned_LDADD = ../backend/libsane.la ../sanei/libsanei.la ../lib/liblib.la \
- $(SYSLOG_LIBS) $(SYSTEMD_LIBS) $(AVAHI_LIBS)
-
-test_SOURCES = test.c
-test_LDADD = ../lib/liblib.la ../backend/libsane.la
-tstbackend_SOURCES = tstbackend.c
-tstbackend_LDADD = ../lib/liblib.la ../backend/libsane.la
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu frontend/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu frontend/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- || test -f $$p1 \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
- @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-install-sbinPROGRAMS: $(sbin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- || test -f $$p1 \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-sbinPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(sbindir)" && rm -f $$files
-
-clean-sbinPROGRAMS:
- @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-saned$(EXEEXT): $(saned_OBJECTS) $(saned_DEPENDENCIES) $(EXTRA_saned_DEPENDENCIES)
- @rm -f saned$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(saned_OBJECTS) $(saned_LDADD) $(LIBS)
-
-scanimage$(EXEEXT): $(scanimage_OBJECTS) $(scanimage_DEPENDENCIES) $(EXTRA_scanimage_DEPENDENCIES)
- @rm -f scanimage$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(scanimage_OBJECTS) $(scanimage_LDADD) $(LIBS)
-
-test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) $(EXTRA_test_DEPENDENCIES)
- @rm -f test$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS)
-
-tstbackend$(EXEEXT): $(tstbackend_OBJECTS) $(tstbackend_DEPENDENCIES) $(EXTRA_tstbackend_DEPENDENCIES)
- @rm -f tstbackend$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(tstbackend_OBJECTS) $(tstbackend_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/saned.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanimage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sicc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stiff.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tstbackend.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-installdirs:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
- clean-sbinPROGRAMS mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS install-sbinPROGRAMS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS uninstall-sbinPROGRAMS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
- clean-binPROGRAMS clean-generic clean-libtool clean-local \
- clean-sbinPROGRAMS cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-binPROGRAMS install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-sbinPROGRAMS install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
- uninstall-sbinPROGRAMS
-
-
-clean-local:
- rm -f test tstbackend
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/frontend/saned.c b/frontend/saned.c
index 3bb99bb..ac5e700 100644
--- a/frontend/saned.c
+++ b/frontend/saned.c
@@ -87,7 +87,7 @@
#if defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
# include <sys/poll.h>
#else
-/*
+/*
* This replacement poll() using select() is only designed to cover
* our needs in run_standalone(). It should probably be extended...
*/
@@ -203,13 +203,13 @@ static AvahiEntryGroup *avahi_group = NULL;
(((const uint32_t *) (a))[0] == 0 \
&& ((const uint32_t *) (a))[1] == 0 \
&& ((const uint32_t *) (a))[2] == 0 \
- && ((const uint32_t *) (a))[3] == htonl (1))
+ && ((const uint32_t *) (a))[3] == htonl (1))
# endif
# ifndef IN6_IS_ADDR_V4MAPPED
# define IN6_IS_ADDR_V4MAPPED(a) \
((((const uint32_t *) (a))[0] == 0) \
&& (((const uint32_t *) (a))[1] == 0) \
- && (((const uint32_t *) (a))[2] == htonl (0xffff)))
+ && (((const uint32_t *) (a))[2] == htonl (0xffff)))
# endif
#endif /* ENABLE_IPV6 */
@@ -251,6 +251,9 @@ static Wire wire;
static int num_handles;
static int debug;
static int run_mode;
+static int run_foreground;
+static int run_once;
+static int data_connect_timeout = 4000;
static Handle *handle;
static char *bind_addr;
static union
@@ -298,9 +301,7 @@ static SANE_Bool log_to_syslog = SANE_TRUE;
static int process_request (Wire * w);
#define SANED_RUN_INETD 0
-#define SANED_RUN_DEBUG 1
-#define SANED_RUN_ALONE 2
-
+#define SANED_RUN_ALONE 1
#define DBG_ERR 1
#define DBG_WARN 2
@@ -402,7 +403,7 @@ auth_callback (SANE_String_Const res,
break;
default:
- DBG (DBG_WARN,
+ DBG (DBG_WARN,
"auth_callback: called for unexpected request %d (resource=%s)\n",
current_request, res);
break;
@@ -430,7 +431,7 @@ auth_callback (SANE_String_Const res,
{
DBG (DBG_WARN,
"auth_callback: bad procedure number %d "
- "(expected: %d, resource=%s)\n", procnum, SANE_NET_AUTHORIZE,
+ "(expected: %d, resource=%s)\n", procnum, SANE_NET_AUTHORIZE,
res);
return;
}
@@ -565,7 +566,7 @@ check_v4_in_range (struct sockaddr_in *sin, char *base_ip, char *netmask)
int cidr;
int i, err;
char *end;
- uint32_t mask;
+ uint32_t mask;
struct sockaddr_in *base;
struct addrinfo hints;
struct addrinfo *res;
@@ -573,7 +574,7 @@ check_v4_in_range (struct sockaddr_in *sin, char *base_ip, char *netmask)
cidr = -1;
cidr = strtol (netmask, &end, 10);
-
+
/* Sanity check on the cidr value */
if ((cidr < 0) || (cidr > 32) || (end == netmask))
{
@@ -584,13 +585,13 @@ check_v4_in_range (struct sockaddr_in *sin, char *base_ip, char *netmask)
mask = 0;
cidr -= 8;
- /* Build a bitmask out of the CIDR value */
+ /* Build a bitmask out of the CIDR value */
for (i = 3; cidr >= 0; i--)
{
mask |= (0xff << (8 * i));
cidr -= 8;
}
-
+
if (cidr < 0)
mask |= (cidrtomask[cidr + 8] << (8 * i));
@@ -600,7 +601,7 @@ check_v4_in_range (struct sockaddr_in *sin, char *base_ip, char *netmask)
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = PF_INET;
-
+
err = getaddrinfo (base_ip, NULL, &hints, &res);
if (err)
{
@@ -616,9 +617,9 @@ check_v4_in_range (struct sockaddr_in *sin, char *base_ip, char *netmask)
*/
if ((base->sin_addr.s_addr & mask) == (sin->sin_addr.s_addr & mask))
ret = SANE_TRUE;
-
+
freeaddrinfo (res);
-
+
return ret;
}
@@ -649,17 +650,17 @@ check_v6_in_range (struct sockaddr_in6 *sin6, char *base_ip, char *netmask)
memset (mask, 0, (16 * sizeof (unsigned int)));
cidr -= 8;
-
+
/* Build a bitmask out of the CIDR value */
for (i = 0; cidr >= 0; i++)
{
mask[i] = 0xff;
cidr -= 8;
}
-
+
if (cidr < 0)
mask[i] = cidrtomask[cidr + 8];
-
+
/* get a sockaddr_in6 representing the base IP address */
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_flags = AI_NUMERICHOST;
@@ -686,9 +687,9 @@ check_v6_in_range (struct sockaddr_in6 *sin6, char *base_ip, char *netmask)
break;
}
}
-
+
freeaddrinfo (res);
-
+
return ret;
}
# endif /* ENABLE_IPV6 */
@@ -699,12 +700,12 @@ check_v4_in_range (struct in_addr *inaddr, struct in_addr *base, char *netmask)
int cidr;
int i;
char *end;
- uint32_t mask;
+ uint32_t mask;
SANE_Bool ret = SANE_FALSE;
cidr = -1;
cidr = strtol (netmask, &end, 10);
-
+
/* sanity check on the cidr value */
if ((cidr < 0) || (cidr > 32) || (end == netmask))
{
@@ -714,14 +715,14 @@ check_v4_in_range (struct in_addr *inaddr, struct in_addr *base, char *netmask)
mask = 0;
cidr -= 8;
-
+
/* Build a bitmask out of the CIDR value */
for (i = 3; cidr >= 0; i--)
{
mask |= (0xff << (8 * i));
cidr -= 8;
}
-
+
if (cidr < 0)
mask |= (cidrtomask[cidr + 8] << (8 * i));
@@ -733,7 +734,7 @@ check_v4_in_range (struct in_addr *inaddr, struct in_addr *base, char *netmask)
*/
if ((base->s_addr & mask) == (inaddr->s_addr & mask))
ret = SANE_TRUE;
-
+
return ret;
}
#endif /* SANED_USES_AF_INDEP */
@@ -801,7 +802,7 @@ check_host (int fd)
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = PF_INET;
-
+
err = getaddrinfo (remote_ipv4, NULL, &hints, &res);
if (err)
{
@@ -901,13 +902,13 @@ check_host (int fd)
{
DBG (DBG_DBG, "check_host: local hostname(s) (from DNS): %s\n",
resp->ai_canonname);
-
+
err = getnameinfo (resp->ai_addr, resp->ai_addrlen, text_addr,
sizeof (text_addr), NULL, 0, NI_NUMERICHOST);
if (err)
strncpy (text_addr, "[error]", 8);
-#ifdef ENABLE_IPV6
+#ifdef ENABLE_IPV6
if ((strcasecmp (text_addr, remote_ip) == 0) ||
((IPv4map == SANE_TRUE) && (strcmp (text_addr, remote_ipv4) == 0)))
#else
@@ -915,18 +916,18 @@ check_host (int fd)
#endif /* ENABLE_IPV6 */
{
DBG (DBG_MSG, "check_host: remote host has same addr as local: access granted\n");
-
+
freeaddrinfo (res);
res = NULL;
return SANE_STATUS_GOOD;
}
}
-
+
freeaddrinfo (res);
res = NULL;
-
- DBG (DBG_DBG,
+
+ DBG (DBG_DBG,
"check_host: remote host doesn't have same addr as local\n");
}
@@ -947,8 +948,8 @@ check_host (int fd)
config_file_names[j], strerror (errno));
continue;
}
-
- while (!access_ok && sanei_config_read (config_line_buf,
+
+ while (!access_ok && sanei_config_read (config_line_buf,
sizeof (config_line_buf), fp))
{
config_line = config_line_buf; /* from now on, use a pointer */
@@ -993,7 +994,7 @@ check_host (int fd)
if (strcmp (config_line, "+") == 0)
{
access_ok = 1;
- DBG (DBG_DBG,
+ DBG (DBG_DBG,
"check_host: access granted from any host (`+')\n");
}
/* compare remote_ip (remote IP address) to the config_line */
@@ -1033,7 +1034,7 @@ check_host (int fd)
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = PF_INET;
-
+
err = getaddrinfo (remote_ipv4, NULL, &hints, &res);
if (err)
DBG (DBG_DBG, "check_host: getaddrinfo() failed: %s\n", gai_strerror (err));
@@ -1044,7 +1045,7 @@ check_host (int fd)
if ((SS_FAMILY(remote_address.ss) == AF_INET) ||
(IPv4map == SANE_TRUE))
{
-
+
if (check_v4_in_range (sin, config_line, netmask))
{
DBG (DBG_DBG, "check_host: access granted from IP address %s (in subnet %s/%s)\n",
@@ -1056,7 +1057,7 @@ check_host (int fd)
/* restore the old sin pointer */
sin = &remote_address.sin;
}
-
+
if (res != NULL)
{
freeaddrinfo (res);
@@ -1086,11 +1087,11 @@ check_host (int fd)
#else
hints.ai_family = PF_INET;
#endif /* ENABLE_IPV6 */
-
+
err = getaddrinfo (config_line, NULL, &hints, &res);
if (err)
{
- DBG (DBG_DBG,
+ DBG (DBG_DBG,
"check_host: getaddrinfo for `%s' failed: %s\n",
config_line, gai_strerror (err));
DBG (DBG_MSG, "check_host: entry isn't an IP address "
@@ -1105,19 +1106,19 @@ check_host (int fd)
sizeof (text_addr), NULL, 0, NI_NUMERICHOST);
if (err)
strncpy (text_addr, "[error]", 8);
-
- DBG (DBG_MSG,
- "check_host: DNS lookup returns IP address: %s\n",
- text_addr);
-
-#ifdef ENABLE_IPV6
+
+ DBG (DBG_MSG,
+ "check_host: DNS lookup returns IP address: %s\n",
+ text_addr);
+
+#ifdef ENABLE_IPV6
if ((strcasecmp (text_addr, remote_ip) == 0) ||
((IPv4map == SANE_TRUE) && (strcmp (text_addr, remote_ipv4) == 0)))
#else
if (strcmp (text_addr, remote_ip) == 0)
#endif /* ENABLE_IPV6 */
access_ok = 1;
-
+
if (access_ok)
break;
}
@@ -1128,10 +1129,10 @@ check_host (int fd)
}
fclose (fp);
}
-
+
if (access_ok)
return SANE_STATUS_GOOD;
-
+
return SANE_STATUS_ACCESS_DENIED;
}
@@ -1150,7 +1151,7 @@ check_host (int fd)
char hostname[MAXHOSTNAMELEN];
char *r_hostname;
static struct in_addr config_line_address;
-
+
int len;
FILE *fp;
@@ -1164,7 +1165,7 @@ check_host (int fd)
}
r_hostname = inet_ntoa (sin.sin_addr);
remote_ip = strdup (r_hostname);
- DBG (DBG_WARN, "check_host: access by remote host: %s\n",
+ DBG (DBG_WARN, "check_host: access by remote host: %s\n",
remote_ip);
/* Save remote address for check of control and data connections */
memcpy (&remote_address, &sin.sin_addr, sizeof (remote_address));
@@ -1203,7 +1204,7 @@ check_host (int fd)
{
DBG (DBG_DBG, "check_host: local hostname (from DNS): %s\n",
he->h_name);
-
+
if ((he->h_length == 4) || (he->h_addrtype == AF_INET))
{
if (!inet_ntop (he->h_addrtype, he->h_addr_list[0], text_addr,
@@ -1211,9 +1212,9 @@ check_host (int fd)
strcpy (text_addr, "[error]");
DBG (DBG_DBG, "check_host: local host address (from DNS): %s\n",
text_addr);
- if (memcmp (he->h_addr_list[0], &remote_address.s_addr, 4) == 0)
+ if (memcmp (he->h_addr_list[0], &remote_address.s_addr, 4) == 0)
{
- DBG (DBG_MSG,
+ DBG (DBG_MSG,
"check_host: remote host has same addr as local: "
"access accepted\n");
return SANE_STATUS_GOOD;
@@ -1246,8 +1247,8 @@ check_host (int fd)
config_file_names[j], strerror (errno));
continue;
}
-
- while (!access_ok && sanei_config_read (config_line_buf,
+
+ while (!access_ok && sanei_config_read (config_line_buf,
sizeof (config_line_buf), fp))
{
config_line = config_line_buf; /* from now on, use a pointer */
@@ -1275,14 +1276,14 @@ check_host (int fd)
if (strcmp (config_line, "+") == 0)
{
access_ok = 1;
- DBG (DBG_DBG,
+ DBG (DBG_DBG,
"check_host: access accepted from any host (`+')\n");
}
else
{
if (inet_pton (AF_INET, config_line, &config_line_address) > 0)
{
- if (memcmp (&remote_address.s_addr,
+ if (memcmp (&remote_address.s_addr,
&config_line_address.s_addr, 4) == 0)
access_ok = 1;
else if (netmask != NULL)
@@ -1297,13 +1298,13 @@ check_host (int fd)
}
else
{
- DBG (DBG_DBG,
+ DBG (DBG_DBG,
"check_host: inet_pton for `%s' failed\n",
config_line);
he = gethostbyname (config_line);
if (!he)
{
- DBG (DBG_DBG,
+ DBG (DBG_DBG,
"check_host: gethostbyname for `%s' failed: %s\n",
config_line, hstrerror (h_errno));
DBG (DBG_MSG, "check_host: entry isn't an IP address "
@@ -1313,10 +1314,10 @@ check_host (int fd)
if (!inet_ntop (he->h_addrtype, he->h_addr_list[0],
text_addr, sizeof (text_addr)))
strcpy (text_addr, "[error]");
- DBG (DBG_MSG,
+ DBG (DBG_MSG,
"check_host: DNS lookup returns IP address: %s\n",
text_addr);
- if (memcmp (&remote_address.s_addr,
+ if (memcmp (&remote_address.s_addr,
he->h_addr_list[0], 4) == 0)
access_ok = 1;
}
@@ -1356,7 +1357,7 @@ init (Wire * w)
DBG (DBG_ERR, "init: bad status after sanei_w_set_dir: %d\n", w->status);
return -1;
}
-
+
sanei_w_word (w, &word); /* decode procedure number */
if (w->status || word != SANE_NET_INIT)
{
@@ -1658,7 +1659,7 @@ do_scan (Wire * w, int h, int data_fd)
long int nwritten;
SANE_Int length;
size_t nbytes;
-
+
DBG (3, "do_scan: start\n");
FD_ZERO (&rd_mask);
@@ -1699,8 +1700,8 @@ do_scan (Wire * w, int h, int data_fd)
FD_CLR (be_fd, &rd_mask);
be_fd = -1;
/* only set status_dirty if EOF hasn't been already detected */
- if (status == SANE_STATUS_GOOD)
- status_dirty = 1;
+ if (status == SANE_STATUS_GOOD)
+ status_dirty = 1;
status = SANE_STATUS_EOF;
DBG (DBG_INFO, "do_scan: select_fd was closed --> EOF\n");
continue;
@@ -1723,17 +1724,18 @@ do_scan (Wire * w, int h, int data_fd)
nbytes = bytes_in_buf;
if (writer + nbytes > sizeof (buf))
nbytes = sizeof (buf) - writer;
- DBG (DBG_INFO,
+ DBG (DBG_INFO,
"do_scan: trying to write %d bytes to client\n",
nbytes);
nwritten = write (data_fd, buf + writer, nbytes);
- DBG (DBG_INFO,
+ DBG (DBG_INFO,
"do_scan: wrote %ld bytes to client\n", nwritten);
if (nwritten < 0)
{
DBG (DBG_ERR, "do_scan: write failed (%s)\n",
strerror (errno));
status = SANE_STATUS_CANCELLED;
+ handle[h].docancel = 1;
break;
}
bytes_in_buf -= nwritten;
@@ -1791,7 +1793,7 @@ do_scan (Wire * w, int h, int data_fd)
reader = store_reclen (buf, sizeof (buf), reader, 0xffffffff);
buf[reader] = status;
bytes_in_buf += 5;
- DBG (DBG_MSG, "do_scan: statuscode `%s' was added to buffer\n",
+ DBG (DBG_MSG, "do_scan: statuscode `%s' was added to buffer\n",
sane_strstatus(status));
}
@@ -1799,13 +1801,19 @@ do_scan (Wire * w, int h, int data_fd)
{
DBG (DBG_MSG,
"do_scan: processing RPC request on fd %d\n", w->io.fd);
- process_request (w);
+ if(process_request (w) < 0)
+ handle[h].docancel = 1;
+
if (handle[h].docancel)
break;
}
}
while (status == SANE_STATUS_GOOD || bytes_in_buf > 0 || status_dirty);
DBG (DBG_MSG, "do_scan: done, status=%s\n", sane_strstatus (status));
+
+ if(handle[h].docancel)
+ sane_cancel (handle[h].handle);
+
handle[h].docancel = 0;
handle[h].scanning = 0;
}
@@ -1854,7 +1862,7 @@ process_request (Wire * w)
sanei_w_string (w, &name);
if (w->status)
{
- DBG (DBG_ERR,
+ DBG (DBG_ERR,
"process_request: (open) error while decoding args (%s)\n",
strerror (w->status));
return 1;
@@ -1871,7 +1879,7 @@ process_request (Wire * w)
can_authorize = 1;
resource = strdup (name);
-
+
if (strlen(resource) == 0) {
const SANE_Device **device_list;
@@ -1879,8 +1887,8 @@ process_request (Wire * w)
DBG(DBG_DBG, "process_request: (open) strlen(resource) == 0\n");
free (resource);
- if ((i = sane_get_devices (&device_list, SANE_TRUE)) !=
- SANE_STATUS_GOOD)
+ if ((i = sane_get_devices (&device_list, SANE_TRUE)) !=
+ SANE_STATUS_GOOD)
{
DBG(DBG_ERR, "process_request: (open) sane_get_devices failed\n");
memset (&reply, 0, sizeof (reply));
@@ -1889,7 +1897,7 @@ process_request (Wire * w)
break;
}
- if ((device_list == NULL) || (device_list[0] == NULL))
+ if ((device_list == NULL) || (device_list[0] == NULL))
{
DBG(DBG_ERR, "process_request: (open) device_list[0] == 0\n");
memset (&reply, 0, sizeof (reply));
@@ -1907,7 +1915,7 @@ process_request (Wire * w)
if (sanei_authorize (resource, "saned", auth_callback) !=
SANE_STATUS_GOOD)
{
- DBG (DBG_ERR, "process_request: access to resource `%s' denied\n",
+ DBG (DBG_ERR, "process_request: access to resource `%s' denied\n",
resource);
free (resource);
memset (&reply, 0, sizeof (reply)); /* avoid leaking bits */
@@ -1915,12 +1923,12 @@ process_request (Wire * w)
}
else
{
- DBG (DBG_MSG, "process_request: access to resource `%s' granted\n",
+ DBG (DBG_MSG, "process_request: access to resource `%s' granted\n",
resource);
free (resource);
memset (&reply, 0, sizeof (reply)); /* avoid leaking bits */
reply.status = sane_open (name, &be_handle);
- DBG (DBG_MSG, "process_request: sane_open returned: %s\n",
+ DBG (DBG_MSG, "process_request: sane_open returned: %s\n",
sane_strstatus (reply.status));
}
@@ -2062,7 +2070,7 @@ process_request (Wire * w)
case SANE_NET_START:
{
SANE_Start_Reply reply;
- int fd = -1, data_fd;
+ int fd = -1, data_fd = -1;
h = decode_handle (w, "start");
if (h < 0)
@@ -2087,9 +2095,36 @@ process_request (Wire * w)
char text_addr[64];
int len;
int error;
+ struct pollfd fds[1];
+ int ret;
- DBG (DBG_MSG, "process_request: waiting for data connection\n");
- data_fd = accept (fd, 0, 0);
+ fds->fd = fd;
+ fds->events = POLLIN;
+
+ DBG (DBG_MSG, "process_request: waiting 4s for data connection\n");
+ if(data_connect_timeout)
+ {
+ while (1)
+ {
+ ret = poll (fds, 1, data_connect_timeout);
+ if (ret < 0)
+ {
+ if (errno == EINTR)
+ continue;
+ else
+ {
+ DBG (DBG_ERR, "run_standalone: poll failed: %s\n",
+ strerror (errno));
+ }
+ break;
+ }
+ break;
+ }
+ }
+ else
+ ret = 0;
+ if(ret >= 0)
+ data_fd = accept (fd, 0, 0);
close (fd);
/* Get address of remote host */
@@ -2112,7 +2147,7 @@ process_request (Wire * w)
DBG (DBG_MSG, "process_request: access to data port from %s\n",
text_addr);
-
+
if (strcmp (text_addr, remote_ip) != 0)
{
DBG (DBG_ERR, "process_request: however, only %s is authorized\n",
@@ -2129,14 +2164,41 @@ process_request (Wire * w)
{
struct sockaddr_in sin;
int len;
+ int ret;
+ struct pollfd fds[1];
+
+ fds->fd = fd;
+ fds->events = POLLIN;
DBG (DBG_MSG, "process_request: waiting for data connection\n");
- data_fd = accept (fd, 0, 0);
+ if(data_connect_timeout)
+ {
+ while (1)
+ {
+ ret = poll (fds, 1, data_connect_timeout);
+ if (ret < 0)
+ {
+ if (errno == EINTR)
+ continue;
+ else
+ {
+ DBG (DBG_ERR, "run_standalone: poll failed: %s\n", strerror (errno));
+ }
+ break;
+ }
+ break;
+ }
+ }
+ else
+ ret = 0;
+ if(ret >= 0)
+ data_fd = accept (fd, 0, 0);
+
close (fd);
/* Get address of remote host */
len = sizeof (sin);
- if (getpeername (data_fd, (struct sockaddr *) &sin,
+ if (getpeername (data_fd, (struct sockaddr *) &sin,
(socklen_t *) &len) < 0)
{
DBG (DBG_ERR, "process_request: getpeername failed: %s\n",
@@ -2147,13 +2209,13 @@ process_request (Wire * w)
if (memcmp (&remote_address, &sin.sin_addr,
sizeof (remote_address)) != 0)
{
- DBG (DBG_ERR,
+ DBG (DBG_ERR,
"process_request: access to data port from %s\n",
inet_ntoa (sin.sin_addr));
- DBG (DBG_ERR,
+ DBG (DBG_ERR,
"process_request: however, only %s is authorized\n",
inet_ntoa (remote_address));
- DBG (DBG_ERR,
+ DBG (DBG_ERR,
"process_request: configuration problem or attack?\n");
close (data_fd);
data_fd = -1;
@@ -2320,7 +2382,7 @@ handle_connection (int fd)
reset_watchdog ();
if (process_request (&wire) < 0)
break;
- }
+ }
}
static void
@@ -2735,6 +2797,26 @@ read_config (void)
DBG (DBG_INFO, "read_config: data port range: %d - %d\n", data_port_lo, data_port_hi);
}
}
+ else if(strstr(config_line, "data_connect_timeout") != NULL)
+ {
+ optval = sanei_config_skip_whitespace (++optval);
+ if ((optval != NULL) && (*optval != '\0'))
+ {
+ val = strtol (optval, &endval, 10);
+ if (optval == endval)
+ {
+ DBG (DBG_ERR, "read_config: invalid value for data_connect_timeout\n");
+ continue;
+ }
+ else if ((val < 0) || (val > 65535))
+ {
+ DBG (DBG_ERR, "read_config: data_connect_timeout is invalid\n");
+ continue;
+ }
+ data_connect_timeout = val;
+ DBG (DBG_INFO, "read_config: data connect timeout: %d\n", data_connect_timeout);
+ }
+ }
}
fclose (fp);
DBG (DBG_INFO, "read_config: done reading config\n");
@@ -2964,93 +3046,129 @@ do_bindings (int *nfds, struct pollfd **fds)
static void
-run_standalone (char *user)
+runas_user (char *user)
{
- struct pollfd *fds = NULL;
- struct pollfd *fdp = NULL;
- int nfds;
- int fd = -1;
- int i;
- int ret;
-
uid_t runas_uid = 0;
gid_t runas_gid = 0;
struct passwd *pwent;
gid_t *grplist = NULL;
struct group *grp;
int ngroups = 0;
- FILE *pidfile;
+ int ret;
- do_bindings (&nfds, &fds);
+ pwent = getpwnam(user);
- if (run_mode != SANED_RUN_DEBUG)
+ if (pwent == NULL)
{
- if (user)
- {
- pwent = getpwnam(user);
+ DBG (DBG_ERR, "FATAL ERROR: user %s not found on system\n", user);
+ bail_out (1);
+ }
- if (pwent == NULL)
- {
- DBG (DBG_ERR, "FATAL ERROR: user %s not found on system\n", user);
- bail_out (1);
- }
+ runas_uid = pwent->pw_uid;
+ runas_gid = pwent->pw_gid;
- runas_uid = pwent->pw_uid;
- runas_gid = pwent->pw_gid;
+ /* Get group list for runas_uid */
+ grplist = (gid_t *)malloc(sizeof(gid_t));
- /* Get group list for runas_uid */
- grplist = (gid_t *)malloc(sizeof(gid_t));
+ if (grplist == NULL)
+ {
+ DBG (DBG_ERR, "FATAL ERROR: cannot allocate memory for group list\n");
- if (grplist == NULL)
- {
- DBG (DBG_ERR, "FATAL ERROR: cannot allocate memory for group list\n");
+ exit (1);
+ }
- exit (1);
- }
+ ngroups = 1;
+ grplist[0] = runas_gid;
- ngroups = 1;
- grplist[0] = runas_gid;
+ setgrent();
+ while ((grp = getgrent()) != NULL)
+ {
+ int i = 0;
- setgrent();
- while ((grp = getgrent()) != NULL)
- {
- int i = 0;
+ /* Already added current group */
+ if (grp->gr_gid == runas_gid)
+ continue;
- /* Already added current group */
- if (grp->gr_gid == runas_gid)
- continue;
+ while (grp->gr_mem[i])
+ {
+ if (strcmp(grp->gr_mem[i], user) == 0)
+ {
+ int need_to_add = 1, j;
- while (grp->gr_mem[i])
+ /* Make sure its not already in list */
+ for (j = 0; j < ngroups; j++)
{
- if (strcmp(grp->gr_mem[i], user) == 0)
- {
- int need_to_add = 1, j;
-
- /* Make sure its not already in list */
- for (j = 0; j < ngroups; j++)
- {
- if (grp->gr_gid == grplist[i])
- need_to_add = 0;
- }
- if (need_to_add)
- {
- grplist = (gid_t *)realloc(grplist,
- sizeof(gid_t)*ngroups+1);
- if (grplist == NULL)
- {
- DBG (DBG_ERR, "FATAL ERROR: cannot reallocate memory for group list\n");
-
- exit (1);
- }
- grplist[ngroups++] = grp->gr_gid;
- }
- }
- i++;
- }
+ if (grp->gr_gid == grplist[i])
+ need_to_add = 0;
+ }
+ if (need_to_add)
+ {
+ grplist = (gid_t *)realloc(grplist,
+ sizeof(gid_t)*ngroups+1);
+ if (grplist == NULL)
+ {
+ DBG (DBG_ERR, "FATAL ERROR: cannot reallocate memory for group list\n");
+
+ exit (1);
+ }
+ grplist[ngroups++] = grp->gr_gid;
+ }
}
- endgrent();
+ i++;
+ }
+ }
+ endgrent();
+
+ /* Drop privileges if requested */
+ if (runas_uid > 0)
+ {
+ ret = setgroups(ngroups, grplist);
+ if (ret < 0)
+ {
+ DBG (DBG_ERR, "FATAL ERROR: could not set group list: %s\n", strerror(errno));
+
+ exit (1);
+ }
+
+ free(grplist);
+
+ ret = setegid (runas_gid);
+ if (ret < 0)
+ {
+ DBG (DBG_ERR, "FATAL ERROR: setegid to gid %d failed: %s\n", runas_gid, strerror (errno));
+
+ exit (1);
+ }
+
+ ret = seteuid (runas_uid);
+ if (ret < 0)
+ {
+ DBG (DBG_ERR, "FATAL ERROR: seteuid to uid %d failed: %s\n", runas_uid, strerror (errno));
+
+ exit (1);
}
+ DBG (DBG_WARN, "Dropped privileges to uid %d gid %d\n", runas_uid, runas_gid);
+ }
+}
+
+
+static void
+run_standalone (char *user)
+{
+ struct pollfd *fds = NULL;
+ struct pollfd *fdp = NULL;
+ int nfds;
+ int fd = -1;
+ int i;
+ int ret;
+
+ FILE *pidfile;
+
+ do_bindings (&nfds, &fds);
+
+ if (run_foreground == SANE_FALSE)
+ {
DBG (DBG_MSG, "run_standalone: daemonizing now\n");
fd = open ("/dev/null", O_RDWR);
@@ -3093,42 +3211,13 @@ run_standalone (char *user)
setsid ();
- /* Drop privileges if requested */
- if (runas_uid > 0)
- {
- ret = setgroups(ngroups, grplist);
- if (ret < 0)
- {
- DBG (DBG_ERR, "FATAL ERROR: could not set group list: %s\n", strerror(errno));
-
- exit (1);
- }
-
- free(grplist);
-
- ret = setegid (runas_gid);
- if (ret < 0)
- {
- DBG (DBG_ERR, "FATAL ERROR: setegid to gid %d failed: %s\n", runas_gid, strerror (errno));
-
- exit (1);
- }
-
- ret = seteuid (runas_uid);
- if (ret < 0)
- {
- DBG (DBG_ERR, "FATAL ERROR: seteuid to uid %d failed: %s\n", runas_uid, strerror (errno));
-
- exit (1);
- }
-
- DBG (DBG_WARN, "Dropped privileges to uid %d gid %d\n", runas_uid, runas_gid);
- }
-
signal(SIGINT, sig_int_term_handler);
signal(SIGTERM, sig_int_term_handler);
}
+ if (user)
+ runas_user(user);
+
#ifdef WITH_AVAHI
DBG (DBG_INFO, "run_standalone: spawning Avahi process\n");
saned_avahi (fds, nfds);
@@ -3187,13 +3276,13 @@ run_standalone (char *user)
continue;
}
- if (run_mode == SANED_RUN_DEBUG)
- break; /* We have the only connection we're going to handle */
- else
- handle_client (fd);
+ handle_client (fd);
+
+ if (run_once == SANE_TRUE)
+ break; /* We have handled the only connection we're going to handle */
}
- if (run_mode == SANED_RUN_DEBUG)
+ if (run_once == SANE_TRUE)
break;
}
@@ -3201,21 +3290,13 @@ run_standalone (char *user)
close (fdp->fd);
free (fds);
-
- if (run_mode == SANED_RUN_DEBUG)
- {
- if (fd > 0)
- handle_connection (fd);
-
- bail_out(0);
- }
}
static void
run_inetd (char __sane_unused__ *sock)
{
-
+
int fd = -1;
#ifdef HAVE_SYSTEMD
@@ -3223,7 +3304,7 @@ run_inetd (char __sane_unused__ *sock)
n = sd_listen_fds(0);
- if (n > 1)
+ if (n > 1)
{
DBG (DBG_ERR, "run_inetd: Too many file descriptors (sockets) received from systemd!\n");
return;
@@ -3236,7 +3317,7 @@ run_inetd (char __sane_unused__ *sock)
}
#endif
- if (fd == -1)
+ if (fd == -1)
{
int dave_null;
@@ -3299,12 +3380,14 @@ static void usage(char *me, int err)
fprintf (stderr,
"Usage: %s [OPTIONS]\n\n"
" Options:\n\n"
- " -a, --alone[=user] run standalone and fork in background as `user'\n"
- " -d, --debug[=level] run foreground with output to stdout\n"
- " and debug level `level' (default is 2)\n"
- " -s, --syslog[=level] run foreground with output to syslog\n"
- " and debug level `level' (default is 2)\n"
- " -b, --bind=addr bind address `addr'\n"
+ " -a, --alone[=user] equal to `-l -D -u user'\n"
+ " -l, --listen run in standalone mode (listen for connection)\n"
+ " -u, --user=user run as `user'\n"
+ " -D, --daemonize run in background\n"
+ " -o, --once exit after first client disconnects\n"
+ " -d, --debug=level set debug level `level' (default is 2)\n"
+ " -e, --stderr output to stderr\n"
+ " -b, --bind=addr bind address `addr' (default all interfaces)\n"
" -h, --help show this help message and exit\n", me);
exit(err);
@@ -3317,8 +3400,12 @@ static struct option long_options[] =
/* These options set a flag. */
{"help", no_argument, 0, 'h'},
{"alone", optional_argument, 0, 'a'},
- {"debug", optional_argument, 0, 'd'},
- {"syslog", optional_argument, 0, 's'},
+ {"listen", no_argument, 0, 'l'},
+ {"user", required_argument, 0, 'u'},
+ {"daemonize", no_argument, 0, 'D'},
+ {"once", no_argument, 0, 'o'},
+ {"debug", required_argument, 0, 'd'},
+ {"stderr", no_argument, 0, 'e'},
{"bind", required_argument, 0, 'b'},
{0, 0, 0, 0 }
};
@@ -3342,20 +3429,35 @@ main (int argc, char *argv[])
numchildren = 0;
run_mode = SANED_RUN_INETD;
+ run_foreground = SANE_TRUE;
+ run_once = SANE_FALSE;
- while((c = getopt_long(argc, argv,"ha::d::s::b:", long_options, &long_index )) != -1)
+ while((c = getopt_long(argc, argv,"ha::lu:Dod:eb:", long_options, &long_index )) != -1)
{
switch(c) {
case 'a':
run_mode = SANED_RUN_ALONE;
+ run_foreground = SANE_FALSE;
+ if (optarg)
+ user = optarg;
+ break;
+ case 'l':
+ run_mode = SANED_RUN_ALONE;
+ break;
+ case 'u':
user = optarg;
break;
+ case 'D':
+ run_foreground = SANE_FALSE;
+ break;
+ case 'o':
+ run_once = SANE_TRUE;
+ break;
case 'd':
+ debug = atoi(optarg);
+ break;
+ case 'e':
log_to_syslog = SANE_FALSE;
- case 's':
- run_mode = SANED_RUN_DEBUG;
- if(optarg)
- debug = atoi(optarg);
break;
case 'b':
bind_addr = optarg;
@@ -3405,7 +3507,7 @@ main (int argc, char *argv[])
DBG (DBG_WARN, "saned from %s ready\n", PACKAGE_STRING);
}
- if ((run_mode == SANED_RUN_ALONE) || (run_mode == SANED_RUN_DEBUG))
+ if (run_mode == SANED_RUN_ALONE)
{
run_standalone(user);
}
diff --git a/frontend/scanimage.c b/frontend/scanimage.c
index fe02750..6906f90 100644
--- a/frontend/scanimage.c
+++ b/frontend/scanimage.c
@@ -2,7 +2,7 @@
Uses the SANE library.
Copyright (C) 2015 Rolf Bensch <rolf at bensch hyphen online dot de>
Copyright (C) 1996, 1997, 1998 Andreas Beck and David Mosberger
-
+
Copyright (C) 1999 - 2009 by the SANE Project -- See AUTHORS and ChangeLog
for details.
@@ -93,6 +93,7 @@ static struct option basic_options[] = {
{"help", no_argument, NULL, 'h'},
{"verbose", no_argument, NULL, 'v'},
{"progress", no_argument, NULL, 'p'},
+ {"output-file", required_argument, NULL, 'o'},
{"test", no_argument, NULL, 'T'},
{"all-options", no_argument, NULL, 'A'},
{"version", no_argument, NULL, 'V'},
@@ -111,12 +112,13 @@ static struct option basic_options[] = {
{0, 0, NULL, 0}
};
-#define OUTPUT_PNM 0
-#define OUTPUT_TIFF 1
-#define OUTPUT_PNG 2
-#define OUTPUT_JPEG 3
+#define OUTPUT_UNKNOWN 0
+#define OUTPUT_PNM 1
+#define OUTPUT_TIFF 2
+#define OUTPUT_PNG 3
+#define OUTPUT_JPEG 4
-#define BASE_OPTSTRING "d:hi:Lf:B::nvVTAbp"
+#define BASE_OPTSTRING "d:hi:Lf:o:B::nvVTAbp"
#define STRIP_HEIGHT 256 /* # lines we increment image height */
static struct option *all_options;
@@ -125,9 +127,10 @@ static int *option_number;
static SANE_Handle device;
static int verbose;
static int progress = 0;
+static const char* output_file = NULL;
static int test;
static int all;
-static int output_format = OUTPUT_PNM;
+static int output_format = OUTPUT_UNKNOWN;
static int help;
static int dont_scan = 0;
static const char *prog_name;
@@ -403,7 +406,7 @@ print_option (SANE_Device * device, int opt_num, const SANE_Option_Descriptor *o
}*/
/* if one of these three is not set, option is useless, skip it */
- if(!(opt->cap &
+ if(!(opt->cap &
(SANE_CAP_SOFT_SELECT | SANE_CAP_HARD_SELECT | SANE_CAP_SOFT_DETECT)
)){
return;
@@ -462,7 +465,7 @@ print_option (SANE_Device * device, int opt_num, const SANE_Option_Descriptor *o
if (!strcmp (opt->name, "x"))
{
printf ("%d..%d",
- opt->constraint.range->min,
+ opt->constraint.range->min,
opt->constraint.range->max - tl_x);
}
else if (!strcmp (opt->name, "y"))
@@ -1011,7 +1014,7 @@ set_option (SANE_Handle device, int optnum, void *valuep)
prog_name, opt->name);
return;
}
-
+
if (opt->size == sizeof (SANE_Word) && opt->type != SANE_TYPE_STRING)
orig = *(SANE_Word *) valuep;
@@ -1483,7 +1486,7 @@ scan_it (FILE *ofp)
offset = parm.format - SANE_FRAME_RED;
image.x = image.y = 0;
}
- hundred_percent = parm.bytes_per_line * parm.lines
+ hundred_percent = parm.bytes_per_line * parm.lines
* ((parm.format == SANE_FRAME_RGB || parm.format == SANE_FRAME_GRAY) ? 1:3);
while (1)
@@ -1968,6 +1971,43 @@ static void print_options(SANE_Device * device, SANE_Int num_dev_options, SANE_B
fputc ('\n', stdout);
}
+static int guess_output_format(const char* output_file)
+{
+ if (output_file == NULL)
+ {
+ fprintf(stderr, "Output format is not set, using pnm as a default.\n");
+ return OUTPUT_PNM;
+ }
+
+ // if the user passes us a path with a known extension then he won't be surprised if we figure
+ // out correct --format option. No warning is necessary in that case.
+ const char* extension = strrchr(output_file, '.');
+ if (extension != NULL)
+ {
+ struct {
+ const char* extension;
+ int output_format;
+ } formats[] = {
+ { ".pnm", OUTPUT_PNM },
+ { ".png", OUTPUT_PNG },
+ { ".jpg", OUTPUT_JPEG },
+ { ".jpeg", OUTPUT_JPEG },
+ { ".tiff", OUTPUT_TIFF },
+ { ".tif", OUTPUT_TIFF }
+ };
+ for (unsigned i = 0; i < sizeof(formats) / sizeof(formats[0]); ++i)
+ {
+ if (strcmp(extension, formats[i].extension) == 0)
+ return formats[i].output_format;
+ }
+ }
+
+ // it would be very confusing if user makes a typo in the filename and the output format changes.
+ // This is most likely not what the user wanted.
+ fprintf(stderr, "Could not guess output format from the given path and no --format given.\n");
+ exit(1);
+}
+
int
main (int argc, char **argv)
{
@@ -2033,6 +2073,9 @@ main (int argc, char **argv)
case 'p':
progress = 1;
break;
+ case 'o':
+ output_file = optarg;
+ break;
case 'B':
if (optarg)
buffer_size = 1024 * atoi(optarg);
@@ -2088,8 +2131,23 @@ main (int argc, char **argv)
exit(1);
#endif
}
- else
- output_format = OUTPUT_PNM;
+ else if (strcmp (optarg, "pnm") == 0)
+ {
+ output_format = OUTPUT_PNM;
+ }
+ else
+ {
+ fprintf(stderr, "Unknown output image format '%s'.\n", optarg);
+ fprintf(stderr, "Supported formats: pnm, tiff");
+#ifdef HAVE_LIBPNG
+ fprintf(stderr, ", png");
+#endif
+#ifdef HAVE_LIBJPEG
+ fprintf(stderr, ", jpeg");
+#endif
+ fprintf(stderr, ".\n");
+ exit(1);
+ }
break;
case OPTION_MD5:
accept_only_md5_auth = 1;
@@ -2235,7 +2293,8 @@ Parameters are separated by a blank from single-character options (e.g.\n\
%%m (model), %%t (type), %%i (index number), and\n\
%%n (newline)\n\
-b, --batch[=FORMAT] working in batch mode, FORMAT is `out%%d.pnm' `out%%d.tif'\n\
- `out%%d.png' or `out%%d.jpg' by default depending on --format\n");
+ `out%%d.png' or `out%%d.jpg' by default depending on --format\n\
+ This option is incompatible with --output-file.");
printf ("\
--batch-start=# page number to start naming files with\n\
--batch-count=# how many pages to scan in batch mode\n\
@@ -2247,6 +2306,8 @@ Parameters are separated by a blank from single-character options (e.g.\n\
printf ("\
--accept-md5-only only accept authorization requests using md5\n\
-p, --progress print progress messages\n\
+-o, --output-file=PATH save output to the given file instead of stdout.\n\
+ This option is incompatible with --batch.\n\
-n, --dont-scan only set options, don't actually scan\n\
-T, --test test backend thoroughly\n\
-A, --all-options list all available backend options\n\
@@ -2257,6 +2318,15 @@ Parameters are separated by a blank from single-character options (e.g.\n\
-V, --version print version information\n");
}
+ if (batch && output_file != NULL)
+ {
+ fprintf(stderr, "--batch and --output-file can't be used together.\n");
+ exit(1);
+ }
+
+ if (output_format == OUTPUT_UNKNOWN)
+ output_format = guess_output_format(output_file);
+
if (!devname)
{
/* If no device name was specified explicitly, we look at the
@@ -2389,6 +2459,7 @@ Parameters are separated by a blank from single-character options (e.g.\n\
case 'd':
case 'h':
case 'p':
+ case 'o':
case 'v':
case 'V':
case 'T':
@@ -2535,7 +2606,19 @@ List of available devices:", prog_name);
}
if (!batch)
- ofp = stdout;
+ {
+ ofp = stdout;
+ if (output_file != NULL)
+ {
+ ofp = fopen(output_file, "w");
+ if (ofp == NULL)
+ {
+ fprintf(stderr, "%s: could not open input file '%s', "
+ "exiting\n", prog_name, output_file);
+ scanimage_exit(1);
+ }
+ }
+ }
if (batch)
{
@@ -2662,6 +2745,14 @@ List of available devices:", prog_name);
}
}
}
+ else
+ {
+ if (output_file && ofp)
+ {
+ fclose(ofp);
+ ofp = NULL;
+ }
+ }
break;
default:
if (batch)
@@ -2673,6 +2764,15 @@ List of available devices:", prog_name);
}
unlink (part_path);
}
+ else
+ {
+ if (output_file && ofp)
+ {
+ fclose(ofp);
+ ofp = NULL;
+ }
+ unlink (output_file);
+ }
break;
} /* switch */
n += batch_increment;
diff --git a/frontend/test.c b/frontend/test.c
index df06751..3b1c4ae 100644
--- a/frontend/test.c
+++ b/frontend/test.c
@@ -16,9 +16,9 @@
along with sane; see the file COPYING. If not, write to the Free
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- This file implements a simple SANE frontend (well it rather is a
- transport layer, but seen from libsane it is a frontend) which acts
- as a NETSANE server. The NETSANE specifications should have come
+ This file implements a simple SANE frontend (well it rather is a
+ transport layer, but seen from libsane it is a frontend) which acts
+ as a NETSANE server. The NETSANE specifications should have come
with this package.
Feel free to enhance this program ! It needs extension especially
regarding crypto-support and authentication.
diff --git a/frontend/tstbackend.c b/frontend/tstbackend.c
index 82c54dc..37ba660 100644
--- a/frontend/tstbackend.c
+++ b/frontend/tstbackend.c
@@ -1,9 +1,9 @@
-/*
+/*
tstbackend -- backend test utility
Uses the SANE library.
Copyright (C) 2002 Frank Zago (sane at zago dot net)
- Copyright (C) 2013 Stphane Voltz <stef.dev@free.fr> : sane_get_devices test
+ Copyright (C) 2013 Stéphane Voltz <stef.dev@free.fr> : sane_get_devices test
This file is part of the SANE package.
@@ -85,15 +85,15 @@ int verbose_level;
static void display_stats(void)
{
#ifdef HAVE_LONG_LONG
- printf("warnings: %d error: %d checks: %lld\n",
+ printf("warnings: %d error: %d checks: %lld\n",
message_number_wrn, message_number_err, checks_done);
#else
- printf("warnings: %d error: %d checks: %ld\n",
+ printf("warnings: %d error: %d checks: %ld\n",
message_number_wrn, message_number_err, checks_done);
#endif
}
-/*
+/*
* If the condition is false, display a message with some headers
* depending on the level.
*
@@ -109,8 +109,8 @@ static int check(enum message_level level, int condition, const char *format, ..
va_list args;
if (level != MSG && level != INF) checks_done ++;
-
- if (condition != 0)
+
+ if (condition != 0)
return condition;
va_start(args, format);
@@ -135,10 +135,10 @@ static int check(enum message_level level, int condition, const char *format, ..
case FATAL: /* fatal error */
printf("FATAL ERROR : %s\n", str);
message_number_err ++;
- break;
+ break;
case BUG: /* bug in tstbackend */
printf("tstbackend BUG : %s\n", str);
- break;
+ break;
}
if (level == FATAL || level == BUG) {
@@ -210,14 +210,14 @@ static void guards_check(void *ptr, size_t size)
/*--------------------------------------------------------------------------*/
-static void
+static void
test_parameters (SANE_Device * device, SANE_Parameters *params)
{
SANE_Status status;
SANE_Parameters p;
status = sane_get_parameters (device, &p);
- check(FATAL, (status == SANE_STATUS_GOOD),
+ check(FATAL, (status == SANE_STATUS_GOOD),
"cannot get the parameters (error %s)", sane_strstatus(status));
check(FATAL, ((p.format == SANE_FRAME_GRAY) ||
@@ -227,7 +227,7 @@ test_parameters (SANE_Device * device, SANE_Parameters *params)
(p.format == SANE_FRAME_BLUE)),
"parameter format is not a known SANE_FRAME_* (%d)", p.format);
- check(FATAL, ((p.last_frame == SANE_FALSE) ||
+ check(FATAL, ((p.last_frame == SANE_FALSE) ||
(p.last_frame == SANE_TRUE)),
"parameter last_frame is neither SANE_FALSE or SANE_TRUE (%d)", p.last_frame);
@@ -243,7 +243,7 @@ test_parameters (SANE_Device * device, SANE_Parameters *params)
/* Try to set every option in a word list. */
static void
-test_options_word_list (SANE_Device * device, int option_num,
+test_options_word_list (SANE_Device * device, int option_num,
const SANE_Option_Descriptor *opt,
int can_do_recursive)
{
@@ -252,24 +252,24 @@ test_options_word_list (SANE_Device * device, int option_num,
SANE_Int val_int;
SANE_Int info;
- check(FATAL, (opt->type == SANE_TYPE_INT ||
+ check(FATAL, (opt->type == SANE_TYPE_INT ||
opt->type == SANE_TYPE_FIXED),
"type must be SANE_TYPE_INT or SANE_TYPE_FIXED (%d)", opt->type);
if (!SANE_OPTION_IS_SETTABLE(opt->cap)) return;
for (i=1; i<opt->constraint.word_list[0]; i++) {
-
+
info = 0x1010; /* garbage */
val_int = opt->constraint.word_list[i];
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, &val_int, &info);
-
+
check(FATAL, (status == SANE_STATUS_GOOD),
"cannot set a settable option (status=%s)", sane_strstatus(status));
- check(WRN, ((info & ~(SANE_INFO_RELOAD_OPTIONS |
+ check(WRN, ((info & ~(SANE_INFO_RELOAD_OPTIONS |
SANE_INFO_RELOAD_PARAMS)) == 0),
"sane_control_option set an invalid info (%d)", info);
@@ -281,8 +281,8 @@ test_options_word_list (SANE_Device * device, int option_num,
}
/* The option might have become inactive or unsettable. Skip it. */
- if (!SANE_OPTION_IS_ACTIVE(opt->cap) ||
- !SANE_OPTION_IS_SETTABLE(opt->cap))
+ if (!SANE_OPTION_IS_ACTIVE(opt->cap) ||
+ !SANE_OPTION_IS_SETTABLE(opt->cap))
return;
}
@@ -290,7 +290,7 @@ test_options_word_list (SANE_Device * device, int option_num,
/* Try to set every option in a string list. */
static void
-test_options_string_list (SANE_Device * device, int option_num,
+test_options_string_list (SANE_Device * device, int option_num,
const SANE_Option_Descriptor *opt,
int can_do_recursive)
{
@@ -314,13 +314,13 @@ test_options_string_list (SANE_Device * device, int option_num,
val_string, opt->size);
info = 0xE1000; /* garbage */
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, val_string, &info);
check(FATAL, (status == SANE_STATUS_GOOD),
"cannot set a settable option (status=%s)", sane_strstatus(status));
- check(WRN, ((info & ~(SANE_INFO_RELOAD_OPTIONS |
+ check(WRN, ((info & ~(SANE_INFO_RELOAD_OPTIONS |
SANE_INFO_RELOAD_PARAMS)) == 0),
"sane_control_option set an invalid info (%d)", info);
@@ -334,8 +334,8 @@ test_options_string_list (SANE_Device * device, int option_num,
}
/* The option might have become inactive or unsettable. Skip it. */
- if (!SANE_OPTION_IS_ACTIVE(opt->cap) ||
- !SANE_OPTION_IS_SETTABLE(opt->cap))
+ if (!SANE_OPTION_IS_ACTIVE(opt->cap) ||
+ !SANE_OPTION_IS_SETTABLE(opt->cap))
return;
}
}
@@ -352,8 +352,8 @@ test_options (SANE_Device * device, int can_do_recursive)
void *optval; /* value for the option */
size_t optsize; /* size of the optval buffer */
- /*
- * Test option 0
+ /*
+ * Test option 0
*/
opt = sane_get_option_descriptor (device, 0);
check(FATAL, (opt != NULL),
@@ -374,7 +374,7 @@ test_options (SANE_Device * device, int can_do_recursive)
check(WRN, (status != SANE_STATUS_GOOD),
"the option 0 value can be set");
- /*
+ /*
* Test all options
*/
option_num = 0;
@@ -454,7 +454,7 @@ test_options (SANE_Device * device, int can_do_recursive)
check(WRN, (opt->constraint_type == SANE_CONSTRAINT_NONE),
"invalid constraint type for option [%d, %s] (%d)", option_num, opt->name, opt->constraint_type);
break;
-
+
case SANE_TYPE_INT:
case SANE_TYPE_FIXED:
check(WRN, (opt->size > 0 && (opt->size % sizeof(SANE_Word) == 0)),
@@ -467,7 +467,7 @@ test_options (SANE_Device * device, int can_do_recursive)
"invalid constraint type for option [%d, %s] (%d)", option_num, opt->name, opt->constraint_type);
break;
- case SANE_TYPE_STRING:
+ case SANE_TYPE_STRING:
check(WRN, (opt->size >= 1),
"size of option [%d, %s] must be at least 1 for the NUL terminator", option_num, opt->name);
check(INF, (opt->unit == SANE_UNIT_NONE),
@@ -479,7 +479,7 @@ test_options (SANE_Device * device, int can_do_recursive)
optsize = opt->size;
break;
- case SANE_TYPE_BUTTON:
+ case SANE_TYPE_BUTTON:
case SANE_TYPE_GROUP:
check(INF, (opt->unit == SANE_UNIT_NONE),
"option [%d, %s], unit is not SANE_UNIT_NONE", option_num, opt->name);
@@ -491,11 +491,11 @@ test_options (SANE_Device * device, int can_do_recursive)
default:
check(ERR, 0,
- "invalid type %d for option %s",
+ "invalid type %d for option %s",
opt->type, opt->name);
break;
}
-
+
if (optval) {
/* This is an option with a value */
@@ -505,7 +505,7 @@ test_options (SANE_Device * device, int can_do_recursive)
* consider that an inactive option shouldn't be read by a
* frontend because its value is meaningless. I think
* that, in that case, SANE_STATUS_INVAL is an appropriate
- * return.
+ * return.
*/
guards_set(optval, optsize);
status = sane_control_option (device, option_num,
@@ -522,7 +522,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* set with NULL info */
guards_set(optval, optsize);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, optval, NULL);
guards_check(optval, optsize);
if (SANE_OPTION_IS_SETTABLE (opt->cap) && SANE_OPTION_IS_ACTIVE (opt->cap)) {
@@ -531,13 +531,13 @@ test_options (SANE_Device * device, int can_do_recursive)
} else {
check(ERR, (status == SANE_STATUS_INVAL),
"was able to set option [%d, %s] value, although it is not active or settable", option_num, opt->name);
- }
-
+ }
+
/* Get with invalid info. Since if is a get, info should be either
* ignored or set to 0. */
info = 0xdeadbeef;
guards_set(optval, optsize);
- status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
+ status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
optval, &info);
guards_check(optval, optsize);
if (SANE_OPTION_IS_GETTABLE (opt->cap)) {
@@ -549,19 +549,19 @@ test_options (SANE_Device * device, int can_do_recursive)
}
check(ERR, ((info == (SANE_Int)0xdeadbeef) || (info == 0)),
"when getting option [%d, %s], info was set to %x", option_num, opt->name, info);
-
+
/* Set with invalid info. Info should be reset by the backend. */
info = 0x10000;
guards_set(optval, optsize);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, optval, &info);
guards_check(optval, optsize);
if (SANE_OPTION_IS_SETTABLE (opt->cap) && SANE_OPTION_IS_ACTIVE (opt->cap)) {
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option [%d, %s] value, although it is active and settable (%s)", option_num, opt->name, sane_strstatus(status));
- check(ERR, ((info & ~(SANE_INFO_INEXACT |
- SANE_INFO_RELOAD_OPTIONS |
+ check(ERR, ((info & ~(SANE_INFO_INEXACT |
+ SANE_INFO_RELOAD_OPTIONS |
SANE_INFO_RELOAD_PARAMS)) == 0),
"sane_control_option set some wrong bit in info (%d)", info);
@@ -575,10 +575,10 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Ask the backend to set the option automatically. */
guards_set(optval, optsize);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_AUTO, optval, &info);
guards_check(optval, optsize);
- if (SANE_OPTION_IS_SETTABLE (opt->cap) &&
+ if (SANE_OPTION_IS_SETTABLE (opt->cap) &&
SANE_OPTION_IS_ACTIVE (opt->cap) &&
(opt->cap & SANE_CAP_AUTOMATIC)) {
check(ERR, (status == SANE_STATUS_GOOD),
@@ -594,7 +594,7 @@ test_options (SANE_Device * device, int can_do_recursive)
if (optval) {
guards_free(optval);
- optval = NULL;
+ optval = NULL;
}
/* Some capabilities checks. */
@@ -605,18 +605,18 @@ test_options (SANE_Device * device, int can_do_recursive)
check(ERR, ((opt->cap & SANE_CAP_SOFT_DETECT) != 0),
"option [%d, %s], SANE_CAP_SOFT_DETECT must be set if SANE_CAP_SOFT_SELECT is set", option_num, opt->name);
}
- if ((opt->cap & (SANE_CAP_SOFT_SELECT |
- SANE_CAP_HARD_SELECT |
+ if ((opt->cap & (SANE_CAP_SOFT_SELECT |
+ SANE_CAP_HARD_SELECT |
SANE_CAP_SOFT_DETECT)) == SANE_CAP_SOFT_DETECT) {
check(ERR, (!SANE_OPTION_IS_SETTABLE (opt->cap)),
"option [%d, %s], must not be settable", option_num, opt->name);
}
-
+
if (!SANE_OPTION_IS_SETTABLE (opt->cap)) {
/* Unsettable option. Ignore the rest of the test. */
continue;
}
-
+
/* Check that will sane_control_option copy the string
* parameter and not just store a pointer to it. */
if (opt->type == SANE_TYPE_STRING) {
@@ -624,7 +624,7 @@ test_options (SANE_Device * device, int can_do_recursive)
char *optstr;
optstr = guards_malloc(opt->size);
- val_string2 = guards_malloc(opt->size);
+ val_string2 = guards_malloc(opt->size);
/* Poison the current value. */
strncpy(optstr, "-pOiSoN-", opt->size-1);
@@ -632,7 +632,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Get the value */
guards_set(optstr, opt->size);
- status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
+ status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
optstr, NULL);
guards_check(optstr, opt->size);
check(FATAL, (status == SANE_STATUS_GOOD),
@@ -642,7 +642,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Set the value */
guards_set(optstr, opt->size);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, optstr, NULL);
guards_check(optstr, opt->size);
check(ERR, (status == SANE_STATUS_GOOD),
@@ -653,13 +653,13 @@ test_options (SANE_Device * device, int can_do_recursive)
optstr[opt->size-1] = 0;
/* Read again the value and compare. */
- guards_set(val_string2, opt->size);
- status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
+ guards_set(val_string2, opt->size);
+ status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
val_string2, NULL);
guards_check(val_string2, opt->size);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot get option [%d, %s] value", option_num, opt->name);
-
+
check(FATAL, (strcmp(optstr, val_string2) != 0),
"sane_control_option did not copy the string parameter for option [%d, %s]", option_num, opt->name);
@@ -671,8 +671,8 @@ test_options (SANE_Device * device, int can_do_recursive)
if (opt->type == SANE_TYPE_BOOL) {
SANE_Bool org_v;
SANE_Bool v;
-
- status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
+
+ status = sane_control_option (device, option_num, SANE_ACTION_GET_VALUE,
&org_v, &info);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot get boolean option [%d, %s] value (%s)", option_num, opt->name, sane_strstatus(status));
@@ -686,12 +686,12 @@ test_options (SANE_Device * device, int can_do_recursive)
break;
default:
check(ERR, 0,
- "invalid boolean value %d for option [%d, %s]",
+ "invalid boolean value %d for option [%d, %s]",
org_v, option_num, opt->name);
}
-
+
/* Set the opposite of the current value. */
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, &v, &info);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set boolean option [%d, %s] value (%s)", option_num, opt->name, sane_strstatus(status));
@@ -704,7 +704,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Set the initial value. */
v = org_v;
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, &v, &info);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set boolean option [%d, %s] value (%s)", option_num, opt->name, sane_strstatus(status));
@@ -713,22 +713,22 @@ test_options (SANE_Device * device, int can_do_recursive)
if (info & SANE_INFO_RELOAD_PARAMS) {
test_parameters(device, NULL);
- }
+ }
}
-
+
/* Try to set an invalid option. */
switch(opt->type) {
case SANE_TYPE_BOOL: {
SANE_Word v; /* should be SANE_Bool instead */
-
+
v = -1; /* invalid value. must be SANE_FALSE or SANE_TRUE */
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, &v, NULL);
check(ERR, (status != SANE_STATUS_GOOD),
"was able to set an invalid value for boolean option [%d, %s]", option_num, opt->name);
v = 2; /* invalid value. must be SANE_FALSE or SANE_TRUE */
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, &v, NULL);
check(ERR, (status != SANE_STATUS_GOOD),
"was able to set an invalid value for boolean option [%d, %s]", option_num, opt->name);
@@ -750,7 +750,7 @@ test_options (SANE_Device * device, int can_do_recursive)
v[i] = opt->constraint.range->min - 1; /* invalid range */
guards_set(v, opt->size);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, v, &info);
guards_check(v, opt->size);
check(ERR, (status == SANE_STATUS_GOOD && (info & SANE_INFO_INEXACT) ),
@@ -758,7 +758,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Set the corrected value. */
guards_set(v, opt->size);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, v, &info);
guards_check(v, opt->size);
check(ERR, (status == SANE_STATUS_GOOD && !(info & SANE_INFO_INEXACT) ),
@@ -769,7 +769,7 @@ test_options (SANE_Device * device, int can_do_recursive)
v[i] = opt->constraint.range->max + 1; /* invalid range */
guards_set(v, opt->size);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, v, &info);
guards_check(v, opt->size);
check(ERR, (status == SANE_STATUS_GOOD && (info & SANE_INFO_INEXACT) ),
@@ -777,7 +777,7 @@ test_options (SANE_Device * device, int can_do_recursive)
/* Set the corrected value. */
guards_set(v, opt->size);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, v, &info);
guards_check(v, opt->size);
check(ERR, (status == SANE_STATUS_GOOD && !(info & SANE_INFO_INEXACT) ),
@@ -791,15 +791,15 @@ test_options (SANE_Device * device, int can_do_recursive)
default:
break;
}
-
+
/* TODO: button */
-
- /*
+
+ /*
* Here starts all the recursive stuff. After the test, it is
* possible that the value is not settable nor active
- * anymore.
+ * anymore.
*/
-
+
/* Try to set every option in a list */
switch(opt->constraint_type) {
case SANE_CONSTRAINT_WORD_LIST:
@@ -813,12 +813,12 @@ test_options (SANE_Device * device, int can_do_recursive)
"no constraint list for option [%d, %s]", option_num, opt->name);
test_options_string_list (device, option_num, opt, can_do_recursive);
break;
-
+
case SANE_CONSTRAINT_RANGE:
check(FATAL, (opt->constraint.range != NULL),
"no constraint range for option [%d, %s]", option_num, opt->name);
check(FATAL, (opt->constraint.range->max >= opt->constraint.range->min),
- "incorrect range for option [%d, %s] (min=%d > max=%d)",
+ "incorrect range for option [%d, %s] (min=%d > max=%d)",
option_num, opt->name, opt->constraint.range->min, opt->constraint.range->max);
/* Recurse. */
if (can_do_recursive) {
@@ -838,7 +838,7 @@ test_options (SANE_Device * device, int can_do_recursive)
}
/* End of the test for that option. */
- }
+ }
/* test random non-existing options. */
opt = sane_get_option_descriptor (device, -1);
@@ -852,7 +852,7 @@ test_options (SANE_Device * device, int can_do_recursive)
opt = sane_get_option_descriptor (device, num_dev_options+2);
check(ERR, (opt == NULL),
"was able to get option descriptor for option %d", num_dev_options+2);
-
+
opt = sane_get_option_descriptor (device, num_dev_options+50);
check(ERR, (opt == NULL),
"was able to get option descriptor for option %d", num_dev_options+50);
@@ -863,8 +863,8 @@ static const SANE_Option_Descriptor *get_optdesc_by_name(SANE_Handle device, con
{
const SANE_Option_Descriptor *opt;
SANE_Int num_dev_options;
- SANE_Status status;
-
+ SANE_Status status;
+
/* Get the number of options. */
status = sane_control_option (device, 0, SANE_ACTION_GET_VALUE, &num_dev_options, 0);
check(FATAL, (status == SANE_STATUS_GOOD),
@@ -876,7 +876,7 @@ static const SANE_Option_Descriptor *get_optdesc_by_name(SANE_Handle device, con
opt = sane_get_option_descriptor (device, *option_num);
check(FATAL, (opt != NULL),
"cannot get option descriptor for option %d", *option_num);
-
+
if (opt->name && strcmp(opt->name, name) == 0) {
return(opt);
}
@@ -886,10 +886,10 @@ static const SANE_Option_Descriptor *get_optdesc_by_name(SANE_Handle device, con
/* Set the first value for an option. That equates to the minimum for a
* range or the first element in a list. */
-static void set_min_value(SANE_Handle device, int option_num,
+static void set_min_value(SANE_Handle device, int option_num,
const SANE_Option_Descriptor *opt)
{
- SANE_Status status;
+ SANE_Status status;
SANE_String val_string;
SANE_Int val_int;
int rc;
@@ -915,7 +915,7 @@ static void set_min_value(SANE_Handle device, int option_num,
if (!rc) return;
val_string = strdup(opt->constraint.string_list[0]);
assert(val_string);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, val_string, NULL);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to [%s] (%s)", opt->name, val_string, sane_strstatus(status));
@@ -929,7 +929,7 @@ static void set_min_value(SANE_Handle device, int option_num,
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to %d (%s)", opt->name, val_int, sane_strstatus(status));
break;
-
+
default:
abort();
}
@@ -937,10 +937,10 @@ static void set_min_value(SANE_Handle device, int option_num,
/* Set the last value for an option. That equates to the maximum for a
* range or the last element in a list. */
-static void set_max_value(SANE_Handle device, int option_num,
+static void set_max_value(SANE_Handle device, int option_num,
const SANE_Option_Descriptor *opt)
{
- SANE_Status status;
+ SANE_Status status;
SANE_String val_string;
SANE_Int val_int;
int i;
@@ -968,7 +968,7 @@ static void set_max_value(SANE_Handle device, int option_num,
for (i=1; opt->constraint.string_list[i] != NULL; i++);
val_string = strdup(opt->constraint.string_list[i-1]);
assert(val_string);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, val_string, NULL);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to [%s] (%s)", opt->name, val_string, sane_strstatus(status));
@@ -982,17 +982,17 @@ static void set_max_value(SANE_Handle device, int option_num,
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to %d (%s)", opt->name, val_int, sane_strstatus(status));
break;
-
+
default:
abort();
}
}
/* Set a random value for an option amongst the possible values. */
-static void set_random_value(SANE_Handle device, int option_num,
+static void set_random_value(SANE_Handle device, int option_num,
const SANE_Option_Descriptor *opt)
{
- SANE_Status status;
+ SANE_Status status;
SANE_String val_string;
SANE_Int val_int;
int i;
@@ -1022,7 +1022,7 @@ static void set_random_value(SANE_Handle device, int option_num,
i = rand() % i;
val_string = strdup(opt->constraint.string_list[0]);
assert(val_string);
- status = sane_control_option (device, option_num,
+ status = sane_control_option (device, option_num,
SANE_ACTION_SET_VALUE, val_string, NULL);
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to [%s] (%s)", opt->name, val_string, sane_strstatus(status));
@@ -1038,7 +1038,7 @@ static void set_random_value(SANE_Handle device, int option_num,
check(ERR, (status == SANE_STATUS_GOOD),
"cannot set option %s to %d (%s)", opt->name, val_int, sane_strstatus(status));
break;
-
+
default:
abort();
}
@@ -1053,18 +1053,18 @@ static char *get_option_value(SANE_Handle device, const char *option_name)
void *optval; /* value for the option */
int optnum;
static char str[100];
- SANE_Status status;
+ SANE_Status status;
opt = get_optdesc_by_name(device, option_name, &optnum);
if (opt) {
-
+
optval = guards_malloc(opt->size);
status = sane_control_option (device, optnum,
SANE_ACTION_GET_VALUE, optval, NULL);
-
+
if (status == SANE_STATUS_GOOD) {
switch(opt->type) {
-
+
case SANE_TYPE_BOOL:
if (*(SANE_Word*) optval == SANE_FALSE) {
strcpy(str, "FALSE");
@@ -1072,22 +1072,22 @@ static char *get_option_value(SANE_Handle device, const char *option_name)
strcpy(str, "TRUE");
}
break;
-
+
case SANE_TYPE_INT:
sprintf(str, "%d", *(SANE_Word*) optval);
break;
-
+
case SANE_TYPE_FIXED: {
int i;
i = SANE_UNFIX(*(SANE_Word*) optval);
sprintf(str, "%d", i);
}
break;
-
+
case SANE_TYPE_STRING:
strcpy(str, optval);
break;
-
+
default:
str[0] = 0;
}
@@ -1113,7 +1113,7 @@ static char *display_scan_parameters(SANE_Handle device)
char *p = str;
*p = 0;
-
+
p += sprintf(p, "scan mode=[%s] ", get_option_value(device, SANE_NAME_SCAN_MODE));
p += sprintf(p, "resolution=[%s] ", get_option_value(device, SANE_NAME_SCAN_RESOLUTION));
@@ -1129,7 +1129,7 @@ static char *display_scan_parameters(SANE_Handle device)
static void test_scan(SANE_Handle device)
{
const SANE_Option_Descriptor *opt;
- SANE_Status status;
+ SANE_Status status;
int option_num;
SANE_Int val_int;
unsigned char *image = NULL;
@@ -1140,7 +1140,7 @@ static void test_scan(SANE_Handle device)
int rc;
int fd;
- /* Set the largest scan possible.
+ /* Set the largest scan possible.
*
* For that test, the corner
* position must exists and be SANE_CONSTRAINT_RANGE (this is not
@@ -1169,17 +1169,17 @@ static void test_scan(SANE_Handle device)
/* Try to set the I/O mode outside of a scan. */
status = sane_set_io_mode (device, SANE_FALSE);
check(ERR, (status == SANE_STATUS_INVAL),
- "it is possible to sane_set_io_mode outside of a scan");
+ "it is possible to sane_set_io_mode outside of a scan");
status = sane_set_io_mode (device, SANE_TRUE);
check(ERR, (status == SANE_STATUS_INVAL ||
status == SANE_STATUS_UNSUPPORTED),
- "it is possible to sane_set_io_mode outside of a scan");
+ "it is possible to sane_set_io_mode outside of a scan");
/* Test sane_get_select_fd outside of a scan. */
status = sane_get_select_fd(device, &fd);
- check(ERR, (status == SANE_STATUS_INVAL ||
+ check(ERR, (status == SANE_STATUS_INVAL ||
status == SANE_STATUS_UNSUPPORTED),
- "sane_get_select_fd outside of a scan returned an invalid status (%s)",
+ "sane_get_select_fd outside of a scan returned an invalid status (%s)",
sane_strstatus (status));
if (test_level > 2) {
@@ -1197,11 +1197,11 @@ static void test_scan(SANE_Handle device)
check(ERR, (status == SANE_STATUS_GOOD),
"sane_set_io_mode with SANE_FALSE must return SANE_STATUS_GOOD");
- /* test sane_set_io_mode with SANE_TRUE. */
+ /* test sane_set_io_mode with SANE_TRUE. */
status = sane_set_io_mode (device, SANE_TRUE);
- check(ERR, (status == SANE_STATUS_GOOD ||
+ check(ERR, (status == SANE_STATUS_GOOD ||
status == SANE_STATUS_UNSUPPORTED),
- "sane_set_io_mode with SANE_TRUE returned an invalid status (%s)",
+ "sane_set_io_mode with SANE_TRUE returned an invalid status (%s)",
sane_strstatus (status));
/* Put the backend back into blocking mode. */
@@ -1212,9 +1212,9 @@ static void test_scan(SANE_Handle device)
/* Test sane_get_select_fd */
fd = 0x76575; /* won't exists */
status = sane_get_select_fd(device, &fd);
- check(ERR, (status == SANE_STATUS_GOOD ||
+ check(ERR, (status == SANE_STATUS_GOOD ||
status == SANE_STATUS_UNSUPPORTED),
- "sane_get_select_fd returned an invalid status (%s)",
+ "sane_get_select_fd returned an invalid status (%s)",
sane_strstatus (status));
if (status == SANE_STATUS_GOOD) {
check(ERR, (fd != 0x76575),
@@ -1222,13 +1222,13 @@ static void test_scan(SANE_Handle device)
check(ERR, (fd >= 0),
"sane_get_select_fd returned an invalid fd");
}
-
+
/* Check that it is not possible to set an option. It is probably
* a requirement stated indirectly in the section 4.4 on code
- * flow.
+ * flow.
*/
- status = sane_control_option (device, option_num,
- SANE_ACTION_SET_VALUE,
+ status = sane_control_option (device, option_num,
+ SANE_ACTION_SET_VALUE,
&val_int , NULL);
check(WRN, (status != SANE_STATUS_GOOD),
"it is possible to set a value during a scan");
@@ -1236,7 +1236,7 @@ static void test_scan(SANE_Handle device)
test_parameters(device, &params);
if (params.bytes_per_line != 0 && params.lines != 0) {
-
+
to_read = params.bytes_per_line * params.lines;
while(SANE_TRUE) {
len = 76457645; /* garbage */
@@ -1288,8 +1288,8 @@ static void test_scan(SANE_Handle device)
"it is possible to sane_read outside a scan");
- /*
- * Do a partial scan
+ /*
+ * Do a partial scan
*/
check(MSG, 0, "TEST: partial scan - %s", display_scan_parameters(device));
@@ -1301,7 +1301,7 @@ static void test_scan(SANE_Handle device)
test_parameters(device, &params);
if (params.bytes_per_line != 0 && params.lines != 0) {
-
+
len = 10;
guards_set(image, 1);
@@ -1311,12 +1311,12 @@ static void test_scan(SANE_Handle device)
check(ERR, (len == 1),
"sane_read() didn't return 1 byte as requested");
}
-
+
sane_cancel(device);
- /*
- * Do a scan, reading random length.
+ /*
+ * Do a scan, reading random length.
*/
check(MSG, 0, "TEST: scan random length - %s", display_scan_parameters(device));
@@ -1336,8 +1336,8 @@ static void test_scan(SANE_Handle device)
if (!rc) goto the_end;
/* Check that it is not possible to set an option. */
- status = sane_control_option (device, option_num,
- SANE_ACTION_SET_VALUE,
+ status = sane_control_option (device, option_num,
+ SANE_ACTION_SET_VALUE,
&val_int , NULL);
check(WRN, (status != SANE_STATUS_GOOD),
"it is possible to set a value during a scan");
@@ -1345,10 +1345,10 @@ static void test_scan(SANE_Handle device)
test_parameters(device, &params);
if (params.bytes_per_line != 0 && params.lines != 0) {
-
+
to_read = params.bytes_per_line * params.lines;
srandom(time(NULL));
-
+
while (SANE_TRUE) {
ask_len = rand() & 0x7ffff; /* 0 to 512K-1 */
@@ -1387,7 +1387,7 @@ static void test_scan(SANE_Handle device)
if (!rc) {
break;
}
-
+
to_read -= len;
}
@@ -1422,7 +1422,7 @@ static void test_scan(SANE_Handle device)
test_parameters(device, &params);
if (params.bytes_per_line != 0 && params.lines != 0) {
-
+
to_read = params.bytes_per_line * params.lines;
while(SANE_TRUE) {
ask_len = IMAGE_SIZE;
@@ -1481,7 +1481,7 @@ static void test_scans(SANE_Device * device)
{
const SANE_Option_Descriptor *scan_mode_opt;
const SANE_Option_Descriptor *resolution_mode_opt;
- SANE_Status status;
+ SANE_Status status;
int scan_mode_optnum;
int resolution_mode_optnum;
SANE_String val_string;
@@ -1519,27 +1519,27 @@ static void test_scans(SANE_Device * device)
if (scan_mode_opt) {
/* Do several scans, with several resolution. */
for (i=0; scan_mode_opt->constraint.string_list[i] != NULL; i++) {
-
+
val_string = strdup(scan_mode_opt->constraint.string_list[i]);
assert(val_string);
-
- status = sane_control_option (device, scan_mode_optnum,
+
+ status = sane_control_option (device, scan_mode_optnum,
SANE_ACTION_SET_VALUE, val_string, NULL);
check(FATAL, (status == SANE_STATUS_GOOD),
"cannot set a settable option (status=%s)", sane_strstatus(status));
-
+
free(val_string);
if (resolution_mode_opt) {
- set_min_value(device, resolution_mode_optnum,
- resolution_mode_opt);
+ set_min_value(device, resolution_mode_optnum,
+ resolution_mode_opt);
test_scan(device);
- set_max_value(device, resolution_mode_optnum,
+ set_max_value(device, resolution_mode_optnum,
resolution_mode_opt);
test_scan(device);
- set_random_value(device, resolution_mode_optnum,
+ set_random_value(device, resolution_mode_optnum,
resolution_mode_opt);
test_scan(device);
} else {
@@ -1548,15 +1548,15 @@ static void test_scans(SANE_Device * device)
}
} else {
if (resolution_mode_opt) {
- set_min_value(device, resolution_mode_optnum,
- resolution_mode_opt);
+ set_min_value(device, resolution_mode_optnum,
+ resolution_mode_opt);
test_scan(device);
- set_max_value(device, resolution_mode_optnum,
+ set_max_value(device, resolution_mode_optnum,
resolution_mode_opt);
test_scan(device);
- set_random_value(device, resolution_mode_optnum,
+ set_random_value(device, resolution_mode_optnum,
resolution_mode_opt);
test_scan(device);
} else {
@@ -1593,7 +1593,7 @@ SANE_Status status;
check(FATAL, (dev->vendor != NULL), "device vendor is NULL");
check(FATAL, (dev->type != NULL), "device type is NULL");
check(FATAL, (dev->model != NULL), "device model is NULL");
-
+
check(INF, ((strcmp(dev->type, "flatbed scanner") == 0) ||
(strcmp(dev->type, "frame grabber") == 0) ||
(strcmp(dev->type, "handheld scanner") == 0) ||
@@ -1784,7 +1784,7 @@ main (int argc, char **argv)
status = sane_open ("opihndvses75bvt6fg", &device);
check(WRN, (status == SANE_STATUS_INVAL),
"sane_open() failed (%s)", sane_strstatus (status));
-
+
if (status == SANE_STATUS_GOOD)
sane_close(device);
@@ -1809,7 +1809,7 @@ main (int argc, char **argv)
status = sane_init (&version_code, NULL);
check(FATAL, (status == SANE_STATUS_GOOD),
"sane_init failed with %s", sane_strstatus (status));
-
+
/* Check the device list */
rc = test_get_devices(&device_list, time);
if (rc) goto the_exit;
@@ -1833,7 +1833,7 @@ main (int argc, char **argv)
if (!rc) goto the_exit;
check(MSG, 0, "using device %s", devname);
-
+
/* Test open close */
check(MSG, 0, "TEST: open/close");
for (i=0; i<10; i++) {
@@ -1887,6 +1887,3 @@ main (int argc, char **argv)
display_stats();
return(0);
}
-
-
-
diff --git a/include/.gitignore b/include/.gitignore
new file mode 100644
index 0000000..fb772cb
--- /dev/null
+++ b/include/.gitignore
@@ -0,0 +1,2 @@
+_stdint.h
+byteorder.h
diff --git a/include/Makefile.in b/include/Makefile.in
deleted file mode 100644
index 3ccbdf3..0000000
--- a/include/Makefile.in
+++ /dev/null
@@ -1,642 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = include
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(nobase_include_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(includedir)"
-HEADERS = $(nobase_include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-nobase_include_HEADERS = sane/sane.h sane/saneopts.h
-EXTRA_DIST = lalloca.h lassert.h lgetopt.h md5.h font_6x11.h \
- 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_wire.h sane/sanei_magic.h \
- sane/sanei_ir.h
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu include/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-nobase_includeHEADERS: $(nobase_include_HEADERS)
- @$(NORMAL_INSTALL)
- @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
- fi; \
- $(am__nobase_list) | while read dir files; do \
- xfiles=; for file in $$files; do \
- if test -f "$$file"; then xfiles="$$xfiles $$file"; \
- else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
- test -z "$$xfiles" || { \
- test "x$$dir" = x. || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
- $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
- echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
- $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
- done
-
-uninstall-nobase_includeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
- $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
- dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(includedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nobase_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-nobase_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool cscopelist-am ctags ctags-am distclean \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man \
- install-nobase_includeHEADERS install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-nobase_includeHEADERS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/include/lalloca.h b/include/lalloca.h
index 85e4ea8..214e550 100644
--- a/include/lalloca.h
+++ b/include/lalloca.h
@@ -37,8 +37,8 @@
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
- Choose suitable implementation of alloca.
-
+ Choose suitable implementation of alloca.
+
*/
#ifndef lalloca_h
diff --git a/include/lassert.h b/include/lassert.h
index 4d1c740..5a86e21 100644
--- a/include/lassert.h
+++ b/include/lassert.h
@@ -48,7 +48,7 @@
/* The idea is from the gcc header file assert.h. */
#if defined __GNUC__ && defined _AIX
-/* The implementation of assert of gcc on AIX is in libgcc.a. This
+/* The implementation of assert of gcc on AIX is in libgcc.a. This
doesn't work with shared libraries. So let's make our own assert(). */
#define assert(arg) \
((void) ((arg) ? 0 : lassert (arg, __FILE__, __LINE__)))
diff --git a/include/md5.h b/include/md5.h
index 51e2512..bee44f6 100644
--- a/include/md5.h
+++ b/include/md5.h
@@ -87,7 +87,7 @@ typedef unsigned long int md5_uintptr;
#define ALIGN __attribute__ ((__aligned__ (4)))
#else
#define ALIGN
-#endif
+#endif
/* Structure to save state of computation between the single steps. */
struct md5_ctx
diff --git a/include/sane/.gitignore b/include/sane/.gitignore
new file mode 100644
index 0000000..f282c15
--- /dev/null
+++ b/include/sane/.gitignore
@@ -0,0 +1,3 @@
+config.h.in
+config.h
+stamp-h1
diff --git a/include/sane/config.h.in b/include/sane/config.h.in
deleted file mode 100644
index 9a90a8d..0000000
--- a/include/sane/config.h.in
+++ /dev/null
@@ -1,711 +0,0 @@
-/* include/sane/config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if the system supports IPv6 */
-#undef ENABLE_IPV6
-
-/* Define to 1 if device locking should be enabled. */
-#undef ENABLE_LOCKING
-
-/* Define to 1 if translation of program messages to the user's native
- language is requested. */
-#undef ENABLE_NLS
-
-/* Define if GPLogFunc does not take a va_list. */
-#undef GPLOGFUNC_NO_VARGS
-
-/* Define to 1 if struct sockaddr_storage has an ss_family member */
-#undef HAS_SS_FAMILY
-
-/* Define to 1 if struct sockaddr_storage has __ss_family instead of ss_family
- */
-#undef HAS___SS_FAMILY
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <apollo/scsi.h> header file. */
-#undef HAVE_APOLLO_SCSI_H
-
-/* Define to 1 if you have the <asm/io.h> header file. */
-#undef HAVE_ASM_IO_H
-
-/* Define to 1 if you have the <asm/types.h> header file. */
-#undef HAVE_ASM_TYPES_H
-
-/* Define to 1 if you have the `atexit' function. */
-#undef HAVE_ATEXIT
-
-/* Define to 1 if you have the <be/kernel/OS.h> header file. */
-#undef HAVE_BE_KERNEL_OS_H
-
-/* Define to 1 if you have the <bsd/dev/scsireg.h> header file. */
-#undef HAVE_BSD_DEV_SCSIREG_H
-
-/* Define to 1 if you have the <camlib.h> header file. */
-#undef HAVE_CAMLIB_H
-
-/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
- CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
-
-/* Define to 1 if you have the `cfmakeraw' function. */
-#undef HAVE_CFMAKERAW
-
-/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
- the CoreFoundation framework. */
-#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
- */
-#undef HAVE_DCGETTEXT
-
-/* Define to 1 if you have the <ddk/ntddscsi.h> header file. */
-#undef HAVE_DDK_NTDDSCSI_H
-
-/* Define to 1 if you have the <dev/ppbus/ppi.h> header file. */
-#undef HAVE_DEV_PPBUS_PPI_H
-
-/* Is /dev/urandom available? */
-#undef HAVE_DEV_URANDOM
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the `dlopen' function. */
-#undef HAVE_DLOPEN
-
-/* Define to 1 if you have the <dl.h> header file. */
-#undef HAVE_DL_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `getaddrinfo' function. */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the `getenv' function. */
-#undef HAVE_GETENV
-
-/* Define to 1 if you have the `getnameinfo' function. */
-#undef HAVE_GETNAMEINFO
-
-/* Define to 1 if you have the <getopt.h> header file. */
-#undef HAVE_GETOPT_H
-
-/* Define to 1 if you have the `getopt_long' function. */
-#undef HAVE_GETOPT_LONG
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* Define to 1 if you have the `getpass' function. */
-#undef HAVE_GETPASS
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#undef HAVE_GETTEXT
-
-/* Define to 1 if you have the `getuid' function. */
-#undef HAVE_GETUID
-
-/* Define to 1 if you have the `gp_camera_init' function. */
-#undef HAVE_GP_CAMERA_INIT
-
-/* Define to 1 if you have the `gp_port_info_get_path' function. */
-#undef HAVE_GP_PORT_INFO_GET_PATH
-
-/* Define to 1 if you have the <gscdds.h> header file. */
-#undef HAVE_GSCDDS_H
-
-/* Define to 1 if you have the `i386_set_ioperm' function. */
-#undef HAVE_I386_SET_IOPERM
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-#undef HAVE_IFADDRS_H
-
-/* Define to 1 if you have the `inet_addr' function. */
-#undef HAVE_INET_ADDR
-
-/* Define to 1 if you have the `inet_aton' function. */
-#undef HAVE_INET_ATON
-
-/* Define to 1 if you have the `inet_ntoa' function. */
-#undef HAVE_INET_NTOA
-
-/* Define to 1 if you have the `inet_ntop' function. */
-#undef HAVE_INET_NTOP
-
-/* Define to 1 if you have the `inet_pton' function. */
-#undef HAVE_INET_PTON
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <IOKit/cdb/IOSCSILib.h> header file. */
-#undef HAVE_IOKIT_CDB_IOSCSILIB_H
-
-/* Define to 1 if you have the
- <IOKit/scsi-commands/SCSICommandOperationCodes.h> header file. */
-#undef HAVE_IOKIT_SCSI_COMMANDS_SCSICOMMANDOPERATIONCODES_H
-
-/* Define to 1 if you have the <IOKit/scsi/SCSICommandOperationCodes.h> header
- file. */
-#undef HAVE_IOKIT_SCSI_SCSICOMMANDOPERATIONCODES_H
-
-/* Define to 1 if you have the <IOKit/scsi/SCSITaskLib.h> header file. */
-#undef HAVE_IOKIT_SCSI_SCSITASKLIB_H
-
-/* Define to 1 if you have the `ioperm' function. */
-#undef HAVE_IOPERM
-
-/* Define to 1 if you have the `iopl' function. */
-#undef HAVE_IOPL
-
-/* Define to 1 if you have the <io/cam/cam.h> header file. */
-#undef HAVE_IO_CAM_CAM_H
-
-/* Define to 1 if you have the `isfdtype' function. */
-#undef HAVE_ISFDTYPE
-
-/* Define to 1 if you have the <libc.h> header file. */
-#undef HAVE_LIBC_H
-
-/* Define to 1 if you have the `ieee1284' library (-lcam). */
-#undef HAVE_LIBIEEE1284
-
-/* Define to 1 if you have the libjpeg library. */
-#undef HAVE_LIBJPEG
-
-/* Define to 1 if you have the libpng library. */
-#undef HAVE_LIBPNG
-
-/* Define to 1 if you have the net-snmp library. */
-#undef HAVE_LIBSNMP
-
-/* Define to 1 if you have libusb-1.0 */
-#undef HAVE_LIBUSB
-
-/* Define to 1 if you have libusb-0.1 */
-#undef HAVE_LIBUSB_LEGACY
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <linux/ppdev.h> header file. */
-#undef HAVE_LINUX_PPDEV_H
-
-/* Define if the long long type is available. */
-#undef HAVE_LONG_LONG
-
-/* Define to 1 if you have the <lusb0_usb.h> header file. */
-#undef HAVE_LUSB0_USB_H
-
-/* Define to 1 if you have the <machine/cpufunc.h> header file. */
-#undef HAVE_MACHINE_CPUFUNC_H
-
-/* Define to 1 if you have the <mach-o/dyld.h> header file. */
-#undef HAVE_MACH_O_DYLD_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mkdir' function. */
-#undef HAVE_MKDIR
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the `NSLinkModule' function. */
-#undef HAVE_NSLINKMODULE
-
-/* Define to 1 if you have the <ntddscsi.h> header file. */
-#undef HAVE_NTDDSCSI_H
-
-/* Define to 1 if you have the <os2.h> header file. */
-#undef HAVE_OS2_H
-
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
-
-/* Define to 1 if you have the `pthread_cancel' function. */
-#undef HAVE_PTHREAD_CANCEL
-
-/* Define to 1 if you have the `pthread_create' function. */
-#undef HAVE_PTHREAD_CREATE
-
-/* Define to 1 if you have the `pthread_detach' function. */
-#undef HAVE_PTHREAD_DETACH
-
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
-
-/* Define to 1 if you have the `pthread_join' function. */
-#undef HAVE_PTHREAD_JOIN
-
-/* Define to 1 if you have the `pthread_kill' function. */
-#undef HAVE_PTHREAD_KILL
-
-/* Define to 1 if you have the `pthread_testcancel' function. */
-#undef HAVE_PTHREAD_TESTCANCEL
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#undef HAVE_PWD_H
-
-/* define if you have the resmgr library */
-#undef HAVE_RESMGR
-
-/* Define to 1 if you have the `scsireq_enter' function. */
-#undef HAVE_SCSIREQ_ENTER
-
-/* Define if SCSITaskSGElement is available. */
-#undef HAVE_SCSITASKSGELEMENT
-
-/* Define to 1 if you have the <scsi.h> header file. */
-#undef HAVE_SCSI_H
-
-/* Define to 1 if you have the <scsi/sg.h> header file. */
-#undef HAVE_SCSI_SG_H
-
-/* Define to 1 if you have the `setitimer' function. */
-#undef HAVE_SETITIMER
-
-/* Define if sg_header.target_status is available. */
-#undef HAVE_SG_TARGET_STATUS
-
-/* Define to 1 if you have the `shl_load' function. */
-#undef HAVE_SHL_LOAD
-
-/* Define to 1 if you have the `sigprocmask' function. */
-#undef HAVE_SIGPROCMASK
-
-/* Define to 1 if you have the `sleep' function. */
-#undef HAVE_SLEEP
-
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strcasestr' function. */
-#undef HAVE_STRCASESTR
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strftime' function. */
-#undef HAVE_STRFTIME
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strndup' function. */
-#undef HAVE_STRNDUP
-
-/* Define to 1 if you have the `strsep' function. */
-#undef HAVE_STRSEP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the `strtod' function. */
-#undef HAVE_STRTOD
-
-/* Define if struct flock is available. */
-#undef HAVE_STRUCT_FLOCK
-
-/* Define to 1 if you have the `syslog' function. */
-#undef HAVE_SYSLOG
-
-/* Is /usr/include/systemd/sd-daemon.h available? */
-#undef HAVE_SYSTEMD
-
-/* Define to 1 if you have the <sys/dsreq.h> header file. */
-#undef HAVE_SYS_DSREQ_H
-
-/* Define to 1 if you have the <sys/hw.h> header file. */
-#undef HAVE_SYS_HW_H
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the <sys/io.h> header file. */
-#undef HAVE_SYS_IO_H
-
-/* Define to 1 if you have the <sys/ipc.h> header file. */
-#undef HAVE_SYS_IPC_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/passthrudef.h> header file. */
-#undef HAVE_SYS_PASSTHRUDEF_H
-
-/* Define to 1 if you have the <sys/poll.h> header file. */
-#undef HAVE_SYS_POLL_H
-
-/* Define to 1 if you have the <sys/scanio.h> header file. */
-#undef HAVE_SYS_SCANIO_H
-
-/* Define to 1 if you have the <sys/scsicmd.h> header file. */
-#undef HAVE_SYS_SCSICMD_H
-
-/* Define to 1 if you have the <sys/scsiio.h> header file. */
-#undef HAVE_SYS_SCSIIO_H
-
-/* Define to 1 if you have the <sys/scsi.h> header file. */
-#undef HAVE_SYS_SCSI_H
-
-/* Define to 1 if you have the <sys/scsi/scsi.h> header file. */
-#undef HAVE_SYS_SCSI_SCSI_H
-
-/* Define to 1 if you have the <sys/scsi/sgdefs.h> header file. */
-#undef HAVE_SYS_SCSI_SGDEFS_H
-
-/* Define to 1 if you have the <sys/scsi/targets/scgio.h> header file. */
-#undef HAVE_SYS_SCSI_TARGETS_SCGIO_H
-
-/* Define to 1 if you have the <sys/sdi_comm.h> header file. */
-#undef HAVE_SYS_SDI_COMM_H
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/sem.h> header file. */
-#undef HAVE_SYS_SEM_H
-
-/* Define to 1 if you have the <sys/shm.h> header file. */
-#undef HAVE_SYS_SHM_H
-
-/* Define to 1 if you have the <sys/signal.h> header file. */
-#undef HAVE_SYS_SIGNAL_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the `tcsendbreak' function. */
-#undef HAVE_TCSENDBREAK
-
-/* Define to 1 if you have the <tiffio.h> header file. */
-#undef HAVE_TIFFIO_H
-
-/* Define if union semun is available. */
-#undef HAVE_UNION_SEMUN
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have usbcall.dll. */
-#undef HAVE_USBCALLS
-
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
-
-/* Define to 1 if the system has the type `u_char'. */
-#undef HAVE_U_CHAR
-
-/* Define to 1 if the system has the type `u_int'. */
-#undef HAVE_U_INT
-
-/* Define to 1 if the system has the type `u_long'. */
-#undef HAVE_U_LONG
-
-/* Define to 1 if the system has the type `u_short'. */
-#undef HAVE_U_SHORT
-
-/* Define to 1 if you have the `vsyslog' function. */
-#undef HAVE_VSYSLOG
-
-/* Define to 1 if you have the <windows.h> header file. */
-#undef HAVE_WINDOWS_H
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#undef HAVE_WINSOCK2_H
-
-/* Define to 1 if you have the `_portaccess' function. */
-#undef HAVE__PORTACCESS
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* SANE DLL revision number */
-#undef SANE_DLL_V_BUILD
-
-/* SANE DLL major number */
-#undef SANE_DLL_V_MAJOR
-
-/* SANE DLL minor number */
-#undef SANE_DLL_V_MINOR
-
-/* Define to 1 if you have the <sys/io.h> providing inb,outb. */
-#undef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB
-
-/* SCSI command buffer size */
-#undef SCSIBUFFERSIZE
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of `void*', as computed by sizeof. */
-#undef SIZEOF_VOIDP
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if pthreads should be used instead of forked processes. */
-#undef USE_PTHREAD
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Version number of package */
-#undef VERSION
-
-/* define if Avahi support is enabled for saned and the net backend */
-#undef WITH_AVAHI
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-# undef WORDS_BIGENDIAN
-# endif
-#endif
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define scsireq_t as \'struct scsireq\' if necessary. */
-#undef scsireq_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define socklen_t as \'int\' if necessary. */
-#undef socklen_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef ssize_t
-
-/* Define for OS/2 only */
-#undef strcasecmp
-
-/* Define for OS/2 only */
-#undef strncasecmp
-
-
-
-#if defined(__MINGW32__)
-#define _BSDTYPES_DEFINED
-#endif
-
-#ifndef HAVE_U_CHAR
-#define u_char unsigned char
-#endif
-#ifndef HAVE_U_SHORT
-#define u_short unsigned short
-#endif
-#ifndef HAVE_U_INT
-#define u_int unsigned int
-#endif
-#ifndef HAVE_U_LONG
-#define u_long unsigned long
-#endif
-
-/* Prototype for getenv */
-#ifndef HAVE_GETENV
-#define getenv sanei_getenv
-char * getenv(const char *name);
-#endif
-
-/* Prototype for inet_ntop */
-#ifndef HAVE_INET_NTOP
-#define inet_ntop sanei_inet_ntop
-#include <sys/types.h>
-const char * inet_ntop (int af, const void *src, char *dst, size_t cnt);
-#endif
-
-/* Prototype for inet_pton */
-#ifndef HAVE_INET_PTON
-#define inet_pton sanei_inet_pton
-int inet_pton (int af, const char *src, void *dst);
-#endif
-
-/* Prototype for isfdtype */
-#ifndef HAVE_ISFDTYPE
-#define isfdtype sanei_isfdtype
-int isfdtype(int fd, int fdtype);
-#endif
-
-/* Prototype for sigprocmask */
-#ifndef HAVE_SIGPROCMASK
-#define sigprocmask sanei_sigprocmask
-int sigprocmask (int how, int *new, int *old);
-#endif
-
-/* Prototype for snprintf */
-#ifndef HAVE_SNPRINTF
-#define snprintf sanei_snprintf
-#include <sys/types.h>
-int snprintf (char *str,size_t count,const char *fmt,...);
-#endif
-
-/* Prototype for strcasestr */
-#ifndef HAVE_STRCASESTR
-#define strcasestr sanei_strcasestr
-char * strcasestr (const char *phaystack, const char *pneedle);
-#endif
-
-/* Prototype for strdup */
-#ifndef HAVE_STRDUP
-#define strdup sanei_strdup
-char *strdup (const char * s);
-#endif
-
-/* Prototype for strndup */
-#ifndef HAVE_STRNDUP
-#define strndup sanei_strndup
-#include <sys/types.h>
-char *strndup(const char * s, size_t n);
-#endif
-
-/* Prototype for strsep */
-#ifndef HAVE_STRSEP
-#define strsep sanei_strsep
-char *strsep(char **stringp, const char *delim);
-#endif
-
-/* Prototype for usleep */
-#ifndef HAVE_USLEEP
-#define usleep sanei_usleep
-unsigned int usleep (unsigned int useconds);
-#endif
-
-/* Prototype for vsyslog */
-#ifndef HAVE_VSYSLOG
-#include <stdarg.h>
-void vsyslog(int priority, const char *format, va_list args);
-#endif
-
diff --git a/include/sane/sane.h b/include/sane/sane.h
index 5320b4a..9f8bc7c 100644
--- a/include/sane/sane.h
+++ b/include/sane/sane.h
@@ -242,7 +242,7 @@ extern SANE_String_Const sane_strstatus (SANE_Status status);
#ifdef __cplusplus
}
-#endif
+#endif
#endif /* sane_h */
diff --git a/include/sane/sanei.h b/include/sane/sanei.h
index 9458f34..aa7003a 100644
--- a/include/sane/sanei.h
+++ b/include/sane/sanei.h
@@ -20,24 +20,24 @@
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
-
+
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
-
+
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
-
+
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
-
+
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file sanei.h
@@ -58,14 +58,14 @@
* to be platform-independent to avoid lots of \#ifdef code in the backends.
* Please use the SANEI functions wherever possible.
*
- * This documentation was created by the use of doxygen, the
+ * This documentation was created by the use of doxygen, the
* doc/doxygen-sanei.conf configuration file and documentation in the sanei_*.h
* files.
*
* This documentation is far from complete. Any help is appreciated.
*
* @section additional Additional documentation
- * - The SANE standard can be found at <a
+ * - The SANE standard can be found at <a
* href="http://www.sane-project.org/html/">the SANE webserver</a>,
* though the PostScript version produced from the source may be more recent.
* - Information on how to write a backend: <a
@@ -73,15 +73,15 @@
* - General SANE documentation is on <a
* href="http://www.sane-project.org/docs.html">the SANE documentation
* page</a>.
- *
- * @section contact Contact
+ *
+ * @section contact Contact
*
* The common way to contact the developers of SANE is the sane-devel
* mailing list. See the <a
* href="http://www.sane-project.org/mailing-lists.html">mailing list webpage</a>
* for details. That's the place to ask questions, report bugs, or announce
* a new backend.
- *
+ *
*/
#ifndef sanei_h
@@ -89,6 +89,10 @@
#include <sane/sane.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/** @name Public macros and functions
* @{
*/
@@ -113,7 +117,7 @@
* @param opt option to check
* @param value value of the option
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_INVAL - if the value doesn't fit inside the constraint
* or any other error occured
@@ -130,7 +134,7 @@
* @param value value of the option
* @param info info is set to SANE_INFO_INEXACT if value was changed
*
- * @return
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_INVAL - if the function wasn't able to fit value into the
* constraint or any other error occured
@@ -167,5 +171,8 @@ extern SANE_Status sanei_check_value (const SANE_Option_Descriptor * opt,
extern SANE_Status sanei_constrain_value (const SANE_Option_Descriptor * opt,
void * value, SANE_Word * info);
+#ifdef __cplusplus
+} // extern "C"
+#endif
#endif /* sanei_h */
diff --git a/include/sane/sanei_access.h b/include/sane/sanei_access.h
index d668b98..0f73f5f 100644
--- a/include/sane/sanei_access.h
+++ b/include/sane/sanei_access.h
@@ -46,7 +46,7 @@
* Interface file for the sanei_access functions.
*
* The idea is to provide some simple locking/unlocking mecanism, which
- * can be used to protect device access from more than one frontend
+ * can be used to protect device access from more than one frontend
* simultaneously.
*/
@@ -66,7 +66,7 @@ extern void sanei_access_init( const char * backend );
/** Set a lock.
*
- * The function tries to open/create exclusively a lock file in
+ * The function tries to open/create exclusively a lock file in
* $PATH_SANE_LOCK_DIR.
* If the file could be created successfully, the function fills in the
* process ID.
@@ -77,7 +77,7 @@ extern void sanei_access_init( const char * backend );
*
* @param devicename - unique part of the lockfile name
* @param timeout - time in seconds to try to set a lock
- * @return
+ * @return
* - SANE_STATUS_GOOD - if the lock has been successfully set
* - SANE_STATUS_ACCESS_DENIED - the lock could not set
*/
diff --git a/include/sane/sanei_auth.h b/include/sane/sanei_auth.h
index 1fd240d..37c8d1f 100644
--- a/include/sane/sanei_auth.h
+++ b/include/sane/sanei_auth.h
@@ -36,7 +36,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file sanei_auth.h
@@ -67,9 +67,9 @@
* If the requested resource isn't listed in this file, sanei_authorize
* return SANE_SATUS_GOOD. In all other cases, sanei_authorize sends a
* challenge to the frontend of the form
- *
+ *
* resource$MD5$randomstring
- *
+ *
* where randomstring consists of the PID, the time, and some random
* characters. It accepts two forms of answers
*
@@ -77,7 +77,7 @@
* md5: username:$MD5$m5digest
*
* where md5digest is md5(randomstring password).
- *
+ *
* If this username/password/resource triple is listed in backend.users
* sanei_authorize returns SANE_STATUS_GOOD, in all other cases it returns
* SANE_STATUS_ACCESS_DENIED.
diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h
index 8273e88..32d8ce0 100644
--- a/include/sane/sanei_backend.h
+++ b/include/sane/sanei_backend.h
@@ -113,6 +113,10 @@
/** @name Declaration of entry points:
* @{
*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern SANE_Status ENTRY(init) (SANE_Int *, SANE_Auth_Callback);
extern SANE_Status ENTRY(get_devices) (const SANE_Device ***, SANE_Bool);
extern SANE_Status ENTRY(open) (SANE_String_Const, SANE_Handle *);
@@ -130,6 +134,10 @@ extern void ENTRY(cancel) (SANE_Handle);
extern void ENTRY(close) (SANE_Handle);
extern void ENTRY(exit) (void);
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#ifndef STUBS
/* Now redirect sane_* calls to backend's functions: */
@@ -152,7 +160,7 @@ extern void ENTRY(exit) (void);
/** Internationalization for SANE backends
*
* Add SANE_I18N() to all texts that can be translated.
- * E.g. out_txt = SANE_I18N("Hello");
+ * E.g. out_txt = SANE_I18N("Hello");
*/
#ifndef SANE_I18N
#define SANE_I18N(text) text
diff --git a/include/sane/sanei_config.h b/include/sane/sanei_config.h
index cf877cf..3a60167 100644
--- a/include/sane/sanei_config.h
+++ b/include/sane/sanei_config.h
@@ -52,8 +52,12 @@
#include <stdio.h>
#include <sane/sane.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/** Search configuration file \a name along directory list and return file
- * pointer if such a file exists.
+ * pointer if such a file exists.
*
* The following directory list is used:
* 1st: SANE_CONFIG_DIR environment variable.
@@ -127,9 +131,9 @@ extern void sanei_config_attach_matching_devices (const char *name,
(const char *dev));
/** this structure holds the description of configuration options. There is
- * a list for options and another for their values.
+ * a list for options and another for their values.
* These lists are used when the configuration file is
- * parsed. Read values are stored in Option_Value. Helpers functions are
+ * parsed. Read values are stored in Option_Value. Helpers functions are
* provided to access values easily */
typedef struct
{
@@ -172,4 +176,8 @@ extern SANE_Status sanei_configure_attach (
*/
extern const char *sanei_config_get_paths (void);
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#endif /* sanei_config_h */
diff --git a/include/sane/sanei_debug.h b/include/sane/sanei_debug.h
index 557f8a7..465d3e2 100644
--- a/include/sane/sanei_debug.h
+++ b/include/sane/sanei_debug.h
@@ -9,6 +9,10 @@
#include <sane/sanei.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/** @name Public macros
* These macros can be used in backends and other SANE-related
* code.
@@ -16,14 +20,14 @@
* Before including sanei_debug.h, the following macros must be set:
*
* - BACKEND_NAME - The name of your backend without double-quotes (must be set in any case)
- * - STUBS - If this is defined, no macros will be included. Used in
+ * - STUBS - If this is defined, no macros will be included. Used in
* backends consisting of more than one .c file.
- * - DEBUG_DECLARE_ONLY - Generates prototypes instead of functions. Used in
+ * - DEBUG_DECLARE_ONLY - Generates prototypes instead of functions. Used in
* backends consisting of more than one .c file.
* - DEBUG_NOT_STATIC - Doesn't generate static functions. Used in header files if
* they are include in more than one .c file.
*
- * @{
+ * @{
*/
/** @def DBG_INIT()
@@ -44,7 +48,7 @@
/** @def IF_DBG(x)
* Compile code only if debugging is enabled.
*
- * Expands to x if debug support is enabled at compile-time. If NDEBUG is
+ * Expands to x if debug support is enabled at compile-time. If NDEBUG is
* defined at compile-time this macro expands to nothing.
*
* @param x code to expand when debugging is enabled
@@ -52,7 +56,7 @@
/**
* @def DBG_LEVEL
- * Current debug level.
+ * Current debug level.
*
* You can only read this "variable".
*/
@@ -70,16 +74,16 @@
#define ENTRY(name) PASTE(PASTE(PASTE(sane_,BACKEND_NAME),_),name)
#ifdef NDEBUG
-
+
extern void sanei_debug_ndebug (int level, const char *msg, ...);
-
+
# define DBG_LEVEL (0)
# define DBG_INIT()
# define DBG sanei_debug_ndebug
# define IF_DBG(x)
-
+
#else /* !NDEBUG */
-
+
/** @hideinitializer*/
# define DBG_LEVEL PASTE(sanei_debug_,BACKEND_NAME)
@@ -103,7 +107,7 @@ int DBG_LEVEL = 0;
# ifdef DEBUG_DECLARE_ONLY
-extern void DBG_LOCAL (int level, const char *msg, ...)
+extern void DBG_LOCAL (int level, const char *msg, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)))
#endif
@@ -112,8 +116,8 @@ __attribute__ ((format (printf, 2, 3)))
# else /* !DEBUG_DECLARE_ONLY */
# include <stdarg.h>
-
-extern void sanei_debug_msg
+
+extern void sanei_debug_msg
(int level, int max_level, const char *be, const char *fmt, va_list ap);
#ifdef __GNUC__
@@ -144,10 +148,14 @@ DBG_LOCAL (int level, const char *msg, ...)
# define DBG DBG_LOCAL
extern void sanei_init_debug (const char * backend, int * debug_level_var);
-
+
/** @hideinitializer*/
# define IF_DBG(x) x
#endif /* NDEBUG */
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#endif /* _SANEI_DEBUG_H */
diff --git a/include/sane/sanei_ir.h b/include/sane/sanei_ir.h
index aaca524..bbfd6d5 100644
--- a/include/sane/sanei_ir.h
+++ b/include/sane/sanei_ir.h
@@ -184,7 +184,7 @@ sanei_ir_to_8bit (SANE_Parameters * params, const SANE_Uint *in_img,
/**
* @brief Allocate and initialize logarithmic lookup table
*
- * @param[in] length of table, usually 1 << depth
+ * @param[in] len length of table, usually 1 << depth
* @param[out] lut_ln adress of pointer to allocated table
*
* @return
@@ -202,7 +202,7 @@ SANE_Status sanei_ir_ln_table (int len, double **lut_ln);
* @param[in] lut_ln pointer lookup table
* if NULL it is dynamically handled
* @param[in] red_data pointer to red image plane
- * @param ired_data pointer to ired image plane
+ * @param ir_data pointer to ir image plane
*
* @return
* - SANE_STATUS_GOOD - success
diff --git a/include/sane/sanei_lm983x.h b/include/sane/sanei_lm983x.h
index 6b9d8c8..8b48e65 100644
--- a/include/sane/sanei_lm983x.h
+++ b/include/sane/sanei_lm983x.h
@@ -4,7 +4,7 @@
Copyright (C) 2002-2003 Gerhard Jaeger <gerhard@gjaeger.de>
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -140,11 +140,10 @@ extern SANE_Status sanei_lm983x_read( SANE_Int fd, SANE_Byte reg,
* Reset the LM983x chip.
*
* @param fd - device file descriptor
- * @return
+ * @return
* - SANE_TRUE - reset successfuly done
* - SANE_FALSE - reset failed
*/
extern SANE_Bool sanei_lm983x_reset( SANE_Int fd );
#endif /* sanei_lm983x_h */
-
diff --git a/include/sane/sanei_magic.h b/include/sane/sanei_magic.h
index ab704a8..297becd 100644
--- a/include/sane/sanei_magic.h
+++ b/include/sane/sanei_magic.h
@@ -1,5 +1,5 @@
/* sane - Scanner Access Now Easy.
-
+
Copyright (C) 2009 m. allan noah
This file is part of the SANE package.
@@ -57,6 +57,10 @@
#ifndef SANEI_MAGIC_H
#define SANEI_MAGIC_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/** Initialize sanei_magic.
*
* Call this before any other sanei_magic function.
@@ -141,7 +145,7 @@ sanei_magic_findEdges(SANE_Parameters * params, SANE_Byte * buffer,
* @param buffer contains image data
* @param top vertical offset to upper edge of crop
* @param bot vertical offset to lower edge of crop
- * @param left horizontal offset to left edge of crop
+ * @param left horizontal offset to left edge of crop
* @param right horizontal offset to right edge of crop
*
* @return
@@ -219,4 +223,8 @@ extern SANE_Status
sanei_magic_turn(SANE_Parameters * params, SANE_Byte * buffer,
int angle);
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
#endif /* SANEI_MAGIC_H */
diff --git a/include/sane/sanei_pa4s2.h b/include/sane/sanei_pa4s2.h
index c5394a8..7138ceb 100644
--- a/include/sane/sanei_pa4s2.h
+++ b/include/sane/sanei_pa4s2.h
@@ -36,11 +36,11 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file sanei_pa4s2.h
- * This file implements an interface for the Mustek PP chipset A4S2
+ * This file implements an interface for the Mustek PP chipset A4S2
*
* @sa sanei_usb.h, sanei_ab306.h, sanei_lm983x.h, sanei_scsi.h, sanei_pio.h
*/
@@ -72,39 +72,39 @@
*/
extern const char ** sanei_pa4s2_devices(void);
-/** Open pa4s2 device
+/** Open pa4s2 device
*
* Opens *dev as pa4s2 device.
*
* @param dev IO port address ("0x378", "0x278", or "0x3BC")
* @param fd file descriptor
- *
- * @return
+ *
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_INVAL - if no scanner was found or the port number was wrong
* - SANE_STATUS_DEVICE_BUSY - if the device is already in use
* - SANE_STATUS_IO_ERROR - if the port couldn't be accessed
- *
+ *
*/
extern SANE_Status sanei_pa4s2_open (const char *dev, int *fd);
-/** Open pa4s2 SCSI-over-parallel device
+/** Open pa4s2 SCSI-over-parallel device
*
* Opens *dev as pa4s2 SCSI-over-parallel device.
*
* @param dev IO port address ("0x378", "0x278", or "0x3BC")
* @param fd file descriptor
- *
- * @return
+ *
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_INVAL - if no scanner was found or the port number was wrong
* - SANE_STATUS_DEVICE_BUSY - if the device is already in use
* - SANE_STATUS_IO_ERROR - if the port couldn't be accessed
- *
+ *
*/
extern SANE_Status sanei_pa4s2_scsi_pp_open (const char *dev, int *fd);
-/** Close pa4s2 device
+/** Close pa4s2 device
*
* @param fd file descriptor
*/
@@ -175,7 +175,7 @@ extern SANE_Status sanei_pa4s2_scsi_pp_get_status (int fd, u_char *status);
*/
extern SANE_Status sanei_pa4s2_scsi_pp_reg_select (int fd, int reg);
-/** Read a register
+/** Read a register
*
* The function to read a register is split up in three parts, so a register
* can be read more than once.
@@ -191,7 +191,7 @@ extern SANE_Status sanei_pa4s2_scsi_pp_reg_select (int fd, int reg);
*/
extern SANE_Status sanei_pa4s2_readbyte (int fd, u_char * val);
-/** Terminate reading sequence
+/** Terminate reading sequence
*
* The function to read a register is split up in three parts, so a register
* can be read more than once.
diff --git a/include/sane/sanei_pio.h b/include/sane/sanei_pio.h
index 61ac414..afdfa26 100644
--- a/include/sane/sanei_pio.h
+++ b/include/sane/sanei_pio.h
@@ -52,4 +52,3 @@ extern int sanei_pio_read (int fd, u_char * buf, int n);
extern int sanei_pio_write (int fd, const u_char * buf, int n);
#endif /* sanei_pio_h */
-
diff --git a/include/sane/sanei_pp.h b/include/sane/sanei_pp.h
index d3e7b92..902fcfa 100644
--- a/include/sane/sanei_pp.h
+++ b/include/sane/sanei_pp.h
@@ -36,7 +36,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
*/
/** @file sanei_pp.h
@@ -78,7 +78,7 @@ enum sanei_pp_mode {
*/
extern SANE_Status sanei_pp_init( void );
-/** Open a parport device.
+/** Open a parport device.
*
* @param dev - name of device to open.
* @param fd - pointer to variable that should revceive the handle.
@@ -95,7 +95,7 @@ extern void sanei_pp_close( int fd );
/** Claim a parport device
*
* @param fd - handle of the device to claim
- * @return
+ * @return
*/
extern SANE_Status sanei_pp_claim( int fd );
diff --git a/include/sane/sanei_pv8630.h b/include/sane/sanei_pv8630.h
index ef7e9dd..d69a024 100644
--- a/include/sane/sanei_pv8630.h
+++ b/include/sane/sanei_pv8630.h
@@ -5,7 +5,7 @@
Copyright (C) 2001 Marcio Teixeira
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
diff --git a/include/sane/sanei_scsi.h b/include/sane/sanei_scsi.h
index d69fd0f..fa6e5d1 100644
--- a/include/sane/sanei_scsi.h
+++ b/include/sane/sanei_scsi.h
@@ -39,7 +39,7 @@
*/
/** @file sanei_scsi.h
- * Generic interface to SCSI drivers.
+ * Generic interface to SCSI drivers.
* @sa sanei_usb.h, sanei_ab306.h,sanei_lm983x.h, sanei_pa4s2.h, sanei_pio.h,
* and man sane-scsi(5) for user-oriented documentation
*/
@@ -76,8 +76,8 @@ extern int sanei_scsi_max_request_size;
*
* Find each SCSI device that matches the pattern specified by the
* arguments. String arguments can be "omitted" by passing NULL,
- * integer arguments can be "omitted" by passing -1.
- *
+ * integer arguments can be "omitted" by passing -1.
+ *
* Example: vendor="HP" model=NULL, type=NULL, bus=3, id=-1, lun=-1 would
* attach all HP devices on SCSI bus 3.
*
@@ -100,15 +100,15 @@ extern void sanei_scsi_find_devices (const char *vendor, const char *model,
/** Open a SCSI device
*
* Opens a SCSI device by its device filename and returns a file descriptor.
- * If it's necessary to adjust the SCSI buffer size, use
+ * If it's necessary to adjust the SCSI buffer size, use
* sanei_scsi_open_extended().
*
* @param device_name name of the devicefile, e.g. "/dev/sg0"
* @param fd file descriptor
* @param sense_handler called whenever the SCSI driver returns a sense buffer
* @param sense_arg pointer to data for the sense handler
- *
- * @return
+ *
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_ACCESS_DENIED - if the file couldn't be accessed due to
* permissions
@@ -138,8 +138,8 @@ extern SANE_Status sanei_scsi_open (const char * device_name, int * fd,
* @param sense_handler called whenever the SCSI driver returns a sense buffer
* @param sense_arg pointer to data for the sense handler
* @param buffersize size of the SCAI request buffer (in bytes)
- *
- * @return
+ *
+ * @return
* - SANE_STATUS_GOOD - on success
* - SANE_STATUS_ACCESS_DENIED - if the file couldn't be accessed due to
* permissions
@@ -195,7 +195,7 @@ extern SANE_Status sanei_scsi_req_enter (int fd,
void * dst, size_t * dst_size,
void **idp);
-/** Enqueue SCSI command and separated data
+/** Enqueue SCSI command and separated data
*
* Same as sanei_scsi_req_enter(), but with separate buffers for the SCSI
* command and for the data to be sent to the device.
@@ -235,7 +235,7 @@ extern SANE_Status sanei_scsi_req_enter2 (int fd,
/** Wait for SCSI command
*
- * Wait for the completion of the SCSI command with id ID.
+ * Wait for the completion of the SCSI command with id ID.
*
* @param id id used in sanei_scsi_req_enter()
*
diff --git a/include/sane/sanei_tcp.h b/include/sane/sanei_tcp.h
index 0c3aeb4..227e613 100644
--- a/include/sane/sanei_tcp.h
+++ b/include/sane/sanei_tcp.h
@@ -12,7 +12,7 @@
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
- * Header file for TCP/IP communications.
+ * Header file for TCP/IP communications.
*/
#ifndef sanei_tcp_h
diff --git a/include/sane/sanei_thread.h b/include/sane/sanei_thread.h
index fa72481..6e68964 100644
--- a/include/sane/sanei_thread.h
+++ b/include/sane/sanei_thread.h
@@ -94,6 +94,38 @@ extern SANE_Bool sanei_thread_is_forked (void);
*/
extern SANE_Bool sanei_thread_is_valid (SANE_Pid pid);
+/** Invalidate a SANE_Pid
+ *
+ * This "function" should be used to invalidate a SANE_Pid in a
+ * portable manner.
+ *
+ * @note
+ * When using pthreads, this only works for those implementations
+ * that opted to make pthread_t an arithmatic type. This is *not*
+ * required by the POSIX threads specification. The choice to do
+ * SANE_Pid invalidation by means of a macro rather than a proper
+ * function circumvents to need to pass a pointer.
+ * If we decide to implement SANE_Pid with a void* in the future,
+ * this can be changed into a proper function without the need to
+ * change existing code.
+ *
+ * For details on the pthread_t type, see in particular Issue 6 of
+ * http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
+ */
+#define sanei_thread_invalidate(pid) ((pid) = (SANE_Pid)(-1))
+
+/** Initialize a SANE_Pid
+ *
+ * This "function" should be used to initialize a SANE_Pid in a
+ * portable manner.
+ *
+ * @note
+ * This is at present just an alias of sanei_thread_invalidate.
+ * It seemed misleading to use the latter when intent clearly has
+ * initialization written all over it, hence the alias.
+ */
+#define sanei_thread_initialize sanei_thread_invalidate
+
/** Spawn a new task.
*
* This function should be used to start a new task.
@@ -131,7 +163,7 @@ extern int sanei_thread_kill (SANE_Pid pid);
* @param pid - the id of the task
* @param sig - the signal to send
*
- * @return
+ * @return
* - 0 - on success
* - any other value - if an error occured while sending the signal
*/
@@ -139,7 +171,7 @@ extern int sanei_thread_sendsig (SANE_Pid pid, int sig);
/** Wait for task termination.
*
- * This function waits until a task that has been terminated by
+ * This function waits until a task that has been terminated by
* sanei_thread_kill(), sanei_thread_sendsys() or by any other means
* is finished.
*
@@ -153,7 +185,7 @@ extern SANE_Pid sanei_thread_waitpid (SANE_Pid pid, int *status);
/** Check the current status of the spawned task
*
- *
+ *
* @param pid - the id of the task
*
* @return
diff --git a/include/sane/sanei_udp.h b/include/sane/sanei_udp.h
index e32fc1a..bee013a 100644
--- a/include/sane/sanei_udp.h
+++ b/include/sane/sanei_udp.h
@@ -12,7 +12,7 @@
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
- * Header file for UDP/IP communications.
+ * Header file for UDP/IP communications.
*/
#ifndef sanei_udp_h
diff --git a/include/sane/sanei_usb.h b/include/sane/sanei_usb.h
index c8fff97..ce389ca 100644
--- a/include/sane/sanei_usb.h
+++ b/include/sane/sanei_usb.h
@@ -68,6 +68,10 @@
#include <stdlib.h> /* for size_t */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* USB spec defines */
#ifndef USB_CLASS_PER_INTERFACE
/* Also defined in libusb */
@@ -521,5 +525,9 @@ sanei_usb_set_altinterface (SANE_Int dn, SANE_Int alternate);
extern SANE_Status
sanei_usb_get_descriptor( SANE_Int dn, struct sanei_usb_dev_descriptor *desc );
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
/*------------------------------------------------------*/
#endif /* sanei_usb_h */
diff --git a/install-sh b/install-sh
deleted file mode 100755
index 756420d..0000000
--- a/install-sh
+++ /dev/null
@@ -1,534 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2011-11-20.07; # UTC
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# 'make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" "" $nl"
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
-
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
-
-chgrpprog=${CHGRPPROG-chgrp}
-chmodprog=${CHMODPROG-chmod}
-chownprog=${CHOWNPROG-chown}
-cmpprog=${CMPPROG-cmp}
-cpprog=${CPPROG-cp}
-mkdirprog=${MKDIRPROG-mkdir}
-mvprog=${MVPROG-mv}
-rmprog=${RMPROG-rm}
-stripprog=${STRIPPROG-strip}
-
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chgrpcmd=
-chmodcmd=$chmodprog
-chowncmd=
-mvcmd=$mvprog
-rmcmd="$rmprog -f"
-stripcmd=
-
-src=
-dst=
-dir_arg=
-dst_arg=
-
-copy_on_change=false
-no_target_directory=
-
-usage="\
-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
- or: $0 [OPTION]... SRCFILES... DIRECTORY
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
- or: $0 [OPTION]... -d DIRECTORIES...
-
-In the 1st form, copy SRCFILE to DSTFILE.
-In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
-In the 4th, create DIRECTORIES.
-
-Options:
- --help display this help and exit.
- --version display version info and exit.
-
- -c (ignored)
- -C install only if different (preserve the last data modification time)
- -d create directories instead of installing files.
- -g GROUP $chgrpprog installed files to GROUP.
- -m MODE $chmodprog installed files to MODE.
- -o USER $chownprog installed files to USER.
- -s $stripprog installed files.
- -t DIRECTORY install into DIRECTORY.
- -T report an error if DSTFILE is a directory.
-
-Environment variables override the default commands:
- CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
- RMPROG STRIPPROG
-"
-
-while test $# -ne 0; do
- case $1 in
- -c) ;;
-
- -C) copy_on_change=true;;
-
- -d) dir_arg=true;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift;;
-
- --help) echo "$usage"; exit $?;;
-
- -m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
-
- -o) chowncmd="$chownprog $2"
- shift;;
-
- -s) stripcmd=$stripprog;;
-
- -t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
-
- -T) no_target_directory=true;;
-
- --version) echo "$0 $scriptversion"; exit $?;;
-
- --) shift
- break;;
-
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
-
- *) break;;
- esac
- shift
-done
-
-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
- # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dst_arg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dst_arg"
- shift # fnord
- fi
- shift # arg
- dst_arg=$arg
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- done
-fi
-
-if test $# -eq 0; then
- if test -z "$dir_arg"; then
- echo "$0: no input file specified." >&2
- exit 1
- fi
- # It's OK to call 'install-sh -d' without argument.
- # This can happen when creating conditional directories.
- exit 0
-fi
-
-if test -z "$dir_arg"; then
- do_exit='(exit $ret); exit $ret'
- trap "ret=129; $do_exit" 1
- trap "ret=130; $do_exit" 2
- trap "ret=141; $do_exit" 13
- trap "ret=143; $do_exit" 15
-
- # Set umask so as not to create temps with too-generous modes.
- # However, 'strip' requires both read and write access to temps.
- case $mode in
- # Optimize common cases.
- *644) cp_umask=133;;
- *755) cp_umask=22;;
-
- *[0-7])
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw='% 200'
- fi
- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
- *)
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw=,u+rw
- fi
- cp_umask=$mode$u_plus_rw;;
- esac
-fi
-
-for src
-do
- # Protect names problematic for 'test' and other utilities.
- case $src in
- -* | [=\(\)!]) src=./$src;;
- esac
-
- if test -n "$dir_arg"; then
- dst=$src
- dstdir=$dst
- test -d "$dstdir"
- dstdir_status=$?
- else
-
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
- # might cause directories to be created, which would be especially bad
- # if $src (and thus $dsttmp) contains '*'.
- if test ! -f "$src" && test ! -d "$src"; then
- echo "$0: $src does not exist." >&2
- exit 1
- fi
-
- if test -z "$dst_arg"; then
- echo "$0: no destination specified." >&2
- exit 1
- fi
- dst=$dst_arg
-
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
- if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
- fi
- dstdir=$dst
- dst=$dstdir/`basename "$src"`
- dstdir_status=0
- else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
- test -d "$dstdir"
- dstdir_status=$?
- fi
- fi
-
- obsolete_mkdir_used=false
-
- if test $dstdir_status != 0; then
- case $posix_mkdir in
- '')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- # $RANDOM is not portable (e.g. dash); use it when possible to
- # lower collision chance
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
- # create the $tmpdir first (and fail if unsuccessful) to make sure
- # that nobody tries to guess the $tmpdir name.
- if (umask $mkdir_umask &&
- $mkdirprog $mkdir_mode "$tmpdir" &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- test_tmpdir="$tmpdir/a"
- ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
- fi
- trap '' 0;;
- esac;;
- esac
-
- if
- $posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
- )
- then :
- else
-
- # The umask is ridiculous, or mkdir does not conform to POSIX,
- # or it failed possibly due to a race condition. Create the
- # directory the slow way, step by step, checking for races as we go.
-
- case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
- esac
-
- eval "$initialize_posix_glob"
-
- oIFS=$IFS
- IFS=/
- $posix_glob set -f
- set fnord $dstdir
- shift
- $posix_glob set +f
- IFS=$oIFS
-
- prefixes=
-
- for d
- do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
- done
-
- if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
- fi
- fi
- fi
-
- if test -n "$dir_arg"; then
- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
- else
-
- # Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
- # Trap to clean up those temp files at exit.
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-
- # Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
-
- # and set any options; do chmod last to preserve setuid bits.
- #
- # If any of these fail, we abort the whole thing. If we want to
- # ignore errors from any of these, just make sure not to ignore
- # errors from the above "$doit $cpprog $src $dsttmp" command.
- #
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
- { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
- { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
-
- # If -C, don't bother to copy if it wouldn't change the file.
- if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
- set X $old && old=:$2:$4:$5:$6 &&
- set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
- test "$old" = "$new" &&
- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
- then
- rm -f "$dsttmp"
- else
- # Rename the file to the real destination.
- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
-
- # The rename failed, perhaps because mv can't rename something else
- # to itself, or perhaps because mv is so ancient that it does not
- # support -f.
- {
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
- }
- fi || exit 1
-
- trap '' 0
- fi
-done
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/japi/Jscanimage.java b/japi/Jscanimage.java
index d3ab32d..129d055 100644
--- a/japi/Jscanimage.java
+++ b/japi/Jscanimage.java
@@ -238,7 +238,7 @@ public class Jscanimage extends Frame implements WindowListener,
int status = sane.getControlOption(saneHandle, 0, numDevOptions, null);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("controlOption() failed. Status= "
+ System.out.println("controlOption() failed. Status= "
+ status);
return (false);
}
@@ -262,7 +262,7 @@ public class Jscanimage extends Frame implements WindowListener,
if (opt.unit == SaneOption.UNIT_NONE)
title = opt.title;
else // Show units.
- title = opt.title + " [" +
+ title = opt.title + " [" +
opt.unitString(unitLength) + ']';
switch (opt.type)
{
@@ -295,7 +295,7 @@ public class Jscanimage extends Frame implements WindowListener,
case SaneOption.CONSTRAINT_RANGE:
// A scale.
SaneSlider slider = new FixedSaneSlider(
- opt.rangeConstraint.min,
+ opt.rangeConstraint.min,
opt.rangeConstraint.max,
opt.unit == SaneOption.UNIT_MM,
this, i, opt.desc);
@@ -320,7 +320,7 @@ public class Jscanimage extends Frame implements WindowListener,
case SaneOption.CONSTRAINT_RANGE:
// A scale.
SaneSlider slider = new SaneSlider(
- opt.rangeConstraint.min,
+ opt.rangeConstraint.min,
opt.rangeConstraint.max,
this, i, opt.desc);
addLabeledOption(group, title, slider, c);
@@ -347,7 +347,7 @@ public class Jscanimage extends Frame implements WindowListener,
addControl(list);
break;
case SaneOption.CONSTRAINT_NONE:
- SaneTextField tfield = new SaneTextField(16,
+ SaneTextField tfield = new SaneTextField(16,
this, i, opt.desc);
addLabeledOption(group, title, tfield, c);
addControl(tfield);
@@ -511,8 +511,8 @@ public class Jscanimage extends Frame implements WindowListener,
public void setControlOption(int optNum, int val)
{
int [] info = new int[1];
- if (sane.setControlOption(saneHandle, optNum,
- SaneOption.ACTION_SET_VALUE, val, info)
+ if (sane.setControlOption(saneHandle, optNum,
+ SaneOption.ACTION_SET_VALUE, val, info)
!= Sane.STATUS_GOOD)
System.out.println("setControlOption() failed.");
checkOptionInfo(info[0]);
@@ -524,8 +524,8 @@ public class Jscanimage extends Frame implements WindowListener,
public void setControlOption(int optNum, String val)
{
int [] info = new int[1];
- if (sane.setControlOption(saneHandle, optNum,
- SaneOption.ACTION_SET_VALUE, val, info)
+ if (sane.setControlOption(saneHandle, optNum,
+ SaneOption.ACTION_SET_VALUE, val, info)
!= Sane.STATUS_GOOD)
System.out.println("setControlOption() failed.");
checkOptionInfo(info[0]);
@@ -783,7 +783,7 @@ class SaneSlider extends JPanel implements SaneComponent, ChangeListener
add(label, c);
c.weightx = .8; // Give most weight to slider.
c.fill = GridBagConstraints.HORIZONTAL;
- slider = new JSlider(JSlider.HORIZONTAL, min, max,
+ slider = new JSlider(JSlider.HORIZONTAL, min, max,
min + (max - min)/2);
add(slider, c);
// Set tool tip.
@@ -855,7 +855,7 @@ class FixedSaneSlider extends SaneSlider
double val = (double) slider.getValue();
// Convert to actual control scale.
val = min + ((val - SCALE_MIN)/(SCALE_MAX - SCALE_MIN)) * (max - min);
- label.setText(format.format(optMM ?
+ label.setText(format.format(optMM ?
val/dialog.getUnitLength() : val));
dialog.setControlOption(optNum, dialog.getSane().fix(val));
}
@@ -872,9 +872,9 @@ class FixedSaneSlider extends SaneSlider
{
double val = dialog.getSane().unfix(ival[0]);
// Show value with user's pref.
- label.setText(format.format(optMM ?
+ label.setText(format.format(optMM ?
val/dialog.getUnitLength() : val));
- val = SCALE_MIN + ((val - min)/(max - min)) *
+ val = SCALE_MIN + ((val - min)/(max - min)) *
(SCALE_MAX - SCALE_MIN);
slider.setValue((int) val);
}
@@ -916,7 +916,7 @@ class SaneButton extends JButton implements ActionListener
/*
* A combo-box for showing a list of items.
*/
-abstract class SaneComboBox extends JComboBox
+abstract class SaneComboBox extends JComboBox
implements SaneComponent, ItemListener
{
protected Jscanimage dialog; // That which created us.
diff --git a/japi/Makefile.am b/japi/Makefile.am
index cc7ac4a..d48a8a6 100644
--- a/japi/Makefile.am
+++ b/japi/Makefile.am
@@ -21,7 +21,7 @@ AM_LDFLAGS += $(STRICT_LDFLAGS) -version-number $(V_MAJOR):$(V_MINOR):$(V_REV)
JAVA_SRC = SaneDevice.java SaneOption.java SaneRange.java\
Sane.java SaneParameters.java ScanIt.java \
ImageCanvas.java ImageCanvasClient.java \
- Test.java Jscanimage.java
+ Test.java Jscanimage.java
dist_noinst_JAVA = $(JAVA_SRC)
@@ -40,4 +40,3 @@ libsanej_la_LIBADD = $(LIBSANE)
# Make sure that java classes get created before create Sane.h
Sane.h: classdist_noinst.stamp
$(JAVAH) Sane
-
diff --git a/japi/Makefile.in b/japi/Makefile.in
deleted file mode 100644
index 4a42758..0000000
--- a/japi/Makefile.in
+++ /dev/null
@@ -1,767 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-#
-# Makefile for a Java project with native methods.
-#
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = japi
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \
- $(dist_noinst_JAVA)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(libdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libsanej_la_DEPENDENCIES = $(LIBSANE)
-am_libsanej_la_OBJECTS = Sane.lo
-nodist_libsanej_la_OBJECTS =
-libsanej_la_OBJECTS = $(am_libsanej_la_OBJECTS) \
- $(nodist_libsanej_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libsanej_la_SOURCES) $(nodist_libsanej_la_SOURCES)
-DIST_SOURCES = $(libsanej_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-JAVAC = javac
-CLASSPATH_ENV = CLASSPATH=$(JAVAROOT):$(srcdir)/$(JAVAROOT)$${CLASSPATH:+":$$CLASSPATH"}
-am__java_sources = $(dist_noinst_JAVA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-
-# We'll need something in 'configure' for the Java includes.
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include -I${JDK_HOME}/include \
- -I${JDK_HOME}/include/genunix
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@ $(STRICT_LDFLAGS) -version-number \
- $(V_MAJOR):$(V_MINOR):$(V_REV)
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-JAVAROOT = .
-MY_CLASSPATH = .
-JAVAH = javah -jni -cp $(MY_CLASSPATH)
-JAVA_SRC = SaneDevice.java SaneOption.java SaneRange.java\
- Sane.java SaneParameters.java ScanIt.java \
- ImageCanvas.java ImageCanvasClient.java \
- Test.java Jscanimage.java
-
-dist_noinst_JAVA = $(JAVA_SRC)
-LIBSANE = ../backend/libsane.la
-EXTRA_DIST = README.JAVA
-lib_LTLIBRARIES = libsanej.la
-BUILT_SOURCES = Sane.h
-CLEANFILES = Sane.h
-nodist_libsanej_la_SOURCES = Sane.h
-libsanej_la_SOURCES = Sane.c
-libsanej_la_LIBADD = $(LIBSANE)
-all: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu japi/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu japi/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
- }
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-libsanej.la: $(libsanej_la_OBJECTS) $(libsanej_la_DEPENDENCIES) $(EXTRA_libsanej_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libsanej_la_OBJECTS) $(libsanej_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Sane.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-classnoinst.stamp: $(am__java_sources)
- @list1='$?'; list2=; if test -n "$$list1"; then \
- for p in $$list1; do \
- if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
- list2="$$list2 $$d$$p"; \
- done; \
- echo '$(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) '"$$list2"; \
- $(CLASSPATH_ENV) $(JAVAC) -d $(JAVAROOT) $(AM_JAVACFLAGS) $(JAVACFLAGS) $$list2; \
- else :; fi
- echo timestamp > $@
-
-clean-noinstJAVA:
- -rm -f *.class classnoinst.stamp
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(LTLIBRARIES) classnoinst.stamp
-installdirs:
- for dir in "$(DESTDIR)$(libdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- clean-noinstJAVA mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES
-
-.MAKE: all check install install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool clean-noinstJAVA \
- cscopelist-am ctags ctags-am distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-libLTLIBRARIES \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-libLTLIBRARIES
-
-
-# Make sure that java classes get created before create Sane.h
-Sane.h: classdist_noinst.stamp
- $(JAVAH) Sane
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/japi/Sane.c b/japi/Sane.c
index 1ddb4fc..3fd9996 100644
--- a/japi/Sane.c
+++ b/japi/Sane.c
@@ -104,7 +104,7 @@ JNIEXPORT jint JNICALL Java_Sane_getDevicesNative
int i;
/* Get the list. */
- status = sane_get_devices(&device_list, localOnly);
+ status = sane_get_devices(&device_list, localOnly);
if (status != SANE_STATUS_GOOD)
return (status);
/* Get length of Java array. */
@@ -232,13 +232,13 @@ JNIEXPORT void JNICALL Java_Sane_getOptionNative
jobject range = (*env)->AllocObject(env, rangeClass);
/* Fill in fields. */
fid = (*env)->GetFieldID(env, rangeClass, "min", "I");
- (*env)->SetIntField(env, range, fid,
+ (*env)->SetIntField(env, range, fid,
sopt->constraint.range->min);
fid = (*env)->GetFieldID(env, rangeClass, "max", "I");
- (*env)->SetIntField(env, range, fid,
+ (*env)->SetIntField(env, range, fid,
sopt->constraint.range->max);
fid = (*env)->GetFieldID(env, rangeClass, "quant", "I");
- (*env)->SetIntField(env, range, fid,
+ (*env)->SetIntField(env, range, fid,
sopt->constraint.range->quant);
fid = (*env)->GetFieldID(env, optClass, "rangeConstraint",
"LSaneRange;");
@@ -251,7 +251,7 @@ JNIEXPORT void JNICALL Java_Sane_getOptionNative
jint *elements;
int i;
/* First word. is the length. */
- wordList = (*env)->NewIntArray(env,
+ wordList = (*env)->NewIntArray(env,
sopt->constraint.word_list[0]);
/* Copy in the integers. */
elements = (*env)->GetIntArrayElements(env, wordList, 0);
@@ -272,7 +272,7 @@ JNIEXPORT void JNICALL Java_Sane_getOptionNative
for (len = 0; sopt->constraint.string_list[len]; len++)
;
- stringList = (*env)->NewObjectArray(env, len + 1,
+ stringList = (*env)->NewObjectArray(env, len + 1,
stringClass, 0);
/* Add each string. */
for (i = 0; i < len; i++)
@@ -284,7 +284,7 @@ JNIEXPORT void JNICALL Java_Sane_getOptionNative
/* 0 at end. */
(*env)->SetObjectArrayElement(env, stringList, len, 0);
/* Set the field. */
- fid = (*env)->GetFieldID(env, optClass,
+ fid = (*env)->GetFieldID(env, optClass,
"stringListConstraint", "[Ljava/lang/String;");
(*env)->SetObjectField(env, optObj, fid, stringList);
}
@@ -296,7 +296,7 @@ JNIEXPORT void JNICALL Java_Sane_getOptionNative
* Signature: (II[I[I)I
*/
JNIEXPORT jint JNICALL Java_Sane_getControlOption__II_3I_3I
- (JNIEnv *env, jobject jobj, jint handle, jint option, jintArray value,
+ (JNIEnv *env, jobject jobj, jint handle, jint option, jintArray value,
jintArray info)
{
SANE_Status status; /* Gets status. */
@@ -318,7 +318,7 @@ JNIEXPORT jint JNICALL Java_Sane_getControlOption__II_3I_3I
* Signature: (II[B[I)I
*/
JNIEXPORT jint JNICALL Java_Sane_getControlOption__II_3B_3I
- (JNIEnv *env, jobject jobj, jint handle, jint option, jbyteArray value,
+ (JNIEnv *env, jobject jobj, jint handle, jint option, jbyteArray value,
jintArray info)
{
SANE_Status status; /* Gets status. */
@@ -340,7 +340,7 @@ JNIEXPORT jint JNICALL Java_Sane_getControlOption__II_3B_3I
* Signature: (IIII[I)I
*/
JNIEXPORT jint JNICALL Java_Sane_setControlOption__IIII_3I
- (JNIEnv *env, jobject jobj, jint handle, jint option, jint action,
+ (JNIEnv *env, jobject jobj, jint handle, jint option, jint action,
jint value, jintArray info)
{
SANE_Status status; /* Gets status. */
@@ -457,7 +457,7 @@ JNIEXPORT jint JNICALL Java_Sane_read
/* Get actual data ptr. */
dataElements = (*env)->GetByteArrayElements(env, data, 0);
/* Do the read. */
- status = sane_read((SANE_Handle) handle, dataElements,
+ status = sane_read((SANE_Handle) handle, dataElements,
maxLength, &read_len);
(*env)->ReleaseByteArrayElements(env, data, dataElements, 0);
/* Return # bytes read. */
diff --git a/japi/Sane.java b/japi/Sane.java
index 85600e7..88b9495 100644
--- a/japi/Sane.java
+++ b/japi/Sane.java
@@ -57,7 +57,7 @@ public static int STATUS_GOOD = 0; // everything A-OK
public static int STATUS_UNSUPPORTED = 1;// operation is not supported
public static int STATUS_CANCELLED = 2; // operation was cancelled
public static int STATUS_DEVICE_BUSY = 3;// device is busy; try again later
-public static int STATUS_INVAL = 4; // data is invalid (includes no
+public static int STATUS_INVAL = 4; // data is invalid (includes no
// dev at open)
public static int STATUS_EOF = 5; // no more data available (end-of-file)
public static int STATUS_JAMMED = 6; // document feeder jammed
@@ -137,7 +137,7 @@ public native int setControlOption(int handle, int option,
int action, String value, int [] info);
public native int getParameters(int handle, SaneParameters params);
public native int start(int handle);
-public native int read(int handle, byte [] data,
+public native int read(int handle, byte [] data,
int maxLength, int [] length);
public native void cancel(int handle);
public native String strstatus(int status);
diff --git a/japi/SaneDevice.java b/japi/SaneDevice.java
index dc73365..d40367a 100644
--- a/japi/SaneDevice.java
+++ b/japi/SaneDevice.java
@@ -46,10 +46,8 @@
public class SaneDevice
{
-public String name; // unique device name
-public String vendor; // device vendor string
-public String model; // device model name
-public String type; // device type (e.g., "flatbed scanner")
+public String name; // unique device name
+public String vendor; // device vendor string
+public String model; // device model name
+public String type; // device type (e.g., "flatbed scanner")
}
-
-
diff --git a/japi/SaneOption.java b/japi/SaneOption.java
index ed460c7..0c8c736 100644
--- a/japi/SaneOption.java
+++ b/japi/SaneOption.java
@@ -58,13 +58,13 @@ public class SaneOption
//
// Sane value units:
//
- public static final int UNIT_NONE = 0; // the value is unit-less
- // (e.g., # of scans)
- public static final int UNIT_PIXEL = 1; // value is number of pixels
- public static final int UNIT_BIT = 2; // value is number of bits
- public static final int UNIT_MM = 3; // value is millimeters
- public static final int UNIT_DPI = 4; // value is res. in dots/inch
- public static final int UNIT_PERCENT = 5;// value is a percentage
+ public static final int UNIT_NONE = 0; // the value is unit-less
+ // (e.g., # of scans)
+ public static final int UNIT_PIXEL = 1; // value is number of pixels
+ public static final int UNIT_BIT = 2; // value is number of bits
+ public static final int UNIT_MM = 3; // value is millimeters
+ public static final int UNIT_DPI = 4; // value is res. in dots/inch
+ public static final int UNIT_PERCENT = 5;// value is a percentage
//
// Option capabilities:
//
@@ -100,13 +100,13 @@ public class SaneOption
//
// Class members:
//
- public String name; // name of this option (command-line name)
- public String title; // title of this option (single-line)
- public String desc; // description of this option (multi-line)
+ public String name; // name of this option (command-line name)
+ public String title; // title of this option (single-line)
+ public String desc; // description of this option (multi-line)
public int type; // how are values interpreted? (TYPE_)
public int unit; // what is the (physical) unit? (UNIT_)
public int size;
- public int cap; // capabilities
+ public int cap; // capabilities
public int constraintType;
// These are a union in the "C" API:
// Null-terminated list:
@@ -123,7 +123,7 @@ public class SaneOption
{ return ((cap) & CAP_SOFT_SELECT) == 0; }
// Return string describing units.
// "unitLength" is # mm. preferred.
- public String unitString(double unitLength)
+ public String unitString(double unitLength)
{
switch (unit)
{
@@ -142,4 +142,3 @@ public class SaneOption
return "";
}
}
-
diff --git a/japi/SaneParameters.java b/japi/SaneParameters.java
index 4e629c4..e78981a 100644
--- a/japi/SaneParameters.java
+++ b/japi/SaneParameters.java
@@ -49,12 +49,12 @@ public class SaneParameters
//
// Frame values:
//
-public static final int FRAME_GRAY = 0; // band covering human visual range
-public static final int FRAME_RGB = 1; // pixel-interleaved
- // red/green/blue bands
-public static final int FRAME_RED = 2; // red band only
-public static final int FRAME_GREEN = 3;// green band only
-public static final int FRAME_BLUE = 4; // blue band only
+public static final int FRAME_GRAY = 0; // band covering human visual range
+public static final int FRAME_RGB = 1; // pixel-interleaved
+ // red/green/blue bands
+public static final int FRAME_RED = 2; // red band only
+public static final int FRAME_GREEN = 3;// green band only
+public static final int FRAME_BLUE = 4; // blue band only
//
// Class members:
diff --git a/japi/SaneRange.java b/japi/SaneRange.java
index 4790e32..9eb7da7 100644
--- a/japi/SaneRange.java
+++ b/japi/SaneRange.java
@@ -50,4 +50,3 @@ public int min; // minimum (element) value
public int max; // maximum (element) value
public int quant; // Quantization value (0 if none)
}
-
diff --git a/japi/ScanIt.java b/japi/ScanIt.java
index 21afba0..a357626 100644
--- a/japi/ScanIt.java
+++ b/japi/ScanIt.java
@@ -156,7 +156,7 @@ public class ScanIt implements ImageProducer
*/
public synchronized void removeConsumer(ImageConsumer ic)
{ consumers.removeElement(ic); }
-
+
/*
* Add a consumer and start scanning.
*/
@@ -224,7 +224,7 @@ public class ScanIt implements ImageProducer
// Single frame.
for (i = 0; i < readLen; ++i)
{ // Doing a single color frame.
- image[offset + i] |=
+ image[offset + i] |=
(((int) data[i]) & 0xff) << (8*cindex);
++x;
if (x >= width)
@@ -235,7 +235,7 @@ public class ScanIt implements ImageProducer
for (i = 0; i < readLen; ++i)
{
int b = 2 - (offset + i)%3;
- image[(offset + i)/3] |=
+ image[(offset + i)/3] |=
(((int) data[i]) & 0xff) << (8*b);
if (b == 0)
{
@@ -261,7 +261,7 @@ public class ScanIt implements ImageProducer
offset += readLen; // Update where we are.
// Show it.
System.out.println("PrevY = " + prevY + ", y = " + y);
-// tellPixels(0, prevY, width, y - prevY);
+// tellPixels(0, prevY, width, y - prevY);
tellPixels(0, 0, width, height);
return true;
}
@@ -289,7 +289,7 @@ public class ScanIt implements ImageProducer
status = sane.start(handle);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("start() failed. Status= "
+ System.out.println("start() failed. Status= "
+ status);
tellStatus(ImageConsumer.IMAGEERROR);
return;
@@ -297,7 +297,7 @@ public class ScanIt implements ImageProducer
status = sane.getParameters(handle, parms);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("getParameters() failed. Status= "
+ System.out.println("getParameters() failed. Status= "
+ status);
tellStatus(ImageConsumer.IMAGEERROR);
return; //++++cleanup.
@@ -342,7 +342,7 @@ public class ScanIt implements ImageProducer
catch (IOException e)
{ //+++++++++++++++
System.out.println("I/O error writing file.");
- }
+ }
outputFile = null; // Clear for next time.
}
tellStatus(ImageConsumer.STATICIMAGEDONE);
@@ -364,7 +364,7 @@ public class ScanIt implements ImageProducer
case SaneParameters.FRAME_GREEN:
case SaneParameters.FRAME_BLUE:
case SaneParameters.FRAME_RGB:
- pout.print("P6\n# SANE data follows\n" +
+ pout.print("P6\n# SANE data follows\n" +
width + ' ' + height + "\n255\n");
for (i = 0; i < len; i++)
{
diff --git a/japi/Test.java b/japi/Test.java
index 52a7112..4a0f507 100644
--- a/japi/Test.java
+++ b/japi/Test.java
@@ -81,7 +81,7 @@ public static void main(String[] args)
status = sane.getControlOption(handle[0], 0, numDevOptions, null);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("controlOption() failed. Status= "
+ System.out.println("controlOption() failed. Status= "
+ status);
return;
}
@@ -101,7 +101,7 @@ public static void main(String[] args)
switch (opt.constraintType)
{
case SaneOption.CONSTRAINT_RANGE:
- System.out.println("Range: " +
+ System.out.println("Range: " +
opt.rangeConstraint.min + ", " +
opt.rangeConstraint.max + ", " +
opt.rangeConstraint.quant);
@@ -123,11 +123,11 @@ public static void main(String[] args)
break;
}
}
- status = sane.setControlOption(handle[0], 2,
+ status = sane.setControlOption(handle[0], 2,
SaneOption.ACTION_SET_VALUE, "../test1.pnm", null);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("setControlOption() failed. Status= "
+ System.out.println("setControlOption() failed. Status= "
+ status);
}
//
@@ -145,14 +145,14 @@ public static void main(String[] args)
status = sane.start(handle[0]);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("start() failed. Status= "
+ System.out.println("start() failed. Status= "
+ status);
return;
}
status = sane.getParameters(handle[0], parm);
if (status != Sane.STATUS_GOOD)
{
- System.out.println("getParameters() failed. Status= "
+ System.out.println("getParameters() failed. Status= "
+ status);
return; //++++cleanup.
}
diff --git a/lib/Makefile.in b/lib/Makefile.in
deleted file mode 100644
index 4246975..0000000
--- a/lib/Makefile.in
+++ /dev/null
@@ -1,688 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = lib
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs alloca.c getenv.c isfdtype.c \
- getopt1.c sleep.c strdup.c strsep.c syslog.c usleep.c getopt.c \
- inet_pton.c sigprocmask.c inet_ntop.c vsyslog.c strcasestr.c \
- snprintf.c strndup.c $(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-liblib_la_DEPENDENCIES = $(LTALLOCA) $(LTLIBOBJS)
-am_liblib_la_OBJECTS = liblib_la-md5.lo
-liblib_la_OBJECTS = $(am_liblib_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(liblib_la_SOURCES)
-DIST_SOURCES = $(liblib_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(top_builddir)/include \
- -I$(top_srcdir)/include
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = liblib.la
-liblib_la_SOURCES = md5.c
-liblib_la_CPPFLAGS = -I$(top_srcdir)/include
-liblib_la_LIBADD = $(LTALLOCA) $(LTLIBOBJS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu lib/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-liblib.la: $(liblib_la_OBJECTS) $(liblib_la_DEPENDENCIES) $(EXTRA_liblib_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(liblib_la_OBJECTS) $(liblib_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getenv.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/inet_ntop.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/inet_pton.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/isfdtype.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sigprocmask.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sleep.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snprintf.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasestr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strdup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strndup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strsep.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/syslog.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/usleep.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vsyslog.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liblib_la-md5.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-liblib_la-md5.lo: md5.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liblib_la-md5.lo -MD -MP -MF $(DEPDIR)/liblib_la-md5.Tpo -c -o liblib_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/liblib_la-md5.Tpo $(DEPDIR)/liblib_la-md5.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='md5.c' object='liblib_la-md5.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liblib_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liblib_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf $(DEPDIR) ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf $(DEPDIR) ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
- ctags-am distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/lib/inet_pton.c b/lib/inet_pton.c
index 7638b6e..e117854 100644
--- a/lib/inet_pton.c
+++ b/lib/inet_pton.c
@@ -13,7 +13,7 @@
#include <arpa/inet.h>
#endif
-int
+int
inet_pton (int af, const char *src, void *dst)
{
diff --git a/lib/isfdtype.c b/lib/isfdtype.c
deleted file mode 100644
index 8e51516..0000000
--- a/lib/isfdtype.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include "../include/sane/config.h"
-
-#ifndef HAVE_ISFDTYPE
-
-#include <sys/stat.h>
-
-int
-isfdtype(int fd, int fdtype)
-{
- struct stat st;
-
- if (fstat(fd, &st) == -1) return 0; /* couldn't stat fd */
-
- if (st.st_mode == 0)
- return 1; /* At least Irix doesn't seem to know socket type */
-#if defined(S_ISSOCK)
- return S_ISSOCK(st.st_mode) != 0;
-#elif defined(S_IFSOCK) && defined(S_IFMT)
- return (st.st_mode & S_IFMT) == S_IFSOCK;
-#else
- return 0;
-#endif
-}
-
-#endif /* !HAVE_ISFDTYPE */
diff --git a/lib/md5.c b/lib/md5.c
index 72b36f3..923a17c 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -123,6 +123,7 @@ md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
/* Take yet unprocessed bytes into account. */
md5_uint32 bytes = ctx->buflen;
size_t pad;
+ size_t offset;
/* Now count remaining bytes. */
ctx->total[0] += bytes;
@@ -133,9 +134,11 @@ md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
memcpy (&ctx->buffer[bytes], fillbuf, pad);
/* Put the 64-bit file length in *bits* at the end of the buffer. */
- ((md5_uint32 *) ctx->buffer)[bytes + pad] = SWAP (ctx->total[0] << 3);
- ((md5_uint32 *) ctx->buffer)[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
- (ctx->total[0] >> 29));
+ offset = (bytes + pad) / sizeof (md5_uint32);
+ ((md5_uint32 *) ctx->buffer)[offset] = SWAP (ctx->total[0] << 3);
+ offset = (bytes + pad + 4) / sizeof (md5_uint32);
+ ((md5_uint32 *) ctx->buffer)[offset] = SWAP ((ctx->total[1] << 3) |
+ (ctx->total[0] >> 29));
/* Process last bytes. */
md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
diff --git a/lib/strcasestr.c b/lib/strcasestr.c
index 8999c50..1c8dc87 100644
--- a/lib/strcasestr.c
+++ b/lib/strcasestr.c
@@ -29,7 +29,7 @@
#include "../include/sane/config.h"
-#ifndef HAVE_STRCASESTR
+#ifndef HAVE_STRCASESTR
#if defined HAVE_STRING_H
# include <string.h>
diff --git a/ltmain.sh b/ltmain.sh
deleted file mode 100644
index dd687a9..0000000
--- a/ltmain.sh
+++ /dev/null
@@ -1,9684 +0,0 @@
-# Local changes for sane-backends (search for "Local change"):
-# 2003-04-30: Henning Meirer-Geinitz
-# * soname changed to "libsane" for every backend (all systems but AIX)
-
-# libtool (GNU libtool) 2.4.2
-# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-# This is free software; see the source for copying conditions. There is NO
-# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# GNU Libtool is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-# --config show all configuration variables
-# --debug enable verbose shell tracing
-# -n, --dry-run display commands without modifying any files
-# --features display basic configuration information and exit
-# --mode=MODE use operation mode MODE
-# --preserve-dup-deps don't remove duplicate dependency libraries
-# --quiet, --silent don't print informational messages
-# --no-quiet, --no-silent
-# print informational messages (default)
-# --no-warn don't display warning messages
-# --tag=TAG use configuration variables from tag TAG
-# -v, --verbose print more informational messages than default
-# --no-verbose don't print the extra informational messages
-# --version print version information
-# -h, --help, --help-all print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-# clean remove files from the build directory
-# compile compile a source file into a libtool object
-# execute automatically set library path, then run a program
-# finish complete the installation of libtool libraries
-# install install libraries or executables
-# link create a library or an executable
-# uninstall remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE. When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-# host-triplet: $host
-# shell: $SHELL
-# compiler: $LTCC
-# compiler flags: $LTCFLAGS
-# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11
-# automake: $automake_version
-# autoconf: $autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
-
-PROGRAM=libtool
-PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.11"
-TIMESTAMP=""
-package_revision=1.3337
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '${1+"$@"}'='"$@"'
- setopt NO_GLOB_SUBST
-else
- case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-do
- eval "if test \"\${$lt_var+set}\" = set; then
- save_$lt_var=\$$lt_var
- $lt_var=C
- export $lt_var
- lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
- lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
- fi"
-done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
-
-$lt_unset CDPATH
-
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-
-
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
-
-exit_status=$EXIT_SUCCESS
-
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" $lt_nl"
-
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
-
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE. If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
- func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
-} # func_dirname may be replaced by extended shell implementation
-
-
-# func_basename file
-func_basename ()
-{
- func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
-# call:
-# dirname: Compute the dirname of FILE. If nonempty,
-# add APPEND to the result, otherwise set result
-# to NONDIR_REPLACEMENT.
-# value returned in "$func_dirname_result"
-# basename: Compute filename of FILE.
-# value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
-{
- # Extract subdirectory from the argument.
- func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
- if test "X$func_dirname_result" = "X${1}"; then
- func_dirname_result="${3}"
- else
- func_dirname_result="$func_dirname_result${2}"
- fi
- func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
-
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
- esac
-} # func_stripname may be replaced by extended shell implementation
-
-
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
- s@/\./@/@g
- t dotsl
- s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
-
-# func_normal_abspath PATH
-# Remove doubled-up and trailing slashes, "." path components,
-# and cancel out any ".." path components in PATH after making
-# it an absolute path.
-# value returned in "$func_normal_abspath_result"
-func_normal_abspath ()
-{
- # Start from root dir and reassemble the path.
- func_normal_abspath_result=
- func_normal_abspath_tpath=$1
- func_normal_abspath_altnamespace=
- case $func_normal_abspath_tpath in
- "")
- # Empty path, that just means $cwd.
- func_stripname '' '/' "`pwd`"
- func_normal_abspath_result=$func_stripname_result
- return
- ;;
- # The next three entries are used to spot a run of precisely
- # two leading slashes without using negated character classes;
- # we take advantage of case's first-match behaviour.
- ///*)
- # Unusual form of absolute path, do nothing.
- ;;
- //*)
- # Not necessarily an ordinary path; POSIX reserves leading '//'
- # and for example Cygwin uses it to access remote file shares
- # over CIFS/SMB, so we conserve a leading double slash if found.
- func_normal_abspath_altnamespace=/
- ;;
- /*)
- # Absolute path, do nothing.
- ;;
- *)
- # Relative path, prepend $cwd.
- func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
- ;;
- esac
- # Cancel out all the simple stuff to save iterations. We also want
- # the path to end with a slash for ease of parsing, so make sure
- # there is one (and only one) here.
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
- while :; do
- # Processed it all yet?
- if test "$func_normal_abspath_tpath" = / ; then
- # If we ascended to the root using ".." the result may be empty now.
- if test -z "$func_normal_abspath_result" ; then
- func_normal_abspath_result=/
- fi
- break
- fi
- func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcar"`
- func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
- -e "$pathcdr"`
- # Figure out what to do with it
- case $func_normal_abspath_tcomponent in
- "")
- # Trailing empty path component, ignore it.
- ;;
- ..)
- # Parent dir; strip last assembled component from result.
- func_dirname "$func_normal_abspath_result"
- func_normal_abspath_result=$func_dirname_result
- ;;
- *)
- # Actual path component, append it.
- func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
- ;;
- esac
- done
- # Restore leading double-slash if one was found on entry.
- func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-# value returned in "$func_relative_path_result"
-func_relative_path ()
-{
- func_relative_path_result=
- func_normal_abspath "$1"
- func_relative_path_tlibdir=$func_normal_abspath_result
- func_normal_abspath "$2"
- func_relative_path_tbindir=$func_normal_abspath_result
-
- # Ascend the tree starting from libdir
- while :; do
- # check if we have found a prefix of bindir
- case $func_relative_path_tbindir in
- $func_relative_path_tlibdir)
- # found an exact match
- func_relative_path_tcancelled=
- break
- ;;
- $func_relative_path_tlibdir*)
- # found a matching prefix
- func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
- func_relative_path_tcancelled=$func_stripname_result
- if test -z "$func_relative_path_result"; then
- func_relative_path_result=.
- fi
- break
- ;;
- *)
- func_dirname $func_relative_path_tlibdir
- func_relative_path_tlibdir=${func_dirname_result}
- if test "x$func_relative_path_tlibdir" = x ; then
- # Have to descend all the way to the root!
- func_relative_path_result=../$func_relative_path_result
- func_relative_path_tcancelled=$func_relative_path_tbindir
- break
- fi
- func_relative_path_result=../$func_relative_path_result
- ;;
- esac
- done
-
- # Now calculate path; take care to avoid doubling-up slashes.
- func_stripname '' '/' "$func_relative_path_result"
- func_relative_path_result=$func_stripname_result
- func_stripname '/' '/' "$func_relative_path_tcancelled"
- if test "x$func_stripname_result" != x ; then
- func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
- fi
-
- # Normalisation. If bindir is libdir, return empty string,
- # else relative path ending with a slash; either way, target
- # file name can be directly appended.
- if test ! -z "$func_relative_path_result"; then
- func_stripname './' '' "$func_relative_path_result/"
- func_relative_path_result=$func_stripname_result
- fi
-}
-
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
-
-# Make sure we have an absolute path for reexecution:
-case $progpath in
- [\\/]*|[A-Za-z]:\\*) ;;
- *[\\/]*)
- progdir=$func_dirname_result
- progdir=`cd "$progdir" && pwd`
- progpath="$progdir/$progname"
- ;;
- *)
- save_IFS="$IFS"
- IFS=${PATH_SEPARATOR-:}
- for progdir in $PATH; do
- IFS="$save_IFS"
- test -x "$progdir/$progname" && break
- done
- IFS="$save_IFS"
- test -n "$progdir" || progdir=`pwd`
- progpath="$progdir/$progname"
- ;;
-esac
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes. A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
- s/$bs4/&\\
-/g
- s/^$bs2$dollar/$bs&/
- s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
- s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
-{
- $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
-
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
- $opt_verbose && func_echo ${1+"$@"}
-
- # A bug in bash halts the script if the last line of a function
- # fails when set -e is in force, so we need another command to
- # work around that:
- :
-}
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
- $ECHO "$*"
-}
-
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
-{
- $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
-
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
- $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
-
- # bash bug again:
- :
-}
-
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
- func_error ${1+"$@"}
- exit $EXIT_FAILURE
-}
-
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
- func_error ${1+"$@"}
- func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information." ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
- $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
- my_directory_path="$1"
- my_dir_list=
-
- if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
- # Protect directory names starting with `-'
- case $my_directory_path in
- -*) my_directory_path="./$my_directory_path" ;;
- esac
-
- # While some portion of DIR does not yet exist...
- while test ! -d "$my_directory_path"; do
- # ...make a list in topmost first order. Use a colon delimited
- # list incase some portion of path contains whitespace.
- my_dir_list="$my_directory_path:$my_dir_list"
-
- # If the last portion added has no slash in it, the list is done
- case $my_directory_path in */*) ;; *) break ;; esac
-
- # ...otherwise throw away the child directory and loop
- my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
- done
- my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
- save_mkdir_p_IFS="$IFS"; IFS=':'
- for my_dir in $my_dir_list; do
- IFS="$save_mkdir_p_IFS"
- # mkdir can fail with a `File exist' error if two processes
- # try to create one of the directories concurrently. Don't
- # stop in that case!
- $MKDIR "$my_dir" 2>/dev/null || :
- done
- IFS="$save_mkdir_p_IFS"
-
- # Bail out if we (or some other process) failed to create a directory.
- test -d "$my_directory_path" || \
- func_fatal_error "Failed to create \`$1'"
- fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible. If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
- my_template="${TMPDIR-/tmp}/${1-$progname}"
-
- if test "$opt_dry_run" = ":"; then
- # Return a directory name, but don't create it in dry-run mode
- my_tmpdir="${my_template}-$$"
- else
-
- # If mktemp works, use that first and foremost
- my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
- if test ! -d "$my_tmpdir"; then
- # Failing that, at least try and use $RANDOM to avoid a race
- my_tmpdir="${my_template}-${RANDOM-0}$$"
-
- save_mktempdir_umask=`umask`
- umask 0077
- $MKDIR "$my_tmpdir"
- umask $save_mktempdir_umask
- fi
-
- # If we're not in dry-run mode, bomb out on failure
- test -d "$my_tmpdir" || \
- func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
- fi
-
- $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
-func_quote_for_eval ()
-{
- case $1 in
- *[\\\`\"\$]*)
- func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
- *)
- func_quote_for_eval_unquoted_result="$1" ;;
- esac
-
- case $func_quote_for_eval_unquoted_result in
- # Double-quote args containing shell metacharacters to delay
- # word splitting, command substitution and and variable
- # expansion for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
- ;;
- *)
- func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
- esac
-}
-
-
-# func_quote_for_expand arg
-# Aesthetically quote ARG to be evaled later; same as above,
-# but do not quote variable references.
-func_quote_for_expand ()
-{
- case $1 in
- *[\\\`\"]*)
- my_arg=`$ECHO "$1" | $SED \
- -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
- *)
- my_arg="$1" ;;
- esac
-
- case $my_arg in
- # Double-quote args containing shell metacharacters to delay
- # word splitting and command substitution for a subsequent eval.
- # Many Bourne shells cannot handle close brackets correctly
- # in scan sets, so we specify it separately.
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
- my_arg="\"$my_arg\""
- ;;
- esac
-
- func_quote_for_expand_result="$my_arg"
-}
-
-
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
-# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it.
-func_show_eval ()
-{
- my_cmd="$1"
- my_fail_exp="${2-:}"
-
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
-
- if ${opt_dry_run-false}; then :; else
- eval "$my_cmd"
- my_status=$?
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
- fi
- fi
-}
-
-
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
-# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
-# is given, then evaluate it. Use the saved locale for evaluation.
-func_show_eval_locale ()
-{
- my_cmd="$1"
- my_fail_exp="${2-:}"
-
- ${opt_silent-false} || {
- func_quote_for_expand "$my_cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
-
- if ${opt_dry_run-false}; then :; else
- eval "$lt_user_locale
- $my_cmd"
- my_status=$?
- eval "$lt_safe_locale"
- if test "$my_status" -eq 0; then :; else
- eval "(exit $my_status); $my_fail_exp"
- fi
- fi
-}
-
-# func_tr_sh
-# Turn $1 into a string suitable for a shell variable name.
-# Result is stored in $func_tr_sh_result. All characters
-# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
-# if $1 begins with a digit, a '_' is prepended as well.
-func_tr_sh ()
-{
- case $1 in
- [0-9]* | *[!a-zA-Z0-9_]*)
- func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
- ;;
- * )
- func_tr_sh_result=$1
- ;;
- esac
-}
-
-
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
-{
- $opt_debug
-
- $SED -n '/(C)/!b go
- :more
- /\./!{
- N
- s/\n# / /
- b more
- }
- :go
- /^# '$PROGRAM' (GNU /,/# warranty; / {
- s/^# //
- s/^# *$//
- s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
- p
- }' < "$progpath"
- exit $?
-}
-
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
-{
- $opt_debug
-
- $SED -n '/^# Usage:/,/^# *.*--help/ {
- s/^# //
- s/^# *$//
- s/\$progname/'$progname'/
- p
- }' < "$progpath"
- echo
- $ECHO "run \`$progname --help | more' for full usage"
- exit $?
-}
-
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
-func_help ()
-{
- $opt_debug
-
- $SED -n '/^# Usage:/,/# Report bugs to/ {
- :print
- s/^# //
- s/^# *$//
- s*\$progname*'$progname'*
- s*\$host*'"$host"'*
- s*\$SHELL*'"$SHELL"'*
- s*\$LTCC*'"$LTCC"'*
- s*\$LTCFLAGS*'"$LTCFLAGS"'*
- s*\$LD*'"$LD"'*
- s/\$with_gnu_ld/'"$with_gnu_ld"'/
- s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
- s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
- p
- d
- }
- /^# .* home page:/b print
- /^# General help using/b print
- ' < "$progpath"
- ret=$?
- if test -z "$1"; then
- exit $ret
- fi
-}
-
-# func_missing_arg argname
-# Echo program name prefixed message to standard error and set global
-# exit_cmd.
-func_missing_arg ()
-{
- $opt_debug
-
- func_error "missing argument for $1."
- exit_cmd=exit
-}
-
-
-# func_split_short_opt shortopt
-# Set func_split_short_opt_name and func_split_short_opt_arg shell
-# variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
-{
- my_sed_short_opt='1s/^\(..\).*$/\1/;q'
- my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
-
- func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
- func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
-
-
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
-{
- my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
- my_sed_long_arg='1s/^--[^=]*=//'
-
- func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
- func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
-
-exit_cmd=:
-
-
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end. This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
- eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
- func_quote_for_eval "${2}"
- eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
- func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
- func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
-
-
-# func_lo2o object
-func_lo2o ()
-{
- func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
-
-
-# func_xform libobj-or-source
-func_xform ()
-{
- func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
-
-
-# func_fatal_configuration arg...
-# Echo program name prefixed message to standard error, followed by
-# a configuration failure hint, and exit.
-func_fatal_configuration ()
-{
- func_error ${1+"$@"}
- func_error "See the $PACKAGE documentation for more information."
- func_fatal_error "Fatal configuration error."
-}
-
-
-# func_config
-# Display the configuration for all the tags in this script.
-func_config ()
-{
- re_begincf='^# ### BEGIN LIBTOOL'
- re_endcf='^# ### END LIBTOOL'
-
- # Default configuration.
- $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
-
- # Now print the configurations for the tags.
- for tagname in $taglist; do
- $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
- done
-
- exit $?
-}
-
-# func_features
-# Display the features supported by this script.
-func_features ()
-{
- echo "host: $host"
- if test "$build_libtool_libs" = yes; then
- echo "enable shared libraries"
- else
- echo "disable shared libraries"
- fi
- if test "$build_old_libs" = yes; then
- echo "enable static libraries"
- else
- echo "disable static libraries"
- fi
-
- exit $?
-}
-
-# func_enable_tag tagname
-# Verify that TAGNAME is valid, and either flag an error and exit, or
-# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
-# variable here.
-func_enable_tag ()
-{
- # Global variable:
- tagname="$1"
-
- re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
- re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
- sed_extractcf="/$re_begincf/,/$re_endcf/p"
-
- # Validate tagname.
- case $tagname in
- *[!-_A-Za-z0-9,/]*)
- func_fatal_error "invalid tag name: $tagname"
- ;;
- esac
-
- # Don't test for the "default" C tag, as we know it's
- # there but not specially marked.
- case $tagname in
- CC) ;;
- *)
- if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
- taglist="$taglist $tagname"
-
- # Evaluate the configuration. Be careful to quote the path
- # and the sed script, to avoid splitting on whitespace, but
- # also don't use non-portable quotes within backquotes within
- # quotes we have to do it in 2 steps:
- extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
- eval "$extractedcf"
- else
- func_error "ignoring unknown tag $tagname"
- fi
- ;;
- esac
-}
-
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
- if test "$package_revision" != "$macro_revision"; then
- if test "$VERSION" != "$macro_version"; then
- if test -z "$macro_version"; then
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
- else
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
- fi
- else
- cat >&2 <<_LT_EOF
-$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
- fi
-
- exit $EXIT_MISMATCH
- fi
-}
-
-
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
- shift; set dummy --mode clean ${1+"$@"}; shift
- ;;
-compile|compil|compi|comp|com|co|c)
- shift; set dummy --mode compile ${1+"$@"}; shift
- ;;
-execute|execut|execu|exec|exe|ex|e)
- shift; set dummy --mode execute ${1+"$@"}; shift
- ;;
-finish|finis|fini|fin|fi|f)
- shift; set dummy --mode finish ${1+"$@"}; shift
- ;;
-install|instal|insta|inst|ins|in|i)
- shift; set dummy --mode install ${1+"$@"}; shift
- ;;
-link|lin|li|l)
- shift; set dummy --mode link ${1+"$@"}; shift
- ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
- shift; set dummy --mode uninstall ${1+"$@"}; shift
- ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly. This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
-{
- # this just eases exit handling
- while test $# -gt 0; do
- opt="$1"
- shift
- case $opt in
- --debug|-x) opt_debug='set -x'
- func_echo "enabling shell trace mode"
- $opt_debug
- ;;
- --dry-run|--dryrun|-n)
- opt_dry_run=:
- ;;
- --config)
- opt_config=:
-func_config
- ;;
- --dlopen|-dlopen)
- optarg="$1"
- opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
- shift
- ;;
- --preserve-dup-deps)
- opt_preserve_dup_deps=:
- ;;
- --features)
- opt_features=:
-func_features
- ;;
- --finish)
- opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
- ;;
- --help)
- opt_help=:
- ;;
- --help-all)
- opt_help_all=:
-opt_help=': help-all'
- ;;
- --mode)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_mode="$optarg"
-case $optarg in
- # Valid mode arguments:
- clean|compile|execute|finish|install|link|relink|uninstall) ;;
-
- # Catch anything else as an error
- *) func_error "invalid argument for $opt"
- exit_cmd=exit
- break
- ;;
-esac
- shift
- ;;
- --no-silent|--no-quiet)
- opt_silent=false
-func_append preserve_args " $opt"
- ;;
- --no-warning|--no-warn)
- opt_warning=false
-func_append preserve_args " $opt"
- ;;
- --no-verbose)
- opt_verbose=false
-func_append preserve_args " $opt"
- ;;
- --silent|--quiet)
- opt_silent=:
-func_append preserve_args " $opt"
- opt_verbose=false
- ;;
- --verbose|-v)
- opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
- ;;
- --tag)
- test $# = 0 && func_missing_arg $opt && break
- optarg="$1"
- opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
- shift
- ;;
-
- -\?|-h) func_usage ;;
- --help) func_help ;;
- --version) func_version ;;
-
- # Separate optargs to long options:
- --*=*)
- func_split_long_opt "$opt"
- set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
- shift
- ;;
-
- # Separate non-argument short options:
- -\?*|-h*|-n*|-v*)
- func_split_short_opt "$opt"
- set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
- shift
- ;;
-
- --) break ;;
- -*) func_fatal_help "unrecognized option \`$opt'" ;;
- *) set dummy "$opt" ${1+"$@"}; shift; break ;;
- esac
- done
-
- # Validate options:
-
- # save first non-option argument
- if test "$#" -gt 0; then
- nonopt="$opt"
- shift
- fi
-
- # preserve --debug
- test "$opt_debug" = : || func_append preserve_args " --debug"
-
- case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
- # don't eliminate duplications in $postdeps and $predeps
- opt_duplicate_compiler_generated_deps=:
- ;;
- *)
- opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
- ;;
- esac
-
- $opt_help || {
- # Sanity checks first:
- func_check_version_match
-
- if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
- func_fatal_configuration "not configured to build any kind of library"
- fi
-
- # Darwin sucks
- eval std_shrext=\"$shrext_cmds\"
-
- # Only execute mode is allowed to have -dlopen flags.
- if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
- func_error "unrecognized option \`-dlopen'"
- $ECHO "$help" 1>&2
- exit $EXIT_FAILURE
- fi
-
- # Change the help message to a mode-specific one.
- generic_help="$help"
- help="Try \`$progname --help --mode=$opt_mode' for more information."
- }
-
-
- # Bail if the options were screwed
- $exit_cmd $EXIT_FAILURE
-}
-
-
-
-
-## ----------- ##
-## Main. ##
-## ----------- ##
-
-# func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_lalib_p ()
-{
- test -f "$1" &&
- $SED -e 4q "$1" 2>/dev/null \
- | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
-}
-
-# func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
-# This function implements the same check as func_lalib_p without
-# resorting to external programs. To this end, it redirects stdin and
-# closes it afterwards, without saving the original file descriptor.
-# As a safety measure, use it only where a negative result would be
-# fatal anyway. Works if `file' does not exist.
-func_lalib_unsafe_p ()
-{
- lalib_p=no
- if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
- for lalib_p_l in 1 2 3 4
- do
- read lalib_p_line
- case "$lalib_p_line" in
- \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
- esac
- done
- exec 0<&5 5<&-
- fi
- test "$lalib_p" = yes
-}
-
-# func_ltwrapper_script_p file
-# True iff FILE is a libtool wrapper script
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_script_p ()
-{
- func_lalib_p "$1"
-}
-
-# func_ltwrapper_executable_p file
-# True iff FILE is a libtool wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_executable_p ()
-{
- func_ltwrapper_exec_suffix=
- case $1 in
- *.exe) ;;
- *) func_ltwrapper_exec_suffix=.exe ;;
- esac
- $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
-}
-
-# func_ltwrapper_scriptname file
-# Assumes file is an ltwrapper_executable
-# uses $file to determine the appropriate filename for a
-# temporary ltwrapper_script.
-func_ltwrapper_scriptname ()
-{
- func_dirname_and_basename "$1" "" "."
- func_stripname '' '.exe' "$func_basename_result"
- func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
-}
-
-# func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script or wrapper executable
-# This function is only a basic sanity check; it will hardly flush out
-# determined imposters.
-func_ltwrapper_p ()
-{
- func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
-}
-
-
-# func_execute_cmds commands fail_cmd
-# Execute tilde-delimited COMMANDS.
-# If FAIL_CMD is given, eval that upon failure.
-# FAIL_CMD may read-access the current command in variable CMD!
-func_execute_cmds ()
-{
- $opt_debug
- save_ifs=$IFS; IFS='~'
- for cmd in $1; do
- IFS=$save_ifs
- eval cmd=\"$cmd\"
- func_show_eval "$cmd" "${2-:}"
- done
- IFS=$save_ifs
-}
-
-
-# func_source file
-# Source FILE, adding directory component if necessary.
-# Note that it is not necessary on cygwin/mingw to append a dot to
-# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
-# behavior happens only for exec(3), not for open(2)! Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
-func_source ()
-{
- $opt_debug
- case $1 in
- */* | *\\*) . "$1" ;;
- *) . "./$1" ;;
- esac
-}
-
-
-# func_resolve_sysroot PATH
-# Replace a leading = in PATH with a sysroot. Store the result into
-# func_resolve_sysroot_result
-func_resolve_sysroot ()
-{
- func_resolve_sysroot_result=$1
- case $func_resolve_sysroot_result in
- =*)
- func_stripname '=' '' "$func_resolve_sysroot_result"
- func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
- ;;
- esac
-}
-
-# func_replace_sysroot PATH
-# If PATH begins with the sysroot, replace it with = and
-# store the result into func_replace_sysroot_result.
-func_replace_sysroot ()
-{
- case "$lt_sysroot:$1" in
- ?*:"$lt_sysroot"*)
- func_stripname "$lt_sysroot" '' "$1"
- func_replace_sysroot_result="=$func_stripname_result"
- ;;
- *)
- # Including no sysroot.
- func_replace_sysroot_result=$1
- ;;
- esac
-}
-
-# func_infer_tag arg
-# Infer tagged configuration to use if any are available and
-# if one wasn't chosen via the "--tag" command line option.
-# Only attempt this if the compiler in the base compile
-# command doesn't match the default compiler.
-# arg is usually of the form 'gcc ...'
-func_infer_tag ()
-{
- $opt_debug
- if test -n "$available_tags" && test -z "$tagname"; then
- CC_quoted=
- for arg in $CC; do
- func_append_quoted CC_quoted "$arg"
- done
- CC_expanded=`func_echo_all $CC`
- CC_quoted_expanded=`func_echo_all $CC_quoted`
- case $@ in
- # Blanks in the command may have been stripped by the calling shell,
- # but not from the CC environment variable when configure was run.
- " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
- " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
- # Blanks at the start of $base_compile will cause this to fail
- # if we don't check for them as well.
- *)
- for z in $available_tags; do
- if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
- # Evaluate the configuration.
- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
- CC_quoted=
- for arg in $CC; do
- # Double-quote args containing other shell metacharacters.
- func_append_quoted CC_quoted "$arg"
- done
- CC_expanded=`func_echo_all $CC`
- CC_quoted_expanded=`func_echo_all $CC_quoted`
- case "$@ " in
- " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
- " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
- # The compiler in the base compile command matches
- # the one in the tagged configuration.
- # Assume this is the tagged configuration we want.
- tagname=$z
- break
- ;;
- esac
- fi
- done
- # If $tagname still isn't set, then no tagged configuration
- # was found and let the user know that the "--tag" command
- # line option must be used.
- if test -z "$tagname"; then
- func_echo "unable to infer tagged configuration"
- func_fatal_error "specify a tag with \`--tag'"
-# else
-# func_verbose "using $tagname tagged configuration"
- fi
- ;;
- esac
- fi
-}
-
-
-
-# func_write_libtool_object output_name pic_name nonpic_name
-# Create a libtool object file (analogous to a ".la" file),
-# but don't create it if we're doing a dry run.
-func_write_libtool_object ()
-{
- write_libobj=${1}
- if test "$build_libtool_libs" = yes; then
- write_lobj=\'${2}\'
- else
- write_lobj=none
- fi
-
- if test "$build_old_libs" = yes; then
- write_oldobj=\'${3}\'
- else
- write_oldobj=none
- fi
-
- $opt_dry_run || {
- cat >${write_libobj}T <<EOF
-# $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object=$write_lobj
-
-# Name of the non-PIC object
-non_pic_object=$write_oldobj
-
-EOF
- $MV "${write_libobj}T" "${write_libobj}"
- }
-}
-
-
-##################################################
-# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
-##################################################
-
-# func_convert_core_file_wine_to_w32 ARG
-# Helper function used by file name conversion functions when $build is *nix,
-# and $host is mingw, cygwin, or some other w32 environment. Relies on a
-# correctly configured wine environment available, with the winepath program
-# in $build's $PATH.
-#
-# ARG is the $build file name to be converted to w32 format.
-# Result is available in $func_convert_core_file_wine_to_w32_result, and will
-# be empty on error (or when ARG is empty)
-func_convert_core_file_wine_to_w32 ()
-{
- $opt_debug
- func_convert_core_file_wine_to_w32_result="$1"
- if test -n "$1"; then
- # Unfortunately, winepath does not exit with a non-zero error code, so we
- # are forced to check the contents of stdout. On the other hand, if the
- # command is not found, the shell will set an exit code of 127 and print
- # *an error message* to stdout. So we must check for both error code of
- # zero AND non-empty stdout, which explains the odd construction:
- func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
- if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
- func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
- $SED -e "$lt_sed_naive_backslashify"`
- else
- func_convert_core_file_wine_to_w32_result=
- fi
- fi
-}
-# end: func_convert_core_file_wine_to_w32
-
-
-# func_convert_core_path_wine_to_w32 ARG
-# Helper function used by path conversion functions when $build is *nix, and
-# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
-# configured wine environment available, with the winepath program in $build's
-# $PATH. Assumes ARG has no leading or trailing path separator characters.
-#
-# ARG is path to be converted from $build format to win32.
-# Result is available in $func_convert_core_path_wine_to_w32_result.
-# Unconvertible file (directory) names in ARG are skipped; if no directory names
-# are convertible, then the result may be empty.
-func_convert_core_path_wine_to_w32 ()
-{
- $opt_debug
- # unfortunately, winepath doesn't convert paths, only file names
- func_convert_core_path_wine_to_w32_result=""
- if test -n "$1"; then
- oldIFS=$IFS
- IFS=:
- for func_convert_core_path_wine_to_w32_f in $1; do
- IFS=$oldIFS
- func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
- if test -n "$func_convert_core_file_wine_to_w32_result" ; then
- if test -z "$func_convert_core_path_wine_to_w32_result"; then
- func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
- else
- func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
- fi
- fi
- done
- IFS=$oldIFS
- fi
-}
-# end: func_convert_core_path_wine_to_w32
-
-
-# func_cygpath ARGS...
-# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
-# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
-# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
-# (2), returns the Cygwin file name or path in func_cygpath_result (input
-# file name or path is assumed to be in w32 format, as previously converted
-# from $build's *nix or MSYS format). In case (3), returns the w32 file name
-# or path in func_cygpath_result (input file name or path is assumed to be in
-# Cygwin format). Returns an empty string on error.
-#
-# ARGS are passed to cygpath, with the last one being the file name or path to
-# be converted.
-#
-# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
-# environment variable; do not put it in $PATH.
-func_cygpath ()
-{
- $opt_debug
- if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
- func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
- if test "$?" -ne 0; then
- # on failure, ensure result is empty
- func_cygpath_result=
- fi
- else
- func_cygpath_result=
- func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
- fi
-}
-#end: func_cygpath
-
-
-# func_convert_core_msys_to_w32 ARG
-# Convert file name or path ARG from MSYS format to w32 format. Return
-# result in func_convert_core_msys_to_w32_result.
-func_convert_core_msys_to_w32 ()
-{
- $opt_debug
- # awkward: cmd appends spaces to result
- func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
- $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
-}
-#end: func_convert_core_msys_to_w32
-
-
-# func_convert_file_check ARG1 ARG2
-# Verify that ARG1 (a file name in $build format) was converted to $host
-# format in ARG2. Otherwise, emit an error message, but continue (resetting
-# func_to_host_file_result to ARG1).
-func_convert_file_check ()
-{
- $opt_debug
- if test -z "$2" && test -n "$1" ; then
- func_error "Could not determine host file name corresponding to"
- func_error " \`$1'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback:
- func_to_host_file_result="$1"
- fi
-}
-# end func_convert_file_check
-
-
-# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
-# Verify that FROM_PATH (a path in $build format) was converted to $host
-# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
-# func_to_host_file_result to a simplistic fallback value (see below).
-func_convert_path_check ()
-{
- $opt_debug
- if test -z "$4" && test -n "$3"; then
- func_error "Could not determine the host path corresponding to"
- func_error " \`$3'"
- func_error "Continuing, but uninstalled executables may not work."
- # Fallback. This is a deliberately simplistic "conversion" and
- # should not be "improved". See libtool.info.
- if test "x$1" != "x$2"; then
- lt_replace_pathsep_chars="s|$1|$2|g"
- func_to_host_path_result=`echo "$3" |
- $SED -e "$lt_replace_pathsep_chars"`
- else
- func_to_host_path_result="$3"
- fi
- fi
-}
-# end func_convert_path_check
-
-
-# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
-# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
-# and appending REPL if ORIG matches BACKPAT.
-func_convert_path_front_back_pathsep ()
-{
- $opt_debug
- case $4 in
- $1 ) func_to_host_path_result="$3$func_to_host_path_result"
- ;;
- esac
- case $4 in
- $2 ) func_append func_to_host_path_result "$3"
- ;;
- esac
-}
-# end func_convert_path_front_back_pathsep
-
-
-##################################################
-# $build to $host FILE NAME CONVERSION FUNCTIONS #
-##################################################
-# invoked via `$to_host_file_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# Result will be available in $func_to_host_file_result.
-
-
-# func_to_host_file ARG
-# Converts the file name ARG from $build format to $host format. Return result
-# in func_to_host_file_result.
-func_to_host_file ()
-{
- $opt_debug
- $to_host_file_cmd "$1"
-}
-# end func_to_host_file
-
-
-# func_to_tool_file ARG LAZY
-# converts the file name ARG from $build format to toolchain format. Return
-# result in func_to_tool_file_result. If the conversion in use is listed
-# in (the comma separated) LAZY, no conversion takes place.
-func_to_tool_file ()
-{
- $opt_debug
- case ,$2, in
- *,"$to_tool_file_cmd",*)
- func_to_tool_file_result=$1
- ;;
- *)
- $to_tool_file_cmd "$1"
- func_to_tool_file_result=$func_to_host_file_result
- ;;
- esac
-}
-# end func_to_tool_file
-
-
-# func_convert_file_noop ARG
-# Copy ARG to func_to_host_file_result.
-func_convert_file_noop ()
-{
- func_to_host_file_result="$1"
-}
-# end func_convert_file_noop
-
-
-# func_convert_file_msys_to_w32 ARG
-# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper. Returns result in
-# func_to_host_file_result.
-func_convert_file_msys_to_w32 ()
-{
- $opt_debug
- func_to_host_file_result="$1"
- if test -n "$1"; then
- func_convert_core_msys_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_msys_to_w32_result"
- fi
- func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_w32
-
-
-# func_convert_file_cygwin_to_w32 ARG
-# Convert file name ARG from Cygwin to w32 format. Returns result in
-# func_to_host_file_result.
-func_convert_file_cygwin_to_w32 ()
-{
- $opt_debug
- func_to_host_file_result="$1"
- if test -n "$1"; then
- # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
- # LT_CYGPATH in this case.
- func_to_host_file_result=`cygpath -m "$1"`
- fi
- func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_cygwin_to_w32
-
-
-# func_convert_file_nix_to_w32 ARG
-# Convert file name ARG from *nix to w32 format. Requires a wine environment
-# and a working winepath. Returns result in func_to_host_file_result.
-func_convert_file_nix_to_w32 ()
-{
- $opt_debug
- func_to_host_file_result="$1"
- if test -n "$1"; then
- func_convert_core_file_wine_to_w32 "$1"
- func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
- fi
- func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_w32
-
-
-# func_convert_file_msys_to_cygwin ARG
-# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_file_msys_to_cygwin ()
-{
- $opt_debug
- func_to_host_file_result="$1"
- if test -n "$1"; then
- func_convert_core_msys_to_w32 "$1"
- func_cygpath -u "$func_convert_core_msys_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
- fi
- func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_msys_to_cygwin
-
-
-# func_convert_file_nix_to_cygwin ARG
-# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
-# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
-# in func_to_host_file_result.
-func_convert_file_nix_to_cygwin ()
-{
- $opt_debug
- func_to_host_file_result="$1"
- if test -n "$1"; then
- # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
- func_convert_core_file_wine_to_w32 "$1"
- func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
- func_to_host_file_result="$func_cygpath_result"
- fi
- func_convert_file_check "$1" "$func_to_host_file_result"
-}
-# end func_convert_file_nix_to_cygwin
-
-
-#############################################
-# $build to $host PATH CONVERSION FUNCTIONS #
-#############################################
-# invoked via `$to_host_path_cmd ARG'
-#
-# In each case, ARG is the path to be converted from $build to $host format.
-# The result will be available in $func_to_host_path_result.
-#
-# Path separators are also converted from $build format to $host format. If
-# ARG begins or ends with a path separator character, it is preserved (but
-# converted to $host format) on output.
-#
-# All path conversion functions are named using the following convention:
-# file name conversion function : func_convert_file_X_to_Y ()
-# path conversion function : func_convert_path_X_to_Y ()
-# where, for any given $build/$host combination the 'X_to_Y' value is the
-# same. If conversion functions are added for new $build/$host combinations,
-# the two new functions must follow this pattern, or func_init_to_host_path_cmd
-# will break.
-
-
-# func_init_to_host_path_cmd
-# Ensures that function "pointer" variable $to_host_path_cmd is set to the
-# appropriate value, based on the value of $to_host_file_cmd.
-to_host_path_cmd=
-func_init_to_host_path_cmd ()
-{
- $opt_debug
- if test -z "$to_host_path_cmd"; then
- func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
- to_host_path_cmd="func_convert_path_${func_stripname_result}"
- fi
-}
-
-
-# func_to_host_path ARG
-# Converts the path ARG from $build format to $host format. Return result
-# in func_to_host_path_result.
-func_to_host_path ()
-{
- $opt_debug
- func_init_to_host_path_cmd
- $to_host_path_cmd "$1"
-}
-# end func_to_host_path
-
-
-# func_convert_path_noop ARG
-# Copy ARG to func_to_host_path_result.
-func_convert_path_noop ()
-{
- func_to_host_path_result="$1"
-}
-# end func_convert_path_noop
-
-
-# func_convert_path_msys_to_w32 ARG
-# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
-# conversion to w32 is not available inside the cwrapper. Returns result in
-# func_to_host_path_result.
-func_convert_path_msys_to_w32 ()
-{
- $opt_debug
- func_to_host_path_result="$1"
- if test -n "$1"; then
- # Remove leading and trailing path separator characters from ARG. MSYS
- # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
- # and winepath ignores them completely.
- func_stripname : : "$1"
- func_to_host_path_tmp1=$func_stripname_result
- func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_msys_to_w32_result"
- func_convert_path_check : ";" \
- "$func_to_host_path_tmp1" "$func_to_host_path_result"
- func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
- fi
-}
-# end func_convert_path_msys_to_w32
-
-
-# func_convert_path_cygwin_to_w32 ARG
-# Convert path ARG from Cygwin to w32 format. Returns result in
-# func_to_host_file_result.
-func_convert_path_cygwin_to_w32 ()
-{
- $opt_debug
- func_to_host_path_result="$1"
- if test -n "$1"; then
- # See func_convert_path_msys_to_w32:
- func_stripname : : "$1"
- func_to_host_path_tmp1=$func_stripname_result
- func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
- func_convert_path_check : ";" \
- "$func_to_host_path_tmp1" "$func_to_host_path_result"
- func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
- fi
-}
-# end func_convert_path_cygwin_to_w32
-
-
-# func_convert_path_nix_to_w32 ARG
-# Convert path ARG from *nix to w32 format. Requires a wine environment and
-# a working winepath. Returns result in func_to_host_file_result.
-func_convert_path_nix_to_w32 ()
-{
- $opt_debug
- func_to_host_path_result="$1"
- if test -n "$1"; then
- # See func_convert_path_msys_to_w32:
- func_stripname : : "$1"
- func_to_host_path_tmp1=$func_stripname_result
- func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
- func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
- func_convert_path_check : ";" \
- "$func_to_host_path_tmp1" "$func_to_host_path_result"
- func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
- fi
-}
-# end func_convert_path_nix_to_w32
-
-
-# func_convert_path_msys_to_cygwin ARG
-# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
-# Returns result in func_to_host_file_result.
-func_convert_path_msys_to_cygwin ()
-{
- $opt_debug
- func_to_host_path_result="$1"
- if test -n "$1"; then
- # See func_convert_path_msys_to_w32:
- func_stripname : : "$1"
- func_to_host_path_tmp1=$func_stripname_result
- func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
- func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
- func_convert_path_check : : \
- "$func_to_host_path_tmp1" "$func_to_host_path_result"
- func_convert_path_front_back_pathsep ":*" "*:" : "$1"
- fi
-}
-# end func_convert_path_msys_to_cygwin
-
-
-# func_convert_path_nix_to_cygwin ARG
-# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
-# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
-# func_to_host_file_result.
-func_convert_path_nix_to_cygwin ()
-{
- $opt_debug
- func_to_host_path_result="$1"
- if test -n "$1"; then
- # Remove leading and trailing path separator characters from
- # ARG. msys behavior is inconsistent here, cygpath turns them
- # into '.;' and ';.', and winepath ignores them completely.
- func_stripname : : "$1"
- func_to_host_path_tmp1=$func_stripname_result
- func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
- func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
- func_to_host_path_result="$func_cygpath_result"
- func_convert_path_check : : \
- "$func_to_host_path_tmp1" "$func_to_host_path_result"
- func_convert_path_front_back_pathsep ":*" "*:" : "$1"
- fi
-}
-# end func_convert_path_nix_to_cygwin
-
-
-# func_mode_compile arg...
-func_mode_compile ()
-{
- $opt_debug
- # Get the compilation command and the source file.
- base_compile=
- srcfile="$nonopt" # always keep a non-empty value in "srcfile"
- suppress_opt=yes
- suppress_output=
- arg_mode=normal
- libobj=
- later=
- pie_flag=
-
- for arg
- do
- case $arg_mode in
- arg )
- # do not "continue". Instead, add this to base_compile
- lastarg="$arg"
- arg_mode=normal
- ;;
-
- target )
- libobj="$arg"
- arg_mode=normal
- continue
- ;;
-
- normal )
- # Accept any command-line options.
- case $arg in
- -o)
- test -n "$libobj" && \
- func_fatal_error "you cannot specify \`-o' more than once"
- arg_mode=target
- continue
- ;;
-
- -pie | -fpie | -fPIE)
- func_append pie_flag " $arg"
- continue
- ;;
-
- -shared | -static | -prefer-pic | -prefer-non-pic)
- func_append later " $arg"
- continue
- ;;
-
- -no-suppress)
- suppress_opt=no
- continue
- ;;
-
- -Xcompiler)
- arg_mode=arg # the next one goes into the "base_compile" arg list
- continue # The current "srcfile" will either be retained or
- ;; # replaced later. I would guess that would be a bug.
-
- -Wc,*)
- func_stripname '-Wc,' '' "$arg"
- args=$func_stripname_result
- lastarg=
- save_ifs="$IFS"; IFS=','
- for arg in $args; do
- IFS="$save_ifs"
- func_append_quoted lastarg "$arg"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$lastarg"
- lastarg=$func_stripname_result
-
- # Add the arguments to base_compile.
- func_append base_compile " $lastarg"
- continue
- ;;
-
- *)
- # Accept the current argument as the source file.
- # The previous "srcfile" becomes the current argument.
- #
- lastarg="$srcfile"
- srcfile="$arg"
- ;;
- esac # case $arg
- ;;
- esac # case $arg_mode
-
- # Aesthetically quote the previous argument.
- func_append_quoted base_compile "$lastarg"
- done # for arg
-
- case $arg_mode in
- arg)
- func_fatal_error "you must specify an argument for -Xcompile"
- ;;
- target)
- func_fatal_error "you must specify a target with \`-o'"
- ;;
- *)
- # Get the name of the library object.
- test -z "$libobj" && {
- func_basename "$srcfile"
- libobj="$func_basename_result"
- }
- ;;
- esac
-
- # Recognize several different file suffixes.
- # If the user specifies -o file.o, it is replaced with file.lo
- case $libobj in
- *.[cCFSifmso] | \
- *.ada | *.adb | *.ads | *.asm | \
- *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
- *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
- func_xform "$libobj"
- libobj=$func_xform_result
- ;;
- esac
-
- case $libobj in
- *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
- *)
- func_fatal_error "cannot determine name of library object from \`$libobj'"
- ;;
- esac
-
- func_infer_tag $base_compile
-
- for arg in $later; do
- case $arg in
- -shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
- build_old_libs=no
- continue
- ;;
-
- -static)
- build_libtool_libs=no
- build_old_libs=yes
- continue
- ;;
-
- -prefer-pic)
- pic_mode=yes
- continue
- ;;
-
- -prefer-non-pic)
- pic_mode=no
- continue
- ;;
- esac
- done
-
- func_quote_for_eval "$libobj"
- test "X$libobj" != "X$func_quote_for_eval_result" \
- && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
- && func_warning "libobj name \`$libobj' may not contain shell special characters."
- func_dirname_and_basename "$obj" "/" ""
- objname="$func_basename_result"
- xdir="$func_dirname_result"
- lobj=${xdir}$objdir/$objname
-
- test -z "$base_compile" && \
- func_fatal_help "you must specify a compilation command"
-
- # Delete any leftover library objects.
- if test "$build_old_libs" = yes; then
- removelist="$obj $lobj $libobj ${libobj}T"
- else
- removelist="$lobj $libobj ${libobj}T"
- fi
-
- # On Cygwin there's no "real" PIC flag so we must build both object types
- case $host_os in
- cygwin* | mingw* | pw32* | os2* | cegcc*)
- pic_mode=default
- ;;
- esac
- if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
- # non-PIC code in shared libraries is not supported
- pic_mode=default
- fi
-
- # Calculate the filename of the output object if compiler does
- # not support -o with -c
- if test "$compiler_c_o" = no; then
- output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
- lockfile="$output_obj.lock"
- else
- output_obj=
- need_locks=no
- lockfile=
- fi
-
- # Lock this critical section if it is needed
- # We use this script file to make the link, it avoids creating a new file
- if test "$need_locks" = yes; then
- until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
- func_echo "Waiting for $lockfile to be removed"
- sleep 2
- done
- elif test "$need_locks" = warn; then
- if test -f "$lockfile"; then
- $ECHO "\
-*** ERROR, $lockfile exists and contains:
-`cat $lockfile 2>/dev/null`
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
- func_append removelist " $output_obj"
- $ECHO "$srcfile" > "$lockfile"
- fi
-
- $opt_dry_run || $RM $removelist
- func_append removelist " $lockfile"
- trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
-
- func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
- srcfile=$func_to_tool_file_result
- func_quote_for_eval "$srcfile"
- qsrcfile=$func_quote_for_eval_result
-
- # Only build a PIC object if we are building libtool libraries.
- if test "$build_libtool_libs" = yes; then
- # Without this assignment, base_compile gets emptied.
- fbsd_hideous_sh_bug=$base_compile
-
- if test "$pic_mode" != no; then
- command="$base_compile $qsrcfile $pic_flag"
- else
- # Don't build PIC code
- command="$base_compile $qsrcfile"
- fi
-
- func_mkdir_p "$xdir$objdir"
-
- if test -z "$output_obj"; then
- # Place PIC objects in $objdir
- func_append command " -o $lobj"
- fi
-
- func_show_eval_locale "$command" \
- 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
-
- if test "$need_locks" = warn &&
- test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
-
- # Just move the object if needed, then go on to compile the next one
- if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
- func_show_eval '$MV "$output_obj" "$lobj"' \
- 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
- fi
-
- # Allow error messages only from the first compilation.
- if test "$suppress_opt" = yes; then
- suppress_output=' >/dev/null 2>&1'
- fi
- fi
-
- # Only build a position-dependent object if we build old libraries.
- if test "$build_old_libs" = yes; then
- if test "$pic_mode" != yes; then
- # Don't build PIC code
- command="$base_compile $qsrcfile$pie_flag"
- else
- command="$base_compile $qsrcfile $pic_flag"
- fi
- if test "$compiler_c_o" = yes; then
- func_append command " -o $obj"
- fi
-
- # Suppress compiler output if we already did a PIC compilation.
- func_append command "$suppress_output"
- func_show_eval_locale "$command" \
- '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
-
- if test "$need_locks" = warn &&
- test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
- $ECHO "\
-*** ERROR, $lockfile contains:
-`cat $lockfile 2>/dev/null`
-
-but it should contain:
-$srcfile
-
-This indicates that another process is trying to use the same
-temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together. If you
-repeat this compilation, it may succeed, by chance, but you had better
-avoid parallel builds (make -j) in this platform, or get a better
-compiler."
-
- $opt_dry_run || $RM $removelist
- exit $EXIT_FAILURE
- fi
-
- # Just move the object if needed
- if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
- func_show_eval '$MV "$output_obj" "$obj"' \
- 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
- fi
- fi
-
- $opt_dry_run || {
- func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
-
- # Unlock the critical section if it was locked
- if test "$need_locks" != no; then
- removelist=$lockfile
- $RM "$lockfile"
- fi
- }
-
- exit $EXIT_SUCCESS
-}
-
-$opt_help || {
- test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
-}
-
-func_mode_help ()
-{
- # We need to display help for each of the modes.
- case $opt_mode in
- "")
- # Generic help is extracted from the usage comments
- # at the start of this file.
- func_help
- ;;
-
- clean)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
- ;;
-
- compile)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
- -o OUTPUT-FILE set the output file name to OUTPUT-FILE
- -no-suppress do not suppress compiler output for multiple passes
- -prefer-pic try to build PIC objects only
- -prefer-non-pic try to build non-PIC objects only
- -shared do not build a \`.o' file suitable for static linking
- -static only build a \`.o' file suitable for static linking
- -Wc,FLAG pass FLAG directly to the compiler
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
- ;;
-
- execute)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
- -dlopen FILE add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
- ;;
-
- finish)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges. Use
-the \`--dry-run' option if you just want to see what would be executed."
- ;;
-
- install)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command. The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
- -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
- ;;
-
- link)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
- -all-static do not do any dynamic linking at all
- -avoid-version do not add a version suffix if possible
- -bindir BINDIR specify path to binaries directory (for systems where
- libraries must be found in the PATH setting at runtime)
- -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
- -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
- -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
- -export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
- -export-symbols-regex REGEX
- try to export only the symbols matching REGEX
- -LLIBDIR search LIBDIR for required installed libraries
- -lNAME OUTPUT-FILE requires the installed library libNAME
- -module build a library that can dlopened
- -no-fast-install disable the fast-install mode
- -no-install link a not-installable executable
- -no-undefined declare that a library does not refer to external symbols
- -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
- -objectlist FILE Use a list of object files found in FILE to specify objects
- -precious-files-regex REGEX
- don't remove output files matching REGEX
- -release RELEASE specify package release information
- -rpath LIBDIR the created library will eventually be installed in LIBDIR
- -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -shared only do dynamic linking of libtool libraries
- -shrext SUFFIX override the standard shared library file extension
- -static do not do any dynamic linking of uninstalled libtool libraries
- -static-libtool-libs
- do not do any dynamic linking of libtool libraries
- -version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
- -weak LIBNAME declare that the target provides the LIBNAME interface
- -Wc,FLAG
- -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
- -Wl,FLAG
- -Xlinker FLAG pass linker-specific FLAG directly to the linker
- -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename. Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
- ;;
-
- uninstall)
- $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
- ;;
-
- *)
- func_fatal_help "invalid operation mode \`$opt_mode'"
- ;;
- esac
-
- echo
- $ECHO "Try \`$progname --help' for more information about other modes."
-}
-
-# Now that we've collected a possible --mode arg, show help if necessary
-if $opt_help; then
- if test "$opt_help" = :; then
- func_mode_help
- else
- {
- func_help noexit
- for opt_mode in compile link execute install finish uninstall clean; do
- func_mode_help
- done
- } | sed -n '1p; 2,$s/^Usage:/ or: /p'
- {
- func_help noexit
- for opt_mode in compile link execute install finish uninstall clean; do
- echo
- func_mode_help
- done
- } |
- sed '1d
- /^When reporting/,/^Report/{
- H
- d
- }
- $x
- /information about other modes/d
- /more detailed .*MODE/d
- s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
- fi
- exit $?
-fi
-
-
-# func_mode_execute arg...
-func_mode_execute ()
-{
- $opt_debug
- # The first argument is the command name.
- cmd="$nonopt"
- test -z "$cmd" && \
- func_fatal_help "you must specify a COMMAND"
-
- # Handle -dlopen flags immediately.
- for file in $opt_dlopen; do
- test -f "$file" \
- || func_fatal_help "\`$file' is not a file"
-
- dir=
- case $file in
- *.la)
- func_resolve_sysroot "$file"
- file=$func_resolve_sysroot_result
-
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$lib' is not a valid libtool archive"
-
- # Read the libtool library.
- dlname=
- library_names=
- func_source "$file"
-
- # Skip this library if it cannot be dlopened.
- if test -z "$dlname"; then
- # Warn if it was a shared library.
- test -n "$library_names" && \
- func_warning "\`$file' was not linked with \`-export-dynamic'"
- continue
- fi
-
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
-
- if test -f "$dir/$objdir/$dlname"; then
- func_append dir "/$objdir"
- else
- if test ! -f "$dir/$dlname"; then
- func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
- fi
- fi
- ;;
-
- *.lo)
- # Just add the directory containing the .lo file.
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
- ;;
-
- *)
- func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
- continue
- ;;
- esac
-
- # Get the absolute pathname.
- absdir=`cd "$dir" && pwd`
- test -n "$absdir" && dir="$absdir"
-
- # Now add the directory to shlibpath_var.
- if eval "test -z \"\$$shlibpath_var\""; then
- eval "$shlibpath_var=\"\$dir\""
- else
- eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
- fi
- done
-
- # This variable tells wrapper scripts just to set shlibpath_var
- # rather than running their programs.
- libtool_execute_magic="$magic"
-
- # Check if any of the arguments is a wrapper script.
- args=
- for file
- do
- case $file in
- -* | *.la | *.lo ) ;;
- *)
- # Do a test to see if this is really a libtool program.
- if func_ltwrapper_script_p "$file"; then
- func_source "$file"
- # Transform arg to wrapped name.
- file="$progdir/$program"
- elif func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- func_source "$func_ltwrapper_scriptname_result"
- # Transform arg to wrapped name.
- file="$progdir/$program"
- fi
- ;;
- esac
- # Quote arguments (to preserve shell metacharacters).
- func_append_quoted args "$file"
- done
-
- if test "X$opt_dry_run" = Xfalse; then
- if test -n "$shlibpath_var"; then
- # Export the shlibpath_var.
- eval "export $shlibpath_var"
- fi
-
- # Restore saved environment variables
- for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
- do
- eval "if test \"\${save_$lt_var+set}\" = set; then
- $lt_var=\$save_$lt_var; export $lt_var
- else
- $lt_unset $lt_var
- fi"
- done
-
- # Now prepare to actually exec the command.
- exec_cmd="\$cmd$args"
- else
- # Display what would be done.
- if test -n "$shlibpath_var"; then
- eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
- echo "export $shlibpath_var"
- fi
- $ECHO "$cmd$args"
- exit $EXIT_SUCCESS
- fi
-}
-
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
-
-
-# func_mode_finish arg...
-func_mode_finish ()
-{
- $opt_debug
- libs=
- libdirs=
- admincmds=
-
- for opt in "$nonopt" ${1+"$@"}
- do
- if test -d "$opt"; then
- func_append libdirs " $opt"
-
- elif test -f "$opt"; then
- if func_lalib_unsafe_p "$opt"; then
- func_append libs " $opt"
- else
- func_warning "\`$opt' is not a valid libtool archive"
- fi
-
- else
- func_fatal_error "invalid argument \`$opt'"
- fi
- done
-
- if test -n "$libs"; then
- if test -n "$lt_sysroot"; then
- sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
- sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
- else
- sysroot_cmd=
- fi
-
- # Remove sysroot references
- if $opt_dry_run; then
- for lib in $libs; do
- echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
- done
- else
- tmpdir=`func_mktempdir`
- for lib in $libs; do
- sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
- > $tmpdir/tmp-la
- mv -f $tmpdir/tmp-la $lib
- done
- ${RM}r "$tmpdir"
- fi
- fi
-
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- for libdir in $libdirs; do
- if test -n "$finish_cmds"; then
- # Do each command in the finish commands.
- func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
-'"$cmd"'"'
- fi
- if test -n "$finish_eval"; then
- # Do the single finish_eval.
- eval cmds=\"$finish_eval\"
- $opt_dry_run || eval "$cmds" || func_append admincmds "
- $cmds"
- fi
- done
- fi
-
- # Exit here if they wanted silent mode.
- $opt_silent && exit $EXIT_SUCCESS
-
- if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
- echo "----------------------------------------------------------------------"
- echo "Libraries have been installed in:"
- for libdir in $libdirs; do
- $ECHO " $libdir"
- done
- echo
- echo "If you ever happen to want to link against installed libraries"
- echo "in a given directory, LIBDIR, you must either use libtool, and"
- echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
- echo "flag during linking and do at least one of the following:"
- if test -n "$shlibpath_var"; then
- echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
- echo " during execution"
- fi
- if test -n "$runpath_var"; then
- echo " - add LIBDIR to the \`$runpath_var' environment variable"
- echo " during linking"
- fi
- if test -n "$hardcode_libdir_flag_spec"; then
- libdir=LIBDIR
- eval flag=\"$hardcode_libdir_flag_spec\"
-
- $ECHO " - use the \`$flag' linker flag"
- fi
- if test -n "$admincmds"; then
- $ECHO " - have your system administrator run these commands:$admincmds"
- fi
- if test -f /etc/ld.so.conf; then
- echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
- fi
- echo
-
- echo "See any operating system documentation about shared libraries for"
- case $host in
- solaris2.[6789]|solaris2.1[0-9])
- echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
- echo "pages."
- ;;
- *)
- echo "more information, such as the ld(1) and ld.so(8) manual pages."
- ;;
- esac
- echo "----------------------------------------------------------------------"
- fi
- exit $EXIT_SUCCESS
-}
-
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
-
-
-# func_mode_install arg...
-func_mode_install ()
-{
- $opt_debug
- # There may be an optional sh(1) argument at the beginning of
- # install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
- # Allow the use of GNU shtool's install command.
- case $nonopt in *shtool*) :;; *) false;; esac; then
- # Aesthetically quote it.
- func_quote_for_eval "$nonopt"
- install_prog="$func_quote_for_eval_result "
- arg=$1
- shift
- else
- install_prog=
- arg=$nonopt
- fi
-
- # The real first argument should be the name of the installation program.
- # Aesthetically quote it.
- func_quote_for_eval "$arg"
- func_append install_prog "$func_quote_for_eval_result"
- install_shared_prog=$install_prog
- case " $install_prog " in
- *[\\\ /]cp\ *) install_cp=: ;;
- *) install_cp=false ;;
- esac
-
- # We need to accept at least all the BSD install flags.
- dest=
- files=
- opts=
- prev=
- install_type=
- isdir=no
- stripme=
- no_mode=:
- for arg
- do
- arg2=
- if test -n "$dest"; then
- func_append files " $dest"
- dest=$arg
- continue
- fi
-
- case $arg in
- -d) isdir=yes ;;
- -f)
- if $install_cp; then :; else
- prev=$arg
- fi
- ;;
- -g | -m | -o)
- prev=$arg
- ;;
- -s)
- stripme=" -s"
- continue
- ;;
- -*)
- ;;
- *)
- # If the previous option needed an argument, then skip it.
- if test -n "$prev"; then
- if test "x$prev" = x-m && test -n "$install_override_mode"; then
- arg2=$install_override_mode
- no_mode=false
- fi
- prev=
- else
- dest=$arg
- continue
- fi
- ;;
- esac
-
- # Aesthetically quote the argument.
- func_quote_for_eval "$arg"
- func_append install_prog " $func_quote_for_eval_result"
- if test -n "$arg2"; then
- func_quote_for_eval "$arg2"
- fi
- func_append install_shared_prog " $func_quote_for_eval_result"
- done
-
- test -z "$install_prog" && \
- func_fatal_help "you must specify an install program"
-
- test -n "$prev" && \
- func_fatal_help "the \`$prev' option requires an argument"
-
- if test -n "$install_override_mode" && $no_mode; then
- if $install_cp; then :; else
- func_quote_for_eval "$install_override_mode"
- func_append install_shared_prog " -m $func_quote_for_eval_result"
- fi
- fi
-
- if test -z "$files"; then
- if test -z "$dest"; then
- func_fatal_help "no file or destination specified"
- else
- func_fatal_help "you must specify a destination"
- fi
- fi
-
- # Strip any trailing slash from the destination.
- func_stripname '' '/' "$dest"
- dest=$func_stripname_result
-
- # Check to see that the destination is a directory.
- test -d "$dest" && isdir=yes
- if test "$isdir" = yes; then
- destdir="$dest"
- destname=
- else
- func_dirname_and_basename "$dest" "" "."
- destdir="$func_dirname_result"
- destname="$func_basename_result"
-
- # Not a directory, so check to see that there is only one file specified.
- set dummy $files; shift
- test "$#" -gt 1 && \
- func_fatal_help "\`$dest' is not a directory"
- fi
- case $destdir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- for file in $files; do
- case $file in
- *.lo) ;;
- *)
- func_fatal_help "\`$destdir' must be an absolute directory name"
- ;;
- esac
- done
- ;;
- esac
-
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
-
- staticlibs=
- future_libdirs=
- current_libdirs=
- for file in $files; do
-
- # Do each installation.
- case $file in
- *.$libext)
- # Do the static libraries later.
- func_append staticlibs " $file"
- ;;
-
- *.la)
- func_resolve_sysroot "$file"
- file=$func_resolve_sysroot_result
-
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$file" \
- || func_fatal_help "\`$file' is not a valid libtool archive"
-
- library_names=
- old_library=
- relink_command=
- func_source "$file"
-
- # Add the libdir to current_libdirs if it is the destination.
- if test "X$destdir" = "X$libdir"; then
- case "$current_libdirs " in
- *" $libdir "*) ;;
- *) func_append current_libdirs " $libdir" ;;
- esac
- else
- # Note the libdir as a future libdir.
- case "$future_libdirs " in
- *" $libdir "*) ;;
- *) func_append future_libdirs " $libdir" ;;
- esac
- fi
-
- func_dirname "$file" "/" ""
- dir="$func_dirname_result"
- func_append dir "$objdir"
-
- if test -n "$relink_command"; then
- # Determine the prefix the user has applied to our future dir.
- inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
-
- # Don't allow the user to place us outside of our expected
- # location b/c this prevents finding dependent libraries that
- # are installed to the same prefix.
- # At present, this check doesn't affect windows .dll's that
- # are installed into $libdir/../bin (currently, that works fine)
- # but it's something to keep an eye on.
- test "$inst_prefix_dir" = "$destdir" && \
- func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
-
- if test -n "$inst_prefix_dir"; then
- # Stick the inst_prefix_dir data into the link command.
- relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
- else
- relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
- fi
-
- func_warning "relinking \`$file'"
- func_show_eval "$relink_command" \
- 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
- fi
-
- # See the names of the shared library.
- set dummy $library_names; shift
- if test -n "$1"; then
- realname="$1"
- shift
-
- srcname="$realname"
- test -n "$relink_command" && srcname="$realname"T
-
- # Install the shared library and build the symlinks.
- func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
- 'exit $?'
- tstripme="$stripme"
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- case $realname in
- *.dll.a)
- tstripme=""
- ;;
- esac
- ;;
- esac
- if test -n "$tstripme" && test -n "$striplib"; then
- func_show_eval "$striplib $destdir/$realname" 'exit $?'
- fi
-
- if test "$#" -gt 0; then
- # Delete the old symlinks, and create new ones.
- # Try `ln -sf' first, because the `ln' binary might depend on
- # the symlink we replace! Solaris /bin/ln does not understand -f,
- # so we also need to try rm && ln -s.
- for linkname
- do
- test "$linkname" != "$realname" \
- && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
- done
- fi
-
- # Do each command in the postinstall commands.
- lib="$destdir/$realname"
- func_execute_cmds "$postinstall_cmds" 'exit $?'
- fi
-
- # Install the pseudo-library for information purposes.
- func_basename "$file"
- name="$func_basename_result"
- instname="$dir/$name"i
- func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
-
- # Maybe install the static library, too.
- test -n "$old_library" && func_append staticlibs " $dir/$old_library"
- ;;
-
- *.lo)
- # Install (i.e. copy) a libtool object.
-
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
- fi
-
- # Deduce the name of the destination old-style object file.
- case $destfile in
- *.lo)
- func_lo2o "$destfile"
- staticdest=$func_lo2o_result
- ;;
- *.$objext)
- staticdest="$destfile"
- destfile=
- ;;
- *)
- func_fatal_help "cannot copy a libtool object to \`$destfile'"
- ;;
- esac
-
- # Install the libtool object if requested.
- test -n "$destfile" && \
- func_show_eval "$install_prog $file $destfile" 'exit $?'
-
- # Install the old object if enabled.
- if test "$build_old_libs" = yes; then
- # Deduce the name of the old-style object file.
- func_lo2o "$file"
- staticobj=$func_lo2o_result
- func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
- fi
- exit $EXIT_SUCCESS
- ;;
-
- *)
- # Figure out destination file name, if it wasn't already specified.
- if test -n "$destname"; then
- destfile="$destdir/$destname"
- else
- func_basename "$file"
- destfile="$func_basename_result"
- destfile="$destdir/$destfile"
- fi
-
- # If the file is missing, and there is a .exe on the end, strip it
- # because it is most likely a libtool script we actually want to
- # install
- stripped_ext=""
- case $file in
- *.exe)
- if test ! -f "$file"; then
- func_stripname '' '.exe' "$file"
- file=$func_stripname_result
- stripped_ext=".exe"
- fi
- ;;
- esac
-
- # Do a test to see if this is really a libtool program.
- case $host in
- *cygwin* | *mingw*)
- if func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- wrapper=$func_ltwrapper_scriptname_result
- else
- func_stripname '' '.exe' "$file"
- wrapper=$func_stripname_result
- fi
- ;;
- *)
- wrapper=$file
- ;;
- esac
- if func_ltwrapper_script_p "$wrapper"; then
- notinst_deplibs=
- relink_command=
-
- func_source "$wrapper"
-
- # Check the variables that should have been set.
- test -z "$generated_by_libtool_version" && \
- func_fatal_error "invalid libtool wrapper script \`$wrapper'"
-
- finalize=yes
- for lib in $notinst_deplibs; do
- # Check to see that each library is installed.
- libdir=
- if test -f "$lib"; then
- func_source "$lib"
- fi
- libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
- if test -n "$libdir" && test ! -f "$libfile"; then
- func_warning "\`$lib' has not been installed in \`$libdir'"
- finalize=no
- fi
- done
-
- relink_command=
- func_source "$wrapper"
-
- outputname=
- if test "$fast_install" = no && test -n "$relink_command"; then
- $opt_dry_run || {
- if test "$finalize" = yes; then
- tmpdir=`func_mktempdir`
- func_basename "$file$stripped_ext"
- file="$func_basename_result"
- outputname="$tmpdir/$file"
- # Replace the output file specification.
- relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
-
- $opt_silent || {
- func_quote_for_expand "$relink_command"
- eval "func_echo $func_quote_for_expand_result"
- }
- if eval "$relink_command"; then :
- else
- func_error "error: relink \`$file' with the above command before installing it"
- $opt_dry_run || ${RM}r "$tmpdir"
- continue
- fi
- file="$outputname"
- else
- func_warning "cannot relink \`$file'"
- fi
- }
- else
- # Install the binary that we compiled earlier.
- file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
- fi
- fi
-
- # remove .exe since cygwin /usr/bin/install will append another
- # one anyway
- case $install_prog,$host in
- */usr/bin/install*,*cygwin*)
- case $file:$destfile in
- *.exe:*.exe)
- # this is ok
- ;;
- *.exe:*)
- destfile=$destfile.exe
- ;;
- *:*.exe)
- func_stripname '' '.exe' "$destfile"
- destfile=$func_stripname_result
- ;;
- esac
- ;;
- esac
- func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
- $opt_dry_run || if test -n "$outputname"; then
- ${RM}r "$tmpdir"
- fi
- ;;
- esac
- done
-
- for file in $staticlibs; do
- func_basename "$file"
- name="$func_basename_result"
-
- # Set up the ranlib parameters.
- oldlib="$destdir/$name"
- func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
- tool_oldlib=$func_to_tool_file_result
-
- func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
-
- if test -n "$stripme" && test -n "$old_striplib"; then
- func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
- fi
-
- # Do each command in the postinstall commands.
- func_execute_cmds "$old_postinstall_cmds" 'exit $?'
- done
-
- test -n "$future_libdirs" && \
- func_warning "remember to run \`$progname --finish$future_libdirs'"
-
- if test -n "$current_libdirs"; then
- # Maybe just do a dry run.
- $opt_dry_run && current_libdirs=" -n$current_libdirs"
- exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
- else
- exit $EXIT_SUCCESS
- fi
-}
-
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
-
-
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
-{
- $opt_debug
- my_outputname="$1"
- my_originator="$2"
- my_pic_p="${3-no}"
- my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
- my_dlsyms=
-
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- if test -n "$NM" && test -n "$global_symbol_pipe"; then
- my_dlsyms="${my_outputname}S.c"
- else
- func_error "not configured to extract global symbols from dlpreopened files"
- fi
- fi
-
- if test -n "$my_dlsyms"; then
- case $my_dlsyms in
- "") ;;
- *.c)
- # Discover the nlist of each of the dlfiles.
- nlist="$output_objdir/${my_outputname}.nm"
-
- func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
-
- # Parse the name list into a source file.
- func_verbose "creating $output_objdir/$my_dlsyms"
-
- $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
-#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
-#endif
-
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
- relocations are performed -- see ld's documentation on pseudo-relocs. */
-# define LT_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data. */
-# define LT_DLSYM_CONST
-#else
-# define LT_DLSYM_CONST const
-#endif
-
-/* External symbol declarations for the compiler. */\
-"
-
- if test "$dlself" = yes; then
- func_verbose "generating symbol list for \`$output'"
-
- $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
-
- # Add our own program objects to the symbol list.
- progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
- for progfile in $progfiles; do
- func_to_tool_file "$progfile" func_convert_file_msys_to_w32
- func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
- $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
- done
-
- if test -n "$exclude_expsyms"; then
- $opt_dry_run || {
- eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
- if test -n "$export_symbols_regex"; then
- $opt_dry_run || {
- eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- }
- fi
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- export_symbols="$output_objdir/$outputname.exp"
- $opt_dry_run || {
- $RM $export_symbols
- eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
- eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
- else
- $opt_dry_run || {
- eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
- eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
- eval '$MV "$nlist"T "$nlist"'
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
- eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
- ;;
- esac
- }
- fi
- fi
-
- for dlprefile in $dlprefiles; do
- func_verbose "extracting global C symbols from \`$dlprefile'"
- func_basename "$dlprefile"
- name="$func_basename_result"
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- # if an import library, we need to obtain dlname
- if func_win32_import_lib_p "$dlprefile"; then
- func_tr_sh "$dlprefile"
- eval "curr_lafile=\$libfile_$func_tr_sh_result"
- dlprefile_dlbasename=""
- if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
- # Use subshell, to avoid clobbering current variable values
- dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
- if test -n "$dlprefile_dlname" ; then
- func_basename "$dlprefile_dlname"
- dlprefile_dlbasename="$func_basename_result"
- else
- # no lafile. user explicitly requested -dlpreopen <import library>.
- $sharedlib_from_linklib_cmd "$dlprefile"
- dlprefile_dlbasename=$sharedlib_from_linklib_result
- fi
- fi
- $opt_dry_run || {
- if test -n "$dlprefile_dlbasename" ; then
- eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
- else
- func_warning "Could not compute DLL name from $name"
- eval '$ECHO ": $name " >> "$nlist"'
- fi
- func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
- eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
- $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
- }
- else # not an import lib
- $opt_dry_run || {
- eval '$ECHO ": $name " >> "$nlist"'
- func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
- eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
- }
- fi
- ;;
- *)
- $opt_dry_run || {
- eval '$ECHO ": $name " >> "$nlist"'
- func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
- eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
- }
- ;;
- esac
- done
-
- $opt_dry_run || {
- # Make sure we have at least an empty file.
- test -f "$nlist" || : > "$nlist"
-
- if test -n "$exclude_expsyms"; then
- $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
- $MV "$nlist"T "$nlist"
- fi
-
- # Try sorting and uniquifying the output.
- if $GREP -v "^: " < "$nlist" |
- if sort -k 3 </dev/null >/dev/null 2>&1; then
- sort -k 3
- else
- sort +2
- fi |
- uniq > "$nlist"S; then
- :
- else
- $GREP -v "^: " < "$nlist" > "$nlist"S
- fi
-
- if test -f "$nlist"S; then
- eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
- else
- echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
- fi
-
- echo >> "$output_objdir/$my_dlsyms" "\
-
-/* The mapping between symbol names and symbols. */
-typedef struct {
- const char *name;
- void *address;
-} lt_dlsymlist;
-extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
-LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
- { \"$my_originator\", (void *) 0 },"
-
- case $need_lib_prefix in
- no)
- eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
- ;;
- *)
- eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
- ;;
- esac
- echo >> "$output_objdir/$my_dlsyms" "\
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt_${my_prefix}_LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
- } # !$opt_dry_run
-
- pic_flag_for_symtable=
- case "$compile_command " in
- *" -static "*) ;;
- *)
- case $host in
- # compiling the symbol table file with pic_flag works around
- # a FreeBSD bug that causes programs to crash when -lm is
- # linked before any other PIC object. But we must not use
- # pic_flag when linking with -static. The problem exists in
- # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
- pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
- *-*-hpux*)
- pic_flag_for_symtable=" $pic_flag" ;;
- *)
- if test "X$my_pic_p" != Xno; then
- pic_flag_for_symtable=" $pic_flag"
- fi
- ;;
- esac
- ;;
- esac
- symtab_cflags=
- for arg in $LTCFLAGS; do
- case $arg in
- -pie | -fpie | -fPIE) ;;
- *) func_append symtab_cflags " $arg" ;;
- esac
- done
-
- # Now compile the dynamic symbol file.
- func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
-
- # Clean up the generated files.
- func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
-
- # Transform the symbol file into the correct name.
- symfileobj="$output_objdir/${my_outputname}S.$objext"
- case $host in
- *cygwin* | *mingw* | *cegcc* )
- if test -f "$output_objdir/$my_outputname.def"; then
- compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
- finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
- else
- compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- fi
- ;;
- *)
- compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
- ;;
- esac
- ;;
- *)
- func_fatal_error "unknown suffix for \`$my_dlsyms'"
- ;;
- esac
- else
- # We keep going just in case the user didn't refer to
- # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
- # really was required.
-
- # Nullify the symbol file.
- compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
- finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
- fi
-}
-
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-# Despite the name, also deal with 64 bit binaries.
-func_win32_libid ()
-{
- $opt_debug
- win32_libid_type="unknown"
- win32_fileres=`file -L $1 2>/dev/null`
- case $win32_fileres in
- *ar\ archive\ import\ library*) # definitely import
- win32_libid_type="x86 archive import"
- ;;
- *ar\ archive*) # could be an import, or static
- # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
- if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
- $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
- $SED -n -e '
- 1,100{
- / I /{
- s,.*,import,
- p
- q
- }
- }'`
- case $win32_nmres in
- import*) win32_libid_type="x86 archive import";;
- *) win32_libid_type="x86 archive static";;
- esac
- fi
- ;;
- *DLL*)
- win32_libid_type="x86 DLL"
- ;;
- *executable*) # but shell scripts are "executable" too...
- case $win32_fileres in
- *MS\ Windows\ PE\ Intel*)
- win32_libid_type="x86 DLL"
- ;;
- esac
- ;;
- esac
- $ECHO "$win32_libid_type"
-}
-
-# func_cygming_dll_for_implib ARG
-#
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-# Invoked by eval'ing the libtool variable
-# $sharedlib_from_linklib_cmd
-# Result is available in the variable
-# $sharedlib_from_linklib_result
-func_cygming_dll_for_implib ()
-{
- $opt_debug
- sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
-}
-
-# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
-#
-# The is the core of a fallback implementation of a
-# platform-specific function to extract the name of the
-# DLL associated with the specified import library LIBNAME.
-#
-# SECTION_NAME is either .idata$6 or .idata$7, depending
-# on the platform and compiler that created the implib.
-#
-# Echos the name of the DLL associated with the
-# specified import library.
-func_cygming_dll_for_implib_fallback_core ()
-{
- $opt_debug
- match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
- $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
- $SED '/^Contents of section '"$match_literal"':/{
- # Place marker at beginning of archive member dllname section
- s/.*/====MARK====/
- p
- d
- }
- # These lines can sometimes be longer than 43 characters, but
- # are always uninteresting
- /:[ ]*file format pe[i]\{,1\}-/d
- /^In archive [^:]*:/d
- # Ensure marker is printed
- /^====MARK====/p
- # Remove all lines with less than 43 characters
- /^.\{43\}/!d
- # From remaining lines, remove first 43 characters
- s/^.\{43\}//' |
- $SED -n '
- # Join marker and all lines until next marker into a single line
- /^====MARK====/ b para
- H
- $ b para
- b
- :para
- x
- s/\n//g
- # Remove the marker
- s/^====MARK====//
- # Remove trailing dots and whitespace
- s/[\. \t]*$//
- # Print
- /./p' |
- # we now have a list, one entry per line, of the stringified
- # contents of the appropriate section of all members of the
- # archive which possess that section. Heuristic: eliminate
- # all those which have a first or second character that is
- # a '.' (that is, objdump's representation of an unprintable
- # character.) This should work for all archives with less than
- # 0x302f exports -- but will fail for DLLs whose name actually
- # begins with a literal '.' or a single character followed by
- # a '.'.
- #
- # Of those that remain, print the first one.
- $SED -e '/^\./d;/^.\./d;q'
-}
-
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
- test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
- $opt_debug
- func_to_tool_file "$1" func_convert_file_msys_to_w32
- func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
- test -n "$func_cygming_ms_implib_tmp"
-}
-
-# func_cygming_dll_for_implib_fallback ARG
-# Platform-specific function to extract the
-# name of the DLL associated with the specified
-# import library ARG.
-#
-# This fallback implementation is for use when $DLLTOOL
-# does not support the --identify-strict option.
-# Invoked by eval'ing the libtool variable
-# $sharedlib_from_linklib_cmd
-# Result is available in the variable
-# $sharedlib_from_linklib_result
-func_cygming_dll_for_implib_fallback ()
-{
- $opt_debug
- if func_cygming_gnu_implib_p "$1" ; then
- # binutils import library
- sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
- elif func_cygming_ms_implib_p "$1" ; then
- # ms-generated import library
- sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
- else
- # unknown
- sharedlib_from_linklib_result=""
- fi
-}
-
-
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
-{
- $opt_debug
- f_ex_an_ar_dir="$1"; shift
- f_ex_an_ar_oldlib="$1"
- if test "$lock_old_archive_extraction" = yes; then
- lockfile=$f_ex_an_ar_oldlib.lock
- until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
- func_echo "Waiting for $lockfile to be removed"
- sleep 2
- done
- fi
- func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
- 'stat=$?; rm -f "$lockfile"; exit $stat'
- if test "$lock_old_archive_extraction" = yes; then
- $opt_dry_run || rm -f "$lockfile"
- fi
- if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
- :
- else
- func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
- fi
-}
-
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
- $opt_debug
- my_gentop="$1"; shift
- my_oldlibs=${1+"$@"}
- my_oldobjs=""
- my_xlib=""
- my_xabs=""
- my_xdir=""
-
- for my_xlib in $my_oldlibs; do
- # Extract the objects.
- case $my_xlib in
- [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
- *) my_xabs=`pwd`"/$my_xlib" ;;
- esac
- func_basename "$my_xlib"
- my_xlib="$func_basename_result"
- my_xlib_u=$my_xlib
- while :; do
- case " $extracted_archives " in
- *" $my_xlib_u "*)
- func_arith $extracted_serial + 1
- extracted_serial=$func_arith_result
- my_xlib_u=lt$extracted_serial-$my_xlib ;;
- *) break ;;
- esac
- done
- extracted_archives="$extracted_archives $my_xlib_u"
- my_xdir="$my_gentop/$my_xlib_u"
-
- func_mkdir_p "$my_xdir"
-
- case $host in
- *-darwin*)
- func_verbose "Extracting $my_xabs"
- # Do not bother doing anything if just a dry run
- $opt_dry_run || {
- darwin_orig_dir=`pwd`
- cd $my_xdir || exit $?
- darwin_archive=$my_xabs
- darwin_curdir=`pwd`
- darwin_base_archive=`basename "$darwin_archive"`
- darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
- if test -n "$darwin_arches"; then
- darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
- darwin_arch=
- func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
- for darwin_arch in $darwin_arches ; do
- func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
- cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
- func_extract_an_archive "`pwd`" "${darwin_base_archive}"
- cd "$darwin_curdir"
- $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
- done # $darwin_arches
- ## Okay now we've a bunch of thin objects, gotta fatten them up :)
- darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
- darwin_file=
- darwin_files=
- for darwin_file in $darwin_filelist; do
- darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
- $LIPO -create -output "$darwin_file" $darwin_files
- done # $darwin_filelist
- $RM -rf unfat-$$
- cd "$darwin_orig_dir"
- else
- cd $darwin_orig_dir
- func_extract_an_archive "$my_xdir" "$my_xabs"
- fi # $darwin_arches
- } # !$opt_dry_run
- ;;
- *)
- func_extract_an_archive "$my_xdir" "$my_xabs"
- ;;
- esac
- my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
- done
-
- func_extract_archives_result="$my_oldobjs"
-}
-
-
-# func_emit_wrapper [arg=no]
-#
-# Emit a libtool wrapper script on stdout.
-# Don't directly open a file because we may want to
-# incorporate the script contents within a cygwin/mingw
-# wrapper executable. Must ONLY be called from within
-# func_mode_link because it depends on a number of variables
-# set therein.
-#
-# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
-# variable will take. If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
-# the $objdir directory. This is a cygwin/mingw-specific
-# behavior.
-func_emit_wrapper ()
-{
- func_emit_wrapper_arg1=${1-no}
-
- $ECHO "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting. It backslashifies
-# metacharacters that are still active within double-quoted strings.
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
- emulate sh
- NULLCMD=:
- # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
- # is contrary to our usage. Disable this feature.
- alias -g '\${1+\"\$@\"}'='\"\$@\"'
- setopt NO_GLOB_SUBST
-else
- case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
- # install mode needs the following variables:
- generated_by_libtool_version='$macro_version'
- notinst_deplibs='$notinst_deplibs'
-else
- # When we are sourced in execute mode, \$file and \$ECHO are already set.
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- file=\"\$0\""
-
- qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
- $ECHO "\
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
- ECHO=\"$qECHO\"
- fi
-
-# Very basic option parsing. These options are (a) specific to
-# the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
-# windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
-# this pattern).
-#
-# There are only two supported options: --lt-debug and
-# --lt-dump-script. There is, deliberately, no --lt-help.
-#
-# The first argument to this parsing function should be the
-# script's $0 value, followed by "$@".
-lt_option_debug=
-func_parse_lt_options ()
-{
- lt_script_arg0=\$0
- shift
- for lt_opt
- do
- case \"\$lt_opt\" in
- --lt-debug) lt_option_debug=1 ;;
- --lt-dump-script)
- lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
- test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
- lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
- cat \"\$lt_dump_D/\$lt_dump_F\"
- exit 0
- ;;
- --lt-*)
- \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
- exit 1
- ;;
- esac
- done
-
- # Print the debug banner immediately:
- if test -n \"\$lt_option_debug\"; then
- echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
- fi
-}
-
-# Used when --lt-debug. Prints its arguments to stdout
-# (redirection is the responsibility of the caller)
-func_lt_dump_args ()
-{
- lt_dump_args_N=1;
- for lt_arg
- do
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
- lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
- done
-}
-
-# Core function for launching the target application
-func_exec_program_core ()
-{
-"
- case $host in
- # Backslashes separate directories on plain windows
- *-*-mingw | *-*-os2* | *-cegcc*)
- $ECHO "\
- if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
- func_lt_dump_args \${1+\"\$@\"} 1>&2
- fi
- exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
- ;;
-
- *)
- $ECHO "\
- if test -n \"\$lt_option_debug\"; then
- \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
- func_lt_dump_args \${1+\"\$@\"} 1>&2
- fi
- exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
- ;;
- esac
- $ECHO "\
- \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
- exit 1
-}
-
-# A function to encapsulate launching the target application
-# Strips options in the --lt-* namespace from \$@ and
-# launches target application with the remaining arguments.
-func_exec_program ()
-{
- case \" \$* \" in
- *\\ --lt-*)
- for lt_wr_arg
- do
- case \$lt_wr_arg in
- --lt-*) ;;
- *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
- esac
- shift
- done ;;
- esac
- func_exec_program_core \${1+\"\$@\"}
-}
-
- # Parse options
- func_parse_lt_options \"\$0\" \${1+\"\$@\"}
-
- # Find the directory that this script lives in.
- thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
- test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
- # Follow symbolic links until we get to the real thisdir.
- file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
- while test -n \"\$file\"; do
- destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
-
- # If there was a directory component, then change thisdir.
- if test \"x\$destdir\" != \"x\$file\"; then
- case \"\$destdir\" in
- [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
- *) thisdir=\"\$thisdir/\$destdir\" ;;
- esac
- fi
-
- file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
- file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
- done
-
- # Usually 'no', except on cygwin/mingw when embedded into
- # the cwrapper.
- WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
- if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
- # special case for '.'
- if test \"\$thisdir\" = \".\"; then
- thisdir=\`pwd\`
- fi
- # remove .libs from thisdir
- case \"\$thisdir\" in
- *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
- $objdir ) thisdir=. ;;
- esac
- fi
-
- # Try to get the absolute directory name.
- absdir=\`cd \"\$thisdir\" && pwd\`
- test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
- if test "$fast_install" = yes; then
- $ECHO "\
- program=lt-'$outputname'$exeext
- progdir=\"\$thisdir/$objdir\"
-
- if test ! -f \"\$progdir/\$program\" ||
- { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
- test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
- file=\"\$\$-\$program\"
-
- if test ! -d \"\$progdir\"; then
- $MKDIR \"\$progdir\"
- else
- $RM \"\$progdir/\$file\"
- fi"
-
- $ECHO "\
-
- # relink executable if necessary
- if test -n \"\$relink_command\"; then
- if relink_command_output=\`eval \$relink_command 2>&1\`; then :
- else
- $ECHO \"\$relink_command_output\" >&2
- $RM \"\$progdir/\$file\"
- exit 1
- fi
- fi
-
- $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
- { $RM \"\$progdir/\$program\";
- $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
- $RM \"\$progdir/\$file\"
- fi"
- else
- $ECHO "\
- program='$outputname'
- progdir=\"\$thisdir/$objdir\"
-"
- fi
-
- $ECHO "\
-
- if test -f \"\$progdir/\$program\"; then"
-
- # fixup the dll searchpath if we need to.
- #
- # Fix the DLL searchpath if we need to. Do this before prepending
- # to shlibpath, because on Windows, both are PATH and uninstalled
- # libraries must come first.
- if test -n "$dllsearchpath"; then
- $ECHO "\
- # Add the dll search path components to the executable PATH
- PATH=$dllsearchpath:\$PATH
-"
- fi
-
- # Export our shlibpath_var if we have one.
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- $ECHO "\
- # Add our own library path to $shlibpath_var
- $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
- # Some systems cannot cope with colon-terminated $shlibpath_var
- # The second colon is a workaround for a bug in BeOS R4 sed
- $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
-
- export $shlibpath_var
-"
- fi
-
- $ECHO "\
- if test \"\$libtool_execute_magic\" != \"$magic\"; then
- # Run the actual program with our arguments.
- func_exec_program \${1+\"\$@\"}
- fi
- else
- # The program doesn't exist.
- \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
- \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
- \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
- exit 1
- fi
-fi\
-"
-}
-
-
-# func_emit_cwrapperexe_src
-# emit the source code for a wrapper executable on stdout
-# Must ONLY be called from within func_mode_link because
-# it depends on a number of variable set therein.
-func_emit_cwrapperexe_src ()
-{
- cat <<EOF
-
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
- Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-
- The $output program cannot be directly executed until all the libtool
- libraries that it depends on are installed.
-
- This wrapper executable should never be moved out of the build directory.
- If it is, it will not operate correctly.
-*/
-EOF
- cat <<"EOF"
-#ifdef _MSC_VER
-# define _CRT_SECURE_NO_DEPRECATE 1
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef _MSC_VER
-# include <direct.h>
-# include <process.h>
-# include <io.h>
-#else
-# include <unistd.h>
-# include <stdint.h>
-# ifdef __CYGWIN__
-# include <io.h>
-# endif
-#endif
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-
-/* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
-# ifdef __STRICT_ANSI__
-int _putenv (const char *);
-# endif
-#elif defined(__CYGWIN__)
-# ifdef __STRICT_ANSI__
-char *realpath (const char *, char *);
-int putenv (char *);
-int setenv (const char *, const char *, int);
-# endif
-/* #elif defined (other platforms) ... */
-#endif
-
-/* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
-# define setmode _setmode
-# define stat _stat
-# define chmod _chmod
-# define getcwd _getcwd
-# define putenv _putenv
-# define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-# define _INTPTR_T_DEFINED
-# define intptr_t int
-# endif
-#elif defined(__MINGW32__)
-# define setmode _setmode
-# define stat _stat
-# define chmod _chmod
-# define getcwd _getcwd
-# define putenv _putenv
-#elif defined(__CYGWIN__)
-# define HAVE_SETENV
-# define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
-#endif
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef S_IXOTH
-# define S_IXOTH 0
-#endif
-#ifndef S_IXGRP
-# define S_IXGRP 0
-#endif
-
-/* path handling portability macros */
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
- defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# define FOPEN_WB "wb"
-# ifndef DIR_SEPARATOR_2
-# define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-# define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
- (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#ifndef FOPEN_WB
-# define FOPEN_WB "w"
-#endif
-#ifndef _O_BINARY
-# define _O_BINARY 0
-#endif
-
-#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
- if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-#if defined(LT_DEBUGWRAPPER)
-static int lt_debug = 1;
-#else
-static int lt_debug = 0;
-#endif
-
-const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
-
-void *xmalloc (size_t num);
-char *xstrdup (const char *string);
-const char *base_name (const char *name);
-char *find_executable (const char *wrapper);
-char *chase_symlinks (const char *pathspec);
-int make_executable (const char *path);
-int check_executable (const char *path);
-char *strendzap (char *str, const char *pat);
-void lt_debugprintf (const char *file, int line, const char *fmt, ...);
-void lt_fatal (const char *file, int line, const char *message, ...);
-static const char *nonnull (const char *s);
-static const char *nonempty (const char *s);
-void lt_setenv (const char *name, const char *value);
-char *lt_extend_str (const char *orig_value, const char *add, int to_end);
-void lt_update_exe_path (const char *name, const char *value);
-void lt_update_lib_path (const char *name, const char *value);
-char **prepare_spawn (char **argv);
-void lt_dump_script (FILE *f);
-EOF
-
- cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
-const char * LIB_PATH_VARNAME = "$shlibpath_var";
-EOF
-
- if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
- func_to_host_path "$temp_rpath"
- cat <<EOF
-const char * LIB_PATH_VALUE = "$func_to_host_path_result";
-EOF
- else
- cat <<"EOF"
-const char * LIB_PATH_VALUE = "";
-EOF
- fi
-
- if test -n "$dllsearchpath"; then
- func_to_host_path "$dllsearchpath:"
- cat <<EOF
-const char * EXE_PATH_VARNAME = "PATH";
-const char * EXE_PATH_VALUE = "$func_to_host_path_result";
-EOF
- else
- cat <<"EOF"
-const char * EXE_PATH_VARNAME = "";
-const char * EXE_PATH_VALUE = "";
-EOF
- fi
-
- if test "$fast_install" = yes; then
- cat <<EOF
-const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
-EOF
- else
- cat <<EOF
-const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
-EOF
- fi
-
-
- cat <<"EOF"
-
-#define LTWRAPPER_OPTION_PREFIX "--lt-"
-
-static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
-static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
-static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
-
-int
-main (int argc, char *argv[])
-{
- char **newargz;
- int newargc;
- char *tmp_pathspec;
- char *actual_cwrapper_path;
- char *actual_cwrapper_name;
- char *target_name;
- char *lt_argv_zero;
- intptr_t rval = 127;
-
- int i;
-
- program_name = (char *) xstrdup (base_name (argv[0]));
- newargz = XMALLOC (char *, argc + 1);
-
- /* very simple arg parsing; don't want to rely on getopt
- * also, copy all non cwrapper options to newargz, except
- * argz[0], which is handled differently
- */
- newargc=0;
- for (i = 1; i < argc; i++)
- {
- if (strcmp (argv[i], dumpscript_opt) == 0)
- {
-EOF
- case "$host" in
- *mingw* | *cygwin* )
- # make stdout use "unix" line endings
- echo " setmode(1,_O_BINARY);"
- ;;
- esac
-
- cat <<"EOF"
- lt_dump_script (stdout);
- return 0;
- }
- if (strcmp (argv[i], debug_opt) == 0)
- {
- lt_debug = 1;
- continue;
- }
- if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
- {
- /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
- namespace, but it is not one of the ones we know about and
- have already dealt with, above (inluding dump-script), then
- report an error. Otherwise, targets might begin to believe
- they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
- namespace. The first time any user complains about this, we'll
- need to make LTWRAPPER_OPTION_PREFIX a configure-time option
- or a configure.ac-settable value.
- */
- lt_fatal (__FILE__, __LINE__,
- "unrecognized %s option: '%s'",
- ltwrapper_option_prefix, argv[i]);
- }
- /* otherwise ... */
- newargz[++newargc] = xstrdup (argv[i]);
- }
- newargz[++newargc] = NULL;
-
-EOF
- cat <<EOF
- /* The GNU banner must be the first non-error debug message */
- lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
-EOF
- cat <<"EOF"
- lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
- lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
-
- tmp_pathspec = find_executable (argv[0]);
- if (tmp_pathspec == NULL)
- lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
- lt_debugprintf (__FILE__, __LINE__,
- "(main) found exe (before symlink chase) at: %s\n",
- tmp_pathspec);
-
- actual_cwrapper_path = chase_symlinks (tmp_pathspec);
- lt_debugprintf (__FILE__, __LINE__,
- "(main) found exe (after symlink chase) at: %s\n",
- actual_cwrapper_path);
- XFREE (tmp_pathspec);
-
- actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
- strendzap (actual_cwrapper_path, actual_cwrapper_name);
-
- /* wrapper name transforms */
- strendzap (actual_cwrapper_name, ".exe");
- tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
- XFREE (actual_cwrapper_name);
- actual_cwrapper_name = tmp_pathspec;
- tmp_pathspec = 0;
-
- /* target_name transforms -- use actual target program name; might have lt- prefix */
- target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
- strendzap (target_name, ".exe");
- tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
- XFREE (target_name);
- target_name = tmp_pathspec;
- tmp_pathspec = 0;
-
- lt_debugprintf (__FILE__, __LINE__,
- "(main) libtool target name: %s\n",
- target_name);
-EOF
-
- cat <<EOF
- newargz[0] =
- XMALLOC (char, (strlen (actual_cwrapper_path) +
- strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
- strcpy (newargz[0], actual_cwrapper_path);
- strcat (newargz[0], "$objdir");
- strcat (newargz[0], "/");
-EOF
-
- cat <<"EOF"
- /* stop here, and copy so we don't have to do this twice */
- tmp_pathspec = xstrdup (newargz[0]);
-
- /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
- strcat (newargz[0], actual_cwrapper_name);
-
- /* DO want the lt- prefix here if it exists, so use target_name */
- lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
- XFREE (tmp_pathspec);
- tmp_pathspec = NULL;
-EOF
-
- case $host_os in
- mingw*)
- cat <<"EOF"
- {
- char* p;
- while ((p = strchr (newargz[0], '\\')) != NULL)
- {
- *p = '/';
- }
- while ((p = strchr (lt_argv_zero, '\\')) != NULL)
- {
- *p = '/';
- }
- }
-EOF
- ;;
- esac
-
- cat <<"EOF"
- XFREE (target_name);
- XFREE (actual_cwrapper_path);
- XFREE (actual_cwrapper_name);
-
- lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
- lt_setenv ("DUALCASE", "1"); /* for MSK sh */
- /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
- be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
- because on Windows, both *_VARNAMEs are PATH but uninstalled
- libraries must come first. */
- lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
- lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
-
- lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
- nonnull (lt_argv_zero));
- for (i = 0; i < newargc; i++)
- {
- lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
- i, nonnull (newargz[i]));
- }
-
-EOF
-
- case $host_os in
- mingw*)
- cat <<"EOF"
- /* execv doesn't actually work on mingw as expected on unix */
- newargz = prepare_spawn (newargz);
- rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
- if (rval == -1)
- {
- /* failed to start process */
- lt_debugprintf (__FILE__, __LINE__,
- "(main) failed to launch target \"%s\": %s\n",
- lt_argv_zero, nonnull (strerror (errno)));
- return 127;
- }
- return rval;
-EOF
- ;;
- *)
- cat <<"EOF"
- execv (lt_argv_zero, newargz);
- return rval; /* =127, but avoids unused variable warning */
-EOF
- ;;
- esac
-
- cat <<"EOF"
-}
-
-void *
-xmalloc (size_t num)
-{
- void *p = (void *) malloc (num);
- if (!p)
- lt_fatal (__FILE__, __LINE__, "memory exhausted");
-
- return p;
-}
-
-char *
-xstrdup (const char *string)
-{
- return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
- string) : NULL;
-}
-
-const char *
-base_name (const char *name)
-{
- const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- /* Skip over the disk name in MSDOS pathnames. */
- if (isalpha ((unsigned char) name[0]) && name[1] == ':')
- name += 2;
-#endif
-
- for (base = name; *name; name++)
- if (IS_DIR_SEPARATOR (*name))
- base = name + 1;
- return base;
-}
-
-int
-check_executable (const char *path)
-{
- struct stat st;
-
- lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
- nonempty (path));
- if ((!path) || (!*path))
- return 0;
-
- if ((stat (path, &st) >= 0)
- && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
- return 1;
- else
- return 0;
-}
-
-int
-make_executable (const char *path)
-{
- int rval = 0;
- struct stat st;
-
- lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
- nonempty (path));
- if ((!path) || (!*path))
- return 0;
-
- if (stat (path, &st) >= 0)
- {
- rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
- }
- return rval;
-}
-
-/* Searches for the full path of the wrapper. Returns
- newly allocated full path name if found, NULL otherwise
- Does not chase symlinks, even on platforms that support them.
-*/
-char *
-find_executable (const char *wrapper)
-{
- int has_slash = 0;
- const char *p;
- const char *p_next;
- /* static buffer for getcwd */
- char tmp[LT_PATHMAX + 1];
- int tmp_len;
- char *concat_name;
-
- lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
- nonempty (wrapper));
-
- if ((wrapper == NULL) || (*wrapper == '\0'))
- return NULL;
-
- /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
- {
- concat_name = xstrdup (wrapper);
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
- else
- {
-#endif
- if (IS_DIR_SEPARATOR (wrapper[0]))
- {
- concat_name = xstrdup (wrapper);
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
- }
-#endif
-
- for (p = wrapper; *p; p++)
- if (*p == '/')
- {
- has_slash = 1;
- break;
- }
- if (!has_slash)
- {
- /* no slashes; search PATH */
- const char *path = getenv ("PATH");
- if (path != NULL)
- {
- for (p = path; *p; p = p_next)
- {
- const char *q;
- size_t p_len;
- for (q = p; *q; q++)
- if (IS_PATH_SEPARATOR (*q))
- break;
- p_len = q - p;
- p_next = (*q == '\0' ? q : q + 1);
- if (p_len == 0)
- {
- /* empty path: current directory */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
- lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
- nonnull (strerror (errno)));
- tmp_len = strlen (tmp);
- concat_name =
- XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, tmp, tmp_len);
- concat_name[tmp_len] = '/';
- strcpy (concat_name + tmp_len + 1, wrapper);
- }
- else
- {
- concat_name =
- XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, p, p_len);
- concat_name[p_len] = '/';
- strcpy (concat_name + p_len + 1, wrapper);
- }
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- }
- }
- /* not found in PATH; assume curdir */
- }
- /* Relative path | not found in path: prepend cwd */
- if (getcwd (tmp, LT_PATHMAX) == NULL)
- lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
- nonnull (strerror (errno)));
- tmp_len = strlen (tmp);
- concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
- memcpy (concat_name, tmp, tmp_len);
- concat_name[tmp_len] = '/';
- strcpy (concat_name + tmp_len + 1, wrapper);
-
- if (check_executable (concat_name))
- return concat_name;
- XFREE (concat_name);
- return NULL;
-}
-
-char *
-chase_symlinks (const char *pathspec)
-{
-#ifndef S_ISLNK
- return xstrdup (pathspec);
-#else
- char buf[LT_PATHMAX];
- struct stat s;
- char *tmp_pathspec = xstrdup (pathspec);
- char *p;
- int has_symlinks = 0;
- while (strlen (tmp_pathspec) && !has_symlinks)
- {
- lt_debugprintf (__FILE__, __LINE__,
- "checking path component for symlinks: %s\n",
- tmp_pathspec);
- if (lstat (tmp_pathspec, &s) == 0)
- {
- if (S_ISLNK (s.st_mode) != 0)
- {
- has_symlinks = 1;
- break;
- }
-
- /* search backwards for last DIR_SEPARATOR */
- p = tmp_pathspec + strlen (tmp_pathspec) - 1;
- while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
- p--;
- if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
- {
- /* no more DIR_SEPARATORS left */
- break;
- }
- *p = '\0';
- }
- else
- {
- lt_fatal (__FILE__, __LINE__,
- "error accessing file \"%s\": %s",
- tmp_pathspec, nonnull (strerror (errno)));
- }
- }
- XFREE (tmp_pathspec);
-
- if (!has_symlinks)
- {
- return xstrdup (pathspec);
- }
-
- tmp_pathspec = realpath (pathspec, buf);
- if (tmp_pathspec == 0)
- {
- lt_fatal (__FILE__, __LINE__,
- "could not follow symlinks for %s", pathspec);
- }
- return xstrdup (tmp_pathspec);
-#endif
-}
-
-char *
-strendzap (char *str, const char *pat)
-{
- size_t len, patlen;
-
- assert (str != NULL);
- assert (pat != NULL);
-
- len = strlen (str);
- patlen = strlen (pat);
-
- if (patlen <= len)
- {
- str += len - patlen;
- if (strcmp (str, pat) == 0)
- *str = '\0';
- }
- return str;
-}
-
-void
-lt_debugprintf (const char *file, int line, const char *fmt, ...)
-{
- va_list args;
- if (lt_debug)
- {
- (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
- va_start (args, fmt);
- (void) vfprintf (stderr, fmt, args);
- va_end (args);
- }
-}
-
-static void
-lt_error_core (int exit_status, const char *file,
- int line, const char *mode,
- const char *message, va_list ap)
-{
- fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
- vfprintf (stderr, message, ap);
- fprintf (stderr, ".\n");
-
- if (exit_status >= 0)
- exit (exit_status);
-}
-
-void
-lt_fatal (const char *file, int line, const char *message, ...)
-{
- va_list ap;
- va_start (ap, message);
- lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
- va_end (ap);
-}
-
-static const char *
-nonnull (const char *s)
-{
- return s ? s : "(null)";
-}
-
-static const char *
-nonempty (const char *s)
-{
- return (s && !*s) ? "(empty)" : nonnull (s);
-}
-
-void
-lt_setenv (const char *name, const char *value)
-{
- lt_debugprintf (__FILE__, __LINE__,
- "(lt_setenv) setting '%s' to '%s'\n",
- nonnull (name), nonnull (value));
- {
-#ifdef HAVE_SETENV
- /* always make a copy, for consistency with !HAVE_SETENV */
- char *str = xstrdup (value);
- setenv (name, str, 1);
-#else
- int len = strlen (name) + 1 + strlen (value) + 1;
- char *str = XMALLOC (char, len);
- sprintf (str, "%s=%s", name, value);
- if (putenv (str) != EXIT_SUCCESS)
- {
- XFREE (str);
- }
-#endif
- }
-}
-
-char *
-lt_extend_str (const char *orig_value, const char *add, int to_end)
-{
- char *new_value;
- if (orig_value && *orig_value)
- {
- int orig_value_len = strlen (orig_value);
- int add_len = strlen (add);
- new_value = XMALLOC (char, add_len + orig_value_len + 1);
- if (to_end)
- {
- strcpy (new_value, orig_value);
- strcpy (new_value + orig_value_len, add);
- }
- else
- {
- strcpy (new_value, add);
- strcpy (new_value + add_len, orig_value);
- }
- }
- else
- {
- new_value = xstrdup (add);
- }
- return new_value;
-}
-
-void
-lt_update_exe_path (const char *name, const char *value)
-{
- lt_debugprintf (__FILE__, __LINE__,
- "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
- nonnull (name), nonnull (value));
-
- if (name && *name && value && *value)
- {
- char *new_value = lt_extend_str (getenv (name), value, 0);
- /* some systems can't cope with a ':'-terminated path #' */
- int len = strlen (new_value);
- while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
- {
- new_value[len-1] = '\0';
- }
- lt_setenv (name, new_value);
- XFREE (new_value);
- }
-}
-
-void
-lt_update_lib_path (const char *name, const char *value)
-{
- lt_debugprintf (__FILE__, __LINE__,
- "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
- nonnull (name), nonnull (value));
-
- if (name && *name && value && *value)
- {
- char *new_value = lt_extend_str (getenv (name), value, 0);
- lt_setenv (name, new_value);
- XFREE (new_value);
- }
-}
-
-EOF
- case $host_os in
- mingw*)
- cat <<"EOF"
-
-/* Prepares an argument vector before calling spawn().
- Note that spawn() does not by itself call the command interpreter
- (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
- ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&v);
- v.dwPlatformId == VER_PLATFORM_WIN32_NT;
- }) ? "cmd.exe" : "command.com").
- Instead it simply concatenates the arguments, separated by ' ', and calls
- CreateProcess(). We must quote the arguments since Win32 CreateProcess()
- interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
- special way:
- - Space and tab are interpreted as delimiters. They are not treated as
- delimiters if they are surrounded by double quotes: "...".
- - Unescaped double quotes are removed from the input. Their only effect is
- that within double quotes, space and tab are treated like normal
- characters.
- - Backslashes not followed by double quotes are not special.
- - But 2*n+1 backslashes followed by a double quote become
- n backslashes followed by a double quote (n >= 0):
- \" -> "
- \\\" -> \"
- \\\\\" -> \\"
- */
-#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
-char **
-prepare_spawn (char **argv)
-{
- size_t argc;
- char **new_argv;
- size_t i;
-
- /* Count number of arguments. */
- for (argc = 0; argv[argc] != NULL; argc++)
- ;
-
- /* Allocate new argument vector. */
- new_argv = XMALLOC (char *, argc + 1);
-
- /* Put quoted arguments into the new argument vector. */
- for (i = 0; i < argc; i++)
- {
- const char *string = argv[i];
-
- if (string[0] == '\0')
- new_argv[i] = xstrdup ("\"\"");
- else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
- {
- int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
- size_t length;
- unsigned int backslashes;
- const char *s;
- char *quoted_string;
- char *p;
-
- length = 0;
- backslashes = 0;
- if (quote_around)
- length++;
- for (s = string; *s != '\0'; s++)
- {
- char c = *s;
- if (c == '"')
- length += backslashes + 1;
- length++;
- if (c == '\\')
- backslashes++;
- else
- backslashes = 0;
- }
- if (quote_around)
- length += backslashes + 1;
-
- quoted_string = XMALLOC (char, length + 1);
-
- p = quoted_string;
- backslashes = 0;
- if (quote_around)
- *p++ = '"';
- for (s = string; *s != '\0'; s++)
- {
- char c = *s;
- if (c == '"')
- {
- unsigned int j;
- for (j = backslashes + 1; j > 0; j--)
- *p++ = '\\';
- }
- *p++ = c;
- if (c == '\\')
- backslashes++;
- else
- backslashes = 0;
- }
- if (quote_around)
- {
- unsigned int j;
- for (j = backslashes; j > 0; j--)
- *p++ = '\\';
- *p++ = '"';
- }
- *p = '\0';
-
- new_argv[i] = quoted_string;
- }
- else
- new_argv[i] = (char *) string;
- }
- new_argv[argc] = NULL;
-
- return new_argv;
-}
-EOF
- ;;
- esac
-
- cat <<"EOF"
-void lt_dump_script (FILE* f)
-{
-EOF
- func_emit_wrapper yes |
- $SED -n -e '
-s/^\(.\{79\}\)\(..*\)/\1\
-\2/
-h
-s/\([\\"]\)/\\\1/g
-s/$/\\n/
-s/\([^\n]*\).*/ fputs ("\1", f);/p
-g
-D'
- cat <<"EOF"
-}
-EOF
-}
-# end: func_emit_cwrapperexe_src
-
-# func_win32_import_lib_p ARG
-# True if ARG is an import lib, as indicated by $file_magic_cmd
-func_win32_import_lib_p ()
-{
- $opt_debug
- case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
- *import*) : ;;
- *) false ;;
- esac
-}
-
-# func_mode_link arg...
-func_mode_link ()
-{
- $opt_debug
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- # It is impossible to link a dll without this setting, and
- # we shouldn't force the makefile maintainer to figure out
- # which system we are compiling for in order to pass an extra
- # flag for every libtool invocation.
- # allow_undefined=no
-
- # FIXME: Unfortunately, there are problems with the above when trying
- # to make a dll which has undefined symbols, in which case not
- # even a static library is built. For now, we need to specify
- # -no-undefined on the libtool link line when we can be certain
- # that all symbols are satisfied, otherwise we get a static library.
- allow_undefined=yes
- ;;
- *)
- allow_undefined=yes
- ;;
- esac
- libtool_args=$nonopt
- base_compile="$nonopt $@"
- compile_command=$nonopt
- finalize_command=$nonopt
-
- compile_rpath=
- finalize_rpath=
- compile_shlibpath=
- finalize_shlibpath=
- convenience=
- old_convenience=
- deplibs=
- old_deplibs=
- compiler_flags=
- linker_flags=
- dllsearchpath=
- lib_search_path=`pwd`
- inst_prefix_dir=
- new_inherited_linker_flags=
-
- avoid_version=no
- bindir=
- dlfiles=
- dlprefiles=
- dlself=no
- export_dynamic=no
- export_symbols=
- export_symbols_regex=
- generated=
- libobjs=
- ltlibs=
- module=no
- no_install=no
- objs=
- non_pic_objects=
- precious_files_regex=
- prefer_static_libs=no
- preload=no
- prev=
- prevarg=
- release=
- rpath=
- xrpath=
- perm_rpath=
- temp_rpath=
- thread_safe=no
- vinfo=
- vinfo_number=no
- weak_libs=
- single_module="${wl}-single_module"
- func_infer_tag $base_compile
-
- # We need to know -static, to get the right output filenames.
- for arg
- do
- case $arg in
- -shared)
- test "$build_libtool_libs" != yes && \
- func_fatal_configuration "can not build a shared library"
- build_old_libs=no
- break
- ;;
- -all-static | -static | -static-libtool-libs)
- case $arg in
- -all-static)
- if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
- func_warning "complete static linking is impossible in this configuration"
- fi
- if test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=yes
- ;;
- -static)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=built
- ;;
- -static-libtool-libs)
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- dlopen_self=$dlopen_self_static
- fi
- prefer_static_libs=yes
- ;;
- esac
- build_libtool_libs=no
- build_old_libs=yes
- break
- ;;
- esac
- done
-
- # See if our shared archives depend on static archives.
- test -n "$old_archive_from_new_cmds" && build_old_libs=yes
-
- # Go through the arguments, transforming them on the way.
- while test "$#" -gt 0; do
- arg="$1"
- shift
- func_quote_for_eval "$arg"
- qarg=$func_quote_for_eval_unquoted_result
- func_append libtool_args " $func_quote_for_eval_result"
-
- # If the previous option needs an argument, assign it.
- if test -n "$prev"; then
- case $prev in
- output)
- func_append compile_command " @OUTPUT@"
- func_append finalize_command " @OUTPUT@"
- ;;
- esac
-
- case $prev in
- bindir)
- bindir="$arg"
- prev=
- continue
- ;;
- dlfiles|dlprefiles)
- if test "$preload" = no; then
- # Add the symbol object into the linking commands.
- func_append compile_command " @SYMFILE@"
- func_append finalize_command " @SYMFILE@"
- preload=yes
- fi
- case $arg in
- *.la | *.lo) ;; # We handle these cases below.
- force)
- if test "$dlself" = no; then
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- self)
- if test "$prev" = dlprefiles; then
- dlself=yes
- elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
- dlself=yes
- else
- dlself=needless
- export_dynamic=yes
- fi
- prev=
- continue
- ;;
- *)
- if test "$prev" = dlfiles; then
- func_append dlfiles " $arg"
- else
- func_append dlprefiles " $arg"
- fi
- prev=
- continue
- ;;
- esac
- ;;
- expsyms)
- export_symbols="$arg"
- test -f "$arg" \
- || func_fatal_error "symbol file \`$arg' does not exist"
- prev=
- continue
- ;;
- expsyms_regex)
- export_symbols_regex="$arg"
- prev=
- continue
- ;;
- framework)
- case $host in
- *-*-darwin*)
- case "$deplibs " in
- *" $qarg.ltframework "*) ;;
- *) func_append deplibs " $qarg.ltframework" # this is fixed later
- ;;
- esac
- ;;
- esac
- prev=
- continue
- ;;
- inst_prefix)
- inst_prefix_dir="$arg"
- prev=
- continue
- ;;
- objectlist)
- if test -f "$arg"; then
- save_arg=$arg
- moreargs=
- for fil in `cat "$save_arg"`
- do
-# func_append moreargs " $fil"
- arg=$fil
- # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
- if func_lalib_unsafe_p "$arg"; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- func_source "$arg"
-
- if test -z "$pic_object" ||
- test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
- fi
-
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- func_append dlfiles " $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- func_append dlprefiles " $pic_object"
- prev=
- fi
-
- # A PIC object.
- func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
-
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
-
- # A standard non-PIC object
- func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- func_append non_pic_objects " $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if $opt_dry_run; then
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- func_lo2o "$arg"
- pic_object=$xdir$objdir/$func_lo2o_result
- non_pic_object=$xdir$func_lo2o_result
- func_append libobjs " $pic_object"
- func_append non_pic_objects " $non_pic_object"
- else
- func_fatal_error "\`$arg' is not a valid libtool object"
- fi
- fi
- done
- else
- func_fatal_error "link input file \`$arg' does not exist"
- fi
- arg=$save_arg
- prev=
- continue
- ;;
- precious_regex)
- precious_files_regex="$arg"
- prev=
- continue
- ;;
- release)
- release="-$arg"
- prev=
- continue
- ;;
- rpath | xrpath)
- # We need an absolute path.
- case $arg in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- if test "$prev" = rpath; then
- case "$rpath " in
- *" $arg "*) ;;
- *) func_append rpath " $arg" ;;
- esac
- else
- case "$xrpath " in
- *" $arg "*) ;;
- *) func_append xrpath " $arg" ;;
- esac
- fi
- prev=
- continue
- ;;
- shrext)
- shrext_cmds="$arg"
- prev=
- continue
- ;;
- weak)
- func_append weak_libs " $arg"
- prev=
- continue
- ;;
- xcclinker)
- func_append linker_flags " $qarg"
- func_append compiler_flags " $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xcompiler)
- func_append compiler_flags " $qarg"
- prev=
- func_append compile_command " $qarg"
- func_append finalize_command " $qarg"
- continue
- ;;
- xlinker)
- func_append linker_flags " $qarg"
- func_append compiler_flags " $wl$qarg"
- prev=
- func_append compile_command " $wl$qarg"
- func_append finalize_command " $wl$qarg"
- continue
- ;;
- *)
- eval "$prev=\"\$arg\""
- prev=
- continue
- ;;
- esac
- fi # test -n "$prev"
-
- prevarg="$arg"
-
- case $arg in
- -all-static)
- if test -n "$link_static_flag"; then
- # See comment for -static flag below, for more details.
- func_append compile_command " $link_static_flag"
- func_append finalize_command " $link_static_flag"
- fi
- continue
- ;;
-
- -allow-undefined)
- # FIXME: remove this flag sometime in the future.
- func_fatal_error "\`-allow-undefined' must not be used because it is the default"
- ;;
-
- -avoid-version)
- avoid_version=yes
- continue
- ;;
-
- -bindir)
- prev=bindir
- continue
- ;;
-
- -dlopen)
- prev=dlfiles
- continue
- ;;
-
- -dlpreopen)
- prev=dlprefiles
- continue
- ;;
-
- -export-dynamic)
- export_dynamic=yes
- continue
- ;;
-
- -export-symbols | -export-symbols-regex)
- if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
- func_fatal_error "more than one -exported-symbols argument is not allowed"
- fi
- if test "X$arg" = "X-export-symbols"; then
- prev=expsyms
- else
- prev=expsyms_regex
- fi
- continue
- ;;
-
- -framework)
- prev=framework
- continue
- ;;
-
- -inst-prefix-dir)
- prev=inst_prefix
- continue
- ;;
-
- # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
- # so, if we see these flags be careful not to treat them like -L
- -L[A-Z][A-Z]*:*)
- case $with_gcc/$host in
- no/*-*-irix* | /*-*-irix*)
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- ;;
- esac
- continue
- ;;
-
- -L*)
- func_stripname "-L" '' "$arg"
- if test -z "$func_stripname_result"; then
- if test "$#" -gt 0; then
- func_fatal_error "require no space between \`-L' and \`$1'"
- else
- func_fatal_error "need path for \`-L' option"
- fi
- fi
- func_resolve_sysroot "$func_stripname_result"
- dir=$func_resolve_sysroot_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- *)
- absdir=`cd "$dir" && pwd`
- test -z "$absdir" && \
- func_fatal_error "cannot determine absolute directory name of \`$dir'"
- dir="$absdir"
- ;;
- esac
- case "$deplibs " in
- *" -L$dir "* | *" $arg "*)
- # Will only happen for absolute or sysroot arguments
- ;;
- *)
- # Preserve sysroot, but never include relative directories
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
- *) func_append deplibs " -L$dir" ;;
- esac
- func_append lib_search_path " $dir"
- ;;
- esac
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$dir:"*) ;;
- ::) dllsearchpath=$dir;;
- *) func_append dllsearchpath ":$dir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
- *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
- continue
- ;;
-
- -l*)
- if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
- # These systems don't actually have a C or math library (as such)
- continue
- ;;
- *-*-os2*)
- # These systems don't actually have a C library (as such)
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc due to us having libc/libc_r.
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C and math libraries are in the System framework
- func_append deplibs " System.ltframework"
- continue
- ;;
- *-*-sco3.2v5* | *-*-sco5v6*)
- # Causes problems with __ctype
- test "X$arg" = "X-lc" && continue
- ;;
- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- # Compiler inserts libc in the correct place for threads to work
- test "X$arg" = "X-lc" && continue
- ;;
- esac
- elif test "X$arg" = "X-lc_r"; then
- case $host in
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc_r directly, use -pthread flag.
- continue
- ;;
- esac
- fi
- func_append deplibs " $arg"
- continue
- ;;
-
- -module)
- module=yes
- continue
- ;;
-
- # Tru64 UNIX uses -model [arg] to determine the layout of C++
- # classes, name mangling, and exception handling.
- # Darwin uses the -arch flag to determine output architecture.
- -model|-arch|-isysroot|--sysroot)
- func_append compiler_flags " $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- prev=xcompiler
- continue
- ;;
-
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
- |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
- func_append compiler_flags " $arg"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- case "$new_inherited_linker_flags " in
- *" $arg "*) ;;
- * ) func_append new_inherited_linker_flags " $arg" ;;
- esac
- continue
- ;;
-
- -multi_module)
- single_module="${wl}-multi_module"
- continue
- ;;
-
- -no-fast-install)
- fast_install=no
- continue
- ;;
-
- -no-install)
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
- # The PATH hackery in wrapper scripts is required on Windows
- # and Darwin in order for the loader to find any dlls it needs.
- func_warning "\`-no-install' is ignored for $host"
- func_warning "assuming \`-no-fast-install' instead"
- fast_install=no
- ;;
- *) no_install=yes ;;
- esac
- continue
- ;;
-
- -no-undefined)
- allow_undefined=no
- continue
- ;;
-
- -objectlist)
- prev=objectlist
- continue
- ;;
-
- -o) prev=output ;;
-
- -precious-files-regex)
- prev=precious_regex
- continue
- ;;
-
- -release)
- prev=release
- continue
- ;;
-
- -rpath)
- prev=rpath
- continue
- ;;
-
- -R)
- prev=xrpath
- continue
- ;;
-
- -R*)
- func_stripname '-R' '' "$arg"
- dir=$func_stripname_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) ;;
- =*)
- func_stripname '=' '' "$dir"
- dir=$lt_sysroot$func_stripname_result
- ;;
- *)
- func_fatal_error "only absolute run-paths are allowed"
- ;;
- esac
- case "$xrpath " in
- *" $dir "*) ;;
- *) func_append xrpath " $dir" ;;
- esac
- continue
- ;;
-
- -shared)
- # The effects of -shared are defined in a previous loop.
- continue
- ;;
-
- -shrext)
- prev=shrext
- continue
- ;;
-
- -static | -static-libtool-libs)
- # The effects of -static are defined in a previous loop.
- # We used to do the same as -all-static on platforms that
- # didn't have a PIC flag, but the assumption that the effects
- # would be equivalent was wrong. It would break on at least
- # Digital Unix and AIX.
- continue
- ;;
-
- -thread-safe)
- thread_safe=yes
- continue
- ;;
-
- -version-info)
- prev=vinfo
- continue
- ;;
-
- -version-number)
- prev=vinfo
- vinfo_number=yes
- continue
- ;;
-
- -weak)
- prev=weak
- continue
- ;;
-
- -Wc,*)
- func_stripname '-Wc,' '' "$arg"
- args=$func_stripname_result
- arg=
- save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
- func_append arg " $func_quote_for_eval_result"
- func_append compiler_flags " $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
- arg=$func_stripname_result
- ;;
-
- -Wl,*)
- func_stripname '-Wl,' '' "$arg"
- args=$func_stripname_result
- arg=
- save_ifs="$IFS"; IFS=','
- for flag in $args; do
- IFS="$save_ifs"
- func_quote_for_eval "$flag"
- func_append arg " $wl$func_quote_for_eval_result"
- func_append compiler_flags " $wl$func_quote_for_eval_result"
- func_append linker_flags " $func_quote_for_eval_result"
- done
- IFS="$save_ifs"
- func_stripname ' ' '' "$arg"
- arg=$func_stripname_result
- ;;
-
- -Xcompiler)
- prev=xcompiler
- continue
- ;;
-
- -Xlinker)
- prev=xlinker
- continue
- ;;
-
- -XCClinker)
- prev=xcclinker
- continue
- ;;
-
- # -msg_* for osf cc
- -msg_*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
-
- # Flags to be passed through unchanged, with rationale:
- # -64, -mips[0-9] enable 64-bit mode for the SGI compiler
- # -r[0-9][0-9]* specify processor for the SGI compiler
- # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
- # +DA*, +DD* enable 64-bit mode for the HP compiler
- # -q* compiler args for the IBM compiler
- # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
- # -F/path path to uninstalled frameworks, gcc on darwin
- # -p, -pg, --coverage, -fprofile-* profiling flags for GCC
- # @file GCC response files
- # -tp=* Portland pgcc target processor selection
- # --sysroot=* for sysroot support
- # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
- -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
- -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- func_append compiler_flags " $arg"
- continue
- ;;
-
- # Some other compiler flag.
- -* | +*)
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
-
- *.$objext)
- # A standard object.
- func_append objs " $arg"
- ;;
-
- *.lo)
- # A libtool-controlled object.
-
- # Check to see that this really is a libtool object.
- if func_lalib_unsafe_p "$arg"; then
- pic_object=
- non_pic_object=
-
- # Read the .lo file
- func_source "$arg"
-
- if test -z "$pic_object" ||
- test -z "$non_pic_object" ||
- test "$pic_object" = none &&
- test "$non_pic_object" = none; then
- func_fatal_error "cannot find name of object for \`$arg'"
- fi
-
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- if test "$pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- pic_object="$xdir$pic_object"
-
- if test "$prev" = dlfiles; then
- if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
- func_append dlfiles " $pic_object"
- prev=
- continue
- else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
- fi
- fi
-
- # CHECK ME: I think I busted this. -Ossama
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- func_append dlprefiles " $pic_object"
- prev=
- fi
-
- # A PIC object.
- func_append libobjs " $pic_object"
- arg="$pic_object"
- fi
-
- # Non-PIC object.
- if test "$non_pic_object" != none; then
- # Prepend the subdirectory the object is found in.
- non_pic_object="$xdir$non_pic_object"
-
- # A standard non-PIC object
- func_append non_pic_objects " $non_pic_object"
- if test -z "$pic_object" || test "$pic_object" = none ; then
- arg="$non_pic_object"
- fi
- else
- # If the PIC object exists, use it instead.
- # $xdir was prepended to $pic_object above.
- non_pic_object="$pic_object"
- func_append non_pic_objects " $non_pic_object"
- fi
- else
- # Only an error if not doing a dry-run.
- if $opt_dry_run; then
- # Extract subdirectory from the argument.
- func_dirname "$arg" "/" ""
- xdir="$func_dirname_result"
-
- func_lo2o "$arg"
- pic_object=$xdir$objdir/$func_lo2o_result
- non_pic_object=$xdir$func_lo2o_result
- func_append libobjs " $pic_object"
- func_append non_pic_objects " $non_pic_object"
- else
- func_fatal_error "\`$arg' is not a valid libtool object"
- fi
- fi
- ;;
-
- *.$libext)
- # An archive.
- func_append deplibs " $arg"
- func_append old_deplibs " $arg"
- continue
- ;;
-
- *.la)
- # A libtool-controlled library.
-
- func_resolve_sysroot "$arg"
- if test "$prev" = dlfiles; then
- # This library was specified with -dlopen.
- func_append dlfiles " $func_resolve_sysroot_result"
- prev=
- elif test "$prev" = dlprefiles; then
- # The library was specified with -dlpreopen.
- func_append dlprefiles " $func_resolve_sysroot_result"
- prev=
- else
- func_append deplibs " $func_resolve_sysroot_result"
- fi
- continue
- ;;
-
- # Some other compiler argument.
- *)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- func_quote_for_eval "$arg"
- arg="$func_quote_for_eval_result"
- ;;
- esac # arg
-
- # Now actually substitute the argument into the commands.
- if test -n "$arg"; then
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- fi
- done # argument parsing loop
-
- test -n "$prev" && \
- func_fatal_help "the \`$prevarg' option requires an argument"
-
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- func_append compile_command " $arg"
- func_append finalize_command " $arg"
- fi
-
- oldlibs=
- # calculate the name of the file, without its directory
- func_basename "$output"
- outputname="$func_basename_result"
- libobjs_save="$libobjs"
-
- if test -n "$shlibpath_var"; then
- # get the directories listed in $shlibpath_var
- eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
- else
- shlib_search_path=
- fi
- eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
- func_dirname "$output" "/" ""
- output_objdir="$func_dirname_result$objdir"
- func_to_tool_file "$output_objdir/"
- tool_output_objdir=$func_to_tool_file_result
- # Create the object directory.
- func_mkdir_p "$output_objdir"
-
- # Determine the type of output
- case $output in
- "")
- func_fatal_help "you must specify an output file"
- ;;
- *.$libext) linkmode=oldlib ;;
- *.lo | *.$objext) linkmode=obj ;;
- *.la) linkmode=lib ;;
- *) linkmode=prog ;; # Anything else should be a program.
- esac
-
- specialdeplibs=
-
- libs=
- # Find all interdependent deplibs by searching for libraries
- # that are linked more than once (e.g. -la -lb -la)
- for deplib in $deplibs; do
- if $opt_preserve_dup_deps ; then
- case "$libs " in
- *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
- func_append libs " $deplib"
- done
-
- if test "$linkmode" = lib; then
- libs="$predeps $libs $compiler_lib_search_path $postdeps"
-
- # Compute libraries that are listed more than once in $predeps
- # $postdeps and mark them as special (i.e., whose duplicates are
- # not to be eliminated).
- pre_post_deps=
- if $opt_duplicate_compiler_generated_deps; then
- for pre_post_dep in $predeps $postdeps; do
- case "$pre_post_deps " in
- *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
- esac
- func_append pre_post_deps " $pre_post_dep"
- done
- fi
- pre_post_deps=
- fi
-
- deplibs=
- newdependency_libs=
- newlib_search_path=
- need_relink=no # whether we're linking any uninstalled libtool libraries
- notinst_deplibs= # not-installed libtool libraries
- notinst_path= # paths that contain not-installed libtool libraries
-
- case $linkmode in
- lib)
- passes="conv dlpreopen link"
- for file in $dlfiles $dlprefiles; do
- case $file in
- *.la) ;;
- *)
- func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
- ;;
- esac
- done
- ;;
- prog)
- compile_deplibs=
- finalize_deplibs=
- alldeplibs=no
- newdlfiles=
- newdlprefiles=
- passes="conv scan dlopen dlpreopen link"
- ;;
- *) passes="conv"
- ;;
- esac
-
- for pass in $passes; do
- # The preopen pass in lib mode reverses $deplibs; put it back here
- # so that -L comes before libs that need it for instance...
- if test "$linkmode,$pass" = "lib,link"; then
- ## FIXME: Find the place where the list is rebuilt in the wrong
- ## order, and fix it there properly
- tmp_deplibs=
- for deplib in $deplibs; do
- tmp_deplibs="$deplib $tmp_deplibs"
- done
- deplibs="$tmp_deplibs"
- fi
-
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan"; then
- libs="$deplibs"
- deplibs=
- fi
- if test "$linkmode" = prog; then
- case $pass in
- dlopen) libs="$dlfiles" ;;
- dlpreopen) libs="$dlprefiles" ;;
- link)
- libs="$deplibs %DEPLIBS%"
- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
- ;;
- esac
- fi
- if test "$linkmode,$pass" = "lib,dlpreopen"; then
- # Collect and forward deplibs of preopened libtool libs
- for lib in $dlprefiles; do
- # Ignore non-libtool-libs
- dependency_libs=
- func_resolve_sysroot "$lib"
- case $lib in
- *.la) func_source "$func_resolve_sysroot_result" ;;
- esac
-
- # Collect preopened libtool deplibs, except any this library
- # has declared as weak libs
- for deplib in $dependency_libs; do
- func_basename "$deplib"
- deplib_base=$func_basename_result
- case " $weak_libs " in
- *" $deplib_base "*) ;;
- *) func_append deplibs " $deplib" ;;
- esac
- done
- done
- libs="$dlprefiles"
- fi
- if test "$pass" = dlopen; then
- # Collect dlpreopened libraries
- save_deplibs="$deplibs"
- deplibs=
- fi
-
- for deplib in $libs; do
- lib=
- found=no
- case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
- |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- func_append compiler_flags " $deplib"
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
- * ) func_append new_inherited_linker_flags " $deplib" ;;
- esac
- fi
- fi
- continue
- ;;
- -l*)
- if test "$linkmode" != lib && test "$linkmode" != prog; then
- func_warning "\`-l' is ignored for archives/objects"
- continue
- fi
- func_stripname '-l' '' "$deplib"
- name=$func_stripname_result
- if test "$linkmode" = lib; then
- searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
- else
- searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
- fi
- for searchdir in $searchdirs; do
- for search_ext in .la $std_shrext .so .a; do
- # Search the libtool library
- lib="$searchdir/lib${name}${search_ext}"
- if test -f "$lib"; then
- if test "$search_ext" = ".la"; then
- found=yes
- else
- found=no
- fi
- break 2
- fi
- done
- done
- if test "$found" != yes; then
- # deplib doesn't seem to be a libtool library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- else # deplib is a libtool library
- # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
- # We need to do some special things here, and not later.
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $deplib "*)
- if func_lalib_p "$lib"; then
- library_names=
- old_library=
- func_source "$lib"
- for l in $old_library $library_names; do
- ll="$l"
- done
- if test "X$ll" = "X$old_library" ; then # only static version available
- found=no
- func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
- lib=$ladir/$old_library
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
- fi
- continue
- fi
- fi
- ;;
- *) ;;
- esac
- fi
- fi
- ;; # -l
- *.ltframework)
- if test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- deplibs="$deplib $deplibs"
- if test "$linkmode" = lib ; then
- case "$new_inherited_linker_flags " in
- *" $deplib "*) ;;
- * ) func_append new_inherited_linker_flags " $deplib" ;;
- esac
- fi
- fi
- continue
- ;;
- -L*)
- case $linkmode in
- lib)
- deplibs="$deplib $deplibs"
- test "$pass" = conv && continue
- newdependency_libs="$deplib $newdependency_libs"
- func_stripname '-L' '' "$deplib"
- func_resolve_sysroot "$func_stripname_result"
- func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- prog)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- if test "$pass" = scan; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- func_stripname '-L' '' "$deplib"
- func_resolve_sysroot "$func_stripname_result"
- func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- *)
- func_warning "\`-L' is ignored for archives/objects"
- ;;
- esac # linkmode
- continue
- ;; # -L
- -R*)
- if test "$pass" = link; then
- func_stripname '-R' '' "$deplib"
- func_resolve_sysroot "$func_stripname_result"
- dir=$func_resolve_sysroot_result
- # Make sure the xrpath contains only unique directories.
- case "$xrpath " in
- *" $dir "*) ;;
- *) func_append xrpath " $dir" ;;
- esac
- fi
- deplibs="$deplib $deplibs"
- continue
- ;;
- *.la)
- func_resolve_sysroot "$deplib"
- lib=$func_resolve_sysroot_result
- ;;
- *.$libext)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- continue
- fi
- case $linkmode in
- lib)
- # Linking convenience modules into shared libraries is allowed,
- # but linking other static libraries is non-portable.
- case " $dlpreconveniencelibs " in
- *" $deplib "*) ;;
- *)
- valid_a_lib=no
- case $deplibs_check_method in
- match_pattern*)
- set dummy $deplibs_check_method; shift
- match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
- | $EGREP "$match_pattern_regex" > /dev/null; then
- valid_a_lib=yes
- fi
- ;;
- pass_all)
- valid_a_lib=yes
- ;;
- esac
- if test "$valid_a_lib" != yes; then
- echo
- $ECHO "*** Warning: Trying to link with static lib archive $deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because the file extensions .$libext of this argument makes me believe"
- echo "*** that it is just a static archive that I should not use here."
- else
- echo
- $ECHO "*** Warning: Linking the shared library $output against the"
- $ECHO "*** static library $deplib is not portable!"
- deplibs="$deplib $deplibs"
- fi
- ;;
- esac
- continue
- ;;
- prog)
- if test "$pass" != link; then
- deplibs="$deplib $deplibs"
- else
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- fi
- continue
- ;;
- esac # linkmode
- ;; # *.$libext
- *.lo | *.$objext)
- if test "$pass" = conv; then
- deplibs="$deplib $deplibs"
- elif test "$linkmode" = prog; then
- if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlopen support or we're linking statically,
- # we need to preload.
- func_append newdlprefiles " $deplib"
- compile_deplibs="$deplib $compile_deplibs"
- finalize_deplibs="$deplib $finalize_deplibs"
- else
- func_append newdlfiles " $deplib"
- fi
- fi
- continue
- ;;
- %DEPLIBS%)
- alldeplibs=yes
- continue
- ;;
- esac # case $deplib
-
- if test "$found" = yes || test -f "$lib"; then :
- else
- func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
- fi
-
- # Check to see that this really is a libtool archive.
- func_lalib_unsafe_p "$lib" \
- || func_fatal_error "\`$lib' is not a valid libtool archive"
-
- func_dirname "$lib" "" "."
- ladir="$func_dirname_result"
-
- dlname=
- dlopen=
- dlpreopen=
- libdir=
- library_names=
- old_library=
- inherited_linker_flags=
- # If the library was installed with an old release of libtool,
- # it will not redefine variables installed, or shouldnotlink
- installed=yes
- shouldnotlink=no
- avoidtemprpath=
-
-
- # Read the .la file
- func_source "$lib"
-
- # Convert "-framework foo" to "foo.ltframework"
- if test -n "$inherited_linker_flags"; then
- tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
- for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
- case " $new_inherited_linker_flags " in
- *" $tmp_inherited_linker_flag "*) ;;
- *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
- esac
- done
- fi
- dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- if test "$linkmode,$pass" = "lib,link" ||
- test "$linkmode,$pass" = "prog,scan" ||
- { test "$linkmode" != prog && test "$linkmode" != lib; }; then
- test -n "$dlopen" && func_append dlfiles " $dlopen"
- test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
- fi
-
- if test "$pass" = conv; then
- # Only check for convenience libraries
- deplibs="$lib $deplibs"
- if test -z "$libdir"; then
- if test -z "$old_library"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
- # It is a libtool convenience library, so add in its objects.
- func_append convenience " $ladir/$objdir/$old_library"
- func_append old_convenience " $ladir/$objdir/$old_library"
- tmp_libs=
- for deplib in $dependency_libs; do
- deplibs="$deplib $deplibs"
- if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
- func_append tmp_libs " $deplib"
- done
- elif test "$linkmode" != prog && test "$linkmode" != lib; then
- func_fatal_error "\`$lib' is not a convenience library"
- fi
- continue
- fi # $pass = conv
-
-
- # Get the name of the library we link against.
- linklib=
- if test -n "$old_library" &&
- { test "$prefer_static_libs" = yes ||
- test "$prefer_static_libs,$installed" = "built,no"; }; then
- linklib=$old_library
- else
- for l in $old_library $library_names; do
- linklib="$l"
- done
- fi
- if test -z "$linklib"; then
- func_fatal_error "cannot find name of link library for \`$lib'"
- fi
-
- # This library was specified with -dlopen.
- if test "$pass" = dlopen; then
- if test -z "$libdir"; then
- func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
- fi
- if test -z "$dlname" ||
- test "$dlopen_support" != yes ||
- test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking
- # statically, we need to preload. We also need to preload any
- # dependent libraries so libltdl's deplib preloader doesn't
- # bomb out in the load deplibs phase.
- func_append dlprefiles " $lib $dependency_libs"
- else
- func_append newdlfiles " $lib"
- fi
- continue
- fi # $pass = dlopen
-
- # We need an absolute path.
- case $ladir in
- [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
- *)
- abs_ladir=`cd "$ladir" && pwd`
- if test -z "$abs_ladir"; then
- func_warning "cannot determine absolute directory name of \`$ladir'"
- func_warning "passing it literally to the linker, although it might fail"
- abs_ladir="$ladir"
- fi
- ;;
- esac
- func_basename "$lib"
- laname="$func_basename_result"
-
- # Find the relevant object directory and library name.
- if test "X$installed" = Xyes; then
- if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- func_warning "library \`$lib' was moved."
- dir="$ladir"
- absdir="$abs_ladir"
- libdir="$abs_ladir"
- else
- dir="$lt_sysroot$libdir"
- absdir="$lt_sysroot$libdir"
- fi
- test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
- else
- if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
- dir="$ladir"
- absdir="$abs_ladir"
- # Remove this search path later
- func_append notinst_path " $abs_ladir"
- else
- dir="$ladir/$objdir"
- absdir="$abs_ladir/$objdir"
- # Remove this search path later
- func_append notinst_path " $abs_ladir"
- fi
- fi # $installed = yes
- func_stripname 'lib' '.la' "$laname"
- name=$func_stripname_result
-
- # This library was specified with -dlpreopen.
- if test "$pass" = dlpreopen; then
- if test -z "$libdir" && test "$linkmode" = prog; then
- func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
- fi
- case "$host" in
- # special handling for platforms with PE-DLLs.
- *cygwin* | *mingw* | *cegcc* )
- # Linker will automatically link against shared library if both
- # static and shared are present. Therefore, ensure we extract
- # symbols from the import library if a shared library is present
- # (otherwise, the dlopen module name will be incorrect). We do
- # this by putting the import library name into $newdlprefiles.
- # We recover the dlopen module name by 'saving' the la file
- # name in a special purpose variable, and (later) extracting the
- # dlname from the la file.
- if test -n "$dlname"; then
- func_tr_sh "$dir/$linklib"
- eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
- func_append newdlprefiles " $dir/$linklib"
- else
- func_append newdlprefiles " $dir/$old_library"
- # Keep a list of preopened convenience libraries to check
- # that they are being used correctly in the link pass.
- test -z "$libdir" && \
- func_append dlpreconveniencelibs " $dir/$old_library"
- fi
- ;;
- * )
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- func_append newdlprefiles " $dir/$old_library"
- # Keep a list of preopened convenience libraries to check
- # that they are being used correctly in the link pass.
- test -z "$libdir" && \
- func_append dlpreconveniencelibs " $dir/$old_library"
- # Otherwise, use the dlname, so that lt_dlopen finds it.
- elif test -n "$dlname"; then
- func_append newdlprefiles " $dir/$dlname"
- else
- func_append newdlprefiles " $dir/$linklib"
- fi
- ;;
- esac
- fi # $pass = dlpreopen
-
- if test -z "$libdir"; then
- # Link the convenience library
- if test "$linkmode" = lib; then
- deplibs="$dir/$old_library $deplibs"
- elif test "$linkmode,$pass" = "prog,link"; then
- compile_deplibs="$dir/$old_library $compile_deplibs"
- finalize_deplibs="$dir/$old_library $finalize_deplibs"
- else
- deplibs="$lib $deplibs" # used for prog,scan pass
- fi
- continue
- fi
-
-
- if test "$linkmode" = prog && test "$pass" != link; then
- func_append newlib_search_path " $ladir"
- deplibs="$lib $deplibs"
-
- linkalldeplibs=no
- if test "$link_all_deplibs" != no || test -z "$library_names" ||
- test "$build_libtool_libs" = no; then
- linkalldeplibs=yes
- fi
-
- tmp_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- -L*) func_stripname '-L' '' "$deplib"
- func_resolve_sysroot "$func_stripname_result"
- func_append newlib_search_path " $func_resolve_sysroot_result"
- ;;
- esac
- # Need to link against all dependency_libs?
- if test "$linkalldeplibs" = yes; then
- deplibs="$deplib $deplibs"
- else
- # Need to hardcode shared library paths
- # or/and link against static libraries
- newdependency_libs="$deplib $newdependency_libs"
- fi
- if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
- *" $deplib "*) func_append specialdeplibs " $deplib" ;;
- esac
- fi
- func_append tmp_libs " $deplib"
- done # for deplib
- continue
- fi # $linkmode = prog...
-
- if test "$linkmode,$pass" = "prog,link"; then
- if test -n "$library_names" &&
- { { test "$prefer_static_libs" = no ||
- test "$prefer_static_libs,$installed" = "built,yes"; } ||
- test -z "$old_library"; }; then
- # We need to hardcode the library path
- if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath:" in
- *"$absdir:"*) ;;
- *) func_append temp_rpath "$absdir:" ;;
- esac
- fi
-
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) func_append compile_rpath " $absdir" ;;
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) func_append finalize_rpath " $libdir" ;;
- esac
- ;;
- esac
- fi # $linkmode,$pass = prog,link...
-
- if test "$alldeplibs" = yes &&
- { test "$deplibs_check_method" = pass_all ||
- { test "$build_libtool_libs" = yes &&
- test -n "$library_names"; }; }; then
- # We only need to search for static libraries
- continue
- fi
- fi
-
- link_static=no # Whether the deplib will be linked statically
- use_static_libs=$prefer_static_libs
- if test "$use_static_libs" = built && test "$installed" = yes; then
- use_static_libs=no
- fi
- if test -n "$library_names" &&
- { test "$use_static_libs" = no || test -z "$old_library"; }; then
- case $host in
- *cygwin* | *mingw* | *cegcc*)
- # No point in relinking DLLs because paths are not encoded
- func_append notinst_deplibs " $lib"
- need_relink=no
- ;;
- *)
- if test "$installed" = no; then
- func_append notinst_deplibs " $lib"
- need_relink=yes
- fi
- ;;
- esac
- # This is a shared library
-
- # Warn about portability, can't link against -module's on some
- # systems (darwin). Don't bleat about dlopened modules though!
- dlopenmodule=""
- for dlpremoduletest in $dlprefiles; do
- if test "X$dlpremoduletest" = "X$lib"; then
- dlopenmodule="$dlpremoduletest"
- break
- fi
- done
- if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
- echo
- if test "$linkmode" = prog; then
- $ECHO "*** Warning: Linking the executable $output against the loadable module"
- else
- $ECHO "*** Warning: Linking the shared library $output against the loadable module"
- fi
- $ECHO "*** $linklib is not portable!"
- fi
- if test "$linkmode" = lib &&
- test "$hardcode_into_libs" = yes; then
- # Hardcode the library path.
- # Skip directories that are in the system default run-time
- # search path.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) func_append compile_rpath " $absdir" ;;
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) func_append finalize_rpath " $libdir" ;;
- esac
- ;;
- esac
- fi
-
- if test -n "$old_archive_from_expsyms_cmds"; then
- # figure out the soname
- set dummy $library_names
- shift
- realname="$1"
- shift
- libname=`eval "\\$ECHO \"$libname_spec\""`
- # use dlname if we got it. it's perfectly good, no?
- if test -n "$dlname"; then
- soname="$dlname"
- elif test -n "$soname_spec"; then
- # bleh windows
- case $host in
- *cygwin* | mingw* | *cegcc*)
- func_arith $current - $age
- major=$func_arith_result
- versuffix="-$major"
- ;;
- esac
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
-
- # Make a new name for the extract_expsyms_cmds to use
- soroot="$soname"
- func_basename "$soroot"
- soname="$func_basename_result"
- func_stripname 'lib' '.dll' "$soname"
- newlib=libimp-$func_stripname_result.a
-
- # If the library has no export list, then create one now
- if test -f "$output_objdir/$soname-def"; then :
- else
- func_verbose "extracting exported symbol list from \`$soname'"
- func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
- fi
-
- # Create $newlib
- if test -f "$output_objdir/$newlib"; then :; else
- func_verbose "generating import library for \`$soname'"
- func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
- fi
- # make sure the library variables are pointing to the new library
- dir=$output_objdir
- linklib=$newlib
- fi # test -n "$old_archive_from_expsyms_cmds"
-
- if test "$linkmode" = prog || test "$opt_mode" != relink; then
- add_shlibpath=
- add_dir=
- add=
- lib_linked=yes
- case $hardcode_action in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- add="$dir/$linklib"
- case $host in
- *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
- *-*-sysv4*uw2*) add_dir="-L$dir" ;;
- *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
- *-*-unixware7*) add_dir="-L$dir" ;;
- *-*-darwin* )
- # if the lib is a (non-dlopened) module then we can not
- # link against it, someone is ignoring the earlier warnings
- if /usr/bin/file -L $add 2> /dev/null |
- $GREP ": [^:]* bundle" >/dev/null ; then
- if test "X$dlopenmodule" != "X$lib"; then
- $ECHO "*** Warning: lib $linklib is a module, not a shared library"
- if test -z "$old_library" ; then
- echo
- echo "*** And there doesn't seem to be a static archive available"
- echo "*** The link will probably fail, sorry"
- else
- add="$dir/$old_library"
- fi
- elif test -n "$old_library"; then
- add="$dir/$old_library"
- fi
- fi
- esac
- elif test "$hardcode_minus_L" = no; then
- case $host in
- *-*-sunos*) add_shlibpath="$dir" ;;
- esac
- add_dir="-L$dir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = no; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- relink)
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$dir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$absdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
- func_append add_dir " -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- add_shlibpath="$dir"
- add="-l$name"
- else
- lib_linked=no
- fi
- ;;
- *) lib_linked=no ;;
- esac
-
- if test "$lib_linked" != yes; then
- func_fatal_configuration "unsupported hardcode properties"
- fi
-
- if test -n "$add_shlibpath"; then
- case :$compile_shlibpath: in
- *":$add_shlibpath:"*) ;;
- *) func_append compile_shlibpath "$add_shlibpath:" ;;
- esac
- fi
- if test "$linkmode" = prog; then
- test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
- test -n "$add" && compile_deplibs="$add $compile_deplibs"
- else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
- if test "$hardcode_direct" != yes &&
- test "$hardcode_minus_L" != yes &&
- test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) func_append finalize_shlibpath "$libdir:" ;;
- esac
- fi
- fi
- fi
-
- if test "$linkmode" = prog || test "$opt_mode" = relink; then
- add_shlibpath=
- add_dir=
- add=
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes &&
- test "$hardcode_direct_absolute" = no; then
- add="$libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- add_dir="-L$libdir"
- add="-l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case :$finalize_shlibpath: in
- *":$libdir:"*) ;;
- *) func_append finalize_shlibpath "$libdir:" ;;
- esac
- add="-l$name"
- elif test "$hardcode_automatic" = yes; then
- if test -n "$inst_prefix_dir" &&
- test -f "$inst_prefix_dir$libdir/$linklib" ; then
- add="$inst_prefix_dir$libdir/$linklib"
- else
- add="$libdir/$linklib"
- fi
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- add_dir="-L$libdir"
- # Try looking first in the location we're being installed to.
- if test -n "$inst_prefix_dir"; then
- case $libdir in
- [\\/]*)
- func_append add_dir " -L$inst_prefix_dir$libdir"
- ;;
- esac
- fi
- add="-l$name"
- fi
-
- if test "$linkmode" = prog; then
- test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
- test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
- else
- test -n "$add_dir" && deplibs="$add_dir $deplibs"
- test -n "$add" && deplibs="$add $deplibs"
- fi
- fi
- elif test "$linkmode" = prog; then
- # Here we assume that one of hardcode_direct or hardcode_minus_L
- # is not unsupported. This is valid on all known static and
- # shared platforms.
- if test "$hardcode_direct" != unsupported; then
- test -n "$old_library" && linklib="$old_library"
- compile_deplibs="$dir/$linklib $compile_deplibs"
- finalize_deplibs="$dir/$linklib $finalize_deplibs"
- else
- compile_deplibs="-l$name -L$dir $compile_deplibs"
- finalize_deplibs="-l$name -L$dir $finalize_deplibs"
- fi
- elif test "$build_libtool_libs" = yes; then
- # Not a shared library
- if test "$deplibs_check_method" != pass_all; then
- # We're trying link a shared library against a static one
- # but the system doesn't support it.
-
- # Just print a warning and add the library to dependency_libs so
- # that the program can be linked against the static library.
- echo
- $ECHO "*** Warning: This system can not link to static lib archive $lib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have."
- if test "$module" = yes; then
- echo "*** But as you try to build a module library, libtool will still create "
- echo "*** a static module, that should work as long as the dlopening application"
- echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
- if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- fi
- else
- deplibs="$dir/$old_library $deplibs"
- link_static=yes
- fi
- fi # link shared/static library?
-
- if test "$linkmode" = lib; then
- if test -n "$dependency_libs" &&
- { test "$hardcode_into_libs" != yes ||
- test "$build_old_libs" = yes ||
- test "$link_static" = yes; }; then
- # Extract -R from dependency_libs
- temp_deplibs=
- for libdir in $dependency_libs; do
- case $libdir in
- -R*) func_stripname '-R' '' "$libdir"
- temp_xrpath=$func_stripname_result
- case " $xrpath " in
- *" $temp_xrpath "*) ;;
- *) func_append xrpath " $temp_xrpath";;
- esac;;
- *) func_append temp_deplibs " $libdir";;
- esac
- done
- dependency_libs="$temp_deplibs"
- fi
-
- func_append newlib_search_path " $absdir"
- # Link against this library
- test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
- # ... and its dependency_libs
- tmp_libs=
- for deplib in $dependency_libs; do
- newdependency_libs="$deplib $newdependency_libs"
- case $deplib in
- -L*) func_stripname '-L' '' "$deplib"
- func_resolve_sysroot "$func_stripname_result";;
- *) func_resolve_sysroot "$deplib" ;;
- esac
- if $opt_preserve_dup_deps ; then
- case "$tmp_libs " in
- *" $func_resolve_sysroot_result "*)
- func_append specialdeplibs " $func_resolve_sysroot_result" ;;
- esac
- fi
- func_append tmp_libs " $func_resolve_sysroot_result"
- done
-
- if test "$link_all_deplibs" != no; then
- # Add the search paths of all dependency libraries
- for deplib in $dependency_libs; do
- path=
- case $deplib in
- -L*) path="$deplib" ;;
- *.la)
- func_resolve_sysroot "$deplib"
- deplib=$func_resolve_sysroot_result
- func_dirname "$deplib" "" "."
- dir=$func_dirname_result
- # We need an absolute path.
- case $dir in
- [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- func_warning "cannot determine absolute directory name of \`$dir'"
- absdir="$dir"
- fi
- ;;
- esac
- if $GREP "^installed=no" $deplib > /dev/null; then
- case $host in
- *-*-darwin*)
- depdepl=
- eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
- if test -n "$deplibrary_names" ; then
- for tmp in $deplibrary_names ; do
- depdepl=$tmp
- done
- if test -f "$absdir/$objdir/$depdepl" ; then
- depdepl="$absdir/$objdir/$depdepl"
- darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
- if test -z "$darwin_install_name"; then
- darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
- fi
- func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
- func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
- path=
- fi
- fi
- ;;
- *)
- path="-L$absdir/$objdir"
- ;;
- esac
- else
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
- test "$absdir" != "$libdir" && \
- func_warning "\`$deplib' seems to be moved"
-
- path="-L$absdir"
- fi
- ;;
- esac
- case " $deplibs " in
- *" $path "*) ;;
- *) deplibs="$path $deplibs" ;;
- esac
- done
- fi # link_all_deplibs != no
- fi # linkmode = lib
- done # for deplib in $libs
- if test "$pass" = link; then
- if test "$linkmode" = "prog"; then
- compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
- finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
- else
- compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- fi
- fi
- dependency_libs="$newdependency_libs"
- if test "$pass" = dlpreopen; then
- # Link the dlpreopened libraries before other libraries
- for deplib in $save_deplibs; do
- deplibs="$deplib $deplibs"
- done
- fi
- if test "$pass" != dlopen; then
- if test "$pass" != conv; then
- # Make sure lib_search_path contains only unique directories.
- lib_search_path=
- for dir in $newlib_search_path; do
- case "$lib_search_path " in
- *" $dir "*) ;;
- *) func_append lib_search_path " $dir" ;;
- esac
- done
- newlib_search_path=
- fi
-
- if test "$linkmode,$pass" != "prog,link"; then
- vars="deplibs"
- else
- vars="compile_deplibs finalize_deplibs"
- fi
- for var in $vars dependency_libs; do
- # Add libraries to $var in reverse order
- eval tmp_libs=\"\$$var\"
- new_libs=
- for deplib in $tmp_libs; do
- # FIXME: Pedantically, this is the right thing to do, so
- # that some nasty dependency loop isn't accidentally
- # broken:
- #new_libs="$deplib $new_libs"
- # Pragmatically, this seems to cause very few problems in
- # practice:
- case $deplib in
- -L*) new_libs="$deplib $new_libs" ;;
- -R*) ;;
- *)
- # And here is the reason: when a library appears more
- # than once as an explicit dependence of a library, or
- # is implicitly linked in more than once by the
- # compiler, it is considered special, and multiple
- # occurrences thereof are not removed. Compare this
- # with having the same library being listed as a
- # dependency of multiple other libraries: in this case,
- # we know (pedantically, we assume) the library does not
- # need to be listed more than once, so we keep only the
- # last copy. This is not always right, but it is rare
- # enough that we require users that really mean to play
- # such unportable linking tricks to link the library
- # using -Wl,-lname, so that libtool does not consider it
- # for duplicate removal.
- case " $specialdeplibs " in
- *" $deplib "*) new_libs="$deplib $new_libs" ;;
- *)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$deplib $new_libs" ;;
- esac
- ;;
- esac
- ;;
- esac
- done
- tmp_libs=
- for deplib in $new_libs; do
- case $deplib in
- -L*)
- case " $tmp_libs " in
- *" $deplib "*) ;;
- *) func_append tmp_libs " $deplib" ;;
- esac
- ;;
- *) func_append tmp_libs " $deplib" ;;
- esac
- done
- eval $var=\"$tmp_libs\"
- done # for var
- fi
- # Last step: remove runtime libs from dependency_libs
- # (they stay in deplibs)
- tmp_libs=
- for i in $dependency_libs ; do
- case " $predeps $postdeps $compiler_lib_search_path " in
- *" $i "*)
- i=""
- ;;
- esac
- if test -n "$i" ; then
- func_append tmp_libs " $i"
- fi
- done
- dependency_libs=$tmp_libs
- done # for pass
- if test "$linkmode" = prog; then
- dlfiles="$newdlfiles"
- fi
- if test "$linkmode" = prog || test "$linkmode" = lib; then
- dlprefiles="$newdlprefiles"
- fi
-
- case $linkmode in
- oldlib)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for archives"
- fi
-
- case " $deplibs" in
- *\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for archives" ;;
- esac
-
- test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for archives"
-
- test -n "$xrpath" && \
- func_warning "\`-R' is ignored for archives"
-
- test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for archives"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for archives"
-
- test -n "$export_symbols$export_symbols_regex" && \
- func_warning "\`-export-symbols' is ignored for archives"
-
- # Now set the variables for building old libraries.
- build_libtool_libs=no
- oldlibs="$output"
- func_append objs "$old_deplibs"
- ;;
-
- lib)
- # Make sure we only generate libraries of the form `libNAME.la'.
- case $outputname in
- lib*)
- func_stripname 'lib' '.la' "$outputname"
- name=$func_stripname_result
- eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- ;;
- *)
- test "$module" = no && \
- func_fatal_help "libtool library \`$output' must begin with \`lib'"
-
- if test "$need_lib_prefix" != no; then
- # Add the "lib" prefix for modules if required
- func_stripname '' '.la' "$outputname"
- name=$func_stripname_result
- eval shared_ext=\"$shrext_cmds\"
- eval libname=\"$libname_spec\"
- else
- func_stripname '' '.la' "$outputname"
- libname=$func_stripname_result
- fi
- ;;
- esac
-
- if test -n "$objs"; then
- if test "$deplibs_check_method" != pass_all; then
- func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
- else
- echo
- $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
- $ECHO "*** objects $objs is not portable!"
- func_append libobjs " $objs"
- fi
- fi
-
- test "$dlself" != no && \
- func_warning "\`-dlopen self' is ignored for libtool libraries"
-
- set dummy $rpath
- shift
- test "$#" -gt 1 && \
- func_warning "ignoring multiple \`-rpath's for a libtool library"
-
- install_libdir="$1"
-
- oldlibs=
- if test -z "$rpath"; then
- if test "$build_libtool_libs" = yes; then
- # Building a libtool convenience library.
- # Some compilers have problems with a `.al' extension so
- # convenience libraries should have the same extension an
- # archive normally would.
- oldlibs="$output_objdir/$libname.$libext $oldlibs"
- build_libtool_libs=convenience
- build_old_libs=yes
- fi
-
- test -n "$vinfo" && \
- func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for convenience libraries"
- else
-
- # Parse the version information argument.
- save_ifs="$IFS"; IFS=':'
- set dummy $vinfo 0 0 0
- shift
- IFS="$save_ifs"
-
- test -n "$7" && \
- func_fatal_help "too many parameters to \`-version-info'"
-
- # convert absolute version numbers to libtool ages
- # this retains compatibility with .la files and attempts
- # to make the code below a bit more comprehensible
-
- case $vinfo_number in
- yes)
- number_major="$1"
- number_minor="$2"
- number_revision="$3"
- #
- # There are really only two kinds -- those that
- # use the current revision as the major version
- # and those that subtract age and use age as
- # a minor version. But, then there is irix
- # which has an extra 1 added just for fun
- #
- case $version_type in
- # correct linux to gnu/linux during the next big refactor
- darwin|linux|osf|windows|none)
- func_arith $number_major + $number_minor
- current=$func_arith_result
- age="$number_minor"
- revision="$number_revision"
- ;;
- freebsd-aout|freebsd-elf|qnx|sunos)
- current="$number_major"
- revision="$number_minor"
- age="0"
- ;;
- irix|nonstopux)
- func_arith $number_major + $number_minor
- current=$func_arith_result
- age="$number_minor"
- revision="$number_minor"
- lt_irix_increment=no
- ;;
- *)
- func_fatal_configuration "$modename: unknown library version type \`$version_type'"
- ;;
- esac
- ;;
- no)
- current="$1"
- revision="$2"
- age="$3"
- ;;
- esac
-
- # Check that each of the things are valid numbers.
- case $current in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "CURRENT \`$current' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- case $revision in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "REVISION \`$revision' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- case $age in
- 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
- *)
- func_error "AGE \`$age' must be a nonnegative integer"
- func_fatal_error "\`$vinfo' is not valid version information"
- ;;
- esac
-
- if test "$age" -gt "$current"; then
- func_error "AGE \`$age' is greater than the current interface number \`$current'"
- func_fatal_error "\`$vinfo' is not valid version information"
- fi
-
- # Calculate the version variables.
- major=
- versuffix=
- verstring=
- case $version_type in
- none) ;;
-
- darwin)
- # Like Linux, but with the current version available in
- # verstring for coding it into the library header
- func_arith $current - $age
- major=.$func_arith_result
- versuffix="$major.$age.$revision"
- # Darwin ld doesn't like 0 for these options...
- func_arith $current + 1
- minor_current=$func_arith_result
- xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
- ;;
-
- freebsd-aout)
- major=".$current"
- versuffix=".$current.$revision";
- ;;
-
- freebsd-elf)
- major=".$current"
- versuffix=".$current"
- ;;
-
- irix | nonstopux)
- if test "X$lt_irix_increment" = "Xno"; then
- func_arith $current - $age
- else
- func_arith $current - $age + 1
- fi
- major=$func_arith_result
-
- case $version_type in
- nonstopux) verstring_prefix=nonstopux ;;
- *) verstring_prefix=sgi ;;
- esac
- verstring="$verstring_prefix$major.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$revision
- while test "$loop" -ne 0; do
- func_arith $revision - $loop
- iface=$func_arith_result
- func_arith $loop - 1
- loop=$func_arith_result
- verstring="$verstring_prefix$major.$iface:$verstring"
- done
-
- # Before this point, $major must not contain `.'.
- major=.$major
- versuffix="$major.$revision"
- ;;
-
- linux) # correct to gnu/linux during the next big refactor
- func_arith $current - $age
- major=.$func_arith_result
- versuffix="$major.$age.$revision"
- ;;
-
- osf)
- func_arith $current - $age
- major=.$func_arith_result
- versuffix=".$current.$age.$revision"
- verstring="$current.$age.$revision"
-
- # Add in all the interfaces that we are compatible with.
- loop=$age
- while test "$loop" -ne 0; do
- func_arith $current - $loop
- iface=$func_arith_result
- func_arith $loop - 1
- loop=$func_arith_result
- verstring="$verstring:${iface}.0"
- done
-
- # Make executables depend on our current version.
- func_append verstring ":${current}.0"
- ;;
-
- qnx)
- major=".$current"
- versuffix=".$current"
- ;;
-
- sunos)
- major=".$current"
- versuffix=".$current.$revision"
- ;;
-
- windows)
- # Use '-' rather than '.', since we only want one
- # extension on DOS 8.3 filesystems.
- func_arith $current - $age
- major=$func_arith_result
- versuffix="-$major"
- ;;
-
- *)
- func_fatal_configuration "unknown library version type \`$version_type'"
- ;;
- esac
-
- # Clear the version info if we defaulted, and they specified a release.
- if test -z "$vinfo" && test -n "$release"; then
- major=
- case $version_type in
- darwin)
- # we can't check for "0.0" in archive_cmds due to quoting
- # problems, so we reset it completely
- verstring=
- ;;
- *)
- verstring="0.0"
- ;;
- esac
- if test "$need_version" = no; then
- versuffix=
- else
- versuffix=".0.0"
- fi
- fi
-
- # Remove version info from name if versioning should be avoided
- if test "$avoid_version" = yes && test "$need_version" = no; then
- major=
- versuffix=
- verstring=""
- fi
-
- # Check to see if the archive will have undefined symbols.
- if test "$allow_undefined" = yes; then
- if test "$allow_undefined_flag" = unsupported; then
- func_warning "undefined symbols not allowed in $host shared libraries"
- build_libtool_libs=no
- build_old_libs=yes
- fi
- else
- # Don't allow undefined symbols.
- allow_undefined_flag="$no_undefined_flag"
- fi
-
- fi
-
- func_generate_dlsyms "$libname" "$libname" "yes"
- func_append libobjs " $symfileobj"
- test "X$libobjs" = "X " && libobjs=
-
- if test "$opt_mode" != relink; then
- # Remove our outputs, but don't remove object files since they
- # may have been created when compiling PIC objects.
- removelist=
- tempremovelist=`$ECHO "$output_objdir/*"`
- for p in $tempremovelist; do
- case $p in
- *.$objext | *.gcno)
- ;;
- $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
- if test "X$precious_files_regex" != "X"; then
- if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
- then
- continue
- fi
- fi
- func_append removelist " $p"
- ;;
- *) ;;
- esac
- done
- test -n "$removelist" && \
- func_show_eval "${RM}r \$removelist"
- fi
-
- # Now set the variables for building old libraries.
- if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
- func_append oldlibs " $output_objdir/$libname.$libext"
-
- # Transform .lo files to .o files.
- oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
- fi
-
- # Eliminate all temporary directories.
- #for path in $notinst_path; do
- # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
- # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
- # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
- #done
-
- if test -n "$xrpath"; then
- # If the user specified any rpath flags, then add them.
- temp_xrpath=
- for libdir in $xrpath; do
- func_replace_sysroot "$libdir"
- func_append temp_xrpath " -R$func_replace_sysroot_result"
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) func_append finalize_rpath " $libdir" ;;
- esac
- done
- if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
- fi
-
- # Make sure dlfiles contains only unique files that won't be dlpreopened
- old_dlfiles="$dlfiles"
- dlfiles=
- for lib in $old_dlfiles; do
- case " $dlprefiles $dlfiles " in
- *" $lib "*) ;;
- *) func_append dlfiles " $lib" ;;
- esac
- done
-
- # Make sure dlprefiles contains only unique files
- old_dlprefiles="$dlprefiles"
- dlprefiles=
- for lib in $old_dlprefiles; do
- case "$dlprefiles " in
- *" $lib "*) ;;
- *) func_append dlprefiles " $lib" ;;
- esac
- done
-
- if test "$build_libtool_libs" = yes; then
- if test -n "$rpath"; then
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
- # these systems don't actually have a c library (as such)!
- ;;
- *-*-rhapsody* | *-*-darwin1.[012])
- # Rhapsody C library is in the System framework
- func_append deplibs " System.ltframework"
- ;;
- *-*-netbsd*)
- # Don't link with libc until the a.out ld.so is fixed.
- ;;
- *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
- # Do not include libc due to us having libc/libc_r.
- ;;
- *-*-sco3.2v5* | *-*-sco5v6*)
- # Causes problems with __ctype
- ;;
- *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
- # Compiler inserts libc in the correct place for threads to work
- ;;
- *)
- # Add libc to deplibs on all other systems if necessary.
- if test "$build_libtool_need_lc" = "yes"; then
- func_append deplibs " -lc"
- fi
- ;;
- esac
- fi
-
- # Transform deplibs into only deplibs that can be linked in shared.
- name_save=$name
- libname_save=$libname
- release_save=$release
- versuffix_save=$versuffix
- major_save=$major
- # I'm not sure if I'm treating the release correctly. I think
- # release should show up in the -l (ie -lgmp5) so we don't want to
- # add it in twice. Is that correct?
- release=""
- versuffix=""
- major=""
- newdeplibs=
- droppeddeps=no
- case $deplibs_check_method in
- pass_all)
- # Don't check for shared/static. Everything works.
- # This might be a little naive. We might want to check
- # whether the library exists or not. But this is on
- # osf3 & osf4 and I'm not really sure... Just
- # implementing what was already the behavior.
- newdeplibs=$deplibs
- ;;
- test_compile)
- # This code stresses the "libraries are programs" paradigm to its
- # limits. Maybe even breaks it. We compile a program, linking it
- # against the deplibs as a proxy for the library. Then we can check
- # whether they linked in statically or dynamically with ldd.
- $opt_dry_run || $RM conftest.c
- cat > conftest.c <<EOF
- int main() { return 0; }
-EOF
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
- ldd_output=`ldd conftest`
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
- func_append newdeplibs " $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which I believe you do not have"
- echo "*** because a test_compile did reveal that the linker did not use it for"
- echo "*** its dynamic dependency list that programs get resolved with at runtime."
- fi
- fi
- ;;
- *)
- func_append newdeplibs " $i"
- ;;
- esac
- done
- else
- # Error occurred in the first compile. Let's try to salvage
- # the situation: Compile a separate program for each library.
- for i in $deplibs; do
- case $i in
- -l*)
- func_stripname -l '' "$i"
- name=$func_stripname_result
- $opt_dry_run || $RM conftest
- if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
- ldd_output=`ldd conftest`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $i "*)
- func_append newdeplibs " $i"
- i=""
- ;;
- esac
- fi
- if test -n "$i" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
- set dummy $deplib_matches; shift
- deplib_match=$1
- if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
- func_append newdeplibs " $i"
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning: dynamic linker does not accept needed library $i."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because a test_compile did reveal that the linker did not use this one"
- echo "*** as a dynamic dependency that programs can get resolved with at runtime."
- fi
- fi
- else
- droppeddeps=yes
- echo
- $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
- echo "*** make it link in! You will probably need to install it or some"
- echo "*** library that it depends on before this library will be fully"
- echo "*** functional. Installing it before continuing would be even better."
- fi
- ;;
- *)
- func_append newdeplibs " $i"
- ;;
- esac
- done
- fi
- ;;
- file_magic*)
- set dummy $deplibs_check_method; shift
- file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
- case $a_deplib in
- -l*)
- func_stripname -l '' "$a_deplib"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
- func_append newdeplibs " $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- if test -n "$file_magic_glob"; then
- libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
- else
- libnameglob=$libname
- fi
- test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- if test "$want_nocaseglob" = yes; then
- shopt -s nocaseglob
- potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
- $nocaseglob
- else
- potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
- fi
- for potent_lib in $potential_libs; do
- # Follow soft links.
- if ls -lLd "$potent_lib" 2>/dev/null |
- $GREP " -> " >/dev/null; then
- continue
- fi
- # The statement above tries to avoid entering an
- # endless loop below, in case of cyclic links.
- # We might still enter an endless loop, since a link
- # loop can be closed while we follow links,
- # but so what?
- potlib="$potent_lib"
- while test -h "$potlib" 2>/dev/null; do
- potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
- case $potliblink in
- [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
- *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
- esac
- done
- if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
- $SED -e 10q |
- $EGREP "$file_magic_regex" > /dev/null; then
- func_append newdeplibs " $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
- $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
- else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a file magic. Last file checked: $potlib"
- fi
- fi
- ;;
- *)
- # Add a -L argument.
- func_append newdeplibs " $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
- ;;
- match_pattern*)
- set dummy $deplibs_check_method; shift
- match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
- for a_deplib in $deplibs; do
- case $a_deplib in
- -l*)
- func_stripname -l '' "$a_deplib"
- name=$func_stripname_result
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- case " $predeps $postdeps " in
- *" $a_deplib "*)
- func_append newdeplibs " $a_deplib"
- a_deplib=""
- ;;
- esac
- fi
- if test -n "$a_deplib" ; then
- libname=`eval "\\$ECHO \"$libname_spec\""`
- for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
- potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
- for potent_lib in $potential_libs; do
- potlib="$potent_lib" # see symlink-check above in file_magic test
- if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
- $EGREP "$match_pattern_regex" > /dev/null; then
- func_append newdeplibs " $a_deplib"
- a_deplib=""
- break 2
- fi
- done
- done
- fi
- if test -n "$a_deplib" ; then
- droppeddeps=yes
- echo
- $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
- echo "*** I have the capability to make that library automatically link in when"
- echo "*** you link to this library. But I can only do this if you have a"
- echo "*** shared version of the library, which you do not appear to have"
- echo "*** because I did check the linker path looking for a file starting"
- if test -z "$potlib" ; then
- $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
- else
- $ECHO "*** with $libname and none of the candidates passed a file format test"
- $ECHO "*** using a regex pattern. Last file checked: $potlib"
- fi
- fi
- ;;
- *)
- # Add a -L argument.
- func_append newdeplibs " $a_deplib"
- ;;
- esac
- done # Gone through all deplibs.
- ;;
- none | unknown | *)
- newdeplibs=""
- tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
- if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
- for i in $predeps $postdeps ; do
- # can't use Xsed below, because $i might contain '/'
- tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
- done
- fi
- case $tmp_deplibs in
- *[!\ \ ]*)
- echo
- if test "X$deplibs_check_method" = "Xnone"; then
- echo "*** Warning: inter-library dependencies are not supported in this platform."
- else
- echo "*** Warning: inter-library dependencies are not known to be supported."
- fi
- echo "*** All declared inter-library dependencies are being dropped."
- droppeddeps=yes
- ;;
- esac
- ;;
- esac
- versuffix=$versuffix_save
- major=$major_save
- release=$release_save
- libname=$libname_save
- name=$name_save
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library with the System framework
- newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
- ;;
- esac
-
- if test "$droppeddeps" = yes; then
- if test "$module" = yes; then
- echo
- echo "*** Warning: libtool could not satisfy all declared inter-library"
- $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
- echo "*** a static module, that should work as long as the dlopening"
- echo "*** application is linked with the -dlopen flag."
- if test -z "$global_symbol_pipe"; then
- echo
- echo "*** However, this would only work if libtool was able to extract symbol"
- echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
- echo "*** not find such a program. So, this module is probably useless."
- echo "*** \`nm' from GNU binutils and a full rebuild may help."
- fi
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- else
- echo "*** The inter-library dependencies that have been dropped here will be"
- echo "*** automatically added whenever a program is linked with this library"
- echo "*** or is declared to -dlopen it."
-
- if test "$allow_undefined" = no; then
- echo
- echo "*** Since this library must not contain undefined symbols,"
- echo "*** because either the platform does not support them or"
- echo "*** it was explicitly requested with -no-undefined,"
- echo "*** libtool will only create a static version of it."
- if test "$build_old_libs" = no; then
- oldlibs="$output_objdir/$libname.$libext"
- build_libtool_libs=module
- build_old_libs=yes
- else
- build_libtool_libs=no
- fi
- fi
- fi
- fi
- # Done checking deplibs!
- deplibs=$newdeplibs
- fi
- # Time to change all our "foo.ltframework" stuff back to "-framework foo"
- case $host in
- *-*-darwin*)
- newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- ;;
- esac
-
- # move library search paths that coincide with paths to not yet
- # installed libraries to the beginning of the library search list
- new_libs=
- for path in $notinst_path; do
- case " $new_libs " in
- *" -L$path/$objdir "*) ;;
- *)
- case " $deplibs " in
- *" -L$path/$objdir "*)
- func_append new_libs " -L$path/$objdir" ;;
- esac
- ;;
- esac
- done
- for deplib in $deplibs; do
- case $deplib in
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) func_append new_libs " $deplib" ;;
- esac
- ;;
- *) func_append new_libs " $deplib" ;;
- esac
- done
- deplibs="$new_libs"
-
- # All the library-specific variables (install_libdir is set above).
- library_names=
- old_library=
- dlname=
-
- # Test again, we may have decided not to build it any more
- if test "$build_libtool_libs" = yes; then
- # Remove ${wl} instances when linking with ld.
- # FIXME: should test the right _cmds variable.
- case $archive_cmds in
- *\$LD\ *) wl= ;;
- esac
- if test "$hardcode_into_libs" = yes; then
- # Hardcode the library paths
- hardcode_libdirs=
- dep_rpath=
- rpath="$finalize_rpath"
- test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
- for libdir in $rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- func_replace_sysroot "$libdir"
- libdir=$func_replace_sysroot_result
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append dep_rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) func_append perm_rpath " $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
- fi
- if test -n "$runpath_var" && test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- func_append rpath "$dir:"
- done
- eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
- fi
- test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
- fi
-
- shlibpath="$finalize_shlibpath"
- test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
- if test -n "$shlibpath"; then
- eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
- fi
-
- # Get the real and link names of the library.
- eval shared_ext=\"$shrext_cmds\"
- eval library_names=\"$library_names_spec\"
- set dummy $library_names
- shift
- realname="$1"
- shift
-
- if test -n "$soname_spec"; then
- eval soname=\"$soname_spec\"
- else
- soname="$realname"
- fi
- if test -z "$dlname"; then
- dlname=$soname
- fi
-
- # Local change for sane-backends: internal name for every lib
- # is "libsane" not "libsane-backendname". So linking to each
- # backend is possible. Also the following test was moved to this
- # location.
- # If -module or -export-dynamic was specified, set the dlname
- if test "$module" = yes || test "$export_dynamic" = yes; then
- # On all known operating systems, these are identical.
- dlname="$soname"
- fi
- case $host in
- *mingw*)
- ;;
- *aix*)
- ;;
- *)
- soname=`echo $soname | sed -e "s/libsane-[A-Za-z_0-9]*/libsane/g"`
- esac
- # End of local change
-
- lib="$output_objdir/$realname"
- linknames=
- for link
- do
- func_append linknames " $link"
- done
-
- # Use standard objects if they are pic
- test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
- test "X$libobjs" = "X " && libobjs=
-
- delfiles=
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
- export_symbols="$output_objdir/$libname.uexp"
- func_append delfiles " $export_symbols"
- fi
-
- orig_export_symbols=
- case $host_os in
- cygwin* | mingw* | cegcc*)
- if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
- # exporting using user supplied symfile
- if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
- # and it's NOT already a .def file. Must figure out
- # which of the given symbols are data symbols and tag
- # them as such. So, trigger use of export_symbols_cmds.
- # export_symbols gets reassigned inside the "prepare
- # the list of exported symbols" if statement, so the
- # include_expsyms logic still works.
- orig_export_symbols="$export_symbols"
- export_symbols=
- always_export_symbols=yes
- fi
- fi
- ;;
- esac
-
- # Prepare the list of exported symbols
- if test -z "$export_symbols"; then
- if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $opt_dry_run || $RM $export_symbols
- cmds=$export_symbols_cmds
- save_ifs="$IFS"; IFS='~'
- for cmd1 in $cmds; do
- IFS="$save_ifs"
- # Take the normal branch if the nm_file_list_spec branch
- # doesn't work or if tool conversion is not needed.
- case $nm_file_list_spec~$to_tool_file_cmd in
- *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
- try_normal_branch=yes
- eval cmd=\"$cmd1\"
- func_len " $cmd"
- len=$func_len_result
- ;;
- *)
- try_normal_branch=no
- ;;
- esac
- if test "$try_normal_branch" = yes \
- && { test "$len" -lt "$max_cmd_len" \
- || test "$max_cmd_len" -le -1; }
- then
- func_show_eval "$cmd" 'exit $?'
- skipped_export=false
- elif test -n "$nm_file_list_spec"; then
- func_basename "$output"
- output_la=$func_basename_result
- save_libobjs=$libobjs
- save_output=$output
- output=${output_objdir}/${output_la}.nm
- func_to_tool_file "$output"
- libobjs=$nm_file_list_spec$func_to_tool_file_result
- func_append delfiles " $output"
- func_verbose "creating $NM input file list: $output"
- for obj in $save_libobjs; do
- func_to_tool_file "$obj"
- $ECHO "$func_to_tool_file_result"
- done > "$output"
- eval cmd=\"$cmd1\"
- func_show_eval "$cmd" 'exit $?'
- output=$save_output
- libobjs=$save_libobjs
- skipped_export=false
- else
- # The command line is too long to execute in one step.
- func_verbose "using reloadable object file for export list..."
- skipped_export=:
- # Break out early, otherwise skipped_export may be
- # set to false by a later but shorter cmd.
- break
- fi
- done
- IFS="$save_ifs"
- if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
- func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- fi
- fi
- fi
-
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
- $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
- # The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- # FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
- # though. Also, the filter scales superlinearly with the number of
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
-
- tmp_deplibs=
- for test_deplib in $deplibs; do
- case " $convenience " in
- *" $test_deplib "*) ;;
- *)
- func_append tmp_deplibs " $test_deplib"
- ;;
- esac
- done
- deplibs="$tmp_deplibs"
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec" &&
- test "$compiler_needs_object" = yes &&
- test -z "$libobjs"; then
- # extract the archives, so we have objects to list.
- # TODO: could optimize this to just extract one archive.
- whole_archive_flag_spec=
- fi
- if test -n "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- else
- gentop="$output_objdir/${outputname}x"
- func_append generated " $gentop"
-
- func_extract_archives $gentop $convenience
- func_append libobjs " $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
- fi
-
- if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
- eval flag=\"$thread_safe_flag_spec\"
- func_append linker_flags " $flag"
- fi
-
- # Make a backup of the uninstalled library when relinking
- if test "$opt_mode" = relink; then
- $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
- fi
-
- # Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
- eval test_cmds=\"$module_expsym_cmds\"
- cmds=$module_expsym_cmds
- else
- eval test_cmds=\"$module_cmds\"
- cmds=$module_cmds
- fi
- else
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- eval test_cmds=\"$archive_expsym_cmds\"
- cmds=$archive_expsym_cmds
- else
- eval test_cmds=\"$archive_cmds\"
- cmds=$archive_cmds
- fi
- fi
-
- if test "X$skipped_export" != "X:" &&
- func_len " $test_cmds" &&
- len=$func_len_result &&
- test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- :
- else
- # The command line is too long to link in one step, link piecewise
- # or, if using GNU ld and skipped_export is not :, use a linker
- # script.
-
- # Save the value of $output and $libobjs because we want to
- # use them later. If we have whole_archive_flag_spec, we
- # want to use save_libobjs as it was before
- # whole_archive_flag_spec was expanded, because we can't
- # assume the linker understands whole_archive_flag_spec.
- # This may have to be revisited, in case too many
- # convenience libraries get linked in and end up exceeding
- # the spec.
- if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
- save_libobjs=$libobjs
- fi
- save_output=$output
- func_basename "$output"
- output_la=$func_basename_result
-
- # Clear the reloadable object creation command queue and
- # initialize k to one.
- test_cmds=
- concat_cmds=
- objlist=
- last_robj=
- k=1
-
- if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
- output=${output_objdir}/${output_la}.lnkscript
- func_verbose "creating GNU ld script: $output"
- echo 'INPUT (' > $output
- for obj in $save_libobjs
- do
- func_to_tool_file "$obj"
- $ECHO "$func_to_tool_file_result" >> $output
- done
- echo ')' >> $output
- func_append delfiles " $output"
- func_to_tool_file "$output"
- output=$func_to_tool_file_result
- elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
- output=${output_objdir}/${output_la}.lnk
- func_verbose "creating linker input file list: $output"
- : > $output
- set x $save_libobjs
- shift
- firstobj=
- if test "$compiler_needs_object" = yes; then
- firstobj="$1 "
- shift
- fi
- for obj
- do
- func_to_tool_file "$obj"
- $ECHO "$func_to_tool_file_result" >> $output
- done
- func_append delfiles " $output"
- func_to_tool_file "$output"
- output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
- else
- if test -n "$save_libobjs"; then
- func_verbose "creating reloadable object files..."
- output=$output_objdir/$output_la-${k}.$objext
- eval test_cmds=\"$reload_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
-
- # Loop over the list of objects to be linked.
- for obj in $save_libobjs
- do
- func_len " $obj"
- func_arith $len + $func_len_result
- len=$func_arith_result
- if test "X$objlist" = X ||
- test "$len" -lt "$max_cmd_len"; then
- func_append objlist " $obj"
- else
- # The command $test_cmds is almost too long, add a
- # command to the queue.
- if test "$k" -eq 1 ; then
- # The first file doesn't have a previous command to add.
- reload_objs=$objlist
- eval concat_cmds=\"$reload_cmds\"
- else
- # All subsequent reloadable object files will link in
- # the last one created.
- reload_objs="$objlist $last_robj"
- eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
- fi
- last_robj=$output_objdir/$output_la-${k}.$objext
- func_arith $k + 1
- k=$func_arith_result
- output=$output_objdir/$output_la-${k}.$objext
- objlist=" $obj"
- func_len " $last_robj"
- func_arith $len0 + $func_len_result
- len=$func_arith_result
- fi
- done
- # Handle the remaining objects by creating one last
- # reloadable object file. All subsequent reloadable object
- # files will link in the last one created.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- reload_objs="$objlist $last_robj"
- eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
- if test -n "$last_robj"; then
- eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
- fi
- func_append delfiles " $output"
-
- else
- output=
- fi
-
- if ${skipped_export-false}; then
- func_verbose "generating symbol list for \`$libname.la'"
- export_symbols="$output_objdir/$libname.exp"
- $opt_dry_run || $RM $export_symbols
- libobjs=$output
- # Append the command to create the export file.
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
- if test -n "$last_robj"; then
- eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
- fi
- fi
-
- test -n "$save_libobjs" &&
- func_verbose "creating a temporary reloadable object file: $output"
-
- # Loop through the commands generated above and execute them.
- save_ifs="$IFS"; IFS='~'
- for cmd in $concat_cmds; do
- IFS="$save_ifs"
- $opt_silent || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
- $opt_dry_run || eval "$cmd" || {
- lt_exit=$?
-
- # Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
- fi
-
- exit $lt_exit
- }
- done
- IFS="$save_ifs"
-
- if test -n "$export_symbols_regex" && ${skipped_export-false}; then
- func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
- func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
- fi
- fi
-
- if ${skipped_export-false}; then
- if test -n "$export_symbols" && test -n "$include_expsyms"; then
- tmp_export_symbols="$export_symbols"
- test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
- $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
- fi
-
- if test -n "$orig_export_symbols"; then
- # The given exports_symbols file has to be filtered, so filter it.
- func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
- # FIXME: $output_objdir/$libname.filter potentially contains lots of
- # 's' commands which not all seds can handle. GNU sed should be fine
- # though. Also, the filter scales superlinearly with the number of
- # global variables. join(1) would be nice here, but unfortunately
- # isn't a blessed tool.
- $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
- func_append delfiles " $export_symbols $output_objdir/$libname.filter"
- export_symbols=$output_objdir/$libname.def
- $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
- fi
- fi
-
- libobjs=$output
- # Restore the value of output.
- output=$save_output
-
- if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
- eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
- test "X$libobjs" = "X " && libobjs=
- fi
- # Expand the library linking commands again to reset the
- # value of $libobjs for piecewise linking.
-
- # Do each of the archive commands.
- if test "$module" = yes && test -n "$module_cmds" ; then
- if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
- cmds=$module_expsym_cmds
- else
- cmds=$module_cmds
- fi
- else
- if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
- cmds=$archive_expsym_cmds
- else
- cmds=$archive_cmds
- fi
- fi
- fi
-
- if test -n "$delfiles"; then
- # Append the command to remove temporary files to $cmds.
- eval cmds=\"\$cmds~\$RM $delfiles\"
- fi
-
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
- func_append generated " $gentop"
-
- func_extract_archives $gentop $dlprefiles
- func_append libobjs " $func_extract_archives_result"
- test "X$libobjs" = "X " && libobjs=
- fi
-
- save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
- IFS="$save_ifs"
- eval cmd=\"$cmd\"
- $opt_silent || {
- func_quote_for_expand "$cmd"
- eval "func_echo $func_quote_for_expand_result"
- }
- $opt_dry_run || eval "$cmd" || {
- lt_exit=$?
-
- # Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
- ( cd "$output_objdir" && \
- $RM "${realname}T" && \
- $MV "${realname}U" "$realname" )
- fi
-
- exit $lt_exit
- }
- done
- IFS="$save_ifs"
-
- # Restore the uninstalled library and exit
- if test "$opt_mode" = relink; then
- $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
- if test -n "$convenience"; then
- if test -z "$whole_archive_flag_spec"; then
- func_show_eval '${RM}r "$gentop"'
- fi
- fi
-
- exit $EXIT_SUCCESS
- fi
-
- # Create links to the real library.
- for linkname in $linknames; do
- if test "$realname" != "$linkname"; then
- func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
- fi
- done
-
- # Local change from sane-backends; moved up
- # If -module or -export-dynamic was specified, set the dlname.
- #if test "$module" = yes || test "$export_dynamic" = yes; then
- # # On all known operating systems, these are identical.
- # dlname="$soname"
- #fi
- fi
- ;;
-
- obj)
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- func_warning "\`-dlopen' is ignored for objects"
- fi
-
- case " $deplibs" in
- *\ -l* | *\ -L*)
- func_warning "\`-l' and \`-L' are ignored for objects" ;;
- esac
-
- test -n "$rpath" && \
- func_warning "\`-rpath' is ignored for objects"
-
- test -n "$xrpath" && \
- func_warning "\`-R' is ignored for objects"
-
- test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for objects"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for objects"
-
- case $output in
- *.lo)
- test -n "$objs$old_deplibs" && \
- func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
- libobj=$output
- func_lo2o "$libobj"
- obj=$func_lo2o_result
- ;;
- *)
- libobj=
- obj="$output"
- ;;
- esac
-
- # Delete the old objects.
- $opt_dry_run || $RM $obj $libobj
-
- # Objects from convenience libraries. This assumes
- # single-version convenience libraries. Whenever we create
- # different ones for PIC/non-PIC, this we'll have to duplicate
- # the extraction.
- reload_conv_objs=
- gentop=
- # reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec and hope we can get by with
- # turning comma into space..
- wl=
-
- if test -n "$convenience"; then
- if test -n "$whole_archive_flag_spec"; then
- eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
- reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
- else
- gentop="$output_objdir/${obj}x"
- func_append generated " $gentop"
-
- func_extract_archives $gentop $convenience
- reload_conv_objs="$reload_objs $func_extract_archives_result"
- fi
- fi
-
- # If we're not building shared, we need to use non_pic_objs
- test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
-
- # Create the old-style object.
- reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
- output="$obj"
- func_execute_cmds "$reload_cmds" 'exit $?'
-
- # Exit if we aren't doing a library object file.
- if test -z "$libobj"; then
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- exit $EXIT_SUCCESS
- fi
-
- if test "$build_libtool_libs" != yes; then
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- # Create an invalid libtool object if no PIC, so that we don't
- # accidentally link it into a program.
- # $show "echo timestamp > $libobj"
- # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
- exit $EXIT_SUCCESS
- fi
-
- if test -n "$pic_flag" || test "$pic_mode" != default; then
- # Only do commands if we really have different PIC objects.
- reload_objs="$libobjs $reload_conv_objs"
- output="$libobj"
- func_execute_cmds "$reload_cmds" 'exit $?'
- fi
-
- if test -n "$gentop"; then
- func_show_eval '${RM}r "$gentop"'
- fi
-
- exit $EXIT_SUCCESS
- ;;
-
- prog)
- case $host in
- *cygwin*) func_stripname '' '.exe' "$output"
- output=$func_stripname_result.exe;;
- esac
- test -n "$vinfo" && \
- func_warning "\`-version-info' is ignored for programs"
-
- test -n "$release" && \
- func_warning "\`-release' is ignored for programs"
-
- test "$preload" = yes \
- && test "$dlopen_support" = unknown \
- && test "$dlopen_self" = unknown \
- && test "$dlopen_self_static" = unknown && \
- func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
-
- case $host in
- *-*-rhapsody* | *-*-darwin1.[012])
- # On Rhapsody replace the C library is the System framework
- compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
- finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
- ;;
- esac
-
- case $host in
- *-*-darwin*)
- # Don't allow lazy linking, it breaks C++ global constructors
- # But is supposedly fixed on 10.4 or later (yay!).
- if test "$tagname" = CXX ; then
- case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
- 10.[0123])
- func_append compile_command " ${wl}-bind_at_load"
- func_append finalize_command " ${wl}-bind_at_load"
- ;;
- esac
- fi
- # Time to change all our "foo.ltframework" stuff back to "-framework foo"
- compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
- ;;
- esac
-
-
- # move library search paths that coincide with paths to not yet
- # installed libraries to the beginning of the library search list
- new_libs=
- for path in $notinst_path; do
- case " $new_libs " in
- *" -L$path/$objdir "*) ;;
- *)
- case " $compile_deplibs " in
- *" -L$path/$objdir "*)
- func_append new_libs " -L$path/$objdir" ;;
- esac
- ;;
- esac
- done
- for deplib in $compile_deplibs; do
- case $deplib in
- -L*)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) func_append new_libs " $deplib" ;;
- esac
- ;;
- *) func_append new_libs " $deplib" ;;
- esac
- done
- compile_deplibs="$new_libs"
-
-
- func_append compile_command " $compile_deplibs"
- func_append finalize_command " $finalize_deplibs"
-
- if test -n "$rpath$xrpath"; then
- # If the user specified any rpath flags, then add them.
- for libdir in $rpath $xrpath; do
- # This is the magic to use -rpath.
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) func_append finalize_rpath " $libdir" ;;
- esac
- done
- fi
-
- # Now hardcode the library paths
- rpath=
- hardcode_libdirs=
- for libdir in $compile_rpath $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$perm_rpath " in
- *" $libdir "*) ;;
- *) func_append perm_rpath " $libdir" ;;
- esac
- fi
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
- testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
- case :$dllsearchpath: in
- *":$libdir:"*) ;;
- ::) dllsearchpath=$libdir;;
- *) func_append dllsearchpath ":$libdir";;
- esac
- case :$dllsearchpath: in
- *":$testbindir:"*) ;;
- ::) dllsearchpath=$testbindir;;
- *) func_append dllsearchpath ":$testbindir";;
- esac
- ;;
- esac
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- compile_rpath="$rpath"
-
- rpath=
- hardcode_libdirs=
- for libdir in $finalize_rpath; do
- if test -n "$hardcode_libdir_flag_spec"; then
- if test -n "$hardcode_libdir_separator"; then
- if test -z "$hardcode_libdirs"; then
- hardcode_libdirs="$libdir"
- else
- # Just accumulate the unique libdirs.
- case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
- ;;
- *)
- func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
- ;;
- esac
- fi
- else
- eval flag=\"$hardcode_libdir_flag_spec\"
- func_append rpath " $flag"
- fi
- elif test -n "$runpath_var"; then
- case "$finalize_perm_rpath " in
- *" $libdir "*) ;;
- *) func_append finalize_perm_rpath " $libdir" ;;
- esac
- fi
- done
- # Substitute the hardcoded libdirs into the rpath.
- if test -n "$hardcode_libdir_separator" &&
- test -n "$hardcode_libdirs"; then
- libdir="$hardcode_libdirs"
- eval rpath=\" $hardcode_libdir_flag_spec\"
- fi
- finalize_rpath="$rpath"
-
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
- finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
- fi
-
- func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
- # template prelinking step
- if test -n "$prelink_cmds"; then
- func_execute_cmds "$prelink_cmds" 'exit $?'
- fi
-
- wrappers_required=yes
- case $host in
- *cegcc* | *mingw32ce*)
- # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
- wrappers_required=no
- ;;
- *cygwin* | *mingw* )
- if test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
- ;;
- *)
- if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
- wrappers_required=no
- fi
- ;;
- esac
- if test "$wrappers_required" = no; then
- # Replace the output file specification.
- compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- link_command="$compile_command$compile_rpath"
-
- # We have no uninstalled library dependencies, so finalize right now.
- exit_status=0
- func_show_eval "$link_command" 'exit_status=$?'
-
- if test -n "$postlink_cmds"; then
- func_to_tool_file "$output"
- postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
- func_execute_cmds "$postlink_cmds" 'exit $?'
- fi
-
- # Delete the generated files.
- if test -f "$output_objdir/${outputname}S.${objext}"; then
- func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
- fi
-
- exit $exit_status
- fi
-
- if test -n "$compile_shlibpath$finalize_shlibpath"; then
- compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
- fi
- if test -n "$finalize_shlibpath"; then
- finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
- fi
-
- compile_var=
- finalize_var=
- if test -n "$runpath_var"; then
- if test -n "$perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $perm_rpath; do
- func_append rpath "$dir:"
- done
- compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- if test -n "$finalize_perm_rpath"; then
- # We should set the runpath_var.
- rpath=
- for dir in $finalize_perm_rpath; do
- func_append rpath "$dir:"
- done
- finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
- fi
- fi
-
- if test "$no_install" = yes; then
- # We don't need to create a wrapper script.
- link_command="$compile_var$compile_command$compile_rpath"
- # Replace the output file specification.
- link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
- # Delete the old output file.
- $opt_dry_run || $RM $output
- # Link the executable and exit
- func_show_eval "$link_command" 'exit $?'
-
- if test -n "$postlink_cmds"; then
- func_to_tool_file "$output"
- postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
- func_execute_cmds "$postlink_cmds" 'exit $?'
- fi
-
- exit $EXIT_SUCCESS
- fi
-
- if test "$hardcode_action" = relink; then
- # Fast installation is not supported
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
-
- func_warning "this platform does not like uninstalled shared libraries"
- func_warning "\`$output' will be relinked during installation"
- else
- if test "$fast_install" != no; then
- link_command="$finalize_var$compile_command$finalize_rpath"
- if test "$fast_install" = yes; then
- relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
- else
- # fast_install is set to needless
- relink_command=
- fi
- else
- link_command="$compile_var$compile_command$compile_rpath"
- relink_command="$finalize_var$finalize_command$finalize_rpath"
- fi
- fi
-
- # Replace the output file specification.
- link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
- # Delete the old output files.
- $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
-
- func_show_eval "$link_command" 'exit $?'
-
- if test -n "$postlink_cmds"; then
- func_to_tool_file "$output_objdir/$outputname"
- postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
- func_execute_cmds "$postlink_cmds" 'exit $?'
- fi
-
- # Now create the wrapper script.
- func_verbose "creating $output"
-
- # Quote the relink command for shipping.
- if test -n "$relink_command"; then
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
- else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- fi
- done
- relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
- fi
-
- # Only actually do things if not in dry run mode.
- $opt_dry_run || {
- # win32 will think the script is a binary if it has
- # a .exe suffix, so we strip it off here.
- case $output in
- *.exe) func_stripname '' '.exe' "$output"
- output=$func_stripname_result ;;
- esac
- # test for cygwin because mv fails w/o .exe extensions
- case $host in
- *cygwin*)
- exeext=.exe
- func_stripname '' '.exe' "$outputname"
- outputname=$func_stripname_result ;;
- *) exeext= ;;
- esac
- case $host in
- *cygwin* | *mingw* )
- func_dirname_and_basename "$output" "" "."
- output_name=$func_basename_result
- output_path=$func_dirname_result
- cwrappersource="$output_path/$objdir/lt-$output_name.c"
- cwrapper="$output_path/$output_name.exe"
- $RM $cwrappersource $cwrapper
- trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
-
- func_emit_cwrapperexe_src > $cwrappersource
-
- # The wrapper executable is built using the $host compiler,
- # because it contains $host paths and files. If cross-
- # compiling, it, like the target executable, must be
- # executed on the $host or under an emulation environment.
- $opt_dry_run || {
- $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
- $STRIP $cwrapper
- }
-
- # Now, create the wrapper script for func_source use:
- func_ltwrapper_scriptname $cwrapper
- $RM $func_ltwrapper_scriptname_result
- trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
- $opt_dry_run || {
- # note: this script will not be executed, so do not chmod.
- if test "x$build" = "x$host" ; then
- $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
- else
- func_emit_wrapper no > $func_ltwrapper_scriptname_result
- fi
- }
- ;;
- * )
- $RM $output
- trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
- func_emit_wrapper no > $output
- chmod +x $output
- ;;
- esac
- }
- exit $EXIT_SUCCESS
- ;;
- esac
-
- # See if we need to build an old-fashioned archive.
- for oldlib in $oldlibs; do
-
- if test "$build_libtool_libs" = convenience; then
- oldobjs="$libobjs_save $symfileobj"
- addlibs="$convenience"
- build_libtool_libs=no
- else
- if test "$build_libtool_libs" = module; then
- oldobjs="$libobjs_save"
- build_libtool_libs=no
- else
- oldobjs="$old_deplibs $non_pic_objects"
- if test "$preload" = yes && test -f "$symfileobj"; then
- func_append oldobjs " $symfileobj"
- fi
- fi
- addlibs="$old_convenience"
- fi
-
- if test -n "$addlibs"; then
- gentop="$output_objdir/${outputname}x"
- func_append generated " $gentop"
-
- func_extract_archives $gentop $addlibs
- func_append oldobjs " $func_extract_archives_result"
- fi
-
- # Do each command in the archive commands.
- if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
- cmds=$old_archive_from_new_cmds
- else
-
- # Add any objects from preloaded convenience libraries
- if test -n "$dlprefiles"; then
- gentop="$output_objdir/${outputname}x"
- func_append generated " $gentop"
-
- func_extract_archives $gentop $dlprefiles
- func_append oldobjs " $func_extract_archives_result"
- fi
-
- # POSIX demands no paths to be encoded in archives. We have
- # to avoid creating archives with duplicate basenames if we
- # might have to extract them afterwards, e.g., when creating a
- # static archive out of a convenience library, or when linking
- # the entirety of a libtool archive into another (currently
- # not supported by libtool).
- if (for obj in $oldobjs
- do
- func_basename "$obj"
- $ECHO "$func_basename_result"
- done | sort | sort -uc >/dev/null 2>&1); then
- :
- else
- echo "copying selected object files to avoid basename conflicts..."
- gentop="$output_objdir/${outputname}x"
- func_append generated " $gentop"
- func_mkdir_p "$gentop"
- save_oldobjs=$oldobjs
- oldobjs=
- counter=1
- for obj in $save_oldobjs
- do
- func_basename "$obj"
- objbase="$func_basename_result"
- case " $oldobjs " in
- " ") oldobjs=$obj ;;
- *[\ /]"$objbase "*)
- while :; do
- # Make sure we don't pick an alternate name that also
- # overlaps.
- newobj=lt$counter-$objbase
- func_arith $counter + 1
- counter=$func_arith_result
- case " $oldobjs " in
- *[\ /]"$newobj "*) ;;
- *) if test ! -f "$gentop/$newobj"; then break; fi ;;
- esac
- done
- func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
- func_append oldobjs " $gentop/$newobj"
- ;;
- *) func_append oldobjs " $obj" ;;
- esac
- done
- fi
- func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
- tool_oldlib=$func_to_tool_file_result
- eval cmds=\"$old_archive_cmds\"
-
- func_len " $cmds"
- len=$func_len_result
- if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
- cmds=$old_archive_cmds
- elif test -n "$archiver_list_spec"; then
- func_verbose "using command file archive linking..."
- for obj in $oldobjs
- do
- func_to_tool_file "$obj"
- $ECHO "$func_to_tool_file_result"
- done > $output_objdir/$libname.libcmd
- func_to_tool_file "$output_objdir/$libname.libcmd"
- oldobjs=" $archiver_list_spec$func_to_tool_file_result"
- cmds=$old_archive_cmds
- else
- # the command line is too long to link in one step, link in parts
- func_verbose "using piecewise archive linking..."
- save_RANLIB=$RANLIB
- RANLIB=:
- objlist=
- concat_cmds=
- save_oldobjs=$oldobjs
- oldobjs=
- # Is there a better way of finding the last object in the list?
- for obj in $save_oldobjs
- do
- last_oldobj=$obj
- done
- eval test_cmds=\"$old_archive_cmds\"
- func_len " $test_cmds"
- len0=$func_len_result
- len=$len0
- for obj in $save_oldobjs
- do
- func_len " $obj"
- func_arith $len + $func_len_result
- len=$func_arith_result
- func_append objlist " $obj"
- if test "$len" -lt "$max_cmd_len"; then
- :
- else
- # the above command should be used before it gets too long
- oldobjs=$objlist
- if test "$obj" = "$last_oldobj" ; then
- RANLIB=$save_RANLIB
- fi
- test -z "$concat_cmds" || concat_cmds=$concat_cmds~
- eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
- objlist=
- len=$len0
- fi
- done
- RANLIB=$save_RANLIB
- oldobjs=$objlist
- if test "X$oldobjs" = "X" ; then
- eval cmds=\"\$concat_cmds\"
- else
- eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
- fi
- fi
- fi
- func_execute_cmds "$cmds" 'exit $?'
- done
-
- test -n "$generated" && \
- func_show_eval "${RM}r$generated"
-
- # Now create the libtool archive.
- case $output in
- *.la)
- old_library=
- test "$build_old_libs" = yes && old_library="$libname.$libext"
- func_verbose "creating $output"
-
- # Preserve any variables that may affect compiler behavior
- for var in $variables_saved_for_relink; do
- if eval test -z \"\${$var+set}\"; then
- relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
- elif eval var_value=\$$var; test -z "$var_value"; then
- relink_command="$var=; export $var; $relink_command"
- else
- func_quote_for_eval "$var_value"
- relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
- fi
- done
- # Quote the link command for shipping.
- relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
- if test "$hardcode_automatic" = yes ; then
- relink_command=
- fi
-
- # Only create the output if not a dry run.
- $opt_dry_run || {
- for installed in no yes; do
- if test "$installed" = yes; then
- if test -z "$install_libdir"; then
- break
- fi
- output="$output_objdir/$outputname"i
- # Replace all uninstalled libtool libraries with the installed ones
- newdependency_libs=
- for deplib in $dependency_libs; do
- case $deplib in
- *.la)
- func_basename "$deplib"
- name="$func_basename_result"
- func_resolve_sysroot "$deplib"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
- test -z "$libdir" && \
- func_fatal_error "\`$deplib' is not a valid libtool archive"
- func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
- ;;
- -L*)
- func_stripname -L '' "$deplib"
- func_replace_sysroot "$func_stripname_result"
- func_append newdependency_libs " -L$func_replace_sysroot_result"
- ;;
- -R*)
- func_stripname -R '' "$deplib"
- func_replace_sysroot "$func_stripname_result"
- func_append newdependency_libs " -R$func_replace_sysroot_result"
- ;;
- *) func_append newdependency_libs " $deplib" ;;
- esac
- done
- dependency_libs="$newdependency_libs"
- newdlfiles=
-
- for lib in $dlfiles; do
- case $lib in
- *.la)
- func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
- func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
- ;;
- *) func_append newdlfiles " $lib" ;;
- esac
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
- for lib in $dlprefiles; do
- case $lib in
- *.la)
- # Only pass preopened files to the pseudo-archive (for
- # eventual linking with the app. that links it) if we
- # didn't already link the preopened objects directly into
- # the library:
- func_basename "$lib"
- name="$func_basename_result"
- eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
- test -z "$libdir" && \
- func_fatal_error "\`$lib' is not a valid libtool archive"
- func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
- ;;
- esac
- done
- dlprefiles="$newdlprefiles"
- else
- newdlfiles=
- for lib in $dlfiles; do
- case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
- func_append newdlfiles " $abs"
- done
- dlfiles="$newdlfiles"
- newdlprefiles=
- for lib in $dlprefiles; do
- case $lib in
- [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
- *) abs=`pwd`"/$lib" ;;
- esac
- func_append newdlprefiles " $abs"
- done
- dlprefiles="$newdlprefiles"
- fi
- $RM $output
- # place dlname in correct position for cygwin
- # In fact, it would be nice if we could use this code for all target
- # systems that can't hard-code library paths into their executables
- # and that have no shared library path variable independent of PATH,
- # but it turns out we can't easily determine that from inspecting
- # libtool variables, so we have to hard-code the OSs to which it
- # applies here; at the moment, that means platforms that use the PE
- # object format with DLL files. See the long comment at the top of
- # tests/bindir.at for full details.
- tdlname=$dlname
- case $host,$output,$installed,$module,$dlname in
- *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
- # If a -bindir argument was supplied, place the dll there.
- if test "x$bindir" != x ;
- then
- func_relative_path "$install_libdir" "$bindir"
- tdlname=$func_relative_path_result$dlname
- else
- # Otherwise fall back on heuristic.
- tdlname=../bin/$dlname
- fi
- ;;
- esac
- $ECHO > $output "\
-# $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# The name that we can dlopen(3).
-dlname='$tdlname'
-
-# Names of this library.
-library_names='$library_names'
-
-# The name of the static archive.
-old_library='$old_library'
-
-# Linker flags that can not go in dependency_libs.
-inherited_linker_flags='$new_inherited_linker_flags'
-
-# Libraries that this one depends upon.
-dependency_libs='$dependency_libs'
-
-# Names of additional weak libraries provided by this library
-weak_library_names='$weak_libs'
-
-# Version information for $libname.
-current=$current
-age=$age
-revision=$revision
-
-# Is this an already installed library?
-installed=$installed
-
-# Should we warn about portability when linking against -modules?
-shouldnotlink=$module
-
-# Files to dlopen/dlpreopen
-dlopen='$dlfiles'
-dlpreopen='$dlprefiles'
-
-# Directory that this library needs to be installed in:
-libdir='$install_libdir'"
- if test "$installed" = no && test "$need_relink" = yes; then
- $ECHO >> $output "\
-relink_command=\"$relink_command\""
- fi
- done
- }
-
- # Do a symbolic link so that the libtool archive can be found in
- # LD_LIBRARY_PATH before the program is installed.
- func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
- ;;
- esac
- exit $EXIT_SUCCESS
-}
-
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
- func_mode_link ${1+"$@"}
-
-
-# func_mode_uninstall arg...
-func_mode_uninstall ()
-{
- $opt_debug
- RM="$nonopt"
- files=
- rmforce=
- exit_status=0
-
- # This variable tells wrapper scripts just to set variables rather
- # than running their programs.
- libtool_install_magic="$magic"
-
- for arg
- do
- case $arg in
- -f) func_append RM " $arg"; rmforce=yes ;;
- -*) func_append RM " $arg" ;;
- *) func_append files " $arg" ;;
- esac
- done
-
- test -z "$RM" && \
- func_fatal_help "you must specify an RM program"
-
- rmdirs=
-
- for file in $files; do
- func_dirname "$file" "" "."
- dir="$func_dirname_result"
- if test "X$dir" = X.; then
- odir="$objdir"
- else
- odir="$dir/$objdir"
- fi
- func_basename "$file"
- name="$func_basename_result"
- test "$opt_mode" = uninstall && odir="$dir"
-
- # Remember odir for removal later, being careful to avoid duplicates
- if test "$opt_mode" = clean; then
- case " $rmdirs " in
- *" $odir "*) ;;
- *) func_append rmdirs " $odir" ;;
- esac
- fi
-
- # Don't error if the file doesn't exist and rm -f was used.
- if { test -L "$file"; } >/dev/null 2>&1 ||
- { test -h "$file"; } >/dev/null 2>&1 ||
- test -f "$file"; then
- :
- elif test -d "$file"; then
- exit_status=1
- continue
- elif test "$rmforce" = yes; then
- continue
- fi
-
- rmfiles="$file"
-
- case $name in
- *.la)
- # Possibly a libtool archive, so verify it.
- if func_lalib_p "$file"; then
- func_source $dir/$name
-
- # Delete the libtool libraries and symlinks.
- for n in $library_names; do
- func_append rmfiles " $odir/$n"
- done
- test -n "$old_library" && func_append rmfiles " $odir/$old_library"
-
- case "$opt_mode" in
- clean)
- case " $library_names " in
- *" $dlname "*) ;;
- *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
- esac
- test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
- ;;
- uninstall)
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
- func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
-
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
- func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
- fi
- # FIXME: should reinstall the best remaining shared library.
- ;;
- esac
- fi
- ;;
-
- *.lo)
- # Possibly a libtool object, so verify it.
- if func_lalib_p "$file"; then
-
- # Read the .lo file
- func_source $dir/$name
-
- # Add PIC object to the list of files to remove.
- if test -n "$pic_object" &&
- test "$pic_object" != none; then
- func_append rmfiles " $dir/$pic_object"
- fi
-
- # Add non-PIC object to the list of files to remove.
- if test -n "$non_pic_object" &&
- test "$non_pic_object" != none; then
- func_append rmfiles " $dir/$non_pic_object"
- fi
- fi
- ;;
-
- *)
- if test "$opt_mode" = clean ; then
- noexename=$name
- case $file in
- *.exe)
- func_stripname '' '.exe' "$file"
- file=$func_stripname_result
- func_stripname '' '.exe' "$name"
- noexename=$func_stripname_result
- # $file with .exe has already been added to rmfiles,
- # add $file without .exe
- func_append rmfiles " $file"
- ;;
- esac
- # Do a test to see if this is a libtool program.
- if func_ltwrapper_p "$file"; then
- if func_ltwrapper_executable_p "$file"; then
- func_ltwrapper_scriptname "$file"
- relink_command=
- func_source $func_ltwrapper_scriptname_result
- func_append rmfiles " $func_ltwrapper_scriptname_result"
- else
- relink_command=
- func_source $dir/$noexename
- fi
-
- # note $name still contains .exe if it was in $file originally
- # as does the version of $file that was added into $rmfiles
- func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
- if test "$fast_install" = yes && test -n "$relink_command"; then
- func_append rmfiles " $odir/lt-$name"
- fi
- if test "X$noexename" != "X$name" ; then
- func_append rmfiles " $odir/lt-${noexename}.c"
- fi
- fi
- fi
- ;;
- esac
- func_show_eval "$RM $rmfiles" 'exit_status=1'
- done
-
- # Try to remove the ${objdir}s in the directories where we deleted files
- for dir in $rmdirs; do
- if test -d "$dir"; then
- func_show_eval "rmdir $dir >/dev/null 2>&1"
- fi
- done
-
- exit $exit_status
-}
-
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
- func_mode_uninstall ${1+"$@"}
-
-test -z "$opt_mode" && {
- help="$generic_help"
- func_fatal_help "you must specify a MODE"
-}
-
-test -z "$exec_cmd" && \
- func_fatal_help "invalid operation mode \`$opt_mode'"
-
-if test -n "$exec_cmd"; then
- eval exec "$exec_cmd"
- exit $EXIT_FAILURE
-fi
-
-exit $exit_status
-
-
-# The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries. Given conflicting
-# choices, we go for a static library, that is the most portable,
-# since we can't tell whether shared libraries were disabled because
-# the user asked for that or because the platform doesn't support
-# them. This is particularly important on AIX, because we don't
-# support having both static and shared libraries enabled at the same
-# time on that platform, so we default to a shared-only configuration.
-# If a disable-shared tag is given, we'll fallback to a static-only
-# configuration. But we'll never go from static-only to shared-only.
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
-# ### END LIBTOOL TAG CONFIG: disable-shared
-
-# ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-# ### END LIBTOOL TAG CONFIG: disable-static
-
-# Local Variables:
-# mode:shell-script
-# sh-indentation:2
-# End:
-# vi:sw=2
-
diff --git a/ltmain.sh.patch b/ltmain.sh.patch
new file mode 100644
index 0000000..de0a798
--- /dev/null
+++ b/ltmain.sh.patch
@@ -0,0 +1,44 @@
+Author: Henning Meirer-Geinitz
+
+ Use "libsane" soname for every backend (all systems but AIX and mingw)
+
+diff --git a/ltmain.sh b/ltmain.sh
+--- a/ltmain.sh
++++ b/ltmain.sh
+@@ -9615,6 +9615,23 @@ EOF
+ dlname=$soname
+ fi
+
++ # If -module or -export-dynamic was specified, set the dlname
++ if test "$module" = yes || test "$export_dynamic" = yes; then
++ # On all known operating systems, these are identical.
++ dlname="$soname"
++ fi
++
++ # On sane-backends the internal name for every lib is "libsane"
++ # not "libsane-backendname" so that linking to each backend is possible.
++ case $host in
++ *mingw*)
++ ;;
++ *aix*)
++ ;;
++ *)
++ soname=`echo $soname | sed -e "s/libsane-[A-Za-z_0-9]*/libsane/g"`
++ esac
++
+ lib=$output_objdir/$realname
+ linknames=
+ for link
+@@ -10073,12 +10090,6 @@ EOF
+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+ fi
+ done
+-
+- # If -module or -export-dynamic was specified, set the dlname.
+- if test yes = "$module" || test yes = "$export_dynamic"; then
+- # On all known operating systems, these are identical.
+- dlname=$soname
+- fi
+ fi
+ ;;
+
diff --git a/m4/byteorder.m4 b/m4/byteorder.m4
index c8b91d3..c4cb423 100644
--- a/m4/byteorder.m4
+++ b/m4/byteorder.m4
@@ -20,7 +20,7 @@ AC_EGREP_CPP([symbol is present|\<$1\>],[
#ifdef $1
symbol is present
#endif
- ],
+ ],
[AC_MSG_RESULT(yes)
$3
],
diff --git a/m4/gettext.m4 b/m4/gettext.m4
deleted file mode 100644
index f84e6a5..0000000
--- a/m4/gettext.m4
+++ /dev/null
@@ -1,383 +0,0 @@
-# gettext.m4 serial 63 (gettext-0.18)
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl default (if it is not specified or empty) is 'no-libtool'.
-dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl depending on --{enable,disable}-{shared,static} and on the presence of
-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl implementations (in libc or libintl) without the ngettext() function
-dnl will be ignored. If NEEDSYMBOL is specified and is
-dnl 'need-formatstring-macros', then GNU gettext implementations that don't
-dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-dnl INTLDIR is used to find the intl libraries. If empty,
-dnl the value `$(top_builddir)/intl/' is used.
-dnl
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl and used.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl Catalog format: none
-dnl Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
- dnl Argument checking.
- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
- ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
- [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
- define([gt_included_intl],
- ifelse([$1], [external],
- ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
- [yes]))
- define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
- gt_NEEDS_INIT
- AM_GNU_GETTEXT_NEED([$2])
-
- AC_REQUIRE([AM_PO_SUBDIRS])dnl
- ifelse(gt_included_intl, yes, [
- AC_REQUIRE([AM_INTL_SUBDIR])dnl
- ])
-
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- dnl Ideally we would do this search only after the
- dnl if test "$USE_NLS" = "yes"; then
- dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
- dnl the configure script would need to contain the same shell code
- dnl again, outside any 'if'. There are two solutions:
- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
- dnl documented, we avoid it.
- ifelse(gt_included_intl, yes, , [
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
- ])
-
- dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
- gt_INTL_MACOSX
-
- dnl Set USE_NLS.
- AC_REQUIRE([AM_NLS])
-
- ifelse(gt_included_intl, yes, [
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
- ])
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- dnl Add a version number to the cache macros.
- case " $gt_needs " in
- *" need-formatstring-macros "*) gt_api_version=3 ;;
- *" need-ngettext "*) gt_api_version=2 ;;
- *) gt_api_version=1 ;;
- esac
- gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
- gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
- ifelse(gt_included_intl, yes, [
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH([included-gettext],
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- ])
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If GNU gettext is available we use this. Else we have
- dnl to fall back to GNU NLS library.
-
- if test $gt_api_version -ge 3; then
- gt_revision_test_code='
-#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-'
- else
- gt_revision_test_code=
- fi
- if test $gt_api_version -ge 2; then
- gt_expression_test_code=' + * ngettext ("", "", 0)'
- else
- gt_expression_test_code=
- fi
-
- AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
- [AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
- [eval "$gt_func_gnugettext_libc=yes"],
- [eval "$gt_func_gnugettext_libc=no"])])
-
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- ifelse(gt_included_intl, yes, , [
- AM_ICONV_LINK
- ])
- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
- dnl even if libiconv doesn't exist.
- AC_LIB_LINKFLAGS_BODY([intl])
- AC_CACHE_CHECK([for GNU gettext in libintl],
- [$gt_func_gnugettext_libintl],
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- dnl Now see whether libintl exists and does not depend on libiconv.
- AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
- [eval "$gt_func_gnugettext_libintl=yes"],
- [eval "$gt_func_gnugettext_libintl=no"])
- dnl Now see whether libintl exists and depends on libiconv.
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <libintl.h>
-$gt_revision_test_code
-extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias (const char *);],
- [bindtextdomain ("", "");
-return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- eval "$gt_func_gnugettext_libintl=yes"
- ])
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- fi
-
- dnl If an already present or preinstalled GNU gettext() is found,
- dnl use it. But if this macro is used in GNU gettext, and GNU
- dnl gettext is already preinstalled in libintl, we update this
- dnl libintl. (Cf. the install rule in intl/Makefile.in.)
- if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
- || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- dnl Reset the values set by searching for libintl.
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
- ifelse(gt_included_intl, yes, [
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- dnl GNU gettext is not found in the C library.
- dnl Fall back on included GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
-
- CATOBJEXT=
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions to use GNU gettext tools.
- CATOBJEXT=.gmo
- fi
- ])
-
- if test -n "$INTL_MACOSX_LIBS"; then
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Some extra flags are needed during linking.
- LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
- LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
- fi
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- AC_DEFINE([ENABLE_NLS], [1],
- [Define to 1 if translation of program messages to the user's native language
- is requested.])
- else
- USE_NLS=no
- fi
- fi
-
- AC_MSG_CHECKING([whether to use NLS])
- AC_MSG_RESULT([$USE_NLS])
- if test "$USE_NLS" = "yes"; then
- AC_MSG_CHECKING([where the gettext function comes from])
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- AC_MSG_RESULT([$gt_source])
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- AC_MSG_CHECKING([how to link with libintl])
- AC_MSG_RESULT([$LIBINTL])
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
- fi
-
- dnl For backward compatibility. Some packages may be using this.
- AC_DEFINE([HAVE_GETTEXT], [1],
- [Define if the GNU gettext() function is already present or preinstalled.])
- AC_DEFINE([HAVE_DCGETTEXT], [1],
- [Define if the GNU dcgettext() function is already present or preinstalled.])
- fi
-
- dnl We need to process the po/ directory.
- POSUB=po
- fi
-
- ifelse(gt_included_intl, yes, [
- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
- dnl to 'yes' because some of the testsuite requires it.
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST([BUILD_INCLUDED_LIBINTL])
- AC_SUBST([USE_INCLUDED_LIBINTL])
- AC_SUBST([CATOBJEXT])
-
- dnl For backward compatibility. Some configure.ins may be using this.
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- dnl For backward compatibility. Some Makefiles may be using this.
- DATADIRNAME=share
- AC_SUBST([DATADIRNAME])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INSTOBJEXT=.mo
- AC_SUBST([INSTOBJEXT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- GENCAT=gencat
- AC_SUBST([GENCAT])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLOBJS=
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
- AC_SUBST([INTLOBJS])
-
- dnl Enable libtool support if the surrounding package wishes it.
- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
- ])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLLIBS="$LIBINTL"
- AC_SUBST([INTLLIBS])
-
- dnl Make all documented variables known to autoconf.
- AC_SUBST([LIBINTL])
- AC_SUBST([LTLIBINTL])
- AC_SUBST([POSUB])
-])
-
-
-dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
-m4_define([gt_NEEDS_INIT],
-[
- m4_divert_text([DEFAULTS], [gt_needs=])
- m4_define([gt_NEEDS_INIT], [])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
-AC_DEFUN([AM_GNU_GETTEXT_NEED],
-[
- m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
deleted file mode 100644
index e2041b9..0000000
--- a/m4/iconv.m4
+++ /dev/null
@@ -1,214 +0,0 @@
-# iconv.m4 serial 11 (gettext-0.18.1)
-dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
- dnl those with the standalone portable GNU libiconv installed).
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
- dnl Add $INCICONV to CPPFLAGS before performing the following checks,
- dnl because if the user has installed libiconv and not disabled its use
- dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
- AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- [am_cv_func_iconv=yes])
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- [am_cv_lib_iconv=yes]
- [am_cv_func_iconv=yes])
- LIBS="$am_save_LIBS"
- fi
- ])
- if test "$am_cv_func_iconv" = yes; then
- AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
- dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
- am_save_LIBS="$LIBS"
- if test $am_cv_lib_iconv = yes; then
- LIBS="$LIBS $LIBICONV"
- fi
- AC_TRY_RUN([
-#include <iconv.h>
-#include <string.h>
-int main ()
-{
- /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
- returns. */
- {
- iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
- if (cd_utf8_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\342\202\254"; /* EURO SIGN */
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_utf8_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
- /* Test against Solaris 10 bug: Failures are not distinguishable from
- successful returns. */
- {
- iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
- if (cd_ascii_to_88591 != (iconv_t)(-1))
- {
- static const char input[] = "\263";
- char buf[10];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_ascii_to_88591,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if (res == 0)
- return 1;
- }
- }
-#if 0 /* This bug could be worked around by the caller. */
- /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
- {
- iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
- if (cd_88591_to_utf8 != (iconv_t)(-1))
- {
- static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
- char buf[50];
- const char *inptr = input;
- size_t inbytesleft = strlen (input);
- char *outptr = buf;
- size_t outbytesleft = sizeof (buf);
- size_t res = iconv (cd_88591_to_utf8,
- (char **) &inptr, &inbytesleft,
- &outptr, &outbytesleft);
- if ((int)res > 0)
- return 1;
- }
- }
-#endif
- /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
- provided. */
- if (/* Try standardized names. */
- iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
- /* Try IRIX, OSF/1 names. */
- && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
- /* Try AIX names. */
- && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
- /* Try HP-UX names. */
- && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
- return 1;
- return 0;
-}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
- [case "$host_os" in
- aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
- *) am_cv_func_iconv_works="guessing yes" ;;
- esac])
- LIBS="$am_save_LIBS"
- ])
- case "$am_cv_func_iconv_works" in
- *no) am_func_iconv=no am_cv_lib_iconv=no ;;
- *) am_func_iconv=yes ;;
- esac
- else
- am_func_iconv=no am_cv_lib_iconv=no
- fi
- if test "$am_func_iconv" = yes; then
- AC_DEFINE([HAVE_ICONV], [1],
- [Define if you have the iconv() function and it works.])
- fi
- if test "$am_cv_lib_iconv" = yes; then
- AC_MSG_CHECKING([how to link with libiconv])
- AC_MSG_RESULT([$LIBICONV])
- else
- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
- dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
- AC_SUBST([LIBICONV])
- AC_SUBST([LTLIBICONV])
-])
-
-dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
-dnl avoid warnings like
-dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
-dnl This is tricky because of the way 'aclocal' is implemented:
-dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
-dnl Otherwise aclocal's initial scan pass would miss the macro definition.
-dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
-dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
-dnl warnings.
-m4_define([gl_iconv_AC_DEFUN],
- m4_version_prereq([2.64],
- [[AC_DEFUN_ONCE(
- [$1], [$2])]],
- [[AC_DEFUN(
- [$1], [$2])]]))
-gl_iconv_AC_DEFUN([AM_ICONV],
-[
- AM_ICONV_LINK
- if test "$am_cv_func_iconv" = yes; then
- AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL([am_cv_proto_iconv], [
- AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([
- $am_cv_proto_iconv])
- AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
- [Define as const if the declaration of iconv() needs const.])
- fi
-])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
deleted file mode 100644
index dd91025..0000000
--- a/m4/intlmacosx.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-# intlmacosx.m4 serial 3 (gettext-0.18)
-dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Checks for special options needed on MacOS X.
-dnl Defines INTL_MACOSX_LIBS.
-AC_DEFUN([gt_INTL_MACOSX],
-[
- dnl Check for API introduced in MacOS X 10.2.
- AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
- [gt_cv_func_CFPreferencesCopyAppValue],
- [gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
- [CFPreferencesCopyAppValue(NULL, NULL)],
- [gt_cv_func_CFPreferencesCopyAppValue=yes],
- [gt_cv_func_CFPreferencesCopyAppValue=no])
- LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
- AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
- [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
- fi
- dnl Check for API introduced in MacOS X 10.3.
- AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
- [gt_save_LIBS="$LIBS"
- LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
- AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
- [gt_cv_func_CFLocaleCopyCurrent=yes],
- [gt_cv_func_CFLocaleCopyCurrent=no])
- LIBS="$gt_save_LIBS"])
- if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
- [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
- fi
- INTL_MACOSX_LIBS=
- if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
- INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
- fi
- AC_SUBST([INTL_MACOSX_LIBS])
-])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
deleted file mode 100644
index ebb3052..0000000
--- a/m4/lib-ld.m4
+++ /dev/null
@@ -1,110 +0,0 @@
-# lib-ld.m4 serial 4 (gettext-0.18)
-dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- acl_cv_prog_gnu_ld=yes ;;
-*)
- acl_cv_prog_gnu_ld=no ;;
-esac])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH([gnu-ld],
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]* | [A-Za-z]:[\\/]*)]
- [re_direlt='/[^/][^/]*/\.\./']
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL([acl_cv_path_LD],
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break ;;
- *)
- test "$with_gnu_ld" != yes && break ;;
- esac
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT([$LD])
-else
- AC_MSG_RESULT([no])
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
deleted file mode 100644
index c73bd8e..0000000
--- a/m4/lib-link.m4
+++ /dev/null
@@ -1,774 +0,0 @@
-# lib-link.m4 serial 21 (gettext-0.18)
-dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-AC_PREREQ([2.54])
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- pushdef([Name],[translit([$1],[./-], [___])])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
- ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
- ])
- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
- LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- AC_SUBST([LIB]NAME[_PREFIX])
- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
- dnl results of this search when this library appears as a dependency.
- HAVE_LIB[]NAME=yes
- popdef([NAME])
- popdef([Name])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. The missing-message
-dnl defaults to 'no' and may contain additional hints for the user.
-dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
-dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
-dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- pushdef([Name],[translit([$1],[./-], [___])])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
- dnl because if the user has installed lib[]Name and not disabled its use
- dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
- dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
- dnl because these -l options might require -L options that are present in
- dnl LIBS. -l options benefit only from the -L options listed before it.
- dnl Otherwise, add it to the front of LIBS, because it may be a static
- dnl library that depends on another static library that is present in LIBS.
- dnl Static libraries benefit only from the static libraries listed after
- dnl it.
- case " $LIB[]NAME" in
- *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
- *) LIBS="$LIB[]NAME $LIBS" ;;
- esac
- AC_TRY_LINK([$3], [$4],
- [ac_cv_lib[]Name=yes],
- [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib[]Name" = yes; then
- HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
- AC_MSG_CHECKING([how to link with lib[]$1])
- AC_MSG_RESULT([$LIB[]NAME])
- else
- HAVE_LIB[]NAME=no
- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
- dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIB[]NAME=
- LTLIB[]NAME=
- LIB[]NAME[]_PREFIX=
- fi
- AC_SUBST([HAVE_LIB]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- AC_SUBST([LIB]NAME[_PREFIX])
- popdef([NAME])
- popdef([Name])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl acl_libext,
-dnl acl_shlibext,
-dnl acl_hardcode_libdir_flag_spec,
-dnl acl_hardcode_libdir_separator,
-dnl acl_hardcode_direct,
-dnl acl_hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
- dnl Tell automake >= 1.10 to complain if config.rpath is missing.
- m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
- ])
- wl="$acl_cv_wl"
- acl_libext="$acl_cv_libext"
- acl_shlibext="$acl_cv_shlibext"
- acl_libname_spec="$acl_cv_libname_spec"
- acl_library_names_spec="$acl_cv_library_names_spec"
- acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- acl_hardcode_direct="$acl_cv_hardcode_direct"
- acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
- dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE([rpath],
- [ --disable-rpath do not hardcode runtime library paths],
- :, enable_rpath=yes)
-])
-
-dnl AC_LIB_FROMPACKAGE(name, package)
-dnl declares that libname comes from the given package. The configure file
-dnl will then not have a --with-libname-prefix option but a
-dnl --with-package-prefix option. Several libraries can come from the same
-dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
-dnl macro call that searches for libname.
-AC_DEFUN([AC_LIB_FROMPACKAGE],
-[
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- define([acl_frompackage_]NAME, [$2])
- popdef([NAME])
- pushdef([PACK],[$2])
- pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- define([acl_libsinpackage_]PACKUP,
- m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
- popdef([PACKUP])
- popdef([PACK])
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
-dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
- pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
- dnl Autoconf >= 2.61 supports dots in --with options.
- pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_ARG_WITH(P_A_C_K[-prefix],
-[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
- --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- if test "$acl_libdirstem2" != "$acl_libdirstem" \
- && ! test -d "$withval/$acl_libdirstem"; then
- additional_libdir="$withval/$acl_libdirstem2"
- fi
- fi
- fi
-])
- dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
- LIB[]NAME=
- LTLIB[]NAME=
- INC[]NAME=
- LIB[]NAME[]_PREFIX=
- dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
- dnl computed. So it has to be reset here.
- HAVE_LIB[]NAME=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='$1 $2'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
- dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
- else
- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
- dnl that this library doesn't exist. So just drop it.
- :
- fi
- else
- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
- dnl and the already constructed $LIBNAME/$LTLIBNAME.
- found_dir=
- found_la=
- found_so=
- found_a=
- eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
- if test -n "$acl_shlibext"; then
- shrext=".$acl_shlibext" # typically: shrext=.so
- else
- shrext=
- fi
- if test $use_additional = yes; then
- dir="$additional_libdir"
- dnl The same code as in the loop below:
- dnl First look for a shared library.
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- dnl Then look for a static library.
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- dnl First look for a shared library.
- if test -n "$acl_shlibext"; then
- if test -f "$dir/$libname$shrext"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext"
- else
- if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
- ver=`(cd "$dir" && \
- for f in "$libname$shrext".*; do echo "$f"; done \
- | sed -e "s,^$libname$shrext\\\\.,," \
- | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
- | sed 1q ) 2>/dev/null`
- if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
- found_dir="$dir"
- found_so="$dir/$libname$shrext.$ver"
- fi
- else
- eval library_names=\"$acl_library_names_spec\"
- for f in $library_names; do
- if test -f "$dir/$f"; then
- found_dir="$dir"
- found_so="$dir/$f"
- break
- fi
- done
- fi
- fi
- fi
- dnl Then look for a static library.
- if test "X$found_dir" = "X"; then
- if test -f "$dir/$libname.$acl_libext"; then
- found_dir="$dir"
- found_a="$dir/$libname.$acl_libext"
- fi
- fi
- if test "X$found_dir" != "X"; then
- if test -f "$dir/$libname.la"; then
- found_la="$dir/$libname.la"
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- dnl Found the library.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- dnl Linking with a shared library. We attempt to hardcode its
- dnl directory into the executable's runpath, unless it's the
- dnl standard /usr/lib.
- if test "$enable_rpath" = no \
- || test "X$found_dir" = "X/usr/$acl_libdirstem" \
- || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
- dnl No hardcoding is needed.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- dnl The hardcoding into $LIBNAME is system dependent.
- if test "$acl_hardcode_direct" = yes; then
- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
- dnl resulting binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- dnl Rely on "-L$found_dir".
- dnl But don't add it if it's already contained in the LDFLAGS
- dnl or the already constructed $LIBNAME
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
- fi
- if test "$acl_hardcode_minus_L" != no; then
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
- dnl here, because this doesn't fit in flags passed to the
- dnl compiler. So give up. No hardcoding. This affects only
- dnl very old systems.
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- dnl Linking with a static library.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
- else
- dnl We shouldn't come here, but anyway it's good to have a
- dnl fallback.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
- fi
- fi
- dnl Assume the include files are nearby.
- additional_includedir=
- case "$found_dir" in
- */$acl_libdirstem | */$acl_libdirstem/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
- if test "$name" = '$1'; then
- LIB[]NAME[]_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- */$acl_libdirstem2 | */$acl_libdirstem2/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
- if test "$name" = '$1'; then
- LIB[]NAME[]_PREFIX="$basedir"
- fi
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- dnl Potentially add $additional_includedir to $INCNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
- dnl 3. if it's already present in $CPPFLAGS or the already
- dnl constructed $INCNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INC[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $INCNAME.
- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- dnl Look for dependencies.
- if test -n "$found_la"; then
- dnl Read the .la file. It defines the variables
- dnl dlname, library_names, old_library, dependency_libs, current,
- dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- dnl We use only dependency_libs.
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 3. if it's already present in $LDFLAGS or the already
- dnl constructed $LIBNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
- && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
- || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- dnl Handle this in the next round.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- dnl Handle this in the next round. Throw away the .la's
- dnl directory; it is already contained in a preceding -L
- dnl option.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- dnl Most likely an immediate library name.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
- ;;
- esac
- done
- fi
- else
- dnl Didn't find the library; assume it is in the system directories
- dnl known to the linker and runtime loader. (All the system
- dnl directories known to the linker should also be known to the
- dnl runtime loader, otherwise the system is severely misconfigured.)
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$acl_hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user must
- dnl pass all path elements in one option. We can arrange that for a
- dnl single library, but not when more than one $LIBNAMEs are used.
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
- done
- dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- else
- dnl The -rpath options are cumulative.
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- dnl When using libtool, the option that works for both libraries and
- dnl executables is -R. The -R options are cumulative.
- for found_dir in $ltrpathdirs; do
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
- done
- fi
- popdef([P_A_C_K])
- popdef([PACKLIBS])
- popdef([PACKUP])
- popdef([PACK])
- popdef([NAME])
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
- for element in [$2]; do
- haveit=
- for x in $[$1]; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- [$1]="${[$1]}${[$1]:+ }$element"
- fi
- done
-])
-
-dnl For those cases where a variable contains several -L and -l options
-dnl referring to unknown libraries and directories, this macro determines the
-dnl necessary additional linker options for the runtime path.
-dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
-dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
-dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
-dnl otherwise linking without libtool is assumed.
-AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-[
- AC_REQUIRE([AC_LIB_RPATH])
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- $1=
- if test "$enable_rpath" != no; then
- if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode directories into the resulting
- dnl binary.
- rpathdirs=
- next=
- for opt in $2; do
- if test -n "$next"; then
- dir="$next"
- dnl No need to hardcode the standard /usr/lib.
- if test "X$dir" != "X/usr/$acl_libdirstem" \
- && test "X$dir" != "X/usr/$acl_libdirstem2"; then
- rpathdirs="$rpathdirs $dir"
- fi
- next=
- else
- case $opt in
- -L) next=yes ;;
- -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
- dnl No need to hardcode the standard /usr/lib.
- if test "X$dir" != "X/usr/$acl_libdirstem" \
- && test "X$dir" != "X/usr/$acl_libdirstem2"; then
- rpathdirs="$rpathdirs $dir"
- fi
- next= ;;
- *) next= ;;
- esac
- fi
- done
- if test "X$rpathdirs" != "X"; then
- if test -n ""$3""; then
- dnl libtool is used for linking. Use -R options.
- for dir in $rpathdirs; do
- $1="${$1}${$1:+ }-R$dir"
- done
- else
- dnl The linker is used for linking directly.
- if test -n "$acl_hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user
- dnl must pass all path elements in one option.
- alldirs=
- for dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
- done
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- $1="$flag"
- else
- dnl The -rpath options are cumulative.
- for dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$dir"
- eval flag=\"$acl_hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- $1="${$1}${$1:+ }$flag"
- done
- fi
- fi
- fi
- fi
- fi
- AC_SUBST([$1])
-])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
deleted file mode 100644
index 1601cea..0000000
--- a/m4/lib-prefix.m4
+++ /dev/null
@@ -1,224 +0,0 @@
-# lib-prefix.m4 serial 7 (gettext-0.18)
-dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/$acl_libdirstem"
- fi
- fi
-])
- if test $use_additional = yes; then
- dnl Potentially add $additional_includedir to $CPPFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's already present in $CPPFLAGS,
- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- for x in $CPPFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux* | gnu* | k*bsd*-gnu) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $CPPFLAGS.
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- dnl Potentially add $additional_libdir to $LDFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's already present in $LDFLAGS,
- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
- haveit=
- for x in $LDFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LDFLAGS.
- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
- dnl Unfortunately, prefix and exec_prefix get only finally determined
- dnl at the end of configure.
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- $1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_PREPARE_MULTILIB creates
-dnl - a variable acl_libdirstem, containing the basename of the libdir, either
-dnl "lib" or "lib64" or "lib/64",
-dnl - a variable acl_libdirstem2, as a secondary possible value for
-dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
-dnl "lib/amd64".
-AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
-[
- dnl There is no formal standard regarding lib and lib64.
- dnl On glibc systems, the current practice is that on a system supporting
- dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
- dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
- dnl the compiler's default mode by looking at the compiler's library search
- dnl path. If at least one of its elements ends in /lib64 or points to a
- dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
- dnl Otherwise we use the default, namely "lib".
- dnl On Solaris systems, the current practice is that on a system supporting
- dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
- dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
- dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
- AC_REQUIRE([AC_CANONICAL_HOST])
- acl_libdirstem=lib
- acl_libdirstem2=
- case "$host_os" in
- solaris*)
- dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
- dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
- dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
- dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
- dnl symlink is missing, so we set acl_libdirstem2 too.
- AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
- [AC_EGREP_CPP([sixtyfour bits], [
-#ifdef _LP64
-sixtyfour bits
-#endif
- ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
- ])
- if test $gl_cv_solaris_64bit = yes; then
- acl_libdirstem=lib/64
- case "$host_cpu" in
- sparc*) acl_libdirstem2=lib/sparcv9 ;;
- i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
- esac
- fi
- ;;
- *)
- searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
- if test -n "$searchpath"; then
- acl_save_IFS="${IFS= }"; IFS=":"
- for searchdir in $searchpath; do
- if test -d "$searchdir"; then
- case "$searchdir" in
- */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
- */../ | */.. )
- # Better ignore directories of this form. They are misleading.
- ;;
- *) searchdir=`cd "$searchdir" && pwd`
- case "$searchdir" in
- */lib64 ) acl_libdirstem=lib64 ;;
- esac ;;
- esac
- fi
- done
- IFS="$acl_save_IFS"
- fi
- ;;
- esac
- test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
-])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
deleted file mode 100644
index d7c043f..0000000
--- a/m4/libtool.m4
+++ /dev/null
@@ -1,7997 +0,0 @@
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
-# Written by Gordon Matzigkeit, 1996
-#
-# This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING. If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
- [m4_default([$3],
- [m4_fatal([Libtool version $1 or higher is required],
- 63)])],
- [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
- *\ * | *\ *)
- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
- case $cc_temp in
- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
- \-*) ;;
- *) break;;
- esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
-dnl
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
- # AIX sometimes has problems with the GCC collect2 program. For some
- # reason, if we set the COLLECT_NAMES environment variable, the problems
- # vanish in a puff of smoke.
- if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
- fi
- ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
- if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- _LT_PATH_MAGIC
- fi
- ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-## ------------------------------------- ##
-## Accumulate code for creating libtool. ##
-## ------------------------------------- ##
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
- [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
- [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
- [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-## ------------------------ ##
-## FIXME: Eliminate VARNAME ##
-## ------------------------ ##
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME. Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
- [m4_ifval([$1], [$1], [$2])])
- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
- m4_ifval([$4],
- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
- lt_dict_add_subkey([lt_decl_dict], [$2],
- [tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
- [0], [m4_fatal([$0: too few arguments: $#])],
- [1], [m4_fatal([$0: too few arguments: $#: $1])],
- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
- [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
- m4_if([$2], [],
- m4_quote(lt_decl_varnames),
- m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'. VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly. In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-# <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-# # Some comment about what VAR is for.
-# visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
- [description])))[]dnl
-m4_pushdef([_libtool_name],
- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
- [0], [_libtool_name=[$]$1],
- [1], [_libtool_name=$lt_[]$1],
- [2], [_libtool_name=$lt_[]$1],
- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'. Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
- dnl If the libtool generation code has been placed in $CONFIG_LT,
- dnl instead of duplicating it all over again into config.status,
- dnl then we will have config.status run $CONFIG_LT later, so it
- dnl needs to know what name is stored there:
- [AC_CONFIG_COMMANDS([libtool],
- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
- dnl If the libtool generation code is destined for config.status,
- dnl expand the accumulated commands and init code now:
- [AC_CONFIG_COMMANDS([libtool],
- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
- eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
- *[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
- *[[\\\\\\\`\\"\\\$]]*)
- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
- ;;
- *)
- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
- ;;
- esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable. If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins. After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script. The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
- echo
- AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
- -h, --help print this help, then exit
- -V, --version print version number, then exit
- -q, --quiet do not print progress messages
- -d, --debug don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2011 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
- case $[1] in
- --version | --v* | -V )
- echo "$lt_cl_version"; exit 0 ;;
- --help | --h* | -h )
- echo "$lt_cl_help"; exit 0 ;;
- --debug | --d* | -d )
- debug=: ;;
- --quiet | --q* | --silent | --s* | -q )
- lt_cl_silent=: ;;
-
- -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
- *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
- esac
- shift
-done
-
-if $lt_cl_silent; then
- exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure. Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
- lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars. Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
- m4_if(_LT_TAG, [C], [
- # See if we are running on zsh, and set the options which allow our
- # commands through without removal of \ escapes.
- if test -n "${ZSH_VERSION+set}" ; then
- setopt NO_GLOB_SUBST
- fi
-
- cfgfile="${ofile}T"
- trap "$RM \"$cfgfile\"; exit 1" 1 2 15
- $RM "$cfgfile"
-
- cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
- case $host_os in
- aix3*)
- cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program. For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
- COLLECT_NAMES=
- export COLLECT_NAMES
-fi
-_LT_EOF
- ;;
- esac
-
- _LT_PROG_LTMAIN
-
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- sed '$q' "$ltmain" >> "$cfgfile" \
- || (rm -f "$cfgfile"; exit 1)
-
- _LT_PROG_REPLACE_SHELLFNS
-
- mv -f "$cfgfile" "$ofile" ||
- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
- chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
- PACKAGE='$PACKAGE'
- VERSION='$VERSION'
- TIMESTAMP='$TIMESTAMP'
- RM='$RM'
- ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-# autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
- [C], [_LT_LANG(C)],
- [C++], [_LT_LANG(CXX)],
- [Go], [_LT_LANG(GO)],
- [Java], [_LT_LANG(GCJ)],
- [Fortran 77], [_LT_LANG(F77)],
- [Fortran], [_LT_LANG(FC)],
- [Windows Resource], [_LT_LANG(RC)],
- [m4_ifdef([_LT_LANG_]$1[_CONFIG],
- [_LT_LANG($1)],
- [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
- [LT_SUPPORTED_TAG([$1])dnl
- m4_append([_LT_TAGS], [$1 ])dnl
- m4_define([_LT_LANG_]$1[_enabled], [])dnl
- _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-m4_ifndef([AC_PROG_GO], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into #
-# GNU Autoconf as AC_PROG_GO. When it is available in #
-# a released version of Autoconf we should remove this #
-# macro and use it instead. #
-############################################################
-m4_defun([AC_PROG_GO],
-[AC_LANG_PUSH(Go)dnl
-AC_ARG_VAR([GOC], [Go compiler command])dnl
-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
-_AC_ARG_VAR_LDFLAGS()dnl
-AC_CHECK_TOOL(GOC, gccgo)
-if test -z "$GOC"; then
- if test -n "$ac_tool_prefix"; then
- AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
- fi
-fi
-if test -z "$GOC"; then
- AC_CHECK_PROG(GOC, gccgo, gccgo, false)
-fi
-])#m4_defun
-])#m4_ifndef
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [LT_LANG(CXX)],
- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
- [LT_LANG(F77)],
- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
- [LT_LANG(FC)],
- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
- [LT_LANG(GCJ)],
- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
- [LT_LANG(GCJ)],
- [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
- [LT_LANG(GCJ)],
- [m4_ifdef([AC_PROG_GCJ],
- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
- m4_ifdef([A][M_PROG_GCJ],
- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
- m4_ifdef([LT_PROG_GCJ],
- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([AC_PROG_GO],
- [LT_LANG(GO)],
- [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
- [LT_LANG(RC)],
- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
- case $host_os in
- rhapsody* | darwin*)
- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
- AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
- AC_CHECK_TOOL([LIPO], [lipo], [:])
- AC_CHECK_TOOL([OTOOL], [otool], [:])
- AC_CHECK_TOOL([OTOOL64], [otool64], [:])
- _LT_DECL([], [DSYMUTIL], [1],
- [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
- _LT_DECL([], [NMEDIT], [1],
- [Tool to change global to local symbols on Mac OS X])
- _LT_DECL([], [LIPO], [1],
- [Tool to manipulate fat objects and archives on Mac OS X])
- _LT_DECL([], [OTOOL], [1],
- [ldd/readelf like tool for Mach-O binaries on Mac OS X])
- _LT_DECL([], [OTOOL64], [1],
- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
- [lt_cv_apple_cc_single_mod=no
- if test -z "${LT_MULTI_MODULE}"; then
- # By default we will add the -single_module flag. You can override
- # by either setting the environment variable LT_MULTI_MODULE
- # non-empty at configure time, or by adding -multi_module to the
- # link flags.
- rm -rf libconftest.dylib*
- echo "int foo(void){return 1;}" > conftest.c
- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
- _lt_result=$?
- # If there is a non-empty error log, and "single_module"
- # appears in it, assume the flag caused a linker warning
- if test -s conftest.err && $GREP single_module conftest.err; then
- cat conftest.err >&AS_MESSAGE_LOG_FD
- # Otherwise, if the output was created with a 0 exit code from
- # the compiler, it worked.
- elif test -f libconftest.dylib && test $_lt_result -eq 0; then
- lt_cv_apple_cc_single_mod=yes
- else
- cat conftest.err >&AS_MESSAGE_LOG_FD
- fi
- rm -rf libconftest.dylib*
- rm -f conftest.*
- fi])
-
- AC_CACHE_CHECK([for -exported_symbols_list linker flag],
- [lt_cv_ld_exported_symbols_list],
- [lt_cv_ld_exported_symbols_list=no
- save_LDFLAGS=$LDFLAGS
- echo "_main" > conftest.sym
- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
- [lt_cv_ld_exported_symbols_list=yes],
- [lt_cv_ld_exported_symbols_list=no])
- LDFLAGS="$save_LDFLAGS"
- ])
-
- AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
- [lt_cv_ld_force_load=no
- cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
- echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
- $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
- cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
- _lt_result=$?
- if test -s conftest.err && $GREP force_load conftest.err; then
- cat conftest.err >&AS_MESSAGE_LOG_FD
- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
- lt_cv_ld_force_load=yes
- else
- cat conftest.err >&AS_MESSAGE_LOG_FD
- fi
- rm -f conftest.err libconftest.a conftest conftest.c
- rm -rf conftest.dSYM
- ])
- case $host_os in
- rhapsody* | darwin1.[[012]])
- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
- darwin1.*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- darwin*) # darwin 5.x on
- # if running on 10.5 or later, the deployment target defaults
- # to the OS version, if on x86, and 10.4, the deployment
- # target defaults to 10.4. Don't you love it?
- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- 10.[[012]]*)
- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
- 10.*)
- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
- esac
- ;;
- esac
- if test "$lt_cv_apple_cc_single_mod" = "yes"; then
- _lt_dar_single_mod='$single_module'
- fi
- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
- else
- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
- _lt_dsymutil='~$DSYMUTIL $lib || :'
- else
- _lt_dsymutil=
- fi
- ;;
- esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES([TAG])
-# ---------------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
- m4_require([_LT_REQUIRED_DARWIN_CHECKS])
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_automatic, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- if test "$lt_cv_ld_force_load" = "yes"; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
- m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
- [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes])
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)=''
- fi
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
- case $cc_basename in
- ifort*) _lt_dar_can_shared=yes ;;
- *) _lt_dar_can_shared=$GCC ;;
- esac
- if test "$_lt_dar_can_shared" = "yes"; then
- output_verbose_link_cmd=func_echo_all
- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
- m4_if([$1], [CXX],
-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
- fi
-],[])
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
- aix_libpath=$lt_cv_aix_libpath
-else
- AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
- [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
- lt_aix_libpath_sed='[
- /Import File Strings/,/^$/ {
- /^0/ {
- s/^0 *\([^ ]*\) *$/\1/
- p
- }
- }]'
- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- # Check for a 64-bit object if we didn't find anything.
- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
- fi],[])
- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
- fi
- ])
- aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
- ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
- ECHO='printf %s\n'
-else
- # Use this function as a fallback that always works.
- func_fallback_echo ()
- {
- eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
- }
- ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
- $ECHO "$*"
-}
-
-case "$ECHO" in
- printf*) AC_MSG_RESULT([printf]) ;;
- print*) AC_MSG_RESULT([print -r]) ;;
- *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
- test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
- PATH=/empty FPATH=/empty; export PATH FPATH
- test "X`printf %s $ECHO`" = "X$ECHO" \
- || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[ --with-sysroot[=DIR] Search for dependent libraries within DIR
- (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted. We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
- if test "$GCC" = yes; then
- lt_sysroot=`$CC --print-sysroot 2>/dev/null`
- fi
- ;; #(
- /*)
- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
- ;; #(
- no|'')
- ;; #(
- *)
- AC_MSG_RESULT([${with_sysroot}])
- AC_MSG_ERROR([The sysroot must be an absolute path.])
- ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
- [AS_HELP_STRING([--disable-libtool-lock],
- [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.$ac_objext` in
- *ELF-32*)
- HPUX_IA64_MODE="32"
- ;;
- *ELF-64*)
- HPUX_IA64_MODE="64"
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- if test "$lt_cv_prog_gnu_ld" = yes; then
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -melf32bsmip"
- ;;
- *N32*)
- LD="${LD-ld} -melf32bmipn32"
- ;;
- *64-bit*)
- LD="${LD-ld} -melf64bmip"
- ;;
- esac
- else
- case `/usr/bin/file conftest.$ac_objext` in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -64"
- ;;
- esac
- fi
- fi
- rm -rf conftest*
- ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
- *32-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_i386_fbsd"
- ;;
- x86_64-*linux*)
- case `/usr/bin/file conftest.o` in
- *x86-64*)
- LD="${LD-ld} -m elf32_x86_64"
- ;;
- *)
- LD="${LD-ld} -m elf_i386"
- ;;
- esac
- ;;
- powerpc64le-*)
- LD="${LD-ld} -m elf32lppclinux"
- ;;
- powerpc64-*)
- LD="${LD-ld} -m elf32ppclinux"
- ;;
- s390x-*linux*)
- LD="${LD-ld} -m elf_s390"
- ;;
- sparc64-*linux*)
- LD="${LD-ld} -m elf32_sparc"
- ;;
- esac
- ;;
- *64-bit*)
- case $host in
- x86_64-*kfreebsd*-gnu)
- LD="${LD-ld} -m elf_x86_64_fbsd"
- ;;
- x86_64-*linux*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- powerpcle-*)
- LD="${LD-ld} -m elf64lppc"
- ;;
- powerpc-*)
- LD="${LD-ld} -m elf64ppc"
- ;;
- s390*-*linux*|s390*-*tpf*)
- LD="${LD-ld} -m elf64_s390"
- ;;
- sparc*-*linux*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-
-*-*-sco3.2v5*)
- # On SCO OpenServer 5, we need -belf to get full-featured binaries.
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -belf"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_LANG_PUSH(C)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
- AC_LANG_POP])
- if test x"$lt_cv_cc_needs_belf" != x"yes"; then
- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
- CFLAGS="$SAVE_CFLAGS"
- fi
- ;;
-*-*solaris*)
- # Find out which ABI we are using.
- echo 'int i;' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case `/usr/bin/file conftest.o` in
- *64-bit*)
- case $lt_cv_prog_gnu_ld in
- yes*)
- case $host in
- i?86-*-solaris*)
- LD="${LD-ld} -m elf_x86_64"
- ;;
- sparc*-*-solaris*)
- LD="${LD-ld} -m elf64_sparc"
- ;;
- esac
- # GNU ld 2.21 introduced _sol2 emulations. Use them if available.
- if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
- LD="${LD-ld}_sol2"
- fi
- ;;
- *)
- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
- LD="${LD-ld} -64"
- fi
- ;;
- esac
- ;;
- esac
- fi
- rm -rf conftest*
- ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
- [lt_cv_ar_at_file=no
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
- [echo conftest.$ac_objext > conftest.lst
- lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
- AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -eq 0; then
- # Ensure the archiver fails upon bogus file names.
- rm -f conftest.$ac_objext libconftest.a
- AC_TRY_EVAL([lt_ar_try])
- if test "$ac_status" -ne 0; then
- lt_cv_ar_at_file=@
- fi
- fi
- rm -f conftest.* libconftest.a
- ])
- ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
- archiver_list_spec=
-else
- archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
- [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
- [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
- case $host_os in
- openbsd*)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
- ;;
- *)
- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
- ;;
- esac
- old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
- darwin*)
- lock_old_archive_extraction=yes ;;
- *)
- lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
- [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
- [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
- [$2=no
- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
- lt_compiler_flag="$3"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- # The option is referenced via a variable to avoid confusing sed.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$lt_compile" 2>conftest.err)
- ac_status=$?
- cat conftest.err >&AS_MESSAGE_LOG_FD
- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- if (exit $ac_status) && test -s "$ac_outfile"; then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings other than the usual output.
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- $2=yes
- fi
- fi
- $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
- m4_if([$5], , :, [$5])
-else
- m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-# [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
- [$2=no
- save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS $3"
- echo "$lt_simple_link_test_code" > conftest.$ac_ext
- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
- # The linker can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- # Append any errors to the config.log.
- cat conftest.err 1>&AS_MESSAGE_LOG_FD
- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
- if diff conftest.exp conftest.er2 >/dev/null; then
- $2=yes
- fi
- else
- $2=yes
- fi
- fi
- $RM -r conftest*
- LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
- m4_if([$4], , :, [$4])
-else
- m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
- i=0
- teststring="ABCD"
-
- case $build_os in
- msdosdjgpp*)
- # On DJGPP, this test can blow up pretty badly due to problems in libc
- # (any single argument exceeding 2000 bytes causes a buffer overrun
- # during glob expansion). Even if it were fixed, the result of this
- # check would be larger than it should be.
- lt_cv_sys_max_cmd_len=12288; # 12K is about right
- ;;
-
- gnu*)
- # Under GNU Hurd, this test is not required because there is
- # no limit to the length of command line arguments.
- # Libtool will interpret -1 as no limit whatsoever
- lt_cv_sys_max_cmd_len=-1;
- ;;
-
- cygwin* | mingw* | cegcc*)
- # On Win9x/ME, this test blows up -- it succeeds, but takes
- # about 5 minutes as the teststring grows exponentially.
- # Worse, since 9x/ME are not pre-emptively multitasking,
- # you end up with a "frozen" computer, even though with patience
- # the test eventually succeeds (with a max line length of 256k).
- # Instead, let's just punt: use the minimum linelength reported by
- # all of the supported platforms: 8192 (on NT/2K/XP).
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- mint*)
- # On MiNT this can take a long time and run out of memory.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- amigaos*)
- # On AmigaOS with pdksh, this test takes hours, literally.
- # So we just punt and use a minimum line length of 8192.
- lt_cv_sys_max_cmd_len=8192;
- ;;
-
- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
- # This has been around since 386BSD, at least. Likely further.
- if test -x /sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
- elif test -x /usr/sbin/sysctl; then
- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
- else
- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
- fi
- # And add a safety zone
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- ;;
-
- interix*)
- # We know the value 262144 and hardcode it with a safety zone (like BSD)
- lt_cv_sys_max_cmd_len=196608
- ;;
-
- os2*)
- # The test takes a long time on OS/2.
- lt_cv_sys_max_cmd_len=8192
- ;;
-
- osf*)
- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
- # nice to cause kernel panics so lets avoid the loop below.
- # First set a reasonable default.
- lt_cv_sys_max_cmd_len=16384
- #
- if test -x /sbin/sysconfig; then
- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
- *1*) lt_cv_sys_max_cmd_len=-1 ;;
- esac
- fi
- ;;
- sco3.2v5*)
- lt_cv_sys_max_cmd_len=102400
- ;;
- sysv5* | sco5v6* | sysv4.2uw2*)
- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
- if test -n "$kargmax"; then
- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
- else
- lt_cv_sys_max_cmd_len=32768
- fi
- ;;
- *)
- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
- if test -n "$lt_cv_sys_max_cmd_len" && \
- test undefined != "$lt_cv_sys_max_cmd_len"; then
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
- else
- # Make teststring a little bigger before we do anything with it.
- # a 1K string should be a reasonable start.
- for i in 1 2 3 4 5 6 7 8 ; do
- teststring=$teststring$teststring
- done
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
- = "X$teststring$teststring"; } >/dev/null 2>&1 &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- # Only check the string length outside the loop.
- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
- teststring=
- # Add a significant safety factor because C++ compilers can tack on
- # massive amounts of additional arguments before passing them to the
- # linker. It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
- fi
- ;;
- esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
- AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
- AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
- [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
- [$4]
-else
- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
- lt_status=$lt_dlunknown
- cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-# define LT_DLGLOBAL RTLD_GLOBAL
-#else
-# ifdef DL_GLOBAL
-# define LT_DLGLOBAL DL_GLOBAL
-# else
-# define LT_DLGLOBAL 0
-# endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
- find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-# ifdef RTLD_LAZY
-# define LT_DLLAZY_OR_NOW RTLD_LAZY
-# else
-# ifdef DL_LAZY
-# define LT_DLLAZY_OR_NOW DL_LAZY
-# else
-# ifdef RTLD_NOW
-# define LT_DLLAZY_OR_NOW RTLD_NOW
-# else
-# ifdef DL_NOW
-# define LT_DLLAZY_OR_NOW DL_NOW
-# else
-# define LT_DLLAZY_OR_NOW 0
-# endif
-# endif
-# endif
-# endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
- correspondingly for the symbols needed. */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
- int status = $lt_dlunknown;
-
- if (self)
- {
- if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
- else
- {
- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
- else puts (dlerror ());
- }
- /* dlclose (self); */
- }
- else
- puts (dlerror ());
-
- return status;
-}]
-_LT_EOF
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
- lt_status=$?
- case x$lt_status in
- x$lt_dlno_uscore) $1 ;;
- x$lt_dlneed_uscore) $2 ;;
- x$lt_dlunknown|x*) $3 ;;
- esac
- else :
- # compilation failed
- $3
- fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
- enable_dlopen=unknown
- enable_dlopen_self=unknown
- enable_dlopen_self_static=unknown
-else
- lt_cv_dlopen=no
- lt_cv_dlopen_libs=
-
- case $host_os in
- beos*)
- lt_cv_dlopen="load_add_on"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ;;
-
- mingw* | pw32* | cegcc*)
- lt_cv_dlopen="LoadLibrary"
- lt_cv_dlopen_libs=
- ;;
-
- cygwin*)
- lt_cv_dlopen="dlopen"
- lt_cv_dlopen_libs=
- ;;
-
- darwin*)
- # if libdl is installed we need to link against it
- AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
- lt_cv_dlopen="dyld"
- lt_cv_dlopen_libs=
- lt_cv_dlopen_self=yes
- ])
- ;;
-
- *)
- AC_CHECK_FUNC([shl_load],
- [lt_cv_dlopen="shl_load"],
- [AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
- [AC_CHECK_FUNC([dlopen],
- [lt_cv_dlopen="dlopen"],
- [AC_CHECK_LIB([dl], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
- [AC_CHECK_LIB([svld], [dlopen],
- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
- [AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
- ])
- ])
- ])
- ])
- ])
- ;;
- esac
-
- if test "x$lt_cv_dlopen" != xno; then
- enable_dlopen=yes
- else
- enable_dlopen=no
- fi
-
- case $lt_cv_dlopen in
- dlopen)
- save_CPPFLAGS="$CPPFLAGS"
- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
- save_LDFLAGS="$LDFLAGS"
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
- save_LIBS="$LIBS"
- LIBS="$lt_cv_dlopen_libs $LIBS"
-
- AC_CACHE_CHECK([whether a program can dlopen itself],
- lt_cv_dlopen_self, [dnl
- _LT_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
- ])
-
- if test "x$lt_cv_dlopen_self" = xyes; then
- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
- lt_cv_dlopen_self_static, [dnl
- _LT_TRY_DLOPEN_SELF(
- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
- ])
- fi
-
- CPPFLAGS="$save_CPPFLAGS"
- LDFLAGS="$save_LDFLAGS"
- LIBS="$save_LIBS"
- ;;
- esac
-
- case $lt_cv_dlopen_self in
- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
- *) enable_dlopen_self=unknown ;;
- esac
-
- case $lt_cv_dlopen_self_static in
- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
- *) enable_dlopen_self_static=unknown ;;
- esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
- [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
- [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
- [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
- $RM -r conftest 2>/dev/null
- mkdir conftest
- cd conftest
- mkdir out
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- lt_compiler_flag="-o out/conftest2.$ac_objext"
- # Insert the option either (1) after the last *FLAGS variable, or
- # (2) before a word containing "conftest.", or (3) at the end.
- # Note that $ac_compile itself does not contain backslashes and begins
- # with a dollar sign (not a hyphen), so the echo should work correctly.
- lt_compile=`echo "$ac_compile" | $SED \
- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
- -e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$lt_compile" 2>out/conftest.err)
- ac_status=$?
- cat out/conftest.err >&AS_MESSAGE_LOG_FD
- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
- if (exit $ac_status) && test -s out/conftest2.$ac_objext
- then
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
- fi
- fi
- chmod u+w . 2>&AS_MESSAGE_LOG_FD
- $RM conftest*
- # SGI C++ compiler will create directory out/ii_files/ for
- # template instantiation
- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
- $RM out/* && rmdir out
- cd ..
- $RM -r conftest
- $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
- [Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
- # do not overwrite the value of need_locks provided by the user
- AC_MSG_CHECKING([if we can lock with hard links])
- hard_links=yes
- $RM conftest*
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- touch conftest.a
- ln conftest.a conftest.b 2>&5 || hard_links=no
- ln conftest.a conftest.b 2>/dev/null && hard_links=no
- AC_MSG_RESULT([$hard_links])
- if test "$hard_links" = no; then
- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
- need_locks=warn
- fi
-else
- need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- lt_cv_objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
- [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
- [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
- test -n "$_LT_TAGVAR(runpath_var, $1)" ||
- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
- # We can hardcode non-existent directories.
- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
- # If the only mechanism to avoid hardcoding is shlibpath_var, we
- # have to relink, otherwise we might link with an installed library
- # when we should be linking with a yet-to-be-installed one
- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
- # Linking always hardcodes the temporary library directory.
- _LT_TAGVAR(hardcode_action, $1)=relink
- else
- # We can link without hardcoding, and we can hardcode nonexisting dirs.
- _LT_TAGVAR(hardcode_action, $1)=immediate
- fi
-else
- # We cannot hardcode anything, or else we can only hardcode existing
- # directories.
- _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
- # Fast installation is not supported
- enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
- test "$enable_shared" = no; then
- # Fast installation is not necessary
- enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
- [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
- test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
- case $host_os in
- darwin*)
- if test -n "$STRIP" ; then
- striplib="$STRIP -x"
- old_striplib="$STRIP -S"
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- ;;
- *)
- AC_MSG_RESULT([no])
- ;;
- esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
- [], [
-if test "$GCC" = yes; then
- case $host_os in
- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
- *) lt_awk_arg="/^libraries:/" ;;
- esac
- case $host_os in
- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
- *) lt_sed_strip_eq="s,=/,/,g" ;;
- esac
- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
- case $lt_search_path_spec in
- *\;*)
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
- ;;
- *)
- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
- ;;
- esac
- # Ok, now we have the path, separated by spaces, we can step through it
- # and add multilib dir if necessary.
- lt_tmp_lt_search_path_spec=
- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
- for lt_sys_path in $lt_search_path_spec; do
- if test -d "$lt_sys_path/$lt_multi_os_dir"; then
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
- else
- test -d "$lt_sys_path" && \
- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
- fi
- done
- lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
- lt_foo="";
- lt_count=0;
- for (lt_i = NF; lt_i > 0; lt_i--) {
- if ($lt_i != "" && $lt_i != ".") {
- if ($lt_i == "..") {
- lt_count++;
- } else {
- if (lt_count == 0) {
- lt_foo="/" $lt_i lt_foo;
- } else {
- lt_count--;
- }
- }
- }
- }
- if (lt_foo != "") { lt_freq[[lt_foo]]++; }
- if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
- # AWK program above erroneously prepends '/' to C:/dos/paths
- # for these hosts.
- case $host_os in
- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
- esac
- sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
- shlibpath_var=LIBPATH
-
- # AIX 3 has no versioning support, so we append a major version to the name.
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
-
-aix[[4-9]]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- hardcode_into_libs=yes
- if test "$host_cpu" = ia64; then
- # AIX 5 supports IA64
- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- else
- # With GCC up to 2.95.x, collect2 would create an import file
- # for dependence libraries. The import file would start with
- # the line `#! .'. This would cause the generated library to
- # depend on `.', always an invalid library. This was fixed in
- # development snapshots of GCC prior to 3.0.
- case $host_os in
- aix4 | aix4.[[01]] | aix4.[[01]].*)
- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
- echo ' yes '
- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
- :
- else
- can_build_shared=no
- fi
- ;;
- esac
- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
- # soname into executable. Probably we can add versioning support to
- # collect2, so additional links can be useful in future.
- if test "$aix_use_runtimelinking" = yes; then
- # If using run time linking (on AIX 4.2 or later) use lib<name>.so
- # instead of lib<name>.a to let people know that these are not
- # typical AIX shared libraries.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- else
- # We preserve .a as extension for shared libraries through AIX4.2
- # and later when we are not doing run time linking.
- library_names_spec='${libname}${release}.a $libname.a'
- soname_spec='${libname}${release}${shared_ext}$major'
- fi
- shlibpath_var=LIBPATH
- fi
- ;;
-
-amigaos*)
- case $host_cpu in
- powerpc)
- # Since July 2007 AmigaOS4 officially supports .so libraries.
- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- ;;
- m68k)
- library_names_spec='$libname.ixlibrary $libname.a'
- # Create ${libname}_ixlibrary.a entries in /sys/libs.
- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
- ;;
- esac
- ;;
-
-beos*)
- library_names_spec='${libname}${shared_ext}'
- dynamic_linker="$host_os ld.so"
- shlibpath_var=LIBRARY_PATH
- ;;
-
-bsdi[[45]]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
- # the default ld.so.conf also contains /usr/contrib/lib and
- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
- # libtool to hard-code these into programs
- ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
- version_type=windows
- shrext_cmds=".dll"
- need_version=no
- need_lib_prefix=no
-
- case $GCC,$cc_basename in
- yes,*)
- # gcc
- library_names_spec='$libname.dll.a'
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname~
- chmod a+x \$dldir/$dlname~
- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
- fi'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
-
- case $host_os in
- cygwin*)
- # Cygwin DLLs use 'cyg' prefix rather than 'lib'
- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
- ;;
- mingw* | cegcc*)
- # MinGW DLLs use traditional 'lib' prefix
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- ;;
- pw32*)
- # pw32 DLLs use 'pw' prefix rather than 'lib'
- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- ;;
- esac
- dynamic_linker='Win32 ld.exe'
- ;;
-
- *,cl*)
- # Native MSVC
- libname_spec='$name'
- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
- library_names_spec='${libname}.dll.lib'
-
- case $build_os in
- mingw*)
- sys_lib_search_path_spec=
- lt_save_ifs=$IFS
- IFS=';'
- for lt_path in $LIB
- do
- IFS=$lt_save_ifs
- # Let DOS variable expansion print the short 8.3 style file name.
- lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
- sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
- done
- IFS=$lt_save_ifs
- # Convert to MSYS style.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
- ;;
- cygwin*)
- # Convert to unix form, then to dos form, then back to unix form
- # but this time dos style (no spaces!) so that the unix form looks
- # like /cygdrive/c/PROGRA~1:/cygdr...
- sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
- sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
- sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- ;;
- *)
- sys_lib_search_path_spec="$LIB"
- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
- # It is most probably a Windows format PATH.
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
- # FIXME: find the short name or the path components, as spaces are
- # common. (e.g. "Program Files" -> "PROGRA~1")
- ;;
- esac
-
- # DLL is installed to $(libdir)/../bin by postinstall_cmds
- postinstall_cmds='base_file=`basename \${file}`~
- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
- dldir=$destdir/`dirname \$dlpath`~
- test -d \$dldir || mkdir -p \$dldir~
- $install_prog $dir/$dlname \$dldir/$dlname'
- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
- dlpath=$dir/\$dldll~
- $RM \$dlpath'
- shlibpath_overrides_runpath=yes
- dynamic_linker='Win32 link.exe'
- ;;
-
- *)
- # Assume MSVC wrapper
- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
- dynamic_linker='Win32 ld.exe'
- ;;
- esac
- # FIXME: first we should search . and the directory the executable is in
- shlibpath_var=PATH
- ;;
-
-darwin* | rhapsody*)
- dynamic_linker="$host_os dyld"
- version_type=darwin
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
- soname_spec='${libname}${release}${major}$shared_ext'
- shlibpath_overrides_runpath=yes
- shlibpath_var=DYLD_LIBRARY_PATH
- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
- ;;
-
-dgux*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-freebsd* | dragonfly*)
- # DragonFly does not have aout. When/if they implement a new
- # versioning mechanism, adjust this.
- if test -x /usr/bin/objformat; then
- objformat=`/usr/bin/objformat`
- else
- case $host_os in
- freebsd[[23]].*) objformat=aout ;;
- *) objformat=elf ;;
- esac
- fi
- version_type=freebsd-$objformat
- case $version_type in
- freebsd-elf*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- need_version=no
- need_lib_prefix=no
- ;;
- freebsd-*)
- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
- need_version=yes
- ;;
- esac
- shlibpath_var=LD_LIBRARY_PATH
- case $host_os in
- freebsd2.*)
- shlibpath_overrides_runpath=yes
- ;;
- freebsd3.[[01]]* | freebsdelf3.[[01]]*)
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
- *) # from 4.6 on, and DragonFly
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
- esac
- ;;
-
-haiku*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- dynamic_linker="$host_os runtime_loader"
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
- hardcode_into_libs=yes
- ;;
-
-hpux9* | hpux10* | hpux11*)
- # Give a soname corresponding to the major version so that dld.sl refuses to
- # link against other versions.
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- case $host_cpu in
- ia64*)
- shrext_cmds='.so'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.so"
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- if test "X$HPUX_IA64_MODE" = X32; then
- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
- else
- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
- fi
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- hppa*64*)
- shrext_cmds='.sl'
- hardcode_into_libs=yes
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
- ;;
- *)
- shrext_cmds='.sl'
- dynamic_linker="$host_os dld.sl"
- shlibpath_var=SHLIB_PATH
- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- ;;
- esac
- # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
- postinstall_cmds='chmod 555 $lib'
- # or fails outright, so override atomically:
- install_override_mode=555
- ;;
-
-interix[[3-9]]*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $host_os in
- nonstopux*) version_type=nonstopux ;;
- *)
- if test "$lt_cv_prog_gnu_ld" = yes; then
- version_type=linux # correct to gnu/linux during the next big refactor
- else
- version_type=irix
- fi ;;
- esac
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
- case $host_os in
- irix5* | nonstopux*)
- libsuff= shlibsuff=
- ;;
- *)
- case $LD in # libtool.m4 will add one of these switches to LD
- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
- libsuff= shlibsuff= libmagic=32-bit;;
- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
- libsuff=32 shlibsuff=N32 libmagic=N32;;
- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
- libsuff=64 shlibsuff=64 libmagic=64-bit;;
- *) libsuff= shlibsuff= libmagic=never-match;;
- esac
- ;;
- esac
- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- hardcode_into_libs=yes
- ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
- dynamic_linker=no
- ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
-
- # Some binutils ld are patched to set DT_RUNPATH
- AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
- [lt_cv_shlibpath_overrides_runpath=no
- save_LDFLAGS=$LDFLAGS
- save_libdir=$libdir
- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
- [lt_cv_shlibpath_overrides_runpath=yes])])
- LDFLAGS=$save_LDFLAGS
- libdir=$save_libdir
- ])
- shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
- # This implies no fast_install, which is unacceptable.
- # Some rework will be needed to allow for fast_install
- # before this can be enabled.
- hardcode_into_libs=yes
-
- # Append ld.so.conf contents to the search path
- if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
- fi
-
- # We used to test for /lib/ld.so.1 and disable shared libraries on
- # powerpc, because MkLinux only supported shared libraries with the
- # GNU dynamic linker. Since this was broken with cross compilers,
- # most powerpc-linux boxes support dynamic linking these days and
- # people can always --disable-shared, the test was removed, and we
- # assume the GNU/Linux dynamic linker is in use.
- dynamic_linker='GNU/Linux ld.so'
- ;;
-
-netbsdelf*-gnu)
- version_type=linux
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='NetBSD ld.elf_so'
- ;;
-
-netbsd*)
- version_type=sunos
- need_lib_prefix=no
- need_version=no
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- dynamic_linker='NetBSD (a.out) ld.so'
- else
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- dynamic_linker='NetBSD ld.elf_so'
- fi
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- ;;
-
-newsos6)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- ;;
-
-*nto* | *qnx*)
- version_type=qnx
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- dynamic_linker='ldqnx.so'
- ;;
-
-openbsd*)
- version_type=sunos
- sys_lib_dlsearch_path_spec="/usr/lib"
- need_lib_prefix=no
- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
- case $host_os in
- openbsd3.3 | openbsd3.3.*) need_version=yes ;;
- *) need_version=no ;;
- esac
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- case $host_os in
- openbsd2.[[89]] | openbsd2.[[89]].*)
- shlibpath_overrides_runpath=no
- ;;
- *)
- shlibpath_overrides_runpath=yes
- ;;
- esac
- else
- shlibpath_overrides_runpath=yes
- fi
- ;;
-
-os2*)
- libname_spec='$name'
- shrext_cmds=".dll"
- need_lib_prefix=no
- library_names_spec='$libname${shared_ext} $libname.a'
- dynamic_linker='OS/2 ld.exe'
- shlibpath_var=LIBPATH
- ;;
-
-osf3* | osf4* | osf5*)
- version_type=osf
- need_lib_prefix=no
- need_version=no
- soname_spec='${libname}${release}${shared_ext}$major'
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
- ;;
-
-rdos*)
- dynamic_linker=no
- ;;
-
-solaris*)
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- # ldd complains unless libraries are executable
- postinstall_cmds='chmod +x $lib'
- ;;
-
-sunos4*)
- version_type=sunos
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- if test "$with_gnu_ld" = yes; then
- need_lib_prefix=no
- fi
- need_version=yes
- ;;
-
-sysv4 | sysv4.3*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- case $host_vendor in
- sni)
- shlibpath_overrides_runpath=no
- need_lib_prefix=no
- runpath_var=LD_RUN_PATH
- ;;
- siemens)
- need_lib_prefix=no
- ;;
- motorola)
- need_lib_prefix=no
- need_version=no
- shlibpath_overrides_runpath=no
- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- ;;
- esac
- ;;
-
-sysv4*MP*)
- if test -d /usr/nec ;then
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
- soname_spec='$libname${shared_ext}.$major'
- shlibpath_var=LD_LIBRARY_PATH
- fi
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- version_type=freebsd-elf
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=yes
- hardcode_into_libs=yes
- if test "$with_gnu_ld" = yes; then
- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
- else
- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
- case $host_os in
- sco3.2v5*)
- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
- ;;
- esac
- fi
- sys_lib_dlsearch_path_spec='/usr/lib'
- ;;
-
-tpf*)
- # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
- version_type=linux # correct to gnu/linux during the next big refactor
- need_lib_prefix=no
- need_version=no
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- shlibpath_var=LD_LIBRARY_PATH
- shlibpath_overrides_runpath=no
- hardcode_into_libs=yes
- ;;
-
-uts4*)
- version_type=linux # correct to gnu/linux during the next big refactor
- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
- soname_spec='${libname}${release}${shared_ext}$major'
- shlibpath_var=LD_LIBRARY_PATH
- ;;
-
-*)
- dynamic_linker=no
- ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
- [Variables whose values should be saved in libtool wrapper scripts and
- restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
- [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
- [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
- [[List of archive names. First name is the real one, the rest are links.
- The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
- [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
- [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
- [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
- [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
- [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
- [[As "finish_cmds", except a single script fragment to be evaled but
- not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
- [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
- [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
- [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] | ?:[\\/]*])
- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
- ;;
-*)
- lt_save_MAGIC_CMD="$MAGIC_CMD"
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word. This closes a longstanding sh security hole.
- ac_dummy="m4_if([$2], , $PATH, [$2])"
- for ac_dir in $ac_dummy; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$1; then
- lt_cv_path_MAGIC_CMD="$ac_dir/$1"
- if test -n "$file_magic_test_file"; then
- case $deplibs_check_method in
- "file_magic "*)
- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
- MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- $EGREP "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
- fi ;;
- esac
- fi
- break
- fi
- done
- IFS="$lt_save_ifs"
- MAGIC_CMD="$lt_save_MAGIC_CMD"
- ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
- AC_MSG_RESULT($MAGIC_CMD)
-else
- AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
- [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
- if test -n "$ac_tool_prefix"; then
- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
- else
- MAGIC_CMD=:
- fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
- [AS_HELP_STRING([--with-gnu-ld],
- [assume the C compiler uses GNU ld @<:@default=no@:>@])],
- [test "$withval" = no || with_gnu_ld=yes],
- [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by $CC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]]* | ?:[[\\/]]*)
- re_direlt='/[[^/]][[^/]]*/\.\./'
- # Canonicalize the pathname of ld
- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- lt_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some variants of GNU ld only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
- *GNU* | *'with BFD'*)
- test "$with_gnu_ld" != no && break
- ;;
- *)
- test "$with_gnu_ld" != yes && break
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
-else
- lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
- lt_cv_prog_gnu_ld=yes
- ;;
-*)
- lt_cv_prog_gnu_ld=no
- ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-# -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
- lt_cv_ld_reload_flag,
- [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- if test "$GCC" != yes; then
- reload_cmds=false
- fi
- ;;
- darwin*)
- if test "$GCC" = yes; then
- reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
- else
- reload_cmds='$LD$reload_flag -o $output$reload_objs'
- fi
- ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-# -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-beos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-bsdi[[45]]*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
- lt_cv_file_magic_cmd='/usr/bin/file -L'
- lt_cv_file_magic_test_file=/shlib/libc.so
- ;;
-
-cygwin*)
- # func_win32_libid is a shell function defined in ltmain.sh
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- ;;
-
-mingw* | pw32*)
- # Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump',
- # unless we find 'file', for example because we are cross-compiling.
- # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
- if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
- lt_cv_file_magic_cmd='func_win32_libid'
- else
- # Keep this pattern in sync with the one in func_win32_libid.
- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- fi
- ;;
-
-cegcc*)
- # use the weaker test based on 'objdump'. See mingw*.
- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
- ;;
-
-darwin* | rhapsody*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-freebsd* | dragonfly*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- case $host_cpu in
- i*86 )
- # Not sure whether the presence of OpenBSD here was a mistake.
- # Let's accept both of them until this is cleared up.
- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
- ;;
- esac
- else
- lt_cv_deplibs_check_method=pass_all
- fi
- ;;
-
-haiku*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-hpux10.20* | hpux11*)
- lt_cv_file_magic_cmd=/usr/bin/file
- case $host_cpu in
- ia64*)
- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
- ;;
- hppa*64*)
- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
- ;;
- *)
- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
- lt_cv_file_magic_test_file=/usr/lib/libc.sl
- ;;
- esac
- ;;
-
-interix[[3-9]]*)
- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
- ;;
-
-irix5* | irix6* | nonstopux*)
- case $LD in
- *-32|*"-32 ") libmagic=32-bit;;
- *-n32|*"-n32 ") libmagic=N32;;
- *-64|*"-64 ") libmagic=64-bit;;
- *) libmagic=never-match;;
- esac
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
- fi
- ;;
-
-newos6*)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
- lt_cv_file_magic_cmd=/usr/bin/file
- lt_cv_file_magic_test_file=/usr/lib/libnls.so
- ;;
-
-*nto* | *qnx*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-openbsd*)
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
- else
- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
- fi
- ;;
-
-osf3* | osf4* | osf5*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-rdos*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-solaris*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
-sysv4 | sysv4.3*)
- case $host_vendor in
- motorola)
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
- ;;
- ncr)
- lt_cv_deplibs_check_method=pass_all
- ;;
- sequent)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
- ;;
- sni)
- lt_cv_file_magic_cmd='/bin/file'
- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
- lt_cv_file_magic_test_file=/lib/libc.so
- ;;
- siemens)
- lt_cv_deplibs_check_method=pass_all
- ;;
- pc)
- lt_cv_deplibs_check_method=pass_all
- ;;
- esac
- ;;
-
-tpf*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
- case $host_os in
- mingw* | pw32*)
- if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
- want_nocaseglob=yes
- else
- file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
- fi
- ;;
- esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
- [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
- [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
- [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
- [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- lt_cv_path_NM="$NM"
-else
- lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
- lt_nm_to_check="$lt_nm_to_check nm"
- fi
- for lt_tmp_nm in $lt_nm_to_check; do
- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
- IFS="$lt_save_ifs"
- test -z "$ac_dir" && ac_dir=.
- tmp_nm="$ac_dir/$lt_tmp_nm"
- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
- # Check to see if the nm accepts a BSD-compat flag.
- # Adding the `sed 1q' prevents false positives on HP-UX, which says:
- # nm: unknown option "B" ignored
- # Tru64's nm complains that /dev/null is an invalid object file
- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
- */dev/null* | *'Invalid file or object type'*)
- lt_cv_path_NM="$tmp_nm -B"
- break
- ;;
- *)
- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
- */dev/null*)
- lt_cv_path_NM="$tmp_nm -p"
- break
- ;;
- *)
- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
- continue # so that we can try to find one that supports BSD flags
- ;;
- esac
- ;;
- esac
- fi
- done
- IFS="$lt_save_ifs"
- done
- : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
- NM="$lt_cv_path_NM"
-else
- # Didn't find any BSD compatible name lister, look for dumpbin.
- if test -n "$DUMPBIN"; then :
- # Let the user override the test.
- else
- AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
- *COFF*)
- DUMPBIN="$DUMPBIN -symbols"
- ;;
- *)
- DUMPBIN=:
- ;;
- esac
- fi
- AC_SUBST([DUMPBIN])
- if test "$DUMPBIN" != ":"; then
- NM="$DUMPBIN"
- fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
- [lt_cv_nm_interface="BSD nm"
- echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
- (eval "$ac_compile" 2>conftest.err)
- cat conftest.err >&AS_MESSAGE_LOG_FD
- (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
- cat conftest.err >&AS_MESSAGE_LOG_FD
- (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
- cat conftest.out >&AS_MESSAGE_LOG_FD
- if $GREP 'External.*some_variable' conftest.out > /dev/null; then
- lt_cv_nm_interface="MS dumpbin"
- fi
- rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-# -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
- # two different shell functions defined in ltmain.sh
- # decide which to use based on capabilities of $DLLTOOL
- case `$DLLTOOL --help 2>&1` in
- *--identify-strict*)
- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
- ;;
- *)
- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
- ;;
- esac
- ;;
-*)
- # fallback: assume linklib IS sharedlib
- lt_cv_sharedlib_from_linklib_cmd="$ECHO"
- ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
- [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
- [lt_cv_path_mainfest_tool=no
- echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
- $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
- cat conftest.err >&AS_MESSAGE_LOG_FD
- if $GREP 'Manifest Tool' conftest.out > /dev/null; then
- lt_cv_path_mainfest_tool=yes
- fi
- rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
- MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
- # These system don't have libm, or don't need it
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, cos, LIBM="-lm")
- ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
- case $cc_basename in
- nvcc*)
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
- esac
-
- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
- lt_cv_prog_compiler_rtti_exceptions,
- [-fno-rtti -fno-exceptions], [],
- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
- [Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
- symcode='[[BCDT]]'
- ;;
-cygwin* | mingw* | pw32* | cegcc*)
- symcode='[[ABCDGISTW]]'
- ;;
-hpux*)
- if test "$host_cpu" = ia64; then
- symcode='[[ABCDEGRST]]'
- fi
- ;;
-irix* | nonstopux*)
- symcode='[[BCDEGRST]]'
- ;;
-osf*)
- symcode='[[BCDEGQRST]]'
- ;;
-solaris*)
- symcode='[[BDRT]]'
- ;;
-sco3.2v5*)
- symcode='[[DT]]'
- ;;
-sysv4.2uw2*)
- symcode='[[DT]]'
- ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
- symcode='[[ABDT]]'
- ;;
-sysv4)
- symcode='[[DFNSTU]]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
- symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
- ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
- symxfrm="\\1 $ac_symprfx\\2 \\2"
-
- # Write the raw and C identifiers.
- if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- # Fake it for dumpbin and say T for any non-static function
- # and D for any global variable.
- # Also find C++ and __fastcall symbols from MSVC++,
- # which start with @ or ?.
- lt_cv_sys_global_symbol_pipe="$AWK ['"\
-" {last_section=section; section=\$ 3};"\
-" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-" \$ 0!~/External *\|/{next};"\
-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-" {if(hide[section]) next};"\
-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-" s[1]~/^[@?]/{print s[1], s[1]; next};"\
-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-" ' prfx=^$ac_symprfx]"
- else
- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
- fi
- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
-
- rm -f conftest*
- cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
- if AC_TRY_EVAL(ac_compile); then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
- relocations are performed -- see ld's documentation on pseudo-relocs. */
-# define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data. */
-# define LT@&t@_DLSYM_CONST
-#else
-# define LT@&t@_DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
- # Now generate the symbol file.
- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
- cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols. */
-LT@&t@_DLSYM_CONST struct {
- const char *name;
- void *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
- { "@PROGRAM@", (void *) 0 },
-_LT_EOF
- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
- cat <<\_LT_EOF >> conftest.$ac_ext
- {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
- return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
- # Now try linking the two files.
- mv conftest.$ac_objext conftstm.$ac_objext
- lt_globsym_save_LIBS=$LIBS
- lt_globsym_save_CFLAGS=$CFLAGS
- LIBS="conftstm.$ac_objext"
- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
- pipe_works=yes
- fi
- LIBS=$lt_globsym_save_LIBS
- CFLAGS=$lt_globsym_save_CFLAGS
- else
- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
- fi
- else
- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
- cat conftest.$ac_ext >&5
- fi
- rm -rf conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- lt_cv_sys_global_symbol_pipe=
- fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
- lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- AC_MSG_RESULT(failed)
-else
- AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
- nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
- nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
- [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
- [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
- [lt_cv_sys_global_symbol_to_c_name_address], [1],
- [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
- [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
- [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
- # C++ specific cases for pic, static, wl, etc.
- if test "$GXX" = yes; then
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- mingw* | cygwin* | os2* | pw32* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
- ;;
- *djgpp*)
- # DJGPP does not support shared libraries at all
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- ;;
- haiku*)
- # PIC is the default for Haiku.
- # The "-static" flag exists, but is broken.
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
- ;;
- interix[[3-9]]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
- fi
- ;;
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- ;;
- *qnx* | *nto*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- else
- case $host_os in
- aix[[4-9]]*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- else
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
- chorus*)
- case $cc_basename in
- cxch68*)
- # Green Hills C++ Compiler
- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
- ;;
- esac
- ;;
- mingw* | cygwin* | os2* | pw32* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
- dgux*)
- case $cc_basename in
- ec++*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- freebsd* | dragonfly*)
- # FreeBSD uses GNU C++
- ;;
- hpux9* | hpux10* | hpux11*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- if test "$host_cpu" != ia64; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- fi
- ;;
- aCC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- ;;
- esac
- ;;
- *)
- ;;
- esac
- ;;
- interix*)
- # This is c89, which is MS Visual C++ (no shared libs)
- # Anyone wants to do a port?
- ;;
- irix5* | irix6* | nonstopux*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- # CC pic flag -KPIC is the default.
- ;;
- *)
- ;;
- esac
- ;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- case $cc_basename in
- KCC*)
- # KAI C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- ecpc* )
- # old Intel C++ for x86_64 which still supported -KPIC.
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- icpc* )
- # Intel C++, used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- pgCC* | pgcpp*)
- # Portland Group C++ compiler
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- cxx*)
- # Compaq C++
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
- # IBM XL 8.0, 9.0 on PPC and BlueGene
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- esac
- ;;
- esac
- ;;
- lynxos*)
- ;;
- m88k*)
- ;;
- mvs*)
- case $cc_basename in
- cxx*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
- ;;
- *)
- ;;
- esac
- ;;
- netbsd* | netbsdelf*-gnu)
- ;;
- *qnx* | *nto*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
- osf3* | osf4* | osf5*)
- case $cc_basename in
- KCC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
- ;;
- RCC*)
- # Rational C++ 2.4.1
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- cxx*)
- # Digital/Compaq C++
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # Make sure the PIC flag is empty. It appears that all Alpha
- # Linux and Compaq Tru64 Unix objects are PIC.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- *)
- ;;
- esac
- ;;
- psos*)
- ;;
- solaris*)
- case $cc_basename in
- CC* | sunCC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- ;;
- *)
- ;;
- esac
- ;;
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- lcc*)
- # Lucid
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- ;;
- *)
- ;;
- esac
- ;;
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- case $cc_basename in
- CC*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- esac
- ;;
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- ;;
- *)
- ;;
- esac
- ;;
- vxworks*)
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
- esac
- fi
-],
-[
- if test "$GCC" = yes; then
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
- case $host_os in
- aix*)
- # All AIX code is PIC.
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- m68k)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
- ;;
- esac
- ;;
-
- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- # Although the cygwin gcc ignores -fPIC, still need this for old-style
- # (--disable-auto-import) libraries
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
-
- darwin* | rhapsody*)
- # PIC is the default on this platform
- # Common symbols not allowed in MH_DYLIB files
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
- ;;
-
- haiku*)
- # PIC is the default for Haiku.
- # The "-static" flag exists, but is broken.
- _LT_TAGVAR(lt_prog_compiler_static, $1)=
- ;;
-
- hpux*)
- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
- # sets the default TLS model and affects inlining.
- case $host_cpu in
- hppa*64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
- ;;
-
- interix[[3-9]]*)
- # Interix 3.x gcc -fpic/-fPIC options generate broken code.
- # Instead, we relocate shared libraries at runtime.
- ;;
-
- msdosdjgpp*)
- # Just because we use GCC doesn't mean we suddenly get shared libraries
- # on systems that don't support them.
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- enable_shared=no
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
- fi
- ;;
-
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- ;;
- esac
-
- case $cc_basename in
- nvcc*) # Cuda Compiler Driver 2.2
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
- if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
- fi
- ;;
- esac
- else
- # PORTME Check for flag to pass linker flags through the system compiler.
- case $host_os in
- aix*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- if test "$host_cpu" = ia64; then
- # AIX 5 now supports IA64 processor
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- else
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
- fi
- ;;
-
- mingw* | cygwin* | pw32* | os2* | cegcc*)
- # This hack is so that the source file can tell whether it is being
- # built for inclusion in a dll (and should export symbols for example).
- m4_if([$1], [GCJ], [],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
- ;;
-
- hpux9* | hpux10* | hpux11*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
- # not for PA HP-UX.
- case $host_cpu in
- hppa*64*|ia64*)
- # +Z the default
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
- ;;
- esac
- # Is there a better lt_prog_compiler_static that works with the bundled CC?
- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
- ;;
-
- irix5* | irix6* | nonstopux*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # PIC (with -KPIC) is the default.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- case $cc_basename in
- # old Intel for x86_64 which still supported -KPIC.
- ecc*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- # icc used to be incompatible with GCC.
- # ICC 10 doesn't accept -KPIC any more.
- icc* | ifort*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- # Lahey Fortran 8.1.
- lf95*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
- ;;
- nagfor*)
- # NAG Fortran compiler
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group compilers (*not* the Pentium gcc compiler,
- # which looks to be a dead project)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- ccc*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # All Alpha code is PIC.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
- xl* | bgxl* | bgf* | mpixl*)
- # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
- # Sun Fortran 8.3 passes all unrecognized flags to the linker
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
- ;;
- *Sun\ F* | *Sun*Fortran*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- ;;
- *Sun\ C*)
- # Sun C 5.9
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- ;;
- *Intel*\ [[CF]]*Compiler*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
- ;;
- *Portland\ Group*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
- esac
- ;;
- esac
- ;;
-
- newsos6)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- *nto* | *qnx*)
- # QNX uses GNU C++, but need to define -shared option too, otherwise
- # it will coredump.
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
- ;;
-
- osf3* | osf4* | osf5*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- # All OSF/1 code is PIC.
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- rdos*)
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
- ;;
-
- solaris*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- case $cc_basename in
- f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
- *)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
- esac
- ;;
-
- sunos4*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec ;then
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- fi
- ;;
-
- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- unicos*)
- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
-
- uts4*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
- ;;
-
- *)
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
- ;;
- esac
- fi
-])
-case $host_os in
- # For platforms which do not support PIC, -DPIC is meaningless:
- *djgpp*)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)=
- ;;
- *)
- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
- ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
- "" | " "*) ;;
- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
- esac],
- [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
- [Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
- [How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
- $lt_tmp_static_flag,
- [],
- [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
- [Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- case $host_os in
- aix[[4-9]]*)
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- # Also, AIX nm treats weak defined symbols like other global defined
- # symbols, whereas GNU nm marks them as "W".
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- ;;
- pw32*)
- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
- ;;
- cygwin* | mingw* | cegcc*)
- case $cc_basename in
- cl*)
- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
- ;;
- *)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
- ;;
- esac
- ;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
- *)
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- ;;
- esac
-], [
- runpath_var=
- _LT_TAGVAR(allow_undefined_flag, $1)=
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(archive_cmds, $1)=
- _LT_TAGVAR(archive_expsym_cmds, $1)=
- _LT_TAGVAR(compiler_needs_object, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
- _LT_TAGVAR(hardcode_automatic, $1)=no
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- _LT_TAGVAR(hardcode_minus_L, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
- _LT_TAGVAR(inherit_rpath, $1)=no
- _LT_TAGVAR(link_all_deplibs, $1)=unknown
- _LT_TAGVAR(module_cmds, $1)=
- _LT_TAGVAR(module_expsym_cmds, $1)=
- _LT_TAGVAR(old_archive_from_new_cmds, $1)=
- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
- _LT_TAGVAR(thread_safe_flag_spec, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- # include_expsyms should be a list of space-separated symbols to be *always*
- # included in the symbol list
- _LT_TAGVAR(include_expsyms, $1)=
- # exclude_expsyms can be an extended regexp of symbols to exclude
- # it will be wrapped by ` (' and `)$', so one must not match beginning or
- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
- # as well as any symbol that contains `d'.
- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
- # platforms (ab)use it in PIC code, but their linkers get confused if
- # the symbol is explicitly referenced. Since portable code cannot
- # rely on this symbol name, it's probably fine to never include it in
- # preloaded symbol tables.
- # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
- extract_expsyms_cmds=
-
- case $host_os in
- cygwin* | mingw* | pw32* | cegcc*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$GCC" != yes; then
- with_gnu_ld=no
- fi
- ;;
- interix*)
- # we just hope/assume this is gcc and not c89 (= MSVC++)
- with_gnu_ld=yes
- ;;
- openbsd*)
- with_gnu_ld=no
- ;;
- linux* | k*bsd*-gnu | gnu*)
- _LT_TAGVAR(link_all_deplibs, $1)=no
- ;;
- esac
-
- _LT_TAGVAR(ld_shlibs, $1)=yes
-
- # On some targets, GNU ld is compatible enough with the native linker
- # that we're better off using the native interface for both.
- lt_use_gnu_ld_interface=no
- if test "$with_gnu_ld" = yes; then
- case $host_os in
- aix*)
- # The AIX port of GNU ld has always aspired to compatibility
- # with the native linker. However, as the warning in the GNU ld
- # block says, versions before 2.19.5* couldn't really create working
- # shared libraries, regardless of the interface used.
- case `$LD -v 2>&1` in
- *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
- *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
- *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
- *)
- lt_use_gnu_ld_interface=yes
- ;;
- esac
- ;;
- *)
- lt_use_gnu_ld_interface=yes
- ;;
- esac
- fi
-
- if test "$lt_use_gnu_ld_interface" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # Set some defaults for GNU ld with shared library support. These
- # are reset later if shared libraries are not supported. Putting them
- # here allows them to be overridden if necessary.
- runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- supports_anon_versioning=no
- case `$LD -v 2>&1` in
- *GNU\ gold*) supports_anon_versioning=yes ;;
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
- *\ 2.11.*) ;; # other 2.11 versions
- *) supports_anon_versioning=yes ;;
- esac
-
- # See if GNU ld supports shared libraries.
- case $host_os in
- aix[[3-9]]*)
- # On AIX/PPC, the GNU linker is very broken
- if test "$host_cpu" != ia64; then
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)=''
- ;;
- m68k)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
- # as there is no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- interix[[3-9]]*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
-
- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
- tmp_diet=no
- if test "$host_os" = linux-dietlibc; then
- case $cc_basename in
- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
- esac
- fi
- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
- && test "$tmp_diet" = no
- then
- tmp_addflag=' $pic_flag'
- tmp_sharedflag='-shared'
- case $cc_basename,$host_cpu in
- pgcc*) # Portland Group C compiler
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag'
- ;;
- pgf77* | pgf90* | pgf95* | pgfortran*)
- # Portland Group f77 and f90 compilers
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- tmp_addflag=' $pic_flag -Mnomain' ;;
- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
- tmp_addflag=' -i_dynamic' ;;
- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
- tmp_addflag=' -i_dynamic -nofor_main' ;;
- ifc* | ifort*) # Intel Fortran compiler
- tmp_addflag=' -nofor_main' ;;
- lf95*) # Lahey Fortran 8.1
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- tmp_sharedflag='--shared' ;;
- xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
- tmp_sharedflag='-qmkshrobj'
- tmp_addflag= ;;
- nvcc*) # Cuda Compiler Driver 2.2
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- _LT_TAGVAR(compiler_needs_object, $1)=yes
- ;;
- esac
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*) # Sun C 5.9
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- _LT_TAGVAR(compiler_needs_object, $1)=yes
- tmp_sharedflag='-G' ;;
- *Sun\ F*) # Sun Fortran 8.3
- tmp_sharedflag='-G' ;;
- esac
- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
-
- case $cc_basename in
- xlf* | bgf* | bgxlf* | mpixlf*)
- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
- fi
- ;;
- esac
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
- wlarc=
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- fi
- ;;
-
- solaris*)
- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
- case `$LD -v 2>&1` in
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
- _LT_TAGVAR(ld_shlibs, $1)=no
- cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
- ;;
- *)
- # For security reasons, it is highly recommended that you always
- # use absolute paths for naming shared libraries, and exclude the
- # DT_RUNPATH tag from executables and libraries. But doing so
- # requires that you compile everything twice, which is a pain.
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- sunos4*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- wlarc=
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
-
- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
- runpath_var=
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case $host_os in
- aix3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=yes
- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- fi
- ;;
-
- aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- # If we're using GNU nm, then we don't want the "-C" option.
- # -C means demangle to AIX nm, but means don't demangle with GNU nm
- # Also, AIX nm treats weak defined symbols like other global
- # defined symbols, whereas GNU nm marks them as "W".
- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- else
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
- fi
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
- for ld_flag in $LDFLAGS; do
- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
- aix_use_runtimelinking=yes
- break
- fi
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- _LT_TAGVAR(archive_cmds, $1)=''
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
- if test "$GCC" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- ;;
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- _LT_TAGVAR(link_all_deplibs, $1)=no
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to export.
- _LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
- # We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- else
- # Exported symbols can be pulled into shared objects from archives
- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- # This is similar to how AIX traditionally builds its shared libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- amigaos*)
- case $host_cpu in
- powerpc)
- # see comment about AmigaOS4 .so support
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)=''
- ;;
- m68k)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- ;;
-
- bsdi[[45]]*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- case $cc_basename in
- cl*)
- # Native MSVC
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='@'
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
- # The linker will not automatically build a static lib if we build a DLL.
- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
- # Don't use ranlib
- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
- ;;
- *)
- # Assume MSVC wrapper
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
- # FIXME: Should let the user specify the lib program.
- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- ;;
- esac
- ;;
-
- darwin* | rhapsody*)
- _LT_DARWIN_LINKER_FEATURES($1)
- ;;
-
- dgux*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2.*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd* | dragonfly*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- hpux9*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_direct, $1)=yes
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
-
- hpux10*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
- fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- fi
- ;;
-
- hpux11*)
- if test "$GCC" = yes && test "$with_gnu_ld" = no; then
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- else
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- m4_if($1, [], [
- # Older versions of the 11.00 compiler do not understand -b yet
- # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
- _LT_LINKER_OPTION([if $CC understands -b],
- _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
- [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
- ;;
- esac
- fi
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- *)
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
- # hardcode_minus_L: Not really in the search PATH,
- # but as the default location of the library.
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- ;;
- esac
- fi
- ;;
-
- irix5* | irix6* | nonstopux*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- # Try to use the -exported_symbol ld option, if it does not
- # work, assume that -exports_file does not work either and
- # implicitly export all symbols.
- # This should be the same for all languages, so no per-tag cache variable.
- AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
- [lt_cv_irix_exported_symbol],
- [save_LDFLAGS="$LDFLAGS"
- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
- AC_LINK_IFELSE(
- [AC_LANG_SOURCE(
- [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
- [C++], [[int foo (void) { return 0; }]],
- [Fortran 77], [[
- subroutine foo
- end]],
- [Fortran], [[
- subroutine foo
- end]])])],
- [lt_cv_irix_exported_symbol=yes],
- [lt_cv_irix_exported_symbol=no])
- LDFLAGS="$save_LDFLAGS"])
- if test "$lt_cv_irix_exported_symbol" = yes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
- fi
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(inherit_rpath, $1)=yes
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- netbsd* | netbsdelf*-gnu)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- newsos6)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *nto* | *qnx*)
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
- fi
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- os2*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-
- osf4* | osf5*) # as osf3* with the addition of -msym flag
- if test "$GCC" = yes; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- else
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
- # Both c and cxx compiler support -rpath directly
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- ;;
-
- solaris*)
- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
- if test "$GCC" = yes; then
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- else
- case `$CC -V 2>&1` in
- *"Compilers 5.0"*)
- wlarc=''
- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
- ;;
- *)
- wlarc='${wl}'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
- ;;
- esac
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'. GCC discards it without `$wl',
- # but is careful enough not to reorder.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- if test "$GCC" = yes; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
- fi
- ;;
- esac
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- sunos4*)
- if test "x$host_vendor" = xsequent; then
- # Use $CC to link under sequent, because it throws in some extra .o
- # files that make .init and .fini sections work.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
- fi
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- sysv4)
- case $host_vendor in
- sni)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
- ;;
- siemens)
- ## LD is ld it makes a PLAMLIB
- ## CC just makes a GrossModule.
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
- _LT_TAGVAR(hardcode_direct, $1)=no
- ;;
- motorola)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
- ;;
- esac
- runpath_var='LD_RUN_PATH'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- sysv4.3*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- _LT_TAGVAR(ld_shlibs, $1)=yes
- fi
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- if test "$GCC" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- fi
- ;;
-
- uts4*)
- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
-
- *)
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
-
- if test x$host_vendor = xsni; then
- case $host in
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
- ;;
- esac
- fi
- fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
- [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
- # Assume -lc should be added
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
- if test "$enable_shared" = yes && test "$GCC" = yes; then
- case $_LT_TAGVAR(archive_cmds, $1) in
- *'~'*)
- # FIXME: we may have to deal with multi-command sequences.
- ;;
- '$CC '*)
- # Test whether the compiler implicitly links with -lc since on some
- # systems, -lgcc has to come before -lc. If gcc already passes -lc
- # to ld, don't add -lc before -lgcc.
- AC_CACHE_CHECK([whether -lc should be explicitly linked in],
- [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
- [$RM conftest*
- echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
- soname=conftest
- lib=conftest
- libobjs=conftest.$ac_objext
- deplibs=
- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
- compiler_flags=-v
- linker_flags=-v
- verstring=
- output_objdir=.
- libname=conftest
- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
- _LT_TAGVAR(allow_undefined_flag, $1)=
- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
- then
- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
- else
- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- fi
- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
- else
- cat conftest.err 1>&5
- fi
- $RM conftest*
- ])
- _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
- ;;
- esac
- fi
- ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
- [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
- [enable_shared_with_static_runtimes], [0],
- [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
- [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
- [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
- [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
- [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
- [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
- [Commands used to build a loadable module if different from building
- a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
- [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
- [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
- [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
- [Flag to hardcode $libdir into a binary during linking.
- This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
- [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
- DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
- DIR into the resulting binary and the resulting library dependency is
- "absolute", i.e impossible to change by setting ${shlibpath_var} if the
- library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
- into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
- into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
- [Set to "yes" if building a shared library automatically hardcodes DIR
- into the library and all subsequent libraries and executables linked
- against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
- [Set to yes if linker adds runtime paths of dependent libraries
- to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
- [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
- [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
- [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
- [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
- [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
- [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
- [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
- [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
- _LT_COMPILER_NO_RTTI($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
- LT_SYS_DLOPEN_SELF
- _LT_CMD_STRIPLIB
-
- # Report which library types will actually be built
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
-
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined. These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
- (test "X$CXX" != "Xg++"))) ; then
- AC_PROG_CXXCPP
-else
- _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="int some_variable = 0;"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC=$CC
- lt_save_CFLAGS=$CFLAGS
- lt_save_LD=$LD
- lt_save_GCC=$GCC
- GCC=$GXX
- lt_save_with_gnu_ld=$with_gnu_ld
- lt_save_path_LD=$lt_cv_path_LD
- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
- else
- $as_unset lt_cv_prog_gnu_ld
- fi
- if test -n "${lt_cv_path_LDCXX+set}"; then
- lt_cv_path_LD=$lt_cv_path_LDCXX
- else
- $as_unset lt_cv_path_LD
- fi
- test -z "${LDCXX+set}" || LD=$LDCXX
- CC=${CXX-"c++"}
- CFLAGS=$CXXFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-
- if test -n "$compiler"; then
- # We don't want -fno-exception when compiling C++ code, so set the
- # no_builtin_flag separately
- if test "$GXX" = yes; then
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
- else
- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
- fi
-
- if test "$GXX" = yes; then
- # Set up default GNU C++ configuration
-
- LT_PATH_LD
-
- # Check if GNU C++ uses GNU ld as the underlying linker, since the
- # archiving commands below assume that GNU ld is being used.
- if test "$with_gnu_ld" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # If archive_cmds runs LD, not CC, wlarc should be empty
- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
- # investigate it a little bit more. (MM)
- wlarc='${wl}'
-
- # ancient GNU ld didn't support --whole-archive et. al.
- if eval "`$CC -print-prog-name=ld` --help 2>&1" |
- $GREP 'no-whole-archive' > /dev/null; then
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- _LT_TAGVAR(whole_archive_flag_spec, $1)=
- fi
- else
- with_gnu_ld=no
- wlarc=
-
- # A generic and very simple default shared library creation
- # command for GNU C++ for the case where it uses the native
- # linker, instead of GNU ld. If possible, this setting should
- # overridden to take advantage of the native linker features on
- # the platform it is being used on.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- fi
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
- else
- GXX=no
- with_gnu_ld=no
- wlarc=
- fi
-
- # PORTME: fill in a description of your system's C++ link characteristics
- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
- _LT_TAGVAR(ld_shlibs, $1)=yes
- case $host_os in
- aix3*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" = ia64; then
- # On IA64, the linker does run time linking by default, so we don't
- # have to do anything special.
- aix_use_runtimelinking=no
- exp_sym_flag='-Bexport'
- no_entry_flag=""
- else
- aix_use_runtimelinking=no
-
- # Test if we are trying to use run time linking or normal
- # AIX style linking. If -brtl is somewhere in LDFLAGS, we
- # need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
- for ld_flag in $LDFLAGS; do
- case $ld_flag in
- *-brtl*)
- aix_use_runtimelinking=yes
- break
- ;;
- esac
- done
- ;;
- esac
-
- exp_sym_flag='-bexport'
- no_entry_flag='-bnoentry'
- fi
-
- # When large executables or shared objects are built, AIX ld can
- # have problems creating the table of contents. If linking a library
- # or program results in "error TOC overflow" add -mminimal-toc to
- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
- _LT_TAGVAR(archive_cmds, $1)=''
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
- if test "$GXX" = yes; then
- case $host_os in aix4.[[012]]|aix4.[[012]].*)
- # We only want to do this on AIX 4.2 and lower, the check
- # below for broken collect2 doesn't work under 4.3+
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" &&
- strings "$collect2name" | $GREP resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- :
- else
- # We have old collect2
- _LT_TAGVAR(hardcode_direct, $1)=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- _LT_TAGVAR(hardcode_minus_L, $1)=yes
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=
- fi
- esac
- shared_flag='-shared'
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag="$shared_flag "'${wl}-G'
- fi
- else
- # not using gcc
- if test "$host_cpu" = ia64; then
- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
- # chokes on -Wl,-G. The following line is correct:
- shared_flag='-G'
- else
- if test "$aix_use_runtimelinking" = yes; then
- shared_flag='${wl}-G'
- else
- shared_flag='${wl}-bM:SRE'
- fi
- fi
- fi
-
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
- # It seems that -bexpall does not export symbols beginning with
- # underscore (_), so it is better to generate a list of symbols to
- # export.
- _LT_TAGVAR(always_export_symbols, $1)=yes
- if test "$aix_use_runtimelinking" = yes; then
- # Warning - without using the other runtime loading flags (-brtl),
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
- # Determine the default libpath from the value encoded in an empty
- # executable.
- _LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
- else
- if test "$host_cpu" = ia64; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
- else
- # Determine the default libpath from the value encoded in an
- # empty executable.
- _LT_SYS_MODULE_PATH_AIX([$1])
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
- # Warning - without using the other run time loading flags,
- # -berok will link without error, but may produce a broken library.
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
- if test "$with_gnu_ld" = yes; then
- # We only use this code for GNU lds that support --whole-archive.
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- else
- # Exported symbols can be pulled into shared objects from archives
- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
- fi
- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
- # This is similar to how AIX traditionally builds its shared
- # libraries.
- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
- fi
- fi
- ;;
-
- beos*)
- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- chorus*)
- case $cc_basename in
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- cygwin* | mingw* | pw32* | cegcc*)
- case $GXX,$cc_basename in
- ,cl* | no,cl*)
- # Native MSVC
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=yes
- _LT_TAGVAR(file_list_spec, $1)='@'
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # Tell ltmain to make .dll files, not .so files.
- shrext_cmds=".dll"
- # FIXME: Setting linknames here is a bad hack.
- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
- else
- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
- fi~
- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
- linknames='
- # The linker will not automatically build a static lib if we build a DLL.
- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- # Don't use ranlib
- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
- lt_tool_outputfile="@TOOL_OUTPUT@"~
- case $lt_outputfile in
- *.exe|*.EXE) ;;
- *)
- lt_outputfile="$lt_outputfile.exe"
- lt_tool_outputfile="$lt_tool_outputfile.exe"
- ;;
- esac~
- func_to_tool_file "$lt_outputfile"~
- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
- $RM "$lt_outputfile.manifest";
- fi'
- ;;
- *)
- # g++
- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
- # as there is no search path for DLLs.
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
- _LT_TAGVAR(always_export_symbols, $1)=no
- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- # If the export-symbols file already is a .def file (1st line
- # is EXPORTS), use it as is; otherwise, prepend...
- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
- cp $export_symbols $output_objdir/$soname.def;
- else
- echo EXPORTS > $output_objdir/$soname.def;
- cat $export_symbols >> $output_objdir/$soname.def;
- fi~
- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
- darwin* | rhapsody*)
- _LT_DARWIN_LINKER_FEATURES($1)
- ;;
-
- dgux*)
- case $cc_basename in
- ec++*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- ghcx*)
- # Green Hills C++ Compiler
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- freebsd2.*)
- # C++ shared libraries reported to be fairly broken before
- # switch to ELF
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- freebsd-elf*)
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- ;;
-
- freebsd* | dragonfly*)
- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
- # conventions
- _LT_TAGVAR(ld_shlibs, $1)=yes
- ;;
-
- haiku*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
-
- hpux9*)
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- ;;
- *)
- if test "$GXX" = yes; then
- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- hpux10*|hpux11*)
- if test $with_gnu_ld = no; then
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- case $host_cpu in
- hppa*64*|ia64*)
- ;;
- *)
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- ;;
- esac
- fi
- case $host_cpu in
- hppa*64*|ia64*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- ;;
- *)
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
- # but as the default
- # location of the library.
- ;;
- esac
-
- case $cc_basename in
- CC*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- aCC*)
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- ;;
- *)
- if test "$GXX" = yes; then
- if test $with_gnu_ld = no; then
- case $host_cpu in
- hppa*64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- ia64*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- ;;
- esac
- fi
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- interix[[3-9]]*)
- _LT_TAGVAR(hardcode_direct, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
- # Instead, shared libraries are loaded at an image base (0x10000000 by
- # default) and relocated if they conflict, which is a slow very memory
- # consuming and fragmenting process. To avoid this, we pick a random,
- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
- # time. Moving up from 0x10000000 also allows more sbrk(2) space.
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
- ;;
- irix5* | irix6*)
- case $cc_basename in
- CC*)
- # SGI C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
- # Archives containing C++ object files must be created using
- # "CC -ar", where "CC" is the IRIX C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
- ;;
- *)
- if test "$GXX" = yes; then
- if test "$with_gnu_ld" = no; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- else
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
- fi
- fi
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- ;;
- esac
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
- _LT_TAGVAR(inherit_rpath, $1)=yes
- ;;
-
- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
- # Archives containing C++ object files must be created using
- # "CC -Bstatic", where "CC" is the KAI C++ compiler.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
- ;;
- icpc* | ecpc* )
- # Intel C++
- with_gnu_ld=yes
- # version 8.0 and above of icpc choke on multiply defined symbols
- # if we add $predep_objects and $postdep_objects, however 7.1 and
- # earlier do not add the objects themselves.
- case `$CC -V 2>&1` in
- *"Version 7."*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- *) # Version 8.0 or newer
- tmp_idyn=
- case $host_cpu in
- ia64*) tmp_idyn=' -i_dynamic';;
- esac
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- ;;
- esac
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
- ;;
- pgCC* | pgcpp*)
- # Portland Group C++ compiler
- case `$CC -V` in
- *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
- $RANLIB $oldlib'
- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
- rm -rf $tpldir~
- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- *) # Version 6 and above use weak symbols
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- ;;
- cxx*)
- # Compaq C++
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
- runpath_var=LD_RUN_PATH
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
- ;;
- xl* | mpixl* | bgxl*)
- # IBM XL 8.0 on PPC, with GNU ld
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
- if test "x$supports_anon_versioning" = xyes; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
- echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
- fi
- ;;
- *)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
- _LT_TAGVAR(compiler_needs_object, $1)=yes
-
- # Not sure whether something based on
- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
- # would be better.
- output_verbose_link_cmd='func_echo_all'
-
- # Archives containing C++ object files must be created using
- # "CC -xar", where "CC" is the Sun C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- ;;
- esac
- ;;
- esac
- ;;
-
- lynxos*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- m88k*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- mvs*)
- case $cc_basename in
- cxx*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
- wlarc=
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- fi
- # Workaround some broken pre-1.5 toolchains
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
- ;;
-
- *nto* | *qnx*)
- _LT_TAGVAR(ld_shlibs, $1)=yes
- ;;
-
- openbsd2*)
- # C++ shared libraries are fairly broken
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- openbsd*)
- if test -f /usr/libexec/ld.so; then
- _LT_TAGVAR(hardcode_direct, $1)=yes
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- fi
- output_verbose_link_cmd=func_echo_all
- else
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
-
- osf3* | osf4* | osf5*)
- case $cc_basename in
- KCC*)
- # Kuck and Associates, Inc. (KAI) C++ Compiler
-
- # KCC will only create a shared library if the output file
- # ends with ".so" (or ".sl" for HP-UX), so rename the library
- # to its proper name (with version) after linking.
- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Archives containing C++ object files must be created using
- # the KAI C++ compiler.
- case $host in
- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
- esac
- ;;
- RCC*)
- # Rational C++ 2.4.1
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- cxx*)
- case $host in
- osf3*)
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- ;;
- *)
- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
- echo "-hidden">> $lib.exp~
- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
- $RM $lib.exp'
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- #
- # There doesn't appear to be a way to prevent this compiler from
- # explicitly linking system object files so we need to strip them
- # from the output so that they don't get included in the library
- # dependencies.
- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
- ;;
- *)
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
- case $host in
- osf3*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
- ;;
- esac
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
- else
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- fi
- ;;
- esac
- ;;
-
- psos*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- sunos4*)
- case $cc_basename in
- CC*)
- # Sun C++ 4.x
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- lcc*)
- # Lucid
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- solaris*)
- case $cc_basename in
- CC* | sunCC*)
- # Sun C++ 4.2, 5.x and Centerline C++
- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- # The compiler driver will combine and reorder linker options,
- # but understands `-z linker_flag'.
- # Supported since Solaris 2.6 (maybe 2.5.1?)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
- ;;
- esac
- _LT_TAGVAR(link_all_deplibs, $1)=yes
-
- output_verbose_link_cmd='func_echo_all'
-
- # Archives containing C++ object files must be created using
- # "CC -xar", where "CC" is the Sun C++ compiler. This is
- # necessary to make sure instantiated templates are included
- # in the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
- ;;
- gcx*)
- # Green Hills C++ Compiler
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
- # The C++ compiler must be used to create the archive.
- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
- ;;
- *)
- # GNU C++ compiler with Solaris linker
- if test "$GXX" = yes && test "$with_gnu_ld" = no; then
- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
- if $CC --version | $GREP -v '^2\.7' > /dev/null; then
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- else
- # g++ 2.7 appears to require `-G' NOT `-shared' on this
- # platform.
- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
- # Commands to make compiler produce verbose output that lists
- # what "hidden" libraries, object files and flags are used when
- # linking a shared library.
- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
- fi
-
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
- case $host_os in
- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
- *)
- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
- ;;
- esac
- fi
- ;;
- esac
- ;;
-
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
-
- sysv5* | sco3.2v5* | sco5v6*)
- # Note: We can NOT use -z defs as we might desire, because we do not
- # link with -lc, and that would cause any symbols used from libc to
- # always be unresolved, which means just about no library would
- # ever link correctly. If we're not using GNU ld we use -z text
- # though, which does catch some bad symbols but isn't as heavy-handed
- # as -z defs.
- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
- _LT_TAGVAR(archive_cmds_need_lc, $1)=no
- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
- _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
- _LT_TAGVAR(link_all_deplibs, $1)=yes
- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
- runpath_var='LD_RUN_PATH'
-
- case $cc_basename in
- CC*)
- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
- '"$_LT_TAGVAR(old_archive_cmds, $1)"
- _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
- '"$_LT_TAGVAR(reload_cmds, $1)"
- ;;
- *)
- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
- ;;
- esac
- ;;
-
- tandem*)
- case $cc_basename in
- NCC*)
- # NonStop-UX NCC 3.20
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
- ;;
-
- vxworks*)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
-
- *)
- # FIXME: insert proper C++ library support
- _LT_TAGVAR(ld_shlibs, $1)=no
- ;;
- esac
-
- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
- _LT_TAGVAR(GCC, $1)="$GXX"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_SYS_HIDDEN_LIBDEPS($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- CC=$lt_save_CC
- CFLAGS=$lt_save_CFLAGS
- LDCXX=$LD
- LD=$lt_save_LD
- GCC=$lt_save_GCC
- with_gnu_ld=$lt_save_with_gnu_ld
- lt_cv_path_LDCXX=$lt_cv_path_LD
- lt_cv_path_LD=$lt_save_path_LD
- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
- case ${2} in
- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
- esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library. It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
- Foo (void) { a = 0; }
-private:
- int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
- subroutine foo
- implicit none
- integer*4 a
- a=0
- return
- end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
- subroutine foo
- implicit none
- integer a
- a=0
- return
- end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
- private int a;
- public void bar (void) {
- a = 0;
- }
-};
-_LT_EOF
-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
-package foo
-func foo() {
-}
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
- # Parse the compiler output and extract the necessary
- # objects, libraries and library flags.
-
- # Sentinel used to keep track of whether or not we are before
- # the conftest object file.
- pre_test_object_deps_done=no
-
- for p in `eval "$output_verbose_link_cmd"`; do
- case ${prev}${p} in
-
- -L* | -R* | -l*)
- # Some compilers place space between "-{L,R}" and the path.
- # Remove the space.
- if test $p = "-L" ||
- test $p = "-R"; then
- prev=$p
- continue
- fi
-
- # Expand the sysroot to ease extracting the directories later.
- if test -z "$prev"; then
- case $p in
- -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
- -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
- -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
- esac
- fi
- case $p in
- =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
- esac
- if test "$pre_test_object_deps_done" = no; then
- case ${prev} in
- -L | -R)
- # Internal compiler library paths should come after those
- # provided the user. The postdeps already come after the
- # user supplied libs so there is no need to process them.
- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
- else
- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
- fi
- ;;
- # The "-l" case would never come before the object being
- # linked, so don't bother handling this case.
- esac
- else
- if test -z "$_LT_TAGVAR(postdeps, $1)"; then
- _LT_TAGVAR(postdeps, $1)="${prev}${p}"
- else
- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
- fi
- fi
- prev=
- ;;
-
- *.lto.$objext) ;; # Ignore GCC LTO objects
- *.$objext)
- # This assumes that the test object file only shows up
- # once in the compiler output.
- if test "$p" = "conftest.$objext"; then
- pre_test_object_deps_done=yes
- continue
- fi
-
- if test "$pre_test_object_deps_done" = no; then
- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
- _LT_TAGVAR(predep_objects, $1)="$p"
- else
- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
- fi
- else
- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
- _LT_TAGVAR(postdep_objects, $1)="$p"
- else
- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
- fi
- fi
- ;;
-
- *) ;; # Ignore the rest.
-
- esac
- done
-
- # Clean up.
- rm -f a.out a.exe
-else
- echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
- # Interix 3.5 installs completely hosed .la files for C++, so rather than
- # hack all around it, let's just trust "g++" to DTRT.
- _LT_TAGVAR(predep_objects,$1)=
- _LT_TAGVAR(postdep_objects,$1)=
- _LT_TAGVAR(postdeps,$1)=
- ;;
-
-linux*)
- case `$CC -V 2>&1 | sed 5q` in
- *Sun\ C*)
- # Sun C++ 5.9
-
- # The more standards-conforming stlport4 library is
- # incompatible with the Cstd library. Avoid specifying
- # it if it's in CXXFLAGS. Ignore libCrun as
- # -library=stlport4 depends on it.
- case " $CXX $CXXFLAGS " in
- *" -library=stlport4 "*)
- solaris_use_stlport4=yes
- ;;
- esac
-
- if test "$solaris_use_stlport4" != yes; then
- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
- fi
- ;;
- esac
- ;;
-
-solaris*)
- case $cc_basename in
- CC* | sunCC*)
- # The more standards-conforming stlport4 library is
- # incompatible with the Cstd library. Avoid specifying
- # it if it's in CXXFLAGS. Ignore libCrun as
- # -library=stlport4 depends on it.
- case " $CXX $CXXFLAGS " in
- *" -library=stlport4 "*)
- solaris_use_stlport4=yes
- ;;
- esac
-
- # Adding this requires a known-good setup of shared libraries for
- # Sun compiler versions before 5.6, else PIC objects from an old
- # archive will be linked into the output, leading to subtle bugs.
- if test "$solaris_use_stlport4" != yes; then
- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
- fi
- ;;
- esac
- ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
- [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
- [Dependencies to place before and after the objects being linked to
- create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
- [The library search path used internally by the compiler when linking
- a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
- _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="\
- subroutine t
- return
- end
-"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code="\
- program t
- end
-"
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
- lt_save_GCC=$GCC
- lt_save_CFLAGS=$CFLAGS
- CC=${F77-"f77"}
- CFLAGS=$FFLAGS
- compiler=$CC
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
- GCC=$G77
- if test -n "$compiler"; then
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_TAGVAR(GCC, $1)="$G77"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- GCC=$lt_save_GCC
- CC="$lt_save_CC"
- CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
- _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working. Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
- # Code to be used in simple compile tests
- lt_simple_compile_test_code="\
- subroutine t
- return
- end
-"
-
- # Code to be used in simple link tests
- lt_simple_link_test_code="\
- program t
- end
-"
-
- # ltmain only uses $CC for tagged configurations so make sure $CC is set.
- _LT_TAG_COMPILER
-
- # save warnings/boilerplate of simple test code
- _LT_COMPILER_BOILERPLATE
- _LT_LINKER_BOILERPLATE
-
- # Allow CC to be a program name with arguments.
- lt_save_CC="$CC"
- lt_save_GCC=$GCC
- lt_save_CFLAGS=$CFLAGS
- CC=${FC-"f95"}
- CFLAGS=$FCFLAGS
- compiler=$CC
- GCC=$ac_cv_fc_compiler_gnu
-
- _LT_TAGVAR(compiler, $1)=$CC
- _LT_CC_BASENAME([$compiler])
-
- if test -n "$compiler"; then
- AC_MSG_CHECKING([if libtool supports shared libraries])
- AC_MSG_RESULT([$can_build_shared])
-
- AC_MSG_CHECKING([whether to build shared libraries])
- test "$can_build_shared" = "no" && enable_shared=no
-
- # On AIX, shared libraries and static libraries use the same namespace, and
- # are all built from PIC.
- case $host_os in
- aix3*)
- test "$enable_shared" = yes && enable_static=no
- if test -n "$RANLIB"; then
- archive_cmds="$archive_cmds~\$RANLIB \$lib"
- postinstall_cmds='$RANLIB $lib'
- fi
- ;;
- aix[[4-9]]*)
- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
- test "$enable_shared" = yes && enable_static=no
- fi
- ;;
- esac
- AC_MSG_RESULT([$enable_shared])
-
- AC_MSG_CHECKING([whether to build static libraries])
- # Make sure either enable_shared or enable_static is yes.
- test "$enable_shared" = yes || enable_static=yes
- AC_MSG_RESULT([$enable_static])
-
- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
- _LT_TAGVAR(LD, $1)="$LD"
-
- ## CAVEAT EMPTOR:
- ## There is no encapsulation within the following macros, do not change
- ## the running order or otherwise move them around unless you know exactly
- ## what you are doing...
- _LT_SYS_HIDDEN_LIBDEPS($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_SYS_DYNAMIC_LINKER($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
- fi # test -n "$compiler"
-
- GCC=$lt_save_GCC
- CC=$lt_save_CC
- CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
- _LT_COMPILER_NO_RTTI($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_GO_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Go compiler
-# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GO_CONFIG],
-[AC_REQUIRE([LT_PROG_GO])dnl
-AC_LANG_SAVE
-
-# Source file extension for Go test sources.
-ac_ext=go
-
-# Object file extension for compiled Go test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="package main; func main() { }"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='package main; func main() { }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GOC-"gccgo"}
-CFLAGS=$GOFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# Go did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
- _LT_COMPILER_NO_RTTI($1)
- _LT_COMPILER_PIC($1)
- _LT_COMPILER_C_O($1)
- _LT_COMPILER_FILE_LOCKS($1)
- _LT_LINKER_SHLIBS($1)
- _LT_LINKER_HARDCODE_LIBPATH($1)
-
- _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GO_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined. These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
- :
- _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
- [AC_CHECK_TOOL(GCJ, gcj,)
- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
- AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_GO
-# ----------
-AC_DEFUN([LT_PROG_GO],
-[AC_CHECK_TOOL(GOC, gccgo,)
-])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible. Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
- [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-############################################################
-# NOTE: This macro has been submitted for inclusion into #
-# GNU Autoconf as AC_PROG_SED. When it is available in #
-# a released version of Autoconf we should remove this #
-# macro and use it instead. #
-############################################################
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for lt_ac_prog in sed gsed; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
- fi
- done
- done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
- test ! -f $lt_ac_sed && continue
- cat /dev/null > conftest.in
- lt_ac_count=0
- echo $ECHO_N "0123456789$ECHO_C" >conftest.in
- # Check for GNU sed and select it if it is found.
- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
- lt_cv_path_SED=$lt_ac_sed
- break
- fi
- while true; do
- cat conftest.in conftest.in >conftest.tmp
- mv conftest.tmp conftest.in
- cp conftest.in conftest.nl
- echo >>conftest.nl
- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
- cmp -s conftest.out conftest.nl || break
- # 10000 chars as input seems more than enough
- test $lt_ac_count -gt 10 && break
- lt_ac_count=`expr $lt_ac_count + 1`
- if test $lt_ac_count -gt $lt_ac_max; then
- lt_ac_max=$lt_ac_count
- lt_cv_path_SED=$lt_ac_sed
- fi
- done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
- = c,a/b,b/c, \
- && eval 'test $(( 1 + 1 )) -eq 2 \
- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
- && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
- >/dev/null 2>&1 \
- && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
- lt_unset=unset
-else
- lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
- lt_SP2NL='tr \040 \012'
- lt_NL2SP='tr \015\012 \040\040'
- ;;
- *) # EBCDIC based system
- lt_SP2NL='tr \100 \n'
- lt_NL2SP='tr \r\n \100\100'
- ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
- case ${1} in
- */*) func_dirname_result="${1%/*}${2}" ;;
- * ) func_dirname_result="${3}" ;;
- esac
- func_basename_result="${1##*/}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
- # positional parameters, so assign one to ordinary parameter first.
- func_stripname_result=${3}
- func_stripname_result=${func_stripname_result#"${1}"}
- func_stripname_result=${func_stripname_result%"${2}"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
- func_split_long_opt_name=${1%%=*}
- func_split_long_opt_arg=${1#*=}])
-
- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
- func_split_short_opt_arg=${1#??}
- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
- case ${1} in
- *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
- *) func_lo2o_result=${1} ;;
- esac])
-
- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo])
-
- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))])
-
- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"])
-
- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
- func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
- eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
- # Save a `func_append' function call where possible by direct use of '+='
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-else
- # Save a `func_append' function call even when '+=' is not available
- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
- && mv -f "$cfgfile.tmp" "$cfgfile" \
- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
- test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path). These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
- *-*-mingw* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
- ;;
- *-*-cygwin* )
- lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
- ;;
- * ) # otherwise, assume *nix
- lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
- ;;
- esac
- ;;
- *-*-cygwin* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
- ;;
- *-*-cygwin* )
- lt_cv_to_host_file_cmd=func_convert_file_noop
- ;;
- * ) # otherwise, assume *nix
- lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
- ;;
- esac
- ;;
- * ) # unhandled hosts (and "normal" native builds)
- lt_cv_to_host_file_cmd=func_convert_file_noop
- ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
- [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
- *-*-mingw* )
- case $build in
- *-*-mingw* ) # actually msys
- lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
- ;;
- esac
- ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
- [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
deleted file mode 100644
index 5d9acd8..0000000
--- a/m4/ltoptions.m4
+++ /dev/null
@@ -1,384 +0,0 @@
-# Helper functions for option handling. -*- Autoconf -*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it. Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
- _LT_MANGLE_DEFUN([$1], [$2]),
- [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
- [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME. If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
- [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
- dnl
- dnl Simply set some default values (i.e off) if boolean options were not
- dnl specified:
- _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
- ])
- _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
- ])
- dnl
- dnl If no reference was made to various pairs of opposing options, then
- dnl we run the default mode handler for the pair. For example, if neither
- dnl `shared' nor `disable-shared' was passed, we enable building of shared
- dnl archives by default:
- _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
- _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
- _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
- [_LT_ENABLE_FAST_INSTALL])
- ])
-])# _LT_SET_OPTIONS
-
-
-## --------------------------------- ##
-## Macros to handle LT_INIT options. ##
-## --------------------------------- ##
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS], [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
- [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
- [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_shared=yes ;;
- no) enable_shared=no ;;
- *)
- enable_shared=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_shared=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
- _LT_DECL([build_libtool_libs], [enable_shared], [0],
- [Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
- [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
- [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_static=yes ;;
- no) enable_static=no ;;
- *)
- enable_static=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_static=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
- _LT_DECL([build_old_libs], [enable_static], [0],
- [Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
- [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
- [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
- [p=${PACKAGE-default}
- case $enableval in
- yes) enable_fast_install=yes ;;
- no) enable_fast_install=no ;;
- *)
- enable_fast_install=no
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for pkg in $enableval; do
- IFS="$lt_save_ifs"
- if test "X$pkg" = "X$p"; then
- enable_fast_install=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
- [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
- [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
- [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
- [lt_p=${PACKAGE-default}
- case $withval in
- yes|no) pic_mode=$withval ;;
- *)
- pic_mode=default
- # Look at the argument we got. We use all the common list separators.
- lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
- for lt_pkg in $withval; do
- IFS="$lt_save_ifs"
- if test "X$lt_pkg" = "X$lt_p"; then
- pic_mode=yes
- fi
- done
- IFS="$lt_save_ifs"
- ;;
- esac],
- [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-## ----------------- ##
-## LTDL_INIT Options ##
-## ----------------- ##
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
- [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
- [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
- [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
- [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
- [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
deleted file mode 100644
index 9000a05..0000000
--- a/m4/ltsugar.m4
+++ /dev/null
@@ -1,123 +0,0 @@
-# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
- [$#], [2], [[$2]],
- [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
- [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
- [$#], 1, [],
- [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
- m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
- [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
- [m4_foreach([_Lt_suffix],
- ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
- [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
-
-
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
- [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
- [lt_append([$1], [$2], [$3])$4],
- [$5])],
- [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
- m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
- m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
- [$5],
- [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
- [lt_join(m4_quote(m4_default([$4], [[, ]])),
- lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
- [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
deleted file mode 100644
index 07a8602..0000000
--- a/m4/ltversion.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-# ltversion.m4 -- version numbers -*- Autoconf -*-
-#
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3337 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
deleted file mode 100644
index c573da9..0000000
--- a/m4/lt~obsolete.m4
+++ /dev/null
@@ -1,98 +0,0 @@
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-# Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else. This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
-
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])])
diff --git a/m4/nls.m4 b/m4/nls.m4
deleted file mode 100644
index 003704c..0000000
--- a/m4/nls.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-# nls.m4 serial 5 (gettext-0.18)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
-dnl Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_PREREQ([2.50])
-
-AC_DEFUN([AM_NLS],
-[
- AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE([nls],
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT([$USE_NLS])
- AC_SUBST([USE_NLS])
-])
diff --git a/m4/po.m4 b/m4/po.m4
deleted file mode 100644
index 47f36a4..0000000
--- a/m4/po.m4
+++ /dev/null
@@ -1,449 +0,0 @@
-# po.m4 serial 17 (gettext-0.18)
-dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_PREREQ([2.50])
-
-dnl Checks for all prerequisites of the po subdirectory.
-AC_DEFUN([AM_PO_SUBDIRS],
-[
- AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
- AC_REQUIRE([AM_NLS])dnl
-
- dnl Release version of the gettext macros. This is used to ensure that
- dnl the gettext macros and po/Makefile.in.in are in sync.
- AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
-
- dnl Perform the following tests also if --disable-nls has been given,
- dnl because they are needed for "make dist" to work.
-
- dnl Search for GNU msgfmt in the PATH.
- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
- dnl The second test excludes FreeBSD msgfmt.
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
-
- dnl Test whether it is GNU msgfmt >= 0.15.
-changequote(,)dnl
- case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
- *) MSGFMT_015=$MSGFMT ;;
- esac
-changequote([,])dnl
- AC_SUBST([MSGFMT_015])
-changequote(,)dnl
- case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
- *) GMSGFMT_015=$GMSGFMT ;;
- esac
-changequote([,])dnl
- AC_SUBST([GMSGFMT_015])
-
- dnl Search for GNU xgettext 0.12 or newer in the PATH.
- dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
- dnl The second test excludes FreeBSD xgettext.
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
-
- dnl Test whether it is GNU xgettext >= 0.15.
-changequote(,)dnl
- case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
- *) XGETTEXT_015=$XGETTEXT ;;
- esac
-changequote([,])dnl
- AC_SUBST([XGETTEXT_015])
-
- dnl Search for GNU msgmerge 0.11 or newer in the PATH.
- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
- [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
-
- dnl Installation directories.
- dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
- dnl have to define it here, so that it can be used in po/Makefile.
- test -n "$localedir" || localedir='${datadir}/locale'
- AC_SUBST([localedir])
-
- dnl Support for AM_XGETTEXT_OPTION.
- test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
- AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
-
- AC_CONFIG_COMMANDS([po-directories], [[
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- # Treat a directory as a PO directory if and only if it has a
- # POTFILES.in file. This allows packages to have multiple PO
- # directories under different names or in different locations.
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done]],
- [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
- # from automake < 1.5.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
- ])
-])
-
-dnl Postprocesses a Makefile in a directory containing PO files.
-AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
-[
- # When this code is run, in config.status, two variables have already been
- # set:
- # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
- # - LINGUAS is the value of the environment variable LINGUAS at configure
- # time.
-
-changequote(,)dnl
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- # Find a way to echo strings without interpreting backslash.
- if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='echo'
- else
- if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
- gt_echo='printf %s\n'
- else
- echo_func () {
- cat <<EOT
-$*
-EOT
- }
- gt_echo='echo_func'
- fi
- fi
-
- # A sed script that extracts the value of VARIABLE from a Makefile.
- sed_x_variable='
-# Test if the hold space is empty.
-x
-s/P/P/
-x
-ta
-# Yes it was empty. Look if we have the expected variable definition.
-/^[ ]*VARIABLE[ ]*=/{
- # Seen the first line of the variable definition.
- s/^[ ]*VARIABLE[ ]*=//
- ba
-}
-bd
-:a
-# Here we are processing a line from the variable definition.
-# Remove comment, more precisely replace it with a space.
-s/#.*$/ /
-# See if the line ends in a backslash.
-tb
-:b
-s/\\$//
-# Print the line, without the trailing backslash.
-p
-tc
-# There was no trailing backslash. The end of the variable definition is
-# reached. Clear the hold space.
-s/^.*$//
-x
-bd
-:c
-# A trailing backslash means that the variable definition continues in the
-# next line. Put a nonempty string into the hold space to indicate this.
-s/^.*$/P/
-x
-:d
-'
-changequote([,])dnl
-
- # Set POTFILES to the value of the Makefile variable POTFILES.
- sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
- POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
- # Compute POTFILES_DEPS as
- # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
- POTFILES_DEPS=
- for file in $POTFILES; do
- POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
- done
- POMAKEFILEDEPS=""
-
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
- sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
- ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
- fi
- # Hide the ALL_LINGUAS assigment from automake < 1.5.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- # Compute POFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
- # Compute UPDATEPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
- # Compute DUMMYPOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
- # Compute GMOFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
- # Compute PROPERTIESFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
- # Compute CLASSFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
- # Compute QMFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
- # Compute MSGFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
- # Compute RESOURCESDLLFILES
- # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- GMOFILES=
- PROPERTIESFILES=
- CLASSFILES=
- QMFILES=
- MSGFILES=
- RESOURCESDLLFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
- CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
- QMFILES="$QMFILES $srcdirpre$lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- JAVACATALOGS=
- QTCATALOGS=
- TCLCATALOGS=
- CSHARPCATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
- QTCATALOGS="$QTCATALOGS $lang.qm"
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
- done
- fi
-
- sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
- if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang.msg: $lang.po
- @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
- \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
- # Add dependencies that cannot be formulated as a simple suffix rule.
- for lang in $ALL_LINGUAS; do
- frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
- cat >> "$ac_file.tmp" <<EOF
-$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
- @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
- \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
-EOF
- done
- fi
- if test -n "$POMAKEFILEDEPS"; then
- cat >> "$ac_file.tmp" <<EOF
-Makefile: $POMAKEFILEDEPS
-EOF
- fi
- mv "$ac_file.tmp" "$ac_file"
-])
-
-dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
-AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
-[
- XGETTEXT_EXTRA_OPTIONS=
-])
-
-dnl Registers an option to be passed to xgettext in the po subdirectory.
-AC_DEFUN([AM_XGETTEXT_OPTION],
-[
- AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
- XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
-])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
deleted file mode 100644
index 2d804ac..0000000
--- a/m4/progtest.m4
+++ /dev/null
@@ -1,92 +0,0 @@
-# progtest.m4 serial 6 (gettext-0.18)
-dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-AC_PREREQ([2.50])
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL([ac_cv_path_$1],
-[case "[$]$1" in
- [[\\/]]* | ?:[[\\/]]*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$][$1])
-else
- AC_MSG_RESULT([no])
-fi
-AC_SUBST([$1])dnl
-])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
deleted file mode 100644
index 228105b..0000000
--- a/m4/stdint.m4
+++ /dev/null
@@ -1,695 +0,0 @@
-dnl @synopsis AX_CREATE_STDINT_H [( HEADER-TO-GENERATE [, HEDERS-TO-CHECK])]
-dnl
-dnl the "ISO C9X: 7.18 Integer types <stdint.h>" section requires the
-dnl existence of an include file <stdint.h> that defines a set of
-dnl typedefs, especially uint8_t,int32_t,uintptr_t. Many older
-dnl installations will not provide this file, but some will have the
-dnl very same definitions in <inttypes.h>. In other enviroments we can
-dnl use the inet-types in <sys/types.h> which would define the typedefs
-dnl int8_t and u_int8_t respectivly.
-dnl
-dnl This macros will create a local "_stdint.h" or the headerfile given
-dnl as an argument. In many cases that file will just "#include
-dnl <stdint.h>" or "#include <inttypes.h>", while in other environments
-dnl it will provide the set of basic 'stdint's definitions/typedefs:
-dnl
-dnl int8_t,uint8_t,int16_t,uint16_t,int32_t,uint32_t,intptr_t,uintptr_t
-dnl int_least32_t.. int_fast32_t.. intmax_t
-dnl
-dnl which may or may not rely on the definitions of other files, or
-dnl using the AC_CHECK_SIZEOF macro to determine the actual sizeof each
-dnl type.
-dnl
-dnl if your header files require the stdint-types you will want to
-dnl create an installable file mylib-int.h that all your other
-dnl installable header may include. So if you have a library package
-dnl named "mylib", just use
-dnl
-dnl AX_CREATE_STDINT_H(mylib-int.h)
-dnl
-dnl in configure.ac and go to install that very header file in
-dnl Makefile.am along with the other headers (mylib.h) - and the
-dnl mylib-specific headers can simply use "#include <mylib-int.h>" to
-dnl obtain the stdint-types.
-dnl
-dnl Remember, if the system already had a valid <stdint.h>, the
-dnl generated file will include it directly. No need for fuzzy
-dnl HAVE_STDINT_H things... (oops, GCC 4.2.x has deliberatly disabled
-dnl its stdint.h for non-c99 compilation and the c99-mode is not the
-dnl default. Therefore this macro will not use the compiler's stdint.h
-dnl - please complain to the GCC developers).
-dnl
-dnl @category C
-dnl @author Guido U. Draheim <guidod@gmx.de>
-dnl @version 2006-10-13
-dnl @license GPLWithACException
-
-AC_DEFUN([AX_CHECK_DATA_MODEL],[
- AC_CHECK_SIZEOF(char)
- AC_CHECK_SIZEOF(short)
- AC_CHECK_SIZEOF(int)
- AC_CHECK_SIZEOF(long)
- AC_CHECK_SIZEOF(void*)
- ac_cv_char_data_model=""
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char"
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short"
- ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int"
- ac_cv_long_data_model=""
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int"
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long"
- ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp"
- AC_MSG_CHECKING([data model])
- case "$ac_cv_char_data_model/$ac_cv_long_data_model" in
- 122/242) ac_cv_data_model="IP16" ; n="standard 16bit machine" ;;
- 122/244) ac_cv_data_model="LP32" ; n="standard 32bit machine" ;;
- 122/*) ac_cv_data_model="i16" ; n="unusual int16 model" ;;
- 124/444) ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;;
- 124/488) ac_cv_data_model="LP64" ; n="standard 64bit unixish" ;;
- 124/448) ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;;
- 124/*) ac_cv_data_model="i32" ; n="unusual int32 model" ;;
- 128/888) ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;;
- 128/*) ac_cv_data_model="i64" ; n="unusual int64 model" ;;
- 222/*2) ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;;
- 333/*3) ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;;
- 444/*4) ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;;
- 666/*6) ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;;
- 888/*8) ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;;
- 222/*|333/*|444/*|666/*|888/*) :
- ac_cv_data_model="iDSP" ; n="unusual dsptype" ;;
- *) ac_cv_data_model="none" ; n="very unusual model" ;;
- esac
- AC_MSG_RESULT([$ac_cv_data_model ($ac_cv_long_data_model, $n)])
-])
-
-dnl AX_CHECK_HEADER_STDINT_X([HEADERLIST][,ACTION-IF])
-AC_DEFUN([AX_CHECK_HEADER_STDINT_X],[
-AC_CACHE_CHECK([for stdint uintptr_t], [ac_cv_header_stdint_x],[
- ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h)
- AC_MSG_RESULT([(..)])
- for i in m4_ifval([$1],[$1],[stdint.h inttypes.h sys/inttypes.h sys/types.h])
- do
- unset ac_cv_type_uintptr_t
- unset ac_cv_type_uint64_t
- AC_CHECK_TYPE(uintptr_t,[ac_cv_header_stdint_x=$i],continue,[#include <$i>])
- AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
- m4_ifvaln([$1],[$1]) break
- done
- AC_MSG_CHECKING([for stdint uintptr_t])
- ])
-])
-
-AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[
-AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[
- ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h)
- AC_MSG_RESULT([(..)])
- for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h sys/types.h stdint.h])
- do
- unset ac_cv_type_uint32_t
- unset ac_cv_type_uint64_t
- AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>])
- AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>])
- m4_ifvaln([$1],[$1]) break
- break;
- done
- AC_MSG_CHECKING([for stdint uint32_t])
- ])
-])
-
-AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[
-AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[
- ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h)
- AC_MSG_RESULT([(..)])
- for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; do
- unset ac_cv_type_u_int32_t
- unset ac_cv_type_u_int64_t
- AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],continue,[#include <$i>])
- AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>])
- m4_ifvaln([$1],[$1]) break
- break;
- done
- AC_MSG_CHECKING([for stdint u_int32_t])
- ])
-])
-
-AC_DEFUN([AX_CREATE_STDINT_H],
-[# ------ AX CREATE STDINT H -------------------------------------
-AC_MSG_CHECKING([for stdint types])
-ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)`
-# try to shortcircuit - if the default include path of the compiler
-# can find a "stdint.h" header then we assume that all compilers can.
-AC_CACHE_VAL([ac_cv_header_stdint_t],[
-old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS=""
-old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS=""
-old_CFLAGS="$CFLAGS" ; CFLAGS=""
-AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
-[ac_cv_stdint_result="(assuming C99 compatible system)"
- ac_cv_header_stdint_t="stdint.h"; ],
-[ac_cv_header_stdint_t=""])
-if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then
-CFLAGS="-std=c99"
-AC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;],
-[AC_MSG_WARN(your GCC compiler has a defunct stdint.h for its default-mode)])
-fi
-CXXFLAGS="$old_CXXFLAGS"
-CPPFLAGS="$old_CPPFLAGS"
-CFLAGS="$old_CFLAGS" ])
-
-v="... $ac_cv_header_stdint_h"
-if test "$ac_stdint_h" = "stdint.h" ; then
- AC_MSG_RESULT([(are you sure you want them in ./stdint.h?)])
-elif test "$ac_stdint_h" = "inttypes.h" ; then
- AC_MSG_RESULT([(are you sure you want them in ./inttypes.h?)])
-elif test "_$ac_cv_header_stdint_t" = "_" ; then
- AC_MSG_RESULT([(putting them into $ac_stdint_h)$v])
-else
- ac_cv_header_stdint="$ac_cv_header_stdint_t"
- AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)])
-fi
-
-if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit..
-
-dnl .....intro message done, now do a few system checks.....
-dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type,
-dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW
-dnl instead that is triggered with 3 or more arguments (see types.m4)
-
-inttype_headers=`echo $2 | sed -e 's/,/ /g'`
-
-ac_cv_stdint_result="(no helpful system typedefs seen)"
-AX_CHECK_HEADER_STDINT_X(dnl
- stdint.h inttypes.h sys/inttypes.h $inttype_headers,
- ac_cv_stdint_result="(seen uintptr_t$and64 in $i)")
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-AX_CHECK_HEADER_STDINT_O(dnl,
- inttypes.h sys/inttypes.h stdint.h $inttype_headers,
- ac_cv_stdint_result="(seen uint32_t$and64 in $i)")
-fi
-
-if test "_$ac_cv_header_stdint_x" = "_" ; then
-if test "_$ac_cv_header_stdint_o" = "_" ; then
-AX_CHECK_HEADER_STDINT_U(dnl,
- sys/types.h inttypes.h sys/inttypes.h $inttype_headers,
- ac_cv_stdint_result="(seen u_int32_t$and64 in $i)")
-fi fi
-
-dnl if there was no good C99 header file, do some typedef checks...
-if test "_$ac_cv_header_stdint_x" = "_" ; then
- AC_MSG_CHECKING([for stdint datatype model])
- AC_MSG_RESULT([(..)])
- AX_CHECK_DATA_MODEL
-fi
-
-if test "_$ac_cv_header_stdint_x" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_x"
-elif test "_$ac_cv_header_stdint_o" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_o"
-elif test "_$ac_cv_header_stdint_u" != "_" ; then
- ac_cv_header_stdint="$ac_cv_header_stdint_u"
-else
- ac_cv_header_stdint="stddef.h"
-fi
-
-AC_MSG_CHECKING([for extra inttypes in chosen header])
-AC_MSG_RESULT([($ac_cv_header_stdint)])
-dnl see if int_least and int_fast types are present in _this_ header.
-unset ac_cv_type_int_least32_t
-unset ac_cv_type_int_fast32_t
-AC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>])
-AC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>])
-AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>])
-
-fi # shortcircut to system "stdint.h"
-# ------------------ PREPARE VARIABLES ------------------------------
-if test "$GCC" = "yes" ; then
-ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1`
-else
-ac_cv_stdint_message="using $CC"
-fi
-
-AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl
-$ac_cv_stdint_result])
-
-dnl -----------------------------------------------------------------
-# ----------------- DONE inttypes.h checks START header -------------
-AC_CONFIG_COMMANDS([$ac_stdint_h],[
-AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h)
-ac_stdint=$tmp/_stdint.h
-
-echo "#ifndef" $_ac_stdint_h >$ac_stdint
-echo "#define" $_ac_stdint_h "1" >>$ac_stdint
-echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint
-echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint
-echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_t" != "_" ; then
-echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint
-echo "#include <stdint.h>" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-echo "#endif" >>$ac_stdint
-else
-
-cat >>$ac_stdint <<STDINT_EOF
-
-/* ................... shortcircuit part ........................... */
-
-#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H
-#include <stdint.h>
-#else
-#include <stddef.h>
-
-/* .................... configured part ............................ */
-
-STDINT_EOF
-
-echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_x" != "_" ; then
- ac_header="$ac_cv_header_stdint_x"
- echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint
-fi
-
-echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_o" != "_" ; then
- ac_header="$ac_cv_header_stdint_o"
- echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint
-fi
-
-echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint
-if test "_$ac_cv_header_stdint_u" != "_" ; then
- ac_header="$ac_cv_header_stdint_u"
- echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint
-else
- echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint
-fi
-
-echo "" >>$ac_stdint
-
-if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then
- echo "#include <$ac_header>" >>$ac_stdint
- echo "" >>$ac_stdint
-fi fi
-
-echo "/* which 64bit typedef has been found */" >>$ac_stdint
-if test "$ac_cv_type_uint64_t" = "yes" ; then
-echo "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint
-fi
-if test "$ac_cv_type_u_int64_t" = "yes" ; then
-echo "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* which type model has been detected */" >>$ac_stdint
-if test "_$ac_cv_char_data_model" != "_" ; then
-echo "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint
-echo "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint
-else
-echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint
-echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
-echo "/* whether int_least types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_least32_t" = "yes"; then
-echo "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint
-fi
-echo "/* whether int_fast types were detected */" >>$ac_stdint
-if test "$ac_cv_type_int_fast32_t" = "yes"; then
-echo "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint
-fi
-echo "/* whether intmax_t type was detected */" >>$ac_stdint
-if test "$ac_cv_type_intmax_t" = "yes"; then
-echo "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint
-else
-echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint
-fi
-echo "" >>$ac_stdint
-
- cat >>$ac_stdint <<STDINT_EOF
-/* .................... detections part ............................ */
-
-/* whether we need to define bitspecific types from compiler base types */
-#ifndef _STDINT_HEADER_INTPTR
-#ifndef _STDINT_HEADER_UINT32
-#ifndef _STDINT_HEADER_U_INT32
-#define _STDINT_NEED_INT_MODEL_T
-#else
-#define _STDINT_HAVE_U_INT_TYPES
-#endif
-#endif
-#endif
-
-#ifdef _STDINT_HAVE_U_INT_TYPES
-#undef _STDINT_NEED_INT_MODEL_T
-#endif
-
-#ifdef _STDINT_CHAR_MODEL
-#if _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124
-#ifndef _STDINT_BYTE_MODEL
-#define _STDINT_BYTE_MODEL 12
-#endif
-#endif
-#endif
-
-#ifndef _STDINT_HAVE_INT_LEAST32_T
-#define _STDINT_NEED_INT_LEAST_T
-#endif
-
-#ifndef _STDINT_HAVE_INT_FAST32_T
-#define _STDINT_NEED_INT_FAST_T
-#endif
-
-#ifndef _STDINT_HEADER_INTPTR
-#define _STDINT_NEED_INTPTR_T
-#ifndef _STDINT_HAVE_INTMAX_T
-#define _STDINT_NEED_INTMAX_T
-#endif
-#endif
-
-
-/* .................... definition part ............................ */
-
-/* some system headers have good uint64_t */
-#ifndef _HAVE_UINT64_T
-#if defined _STDINT_HAVE_UINT64_T || defined HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#elif defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T
-#define _HAVE_UINT64_T
-typedef u_int64_t uint64_t;
-#endif
-#endif
-
-#ifndef _HAVE_UINT64_T
-/* .. here are some common heuristics using compiler runtime specifics */
-#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-
-#elif !defined __STRICT_ANSI__
-#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
-#define _HAVE_UINT64_T
-typedef __int64 int64_t;
-typedef unsigned __int64 uint64_t;
-
-#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__
-/* note: all ELF-systems seem to have loff-support which needs 64-bit */
-#if !defined _NO_LONGLONG
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef long long int64_t;
-typedef unsigned long long uint64_t;
-#endif
-
-#elif defined __alpha || (defined __mips && defined _ABIN32)
-#if !defined _NO_LONGLONG
-typedef long int64_t;
-typedef unsigned long uint64_t;
-#endif
- /* compiler/cpu type to define int64_t */
-#endif
-#endif
-#endif
-
-#if defined _STDINT_HAVE_U_INT_TYPES
-/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */
-typedef u_int8_t uint8_t;
-typedef u_int16_t uint16_t;
-typedef u_int32_t uint32_t;
-
-/* glibc compatibility */
-#ifndef __int8_t_defined
-#define __int8_t_defined
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INT_MODEL_T
-/* we must guess all the basic types. Apart from byte-adressable system, */
-/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */
-/* (btw, those nibble-addressable systems are way off, or so we assume) */
-
-dnl /* have a look at "64bit and data size neutrality" at */
-dnl /* http://unix.org/version2/whatsnew/login_64bit.html */
-dnl /* (the shorthand "ILP" types always have a "P" part) */
-
-#if defined _STDINT_BYTE_MODEL
-#if _STDINT_LONG_MODEL+0 == 242
-/* 2:4:2 = IP16 = a normal 16-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned long uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef long int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444
-/* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */
-/* 4:4:4 = ILP32 = a normal 32-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488
-/* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */
-/* 4:8:8 = LP64 = a normal 64-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-/* this system has a "long" of 64bit */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-typedef unsigned long uint64_t;
-typedef long int64_t;
-#endif
-#elif _STDINT_LONG_MODEL+0 == 448
-/* LLP64 a 64-bit system derived from a 32-bit system */
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-#endif
-/* assuming the system has a "long long" */
-#ifndef _HAVE_UINT64_T
-#define _HAVE_UINT64_T
-#define _HAVE_LONGLONG_UINT64_T
-typedef unsigned long long uint64_t;
-typedef long long int64_t;
-#endif
-#else
-#define _STDINT_NO_INT32_T
-#endif
-#else
-#define _STDINT_NO_INT8_T
-#define _STDINT_NO_INT32_T
-#endif
-#endif
-
-/*
- * quote from SunOS-5.8 sys/inttypes.h:
- * Use at your own risk. As of February 1996, the committee is squarely
- * behind the fixed sized types; the "least" and "fast" types are still being
- * discussed. The probability that the "fast" types may be removed before
- * the standard is finalized is high enough that they are not currently
- * implemented.
- */
-
-#if defined _STDINT_NEED_INT_LEAST_T
-typedef int8_t int_least8_t;
-typedef int16_t int_least16_t;
-typedef int32_t int_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef int64_t int_least64_t;
-#endif
-
-typedef uint8_t uint_least8_t;
-typedef uint16_t uint_least16_t;
-typedef uint32_t uint_least32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t uint_least64_t;
-#endif
- /* least types */
-#endif
-
-#if defined _STDINT_NEED_INT_FAST_T
-typedef int8_t int_fast8_t;
-typedef int int_fast16_t;
-typedef int32_t int_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef int64_t int_fast64_t;
-#endif
-
-typedef uint8_t uint_fast8_t;
-typedef unsigned uint_fast16_t;
-typedef uint32_t uint_fast32_t;
-#ifdef _HAVE_UINT64_T
-typedef uint64_t uint_fast64_t;
-#endif
- /* fast types */
-#endif
-
-#ifdef _STDINT_NEED_INTMAX_T
-#ifdef _HAVE_UINT64_T
-typedef int64_t intmax_t;
-typedef uint64_t uintmax_t;
-#else
-typedef long intmax_t;
-typedef unsigned long uintmax_t;
-#endif
-#endif
-
-#ifdef _STDINT_NEED_INTPTR_T
-#ifndef __intptr_t_defined
-#define __intptr_t_defined
-/* we encourage using "long" to store pointer values, never use "int" ! */
-#if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484
-typedef unsigned int uintptr_t;
-typedef int intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444
-typedef unsigned long uintptr_t;
-typedef long intptr_t;
-#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T
-typedef uint64_t uintptr_t;
-typedef int64_t intptr_t;
-#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */
-typedef unsigned long uintptr_t;
-typedef long intptr_t;
-#endif
-#endif
-#endif
-
-/* The ISO C99 standard specifies that in C++ implementations these
- should only be defined if explicitly requested. */
-#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
-#ifndef UINT32_C
-
-/* Signed. */
-# define INT8_C(c) c
-# define INT16_C(c) c
-# define INT32_C(c) c
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define INT64_C(c) c ## L
-# else
-# define INT64_C(c) c ## LL
-# endif
-
-/* Unsigned. */
-# define UINT8_C(c) c ## U
-# define UINT16_C(c) c ## U
-# define UINT32_C(c) c ## U
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define UINT64_C(c) c ## UL
-# else
-# define UINT64_C(c) c ## ULL
-# endif
-
-/* Maximal type. */
-# ifdef _HAVE_LONGLONG_UINT64_T
-# define INTMAX_C(c) c ## L
-# define UINTMAX_C(c) c ## UL
-# else
-# define INTMAX_C(c) c ## LL
-# define UINTMAX_C(c) c ## ULL
-# endif
-
- /* literalnumbers */
-#endif
-#endif
-
-/* These limits are merily those of a two complement byte-oriented system */
-
-/* Minimum of signed integral types. */
-# define INT8_MIN (-128)
-# define INT16_MIN (-32767-1)
-# define INT32_MIN (-2147483647-1)
-# define INT64_MIN (-__INT64_C(9223372036854775807)-1)
-/* Maximum of signed integral types. */
-# define INT8_MAX (127)
-# define INT16_MAX (32767)
-# define INT32_MAX (2147483647)
-# define INT64_MAX (__INT64_C(9223372036854775807))
-
-/* Maximum of unsigned integral types. */
-# define UINT8_MAX (255)
-# define UINT16_MAX (65535)
-# define UINT32_MAX (4294967295U)
-# define UINT64_MAX (__UINT64_C(18446744073709551615))
-
-/* Minimum of signed integral types having a minimum size. */
-# define INT_LEAST8_MIN INT8_MIN
-# define INT_LEAST16_MIN INT16_MIN
-# define INT_LEAST32_MIN INT32_MIN
-# define INT_LEAST64_MIN INT64_MIN
-/* Maximum of signed integral types having a minimum size. */
-# define INT_LEAST8_MAX INT8_MAX
-# define INT_LEAST16_MAX INT16_MAX
-# define INT_LEAST32_MAX INT32_MAX
-# define INT_LEAST64_MAX INT64_MAX
-
-/* Maximum of unsigned integral types having a minimum size. */
-# define UINT_LEAST8_MAX UINT8_MAX
-# define UINT_LEAST16_MAX UINT16_MAX
-# define UINT_LEAST32_MAX UINT32_MAX
-# define UINT_LEAST64_MAX UINT64_MAX
-
- /* shortcircuit*/
-#endif
- /* once */
-#endif
-#endif
-STDINT_EOF
-fi
- if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then
- AC_MSG_NOTICE([$ac_stdint_h is unchanged])
- else
- ac_dir=`AS_DIRNAME(["$ac_stdint_h"])`
- AS_MKDIR_P(["$ac_dir"])
- rm -f $ac_stdint_h
- mv $ac_stdint $ac_stdint_h
- fi
-],[# variables for create stdint.h replacement
-PACKAGE="$PACKAGE"
-VERSION="$VERSION"
-ac_stdint_h="$ac_stdint_h"
-_ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h)
-ac_cv_stdint_message="$ac_cv_stdint_message"
-ac_cv_header_stdint_t="$ac_cv_header_stdint_t"
-ac_cv_header_stdint_x="$ac_cv_header_stdint_x"
-ac_cv_header_stdint_o="$ac_cv_header_stdint_o"
-ac_cv_header_stdint_u="$ac_cv_header_stdint_u"
-ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
-ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
-ac_cv_char_data_model="$ac_cv_char_data_model"
-ac_cv_long_data_model="$ac_cv_long_data_model"
-ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
-ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
-ac_cv_type_intmax_t="$ac_cv_type_intmax_t"
-])
-])
diff --git a/missing b/missing
deleted file mode 100755
index db98974..0000000
--- a/missing
+++ /dev/null
@@ -1,215 +0,0 @@
-#! /bin/sh
-# Common wrapper for a few potentially missing GNU programs.
-
-scriptversion=2013-10-28.13; # UTC
-
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
-# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU 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 <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-if test $# -eq 0; then
- echo 1>&2 "Try '$0 --help' for more information"
- exit 1
-fi
-
-case $1 in
-
- --is-lightweight)
- # Used by our autoconf macros to check whether the available missing
- # script is modern enough.
- exit 0
- ;;
-
- --run)
- # Back-compat with the calling convention used by older automake.
- shift
- ;;
-
- -h|--h|--he|--hel|--help)
- echo "\
-$0 [OPTION]... PROGRAM [ARGUMENT]...
-
-Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
-to PROGRAM being missing or too old.
-
-Options:
- -h, --help display this help and exit
- -v, --version output version information and exit
-
-Supported PROGRAM values:
- aclocal autoconf autoheader autom4te automake makeinfo
- bison yacc flex lex help2man
-
-Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
-'g' are ignored when checking the name.
-
-Send bug reports to <bug-automake@gnu.org>."
- exit $?
- ;;
-
- -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing $scriptversion (GNU Automake)"
- exit $?
- ;;
-
- -*)
- echo 1>&2 "$0: unknown '$1' option"
- echo 1>&2 "Try '$0 --help' for more information"
- exit 1
- ;;
-
-esac
-
-# Run the given program, remember its exit status.
-"$@"; st=$?
-
-# If it succeeded, we are done.
-test $st -eq 0 && exit 0
-
-# Also exit now if we it failed (or wasn't found), and '--version' was
-# passed; such an option is passed most likely to detect whether the
-# program is present and works.
-case $2 in --version|--help) exit $st;; esac
-
-# Exit code 63 means version mismatch. This often happens when the user
-# tries to use an ancient version of a tool on a file that requires a
-# minimum version.
-if test $st -eq 63; then
- msg="probably too old"
-elif test $st -eq 127; then
- # Program was missing.
- msg="missing on your system"
-else
- # Program was found and executed, but failed. Give up.
- exit $st
-fi
-
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
-
-program_details ()
-{
- case $1 in
- aclocal|automake)
- echo "The '$1' program is part of the GNU Automake package:"
- echo "<$gnu_software_URL/automake>"
- echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
- echo "<$gnu_software_URL/autoconf>"
- echo "<$gnu_software_URL/m4/>"
- echo "<$perl_URL>"
- ;;
- autoconf|autom4te|autoheader)
- echo "The '$1' program is part of the GNU Autoconf package:"
- echo "<$gnu_software_URL/autoconf/>"
- echo "It also requires GNU m4 and Perl in order to run:"
- echo "<$gnu_software_URL/m4/>"
- echo "<$perl_URL>"
- ;;
- esac
-}
-
-give_advice ()
-{
- # Normalize program name to check for.
- normalized_program=`echo "$1" | sed '
- s/^gnu-//; t
- s/^gnu//; t
- s/^g//; t'`
-
- printf '%s\n' "'$1' is $msg."
-
- configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
- case $normalized_program in
- autoconf*)
- echo "You should only need it if you modified 'configure.ac',"
- echo "or m4 files included by it."
- program_details 'autoconf'
- ;;
- autoheader*)
- echo "You should only need it if you modified 'acconfig.h' or"
- echo "$configure_deps."
- program_details 'autoheader'
- ;;
- automake*)
- echo "You should only need it if you modified 'Makefile.am' or"
- echo "$configure_deps."
- program_details 'automake'
- ;;
- aclocal*)
- echo "You should only need it if you modified 'acinclude.m4' or"
- echo "$configure_deps."
- program_details 'aclocal'
- ;;
- autom4te*)
- echo "You might have modified some maintainer files that require"
- echo "the 'autom4te' program to be rebuilt."
- program_details 'autom4te'
- ;;
- bison*|yacc*)
- echo "You should only need it if you modified a '.y' file."
- echo "You may want to install the GNU Bison package:"
- echo "<$gnu_software_URL/bison/>"
- ;;
- lex*|flex*)
- echo "You should only need it if you modified a '.l' file."
- echo "You may want to install the Fast Lexical Analyzer package:"
- echo "<$flex_URL>"
- ;;
- help2man*)
- echo "You should only need it if you modified a dependency" \
- "of a man page."
- echo "You may want to install the GNU Help2man package:"
- echo "<$gnu_software_URL/help2man/>"
- ;;
- makeinfo*)
- echo "You should only need it if you modified a '.texi' file, or"
- echo "any other file indirectly affecting the aspect of the manual."
- echo "You might want to install the Texinfo package:"
- echo "<$gnu_software_URL/texinfo/>"
- echo "The spurious makeinfo call might also be the consequence of"
- echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
- echo "want to install GNU make:"
- echo "<$gnu_software_URL/make/>"
- ;;
- *)
- echo "You might have modified some files without having the proper"
- echo "tools for further handling them. Check the 'README' file, it"
- echo "often tells you about the needed prerequisites for installing"
- echo "this package. You may also peek at any GNU archive site, in"
- echo "case some other package contains this missing '$1' program."
- ;;
- esac
-}
-
-give_advice "$1" | sed -e '1s/^/WARNING: /' \
- -e '2,$s/^/ /' >&2
-
-# Propagate the correct exit status (expected to be 127 for a program
-# not found, 63 for a program that failed due to version mismatch).
-exit $st
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/mkinstalldirs b/mkinstalldirs
deleted file mode 100755
index 55d537f..0000000
--- a/mkinstalldirs
+++ /dev/null
@@ -1,162 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-
-scriptversion=2009-04-28.21; # UTC
-
-# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain.
-#
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-nl='
-'
-IFS=" "" $nl"
-errstatus=0
-dirmode=
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
-
-Create each directory DIR (with mode MODE, if specified), including all
-leading file name components.
-
-Report bugs to <bug-automake@gnu.org>."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage"
- exit $?
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --version)
- echo "$0 $scriptversion"
- exit $?
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
-# mkdir -p a/c at the same time, both will detect that a is missing,
-# one will create a, then the other will try to create a and die with
-# a "File exists" error. This is a problem when calling mkinstalldirs
-# from a parallel make. We use --version in the probe to restrict
-# ourselves to GNU mkdir, which is thread-safe.
-case $dirmode in
- '')
- if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- else
- # On NextStep and OpenStep, the 'mkdir' command does not
- # recognize any option. It will interpret all options as
- # directories to create, and then abort because '.' already
- # exists.
- test -d ./-p && rmdir ./-p
- test -d ./--version && rmdir ./--version
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
- test ! -d ./--version; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- else
- # Clean up after NextStep and OpenStep mkdir.
- for d in ./-m ./-p ./--version "./$dirmode";
- do
- test -d $d && rmdir $d
- done
- fi
- ;;
-esac
-
-for file
-do
- case $file in
- /*) pathcomp=/ ;;
- *) pathcomp= ;;
- esac
- oIFS=$IFS
- IFS=/
- set fnord $file
- shift
- IFS=$oIFS
-
- for d
- do
- test "x$d" = x && continue
-
- pathcomp=$pathcomp$d
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp=$pathcomp/
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/po/LINGUAS b/po/LINGUAS
index 904d332..19e4bd6 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,6 +1,8 @@
-# List of languages
+# List of languages
# try to keep this list ordered
bg
+ca
+ca@valencia
cs
da
de
@@ -12,6 +14,7 @@ es
fi
fr
gl
+he
hu
it
ja
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644
index 83d8838..0000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,444 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-#
-# This file can be copied and used freely without restrictions. It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.18
-GETTEXT_MACRO_VERSION = 0.18
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SHELL = /bin/sh
-@SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = @localedir@
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-# We use $(mkdir_p).
-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
-# @install_sh@ does not start with $(SHELL), so we add it.
-# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
-# versions, $(mkinstalldirs) and $(install_sh) are unused.
-mkinstalldirs = $(SHELL) @install_sh@ -d
-install_sh = $(SHELL) @install_sh@
-MKDIR_P = @MKDIR_P@
-mkdir_p = @mkdir_p@
-
-GMSGFMT_ = @GMSGFMT@
-GMSGFMT_no = @GMSGFMT@
-GMSGFMT_yes = @GMSGFMT_015@
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = @XGETTEXT@
-XGETTEXT_no = @XGETTEXT@
-XGETTEXT_yes = @XGETTEXT_015@
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
- @echo "$(MSGFMT) -c -o $@ $<"; \
- $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
- @lang=`echo $* | sed -e 's,.*/,,'`; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
- cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
- sed -e '/^#/d' $< > t-$@
- mv t-$@ $@
-
-
-all: check-macro-version all-@USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-check-macro-version:
- @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
- || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
- exit 1; \
- }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
- test ! -f $(srcdir)/$(DOMAIN).pot || \
- test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
- @test ! -f $(srcdir)/$(DOMAIN).pot || { \
- echo "touch stamp-po" && \
- echo timestamp > stamp-poT && \
- mv stamp-poT stamp-po; \
- }
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
- if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
- package_gnu='GNU '; \
- else \
- package_gnu=''; \
- fi; \
- if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
- msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
- else \
- msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
- fi; \
- case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- *) \
- $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
- --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
- --files-from=$(srcdir)/POTFILES.in \
- --copyright-holder='$(COPYRIGHT_HOLDER)' \
- --package-name="$${package_gnu}@PACKAGE@" \
- --package-version='@VERSION@' \
- --msgid-bugs-address="$$msgid_bugs_address" \
- ;; \
- esac
- test ! -f $(DOMAIN).po || { \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
- sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
- if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
- else \
- rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- else \
- mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
- fi; \
- }
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
- $(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
- @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
- if test -f "$(srcdir)/$${lang}.po"; then \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
- cd $(srcdir) \
- && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
- esac; \
- }; \
- else \
- $(MAKE) $${lang}.po-create; \
- fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- for file in $(DISTFILES.common) Makevars.template; do \
- $(INSTALL_DATA) $(srcdir)/$$file \
- $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- for file in Makevars; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-install-data-no: all
-install-data-yes: all
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
- $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
- echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
- cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
- fi; \
- done; \
- done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
- else \
- : ; \
- fi
-installdirs-data-no:
-installdirs-data-yes:
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- dir=$(localedir)/$$lang/LC_MESSAGES; \
- $(mkdir_p) $(DESTDIR)$$dir; \
- for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
- if test -n "$$lc"; then \
- if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
- link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
- mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
- for file in *; do \
- if test -f $$file; then \
- ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
- fi; \
- done); \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
- else \
- if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
- :; \
- else \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
- mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
- fi; \
- fi; \
- fi; \
- done; \
- done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data-@USE_NLS@
- if test "$(PACKAGE)" = "gettext-tools"; then \
- for file in $(DISTFILES.common) Makevars.template; do \
- rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
- fi
-uninstall-data-no:
-uninstall-data-yes:
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
- lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
- for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
- rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
- done; \
- done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
- rm -f remove-potcdate.sed
- rm -f stamp-poT
- rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
- rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
- rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
- $(MAKE) update-po
- @$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
- dists="$(DISTFILES)"; \
- if test "$(PACKAGE)" = "gettext-tools"; then \
- dists="$$dists Makevars.template"; \
- fi; \
- if test -f $(srcdir)/$(DOMAIN).pot; then \
- dists="$$dists $(DOMAIN).pot stamp-po"; \
- fi; \
- if test -f $(srcdir)/ChangeLog; then \
- dists="$$dists ChangeLog"; \
- fi; \
- for i in 0 1 2 3 4 5 6 7 8 9; do \
- if test -f $(srcdir)/ChangeLog.$$i; then \
- dists="$$dists ChangeLog.$$i"; \
- fi; \
- done; \
- if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
- for file in $$dists; do \
- if test -f $$file; then \
- cp -p $$file $(distdir) || exit 1; \
- else \
- cp -p $(srcdir)/$$file $(distdir) || exit 1; \
- fi; \
- done
-
-update-po: Makefile
- $(MAKE) $(DOMAIN).pot-update
- test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
- $(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
- @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
- echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
- exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
- @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
- if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
- echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
- cd $(srcdir); \
- if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
- '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- *) \
- $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
- esac; \
- }; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "msgmerge for $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
- @:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use @SHELL@, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
- cd $(top_builddir) \
- && @SHELL@ ./config.status $(subdir)/$@.in po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
index bb5d203..ebff23f 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -1,5 +1,5 @@
# Makevars -- snippet for inclusion in po/ -*- Makefile -*-
-# Copyright (C) 2016 Olaf Meeuwissen and the SANE developers
+# Copyright (C) 2016, 2019 Olaf Meeuwissen and the SANE developers
#
# This file is part of the SANE build infra-structure. See the
# included LICENSE file for license information.
@@ -32,14 +32,18 @@ subdir = po
# Options to pass to xgettext and other gettext utilities.
# Additional options may also by specified using AM_XGETTEXT_OPTION
# in `$(top_srcdir)/configure.ac`. See Makefile.in.in and Rules-*
-# for variables available
-XGETTEXT_OPTIONS = --keyword=SANE_I18N
+# for variables available.
+XGETTEXT_OPTIONS = $(width_options)
+XGETTEXT_OPTIONS += --keyword=SANE_I18N
XGETTEXT_OPTIONS += --flag=SANE_I18N:1:no-c-format
-MSGMERGE_OPTIONS = --width=75
+MSGMERGE_OPTIONS = $(width_options)
+MSGINIT_OPTIONS = $(width_options)
+MSGCONV_OPTIONS = $(width_options)
+MSGFILTER_OPTIONS = $(width_options)
+# All gettext related utilities need to use the same width value in
+# order to pass a `make distcheck`.
+width_options = --width=75
# Locale categories, in addition to LC_MESSAGES, for which message
# catalogs are to be used.
EXTRA_LOCALE_CATEGORIES =
-
-EXTRA_DIST = README
-EXTRA_DIST += Rules-automake
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9988ff5..08bf126 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -28,7 +28,7 @@ backend/epson2.h
backend/fujitsu.c
backend/fujitsu.h
-backend/genesys.c
+backend/genesys.cc
backend/gt68xx.c
backend/gt68xx_low.h
@@ -108,4 +108,3 @@ backend/u12.c
backend/umax1220u.c
backend/umax.c
backend/umax_pp.c
-
diff --git a/po/README b/po/README
new file mode 100644
index 0000000..8461ec0
--- /dev/null
+++ b/po/README
@@ -0,0 +1,65 @@
+2003-02-06
+
+This directory contains translations for the options of the SANE backends.
+They are only used if the gettext tools are found by configure.
+You will need GNU gettext: xgettext, msgfmt and msgmerge. The translations
+are used at least by the frontends XSane and quiteinsane.
+
+
+Users: I want to just read the description of SANE options in my language
+-------------------------------------------------------------------------
+
+Use XSane (>=0.90) or your favourite frontend that supports translations, read
+the documentation and set the environment variable LANG to your local setting.
+Example for German: export LANG=de_DE ; xsane
+
+
+Translators: I want to update existing translations
+---------------------------------------------------
+
+* cd po ; make update-po
+* Edit lang.po, add/change translations. (with lang = your
+ language, e.g. "de"). You need an editor that is capable of using the
+ encoding UTF8 (unicode).
+* Add your name to the header. Update the "last translator" field.
+* make ; make install
+
+
+Translators: I want to add a new language
+-----------------------------------------
+
+* Add the language code to po/LINGUAS
+* automake (if you have not enabled maintainer mode)
+* ./configure
+* Go ahead with "I want to update existing translations".
+
+
+Backend developers: I want to add internationalization support for my backend
+-----------------------------------------------------------------------------
+
+* Edit the source code of the backend and add SANE_I18N to the appropriate
+ strings. Mark the descriptions (desc) and titles of options with
+ SANE_I18N(). Do the same for string lists used in options. The name of
+ options must NOT be marked. Do NOT mark macros. Especially you don't need
+ to mark standard option strings like SANE_TITLE_NUM_OPTIONS as this is
+ already done in saneopts.h.
+ Examples: s->opt[5].title = SANE_I18N("Enhancement");
+ #define STANDARD_FORMAT SANE_I18N("a4 Paper")
+* Edit po/POTFILES.in. Add all source code files that contain strings marked
+ by SANE_I18N() to that file.
+* If you want to also add a new language, see above.
+* ./configure
+* See "Update existing translations" or "Add a new language".
+
+
+Frontend developers: I want to add internationalization support for my frontend
+-------------------------------------------------------------------------------
+
+* The Makefile installs files called "sane-backends.mo" in the directory
+ "$(prefix)/share/locale/lang/LC_MESSAGES/", e.g.:
+ "/usr/local/share/locale/de/LC_MESSAGES/sane-backends.mo". For every
+ language exactly one .mo file is installed. Earlier releases of
+ sane-backends installed one file per backend, e.g. sane-umax.mo. For
+ backward compatibility, frontends may want to check for these files, also.
+* As mentioned above, GNU gettext is used.
+* With other NLS implementations, converting the mo files may work.
diff --git a/po/Rules-quot b/po/Rules-quot
deleted file mode 100644
index af52487..0000000
--- a/po/Rules-quot
+++ /dev/null
@@ -1,47 +0,0 @@
-# Special Makefile rules for English message catalogs with quotation marks.
-
-DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot
-
-.SUFFIXES: .insert-header .po-update-en
-
-en@quot.po-create:
- $(MAKE) en@quot.po-update
-en@boldquot.po-create:
- $(MAKE) en@boldquot.po-update
-
-en@quot.po-update: en@quot.po-update-en
-en@boldquot.po-update: en@boldquot.po-update-en
-
-.insert-header.po-update-en:
- @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \
- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \
- tmpdir=`pwd`; \
- echo "$$lang:"; \
- ll=`echo $$lang | sed -e 's/@.*//'`; \
- LC_ALL=C; export LC_ALL; \
- cd $(srcdir); \
- if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \
- if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
- rm -f $$tmpdir/$$lang.new.po; \
- else \
- if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
- :; \
- else \
- echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
- exit 1; \
- fi; \
- fi; \
- else \
- echo "creation of $$lang.po failed!" 1>&2; \
- rm -f $$tmpdir/$$lang.new.po; \
- fi
-
-en@quot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header
-
-en@boldquot.insert-header: insert-header.sin
- sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header
-
-mostlyclean: mostlyclean-quot
-mostlyclean-quot:
- rm -f *.insert-header
diff --git a/po/bg.gmo b/po/bg.gmo
deleted file mode 100644
index 755c8ff..0000000
--- a/po/bg.gmo
+++ /dev/null
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 0e83697..c00e492 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.11\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 22:59+0100\n"
"Last-Translator: Pavel Constantinov <pavelconstantinov@bigfoot.com>\n"
"Language-Team: <>\n"
@@ -25,36 +25,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Геометрия"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Повишение"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -82,7 +82,7 @@ msgstr "Наложи монохромно превю"
msgid "Bit depth"
msgstr "Дълбочина на бита"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -123,7 +123,7 @@ msgstr "Долен десен x"
msgid "Bottom-right y"
msgstr "Долен десен y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -279,7 +279,7 @@ msgstr "Име на файла"
msgid "Halftone pattern size"
msgstr "Размер на полутоновия десен"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Полутонов десен"
@@ -291,8 +291,8 @@ msgstr "Вържи резолюцията по X и Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Негатив"
@@ -963,7 +963,7 @@ msgstr "Висящи опции"
msgid "Set default values for enhancement controls."
msgstr "Нагласи висящи опции за повишителните контроли."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Калибрация"
@@ -1102,7 +1102,7 @@ msgstr "Негатив"
msgid "Slides"
msgstr "Солидно бяло"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1123,487 +1123,486 @@ msgstr "2х2 нормално"
msgid "1/3 normal speed"
msgstr "3х3 нормално"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, fuzzy, no-c-format
msgid "rounded parameter"
msgstr "Параметри за мъглявост"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, fuzzy, no-c-format
msgid "ADF jam"
msgstr "ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Стойност на гамата"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Прозрачност"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Прозрачност"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "flatbed скенер"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "flatbed скенер"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Тип екран (film)"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Негативен филм"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Избира картинка за тестване"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Резолюция на сканиране"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Покажи кратък списък с резолюции"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Авто изваждане"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, fuzzy, no-c-format
msgid "Enable/disable auto focus"
msgstr "Забрани предв. фокус"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Фиксирай позиция на фокуса"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Огледален образ"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Прави хоризонтален огледален образ."
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Установи време за експониране"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, fuzzy, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Позволи избор на време за експонация"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Калибрация"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Дефинирай режима на калибрация"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "скенер с sheetfeed"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "скенер с sheetfeed"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Извади документа след сканиране"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Feeder за документи"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Flatbed"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Прозрачност"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Негативен филм"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Позитивен екран"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Прозрачност"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Тип екран (film)"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, fuzzy, no-c-format
msgid "Select the film type"
msgstr "Избира полутона"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flatbed"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "ADF"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, fuzzy, no-c-format
msgid "ADF Duplex"
msgstr "Дуплексно"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Печат"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Дуплексно"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Червено"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Зелено"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Синьо"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Повишение"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Повишение"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Повишение"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1611,18 +1610,18 @@ msgstr "Повишение"
msgid "None"
msgstr "Нищо"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1639,13 +1638,13 @@ msgstr "Симплексно"
msgid "Duplex"
msgstr "Дуплексно"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Прозрачност"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1758,8 +1757,8 @@ msgstr "Мастиленоструйни принтери"
msgid "CRT monitors"
msgstr "CRT монитори"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "По подразбиране"
@@ -1822,51 +1821,50 @@ msgstr "A4"
msgid "Max"
msgstr "Макс."
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Режим на сканиране"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Избира полутона"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Dropout"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Избира dropout-а."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Избира яркостта."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Острота"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Цветова корекция."
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1957,17 +1955,17 @@ msgstr "Добавя към червеното според степента н
msgid "Controls blue level"
msgstr "Наглася степента на синьо"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Направи огледален образ на изображението"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Бързо превю"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Автоматична сегментация на площ"
@@ -1997,47 +1995,47 @@ msgstr "Определя фактора на увеличение за скен
msgid "Quick format"
msgstr "Бързо форматиране"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Оборудване по избор"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Извади"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Извади листа от ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Авто изваждане"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Извади документа след сканиране"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr ""
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, fuzzy, no-c-format
msgid "Bay"
msgstr "Bay"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, fuzzy, no-c-format
msgid "Select bay to scan"
msgstr "Избор на bay за сканиране"
@@ -2078,7 +2076,7 @@ msgstr ""
"След изпращане на команда за сканиране, изчакай, докато бутонът на "
"скенера не е натиснат, преди да започнеш самото сканиране."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2108,492 +2106,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "По потребителска дефиниция"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Вкл."
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Изкл."
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Dither"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Разсейка на грешките"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Степен на бялото"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Степен на черното"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Кондиционално"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Хоризонтално"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Хоризонтално"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Хоризонтално"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "8x8 вертикална черта"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "8x8 вертикална черта"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Печат"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Полутон"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Груба калибрация"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Подчертаване на образа"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Наситеност"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Позволява автоматично определяне на прага за lineart сканиране."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Огледален образ"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Прави хоризонтален огледален образ."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Степен на бялото - синьо"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Наглася степента на червено"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Цветно Lineart"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Изглаждане"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Стойност на гамата"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Праг"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Праг"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Редуциране на шума"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Без корекция"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Без корекция"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Режим на захранване"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Обнови опциите"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Без корекция"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Dropout"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Режим на захранване"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2601,65 +2599,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Изкл. лампа"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Офсет - синьо"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Офсет - зелено"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Офсет - зелено"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Офсет - синьо"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Наглася офсета на синия канал"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2668,519 +2666,529 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Дуплексно"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Обнови опциите"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Редуциране на шума"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "От хартия"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "От хартия"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "От хартия"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "От хартия"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Ръчен предв. фокус"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Ръчен предв. фокус"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Резолюция на сканиране"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Степен на бялото"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Интензитет - червено"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Дуплексно"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, fuzzy, no-c-format
msgid "Extras"
msgstr "Екстра бързо"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Забрани връщане на главата"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Цветно Lineart"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Калибрация"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Дефинирай режима на калибрация"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Режим калибрация"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, fuzzy, no-c-format
msgid "Lamp off time"
msgstr "Изкл. лампа"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Груба калибрация"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Изчакай натискане на бутона"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Изчакай натискане на бутона"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Изчакай натискане на бутона"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Груба калибрация"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Задължителна калибрация преди сканиране"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr ""
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Калибриране"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Започване на калибрацията."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Груба калибрация"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Режим калибрация"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Груба калибрация"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Адаптиране на прозрачността"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Опции за дебъг"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Автоматично загряване"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3189,12 +3197,12 @@ msgstr ""
"Загрявай, докато яркостта на лампата е постоянна, вместо да настояваш за "
"60 секундно загряване."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Цялостно сканиране"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3203,12 +3211,12 @@ msgstr ""
"Сканирай цялата площ за сканиране, вкл. парчето за калибрация. "
"Внимавайте. Не избирайте цялата височина. Тази опция е само за тестване."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Груба калибрация"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3219,12 +3227,12 @@ msgstr ""
"опция е забранена, има опции за ръчната нагласа на аналоговите параметри "
"на фронтенда. Тази опция е разрешена по подразбиране. Само за тестване."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Груба калибрация само за първото сканиране"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3235,12 +3243,12 @@ msgstr ""
"скенери и пести време. Ако яркостта на изображението е различна при "
"всяко сканиране, забранете тази опция. Само за тестване"
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, fuzzy, no-c-format
msgid "Backtrack lines"
msgstr "Наложи връщане на главата"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3249,12 +3257,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Стойност на гамата"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Наглася стойността на гамата за всички канали."
@@ -3270,7 +3278,7 @@ msgid "Scan Mode Group"
msgstr "Режим на сканиране"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Солидно бяло"
@@ -3468,160 +3476,235 @@ msgstr "Включва/изключва лампата."
msgid "Calibrates for black and white level."
msgstr ""
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Солидно бяло"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Негатив"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Цвят 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Изкл. лампа"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Изчакай натискане на бутона"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Загрей лампата преди сканиране"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr ""
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Източник на сканиране"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Цветно Lineart"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Обнови опциите"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "8х8 грубо"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Име на файла"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "8х8 по избор"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Авто"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, fuzzy, no-c-format
msgid "Pass-through"
msgstr "Pass-through"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC сиво"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA сиво"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "По-бавно"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Нормално"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "По-бързо"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Екстра бързо"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-пикселно"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-пикселно"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-пикселно"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Печат"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Тип филм"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Кондиционално"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, fuzzy, no-c-format
msgid "Experiment"
msgstr "Време за експонация"
@@ -3801,8 +3884,8 @@ msgstr "Изключи лампата"
msgid "Shut off scanner lamp."
msgstr "Изключва лампата на скенера"
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Размер на хартията"
@@ -3813,8 +3896,7 @@ 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 пейзаж"
@@ -3829,38 +3911,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, 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:428
#, fuzzy, 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Физически размер на хартията в ADF"
@@ -3976,199 +4054,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Полутон"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Полутон"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Разсейка на грешките"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Нормално"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Осветление"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "flatbed скенер"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "От хартия"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "По подразбиране"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Изглаждане"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "По-бавно"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Средно"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Червено"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Зелено"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Източник на сканиране"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Режим на захранване"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Наглася режима на захранване"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Забрани предв. фокус"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Забрани предв. фокус"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Наглася режима на захранване"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Наглася режима на захранване"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Автоматичен праг"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4177,95 +4255,95 @@ msgstr ""
"Автоматично наглася яркостта, контраста, нивото на бяло, гамата, "
"редукцията на шума и подчертаването на образа"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Редуциране на шума"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Намали изолирания точков шум"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Подчертаване на образа"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Наглася подчертаването на образа"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Гама"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Вкл. лампа"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Включва/изключва лампата."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Прави вертикален огледален образ"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4982,17 +5060,17 @@ msgstr "3х3 по избор"
msgid "2x2 custom"
msgstr "2х2 по избор"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Бърз сив режим"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Сканирай в бърз сив режим (по-ниско качество)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5001,82 +5079,82 @@ msgstr ""
"Поискай всички превюта да се правят в най-бърз (нискокачествен) режим. "
"Това може да е безцветен режим или режим с ниска резолюция."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, fuzzy, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Загрей лампата"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, fuzzy, no-c-format
msgid "Turn lamp off"
msgstr "Включва/изключва лампата"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, fuzzy, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Превключва лампата на flatbed-а"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Яркост - червено"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Наглася яркостта на червения канал на полученото изображение."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Яркост - зелено"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Наглася яркостта на зеления канал на полученото изображение."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Яркост - синьо"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Наглася яркостта на синия канал на полученото изображение."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Контраст - червен канал"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Наглася контраста на червения канал на полученото изображение."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Контраст - зелен канал"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Наглася контраста на зеления канал на полученото изображение."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Контраст - син канал"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Наглася контраста на синия канал на полученото изображение."
@@ -5120,22 +5198,22 @@ msgstr ""
"Загрявай, докато яркостта на лампата е постоянна, вместо да настояваш за "
"40 секундно загряване."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Негативен филм"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Негатив"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/boldquot.sed b/po/boldquot.sed
deleted file mode 100644
index 4b937aa..0000000
--- a/po/boldquot.sed
+++ /dev/null
@@ -1,10 +0,0 @@
-s/"\([^"]*\)"/“\1”/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“”/""/g
-s/“/“/g
-s/”/”/g
-s/‘/‘/g
-s/’/’/g
diff --git a/po/en@quot.po b/po/ca.po
index 4fd95b5..52fe10d 100644
--- a/po/en@quot.po
+++ b/po/ca.po
@@ -1,91 +1,69 @@
-# English translations for sane-backends package.
-# Copyright (C) 2017 The SANE developers
+# Copyright (C) 2018 The SANE developers
# This file is distributed under the same license as the sane-backends package.
-# Automatically generated, 2017.
-#
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
#
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2018.
msgid ""
msgstr ""
-"Project-Id-Version: sane-backends 1.0.27\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2017-05-22 11:18-0400\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: en@quot\n"
+"Project-Id-Version: sane-backends 1.0.27git\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2018-09-10 00:37+0100\n"
+"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
#: include/sane/saneopts.h:154
#, no-c-format
msgid "Number of options"
-msgstr "Number of options"
+msgstr "Nombre d'opcions"
#: include/sane/saneopts.h:156
#, no-c-format
msgid "Standard"
-msgstr "Standard"
+msgstr "Estàndard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
-msgstr "Geometry"
+msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
-msgstr "Enhancement"
+msgstr "Millora"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
#, no-c-format
msgid "Advanced"
-msgstr "Advanced"
+msgstr "Avançat"
#: include/sane/saneopts.h:160
#, no-c-format
@@ -95,114 +73,114 @@ msgstr "Sensors"
#: include/sane/saneopts.h:162
#, no-c-format
msgid "Preview"
-msgstr "Preview"
+msgstr "Vista prèvia"
#: include/sane/saneopts.h:163
#, no-c-format
msgid "Force monochrome preview"
-msgstr "Force monochrome preview"
+msgstr "Força la vista prèvia en monocrom"
#: include/sane/saneopts.h:164
#, no-c-format
msgid "Bit depth"
-msgstr "Bit depth"
+msgstr "Bits de profunditat"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
-msgstr "Scan mode"
+msgstr "Mode d'escaneig"
#: include/sane/saneopts.h:166
#, no-c-format
msgid "Scan speed"
-msgstr "Scan speed"
+msgstr "Velocitat de l'escàner"
#: include/sane/saneopts.h:167
#, no-c-format
msgid "Scan source"
-msgstr "Scan source"
+msgstr "Font de l'escàner"
#: include/sane/saneopts.h:168
#, no-c-format
msgid "Force backtracking"
-msgstr "Force backtracking"
+msgstr "Força el retrocés"
#: include/sane/saneopts.h:169
#, no-c-format
msgid "Top-left x"
-msgstr "Top-left x"
+msgstr "A dalt-esquerra X"
#: include/sane/saneopts.h:170
#, no-c-format
msgid "Top-left y"
-msgstr "Top-left y"
+msgstr "A dalt-esquerra Y"
#: include/sane/saneopts.h:171
#, no-c-format
msgid "Bottom-right x"
-msgstr "Bottom-right x"
+msgstr "A baix-dreta X"
#: include/sane/saneopts.h:172
#, no-c-format
msgid "Bottom-right y"
-msgstr "Bottom-right y"
+msgstr "A baix-dreta Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
-msgstr "Scan resolution"
+msgstr "Resolució de l'escàner"
#: include/sane/saneopts.h:174
#, no-c-format
msgid "X-resolution"
-msgstr "X-resolution"
+msgstr "Resolució X"
#: include/sane/saneopts.h:175
#, no-c-format
msgid "Y-resolution"
-msgstr "Y-resolution"
+msgstr "Resolució Y"
#: include/sane/saneopts.h:176
#, no-c-format
msgid "Page width"
-msgstr "Page width"
+msgstr "Amplada de la pàgina"
#: include/sane/saneopts.h:177
#, no-c-format
msgid "Page height"
-msgstr "Page height"
+msgstr "Alçada de la pàgina"
#: include/sane/saneopts.h:178
#, no-c-format
msgid "Use custom gamma table"
-msgstr "Use custom gamma table"
+msgstr "Usa una taula de gamma personalitzada"
#: include/sane/saneopts.h:179
#, no-c-format
msgid "Image intensity"
-msgstr "Image intensity"
+msgstr "Intensitat de la imatge"
#: include/sane/saneopts.h:180
#, no-c-format
msgid "Red intensity"
-msgstr "Red intensity"
+msgstr "Intensitat del vermell"
#: include/sane/saneopts.h:181
#, no-c-format
msgid "Green intensity"
-msgstr "Green intensity"
+msgstr "Intensitat del verd"
#: include/sane/saneopts.h:182
#, no-c-format
msgid "Blue intensity"
-msgstr "Blue intensity"
+msgstr "Intensitat del blau"
#: include/sane/saneopts.h:183
#, no-c-format
msgid "Brightness"
-msgstr "Brightness"
+msgstr "Brillantor"
#: include/sane/saneopts.h:184
#, no-c-format
@@ -212,230 +190,230 @@ msgstr "Contrast"
#: include/sane/saneopts.h:185
#, no-c-format
msgid "Grain size"
-msgstr "Grain size"
+msgstr "Mida del gra"
#: include/sane/saneopts.h:186
#, no-c-format
msgid "Halftoning"
-msgstr "Halftoning"
+msgstr "Semi to"
#: include/sane/saneopts.h:187
#, no-c-format
msgid "Black level"
-msgstr "Black level"
+msgstr "Nivell de negre"
#: include/sane/saneopts.h:188
#, no-c-format
msgid "White level"
-msgstr "White level"
+msgstr "Nivell de blanc"
#: include/sane/saneopts.h:189
#, no-c-format
msgid "White level for red"
-msgstr "White level for red"
+msgstr "Nivell de blanc per al vermell"
#: include/sane/saneopts.h:190
#, no-c-format
msgid "White level for green"
-msgstr "White level for green"
+msgstr "Nivell de blanc per al verd"
#: include/sane/saneopts.h:191
#, no-c-format
msgid "White level for blue"
-msgstr "White level for blue"
+msgstr "Nivell de blanc per al blau"
#: include/sane/saneopts.h:192
#, no-c-format
msgid "Shadow"
-msgstr "Shadow"
+msgstr "Ombra"
#: include/sane/saneopts.h:193
#, no-c-format
msgid "Shadow for red"
-msgstr "Shadow for red"
+msgstr "Ombra per al vermell"
#: include/sane/saneopts.h:194
#, no-c-format
msgid "Shadow for green"
-msgstr "Shadow for green"
+msgstr "Ombra per al verd"
#: include/sane/saneopts.h:195
#, no-c-format
msgid "Shadow for blue"
-msgstr "Shadow for blue"
+msgstr "Ombra per al blau"
#: include/sane/saneopts.h:196
#, no-c-format
msgid "Highlight"
-msgstr "Highlight"
+msgstr "Llum intensa"
#: include/sane/saneopts.h:197
#, no-c-format
msgid "Highlight for red"
-msgstr "Highlight for red"
+msgstr "Llum intensa per al vermell"
#: include/sane/saneopts.h:198
#, no-c-format
msgid "Highlight for green"
-msgstr "Highlight for green"
+msgstr "Llum intensa per al verd"
#: include/sane/saneopts.h:199
#, no-c-format
msgid "Highlight for blue"
-msgstr "Highlight for blue"
+msgstr "Llum intensa per al blau"
#: include/sane/saneopts.h:200
#, no-c-format
msgid "Hue"
-msgstr "Hue"
+msgstr "To"
#: include/sane/saneopts.h:201
#, no-c-format
msgid "Saturation"
-msgstr "Saturation"
+msgstr "Saturació"
#: include/sane/saneopts.h:202
#, no-c-format
msgid "Filename"
-msgstr "Filename"
+msgstr "Nom de fitxer"
#: include/sane/saneopts.h:203
#, no-c-format
msgid "Halftone pattern size"
-msgstr "Halftone pattern size"
+msgstr "Mida del patró per al semi to"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
-msgstr "Halftone pattern"
+msgstr "Patró per al semi to"
#: include/sane/saneopts.h:205
#, no-c-format
msgid "Bind X and Y resolution"
-msgstr "Bind X and Y resolution"
+msgstr "Enllaça les resolucions X i Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
-msgstr "Negative"
+msgstr "Negatiu"
#: include/sane/saneopts.h:207
#, no-c-format
msgid "Quality calibration"
-msgstr "Quality calibration"
+msgstr "Calibratge de la qualitat"
#: include/sane/saneopts.h:208
#, no-c-format
msgid "Double Optical Resolution"
-msgstr "Double Optical Resolution"
+msgstr "Dobla la resolució òptica"
#: include/sane/saneopts.h:209
#, no-c-format
msgid "Bind RGB"
-msgstr "Bind RGB"
+msgstr "Enllaça el RGB"
#: include/sane/saneopts.h:210 backend/sm3840.c:770
#, no-c-format
msgid "Threshold"
-msgstr "Threshold"
+msgstr "Llindar"
#: include/sane/saneopts.h:211
#, no-c-format
msgid "Analog gamma correction"
-msgstr "Analog gamma correction"
+msgstr "Correcció de la gamma analògica"
#: include/sane/saneopts.h:212
#, no-c-format
msgid "Analog gamma red"
-msgstr "Analog gamma red"
+msgstr "Gamma analògica vermella"
#: include/sane/saneopts.h:213
#, no-c-format
msgid "Analog gamma green"
-msgstr "Analog gamma green"
+msgstr "Gamma analògica verda"
#: include/sane/saneopts.h:214
#, no-c-format
msgid "Analog gamma blue"
-msgstr "Analog gamma blue"
+msgstr "Gamma analògica blava"
#: include/sane/saneopts.h:215
#, no-c-format
msgid "Bind analog gamma"
-msgstr "Bind analog gamma"
+msgstr "Enllaça amb la gamma analògica"
#: include/sane/saneopts.h:216
#, no-c-format
msgid "Warmup lamp"
-msgstr "Warmup lamp"
+msgstr "Escalfament de la làmpada"
#: include/sane/saneopts.h:217
#, no-c-format
msgid "Cal. exposure-time"
-msgstr "Cal. exposure-time"
+msgstr "Cal. el temps d'exposició"
#: include/sane/saneopts.h:218
#, no-c-format
msgid "Cal. exposure-time for red"
-msgstr "Cal. exposure-time for red"
+msgstr "Cal. el temps d'exposició per al vermell"
#: include/sane/saneopts.h:219
#, no-c-format
msgid "Cal. exposure-time for green"
-msgstr "Cal. exposure-time for green"
+msgstr "Cal. el temps d'exposició per al verd"
#: include/sane/saneopts.h:221
#, no-c-format
msgid "Cal. exposure-time for blue"
-msgstr "Cal. exposure-time for blue"
+msgstr "Cal. el temps d'exposició per al blau"
#: include/sane/saneopts.h:222
#, no-c-format
msgid "Scan exposure-time"
-msgstr "Scan exposure-time"
+msgstr "Temps d'exposició de l'escaneig"
#: include/sane/saneopts.h:223
#, no-c-format
msgid "Scan exposure-time for red"
-msgstr "Scan exposure-time for red"
+msgstr "Temps d'exposició de l'escaneig per al vermell"
#: include/sane/saneopts.h:224
#, no-c-format
msgid "Scan exposure-time for green"
-msgstr "Scan exposure-time for green"
+msgstr "Temps d'exposició de l'escaneig per al verd"
#: include/sane/saneopts.h:226
#, no-c-format
msgid "Scan exposure-time for blue"
-msgstr "Scan exposure-time for blue"
+msgstr "Temps d'exposició de l'escaneig per al blau"
#: include/sane/saneopts.h:227
#, no-c-format
msgid "Set exposure-time"
-msgstr "Set exposure-time"
+msgstr "Estableix el temps d'exposició"
#: include/sane/saneopts.h:228
#, no-c-format
msgid "Cal. lamp density"
-msgstr "Cal. lamp density"
+msgstr "Cal. densitat de la llum"
#: include/sane/saneopts.h:229
#, no-c-format
msgid "Scan lamp density"
-msgstr "Scan lamp density"
+msgstr "Densitat de la llum en escanejar"
#: include/sane/saneopts.h:230
#, no-c-format
msgid "Set lamp density"
-msgstr "Set lamp density"
+msgstr "Estableix la densitat de la llum"
#: include/sane/saneopts.h:231 backend/umax.c:5829
#, no-c-format
msgid "Lamp off at exit"
-msgstr "Lamp off at exit"
+msgstr "Apaga la làmpada en sortir"
#: include/sane/saneopts.h:245
#, no-c-format
@@ -443,38 +421,38 @@ msgid ""
"Read-only option that specifies how many options a specific devices "
"supports."
msgstr ""
-"Read-only option that specifies how many options a specific devices "
-"supports."
+"Opció de només lectura que especifica quantes opcions admet un "
+"dispositiu específic."
#: include/sane/saneopts.h:248
#, no-c-format
msgid "Source, mode and resolution options"
-msgstr "Source, mode and resolution options"
+msgstr "Opcions per a la font, mode i resolució"
#: include/sane/saneopts.h:249
#, no-c-format
msgid "Scan area and media size options"
-msgstr "Scan area and media size options"
+msgstr "Opcions per a l'àrea d'escaneig i mida del suport"
#: include/sane/saneopts.h:250
#, no-c-format
msgid "Image modification options"
-msgstr "Image modification options"
+msgstr "Opcions per a la modificació de la imatge"
#: include/sane/saneopts.h:251
#, no-c-format
msgid "Hardware specific options"
-msgstr "Hardware specific options"
+msgstr "Opcions específiques del maquinari"
#: include/sane/saneopts.h:252
#, no-c-format
msgid "Scanner sensors and buttons"
-msgstr "Scanner sensors and buttons"
+msgstr "Sensors i botons de l'escàner"
#: include/sane/saneopts.h:255
#, no-c-format
msgid "Request a preview-quality scan."
-msgstr "Request a preview-quality scan."
+msgstr "Sol·licita una vista prèvia de qualitat de l'escaneig."
#: include/sane/saneopts.h:258
#, no-c-format
@@ -483,9 +461,10 @@ 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 ""
-"Request that all previews are done in monochrome mode. On a three-pass "
-"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."
+"Demana que totes les vistes prèvies es facin en el mode monocrom. En un "
+"escàner de tres passos, això reduirà el nombre de passos a un i en un "
+"escàner d'un sol pas, això reduirà els requisits de memòria i el temps "
+"d'escaneig de la vista prèvia."
#: include/sane/saneopts.h:264
#, no-c-format
@@ -493,63 +472,64 @@ msgid ""
"Number of bits per sample, typical values are 1 for \"line-art\" and 8 "
"for multibit scans."
msgstr ""
-"Number of bits per sample, typical values are 1 for “line-art” and 8 for "
-"multibit scans."
+"Nombre de bits per mostra, els valors típics són 1 pels escaneigs amb "
+"«art lineal» i 8 pels escaneigs amb «múltiples bits»."
#: include/sane/saneopts.h:268
#, no-c-format
msgid "Selects the scan mode (e.g., lineart, monochrome, or color)."
-msgstr "Selects the scan mode (e.g., lineart, monochrome, or color)."
+msgstr ""
+"Selecciona el mode d'escaneig (p. ex., art lineal, monocrom o color)."
#: include/sane/saneopts.h:271
#, no-c-format
msgid "Determines the speed at which the scan proceeds."
-msgstr "Determines the speed at which the scan proceeds."
+msgstr "Determina la velocitat amb la qual procedirà l'escàner."
#: include/sane/saneopts.h:274
#, no-c-format
msgid "Selects the scan source (such as a document-feeder)."
-msgstr "Selects the scan source (such as a document-feeder)."
+msgstr "Selecciona la font de l'escàner (com un alimentador de documents)."
#: include/sane/saneopts.h:277
#, no-c-format
msgid "Controls whether backtracking is forced."
-msgstr "Controls whether backtracking is forced."
+msgstr "Controla si es forçarà el retrocés."
#: include/sane/saneopts.h:280
#, no-c-format
msgid "Top-left x position of scan area."
-msgstr "Top-left x position of scan area."
+msgstr "Posició X a dalt-esquerra de l'àrea d'escaneig."
#: include/sane/saneopts.h:283
#, no-c-format
msgid "Top-left y position of scan area."
-msgstr "Top-left y position of scan area."
+msgstr "Posició Y a dalt-esquerra de l'àrea d'escaneig."
#: include/sane/saneopts.h:286
#, no-c-format
msgid "Bottom-right x position of scan area."
-msgstr "Bottom-right x position of scan area."
+msgstr "Posició X a baix-dreta de l'àrea d'escaneig."
#: include/sane/saneopts.h:289
#, no-c-format
msgid "Bottom-right y position of scan area."
-msgstr "Bottom-right y position of scan area."
+msgstr "Posició Y a baix-dreta de l'àrea d'escaneig."
#: include/sane/saneopts.h:292
#, no-c-format
msgid "Sets the resolution of the scanned image."
-msgstr "Sets the resolution of the scanned image."
+msgstr "Estableix la resolució de la imatge escanejada."
#: include/sane/saneopts.h:295
#, no-c-format
msgid "Sets the horizontal resolution of the scanned image."
-msgstr "Sets the horizontal resolution of the scanned image."
+msgstr "Estableix la resolució horitzontal de la imatge escanejada."
#: include/sane/saneopts.h:298
#, no-c-format
msgid "Sets the vertical resolution of the scanned image."
-msgstr "Sets the vertical resolution of the scanned image."
+msgstr "Estableix la resolució vertical de la imatge escanejada."
#: include/sane/saneopts.h:301
#, no-c-format
@@ -557,20 +537,21 @@ msgid ""
"Specifies the width of the media. Required for automatic centering of "
"sheet-fed scans."
msgstr ""
-"Specifies the width of the media. Required for automatic centering of "
-"sheet-fed scans."
+"Especifica l'amplada del suport. Es requereix per a centrar "
+"automàticament els escanejos dels fulls."
#: include/sane/saneopts.h:305
#, no-c-format
msgid "Specifies the height of the media."
-msgstr "Specifies the height of the media."
+msgstr "Especifica l'alçada del suport."
#: include/sane/saneopts.h:308
#, no-c-format
msgid ""
"Determines whether a builtin or a custom gamma-table should be used."
msgstr ""
-"Determines whether a builtin or a custom gamma-table should be used."
+"Determina si s'haurà d'usar una taula de gamma integrada o "
+"personalitzada."
#: include/sane/saneopts.h:312
#, no-c-format
@@ -579,34 +560,34 @@ msgid ""
"red, green, and blue channels simultaneously (i.e., it is an intensity "
"gamma table)."
msgstr ""
-"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)."
+"Taula per a la correcció de la gamma. En el mode de color, aquesta opció "
+"afectarà igualment els canals vermell, verd i blau alhora (és a dir, "
+"aquesta és una taula de gamma per a la intensitat)."
#: include/sane/saneopts.h:317
#, no-c-format
msgid "Gamma-correction table for the red band."
-msgstr "Gamma-correction table for the red band."
+msgstr "Taula per a la correcció de la gamma per a la banda vermella."
#: include/sane/saneopts.h:320
#, no-c-format
msgid "Gamma-correction table for the green band."
-msgstr "Gamma-correction table for the green band."
+msgstr "Taula per a la correcció de la gamma per a la banda verda."
#: include/sane/saneopts.h:323
#, no-c-format
msgid "Gamma-correction table for the blue band."
-msgstr "Gamma-correction table for the blue band."
+msgstr "Taula per a la correcció de la gamma per a la banda blava."
#: include/sane/saneopts.h:326
#, no-c-format
msgid "Controls the brightness of the acquired image."
-msgstr "Controls the brightness of the acquired image."
+msgstr "Controla la brillantor de la imatge obtinguda."
#: include/sane/saneopts.h:329
#, no-c-format
msgid "Controls the contrast of the acquired image."
-msgstr "Controls the contrast of the acquired image."
+msgstr "Controla el contrast de la imatge obtinguda."
#: include/sane/saneopts.h:332
#, no-c-format
@@ -614,76 +595,95 @@ msgid ""
"Selects the \"graininess\" of the acquired image. Smaller values result "
"in sharper images."
msgstr ""
-"Selects the “graininess” of the acquired image. Smaller values result "
-"in sharper images."
+"Selecciona el «granulat» de la imatge obtinguda. Els valors més petits "
+"resulten en imatges més definides."
#: include/sane/saneopts.h:336
#, no-c-format
msgid "Selects whether the acquired image should be halftoned (dithered)."
-msgstr "Selects whether the acquired image should be halftoned (dithered)."
+msgstr ""
+"Selecciona si la imatge obtinguda s'haurà de convertir a semi to "
+"(tramat)."
#: include/sane/saneopts.h:339 include/sane/saneopts.h:354
#, no-c-format
msgid "Selects what radiance level should be considered \"black\"."
-msgstr "Selects what radiance level should be considered “black”."
+msgstr "Selecciona quin nivell de radiància s'haurà de considerar «negre»."
#: include/sane/saneopts.h:342 include/sane/saneopts.h:363
#, no-c-format
msgid "Selects what radiance level should be considered \"white\"."
-msgstr "Selects what radiance level should be considered “white”."
+msgstr "Selecciona quin nivell de radiància s'haurà de considerar «blanc»."
#: include/sane/saneopts.h:345
#, no-c-format
msgid "Selects what red radiance level should be considered \"white\"."
-msgstr "Selects what red radiance level should be considered “white”."
+msgstr ""
+"Selecciona quin nivell de radiància del vermell s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:348
#, no-c-format
msgid "Selects what green radiance level should be considered \"white\"."
-msgstr "Selects what green radiance level should be considered “white”."
+msgstr ""
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:351
#, no-c-format
msgid "Selects what blue radiance level should be considered \"white\"."
-msgstr "Selects what blue radiance level should be considered “white”."
+msgstr ""
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:356
#, no-c-format
msgid "Selects what red radiance level should be considered \"black\"."
-msgstr "Selects what red radiance level should be considered “black”."
+msgstr ""
+"Selecciona quin nivell de radiància del vermell s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:358
#, no-c-format
msgid "Selects what green radiance level should be considered \"black\"."
-msgstr "Selects what green radiance level should be considered “black”."
+msgstr ""
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:360
#, no-c-format
msgid "Selects what blue radiance level should be considered \"black\"."
-msgstr "Selects what blue radiance level should be considered “black”."
+msgstr ""
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:365
#, no-c-format
msgid "Selects what red radiance level should be considered \"full red\"."
-msgstr "Selects what red radiance level should be considered “full red”."
+msgstr ""
+"Selecciona quin nivell de radiància del vermell s'haurà de considerar "
+"«totalment vermell»."
#: include/sane/saneopts.h:367
#, no-c-format
msgid ""
"Selects what green radiance level should be considered \"full green\"."
msgstr ""
-"Selects what green radiance level should be considered “full green”."
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«totalment verd»."
#: include/sane/saneopts.h:370
#, no-c-format
msgid ""
"Selects what blue radiance level should be considered \"full blue\"."
-msgstr "Selects what blue radiance level should be considered “full blue”."
+msgstr ""
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«totalment blau»."
#: include/sane/saneopts.h:374
#, no-c-format
msgid "Controls the \"hue\" (blue-level) of the acquired image."
-msgstr "Controls the “hue” (blue-level) of the acquired image."
+msgstr "Controla el «to» (nivell del blau) de la imatge obtinguda."
#: include/sane/saneopts.h:377
#, no-c-format
@@ -691,13 +691,14 @@ msgid ""
"The saturation level controls the amount of \"blooming\" that occurs "
"when acquiring an image with a camera. Larger values cause more blooming."
msgstr ""
-"The saturation level controls the amount of “blooming” that occurs when "
-"acquiring an image with a camera. Larger values cause more blooming."
+"El nivell de saturació controla la quantitat d'«enlluernament» que es "
+"produeix en obtenir una imatge amb una càmera. Els valors més grans "
+"causen més enlluernament."
#: include/sane/saneopts.h:382
#, no-c-format
msgid "The filename of the image to be loaded."
-msgstr "The filename of the image to be loaded."
+msgstr "El nom del fitxer de la imatge que es carregarà."
#: include/sane/saneopts.h:385
#, no-c-format
@@ -705,175 +706,176 @@ msgid ""
"Sets the size of the halftoning (dithering) pattern used when scanning "
"halftoned images."
msgstr ""
-"Sets the size of the halftoning (dithering) pattern used when scanning "
-"halftoned images."
+"Estableix la mida del patró per al semi to (tramatge) que s'usarà per a "
+"escanejar les imatges amb semi to."
#: include/sane/saneopts.h:389
#, no-c-format
msgid ""
"Defines the halftoning (dithering) pattern for scanning halftoned images."
msgstr ""
-"Defines the halftoning (dithering) pattern for scanning halftoned images."
+"Defineix el patró per al semi to (tramatge) que s'usarà per a escanejar "
+"les imatges amb semi to."
#: include/sane/saneopts.h:393
#, no-c-format
msgid "Use same values for X and Y resolution"
-msgstr "Use same values for X and Y resolution"
+msgstr "Usa els mateixos valors per a la resolució X i Y"
#: include/sane/saneopts.h:395
#, no-c-format
msgid "Swap black and white"
-msgstr "Swap black and white"
+msgstr "Intercanvia el negre i el blanc"
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Do a quality white-calibration"
-msgstr "Do a quality white-calibration"
+msgstr "Fes un calibratge de qualitat del blanc"
#: include/sane/saneopts.h:399
#, no-c-format
msgid "Use lens that doubles optical resolution"
-msgstr "Use lens that doubles optical resolution"
+msgstr "Usa una lent que dobli la resolució òptica"
#: include/sane/saneopts.h:401 include/sane/saneopts.h:413
#, no-c-format
msgid "In RGB-mode use same values for each color"
-msgstr "In RGB-mode use same values for each color"
+msgstr "En el mode RGB, usa els mateixos valors per a cada color"
#: include/sane/saneopts.h:403
#, no-c-format
msgid "Select minimum-brightness to get a white point"
-msgstr "Select minimum-brightness to get a white point"
+msgstr "Selecciona la brillantor mínima per obtenir un punt blanc"
#: include/sane/saneopts.h:405
#, no-c-format
msgid "Analog gamma-correction"
-msgstr "Analog gamma-correction"
+msgstr "Correcció de la gamma analògica"
#: include/sane/saneopts.h:407
#, no-c-format
msgid "Analog gamma-correction for red"
-msgstr "Analog gamma-correction for red"
+msgstr "Correcció de la gamma analògica per al vermell"
#: include/sane/saneopts.h:409
#, no-c-format
msgid "Analog gamma-correction for green"
-msgstr "Analog gamma-correction for green"
+msgstr "Correcció de la gamma analògica per al verd"
#: include/sane/saneopts.h:411
#, no-c-format
msgid "Analog gamma-correction for blue"
-msgstr "Analog gamma-correction for blue"
+msgstr "Correcció de la gamma analògica per al blau"
#: include/sane/saneopts.h:415
#, no-c-format
msgid "Warmup lamp before scanning"
-msgstr "Warmup lamp before scanning"
+msgstr "Escalfament de la làmpada abans d'escanejar"
#: include/sane/saneopts.h:417
#, no-c-format
msgid "Define exposure-time for calibration"
-msgstr "Define exposure-time for calibration"
+msgstr "Defineix el temps d'exposició per al calibratge"
#: include/sane/saneopts.h:419
#, no-c-format
msgid "Define exposure-time for red calibration"
-msgstr "Define exposure-time for red calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del vermell"
#: include/sane/saneopts.h:421
#, no-c-format
msgid "Define exposure-time for green calibration"
-msgstr "Define exposure-time for green calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del verd"
#: include/sane/saneopts.h:423
#, no-c-format
msgid "Define exposure-time for blue calibration"
-msgstr "Define exposure-time for blue calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del blau"
#: include/sane/saneopts.h:425
#, no-c-format
msgid "Define exposure-time for scan"
-msgstr "Define exposure-time for scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig"
#: include/sane/saneopts.h:427
#, no-c-format
msgid "Define exposure-time for red scan"
-msgstr "Define exposure-time for red scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del vermell"
#: include/sane/saneopts.h:429
#, no-c-format
msgid "Define exposure-time for green scan"
-msgstr "Define exposure-time for green scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del verd"
#: include/sane/saneopts.h:431
#, no-c-format
msgid "Define exposure-time for blue scan"
-msgstr "Define exposure-time for blue scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del blau"
#: include/sane/saneopts.h:433
#, no-c-format
msgid "Enable selection of exposure-time"
-msgstr "Enable selection of exposure-time"
+msgstr "Habilita la selecció del temps d'exposició"
#: include/sane/saneopts.h:435
#, no-c-format
msgid "Define lamp density for calibration"
-msgstr "Define lamp density for calibration"
+msgstr "Defineix la densitat de la llum per al calibratge"
#: include/sane/saneopts.h:437
#, no-c-format
msgid "Define lamp density for scan"
-msgstr "Define lamp density for scan"
+msgstr "Defineix la densitat de la llum per a l'escaneig"
#: include/sane/saneopts.h:439
#, no-c-format
msgid "Enable selection of lamp density"
-msgstr "Enable selection of lamp density"
+msgstr "Habilita la selecció de la densitat de la llum"
#: include/sane/saneopts.h:441 backend/umax.c:5830
#, no-c-format
msgid "Turn off lamp when program exits"
-msgstr "Turn off lamp when program exits"
+msgstr "Apaga la làmpada quan se surti del programa"
#: include/sane/saneopts.h:444
#, no-c-format
msgid "Scan button"
-msgstr "Scan button"
+msgstr "Botó de l'escàner"
#: include/sane/saneopts.h:445
#, no-c-format
msgid "Email button"
-msgstr "Email button"
+msgstr "Botó del correu electrònic"
#: include/sane/saneopts.h:446
#, no-c-format
msgid "Fax button"
-msgstr "Fax button"
+msgstr "Botó del fax"
#: include/sane/saneopts.h:447
#, no-c-format
msgid "Copy button"
-msgstr "Copy button"
+msgstr "Botó per a copiar"
#: include/sane/saneopts.h:448
#, no-c-format
msgid "PDF button"
-msgstr "PDF button"
+msgstr "Botó de PDF"
#: include/sane/saneopts.h:449
#, no-c-format
msgid "Cancel button"
-msgstr "Cancel button"
+msgstr "Botó per a cancel·lar"
#: include/sane/saneopts.h:450
#, no-c-format
msgid "Page loaded"
-msgstr "Page loaded"
+msgstr "S'ha carregat la pàgina"
#: include/sane/saneopts.h:451
#, no-c-format
msgid "Cover open"
-msgstr "Cover open"
+msgstr "La tapa es troba oberta"
#: include/sane/saneopts.h:454
#, no-c-format
@@ -883,117 +885,117 @@ msgstr "Color"
#: include/sane/saneopts.h:455
#, no-c-format
msgid "Color Lineart"
-msgstr "Color Lineart"
+msgstr "Color per a l'art lineal"
#: include/sane/saneopts.h:456
#, no-c-format
msgid "Color Halftone"
-msgstr "Color Halftone"
+msgstr "Color per al semi to"
#: include/sane/saneopts.h:457
#, no-c-format
msgid "Gray"
-msgstr "Gray"
+msgstr "Gris"
#: include/sane/saneopts.h:458
#, no-c-format
msgid "Halftone"
-msgstr "Halftone"
+msgstr "Semi to"
#: include/sane/saneopts.h:459
#, no-c-format
msgid "Lineart"
-msgstr "Lineart"
+msgstr "Art lineal"
#: backend/sane_strstatus.c:59
#, no-c-format
msgid "Success"
-msgstr "Success"
+msgstr "Correcte"
#: backend/sane_strstatus.c:62
#, no-c-format
msgid "Operation not supported"
-msgstr "Operation not supported"
+msgstr "Operació no admesa"
#: backend/sane_strstatus.c:65
#, no-c-format
msgid "Operation was cancelled"
-msgstr "Operation was cancelled"
+msgstr "L'operació ha estat cancel·lada"
#: backend/sane_strstatus.c:68
#, no-c-format
msgid "Device busy"
-msgstr "Device busy"
+msgstr "Dispositiu ocupat"
#: backend/sane_strstatus.c:71
#, no-c-format
msgid "Invalid argument"
-msgstr "Invalid argument"
+msgstr "Argument no vàlid"
#: backend/sane_strstatus.c:74
#, no-c-format
msgid "End of file reached"
-msgstr "End of file reached"
+msgstr "S'ha arribat al final del fitxer"
#: backend/sane_strstatus.c:77
#, no-c-format
msgid "Document feeder jammed"
-msgstr "Document feeder jammed"
+msgstr "S'ha embussat l'alimentador de documents"
#: backend/sane_strstatus.c:80
#, no-c-format
msgid "Document feeder out of documents"
-msgstr "Document feeder out of documents"
+msgstr "L'alimentador de documents està buit"
#: backend/sane_strstatus.c:83
#, no-c-format
msgid "Scanner cover is open"
-msgstr "Scanner cover is open"
+msgstr "La tapa de l'escàner està oberta"
#: backend/sane_strstatus.c:86
#, no-c-format
msgid "Error during device I/O"
-msgstr "Error during device I/O"
+msgstr "Error durant l'E/S amb el dispositiu"
#: backend/sane_strstatus.c:89
#, no-c-format
msgid "Out of memory"
-msgstr "Out of memory"
+msgstr "Memòria exhaurida"
#: backend/sane_strstatus.c:92
#, no-c-format
msgid "Access to resource has been denied"
-msgstr "Access to resource has been denied"
+msgstr "S'ha denegat l'accés al recurs"
#: backend/sane_strstatus.c:96
#, no-c-format
msgid "Lamp not ready, please retry"
-msgstr "Lamp not ready, please retry"
+msgstr "La làmpada no està preparada. Torneu-ho a provar"
#: backend/sane_strstatus.c:101
#, no-c-format
msgid "Scanner mechanism locked for transport"
-msgstr "Scanner mechanism locked for transport"
+msgstr "El mecanisme de l'escàner està bloquejat per al transport"
#: backend/artec_eplus48u.c:2874 backend/pnm.c:282
#, no-c-format
msgid "Defaults"
-msgstr "Defaults"
+msgstr "Predeterminats"
#: backend/artec_eplus48u.c:2876
#, no-c-format
msgid "Set default values for enhancement controls."
-msgstr "Set default values for enhancement controls."
+msgstr "Estableix els valors predeterminats per als controls de millora."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
-msgstr "Calibration"
+msgstr "Calibratge"
#: backend/artec_eplus48u.c:2941
#, no-c-format
msgid "Calibrate before next scan"
-msgstr "Calibrate before next scan"
+msgstr "Calibra abans del següent escaneig"
#: backend/artec_eplus48u.c:2943
#, no-c-format
@@ -1001,13 +1003,14 @@ msgid ""
"If enabled, the device will be calibrated before the next scan. "
"Otherwise, calibration is performed only before the first start."
msgstr ""
-"If enabled, the device will be calibrated before the next scan. "
-"Otherwise, calibration is performed only before the first start."
+"Si està habilitada, el dispositiu serà calibrat abans del següent "
+"escaneig. En cas contrari, el calibratge només es realitzarà abans del "
+"primer inici."
#: backend/artec_eplus48u.c:2954
#, no-c-format
msgid "Only perform shading-correction"
-msgstr "Only perform shading-correction"
+msgstr "Realitza només la correcció de les ombres"
#: backend/artec_eplus48u.c:2956
#, no-c-format
@@ -1016,801 +1019,817 @@ msgid ""
"The default values for gain, offset and exposure time, either build-in "
"or from the configuration file, are used."
msgstr ""
-"If enabled, only the shading correction is performed during calibration. "
-"The default values for gain, offset and exposure time, either build-in "
-"or from the configuration file, are used."
+"Si està habilitada, només es realitzarà la correcció de les ombres "
+"durant el calibratge. Es faran servir els valors predeterminats per al "
+"guany, desplaçament i temps d'exposició, sigui els integrats o des del "
+"fitxer de configuració."
#: backend/artec_eplus48u.c:2967
#, no-c-format
msgid "Button state"
-msgstr "Button state"
+msgstr "Botó per a l'estat"
#: backend/avision.h:778
#, no-c-format
msgid "Number of the frame to scan"
-msgstr "Number of the frame to scan"
+msgstr "Número del fotograma a escanejar"
#: backend/avision.h:779
#, no-c-format
msgid "Selects the number of the frame to scan"
-msgstr "Selects the number of the frame to scan"
+msgstr "Selecciona el número del fotograma a escanejar"
#: backend/avision.h:782
#, no-c-format
msgid "Duplex scan"
-msgstr "Duplex scan"
+msgstr "Escaneja a dues cares"
#: backend/avision.h:783
#, no-c-format
msgid ""
"Duplex scan provide a scan of the front and back side of the document"
msgstr ""
-"Duplex scan provide a scan of the front and back side of the document"
+"L'escanejat de les dues cares proporciona un escanejat de l'anvers i el "
+"revers del document"
#: backend/canon630u.c:159
#, no-c-format
msgid "Calibrate Scanner"
-msgstr "Calibrate Scanner"
+msgstr "Calibratge de l'escàner"
#: backend/canon630u.c:160
#, no-c-format
msgid "Force scanner calibration before scan"
-msgstr "Force scanner calibration before scan"
+msgstr "Força el calibratge de l'escàner abans de l'escaneig"
#: backend/canon630u.c:259 backend/umax1220u.c:208
#, no-c-format
msgid "Grayscale scan"
-msgstr "Grayscale scan"
+msgstr "Escaneja en escala de grisos"
#: backend/canon630u.c:260 backend/umax1220u.c:209
#, no-c-format
msgid "Do a grayscale rather than color scan"
-msgstr "Do a grayscale rather than color scan"
+msgstr "Fes un escaneig en escala de grisos en lloc d'en color"
#: backend/canon630u.c:306
#, no-c-format
msgid "Analog Gain"
-msgstr "Analog Gain"
+msgstr "Guany analògic"
#: backend/canon630u.c:307
#, no-c-format
msgid "Increase or decrease the analog gain of the CCD array"
-msgstr "Increase or decrease the analog gain of the CCD array"
+msgstr "Augmenta o disminueix el guany analògic per a la matriu del CCD"
#: backend/canon630u.c:347 backend/epson.h:68 backend/epson2.h:67
#, no-c-format
msgid "Gamma Correction"
-msgstr "Gamma Correction"
+msgstr "Correcció de la gamma"
#: backend/canon630u.c:348
#, no-c-format
msgid "Selects the gamma corrected transfer curve"
-msgstr "Selects the gamma corrected transfer curve"
+msgstr ""
+"Selecciona la corba de transferència per a la correcció de la gamma"
#: backend/canon.c:149 backend/canon-sane.c:1318
#, no-c-format
msgid "Raw"
-msgstr "Raw"
+msgstr "En brut"
#: backend/canon.c:157 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
#, no-c-format
msgid "Fine color"
-msgstr "Fine color"
+msgstr "Color fi"
#: backend/canon.c:169
#, no-c-format
msgid "No transparency correction"
-msgstr "No transparency correction"
+msgstr "Sense correcció de la transparència"
#: backend/canon.c:170 backend/canon-sane.c:680
#, no-c-format
msgid "Correction according to film type"
-msgstr "Correction according to film type"
+msgstr "Correcció d'acord amb el tipus de pel·lícula"
#: backend/canon.c:171 backend/canon-sane.c:674
#, no-c-format
msgid "Correction according to transparency ratio"
-msgstr "Correction according to transparency ratio"
+msgstr "Correcció d'acord amb la relació de transparència"
#: backend/canon.c:176 backend/canon-sane.c:776
#, no-c-format
msgid "Negatives"
-msgstr "Negatives"
+msgstr "Negatius"
#: backend/canon.c:176
#, no-c-format
msgid "Slides"
-msgstr "Slides"
+msgstr "Diapositives"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
-msgstr "Automatic"
+msgstr "Automàtic"
#: backend/canon.c:186
#, no-c-format
msgid "Normal speed"
-msgstr "Normal speed"
+msgstr "Velocitat normal"
#: backend/canon.c:187
#, no-c-format
msgid "1/2 normal speed"
-msgstr "1/2 normal speed"
+msgstr "1/2 de la velocitat normal"
#: backend/canon.c:187
#, no-c-format
msgid "1/3 normal speed"
-msgstr "1/3 normal speed"
+msgstr "1/3 de la velocitat normal"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
-msgstr "rounded parameter"
+msgstr "Paràmetre arrodonit"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
-msgstr "unknown"
+msgstr "Desconegut"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
-msgstr "ADF jam"
+msgstr "S'ha embussat l'ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
-msgstr "ADF cover open"
+msgstr "La tapa de l'ADF es troba oberta"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
-msgstr "lamp failure"
+msgstr "Fallada de la làmpada"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
-msgstr "scan head positioning error"
+msgstr "Error en el posicionament del capçal d'escaneig"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
-msgstr "CPU check error"
+msgstr "Error en comprobar la CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
-msgstr "RAM check error"
+msgstr "Error en comprobar la RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
-msgstr "ROM check error"
+msgstr "Error en comprobar la ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
-msgstr "hardware check error"
+msgstr "Error en comprobar el maquinari"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
-msgstr "transparency unit lamp failure"
+msgstr "Fallada de la làmpada amb la unitat de transparència"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
-msgstr "transparency unit scan head positioning failure"
+msgstr ""
+"Fallada en el posicionament del capçal d'escaneig amb la unitat de "
+"transparència"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
-msgstr "parameter list length error"
+msgstr "Error en la longitud de la llista de paràmetres"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
-msgstr "invalid command operation code"
+msgstr "Codi no vàlid per a l'ordre d'operació"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
-msgstr "invalid field in CDB"
+msgstr "Camp no vàlid al CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
-msgstr "unsupported LUN"
+msgstr "LUN no admès"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
-msgstr "invalid field in parameter list"
+msgstr "Camp no vàlid a la llista de paràmetres"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
-msgstr "command sequence error"
+msgstr "Error en la seqüència d'ordres"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
-msgstr "too many windows specified"
+msgstr "S'han especificat massa finestres"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
-msgstr "medium not present"
+msgstr "No es troba el suport"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
-msgstr "invalid bit IDENTIFY message"
+msgstr "Missatge «IDENTIFY» del bit no vàlid"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
-msgstr "option not connect"
+msgstr "L'opció no connectar"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
-msgstr "power on reset / bus device reset"
+msgstr "Reinicia l'encesa / reinicia el bus del dispositiu"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
-msgstr "parameter changed by another initiator"
+msgstr "Paràmetre canviat per un altre iniciador"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
-msgstr "no additional sense information"
+msgstr "Sense informació addicional"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
-msgstr "reselect failure"
+msgstr "Fallada en tornar a seleccionar"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
-msgstr "SCSI parity error"
+msgstr "Error de paritat SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
-msgstr "initiator detected error message received"
+msgstr "L'iniciador ha detectat la recepció d'un missatge d'error"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
-msgstr "invalid message error"
+msgstr "Error de missatge no vàlid"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
-msgstr "timeout error"
+msgstr "Error de caducitat"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
-msgstr "transparency unit shading error"
+msgstr "Error de l'ombreig a la unitat de transparència"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
-msgstr "lamp not stabilized"
+msgstr "La llum no està estabilitzada"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
-msgstr "film scanner"
+msgstr "Escàner de pel·lícula"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
-msgstr "flatbed scanner"
+msgstr "Escàner de superfície plana"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
-msgstr "Film type"
+msgstr "Tipus de pel·lícula"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
-msgstr "Selects the film type, i.e. negatives or slides"
+msgstr ""
+"Selecciona el tipus de pel·lícula, p. ex., en negatiu o diapositiva"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
-msgstr "Negative film type"
+msgstr "Tipus de pel·lícula en negatiu"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
-msgstr "Selects the negative film type"
+msgstr "Selecciona el tipus de pel·lícula en negatiu"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
-msgstr "Hardware resolution"
+msgstr "Resolució del maquinari"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
-msgstr "Use only hardware resolutions"
+msgstr "Usa només les resolucions del maquinari"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
-msgstr "Focus"
+msgstr "Enfocament"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
-msgstr "Auto focus"
+msgstr "Enfocament automàtic"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
-msgstr "Enable/disable auto focus"
+msgstr "Habilita/Inhabilita l'enfocament automàtic"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
-msgstr "Auto focus only once"
+msgstr "Enfocament automàtic només una vegada"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
-msgstr "Do auto focus only once between ejects"
+msgstr "Fes l'enfocament automàtic només una vegada entre les expulsions"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
-msgstr "Manual focus position"
+msgstr "Posició manual de l'enfocament"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, 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)."
+msgstr ""
+"Estableix la posició manual per a l'enfocament del sistema òptic "
+"(predeterminat: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
-msgstr "Scan margins"
+msgstr "Escaneja els marges"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
-msgstr "Extra color adjustments"
+msgstr "Ajustaments addicionals per al color"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
-msgstr "Mirror image"
+msgstr "Emmiralla la imatge"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
-msgstr "Mirror the image horizontally"
+msgstr "Emmiralla horitzontalment la imatge"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
-msgstr "Auto exposure"
+msgstr "Exposició automàtica"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
-msgstr "Enable/disable the auto exposure feature"
+msgstr "Habilita/Inhabilita la característica per a l'exposició automàtica"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
-msgstr "Calibration now"
+msgstr "Calibratge ara"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
-msgstr "Execute calibration *now*"
+msgstr "Executa el calibratge *ara*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
-msgstr "Self diagnosis"
+msgstr "Autodiagnòstic"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
-msgstr "Perform scanner self diagnosis"
+msgstr "Realitza un autodiagnòstic de l'escàner"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
-msgstr "Reset scanner"
+msgstr "Reinicia l'escàner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
-msgstr "Reset the scanner"
+msgstr "Reinicia l'escàner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
-msgstr "Medium handling"
+msgstr "Maneja el suport"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
-msgstr "Eject film after each scan"
+msgstr "Expulsa la pel·lícula després de cada escaneig"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, 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"
+msgstr ""
+"Expulsa automàticament la pel·lícula del dispositiu després de cada "
+"escaneig"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
-msgstr "Eject film before exit"
+msgstr "Expulsa la pel·lícula abans de sortir"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, 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"
+"Expulsa automàticament la pel·lícula del dispositiu abans de sortir del "
+"programa"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
-msgstr "Eject film now"
+msgstr "Expulsa la pel·lícula ara"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
-msgstr "Eject the film *now*"
+msgstr "Expulsa la pel·lícula *ara*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
-msgstr "Document feeder extras"
+msgstr "Extres de l'alimentador de documents"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
-msgstr "Flatbed only"
+msgstr "Només de superfície plana"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
-msgstr "Disable auto document feeder and use flatbed only"
+msgstr ""
+"Inhabilita l'alimentador automàtic de documents i només usa la "
+"superfície plana"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
-msgstr "Transparency unit"
+msgstr "Unitat per a la transparència"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, 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)"
+msgstr ""
+"Canvia a activa/desactiva la unitat de transparència (FAU, unitat "
+"adaptadora de pel·lícula)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
-msgstr "Negative film"
+msgstr "Pel·lícula en negatiu"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
-msgstr "Positive or negative film"
+msgstr "Pel·lícula en positiu o negatiu"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
-msgstr "Density control"
+msgstr "Control per a la densitat"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
-msgstr "Set density control mode"
+msgstr "Estableix el mode de control per a la densitat"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
-msgstr "Transparency ratio"
+msgstr "Relació de transparència"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
-msgstr "Select film type"
+msgstr "Selecciona el tipus de pel·lícula"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
-msgstr "Select the film type"
+msgstr "Selecciona el tipus de pel·lícula"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
-msgstr "Flatbed"
+msgstr "De superfície plana"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
-msgstr "ADF Front"
+msgstr "ADF per a l'anvers"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
-msgstr "ADF Back"
+msgstr "ADF per al revers"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
-msgstr "ADF Duplex"
+msgstr "ADF per a les dues cares"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
-msgstr "Card Front"
+msgstr "Targeta per a l'anvers"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
-msgstr "Card Back"
+msgstr "Targeta per al revers"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
-msgstr "Card Duplex"
+msgstr "Targeta per a les dues cares"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
-msgstr "Red"
+msgstr "Vermell"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
-msgstr "Green"
+msgstr "Verd"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
-msgstr "Blue"
+msgstr "Blau"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
-msgstr "Enhance Red"
+msgstr "Vermell realçat"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
-msgstr "Enhance Green"
+msgstr "Verd realçat"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
-msgstr "Enhance Blue"
+msgstr "Blau realçat"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
#, no-c-format
msgid "None"
-msgstr "None"
+msgstr "Cap"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr "Software blank skip percentage"
+msgstr "El percentatge per a saltar el blanc del programari"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, 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"
+msgstr ""
+"Sol·licita al controlador que descarti les pàgines amb un percentatge "
+"baix de píxels foscos"
#: backend/epson.c:491 backend/epson2.c:108 backend/magicolor.c:174
#, no-c-format
msgid "Simplex"
-msgstr "Simplex"
+msgstr "Una cara"
#: backend/epson.c:492 backend/epson2.c:109 backend/kvs1025.h:50
#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
#: backend/magicolor.c:175 backend/matsushita.h:218
#, no-c-format
msgid "Duplex"
-msgstr "Duplex"
+msgstr "Dues cares"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
-msgstr "Transparency Unit"
+msgstr "Unitat per a la transparència"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
-msgstr "Automatic Document Feeder"
+msgstr "Alimentador automàtic de documents"
#: backend/epson.c:523 backend/epson2.c:134
#, no-c-format
msgid "Positive Film"
-msgstr "Positive Film"
+msgstr "Pel·lícula en positiu"
#: backend/epson.c:524 backend/epson2.c:135
#, no-c-format
msgid "Negative Film"
-msgstr "Negative Film"
+msgstr "Pel·lícula en negatiu"
#: backend/epson.c:529 backend/epson2.c:142
#, no-c-format
msgid "Focus on glass"
-msgstr "Focus on glass"
+msgstr "Enfocament sobre el vidre"
#: backend/epson.c:530 backend/epson2.c:143
#, no-c-format
msgid "Focus 2.5mm above glass"
-msgstr "Focus 2.5mm above glass"
+msgstr "Enfocament de 2,5 mm per sobre del vidre"
#: backend/epson.c:557 backend/epson.c:565 backend/epson.c:577
#: backend/epson2.c:166 backend/epson2.c:174 backend/epson2.c:186
#, no-c-format
msgid "Halftone A (Hard Tone)"
-msgstr "Halftone A (Hard Tone)"
+msgstr "Semi to A (to dur)"
#: backend/epson.c:558 backend/epson.c:566 backend/epson.c:578
#: backend/epson2.c:167 backend/epson2.c:175 backend/epson2.c:187
#, no-c-format
msgid "Halftone B (Soft Tone)"
-msgstr "Halftone B (Soft Tone)"
+msgstr "Semi to B (to suau)"
#: backend/epson.c:559 backend/epson.c:567 backend/epson.c:579
#: backend/epson2.c:168 backend/epson2.c:176 backend/epson2.c:188
#, no-c-format
msgid "Halftone C (Net Screen)"
-msgstr "Halftone C (Net Screen)"
+msgstr "Semi to C (matisat)"
#: backend/epson.c:568 backend/epson.c:580 backend/epson2.c:177
#: backend/epson2.c:189
#, no-c-format
msgid "Dither A (4x4 Bayer)"
-msgstr "Dither A (4x4 Bayer)"
+msgstr "Trama A (bayer 4x4)"
#: backend/epson.c:569 backend/epson.c:581 backend/epson2.c:178
#: backend/epson2.c:190
#, no-c-format
msgid "Dither B (4x4 Spiral)"
-msgstr "Dither B (4x4 Spiral)"
+msgstr "Trama B (espiral 4x4)"
#: backend/epson.c:570 backend/epson.c:582 backend/epson2.c:179
#: backend/epson2.c:191
#, no-c-format
msgid "Dither C (4x4 Net Screen)"
-msgstr "Dither C (4x4 Net Screen)"
+msgstr "Trama C (matisat 4x4)"
#: backend/epson.c:571 backend/epson.c:583 backend/epson2.c:180
#: backend/epson2.c:192
#, no-c-format
msgid "Dither D (8x4 Net Screen)"
-msgstr "Dither D (8x4 Net Screen)"
+msgstr "Trama D (matisat 8x4)"
#: backend/epson.c:584 backend/epson2.c:193
#, no-c-format
msgid "Text Enhanced Technology"
-msgstr "Text Enhanced Technology"
+msgstr "Tecnologia per a la millora del text"
#: backend/epson.c:585 backend/epson2.c:194
#, no-c-format
msgid "Download pattern A"
-msgstr "Download pattern A"
+msgstr "Descarrega el patró A"
#: backend/epson.c:586 backend/epson2.c:195
#, no-c-format
msgid "Download pattern B"
-msgstr "Download pattern B"
+msgstr "Descarrega el patró B"
#: backend/epson.c:631
#, no-c-format
msgid "No Correction"
-msgstr "No Correction"
+msgstr "Sense correcció"
#: backend/epson.c:632 backend/epson.c:657 backend/epson2.c:255
#, no-c-format
msgid "User defined"
-msgstr "User defined"
+msgstr "Definit per l'usuari"
#: backend/epson.c:633
#, no-c-format
msgid "Impact-dot printers"
-msgstr "Impact-dot printers"
+msgstr "Impressores matricials"
#: backend/epson.c:634
#, no-c-format
msgid "Thermal printers"
-msgstr "Thermal printers"
+msgstr "Impressores tèrmiques"
#: backend/epson.c:635
#, no-c-format
msgid "Ink-jet printers"
-msgstr "Ink-jet printers"
+msgstr "Impressores d'injecció de tinta"
#: backend/epson.c:636
#, no-c-format
msgid "CRT monitors"
-msgstr "CRT monitors"
+msgstr "Monitors CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
-msgstr "Default"
+msgstr "Predeterminat"
#: backend/epson.c:658 backend/epson2.c:256
#, no-c-format
msgid "High density printing"
-msgstr "High density printing"
+msgstr "Impressió d'alta densitat"
#: backend/epson.c:659 backend/epson2.c:257
#, no-c-format
msgid "Low density printing"
-msgstr "Low density printing"
+msgstr "Impressió de baixa densitat"
#: backend/epson.c:660 backend/epson2.c:258
#, no-c-format
msgid "High contrast printing"
-msgstr "High contrast printing"
+msgstr "Impressió d'alt contrast"
#: backend/epson.c:678 backend/epson2.c:276
#, no-c-format
msgid "User defined (Gamma=1.0)"
-msgstr "User defined (Gamma=1.0)"
+msgstr "Definit per l'usuari (gamma=1.0)"
#: backend/epson.c:679 backend/epson2.c:277
#, no-c-format
msgid "User defined (Gamma=1.8)"
-msgstr "User defined (Gamma=1.8)"
+msgstr "Definit per l'usuari (gamma=1.8)"
#: backend/epson.c:757
#, no-c-format
@@ -1820,18 +1839,18 @@ msgstr "CD"
#: backend/epson.c:758
#, no-c-format
msgid "A5 portrait"
-msgstr "A5 portrait"
+msgstr "A5 retrat"
#: backend/epson.c:759
#, no-c-format
msgid "A5 landscape"
-msgstr "A5 landscape"
+msgstr "A5 apaïsat"
#: backend/epson.c:760 backend/kvs1025_opt.c:103 backend/kvs20xx_opt.c:77
#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
#, no-c-format
msgid "Letter"
-msgstr "Letter"
+msgstr "Carta"
#: backend/epson.c:761 backend/kvs1025_opt.c:100 backend/kvs20xx_opt.c:74
#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:128
@@ -1843,166 +1862,167 @@ msgstr "A4"
#: backend/epson.c:762
#, no-c-format
msgid "Max"
-msgstr "Max"
-
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+msgstr "Màx"
+
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
-msgstr "Scan Mode"
+msgstr "Mode d'escaneig"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
-msgstr "Selects the halftone."
+msgstr "Selecciona el semi to."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
-msgstr "Dropout"
+msgstr "Exclusió"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
-msgstr "Selects the dropout."
+msgstr "Selecciona el que s'exclourà."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
-msgstr "Selects the brightness."
+msgstr "Selecciona la brillantor."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
-msgstr "Sharpness"
+msgstr "Agudesa"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
-msgstr "Color correction"
+msgstr "Correcció del color"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
-msgstr "Sets the color correction table for the selected output device."
+msgstr ""
+"Estableix la taula de correcció del color per al dispositiu de sortida "
+"seleccionat."
#: backend/epson.c:3075
#, no-c-format
msgid "Color correction coefficients"
-msgstr "Color correction coefficients"
+msgstr "Coeficients per a la correcció del color"
#: backend/epson.c:3076
#, no-c-format
msgid "Matrix multiplication of RGB"
-msgstr "Matrix multiplication of RGB"
+msgstr "Matriu de multiplicació del RGB"
#: backend/epson.c:3093
#, no-c-format
msgid "Shift green to red"
-msgstr "Shift green to red"
+msgstr "Canvia de verd a vermell"
#: backend/epson.c:3094
#, no-c-format
msgid "Shift green to blue"
-msgstr "Shift green to blue"
+msgstr "Canvia de verd a blau"
#: backend/epson.c:3095
#, no-c-format
msgid "Shift red to green"
-msgstr "Shift red to green"
+msgstr "Canvia de vermell a verd"
#: backend/epson.c:3097
#, no-c-format
msgid "Shift red to blue"
-msgstr "Shift red to blue"
+msgstr "Canvia de vermell a blau"
#: backend/epson.c:3098
#, no-c-format
msgid "Shift blue to green"
-msgstr "Shift blue to green"
+msgstr "Canvia de blau a verd"
#: backend/epson.c:3099
#, no-c-format
msgid "Shift blue to red"
-msgstr "Shift blue to red"
+msgstr "Canvia de blau a vermell"
#: backend/epson.c:3102
#, no-c-format
msgid "Controls green level"
-msgstr "Controls green level"
+msgstr "Controla el nivell de verd"
#: backend/epson.c:3103
#, no-c-format
msgid "Adds to red based on green level"
-msgstr "Adds to red based on green level"
+msgstr "Afegeix vermell en funció del nivell de verd"
#: backend/epson.c:3104
#, no-c-format
msgid "Adds to blue based on green level"
-msgstr "Adds to blue based on green level"
+msgstr "Afegeix blau en funció del nivell de verd"
#: backend/epson.c:3105
#, no-c-format
msgid "Adds to green based on red level"
-msgstr "Adds to green based on red level"
+msgstr "Afegeix verd en funció del nivell de vermell"
#: backend/epson.c:3106
#, no-c-format
msgid "Controls red level"
-msgstr "Controls red level"
+msgstr "Controla el nivell de vermell"
#: backend/epson.c:3107
#, no-c-format
msgid "Adds to blue based on red level"
-msgstr "Adds to blue based on red level"
+msgstr "Afegeix blau en funció del nivell de vermell"
#: backend/epson.c:3108
#, no-c-format
msgid "Adds to green based on blue level"
-msgstr "Adds to green based on blue level"
+msgstr "Afegeix verd en funció del nivell de blau"
#: backend/epson.c:3109
#, no-c-format
msgid "Adds to red based on blue level"
-msgstr "Adds to red based on blue level"
+msgstr "Afegeix vermell en funció del nivell de blau"
#: backend/epson.c:3110
#, no-c-format
msgid "Controls blue level"
-msgstr "Controls blue level"
+msgstr "Controla el nivell de blau"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
-msgstr "Mirror the image."
+msgstr "Emmiralla la imatge."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
-msgstr "Fast preview"
+msgstr "Vista prèvia ràpida"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
-msgstr "Auto area segmentation"
+msgstr "Segmentació automàtica de l'àrea"
#: backend/epson.c:3258
#, no-c-format
msgid "Short resolution list"
-msgstr "Short resolution list"
+msgstr "Llista curta de les resolucions"
#: backend/epson.c:3260
#, no-c-format
msgid "Display short resolution list"
-msgstr "Display short resolution list"
+msgstr "Mostra una llista curta de les resolucions"
#: backend/epson.c:3267
#, no-c-format
@@ -2012,57 +2032,57 @@ msgstr "Zoom"
#: backend/epson.c:3269
#, no-c-format
msgid "Defines the zoom factor the scanner will use"
-msgstr "Defines the zoom factor the scanner will use"
+msgstr "Defineix el factor de zoom que usarà l'escàner"
#: backend/epson.c:3349
#, no-c-format
msgid "Quick format"
-msgstr "Quick format"
+msgstr "Format ràpid"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
-msgstr "Optional equipment"
+msgstr "Equipament opcional"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
-msgstr "Eject"
+msgstr "Expulsa"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
-msgstr "Eject the sheet in the ADF"
+msgstr "Expulsa el full de l'ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
-msgstr "Auto eject"
+msgstr "Expulsa automàticament"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
-msgstr "Eject document after scanning"
+msgstr "Expulsa el document després de l'escaneig"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
-msgstr "ADF Mode"
+msgstr "Mode ADF"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
-msgstr "Selects the ADF mode (simplex/duplex)"
+msgstr "Seleccionar el mode de l'ADF (una cara/dues cares)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
-msgstr "Bay"
+msgstr "Badia"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
-msgstr "Select bay to scan"
+msgstr "Selecciona la badia per escanejar"
#: backend/epson.h:69 backend/epson2.h:68
#, no-c-format
@@ -2070,25 +2090,27 @@ 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"
msgstr ""
-"Selects the gamma correction value from a list of pre-defined devices or "
-"the user defined table, which can be downloaded to the scanner"
+"Selecciona el valor per a la correcció de la gamma des d'una llista "
+"predefinida de dispositius o de la taula definida per l'usuari, la qual "
+"es pot descarregar a l'escàner."
#: backend/epson.h:72 backend/epson2.h:71
#, no-c-format
msgid "Focus Position"
-msgstr "Focus Position"
+msgstr "Posició de l'enfocament"
#: backend/epson.h:73 backend/epson2.h:72
#, no-c-format
msgid ""
"Sets the focus position to either the glass or 2.5mm above the glass"
msgstr ""
-"Sets the focus position to either the glass or 2.5mm above the glass"
+"Estableix la posició de l'enfocament sobre el vidre o 2,5 mm per sobre "
+"del vidre"
#: backend/epson.h:75 backend/epson2.h:74
#, no-c-format
msgid "Wait for Button"
-msgstr "Wait for Button"
+msgstr "Espera pel botó"
#: backend/epson.h:76 backend/epson2.h:75
#, no-c-format
@@ -2096,14 +2118,15 @@ msgid ""
"After sending the scan command, wait until the button on the scanner is "
"pressed to actually start the scan process."
msgstr ""
-"After sending the scan command, wait until the button on the scanner is "
-"pressed to actually start the scan process."
+"Després d'enviar l'ordre d'escaneig, s'ha d'esperar fins que es premi el "
+"botó de l'escàner per iniciar realment el procés d'escaneig."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
-msgstr "Infrared"
+msgstr "Infraroigs"
+# Nota: https://github.com/Scan-o-Matic/scanomatic/wiki/Installing-scanners
#: backend/epson2.c:117
#, no-c-format
msgid "TPU8x10"
@@ -2112,588 +2135,614 @@ msgstr "TPU8x10"
#: backend/epson2.c:136
#, no-c-format
msgid "Positive Slide"
-msgstr "Positive Slide"
+msgstr "Diapositiva en positiu"
#: backend/epson2.c:137
#, no-c-format
msgid "Negative Slide"
-msgstr "Negative Slide"
+msgstr "Diapositiva en negatiu"
+# Nota: https://en.wikipedia.org/wiki/Color_temperature#Correlated_color_temperature
#: backend/epson2.c:215
#, no-c-format
msgid "Built in CCT profile"
-msgstr "Built in CCT profile"
+msgstr "Incorpora el perfil CCT"
#: backend/epson2.c:216
#, no-c-format
msgid "User defined CCT profile"
-msgstr "User defined CCT profile"
+msgstr "Perfil CCT definit per l'usuari"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
-msgstr "On"
+msgstr "Actiu"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
-msgstr "Off"
+msgstr "Inactiu"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
-msgstr "Dither"
+msgstr "Tramat"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
-msgstr "Diffusion"
+msgstr "Difusió"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
-msgstr "White"
+msgstr "Blanc"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
-msgstr "Black"
+msgstr "Negre"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
-msgstr "Continue"
+msgstr "Continua"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
-msgstr "Stop"
+msgstr "Atura"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
-msgstr "10mm"
+msgstr "10 mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
-msgstr "15mm"
+msgstr "15 mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
-msgstr "20mm"
+msgstr "20 mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
-msgstr "Horizontal"
+msgstr "Horitzontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
-msgstr "Horizontal bold"
+msgstr "Horitzontal en negre"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
-msgstr "Horizontal narrow"
+msgstr "Horitzontal estreta"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
-msgstr "Vertical bold"
+msgstr "Vertical en negre"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
-msgstr "Top to bottom"
+msgstr "De dalt a baix"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
-msgstr "Bottom to top"
+msgstr "De baix a dalt"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
-msgstr "Front"
+msgstr "Anvers"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
-msgstr "Back"
+msgstr "Revers"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
-msgstr "Gamma function exponent"
+msgstr "Exponent de la funció gamma"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
-msgstr "Changes intensity of midtones"
+msgstr "Canvia la intensitat dels semi tons"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
-msgstr "Reverse image format"
+msgstr "Format d'imatge inversa"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
-msgstr "Halftone type"
+msgstr "Tipus de semi to"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
-msgstr "Control type of halftone filter"
+msgstr "Controla el tipus de filtre del semi to"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr "Control pattern of halftone filter"
+msgstr "Controla el patró del filtre del semi to"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
-msgstr "Outline"
+msgstr "Contorn"
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, no-c-format
msgid "Perform outline extraction"
-msgstr "Perform outline extraction"
+msgstr "Realitza l'extracció del contorn"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
-msgstr "Emphasis"
+msgstr "Èmfasi"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
-msgstr "Negative to smooth or positive to sharpen image"
+msgstr "Negatiu per a suavitzar o positiu per aguditzar la imatge"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, no-c-format
msgid "Separation"
-msgstr "Separation"
+msgstr "Separació"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr "Enable automatic separation of image and text"
+msgstr "Habilita la separació automàtica de les imatges i el text"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
-msgstr "Mirroring"
+msgstr "Emmiralla"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
-msgstr "Reflect output image horizontally"
+msgstr "Reflecteix horitzontalment la imatge de sortida"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "White level follower"
-msgstr "White level follower"
+msgstr "Seguidor del nivell de blanc"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, no-c-format
msgid "Control white level follower"
-msgstr "Control white level follower"
+msgstr "Controla el seguidor del nivell de blanc"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, no-c-format
msgid "BP filter"
-msgstr "BP filter"
+msgstr "Filtre per al bolígraf"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr "Improves quality of high resolution ball-point pen text"
+msgstr "Millora la qualitat del text del bolígraf amb alta resolució"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
-msgstr "Smoothing"
+msgstr "Suavitzat"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr "Enable smoothing for improved OCR"
+msgstr "Habilita el suavitzat per a millorar l'OCR"
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, no-c-format
msgid "Gamma curve"
-msgstr "Gamma curve"
+msgstr "Corba amb interval"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, 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"
+msgstr ""
+"La corba amb interval, des de la llum a la foscor, però la part superior "
+"de les dues podria no funcionar"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
-msgstr "Threshold curve"
+msgstr "Corba del llindar"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, 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"
+"La corba del llindar, des de la llum a la foscor, però la part superior "
+"de les dues podria no ser lineal"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
-msgstr "Threshold white"
+msgstr "Llindar al blanc"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, 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"
+msgstr ""
+"Estableix els píxels iguals al llindar al blanc en comptes de negre"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
-msgstr "Noise removal"
+msgstr "Eliminació del soroll"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
-msgstr "Matrix 5x5"
+msgstr "Matriu 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr "Remove 5 pixel square noise"
+msgstr "Elimina el soroll quadrat de 5 píxels"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
-msgstr "Matrix 4x4"
+msgstr "Matriu 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr "Remove 4 pixel square noise"
+msgstr "Elimina el soroll quadrat de 4 píxels"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
-msgstr "Matrix 3x3"
+msgstr "Matriu 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr "Remove 3 pixel square noise"
+msgstr "Elimina el soroll quadrat de 3 píxels"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
-msgstr "Matrix 2x2"
+msgstr "Matriu 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr "Remove 2 pixel square noise"
+msgstr "Elimina el soroll quadrat de 2 píxels"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
-msgstr "Variance"
+msgstr "Variància"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
-msgstr "Set SDTC variance rate (sensitivity), 0 equals 127"
+msgstr ""
+"Estableix la velocitat de la variància SDTC (sensibilitat), 0 és igual "
+"que 127"
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, no-c-format
msgid "Auto width detection"
-msgstr "Auto width detection"
+msgstr "Detecció automàtica de l'amplada"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
-msgstr "Scanner detects paper sides. May reduce scanning speed."
+msgstr ""
+"L'escàner detectarà els costats del paper. Pot reduir la velocitat de "
+"l'escaneig."
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, no-c-format
msgid "Auto length detection"
-msgstr "Auto length detection"
+msgstr "Detecció automàtica de la llargada"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
-msgstr "Scanner detects paper lower edge. May confuse some frontends."
+msgstr ""
+"L'escàner detectarà la vora inferior del paper. Pot confondre alguns "
+"frontals."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
-msgstr "Compression"
+msgstr "Compressió"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
-msgstr "Enable compressed data. May crash your front-end program"
+msgstr ""
+"Habilita les dades comprimides. Pot fer fallar el vostre programa de "
+"frontal"
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
-msgstr "Compression argument"
+msgstr "Argument per a la compressió"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
-"is same as 4"
+"Nivell de la compressió JPEG. 1 és un fitxer petit, 7 és un fitxer gran. "
+"0 (predeterminat) és igual que 4"
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
-msgstr "DF action"
+msgstr "Acció per a la doble alimentació"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
-msgstr "Action following double feed error"
+msgstr "Acció per a després de l'error de doble alimentació"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
-msgstr "DF skew"
+msgstr "Inclinació per la doble alimentació"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr "Enable double feed error due to skew"
+msgstr "Habilita l'error de doble alimentació que causa inclinació"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
-msgstr "DF thickness"
+msgstr "Gruix del paper per la doble alimentació"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr "Enable double feed error due to paper thickness"
+msgstr "Habilita l'error de doble alimentació causat pel gruix del paper"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
-msgstr "DF length"
+msgstr "Longitud del paper causant doble alimentació"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr "Enable double feed error due to paper length"
+msgstr ""
+"Habilita l'error de doble alimentació causat per la longitud del paper"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
-msgstr "DF length difference"
+msgstr "Diferència en la longitud per a causar doble alimentació"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr "Difference in page length to trigger double feed error"
+msgstr ""
+"Diferència en la longitud de la pàgina per activar l'error de doble "
+"alimentació"
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
-msgstr "DF recovery mode"
+msgstr "El mode recuperació causa doble alimentació"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr "Request scanner to reverse feed on paper jam"
+msgstr ""
+"Sol·licita a l'escàner que l'alimentador recuperi el paper en embussar-se"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
-msgstr "Paper protection"
+msgstr "Protecció del paper"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr "Request scanner to predict jams in the ADF"
+msgstr "Pregunta a l'escàner per a predir les embussades a l'ADF"
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, no-c-format
msgid "Advanced paper protection"
-msgstr "Advanced paper protection"
+msgstr "Protecció avançada del paper"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, 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"
+msgstr ""
+"Pregunta a l'escàner per a predir les embussades a l'ADF usant sensors "
+"millorats"
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, no-c-format
msgid "Staple detection"
-msgstr "Staple detection"
+msgstr "Detecció de les grapes"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, 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"
+msgstr ""
+"Pregunta a l'escàner per a detectar les embussades a l'ADF causades per "
+"les grapes"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
-msgstr "Background color"
+msgstr "Color de fons"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-"Set color of background for scans. May conflict with overscan option"
+"Estableix un color de fons per a l'escaneig. Pot entrar en conflicte amb "
+"l'opció de sobreexploració"
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
-msgstr "Dropout color"
+msgstr "Descarta el color"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-"One-pass scanners use only one color during gray or binary scanning, "
-"useful for colored paper or ink"
+"Els escàners d'una sola passada només usen un color durant l'escaneig "
+"amb gris o binari, útil per a paper amb colors o tinta"
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
-msgstr "Buffer mode"
+msgstr "Mode de memòria intermèdia"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, 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"
+"Sol·licita a l'escàner que llegeixi les pàgines ràpidament des de l'ADF "
+"a la memòria interna"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
-msgstr "Prepick"
+msgstr "Preselecciona"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr "Request scanner to grab next page from ADF"
+msgstr "Sol·licita a l'escàner que agafi la pàgina següent des de l'ADF"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
-msgstr "Overscan"
+msgstr "Sobreexploració"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, 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"
msgstr ""
-"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"
+"Recull uns pocs mm del fons al costat superior de l'escaneig, abans que "
+"el paper ingressi a l'ADF i augmenta l'àrea màxima d'escaneig més enllà "
+"de la mida del paper, per a permetre recollir els costats restants. Pot "
+"entrar en conflicte amb l'opció Color de fons"
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
-msgstr "Sleep timer"
+msgstr "Temporitzador de suspensió"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, 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"
+"Temps en minuts fins que la font d'alimentació interna canviarà al mode "
+"de suspensió"
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
-msgstr "Off timer"
+msgstr "Temporitzador per apagar"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
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."
+"Temps en minuts fins que la font d'alimentació interna apagui l'escàner. "
+"S'arrodonirà fins als 15 minuts més propers. Zero significa que no "
+"s'apagarà mai."
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, no-c-format
msgid "Duplex offset"
-msgstr "Duplex offset"
+msgstr "Desplaçament de la doble cara"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
-msgstr "Adjust front/back offset"
+msgstr "Ajusta el desplaçament per a l'anvers/revers"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
-msgstr "Green offset"
+msgstr "Desplaçament del verd"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, no-c-format
msgid "Adjust green/red offset"
-msgstr "Adjust green/red offset"
+msgstr "Ajusta el desplaçament del verd/vermell"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
-msgstr "Blue offset"
+msgstr "Desplaçament del blau"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
-msgstr "Adjust blue/red offset"
+msgstr "Ajusta el desplaçament del blau/vermell"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
-msgstr "Low Memory"
+msgstr "Memòria baixa"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2701,597 +2750,637 @@ msgid ""
"option 'side' can be used to determine correct image. This option should "
"only be used with custom front-end software."
msgstr ""
-"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."
+"Limita l'ús de la memòria del controlador per a usar-ho en sistemes "
+"incrustats. Provoca algunes transferències de doble cara a costats "
+"alternatius de cada crida al «sane_read()». El valor de l'opció «side» "
+"es pot usar per a determinar la imatge correcta. Aquesta opció només "
+"s'hauria d'usar amb el programari de frontal personalitzat."
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Duplex side"
-msgstr "Duplex side"
+msgstr "Cara per a les dues cares"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-"Tells which side (0=front, 1=back) of a duplex scan the next call to "
-"sane_read will return."
+"Indica a quina cara (0=anvers, 1=revers) en un escaneig de dues cares "
+"retornarà la següent crida al «sane_read()»."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr "Hardware deskew and crop"
+msgstr "Desinclina i escapça per maquinari"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr "Request scanner to rotate and crop pages digitally."
+msgstr ""
+"Sol·licita a l'escàner que giri i escapci les pàgines de forma digital."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr "Software deskew"
+msgstr "Desinclina per programari"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr "Request driver to rotate skewed pages digitally."
+msgstr ""
+"Sol·licita al controlador que giri les pàgines inclinades de forma "
+"digital."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr "Software despeckle diameter"
+msgstr "Diàmetre per eliminar els pics per programari"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
-msgstr "Maximum diameter of lone dots to remove from scan."
+msgstr ""
+"Diàmetre màxim dels punts solitaris per eliminar-los de l'escaneig."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
-msgstr "Software crop"
+msgstr "Escapça per programari"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr "Request driver to remove border from pages digitally."
+msgstr ""
+"Sol·licita al controlador que elimini la vora de les pàgines de forma "
+"digital."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
-msgstr "Halt on Cancel"
+msgstr "Atura en cancel·lar"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, 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."
+"Sol·licita al controlador que aturi l'alimentador de paper en lloc "
+"d'expulsar-lo durant una cancel·lació."
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, no-c-format
msgid "Endorser Options"
-msgstr "Endorser Options"
+msgstr "Opcions per a l'aprovador"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
-msgstr "Controls for endorser unit"
+msgstr "Controls per a la unitat aprovadora"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
-msgstr "Endorser"
+msgstr "Aprovador"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
-msgstr "Enable endorser unit"
+msgstr "Habilita la unitat aprovadora"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
-msgstr "Endorser bits"
+msgstr "Bits de l'aprovació"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr "Determines maximum endorser counter value."
+msgstr "Determina el valor màxim del comptador de l'aprovació."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
-msgstr "Endorser value"
+msgstr "Valor de l'aprovació"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
-msgstr "Initial endorser counter value."
+msgstr "Valor inicial del comptador de l'aprovació."
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
-msgstr "Endorser step"
+msgstr "Pas de l'aprovació"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, 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."
+msgstr ""
+"Canvia el valor del comptador de l'aprovació en aquest tant per a cada "
+"pàgina."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
-msgstr "Endorser Y"
+msgstr "Aprovació Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr "Endorser print offset from top of paper."
+msgstr ""
+"Desplaçament de la impressió de l'aprovador des de la part superior del "
+"paper."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
-msgstr "Endorser font"
+msgstr "Tipus de lletra per a l'aprovador"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
-msgstr "Endorser printing font."
+msgstr "El tipus de lletra amb el que imprimirà l'aprovador."
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser direction"
-msgstr "Endorser direction"
+msgstr "Direcció de l'aprovador"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
-msgstr "Endorser printing direction."
+msgstr "Direcció amb la qual imprimirà l'aprovador."
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
-msgstr "Endorser side"
+msgstr "Costat de l'aprovador"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
-msgstr "Endorser printing side, requires hardware support to change"
+msgstr ""
+"El costat de la impressió de l'aprovador, requereix maquinari per "
+"canviar-lo"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
-msgstr "Endorser string"
+msgstr "Cadena de l'aprovador"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
-"replaced by counter value."
+"Format d'impressió alfanumèric de l'aprovador. %05ud o %08ud al final "
+"serà substituït pel valor del comptador."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
-msgstr "Top edge"
+msgstr "Vora superior"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
-msgstr "Paper is pulled partly into adf"
+msgstr "El paper s'ha retirat parcialment dins de l'ADF"
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
-msgstr "A3 paper"
+msgstr "Paper A3"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
-msgstr "A3 paper detected"
+msgstr "S'ha detectat un paper A3"
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
-msgstr "B4 paper"
+msgstr "Paper B4"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
-msgstr "B4 paper detected"
+msgstr "S'ha detectat un paper B4"
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
-msgstr "A4 paper"
+msgstr "Paper A4"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
-msgstr "A4 paper detected"
+msgstr "S'ha detectat un paper A4"
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
-msgstr "B5 paper"
+msgstr "Paper B5"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
-msgstr "B5 paper detected"
+msgstr "S'ha detectat un paper B5"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
-msgstr "OMR or DF"
+msgstr "OMR o DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
-msgstr "OMR or double feed detected"
+msgstr ""
+"S'ha detectat una OMR (reconeixement de marca òptica) o alimentació de "
+"doble cara"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
-msgstr "Power saving"
+msgstr "Estalvi d'energia"
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
-msgstr "Scanner in power saving mode"
+msgstr "Escàner en el mode estalvi d'energia"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
-msgstr "Manual feed"
+msgstr "Alimentació manual"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
-msgstr "Manual feed selected"
+msgstr "S'ha seleccionat una alimentació manual"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
-msgstr "Function"
+msgstr "Funció"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
-msgstr "Function character on screen"
+msgstr "Funció caràcter a la pantalla"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
-msgstr "Ink low"
+msgstr "Tinta baixa"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
-msgstr "Imprinter ink running low"
+msgstr "La impressora s'està executant amb la tinta baixa"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
-msgstr "Double feed"
+msgstr "Alimentació de doble cara"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
-msgstr "Double feed detected"
+msgstr "S'ha detectat una alimentació de doble cara"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
-msgstr "Error code"
+msgstr "Codi d'error"
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
-msgstr "Hardware error code"
+msgstr "Codi d'error del maquinari"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
-msgstr "Skew angle"
+msgstr "Angle d'inclinació"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
-msgstr "Requires black background for scanning"
+msgstr "Requereix un fons negre per escanejar"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
-msgstr "Ink remaining"
+msgstr "Tinta restant"
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, no-c-format
msgid "Imprinter ink level"
-msgstr "Imprinter ink level"
+msgstr "Nivell de tinta de la impressora"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, no-c-format
msgid "Density"
-msgstr "Density"
+msgstr "Densitat"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
-msgstr "Density dial"
+msgstr "Marcador de la densitat"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, no-c-format
msgid "Duplex switch"
-msgstr "Duplex switch"
+msgstr "Commuta a doble cara"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
-msgstr "Request backend to remove border from pages digitally"
+msgstr ""
+"Sol·licita al dorsal que elimini la vora de les pàgines de forma digital"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
-msgstr "Request driver to discard pages with low numbers of dark pixels"
+msgstr ""
+"Sol·licita al controlador que descarti les pàgines amb un nombre baix de "
+"píxels foscos"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr "Software derotate"
+msgstr "Treu el gir per programari"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
-msgstr "Request driver to detect and correct 90 degree image rotation"
+msgstr ""
+"Sol·licita al controlador que detecti i corregeixi el gir de 90 graus de "
+"la imatge"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
-msgstr "Extras"
+msgstr "Extres"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
-msgstr "Dynamic threshold curve, from light to dark, normally 50-65"
+msgstr ""
+"La corba dinàmica del llindar, des de la llum a la foscor, normalment de "
+"50 a 65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
-msgstr "Disable dynamic lineart"
+msgstr "Inhabilita l'art lineal dinàmic"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-"Disable use of a software adaptive algorithm to generate lineart relying "
-"instead on hardware lineart."
+"Inhabilita l'ús d'un algorisme adaptatiu per programari que genera art "
+"lineal en comptes de per maquinari."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
-msgstr "Disable interpolation"
+msgstr "Inhabilita la interpolació"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-"When using high resolutions where the horizontal resolution is smaller "
-"than the vertical resolution this disables horizontal interpolation."
+"Quan s'usen resolucions d'alta resolució on la resolució horitzontal és "
+"més petita que la vertical, això inhabilitarà la interpolació "
+"horitzontal."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, no-c-format
msgid "Color filter"
-msgstr "Color filter"
+msgstr "Filtre de color"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
-msgstr "When using gray or lineart this option selects the used color."
+msgstr ""
+"Quan s'usa gris o art lineal, aquesta opció seleccionarà el color a usar."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, no-c-format
msgid "Calibration file"
-msgstr "Calibration file"
+msgstr "Fitxer de calibratge"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, no-c-format
msgid "Specify the calibration file to use"
-msgstr "Specify the calibration file to use"
+msgstr "Especifica el fitxer de calibratge a usar"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, no-c-format
msgid "Calibration cache expiration time"
-msgstr "Calibration cache expiration time"
+msgstr "Temps de caducitat per a la memòria cau del calibratge"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
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."
+"Temps (en minuts) abans que expiri el calibratge emmagatzemat a la "
+"memòria cau. Un valor de 0 indicarà que no s'usarà la memòria cau. Un "
+"valor negatiu indicarà que la memòria cau no caducarà mai."
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
-msgstr "Lamp off time"
+msgstr "Temps per apagar la làmpada"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
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."
+"La llum s'apagarà després del temps determinat (en minuts). Un valor de "
+"0 indicarà que no s'apagarà la làmpada."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
-msgstr "Lamp off during scan"
+msgstr "Apaga la làmpada durant l'escaneig"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr "The lamp will be turned off during scan. "
+msgstr "La llum s'apagarà durant l'escaneig."
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
-msgstr "File button"
+msgstr "Botó de fitxer"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
-msgstr "OCR button"
+msgstr "Botó OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
-msgstr "Power button"
+msgstr "Botó d'encesa"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, no-c-format
msgid "Extra button"
-msgstr "Extra button"
+msgstr "Botó extra"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
-msgstr "Need calibration"
+msgstr "Necessita calibratge"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
-msgstr "The scanner needs calibration for the current settings"
+msgstr "L'escàner necessita calibratge per als ajustaments actuals"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
-msgstr "Buttons"
+msgstr "Botons"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
-msgstr "Calibrate"
+msgstr "Calibratge"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
-msgstr "Start calibration using special sheet"
+msgstr "Comença el calibratge emprant un full especial"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
-msgstr "Clear calibration"
+msgstr "Neteja el calibratge"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
-msgstr "Clear calibration cache"
+msgstr "Neteja la memòria cau del calibratge"
+
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibratge tosc"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
-msgstr "Transparency Adapter"
+msgstr "Adaptador de transparència"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
-msgstr "Gray mode color"
+msgstr "Color per al mode gris"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
-msgstr "Selects which scan color is used gray mode (default: green)."
+msgstr ""
+"Selecciona quin color d'escaneig s'usarà en el mode gris (predeterminat: "
+"verd)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
-msgstr "Debugging Options"
+msgstr "Opcions de depuració"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
-msgstr "Automatic warmup"
+msgstr "Escalfament automàtic"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"60 seconds warm-up time."
msgstr ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"60 seconds warm-up time."
+"Escalfa fins que la brillantor de la làmpada sigui constant en comptes "
+"d'insistir en el temps d'escalfament de 60 segons."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
-msgstr "Full scan"
+msgstr "Escaneja completament"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
-"Scan the complete scanning area including calibration strip. Be careful. "
-"Don't select the full height. For testing only."
+"Escaneja tota l'àrea d'escaneig, inclosa la tira de calibratge. Aneu amb "
+"compte. No seleccioneu tota l'alçada. Només per a proves."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
-msgstr "Coarse calibration"
+msgstr "Calibratge tosc"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, 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."
msgstr ""
-"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."
+"Estableix el guany i el desplaçament per a l'escaneig automàtic. Si "
+"aquesta opció està inhabilitada, es proporcionen opcions per a establir "
+"manualment els paràmetres del frontal analògic. Aquesta opció està "
+"habilitada de manera predeterminada. Només per a proves."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
-msgstr "Coarse calibration for first scan only"
+msgstr "Calibratge tosc només per al primer escanejat"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, 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."
msgstr ""
-"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."
+"El calibratge tosc només es farà per al primer escaneig. Funciona amb la "
+"majoria d'escàners i pot estalviar temps d'escaneig. Si la brillantor de "
+"la imatge és diferent amb cada escaneig, inhabiliteu aquesta opció. "
+"Només per a proves."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
-msgstr "Backtrack lines"
+msgstr "Línies a tornar enrere"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3299,86 +3388,89 @@ msgid ""
"the data. Low values cause faster scans but increase the risk of "
"omitting lines."
msgstr ""
-"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."
+"Nombre de línies que el control lliscant de l'escanejat mourà cap enrere "
+"quan succeeixi el fet de tornar enrere. Això passa quan l'escàner "
+"escaneja més de pressa que en el que l'ordinador pot rebre les dades. "
+"Els valors baixos produeixen escaneigs més ràpids, però augmenten el "
+"risc d'omissió de línies."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
-msgstr "Gamma value"
+msgstr "Valor de la gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
-msgstr "Sets the gamma value of all channels."
+msgstr "Estableix el valor de la gamma de tots els canals."
#: backend/hp3500.c:1020
#, no-c-format
msgid "Geometry Group"
-msgstr "Geometry Group"
+msgstr "Grup de geometria"
#: backend/hp3500.c:1073 backend/hp3500.c:1074
#, no-c-format
msgid "Scan Mode Group"
-msgstr "Scan Mode Group"
+msgstr "Grup de mode d'escaneig"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
-msgstr "Slide"
+msgstr "Diapositiva"
#: backend/hp3900_sane.c:1405
#, no-c-format
msgid "Scanner model"
-msgstr "Scanner model"
+msgstr "Model de l'escàner"
#: backend/hp3900_sane.c:1408
#, no-c-format
msgid "Allows one to test device behaviour with other supported models"
-msgstr "Allows one to test device behaviour with other supported models"
+msgstr ""
+"Permet comprovar el comportament del dispositiu amb els altres models "
+"admesos"
#: backend/hp3900_sane.c:1422
#, no-c-format
msgid "Image colours will be inverted"
-msgstr "Image colours will be inverted"
+msgstr "Els colors de la imatge seran invertits"
#: backend/hp3900_sane.c:1436
#, no-c-format
msgid "Disable gamma correction"
-msgstr "Disable gamma correction"
+msgstr "Inhabilita la correcció de la gamma"
#: backend/hp3900_sane.c:1437
#, no-c-format
msgid "Gamma correction will be disabled"
-msgstr "Gamma correction will be disabled"
+msgstr "La correcció de la gamma serà inhabilitada"
#: backend/hp3900_sane.c:1451
#, no-c-format
msgid "Disable white shading correction"
-msgstr "Disable white shading correction"
+msgstr "Inhabilita la correcció de l'ombra blanca"
#: backend/hp3900_sane.c:1453
#, no-c-format
msgid "White shading correction will be disabled"
-msgstr "White shading correction will be disabled"
+msgstr "La correcció de l'ombra blanca serà inhabilitada"
#: backend/hp3900_sane.c:1467
#, no-c-format
msgid "Skip warmup process"
-msgstr "Skip warmup process"
+msgstr "Omet el procés d'escalfament"
#: backend/hp3900_sane.c:1468
#, no-c-format
msgid "Warmup process will be disabled"
-msgstr "Warmup process will be disabled"
+msgstr "El procés d'escalfament serà inhabilitat"
#: backend/hp3900_sane.c:1482
#, no-c-format
msgid "Force real depth"
-msgstr "Force real depth"
+msgstr "Força la profunditat real"
#: backend/hp3900_sane.c:1485
#, no-c-format
@@ -3387,14 +3479,15 @@ msgid ""
"image quality and then converted to the selected depth. This option "
"avoids depth emulation."
msgstr ""
-"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."
+"Si s'ha habilitat la gamma, els escanejos es realitzaran sempre en 16 "
+"bits de profunditat per a millorar la qualitat de la imatge i després "
+"convertir-la a la profunditat seleccionada. Aquesta opció evitarà "
+"l'emulació de la profunditat."
#: backend/hp3900_sane.c:1499
#, no-c-format
msgid "Emulate Grayscale"
-msgstr "Emulate Grayscale"
+msgstr "Emula l'escala de grisos"
#: backend/hp3900_sane.c:1502
#, no-c-format
@@ -3403,14 +3496,14 @@ msgid ""
"grayscale by software. This may improve image quality in some "
"circumstances."
msgstr ""
-"If enabled, image will be scanned in color mode and then converted to "
-"grayscale by software. This may improve image quality in some "
-"circumstances."
+"Si s'habilita, la imatge s'escanejarà en el mode de color i després es "
+"convertirà per programari a una escala de grisos. Això pot millorar la "
+"qualitat de la imatge en algunes circumstàncies."
#: backend/hp3900_sane.c:1516
#, no-c-format
msgid "Save debugging images"
-msgstr "Save debugging images"
+msgstr "Desa imatges per a la depuració"
#: backend/hp3900_sane.c:1519
#, no-c-format
@@ -3418,351 +3511,440 @@ msgid ""
"If enabled, some images involved in scanner processing are saved to "
"analyze them."
msgstr ""
-"If enabled, some images involved in scanner processing are saved to "
-"analyze them."
+"Si s'habilita, es desaran algunes imatges relacionades amb el "
+"processament de l'escàner per analitzar-les."
#: backend/hp3900_sane.c:1533
#, no-c-format
msgid "Reset chipset"
-msgstr "Reset chipset"
+msgstr "Reinicia el joc de xips"
#: backend/hp3900_sane.c:1534
#, no-c-format
msgid "Resets chipset data"
-msgstr "Resets chipset data"
+msgstr "Reinicia les dades del joc de xips"
#: backend/hp3900_sane.c:1547
#, no-c-format
msgid "Information"
-msgstr "Information"
+msgstr "Informació"
#: backend/hp3900_sane.c:1560
#, no-c-format
msgid "Chipset name"
-msgstr "Chipset name"
+msgstr "Nom del joc de xips"
#: backend/hp3900_sane.c:1561
#, no-c-format
msgid "Shows chipset name used in device."
-msgstr "Shows chipset name used in device."
+msgstr "Mostra el nom del joc de xips usat al dispositiu."
#: backend/hp3900_sane.c:1565
#, no-c-format
msgid "Unknown"
-msgstr "Unknown"
+msgstr "Desconegut"
#: backend/hp3900_sane.c:1571
#, no-c-format
msgid "Chipset ID"
-msgstr "Chipset ID"
+msgstr "ID del joc de xips"
#: backend/hp3900_sane.c:1572
#, no-c-format
msgid "Shows the chipset ID"
-msgstr "Shows the chipset ID"
+msgstr "Mostra l'ID del joc de xips"
#: backend/hp3900_sane.c:1582
#, no-c-format
msgid "Scan counter"
-msgstr "Scan counter"
+msgstr "Comptador d'escaneigs"
#: backend/hp3900_sane.c:1584
#, no-c-format
msgid "Shows the number of scans made by scanner"
-msgstr "Shows the number of scans made by scanner"
+msgstr "Mostra el nombre d'escaneigs realitzats per l'escàner"
#: backend/hp3900_sane.c:1594
#, no-c-format
msgid "Update information"
-msgstr "Update information"
+msgstr "Actualitza la informació"
#: backend/hp3900_sane.c:1595
#, no-c-format
msgid "Updates information about device"
-msgstr "Updates information about device"
+msgstr "Actualitza la informació quant al dispositiu"
#: backend/hp3900_sane.c:1635
#, no-c-format
msgid "This option reflects a front panel scanner button"
-msgstr "This option reflects a front panel scanner button"
+msgstr "Aquesta opció reflecteix un botó d'escàner al panell frontal"
#: backend/hp5400_sane.c:313 backend/niash.c:678
#, no-c-format
msgid "Image"
-msgstr "Image"
+msgstr "Imatge"
#: backend/hp5400_sane.c:352 backend/niash.c:709
#, no-c-format
msgid "Miscellaneous"
-msgstr "Miscellaneous"
+msgstr "Miscel·lània"
#: backend/hp5400_sane.c:358
#, no-c-format
msgid "offset X"
-msgstr "offset X"
+msgstr "Desplaçament X"
#: backend/hp5400_sane.c:359
#, no-c-format
msgid "Hardware internal X position of the scanning area."
-msgstr "Hardware internal X position of the scanning area."
+msgstr "Posició X interna al maquinari de l'àrea d'escaneig."
#: backend/hp5400_sane.c:368
#, no-c-format
msgid "offset Y"
-msgstr "offset Y"
+msgstr "Desplaçament Y"
#: backend/hp5400_sane.c:369
#, no-c-format
msgid "Hardware internal Y position of the scanning area."
-msgstr "Hardware internal Y position of the scanning area."
+msgstr "Posició Y interna al maquinari de l'àrea d'escaneig."
#: backend/hp5400_sane.c:381 backend/niash.c:716
#, no-c-format
msgid "Lamp status"
-msgstr "Lamp status"
+msgstr "Estat de la làmpada"
#: backend/hp5400_sane.c:382 backend/niash.c:717
#, no-c-format
msgid "Switches the lamp on or off."
-msgstr "Switches the lamp on or off."
+msgstr "Apaga o encén la llum."
#: backend/hp5400_sane.c:393 backend/niash.c:727
#, no-c-format
msgid "Calibrates for black and white level."
-msgstr "Calibrates for black and white level."
+msgstr "Calibra per al nivell de blanc i negre."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+# Nota: https://en.wikipedia.org/wiki/Tissue_microarray
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
-msgstr "TMA Slides"
+msgstr "Costats de la TMA"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
-msgstr "TMA Negatives"
+msgstr "TMA negatius"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Color (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
-msgstr "Extend lamp timeout"
+msgstr "Amplia el temps d'espera de la làmpada"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
-msgstr "Extends lamp timeout (from 15 minutes to 1 hour)"
+msgstr "Amplia el temps d'espera de la làmpada (de 15 minuts a 1 hora)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
-msgstr "Wait for button"
+msgstr "Espera pel botó"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
-msgstr "Waits for button before scanning"
+msgstr "Espera pel botó abans d'escanejar"
+
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Darrer botó premut"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Comptador d'escaneigs"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:122
+#, fuzzy, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Color per a l'art lineal"
+
+#: backend/hp5590.c:125
+#, fuzzy, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Oculta el píxel del final de pàgina"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+"Oculta els píxels indicadors del final de pàgina i se sobreescriuen amb "
+"els píxels veïns"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+"Mode d'ompliment del final de les línies després d'obtenir les dades "
+"d'escaneig (ADF)"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 = dades d'escaneig sense processar, last = repeteix l'última línia "
+"escanejada, raster = ràster en b/n, white = color blanc, black = color "
+"negre, color = valor del color RGB o gris"
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr "Valor del color RGB o gris per al mode ompliment del «color»"
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+"Valor del «color» per al mode d'ompliment al final de les línies. Color "
+"RGB com a valor r*65536+256*g+b o gris (predeterminat=violeta o gris)"
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
-msgstr "Advanced Options"
+msgstr "Opcions avançades"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
-msgstr "Coarse"
+msgstr "Tosc"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
-msgstr "Fine"
+msgstr "Fina"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
-msgstr "Custom"
+msgstr "A mida"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Auto"
-#: backend/hp-option.c:3088
+# Nota: https://ca.wikipedia.org/wiki/NTSC
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
-msgstr "NTSC RGB"
+msgstr "RGB del NTSC"
-#: backend/hp-option.c:3089
+# Nota: https://support.hp.com/gb-en/document/c01275842
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
-msgstr "XPA RGB"
+msgstr "RGB amb el XPA"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
-msgstr "Pass-through"
+msgstr "Passa a través"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
-msgstr "NTSC Gray"
+msgstr "Gris del NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
-msgstr "XPA Gray"
+msgstr "Gris amb el XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
-msgstr "Slow"
+msgstr "Lent"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
-msgstr "Fast"
+msgstr "Ràpid"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
-msgstr "Extra Fast"
+msgstr "Extraràpid"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
-msgstr "2-pixel"
+msgstr "2 píxels"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
-msgstr "4-pixel"
+msgstr "4 píxels"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
-msgstr "8-pixel"
+msgstr "8 píxels"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
-msgstr "Print"
+msgstr "Imprimeix"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
-msgstr "Film-strip"
+msgstr "Tira de pel·lícules"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
-msgstr "Conditional"
+msgstr "Condicional"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
-msgstr "Experiment"
+msgstr "Experimental"
#: backend/hp-option.h:60
#, no-c-format
msgid "Sharpening"
-msgstr "Sharpening"
+msgstr "Aguditzant"
#: backend/hp-option.h:61
#, no-c-format
msgid "Set sharpening value."
-msgstr "Set sharpening value."
+msgstr "Estableix el valor de l'agudització."
#: backend/hp-option.h:66
#, no-c-format
msgid "Auto Threshold"
-msgstr "Auto Threshold"
+msgstr "Llindar automàtic"
#: backend/hp-option.h:68
#, no-c-format
msgid "Enable automatic determination of threshold for line-art scans."
-msgstr "Enable automatic determination of threshold for line-art scans."
+msgstr ""
+"Habilita la determinació automàtica del llindar pels escaneigs amb art "
+"lineal."
#: backend/hp-option.h:74
#, no-c-format
msgid "Select smoothing filter."
-msgstr "Select smoothing filter."
+msgstr "Selecciona el filtre de suavitzat."
#: backend/hp-option.h:79
#, no-c-format
msgid "Unload media after scan"
-msgstr "Unload media after scan"
+msgstr "Descarrega el suport després de l'escaneig"
#: backend/hp-option.h:80
#, no-c-format
msgid "Unloads the media after a scan."
-msgstr "Unloads the media after a scan."
+msgstr "Descarrega el suport després d'un escaneig."
#: backend/hp-option.h:85
#, no-c-format
msgid "Change document"
-msgstr "Change document"
+msgstr "Canvia el document"
#: backend/hp-option.h:86
#, no-c-format
msgid "Change Document."
-msgstr "Change Document."
+msgstr "Canvia el document."
#: backend/hp-option.h:91
#, no-c-format
msgid "Unload"
-msgstr "Unload"
+msgstr "Descarrega"
#: backend/hp-option.h:92
#, no-c-format
msgid "Unload Document."
-msgstr "Unload Document."
+msgstr "Descarrega el document."
#: backend/hp-option.h:98
#, no-c-format
msgid "Start calibration process."
-msgstr "Start calibration process."
+msgstr "Inicia el procés de calibratge."
#: backend/hp-option.h:103
#, no-c-format
msgid "Media"
-msgstr "Media"
+msgstr "Suport"
#: backend/hp-option.h:104
#, no-c-format
msgid "Set type of media."
-msgstr "Set type of media."
+msgstr "Estableix el tipus de suport."
#: backend/hp-option.h:109
#, no-c-format
msgid "Exposure time"
-msgstr "Exposure time"
+msgstr "Temps d'exposició"
#: backend/hp-option.h:111
#, no-c-format
@@ -3772,175 +3954,171 @@ msgid ""
"negative film. For dark (underexposed) images you can increase this "
"value."
msgstr ""
-"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."
+"Un temps d'exposició més llarg permet que l'escàner recopili més llum. "
+"L'ús aconsellat és el 175% per a impressions, el 150% per a diapositives "
+"normals i «Negatiu» per a pel·lícules en negatiu. Per a imatges fosques "
+"(sota exposades), podeu augmentar aquest valor."
#: backend/hp-option.h:119 backend/hp-option.h:126
#, no-c-format
msgid "Color Matrix"
-msgstr "Color Matrix"
+msgstr "Matriu de color"
#: backend/hp-option.h:121
#, no-c-format
msgid "Set the scanners color matrix."
-msgstr "Set the scanners color matrix."
+msgstr "Estableix la matriu de color dels escàners."
#: backend/hp-option.h:127
#, no-c-format
msgid "Custom color matrix."
-msgstr "Custom color matrix."
+msgstr "Matriu de color a mida."
#: backend/hp-option.h:132
#, no-c-format
msgid "Mono Color Matrix"
-msgstr "Mono Color Matrix"
+msgstr "Matriu de color monocrom"
#: backend/hp-option.h:133
#, no-c-format
msgid "Custom color matrix for grayscale scans."
-msgstr "Custom color matrix for grayscale scans."
+msgstr "Matriu de color a mida pels escaneigs en escala de grisos."
#: backend/hp-option.h:138
#, no-c-format
msgid "Mirror horizontal"
-msgstr "Mirror horizontal"
+msgstr "Emmiralla horitzontalment"
#: backend/hp-option.h:139
#, no-c-format
msgid "Mirror image horizontally."
-msgstr "Mirror image horizontally."
+msgstr "Emmiralla horitzontalment la imatge."
#: backend/hp-option.h:144
#, no-c-format
msgid "Mirror vertical"
-msgstr "Mirror vertical"
+msgstr "Emmiralla verticalment"
#: backend/hp-option.h:145
#, no-c-format
msgid "Mirror image vertically."
-msgstr "Mirror image vertically."
+msgstr "Emmiralla verticalment la imatge."
#: backend/hp-option.h:150
#, no-c-format
msgid "Update options"
-msgstr "Update options"
+msgstr "Opcions per a l'actualització"
#: backend/hp-option.h:151
#, no-c-format
msgid "Update options."
-msgstr "Update options."
+msgstr "Opcions per a l'actualització."
#: backend/hp-option.h:156
#, no-c-format
msgid "8 bit output"
-msgstr "8 bit output"
+msgstr "Sortida de 8 bits"
#: backend/hp-option.h:158
#, no-c-format
msgid "Use bit depth greater eight internally, but output only eight bits."
msgstr ""
-"Use bit depth greater eight internally, but output only eight bits."
+"Usa internament una profunditat de bits més gran que vuit, però a la "
+"sortida usa només vuit bits."
#: backend/hp-option.h:164
#, no-c-format
msgid "Front button wait"
-msgstr "Front button wait"
+msgstr "Espera al botó del frontal"
#: backend/hp-option.h:165
#, no-c-format
msgid "Wait to scan for front-panel button push."
-msgstr "Wait to scan for front-panel button push."
+msgstr "Espera per escanejar que es premi el botó del panell frontal."
#: backend/hp-option.h:172
#, no-c-format
msgid "Shut off lamp"
-msgstr "Shut off lamp"
+msgstr "Apaga la làmpada"
#: backend/hp-option.h:173
#, no-c-format
msgid "Shut off scanner lamp."
-msgstr "Shut off scanner lamp."
+msgstr "Apaga la llum de l'escàner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
-msgstr "Paper size"
+msgstr "Mida del paper"
#: backend/kvs1025.h:52 backend/kvs1025.h:67 backend/matsushita.h:220
#: backend/matsushita.h:227
#, no-c-format
msgid "Automatic separation"
-msgstr "Automatic separation"
+msgstr "Separació automàtica"
-#: 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:531
#, no-c-format
msgid "Landscape"
-msgstr "Landscape"
+msgstr "Apaïsat"
#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
#, no-c-format
msgid "Inverse Image"
-msgstr "Inverse Image"
+msgstr "Imatge inversa"
#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
#, no-c-format
msgid "Long paper mode"
-msgstr "Long paper mode"
+msgstr "Mode paper llarg"
-#: 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:393
#, no-c-format
msgid "Length control mode"
-msgstr "Length control mode"
+msgstr "Mode control de la longitud"
-#: 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:416
#, no-c-format
msgid "Manual feed mode"
-msgstr "Manual feed mode"
+msgstr "Mode alimentació manual"
-#: 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:428
#, no-c-format
msgid "Manual feed timeout"
-msgstr "Manual feed timeout"
+msgstr "Temps d'espera per a l'alimentació manual"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
-msgstr "Double feed detection"
+msgstr "Detecció de l'alimentació de doble cara"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
-msgstr "Enable Duplex (Dual-Sided) Scanning"
+msgstr "Habilita l'escaneig a doble cara"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
-msgstr "Physical size of the paper in the ADF"
+msgstr "Grandària física del paper a l'ADF"
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr "bw"
+msgstr "nb"
#: backend/kvs1025_opt.c:40
#, no-c-format
msgid "halftone"
-msgstr "halftone"
+msgstr "semi to"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr "gray"
+msgstr "gris"
#: backend/kvs1025_opt.c:42
#, no-c-format
@@ -3951,7 +4129,7 @@ msgstr "color"
#: backend/kvs40xx_opt.c:1047
#, no-c-format
msgid "adf"
-msgstr "adf"
+msgstr "ADF"
#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
#: backend/kvs40xx_opt.c:109
@@ -3963,50 +4141,50 @@ msgstr "fb"
#: backend/kvs40xx_opt.c:101
#, no-c-format
msgid "single"
-msgstr "single"
+msgstr "individual"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
#: backend/kvs40xx.c:704 backend/kvs40xx.c:722 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
#, no-c-format
msgid "continuous"
-msgstr "continuous"
+msgstr "continu"
#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
#: backend/kvs40xx_opt.c:115
#, no-c-format
msgid "off"
-msgstr "off"
+msgstr "desactivat"
#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
#: backend/kvs40xx_opt.c:116
#, no-c-format
msgid "wait_doc"
-msgstr "wait_doc"
+msgstr "espera_doc"
#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
#: backend/kvs40xx_opt.c:118
#, no-c-format
msgid "wait_key"
-msgstr "wait_key"
+msgstr "espera_clau"
#: 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 "user_def"
+msgstr "definit_usuari"
#: 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 "business_card"
+msgstr "tarjeta_visita"
#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
#: backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Check"
-msgstr "Check"
+msgstr "Comprova"
#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75
#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
@@ -4038,299 +4216,308 @@ msgstr "B6"
msgid "Legal"
msgstr "Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr "bayer_64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr "bayer_16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
-msgstr "halftone_32"
+msgstr "semi_to_32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
-msgstr "halftone_64"
+msgstr "semi_to_64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
-msgstr "diffusion"
+msgstr "difusió"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr "normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
-msgstr "light"
+msgstr "llum"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr "dark"
+msgstr "fosc"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
-msgstr "From scanner"
+msgstr "Des de l'escàner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
-msgstr "From paper"
+msgstr "Des del paper"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
-msgstr "default"
+msgstr "Predeterminat"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
-msgstr "smooth"
+msgstr "Suavitzat"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
-msgstr "none"
+msgstr "Cap"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
-msgstr "low"
+msgstr "Baix"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
-msgstr "medium"
+msgstr "Mitjà"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
-msgstr "high"
+msgstr "Alt"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr "crt"
+msgstr "CRT"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
-msgstr "linier"
+msgstr "Lineal"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
-msgstr "red"
+msgstr "Vermell"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
-msgstr "green"
+msgstr "Verd"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
-msgstr "blue"
+msgstr "Blau"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
-msgstr "Sets the scan source"
+msgstr "Estableix la font de l'escaneig"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
-msgstr "Feeder mode"
+msgstr "Mode alimentador"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
-msgstr "Sets the feeding mode"
+msgstr "Estableix el mode alimentador"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr "Enable/Disable long paper mode"
+msgstr "Habilita/Inhabilita el mode paper llarg"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr "Enable/Disable length control mode"
+msgstr "Habilita/Inhabilita el mode control de la longitud"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
-msgstr "Sets the manual feed mode"
+msgstr "Estableix el mode alimentació manual"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
-msgstr "Sets the manual feed timeout in seconds"
+msgstr ""
+"Estableix en segons el temps d'espera per al mode alimentació manual"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Enable/Disable double feed detection"
+msgstr "Habilita/Inhabilita la detecció de l'alimentació de doble cara"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
-msgstr "fit-to-page"
+msgstr "Ajusta a la pàgina"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
-msgstr "Fit to page"
+msgstr "Ajusta a la pàgina"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner shrinks image to fit scanned page"
+msgstr ""
+"L'escàner encongirà la imatge per ajustar-la a la pàgina escanejada"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 "Set paper position : true for landscape, false for portrait"
+msgstr ""
+"Estableix la posició del paper: cert per a apaïsat, fals per a retrat"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
-msgstr "Automatic threshold"
+msgstr "Llindar automàtic"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
msgstr ""
-"Automatically sets brightness, contrast, white level, gamma, noise "
-"reduction and image emphasis"
+"Estableix automàticament la brillantor, el contrast, el nivell de blanc, "
+"la gamma, la reducció del soroll i l'èmfasi de la imatge"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
-msgstr "Noise reduction"
+msgstr "Reducció del soroll"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
-msgstr "Reduce the isolated dot noise"
+msgstr "Redueix el soroll dels punts aïllats"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
-msgstr "Image emphasis"
+msgstr "Èmfasis de la imatge"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
-msgstr "Sets the image emphasis"
+msgstr "Estableix l'èmfasi de la imatge"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
-msgstr "Lamp color"
+msgstr "Color de la llum"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
-msgstr "Sets the lamp color (color dropout)"
+msgstr "Estableix el color de la llum (descarta el color)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr "Inverse image in B/W or halftone mode"
+msgstr "Imatge inversa en el mode B/N o semi to"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr "Mirror image (left/right flip)"
+msgstr "Reflecteix la imatge (volteja a l'esquerra/dreta)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr "jpeg compression"
+msgstr "Compressió del JPEG"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
-msgstr "JPEG Image Compression with Q parameter, ‘0’ - no compression"
+msgstr ""
+"Compressió de la imatge JPEG amb el paràmetre Q, «0»: sense compressió"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr "Rotate image clockwise"
+msgstr "Gira la imatge en sentit horari"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr "Request driver to rotate pages by a fixed amount"
+msgstr ""
+"Sol·licita al controlador que giri les pàgines per una quantitat fixa"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr "Request driver to rotate skewed pages digitally"
+msgstr ""
+"Sol·licita al controlador que giri les pàgines inclinades de forma "
+"digital"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
-msgstr "Maximum diameter of lone dots to remove from scan"
+msgstr "Diàmetre màxim dels punts solitaris per eliminar-los de l'escaneig"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr "Software automatic cropping"
+msgstr "Escapçat automàtic per programari"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr "Request driver to remove border from pages digitally"
+msgstr ""
+"Sol·licita al controlador que elimini la vora de les pàgines de forma "
+"digital"
#: backend/kvs20xx_opt.c:233 backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4338,20 +4525,20 @@ msgid ""
"Length Control Mode is a mode that the scanner reads up to the shorter "
"length of actual paper or logical document length."
msgstr ""
-"Length Control Mode is a mode that the scanner reads up to the shorter "
-"length of actual paper or logical document length."
+"El mode control de la longitud és un mode on l'escàner llegirà fins a la "
+"longitud més curta del paper real o la longitud lògica del document."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
#: backend/microtek2.h:640
#, no-c-format
msgid "Gamma correction"
-msgstr "Gamma correction"
+msgstr "Correcció de la gamma"
#: backend/kvs40xx_opt.c:117
#, no-c-format
msgid "wait_doc_hopper_up"
-msgstr "wait_doc_hopper_up"
+msgstr "espera_la_tolva_de_documents"
#: backend/kvs40xx_opt.c:127
#, no-c-format
@@ -4361,7 +4548,7 @@ msgstr "A3"
#: backend/kvs40xx_opt.c:132
#, no-c-format
msgid "Double letter 11x17 in"
-msgstr "Double letter 11x17 in"
+msgstr "Doble lletra 11x17 a"
#: backend/kvs40xx_opt.c:133
#, no-c-format
@@ -4371,32 +4558,32 @@ msgstr "B4"
#: backend/kvs40xx_opt.c:231
#, no-c-format
msgid "High sensivity"
-msgstr "High sensivity"
+msgstr "Alta sensibilitat"
#: backend/kvs40xx_opt.c:232
#, no-c-format
msgid "Low sensivity"
-msgstr "Low sensivity"
+msgstr "Baixa sensibilitat"
#: backend/kvs40xx_opt.c:243
#, no-c-format
msgid "err_diffusion"
-msgstr "err_diffusion"
+msgstr "difusió_errònia"
#: backend/kvs40xx_opt.c:249
#, no-c-format
msgid "No detection"
-msgstr "No detection"
+msgstr "Sense detecció"
#: backend/kvs40xx_opt.c:250
#, no-c-format
msgid "Normal mode"
-msgstr "Normal mode"
+msgstr "Mode normal"
#: backend/kvs40xx_opt.c:251
#, no-c-format
msgid "Enhanced mode"
-msgstr "Enhanced mode"
+msgstr "Mode millorat"
#: backend/kvs40xx_opt.c:405
#, no-c-format
@@ -4404,228 +4591,231 @@ 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."
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."
+"El mode paper llarg és un mode en el qual l'escàner llegeix la imatge "
+"després de dividir el paper llarg per la longitud que s'estableix a "
+"l'opció Mida del document."
#: backend/kvs40xx_opt.c:449
#, no-c-format
msgid "Double feed detector sensitivity"
-msgstr "Double feed detector sensitivity"
+msgstr "Sensibilitat del detector de doble alimentació"
#: backend/kvs40xx_opt.c:450
#, no-c-format
msgid "Set the double feed detector sensitivity"
-msgstr "Set the double feed detector sensitivity"
+msgstr "Estableix la sensibilitat del detector de doble alimentació"
#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
#, no-c-format
msgid "Do not stop after double feed detection"
-msgstr "Do not stop after double feed detection"
+msgstr "No aturis després de la detecció de doble alimentació"
#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
#, no-c-format
msgid "Ignore left double feed sensor"
-msgstr "Ignore left double feed sensor"
+msgstr "Ignora el sensor esquerre de doble alimentació"
#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
#, no-c-format
msgid "Ignore center double feed sensor"
-msgstr "Ignore center double feed sensor"
+msgstr "Ignora el sensor central de doble alimentació"
#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
#, no-c-format
msgid "Ignore right double feed sensor"
-msgstr "Ignore right double feed sensor"
+msgstr "Ignora el sensor dret de doble alimentació"
#: backend/kvs40xx_opt.c:642
#, no-c-format
msgid "Automatic threshold mode"
-msgstr "Automatic threshold mode"
+msgstr "Mode llindar automàtic"
#: backend/kvs40xx_opt.c:643
#, no-c-format
msgid "Sets the automatic threshold mode"
-msgstr "Sets the automatic threshold mode"
+msgstr "Estableix el mode llindar automàtic"
#: backend/kvs40xx_opt.c:694
#, no-c-format
msgid "Inverse image in B/W mode"
-msgstr "Inverse image in B/W mode"
+msgstr "Imatge inversa en el mode B/N"
#: backend/kvs40xx_opt.c:715
#, no-c-format
msgid "JPEG compression"
-msgstr "JPEG compression"
+msgstr "Compressió del JPEG"
#: backend/kvs40xx_opt.c:718
#, no-c-format
msgid "JPEG compression (yours application must be able to uncompress)"
-msgstr "JPEG compression (yours application must be able to uncompress)"
+msgstr ""
+"Compressió del JPEG (l'aplicació vostra l'haurà de poder descomprimir)"
#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
#, no-c-format
msgid "Detect stapled document"
-msgstr "Detect stapled document"
+msgstr "Detecta un document grapat"
#: backend/kvs40xx_opt.c:776
#, no-c-format
msgid "chroma of red"
-msgstr "chroma of red"
+msgstr "Croma del color vermell"
#: backend/kvs40xx_opt.c:777
#, no-c-format
msgid "Set chroma of red"
-msgstr "Set chroma of red"
+msgstr "Estableix la croma del color vermell"
#: backend/kvs40xx_opt.c:787
#, no-c-format
msgid "chroma of blue"
-msgstr "chroma of blue"
+msgstr "Croma del color blau"
#: backend/kvs40xx_opt.c:788
#, no-c-format
msgid "Set chroma of blue"
-msgstr "Set chroma of blue"
+msgstr "Estableix la croma del color blau"
#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
#, no-c-format
msgid "Skew adjustment"
-msgstr "Skew adjustment"
+msgstr "Ajustament de la inclinació"
#: backend/kvs40xx_opt.c:808
#, no-c-format
msgid "Stop scanner when a paper have been skewed"
-msgstr "Stop scanner when a paper have been skewed"
+msgstr "Atura l'escàner quan un paper estigui inclinat"
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will be stop when a paper have been skewed"
-msgstr "Scanner will be stop when a paper have been skewed"
+msgstr "S'aturarà l'escàner quan un paper estigui inclinat"
#: backend/kvs40xx_opt.c:816
#, no-c-format
msgid "Crop actual image area"
-msgstr "Crop actual image area"
+msgstr "Escapça una àrea de la imatge real"
#: backend/kvs40xx_opt.c:817
#, no-c-format
msgid "Scanner automatically detect image area and crop it"
-msgstr "Scanner automatically detect image area and crop it"
+msgstr ""
+"L'escàner detectarà automàticament l'àrea de la imatge i l'escapçarà"
#: backend/kvs40xx_opt.c:827
#, no-c-format
msgid "It is right and left reversing"
-msgstr "It is right and left reversing"
+msgstr "Torna a la dreta i a l'esquerra"
#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
#, no-c-format
msgid "Addition of space in top position"
-msgstr "Addition of space in top position"
+msgstr "Afegeix un espai a la posició superior"
#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
#, no-c-format
msgid "Addition of space in bottom position"
-msgstr "Addition of space in bottom position"
+msgstr "Afegeix un espai a la posició inferior"
#: backend/leo.c:110
#, no-c-format
msgid "Diamond"
-msgstr "Diamond"
+msgstr "Diamant"
#: backend/leo.c:111
#, no-c-format
msgid "8x8 Coarse Fatting"
-msgstr "8x8 Coarse Fatting"
+msgstr "Engreix gruixut 8x8"
#: backend/leo.c:112
#, no-c-format
msgid "8x8 Fine Fatting"
-msgstr "8x8 Fine Fatting"
+msgstr "Engreix fi 8x8"
#: backend/leo.c:113
#, no-c-format
msgid "8x8 Bayer"
-msgstr "8x8 Bayer"
+msgstr "Bayer 8x8"
#: backend/leo.c:114
#, no-c-format
msgid "8x8 Vertical Line"
-msgstr "8x8 Vertical Line"
+msgstr "Línia vertical 8x8"
#: backend/lexmark.c:273 backend/umax_pp.c:715
#, no-c-format
msgid "Gain"
-msgstr "Gain"
+msgstr "Guany"
#: backend/lexmark.c:274 backend/umax_pp.c:716
#, no-c-format
msgid "Color channels gain settings"
-msgstr "Color channels gain settings"
+msgstr "Ajustaments del guany per als canals de color"
#: backend/lexmark.c:283 backend/umax_pp.c:723
#, no-c-format
msgid "Gray gain"
-msgstr "Gray gain"
+msgstr "Guany del gris"
#: backend/lexmark.c:284 backend/umax_pp.c:724
#, no-c-format
msgid "Sets gray channel gain"
-msgstr "Sets gray channel gain"
+msgstr "Estableix el guany del canal gris"
#: backend/lexmark.c:297 backend/plustek.c:1001 backend/umax_pp.c:735
#, no-c-format
msgid "Red gain"
-msgstr "Red gain"
+msgstr "Guany del vermell"
#: backend/lexmark.c:298 backend/umax_pp.c:736
#, no-c-format
msgid "Sets red channel gain"
-msgstr "Sets red channel gain"
+msgstr "Estableix el guany del canal vermell"
#: backend/lexmark.c:311 backend/plustek.c:1017 backend/umax_pp.c:747
#, no-c-format
msgid "Green gain"
-msgstr "Green gain"
+msgstr "Guany del verd"
#: backend/lexmark.c:312 backend/umax_pp.c:748
#, no-c-format
msgid "Sets green channel gain"
-msgstr "Sets green channel gain"
+msgstr "Estableix el guany del canal verd"
#: backend/lexmark.c:325 backend/plustek.c:1033 backend/umax_pp.c:759
#, no-c-format
msgid "Blue gain"
-msgstr "Blue gain"
+msgstr "Guany del blau"
#: backend/lexmark.c:326 backend/umax_pp.c:760
#, no-c-format
msgid "Sets blue channel gain"
-msgstr "Sets blue channel gain"
+msgstr "Estableix el guany del canal blau"
#: backend/matsushita.c:139
#, no-c-format
msgid "Bayer Dither 16"
-msgstr "Bayer Dither 16"
+msgstr "Trama 16 de Bayer"
#: backend/matsushita.c:140
#, no-c-format
msgid "Bayer Dither 64"
-msgstr "Bayer Dither 64"
+msgstr "Trama 64 de Bayer"
#: backend/matsushita.c:141
#, no-c-format
msgid "Halftone Dot 32"
-msgstr "Halftone Dot 32"
+msgstr "Punt 32 de semi to"
#: backend/matsushita.c:142
#, no-c-format
msgid "Halftone Dot 64"
-msgstr "Halftone Dot 64"
+msgstr "Punt 64 de semi to"
#: backend/matsushita.c:143
#, no-c-format
msgid "Error Diffusion"
-msgstr "Error Diffusion"
+msgstr "Difusió dels errors"
#: backend/matsushita.c:160
#, no-c-format
@@ -4645,28 +4835,28 @@ msgstr "Mode 3"
#: backend/matsushita.c:176
#, no-c-format
msgid "From white stick"
-msgstr "From white stick"
+msgstr "Des del pal blanc"
#: backend/matsushita.c:212
#, no-c-format
msgid "Smooth"
-msgstr "Smooth"
+msgstr "Suavitzat"
#: backend/matsushita.c:214 backend/matsushita.c:229
#, no-c-format
msgid "Low"
-msgstr "Low"
+msgstr "Baix"
#: backend/matsushita.c:215 backend/matsushita.c:230
#: backend/matsushita.c:1296
#, no-c-format
msgid "Medium"
-msgstr "Medium"
+msgstr "Mitjana"
#: backend/matsushita.c:216 backend/matsushita.c:231
#, no-c-format
msgid "High"
-msgstr "High"
+msgstr "Alt"
#: backend/matsushita.c:245
#, no-c-format
@@ -4676,109 +4866,112 @@ msgstr "CRT"
#: backend/matsushita.c:257
#, no-c-format
msgid "One page"
-msgstr "One page"
+msgstr "Una pàgina"
#: backend/matsushita.c:258
#, no-c-format
msgid "All pages"
-msgstr "All pages"
+msgstr "Totes les pàgines"
#: backend/matsushita.c:1034 backend/plustek.c:1333
#, no-c-format
msgid "sheetfed scanner"
-msgstr "sheetfed scanner"
+msgstr "escàner alimentat per fulls"
#: backend/matsushita.h:209
#, no-c-format
msgid "Grayscale 4 bits"
-msgstr "Grayscale 4 bits"
+msgstr "Escala de grisos en 4 bits"
#: backend/matsushita.h:210
#, no-c-format
msgid "Grayscale 8 bits"
-msgstr "Grayscale 8 bits"
+msgstr "Escala de grisos en 8 bits"
#: backend/microtek2.h:601
#, no-c-format
msgid "Shadow, midtone, highlight, exposure time"
-msgstr "Shadow, midtone, highlight, exposure time"
+msgstr "Ombra, semi to, llum intensa, temps d'exposició"
#: backend/microtek2.h:603
#, no-c-format
msgid "Special options"
-msgstr "Special options"
+msgstr "Opcions especials"
#: backend/microtek2.h:604
#, no-c-format
msgid "Color balance"
-msgstr "Color balance"
+msgstr "Equilibri de color"
#: backend/microtek2.h:607
#, no-c-format
msgid "Disable backtracking"
-msgstr "Disable backtracking"
+msgstr "Inhabilita el retrocés"
#: backend/microtek2.h:608
#, no-c-format
msgid "If checked the scanner does not perform backtracking"
-msgstr "If checked the scanner does not perform backtracking"
+msgstr "Si està marcada, l'escàner no realitzarà cap retrocés"
#: backend/microtek2.h:612
#, no-c-format
msgid "Toggle lamp of flatbed"
-msgstr "Toggle lamp of flatbed"
+msgstr "Commuta la llum de la superfície plana"
#: backend/microtek2.h:613
#, no-c-format
msgid "Toggles the lamp of the flatbed"
-msgstr "Toggles the lamp of the flatbed"
+msgstr "Commuta la llum de la superfície plana"
#: backend/microtek2.h:616
#, no-c-format
msgid "Calibration by backend"
-msgstr "Calibration by backend"
+msgstr "Calibratge fet pel dorsal"
#: backend/microtek2.h:617
#, no-c-format
msgid ""
"If checked the color calibration before a scan is done by the backend"
msgstr ""
-"If checked the color calibration before a scan is done by the backend"
+"Si està marcada, el dorsal realitzarà el calibratge de color abans "
+"d'escanejar"
#: backend/microtek2.h:621
#, no-c-format
msgid "Use the lightlid-35mm adapter"
-msgstr "Use the lightlid-35mm adapter"
+msgstr "Usa l'adaptador «lightlid-35mm»"
#: backend/microtek2.h:622
#, no-c-format
msgid "This option turns off the lamp of the flatbed during a scan"
-msgstr "This option turns off the lamp of the flatbed during a scan"
+msgstr ""
+"Aquesta opció desactiva la llum de la superfície plana durant un "
+"escanejat"
#: backend/microtek2.h:626 backend/snapscan-options.c:421
#, no-c-format
msgid "Quality scan"
-msgstr "Quality scan"
+msgstr "Qualitat de l'escaneig"
#: backend/microtek2.h:627 backend/snapscan-options.c:422
#, no-c-format
msgid "Highest quality but lower speed"
-msgstr "Highest quality but lower speed"
+msgstr "Màxima qualitat però menor velocitat"
#: backend/microtek2.h:630
#, no-c-format
msgid "Fast scan"
-msgstr "Fast scan"
+msgstr "Escanejat ràpid"
#: backend/microtek2.h:631
#, no-c-format
msgid "Highest speed but lower quality"
-msgstr "Highest speed but lower quality"
+msgstr "Màxima velocitat però menor qualitat"
#: backend/microtek2.h:634
#, no-c-format
msgid "Automatic adjustment of threshold"
-msgstr "Automatic adjustment of threshold"
+msgstr "Ajustament automàtic del llindar"
#: backend/microtek2.h:635
#, no-c-format
@@ -4786,365 +4979,383 @@ msgid ""
"If checked the backend automatically tries to determine an optimal value "
"for the threshold."
msgstr ""
-"If checked the backend automatically tries to determine an optimal value "
-"for the threshold."
+"Si està marcada, el dorsal intentarà determinar de manera automàtica un "
+"valor òptim per al llindar."
#: backend/microtek2.h:641
#, no-c-format
msgid "Selects the gamma correction mode."
-msgstr "Selects the gamma correction mode."
+msgstr "Selecciona el mode correcció de la gamma."
#: backend/microtek2.h:644
#, no-c-format
msgid "Bind gamma"
-msgstr "Bind gamma"
+msgstr "Enllaça amb la gamma"
#: backend/microtek2.h:645
#, no-c-format
msgid "Use same gamma values for all colour channels."
-msgstr "Use same gamma values for all colour channels."
+msgstr ""
+"Usa els mateixos valors de la gamma per a tots els canals de color."
#: backend/microtek2.h:649
#, no-c-format
msgid "Scalar gamma"
-msgstr "Scalar gamma"
+msgstr "Gamma escalar"
#: backend/microtek2.h:650
#, no-c-format
msgid "Selects a value for scalar gamma correction."
-msgstr "Selects a value for scalar gamma correction."
+msgstr "Selecciona un valor per a la correcció de la gamma escalar."
#: backend/microtek2.h:654
#, no-c-format
msgid "Scalar gamma red"
-msgstr "Scalar gamma red"
+msgstr "Gamma escalar del vermell"
#: backend/microtek2.h:655
#, no-c-format
msgid "Selects a value for scalar gamma correction (red channel)"
-msgstr "Selects a value for scalar gamma correction (red channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal "
+"vermell)"
#: backend/microtek2.h:659
#, no-c-format
msgid "Scalar gamma green"
-msgstr "Scalar gamma green"
+msgstr "Gamma escalar del verd"
#: backend/microtek2.h:660
#, no-c-format
msgid "Selects a value for scalar gamma correction (green channel)"
-msgstr "Selects a value for scalar gamma correction (green channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal verd)"
#: backend/microtek2.h:664
#, no-c-format
msgid "Scalar gamma blue"
-msgstr "Scalar gamma blue"
+msgstr "Gamma escalar del blau"
#: backend/microtek2.h:665
#, no-c-format
msgid "Selects a value for scalar gamma correction (blue channel)"
-msgstr "Selects a value for scalar gamma correction (blue channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal blau)"
#: backend/microtek2.h:669
#, no-c-format
msgid "Channel"
-msgstr "Channel"
+msgstr "Canal"
#: backend/microtek2.h:670
#, no-c-format
msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
msgstr ""
-"Selects the colour band, “Master” means that all colours are affected."
+"Selecciona la banda de colors, «Màster» voldrà dir que afectarà a tots "
+"els colors."
#: backend/microtek2.h:674
#, no-c-format
msgid "Midtone"
-msgstr "Midtone"
+msgstr "Semi to"
#: backend/microtek2.h:675
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % gray\"."
-msgstr "Selects which radiance level should be considered “50 % gray”."
+msgstr ""
+"Selecciona quin nivell de radiància s'haurà de considerar «50% gris»."
#: backend/microtek2.h:679
#, no-c-format
msgid "Midtone for red"
-msgstr "Midtone for red"
+msgstr "Semi to per al vermell"
#: backend/microtek2.h:680
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % red\"."
-msgstr "Selects which radiance level should be considered “50 % red”."
+msgstr ""
+"Selecciona quin nivell de radiància s'haurà de considerar «50% vermell»."
#: backend/microtek2.h:684
#, no-c-format
msgid "Midtone for green"
-msgstr "Midtone for green"
+msgstr "Semi to per al verd"
#: backend/microtek2.h:685
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % green\"."
-msgstr "Selects which radiance level should be considered “50 % green”."
+msgstr ""
+"Selecciona quin nivell de radiància s'haurà de considerar «50% verd»."
#: backend/microtek2.h:689
#, no-c-format
msgid "Midtone for blue"
-msgstr "Midtone for blue"
+msgstr "Semi to per al blau"
#: backend/microtek2.h:690
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % blue\"."
-msgstr "Selects which radiance level should be considered “50 % blue”."
+msgstr ""
+"Selecciona quin nivell de radiància s'haurà de considerar «50% blau»."
#: backend/microtek2.h:694
#, no-c-format
msgid "Red balance"
-msgstr "Red balance"
+msgstr "Equilibri del vermell"
#: backend/microtek2.h:695
#, no-c-format
msgid "Balance factor for red. A value of 100% means no correction."
-msgstr "Balance factor for red. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al vermell. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:699
#, no-c-format
msgid "Green balance"
-msgstr "Green balance"
+msgstr "Equilibri del verd"
#: backend/microtek2.h:700
#, no-c-format
msgid "Balance factor for green. A value of 100% means no correction."
-msgstr "Balance factor for green. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al verd. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:704
#, no-c-format
msgid "Blue balance"
-msgstr "Blue balance"
+msgstr "Equilibri del blau"
#: backend/microtek2.h:705
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
-msgstr "Balance factor for blue. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al blau. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:709
#, no-c-format
msgid "Firmware balance"
-msgstr "Firmware balance"
+msgstr "Equilibri per microprogramari"
#: backend/microtek2.h:710
#, no-c-format
msgid "Sets the color balance values to the firmware provided values."
-msgstr "Sets the color balance values to the firmware provided values."
+msgstr ""
+"Estableix els valors per a l'equilibri de color als valors proporcionats "
+"pel microprogramari."
#: backend/mustek.c:149
#, no-c-format
msgid "Slowest"
-msgstr "Slowest"
+msgstr "El més lent"
#: backend/mustek.c:149
#, no-c-format
msgid "Slower"
-msgstr "Slower"
+msgstr "Lent"
#: backend/mustek.c:150
#, no-c-format
msgid "Faster"
-msgstr "Faster"
+msgstr "Ràpid"
#: backend/mustek.c:150
#, no-c-format
msgid "Fastest"
-msgstr "Fastest"
+msgstr "El més ràpid"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 coarse"
-msgstr "8x8 coarse"
+msgstr "Gruixut 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 normal"
-msgstr "8x8 normal"
+msgstr "Normal 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 fine"
-msgstr "8x8 fine"
+msgstr "Fina 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "8x8 very fine"
-msgstr "8x8 very fine"
+msgstr "Molt fina 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "6x6 normal"
-msgstr "6x6 normal"
+msgstr "Normal 6x6"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 coarse"
-msgstr "5x5 coarse"
+msgstr "Gruixut 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 fine"
-msgstr "5x5 fine"
+msgstr "Fina 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "4x4 coarse"
-msgstr "4x4 coarse"
+msgstr "Gruixut 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 normal"
-msgstr "4x4 normal"
+msgstr "Normal 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 fine"
-msgstr "4x4 fine"
+msgstr "Fina 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "3x3 normal"
-msgstr "3x3 normal"
+msgstr "Normal 3x3"
#: backend/mustek.c:181
#, no-c-format
msgid "2x2 normal"
-msgstr "2x2 normal"
+msgstr "Normal 2x2"
#: backend/mustek.c:181
#, no-c-format
msgid "8x8 custom"
-msgstr "8x8 custom"
+msgstr "A mida 8x8"
#: backend/mustek.c:182
#, no-c-format
msgid "6x6 custom"
-msgstr "6x6 custom"
+msgstr "A mida 6x6"
#: backend/mustek.c:183
#, no-c-format
msgid "5x5 custom"
-msgstr "5x5 custom"
+msgstr "A mida 5x5"
#: backend/mustek.c:183
#, no-c-format
msgid "4x4 custom"
-msgstr "4x4 custom"
+msgstr "A mida 4x4"
#: backend/mustek.c:184
#, no-c-format
msgid "3x3 custom"
-msgstr "3x3 custom"
+msgstr "A mida 3x3"
#: backend/mustek.c:185
#, no-c-format
msgid "2x2 custom"
-msgstr "2x2 custom"
+msgstr "A mida 2x2"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
-msgstr "Fast gray mode"
+msgstr "Mode gris ràpid"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
-msgstr "Scan in fast gray mode (lower quality)."
+msgstr "Escaneja en el mode gris ràpid (qualitat baixa)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr ""
-"Request that all previews are done in the fastest (low-quality) mode. "
-"This may be a non-color mode or a low resolution mode."
+"Demana que totes les vistes prèvies es facin en el mode més ràpid (baixa "
+"qualitat). Aquestes poden ser en un mode sense color o un mode amb baixa "
+"resolució."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
-msgstr "Lamp off time (minutes)"
+msgstr "Temps per apagar la làmpada (minuts)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, 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."
+msgstr "Estableix el temps (en minuts) després del qual s'apagarà la llum."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
-msgstr "Turn lamp off"
+msgstr "Apaga la làmpada"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
-msgstr "Turns the lamp off immediately."
+msgstr "Apaga immediatament la llum."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
-msgstr "Red brightness"
+msgstr "Brillantor del vermell"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, 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."
+msgstr "Controla la brillantor del canal vermell de la imatge obtinguda."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
-msgstr "Green brightness"
+msgstr "Brillantor del verd"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, 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."
+msgstr "Controla la brillantor del canal verd de la imatge obtinguda."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
-msgstr "Blue brightness"
+msgstr "Brillantor del blau"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, 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."
+msgstr "Controla la brillantor del canal blau de la imatge obtinguda."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
-msgstr "Contrast red channel"
+msgstr "Contrast del canal vermell"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, 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."
+msgstr "Controla el contrast del canal vermell de la imatge obtinguda."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
-msgstr "Contrast green channel"
+msgstr "Contrast del canal verd"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, 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."
+msgstr "Controla el contrast del canal verd de la imatge obtinguda."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
-msgstr "Contrast blue channel"
+msgstr "Contrast del canal blau"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, 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."
+msgstr "Controla el contrast del canal blau de la imatge obtinguda."
#: backend/mustek_usb2.c:105
#, no-c-format
@@ -5159,22 +5370,22 @@ msgstr "Color24"
#: backend/mustek_usb2.c:107
#, no-c-format
msgid "Gray16"
-msgstr "Gray16"
+msgstr "Gris16"
#: backend/mustek_usb2.c:108
#, no-c-format
msgid "Gray8"
-msgstr "Gray8"
+msgstr "Gris8"
#: backend/mustek_usb2.c:119
#, no-c-format
msgid "Reflective"
-msgstr "Reflective"
+msgstr "Reflectant"
#: backend/mustek_usb2.c:120
#, no-c-format
msgid "Positive"
-msgstr "Positive"
+msgstr "Positiu"
#: backend/mustek_usb2.c:421
#, no-c-format
@@ -5182,28 +5393,28 @@ msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"40 seconds warm-up time."
msgstr ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"40 seconds warm-up time."
+"Escalfa fins que la brillantor de la làmpada sigui constant en comptes "
+"d'insistir en el temps d'escalfament de 40 segons."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
-msgstr "Negative color"
+msgstr "Color en negatiu"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
-msgstr "Negative gray"
+msgstr "Gris en negatiu"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
-msgstr "48 bits color"
+msgstr "Color de 48 bits"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
-msgstr "16 bits gray"
+msgstr "Gris de 16 bits"
#: backend/pixma_sane_options.c:84
#, no-c-format
@@ -5211,13 +5422,14 @@ msgid ""
"Selects the scan source (such as a document-feeder). Set source before "
"mode and resolution. Resets mode and resolution to auto values."
msgstr ""
-"Selects the scan source (such as a document-feeder). Set source before "
-"mode and resolution. Resets mode and resolution to auto values."
+"Selecciona la font de l'escàner font (com un alimentador de documents). "
+"Estableix la font abans del mode i la resolució. Restaura el mode i la "
+"resolució als valors automàtics."
#: backend/pixma_sane_options.c:98
#, no-c-format
msgid "Button-controlled scan"
-msgstr "Button-controlled scan"
+msgstr "Escaneig controlat pels botons"
#: backend/pixma_sane_options.c:99
#, no-c-format
@@ -5226,39 +5438,39 @@ msgid ""
"\"SCAN\" button (for MP150) or \"COLOR\" button (for other models). To "
"cancel, press \"GRAY\" button."
msgstr ""
-"When enabled, scan process will not start immediately. To proceed, press "
-"“SCAN” button (for MP150) or “COLOR” button (for other models). To "
-"cancel, press “GRAY” button."
+"Quan està habilitat, el procés d'escaneig no s'iniciarà immediatament. "
+"Per a continuar, premeu el botó «Escaneja» (per a MP150) o el botó "
+"«Color» (per a altres models). Per a cancel·lar, premeu el botó «Gris»."
#: backend/pixma_sane_options.c:232
#, no-c-format
msgid "Update button state"
-msgstr "Update button state"
+msgstr "Actualitza l'estat del botó"
#: backend/pixma_sane_options.c:244
#, no-c-format
msgid "Button 1"
-msgstr "Button 1"
+msgstr "Botó 1"
#: backend/pixma_sane_options.c:258
#, no-c-format
msgid "Button 2"
-msgstr "Button 2"
+msgstr "Botó 2"
#: backend/pixma_sane_options.c:272
#, no-c-format
msgid "Type of original to scan"
-msgstr "Type of original to scan"
+msgstr "Tipus de l'original a escanejar"
#: backend/pixma_sane_options.c:286
#, no-c-format
msgid "Target operation type"
-msgstr "Target operation type"
+msgstr "Tipus de l'operació de destinació"
#: backend/pixma_sane_options.c:348
#, no-c-format
msgid "ADF Waiting Time"
-msgstr "ADF Waiting Time"
+msgstr "Temps d'espera per a l'ADF"
#: backend/pixma_sane_options.c:349
#, no-c-format
@@ -5266,158 +5478,158 @@ msgid ""
"When set, the scanner searches the waiting time in seconds for a new "
"document inserted into the automatic document feeder."
msgstr ""
-"When set, the scanner searches the waiting time in seconds for a new "
-"document inserted into the automatic document feeder."
+"Quan s'estableix, l'escàner cerca el temps d'espera en segons perquè "
+"s'insereixi un document nou a l'alimentador automàtic de documents."
#: backend/plustek.c:235 backend/plustek_pp.c:204 backend/u12.c:156
#, no-c-format
msgid "Transparency"
-msgstr "Transparency"
+msgstr "Transparència"
#: backend/plustek.c:913
#, no-c-format
msgid "Device-Settings"
-msgstr "Device-Settings"
+msgstr "Ajustaments del dispositiu"
#: backend/plustek.c:920
#, no-c-format
msgid "Lampswitch"
-msgstr "Lampswitch"
+msgstr "Interruptor de la làmpada"
#: backend/plustek.c:921
#, no-c-format
msgid "Manually switching the lamp(s)."
-msgstr "Manually switching the lamp(s)."
+msgstr "Interruptor manual de la/es làmpada/es."
#: backend/plustek.c:926
#, no-c-format
msgid "Lamp off during dark calibration"
-msgstr "Lamp off during dark calibration"
+msgstr "Apaga la làmpada durant el calibratge fosc"
#: backend/plustek.c:927
#, no-c-format
msgid "Always switches lamp off when doing dark calibration."
-msgstr "Always switches lamp off when doing dark calibration."
+msgstr "Apaga sempre la làmpada quan es fa el calibratge fosc."
#: backend/plustek.c:935
#, no-c-format
msgid "Calibration data cache"
-msgstr "Calibration data cache"
+msgstr "Cau per a les dades de calibratge"
#: backend/plustek.c:936
#, no-c-format
msgid "Enables or disables calibration data cache."
-msgstr "Enables or disables calibration data cache."
+msgstr "Habilita o inhabilita el cau per a les dades de calibratge."
#: backend/plustek.c:942
#, no-c-format
msgid "Performs calibration"
-msgstr "Performs calibration"
+msgstr "Realitza el calibratge"
#: backend/plustek.c:959
#, no-c-format
msgid "Speedup sensor"
-msgstr "Speedup sensor"
+msgstr "Sensor de l'acceleració"
#: backend/plustek.c:960
#, no-c-format
msgid "Enables or disables speeding up sensor movement."
-msgstr "Enables or disables speeding up sensor movement."
+msgstr "Habilita o inhabilita el moviment del sensor de l'acceleració."
#: backend/plustek.c:974
#, no-c-format
msgid "Warmup-time"
-msgstr "Warmup-time"
+msgstr "Temps d'escalfament"
#: backend/plustek.c:975
#, no-c-format
msgid "Warmup-time in seconds."
-msgstr "Warmup-time in seconds."
+msgstr "Temps d'escalfament en segons."
#: backend/plustek.c:987
#, no-c-format
msgid "Lampoff-time"
-msgstr "Lampoff-time"
+msgstr "Temps per apagar la làmpada"
#: backend/plustek.c:988
#, no-c-format
msgid "Lampoff-time in seconds."
-msgstr "Lampoff-time in seconds."
+msgstr "Temps per apagar la làmpada en segons."
#: backend/plustek.c:995
#, no-c-format
msgid "Analog frontend"
-msgstr "Analog frontend"
+msgstr "Frontal analògic"
#: backend/plustek.c:1002
#, no-c-format
msgid "Red gain value of the AFE"
-msgstr "Red gain value of the AFE"
+msgstr "Valor de guany del vermell de l'AFE"
#: backend/plustek.c:1009 backend/umax_pp.c:792
#, no-c-format
msgid "Red offset"
-msgstr "Red offset"
+msgstr "Desplaçament del vermell"
#: backend/plustek.c:1010
#, no-c-format
msgid "Red offset value of the AFE"
-msgstr "Red offset value of the AFE"
+msgstr "Valor de desplaçament del vermell de l'AFE"
#: backend/plustek.c:1018
#, no-c-format
msgid "Green gain value of the AFE"
-msgstr "Green gain value of the AFE"
+msgstr "Valor de guany del verd de l'AFE"
#: backend/plustek.c:1026
#, no-c-format
msgid "Green offset value of the AFE"
-msgstr "Green offset value of the AFE"
+msgstr "Valor de desplaçament del verd de l'AFE"
#: backend/plustek.c:1034
#, no-c-format
msgid "Blue gain value of the AFE"
-msgstr "Blue gain value of the AFE"
+msgstr "Valor de guany del blau de l'AFE"
#: backend/plustek.c:1042
#, no-c-format
msgid "Blue offset value of the AFE"
-msgstr "Blue offset value of the AFE"
+msgstr "Valor de desplaçament del blau de l'AFE"
#: backend/plustek.c:1049
#, no-c-format
msgid "Red lamp off"
-msgstr "Red lamp off"
+msgstr "Llum vermella apagada"
#: backend/plustek.c:1050
#, no-c-format
msgid "Defines red lamp off parameter"
-msgstr "Defines red lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum vermella"
#: backend/plustek.c:1057
#, no-c-format
msgid "Green lamp off"
-msgstr "Green lamp off"
+msgstr "Llum verda apagada"
#: backend/plustek.c:1058
#, no-c-format
msgid "Defines green lamp off parameter"
-msgstr "Defines green lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum verda"
#: backend/plustek.c:1065
#, no-c-format
msgid "Blue lamp off"
-msgstr "Blue lamp off"
+msgstr "Llum blava apagada"
#: backend/plustek.c:1066
#, no-c-format
msgid "Defines blue lamp off parameter"
-msgstr "Defines blue lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum blava"
#: backend/plustek.c:1096
#, no-c-format
msgid "This option reflects the status of the scanner buttons."
-msgstr "This option reflects the status of the scanner buttons."
+msgstr "Aquesta opció reflecteix l'estat dels botons de l'escàner."
#: backend/plustek_pp.c:197
#, no-c-format
@@ -5427,42 +5639,42 @@ msgstr "Color36"
#: backend/plustek_pp.c:211
#, no-c-format
msgid "Dithermap 1"
-msgstr "Dithermap 1"
+msgstr "Mapa amb trama 1"
#: backend/plustek_pp.c:212
#, no-c-format
msgid "Dithermap 2"
-msgstr "Dithermap 2"
+msgstr "Mapa amb trama 2"
#: backend/plustek_pp.c:213
#, no-c-format
msgid "Randomize"
-msgstr "Randomize"
+msgstr "Aleatori"
#: backend/pnm.c:168
#, no-c-format
msgid "Source Selection"
-msgstr "Source Selection"
+msgstr "Selecció de la font"
#: backend/pnm.c:205
#, no-c-format
msgid "Image Enhancement"
-msgstr "Image Enhancement"
+msgstr "Millora de la imatge"
#: backend/pnm.c:241
#, no-c-format
msgid "Grayify"
-msgstr "Grayify"
+msgstr "Grisifica"
#: backend/pnm.c:242
#, no-c-format
msgid "Load the image as grayscale."
-msgstr "Load the image as grayscale."
+msgstr "Carrega la imatge en escala de grisos."
#: backend/pnm.c:253
#, no-c-format
msgid "Three-Pass Simulation"
-msgstr "Three-Pass Simulation"
+msgstr "Simulació de tres passos"
#: backend/pnm.c:255
#, no-c-format
@@ -5470,13 +5682,13 @@ msgid ""
"Simulate a three-pass scanner by returning 3 separate frames. For "
"kicks, it returns green, then blue, then red."
msgstr ""
-"Simulate a three-pass scanner by returning 3 separate frames. For "
-"kicks, it returns green, then blue, then red."
+"Simula un escàner de tres passos en retornar 3 fotogrames separats. Per "
+"a diversió, retorna al verd, llavors al blau i llavors al vermell."
#: backend/pnm.c:267
#, no-c-format
msgid "Hand-Scanner Simulation"
-msgstr "Hand-Scanner Simulation"
+msgstr "Simulació d'un escàner manual"
#: backend/pnm.c:268
#, no-c-format
@@ -5485,51 +5697,53 @@ msgid ""
"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 ""
-"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."
+"Simula un escàner manual. Els escàners manuals sovint no coneixen "
+"l'alçada de la imatge. En canvi, retornen una alçada de -1. En establir "
+"aquesta opció, es pot comprovar si un frontal pot gestionar-la "
+"correctament."
#: backend/pnm.c:283
#, no-c-format
msgid ""
"Set default values for enhancement controls (brightness & contrast)."
msgstr ""
-"Set default values for enhancement controls (brightness & contrast)."
+"Estableix els valors predeterminats per als controls de millora "
+"(brillantor i contrast)."
#: backend/pnm.c:295
#, no-c-format
msgid "Read only test-option"
-msgstr "Read only test-option"
+msgstr "Opció de prova per a només de lectura"
#: backend/pnm.c:296
#, no-c-format
msgid "Let's see whether frontends can treat this right"
-msgstr "Let's see whether frontends can treat this right"
+msgstr "Permet veure si els frontals poden tractar això correctament"
#: backend/pnm.c:307
#, no-c-format
msgid "Gamma Tables"
-msgstr "Gamma Tables"
+msgstr "Taules de gamma"
#: backend/pnm.c:379
#, no-c-format
msgid "Status Code Simulation"
-msgstr "Status Code Simulation"
+msgstr "Simulació del codi d'estat"
#: backend/pnm.c:391
#, no-c-format
msgid "Do not force status code"
-msgstr "Do not force status code"
+msgstr "No força el codi d'estat"
#: backend/pnm.c:392
#, no-c-format
msgid "Do not force the backend to return a status code."
-msgstr "Do not force the backend to return a status code."
+msgstr "No força al dorsal a què retorni un codi d'estat."
#: backend/pnm.c:403
#, no-c-format
msgid "Return SANE_STATUS_EOF"
-msgstr "Return SANE_STATUS_EOF"
+msgstr "Retorna «SANE_STATUS_EOF»"
#: backend/pnm.c:404
#, no-c-format
@@ -5537,13 +5751,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_EOF after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_EOF after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_EOF» després "
+"de cridar al «sane_read()»."
#: backend/pnm.c:416
#, no-c-format
msgid "Return SANE_STATUS_JAMMED"
-msgstr "Return SANE_STATUS_JAMMED"
+msgstr "Retorna «SANE_STATUS_JAMMED»"
#: backend/pnm.c:418
#, no-c-format
@@ -5551,13 +5765,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_JAMMED after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_JAMMED after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_JAMMED» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:430
#, no-c-format
msgid "Return SANE_STATUS_NO_DOCS"
-msgstr "Return SANE_STATUS_NO_DOCS"
+msgstr "Retorna «SANE_STATUS_NO_DOCS»"
#: backend/pnm.c:431
#, no-c-format
@@ -5565,13 +5779,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_NO_DOCS» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:443
#, no-c-format
msgid "Return SANE_STATUS_COVER_OPEN"
-msgstr "Return SANE_STATUS_COVER_OPEN"
+msgstr "Retorna «SANE_STATUS_COVER_OPEN»"
#: backend/pnm.c:444
#, no-c-format
@@ -5579,13 +5793,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_COVER_OPEN» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:456
#, no-c-format
msgid "Return SANE_STATUS_IO_ERROR"
-msgstr "Return SANE_STATUS_IO_ERROR"
+msgstr "Retorna «SANE_STATUS_IO_ERROR»"
#: backend/pnm.c:457
#, no-c-format
@@ -5593,13 +5807,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_IO_ERROR» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:469
#, no-c-format
msgid "Return SANE_STATUS_NO_MEM"
-msgstr "Return SANE_STATUS_NO_MEM"
+msgstr "Retorna «SANE_STATUS_NO_MEM»"
#: backend/pnm.c:471
#, no-c-format
@@ -5607,13 +5821,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_MEM after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_NO_MEM after "
-"sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat «SANE_STATUS_NO_MEM» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:483
#, no-c-format
msgid "Return SANE_STATUS_ACCESS_DENIED"
-msgstr "Return SANE_STATUS_ACCESS_DENIED"
+msgstr "Retorna «SANE_STATUS_ACCESS_DENIED»"
#: backend/pnm.c:484
#, no-c-format
@@ -5621,83 +5835,83 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
"after sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
-"after sane_read() has been called."
+"Força el dorsal perquè retorni el codi d'estat "
+"«SANE_STATUS_ACCESS_DENIED» després de cridar al «sane_read()»."
#: 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."
+msgstr "Aquesta opció reflecteix l'estat d'un botó de l'escàner."
#: backend/rts8891.c:2840 backend/umax.c:5795 backend/umax_pp.c:639
#, no-c-format
msgid "Lamp on"
-msgstr "Lamp on"
+msgstr "Encén la làmpada"
#: backend/rts8891.c:2841 backend/umax.c:5796
#, no-c-format
msgid "Turn on scanner lamp"
-msgstr "Turn on scanner lamp"
+msgstr "Encén la llum de l'escàner"
#: backend/rts8891.c:2851 backend/umax1220u.c:248 backend/umax.c:5812
#, no-c-format
msgid "Lamp off"
-msgstr "Lamp off"
+msgstr "Apaga la làmpada"
#: backend/rts8891.c:2852 backend/umax1220u.c:249 backend/umax.c:5813
#, no-c-format
msgid "Turn off scanner lamp"
-msgstr "Turn off scanner lamp"
+msgstr "Apaga la llum de l'escàner"
#: backend/sm3840.c:760
#, no-c-format
msgid "Lamp timeout"
-msgstr "Lamp timeout"
+msgstr "Temps d'espera de la làmpada"
#: backend/sm3840.c:762
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
-msgstr "Minutes until lamp is turned off after scan"
+msgstr "Minuts fins que la làmpada està apagada després d'escanejar"
#: backend/sm3840.c:772
#, no-c-format
msgid "Threshold value for lineart mode"
-msgstr "Threshold value for lineart mode"
+msgstr "Valor de llindar per al mode art lineal"
#: backend/snapscan-options.c:88
#, no-c-format
msgid "Document Feeder"
-msgstr "Document Feeder"
+msgstr "Alimentador de documents"
#: backend/snapscan-options.c:92
#, no-c-format
msgid "6x4 (inch)"
-msgstr "6x4 (inch)"
+msgstr "6x4 (polçades)"
#: backend/snapscan-options.c:93
#, no-c-format
msgid "8x10 (inch)"
-msgstr "8x10 (inch)"
+msgstr "8x10 (polçades)"
#: backend/snapscan-options.c:94
#, no-c-format
msgid "8.5x11 (inch)"
-msgstr "8.5x11 (inch)"
+msgstr "8.5x11 (polçades)"
#: backend/snapscan-options.c:97
#, no-c-format
msgid "Halftoning Unsupported"
-msgstr "Halftoning Unsupported"
+msgstr "El semi to no està admès"
#: backend/snapscan-options.c:98
#, no-c-format
msgid "DispersedDot8x8"
-msgstr "DispersedDot8x8"
+msgstr "PuntDispers8x8"
#: backend/snapscan-options.c:99
#, no-c-format
msgid "DispersedDot16x16"
-msgstr "DispersedDot16x16"
+msgstr "PuntDispers16x16"
#: backend/snapscan-options.c:103
#, no-c-format
@@ -5708,31 +5922,33 @@ msgid ""
"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 ""
-"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."
+"Nombre de línies d'escaneig a sol·licitar en una lectura SCSI. Si "
+"canvieu aquest paràmetre, podreu ajustar la velocitat a la qual es "
+"llegeixen les dades des de l'escàner durant els escanejos. Si aquest és "
+"massa baix, l'escàner s'aturarà periòdicament enmig d'un escaneig. Si "
+"s'estableix massa alt, els frontals basats en les X podrien deixar de "
+"respondre als esdeveniments de les X i reduir-se el rendiment del "
+"sistema."
#: backend/snapscan-options.c:111
#, no-c-format
msgid "Frame number of media holder that should be scanned."
-msgstr "Frame number of media holder that should be scanned."
+msgstr "Número del fotograma del suport que s'haurà d'escanejar."
#: backend/snapscan-options.c:114
#, no-c-format
msgid "Use manual or automatic selection of focus point."
-msgstr "Use manual or automatic selection of focus point."
+msgstr "Usa la selecció manual o automàtica del punt d'enfocament."
#: backend/snapscan-options.c:117
#, no-c-format
msgid "Focus point for scanning."
-msgstr "Focus point for scanning."
+msgstr "Punt d'enfocament per escanejar."
#: backend/snapscan-options.c:482
#, no-c-format
msgid "Preview mode"
-msgstr "Preview mode"
+msgstr "Mode de vista prèvia"
#: backend/snapscan-options.c:484
#, no-c-format
@@ -5740,13 +5956,14 @@ msgid ""
"Select the mode for previews. Greyscale previews usually give the best "
"combination of speed and detail."
msgstr ""
-"Select the mode for previews. Greyscale previews usually give the best "
-"combination of speed and detail."
+"Selecciona el mode per a les vistes prèvies. Les vistes prèvies a escala "
+"de grisos normalment ofereixen la millor combinació entre velocitat i "
+"detall."
#: backend/snapscan-options.c:601
#, no-c-format
msgid "Predefined settings"
-msgstr "Predefined settings"
+msgstr "Ajustaments predeterminats"
#: backend/snapscan-options.c:603
#, no-c-format
@@ -5754,53 +5971,53 @@ msgid ""
"Provides standard scanning areas for photographs, printed pages and the "
"like."
msgstr ""
-"Provides standard scanning areas for photographs, printed pages and the "
-"like."
+"Proporciona àrees d'escaneig estàndard per a fotografies, pàgines "
+"impreses i similars."
#: backend/snapscan-options.c:884
#, no-c-format
msgid "Frame"
-msgstr "Frame"
+msgstr "Marc"
#: backend/snapscan-options.c:885
#, no-c-format
msgid "Frame to be scanned"
-msgstr "Frame to be scanned"
+msgstr "Marc a escanejar"
#: backend/snapscan-options.c:897
#, no-c-format
msgid "Focus-mode"
-msgstr "Focus-mode"
+msgstr "Mode de l'enfocament"
#: backend/snapscan-options.c:898
#, no-c-format
msgid "Auto or manual focus"
-msgstr "Auto or manual focus"
+msgstr "Enfocament automàtic o manual"
#: backend/snapscan-options.c:911
#, no-c-format
msgid "Focus-point"
-msgstr "Focus-point"
+msgstr "Punt d'enfocament"
#: backend/snapscan-options.c:912
#, no-c-format
msgid "Focus point"
-msgstr "Focus point"
+msgstr "Punt d'enfocament"
#: backend/snapscan-options.c:930
#, no-c-format
msgid "Colour lines per read"
-msgstr "Colour lines per read"
+msgstr "Línies de color per a la lectura"
#: backend/snapscan-options.c:942
#, no-c-format
msgid "Greyscale lines per read"
-msgstr "Greyscale lines per read"
+msgstr "Línies en escala de grisos per a la lectura"
#: backend/stv680.c:974
#, no-c-format
msgid "webcam"
-msgstr "webcam"
+msgstr "Càmera web"
#: backend/stv680.h:115
#, no-c-format
@@ -5815,37 +6032,37 @@ msgstr "Color RGB"
#: backend/stv680.h:117
#, no-c-format
msgid "Color RGB TEXT"
-msgstr "Color RGB TEXT"
+msgstr "Color RGB per al text"
#: backend/test.c:137
#, no-c-format
msgid "Solid black"
-msgstr "Solid black"
+msgstr "Negre sòlid"
#: backend/test.c:137
#, no-c-format
msgid "Solid white"
-msgstr "Solid white"
+msgstr "Blanc sòlid"
#: backend/test.c:138
#, no-c-format
msgid "Color pattern"
-msgstr "Color pattern"
+msgstr "Patró per al color"
#: backend/test.c:138
#, no-c-format
msgid "Grid"
-msgstr "Grid"
+msgstr "Quadrícula"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "First entry"
-msgstr "First entry"
+msgstr "Primera entrada"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "Second entry"
-msgstr "Second entry"
+msgstr "Segona entrada"
#: backend/test.c:165
#, no-c-format
@@ -5853,13 +6070,13 @@ msgid ""
"This is the very long third entry. Maybe the frontend has an idea how to "
"display it"
msgstr ""
-"This is the very long third entry. Maybe the frontend has an idea how to "
-"display it"
+"Aquesta és la tercera entrada molt llarga. Potser el frontal té una idea "
+"sobre com mostrar-la"
#: backend/test.c:348
#, no-c-format
msgid "Hand-scanner simulation"
-msgstr "Hand-scanner simulation"
+msgstr "Simulació d'un escàner manual"
#: backend/test.c:349
#, no-c-format
@@ -5869,15 +6086,15 @@ msgid ""
"allows one to test whether a frontend can handle this correctly. This "
"option also enables a fixed width of 11 cm."
msgstr ""
-"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."
+"Simula un escàner manual. Els escàners manuals sovint no coneixen "
+"l'alçada de la imatge. En canvi, retornen una alçada de -1. En establir "
+"aquesta opció, es pot comprovar si un frontal pot gestionar-la "
+"correctament. Aquesta opció també permet una amplada fixa d'11 cm."
#: backend/test.c:366
#, no-c-format
msgid "Three-pass simulation"
-msgstr "Three-pass simulation"
+msgstr "Simulació de tres passos"
#: backend/test.c:367
#, no-c-format
@@ -5885,18 +6102,18 @@ msgid ""
"Simulate a three-pass scanner. In color mode, three frames are "
"transmitted."
msgstr ""
-"Simulate a three-pass scanner. In color mode, three frames are "
-"transmitted."
+"Simula un escàner de tres passos. En mode de color, es transmeten tres "
+"fotogrames."
#: backend/test.c:382
#, no-c-format
msgid "Set the order of frames"
-msgstr "Set the order of frames"
+msgstr "Estableix l'ordre dels fotogrames"
#: backend/test.c:383
#, no-c-format
msgid "Set the order of frames in three-pass color mode."
-msgstr "Set the order of frames in three-pass color mode."
+msgstr "Estableix l'ordre dels fotogrames en el mode color de tres passos."
#: backend/test.c:416
#, no-c-format
@@ -5904,18 +6121,18 @@ msgid ""
"If Automatic Document Feeder is selected, the feeder will be 'empty' "
"after 10 scans."
msgstr ""
-"If Automatic Document Feeder is selected, the feeder will be ‘empty’ "
-"after 10 scans."
+"Si se selecciona l'alimentador automàtic de documents, l'alimentador "
+"estarà «buit» després de 10 escaneigs."
#: backend/test.c:431
#, no-c-format
msgid "Special Options"
-msgstr "Special Options"
+msgstr "Opcions especials"
#: backend/test.c:444
#, no-c-format
msgid "Select the test picture"
-msgstr "Select the test picture"
+msgstr "Selecciona la fotografia de prova"
#: backend/test.c:446
#, no-c-format
@@ -5927,17 +6144,18 @@ msgid ""
"Grid: draws a black/white grid with a width and height of 10 mm per "
"square."
msgstr ""
-"Select the kind of test picture. Available options:\n"
-"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."
+"Seleccioneu el tipus de la fotografia de prova. Opcions disponibles:\n"
+"Negre sòlid: omple tot l'escaneig amb el negre.\n"
+"Blanc sòlid: omple tot l'escaneig amb el blanc.\n"
+"Patró per al color: dibuixa diversos patrons de prova per al color en "
+"funció del mode.\n"
+"Quadrícula: dibuixa una quadrícula en negre/blanc amb una amplada i una "
+"alçada de 10 mm per quadrat."
#: backend/test.c:467
#, no-c-format
msgid "Invert endianness"
-msgstr "Invert endianness"
+msgstr "Inverteix la codificació «endian»"
#: backend/test.c:468
#, no-c-format
@@ -5946,59 +6164,62 @@ msgid ""
"can be used to test the 16 bit modes of frontends, e.g. if the frontend "
"uses the correct endianness."
msgstr ""
-"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."
+"Intercanvi de bytes superior i inferior de dades d'imatge en els modes "
+"de 16 bits. Aquesta opció es pot usar per a provar els modes de 16 bits "
+"dels frontals, p. ex., si el frontal empra una codificació «endian» "
+"correcta."
#: backend/test.c:484
#, no-c-format
msgid "Read limit"
-msgstr "Read limit"
+msgstr "Límit en la lectura"
#: backend/test.c:485
#, no-c-format
msgid "Limit the amount of data transferred with each call to sane_read()."
msgstr ""
-"Limit the amount of data transferred with each call to sane_read()."
+"Limita la quantitat de dades transferida amb cada crida al «sane_read()»."
#: backend/test.c:498
#, no-c-format
msgid "Size of read-limit"
-msgstr "Size of read-limit"
+msgstr "Mida per al límit en la lectura"
#: backend/test.c:499
#, no-c-format
msgid ""
"The (maximum) amount of data transferred with each call to sane_read()."
msgstr ""
-"The (maximum) amount of data transferred with each call to sane_read()."
+"La quantitat (màxima) de dades transferida amb cada crida al "
+"«sane_read()»."
#: backend/test.c:514
#, no-c-format
msgid "Read delay"
-msgstr "Read delay"
+msgstr "Retard en la lectura"
#: backend/test.c:515
#, no-c-format
msgid "Delay the transfer of data to the pipe."
-msgstr "Delay the transfer of data to the pipe."
+msgstr "Retarda la transferència de les dades a la canonada."
#: backend/test.c:527
#, no-c-format
msgid "Duration of read-delay"
-msgstr "Duration of read-delay"
+msgstr "Durada del retard en la lectura"
#: backend/test.c:528
#, no-c-format
msgid ""
"How long to wait after transferring each buffer of data through the pipe."
msgstr ""
-"How long to wait after transferring each buffer of data through the pipe."
+"Quant de temps s'esperarà després de transferir cada cau de dades a "
+"través de la canonada."
#: backend/test.c:543
#, no-c-format
msgid "Return-value of sane_read"
-msgstr "Return-value of sane_read"
+msgstr "Valor retornat pel «sane_read()»"
#: backend/test.c:545
#, no-c-format
@@ -6007,24 +6228,24 @@ msgid ""
"handling for scanning. All other status codes are for testing how the "
"frontend handles them."
msgstr ""
-"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."
+"Selecciona el valor retornat pel «sane_read()». «Predeterminat» és el "
+"maneig normal per a escanejar. Tots els altres codis d'estat són per a "
+"provar com els maneja el frontal."
#: backend/test.c:562
#, no-c-format
msgid "Loss of pixels per line"
-msgstr "Loss of pixels per line"
+msgstr "Pèrdua de píxels per línia"
#: backend/test.c:564
#, no-c-format
msgid "The number of pixels that are wasted at the end of each line."
-msgstr "The number of pixels that are wasted at the end of each line."
+msgstr "El nombre de píxels que es perdran al final de cada línia."
#: backend/test.c:577
#, no-c-format
msgid "Fuzzy parameters"
-msgstr "Fuzzy parameters"
+msgstr "Paràmetres difusos"
#: backend/test.c:578
#, no-c-format
@@ -6032,23 +6253,25 @@ msgid ""
"Return fuzzy lines and bytes per line when sane_parameters() is called "
"before sane_start()."
msgstr ""
-"Return fuzzy lines and bytes per line when sane_parameters() is called "
-"before sane_start()."
+"Retorna línies borroses i bytes per línia quan es crida la "
+"«sane_parameters()» abans de la «sane_start()»."
#: backend/test.c:591
#, no-c-format
msgid "Use non-blocking IO"
-msgstr "Use non-blocking IO"
+msgstr "Usa una E/S que no es bloquegi"
#: backend/test.c:592
#, no-c-format
msgid "Use non-blocking IO for sane_read() if supported by the frontend."
-msgstr "Use non-blocking IO for sane_read() if supported by the frontend."
+msgstr ""
+"Usa una E/S que no es bloquegi per a la «sane_read()» si està admès pel "
+"frontal."
#: backend/test.c:605
#, no-c-format
msgid "Offer select file descriptor"
-msgstr "Offer select file descriptor"
+msgstr "Ofereix el descriptor de fitxer seleccionat"
#: backend/test.c:606
#, no-c-format
@@ -6056,13 +6279,13 @@ msgid ""
"Offer a select filedescriptor for detecting if sane_read() will return "
"data."
msgstr ""
-"Offer a select filedescriptor for detecting if sane_read() will return "
-"data."
+"Ofereix un descriptor de fitxer seleccionat per a detectar si la "
+"«sane_read()» retornarà dades."
#: backend/test.c:619
#, no-c-format
msgid "Enable test options"
-msgstr "Enable test options"
+msgstr "Habilita les opcions de prova"
#: backend/test.c:620
#, no-c-format
@@ -6070,28 +6293,29 @@ msgid ""
"Enable various test options. This is for testing the ability of "
"frontends to view and modify all the different SANE option types."
msgstr ""
-"Enable various test options. This is for testing the ability of "
-"frontends to view and modify all the different SANE option types."
+"Habilita diverses opcions de prova. Això és per a provar la capacitat "
+"dels frontals per a veure i modificar tots els diferents tipus d'opcions "
+"de SANE."
#: backend/test.c:634
#, no-c-format
msgid "Print options"
-msgstr "Print options"
+msgstr "Opcions per a la impressió"
#: backend/test.c:635
#, no-c-format
msgid "Print a list of all options."
-msgstr "Print a list of all options."
+msgstr "Imprimeix una llista de totes les opcions."
#: backend/test.c:712
#, no-c-format
msgid "Bool test options"
-msgstr "Bool test options"
+msgstr "Opcions per a la prova booleana"
#: backend/test.c:725
#, no-c-format
msgid "(1/6) Bool soft select soft detect"
-msgstr "(1/6) Bool soft select soft detect"
+msgstr "(1/6) Selecció i detecció booleana per programari"
#: backend/test.c:727
#, no-c-format
@@ -6099,13 +6323,14 @@ msgid ""
"(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) Bool test option that has soft select and soft detect (and "
-"advanced) capabilities. That's just a normal bool option."
+"(1/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari. Aquesta només és una opció "
+"booleana normal."
#: backend/test.c:743
#, no-c-format
msgid "(2/6) Bool hard select soft detect"
-msgstr "(2/6) Bool hard select soft detect"
+msgstr "(2/6) Selecció booleana per maquinari i detecció per programari"
#: backend/test.c:745
#, no-c-format
@@ -6114,14 +6339,15 @@ msgid ""
"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) 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) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció per maquinari i la detecció per programari. Això vol dir que "
+"l'opció no pot ser establerta pel frontal, sinó per l'usuari (p. ex., si "
+"premeu un botó al dispositiu)."
#: backend/test.c:762
#, no-c-format
msgid "(3/6) Bool hard select"
-msgstr "(3/6) Bool hard select"
+msgstr "(3/6) Selecció booleana per maquinari"
#: backend/test.c:763
#, no-c-format
@@ -6130,14 +6356,15 @@ msgid ""
"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) 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."
+"(3/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció per maquinari. Això vol dir que l'opció no pot ser "
+"establerta pel frontal, sinó per l'usuari (p. ex., si premeu un botó al "
+"dispositiu) i no el frontal no ho pot llegir."
#: backend/test.c:781
#, no-c-format
msgid "(4/6) Bool soft detect"
-msgstr "(4/6) Bool soft detect"
+msgstr "(4/6) Detecció booleana per programari"
#: backend/test.c:782
#, no-c-format
@@ -6145,13 +6372,15 @@ msgid ""
"(4/6) Bool test option that has soft detect (and advanced) capabilities. "
"That means the option is read-only."
msgstr ""
-"(4/6) Bool test option that has soft detect (and advanced) capabilities. "
-"That means the option is read-only."
+"(4/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la detecció per programari. Això vol dir que aquesta opció és de només "
+"lectura."
#: backend/test.c:798
#, no-c-format
msgid "(5/6) Bool soft select soft detect emulated"
-msgstr "(5/6) Bool soft select soft detect emulated"
+msgstr ""
+"(5/6) Detecció booleana per programari i detecció emulada per programari"
#: backend/test.c:799
#, no-c-format
@@ -6159,13 +6388,15 @@ msgid ""
"(5/6) Bool test option that has soft select, soft detect, and emulated "
"(and advanced) capabilities."
msgstr ""
-"(5/6) Bool test option that has soft select, soft detect, and emulated "
-"(and advanced) capabilities."
+"(5/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari, i emulades."
#: backend/test.c:815
#, no-c-format
msgid "(6/6) Bool soft select soft detect auto"
-msgstr "(6/6) Bool soft select soft detect auto"
+msgstr ""
+"(6/6) Detecció booleana per programari i detecció automàtica per "
+"programari"
#: backend/test.c:816
#, no-c-format
@@ -6174,29 +6405,31 @@ msgid ""
"(and advanced) capabilities. This option can be automatically set by the "
"backend."
msgstr ""
-"(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) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari, i automàtiques. Aquesta opció pot "
+"establir-la automàticament el dorsal."
#: backend/test.c:833
#, no-c-format
msgid "Int test options"
-msgstr "Int test options"
+msgstr "Opcions per a la prova de l'enter"
#: backend/test.c:846
#, no-c-format
msgid "(1/6) Int"
-msgstr "(1/6) Int"
+msgstr "(1/6) Enter"
#: backend/test.c:847
#, 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."
+msgstr ""
+"(1/6) Opció per a la prova de l'enter sense unitats i no restringida a "
+"un conjunt."
#: backend/test.c:862
#, no-c-format
msgid "(2/6) Int constraint range"
-msgstr "(2/6) Int constraint range"
+msgstr "(2/6) Interval restringit amb un enter"
#: backend/test.c:863
#, no-c-format
@@ -6204,23 +6437,26 @@ msgid ""
"(2/6) 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 "
-"is 4, maximum 192, and quant is 2."
+"(2/6) Opció per a la prova de l'enter amb píxels com a unitat i un "
+"conjunt restringit a un interval. El mínim és 4, el màxim 192 i «quant» "
+"és 2."
#: backend/test.c:879
#, no-c-format
msgid "(3/6) Int constraint word list"
-msgstr "(3/6) Int constraint word list"
+msgstr "(3/6) Llista restringida de paraules amb un enter"
#: backend/test.c:880
#, 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."
+msgstr ""
+"(3/6) Opció per a la prova de l'enter amb bits com a unitat i "
+"restringida a un conjunt de llista de paraules."
#: backend/test.c:895
#, no-c-format
msgid "(4/6) Int array"
-msgstr "(4/6) Int array"
+msgstr "(4/6) Matriu amb un enter"
#: backend/test.c:896
#, no-c-format
@@ -6228,13 +6464,13 @@ msgid ""
"(4/6) 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 "
-"constraints."
+"(4/6) Opció per a la prova de l'enter amb mm com a unitat i usant una "
+"matriu sense restringir."
#: backend/test.c:911
#, no-c-format
msgid "(5/6) Int array constraint range"
-msgstr "(5/6) Int array constraint range"
+msgstr "(5/6) Interval restringit amb una matriu amb un enter"
#: backend/test.c:912
#, no-c-format
@@ -6242,13 +6478,14 @@ 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) Int test option with unit dpi and using an array with a range "
-"constraint. Minimum is 4, maximum 192, and quant is 2."
+"(5/6) Opció per a la prova de l'enter amb ppp com a unitat i usant una "
+"matriu amb un interval restringit. El mínim és 4, el màxim 192 i «quant» "
+"és 2."
#: backend/test.c:929
#, no-c-format
msgid "(6/6) Int array constraint word list"
-msgstr "(6/6) Int array constraint word list"
+msgstr "(6/6) Llista restringida de paraules amb una matriu amb un enter"
#: backend/test.c:930
#, no-c-format
@@ -6256,28 +6493,30 @@ msgid ""
"(6/6) 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 "
-"list constraint."
+"(6/6) Opció per a la prova de l'enter amb percentatge com a unitat i "
+"usant una matriu amb una llista restringida de paraules."
#: backend/test.c:946
#, no-c-format
msgid "Fixed test options"
-msgstr "Fixed test options"
+msgstr "Opcions per a la prova fixa"
#: backend/test.c:959
#, no-c-format
msgid "(1/3) Fixed"
-msgstr "(1/3) Fixed"
+msgstr "(1/3) Fixa"
#: backend/test.c:960
#, 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."
+msgstr ""
+"(1/3) Opció per a la prova fixa sense unitats i no restringida a un "
+"conjunt."
#: backend/test.c:975
#, no-c-format
msgid "(2/3) Fixed constraint range"
-msgstr "(2/3) Fixed constraint range"
+msgstr "(2/3) Interval restringit de paraules"
#: backend/test.c:976
#, no-c-format
@@ -6285,48 +6524,53 @@ 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) Fixed test option with unit microsecond and constraint range set. "
-"Minimum is -42.17, maximum 32767.9999, and quant is 2.0."
+"(2/3) Opció per a la prova fixa amb microsegons com a unitat i un "
+"conjunt restringit a un interval. El mínim és -42,17, el màxim "
+"32767,9999 i «quant» és 2,0."
#: backend/test.c:992
#, no-c-format
msgid "(3/3) Fixed constraint word list"
-msgstr "(3/3) Fixed constraint word list"
+msgstr "(3/3) Llista fixa i restringida de paraules"
#: backend/test.c:993
#, 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."
+msgstr ""
+"(3/3) Opció per a la prova fixa sense unitats i restringida a un conjunt "
+"de llista de paraules."
#: backend/test.c:1008
#, no-c-format
msgid "String test options"
-msgstr "String test options"
+msgstr "Opcions per a la prova de la cadena"
#: backend/test.c:1021
#, no-c-format
msgid "(1/3) String"
-msgstr "(1/3) String"
+msgstr "(1/3) Cadena"
#: backend/test.c:1022
#, no-c-format
msgid "(1/3) String test option without constraint."
-msgstr "(1/3) String test option without constraint."
+msgstr "(1/3) Opció per a la prova de la cadena sense restringir."
#: backend/test.c:1039
#, no-c-format
msgid "(2/3) String constraint string list"
-msgstr "(2/3) String constraint string list"
+msgstr "(2/3) Llista restringida de cadenes"
#: backend/test.c:1040
#, no-c-format
msgid "(2/3) String test option with string list constraint."
-msgstr "(2/3) String test option with string list constraint."
+msgstr ""
+"(2/3) Opció per a la prova de la cadena amb una llista restringida de "
+"cadenes."
#: backend/test.c:1059
#, no-c-format
msgid "(3/3) String constraint long string list"
-msgstr "(3/3) String constraint long string list"
+msgstr "(3/3) Llista llarga i restringida de cadenes"
#: backend/test.c:1060
#, no-c-format
@@ -6334,23 +6578,23 @@ msgid ""
"(3/3) String test option with string list constraint. Contains some more "
"entries..."
msgstr ""
-"(3/3) String test option with string list constraint. Contains some more "
-"entries..."
+"(3/3) Opció per a la prova de la cadena amb una llista restringida de "
+"cadenes. Conté algunes entrades més..."
#: backend/test.c:1080
#, no-c-format
msgid "Button test options"
-msgstr "Button test options"
+msgstr "Opcions per a la prova del botó"
#: backend/test.c:1093
#, no-c-format
msgid "(1/1) Button"
-msgstr "(1/1) Button"
+msgstr "(1/1) Botó"
#: backend/test.c:1094
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
-msgstr "(1/1) Button test option. Prints some text..."
+msgstr "(1/1) Opció per a la prova del botó. Imprimeix algun text..."
#: backend/u12.c:149
#, no-c-format
@@ -6360,129 +6604,130 @@ msgstr "Color 36"
#: backend/umax.c:235
#, no-c-format
msgid "Use Image Composition"
-msgstr "Use Image Composition"
+msgstr "Usa la composició de la imatge"
#: backend/umax.c:236
#, no-c-format
msgid "Bi-level black and white (lineart mode)"
-msgstr "Bi-level black and white (lineart mode)"
+msgstr "Bi-nivell en blanc i negre (mode art lineal)"
#: backend/umax.c:237
#, no-c-format
msgid "Dithered/halftone black & white (halftone mode)"
-msgstr "Dithered/halftone black & white (halftone mode)"
+msgstr "Tramat/semi to en negre i blanc (mode semi to)"
#: backend/umax.c:238
#, no-c-format
msgid "Multi-level black & white (grayscale mode)"
-msgstr "Multi-level black & white (grayscale mode)"
+msgstr "Múltiples nivells en blanc i negre (mode escala de grisos)"
#: backend/umax.c:239
#, no-c-format
msgid "Multi-level RGB color (one pass color)"
-msgstr "Multi-level RGB color (one pass color)"
+msgstr "Múltiples nivells en color RGB (color d'una sola passada)"
#: backend/umax.c:240
#, no-c-format
msgid "Ignore calibration"
-msgstr "Ignore calibration"
+msgstr "Ignora el calibratge"
#: backend/umax.c:5733
#, no-c-format
msgid "Disable pre focus"
-msgstr "Disable pre focus"
+msgstr "Inhabilita l'enfocament previ"
#: backend/umax.c:5734
#, no-c-format
msgid "Do not calibrate focus"
-msgstr "Do not calibrate focus"
+msgstr "No calibris l'enfocament"
#: backend/umax.c:5745
#, no-c-format
msgid "Manual pre focus"
-msgstr "Manual pre focus"
+msgstr "Enfocament previ manual"
#: backend/umax.c:5757
#, no-c-format
msgid "Fix focus position"
-msgstr "Fix focus position"
+msgstr "Fixa la posició de l'enfocament"
#: backend/umax.c:5769
#, no-c-format
msgid "Lens calibration in doc position"
-msgstr "Lens calibration in doc position"
+msgstr "Calibratge de la lent a la posició del document"
#: backend/umax.c:5770
#, no-c-format
msgid "Calibrate lens focus in document position"
-msgstr "Calibrate lens focus in document position"
+msgstr "Calibra l'enfocament de la lent a la posició del document"
#: backend/umax.c:5781
#, no-c-format
msgid "Holder focus position 0mm"
-msgstr "Holder focus position 0mm"
+msgstr "Mantén la posició de l'enfocament a 0 mm"
#: backend/umax.c:5782
#, no-c-format
msgid "Use 0mm holder focus position instead of 0.6mm"
-msgstr "Use 0mm holder focus position instead of 0.6mm"
+msgstr ""
+"Usa una posició mantinguda de l'enfocament de 0 mm en lloc de 0,6 mm"
#: backend/umax.c:5885
#, no-c-format
msgid "Calibration mode"
-msgstr "Calibration mode"
+msgstr "Mode del calibratge"
#: backend/umax.c:5886
#, no-c-format
msgid "Define calibration mode"
-msgstr "Define calibration mode"
+msgstr "Defineix el mode del calibratge"
#: backend/umax_pp.c:640
#, no-c-format
msgid "Sets lamp on/off"
-msgstr "Sets lamp on/off"
+msgstr "Estableix la làmpada a encesa/apagada"
#: backend/umax_pp.c:649
#, no-c-format
msgid "UTA on"
-msgstr "UTA on"
+msgstr "Activa l'UTA"
#: backend/umax_pp.c:650
#, no-c-format
msgid "Sets UTA on/off"
-msgstr "Sets UTA on/off"
+msgstr "Estableix l'UTA a actiu/inactiu"
#: backend/umax_pp.c:771
#, no-c-format
msgid "Offset"
-msgstr "Offset"
+msgstr "Desplaçament"
#: backend/umax_pp.c:773
#, no-c-format
msgid "Color channels offset settings"
-msgstr "Color channels offset settings"
+msgstr "Ajustaments del desplaçament per als canals de color"
#: backend/umax_pp.c:780
#, no-c-format
msgid "Gray offset"
-msgstr "Gray offset"
+msgstr "Desplaçament del gris"
#: backend/umax_pp.c:781
#, no-c-format
msgid "Sets gray channel offset"
-msgstr "Sets gray channel offset"
+msgstr "Estableix el desplaçament del canal gris"
#: backend/umax_pp.c:793
#, no-c-format
msgid "Sets red channel offset"
-msgstr "Sets red channel offset"
+msgstr "Estableix el desplaçament del canal vermell"
#: backend/umax_pp.c:805
#, no-c-format
msgid "Sets green channel offset"
-msgstr "Sets green channel offset"
+msgstr "Estableix el desplaçament del canal verd"
#: backend/umax_pp.c:817
#, no-c-format
msgid "Sets blue channel offset"
-msgstr "Sets blue channel offset"
+msgstr "Estableix el desplaçament del canal blau"
diff --git a/po/en@boldquot.po b/po/ca@valencia.po
index d22038d..1ec2034 100644
--- a/po/en@boldquot.po
+++ b/po/ca@valencia.po
@@ -1,94 +1,69 @@
-# English translations for sane-backends package.
-# Copyright (C) 2017 The SANE developers
+# Copyright (C) 2018 The SANE developers
# This file is distributed under the same license as the sane-backends package.
-# Automatically generated, 2017.
-#
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
-# This catalog furthermore displays the text between the quotation marks in
-# bold face, assuming the VT100/XTerm escape sequences.
#
+# Antoni Bella Pérez <antonibella5@yahoo.com>, 2018.
msgid ""
msgstr ""
-"Project-Id-Version: sane-backends 1.0.27\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2017-05-22 11:18-0400\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: en@boldquot\n"
+"Project-Id-Version: sane-backends 1.0.27git\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2018-09-10 00:37+0100\n"
+"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
+"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
+"Language: ca@valencia\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Lokalize 2.0\n"
#: include/sane/saneopts.h:154
#, no-c-format
msgid "Number of options"
-msgstr "Number of options"
+msgstr "Nombre d'opcions"
#: include/sane/saneopts.h:156
#, no-c-format
msgid "Standard"
-msgstr "Standard"
+msgstr "Estàndard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
-msgstr "Geometry"
+msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
-msgstr "Enhancement"
+msgstr "Millora"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
#, no-c-format
msgid "Advanced"
-msgstr "Advanced"
+msgstr "Avançat"
#: include/sane/saneopts.h:160
#, no-c-format
@@ -98,114 +73,114 @@ msgstr "Sensors"
#: include/sane/saneopts.h:162
#, no-c-format
msgid "Preview"
-msgstr "Preview"
+msgstr "Vista prèvia"
#: include/sane/saneopts.h:163
#, no-c-format
msgid "Force monochrome preview"
-msgstr "Force monochrome preview"
+msgstr "Força la vista prèvia en monocrom"
#: include/sane/saneopts.h:164
#, no-c-format
msgid "Bit depth"
-msgstr "Bit depth"
+msgstr "Bits de profunditat"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
-msgstr "Scan mode"
+msgstr "Mode d'escaneig"
#: include/sane/saneopts.h:166
#, no-c-format
msgid "Scan speed"
-msgstr "Scan speed"
+msgstr "Velocitat de l'escàner"
#: include/sane/saneopts.h:167
#, no-c-format
msgid "Scan source"
-msgstr "Scan source"
+msgstr "Font de l'escàner"
#: include/sane/saneopts.h:168
#, no-c-format
msgid "Force backtracking"
-msgstr "Force backtracking"
+msgstr "Força el retrocés"
#: include/sane/saneopts.h:169
#, no-c-format
msgid "Top-left x"
-msgstr "Top-left x"
+msgstr "A dalt-esquerra X"
#: include/sane/saneopts.h:170
#, no-c-format
msgid "Top-left y"
-msgstr "Top-left y"
+msgstr "A dalt-esquerra Y"
#: include/sane/saneopts.h:171
#, no-c-format
msgid "Bottom-right x"
-msgstr "Bottom-right x"
+msgstr "A baix-dreta X"
#: include/sane/saneopts.h:172
#, no-c-format
msgid "Bottom-right y"
-msgstr "Bottom-right y"
+msgstr "A baix-dreta Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
-msgstr "Scan resolution"
+msgstr "Resolució de l'escàner"
#: include/sane/saneopts.h:174
#, no-c-format
msgid "X-resolution"
-msgstr "X-resolution"
+msgstr "Resolució X"
#: include/sane/saneopts.h:175
#, no-c-format
msgid "Y-resolution"
-msgstr "Y-resolution"
+msgstr "Resolució Y"
#: include/sane/saneopts.h:176
#, no-c-format
msgid "Page width"
-msgstr "Page width"
+msgstr "Amplària de la pàgina"
#: include/sane/saneopts.h:177
#, no-c-format
msgid "Page height"
-msgstr "Page height"
+msgstr "Alçària de la pàgina"
#: include/sane/saneopts.h:178
#, no-c-format
msgid "Use custom gamma table"
-msgstr "Use custom gamma table"
+msgstr "Usa una taula de gamma personalitzada"
#: include/sane/saneopts.h:179
#, no-c-format
msgid "Image intensity"
-msgstr "Image intensity"
+msgstr "Intensitat de la imatge"
#: include/sane/saneopts.h:180
#, no-c-format
msgid "Red intensity"
-msgstr "Red intensity"
+msgstr "Intensitat del roig"
#: include/sane/saneopts.h:181
#, no-c-format
msgid "Green intensity"
-msgstr "Green intensity"
+msgstr "Intensitat del verd"
#: include/sane/saneopts.h:182
#, no-c-format
msgid "Blue intensity"
-msgstr "Blue intensity"
+msgstr "Intensitat del blau"
#: include/sane/saneopts.h:183
#, no-c-format
msgid "Brightness"
-msgstr "Brightness"
+msgstr "Brillantor"
#: include/sane/saneopts.h:184
#, no-c-format
@@ -215,230 +190,230 @@ msgstr "Contrast"
#: include/sane/saneopts.h:185
#, no-c-format
msgid "Grain size"
-msgstr "Grain size"
+msgstr "Mida del gra"
#: include/sane/saneopts.h:186
#, no-c-format
msgid "Halftoning"
-msgstr "Halftoning"
+msgstr "Semi to"
#: include/sane/saneopts.h:187
#, no-c-format
msgid "Black level"
-msgstr "Black level"
+msgstr "Nivell de negre"
#: include/sane/saneopts.h:188
#, no-c-format
msgid "White level"
-msgstr "White level"
+msgstr "Nivell de blanc"
#: include/sane/saneopts.h:189
#, no-c-format
msgid "White level for red"
-msgstr "White level for red"
+msgstr "Nivell de blanc per al roig"
#: include/sane/saneopts.h:190
#, no-c-format
msgid "White level for green"
-msgstr "White level for green"
+msgstr "Nivell de blanc per al verd"
#: include/sane/saneopts.h:191
#, no-c-format
msgid "White level for blue"
-msgstr "White level for blue"
+msgstr "Nivell de blanc per al blau"
#: include/sane/saneopts.h:192
#, no-c-format
msgid "Shadow"
-msgstr "Shadow"
+msgstr "Ombra"
#: include/sane/saneopts.h:193
#, no-c-format
msgid "Shadow for red"
-msgstr "Shadow for red"
+msgstr "Ombra per al roig"
#: include/sane/saneopts.h:194
#, no-c-format
msgid "Shadow for green"
-msgstr "Shadow for green"
+msgstr "Ombra per al verd"
#: include/sane/saneopts.h:195
#, no-c-format
msgid "Shadow for blue"
-msgstr "Shadow for blue"
+msgstr "Ombra per al blau"
#: include/sane/saneopts.h:196
#, no-c-format
msgid "Highlight"
-msgstr "Highlight"
+msgstr "Llum intensa"
#: include/sane/saneopts.h:197
#, no-c-format
msgid "Highlight for red"
-msgstr "Highlight for red"
+msgstr "Llum intensa per al roig"
#: include/sane/saneopts.h:198
#, no-c-format
msgid "Highlight for green"
-msgstr "Highlight for green"
+msgstr "Llum intensa per al verd"
#: include/sane/saneopts.h:199
#, no-c-format
msgid "Highlight for blue"
-msgstr "Highlight for blue"
+msgstr "Llum intensa per al blau"
#: include/sane/saneopts.h:200
#, no-c-format
msgid "Hue"
-msgstr "Hue"
+msgstr "To"
#: include/sane/saneopts.h:201
#, no-c-format
msgid "Saturation"
-msgstr "Saturation"
+msgstr "Saturació"
#: include/sane/saneopts.h:202
#, no-c-format
msgid "Filename"
-msgstr "Filename"
+msgstr "Nom de fitxer"
#: include/sane/saneopts.h:203
#, no-c-format
msgid "Halftone pattern size"
-msgstr "Halftone pattern size"
+msgstr "Mida del patró per al semi to"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
-msgstr "Halftone pattern"
+msgstr "Patró per al semi to"
#: include/sane/saneopts.h:205
#, no-c-format
msgid "Bind X and Y resolution"
-msgstr "Bind X and Y resolution"
+msgstr "Enllaça les resolucions X i Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
-msgstr "Negative"
+msgstr "Negatiu"
#: include/sane/saneopts.h:207
#, no-c-format
msgid "Quality calibration"
-msgstr "Quality calibration"
+msgstr "Calibratge de la qualitat"
#: include/sane/saneopts.h:208
#, no-c-format
msgid "Double Optical Resolution"
-msgstr "Double Optical Resolution"
+msgstr "Dobla la resolució òptica"
#: include/sane/saneopts.h:209
#, no-c-format
msgid "Bind RGB"
-msgstr "Bind RGB"
+msgstr "Enllaça el RGB"
#: include/sane/saneopts.h:210 backend/sm3840.c:770
#, no-c-format
msgid "Threshold"
-msgstr "Threshold"
+msgstr "Llindar"
#: include/sane/saneopts.h:211
#, no-c-format
msgid "Analog gamma correction"
-msgstr "Analog gamma correction"
+msgstr "Correcció de la gamma analògica"
#: include/sane/saneopts.h:212
#, no-c-format
msgid "Analog gamma red"
-msgstr "Analog gamma red"
+msgstr "Gamma analògica vermella"
#: include/sane/saneopts.h:213
#, no-c-format
msgid "Analog gamma green"
-msgstr "Analog gamma green"
+msgstr "Gamma analògica verda"
#: include/sane/saneopts.h:214
#, no-c-format
msgid "Analog gamma blue"
-msgstr "Analog gamma blue"
+msgstr "Gamma analògica blava"
#: include/sane/saneopts.h:215
#, no-c-format
msgid "Bind analog gamma"
-msgstr "Bind analog gamma"
+msgstr "Enllaça amb la gamma analògica"
#: include/sane/saneopts.h:216
#, no-c-format
msgid "Warmup lamp"
-msgstr "Warmup lamp"
+msgstr "Escalfament de la làmpada"
#: include/sane/saneopts.h:217
#, no-c-format
msgid "Cal. exposure-time"
-msgstr "Cal. exposure-time"
+msgstr "Cal. el temps d'exposició"
#: include/sane/saneopts.h:218
#, no-c-format
msgid "Cal. exposure-time for red"
-msgstr "Cal. exposure-time for red"
+msgstr "Cal. el temps d'exposició per al roig"
#: include/sane/saneopts.h:219
#, no-c-format
msgid "Cal. exposure-time for green"
-msgstr "Cal. exposure-time for green"
+msgstr "Cal. el temps d'exposició per al verd"
#: include/sane/saneopts.h:221
#, no-c-format
msgid "Cal. exposure-time for blue"
-msgstr "Cal. exposure-time for blue"
+msgstr "Cal. el temps d'exposició per al blau"
#: include/sane/saneopts.h:222
#, no-c-format
msgid "Scan exposure-time"
-msgstr "Scan exposure-time"
+msgstr "Temps d'exposició de l'escaneig"
#: include/sane/saneopts.h:223
#, no-c-format
msgid "Scan exposure-time for red"
-msgstr "Scan exposure-time for red"
+msgstr "Temps d'exposició de l'escaneig per al roig"
#: include/sane/saneopts.h:224
#, no-c-format
msgid "Scan exposure-time for green"
-msgstr "Scan exposure-time for green"
+msgstr "Temps d'exposició de l'escaneig per al verd"
#: include/sane/saneopts.h:226
#, no-c-format
msgid "Scan exposure-time for blue"
-msgstr "Scan exposure-time for blue"
+msgstr "Temps d'exposició de l'escaneig per al blau"
#: include/sane/saneopts.h:227
#, no-c-format
msgid "Set exposure-time"
-msgstr "Set exposure-time"
+msgstr "Estableix el temps d'exposició"
#: include/sane/saneopts.h:228
#, no-c-format
msgid "Cal. lamp density"
-msgstr "Cal. lamp density"
+msgstr "Cal. densitat de la llum"
#: include/sane/saneopts.h:229
#, no-c-format
msgid "Scan lamp density"
-msgstr "Scan lamp density"
+msgstr "Densitat de la llum en escanejar"
#: include/sane/saneopts.h:230
#, no-c-format
msgid "Set lamp density"
-msgstr "Set lamp density"
+msgstr "Estableix la densitat de la llum"
#: include/sane/saneopts.h:231 backend/umax.c:5829
#, no-c-format
msgid "Lamp off at exit"
-msgstr "Lamp off at exit"
+msgstr "Apaga la làmpada en eixir"
#: include/sane/saneopts.h:245
#, no-c-format
@@ -446,38 +421,38 @@ msgid ""
"Read-only option that specifies how many options a specific devices "
"supports."
msgstr ""
-"Read-only option that specifies how many options a specific devices "
-"supports."
+"Opció de només lectura que especifica quantes opcions admet un "
+"dispositiu específic."
#: include/sane/saneopts.h:248
#, no-c-format
msgid "Source, mode and resolution options"
-msgstr "Source, mode and resolution options"
+msgstr "Opcions per a la font, mode i resolució"
#: include/sane/saneopts.h:249
#, no-c-format
msgid "Scan area and media size options"
-msgstr "Scan area and media size options"
+msgstr "Opcions per a l'àrea d'escaneig i mida del suport"
#: include/sane/saneopts.h:250
#, no-c-format
msgid "Image modification options"
-msgstr "Image modification options"
+msgstr "Opcions per a la modificació de la imatge"
#: include/sane/saneopts.h:251
#, no-c-format
msgid "Hardware specific options"
-msgstr "Hardware specific options"
+msgstr "Opcions específiques del maquinari"
#: include/sane/saneopts.h:252
#, no-c-format
msgid "Scanner sensors and buttons"
-msgstr "Scanner sensors and buttons"
+msgstr "Sensors i botons de l'escàner"
#: include/sane/saneopts.h:255
#, no-c-format
msgid "Request a preview-quality scan."
-msgstr "Request a preview-quality scan."
+msgstr "Sol·licita una vista prèvia de qualitat de l'escaneig."
#: include/sane/saneopts.h:258
#, no-c-format
@@ -486,9 +461,10 @@ 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 ""
-"Request that all previews are done in monochrome mode. On a three-pass "
-"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."
+"Demana que totes les vistes prèvies es facen en el mode monocrom. En un "
+"escàner de tres passos, això reduirà el nombre de passos a un i en un "
+"escàner d'un sol pas, això reduirà els requisits de memòria i el temps "
+"d'escaneig de la vista prèvia."
#: include/sane/saneopts.h:264
#, no-c-format
@@ -496,63 +472,64 @@ msgid ""
"Number of bits per sample, typical values are 1 for \"line-art\" and 8 "
"for multibit scans."
msgstr ""
-"Number of bits per sample, typical values are 1 for “line-art” and "
-"8 for multibit scans."
+"Nombre de bits per mostra, els valors típics són 1 pels escaneigs amb "
+"«art lineal» i 8 pels escaneigs amb «múltiples bits»."
#: include/sane/saneopts.h:268
#, no-c-format
msgid "Selects the scan mode (e.g., lineart, monochrome, or color)."
-msgstr "Selects the scan mode (e.g., lineart, monochrome, or color)."
+msgstr ""
+"Selecciona el mode d'escaneig (p. ex., art lineal, monocrom o color)."
#: include/sane/saneopts.h:271
#, no-c-format
msgid "Determines the speed at which the scan proceeds."
-msgstr "Determines the speed at which the scan proceeds."
+msgstr "Determina la velocitat amb la qual procedirà l'escàner."
#: include/sane/saneopts.h:274
#, no-c-format
msgid "Selects the scan source (such as a document-feeder)."
-msgstr "Selects the scan source (such as a document-feeder)."
+msgstr "Selecciona la font de l'escàner (com un alimentador de documents)."
#: include/sane/saneopts.h:277
#, no-c-format
msgid "Controls whether backtracking is forced."
-msgstr "Controls whether backtracking is forced."
+msgstr "Controla si es forçarà el retrocés."
#: include/sane/saneopts.h:280
#, no-c-format
msgid "Top-left x position of scan area."
-msgstr "Top-left x position of scan area."
+msgstr "Posició X a dalt-esquerra de l'àrea d'escaneig."
#: include/sane/saneopts.h:283
#, no-c-format
msgid "Top-left y position of scan area."
-msgstr "Top-left y position of scan area."
+msgstr "Posició Y a dalt-esquerra de l'àrea d'escaneig."
#: include/sane/saneopts.h:286
#, no-c-format
msgid "Bottom-right x position of scan area."
-msgstr "Bottom-right x position of scan area."
+msgstr "Posició X a baix-dreta de l'àrea d'escaneig."
#: include/sane/saneopts.h:289
#, no-c-format
msgid "Bottom-right y position of scan area."
-msgstr "Bottom-right y position of scan area."
+msgstr "Posició Y a baix-dreta de l'àrea d'escaneig."
#: include/sane/saneopts.h:292
#, no-c-format
msgid "Sets the resolution of the scanned image."
-msgstr "Sets the resolution of the scanned image."
+msgstr "Estableix la resolució de la imatge escanejada."
#: include/sane/saneopts.h:295
#, no-c-format
msgid "Sets the horizontal resolution of the scanned image."
-msgstr "Sets the horizontal resolution of the scanned image."
+msgstr "Estableix la resolució horitzontal de la imatge escanejada."
#: include/sane/saneopts.h:298
#, no-c-format
msgid "Sets the vertical resolution of the scanned image."
-msgstr "Sets the vertical resolution of the scanned image."
+msgstr "Estableix la resolució vertical de la imatge escanejada."
#: include/sane/saneopts.h:301
#, no-c-format
@@ -560,20 +537,21 @@ msgid ""
"Specifies the width of the media. Required for automatic centering of "
"sheet-fed scans."
msgstr ""
-"Specifies the width of the media. Required for automatic centering of "
-"sheet-fed scans."
+"Especifica l'amplària del suport. Es requereix per a centrar "
+"automàticament els escanejos dels fulls."
#: include/sane/saneopts.h:305
#, no-c-format
msgid "Specifies the height of the media."
-msgstr "Specifies the height of the media."
+msgstr "Especifica l'alçària del suport."
#: include/sane/saneopts.h:308
#, no-c-format
msgid ""
"Determines whether a builtin or a custom gamma-table should be used."
msgstr ""
-"Determines whether a builtin or a custom gamma-table should be used."
+"Determina si s'haurà d'usar una taula de gamma integrada o "
+"personalitzada."
#: include/sane/saneopts.h:312
#, no-c-format
@@ -582,34 +560,34 @@ msgid ""
"red, green, and blue channels simultaneously (i.e., it is an intensity "
"gamma table)."
msgstr ""
-"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)."
+"Taula per a la correcció de la gamma. En el mode de color, aquesta opció "
+"afectarà igualment els canals roig, verd i blau alhora (és a dir, "
+"aquesta és una taula de gamma per a la intensitat)."
#: include/sane/saneopts.h:317
#, no-c-format
msgid "Gamma-correction table for the red band."
-msgstr "Gamma-correction table for the red band."
+msgstr "Taula per a la correcció de la gamma per a la banda vermella."
#: include/sane/saneopts.h:320
#, no-c-format
msgid "Gamma-correction table for the green band."
-msgstr "Gamma-correction table for the green band."
+msgstr "Taula per a la correcció de la gamma per a la banda verda."
#: include/sane/saneopts.h:323
#, no-c-format
msgid "Gamma-correction table for the blue band."
-msgstr "Gamma-correction table for the blue band."
+msgstr "Taula per a la correcció de la gamma per a la banda blava."
#: include/sane/saneopts.h:326
#, no-c-format
msgid "Controls the brightness of the acquired image."
-msgstr "Controls the brightness of the acquired image."
+msgstr "Controla la brillantor de la imatge obtinguda."
#: include/sane/saneopts.h:329
#, no-c-format
msgid "Controls the contrast of the acquired image."
-msgstr "Controls the contrast of the acquired image."
+msgstr "Controla el contrast de la imatge obtinguda."
#: include/sane/saneopts.h:332
#, no-c-format
@@ -617,85 +595,95 @@ msgid ""
"Selects the \"graininess\" of the acquired image. Smaller values result "
"in sharper images."
msgstr ""
-"Selects the “graininess” of the acquired image. Smaller values "
-"result in sharper images."
+"Selecciona el «granulat» de la imatge obtinguda. Els valors més petits "
+"resulten en imatges més definides."
#: include/sane/saneopts.h:336
#, no-c-format
msgid "Selects whether the acquired image should be halftoned (dithered)."
-msgstr "Selects whether the acquired image should be halftoned (dithered)."
+msgstr ""
+"Selecciona si la imatge obtinguda s'haurà de convertir a semi to "
+"(tramat)."
#: include/sane/saneopts.h:339 include/sane/saneopts.h:354
#, no-c-format
msgid "Selects what radiance level should be considered \"black\"."
-msgstr "Selects what radiance level should be considered “black”."
+msgstr "Selecciona quin nivell de radiància s'haurà de considerar «negre»."
#: include/sane/saneopts.h:342 include/sane/saneopts.h:363
#, no-c-format
msgid "Selects what radiance level should be considered \"white\"."
-msgstr "Selects what radiance level should be considered “white”."
+msgstr "Selecciona quin nivell de radiància s'haurà de considerar «blanc»."
#: include/sane/saneopts.h:345
#, no-c-format
msgid "Selects what red radiance level should be considered \"white\"."
msgstr ""
-"Selects what red radiance level should be considered “white”."
+"Selecciona quin nivell de radiància del roig s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:348
#, no-c-format
msgid "Selects what green radiance level should be considered \"white\"."
msgstr ""
-"Selects what green radiance level should be considered “white”."
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:351
#, no-c-format
msgid "Selects what blue radiance level should be considered \"white\"."
msgstr ""
-"Selects what blue radiance level should be considered “white”."
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«blanc»."
#: include/sane/saneopts.h:356
#, no-c-format
msgid "Selects what red radiance level should be considered \"black\"."
msgstr ""
-"Selects what red radiance level should be considered “black”."
+"Selecciona quin nivell de radiància del roig s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:358
#, no-c-format
msgid "Selects what green radiance level should be considered \"black\"."
msgstr ""
-"Selects what green radiance level should be considered “black”."
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:360
#, no-c-format
msgid "Selects what blue radiance level should be considered \"black\"."
msgstr ""
-"Selects what blue radiance level should be considered “black”."
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«negre»."
#: include/sane/saneopts.h:365
#, no-c-format
msgid "Selects what red radiance level should be considered \"full red\"."
msgstr ""
-"Selects what red radiance level should be considered “full red”."
+"Selecciona quin nivell de radiància del roig s'haurà de considerar "
+"«totalment roig»."
#: include/sane/saneopts.h:367
#, no-c-format
msgid ""
"Selects what green radiance level should be considered \"full green\"."
msgstr ""
-"Selects what green radiance level should be considered “full "
-"green”."
+"Selecciona quin nivell de radiància del verd s'haurà de considerar "
+"«totalment verd»."
#: include/sane/saneopts.h:370
#, no-c-format
msgid ""
"Selects what blue radiance level should be considered \"full blue\"."
msgstr ""
-"Selects what blue radiance level should be considered “full blue”."
+"Selecciona quin nivell de radiància del blau s'haurà de considerar "
+"«totalment blau»."
#: include/sane/saneopts.h:374
#, no-c-format
msgid "Controls the \"hue\" (blue-level) of the acquired image."
-msgstr "Controls the “hue” (blue-level) of the acquired image."
+msgstr "Controla el «to» (nivell del blau) de la imatge obtinguda."
#: include/sane/saneopts.h:377
#, no-c-format
@@ -703,13 +691,14 @@ msgid ""
"The saturation level controls the amount of \"blooming\" that occurs "
"when acquiring an image with a camera. Larger values cause more blooming."
msgstr ""
-"The saturation level controls the amount of “blooming” that occurs "
-"when acquiring an image with a camera. Larger values cause more blooming."
+"El nivell de saturació controla la quantitat d'«enlluernament» que es "
+"produeix en obtindre una imatge amb una càmera. Els valors més grans "
+"causen més enlluernament."
#: include/sane/saneopts.h:382
#, no-c-format
msgid "The filename of the image to be loaded."
-msgstr "The filename of the image to be loaded."
+msgstr "El nom del fitxer de la imatge que es carregarà."
#: include/sane/saneopts.h:385
#, no-c-format
@@ -717,175 +706,176 @@ msgid ""
"Sets the size of the halftoning (dithering) pattern used when scanning "
"halftoned images."
msgstr ""
-"Sets the size of the halftoning (dithering) pattern used when scanning "
-"halftoned images."
+"Estableix la mida del patró per al semi to (tramatge) que s'usarà per a "
+"escanejar les imatges amb semi to."
#: include/sane/saneopts.h:389
#, no-c-format
msgid ""
"Defines the halftoning (dithering) pattern for scanning halftoned images."
msgstr ""
-"Defines the halftoning (dithering) pattern for scanning halftoned images."
+"Defineix el patró per al semi to (tramatge) que s'usarà per a escanejar "
+"les imatges amb semi to."
#: include/sane/saneopts.h:393
#, no-c-format
msgid "Use same values for X and Y resolution"
-msgstr "Use same values for X and Y resolution"
+msgstr "Usa els mateixos valors per a la resolució X i Y"
#: include/sane/saneopts.h:395
#, no-c-format
msgid "Swap black and white"
-msgstr "Swap black and white"
+msgstr "Intercanvia el negre i el blanc"
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Do a quality white-calibration"
-msgstr "Do a quality white-calibration"
+msgstr "Fes un calibratge de qualitat del blanc"
#: include/sane/saneopts.h:399
#, no-c-format
msgid "Use lens that doubles optical resolution"
-msgstr "Use lens that doubles optical resolution"
+msgstr "Usa una lent que dobli la resolució òptica"
#: include/sane/saneopts.h:401 include/sane/saneopts.h:413
#, no-c-format
msgid "In RGB-mode use same values for each color"
-msgstr "In RGB-mode use same values for each color"
+msgstr "En el mode RGB, usa els mateixos valors per a cada color"
#: include/sane/saneopts.h:403
#, no-c-format
msgid "Select minimum-brightness to get a white point"
-msgstr "Select minimum-brightness to get a white point"
+msgstr "Selecciona la brillantor mínima per obtindre un punt blanc"
#: include/sane/saneopts.h:405
#, no-c-format
msgid "Analog gamma-correction"
-msgstr "Analog gamma-correction"
+msgstr "Correcció de la gamma analògica"
#: include/sane/saneopts.h:407
#, no-c-format
msgid "Analog gamma-correction for red"
-msgstr "Analog gamma-correction for red"
+msgstr "Correcció de la gamma analògica per al roig"
#: include/sane/saneopts.h:409
#, no-c-format
msgid "Analog gamma-correction for green"
-msgstr "Analog gamma-correction for green"
+msgstr "Correcció de la gamma analògica per al verd"
#: include/sane/saneopts.h:411
#, no-c-format
msgid "Analog gamma-correction for blue"
-msgstr "Analog gamma-correction for blue"
+msgstr "Correcció de la gamma analògica per al blau"
#: include/sane/saneopts.h:415
#, no-c-format
msgid "Warmup lamp before scanning"
-msgstr "Warmup lamp before scanning"
+msgstr "Escalfament de la làmpada abans d'escanejar"
#: include/sane/saneopts.h:417
#, no-c-format
msgid "Define exposure-time for calibration"
-msgstr "Define exposure-time for calibration"
+msgstr "Defineix el temps d'exposició per al calibratge"
#: include/sane/saneopts.h:419
#, no-c-format
msgid "Define exposure-time for red calibration"
-msgstr "Define exposure-time for red calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del roig"
#: include/sane/saneopts.h:421
#, no-c-format
msgid "Define exposure-time for green calibration"
-msgstr "Define exposure-time for green calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del verd"
#: include/sane/saneopts.h:423
#, no-c-format
msgid "Define exposure-time for blue calibration"
-msgstr "Define exposure-time for blue calibration"
+msgstr "Defineix el temps d'exposició per al calibratge del blau"
#: include/sane/saneopts.h:425
#, no-c-format
msgid "Define exposure-time for scan"
-msgstr "Define exposure-time for scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig"
#: include/sane/saneopts.h:427
#, no-c-format
msgid "Define exposure-time for red scan"
-msgstr "Define exposure-time for red scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del roig"
#: include/sane/saneopts.h:429
#, no-c-format
msgid "Define exposure-time for green scan"
-msgstr "Define exposure-time for green scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del verd"
#: include/sane/saneopts.h:431
#, no-c-format
msgid "Define exposure-time for blue scan"
-msgstr "Define exposure-time for blue scan"
+msgstr "Defineix el temps d'exposició per a l'escaneig del blau"
#: include/sane/saneopts.h:433
#, no-c-format
msgid "Enable selection of exposure-time"
-msgstr "Enable selection of exposure-time"
+msgstr "Habilita la selecció del temps d'exposició"
#: include/sane/saneopts.h:435
#, no-c-format
msgid "Define lamp density for calibration"
-msgstr "Define lamp density for calibration"
+msgstr "Defineix la densitat de la llum per al calibratge"
#: include/sane/saneopts.h:437
#, no-c-format
msgid "Define lamp density for scan"
-msgstr "Define lamp density for scan"
+msgstr "Defineix la densitat de la llum per a l'escaneig"
#: include/sane/saneopts.h:439
#, no-c-format
msgid "Enable selection of lamp density"
-msgstr "Enable selection of lamp density"
+msgstr "Habilita la selecció de la densitat de la llum"
#: include/sane/saneopts.h:441 backend/umax.c:5830
#, no-c-format
msgid "Turn off lamp when program exits"
-msgstr "Turn off lamp when program exits"
+msgstr "Apaga la làmpada quan se isca del programa"
#: include/sane/saneopts.h:444
#, no-c-format
msgid "Scan button"
-msgstr "Scan button"
+msgstr "Botó de l'escàner"
#: include/sane/saneopts.h:445
#, no-c-format
msgid "Email button"
-msgstr "Email button"
+msgstr "Botó del correu electrònic"
#: include/sane/saneopts.h:446
#, no-c-format
msgid "Fax button"
-msgstr "Fax button"
+msgstr "Botó del fax"
#: include/sane/saneopts.h:447
#, no-c-format
msgid "Copy button"
-msgstr "Copy button"
+msgstr "Botó per a copiar"
#: include/sane/saneopts.h:448
#, no-c-format
msgid "PDF button"
-msgstr "PDF button"
+msgstr "Botó de PDF"
#: include/sane/saneopts.h:449
#, no-c-format
msgid "Cancel button"
-msgstr "Cancel button"
+msgstr "Botó per a cancel·lar"
#: include/sane/saneopts.h:450
#, no-c-format
msgid "Page loaded"
-msgstr "Page loaded"
+msgstr "S'ha carregat la pàgina"
#: include/sane/saneopts.h:451
#, no-c-format
msgid "Cover open"
-msgstr "Cover open"
+msgstr "La tapa es troba oberta"
#: include/sane/saneopts.h:454
#, no-c-format
@@ -895,117 +885,117 @@ msgstr "Color"
#: include/sane/saneopts.h:455
#, no-c-format
msgid "Color Lineart"
-msgstr "Color Lineart"
+msgstr "Color per a l'art lineal"
#: include/sane/saneopts.h:456
#, no-c-format
msgid "Color Halftone"
-msgstr "Color Halftone"
+msgstr "Color per al semi to"
#: include/sane/saneopts.h:457
#, no-c-format
msgid "Gray"
-msgstr "Gray"
+msgstr "Gris"
#: include/sane/saneopts.h:458
#, no-c-format
msgid "Halftone"
-msgstr "Halftone"
+msgstr "Semi to"
#: include/sane/saneopts.h:459
#, no-c-format
msgid "Lineart"
-msgstr "Lineart"
+msgstr "Art lineal"
#: backend/sane_strstatus.c:59
#, no-c-format
msgid "Success"
-msgstr "Success"
+msgstr "Correcte"
#: backend/sane_strstatus.c:62
#, no-c-format
msgid "Operation not supported"
-msgstr "Operation not supported"
+msgstr "Operació no admesa"
#: backend/sane_strstatus.c:65
#, no-c-format
msgid "Operation was cancelled"
-msgstr "Operation was cancelled"
+msgstr "L'operació ha estat cancel·lada"
#: backend/sane_strstatus.c:68
#, no-c-format
msgid "Device busy"
-msgstr "Device busy"
+msgstr "Dispositiu ocupat"
#: backend/sane_strstatus.c:71
#, no-c-format
msgid "Invalid argument"
-msgstr "Invalid argument"
+msgstr "Argument no vàlid"
#: backend/sane_strstatus.c:74
#, no-c-format
msgid "End of file reached"
-msgstr "End of file reached"
+msgstr "S'ha arribat al final del fitxer"
#: backend/sane_strstatus.c:77
#, no-c-format
msgid "Document feeder jammed"
-msgstr "Document feeder jammed"
+msgstr "S'ha embussat l'alimentador de documents"
#: backend/sane_strstatus.c:80
#, no-c-format
msgid "Document feeder out of documents"
-msgstr "Document feeder out of documents"
+msgstr "L'alimentador de documents està buit"
#: backend/sane_strstatus.c:83
#, no-c-format
msgid "Scanner cover is open"
-msgstr "Scanner cover is open"
+msgstr "La tapa de l'escàner està oberta"
#: backend/sane_strstatus.c:86
#, no-c-format
msgid "Error during device I/O"
-msgstr "Error during device I/O"
+msgstr "Error durant l'E/S amb el dispositiu"
#: backend/sane_strstatus.c:89
#, no-c-format
msgid "Out of memory"
-msgstr "Out of memory"
+msgstr "Memòria exhaurida"
#: backend/sane_strstatus.c:92
#, no-c-format
msgid "Access to resource has been denied"
-msgstr "Access to resource has been denied"
+msgstr "S'ha denegat l'accés al recurs"
#: backend/sane_strstatus.c:96
#, no-c-format
msgid "Lamp not ready, please retry"
-msgstr "Lamp not ready, please retry"
+msgstr "La làmpada no està preparada. Torneu-ho a provar"
#: backend/sane_strstatus.c:101
#, no-c-format
msgid "Scanner mechanism locked for transport"
-msgstr "Scanner mechanism locked for transport"
+msgstr "El mecanisme de l'escàner està bloquejat per al transport"
#: backend/artec_eplus48u.c:2874 backend/pnm.c:282
#, no-c-format
msgid "Defaults"
-msgstr "Defaults"
+msgstr "Predeterminats"
#: backend/artec_eplus48u.c:2876
#, no-c-format
msgid "Set default values for enhancement controls."
-msgstr "Set default values for enhancement controls."
+msgstr "Estableix els valors predeterminats per als controls de millora."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
-msgstr "Calibration"
+msgstr "Calibratge"
#: backend/artec_eplus48u.c:2941
#, no-c-format
msgid "Calibrate before next scan"
-msgstr "Calibrate before next scan"
+msgstr "Calibra abans del següent escaneig"
#: backend/artec_eplus48u.c:2943
#, no-c-format
@@ -1013,13 +1003,14 @@ msgid ""
"If enabled, the device will be calibrated before the next scan. "
"Otherwise, calibration is performed only before the first start."
msgstr ""
-"If enabled, the device will be calibrated before the next scan. "
-"Otherwise, calibration is performed only before the first start."
+"Si està habilitada, el dispositiu serà calibrat abans del següent "
+"escaneig. En cas contrari, el calibratge només es realitzarà abans del "
+"primer inici."
#: backend/artec_eplus48u.c:2954
#, no-c-format
msgid "Only perform shading-correction"
-msgstr "Only perform shading-correction"
+msgstr "Realitza només la correcció de les ombres"
#: backend/artec_eplus48u.c:2956
#, no-c-format
@@ -1028,801 +1019,817 @@ msgid ""
"The default values for gain, offset and exposure time, either build-in "
"or from the configuration file, are used."
msgstr ""
-"If enabled, only the shading correction is performed during calibration. "
-"The default values for gain, offset and exposure time, either build-in "
-"or from the configuration file, are used."
+"Si està habilitada, només es realitzarà la correcció de les ombres "
+"durant el calibratge. Es faran servir els valors predeterminats per al "
+"guany, desplaçament i temps d'exposició, siga els integrats o des del "
+"fitxer de configuració."
#: backend/artec_eplus48u.c:2967
#, no-c-format
msgid "Button state"
-msgstr "Button state"
+msgstr "Botó per a l'estat"
#: backend/avision.h:778
#, no-c-format
msgid "Number of the frame to scan"
-msgstr "Number of the frame to scan"
+msgstr "Número del fotograma a escanejar"
#: backend/avision.h:779
#, no-c-format
msgid "Selects the number of the frame to scan"
-msgstr "Selects the number of the frame to scan"
+msgstr "Selecciona el número del fotograma a escanejar"
#: backend/avision.h:782
#, no-c-format
msgid "Duplex scan"
-msgstr "Duplex scan"
+msgstr "Escaneja a dues cares"
#: backend/avision.h:783
#, no-c-format
msgid ""
"Duplex scan provide a scan of the front and back side of the document"
msgstr ""
-"Duplex scan provide a scan of the front and back side of the document"
+"L'escanejat de les dues cares proporciona un escanejat de l'anvers i el "
+"revers del document"
#: backend/canon630u.c:159
#, no-c-format
msgid "Calibrate Scanner"
-msgstr "Calibrate Scanner"
+msgstr "Calibratge de l'escàner"
#: backend/canon630u.c:160
#, no-c-format
msgid "Force scanner calibration before scan"
-msgstr "Force scanner calibration before scan"
+msgstr "Força el calibratge de l'escàner abans de l'escaneig"
#: backend/canon630u.c:259 backend/umax1220u.c:208
#, no-c-format
msgid "Grayscale scan"
-msgstr "Grayscale scan"
+msgstr "Escaneja en escala de grisos"
#: backend/canon630u.c:260 backend/umax1220u.c:209
#, no-c-format
msgid "Do a grayscale rather than color scan"
-msgstr "Do a grayscale rather than color scan"
+msgstr "Fes un escaneig en escala de grisos en lloc d'en color"
#: backend/canon630u.c:306
#, no-c-format
msgid "Analog Gain"
-msgstr "Analog Gain"
+msgstr "Guany analògic"
#: backend/canon630u.c:307
#, no-c-format
msgid "Increase or decrease the analog gain of the CCD array"
-msgstr "Increase or decrease the analog gain of the CCD array"
+msgstr "Augmenta o disminueix el guany analògic per a la matriu del CCD"
#: backend/canon630u.c:347 backend/epson.h:68 backend/epson2.h:67
#, no-c-format
msgid "Gamma Correction"
-msgstr "Gamma Correction"
+msgstr "Correcció de la gamma"
#: backend/canon630u.c:348
#, no-c-format
msgid "Selects the gamma corrected transfer curve"
-msgstr "Selects the gamma corrected transfer curve"
+msgstr ""
+"Selecciona la corba de transferència per a la correcció de la gamma"
#: backend/canon.c:149 backend/canon-sane.c:1318
#, no-c-format
msgid "Raw"
-msgstr "Raw"
+msgstr "En brut"
#: backend/canon.c:157 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
#, no-c-format
msgid "Fine color"
-msgstr "Fine color"
+msgstr "Color fi"
#: backend/canon.c:169
#, no-c-format
msgid "No transparency correction"
-msgstr "No transparency correction"
+msgstr "Sense correcció de la transparència"
#: backend/canon.c:170 backend/canon-sane.c:680
#, no-c-format
msgid "Correction according to film type"
-msgstr "Correction according to film type"
+msgstr "Correcció d'acord amb el tipus de pel·lícula"
#: backend/canon.c:171 backend/canon-sane.c:674
#, no-c-format
msgid "Correction according to transparency ratio"
-msgstr "Correction according to transparency ratio"
+msgstr "Correcció d'acord amb la relació de transparència"
#: backend/canon.c:176 backend/canon-sane.c:776
#, no-c-format
msgid "Negatives"
-msgstr "Negatives"
+msgstr "Negatius"
#: backend/canon.c:176
#, no-c-format
msgid "Slides"
-msgstr "Slides"
+msgstr "Diapositives"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
-msgstr "Automatic"
+msgstr "Automàtic"
#: backend/canon.c:186
#, no-c-format
msgid "Normal speed"
-msgstr "Normal speed"
+msgstr "Velocitat normal"
#: backend/canon.c:187
#, no-c-format
msgid "1/2 normal speed"
-msgstr "1/2 normal speed"
+msgstr "1/2 de la velocitat normal"
#: backend/canon.c:187
#, no-c-format
msgid "1/3 normal speed"
-msgstr "1/3 normal speed"
+msgstr "1/3 de la velocitat normal"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
-msgstr "rounded parameter"
+msgstr "Paràmetre arrodonit"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
-msgstr "unknown"
+msgstr "Desconegut"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
-msgstr "ADF jam"
+msgstr "S'ha embussat l'ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
-msgstr "ADF cover open"
+msgstr "La tapa de l'ADF es troba oberta"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
-msgstr "lamp failure"
+msgstr "Fallada de la làmpada"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
-msgstr "scan head positioning error"
+msgstr "Error en el posicionament del capçal d'escaneig"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
-msgstr "CPU check error"
+msgstr "Error en comprobar la CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
-msgstr "RAM check error"
+msgstr "Error en comprobar la RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
-msgstr "ROM check error"
+msgstr "Error en comprobar la ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
-msgstr "hardware check error"
+msgstr "Error en comprobar el maquinari"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
-msgstr "transparency unit lamp failure"
+msgstr "Fallada de la làmpada amb la unitat de transparència"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
-msgstr "transparency unit scan head positioning failure"
+msgstr ""
+"Fallada en el posicionament del capçal d'escaneig amb la unitat de "
+"transparència"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
-msgstr "parameter list length error"
+msgstr "Error en la longitud de la llista de paràmetres"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
-msgstr "invalid command operation code"
+msgstr "Codi no vàlid per a l'ordre d'operació"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
-msgstr "invalid field in CDB"
+msgstr "Camp no vàlid al CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
-msgstr "unsupported LUN"
+msgstr "LUN no admés"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
-msgstr "invalid field in parameter list"
+msgstr "Camp no vàlid a la llista de paràmetres"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
-msgstr "command sequence error"
+msgstr "Error en la seqüència d'ordres"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
-msgstr "too many windows specified"
+msgstr "S'han especificat massa finestres"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
-msgstr "medium not present"
+msgstr "No es troba el suport"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
-msgstr "invalid bit IDENTIFY message"
+msgstr "Missatge «IDENTIFY» del bit no vàlid"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
-msgstr "option not connect"
+msgstr "L'opció no connectar"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
-msgstr "power on reset / bus device reset"
+msgstr "Reinicia l'encesa / reinicia el bus del dispositiu"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
-msgstr "parameter changed by another initiator"
+msgstr "Paràmetre canviat per un altre iniciador"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
-msgstr "no additional sense information"
+msgstr "Sense informació addicional"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
-msgstr "reselect failure"
+msgstr "Fallada en tornar a seleccionar"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
-msgstr "SCSI parity error"
+msgstr "Error de paritat SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
-msgstr "initiator detected error message received"
+msgstr "L'iniciador ha detectat la recepció d'un missatge d'error"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
-msgstr "invalid message error"
+msgstr "Error de missatge no vàlid"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
-msgstr "timeout error"
+msgstr "Error de caducitat"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
-msgstr "transparency unit shading error"
+msgstr "Error de l'ombreig a la unitat de transparència"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
-msgstr "lamp not stabilized"
+msgstr "La llum no està estabilitzada"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
-msgstr "film scanner"
+msgstr "Escàner de pel·lícula"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
-msgstr "flatbed scanner"
+msgstr "Escàner de superfície plana"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
-msgstr "Film type"
+msgstr "Tipus de pel·lícula"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
-msgstr "Selects the film type, i.e. negatives or slides"
+msgstr ""
+"Selecciona el tipus de pel·lícula, p. ex., en negatiu o diapositiva"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
-msgstr "Negative film type"
+msgstr "Tipus de pel·lícula en negatiu"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
-msgstr "Selects the negative film type"
+msgstr "Selecciona el tipus de pel·lícula en negatiu"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
-msgstr "Hardware resolution"
+msgstr "Resolució del maquinari"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
-msgstr "Use only hardware resolutions"
+msgstr "Usa només les resolucions del maquinari"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
-msgstr "Focus"
+msgstr "Enfocament"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
-msgstr "Auto focus"
+msgstr "Enfocament automàtic"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
-msgstr "Enable/disable auto focus"
+msgstr "Habilita/Inhabilita l'enfocament automàtic"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
-msgstr "Auto focus only once"
+msgstr "Enfocament automàtic només una vegada"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
-msgstr "Do auto focus only once between ejects"
+msgstr "Fes l'enfocament automàtic només una vegada entre les expulsions"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
-msgstr "Manual focus position"
+msgstr "Posició manual de l'enfocament"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, 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)."
+msgstr ""
+"Estableix la posició manual per a l'enfocament del sistema òptic "
+"(predeterminat: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
-msgstr "Scan margins"
+msgstr "Escaneja els marges"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
-msgstr "Extra color adjustments"
+msgstr "Ajustaments addicionals per al color"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
-msgstr "Mirror image"
+msgstr "Emmiralla la imatge"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
-msgstr "Mirror the image horizontally"
+msgstr "Emmiralla horitzontalment la imatge"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
-msgstr "Auto exposure"
+msgstr "Exposició automàtica"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
-msgstr "Enable/disable the auto exposure feature"
+msgstr "Habilita/Inhabilita la característica per a l'exposició automàtica"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
-msgstr "Calibration now"
+msgstr "Calibratge ara"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
-msgstr "Execute calibration *now*"
+msgstr "Executa el calibratge *ara*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
-msgstr "Self diagnosis"
+msgstr "Autodiagnòstic"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
-msgstr "Perform scanner self diagnosis"
+msgstr "Realitza un autodiagnòstic de l'escàner"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
-msgstr "Reset scanner"
+msgstr "Reinicia l'escàner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
-msgstr "Reset the scanner"
+msgstr "Reinicia l'escàner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
-msgstr "Medium handling"
+msgstr "Maneja el suport"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
-msgstr "Eject film after each scan"
+msgstr "Expulsa la pel·lícula després de cada escaneig"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, 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"
+msgstr ""
+"Expulsa automàticament la pel·lícula del dispositiu després de cada "
+"escaneig"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
-msgstr "Eject film before exit"
+msgstr "Expulsa la pel·lícula abans d'eixir"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, 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"
+"Expulsa automàticament la pel·lícula del dispositiu abans d'eixir del "
+"programa"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
-msgstr "Eject film now"
+msgstr "Expulsa la pel·lícula ara"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
-msgstr "Eject the film *now*"
+msgstr "Expulsa la pel·lícula *ara*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
-msgstr "Document feeder extras"
+msgstr "Extres de l'alimentador de documents"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
-msgstr "Flatbed only"
+msgstr "Només de superfície plana"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
-msgstr "Disable auto document feeder and use flatbed only"
+msgstr ""
+"Inhabilita l'alimentador automàtic de documents i només usa la "
+"superfície plana"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
-msgstr "Transparency unit"
+msgstr "Unitat per a la transparència"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, 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)"
+msgstr ""
+"Canvia a activa/desactiva la unitat de transparència (FAU, unitat "
+"adaptadora de pel·lícula)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
-msgstr "Negative film"
+msgstr "Pel·lícula en negatiu"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
-msgstr "Positive or negative film"
+msgstr "Pel·lícula en positiu o negatiu"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
-msgstr "Density control"
+msgstr "Control per a la densitat"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
-msgstr "Set density control mode"
+msgstr "Estableix el mode de control per a la densitat"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
-msgstr "Transparency ratio"
+msgstr "Relació de transparència"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
-msgstr "Select film type"
+msgstr "Selecciona el tipus de pel·lícula"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
-msgstr "Select the film type"
+msgstr "Selecciona el tipus de pel·lícula"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
-msgstr "Flatbed"
+msgstr "De superfície plana"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
-msgstr "ADF Front"
+msgstr "ADF per a l'anvers"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
-msgstr "ADF Back"
+msgstr "ADF per al revers"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
-msgstr "ADF Duplex"
+msgstr "ADF per a les dues cares"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
-msgstr "Card Front"
+msgstr "Targeta per a l'anvers"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
-msgstr "Card Back"
+msgstr "Targeta per al revers"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
-msgstr "Card Duplex"
+msgstr "Targeta per a les dues cares"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
-msgstr "Red"
+msgstr "Roig"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
-msgstr "Green"
+msgstr "Verd"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
-msgstr "Blue"
+msgstr "Blau"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
-msgstr "Enhance Red"
+msgstr "Roig realçat"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
-msgstr "Enhance Green"
+msgstr "Verd realçat"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
-msgstr "Enhance Blue"
+msgstr "Blau realçat"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
#, no-c-format
msgid "None"
-msgstr "None"
+msgstr "Cap"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr "Software blank skip percentage"
+msgstr "El percentatge per a saltar el blanc del programari"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, 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"
+msgstr ""
+"Sol·licita al controlador que descarti les pàgines amb un percentatge "
+"baix de píxels foscos"
#: backend/epson.c:491 backend/epson2.c:108 backend/magicolor.c:174
#, no-c-format
msgid "Simplex"
-msgstr "Simplex"
+msgstr "Una cara"
#: backend/epson.c:492 backend/epson2.c:109 backend/kvs1025.h:50
#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
#: backend/magicolor.c:175 backend/matsushita.h:218
#, no-c-format
msgid "Duplex"
-msgstr "Duplex"
+msgstr "Dues cares"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
-msgstr "Transparency Unit"
+msgstr "Unitat per a la transparència"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
-msgstr "Automatic Document Feeder"
+msgstr "Alimentador automàtic de documents"
#: backend/epson.c:523 backend/epson2.c:134
#, no-c-format
msgid "Positive Film"
-msgstr "Positive Film"
+msgstr "Pel·lícula en positiu"
#: backend/epson.c:524 backend/epson2.c:135
#, no-c-format
msgid "Negative Film"
-msgstr "Negative Film"
+msgstr "Pel·lícula en negatiu"
#: backend/epson.c:529 backend/epson2.c:142
#, no-c-format
msgid "Focus on glass"
-msgstr "Focus on glass"
+msgstr "Enfocament sobre el vidre"
#: backend/epson.c:530 backend/epson2.c:143
#, no-c-format
msgid "Focus 2.5mm above glass"
-msgstr "Focus 2.5mm above glass"
+msgstr "Enfocament de 2,5 mm per sobre del vidre"
#: backend/epson.c:557 backend/epson.c:565 backend/epson.c:577
#: backend/epson2.c:166 backend/epson2.c:174 backend/epson2.c:186
#, no-c-format
msgid "Halftone A (Hard Tone)"
-msgstr "Halftone A (Hard Tone)"
+msgstr "Semi to A (to dur)"
#: backend/epson.c:558 backend/epson.c:566 backend/epson.c:578
#: backend/epson2.c:167 backend/epson2.c:175 backend/epson2.c:187
#, no-c-format
msgid "Halftone B (Soft Tone)"
-msgstr "Halftone B (Soft Tone)"
+msgstr "Semi to B (to suau)"
#: backend/epson.c:559 backend/epson.c:567 backend/epson.c:579
#: backend/epson2.c:168 backend/epson2.c:176 backend/epson2.c:188
#, no-c-format
msgid "Halftone C (Net Screen)"
-msgstr "Halftone C (Net Screen)"
+msgstr "Semi to C (matisat)"
#: backend/epson.c:568 backend/epson.c:580 backend/epson2.c:177
#: backend/epson2.c:189
#, no-c-format
msgid "Dither A (4x4 Bayer)"
-msgstr "Dither A (4x4 Bayer)"
+msgstr "Trama A (bayer 4x4)"
#: backend/epson.c:569 backend/epson.c:581 backend/epson2.c:178
#: backend/epson2.c:190
#, no-c-format
msgid "Dither B (4x4 Spiral)"
-msgstr "Dither B (4x4 Spiral)"
+msgstr "Trama B (espiral 4x4)"
#: backend/epson.c:570 backend/epson.c:582 backend/epson2.c:179
#: backend/epson2.c:191
#, no-c-format
msgid "Dither C (4x4 Net Screen)"
-msgstr "Dither C (4x4 Net Screen)"
+msgstr "Trama C (matisat 4x4)"
#: backend/epson.c:571 backend/epson.c:583 backend/epson2.c:180
#: backend/epson2.c:192
#, no-c-format
msgid "Dither D (8x4 Net Screen)"
-msgstr "Dither D (8x4 Net Screen)"
+msgstr "Trama D (matisat 8x4)"
#: backend/epson.c:584 backend/epson2.c:193
#, no-c-format
msgid "Text Enhanced Technology"
-msgstr "Text Enhanced Technology"
+msgstr "Tecnologia per a la millora del text"
#: backend/epson.c:585 backend/epson2.c:194
#, no-c-format
msgid "Download pattern A"
-msgstr "Download pattern A"
+msgstr "Descarrega el patró A"
#: backend/epson.c:586 backend/epson2.c:195
#, no-c-format
msgid "Download pattern B"
-msgstr "Download pattern B"
+msgstr "Descarrega el patró B"
#: backend/epson.c:631
#, no-c-format
msgid "No Correction"
-msgstr "No Correction"
+msgstr "Sense correcció"
#: backend/epson.c:632 backend/epson.c:657 backend/epson2.c:255
#, no-c-format
msgid "User defined"
-msgstr "User defined"
+msgstr "Definit per l'usuari"
#: backend/epson.c:633
#, no-c-format
msgid "Impact-dot printers"
-msgstr "Impact-dot printers"
+msgstr "Impressores matricials"
#: backend/epson.c:634
#, no-c-format
msgid "Thermal printers"
-msgstr "Thermal printers"
+msgstr "Impressores tèrmiques"
#: backend/epson.c:635
#, no-c-format
msgid "Ink-jet printers"
-msgstr "Ink-jet printers"
+msgstr "Impressores d'injecció de tinta"
#: backend/epson.c:636
#, no-c-format
msgid "CRT monitors"
-msgstr "CRT monitors"
+msgstr "Monitors CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
-msgstr "Default"
+msgstr "Predeterminat"
#: backend/epson.c:658 backend/epson2.c:256
#, no-c-format
msgid "High density printing"
-msgstr "High density printing"
+msgstr "Impressió d'alta densitat"
#: backend/epson.c:659 backend/epson2.c:257
#, no-c-format
msgid "Low density printing"
-msgstr "Low density printing"
+msgstr "Impressió de baixa densitat"
#: backend/epson.c:660 backend/epson2.c:258
#, no-c-format
msgid "High contrast printing"
-msgstr "High contrast printing"
+msgstr "Impressió d'alt contrast"
#: backend/epson.c:678 backend/epson2.c:276
#, no-c-format
msgid "User defined (Gamma=1.0)"
-msgstr "User defined (Gamma=1.0)"
+msgstr "Definit per l'usuari (gamma=1.0)"
#: backend/epson.c:679 backend/epson2.c:277
#, no-c-format
msgid "User defined (Gamma=1.8)"
-msgstr "User defined (Gamma=1.8)"
+msgstr "Definit per l'usuari (gamma=1.8)"
#: backend/epson.c:757
#, no-c-format
@@ -1832,18 +1839,18 @@ msgstr "CD"
#: backend/epson.c:758
#, no-c-format
msgid "A5 portrait"
-msgstr "A5 portrait"
+msgstr "A5 retrat"
#: backend/epson.c:759
#, no-c-format
msgid "A5 landscape"
-msgstr "A5 landscape"
+msgstr "A5 apaïsat"
#: backend/epson.c:760 backend/kvs1025_opt.c:103 backend/kvs20xx_opt.c:77
#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
#, no-c-format
msgid "Letter"
-msgstr "Letter"
+msgstr "Carta"
#: backend/epson.c:761 backend/kvs1025_opt.c:100 backend/kvs20xx_opt.c:74
#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:128
@@ -1855,166 +1862,167 @@ msgstr "A4"
#: backend/epson.c:762
#, no-c-format
msgid "Max"
-msgstr "Max"
-
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+msgstr "Màx"
+
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
-msgstr "Scan Mode"
+msgstr "Mode d'escaneig"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
-msgstr "Selects the halftone."
+msgstr "Selecciona el semi to."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
-msgstr "Dropout"
+msgstr "Exclusió"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
-msgstr "Selects the dropout."
+msgstr "Selecciona el que s'exclourà."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
-msgstr "Selects the brightness."
+msgstr "Selecciona la brillantor."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
-msgstr "Sharpness"
+msgstr "Agudesa"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
-msgstr "Color correction"
+msgstr "Correcció del color"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
-msgstr "Sets the color correction table for the selected output device."
+msgstr ""
+"Estableix la taula de correcció del color per al dispositiu d'eixida "
+"seleccionat."
#: backend/epson.c:3075
#, no-c-format
msgid "Color correction coefficients"
-msgstr "Color correction coefficients"
+msgstr "Coeficients per a la correcció del color"
#: backend/epson.c:3076
#, no-c-format
msgid "Matrix multiplication of RGB"
-msgstr "Matrix multiplication of RGB"
+msgstr "Matriu de multiplicació del RGB"
#: backend/epson.c:3093
#, no-c-format
msgid "Shift green to red"
-msgstr "Shift green to red"
+msgstr "Canvia de verd a roig"
#: backend/epson.c:3094
#, no-c-format
msgid "Shift green to blue"
-msgstr "Shift green to blue"
+msgstr "Canvia de verd a blau"
#: backend/epson.c:3095
#, no-c-format
msgid "Shift red to green"
-msgstr "Shift red to green"
+msgstr "Canvia de roig a verd"
#: backend/epson.c:3097
#, no-c-format
msgid "Shift red to blue"
-msgstr "Shift red to blue"
+msgstr "Canvia de roig a blau"
#: backend/epson.c:3098
#, no-c-format
msgid "Shift blue to green"
-msgstr "Shift blue to green"
+msgstr "Canvia de blau a verd"
#: backend/epson.c:3099
#, no-c-format
msgid "Shift blue to red"
-msgstr "Shift blue to red"
+msgstr "Canvia de blau a roig"
#: backend/epson.c:3102
#, no-c-format
msgid "Controls green level"
-msgstr "Controls green level"
+msgstr "Controla el nivell de verd"
#: backend/epson.c:3103
#, no-c-format
msgid "Adds to red based on green level"
-msgstr "Adds to red based on green level"
+msgstr "Afig roig en funció del nivell de verd"
#: backend/epson.c:3104
#, no-c-format
msgid "Adds to blue based on green level"
-msgstr "Adds to blue based on green level"
+msgstr "Afig blau en funció del nivell de verd"
#: backend/epson.c:3105
#, no-c-format
msgid "Adds to green based on red level"
-msgstr "Adds to green based on red level"
+msgstr "Afig verd en funció del nivell de roig"
#: backend/epson.c:3106
#, no-c-format
msgid "Controls red level"
-msgstr "Controls red level"
+msgstr "Controla el nivell de roig"
#: backend/epson.c:3107
#, no-c-format
msgid "Adds to blue based on red level"
-msgstr "Adds to blue based on red level"
+msgstr "Afig blau en funció del nivell de roig"
#: backend/epson.c:3108
#, no-c-format
msgid "Adds to green based on blue level"
-msgstr "Adds to green based on blue level"
+msgstr "Afig verd en funció del nivell de blau"
#: backend/epson.c:3109
#, no-c-format
msgid "Adds to red based on blue level"
-msgstr "Adds to red based on blue level"
+msgstr "Afig roig en funció del nivell de blau"
#: backend/epson.c:3110
#, no-c-format
msgid "Controls blue level"
-msgstr "Controls blue level"
+msgstr "Controla el nivell de blau"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
-msgstr "Mirror the image."
+msgstr "Emmiralla la imatge."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
-msgstr "Fast preview"
+msgstr "Vista prèvia ràpida"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
-msgstr "Auto area segmentation"
+msgstr "Segmentació automàtica de l'àrea"
#: backend/epson.c:3258
#, no-c-format
msgid "Short resolution list"
-msgstr "Short resolution list"
+msgstr "Llista curta de les resolucions"
#: backend/epson.c:3260
#, no-c-format
msgid "Display short resolution list"
-msgstr "Display short resolution list"
+msgstr "Mostra una llista curta de les resolucions"
#: backend/epson.c:3267
#, no-c-format
@@ -2024,57 +2032,57 @@ msgstr "Zoom"
#: backend/epson.c:3269
#, no-c-format
msgid "Defines the zoom factor the scanner will use"
-msgstr "Defines the zoom factor the scanner will use"
+msgstr "Defineix el factor de zoom que usarà l'escàner"
#: backend/epson.c:3349
#, no-c-format
msgid "Quick format"
-msgstr "Quick format"
+msgstr "Format ràpid"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
-msgstr "Optional equipment"
+msgstr "Equipament opcional"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
-msgstr "Eject"
+msgstr "Expulsa"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
-msgstr "Eject the sheet in the ADF"
+msgstr "Expulsa el full de l'ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
-msgstr "Auto eject"
+msgstr "Expulsa automàticament"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
-msgstr "Eject document after scanning"
+msgstr "Expulsa el document després de l'escaneig"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
-msgstr "ADF Mode"
+msgstr "Mode ADF"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
-msgstr "Selects the ADF mode (simplex/duplex)"
+msgstr "Seleccionar el mode de l'ADF (una cara/dues cares)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
-msgstr "Bay"
+msgstr "Badia"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
-msgstr "Select bay to scan"
+msgstr "Selecciona la badia per escanejar"
#: backend/epson.h:69 backend/epson2.h:68
#, no-c-format
@@ -2082,25 +2090,27 @@ 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"
msgstr ""
-"Selects the gamma correction value from a list of pre-defined devices or "
-"the user defined table, which can be downloaded to the scanner"
+"Selecciona el valor per a la correcció de la gamma des d'una llista "
+"predefinida de dispositius o de la taula definida per l'usuari, la qual "
+"es pot descarregar a l'escàner."
#: backend/epson.h:72 backend/epson2.h:71
#, no-c-format
msgid "Focus Position"
-msgstr "Focus Position"
+msgstr "Posició de l'enfocament"
#: backend/epson.h:73 backend/epson2.h:72
#, no-c-format
msgid ""
"Sets the focus position to either the glass or 2.5mm above the glass"
msgstr ""
-"Sets the focus position to either the glass or 2.5mm above the glass"
+"Estableix la posició de l'enfocament sobre el vidre o 2,5 mm per sobre "
+"del vidre"
#: backend/epson.h:75 backend/epson2.h:74
#, no-c-format
msgid "Wait for Button"
-msgstr "Wait for Button"
+msgstr "Espera pel botó"
#: backend/epson.h:76 backend/epson2.h:75
#, no-c-format
@@ -2108,14 +2118,15 @@ msgid ""
"After sending the scan command, wait until the button on the scanner is "
"pressed to actually start the scan process."
msgstr ""
-"After sending the scan command, wait until the button on the scanner is "
-"pressed to actually start the scan process."
+"Després d'enviar l'ordre d'escaneig, s'ha d'esperar fins que es prema el "
+"botó de l'escàner per iniciar realment el procés d'escaneig."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
-msgstr "Infrared"
+msgstr "Infraroigs"
+# Nota: https://github.com/Scan-o-Matic/scanomatic/wiki/Installing-scanners
#: backend/epson2.c:117
#, no-c-format
msgid "TPU8x10"
@@ -2124,588 +2135,614 @@ msgstr "TPU8x10"
#: backend/epson2.c:136
#, no-c-format
msgid "Positive Slide"
-msgstr "Positive Slide"
+msgstr "Diapositiva en positiu"
#: backend/epson2.c:137
#, no-c-format
msgid "Negative Slide"
-msgstr "Negative Slide"
+msgstr "Diapositiva en negatiu"
+# Nota: https://en.wikipedia.org/wiki/Color_temperature#Correlated_color_temperature
#: backend/epson2.c:215
#, no-c-format
msgid "Built in CCT profile"
-msgstr "Built in CCT profile"
+msgstr "Incorpora el perfil CCT"
#: backend/epson2.c:216
#, no-c-format
msgid "User defined CCT profile"
-msgstr "User defined CCT profile"
+msgstr "Perfil CCT definit per l'usuari"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
-msgstr "On"
+msgstr "Actiu"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
-msgstr "Off"
+msgstr "Inactiu"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
-msgstr "Dither"
+msgstr "Tramat"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
-msgstr "Diffusion"
+msgstr "Difusió"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
-msgstr "White"
+msgstr "Blanc"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
-msgstr "Black"
+msgstr "Negre"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
-msgstr "Continue"
+msgstr "Continua"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
-msgstr "Stop"
+msgstr "Atura"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
-msgstr "10mm"
+msgstr "10 mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
-msgstr "15mm"
+msgstr "15 mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
-msgstr "20mm"
+msgstr "20 mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
-msgstr "Horizontal"
+msgstr "Horitzontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
-msgstr "Horizontal bold"
+msgstr "Horitzontal en negre"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
-msgstr "Horizontal narrow"
+msgstr "Horitzontal estreta"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
-msgstr "Vertical bold"
+msgstr "Vertical en negre"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
-msgstr "Top to bottom"
+msgstr "De dalt a baix"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
-msgstr "Bottom to top"
+msgstr "De baix a dalt"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
-msgstr "Front"
+msgstr "Anvers"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
-msgstr "Back"
+msgstr "Revers"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
-msgstr "Gamma function exponent"
+msgstr "Exponent de la funció gamma"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
-msgstr "Changes intensity of midtones"
+msgstr "Canvia la intensitat dels semi tons"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
-msgstr "Reverse image format"
+msgstr "Format d'imatge inversa"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
-msgstr "Halftone type"
+msgstr "Tipus de semi to"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
-msgstr "Control type of halftone filter"
+msgstr "Controla el tipus de filtre del semi to"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr "Control pattern of halftone filter"
+msgstr "Controla el patró del filtre del semi to"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
-msgstr "Outline"
+msgstr "Contorn"
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, no-c-format
msgid "Perform outline extraction"
-msgstr "Perform outline extraction"
+msgstr "Realitza l'extracció del contorn"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
-msgstr "Emphasis"
+msgstr "Èmfasi"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
-msgstr "Negative to smooth or positive to sharpen image"
+msgstr "Negatiu per a suavitzar o positiu per aguditzar la imatge"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, no-c-format
msgid "Separation"
-msgstr "Separation"
+msgstr "Separació"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr "Enable automatic separation of image and text"
+msgstr "Habilita la separació automàtica de les imatges i el text"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
-msgstr "Mirroring"
+msgstr "Emmiralla"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
-msgstr "Reflect output image horizontally"
+msgstr "Reflecteix horitzontalment la imatge d'eixida"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "White level follower"
-msgstr "White level follower"
+msgstr "Seguidor del nivell de blanc"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, no-c-format
msgid "Control white level follower"
-msgstr "Control white level follower"
+msgstr "Controla el seguidor del nivell de blanc"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, no-c-format
msgid "BP filter"
-msgstr "BP filter"
+msgstr "Filtre per al bolígraf"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr "Improves quality of high resolution ball-point pen text"
+msgstr "Millora la qualitat del text del bolígraf amb alta resolució"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
-msgstr "Smoothing"
+msgstr "Suavitzat"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr "Enable smoothing for improved OCR"
+msgstr "Habilita el suavitzat per a millorar l'OCR"
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, no-c-format
msgid "Gamma curve"
-msgstr "Gamma curve"
+msgstr "Corba amb interval"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, 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"
+msgstr ""
+"La corba amb interval, des de la llum a la foscor, però la part superior "
+"de les dues podria no funcionar"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
-msgstr "Threshold curve"
+msgstr "Corba del llindar"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, 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"
+"La corba del llindar, des de la llum a la foscor, però la part superior "
+"de les dues podria no ser lineal"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
-msgstr "Threshold white"
+msgstr "Llindar al blanc"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, 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"
+msgstr ""
+"Estableix els píxels iguals al llindar al blanc en comptes de negre"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
-msgstr "Noise removal"
+msgstr "Eliminació del soroll"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
-msgstr "Matrix 5x5"
+msgstr "Matriu 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr "Remove 5 pixel square noise"
+msgstr "Elimina el soroll quadrat de 5 píxels"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
-msgstr "Matrix 4x4"
+msgstr "Matriu 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr "Remove 4 pixel square noise"
+msgstr "Elimina el soroll quadrat de 4 píxels"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
-msgstr "Matrix 3x3"
+msgstr "Matriu 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr "Remove 3 pixel square noise"
+msgstr "Elimina el soroll quadrat de 3 píxels"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
-msgstr "Matrix 2x2"
+msgstr "Matriu 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr "Remove 2 pixel square noise"
+msgstr "Elimina el soroll quadrat de 2 píxels"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
-msgstr "Variance"
+msgstr "Variància"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
-msgstr "Set SDTC variance rate (sensitivity), 0 equals 127"
+msgstr ""
+"Estableix la velocitat de la variància SDTC (sensibilitat), 0 és igual "
+"que 127"
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, no-c-format
msgid "Auto width detection"
-msgstr "Auto width detection"
+msgstr "Detecció automàtica de l'amplària"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
-msgstr "Scanner detects paper sides. May reduce scanning speed."
+msgstr ""
+"L'escàner detectarà els costats del paper. Pot reduir la velocitat de "
+"l'escaneig."
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, no-c-format
msgid "Auto length detection"
-msgstr "Auto length detection"
+msgstr "Detecció automàtica de la llargada"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
-msgstr "Scanner detects paper lower edge. May confuse some frontends."
+msgstr ""
+"L'escàner detectarà la vora inferior del paper. Pot confondre alguns "
+"frontals."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
-msgstr "Compression"
+msgstr "Compressió"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
-msgstr "Enable compressed data. May crash your front-end program"
+msgstr ""
+"Habilita les dades comprimides. Pot fer fallar el vostre programa de "
+"frontal"
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
-msgstr "Compression argument"
+msgstr "Argument per a la compressió"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
-"is same as 4"
+"Nivell de la compressió JPEG. 1 és un fitxer petit, 7 és un fitxer gran. "
+"0 (predeterminat) és igual que 4"
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
-msgstr "DF action"
+msgstr "Acció per a la doble alimentació"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
-msgstr "Action following double feed error"
+msgstr "Acció per a després de l'error de doble alimentació"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
-msgstr "DF skew"
+msgstr "Inclinació per la doble alimentació"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr "Enable double feed error due to skew"
+msgstr "Habilita l'error de doble alimentació que causa inclinació"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
-msgstr "DF thickness"
+msgstr "Gruix del paper per la doble alimentació"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr "Enable double feed error due to paper thickness"
+msgstr "Habilita l'error de doble alimentació causat pel gruix del paper"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
-msgstr "DF length"
+msgstr "Longitud del paper causant doble alimentació"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr "Enable double feed error due to paper length"
+msgstr ""
+"Habilita l'error de doble alimentació causat per la longitud del paper"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
-msgstr "DF length difference"
+msgstr "Diferència en la longitud per a causar doble alimentació"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr "Difference in page length to trigger double feed error"
+msgstr ""
+"Diferència en la longitud de la pàgina per activar l'error de doble "
+"alimentació"
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
-msgstr "DF recovery mode"
+msgstr "El mode recuperació causa doble alimentació"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr "Request scanner to reverse feed on paper jam"
+msgstr ""
+"Sol·licita a l'escàner que l'alimentador recuperi el paper en embussar-se"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
-msgstr "Paper protection"
+msgstr "Protecció del paper"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr "Request scanner to predict jams in the ADF"
+msgstr "Pregunta a l'escàner per a predir les embussades a l'ADF"
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, no-c-format
msgid "Advanced paper protection"
-msgstr "Advanced paper protection"
+msgstr "Protecció avançada del paper"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, 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"
+msgstr ""
+"Pregunta a l'escàner per a predir les embussades a l'ADF usant sensors "
+"millorats"
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, no-c-format
msgid "Staple detection"
-msgstr "Staple detection"
+msgstr "Detecció de les grapes"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, 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"
+msgstr ""
+"Pregunta a l'escàner per a detectar les embussades a l'ADF causades per "
+"les grapes"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
-msgstr "Background color"
+msgstr "Color de fons"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-"Set color of background for scans. May conflict with overscan option"
+"Estableix un color de fons per a l'escaneig. Pot entrar en conflicte amb "
+"l'opció de sobreexploració"
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
-msgstr "Dropout color"
+msgstr "Descarta el color"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-"One-pass scanners use only one color during gray or binary scanning, "
-"useful for colored paper or ink"
+"Els escàners d'una sola passada només usen un color durant l'escaneig "
+"amb gris o binari, útil per a paper amb colors o tinta"
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
-msgstr "Buffer mode"
+msgstr "Mode de memòria intermèdia"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, 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"
+"Sol·licita a l'escàner que llija les pàgines ràpidament des de l'ADF a "
+"la memòria interna"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
-msgstr "Prepick"
+msgstr "Preselecciona"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr "Request scanner to grab next page from ADF"
+msgstr "Sol·licita a l'escàner que agafi la pàgina següent des de l'ADF"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
-msgstr "Overscan"
+msgstr "Sobreexploració"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, 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"
msgstr ""
-"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"
+"Recull uns pocs mm del fons al costat superior de l'escaneig, abans que "
+"el paper ingressi a l'ADF i augmenta l'àrea màxima d'escaneig més enllà "
+"de la mida del paper, per a permetre recollir els costats restants. Pot "
+"entrar en conflicte amb l'opció Color de fons"
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
-msgstr "Sleep timer"
+msgstr "Temporitzador de suspensió"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, 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"
+"Temps en minuts fins que la font d'alimentació interna canviarà al mode "
+"de suspensió"
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
-msgstr "Off timer"
+msgstr "Temporitzador per apagar"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
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."
+"Temps en minuts fins que la font d'alimentació interna apagui l'escàner. "
+"S'arrodonirà fins als 15 minuts més propers. Zero significa que no "
+"s'apagarà mai."
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, no-c-format
msgid "Duplex offset"
-msgstr "Duplex offset"
+msgstr "Desplaçament de la doble cara"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
-msgstr "Adjust front/back offset"
+msgstr "Ajusta el desplaçament per a l'anvers/revers"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
-msgstr "Green offset"
+msgstr "Desplaçament del verd"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, no-c-format
msgid "Adjust green/red offset"
-msgstr "Adjust green/red offset"
+msgstr "Ajusta el desplaçament del verd/roig"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
-msgstr "Blue offset"
+msgstr "Desplaçament del blau"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
-msgstr "Adjust blue/red offset"
+msgstr "Ajusta el desplaçament del blau/roig"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
-msgstr "Low Memory"
+msgstr "Memòria baixa"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2713,597 +2750,637 @@ msgid ""
"option 'side' can be used to determine correct image. This option should "
"only be used with custom front-end software."
msgstr ""
-"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."
+"Limita l'ús de la memòria del controlador per a usar-ho en sistemes "
+"incrustats. Provoca algunes transferències de doble cara a costats "
+"alternatius de cada crida al «sane_read()». El valor de l'opció «side» "
+"es pot usar per a determinar la imatge correcta. Aquesta opció només "
+"s'hauria d'usar amb el programari de frontal personalitzat."
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Duplex side"
-msgstr "Duplex side"
+msgstr "Cara per a les dues cares"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-"Tells which side (0=front, 1=back) of a duplex scan the next call to "
-"sane_read will return."
+"Indica a quina cara (0=anvers, 1=revers) en un escaneig de dues cares "
+"retornarà la següent crida al «sane_read()»."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr "Hardware deskew and crop"
+msgstr "Desinclina i escapça per maquinari"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr "Request scanner to rotate and crop pages digitally."
+msgstr ""
+"Sol·licita a l'escàner que giri i escapci les pàgines de forma digital."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr "Software deskew"
+msgstr "Desinclina per programari"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr "Request driver to rotate skewed pages digitally."
+msgstr ""
+"Sol·licita al controlador que giri les pàgines inclinades de forma "
+"digital."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr "Software despeckle diameter"
+msgstr "Diàmetre per eliminar els pics per programari"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
-msgstr "Maximum diameter of lone dots to remove from scan."
+msgstr ""
+"Diàmetre màxim dels punts solitaris per eliminar-los de l'escaneig."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
-msgstr "Software crop"
+msgstr "Escapça per programari"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr "Request driver to remove border from pages digitally."
+msgstr ""
+"Sol·licita al controlador que elimini la vora de les pàgines de forma "
+"digital."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
-msgstr "Halt on Cancel"
+msgstr "Atura en cancel·lar"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, 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."
+"Sol·licita al controlador que pare l'alimentador de paper en lloc "
+"d'expulsar-lo durant una cancel·lació."
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, no-c-format
msgid "Endorser Options"
-msgstr "Endorser Options"
+msgstr "Opcions per a l'aprovador"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
-msgstr "Controls for endorser unit"
+msgstr "Controls per a la unitat aprovadora"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
-msgstr "Endorser"
+msgstr "Aprovador"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
-msgstr "Enable endorser unit"
+msgstr "Habilita la unitat aprovadora"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
-msgstr "Endorser bits"
+msgstr "Bits de l'aprovació"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr "Determines maximum endorser counter value."
+msgstr "Determina el valor màxim del comptador de l'aprovació."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
-msgstr "Endorser value"
+msgstr "Valor de l'aprovació"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
-msgstr "Initial endorser counter value."
+msgstr "Valor inicial del comptador de l'aprovació."
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
-msgstr "Endorser step"
+msgstr "Pas de l'aprovació"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, 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."
+msgstr ""
+"Canvia el valor del comptador de l'aprovació en aquest tant per a cada "
+"pàgina."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
-msgstr "Endorser Y"
+msgstr "Aprovació Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr "Endorser print offset from top of paper."
+msgstr ""
+"Desplaçament de la impressió de l'aprovador des de la part superior del "
+"paper."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
-msgstr "Endorser font"
+msgstr "Tipus de lletra per a l'aprovador"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
-msgstr "Endorser printing font."
+msgstr "El tipus de lletra amb el que imprimirà l'aprovador."
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser direction"
-msgstr "Endorser direction"
+msgstr "Direcció de l'aprovador"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
-msgstr "Endorser printing direction."
+msgstr "Direcció amb la qual imprimirà l'aprovador."
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
-msgstr "Endorser side"
+msgstr "Costat de l'aprovador"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
-msgstr "Endorser printing side, requires hardware support to change"
+msgstr ""
+"El costat de la impressió de l'aprovador, requereix maquinari per "
+"canviar-lo"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
-msgstr "Endorser string"
+msgstr "Cadena de l'aprovador"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
-"replaced by counter value."
+"Format d'impressió alfanumèric de l'aprovador. %05ud o %08ud al final "
+"serà substituït pel valor del comptador."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
-msgstr "Top edge"
+msgstr "Vora superior"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
-msgstr "Paper is pulled partly into adf"
+msgstr "El paper s'ha retirat parcialment dins de l'ADF"
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
-msgstr "A3 paper"
+msgstr "Paper A3"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
-msgstr "A3 paper detected"
+msgstr "S'ha detectat un paper A3"
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
-msgstr "B4 paper"
+msgstr "Paper B4"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
-msgstr "B4 paper detected"
+msgstr "S'ha detectat un paper B4"
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
-msgstr "A4 paper"
+msgstr "Paper A4"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
-msgstr "A4 paper detected"
+msgstr "S'ha detectat un paper A4"
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
-msgstr "B5 paper"
+msgstr "Paper B5"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
-msgstr "B5 paper detected"
+msgstr "S'ha detectat un paper B5"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
-msgstr "OMR or DF"
+msgstr "OMR o DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
-msgstr "OMR or double feed detected"
+msgstr ""
+"S'ha detectat una OMR (reconeixement de marca òptica) o alimentació de "
+"doble cara"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
-msgstr "Power saving"
+msgstr "Estalvi d'energia"
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
-msgstr "Scanner in power saving mode"
+msgstr "Escàner en el mode estalvi d'energia"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
-msgstr "Manual feed"
+msgstr "Alimentació manual"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
-msgstr "Manual feed selected"
+msgstr "S'ha seleccionat una alimentació manual"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
-msgstr "Function"
+msgstr "Funció"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
-msgstr "Function character on screen"
+msgstr "Funció caràcter a la pantalla"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
-msgstr "Ink low"
+msgstr "Tinta baixa"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
-msgstr "Imprinter ink running low"
+msgstr "La impressora s'està executant amb la tinta baixa"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
-msgstr "Double feed"
+msgstr "Alimentació de doble cara"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
-msgstr "Double feed detected"
+msgstr "S'ha detectat una alimentació de doble cara"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
-msgstr "Error code"
+msgstr "Codi d'error"
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
-msgstr "Hardware error code"
+msgstr "Codi d'error del maquinari"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
-msgstr "Skew angle"
+msgstr "Angle d'inclinació"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
-msgstr "Requires black background for scanning"
+msgstr "Requereix un fons negre per escanejar"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
-msgstr "Ink remaining"
+msgstr "Tinta restant"
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, no-c-format
msgid "Imprinter ink level"
-msgstr "Imprinter ink level"
+msgstr "Nivell de tinta de la impressora"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, no-c-format
msgid "Density"
-msgstr "Density"
+msgstr "Densitat"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
-msgstr "Density dial"
+msgstr "Marcador de la densitat"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, no-c-format
msgid "Duplex switch"
-msgstr "Duplex switch"
+msgstr "Commuta a doble cara"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
-msgstr "Request backend to remove border from pages digitally"
+msgstr ""
+"Sol·licita al dorsal que elimini la vora de les pàgines de forma digital"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
-msgstr "Request driver to discard pages with low numbers of dark pixels"
+msgstr ""
+"Sol·licita al controlador que descarti les pàgines amb un nombre baix de "
+"píxels foscos"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr "Software derotate"
+msgstr "Treu el gir per programari"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
-msgstr "Request driver to detect and correct 90 degree image rotation"
+msgstr ""
+"Sol·licita al controlador que detecti i corregisca el gir de 90 graus de "
+"la imatge"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
-msgstr "Extras"
+msgstr "Extres"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
-msgstr "Dynamic threshold curve, from light to dark, normally 50-65"
+msgstr ""
+"La corba dinàmica del llindar, des de la llum a la foscor, normalment de "
+"50 a 65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
-msgstr "Disable dynamic lineart"
+msgstr "Inhabilita l'art lineal dinàmic"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-"Disable use of a software adaptive algorithm to generate lineart relying "
-"instead on hardware lineart."
+"Inhabilita l'ús d'un algorisme adaptatiu per programari que genera art "
+"lineal en comptes de per maquinari."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
-msgstr "Disable interpolation"
+msgstr "Inhabilita la interpolació"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-"When using high resolutions where the horizontal resolution is smaller "
-"than the vertical resolution this disables horizontal interpolation."
+"Quan s'usen resolucions d'alta resolució on la resolució horitzontal és "
+"més petita que la vertical, això inhabilitarà la interpolació "
+"horitzontal."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, no-c-format
msgid "Color filter"
-msgstr "Color filter"
+msgstr "Filtre de color"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
-msgstr "When using gray or lineart this option selects the used color."
+msgstr ""
+"Quan s'usa gris o art lineal, aquesta opció seleccionarà el color a usar."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, no-c-format
msgid "Calibration file"
-msgstr "Calibration file"
+msgstr "Fitxer de calibratge"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, no-c-format
msgid "Specify the calibration file to use"
-msgstr "Specify the calibration file to use"
+msgstr "Especifica el fitxer de calibratge a usar"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, no-c-format
msgid "Calibration cache expiration time"
-msgstr "Calibration cache expiration time"
+msgstr "Temps de caducitat per a la memòria cau del calibratge"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
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."
+"Temps (en minuts) abans que expiri el calibratge emmagatzemat a la "
+"memòria cau. Un valor de 0 indicarà que no s'usarà la memòria cau. Un "
+"valor negatiu indicarà que la memòria cau no caducarà mai."
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
-msgstr "Lamp off time"
+msgstr "Temps per apagar la làmpada"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
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."
+"La llum s'apagarà després del temps determinat (en minuts). Un valor de "
+"0 indicarà que no s'apagarà la làmpada."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
-msgstr "Lamp off during scan"
+msgstr "Apaga la làmpada durant l'escaneig"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr "The lamp will be turned off during scan. "
+msgstr "La llum s'apagarà durant l'escaneig."
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
-msgstr "File button"
+msgstr "Botó de fitxer"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
-msgstr "OCR button"
+msgstr "Botó OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
-msgstr "Power button"
+msgstr "Botó d'encesa"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, no-c-format
msgid "Extra button"
-msgstr "Extra button"
+msgstr "Botó extra"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
-msgstr "Need calibration"
+msgstr "Necessita calibratge"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
-msgstr "The scanner needs calibration for the current settings"
+msgstr "L'escàner necessita calibratge per als ajustaments actuals"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
-msgstr "Buttons"
+msgstr "Botons"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
-msgstr "Calibrate"
+msgstr "Calibratge"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
-msgstr "Start calibration using special sheet"
+msgstr "Comença el calibratge emprant un full especial"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
-msgstr "Clear calibration"
+msgstr "Neteja el calibratge"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
-msgstr "Clear calibration cache"
+msgstr "Neteja la memòria cau del calibratge"
+
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibratge tosc"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
-msgstr "Transparency Adapter"
+msgstr "Adaptador de transparència"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
-msgstr "Gray mode color"
+msgstr "Color per al mode gris"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
-msgstr "Selects which scan color is used gray mode (default: green)."
+msgstr ""
+"Selecciona quin color d'escaneig s'usarà en el mode gris (predeterminat: "
+"verd)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
-msgstr "Debugging Options"
+msgstr "Opcions de depuració"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
-msgstr "Automatic warmup"
+msgstr "Escalfament automàtic"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"60 seconds warm-up time."
msgstr ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"60 seconds warm-up time."
+"Escalfa fins que la brillantor de la làmpada siga constant en comptes "
+"d'insistir en el temps d'escalfament de 60 segons."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
-msgstr "Full scan"
+msgstr "Escaneja completament"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
-"Scan the complete scanning area including calibration strip. Be careful. "
-"Don't select the full height. For testing only."
+"Escaneja tota l'àrea d'escaneig, inclosa la tira de calibratge. Aneu amb "
+"compte. No seleccioneu tota l'alçària. Només per a proves."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
-msgstr "Coarse calibration"
+msgstr "Calibratge tosc"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, 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."
msgstr ""
-"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."
+"Estableix el guany i el desplaçament per a l'escaneig automàtic. Si "
+"aquesta opció està inhabilitada, es proporcionen opcions per a establir "
+"manualment els paràmetres del frontal analògic. Aquesta opció està "
+"habilitada de manera predeterminada. Només per a proves."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
-msgstr "Coarse calibration for first scan only"
+msgstr "Calibratge tosc només per al primer escanejat"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, 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."
msgstr ""
-"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."
+"El calibratge tosc només es farà per al primer escaneig. Funciona amb la "
+"majoria d'escàners i pot estalviar temps d'escaneig. Si la brillantor de "
+"la imatge és diferent amb cada escaneig, inhabiliteu aquesta opció. "
+"Només per a proves."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
-msgstr "Backtrack lines"
+msgstr "Línies a tornar arrere"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3311,86 +3388,89 @@ msgid ""
"the data. Low values cause faster scans but increase the risk of "
"omitting lines."
msgstr ""
-"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."
+"Nombre de línies que el control lliscant de l'escanejat mourà cap arrere "
+"quan succeisca el fet de tornar arrere. Això passa quan l'escàner "
+"escaneja més de pressa que en el que l'ordinador pot rebre les dades. "
+"Els valors baixos produeixen escaneigs més ràpids, però augmenten el "
+"risc d'omissió de línies."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
-msgstr "Gamma value"
+msgstr "Valor de la gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
-msgstr "Sets the gamma value of all channels."
+msgstr "Estableix el valor de la gamma de tots els canals."
#: backend/hp3500.c:1020
#, no-c-format
msgid "Geometry Group"
-msgstr "Geometry Group"
+msgstr "Grup de geometria"
#: backend/hp3500.c:1073 backend/hp3500.c:1074
#, no-c-format
msgid "Scan Mode Group"
-msgstr "Scan Mode Group"
+msgstr "Grup de mode d'escaneig"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
-msgstr "Slide"
+msgstr "Diapositiva"
#: backend/hp3900_sane.c:1405
#, no-c-format
msgid "Scanner model"
-msgstr "Scanner model"
+msgstr "Model de l'escàner"
#: backend/hp3900_sane.c:1408
#, no-c-format
msgid "Allows one to test device behaviour with other supported models"
-msgstr "Allows one to test device behaviour with other supported models"
+msgstr ""
+"Permet comprovar el comportament del dispositiu amb els altres models "
+"admesos"
#: backend/hp3900_sane.c:1422
#, no-c-format
msgid "Image colours will be inverted"
-msgstr "Image colours will be inverted"
+msgstr "Els colors de la imatge seran invertits"
#: backend/hp3900_sane.c:1436
#, no-c-format
msgid "Disable gamma correction"
-msgstr "Disable gamma correction"
+msgstr "Inhabilita la correcció de la gamma"
#: backend/hp3900_sane.c:1437
#, no-c-format
msgid "Gamma correction will be disabled"
-msgstr "Gamma correction will be disabled"
+msgstr "La correcció de la gamma serà inhabilitada"
#: backend/hp3900_sane.c:1451
#, no-c-format
msgid "Disable white shading correction"
-msgstr "Disable white shading correction"
+msgstr "Inhabilita la correcció de l'ombra blanca"
#: backend/hp3900_sane.c:1453
#, no-c-format
msgid "White shading correction will be disabled"
-msgstr "White shading correction will be disabled"
+msgstr "La correcció de l'ombra blanca serà inhabilitada"
#: backend/hp3900_sane.c:1467
#, no-c-format
msgid "Skip warmup process"
-msgstr "Skip warmup process"
+msgstr "Omet el procés d'escalfament"
#: backend/hp3900_sane.c:1468
#, no-c-format
msgid "Warmup process will be disabled"
-msgstr "Warmup process will be disabled"
+msgstr "El procés d'escalfament serà inhabilitat"
#: backend/hp3900_sane.c:1482
#, no-c-format
msgid "Force real depth"
-msgstr "Force real depth"
+msgstr "Força la profunditat real"
#: backend/hp3900_sane.c:1485
#, no-c-format
@@ -3399,14 +3479,15 @@ msgid ""
"image quality and then converted to the selected depth. This option "
"avoids depth emulation."
msgstr ""
-"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."
+"Si s'ha habilitat la gamma, els escanejos es realitzaran sempre en 16 "
+"bits de profunditat per a millorar la qualitat de la imatge i després "
+"convertir-la a la profunditat seleccionada. Aquesta opció evitarà "
+"l'emulació de la profunditat."
#: backend/hp3900_sane.c:1499
#, no-c-format
msgid "Emulate Grayscale"
-msgstr "Emulate Grayscale"
+msgstr "Emula l'escala de grisos"
#: backend/hp3900_sane.c:1502
#, no-c-format
@@ -3415,14 +3496,14 @@ msgid ""
"grayscale by software. This may improve image quality in some "
"circumstances."
msgstr ""
-"If enabled, image will be scanned in color mode and then converted to "
-"grayscale by software. This may improve image quality in some "
-"circumstances."
+"Si s'habilita, la imatge s'escanejarà en el mode de color i després es "
+"convertirà per programari a una escala de grisos. Això pot millorar la "
+"qualitat de la imatge en algunes circumstàncies."
#: backend/hp3900_sane.c:1516
#, no-c-format
msgid "Save debugging images"
-msgstr "Save debugging images"
+msgstr "Guarda imatges per a la depuració"
#: backend/hp3900_sane.c:1519
#, no-c-format
@@ -3430,351 +3511,440 @@ msgid ""
"If enabled, some images involved in scanner processing are saved to "
"analyze them."
msgstr ""
-"If enabled, some images involved in scanner processing are saved to "
-"analyze them."
+"Si s'habilita, es guardaran algunes imatges relacionades amb el "
+"processament de l'escàner per analitzar-les."
#: backend/hp3900_sane.c:1533
#, no-c-format
msgid "Reset chipset"
-msgstr "Reset chipset"
+msgstr "Reinicia el joc de xips"
#: backend/hp3900_sane.c:1534
#, no-c-format
msgid "Resets chipset data"
-msgstr "Resets chipset data"
+msgstr "Reinicia les dades del joc de xips"
#: backend/hp3900_sane.c:1547
#, no-c-format
msgid "Information"
-msgstr "Information"
+msgstr "Informació"
#: backend/hp3900_sane.c:1560
#, no-c-format
msgid "Chipset name"
-msgstr "Chipset name"
+msgstr "Nom del joc de xips"
#: backend/hp3900_sane.c:1561
#, no-c-format
msgid "Shows chipset name used in device."
-msgstr "Shows chipset name used in device."
+msgstr "Mostra el nom del joc de xips usat al dispositiu."
#: backend/hp3900_sane.c:1565
#, no-c-format
msgid "Unknown"
-msgstr "Unknown"
+msgstr "Desconegut"
#: backend/hp3900_sane.c:1571
#, no-c-format
msgid "Chipset ID"
-msgstr "Chipset ID"
+msgstr "ID del joc de xips"
#: backend/hp3900_sane.c:1572
#, no-c-format
msgid "Shows the chipset ID"
-msgstr "Shows the chipset ID"
+msgstr "Mostra l'ID del joc de xips"
#: backend/hp3900_sane.c:1582
#, no-c-format
msgid "Scan counter"
-msgstr "Scan counter"
+msgstr "Comptador d'escaneigs"
#: backend/hp3900_sane.c:1584
#, no-c-format
msgid "Shows the number of scans made by scanner"
-msgstr "Shows the number of scans made by scanner"
+msgstr "Mostra el nombre d'escaneigs realitzats per l'escàner"
#: backend/hp3900_sane.c:1594
#, no-c-format
msgid "Update information"
-msgstr "Update information"
+msgstr "Actualitza la informació"
#: backend/hp3900_sane.c:1595
#, no-c-format
msgid "Updates information about device"
-msgstr "Updates information about device"
+msgstr "Actualitza la informació quant al dispositiu"
#: backend/hp3900_sane.c:1635
#, no-c-format
msgid "This option reflects a front panel scanner button"
-msgstr "This option reflects a front panel scanner button"
+msgstr "Aquesta opció reflecteix un botó d'escàner al panell frontal"
#: backend/hp5400_sane.c:313 backend/niash.c:678
#, no-c-format
msgid "Image"
-msgstr "Image"
+msgstr "Imatge"
#: backend/hp5400_sane.c:352 backend/niash.c:709
#, no-c-format
msgid "Miscellaneous"
-msgstr "Miscellaneous"
+msgstr "Miscel·lània"
#: backend/hp5400_sane.c:358
#, no-c-format
msgid "offset X"
-msgstr "offset X"
+msgstr "Desplaçament X"
#: backend/hp5400_sane.c:359
#, no-c-format
msgid "Hardware internal X position of the scanning area."
-msgstr "Hardware internal X position of the scanning area."
+msgstr "Posició X interna al maquinari de l'àrea d'escaneig."
#: backend/hp5400_sane.c:368
#, no-c-format
msgid "offset Y"
-msgstr "offset Y"
+msgstr "Desplaçament Y"
#: backend/hp5400_sane.c:369
#, no-c-format
msgid "Hardware internal Y position of the scanning area."
-msgstr "Hardware internal Y position of the scanning area."
+msgstr "Posició Y interna al maquinari de l'àrea d'escaneig."
#: backend/hp5400_sane.c:381 backend/niash.c:716
#, no-c-format
msgid "Lamp status"
-msgstr "Lamp status"
+msgstr "Estat de la làmpada"
#: backend/hp5400_sane.c:382 backend/niash.c:717
#, no-c-format
msgid "Switches the lamp on or off."
-msgstr "Switches the lamp on or off."
+msgstr "Apaga o encén la llum."
#: backend/hp5400_sane.c:393 backend/niash.c:727
#, no-c-format
msgid "Calibrates for black and white level."
-msgstr "Calibrates for black and white level."
+msgstr "Calibra per al nivell de blanc i negre."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+# Nota: https://en.wikipedia.org/wiki/Tissue_microarray
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
-msgstr "TMA Slides"
+msgstr "Costats de la TMA"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
-msgstr "TMA Negatives"
+msgstr "TMA negatius"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Color (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
-msgstr "Extend lamp timeout"
+msgstr "Amplia el temps d'espera de la làmpada"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
-msgstr "Extends lamp timeout (from 15 minutes to 1 hour)"
+msgstr "Amplia el temps d'espera de la làmpada (de 15 minuts a 1 hora)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
-msgstr "Wait for button"
+msgstr "Espera pel botó"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
-msgstr "Waits for button before scanning"
+msgstr "Espera pel botó abans d'escanejar"
+
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Darrer botó premut"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Comptador d'escaneigs"
+
+#: backend/hp5590.c:122
+#, fuzzy, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Color per a l'art lineal"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:125
+#, fuzzy, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Obtén l'ID de l'últim botó premut (només lectura)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Oculta el píxel del final de pàgina"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+"Oculta els píxels indicadors del final de pàgina i se sobreescriuen amb "
+"els píxels veïns"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+"Mode d'ompliment del final de les línies després d'obtindre les dades "
+"d'escaneig (ADF)"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 = dades d'escaneig sense processar, last = repeteix l'última línia "
+"escanejada, raster = ràster en b/n, white = color blanc, black = color "
+"negre, color = valor del color RGB o gris"
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr "Valor del color RGB o gris per al mode ompliment del «color»"
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+"Valor del «color» per al mode d'ompliment al final de les línies. Color "
+"RGB com a valor r*65536+256*g+b o gris (predeterminat=violeta o gris)"
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
-msgstr "Advanced Options"
+msgstr "Opcions avançades"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
-msgstr "Coarse"
+msgstr "Tosc"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
-msgstr "Fine"
+msgstr "Fina"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
-msgstr "Custom"
+msgstr "A mida"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Auto"
-#: backend/hp-option.c:3088
+# Nota: https://ca.wikipedia.org/wiki/NTSC
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
-msgstr "NTSC RGB"
+msgstr "RGB del NTSC"
-#: backend/hp-option.c:3089
+# Nota: https://support.hp.com/gb-en/document/c01275842
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
-msgstr "XPA RGB"
+msgstr "RGB amb el XPA"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
-msgstr "Pass-through"
+msgstr "Passa a través"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
-msgstr "NTSC Gray"
+msgstr "Gris del NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
-msgstr "XPA Gray"
+msgstr "Gris amb el XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
-msgstr "Slow"
+msgstr "Lent"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
-msgstr "Fast"
+msgstr "Ràpid"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
-msgstr "Extra Fast"
+msgstr "Extraràpid"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
-msgstr "2-pixel"
+msgstr "2 píxels"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
-msgstr "4-pixel"
+msgstr "4 píxels"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
-msgstr "8-pixel"
+msgstr "8 píxels"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
-msgstr "Print"
+msgstr "Imprimeix"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
-msgstr "Film-strip"
+msgstr "Tira de pel·lícules"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
-msgstr "Conditional"
+msgstr "Condicional"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
-msgstr "Experiment"
+msgstr "Experimental"
#: backend/hp-option.h:60
#, no-c-format
msgid "Sharpening"
-msgstr "Sharpening"
+msgstr "Aguditzant"
#: backend/hp-option.h:61
#, no-c-format
msgid "Set sharpening value."
-msgstr "Set sharpening value."
+msgstr "Estableix el valor de l'agudització."
#: backend/hp-option.h:66
#, no-c-format
msgid "Auto Threshold"
-msgstr "Auto Threshold"
+msgstr "Llindar automàtic"
#: backend/hp-option.h:68
#, no-c-format
msgid "Enable automatic determination of threshold for line-art scans."
-msgstr "Enable automatic determination of threshold for line-art scans."
+msgstr ""
+"Habilita la determinació automàtica del llindar pels escaneigs amb art "
+"lineal."
#: backend/hp-option.h:74
#, no-c-format
msgid "Select smoothing filter."
-msgstr "Select smoothing filter."
+msgstr "Selecciona el filtre de suavitzat."
#: backend/hp-option.h:79
#, no-c-format
msgid "Unload media after scan"
-msgstr "Unload media after scan"
+msgstr "Descarrega el suport després de l'escaneig"
#: backend/hp-option.h:80
#, no-c-format
msgid "Unloads the media after a scan."
-msgstr "Unloads the media after a scan."
+msgstr "Descarrega el suport després d'un escaneig."
#: backend/hp-option.h:85
#, no-c-format
msgid "Change document"
-msgstr "Change document"
+msgstr "Canvia el document"
#: backend/hp-option.h:86
#, no-c-format
msgid "Change Document."
-msgstr "Change Document."
+msgstr "Canvia el document."
#: backend/hp-option.h:91
#, no-c-format
msgid "Unload"
-msgstr "Unload"
+msgstr "Descarrega"
#: backend/hp-option.h:92
#, no-c-format
msgid "Unload Document."
-msgstr "Unload Document."
+msgstr "Descarrega el document."
#: backend/hp-option.h:98
#, no-c-format
msgid "Start calibration process."
-msgstr "Start calibration process."
+msgstr "Inicia el procés de calibratge."
#: backend/hp-option.h:103
#, no-c-format
msgid "Media"
-msgstr "Media"
+msgstr "Suport"
#: backend/hp-option.h:104
#, no-c-format
msgid "Set type of media."
-msgstr "Set type of media."
+msgstr "Estableix el tipus de suport."
#: backend/hp-option.h:109
#, no-c-format
msgid "Exposure time"
-msgstr "Exposure time"
+msgstr "Temps d'exposició"
#: backend/hp-option.h:111
#, no-c-format
@@ -3784,175 +3954,171 @@ msgid ""
"negative film. For dark (underexposed) images you can increase this "
"value."
msgstr ""
-"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."
+"Un temps d'exposició més llarg permet que l'escàner recopili més llum. "
+"L'ús aconsellat és el 175% per a impressions, el 150% per a diapositives "
+"normals i «Negatiu» per a pel·lícules en negatiu. Per a imatges fosques "
+"(sota exposades), podeu augmentar aquest valor."
#: backend/hp-option.h:119 backend/hp-option.h:126
#, no-c-format
msgid "Color Matrix"
-msgstr "Color Matrix"
+msgstr "Matriu de color"
#: backend/hp-option.h:121
#, no-c-format
msgid "Set the scanners color matrix."
-msgstr "Set the scanners color matrix."
+msgstr "Estableix la matriu de color dels escàners."
#: backend/hp-option.h:127
#, no-c-format
msgid "Custom color matrix."
-msgstr "Custom color matrix."
+msgstr "Matriu de color a mida."
#: backend/hp-option.h:132
#, no-c-format
msgid "Mono Color Matrix"
-msgstr "Mono Color Matrix"
+msgstr "Matriu de color monocrom"
#: backend/hp-option.h:133
#, no-c-format
msgid "Custom color matrix for grayscale scans."
-msgstr "Custom color matrix for grayscale scans."
+msgstr "Matriu de color a mida pels escaneigs en escala de grisos."
#: backend/hp-option.h:138
#, no-c-format
msgid "Mirror horizontal"
-msgstr "Mirror horizontal"
+msgstr "Emmiralla horitzontalment"
#: backend/hp-option.h:139
#, no-c-format
msgid "Mirror image horizontally."
-msgstr "Mirror image horizontally."
+msgstr "Emmiralla horitzontalment la imatge."
#: backend/hp-option.h:144
#, no-c-format
msgid "Mirror vertical"
-msgstr "Mirror vertical"
+msgstr "Emmiralla verticalment"
#: backend/hp-option.h:145
#, no-c-format
msgid "Mirror image vertically."
-msgstr "Mirror image vertically."
+msgstr "Emmiralla verticalment la imatge."
#: backend/hp-option.h:150
#, no-c-format
msgid "Update options"
-msgstr "Update options"
+msgstr "Opcions per a l'actualització"
#: backend/hp-option.h:151
#, no-c-format
msgid "Update options."
-msgstr "Update options."
+msgstr "Opcions per a l'actualització."
#: backend/hp-option.h:156
#, no-c-format
msgid "8 bit output"
-msgstr "8 bit output"
+msgstr "Eixida de 8 bits"
#: backend/hp-option.h:158
#, no-c-format
msgid "Use bit depth greater eight internally, but output only eight bits."
msgstr ""
-"Use bit depth greater eight internally, but output only eight bits."
+"Usa internament una profunditat de bits més gran que vuit, però a "
+"l'eixida usa només vuit bits."
#: backend/hp-option.h:164
#, no-c-format
msgid "Front button wait"
-msgstr "Front button wait"
+msgstr "Espera al botó del frontal"
#: backend/hp-option.h:165
#, no-c-format
msgid "Wait to scan for front-panel button push."
-msgstr "Wait to scan for front-panel button push."
+msgstr "Espera per escanejar que es prema el botó del panell frontal."
#: backend/hp-option.h:172
#, no-c-format
msgid "Shut off lamp"
-msgstr "Shut off lamp"
+msgstr "Apaga la làmpada"
#: backend/hp-option.h:173
#, no-c-format
msgid "Shut off scanner lamp."
-msgstr "Shut off scanner lamp."
+msgstr "Apaga la llum de l'escàner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
-msgstr "Paper size"
+msgstr "Mida del paper"
#: backend/kvs1025.h:52 backend/kvs1025.h:67 backend/matsushita.h:220
#: backend/matsushita.h:227
#, no-c-format
msgid "Automatic separation"
-msgstr "Automatic separation"
+msgstr "Separació automàtica"
-#: 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:531
#, no-c-format
msgid "Landscape"
-msgstr "Landscape"
+msgstr "Apaïsat"
#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
#, no-c-format
msgid "Inverse Image"
-msgstr "Inverse Image"
+msgstr "Imatge inversa"
#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
#, no-c-format
msgid "Long paper mode"
-msgstr "Long paper mode"
+msgstr "Mode paper llarg"
-#: 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:393
#, no-c-format
msgid "Length control mode"
-msgstr "Length control mode"
+msgstr "Mode control de la longitud"
-#: 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:416
#, no-c-format
msgid "Manual feed mode"
-msgstr "Manual feed mode"
+msgstr "Mode alimentació manual"
-#: 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:428
#, no-c-format
msgid "Manual feed timeout"
-msgstr "Manual feed timeout"
+msgstr "Temps d'espera per a l'alimentació manual"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
-msgstr "Double feed detection"
+msgstr "Detecció de l'alimentació de doble cara"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
-msgstr "Enable Duplex (Dual-Sided) Scanning"
+msgstr "Habilita l'escaneig a doble cara"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
-msgstr "Physical size of the paper in the ADF"
+msgstr "Grandària física del paper a l'ADF"
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr "bw"
+msgstr "nb"
#: backend/kvs1025_opt.c:40
#, no-c-format
msgid "halftone"
-msgstr "halftone"
+msgstr "semi to"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr "gray"
+msgstr "gris"
#: backend/kvs1025_opt.c:42
#, no-c-format
@@ -3963,7 +4129,7 @@ msgstr "color"
#: backend/kvs40xx_opt.c:1047
#, no-c-format
msgid "adf"
-msgstr "adf"
+msgstr "ADF"
#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
#: backend/kvs40xx_opt.c:109
@@ -3975,50 +4141,50 @@ msgstr "fb"
#: backend/kvs40xx_opt.c:101
#, no-c-format
msgid "single"
-msgstr "single"
+msgstr "individual"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
#: backend/kvs40xx.c:704 backend/kvs40xx.c:722 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
#, no-c-format
msgid "continuous"
-msgstr "continuous"
+msgstr "continu"
#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
#: backend/kvs40xx_opt.c:115
#, no-c-format
msgid "off"
-msgstr "off"
+msgstr "desactivat"
#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
#: backend/kvs40xx_opt.c:116
#, no-c-format
msgid "wait_doc"
-msgstr "wait_doc"
+msgstr "espera_doc"
#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
#: backend/kvs40xx_opt.c:118
#, no-c-format
msgid "wait_key"
-msgstr "wait_key"
+msgstr "espera_clau"
#: 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 "user_def"
+msgstr "definit_usuari"
#: 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 "business_card"
+msgstr "tarjeta_visita"
#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
#: backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Check"
-msgstr "Check"
+msgstr "Comprova"
#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75
#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
@@ -4050,300 +4216,308 @@ msgstr "B6"
msgid "Legal"
msgstr "Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr "bayer_64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr "bayer_16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
-msgstr "halftone_32"
+msgstr "semi_to_32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
-msgstr "halftone_64"
+msgstr "semi_to_64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
-msgstr "diffusion"
+msgstr "difusió"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr "normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
-msgstr "light"
+msgstr "llum"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr "dark"
+msgstr "fosc"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
-msgstr "From scanner"
+msgstr "Des de l'escàner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
-msgstr "From paper"
+msgstr "Des del paper"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
-msgstr "default"
+msgstr "Predeterminat"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
-msgstr "smooth"
+msgstr "Suavitzat"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
-msgstr "none"
+msgstr "Cap"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
-msgstr "low"
+msgstr "Baix"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
-msgstr "medium"
+msgstr "Mitjà"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
-msgstr "high"
+msgstr "Alt"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr "crt"
+msgstr "CRT"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
-msgstr "linier"
+msgstr "Lineal"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
-msgstr "red"
+msgstr "Roig"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
-msgstr "green"
+msgstr "Verd"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
-msgstr "blue"
+msgstr "Blau"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
-msgstr "Sets the scan source"
+msgstr "Estableix la font de l'escaneig"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
-msgstr "Feeder mode"
+msgstr "Mode alimentador"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
-msgstr "Sets the feeding mode"
+msgstr "Estableix el mode alimentador"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr "Enable/Disable long paper mode"
+msgstr "Habilita/Inhabilita el mode paper llarg"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr "Enable/Disable length control mode"
+msgstr "Habilita/Inhabilita el mode control de la longitud"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
-msgstr "Sets the manual feed mode"
+msgstr "Estableix el mode alimentació manual"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
-msgstr "Sets the manual feed timeout in seconds"
+msgstr ""
+"Estableix en segons el temps d'espera per al mode alimentació manual"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Enable/Disable double feed detection"
+msgstr "Habilita/Inhabilita la detecció de l'alimentació de doble cara"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
-msgstr "fit-to-page"
+msgstr "Ajusta a la pàgina"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
-msgstr "Fit to page"
+msgstr "Ajusta a la pàgina"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner shrinks image to fit scanned page"
+msgstr ""
+"L'escàner encongirà la imatge per ajustar-la a la pàgina escanejada"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 "Set paper position : true for landscape, false for portrait"
+msgstr ""
+"Estableix la posició del paper: cert per a apaïsat, fals per a retrat"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
-msgstr "Automatic threshold"
+msgstr "Llindar automàtic"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
msgstr ""
-"Automatically sets brightness, contrast, white level, gamma, noise "
-"reduction and image emphasis"
+"Estableix automàticament la brillantor, el contrast, el nivell de blanc, "
+"la gamma, la reducció del soroll i l'èmfasi de la imatge"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
-msgstr "Noise reduction"
+msgstr "Reducció del soroll"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
-msgstr "Reduce the isolated dot noise"
+msgstr "Redueix el soroll dels punts aïllats"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
-msgstr "Image emphasis"
+msgstr "Èmfasis de la imatge"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
-msgstr "Sets the image emphasis"
+msgstr "Estableix l'èmfasi de la imatge"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
-msgstr "Lamp color"
+msgstr "Color de la llum"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
-msgstr "Sets the lamp color (color dropout)"
+msgstr "Estableix el color de la llum (descarta el color)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr "Inverse image in B/W or halftone mode"
+msgstr "Imatge inversa en el mode B/N o semi to"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr "Mirror image (left/right flip)"
+msgstr "Reflecteix la imatge (volteja a l'esquerra/dreta)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr "jpeg compression"
+msgstr "Compressió del JPEG"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-"JPEG Image Compression with Q parameter, ‘0’ - no compression"
+"Compressió de la imatge JPEG amb el paràmetre Q, «0»: sense compressió"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr "Rotate image clockwise"
+msgstr "Gira la imatge en sentit horari"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr "Request driver to rotate pages by a fixed amount"
+msgstr ""
+"Sol·licita al controlador que giri les pàgines per una quantitat fixa"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr "Request driver to rotate skewed pages digitally"
+msgstr ""
+"Sol·licita al controlador que giri les pàgines inclinades de forma "
+"digital"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
-msgstr "Maximum diameter of lone dots to remove from scan"
+msgstr "Diàmetre màxim dels punts solitaris per eliminar-los de l'escaneig"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr "Software automatic cropping"
+msgstr "Escapçat automàtic per programari"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr "Request driver to remove border from pages digitally"
+msgstr ""
+"Sol·licita al controlador que elimini la vora de les pàgines de forma "
+"digital"
#: backend/kvs20xx_opt.c:233 backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4351,20 +4525,20 @@ msgid ""
"Length Control Mode is a mode that the scanner reads up to the shorter "
"length of actual paper or logical document length."
msgstr ""
-"Length Control Mode is a mode that the scanner reads up to the shorter "
-"length of actual paper or logical document length."
+"El mode control de la longitud és un mode on l'escàner llegirà fins a la "
+"longitud més curta del paper real o la longitud lògica del document."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
#: backend/microtek2.h:640
#, no-c-format
msgid "Gamma correction"
-msgstr "Gamma correction"
+msgstr "Correcció de la gamma"
#: backend/kvs40xx_opt.c:117
#, no-c-format
msgid "wait_doc_hopper_up"
-msgstr "wait_doc_hopper_up"
+msgstr "espera_la_tolva_de_documents"
#: backend/kvs40xx_opt.c:127
#, no-c-format
@@ -4374,7 +4548,7 @@ msgstr "A3"
#: backend/kvs40xx_opt.c:132
#, no-c-format
msgid "Double letter 11x17 in"
-msgstr "Double letter 11x17 in"
+msgstr "Doble lletra 11x17 a"
#: backend/kvs40xx_opt.c:133
#, no-c-format
@@ -4384,32 +4558,32 @@ msgstr "B4"
#: backend/kvs40xx_opt.c:231
#, no-c-format
msgid "High sensivity"
-msgstr "High sensivity"
+msgstr "Alta sensibilitat"
#: backend/kvs40xx_opt.c:232
#, no-c-format
msgid "Low sensivity"
-msgstr "Low sensivity"
+msgstr "Baixa sensibilitat"
#: backend/kvs40xx_opt.c:243
#, no-c-format
msgid "err_diffusion"
-msgstr "err_diffusion"
+msgstr "difusió_errònia"
#: backend/kvs40xx_opt.c:249
#, no-c-format
msgid "No detection"
-msgstr "No detection"
+msgstr "Sense detecció"
#: backend/kvs40xx_opt.c:250
#, no-c-format
msgid "Normal mode"
-msgstr "Normal mode"
+msgstr "Mode normal"
#: backend/kvs40xx_opt.c:251
#, no-c-format
msgid "Enhanced mode"
-msgstr "Enhanced mode"
+msgstr "Mode millorat"
#: backend/kvs40xx_opt.c:405
#, no-c-format
@@ -4417,228 +4591,231 @@ 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."
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."
+"El mode paper llarg és un mode en el qual l'escàner llig la imatge "
+"després de dividir el paper llarg per la longitud que s'estableix a "
+"l'opció Mida del document."
#: backend/kvs40xx_opt.c:449
#, no-c-format
msgid "Double feed detector sensitivity"
-msgstr "Double feed detector sensitivity"
+msgstr "Sensibilitat del detector de doble alimentació"
#: backend/kvs40xx_opt.c:450
#, no-c-format
msgid "Set the double feed detector sensitivity"
-msgstr "Set the double feed detector sensitivity"
+msgstr "Estableix la sensibilitat del detector de doble alimentació"
#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
#, no-c-format
msgid "Do not stop after double feed detection"
-msgstr "Do not stop after double feed detection"
+msgstr "No pares després de la detecció de doble alimentació"
#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
#, no-c-format
msgid "Ignore left double feed sensor"
-msgstr "Ignore left double feed sensor"
+msgstr "Ignora el sensor esquerre de doble alimentació"
#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
#, no-c-format
msgid "Ignore center double feed sensor"
-msgstr "Ignore center double feed sensor"
+msgstr "Ignora el sensor central de doble alimentació"
#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
#, no-c-format
msgid "Ignore right double feed sensor"
-msgstr "Ignore right double feed sensor"
+msgstr "Ignora el sensor dret de doble alimentació"
#: backend/kvs40xx_opt.c:642
#, no-c-format
msgid "Automatic threshold mode"
-msgstr "Automatic threshold mode"
+msgstr "Mode llindar automàtic"
#: backend/kvs40xx_opt.c:643
#, no-c-format
msgid "Sets the automatic threshold mode"
-msgstr "Sets the automatic threshold mode"
+msgstr "Estableix el mode llindar automàtic"
#: backend/kvs40xx_opt.c:694
#, no-c-format
msgid "Inverse image in B/W mode"
-msgstr "Inverse image in B/W mode"
+msgstr "Imatge inversa en el mode B/N"
#: backend/kvs40xx_opt.c:715
#, no-c-format
msgid "JPEG compression"
-msgstr "JPEG compression"
+msgstr "Compressió del JPEG"
#: backend/kvs40xx_opt.c:718
#, no-c-format
msgid "JPEG compression (yours application must be able to uncompress)"
-msgstr "JPEG compression (yours application must be able to uncompress)"
+msgstr ""
+"Compressió del JPEG (l'aplicació vostra l'haurà de poder descomprimir)"
#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
#, no-c-format
msgid "Detect stapled document"
-msgstr "Detect stapled document"
+msgstr "Detecta un document grapat"
#: backend/kvs40xx_opt.c:776
#, no-c-format
msgid "chroma of red"
-msgstr "chroma of red"
+msgstr "Croma del color roig"
#: backend/kvs40xx_opt.c:777
#, no-c-format
msgid "Set chroma of red"
-msgstr "Set chroma of red"
+msgstr "Estableix la croma del color roig"
#: backend/kvs40xx_opt.c:787
#, no-c-format
msgid "chroma of blue"
-msgstr "chroma of blue"
+msgstr "Croma del color blau"
#: backend/kvs40xx_opt.c:788
#, no-c-format
msgid "Set chroma of blue"
-msgstr "Set chroma of blue"
+msgstr "Estableix la croma del color blau"
#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
#, no-c-format
msgid "Skew adjustment"
-msgstr "Skew adjustment"
+msgstr "Ajustament de la inclinació"
#: backend/kvs40xx_opt.c:808
#, no-c-format
msgid "Stop scanner when a paper have been skewed"
-msgstr "Stop scanner when a paper have been skewed"
+msgstr "Atura l'escàner quan un paper estiga inclinat"
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will be stop when a paper have been skewed"
-msgstr "Scanner will be stop when a paper have been skewed"
+msgstr "S'aturarà l'escàner quan un paper estiga inclinat"
#: backend/kvs40xx_opt.c:816
#, no-c-format
msgid "Crop actual image area"
-msgstr "Crop actual image area"
+msgstr "Escapça una àrea de la imatge real"
#: backend/kvs40xx_opt.c:817
#, no-c-format
msgid "Scanner automatically detect image area and crop it"
-msgstr "Scanner automatically detect image area and crop it"
+msgstr ""
+"L'escàner detectarà automàticament l'àrea de la imatge i l'escapçarà"
#: backend/kvs40xx_opt.c:827
#, no-c-format
msgid "It is right and left reversing"
-msgstr "It is right and left reversing"
+msgstr "Torna a la dreta i a l'esquerra"
#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
#, no-c-format
msgid "Addition of space in top position"
-msgstr "Addition of space in top position"
+msgstr "Afig un espai a la posició superior"
#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
#, no-c-format
msgid "Addition of space in bottom position"
-msgstr "Addition of space in bottom position"
+msgstr "Afig un espai a la posició inferior"
#: backend/leo.c:110
#, no-c-format
msgid "Diamond"
-msgstr "Diamond"
+msgstr "Diamant"
#: backend/leo.c:111
#, no-c-format
msgid "8x8 Coarse Fatting"
-msgstr "8x8 Coarse Fatting"
+msgstr "Engreix gruixut 8x8"
#: backend/leo.c:112
#, no-c-format
msgid "8x8 Fine Fatting"
-msgstr "8x8 Fine Fatting"
+msgstr "Engreix fi 8x8"
#: backend/leo.c:113
#, no-c-format
msgid "8x8 Bayer"
-msgstr "8x8 Bayer"
+msgstr "Bayer 8x8"
#: backend/leo.c:114
#, no-c-format
msgid "8x8 Vertical Line"
-msgstr "8x8 Vertical Line"
+msgstr "Línia vertical 8x8"
#: backend/lexmark.c:273 backend/umax_pp.c:715
#, no-c-format
msgid "Gain"
-msgstr "Gain"
+msgstr "Guany"
#: backend/lexmark.c:274 backend/umax_pp.c:716
#, no-c-format
msgid "Color channels gain settings"
-msgstr "Color channels gain settings"
+msgstr "Ajustaments del guany per als canals de color"
#: backend/lexmark.c:283 backend/umax_pp.c:723
#, no-c-format
msgid "Gray gain"
-msgstr "Gray gain"
+msgstr "Guany del gris"
#: backend/lexmark.c:284 backend/umax_pp.c:724
#, no-c-format
msgid "Sets gray channel gain"
-msgstr "Sets gray channel gain"
+msgstr "Estableix el guany del canal gris"
#: backend/lexmark.c:297 backend/plustek.c:1001 backend/umax_pp.c:735
#, no-c-format
msgid "Red gain"
-msgstr "Red gain"
+msgstr "Guany del roig"
#: backend/lexmark.c:298 backend/umax_pp.c:736
#, no-c-format
msgid "Sets red channel gain"
-msgstr "Sets red channel gain"
+msgstr "Estableix el guany del canal roig"
#: backend/lexmark.c:311 backend/plustek.c:1017 backend/umax_pp.c:747
#, no-c-format
msgid "Green gain"
-msgstr "Green gain"
+msgstr "Guany del verd"
#: backend/lexmark.c:312 backend/umax_pp.c:748
#, no-c-format
msgid "Sets green channel gain"
-msgstr "Sets green channel gain"
+msgstr "Estableix el guany del canal verd"
#: backend/lexmark.c:325 backend/plustek.c:1033 backend/umax_pp.c:759
#, no-c-format
msgid "Blue gain"
-msgstr "Blue gain"
+msgstr "Guany del blau"
#: backend/lexmark.c:326 backend/umax_pp.c:760
#, no-c-format
msgid "Sets blue channel gain"
-msgstr "Sets blue channel gain"
+msgstr "Estableix el guany del canal blau"
#: backend/matsushita.c:139
#, no-c-format
msgid "Bayer Dither 16"
-msgstr "Bayer Dither 16"
+msgstr "Trama 16 de Bayer"
#: backend/matsushita.c:140
#, no-c-format
msgid "Bayer Dither 64"
-msgstr "Bayer Dither 64"
+msgstr "Trama 64 de Bayer"
#: backend/matsushita.c:141
#, no-c-format
msgid "Halftone Dot 32"
-msgstr "Halftone Dot 32"
+msgstr "Punt 32 de semi to"
#: backend/matsushita.c:142
#, no-c-format
msgid "Halftone Dot 64"
-msgstr "Halftone Dot 64"
+msgstr "Punt 64 de semi to"
#: backend/matsushita.c:143
#, no-c-format
msgid "Error Diffusion"
-msgstr "Error Diffusion"
+msgstr "Difusió dels errors"
#: backend/matsushita.c:160
#, no-c-format
@@ -4658,28 +4835,28 @@ msgstr "Mode 3"
#: backend/matsushita.c:176
#, no-c-format
msgid "From white stick"
-msgstr "From white stick"
+msgstr "Des del pal blanc"
#: backend/matsushita.c:212
#, no-c-format
msgid "Smooth"
-msgstr "Smooth"
+msgstr "Suavitzat"
#: backend/matsushita.c:214 backend/matsushita.c:229
#, no-c-format
msgid "Low"
-msgstr "Low"
+msgstr "Baix"
#: backend/matsushita.c:215 backend/matsushita.c:230
#: backend/matsushita.c:1296
#, no-c-format
msgid "Medium"
-msgstr "Medium"
+msgstr "Mitjana"
#: backend/matsushita.c:216 backend/matsushita.c:231
#, no-c-format
msgid "High"
-msgstr "High"
+msgstr "Alt"
#: backend/matsushita.c:245
#, no-c-format
@@ -4689,109 +4866,112 @@ msgstr "CRT"
#: backend/matsushita.c:257
#, no-c-format
msgid "One page"
-msgstr "One page"
+msgstr "Una pàgina"
#: backend/matsushita.c:258
#, no-c-format
msgid "All pages"
-msgstr "All pages"
+msgstr "Totes les pàgines"
#: backend/matsushita.c:1034 backend/plustek.c:1333
#, no-c-format
msgid "sheetfed scanner"
-msgstr "sheetfed scanner"
+msgstr "escàner alimentat per fulls"
#: backend/matsushita.h:209
#, no-c-format
msgid "Grayscale 4 bits"
-msgstr "Grayscale 4 bits"
+msgstr "Escala de grisos en 4 bits"
#: backend/matsushita.h:210
#, no-c-format
msgid "Grayscale 8 bits"
-msgstr "Grayscale 8 bits"
+msgstr "Escala de grisos en 8 bits"
#: backend/microtek2.h:601
#, no-c-format
msgid "Shadow, midtone, highlight, exposure time"
-msgstr "Shadow, midtone, highlight, exposure time"
+msgstr "Ombra, semi to, llum intensa, temps d'exposició"
#: backend/microtek2.h:603
#, no-c-format
msgid "Special options"
-msgstr "Special options"
+msgstr "Opcions especials"
#: backend/microtek2.h:604
#, no-c-format
msgid "Color balance"
-msgstr "Color balance"
+msgstr "Equilibri de color"
#: backend/microtek2.h:607
#, no-c-format
msgid "Disable backtracking"
-msgstr "Disable backtracking"
+msgstr "Inhabilita el retrocés"
#: backend/microtek2.h:608
#, no-c-format
msgid "If checked the scanner does not perform backtracking"
-msgstr "If checked the scanner does not perform backtracking"
+msgstr "Si està marcada, l'escàner no realitzarà cap retrocés"
#: backend/microtek2.h:612
#, no-c-format
msgid "Toggle lamp of flatbed"
-msgstr "Toggle lamp of flatbed"
+msgstr "Commuta la llum de la superfície plana"
#: backend/microtek2.h:613
#, no-c-format
msgid "Toggles the lamp of the flatbed"
-msgstr "Toggles the lamp of the flatbed"
+msgstr "Commuta la llum de la superfície plana"
#: backend/microtek2.h:616
#, no-c-format
msgid "Calibration by backend"
-msgstr "Calibration by backend"
+msgstr "Calibratge fet pel dorsal"
#: backend/microtek2.h:617
#, no-c-format
msgid ""
"If checked the color calibration before a scan is done by the backend"
msgstr ""
-"If checked the color calibration before a scan is done by the backend"
+"Si està marcada, el dorsal realitzarà el calibratge de color abans "
+"d'escanejar"
#: backend/microtek2.h:621
#, no-c-format
msgid "Use the lightlid-35mm adapter"
-msgstr "Use the lightlid-35mm adapter"
+msgstr "Usa l'adaptador «lightlid-35mm»"
#: backend/microtek2.h:622
#, no-c-format
msgid "This option turns off the lamp of the flatbed during a scan"
-msgstr "This option turns off the lamp of the flatbed during a scan"
+msgstr ""
+"Aquesta opció desactiva la llum de la superfície plana durant un "
+"escanejat"
#: backend/microtek2.h:626 backend/snapscan-options.c:421
#, no-c-format
msgid "Quality scan"
-msgstr "Quality scan"
+msgstr "Qualitat de l'escaneig"
#: backend/microtek2.h:627 backend/snapscan-options.c:422
#, no-c-format
msgid "Highest quality but lower speed"
-msgstr "Highest quality but lower speed"
+msgstr "Màxima qualitat però menor velocitat"
#: backend/microtek2.h:630
#, no-c-format
msgid "Fast scan"
-msgstr "Fast scan"
+msgstr "Escanejat ràpid"
#: backend/microtek2.h:631
#, no-c-format
msgid "Highest speed but lower quality"
-msgstr "Highest speed but lower quality"
+msgstr "Màxima velocitat però menor qualitat"
#: backend/microtek2.h:634
#, no-c-format
msgid "Automatic adjustment of threshold"
-msgstr "Automatic adjustment of threshold"
+msgstr "Ajustament automàtic del llindar"
#: backend/microtek2.h:635
#, no-c-format
@@ -4799,370 +4979,382 @@ msgid ""
"If checked the backend automatically tries to determine an optimal value "
"for the threshold."
msgstr ""
-"If checked the backend automatically tries to determine an optimal value "
-"for the threshold."
+"Si està marcada, el dorsal intentarà determinar de manera automàtica un "
+"valor òptim per al llindar."
#: backend/microtek2.h:641
#, no-c-format
msgid "Selects the gamma correction mode."
-msgstr "Selects the gamma correction mode."
+msgstr "Selecciona el mode correcció de la gamma."
#: backend/microtek2.h:644
#, no-c-format
msgid "Bind gamma"
-msgstr "Bind gamma"
+msgstr "Enllaça amb la gamma"
#: backend/microtek2.h:645
#, no-c-format
msgid "Use same gamma values for all colour channels."
-msgstr "Use same gamma values for all colour channels."
+msgstr ""
+"Usa els mateixos valors de la gamma per a tots els canals de color."
#: backend/microtek2.h:649
#, no-c-format
msgid "Scalar gamma"
-msgstr "Scalar gamma"
+msgstr "Gamma escalar"
#: backend/microtek2.h:650
#, no-c-format
msgid "Selects a value for scalar gamma correction."
-msgstr "Selects a value for scalar gamma correction."
+msgstr "Selecciona un valor per a la correcció de la gamma escalar."
#: backend/microtek2.h:654
#, no-c-format
msgid "Scalar gamma red"
-msgstr "Scalar gamma red"
+msgstr "Gamma escalar del roig"
#: backend/microtek2.h:655
#, no-c-format
msgid "Selects a value for scalar gamma correction (red channel)"
-msgstr "Selects a value for scalar gamma correction (red channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal roig)"
#: backend/microtek2.h:659
#, no-c-format
msgid "Scalar gamma green"
-msgstr "Scalar gamma green"
+msgstr "Gamma escalar del verd"
#: backend/microtek2.h:660
#, no-c-format
msgid "Selects a value for scalar gamma correction (green channel)"
-msgstr "Selects a value for scalar gamma correction (green channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal verd)"
#: backend/microtek2.h:664
#, no-c-format
msgid "Scalar gamma blue"
-msgstr "Scalar gamma blue"
+msgstr "Gamma escalar del blau"
#: backend/microtek2.h:665
#, no-c-format
msgid "Selects a value for scalar gamma correction (blue channel)"
-msgstr "Selects a value for scalar gamma correction (blue channel)"
+msgstr ""
+"Selecciona un valor per a la correcció de la gamma escalar (canal blau)"
#: backend/microtek2.h:669
#, no-c-format
msgid "Channel"
-msgstr "Channel"
+msgstr "Canal"
#: backend/microtek2.h:670
#, no-c-format
msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
msgstr ""
-"Selects the colour band, “Master” means that all colours are "
-"affected."
+"Selecciona la banda de colors, «Màster» voldrà dir que afectarà a tots "
+"els colors."
#: backend/microtek2.h:674
#, no-c-format
msgid "Midtone"
-msgstr "Midtone"
+msgstr "Semi to"
#: backend/microtek2.h:675
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % gray\"."
msgstr ""
-"Selects which radiance level should be considered “50 % gray”."
+"Selecciona quin nivell de radiància s'haurà de considerar «50% gris»."
#: backend/microtek2.h:679
#, no-c-format
msgid "Midtone for red"
-msgstr "Midtone for red"
+msgstr "Semi to per al roig"
#: backend/microtek2.h:680
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % red\"."
msgstr ""
-"Selects which radiance level should be considered “50 % red”."
+"Selecciona quin nivell de radiància s'haurà de considerar «50% roig»."
#: backend/microtek2.h:684
#, no-c-format
msgid "Midtone for green"
-msgstr "Midtone for green"
+msgstr "Semi to per al verd"
#: backend/microtek2.h:685
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % green\"."
msgstr ""
-"Selects which radiance level should be considered “50 % green”."
+"Selecciona quin nivell de radiància s'haurà de considerar «50% verd»."
#: backend/microtek2.h:689
#, no-c-format
msgid "Midtone for blue"
-msgstr "Midtone for blue"
+msgstr "Semi to per al blau"
#: backend/microtek2.h:690
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % blue\"."
msgstr ""
-"Selects which radiance level should be considered “50 % blue”."
+"Selecciona quin nivell de radiància s'haurà de considerar «50% blau»."
#: backend/microtek2.h:694
#, no-c-format
msgid "Red balance"
-msgstr "Red balance"
+msgstr "Equilibri del roig"
#: backend/microtek2.h:695
#, no-c-format
msgid "Balance factor for red. A value of 100% means no correction."
-msgstr "Balance factor for red. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al roig. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:699
#, no-c-format
msgid "Green balance"
-msgstr "Green balance"
+msgstr "Equilibri del verd"
#: backend/microtek2.h:700
#, no-c-format
msgid "Balance factor for green. A value of 100% means no correction."
-msgstr "Balance factor for green. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al verd. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:704
#, no-c-format
msgid "Blue balance"
-msgstr "Blue balance"
+msgstr "Equilibri del blau"
#: backend/microtek2.h:705
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
-msgstr "Balance factor for blue. A value of 100% means no correction."
+msgstr ""
+"Equilibra el factor per al blau. Un valor del 100% voldrà dir sense "
+"correcció."
#: backend/microtek2.h:709
#, no-c-format
msgid "Firmware balance"
-msgstr "Firmware balance"
+msgstr "Equilibri per microprogramari"
#: backend/microtek2.h:710
#, no-c-format
msgid "Sets the color balance values to the firmware provided values."
-msgstr "Sets the color balance values to the firmware provided values."
+msgstr ""
+"Estableix els valors per a l'equilibri de color als valors proporcionats "
+"pel microprogramari."
#: backend/mustek.c:149
#, no-c-format
msgid "Slowest"
-msgstr "Slowest"
+msgstr "El més lent"
#: backend/mustek.c:149
#, no-c-format
msgid "Slower"
-msgstr "Slower"
+msgstr "Lent"
#: backend/mustek.c:150
#, no-c-format
msgid "Faster"
-msgstr "Faster"
+msgstr "Ràpid"
#: backend/mustek.c:150
#, no-c-format
msgid "Fastest"
-msgstr "Fastest"
+msgstr "El més ràpid"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 coarse"
-msgstr "8x8 coarse"
+msgstr "Gruixut 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 normal"
-msgstr "8x8 normal"
+msgstr "Normal 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 fine"
-msgstr "8x8 fine"
+msgstr "Fina 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "8x8 very fine"
-msgstr "8x8 very fine"
+msgstr "Molt fina 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "6x6 normal"
-msgstr "6x6 normal"
+msgstr "Normal 6x6"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 coarse"
-msgstr "5x5 coarse"
+msgstr "Gruixut 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 fine"
-msgstr "5x5 fine"
+msgstr "Fina 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "4x4 coarse"
-msgstr "4x4 coarse"
+msgstr "Gruixut 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 normal"
-msgstr "4x4 normal"
+msgstr "Normal 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 fine"
-msgstr "4x4 fine"
+msgstr "Fina 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "3x3 normal"
-msgstr "3x3 normal"
+msgstr "Normal 3x3"
#: backend/mustek.c:181
#, no-c-format
msgid "2x2 normal"
-msgstr "2x2 normal"
+msgstr "Normal 2x2"
#: backend/mustek.c:181
#, no-c-format
msgid "8x8 custom"
-msgstr "8x8 custom"
+msgstr "A mida 8x8"
#: backend/mustek.c:182
#, no-c-format
msgid "6x6 custom"
-msgstr "6x6 custom"
+msgstr "A mida 6x6"
#: backend/mustek.c:183
#, no-c-format
msgid "5x5 custom"
-msgstr "5x5 custom"
+msgstr "A mida 5x5"
#: backend/mustek.c:183
#, no-c-format
msgid "4x4 custom"
-msgstr "4x4 custom"
+msgstr "A mida 4x4"
#: backend/mustek.c:184
#, no-c-format
msgid "3x3 custom"
-msgstr "3x3 custom"
+msgstr "A mida 3x3"
#: backend/mustek.c:185
#, no-c-format
msgid "2x2 custom"
-msgstr "2x2 custom"
+msgstr "A mida 2x2"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
-msgstr "Fast gray mode"
+msgstr "Mode gris ràpid"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
-msgstr "Scan in fast gray mode (lower quality)."
+msgstr "Escaneja en el mode gris ràpid (qualitat baixa)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr ""
-"Request that all previews are done in the fastest (low-quality) mode. "
-"This may be a non-color mode or a low resolution mode."
+"Demana que totes les vistes prèvies es facen en el mode més ràpid (baixa "
+"qualitat). Aquestes poden ser en un mode sense color o un mode amb baixa "
+"resolució."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
-msgstr "Lamp off time (minutes)"
+msgstr "Temps per apagar la làmpada (minuts)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, 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."
+msgstr "Estableix el temps (en minuts) després del qual s'apagarà la llum."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
-msgstr "Turn lamp off"
+msgstr "Apaga la làmpada"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
-msgstr "Turns the lamp off immediately."
+msgstr "Apaga immediatament la llum."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
-msgstr "Red brightness"
+msgstr "Brillantor del roig"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, 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."
+msgstr "Controla la brillantor del canal roig de la imatge obtinguda."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
-msgstr "Green brightness"
+msgstr "Brillantor del verd"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, 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."
+msgstr "Controla la brillantor del canal verd de la imatge obtinguda."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
-msgstr "Blue brightness"
+msgstr "Brillantor del blau"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, 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."
+msgstr "Controla la brillantor del canal blau de la imatge obtinguda."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
-msgstr "Contrast red channel"
+msgstr "Contrast del canal roig"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, 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."
+msgstr "Controla el contrast del canal roig de la imatge obtinguda."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
-msgstr "Contrast green channel"
+msgstr "Contrast del canal verd"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, 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."
+msgstr "Controla el contrast del canal verd de la imatge obtinguda."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
-msgstr "Contrast blue channel"
+msgstr "Contrast del canal blau"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, 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."
+msgstr "Controla el contrast del canal blau de la imatge obtinguda."
#: backend/mustek_usb2.c:105
#, no-c-format
@@ -5177,22 +5369,22 @@ msgstr "Color24"
#: backend/mustek_usb2.c:107
#, no-c-format
msgid "Gray16"
-msgstr "Gray16"
+msgstr "Gris16"
#: backend/mustek_usb2.c:108
#, no-c-format
msgid "Gray8"
-msgstr "Gray8"
+msgstr "Gris8"
#: backend/mustek_usb2.c:119
#, no-c-format
msgid "Reflective"
-msgstr "Reflective"
+msgstr "Reflectant"
#: backend/mustek_usb2.c:120
#, no-c-format
msgid "Positive"
-msgstr "Positive"
+msgstr "Positiu"
#: backend/mustek_usb2.c:421
#, no-c-format
@@ -5200,28 +5392,28 @@ msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"40 seconds warm-up time."
msgstr ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"40 seconds warm-up time."
+"Escalfa fins que la brillantor de la làmpada siga constant en comptes "
+"d'insistir en el temps d'escalfament de 40 segons."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
-msgstr "Negative color"
+msgstr "Color en negatiu"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
-msgstr "Negative gray"
+msgstr "Gris en negatiu"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
-msgstr "48 bits color"
+msgstr "Color de 48 bits"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
-msgstr "16 bits gray"
+msgstr "Gris de 16 bits"
#: backend/pixma_sane_options.c:84
#, no-c-format
@@ -5229,13 +5421,14 @@ msgid ""
"Selects the scan source (such as a document-feeder). Set source before "
"mode and resolution. Resets mode and resolution to auto values."
msgstr ""
-"Selects the scan source (such as a document-feeder). Set source before "
-"mode and resolution. Resets mode and resolution to auto values."
+"Selecciona la font de l'escàner font (com un alimentador de documents). "
+"Estableix la font abans del mode i la resolució. Restaura el mode i la "
+"resolució als valors automàtics."
#: backend/pixma_sane_options.c:98
#, no-c-format
msgid "Button-controlled scan"
-msgstr "Button-controlled scan"
+msgstr "Escaneig controlat pels botons"
#: backend/pixma_sane_options.c:99
#, no-c-format
@@ -5244,39 +5437,39 @@ msgid ""
"\"SCAN\" button (for MP150) or \"COLOR\" button (for other models). To "
"cancel, press \"GRAY\" button."
msgstr ""
-"When enabled, scan process will not start immediately. To proceed, press "
-"“SCAN” button (for MP150) or “COLOR” button (for other "
-"models). To cancel, press “GRAY” button."
+"Quan està habilitat, el procés d'escaneig no s'iniciarà immediatament. "
+"Per a continuar, premeu el botó «Escaneja» (per a MP150) o el botó "
+"«Color» (per a altres models). Per a cancel·lar, premeu el botó «Gris»."
#: backend/pixma_sane_options.c:232
#, no-c-format
msgid "Update button state"
-msgstr "Update button state"
+msgstr "Actualitza l'estat del botó"
#: backend/pixma_sane_options.c:244
#, no-c-format
msgid "Button 1"
-msgstr "Button 1"
+msgstr "Botó 1"
#: backend/pixma_sane_options.c:258
#, no-c-format
msgid "Button 2"
-msgstr "Button 2"
+msgstr "Botó 2"
#: backend/pixma_sane_options.c:272
#, no-c-format
msgid "Type of original to scan"
-msgstr "Type of original to scan"
+msgstr "Tipus de l'original a escanejar"
#: backend/pixma_sane_options.c:286
#, no-c-format
msgid "Target operation type"
-msgstr "Target operation type"
+msgstr "Tipus de l'operació de destinació"
#: backend/pixma_sane_options.c:348
#, no-c-format
msgid "ADF Waiting Time"
-msgstr "ADF Waiting Time"
+msgstr "Temps d'espera per a l'ADF"
#: backend/pixma_sane_options.c:349
#, no-c-format
@@ -5284,158 +5477,158 @@ msgid ""
"When set, the scanner searches the waiting time in seconds for a new "
"document inserted into the automatic document feeder."
msgstr ""
-"When set, the scanner searches the waiting time in seconds for a new "
-"document inserted into the automatic document feeder."
+"Quan s'estableix, l'escàner cerca el temps d'espera en segons perquè "
+"s'inserisca un document nou a l'alimentador automàtic de documents."
#: backend/plustek.c:235 backend/plustek_pp.c:204 backend/u12.c:156
#, no-c-format
msgid "Transparency"
-msgstr "Transparency"
+msgstr "Transparència"
#: backend/plustek.c:913
#, no-c-format
msgid "Device-Settings"
-msgstr "Device-Settings"
+msgstr "Ajustaments del dispositiu"
#: backend/plustek.c:920
#, no-c-format
msgid "Lampswitch"
-msgstr "Lampswitch"
+msgstr "Interruptor de la làmpada"
#: backend/plustek.c:921
#, no-c-format
msgid "Manually switching the lamp(s)."
-msgstr "Manually switching the lamp(s)."
+msgstr "Interruptor manual de la/es làmpada/es."
#: backend/plustek.c:926
#, no-c-format
msgid "Lamp off during dark calibration"
-msgstr "Lamp off during dark calibration"
+msgstr "Apaga la làmpada durant el calibratge fosc"
#: backend/plustek.c:927
#, no-c-format
msgid "Always switches lamp off when doing dark calibration."
-msgstr "Always switches lamp off when doing dark calibration."
+msgstr "Apaga sempre la làmpada quan es fa el calibratge fosc."
#: backend/plustek.c:935
#, no-c-format
msgid "Calibration data cache"
-msgstr "Calibration data cache"
+msgstr "Cau per a les dades de calibratge"
#: backend/plustek.c:936
#, no-c-format
msgid "Enables or disables calibration data cache."
-msgstr "Enables or disables calibration data cache."
+msgstr "Habilita o inhabilita el cau per a les dades de calibratge."
#: backend/plustek.c:942
#, no-c-format
msgid "Performs calibration"
-msgstr "Performs calibration"
+msgstr "Realitza el calibratge"
#: backend/plustek.c:959
#, no-c-format
msgid "Speedup sensor"
-msgstr "Speedup sensor"
+msgstr "Sensor de l'acceleració"
#: backend/plustek.c:960
#, no-c-format
msgid "Enables or disables speeding up sensor movement."
-msgstr "Enables or disables speeding up sensor movement."
+msgstr "Habilita o inhabilita el moviment del sensor de l'acceleració."
#: backend/plustek.c:974
#, no-c-format
msgid "Warmup-time"
-msgstr "Warmup-time"
+msgstr "Temps d'escalfament"
#: backend/plustek.c:975
#, no-c-format
msgid "Warmup-time in seconds."
-msgstr "Warmup-time in seconds."
+msgstr "Temps d'escalfament en segons."
#: backend/plustek.c:987
#, no-c-format
msgid "Lampoff-time"
-msgstr "Lampoff-time"
+msgstr "Temps per apagar la làmpada"
#: backend/plustek.c:988
#, no-c-format
msgid "Lampoff-time in seconds."
-msgstr "Lampoff-time in seconds."
+msgstr "Temps per apagar la làmpada en segons."
#: backend/plustek.c:995
#, no-c-format
msgid "Analog frontend"
-msgstr "Analog frontend"
+msgstr "Frontal analògic"
#: backend/plustek.c:1002
#, no-c-format
msgid "Red gain value of the AFE"
-msgstr "Red gain value of the AFE"
+msgstr "Valor de guany del roig de l'AFE"
#: backend/plustek.c:1009 backend/umax_pp.c:792
#, no-c-format
msgid "Red offset"
-msgstr "Red offset"
+msgstr "Desplaçament del roig"
#: backend/plustek.c:1010
#, no-c-format
msgid "Red offset value of the AFE"
-msgstr "Red offset value of the AFE"
+msgstr "Valor de desplaçament del roig de l'AFE"
#: backend/plustek.c:1018
#, no-c-format
msgid "Green gain value of the AFE"
-msgstr "Green gain value of the AFE"
+msgstr "Valor de guany del verd de l'AFE"
#: backend/plustek.c:1026
#, no-c-format
msgid "Green offset value of the AFE"
-msgstr "Green offset value of the AFE"
+msgstr "Valor de desplaçament del verd de l'AFE"
#: backend/plustek.c:1034
#, no-c-format
msgid "Blue gain value of the AFE"
-msgstr "Blue gain value of the AFE"
+msgstr "Valor de guany del blau de l'AFE"
#: backend/plustek.c:1042
#, no-c-format
msgid "Blue offset value of the AFE"
-msgstr "Blue offset value of the AFE"
+msgstr "Valor de desplaçament del blau de l'AFE"
#: backend/plustek.c:1049
#, no-c-format
msgid "Red lamp off"
-msgstr "Red lamp off"
+msgstr "Llum vermella apagada"
#: backend/plustek.c:1050
#, no-c-format
msgid "Defines red lamp off parameter"
-msgstr "Defines red lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum vermella"
#: backend/plustek.c:1057
#, no-c-format
msgid "Green lamp off"
-msgstr "Green lamp off"
+msgstr "Llum verda apagada"
#: backend/plustek.c:1058
#, no-c-format
msgid "Defines green lamp off parameter"
-msgstr "Defines green lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum verda"
#: backend/plustek.c:1065
#, no-c-format
msgid "Blue lamp off"
-msgstr "Blue lamp off"
+msgstr "Llum blava apagada"
#: backend/plustek.c:1066
#, no-c-format
msgid "Defines blue lamp off parameter"
-msgstr "Defines blue lamp off parameter"
+msgstr "Defineix el paràmetre per apagar la llum blava"
#: backend/plustek.c:1096
#, no-c-format
msgid "This option reflects the status of the scanner buttons."
-msgstr "This option reflects the status of the scanner buttons."
+msgstr "Aquesta opció reflecteix l'estat dels botons de l'escàner."
#: backend/plustek_pp.c:197
#, no-c-format
@@ -5445,42 +5638,42 @@ msgstr "Color36"
#: backend/plustek_pp.c:211
#, no-c-format
msgid "Dithermap 1"
-msgstr "Dithermap 1"
+msgstr "Mapa amb trama 1"
#: backend/plustek_pp.c:212
#, no-c-format
msgid "Dithermap 2"
-msgstr "Dithermap 2"
+msgstr "Mapa amb trama 2"
#: backend/plustek_pp.c:213
#, no-c-format
msgid "Randomize"
-msgstr "Randomize"
+msgstr "Aleatori"
#: backend/pnm.c:168
#, no-c-format
msgid "Source Selection"
-msgstr "Source Selection"
+msgstr "Selecció de la font"
#: backend/pnm.c:205
#, no-c-format
msgid "Image Enhancement"
-msgstr "Image Enhancement"
+msgstr "Millora de la imatge"
#: backend/pnm.c:241
#, no-c-format
msgid "Grayify"
-msgstr "Grayify"
+msgstr "Grisifica"
#: backend/pnm.c:242
#, no-c-format
msgid "Load the image as grayscale."
-msgstr "Load the image as grayscale."
+msgstr "Carrega la imatge en escala de grisos."
#: backend/pnm.c:253
#, no-c-format
msgid "Three-Pass Simulation"
-msgstr "Three-Pass Simulation"
+msgstr "Simulació de tres passos"
#: backend/pnm.c:255
#, no-c-format
@@ -5488,13 +5681,13 @@ msgid ""
"Simulate a three-pass scanner by returning 3 separate frames. For "
"kicks, it returns green, then blue, then red."
msgstr ""
-"Simulate a three-pass scanner by returning 3 separate frames. For "
-"kicks, it returns green, then blue, then red."
+"Simula un escàner de tres passos en retornar 3 fotogrames separats. Per "
+"a diversió, retorna al verd, llavors al blau i llavors al roig."
#: backend/pnm.c:267
#, no-c-format
msgid "Hand-Scanner Simulation"
-msgstr "Hand-Scanner Simulation"
+msgstr "Simulació d'un escàner manual"
#: backend/pnm.c:268
#, no-c-format
@@ -5503,51 +5696,53 @@ msgid ""
"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 ""
-"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."
+"Simula un escàner manual. Els escàners manuals sovint no coneixen "
+"l'alçària de la imatge. En canvi, retornen una alçària de -1. En "
+"establir aquesta opció, es pot comprovar si un frontal pot gestionar-la "
+"correctament."
#: backend/pnm.c:283
#, no-c-format
msgid ""
"Set default values for enhancement controls (brightness & contrast)."
msgstr ""
-"Set default values for enhancement controls (brightness & contrast)."
+"Estableix els valors predeterminats per als controls de millora "
+"(brillantor i contrast)."
#: backend/pnm.c:295
#, no-c-format
msgid "Read only test-option"
-msgstr "Read only test-option"
+msgstr "Opció de prova per a només de lectura"
#: backend/pnm.c:296
#, no-c-format
msgid "Let's see whether frontends can treat this right"
-msgstr "Let's see whether frontends can treat this right"
+msgstr "Permet veure si els frontals poden tractar això correctament"
#: backend/pnm.c:307
#, no-c-format
msgid "Gamma Tables"
-msgstr "Gamma Tables"
+msgstr "Taules de gamma"
#: backend/pnm.c:379
#, no-c-format
msgid "Status Code Simulation"
-msgstr "Status Code Simulation"
+msgstr "Simulació del codi d'estat"
#: backend/pnm.c:391
#, no-c-format
msgid "Do not force status code"
-msgstr "Do not force status code"
+msgstr "No força el codi d'estat"
#: backend/pnm.c:392
#, no-c-format
msgid "Do not force the backend to return a status code."
-msgstr "Do not force the backend to return a status code."
+msgstr "No força al dorsal a què retorne un codi d'estat."
#: backend/pnm.c:403
#, no-c-format
msgid "Return SANE_STATUS_EOF"
-msgstr "Return SANE_STATUS_EOF"
+msgstr "Retorna «SANE_STATUS_EOF»"
#: backend/pnm.c:404
#, no-c-format
@@ -5555,13 +5750,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_EOF after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_EOF after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_EOF» després "
+"de cridar al «sane_read()»."
#: backend/pnm.c:416
#, no-c-format
msgid "Return SANE_STATUS_JAMMED"
-msgstr "Return SANE_STATUS_JAMMED"
+msgstr "Retorna «SANE_STATUS_JAMMED»"
#: backend/pnm.c:418
#, no-c-format
@@ -5569,13 +5764,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_JAMMED after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_JAMMED after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_JAMMED» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:430
#, no-c-format
msgid "Return SANE_STATUS_NO_DOCS"
-msgstr "Return SANE_STATUS_NO_DOCS"
+msgstr "Retorna «SANE_STATUS_NO_DOCS»"
#: backend/pnm.c:431
#, no-c-format
@@ -5583,13 +5778,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_NO_DOCS» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:443
#, no-c-format
msgid "Return SANE_STATUS_COVER_OPEN"
-msgstr "Return SANE_STATUS_COVER_OPEN"
+msgstr "Retorna «SANE_STATUS_COVER_OPEN»"
#: backend/pnm.c:444
#, no-c-format
@@ -5597,13 +5792,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_COVER_OPEN» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:456
#, no-c-format
msgid "Return SANE_STATUS_IO_ERROR"
-msgstr "Return SANE_STATUS_IO_ERROR"
+msgstr "Retorna «SANE_STATUS_IO_ERROR»"
#: backend/pnm.c:457
#, no-c-format
@@ -5611,13 +5806,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_IO_ERROR» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:469
#, no-c-format
msgid "Return SANE_STATUS_NO_MEM"
-msgstr "Return SANE_STATUS_NO_MEM"
+msgstr "Retorna «SANE_STATUS_NO_MEM»"
#: backend/pnm.c:471
#, no-c-format
@@ -5625,13 +5820,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_MEM after "
"sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_NO_MEM after "
-"sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat «SANE_STATUS_NO_MEM» "
+"després de cridar al «sane_read()»."
#: backend/pnm.c:483
#, no-c-format
msgid "Return SANE_STATUS_ACCESS_DENIED"
-msgstr "Return SANE_STATUS_ACCESS_DENIED"
+msgstr "Retorna «SANE_STATUS_ACCESS_DENIED»"
#: backend/pnm.c:484
#, no-c-format
@@ -5639,83 +5834,83 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
"after sane_read() has been called."
msgstr ""
-"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
-"after sane_read() has been called."
+"Força el dorsal perquè retorne el codi d'estat "
+"«SANE_STATUS_ACCESS_DENIED» després de cridar al «sane_read()»."
#: 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."
+msgstr "Aquesta opció reflecteix l'estat d'un botó de l'escàner."
#: backend/rts8891.c:2840 backend/umax.c:5795 backend/umax_pp.c:639
#, no-c-format
msgid "Lamp on"
-msgstr "Lamp on"
+msgstr "Encén la làmpada"
#: backend/rts8891.c:2841 backend/umax.c:5796
#, no-c-format
msgid "Turn on scanner lamp"
-msgstr "Turn on scanner lamp"
+msgstr "Encén la llum de l'escàner"
#: backend/rts8891.c:2851 backend/umax1220u.c:248 backend/umax.c:5812
#, no-c-format
msgid "Lamp off"
-msgstr "Lamp off"
+msgstr "Apaga la làmpada"
#: backend/rts8891.c:2852 backend/umax1220u.c:249 backend/umax.c:5813
#, no-c-format
msgid "Turn off scanner lamp"
-msgstr "Turn off scanner lamp"
+msgstr "Apaga la llum de l'escàner"
#: backend/sm3840.c:760
#, no-c-format
msgid "Lamp timeout"
-msgstr "Lamp timeout"
+msgstr "Temps d'espera de la làmpada"
#: backend/sm3840.c:762
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
-msgstr "Minutes until lamp is turned off after scan"
+msgstr "Minuts fins que la làmpada està apagada després d'escanejar"
#: backend/sm3840.c:772
#, no-c-format
msgid "Threshold value for lineart mode"
-msgstr "Threshold value for lineart mode"
+msgstr "Valor de llindar per al mode art lineal"
#: backend/snapscan-options.c:88
#, no-c-format
msgid "Document Feeder"
-msgstr "Document Feeder"
+msgstr "Alimentador de documents"
#: backend/snapscan-options.c:92
#, no-c-format
msgid "6x4 (inch)"
-msgstr "6x4 (inch)"
+msgstr "6x4 (polçades)"
#: backend/snapscan-options.c:93
#, no-c-format
msgid "8x10 (inch)"
-msgstr "8x10 (inch)"
+msgstr "8x10 (polçades)"
#: backend/snapscan-options.c:94
#, no-c-format
msgid "8.5x11 (inch)"
-msgstr "8.5x11 (inch)"
+msgstr "8.5x11 (polçades)"
#: backend/snapscan-options.c:97
#, no-c-format
msgid "Halftoning Unsupported"
-msgstr "Halftoning Unsupported"
+msgstr "El semi to no està admés"
#: backend/snapscan-options.c:98
#, no-c-format
msgid "DispersedDot8x8"
-msgstr "DispersedDot8x8"
+msgstr "PuntDispers8x8"
#: backend/snapscan-options.c:99
#, no-c-format
msgid "DispersedDot16x16"
-msgstr "DispersedDot16x16"
+msgstr "PuntDispers16x16"
#: backend/snapscan-options.c:103
#, no-c-format
@@ -5726,31 +5921,33 @@ msgid ""
"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 ""
-"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."
+"Nombre de línies d'escaneig a sol·licitar en una lectura SCSI. Si "
+"canvieu aquest paràmetre, podreu ajustar la velocitat a la qual es "
+"lligen les dades des de l'escàner durant els escanejos. Si aquest és "
+"massa baix, l'escàner s'aturarà periòdicament enmig d'un escaneig. Si "
+"s'estableix massa alt, els frontals basats en les X podrien deixar de "
+"respondre als esdeveniments de les X i reduir-se el rendiment del "
+"sistema."
#: backend/snapscan-options.c:111
#, no-c-format
msgid "Frame number of media holder that should be scanned."
-msgstr "Frame number of media holder that should be scanned."
+msgstr "Número del fotograma del suport que s'haurà d'escanejar."
#: backend/snapscan-options.c:114
#, no-c-format
msgid "Use manual or automatic selection of focus point."
-msgstr "Use manual or automatic selection of focus point."
+msgstr "Usa la selecció manual o automàtica del punt d'enfocament."
#: backend/snapscan-options.c:117
#, no-c-format
msgid "Focus point for scanning."
-msgstr "Focus point for scanning."
+msgstr "Punt d'enfocament per escanejar."
#: backend/snapscan-options.c:482
#, no-c-format
msgid "Preview mode"
-msgstr "Preview mode"
+msgstr "Mode de vista prèvia"
#: backend/snapscan-options.c:484
#, no-c-format
@@ -5758,13 +5955,14 @@ msgid ""
"Select the mode for previews. Greyscale previews usually give the best "
"combination of speed and detail."
msgstr ""
-"Select the mode for previews. Greyscale previews usually give the best "
-"combination of speed and detail."
+"Selecciona el mode per a les vistes prèvies. Les vistes prèvies a escala "
+"de grisos normalment ofereixen la millor combinació entre velocitat i "
+"detall."
#: backend/snapscan-options.c:601
#, no-c-format
msgid "Predefined settings"
-msgstr "Predefined settings"
+msgstr "Ajustaments predeterminats"
#: backend/snapscan-options.c:603
#, no-c-format
@@ -5772,53 +5970,53 @@ msgid ""
"Provides standard scanning areas for photographs, printed pages and the "
"like."
msgstr ""
-"Provides standard scanning areas for photographs, printed pages and the "
-"like."
+"Proporciona àrees d'escaneig estàndard per a fotografies, pàgines "
+"impreses i similars."
#: backend/snapscan-options.c:884
#, no-c-format
msgid "Frame"
-msgstr "Frame"
+msgstr "Marc"
#: backend/snapscan-options.c:885
#, no-c-format
msgid "Frame to be scanned"
-msgstr "Frame to be scanned"
+msgstr "Marc a escanejar"
#: backend/snapscan-options.c:897
#, no-c-format
msgid "Focus-mode"
-msgstr "Focus-mode"
+msgstr "Mode de l'enfocament"
#: backend/snapscan-options.c:898
#, no-c-format
msgid "Auto or manual focus"
-msgstr "Auto or manual focus"
+msgstr "Enfocament automàtic o manual"
#: backend/snapscan-options.c:911
#, no-c-format
msgid "Focus-point"
-msgstr "Focus-point"
+msgstr "Punt d'enfocament"
#: backend/snapscan-options.c:912
#, no-c-format
msgid "Focus point"
-msgstr "Focus point"
+msgstr "Punt d'enfocament"
#: backend/snapscan-options.c:930
#, no-c-format
msgid "Colour lines per read"
-msgstr "Colour lines per read"
+msgstr "Línies de color per a la lectura"
#: backend/snapscan-options.c:942
#, no-c-format
msgid "Greyscale lines per read"
-msgstr "Greyscale lines per read"
+msgstr "Línies en escala de grisos per a la lectura"
#: backend/stv680.c:974
#, no-c-format
msgid "webcam"
-msgstr "webcam"
+msgstr "Càmera web"
#: backend/stv680.h:115
#, no-c-format
@@ -5833,37 +6031,37 @@ msgstr "Color RGB"
#: backend/stv680.h:117
#, no-c-format
msgid "Color RGB TEXT"
-msgstr "Color RGB TEXT"
+msgstr "Color RGB per al text"
#: backend/test.c:137
#, no-c-format
msgid "Solid black"
-msgstr "Solid black"
+msgstr "Negre sòlid"
#: backend/test.c:137
#, no-c-format
msgid "Solid white"
-msgstr "Solid white"
+msgstr "Blanc sòlid"
#: backend/test.c:138
#, no-c-format
msgid "Color pattern"
-msgstr "Color pattern"
+msgstr "Patró per al color"
#: backend/test.c:138
#, no-c-format
msgid "Grid"
-msgstr "Grid"
+msgstr "Quadrícula"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "First entry"
-msgstr "First entry"
+msgstr "Primera entrada"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "Second entry"
-msgstr "Second entry"
+msgstr "Segona entrada"
#: backend/test.c:165
#, no-c-format
@@ -5871,13 +6069,13 @@ msgid ""
"This is the very long third entry. Maybe the frontend has an idea how to "
"display it"
msgstr ""
-"This is the very long third entry. Maybe the frontend has an idea how to "
-"display it"
+"Aquesta és la tercera entrada molt llarga. Potser el frontal té una idea "
+"sobre com mostrar-la"
#: backend/test.c:348
#, no-c-format
msgid "Hand-scanner simulation"
-msgstr "Hand-scanner simulation"
+msgstr "Simulació d'un escàner manual"
#: backend/test.c:349
#, no-c-format
@@ -5887,15 +6085,15 @@ msgid ""
"allows one to test whether a frontend can handle this correctly. This "
"option also enables a fixed width of 11 cm."
msgstr ""
-"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."
+"Simula un escàner manual. Els escàners manuals sovint no coneixen "
+"l'alçària de la imatge. En canvi, retornen una alçària de -1. En "
+"establir aquesta opció, es pot comprovar si un frontal pot gestionar-la "
+"correctament. Aquesta opció també permet una amplària fixa d'11 cm."
#: backend/test.c:366
#, no-c-format
msgid "Three-pass simulation"
-msgstr "Three-pass simulation"
+msgstr "Simulació de tres passos"
#: backend/test.c:367
#, no-c-format
@@ -5903,18 +6101,18 @@ msgid ""
"Simulate a three-pass scanner. In color mode, three frames are "
"transmitted."
msgstr ""
-"Simulate a three-pass scanner. In color mode, three frames are "
-"transmitted."
+"Simula un escàner de tres passos. En mode de color, es transmeten tres "
+"fotogrames."
#: backend/test.c:382
#, no-c-format
msgid "Set the order of frames"
-msgstr "Set the order of frames"
+msgstr "Estableix l'ordre dels fotogrames"
#: backend/test.c:383
#, no-c-format
msgid "Set the order of frames in three-pass color mode."
-msgstr "Set the order of frames in three-pass color mode."
+msgstr "Estableix l'ordre dels fotogrames en el mode color de tres passos."
#: backend/test.c:416
#, no-c-format
@@ -5922,18 +6120,18 @@ msgid ""
"If Automatic Document Feeder is selected, the feeder will be 'empty' "
"after 10 scans."
msgstr ""
-"If Automatic Document Feeder is selected, the feeder will be "
-"‘empty’ after 10 scans."
+"Si se selecciona l'alimentador automàtic de documents, l'alimentador "
+"estarà «buit» després de 10 escaneigs."
#: backend/test.c:431
#, no-c-format
msgid "Special Options"
-msgstr "Special Options"
+msgstr "Opcions especials"
#: backend/test.c:444
#, no-c-format
msgid "Select the test picture"
-msgstr "Select the test picture"
+msgstr "Selecciona la fotografia de prova"
#: backend/test.c:446
#, no-c-format
@@ -5945,17 +6143,18 @@ msgid ""
"Grid: draws a black/white grid with a width and height of 10 mm per "
"square."
msgstr ""
-"Select the kind of test picture. Available options:\n"
-"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."
+"Seleccioneu el tipus de la fotografia de prova. Opcions disponibles:\n"
+"Negre sòlid: omple tot l'escaneig amb el negre.\n"
+"Blanc sòlid: omple tot l'escaneig amb el blanc.\n"
+"Patró per al color: dibuixa diversos patrons de prova per al color en "
+"funció del mode.\n"
+"Quadrícula: dibuixa una quadrícula en negre/blanc amb una amplària i una "
+"alçària de 10 mm per quadrat."
#: backend/test.c:467
#, no-c-format
msgid "Invert endianness"
-msgstr "Invert endianness"
+msgstr "Inverteix la codificació «endian»"
#: backend/test.c:468
#, no-c-format
@@ -5964,59 +6163,62 @@ msgid ""
"can be used to test the 16 bit modes of frontends, e.g. if the frontend "
"uses the correct endianness."
msgstr ""
-"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."
+"Intercanvi de bytes superior i inferior de dades d'imatge en els modes "
+"de 16 bits. Aquesta opció es pot usar per a provar els modes de 16 bits "
+"dels frontals, p. ex., si el frontal empra una codificació «endian» "
+"correcta."
#: backend/test.c:484
#, no-c-format
msgid "Read limit"
-msgstr "Read limit"
+msgstr "Límit en la lectura"
#: backend/test.c:485
#, no-c-format
msgid "Limit the amount of data transferred with each call to sane_read()."
msgstr ""
-"Limit the amount of data transferred with each call to sane_read()."
+"Limita la quantitat de dades transferida amb cada crida al «sane_read()»."
#: backend/test.c:498
#, no-c-format
msgid "Size of read-limit"
-msgstr "Size of read-limit"
+msgstr "Mida per al límit en la lectura"
#: backend/test.c:499
#, no-c-format
msgid ""
"The (maximum) amount of data transferred with each call to sane_read()."
msgstr ""
-"The (maximum) amount of data transferred with each call to sane_read()."
+"La quantitat (màxima) de dades transferida amb cada crida al "
+"«sane_read()»."
#: backend/test.c:514
#, no-c-format
msgid "Read delay"
-msgstr "Read delay"
+msgstr "Retard en la lectura"
#: backend/test.c:515
#, no-c-format
msgid "Delay the transfer of data to the pipe."
-msgstr "Delay the transfer of data to the pipe."
+msgstr "Retarda la transferència de les dades a la canonada."
#: backend/test.c:527
#, no-c-format
msgid "Duration of read-delay"
-msgstr "Duration of read-delay"
+msgstr "Durada del retard en la lectura"
#: backend/test.c:528
#, no-c-format
msgid ""
"How long to wait after transferring each buffer of data through the pipe."
msgstr ""
-"How long to wait after transferring each buffer of data through the pipe."
+"Quant de temps s'esperarà després de transferir cada cau de dades a "
+"través de la canonada."
#: backend/test.c:543
#, no-c-format
msgid "Return-value of sane_read"
-msgstr "Return-value of sane_read"
+msgstr "Valor retornat pel «sane_read()»"
#: backend/test.c:545
#, no-c-format
@@ -6025,24 +6227,24 @@ msgid ""
"handling for scanning. All other status codes are for testing how the "
"frontend handles them."
msgstr ""
-"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."
+"Selecciona el valor retornat pel «sane_read()». «Predeterminat» és el "
+"maneig normal per a escanejar. Tots els altres codis d'estat són per a "
+"provar com els maneja el frontal."
#: backend/test.c:562
#, no-c-format
msgid "Loss of pixels per line"
-msgstr "Loss of pixels per line"
+msgstr "Pèrdua de píxels per línia"
#: backend/test.c:564
#, no-c-format
msgid "The number of pixels that are wasted at the end of each line."
-msgstr "The number of pixels that are wasted at the end of each line."
+msgstr "El nombre de píxels que es perdran al final de cada línia."
#: backend/test.c:577
#, no-c-format
msgid "Fuzzy parameters"
-msgstr "Fuzzy parameters"
+msgstr "Paràmetres difusos"
#: backend/test.c:578
#, no-c-format
@@ -6050,23 +6252,25 @@ msgid ""
"Return fuzzy lines and bytes per line when sane_parameters() is called "
"before sane_start()."
msgstr ""
-"Return fuzzy lines and bytes per line when sane_parameters() is called "
-"before sane_start()."
+"Retorna línies borroses i bytes per línia quan es crida la "
+"«sane_parameters()» abans de la «sane_start()»."
#: backend/test.c:591
#, no-c-format
msgid "Use non-blocking IO"
-msgstr "Use non-blocking IO"
+msgstr "Usa una E/S que no es bloquegi"
#: backend/test.c:592
#, no-c-format
msgid "Use non-blocking IO for sane_read() if supported by the frontend."
-msgstr "Use non-blocking IO for sane_read() if supported by the frontend."
+msgstr ""
+"Usa una E/S que no es bloquegi per a la «sane_read()» si està admés pel "
+"frontal."
#: backend/test.c:605
#, no-c-format
msgid "Offer select file descriptor"
-msgstr "Offer select file descriptor"
+msgstr "Ofereix el descriptor de fitxer seleccionat"
#: backend/test.c:606
#, no-c-format
@@ -6074,13 +6278,13 @@ msgid ""
"Offer a select filedescriptor for detecting if sane_read() will return "
"data."
msgstr ""
-"Offer a select filedescriptor for detecting if sane_read() will return "
-"data."
+"Ofereix un descriptor de fitxer seleccionat per a detectar si la "
+"«sane_read()» retornarà dades."
#: backend/test.c:619
#, no-c-format
msgid "Enable test options"
-msgstr "Enable test options"
+msgstr "Habilita les opcions de prova"
#: backend/test.c:620
#, no-c-format
@@ -6088,28 +6292,29 @@ msgid ""
"Enable various test options. This is for testing the ability of "
"frontends to view and modify all the different SANE option types."
msgstr ""
-"Enable various test options. This is for testing the ability of "
-"frontends to view and modify all the different SANE option types."
+"Habilita diverses opcions de prova. Això és per a provar la capacitat "
+"dels frontals per a veure i modificar tots els diferents tipus d'opcions "
+"de SANE."
#: backend/test.c:634
#, no-c-format
msgid "Print options"
-msgstr "Print options"
+msgstr "Opcions per a la impressió"
#: backend/test.c:635
#, no-c-format
msgid "Print a list of all options."
-msgstr "Print a list of all options."
+msgstr "Imprimeix una llista de totes les opcions."
#: backend/test.c:712
#, no-c-format
msgid "Bool test options"
-msgstr "Bool test options"
+msgstr "Opcions per a la prova booleana"
#: backend/test.c:725
#, no-c-format
msgid "(1/6) Bool soft select soft detect"
-msgstr "(1/6) Bool soft select soft detect"
+msgstr "(1/6) Selecció i detecció booleana per programari"
#: backend/test.c:727
#, no-c-format
@@ -6117,13 +6322,14 @@ msgid ""
"(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) Bool test option that has soft select and soft detect (and "
-"advanced) capabilities. That's just a normal bool option."
+"(1/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari. Aquesta només és una opció "
+"booleana normal."
#: backend/test.c:743
#, no-c-format
msgid "(2/6) Bool hard select soft detect"
-msgstr "(2/6) Bool hard select soft detect"
+msgstr "(2/6) Selecció booleana per maquinari i detecció per programari"
#: backend/test.c:745
#, no-c-format
@@ -6132,14 +6338,15 @@ msgid ""
"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) 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) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció per maquinari i la detecció per programari. Això vol dir que "
+"l'opció no pot ser establida pel frontal, sinó per l'usuari (p. ex., si "
+"premeu un botó al dispositiu)."
#: backend/test.c:762
#, no-c-format
msgid "(3/6) Bool hard select"
-msgstr "(3/6) Bool hard select"
+msgstr "(3/6) Selecció booleana per maquinari"
#: backend/test.c:763
#, no-c-format
@@ -6148,14 +6355,15 @@ msgid ""
"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) 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."
+"(3/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció per maquinari. Això vol dir que l'opció no pot ser establida "
+"pel frontal, sinó per l'usuari (p. ex., si premeu un botó al dispositiu) "
+"i no el frontal no ho pot llegir."
#: backend/test.c:781
#, no-c-format
msgid "(4/6) Bool soft detect"
-msgstr "(4/6) Bool soft detect"
+msgstr "(4/6) Detecció booleana per programari"
#: backend/test.c:782
#, no-c-format
@@ -6163,13 +6371,15 @@ msgid ""
"(4/6) Bool test option that has soft detect (and advanced) capabilities. "
"That means the option is read-only."
msgstr ""
-"(4/6) Bool test option that has soft detect (and advanced) capabilities. "
-"That means the option is read-only."
+"(4/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la detecció per programari. Això vol dir que aquesta opció és de només "
+"lectura."
#: backend/test.c:798
#, no-c-format
msgid "(5/6) Bool soft select soft detect emulated"
-msgstr "(5/6) Bool soft select soft detect emulated"
+msgstr ""
+"(5/6) Detecció booleana per programari i detecció emulada per programari"
#: backend/test.c:799
#, no-c-format
@@ -6177,13 +6387,15 @@ msgid ""
"(5/6) Bool test option that has soft select, soft detect, and emulated "
"(and advanced) capabilities."
msgstr ""
-"(5/6) Bool test option that has soft select, soft detect, and emulated "
-"(and advanced) capabilities."
+"(5/6) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari, i emulades."
#: backend/test.c:815
#, no-c-format
msgid "(6/6) Bool soft select soft detect auto"
-msgstr "(6/6) Bool soft select soft detect auto"
+msgstr ""
+"(6/6) Detecció booleana per programari i detecció automàtica per "
+"programari"
#: backend/test.c:816
#, no-c-format
@@ -6192,29 +6404,31 @@ msgid ""
"(and advanced) capabilities. This option can be automatically set by the "
"backend."
msgstr ""
-"(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) Opció per a la prova booleana amb capacitats (i avançades) per a "
+"la selecció i detecció per programari, i automàtiques. Aquesta opció pot "
+"establir-la automàticament el dorsal."
#: backend/test.c:833
#, no-c-format
msgid "Int test options"
-msgstr "Int test options"
+msgstr "Opcions per a la prova de l'enter"
#: backend/test.c:846
#, no-c-format
msgid "(1/6) Int"
-msgstr "(1/6) Int"
+msgstr "(1/6) Enter"
#: backend/test.c:847
#, 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."
+msgstr ""
+"(1/6) Opció per a la prova de l'enter sense unitats i no restringida a "
+"un conjunt."
#: backend/test.c:862
#, no-c-format
msgid "(2/6) Int constraint range"
-msgstr "(2/6) Int constraint range"
+msgstr "(2/6) Interval restringit amb un enter"
#: backend/test.c:863
#, no-c-format
@@ -6222,23 +6436,26 @@ msgid ""
"(2/6) 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 "
-"is 4, maximum 192, and quant is 2."
+"(2/6) Opció per a la prova de l'enter amb píxels com a unitat i un "
+"conjunt restringit a un interval. El mínim és 4, el màxim 192 i «quant» "
+"és 2."
#: backend/test.c:879
#, no-c-format
msgid "(3/6) Int constraint word list"
-msgstr "(3/6) Int constraint word list"
+msgstr "(3/6) Llista restringida de paraules amb un enter"
#: backend/test.c:880
#, 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."
+msgstr ""
+"(3/6) Opció per a la prova de l'enter amb bits com a unitat i "
+"restringida a un conjunt de llista de paraules."
#: backend/test.c:895
#, no-c-format
msgid "(4/6) Int array"
-msgstr "(4/6) Int array"
+msgstr "(4/6) Matriu amb un enter"
#: backend/test.c:896
#, no-c-format
@@ -6246,13 +6463,13 @@ msgid ""
"(4/6) 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 "
-"constraints."
+"(4/6) Opció per a la prova de l'enter amb mm com a unitat i usant una "
+"matriu sense restringir."
#: backend/test.c:911
#, no-c-format
msgid "(5/6) Int array constraint range"
-msgstr "(5/6) Int array constraint range"
+msgstr "(5/6) Interval restringit amb una matriu amb un enter"
#: backend/test.c:912
#, no-c-format
@@ -6260,13 +6477,14 @@ 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) Int test option with unit dpi and using an array with a range "
-"constraint. Minimum is 4, maximum 192, and quant is 2."
+"(5/6) Opció per a la prova de l'enter amb ppp com a unitat i usant una "
+"matriu amb un interval restringit. El mínim és 4, el màxim 192 i «quant» "
+"és 2."
#: backend/test.c:929
#, no-c-format
msgid "(6/6) Int array constraint word list"
-msgstr "(6/6) Int array constraint word list"
+msgstr "(6/6) Llista restringida de paraules amb una matriu amb un enter"
#: backend/test.c:930
#, no-c-format
@@ -6274,28 +6492,30 @@ msgid ""
"(6/6) 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 "
-"list constraint."
+"(6/6) Opció per a la prova de l'enter amb percentatge com a unitat i "
+"usant una matriu amb una llista restringida de paraules."
#: backend/test.c:946
#, no-c-format
msgid "Fixed test options"
-msgstr "Fixed test options"
+msgstr "Opcions per a la prova fixa"
#: backend/test.c:959
#, no-c-format
msgid "(1/3) Fixed"
-msgstr "(1/3) Fixed"
+msgstr "(1/3) Fixa"
#: backend/test.c:960
#, 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."
+msgstr ""
+"(1/3) Opció per a la prova fixa sense unitats i no restringida a un "
+"conjunt."
#: backend/test.c:975
#, no-c-format
msgid "(2/3) Fixed constraint range"
-msgstr "(2/3) Fixed constraint range"
+msgstr "(2/3) Interval restringit de paraules"
#: backend/test.c:976
#, no-c-format
@@ -6303,48 +6523,53 @@ 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) Fixed test option with unit microsecond and constraint range set. "
-"Minimum is -42.17, maximum 32767.9999, and quant is 2.0."
+"(2/3) Opció per a la prova fixa amb microsegons com a unitat i un "
+"conjunt restringit a un interval. El mínim és -42,17, el màxim "
+"32767,9999 i «quant» és 2,0."
#: backend/test.c:992
#, no-c-format
msgid "(3/3) Fixed constraint word list"
-msgstr "(3/3) Fixed constraint word list"
+msgstr "(3/3) Llista fixa i restringida de paraules"
#: backend/test.c:993
#, 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."
+msgstr ""
+"(3/3) Opció per a la prova fixa sense unitats i restringida a un conjunt "
+"de llista de paraules."
#: backend/test.c:1008
#, no-c-format
msgid "String test options"
-msgstr "String test options"
+msgstr "Opcions per a la prova de la cadena"
#: backend/test.c:1021
#, no-c-format
msgid "(1/3) String"
-msgstr "(1/3) String"
+msgstr "(1/3) Cadena"
#: backend/test.c:1022
#, no-c-format
msgid "(1/3) String test option without constraint."
-msgstr "(1/3) String test option without constraint."
+msgstr "(1/3) Opció per a la prova de la cadena sense restringir."
#: backend/test.c:1039
#, no-c-format
msgid "(2/3) String constraint string list"
-msgstr "(2/3) String constraint string list"
+msgstr "(2/3) Llista restringida de cadenes"
#: backend/test.c:1040
#, no-c-format
msgid "(2/3) String test option with string list constraint."
-msgstr "(2/3) String test option with string list constraint."
+msgstr ""
+"(2/3) Opció per a la prova de la cadena amb una llista restringida de "
+"cadenes."
#: backend/test.c:1059
#, no-c-format
msgid "(3/3) String constraint long string list"
-msgstr "(3/3) String constraint long string list"
+msgstr "(3/3) Llista llarga i restringida de cadenes"
#: backend/test.c:1060
#, no-c-format
@@ -6352,23 +6577,23 @@ msgid ""
"(3/3) String test option with string list constraint. Contains some more "
"entries..."
msgstr ""
-"(3/3) String test option with string list constraint. Contains some more "
-"entries..."
+"(3/3) Opció per a la prova de la cadena amb una llista restringida de "
+"cadenes. Conté algunes entrades més..."
#: backend/test.c:1080
#, no-c-format
msgid "Button test options"
-msgstr "Button test options"
+msgstr "Opcions per a la prova del botó"
#: backend/test.c:1093
#, no-c-format
msgid "(1/1) Button"
-msgstr "(1/1) Button"
+msgstr "(1/1) Botó"
#: backend/test.c:1094
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
-msgstr "(1/1) Button test option. Prints some text..."
+msgstr "(1/1) Opció per a la prova del botó. Imprimeix algun text..."
#: backend/u12.c:149
#, no-c-format
@@ -6378,129 +6603,130 @@ msgstr "Color 36"
#: backend/umax.c:235
#, no-c-format
msgid "Use Image Composition"
-msgstr "Use Image Composition"
+msgstr "Usa la composició de la imatge"
#: backend/umax.c:236
#, no-c-format
msgid "Bi-level black and white (lineart mode)"
-msgstr "Bi-level black and white (lineart mode)"
+msgstr "Bi-nivell en blanc i negre (mode art lineal)"
#: backend/umax.c:237
#, no-c-format
msgid "Dithered/halftone black & white (halftone mode)"
-msgstr "Dithered/halftone black & white (halftone mode)"
+msgstr "Tramat/semi to en negre i blanc (mode semi to)"
#: backend/umax.c:238
#, no-c-format
msgid "Multi-level black & white (grayscale mode)"
-msgstr "Multi-level black & white (grayscale mode)"
+msgstr "Múltiples nivells en blanc i negre (mode escala de grisos)"
#: backend/umax.c:239
#, no-c-format
msgid "Multi-level RGB color (one pass color)"
-msgstr "Multi-level RGB color (one pass color)"
+msgstr "Múltiples nivells en color RGB (color d'una sola passada)"
#: backend/umax.c:240
#, no-c-format
msgid "Ignore calibration"
-msgstr "Ignore calibration"
+msgstr "Ignora el calibratge"
#: backend/umax.c:5733
#, no-c-format
msgid "Disable pre focus"
-msgstr "Disable pre focus"
+msgstr "Inhabilita l'enfocament previ"
#: backend/umax.c:5734
#, no-c-format
msgid "Do not calibrate focus"
-msgstr "Do not calibrate focus"
+msgstr "No calibris l'enfocament"
#: backend/umax.c:5745
#, no-c-format
msgid "Manual pre focus"
-msgstr "Manual pre focus"
+msgstr "Enfocament previ manual"
#: backend/umax.c:5757
#, no-c-format
msgid "Fix focus position"
-msgstr "Fix focus position"
+msgstr "Fixa la posició de l'enfocament"
#: backend/umax.c:5769
#, no-c-format
msgid "Lens calibration in doc position"
-msgstr "Lens calibration in doc position"
+msgstr "Calibratge de la lent a la posició del document"
#: backend/umax.c:5770
#, no-c-format
msgid "Calibrate lens focus in document position"
-msgstr "Calibrate lens focus in document position"
+msgstr "Calibra l'enfocament de la lent a la posició del document"
#: backend/umax.c:5781
#, no-c-format
msgid "Holder focus position 0mm"
-msgstr "Holder focus position 0mm"
+msgstr "Mantén la posició de l'enfocament a 0 mm"
#: backend/umax.c:5782
#, no-c-format
msgid "Use 0mm holder focus position instead of 0.6mm"
-msgstr "Use 0mm holder focus position instead of 0.6mm"
+msgstr ""
+"Usa una posició mantinguda de l'enfocament de 0 mm en lloc de 0,6 mm"
#: backend/umax.c:5885
#, no-c-format
msgid "Calibration mode"
-msgstr "Calibration mode"
+msgstr "Mode del calibratge"
#: backend/umax.c:5886
#, no-c-format
msgid "Define calibration mode"
-msgstr "Define calibration mode"
+msgstr "Defineix el mode del calibratge"
#: backend/umax_pp.c:640
#, no-c-format
msgid "Sets lamp on/off"
-msgstr "Sets lamp on/off"
+msgstr "Estableix la làmpada a encesa/apagada"
#: backend/umax_pp.c:649
#, no-c-format
msgid "UTA on"
-msgstr "UTA on"
+msgstr "Activa l'UTA"
#: backend/umax_pp.c:650
#, no-c-format
msgid "Sets UTA on/off"
-msgstr "Sets UTA on/off"
+msgstr "Estableix l'UTA a actiu/inactiu"
#: backend/umax_pp.c:771
#, no-c-format
msgid "Offset"
-msgstr "Offset"
+msgstr "Desplaçament"
#: backend/umax_pp.c:773
#, no-c-format
msgid "Color channels offset settings"
-msgstr "Color channels offset settings"
+msgstr "Ajustaments del desplaçament per als canals de color"
#: backend/umax_pp.c:780
#, no-c-format
msgid "Gray offset"
-msgstr "Gray offset"
+msgstr "Desplaçament del gris"
#: backend/umax_pp.c:781
#, no-c-format
msgid "Sets gray channel offset"
-msgstr "Sets gray channel offset"
+msgstr "Estableix el desplaçament del canal gris"
#: backend/umax_pp.c:793
#, no-c-format
msgid "Sets red channel offset"
-msgstr "Sets red channel offset"
+msgstr "Estableix el desplaçament del canal roig"
#: backend/umax_pp.c:805
#, no-c-format
msgid "Sets green channel offset"
-msgstr "Sets green channel offset"
+msgstr "Estableix el desplaçament del canal verd"
#: backend/umax_pp.c:817
#, no-c-format
msgid "Sets blue channel offset"
-msgstr "Sets blue channel offset"
+msgstr "Estableix el desplaçament del canal blau"
diff --git a/po/cs.gmo b/po/cs.gmo
deleted file mode 100644
index 0a2dae8..0000000
--- a/po/cs.gmo
+++ /dev/null
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 0b350b6..f358d06 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends.cs\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 22:59+0100\n"
"Last-Translator: Josef <joeprusa@volny.cz>\n"
"Language-Team: \n"
@@ -26,36 +26,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometrie"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Vylepšení"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -83,7 +83,7 @@ msgstr "Vynutit monochromatický náhled"
msgid "Bit depth"
msgstr "Bitová hloubka"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -124,7 +124,7 @@ msgstr "Pravý dolní roh x"
msgid "Bottom-right y"
msgstr "Pravý dolní roh y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -280,7 +280,7 @@ msgstr "Jméno souboru"
msgid "Halftone pattern size"
msgstr "Rozměr vzorku polotónu"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Vzorek polotónu"
@@ -292,8 +292,8 @@ msgstr "Svázat rozlišení X a Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativ"
@@ -964,7 +964,7 @@ msgstr "Standardní nastavení"
msgid "Set default values for enhancement controls."
msgstr "Nastavit standardní hodnoty prvků pro vylepšení obrázku"
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrace"
@@ -1102,7 +1102,7 @@ msgstr "Negativ"
msgid "Slides"
msgstr "Zcela bílá"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1123,487 +1123,486 @@ msgstr "2x2 normální"
msgid "1/3 normal speed"
msgstr "3x3 normální"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, fuzzy, no-c-format
msgid "rounded parameter"
msgstr "Nepřesné (fuzzy) parametry"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr ""
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Hodnota gama"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Prosvětlovací jednotka"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Prosvětlovací jednotka"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "Stolní skener"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "Stolní skener"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Typ filmu"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Negativní film"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Zvolit testovací obrázek"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Rozlišení"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Zobrazí zkrácený seznam rozlišení"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Automaticky vysunout"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, fuzzy, no-c-format
msgid "Enable/disable auto focus"
msgstr "Vyřadit předběžné zaostření"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Pozice pevného zaostření"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Zrcadlit obrázek"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Zrcadlit obrázek"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Nastavit expoziční čas"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, fuzzy, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Povolit volbu expozičních časů"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Kalibrace"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Definovat režim kalibrace"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "skener s podavačem"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "skener s podavačem"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Vysunout dokument po naskenování"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Podavač dokumentů"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Stolní"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Prosvětlovací jednotka"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Negativní film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Pozitivní film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Prosvětlovací jednotka"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Typ filmu"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, fuzzy, no-c-format
msgid "Select the film type"
msgstr "Zvolit polotóny"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Stolní"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr ""
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, fuzzy, no-c-format
msgid "ADF Duplex"
msgstr "Oboustraně"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
msgstr ""
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Oboustraně"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Červená"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Zelená"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Modrá"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Vylepšení"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Vylepšení"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Vylepšení"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1611,18 +1610,18 @@ msgstr "Vylepšení"
msgid "None"
msgstr "Žádné"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1639,13 +1638,13 @@ msgstr "Jednostraně"
msgid "Duplex"
msgstr "Oboustraně"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Prosvětlovací jednotka"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1758,8 +1757,8 @@ msgstr "Inkoustové tiskárny"
msgid "CRT monitors"
msgstr "CRT monitory"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standard"
@@ -1822,51 +1821,50 @@ msgstr "A4"
msgid "Max"
msgstr "Max"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Režim skenování"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Zvolit polotóny"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Výpadek"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Nastaví výpadek."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Nastaví jas."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Zaostření"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Barevná korekce"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Nastaví tabulku barevných korekcí pro vybrané výstupní zařízení."
@@ -1956,17 +1954,17 @@ msgstr "Přidává červenou v závislosti na úrovni modré"
msgid "Controls blue level"
msgstr "Ovládá úroveň modré"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Zrcadlí obrázek."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Rychlý náhled"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatické rozložení plochy"
@@ -1996,47 +1994,47 @@ msgstr "Nastaví faktor přiblížení, který skener použije"
msgid "Quick format"
msgstr "Rychlý formát"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Volitelné příslušenství"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Vysunout"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Vysunout papír z automatického podavače"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automaticky vysunout"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Vysunout dokument po naskenování"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr ""
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Pozice"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Zvolte pozici pro sken"
@@ -2075,7 +2073,7 @@ msgstr ""
"Po odeslání příkazu ke skenování se s vlastním skenem čeká až na stisk "
"tlačítka na skeneru."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2105,492 +2103,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Uživatelské nastavení"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr ""
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr ""
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Rozptyl"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Chybový rozptyl"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Úroveň bílé"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Úroveň černé"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr ""
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontální"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Horizontální"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontální"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertikální"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Vertikální"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr ""
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Polotóny"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Hrubá kalibrace"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Zvýraznění obrázku"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Sytost"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Zrcadlit obrázek"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Zrcadlit obrázek"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Úroveň bílé modré"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Ovládá úroveň červené"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Barevná perokresba"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, fuzzy, no-c-format
msgid "Smoothing"
msgstr "Jemný"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Hodnota gama"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Prahová hodnota"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Prahová hodnota"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Redukce šumu"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Bez korekce"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Bez korekce"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Režim podavače"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Zvláštní volby"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Bez korekce"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Výpadek"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Režim podavače"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2598,65 +2596,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Vypnout lampu"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Odstup modré"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Odstup zelené"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Odstup zelené"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Odstup modré"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Nastavuje odstup modrého kanálu"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2665,519 +2663,529 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Oboustraně"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Zvláštní volby"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Redukce šumu"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Z papíru"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Z papíru"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Z papíru"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Z papíru"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Manuální předběžné zaostření"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Manuální předběžné zaostření"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Rozlišení"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Úroveň bílé"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Intenzita červené"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Oboustraně"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, fuzzy, no-c-format
msgid "Extras"
msgstr "Velmi rychlý"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Vyřadit zpětný chod"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Barevná perokresba"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrace"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definovat režim kalibrace"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Režim kalibrace"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, fuzzy, no-c-format
msgid "Lamp off time"
msgstr "Vypnout lampu"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Hrubá kalibrace"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Čekat na tlačítko"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Čekat na tlačítko"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Čekat na tlačítko"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Hrubá kalibrace"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Vynutit kalibraci skeneru před skenováním"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, fuzzy, no-c-format
msgid "Buttons"
msgstr "Stav tlačítek"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrovat"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Hrubá kalibrace"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Hrubá kalibrace"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Režim kalibrace"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Hrubá kalibrace"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Prosvětlovací adaptér"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Volby pro ladění"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automaticky zahřát"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3186,12 +3194,12 @@ msgstr ""
"Zahřát lampu dokud její jas není konstantní namísto standardního 60ti "
"sekundového zahřívání."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Plný sken"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3200,12 +3208,12 @@ msgstr ""
"Naskenovat kompletní skenovací plochu včetně kalibračního proužku. "
"Opatrně! Nenastavujte plnou výšku! Pouze pro testování!"
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Hrubá kalibrace"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3216,12 +3224,12 @@ msgstr ""
"jsou zobrazeny ovádací prvky pro mauální nastavení. Tato volba je "
"standardně zapnuta. Pouze pro testování!"
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Hrubá kalibrace pouze pro první sken"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3232,12 +3240,12 @@ msgstr ""
"funguje a může zkrátit čas skenování. Pokud se obrázek s každým dalším "
"skenem mění, vyřaďte tuto volbu. Pouze pro testování!"
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, fuzzy, no-c-format
msgid "Backtrack lines"
msgstr "Skenovat při zpětném chodu"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3246,12 +3254,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Hodnota gama"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Nastavuje hodnotu gama pro všechny kanály."
@@ -3267,7 +3275,7 @@ msgid "Scan Mode Group"
msgstr "Režim skenování"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, fuzzy, no-c-format
msgid "Slide"
msgstr "Zcela bílá"
@@ -3465,160 +3473,235 @@ msgstr "Zapíná a vypíná lampu."
msgid "Calibrates for black and white level."
msgstr "Kalibruje úrovně černé a bílé."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr ""
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Zcela bílá"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negativ"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Barva 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Vypnout lampu"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Čekat na tlačítko"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Zahřát lampu před skenováním"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Stav tlačítek"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Zdroj"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Barevná perokresba"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Zvláštní volby"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Hrubý"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Jemný"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Volitelný"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automaticky"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr ""
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr ""
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr ""
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC šedá"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA šedá"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Pomalý"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normální"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rychlý"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Velmi rychlý"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr ""
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr ""
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr ""
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr ""
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, fuzzy, no-c-format
msgid "Film-strip"
msgstr "Typ filmu"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr ""
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr ""
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, fuzzy, no-c-format
msgid "Experiment"
msgstr "Expoziční čas"
@@ -3792,8 +3875,8 @@ msgstr "Vypnout lampu"
msgid "Shut off scanner lamp."
msgstr "Vypnout lampu skeneru."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Rozměr papíru"
@@ -3804,8 +3887,7 @@ msgstr "Rozměr papíru"
msgid "Automatic separation"
msgstr "Automatické oddělení"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 na šířku"
@@ -3820,38 +3902,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Manuální předběžné zaostření"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Manuální předběžné zaostření"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Zapnout oboustranné (duplexní) skenování"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Fyzická velikost papíru v automatikém podavači"
@@ -3967,199 +4045,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Polotóny"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Polotóny"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Chybový rozptyl"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normální"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Světlé body"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "Stolní skener"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Z papíru"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Standard"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Jemný"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Pomalý"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Střední"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Červená"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Zelená"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Zdroj"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Režim podavače"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Nastavuje režim podavače"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Vyřadit předběžné zaostření"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Vyřadit předběžné zaostření"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Nastavuje režim podavače"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Nastavuje režim podavače"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatické nastavení prahových hodnot"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4168,95 +4246,95 @@ msgstr ""
"Automaticky nastaví jas, kontrast, úroveň bílé, gama korekci, redukci "
"šumu a zvýraznění obrázku"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Redukce šumu"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Redukuje izolovaný bodový šum"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Zvýraznění obrázku"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Nastaví zvýraznění obrázku"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gama"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Zapnout lampu"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Zapíná a vypíná lampu."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Zrcadlit obrázek"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4970,17 +5048,17 @@ msgstr "3x3 volitelný"
msgid "2x2 custom"
msgstr "2x2 volitelný"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Stupně šedé - rychlý režim"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Skenuje se ve stupních šedé v rychlé režimu (nižší kvalitě)"
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -4989,82 +5067,82 @@ msgstr ""
"Požaduje, aby se všechny náhledy dělaly v nejrychleším režimu (s nízkou "
"kvalitou). To může znamenat např. černobílý režim nebo nízké rozlišení."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, fuzzy, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Zahřát lampu"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, fuzzy, no-c-format
msgid "Turn lamp off"
msgstr "Zapíná/vypíná lampu"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, fuzzy, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Vypne lampu plochého skeneru"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Jas červené"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Nastavuje jas červeného kanálu naskenovaného obrázku."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Jas zelené"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Nastavuje jas zeleného kanálu naskenovaného obrázku."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Jas modré"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Nastavuje jas modrého kanálu naskenovaného obrázku."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast červeného kanálu"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Nastavuje kontrast červeného kanálu naskenovaného obrázku."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast zeleného kanálu"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Nastavuje kontrast zeleného kanálu naskenovaného obrázku."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast modrého kanálu"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Nastavuje kontrast modrého kanálu naskenovaného obrázku."
@@ -5108,22 +5186,22 @@ msgstr ""
"Zahřát lampu dokud její jas není konstantní namísto standardního 40ti "
"sekundového zahřívání."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negativní film"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativ"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/da.gmo b/po/da.gmo
deleted file mode 100644
index f0e9386..0000000
--- a/po/da.gmo
+++ /dev/null
Binary files differ
diff --git a/po/da.po b/po/da.po
index 7113097..2fbc54b 100644
--- a/po/da.po
+++ b/po/da.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.17\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 22:59+0100\n"
"Last-Translator: Mogens Jaeger <mogensjaeger@get2net.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n"
@@ -31,36 +31,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Skanområde"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Forbedring"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +88,7 @@ msgstr "Gennemtving monokrom smugkig"
msgid "Bit depth"
msgstr "Bit dybde"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +129,7 @@ msgstr "Nederst-højre x"
msgid "Bottom-right y"
msgstr "Nederst-højre y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +285,7 @@ msgstr "Filnavn"
msgid "Halftone pattern size"
msgstr "Halvtonemønster størrelse"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Halvtonemønster"
@@ -297,8 +297,8 @@ msgstr "Sammenbind X- og Y-opløsning"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativ"
@@ -967,7 +967,7 @@ msgstr "Standard"
msgid "Set default values for enhancement controls."
msgstr "Anvend standardværdier for forbedringskontroller."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrering"
@@ -1106,7 +1106,7 @@ msgstr "Negativ"
msgid "Slides"
msgstr "Diapositiv"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1127,487 +1127,486 @@ msgstr "2x2 normal"
msgid "1/3 normal speed"
msgstr "3x3 normal"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, fuzzy, no-c-format
msgid "rounded parameter"
msgstr "Uklare parametre"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, fuzzy, no-c-format
msgid "ADF jam"
msgstr "ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Gamma værdi"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Filmenhed"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Filmenhed"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "Flatbed skanner"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "Flatbed skanner"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtype"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Negativ film"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Vælg testbillede"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Skanningsopløsning"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Vis kort liste med mulige opløsninger"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Automatisk skub ud"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, fuzzy, no-c-format
msgid "Enable/disable auto focus"
msgstr "Deaktiver pre-fokusering"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Fast fokusposition"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Spejl billedet"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Spejlvend billedet vandret."
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Fastsæt eksponeringstid"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, fuzzy, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Aktiver valg af belysningstid"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Kalibrering"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Definer kalibreringstilstand"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "arkføder skanner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "arkføder skanner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Skub dokumentet ud efter skanning"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Dokument føder"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Flatbed"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Filmenhed"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Negativ film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Positiv film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Filmenhed"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Filmtype"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, fuzzy, no-c-format
msgid "Select the film type"
msgstr "Vælger halvtone."
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flatbed"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "ADF"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, fuzzy, no-c-format
msgid "ADF Duplex"
msgstr "Dobbeltsidet"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Print"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Dobbeltsidet"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rød"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Grøn"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blå"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Forbedring"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Forbedring"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Forbedring"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1615,18 +1614,18 @@ msgstr "Forbedring"
msgid "None"
msgstr "Ingen"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1643,13 +1642,13 @@ msgstr "Enkeltsidet"
msgid "Duplex"
msgstr "Dobbeltsidet"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Filmenhed"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1762,8 +1761,8 @@ msgstr "Blæk printere"
msgid "CRT monitors"
msgstr "CRT skærme"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standard"
@@ -1826,51 +1825,50 @@ msgstr "A4"
msgid "Max"
msgstr "Maks"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Skanner tilstand"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Vælger halvtone."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Udfald"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Vælger udfaldet."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Vælger lyshed."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Skarphed"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Farvekorrektion"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Fastsætter farvekorrektiontabellen for den valgte uddataenhed."
@@ -1960,17 +1958,17 @@ msgstr "Øger det røde, baseret på blåt niveau"
msgid "Controls blue level"
msgstr "Fastsætter blåt niveau"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Spejlvend billedet."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Hurtig forhåndsvisning"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatisk områdeopdeling"
@@ -2000,47 +1998,47 @@ msgstr "Angiver zoomfaktoren som skanneren skal bruge"
msgid "Quick format"
msgstr "Hurtig format"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Tilvalgsudstyr"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Skub ud"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Skub arket i den automatiske arkføder ud"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automatisk skub ud"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Skub dokumentet ud efter skanning"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "ADF-tilstand"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Vælger ADF tilstand (enkeltsidet/dobbeltsidet)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Skuffe"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Vælg fra hvilken skuffe der skal skannes"
@@ -2080,7 +2078,7 @@ msgstr ""
"Når skankommando er sendt, starter skanningen først når der er trykket "
"på knappen på skanneren."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2110,494 +2108,494 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Brugerdefineret"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Tændt"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Slukket"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Dither"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Fejlspredning"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Hvid niveau"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Sort niveau"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Betinget"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Vandret"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Vandret"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Vandret"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Lodret"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Lodret"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Print"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Halvtone"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Grovkalibrering"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Billedbetoning"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Mætning"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Aktiver automatisk fastsættelse af tærskelværdi for "
"stregtegningsskanninger."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Spejl billedet"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Spejlvend billedet vandret."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Hvid niveau for blå"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Fastsætter rødt niveau"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Farve stregtegning"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Udglatning"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Gamma værdi"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Tærskelværdi"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Tærskelværdi"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Støjreduktion"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Ingen korrektion"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Ingen korrektion"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Arkføder tilstand"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Avancerede indstillinger"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Ingen korrektion"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Udfald"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Arkføder tilstand"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2605,65 +2603,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Sluk-lampe tid"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Blå forskydning"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Grøn forskydning"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Grøn forskydning"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Blå forskydning"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Indstillinger for blå-kanals forskydning"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2672,418 +2670,418 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Duplex skan"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Avancerede indstillinger"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Støjreduktion"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Manuel pre-fokus"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Manuel pre-fokus"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Skanningsopløsning"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Hvid niveau"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Rød intensitet"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Duplex skan"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Ekstra"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Deaktiver bagudrettet sporing"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Farve stregtegning"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrering"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definer kalibreringstilstand"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kalibreringsdatacache"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Sluk-lampe tid"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3092,103 +3090,113 @@ msgstr ""
"Lampen bliver slukket efter den angivne tid (i minutter). Værdien 0 "
"bevirker, at lampen ikke bliver slukket."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Grovkalibrering"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Vent på knap"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Vent på knap"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Vent på knap"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Grovkalibrering"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Gennemtving kalibrering før skanning"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Knapper"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrering"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Begynd kalibreringsprocessen."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Grovkalibrering"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Kalibreringsdatacache"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Grovkalibrering"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Filmadapter"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Farve ved gråtone tilstand"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Vælger hvilken skan farve der bruges i gråtone tilstand (standard er "
"grøn)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Fejlsøgningsindstillinger"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatisk opvarmning"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3197,12 +3205,12 @@ msgstr ""
"Varm op indtil lampens lyshed er konstant, i stedet for at insistere på "
"60 sekunders opvarmningstid."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Fuld skanning"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3211,12 +3219,12 @@ msgstr ""
"Skan hele skanningsarealet inklsive kalibreringsstriben. Vær forsigtig. "
"Vælg ikke fuld højde. Kun til test formål."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grovkalibrering"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3227,12 +3235,12 @@ msgstr ""
"er fravalgt, kan de analoge brugerfladeparametre manuelt indstilles. "
"Denne indstilling er forvalgt. Kun til testformål."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grovkalibrering kun for første skan."
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3243,12 +3251,12 @@ msgstr ""
"skannere og kan spare skanningstid. Hvis billedets lyshed er forskellig "
"for hvert skan, fravælg denne indstilling. Kun til testformål."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Bagudrettede linier"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3261,12 +3269,12 @@ msgstr ""
"modtage dataene. Små værdier giver hurtigere skanninger, men øger "
"risikoen for at linier bliver sprunget over."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gamma værdi"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Fastsætter gamma værdien for alle kanaler."
@@ -3282,7 +3290,7 @@ msgid "Scan Mode Group"
msgstr "Skanner tilstand"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositiv"
@@ -3480,160 +3488,235 @@ msgstr "Tænder/slukker for lampen"
msgid "Calibrates for black and white level."
msgstr "Kalibrerer for sort og hvidt niveau."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Diapositiv"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negativ"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Farve 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Sluk-lampe tid"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Vent på knap"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Varm lampen op før skanning"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Knap tilstand"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Skanningskilde"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Farve stregtegning"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Avancerede indstillinger"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grov"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fin"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Tilpasset"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatisk"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Uforandret"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC grå"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA Grå"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Langsom"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Hurtig"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Meget hurtig"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-pixel"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-pixel"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-pixel"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Print"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Film-stribe"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Betinget"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Eksperiment"
@@ -3812,8 +3895,8 @@ msgstr "Sluk lampen"
msgid "Shut off scanner lamp."
msgstr "Slukker for skannerens lampe."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Papirstørrelse"
@@ -3824,8 +3907,7 @@ msgstr "Papirstørrelse"
msgid "Automatic separation"
msgstr "Automatisk separering"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 tværformat"
@@ -3840,38 +3922,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Manuel pre-fokus"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Manuel pre-fokus"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Aktiver Duplex (dobbeltsidet) skanning"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Reel størrelse af papiret i ADF'en"
@@ -3987,199 +4065,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Halvtone"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Halvtone"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Fejlspredning"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Højlys"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "Flatbed skanner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Fra papir"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Standard"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Udglat"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Langsom"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Mellem"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Rød"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Grøn"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Skanningskilde"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Arkføder tilstand"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Fastætter fødningstilstanden"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Deaktiver pre-fokusering"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Deaktiver pre-fokusering"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Fastætter fødningstilstanden"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Fastætter fødningstilstanden"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatisk tærskelværdi"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4188,95 +4266,95 @@ msgstr ""
"Automatisk indstilling af lyshed, kontrast, hvid balance, gamma, "
"støjreduktion og billedbetoning"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Støjreduktion"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reducer støj fra enkelt punkter"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Billedbetoning"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Fastsætter billedbetoning"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Lampe tændt"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Tænder/slukker for lampen"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Spejlvend billedet lodret."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4991,17 +5069,17 @@ msgstr "3x3 tilpasset"
msgid "2x2 custom"
msgstr "2x2 tilpasset"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Hurtig gråtonetilstand"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Skan i hurtig gråtonetilstand (lavere kvalitet)"
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5010,83 +5088,83 @@ msgstr ""
"Forlang at alle forhåndsvisninger udføres i hurtigste (lav kvalitet) "
"tilstand. Dette kan være gråtone, eller lav-opløsning."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lampe slukkes efter (minutter)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Angiv efter hvor lang tid (i minutter) lampen skal slukkes."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Sluk lampen"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Sluk lampen med det samme."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Rød lyshed"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Fastsætter lysheden i den røde kanal i det rekvirerede billede."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Grøn lyshed"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Fastsætter lysheden i den grønne kanal i det rekvirerede billede."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Blå lyshed"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Fastsætter lysheden i den blå kanal i det rekvirerede billede."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast rød kanal"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Fastsætter kontrasten i den røde kanal i det rekvirerede billede."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast grøn kanal"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
"Fastsætter kontrasten i den grønne kanal i det rekvirerede billede."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast blå kanal"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Fastsætter kontrasten i den blå kanal i det rekvirerede billede."
@@ -5130,22 +5208,22 @@ msgstr ""
"Varm op indtil lampens lyshed er konstant, i stedet for at insistere på "
"40 sekunders opvarmningstid."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negativ film"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativ"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/de.gmo b/po/de.gmo
deleted file mode 100644
index 9ca0930..0000000
--- a/po/de.gmo
+++ /dev/null
Binary files differ
diff --git a/po/de.po b/po/de.po
index 1d99f95..f66ef39 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,20 +9,20 @@
# Oliver Schwartz <Oliver.Schwartz@gmx.de>, 2002, 2004.
# Karsten Festag <karsten.festag@gmx.de>, 2002.
# Burkhard Lück <lueck@hube-lueck.de>, 2009.
-# Rolf Bensch <rolf at bensch hyphen online dot de>, 2012.
+# Rolf Bensch <rolf at bensch hyphen online dot de>, 2012-2019.
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2010-08-06 17:17+0100\n"
-"Last-Translator: Rolf Bensch <rolf at bensch hyphen online dot de>\n"
-"Language-Team: German <kde-i18n-de@kde.org>\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-26 22:23+0200\n"
+"PO-Revision-Date: 2019-07-28 23:01+0200\n"
+"Last-Translator: Rolf Bensch <rolf@bensch-online.de>\n"
+"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 0.3\n"
+"X-Generator: Poedit 2.0.6\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: include/sane/saneopts.h:154
@@ -36,39 +36,37 @@ msgid "Standard"
msgstr "Standard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546 backend/umax.c:5176
+#: backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Scanbereich"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617 backend/stv680.c:1067
+#: backend/teco1.c:1143 backend/teco2.c:1958 backend/teco3.c:968
#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Farbverbesserung"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
-#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
-#: backend/rts8891.c:2831 backend/snapscan-options.c:923
-#: backend/umax.c:5565
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
+#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597 backend/rts8891.c:2831
+#: backend/snapscan-options.c:923 backend/umax.c:5565
#, no-c-format
msgid "Advanced"
msgstr "Erweitert"
@@ -93,7 +91,7 @@ msgstr "Vorschauscan in grau"
msgid "Bit depth"
msgstr "Bittiefe"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -117,24 +115,24 @@ msgstr "Erzwinge Backtracking"
#: include/sane/saneopts.h:169
#, no-c-format
msgid "Top-left x"
-msgstr "Links"
+msgstr "Links Oben x"
#: include/sane/saneopts.h:170
#, no-c-format
msgid "Top-left y"
-msgstr "Oben"
+msgstr "Links Oben y"
#: include/sane/saneopts.h:171
#, no-c-format
msgid "Bottom-right x"
-msgstr "Rechts"
+msgstr "Rechts Unten x"
#: include/sane/saneopts.h:172
#, no-c-format
msgid "Bottom-right y"
-msgstr "Unten"
+msgstr "Rechts Unten y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -290,7 +288,7 @@ msgstr "Dateiname"
msgid "Halftone pattern size"
msgstr "Größe der Halbton-Matrix"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Halbton-Matrix"
@@ -302,8 +300,8 @@ msgstr "Verbinde X- und Y-Auflösung"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativ"
@@ -316,7 +314,7 @@ msgstr "Qualitäts-Weißabgleich"
#: include/sane/saneopts.h:208
#, no-c-format
msgid "Double Optical Resolution"
-msgstr "Verdoppelte optische Auflösung"
+msgstr "Doppelte optische Auflösung"
#: include/sane/saneopts.h:209
#, no-c-format
@@ -426,8 +424,7 @@ msgstr "Lampe beim Beenden ausschalten"
#: include/sane/saneopts.h:245
#, no-c-format
msgid ""
-"Read-only option that specifies how many options a specific devices "
-"supports."
+"Read-only option that specifies how many options a specific devices supports."
msgstr ""
"Nur-Lese-Option, die angibt, wieviele Optionen ein bestimmtes Gerät "
"unterstützt."
@@ -469,19 +466,18 @@ 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 ""
-"Legt fest, dass alle Vorschauscans im Graustufenmodus durchgeführt "
-"werden. Bei einem Three-Pass-Scanner wird dadurch nur ein Pass benötigt, "
-"bei einem Single-Pass-Scanner wird der Speicherverbrauch und die "
-"Scanzeit verringert."
+"Legt fest, dass alle Vorschauscans im Graustufenmodus durchgeführt werden. "
+"Bei einem Three-Pass-Scanner wird dadurch nur ein Pass benötigt, bei einem "
+"Single-Pass-Scanner wird der Speicherverbrauch und die Scanzeit verringert."
#: include/sane/saneopts.h:264
#, 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 ""
-"Anzahl der Bits pro Farbwert, typische Werte sind 1 für Lineart- und 8 "
-"für Multibit-Scans"
+"Anzahl der Bits pro Farbwert, typische Werte sind 1 für Strichzeichnung- "
+"sowie 8 für Graustufen- und Farb-Scans."
#: include/sane/saneopts.h:268
#, no-c-format
@@ -541,8 +537,8 @@ msgstr "Bestimmt die vertikale Auflösung des Bildes."
#: include/sane/saneopts.h:301
#, 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 ""
"Legt die Breite des Mediums fest. Erforderlich für die automatische "
"Zentrierung bei Einzelblatt-Scans."
@@ -554,8 +550,7 @@ msgstr "Legt die Höhe der Medien fest."
#: include/sane/saneopts.h:308
#, 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 ""
"Bestimmt ob die scannerinterne oder eine benutzerdefinierte Gammatabelle "
"verwendet wird."
@@ -563,12 +558,12 @@ msgstr ""
#: include/sane/saneopts.h:312
#, 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 ""
-"Gamma-Korrekturtabelle. Im Farbmodus wirkt sich diese Option auf die "
-"rote, grüne und blaue Farbkomponente aus. Es ist also eine Helligkeits-"
+"Gamma-Korrekturtabelle. Im Farbmodus wirkt sich diese Option auf die rote, "
+"grüne und blaue Farbkomponente aus. Es ist also eine Helligkeits-"
"Gammatabelle."
#: include/sane/saneopts.h:317
@@ -599,11 +594,11 @@ msgstr "Stellt den Kontrast des Bildes ein."
#: include/sane/saneopts.h:332
#, 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 ""
-"Legt die \"Körnigkeit\" des gescannten Bildes fest. Kleinere Werte "
-"ergeben schärfere Bilder."
+"Legt die \"Körnigkeit\" des gescannten Bildes fest. Kleinere Werte ergeben "
+"schärfere Bilder."
#: include/sane/saneopts.h:336
#, no-c-format
@@ -613,8 +608,7 @@ msgstr "Legt fest, ob das Bild im Halbtonmodus (Dithering) gescannt wird."
#: include/sane/saneopts.h:339 include/sane/saneopts.h:354
#, no-c-format
msgid "Selects what radiance level should be considered \"black\"."
-msgstr ""
-"Bestimmt, welcher Helligkeitswert als Schwarz angesehen werden soll."
+msgstr "Bestimmt, welcher Helligkeitswert als Schwarz angesehen werden soll."
#: include/sane/saneopts.h:342 include/sane/saneopts.h:363
#, no-c-format
@@ -646,8 +640,8 @@ msgstr ""
#, no-c-format
msgid "Selects what red radiance level should be considered \"black\"."
msgstr ""
-"Bestimmt, welcher Helligkeitswert der roten Komponente als Schwarz "
-"angesehen werden soll."
+"Bestimmt, welcher Helligkeitswert der roten Komponente als Schwarz angesehen "
+"werden soll."
#: include/sane/saneopts.h:358
#, no-c-format
@@ -667,24 +661,22 @@ msgstr ""
#, no-c-format
msgid "Selects what red radiance level should be considered \"full red\"."
msgstr ""
-"Bestimmt, welcher Helligkeitswert der roten Komponente als Weiß "
-"angesehen werden soll."
+"Bestimmt, welcher Helligkeitswert der roten Komponente als Weiß angesehen "
+"werden soll."
#: include/sane/saneopts.h:367
#, 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 ""
-"Bestimmt, welcher Helligkeitswert der grünen Komponente als Weiß "
-"angesehen werden soll."
+"Bestimmt, welcher Helligkeitswert der grünen Komponente als Weiß angesehen "
+"werden soll."
#: include/sane/saneopts.h:370
#, 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 ""
-"Bestimmt, welcher Helligkeitswert der blauen Komponente als Weiß "
-"angesehen werden soll."
+"Bestimmt, welcher Helligkeitswert der blauen Komponente als Weiß angesehen "
+"werden soll."
#: include/sane/saneopts.h:374
#, no-c-format
@@ -694,8 +686,8 @@ msgstr "Legt den Farbwert (Blauwert) des gescannten Bildes fest."
#: include/sane/saneopts.h:377
#, 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 ""
"Der Sättigungsgrad steuert die Belichtung einesmit einer Kamera "
"aufgenommenen Bildes. Höhere Werte sorgen für eine stärkere Belichtung."
@@ -710,8 +702,7 @@ msgstr "Der Dateiname des zu ladenden Bildes."
msgid ""
"Sets the size of the halftoning (dithering) pattern used when scanning "
"halftoned images."
-msgstr ""
-"Legt die Größe der für den Scanvorgang verwendeten Halbtonmatrix fest."
+msgstr "Legt die Größe der für den Scanvorgang verwendeten Halbtonmatrix fest."
#: include/sane/saneopts.h:389
#, no-c-format
@@ -722,121 +713,120 @@ msgstr "Definiert die für den Scanvorgang zu verwendende Halbton-Matrix."
#: include/sane/saneopts.h:393
#, no-c-format
msgid "Use same values for X and Y resolution"
-msgstr "Benutze die gleichen Auflösungen für X und Y."
+msgstr "Benutze die gleichen Auflösungen für X und Y"
#: include/sane/saneopts.h:395
#, no-c-format
msgid "Swap black and white"
-msgstr "Invertiere die Farben, z.B. tausche Schwarz gegen Weiß."
+msgstr "Invertiere die Farben, z.B. tausche Schwarz gegen Weiß"
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Do a quality white-calibration"
-msgstr "Führe einen Qualitätsweißabgleich durch."
+msgstr "Führe einen Qualitäts-Weißabgleich durch"
#: include/sane/saneopts.h:399
#, no-c-format
msgid "Use lens that doubles optical resolution"
-msgstr "Benutze die Linse, mit der die optische Auflösung verdoppelt wird."
+msgstr "Benutze die Linse, mit der die optische Auflösung verdoppelt wird"
#: include/sane/saneopts.h:401 include/sane/saneopts.h:413
#, no-c-format
msgid "In RGB-mode use same values for each color"
-msgstr "Benutze die gleichen Wert für alle Farben im RGB Modus."
+msgstr "Benutze die gleichen Wert für alle Farben im RGB Modus"
#: include/sane/saneopts.h:403
#, no-c-format
msgid "Select minimum-brightness to get a white point"
-msgstr ""
-"Wähle die minimale Helligkeit, die als Weiß betrachtet werden soll."
+msgstr "Wähle die minimale Helligkeit, die als Weiß betrachtet werden soll"
#: include/sane/saneopts.h:405
#, no-c-format
msgid "Analog gamma-correction"
-msgstr "Analoge Gammakorrektur."
+msgstr "Analoge Gammakorrektur"
#: include/sane/saneopts.h:407
#, no-c-format
msgid "Analog gamma-correction for red"
-msgstr "Analoge Gammakorrektur für Rot."
+msgstr "Analoge Gammakorrektur für Rot"
#: include/sane/saneopts.h:409
#, no-c-format
msgid "Analog gamma-correction for green"
-msgstr "Analoge Gammakorrektur für Grün."
+msgstr "Analoge Gammakorrektur für Grün"
#: include/sane/saneopts.h:411
#, no-c-format
msgid "Analog gamma-correction for blue"
-msgstr "Analoge Gammakorrektur für Blau."
+msgstr "Analoge Gammakorrektur für Blau"
#: include/sane/saneopts.h:415
#, no-c-format
msgid "Warmup lamp before scanning"
-msgstr "Wärme die Lampe vor dem Scannen auf."
+msgstr "Wärme die Lampe vor dem Scannen auf"
#: include/sane/saneopts.h:417
#, no-c-format
msgid "Define exposure-time for calibration"
-msgstr "Bestimmt die Beleuchtungszeit für die Kalibrierung."
+msgstr "Bestimme die Beleuchtungszeit für die Kalibrierung"
#: include/sane/saneopts.h:419
#, no-c-format
msgid "Define exposure-time for red calibration"
msgstr ""
-"Bestimmt die Beleuchtungszeit für die Kalibrierung der roten Komponente."
+"Bestimme die Beleuchtungszeit für die Kalibrierung der roten Komponente"
#: include/sane/saneopts.h:421
#, no-c-format
msgid "Define exposure-time for green calibration"
msgstr ""
-"Bestimmt die Beleuchtungszeit für die Kalibrierung der grünen Komponente."
+"Bestimme die Beleuchtungszeit für die Kalibrierung der grünen Komponente"
#: include/sane/saneopts.h:423
#, no-c-format
msgid "Define exposure-time for blue calibration"
msgstr ""
-"Bestimmt die Beleuchtungszeit für die Kalibrierung der blauen Komponente."
+"Bestimme die Beleuchtungszeit für die Kalibrierung der blauen Komponente"
#: include/sane/saneopts.h:425
#, no-c-format
msgid "Define exposure-time for scan"
-msgstr "Bestimmt die Beleuchtungszeit für den Scan."
+msgstr "Bestimme die Beleuchtungszeit für den Scan"
#: include/sane/saneopts.h:427
#, no-c-format
msgid "Define exposure-time for red scan"
-msgstr "Bestimmt die Beleuchtungszeit für den Scan der roten Komponente."
+msgstr "Bestimme die Beleuchtungszeit für den Scan der roten Komponente"
#: include/sane/saneopts.h:429
#, no-c-format
msgid "Define exposure-time for green scan"
-msgstr "Bestimmt die Beleuchtungszeit für den Scan der grünen Komponente."
+msgstr "Bestimme die Beleuchtungszeit für den Scan der grünen Komponente"
#: include/sane/saneopts.h:431
#, no-c-format
msgid "Define exposure-time for blue scan"
-msgstr "Bestimmt die Beleuchtungszeit für den Scan der blauen Komponente."
+msgstr "Bestimme die Beleuchtungszeit für den Scan der blauen Komponente"
#: include/sane/saneopts.h:433
#, no-c-format
msgid "Enable selection of exposure-time"
-msgstr "Ermögliche Einstellung der Beleuchtungszeiten."
+msgstr "Aktiviere die Einstellung der Beleuchtungszeiten"
#: include/sane/saneopts.h:435
#, no-c-format
msgid "Define lamp density for calibration"
-msgstr "Definiere die Lichtwerte beim Kalibrieren."
+msgstr "Definiere die Lichtwerte beim Kalibrieren"
#: include/sane/saneopts.h:437
#, no-c-format
msgid "Define lamp density for scan"
-msgstr "Definiere die Lichtwerte beim Scannen."
+msgstr "Definiere die Lichtwerte beim Scannen"
#: include/sane/saneopts.h:439
#, no-c-format
msgid "Enable selection of lamp density"
-msgstr "Ermögliche Auswahl der Lichtwerte."
+msgstr "Aktiviere die Auswahl der Lichtwerte"
#: include/sane/saneopts.h:441 backend/umax.c:5830
#, no-c-format
@@ -846,32 +836,32 @@ msgstr "Schalte Lampe beim Beenden des Programms aus"
#: include/sane/saneopts.h:444
#, no-c-format
msgid "Scan button"
-msgstr "Scanknopf"
+msgstr "Scan Taste"
#: include/sane/saneopts.h:445
#, no-c-format
msgid "Email button"
-msgstr "E-Mail-Knopf"
+msgstr "E-Mail Taste"
#: include/sane/saneopts.h:446
#, no-c-format
msgid "Fax button"
-msgstr "Fax-Knopf"
+msgstr "Fax Taste"
#: include/sane/saneopts.h:447
#, no-c-format
msgid "Copy button"
-msgstr "Kopieren-Knopf"
+msgstr "Kopieren Taste"
#: include/sane/saneopts.h:448
#, no-c-format
msgid "PDF button"
-msgstr "PDF-Knopf"
+msgstr "PDF Taste"
#: include/sane/saneopts.h:449
#, no-c-format
msgid "Cancel button"
-msgstr "Abbrechen-Knopf"
+msgstr "Abbrechen Taste"
#: include/sane/saneopts.h:450
#, no-c-format
@@ -946,12 +936,12 @@ msgstr "Ende der Datei ist erreicht"
#: backend/sane_strstatus.c:77
#, no-c-format
msgid "Document feeder jammed"
-msgstr "Automatischer Dokumenteinzug blockiert"
+msgstr "Dokumenteneinzug blockiert"
#: backend/sane_strstatus.c:80
#, no-c-format
msgid "Document feeder out of documents"
-msgstr "Automatischer Dokumenteinzug leer"
+msgstr "Dokumenteneinzug leer"
#: backend/sane_strstatus.c:83
#, no-c-format
@@ -961,7 +951,7 @@ msgstr "Die Abdeckung des Scanners ist offen"
#: backend/sane_strstatus.c:86
#, no-c-format
msgid "Error during device I/O"
-msgstr "\tCopy text \tFehler während der Datenübermittlung des Geräts"
+msgstr "Fehler während der Datenübertragung"
#: backend/sane_strstatus.c:89
#, no-c-format
@@ -993,7 +983,7 @@ msgstr "Defaulteinstellungen"
msgid "Set default values for enhancement controls."
msgstr "Auf Voreinstellungen für Verbesserungen zurücksetzen."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrierung"
@@ -1006,8 +996,8 @@ msgstr "Vor dem nächsten Scan kalibrieren"
#: backend/artec_eplus48u.c:2943
#, 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 ""
"Wenn diese Option eingeschaltet ist, wird vor dem nächsten Scan eine "
"Kalibrierung durchgeführt. Ansonsten findet die Kalibrierung nur vor dem "
@@ -1021,14 +1011,13 @@ msgstr "Nur Shading-Korrektur durchführen"
#: backend/artec_eplus48u.c:2956
#, no-c-format
msgid ""
-"If enabled, only the shading correction is performed during calibration. "
-"The default values for gain, offset and exposure time, either build-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 build-in or from "
+"the configuration file, are used."
msgstr ""
-"Ist diese Option eingeschaltet, dann wird während der Kalibrierung nur "
-"die Shading-Korrektur durchgeführt. Andere Kalibrierungswerte werden aus "
-"der Konfigurationsdatei oder aus den Voreinstellungen des Backends "
-"übernommen."
+"Ist diese Option eingeschaltet, dann wird während der Kalibrierung nur die "
+"Shading-Korrektur durchgeführt. Andere Kalibrierungswerte werden aus der "
+"Konfigurationsdatei oder aus den Voreinstellungen des Backends übernommen."
#: backend/artec_eplus48u.c:2967
#, no-c-format
@@ -1052,11 +1041,9 @@ msgstr "Duplexscan"
#: backend/avision.h:783
#, no-c-format
-msgid ""
-"Duplex scan provide a scan of the front and back side of the document"
+msgid "Duplex scan provide a scan of the front and back side of the document"
msgstr ""
-"Duplex Scan ermöglicht das Scannen der Vorder- und Rückseite eines "
-"Dokuments."
+"Duplex Scan ermöglicht das Scannen der Vorder- und Rückseite eines Dokuments"
#: backend/canon630u.c:159
#, no-c-format
@@ -1086,8 +1073,7 @@ msgstr "Analoge Verstärkung"
#: backend/canon630u.c:307
#, no-c-format
msgid "Increase or decrease the analog gain of the CCD array"
-msgstr ""
-"Vergrößere oder verkleinere die analoge Verstärkung des CCD-Sensors"
+msgstr "Vergrößere oder verkleinere die analoge Verstärkung des CCD-Sensors"
#: backend/canon630u.c:347 backend/epson.h:68 backend/epson2.h:67
#, no-c-format
@@ -1097,7 +1083,7 @@ msgstr "Gammakorrektur"
#: backend/canon630u.c:348
#, no-c-format
msgid "Selects the gamma corrected transfer curve"
-msgstr "Wählt die korrigierte Gammakurve aus."
+msgstr "Wählt die korrigierte Gammakurve aus"
#: backend/canon.c:149 backend/canon-sane.c:1318
#, no-c-format
@@ -1109,7 +1095,7 @@ msgstr "Rohdaten"
#: backend/canon-sane.c:1494 backend/canon-sane.c:1643
#, no-c-format
msgid "Fine color"
-msgstr ""
+msgstr "Farbe"
#: backend/canon.c:169
#, no-c-format
@@ -1136,7 +1122,7 @@ msgstr "Negative"
msgid "Slides"
msgstr "Dias"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1157,489 +1143,486 @@ msgstr "1/2 Normalgeschwindigkeit"
msgid "1/3 normal speed"
msgstr "1/3 Normalgeschwindigkeit"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
-msgstr "Gerundete Parameter"
+msgstr "gerundeter Parameter"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "unbekannt"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "Papierstau im automatischem Einzug"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
-msgstr "Abdeckung des automatischen Einzuges offen"
+msgstr "Abdeckung vom automatischen Dokumenteneinzug offen"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "Lampenfehler"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "Fehler beim Positionieren des Scannerkopfes"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "Fehler bei der CPU-Überprüfung"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "Fehler bei der Arbeitsspeicher-Überprüfung"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "Fehler bei der ROM-Überprüfung"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "Hardwareüberprüfungsfehler"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "Lampe der Durchlichteinheit defekt"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "Positionsfehler der Durchlichteinheit beim Scankopf"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "Falsche Länge bei der Parameterliste"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "Ungültiger Befehlsausführungs-Code"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "Ungültiges Feld in CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "LUN nicht unterstützt"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "Ungültiges Feld in der Parameterliste"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "Falsche Reihenfolge der Befehle"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "Zu viele Fenster angegeben"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
-msgstr "Kein Medium eingelegt"
+msgstr "kein Medium eingelegt"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
-msgstr "ungültiger Teil der IDENTIFY Nachricht"
+msgstr "Ungültige IDENTIFY Nachricht"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "Option nicht verbunden"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "Netzschalter Reset / Bus-Gerät Reset"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "Parameter von einem anderen Initator geändert"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "keine zusätzliche Sinnesinformation"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "Wiederauswahlfehler"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "SCSI-Paritätsfehler"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "vom Initiator bemerkte Fehlermeldung empfangen"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
-msgstr "ungültige Fehlernachricht"
+msgstr "Ungültige Fehlernachricht"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "Zeitüberschreitung"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "Durchlichtaufsatzabschattungsfehler"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "Lampe nicht stabilisiert"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "Filmscanner"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "Flachbettscanner"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtyp"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Auswahl des Film-Typs (z. B. Negativ oder Dia)"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Negativ Filmtyp"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Wählt den Typ des Negativfilms"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Hardwareauflösung"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Nur Hardwareauflösungen verwenden"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Fokus"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Automatischer Fokus"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
-msgstr "Aktiviere/Deaktiviere automatischen Fokus\t\t"
+msgstr "Aktiviere/Deaktiviere automatischen Fokus"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
-msgstr "Automatischen Fokus nur einmal aktivieren"
+msgstr "Automatischen Fokus nur einmal ausführen"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Auto-Fokus nur einmal zwischen den Auswürfen"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Manuelle Einstellung des Fokus"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
-msgstr ""
-"Setzt die Fokusposition des optischen System von Hand (Standard: 128)."
+msgstr "Setzt die Fokusposition des optischen System von Hand (Standard: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
-msgstr "Scan Seitenrand"
+msgstr "Seitenränder"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Erweiterte Farbeinstellungen"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Bild spiegeln"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Bild horizontal spiegeln"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Automatische Belichtung"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Aktiviert/Deaktiviert die automatische Belichtung"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Jetzt kalibrieren"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Kalibrierung *jetzt* ausführen"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Selbsttest"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Führt einen Selbsttest des Scanners durch"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Scanner zurücksetzen"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Scanner zurücksetzen"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Handhabung der Medien"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Film nach jedem Scannen auswerfen"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Wirft den Film automatisch nach jedem Scannen aus dem Gerät aus"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Film vor Beenden auswerfen"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
-msgid ""
-"Automatically eject the film from the device before exiting the program"
+msgid "Automatically eject the film from the device before exiting the program"
msgstr ""
"Den Film automatisch aus dem Gerät auswerfen bevor das Programm schließt"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Film jetzt auswerfen"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Film *jetzt* auswerfen"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
-msgstr "Automatischer Dokumenteinzug"
+msgstr "Extras für Dokumenteneinzug"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Nur Flachbett"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
-msgstr "Automatischen Dokumenteinzug abschalten und nur Flachbett benutzen"
+msgstr "Automatischen Dokumenteneinzug abschalten und nur Flachbett benutzen"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Durchlichtaufsatz"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Die Durchlichteinheit (FAU, film adapter unit) an/ausschalten"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negativfilm"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Positiv- oder Negativfilm"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Dichte Einstellung"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Dichte Einstellungsmodus setzen"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Transparenzgrad"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Filmtyp auswählen"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Wählt den Filmtyp aus"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flachbett"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "Automatischer Dokumenteneinzug vorne"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "Automatischer Dokumenteneinzug hinten"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
-msgstr "ADF-Duplex"
+msgstr "Dokumenteneinzug mit Duplex"
-#: backend/canon_dr.c:412
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:415
+#, no-c-format
msgid "Card Front"
-msgstr "Vorne"
+msgstr "Karte Vorderseite"
-#: backend/canon_dr.c:413
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:416
+#, no-c-format
msgid "Card Back"
-msgstr "Hinten"
+msgstr "Karte Rückseite"
-#: backend/canon_dr.c:414
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:417
+#, no-c-format
msgid "Card Duplex"
-msgstr "Duplex"
+msgstr "Karte Duplex"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rot"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Grün"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blau"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Rot verstärken"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Grün verstärken"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Blau verstärken"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1647,21 +1630,21 @@ msgstr "Blau verstärken"
msgid "None"
msgstr "Kein"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr ""
+msgstr "Schwellwert für Leerseitenerkennung"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
-msgstr ""
+msgstr "Seiten mit geringer Pixeldichte überspringen"
#: backend/epson.c:491 backend/epson2.c:108 backend/magicolor.c:174
#, no-c-format
@@ -1669,23 +1652,23 @@ msgid "Simplex"
msgstr "Einseitig"
#: backend/epson.c:492 backend/epson2.c:109 backend/kvs1025.h:50
-#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
-#: backend/magicolor.c:175 backend/matsushita.h:218
+#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353 backend/magicolor.c:175
+#: backend/matsushita.h:218
#, no-c-format
msgid "Duplex"
msgstr "Duplex"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Durchlichtaufsatz"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
-msgstr "Autom. Dokumenteneinzug"
+msgstr "Automatischer Dokumenteneinzug"
#: backend/epson.c:523 backend/epson2.c:134
#, no-c-format
@@ -1792,10 +1775,10 @@ msgstr "Tintenstrahldrucker"
#: backend/epson.c:636
#, no-c-format
msgid "CRT monitors"
-msgstr "CRT-Monitore"
+msgstr "Monitore"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standardeinstellung"
@@ -1858,54 +1841,52 @@ msgstr "A4"
msgid "Max"
msgstr "Maximal"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
-#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
-#: backend/umax.c:5054
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/snapscan-options.c:354 backend/stv680.c:1030 backend/teco2.c:1882
+#: backend/test.c:306 backend/u12.c:473 backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Scanmodus"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Wählt den Halbton aus."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Blindfarbe"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Wählt die Blindfarbe."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Wählt die Helligkeit."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Schärfe"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Farbkorrektur"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
-msgstr "Setzt die Farbkorrekturtabelle für das ausgewählte Ausgabegerät"
+msgstr "Setzt die Farbkorrekturtabelle für das ausgewählte Ausgabegerät."
#: backend/epson.c:3075
#, no-c-format
@@ -1992,17 +1973,17 @@ msgstr "Erhöhe den Rotanteil basierend auf dem Blauwert"
msgid "Controls blue level"
msgstr "Legt den Blauwert fest"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
-msgstr "Das Bild spiegeln"
+msgstr "Das Bild spiegeln."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Schnelle Vorschau"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatische Auswahl des Scanbereichs"
@@ -2020,7 +2001,7 @@ msgstr "Zeige eine kurze Auflösungsliste an"
#: backend/epson.c:3267
#, no-c-format
msgid "Zoom"
-msgstr "Vergrösserung"
+msgstr "Zoom"
#: backend/epson.c:3269
#, no-c-format
@@ -2032,47 +2013,47 @@ msgstr "Definiert den Vergrösserungsfaktor, der vom Scanner benutzt wird"
msgid "Quick format"
msgstr "Schnellformat"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Optionales Zubehör"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
-msgstr "auswerfen"
+msgstr "Auswerfen"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
-msgstr "Wirft das Blatt aus dem automatischen Dokumenteinzug aus"
+msgstr "Wirft das Blatt aus dem automatischen Dokumenteneinzug aus"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automatischer Auswurf"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
-msgstr "Auswurf des Dokuments nach dem Scannen"
+msgstr "Dokument nach dem Scannen auswerfen"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
-msgstr "ADF-Modus"
+msgstr "Dokumenteneinzug Modus"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Wählt den ADF-Modus aus (einseitig/doppelseitig)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Schacht"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Wähle den Schacht zum Scannen aus"
@@ -2080,12 +2061,11 @@ msgstr "Wähle den Schacht zum Scannen aus"
#: backend/epson.h:69 backend/epson2.h:68
#, 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 ""
-"Wählt die Gammakorrektur aus einer Liste von vordefinierten Geräten aus "
-"oder eine benutzerdefinierte Tabelle, die in den Scanner geladen werden "
-"kann"
+"Wählt die Gammakorrektur aus einer Liste von vordefinierten Geräten aus oder "
+"eine benutzerdefinierte Tabelle, die in den Scanner geladen werden kann"
#: backend/epson.h:72 backend/epson2.h:71
#, no-c-format
@@ -2094,14 +2074,13 @@ msgstr "Fokus Position"
#: backend/epson.h:73 backend/epson2.h:72
#, 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 "Setzt den Fokus entweder auf das Glas oder 2.5mm darüber"
#: backend/epson.h:75 backend/epson2.h:74
#, no-c-format
msgid "Wait for Button"
-msgstr "Warte auf Knopfdruck"
+msgstr "Warte auf Tastendruck"
#: backend/epson.h:76 backend/epson2.h:75
#, no-c-format
@@ -2109,10 +2088,10 @@ msgid ""
"After sending the scan command, wait until the button on the scanner is "
"pressed to actually start the scan process."
msgstr ""
-"Beginne mit dem Scannen erst, wenn nach dem Senden des Scankommandos der "
-"Knopf am Scanner gedrückt wird."
+"Beginne mit dem Scannen erst, wenn nach dem Senden des Scankommandos die "
+"Taste am Scanner gedrückt wird."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Infrarot"
@@ -2120,7 +2099,7 @@ msgstr "Infrarot"
#: backend/epson2.c:117
#, no-c-format
msgid "TPU8x10"
-msgstr ""
+msgstr "Durchlichtaufsatz 8x10"
#: backend/epson2.c:136
#, no-c-format
@@ -2142,1064 +2121,1097 @@ msgstr "Eingebautes CCT-Profil"
msgid "User defined CCT profile"
msgstr "Benutzerdefiniertes CCT-Profil"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "An"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Aus"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Halbton"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Diffusion"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Weiß"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Schwarz"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Fortfahren"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Stopp"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
-msgstr "horizontal breit"
+msgstr "Horizontal breit"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
-msgstr "horizontal schmal"
+msgstr "Horizontal schmal"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertikal"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
-msgstr "vertikal breit"
+msgstr "Vertikal breit"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "Oben nach unten"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "Unten nach oben"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Vorne"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Hinten"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr "Gamma-Exponent"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Verändert die Intensität der mittleren Farbtöne"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
-msgstr ""
+msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
-msgstr ""
+msgstr "Reverse Image Format"
-#: backend/fujitsu.c:3165
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3212
+#, no-c-format
msgid "Halftone type"
-msgstr "Halbton"
+msgstr "Halbton Typ"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
-msgstr ""
+msgstr "Halbton Typ einstellen"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr ""
+msgstr "Halbton Muster einstellen"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
-msgstr ""
+msgstr "Kontur"
-#: backend/fujitsu.c:3210
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3257
+#, no-c-format
msgid "Perform outline extraction"
-msgstr "Führt Kalibrierung durch"
+msgstr "Kontur ermitteln"
-#: backend/fujitsu.c:3221
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3268
+#, no-c-format
msgid "Emphasis"
-msgstr "Bildgewichtung"
+msgstr "Gewichtung"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
-msgstr ""
+msgstr "Negative Werte zum Weichzeichnen oder positive Werte zum Schärfen"
-#: backend/fujitsu.c:3240
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3287
+#, no-c-format
msgid "Separation"
-msgstr "Sättigung"
+msgstr "Trennung"
-#: backend/fujitsu.c:3241
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3288
+#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr ""
-"Schaltet die automatische Bestimmung des Schwellwerts für den Schwarz-"
-"Weiß-Modus ein."
+msgstr "Aktiviere die automatische Trennung von Bild und Text"
-#: backend/fujitsu.c:3252
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3299
+#, no-c-format
msgid "Mirroring"
msgstr "Bild spiegeln"
-#: backend/fujitsu.c:3253
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3300
+#, no-c-format
msgid "Reflect output image horizontally"
-msgstr "Bild horizontal spiegeln."
+msgstr "Bild horizontal spiegeln"
-#: backend/fujitsu.c:3270
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3317
+#, no-c-format
msgid "White level follower"
-msgstr "Weißwert für Blau"
+msgstr "Weißwertfolger"
-#: backend/fujitsu.c:3271
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3318
+#, no-c-format
msgid "Control white level follower"
-msgstr "Legt den Rotanteil fest"
+msgstr "Einstellungen für Weißwertfolger"
-#: backend/fujitsu.c:3289
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3336
+#, no-c-format
msgid "BP filter"
-msgstr "Farbfilter"
+msgstr "Kugelschreiber Filter"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr ""
+msgstr "Verbessert die Qualität von mit Kugelschreiber geschriebenen Text"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
-msgstr "Glätten"
+msgstr "Glättung"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr ""
+msgstr "Aktiviere Glättung zur Verbesserung von OCR"
-#: backend/fujitsu.c:3323
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3370
+#, no-c-format
msgid "Gamma curve"
-msgstr "Gammawert"
+msgstr "Gammakurve"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
+"Gammakurve, von hell zu dunkel, die oberen beiden funktionieren nicht "
+"unbedingt"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Schwellwertkurve"
-#: backend/fujitsu.c:3347
-#, fuzzy, no-c-format
-msgid ""
-"Threshold curve, from light to dark, but upper two may not be linear"
+#: backend/fujitsu.c:3394
+#, no-c-format
+msgid "Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-"Dynamische Schwellwertkurve, von hell zu dunkel, nomalerweise 50-65"
+"Dynamische Schwellwertkurve, von hell zu dunkel, die oberen beiden sind "
+"nicht unbedingt linear"
-#: backend/fujitsu.c:3369
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3416
+#, no-c-format
msgid "Threshold white"
-msgstr "Schwellwert"
+msgstr "Schwellwert Weiß"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
-msgstr ""
+msgstr "Pixel unterhalb vom Schwellwert in Weiß anstelle von Schwarz umwandeln"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
+#, no-c-format
msgid "Noise removal"
msgstr "Rauschunterdrückung"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
-msgstr ""
+msgstr "Matrix 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr ""
+msgstr "5x5 Pixel Rauschunterdrückung"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
-msgstr ""
+msgstr "Matrix 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr ""
+msgstr "4x4 Pixel Rauschunterdrückung"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
-msgstr ""
+msgstr "Matrix 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr ""
+msgstr "3x3 Pixel Rauschunterdrückung"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
-msgstr ""
+msgstr "Matrix 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr ""
+msgstr "2x2 Pixel Rauschunterdrückung"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
-msgstr ""
+msgstr "Streuung"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
-msgstr ""
+msgstr "Setze SDTC Varianz (Empfindlichkeit), 0 = 127"
-#: backend/fujitsu.c:3508
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3555
+#, no-c-format
msgid "Auto width detection"
-msgstr "Keine Korrektur"
+msgstr "Vorlagenbreite automatisch erkennen"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
+"Der Scanner erkennt automatisch die Seitengrößen. Verlangsamt die "
+"Scanngeschwindigkeit."
-#: backend/fujitsu.c:3526
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3573
+#, no-c-format
msgid "Auto length detection"
-msgstr "Keine Korrektur"
+msgstr "Vorlagenlänge automatisch erkennen"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
+"Der Scanner erkennt die Seitenausrichtung. Kann einige Programme verwirren."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
-msgstr ""
+msgstr "Komprimierung"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
+"Aktiviere Datenkomprimierung. Kann das verwendete Scanprogramm abstürzen "
+"lassen."
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
-msgstr ""
+msgstr "Komprimierungsparameter"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, 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-Komprimierung: 1 = kleinste Datei, 7 = größte Datei, 0 (Voreinstellung) "
+"= 4"
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
-msgstr ""
+msgstr "Duplex Aktion"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
-msgstr ""
+msgstr "Aktion bei Duplex Fehler"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
-msgstr ""
+msgstr "Duplex Schrägeinlauf"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr ""
+msgstr "Aktiviere Duplexfehler bei Schrägeinlauf"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
-msgstr ""
+msgstr "Duplex Papierdicke"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr ""
+msgstr "Aktiviere Duplexfehler bei zu großer Papierdicke"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
-msgstr ""
+msgstr "Duplex Seitenlänge"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr ""
+msgstr "Aktiviere Duplexfehler bei falscher Seitenlänge"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
-msgstr ""
+msgstr "Duplex unterschiedliche Seitenlänge"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr ""
+msgstr "Aktiviere Duplexfehler bei unterschiedlicher Seitenlänge"
-#: backend/fujitsu.c:3708
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3755
+#, no-c-format
msgid "DF recovery mode"
-msgstr "Abdeckung des automatischen Einzuges offen"
+msgstr "Duplex Fehlerbehebung"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr ""
+msgstr "Rücklauf bei Papierstau"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
-msgstr ""
+msgstr "Dokumentenschutz"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr ""
+msgstr "Papierstau in der Duplexeinheit prognostizieren"
-#: backend/fujitsu.c:3748
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3795
+#, no-c-format
msgid "Advanced paper protection"
-msgstr "Erweiterte Optionen"
+msgstr "Erweiterter Dokumentenschutz"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
+"Papierstau in der Duplexeinheit mit verbesserten Sensoren prognostizieren"
-#: backend/fujitsu.c:3768
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3815
+#, no-c-format
msgid "Staple detection"
-msgstr "Keine Korrektur"
+msgstr "Heftklammer - Erkennung"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
-msgstr ""
+msgstr "von Heftklammern verursachter Papierstau im Dokumenteneinzug erkennen"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
-msgstr ""
+msgstr "Hintergrundfarbe"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
-msgid ""
-"Set color of background for scans. May conflict with overscan option"
-msgstr ""
+msgid "Set color of background for scans. May conflict with overscan option"
+msgstr "Hintergrundfarbe für Scans. Steht im Konflikt mit Overscan"
-#: backend/fujitsu.c:3809
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3856
+#, no-c-format
msgid "Dropout color"
-msgstr "Blindfarbe"
+msgstr "Dropout-Farbe"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, 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 ""
+"One-Pass-Scanner scannen nur eine Farbe bei Graustufen und Strichzeichnungs-"
+"Scans, hilfreich bei farbigem Papier oder Tinte"
-#: backend/fujitsu.c:3833
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3880
+#, no-c-format
msgid "Buffer mode"
-msgstr "Einzugsmodus"
+msgstr "Scannerspeicher"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
-msgstr ""
+msgstr "Aktiviere schnelle Duplex Scans in den Scannerspeicher"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
-msgstr ""
+msgstr "Prepick"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr ""
+msgstr "Nächste Seite vom Dokumenteneinzug einziehen"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
-msgstr ""
+msgstr "Overscan"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, 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 ""
+"Fügt einen Rand vor und nach dem Einzug eines Dokuments hinzu, damit kleine "
+"Vorlagen auf einer Seite gesammelt werden können. Steht im Konflikt mit "
+"Hintergrundfarbe."
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
-msgstr ""
+msgstr "Sleep Timer"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, 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 "Zeit in Minuten nachdem der Scanner in den Ruhezustand wechselt"
-#: backend/fujitsu.c:3911
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3958
+#, no-c-format
msgid "Off timer"
-msgstr "Lampenausschaltzeit"
+msgstr "Ausschalt Timer"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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 ""
+"Zeit in Minuten, nachdem sich der Scanner selbständig ausschaltet. Wird auf "
+"die nächsten 15 Minuten gerundet. 0 = deaktiviert."
-#: backend/fujitsu.c:3930
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3977
+#, no-c-format
msgid "Duplex offset"
-msgstr "Offset blauer Kanal"
+msgstr "Duplex Offset"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
-msgstr ""
+msgstr "Vorder-/Rückseiten Offset"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Offset grüner Kanal"
-#: backend/fujitsu.c:3949
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3996
+#, no-c-format
msgid "Adjust green/red offset"
-msgstr "Offset grüner Kanal"
+msgstr "Rot/Grün Offset"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Offset blauer Kanal"
-#: backend/fujitsu.c:3967
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4014
+#, no-c-format
msgid "Adjust blue/red offset"
-msgstr "Legt den Offset des blauen Kanals fest"
+msgstr "Blau/Rot Offset"
-#: backend/fujitsu.c:3980
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4027
+#, no-c-format
msgid "Low Memory"
msgstr "Nicht genügend Speicher"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, 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 ""
+"Speicherbedarf für Treiber in Embedded Systems begrenzen. Kann bei jedem "
+"Aufruf von sane_read die Seitenreihenfolge bei Duplexscans vertauschen. Mit "
+"der Option 'Duplex Seite' kann die korrekte Seitenreihenfolge gewährleistet "
+"werden. Diese Option funktioniert nur mit selbst erstellter Scansoftware."
-#: backend/fujitsu.c:3996
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4043
+#, no-c-format
msgid "Duplex side"
-msgstr "Duplexscan"
+msgstr "Duplex Seite"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
+"Wählt die Seite vom nächsten Duplexscan aus aus (0 = Vorderseite, 1 = "
+"Rückseite), welche von sane_read zurückgegeben wird."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr ""
+msgstr "Hardware Entzerrung und Zuschnitt"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr ""
+msgstr "Scanner rotiert und beschneidet den Scan digital."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr ""
+msgstr "Software Entzerrung"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr ""
+msgstr "Treiber rotiert verzerrte Scans."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr ""
+msgstr "Software Fehlerkorrektur"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
-msgstr ""
+msgstr "Max. Durchmesser einzelner zu entfernender Fehlstellen im Scan."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
-msgstr ""
+msgstr "Software Zuschnitt"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr ""
+msgstr "Treiber entfernt Ränder von Scans."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
-msgstr ""
+msgstr "Einzugshalt bei Abbruch"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, 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 ""
+"Bei einem Abbruch verbleibt die Seite im Dukumenteneinzug und wird nicht "
+"ausgeworfen."
-#: backend/fujitsu.c:4095
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4142
+#, no-c-format
msgid "Endorser Options"
-msgstr "Erweiterte Optionen"
+msgstr "Stempel Optionen"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
-msgstr ""
+msgstr "Einstellungen für Stempel"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
-msgstr ""
+msgstr "Stempel"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
-msgstr ""
+msgstr "Aktiviere Stempel"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
-msgstr ""
+msgstr "Stempelgröße"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr ""
+msgstr "Max. Wert für Stempelzähler."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
-msgstr ""
+msgstr "Stempelwert"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
-msgstr ""
+msgstr "Anfangswert für Stempelzähler,"
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
-msgstr ""
+msgstr "Schrittweite für Stempelzähler"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
-msgstr ""
+msgstr "Schrittweite für Stempelzähler."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
-msgstr ""
+msgstr "Stempel Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr ""
+msgstr "Stempelabstand zum oberen Seitenrand."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
-msgstr ""
+msgstr "Stempel Schriftart"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
-msgstr ""
+msgstr "Stempel Schriftart."
-#: backend/fujitsu.c:4253
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4300
+#, no-c-format
msgid "Endorser direction"
-msgstr "Rauschunterdrückung"
+msgstr "Stempel Ausrichtung"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
-msgstr ""
+msgstr "Stempel Druckrichtung"
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
-msgstr ""
+msgstr "Stempelseite"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
-msgstr ""
+msgstr "Druckseite für Stempel; muss vom Scanner unterstützt werden"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
-msgstr ""
+msgstr "Stempel Zeichenkette"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
+"Stempel als alphanumerische Zeichenkette. %05ud oder %08ud am Ende wird "
+"durch den Stempelzähler ersetzt."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
-msgstr ""
+msgstr "Obere Kante"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
-msgstr ""
+msgstr "Papier wurde teilweise in den Dokumenteneinzug eingezogen"
-#: backend/fujitsu.c:4344
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4391
+#, no-c-format
msgid "A3 paper"
-msgstr "Vom Papier"
+msgstr "A3 Vorlage"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
-msgstr ""
+msgstr "A3 Vorlage erkannt"
-#: backend/fujitsu.c:4356
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4403
+#, no-c-format
msgid "B4 paper"
-msgstr "Vom Papier"
+msgstr "B4 Vorlage"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
-msgstr ""
+msgstr "B4 Vorlage erkannt"
-#: backend/fujitsu.c:4368
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4415
+#, no-c-format
msgid "A4 paper"
-msgstr "Vom Papier"
+msgstr "A4 Vorlage"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
-msgstr ""
+msgstr "A4 Vorlage erkannt"
-#: backend/fujitsu.c:4380
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4427
+#, no-c-format
msgid "B5 paper"
-msgstr "Vom Papier"
+msgstr "B5 Vorlage"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
-msgstr ""
+msgstr "B5 Vorlage erkannt"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
-msgstr ""
+msgstr "OMR oder DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
-msgstr ""
+msgstr "OMR oder Double Feed erkannt"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
-msgstr ""
+msgstr "Energiesparmodus"
-#: backend/fujitsu.c:4429
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4476
+#, no-c-format
msgid "Scanner in power saving mode"
-msgstr "Die Abdeckung des Scanners ist offen"
+msgstr "Der Scanner befindet im Energiesparmodus"
-#: backend/fujitsu.c:4452
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4499
+#, no-c-format
msgid "Manual feed"
-msgstr "Manueller Pre-Focus"
+msgstr "Manueller Einzug"
-#: backend/fujitsu.c:4453
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4500
+#, no-c-format
msgid "Manual feed selected"
-msgstr "Manueller Pre-Focus"
+msgstr "Manueller Einzug ausgewählt"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
-msgstr ""
+msgstr "Funktion"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
-msgstr ""
+msgstr "Funktionszeichen auf dem Bildschirm"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
-msgstr ""
+msgstr "wenig Tinte"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
-msgstr ""
+msgstr "Wenig Imprinter Tinte"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
-msgstr ""
+msgstr "Double Feed"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
-msgstr ""
+msgstr "Double Feed erkannt"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
-msgstr ""
+msgstr "Fehlercode"
-#: backend/fujitsu.c:4513
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4560
+#, no-c-format
msgid "Hardware error code"
-msgstr "Hardwareüberprüfungsfehler"
+msgstr "Hardwarefehler"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
-msgstr ""
+msgstr "Schräglaufwinkel"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
-msgstr ""
+msgstr "Schwarzer Hintergrund erforderlich"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
-msgstr ""
+msgstr "verbleibende Tinte"
-#: backend/fujitsu.c:4537
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4584
+#, no-c-format
msgid "Imprinter ink level"
-msgstr "Weißwert"
+msgstr "Imprinter Tintenstand"
-#: backend/fujitsu.c:4548
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4595
+#, no-c-format
msgid "Density"
-msgstr "Dichte Einstellung"
+msgstr "Dichte"
-#: backend/fujitsu.c:4549
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4596
+#, no-c-format
msgid "Density dial"
msgstr "Dichte Einstellung"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
+#, no-c-format
msgid "Duplex switch"
msgstr "Duplexscan"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
-msgstr ""
+msgstr "Treiber entfernt digital Ränder vom Scan"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
-msgstr ""
+msgstr "Treiber verwirft Scans mit geringer Schwarzfärbung"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr ""
+msgstr "Software Dokumentendrehung"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
-msgstr ""
+msgstr "Treiber erkennt und dreht um 90° verdrehte Vorlagen"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
-msgstr ""
-"Dynamische Schwellwertkurve, von hell zu dunkel, nomalerweise 50-65"
+msgstr "Dynamische Schwellwertkurve, von hell zu dunkel, nomalerweise 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
-msgstr "dynamische Strichzeichnung abschalten"
+msgstr "Deaktiviere dynamische Strichzeichnung"
-#: backend/genesys.c:5844
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5517
+#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-"Abschalten um einen Software angepassten Algorithmus zur Erstellung von "
-"Strichzeichnungen zu verwenden anstatt die Hardwarefunktion zu nutzen"
+"Deaktiviere Software angepassten Algorithmus zur Erstellung von "
+"Strichzeichnungen anstelle von Hardware-Strichzeichnungen."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Interpolation abschalten"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
-"When using high resolutions where the horizontal resolution is smaller "
-"than the vertical resolution this disables horizontal interpolation."
+"When using high resolutions where the horizontal resolution is smaller than "
+"the vertical resolution this disables horizontal interpolation."
msgstr ""
-"Wenn Sie hohe Auflösungen verwenden, bei denen die horizontale Auflösung "
-"kleiner ist als die vertikale, schaltet dies die horizontale "
-"Interpolation aus"
+"Deaktiviere horizontale Interpolation bei hoher Auflösung, bei denen die "
+"horizontale Auflösung kleiner ist als die vertikale."
-#: backend/genesys.c:5872
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5545
+#, no-c-format
msgid "Color filter"
msgstr "Farbfilter"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-"Wenn Graustufen oder Strichzeichnung verwendet wird, wählt diese Option "
-"die Farbe"
+"Diese Option wählt die verwendete Farbe für Strichzeichnungs- und Graustufen-"
+"Scans."
-#: backend/genesys.c:5901
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5574
+#, no-c-format
msgid "Calibration file"
-msgstr "Kalibrierung"
+msgstr "Kalibrierungsdatei"
-#: backend/genesys.c:5902
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5575
+#, no-c-format
msgid "Specify the calibration file to use"
-msgstr "Kalibriermodus definieren"
+msgstr "Kalibrierungsdatei auswählen"
-#: backend/genesys.c:5919
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5592
+#, no-c-format
msgid "Calibration cache expiration time"
-msgstr "Kalibrierungsdatenspeicher"
+msgstr "Gültigkeitszeitraum für Kalibrierungszwischenspeicher"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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 ""
+"Gültigkeitszeitraum für Kalibrierungszwischenspeicher in Minuten. 0 = "
+"Zwischenspeicher deaktiviert. Ein negativer Wert lässt die Gültigkeit nie "
+"ablaufen."
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Lampenausschaltzeit"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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 ""
"Die Lampe wird nach der angegebenen Zeit (in Minuten) ausgeschaltet. Ein "
"Wert von 0 bedeutet, dass die Lampe nich ausgeschaltet wird."
-#: backend/genesys.c:5943
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5616
+#, no-c-format
msgid "Lamp off during scan"
-msgstr "Lampe aus während Schwarzkalibrierung"
+msgstr "während Scan Lampe ausschalten"
-#: backend/genesys.c:5944
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5617
+#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr "Anzahl der Minuten, bis die Lampe nach dem Scan ausgeschaltet wird"
+msgstr "Die Lampe wird beim Scannen abgeschaltet. "
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
-msgstr "Datei-Knopf"
+msgstr "Datei Taste"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
-msgstr "OCR-Knopf"
+msgstr "OCR Taste"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
-msgstr "Einschaltknopf"
+msgstr "Einschalt Taste"
-#: backend/genesys.c:6053 backend/genesys.c:6054
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
+#, no-c-format
msgid "Extra button"
-msgstr "E-Mail-Knopf"
+msgstr "Zusatztaste"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
-msgstr "benötigt Kalibirierung"
+msgstr "Benötigt Kalibirierung"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr ""
"Der Scanner benötigt eine Kalibrierung für die momentanen Einstellungen"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
-msgstr "Knöpfe"
+msgstr "Tasten"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrierung"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Starte den Kalibrierungsprozess mit einem Spezialblatt"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Kalibrierung zurücksetzen"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
-msgstr "Löscht den Kalibrierungsspeicher"
+msgstr "Kalibrierungszwischenspeicher löschen"
+
+#: backend/genesys.cc:5769
+#, no-c-format
+msgid "Force calibration"
+msgstr "Kalibrierung erzwingen"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr "Kalibrierung trotz Daten im Zwischenspeicher erzwingen"
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
@@ -3207,111 +3219,109 @@ msgstr "Löscht den Kalibrierungsspeicher"
msgid "Transparency Adapter"
msgstr "Durchlichteinheit"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Graustufen-Farbe"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Legt fest, welche SCanfarbe im Garustufen-Modus verwendet wird "
"(Standardwert: Grün)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
-#: backend/mustek_usb2.c:410
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392 backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Optionen zur Fehlersuche"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatisches Aufwärmen"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, 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 ""
-"Warte solange, bis die Helligkeit der Lampe konstant ist anstatt einfach "
-"60 Sekunden zu warten."
+"Warte solange, bis die Helligkeit der Lampe konstant ist anstatt einfach 60 "
+"Sekunden zu warten."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Kompletter Scan"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
"Scanne den gesamten möglichen Scanbereich inklusive des "
-"Kalibrierungsstreifens. Vorsicht, keine zu große Länge auswählen. Nur "
-"für Testzwecke."
+"Kalibrierungsstreifens. Vorsicht, keine zu große Länge auswählen. Nur für "
+"Testzwecke."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grobkalibrierung"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, 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 ""
"Stelle Verstärkung und Versatz automatisch ein. Wenn dies Option "
"ausgeschaltet ist, können die Parameter des AFE (\"Analog Frontend\") "
"manuell eingestellt werden. Diese Option is standardmäßig an. Nur für "
"Testzwecke."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grobkalibrierung nur für ersten Scan"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, 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 ""
"Die Grobkalibrierung wird nur für den ersten Scan durchgeführt. Das "
-"funktioniert mit den meisten Scannern und kann einiges an Scanzeit "
-"sparen. Wenn die Helligkeit der Bilder von Scan zu Scan schwankt, sollte "
-"diese Option ausgeschaltet werden. Nur für Testzwecke."
+"funktioniert mit den meisten Scannern und kann einiges an Scanzeit sparen. "
+"Wenn die Helligkeit der Bilder von Scan zu Scan schwankt, sollte diese "
+"Option ausgeschaltet werden. Nur für Testzwecke."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Backtrack-Zeilen"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, 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 ""
"Anzahl der Zeilen, die der Scanschlitten zurückfährt, wenn Backtracking "
-"auftritt. Das passiert, wenn der Scanner schneller scant, als der "
-"Computer die Daten aufnehmen kann. Niedrigere Werte sorgen für "
-"schnellere Scans, erhöhen jedoch das Risiko, Zeilen zu überspringen."
+"auftritt. Das passiert, wenn der Scanner schneller scant, als der Computer "
+"die Daten aufnehmen kann. Niedrigere Werte sorgen für schnellere Scans, "
+"erhöhen jedoch das Risiko, Zeilen zu überspringen."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gammawert"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Legt den Gammawert für alle Kanäle fest."
@@ -3327,7 +3337,7 @@ msgid "Scan Mode Group"
msgstr "Scanmodus"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Dia"
@@ -3338,10 +3348,9 @@ msgid "Scanner model"
msgstr "Scannermodell"
#: backend/hp3900_sane.c:1408
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Allows one to test device behaviour with other supported models"
-msgstr ""
-"Erlaubt Geräteverhalten mit anderen unterstützten Modellen zu testen"
+msgstr "Erlaubt Geräteverhalten mit anderen unterstützten Modellen zu testen"
#: backend/hp3900_sane.c:1422
#, no-c-format
@@ -3381,14 +3390,14 @@ msgstr "Der Aufwärmprozess wird überspungen"
#: backend/hp3900_sane.c:1482
#, no-c-format
msgid "Force real depth"
-msgstr "erzwinge echte Tiefe"
+msgstr "Erzwinge echte Tiefe"
#: backend/hp3900_sane.c:1485
#, 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 ""
"Falls Gamma verwendet wird, werden Scans mit einer Farbtiefe von 16 Bit "
"ausgeführt und danach in die gewählte Farbtiefe umgewandelt, um die "
@@ -3403,12 +3412,11 @@ msgstr "Graustufen emulieren"
#, 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 ""
-"Falls verwendet, wird das Bild im Farbmodus gescannt und dann per "
-"Software in Graustufen umgewandelt. Unter manchen Umständen verbessert "
-"dies die Bildqualität."
+"Falls verwendet, wird das Bild im Farbmodus gescannt und dann per Software "
+"in Graustufen umgewandelt. Unter manchen Umständen verbessert dies die "
+"Bildqualität."
#: backend/hp3900_sane.c:1516
#, no-c-format
@@ -3418,8 +3426,8 @@ msgstr "Debugging Bilder abspeichern"
#: backend/hp3900_sane.c:1519
#, 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 ""
"Wenn aktiviert werden einige Bilder im Scanprozess gespeichert um sie zu "
"analysieren."
@@ -3487,7 +3495,7 @@ msgstr "Aktualisiert alle Informationnen über das Gerät"
#: backend/hp3900_sane.c:1635
#, no-c-format
msgid "This option reflects a front panel scanner button"
-msgstr "Diese Option spiegelt den vorderen Scannerknopf wieder"
+msgstr "Diese Option spiegelt die vorderen Scannertasten wieder"
#: backend/hp5400_sane.c:313 backend/niash.c:678
#, no-c-format
@@ -3507,7 +3515,7 @@ msgstr "X-Abstand"
#: backend/hp5400_sane.c:359
#, no-c-format
msgid "Hardware internal X position of the scanning area."
-msgstr "hardwareinterne X-Position des Scanbereichs"
+msgstr "Hardwareinterne X-Position des Scanbereichs."
#: backend/hp5400_sane.c:368
#, no-c-format
@@ -3517,7 +3525,7 @@ msgstr "Y-Abstand"
#: backend/hp5400_sane.c:369
#, no-c-format
msgid "Hardware internal Y position of the scanning area."
-msgstr "hardwareinterne Y-Position des Scanbereichs"
+msgstr "Hardwareinterne Y-Position des Scanbereichs."
#: backend/hp5400_sane.c:381 backend/niash.c:716
#, no-c-format
@@ -3527,167 +3535,246 @@ msgstr "Lampenstatus"
#: backend/hp5400_sane.c:382 backend/niash.c:717
#, no-c-format
msgid "Switches the lamp on or off."
-msgstr "Schaltet die Lampe an oder aus"
+msgstr "Schaltet die Lampe an oder aus."
#: backend/hp5400_sane.c:393 backend/niash.c:727
#, no-c-format
msgid "Calibrates for black and white level."
msgstr "Kalibriert Schwarz- und Weisswert."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
-msgstr "ADF"
+msgstr "Automatischer Dokumenteneinzug"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA-Dias"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA-Negative"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Farbe (48 Bit)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Lampenausschaltzeit verlängern"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
-msgstr "Verländert die Lampenausschaltzeit (von 15 Minuten bis 1 Stunde)"
+msgstr "Verlängert die Lampenausschaltzeit (von 15 Minuten bis 1 Stunde)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
-msgstr "Warten auf Knopfdruck"
+msgstr "Warte auf Tastendruck"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
-msgstr "Scannen beginnt erst mit Knopfdruck"
+msgstr "Scannen beginnt erst mit Tastendruck"
+
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Letzter Tastendruck"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Lese zuletzt betätigte Taste (read only)"
+
+#: backend/hp5590.c:121
+#, no-c-format
+msgid "LCD counter"
+msgstr "Scanzähler"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Lese Scanzähler (read only)"
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr "Farbindikator"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Lese Wert vom Farbindikator (read only)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr "Seite im Dokumenteneinzug verfügbar"
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr "Lese Status der Seitenerkennung im Dokumenteneinzug (read only)"
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Ignoriere Seiten Ende Pixel"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid "Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+"Ignoriere Seiten Ende Pixel und überschreibe diese mit der umgebenden "
+"Hintergrundfarbe"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr "Füllmodus für unteren Rand bei kurzen Vorlagen im Dokumenteneinzug"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 = Scandaten, letzte = wiederhole letzte Scanzeile, Raster = s/w Raster, "
+"Weiß, Schwarz, Farbe = RGB oder Grau Wert"
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr "RGB oder Grau Farbwert für Füllmodus 'Farbe'"
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+"Farbwerte für Füllmodus 'Farbe'. RGB = r*65536+256*g+b oder Grauwert "
+"(Vorgabe = Violet oder Grau)"
-#: backend/hp-option.c:2984
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Erweiterte Optionen"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grob"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fein"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Benutzerdefiniert"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146 backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
-msgstr "Auto"
+msgstr "Automatisch"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Unverändert"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC Grau"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA Grau"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Langsam"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
-#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
-#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
+#: backend/hp-option.c:3148 backend/hp-option.c:3255 backend/kvs40xx_opt.c:230
+#: backend/matsushita.c:244 backend/mustek.c:149 backend/plustek.c:234
+#: backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Schnell"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Besonders schnell"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2 Pixel"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4 Pixel"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8 Pixel"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Foto"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Film-Streifen"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Bedingt"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experiment"
@@ -3695,7 +3782,7 @@ msgstr "Experiment"
#: backend/hp-option.h:60
#, no-c-format
msgid "Sharpening"
-msgstr "Schärfe"
+msgstr "Schärfen"
#: backend/hp-option.h:61
#, no-c-format
@@ -3711,8 +3798,8 @@ msgstr "Automatischer Schwellwert"
#, no-c-format
msgid "Enable automatic determination of threshold for line-art scans."
msgstr ""
-"Schaltet die automatische Bestimmung des Schwellwerts für den Schwarz-"
-"Weiß-Modus ein."
+"Schaltet die automatische Bestimmung des Schwellwerts für den Schwarz-Weiß-"
+"Modus ein."
#: backend/hp-option.h:74
#, no-c-format
@@ -3772,15 +3859,14 @@ msgstr "Belichtungszeit"
#: backend/hp-option.h:111
#, 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 ""
-"Bei einer längeren Belichtungszeit kann der Scanner mehr Licht "
-"auffangen. Empfohlene Werte: 175% für Fotos, 150% für normale Dias und "
-"\"Negativ\" für Negativ-Filme. Für dunkle (unterentwickelte) Bilder kann "
-"dieser Wert vergrößert werden."
+"Bei einer längeren Belichtungszeit kann der Scanner mehr Licht auffangen. "
+"Empfohlene Werte: 175% für Fotos, 150% für normale Dias und \"Negativ\" für "
+"Negativ-Filme. Für dunkle (unterentwickelte) Bilder kann dieser Wert "
+"vergrößert werden."
#: backend/hp-option.h:119 backend/hp-option.h:126
#, no-c-format
@@ -3851,12 +3937,12 @@ msgstr ""
#: backend/hp-option.h:164
#, no-c-format
msgid "Front button wait"
-msgstr "Warten auf vorderen Knopf"
+msgstr "Warten auf vordere Taste"
#: backend/hp-option.h:165
#, no-c-format
msgid "Wait to scan for front-panel button push."
-msgstr "Warte mit dem Scan aud das Drücken des vorderen Knopfes."
+msgstr "Warte mit dem Scan auf das Drücken der vorderen Taste."
#: backend/hp-option.h:172
#, no-c-format
@@ -3868,8 +3954,8 @@ msgstr "Lampe ausschalten"
msgid "Shut off scanner lamp."
msgstr "Schalte Scannerlampe aus."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Papiergröße"
@@ -3880,54 +3966,49 @@ msgstr "Papiergröße"
msgid "Automatic separation"
msgstr "Automatische Trennung"
-#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307
-#: backend/kvs40xx_opt.c:531
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
+#, no-c-format
msgid "Landscape"
-msgstr "A5 quer"
+msgstr "Querformat"
#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
#, no-c-format
msgid "Inverse Image"
-msgstr ""
+msgstr "Invertiertes Bild"
#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
#, no-c-format
msgid "Long paper mode"
-msgstr ""
+msgstr "Endlospapier Mode"
-#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230
-#: backend/kvs40xx_opt.c:393
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:393
+#, no-c-format
msgid "Length control mode"
-msgstr "Dichte Einstellungsmodus setzen"
+msgstr "Längenkontrolle"
-#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242
-#: backend/kvs40xx_opt.c:416
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:416
+#, no-c-format
msgid "Manual feed mode"
-msgstr "Manueller Pre-Focus"
+msgstr "Manuelle Zufuhr"
-#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254
-#: backend/kvs40xx_opt.c:428
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
+#, no-c-format
msgid "Manual feed timeout"
-msgstr "Manueller Pre-Focus"
+msgstr "Timeout für manuelle Zufuhr"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
-msgstr ""
+msgstr "Duplex Detektor"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
-msgstr "Schalte Duplex- (zweiseitiges) Scannen ein"
+msgstr "Duplex- (zweiseitiges) Scannen"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Tatsächliche Größe des Papiers im ADF"
@@ -3935,20 +4016,20 @@ msgstr "Tatsächliche Größe des Papiers im ADF"
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr ""
+msgstr "Schwarz/Weiß"
#: backend/kvs1025_opt.c:40
-#, fuzzy, no-c-format
+#, no-c-format
msgid "halftone"
msgstr "Halbton"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr ""
+msgstr "Grau"
#: backend/kvs1025_opt.c:42
-#, fuzzy, no-c-format
+#, no-c-format
msgid "color"
msgstr "Farbe"
@@ -3956,386 +4037,379 @@ msgstr "Farbe"
#: backend/kvs40xx_opt.c:1047
#, no-c-format
msgid "adf"
-msgstr ""
+msgstr "Automatischer Dokumenteneinzug"
-#: 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 "Flachbett"
-#: 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 "einzeln"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
#: backend/kvs40xx.c:704 backend/kvs40xx.c:722 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
-#, fuzzy, no-c-format
+#, no-c-format
msgid "continuous"
-msgstr "Fortfahren"
+msgstr "endlos"
-#: 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 "Aus"
+msgstr "aus"
-#: 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 "Warte auf Dokument"
-#: 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 "Warte auf Tastendruck"
-#: 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 "Benutzerdefiniert"
-#: 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 "Visitenkarte"
-#: 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 "Prüfe"
-#: 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:149 backend/kvs40xx_opt.c:239
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
+#, no-c-format
msgid "bayer_64"
-msgstr "Bayer"
+msgstr "Bayer 64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
+#, no-c-format
msgid "bayer_16"
-msgstr "Bayer"
+msgstr "Bayer 16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
+#, no-c-format
msgid "halftone_32"
-msgstr "Halbton"
+msgstr "Halbton 32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
+#, no-c-format
msgid "halftone_64"
-msgstr "Halbton"
+msgstr "Halbton 64"
-#: backend/kvs1025_opt.c:153
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:152
+#, no-c-format
msgid "diffusion"
msgstr "Diffusion"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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 "Normal"
+msgstr "normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
+#, no-c-format
msgid "light"
-msgstr "Licht"
+msgstr "hell"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr ""
+msgstr "Dunkel"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
+#, no-c-format
msgid "From scanner"
-msgstr "Filmscanner"
+msgstr "Vom Scanner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
-#: backend/matsushita.c:177
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272 backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Vom Papier"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
+#, no-c-format
msgid "default"
msgstr "Standardeinstellung"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: 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 "Glatt"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
-msgstr ""
+msgstr "nichts"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: 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 "Langsam"
+msgstr "Gering"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: 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 "Mittel"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
-msgstr ""
+msgstr "hoch"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr ""
+msgstr "Monitor"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
-msgstr ""
+msgstr "Lineal"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: 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 "Rot"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: 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 "Grün"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
-msgstr ""
+msgstr "Blau"
-#: backend/kvs1025_opt.c:562
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:561
+#, no-c-format
msgid "Sets the scan source"
msgstr "Scanquelle"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Einzugsmodus"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Legt den Einzugsmodus fest"
-#: backend/kvs1025_opt.c:584
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:583
+#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr "Aktiviere/Deaktiviere automatischen Fokus\t\t"
+msgstr "Aktiviere/Deaktiviere langes Papierformat"
-#: backend/kvs1025_opt.c:593
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:592
+#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr "Dichte Einstellungsmodus setzen"
+msgstr "Aktiviere/Deaktiviere Längenkontrolle"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: 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 "Legt den Einzugsmodus fest"
+msgstr "manueller Einzug"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: 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 "Legt den Einzugsmodus fest"
+msgstr "Timeout für manuellen Einzug in Sekunden"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Aktiviere/Deaktiviere Zweiseitenerkennung"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
-msgstr ""
+msgstr "auf Seite einpassen"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
-msgstr ""
+msgstr "auf Seite einpassen"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner verkleinert Vorlage auf Seitengröße"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
+msgstr "Papierausrichtung: true = Querformat, false = Hochformat"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatischer Schwellwert"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, 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 ""
-"Legt automatisch Helligkeit, Kontrast, Weißwert, Gamma, "
-"Rauschunterdrückung und Bildgewichtung fest"
+"Legt automatisch Helligkeit, Kontrast, Weißwert, Gamma, Rauschunterdrückung "
+"und Bildgewichtung fest"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Rauschunterdrückung"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reduziert das Rauschen einzelner Punkte"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Bildgewichtung"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
-msgstr "Wählt die Bildgewichtung."
+msgstr "Wählt die Bildgewichtung"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: 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 "Lampe an"
+msgstr "Lampenfarbe"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: 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 "Schaltet die Lampe an oder aus"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr ""
+msgstr "Invertiere Bild in 1-Bit S/W oder Halbton"
-#: backend/kvs1025_opt.c:840
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:839
+#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr "Bild vertikal spiegeln."
+msgstr "Bild vertikal spiegeln"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr ""
+msgstr "JPEG Komprimierung"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
-msgstr ""
+msgstr "JPEG Komprimierung: 0 = keine Komprimierung"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr ""
+msgstr "Rotiere Bild im Uhrzeigersinn"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr ""
+msgstr "Treiber rotiert Seiten um einen vorgegebenen Wert"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr ""
+msgstr "Treiber dreht verzerrte Seiten"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
-msgstr ""
+msgstr "Max. Durchmesser für einzelne zu korrigierender Fehlstellen"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr ""
+msgstr "Automatischer Zuschnitt per Software"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr ""
+msgstr "Treiber entfernt Seitenränder"
#: backend/kvs20xx_opt.c:233 backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4343,10 +4417,11 @@ msgid ""
"Length Control Mode is a mode that the scanner reads up to the shorter "
"length of actual paper or logical document length."
msgstr ""
+"Bei der Längenkontrolle verwendet der Scanner die kürzere Länge, entweder "
+"von der Vorlage oder der vorgegebenen Seitenlänge."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
-#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
-#: backend/microtek2.h:640
+#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669 backend/microtek2.h:640
#, no-c-format
msgid "Gamma correction"
msgstr "Gammakorrektur"
@@ -4354,179 +4429,181 @@ msgstr "Gammakorrektur"
#: backend/kvs40xx_opt.c:117
#, no-c-format
msgid "wait_doc_hopper_up"
-msgstr ""
+msgstr "Warte auf eingelegtes Dokument"
#: 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 "Double Letter 11x17 Zoll"
#: 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 sensivity"
-msgstr "Drucken mit hoher Auflösung"
+msgstr "Hohe Auflösung"
#: backend/kvs40xx_opt.c:232
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Low sensivity"
-msgstr "Drucken mit geringer Auflösung"
+msgstr "Geringe Auflösung"
#: backend/kvs40xx_opt.c:243
-#, fuzzy, no-c-format
+#, no-c-format
msgid "err_diffusion"
-msgstr "Diffusion"
+msgstr "Verteilung"
#: backend/kvs40xx_opt.c:249
-#, fuzzy, no-c-format
+#, no-c-format
msgid "No detection"
-msgstr "Keine Korrektur"
+msgstr "Keine Erkennung"
#: backend/kvs40xx_opt.c:250
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Normal mode"
msgstr "Normal"
#: backend/kvs40xx_opt.c:251
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhanced mode"
-msgstr "Farbverbesserung"
+msgstr "Erweiterter Mode"
#: 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 ""
+"Im Endlospapier Mode wird die Vorlage auf mehrere voreingestellte "
+"Dokumentengrößen aufgeteilt."
#: backend/kvs40xx_opt.c:449
#, no-c-format
msgid "Double feed detector sensitivity"
-msgstr ""
+msgstr "Empfindlichkeit Zweiseitenerkennung"
#: backend/kvs40xx_opt.c:450
#, no-c-format
msgid "Set the double feed detector sensitivity"
-msgstr ""
+msgstr "Empfindlichkeit Zweiseitenerkennung einstellen"
#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
#, no-c-format
msgid "Do not stop after double feed detection"
-msgstr ""
+msgstr "Nach Zweiseitenerkennung nicht anhalten"
#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
#, no-c-format
msgid "Ignore left double feed sensor"
-msgstr ""
+msgstr "Ignoriere linken Sensor"
#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
#, no-c-format
msgid "Ignore center double feed sensor"
-msgstr ""
+msgstr "Ignoriere mittleren Sensor"
#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
#, no-c-format
msgid "Ignore right double feed sensor"
-msgstr ""
+msgstr "Ignoriere mittleren Sensor"
#: backend/kvs40xx_opt.c:642
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Automatic threshold mode"
-msgstr "Automatischer Schwellwert"
+msgstr "Automatischer Schwellwert Mode"
#: backend/kvs40xx_opt.c:643
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the automatic threshold mode"
-msgstr "Automatischer Schwellwert"
+msgstr "Automatischer Schwellwert einstellen"
#: backend/kvs40xx_opt.c:694
#, no-c-format
msgid "Inverse image in B/W mode"
-msgstr ""
+msgstr "Invertiere Bild in 1-Bit S/W"
#: backend/kvs40xx_opt.c:715
#, no-c-format
msgid "JPEG compression"
-msgstr ""
+msgstr "JPEG Komprimierung"
#: backend/kvs40xx_opt.c:718
#, no-c-format
msgid "JPEG compression (yours application must be able to uncompress)"
-msgstr ""
+msgstr "JPEG Komprimierung (Ihr Programm muss dekomprimieren können)"
#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
#, no-c-format
msgid "Detect stapled document"
-msgstr ""
+msgstr "Erkenne geheftete Dokumente"
#: backend/kvs40xx_opt.c:776
#, no-c-format
msgid "chroma of red"
-msgstr ""
+msgstr "Chroma Rot"
#: backend/kvs40xx_opt.c:777
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of red"
-msgstr "Legt die Reihenfolge der Frames fest"
+msgstr "Chroma Rot setzen"
#: backend/kvs40xx_opt.c:787
-#, fuzzy, no-c-format
+#, no-c-format
msgid "chroma of blue"
-msgstr "Schatten Blau"
+msgstr "Chroma Blau"
#: backend/kvs40xx_opt.c:788
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of blue"
-msgstr "Verschiebt Rot nach Blau"
+msgstr "Chroma Blau setzen"
#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
#, no-c-format
msgid "Skew adjustment"
-msgstr ""
+msgstr "Schräglauferkennunng"
#: backend/kvs40xx_opt.c:808
#, no-c-format
msgid "Stop scanner when a paper have been skewed"
-msgstr ""
+msgstr "Scanner bei schräg eingezogener Seite anhalten"
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will be stop when a paper have been skewed"
-msgstr ""
+msgstr "Scanner hält bei schräg eingelaufener Seite an"
#: backend/kvs40xx_opt.c:816
#, no-c-format
msgid "Crop actual image area"
-msgstr ""
+msgstr "Beschneide Bild"
#: backend/kvs40xx_opt.c:817
#, no-c-format
msgid "Scanner automatically detect image area and crop it"
-msgstr ""
+msgstr "Scanner erkennt und verwendet Vorlagengröße"
#: backend/kvs40xx_opt.c:827
#, no-c-format
msgid "It is right and left reversing"
-msgstr ""
+msgstr "Das ist rechter und linker Rücklauf"
#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
#, no-c-format
msgid "Addition of space in top position"
-msgstr ""
+msgstr "Leerbereich oben einfügen"
#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
#, no-c-format
msgid "Addition of space in bottom position"
-msgstr ""
+msgstr "Leerbereich unten einfügen"
#: backend/leo.c:110
#, no-c-format
@@ -4536,12 +4613,12 @@ msgstr "Diamant"
#: backend/leo.c:111
#, no-c-format
msgid "8x8 Coarse Fatting"
-msgstr ""
+msgstr "8x8 sehr grob"
#: backend/leo.c:112
#, no-c-format
msgid "8x8 Fine Fatting"
-msgstr ""
+msgstr "8x8 sehr fein"
#: backend/leo.c:113
#, no-c-format
@@ -4658,8 +4735,7 @@ msgstr "Glatt"
msgid "Low"
msgstr "Niedrig"
-#: backend/matsushita.c:215 backend/matsushita.c:230
-#: backend/matsushita.c:1296
+#: backend/matsushita.c:215 backend/matsushita.c:230 backend/matsushita.c:1296
#, no-c-format
msgid "Medium"
msgstr "Mittel"
@@ -4672,7 +4748,7 @@ msgstr "Hoch"
#: backend/matsushita.c:245
#, no-c-format
msgid "CRT"
-msgstr "Röhrenmonitor"
+msgstr "Monitor"
#: backend/matsushita.c:257
#, no-c-format
@@ -4717,13 +4793,13 @@ msgstr "Farbbalance"
#: backend/microtek2.h:607
#, no-c-format
msgid "Disable backtracking"
-msgstr "kein Backtracking"
+msgstr "Deaktiviere Rücklauf vom Scannkopf"
#: backend/microtek2.h:608
#, no-c-format
msgid "If checked the scanner does not perform backtracking"
msgstr ""
-"wenn aktiviert, erfolgt kein Rücklauf des Scankopfes während der "
+"Wenn aktiviert, erfolgt kein Rücklauf des Scankopfes während der "
"Datenübertragung"
#: backend/microtek2.h:612
@@ -4743,11 +4819,8 @@ msgstr "Software - Kalibrierung"
#: backend/microtek2.h:617
#, no-c-format
-msgid ""
-"If checked the color calibration before a scan is done by the backend"
-msgstr ""
-"einige Scanner benötigen eine Kalibrierung durch die Software, sonst "
-"entstehen senkrechte Streifen im Bild"
+msgid "If checked the color calibration before a scan is done by the backend"
+msgstr "Wenn aktiviert, wird die Farbkalibrierung durch den Treiber ausgeführt"
#: backend/microtek2.h:621
#, no-c-format
@@ -4758,9 +4831,8 @@ msgstr "Benutzung des LIGHTLID 35"
#, no-c-format
msgid "This option turns off the lamp of the flatbed during a scan"
msgstr ""
-"Bei der Benutzung des LIGHTLID 35 Durchlichtadapters wird während des "
-"Scans die Flachbett - Lampe ausgeschaltet um besseren Kontrast zu "
-"erreichen"
+"Bei der Benutzung des LIGHTLID 35 Durchlichtadapters wird während des Scans "
+"die Flachbett - Lampe ausgeschaltet um besseren Kontrast zu erreichen"
#: backend/microtek2.h:626 backend/snapscan-options.c:421
#, no-c-format
@@ -4790,11 +4862,11 @@ msgstr "Automatische schwarz/weiß - Schwelle"
#: backend/microtek2.h:635
#, 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 ""
-"Bei einem Strichzeichnungsscan versucht die Software einen optimalen "
-"Wert für die schwarz/weiß- Schwelle zu bestimmen"
+"Wenn aktiviert, versucht der Treiber einen optimalen Wert für den "
+"Schwellwert zu bestimmen."
#: backend/microtek2.h:641
#, no-c-format
@@ -4819,7 +4891,7 @@ msgstr "Gamma - Zahlenwert"
#: backend/microtek2.h:650
#, no-c-format
msgid "Selects a value for scalar gamma correction."
-msgstr "Gibt einen Gamma - Zahlenwert an"
+msgstr "Bestimmt den Wert für die Gamma - Korrektur."
#: backend/microtek2.h:654
#, no-c-format
@@ -4862,7 +4934,7 @@ msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
msgstr ""
"Wählt den Farbkanal; \"Master\" bedeutet, dass alle Farben beeinflusst "
-"werden"
+"werden."
#: backend/microtek2.h:674
#, no-c-format
@@ -4872,7 +4944,7 @@ msgstr "Mittelgrauwert"
#: backend/microtek2.h:675
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % gray\"."
-msgstr "Bestimmt, welcher Helligkeitswert als 50% Grau angenommen wird"
+msgstr "Bestimmt, welcher Helligkeitswert als 50% Grau angenommen wird."
#: backend/microtek2.h:679
#, no-c-format
@@ -4882,7 +4954,7 @@ msgstr "Mittelwert für Rot"
#: backend/microtek2.h:680
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % red\"."
-msgstr "Bestimmt, welcher Helligkeitswert als 50% Rot angenommen wird"
+msgstr "Bestimmt, welcher Helligkeitswert als 50% Rot angenommen wird."
#: backend/microtek2.h:684
#, no-c-format
@@ -4892,7 +4964,7 @@ msgstr "Mittelwert für Grün"
#: backend/microtek2.h:685
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % green\"."
-msgstr "Bestimmt, welcher Helligkeitswert als 50% Grün angenommen wird"
+msgstr "Bestimmt, welcher Helligkeitswert als 50% Grün angenommen wird."
#: backend/microtek2.h:689
#, no-c-format
@@ -4902,7 +4974,7 @@ msgstr "Mittelwert für Blau"
#: backend/microtek2.h:690
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % blue\"."
-msgstr "Bestimmt, welcher Helligkeitswert als 50% Blau angenommen wird"
+msgstr "Bestimmt, welcher Helligkeitswert als 50% Blau angenommen wird."
#: backend/microtek2.h:694
#, no-c-format
@@ -4912,7 +4984,7 @@ msgstr "Rot - Balance"
#: backend/microtek2.h:695
#, no-c-format
msgid "Balance factor for red. A value of 100% means no correction."
-msgstr "Farbbalance-Faktor für Rot: 100% bedeutet keine Farbkorrektur"
+msgstr "Farbkorrektur für Rot: 100% bedeutet keine Farbkorrektur."
#: backend/microtek2.h:699
#, no-c-format
@@ -4922,7 +4994,7 @@ msgstr "Grün - Balance"
#: backend/microtek2.h:700
#, no-c-format
msgid "Balance factor for green. A value of 100% means no correction."
-msgstr "Farbbalance-Faktor für Grün: 100% bedeutet keine Farbkorrektur"
+msgstr "Farbkorrektur für Grün: 100% bedeutet keine Farbkorrektur."
#: backend/microtek2.h:704
#, no-c-format
@@ -4932,7 +5004,7 @@ msgstr "Blau - Balance"
#: backend/microtek2.h:705
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
-msgstr "Farbbalance-Faktor für Blau: 100% bedeutet keine Farbkorrektur"
+msgstr "Farbkorrektur für Blau: 100% bedeutet keine Farbkorrektur."
#: backend/microtek2.h:709
#, no-c-format
@@ -4942,7 +5014,7 @@ msgstr "Standard - Balance"
#: backend/microtek2.h:710
#, no-c-format
msgid "Sets the color balance values to the firmware provided values."
-msgstr "Setzt die Farbbalance auf die vom Hersteller vorgegebenen Werte"
+msgstr "Setzt die Farbkorrektur auf die vom Hersteller vorgegebenen Werte."
#: backend/mustek.c:149
#, no-c-format
@@ -4957,7 +5029,7 @@ msgstr "Langsam"
#: backend/mustek.c:150
#, no-c-format
msgid "Faster"
-msgstr "Schnell"
+msgstr "Schneller"
#: backend/mustek.c:150
#, no-c-format
@@ -5032,17 +5104,17 @@ msgstr "8x8 benutzerdefiniert"
#: backend/mustek.c:182
#, no-c-format
msgid "6x6 custom"
-msgstr "6x6 benutzerdefiniert"
+msgstr "6x6 Benutzerdefiniert"
#: backend/mustek.c:183
#, no-c-format
msgid "5x5 custom"
-msgstr "5x5 benutzerdefiniert"
+msgstr "5x5 Benutzerdefiniert"
#: backend/mustek.c:183
#, no-c-format
msgid "4x4 custom"
-msgstr "4x4 benutzerdefiniert"
+msgstr "4x4 Benutzerdefiniert"
#: backend/mustek.c:184
#, no-c-format
@@ -5054,112 +5126,106 @@ msgstr "3x3 benutzerdefiniert"
msgid "2x2 custom"
msgstr "2x2 benutzerdefiniert"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Schneller Graumodus"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Scanne im schnellen Graumodus (geringere Bildqualität)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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 ""
"Legt fest, dass alle Vorschau-Scans im schnellsten Modus (mit geringer "
-"Qualität) durchgeführt werden. Das kann ein Schwarzweißmodus oder ein "
-"Modus mit niedriger Auflösung sein."
+"Qualität) durchgeführt werden. Das kann ein Schwarzweißmodus oder ein Modus "
+"mit niedriger Auflösung sein."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lampenausschaltzeit (Minuten)."
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
"Legt die Zeit (in Minuten) fest, nach der die Lampe ausgeschaltet wird."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Schalte die Lampe aus"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Schaltet die Lampe sofort aus."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Helligkeit des Rotwerts"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
-msgstr ""
-"Stellt die Helligkeit der roten Komponente des gescannten Bildes ein."
+msgstr "Stellt die Helligkeit der roten Komponente des gescannten Bildes ein."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Helligkeit des Grünwerts"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
-msgstr ""
-"Stellt die Helligkeit der grünen Komponente des gescannten Bildes ein."
+msgstr "Stellt die Helligkeit der grünen Komponente des gescannten Bildes ein."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Helligkeit des Blauwerts"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
-msgstr ""
-"Stellt die Helligkeit der blauen Komponente des gescannten Bildes ein."
+msgstr "Stellt die Helligkeit der blauen Komponente des gescannten Bildes ein."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast der grünen Komponente"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
-msgstr ""
-"Stellt den Kontrast der roten Komponente des gescannten Bildes ein."
+msgstr "Stellt den Kontrast der roten Komponente des gescannten Bildes ein."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast der grünen Komponente"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
-msgstr ""
-"Stellt den Kontrast der grünen Komponente des gescannten Bildes ein."
+msgstr "Stellt den Kontrast der grünen Komponente des gescannten Bildes ein."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast der blauen Komponente"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
-msgstr ""
-"Stellt den Kontrast der blauen Komponente des gescannten Bildes ein."
+msgstr "Stellt den Kontrast der blauen Komponente des gescannten Bildes ein."
#: backend/mustek_usb2.c:105
#, no-c-format
@@ -5184,7 +5250,7 @@ msgstr "Grau 8"
#: backend/mustek_usb2.c:119
#, no-c-format
msgid "Reflective"
-msgstr "Aufsicht"
+msgstr "Spiegelung"
#: backend/mustek_usb2.c:120
#, no-c-format
@@ -5194,28 +5260,28 @@ msgstr "Positiv"
#: backend/mustek_usb2.c:421
#, 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 ""
-"Warte solange, bis die Helligkeit der Lampe konstant ist anstatt einfach "
-"40 Sekunden zu warten."
+"Warte solange, bis die Helligkeit der Lampe konstant ist anstatt einfach 40 "
+"Sekunden zu warten."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
msgstr "Negativfilm Farbe"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
msgstr "Negativfilm Graustufen"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr "48 Bit Farbe"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr "16 Bit Graustufen"
@@ -5223,17 +5289,17 @@ msgstr "16 Bit Graustufen"
#: backend/pixma_sane_options.c:84
#, 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 ""
-"Legt die Scanquelle fest (wie z.B. Dokumenteneinzug). Die Scanquelle "
-"muss vor Scanmodus und Scanauflösung ausgewählt werden. Setzt die "
-"Einstellungen für Scanmodus und Scanauflösung zurück."
+"Legt die Scanquelle fest (wie z.B. Dokumenteneinzug). Die Scanquelle muss "
+"vor Scanmodus und Scanauflösung ausgewählt werden. Setzt die Einstellungen "
+"für Scanmodus und Scanauflösung zurück."
#: backend/pixma_sane_options.c:98
#, no-c-format
msgid "Button-controlled scan"
-msgstr "Scanen auf Knopfdruck"
+msgstr "Scannen auf Tastendruck"
#: backend/pixma_sane_options.c:99
#, no-c-format
@@ -5249,17 +5315,17 @@ msgstr ""
#: backend/pixma_sane_options.c:232
#, no-c-format
msgid "Update button state"
-msgstr "Knopfstatus aktualisieren"
+msgstr "Tastenstatus aktualisieren"
#: backend/pixma_sane_options.c:244
#, no-c-format
msgid "Button 1"
-msgstr "Knopf 1"
+msgstr "Taste 1"
#: backend/pixma_sane_options.c:258
#, no-c-format
msgid "Button 2"
-msgstr "Knopf 2"
+msgstr "Taste 2"
#: backend/pixma_sane_options.c:272
#, no-c-format
@@ -5274,7 +5340,7 @@ msgstr "Scanziel"
#: backend/pixma_sane_options.c:348
#, no-c-format
msgid "ADF Waiting Time"
-msgstr "ADF Wartezeit"
+msgstr "Wartezeit Dokumenteneinzug"
#: backend/pixma_sane_options.c:349
#, no-c-format
@@ -5282,8 +5348,8 @@ msgid ""
"When set, the scanner searches the waiting time in seconds for a new "
"document inserted into the automatic document feeder."
msgstr ""
-"Der Scanner sucht während der Wartezeit (in Sekunden) nach einem "
-"Dokument, welches in den Scanschacht eingelegt wird."
+"Der Scanner sucht während der Wartezeit (in Sekunden) nach einem Dokument, "
+"welches in den Scanschacht eingelegt wird."
#: backend/plustek.c:235 backend/plustek_pp.c:204 backend/u12.c:156
#, no-c-format
@@ -5368,7 +5434,7 @@ msgstr "Analog Frontend"
#: backend/plustek.c:1002
#, no-c-format
msgid "Red gain value of the AFE"
-msgstr "Verstärkung roter Kanal des AD-Wandlers."
+msgstr "Verstärkung roter Kanal des AD-Wandlers"
#: backend/plustek.c:1009 backend/umax_pp.c:792
#, no-c-format
@@ -5378,57 +5444,57 @@ msgstr "Offset roter Kanal"
#: backend/plustek.c:1010
#, no-c-format
msgid "Red offset value of the AFE"
-msgstr "Offset roter Kanal des AD-Wandlers."
+msgstr "Offset roter Kanal des AD-Wandlers"
#: backend/plustek.c:1018
#, no-c-format
msgid "Green gain value of the AFE"
-msgstr "Verstärkung grüner Kanal des AD-Wandlers."
+msgstr "Verstärkung grüner Kanal des AD-Wandlers"
#: backend/plustek.c:1026
#, no-c-format
msgid "Green offset value of the AFE"
-msgstr "Offset grüner Kanal des AD-Wandlers."
+msgstr "Offset grüner Kanal des AD-Wandlers"
#: backend/plustek.c:1034
#, no-c-format
msgid "Blue gain value of the AFE"
-msgstr "Verstärkung blauer Kanal des AD-Wandlers."
+msgstr "Verstärkung blauer Kanal des AD-Wandlers"
#: backend/plustek.c:1042
#, no-c-format
msgid "Blue offset value of the AFE"
-msgstr "Offset blauer Kanal des AD-Wandlers."
+msgstr "Offset blauer Kanal des AD-Wandlers"
#: backend/plustek.c:1049
#, no-c-format
msgid "Red lamp off"
-msgstr "Ausschaltzeitpunkt rote Lampe"
+msgstr "Rote Lampe aus"
#: backend/plustek.c:1050
#, no-c-format
msgid "Defines red lamp off parameter"
-msgstr "Definiert den Ausschaltzeitpunkt der roten Lampe."
+msgstr "Definiert den Ausschaltzeitpunkt der roten Lampe"
#: backend/plustek.c:1057
#, no-c-format
msgid "Green lamp off"
-msgstr "Ausschaltzeitpunkt grüne Lampe"
+msgstr "Grüne Lampe aus"
#: backend/plustek.c:1058
#, no-c-format
msgid "Defines green lamp off parameter"
-msgstr "Definiert den Ausschaltzeitpunkt der grünen Lampe."
+msgstr "Definiert den Ausschaltzeitpunkt der grünen Lampe"
#: backend/plustek.c:1065
#, no-c-format
msgid "Blue lamp off"
-msgstr "Ausschaltzeitpunkt blaue Lampe"
+msgstr "Blaue Lampe aus"
#: backend/plustek.c:1066
#, no-c-format
msgid "Defines blue lamp off parameter"
-msgstr "Definiert den Ausschaltzeitpunkt der blauen Lampe."
+msgstr "Definiert den Ausschaltzeitpunkt der blauen Lampe"
#: backend/plustek.c:1096
#, no-c-format
@@ -5438,7 +5504,7 @@ msgstr "Diese Option spiegelt den Zustand der Scannerknöpfe wider."
#: backend/plustek_pp.c:197
#, no-c-format
msgid "Color36"
-msgstr "Farbe36"
+msgstr "Farbe 36"
#: backend/plustek_pp.c:211
#, no-c-format
@@ -5483,11 +5549,11 @@ msgstr "Three-Pass Simulation"
#: backend/pnm.c:255
#, 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 ""
-"Simuliere einen Three-Pass Scanner, indem hintereinander je ein Frame "
-"für jede Grundfarbe übertragen wird. Die Reihenfolge ist grün-blau-rot."
+"Simuliere einen Three-Pass Scanner, indem hintereinander je ein Frame für "
+"jede Grundfarbe übertragen wird. Die Reihenfolge ist grün-blau-rot."
#: backend/pnm.c:267
#, no-c-format
@@ -5497,19 +5563,18 @@ msgstr "Handscanner Simulation"
#: backend/pnm.c:268
#, 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 ""
-"Simuliere einen Handscanner. Bei Handscannern steht meistens die "
-"Bildhöhe nicht von vornherein fest. Stattdessen geben sie eine Höhe von "
-"-1 zurück. Mit dieser Option kann man prüfen, ob das Frontend damit "
-"richtig umgehen kann."
+"Simuliere einen Handscanner. Bei Handscannern steht meistens die Bildhöhe "
+"nicht von vornherein fest. Stattdessen geben sie eine Höhe von -1 zurück. "
+"Mit dieser Option kann man prüfen, ob das Frontend damit richtig umgehen "
+"kann."
#: backend/pnm.c:283
#, no-c-format
-msgid ""
-"Set default values for enhancement controls (brightness & contrast)."
+msgid "Set default values for enhancement controls (brightness & contrast)."
msgstr ""
"Stellt die Farbverbesserungseinstellungen (Helligkeit und Kontrast) auf "
"Defaultwerte."
@@ -5522,7 +5587,7 @@ msgstr "Nur-Lese-Testoption"
#: backend/pnm.c:296
#, no-c-format
msgid "Let's see whether frontends can treat this right"
-msgstr "Mal sehen, ob das Frontend damit umgehen kann."
+msgstr "Mal sehen, ob das Frontend damit umgehen kann"
#: backend/pnm.c:307
#, no-c-format
@@ -5555,8 +5620,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_EOF after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_EOF zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_EOF zurückzuliefern."
#: backend/pnm.c:416
#, no-c-format
@@ -5569,8 +5634,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_JAMMED after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_JAMMED zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_JAMMED zurückzuliefern."
#: backend/pnm.c:430
#, no-c-format
@@ -5583,8 +5648,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_NO_DOCS zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_NO_DOCS zurückzuliefern."
#: backend/pnm.c:443
#, no-c-format
@@ -5597,8 +5662,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_COVER_OPEN zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_COVER_OPEN zurückzuliefern."
#: backend/pnm.c:456
#, no-c-format
@@ -5611,8 +5676,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_IO_ERROR zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_IO_ERROR zurückzuliefern."
#: backend/pnm.c:469
#, no-c-format
@@ -5625,8 +5690,8 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_MEM after "
"sane_read() has been called."
msgstr ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_NO_MEM zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_NO_MEM zurückzuliefern."
#: backend/pnm.c:483
#, no-c-format
@@ -5636,16 +5701,16 @@ msgstr "Liefere SANE_STATUS_ACCESS_DENIED zurück"
#: backend/pnm.c:484
#, 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 ""
-"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den "
-"Statuscode SANE_STATUS_ACCESS_DENIED zurückzuliefern."
+"Zwinge das Backend dazu, nach einem Aufruf von sane_read() den Statuscode "
+"SANE_STATUS_ACCESS_DENIED zurückzuliefern."
#: backend/rts8891.c:2809
#, no-c-format
msgid "This option reflects the status of a scanner button."
-msgstr "Diese Option zeigt den Zustand eines Scannerknopfes an."
+msgstr "Diese Option zeigt den Zustand einer Scannertaste an."
#: backend/rts8891.c:2840 backend/umax.c:5795 backend/umax_pp.c:639
#, no-c-format
@@ -5685,7 +5750,7 @@ msgstr "Schwellenwert für den Strichzeichnungsmodus"
#: backend/snapscan-options.c:88
#, no-c-format
msgid "Document Feeder"
-msgstr "Automatischer Dokumenteinzug"
+msgstr "Dokumenteneinzug"
#: backend/snapscan-options.c:92
#, no-c-format
@@ -5721,33 +5786,33 @@ msgstr "DispersedDot16x16"
#, 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 ""
"Anzahl der Zeilen, die pro SCSI Lesevorgang angefordert werden. Eine "
-"Änderung dieses Parameters erlaubt die Feineinstellung der "
-"Geschwindigkeit, mit der Daten vom Scanner gelesen werden. Wenn die "
-"Geschwindigkeit zu niedrig ist, muss der Scanner in regelmäßigen "
-"Abständen mitten im Scanvorgang anhalten. Falls sie zu groß ist, "
-"reagiert die Scan-Anwendung möglicherweise nicht mehr auf Eingaben und "
-"das System kann unbenutzbar werden."
+"Änderung dieses Parameters erlaubt die Feineinstellung der Geschwindigkeit, "
+"mit der Daten vom Scanner gelesen werden. Wenn die Geschwindigkeit zu "
+"niedrig ist, muss der Scanner in regelmäßigen Abständen mitten im "
+"Scanvorgang anhalten. Falls sie zu groß ist, reagiert die Scan-Anwendung "
+"möglicherweise nicht mehr auf Eingaben und das System kann unbenutzbar "
+"werden."
#: backend/snapscan-options.c:111
#, no-c-format
msgid "Frame number of media holder that should be scanned."
-msgstr ""
+msgstr "Rahmennummer vom zu scannenden Rahmenhalter."
#: backend/snapscan-options.c:114
#, no-c-format
msgid "Use manual or automatic selection of focus point."
-msgstr ""
+msgstr "Manuellen oder automatischen Fokuskunkt verwenden."
#: backend/snapscan-options.c:117
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point for scanning."
-msgstr "Auswurf des Dokuments nach dem Scannen"
+msgstr "Fokuspunkt fürs Scannen."
#: backend/snapscan-options.c:482
#, no-c-format
@@ -5771,39 +5836,37 @@ msgstr "Vordefinierte Einstellungen"
#: 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 ""
-"Stellt Standardgrößen für Fotographien, bedruckte Seiten etc. zur "
-"Verfügung."
+"Stellt Standardgrößen für Fotographien, bedruckte Seiten etc. zur Verfügung."
#: backend/snapscan-options.c:884
#, no-c-format
msgid "Frame"
-msgstr ""
+msgstr "Rahmen"
#: backend/snapscan-options.c:885
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Frame to be scanned"
-msgstr "Flachbettscanner"
+msgstr "zu scannender Rahmen"
#: backend/snapscan-options.c:897
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus-mode"
msgstr "Fokus"
#: backend/snapscan-options.c:898
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto or manual focus"
-msgstr "Automatischer Fokus"
+msgstr "Automatischer oder manueller Fokus"
#: backend/snapscan-options.c:911
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus-point"
msgstr "Fokus Position"
#: backend/snapscan-options.c:912
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point"
msgstr "Fokus Position"
@@ -5873,8 +5936,8 @@ msgid ""
"This is the very long third entry. Maybe the frontend has an idea how to "
"display it"
msgstr ""
-"Dies ist der sehr lange dritte Eintrag. Vielleicht weiß das Frontend, "
-"wie man ihn darstellen kann."
+"Dies ist der sehr lange dritte Eintrag; vielleicht weiß das Frontend, wie "
+"man ihn darstellen kann"
#: backend/test.c:348
#, no-c-format
@@ -5885,25 +5948,24 @@ msgstr "Handscanner-Simulation"
#, 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 ""
-"Simuliere einen Handscanner. Bei Handscannern steht meistens die "
-"Bildhöhe nicht von vornherein fest. Stattdessen geben sie eine Höhe von "
-"-1 zurück. Mit dieser Option kann man prüfen, ob das Frontend damit "
-"richtig umgehen kann."
+"Simuliere einen Handscanner. Bei Handscannern steht meistens die Bildhöhe "
+"nicht von vornherein fest. Stattdessen geben sie eine Höhe von -1 zurück. "
+"Mit dieser Option kann man prüfen, ob das Frontend damit richtig umgehen "
+"kann."
#: backend/test.c:366
#, no-c-format
msgid "Three-pass simulation"
-msgstr "Three-Pass-Simulation"
+msgstr "Three-Pass Simulation"
#: backend/test.c:367
#, 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 ""
"Simuliere einen Three-Pass-Scanner. Im Farbmodus werden drei Frames "
"übertragen."
@@ -5921,10 +5983,10 @@ msgstr "Legt die Reihenfolge der Frames im Three-Pass-Modus fest."
#: backend/test.c:416
#, 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 ""
-"Falls der automatische Vorlageneinzug ausgewählt ist, meldet der Einzug "
+"Falls der automatische Dokumenteneinzug ausgewählt ist, meldet der Einzug "
"\"leer\" nach 10 Scans."
#: backend/test.c:431
@@ -5944,8 +6006,7 @@ 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 ""
"Wählt die Art des Testbildes aus. Verfügbare Testbilder:\n"
"Komplett schwarz: füllt das ganze Bild schwarz.\n"
@@ -5958,14 +6019,14 @@ msgstr ""
#: backend/test.c:467
#, no-c-format
msgid "Invert endianness"
-msgstr "Kehre Endianness um"
+msgstr "Endianness umkehren"
#: backend/test.c:468
#, 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 ""
"Tausche das untere und das obere Byte der Bilddaten im 16-Bit-Modus aus. "
"Diese Option kann dazu benutzt werden, den 16-Bit-Modus der Frontends zu "
@@ -5981,8 +6042,8 @@ msgstr "Lesebegrenzung"
#, no-c-format
msgid "Limit the amount of data transferred with each call to sane_read()."
msgstr ""
-"Begrenzt die Menge an Daten, die mit jedem Aufruf von sane_read() "
-"übertragen wird."
+"Begrenzt die Menge an Daten, die mit jedem Aufruf von sane_read() übertragen "
+"wird."
#: backend/test.c:498
#, no-c-format
@@ -5991,8 +6052,7 @@ msgstr "Größe der Lesebegrenzung"
#: backend/test.c:499
#, 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 ""
"Die (maximale) Menge and Daten, die bei jedem Aufruf von sane_read() "
"übertragen wird."
@@ -6010,15 +6070,15 @@ msgstr "Verzögere die Datenübertragung durch die Pipe."
#: backend/test.c:527
#, no-c-format
msgid "Duration of read-delay"
-msgstr "Dauer der Leseverzögerung."
+msgstr "Dauer der Leseverzögerung"
#: backend/test.c:528
#, no-c-format
msgid ""
"How long to wait after transferring each buffer of data through the pipe."
msgstr ""
-"Legt fest, wie lange nach der Übertragung eines Datenpuffers durch die "
-"Pipe gewartet wird."
+"Legt fest, wie lange nach der Übertragung eines Datenpuffers durch die Pipe "
+"gewartet wird."
#: backend/test.c:543
#, no-c-format
@@ -6028,9 +6088,9 @@ msgstr "Rückgabewert von sane_read"
#: backend/test.c:545
#, 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 ""
"Legt den Rückgabewert von sane_read() fest. \"Default\" ist die normale "
"Einstellung für's Scannen. Alle anderen Rückgabewerte dienen dazu, das "
@@ -6069,8 +6129,8 @@ msgstr "Nichtblockierendes IO"
#, no-c-format
msgid "Use non-blocking IO for sane_read() if supported by the frontend."
msgstr ""
-"Verwende nichtblockierndes IO für sane_read(), wenn das durch das "
-"Frontend unterstützt wird."
+"Verwende nichtblockierndes IO für sane_read(), wenn das durch das Frontend "
+"unterstützt wird."
#: backend/test.c:605
#, no-c-format
@@ -6080,11 +6140,10 @@ msgstr "Biete Select-Dateideskriptor an"
#: backend/test.c:606
#, 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 ""
-"Biete einen Select-Dateideskriptor an, damit das Frontend erkennen kann, "
-"ob sane_read() Daten zurückliefern würde."
+"Biete einen Select-Dateideskriptor an, damit das Frontend erkennen kann, ob "
+"sane_read() Daten zurückliefern würde."
#: backend/test.c:619
#, no-c-format
@@ -6094,8 +6153,8 @@ msgstr "Test-Optionen einschalten"
#: backend/test.c:620
#, 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 ""
"Schalte verschiedene Testoptionen ein. Mit diesen Optionen kann man die "
"Fähigkeit des Frontends feststellen, die verschiedenen Typen von SANE-"
@@ -6124,12 +6183,12 @@ msgstr "(1/6) Bool soft select soft detect"
#: backend/test.c:727
#, 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) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select"
-"\" und \"soft detect\" (und \"advanced\") hat. Also eine ganz normale "
-"Bool-Option."
+"(1/6) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select\" "
+"und \"soft detect\" (und \"advanced\") hat. Also eine ganz normale Bool-"
+"Option."
#: backend/test.c:743
#, no-c-format
@@ -6139,14 +6198,14 @@ msgstr "(2/6) Bool hard select soft detect"
#: backend/test.c:745
#, 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) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"hard select"
-"\" und \"soft detect\" (und \"advanced\") hat. Das bedeutet, dass die "
-"Option nicht vom Frontend geändert werden kann, sondern vom Benutzer (z. "
-"B. indem er einen Knopf am Gerät drückt)."
+"(2/6) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"hard select\" "
+"und \"soft detect\" (und \"advanced\") hat. Das bedeutet, dass die Option "
+"nicht vom Frontend geändert werden kann, sondern vom Benutzer (z. B. indem "
+"er eine Taste am Gerät drückt)."
#: backend/test.c:762
#, no-c-format
@@ -6157,13 +6216,12 @@ msgstr "(3/6) Bool hard select"
#, 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) Dies is eine Bool-Testoption, welche die Fähigkieten \"hard select"
-"\" (und \"advanced\") hat. Das bedeutet, dass die Option "
-"nicht vom Frontend geändert "
-"werden kann, sondern vom Benutzer (z. B. indem er einen Knopf am "
+"\" (und \"advanced\") hat. Das bedeutet, dass die Option nicht vom Frontend "
+"geändert werden kann, sondern vom Benutzer (z. B. indem er eine Taste am "
"Gerät drückt). Außerdem kann sie nicht vom Frontend gelesen werden."
#: backend/test.c:781
@@ -6188,11 +6246,11 @@ msgstr "(5/6) Bool soft select soft detect emulated"
#: backend/test.c:799
#, 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) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select"
-"\", \"soft detect\", und \"emulated\" (und \"advanced\") hat."
+"(5/6) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select\", "
+"\"soft detect\", und \"emulated\" (und \"advanced\") hat."
#: backend/test.c:815
#, no-c-format
@@ -6202,13 +6260,12 @@ msgstr "(6/6) Bool soft select soft detect auto"
#: backend/test.c:816
#, 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) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select"
-"\", \"soft detect\", und \"automatic\" (und \"advanced\") hat. Diese "
-"Option kann vom Backend automatisch gesetzt werden."
+"(6/6) Dies ist eine Bool-Testoption, welche die Fähigkeiten \"soft select\", "
+"\"soft detect\", und \"automatic\" (und \"advanced\") hat. Diese Option kann "
+"vom Backend automatisch gesetzt werden."
#: backend/test.c:833
#, no-c-format
@@ -6233,8 +6290,8 @@ msgstr "(2/6) Int constraint range"
#: backend/test.c:863
#, 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) Int-Testoption mit der Einheit \"Pixel\" und einer "
"Bereichsbeschränkung. Das Minimum ist 4, das Maximum 192, und die "
@@ -6260,11 +6317,9 @@ msgstr "(4/6) Int array"
#: backend/test.c:896
#, 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) Int-Testoption mit der Einheit \"mm\" und einem Feld ohne "
-"Beschränkung."
+"(4/6) Int-Testoption mit der Einheit \"mm\" und einem Feld ohne Beschränkung."
#: backend/test.c:911
#, no-c-format
@@ -6289,11 +6344,11 @@ msgstr "(6/6) Int array constraint word list"
#: backend/test.c:930
#, 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) Int-Testoption mit der Einheit \"Prozent\" und einem Feld mit "
-"einer Wort-Beschränkung."
+"(6/6) Int-Testoption mit der Einheit \"Prozent\" und einem Feld mit einer "
+"Wort-Beschränkung."
#: backend/test.c:946
#, no-c-format
@@ -6322,8 +6377,8 @@ msgid ""
"Minimum is -42.17, maximum 32767.9999, and quant is 2.0."
msgstr ""
"(2/3) Fixed-Testoption mit der Einheit \"Mikrosekunde\" und einer "
-"Bereichsbeschränkung. Das Minimum ist -42.17, das Maximum 32767.9999, "
-"und die Schrittweite ist 2.0."
+"Bereichsbeschränkung. Das Minimum ist -42.17, das Maximum 32767.9999, und "
+"die Schrittweite ist 2.0."
#: backend/test.c:992
#, no-c-format
@@ -6334,8 +6389,7 @@ msgstr "(3/3) Fixed constraint word list"
#, no-c-format
msgid "(3/3) Fixed test option with no unit and constraint word list set."
msgstr ""
-"(3/3) Fixed-Testoption ohne Einheit und mit einer Wortlisten-"
-"Beschränkung."
+"(3/3) Fixed-Testoption ohne Einheit und mit einer Wortlisten-Beschränkung."
#: backend/test.c:1008
#, no-c-format
@@ -6384,12 +6438,12 @@ msgstr "Button-Testoptionen"
#: backend/test.c:1093
#, no-c-format
msgid "(1/1) Button"
-msgstr "(1/1) Button"
+msgstr "(1/1) Taste"
#: backend/test.c:1094
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
-msgstr "(1/1) Button-Testoption. Gibt etwas Text aus..."
+msgstr "(1/1) Tasten-Testoption. Gibt etwas Text aus..."
#: backend/u12.c:149
#, no-c-format
diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo
deleted file mode 100644
index 0711598..0000000
--- a/po/en@boldquot.gmo
+++ /dev/null
Binary files differ
diff --git a/po/en@boldquot.header b/po/en@boldquot.header
deleted file mode 100644
index fedb6a0..0000000
--- a/po/en@boldquot.header
+++ /dev/null
@@ -1,25 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
-# This catalog furthermore displays the text between the quotation marks in
-# bold face, assuming the VT100/XTerm escape sequences.
-#
diff --git a/po/en@quot.gmo b/po/en@quot.gmo
deleted file mode 100644
index b9bccd3..0000000
--- a/po/en@quot.gmo
+++ /dev/null
Binary files differ
diff --git a/po/en@quot.header b/po/en@quot.header
deleted file mode 100644
index a9647fc..0000000
--- a/po/en@quot.header
+++ /dev/null
@@ -1,22 +0,0 @@
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
deleted file mode 100644
index e6b77c1..0000000
--- a/po/en_GB.gmo
+++ /dev/null
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index f683493..28695ac 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -5,16 +5,16 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2009-04-25 00:19+0100\n"
-"Last-Translator: Andrew Coles <andrew_coles@yahoo.co.uk>\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2019-07-26 09:45-0700\n"
+"Last-Translator: Ralph Little <littlesincanada@yahoo.co.uk>\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: Lokalize 0.3\n"
+"X-Generator: Poedit 2.0.6\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: include/sane/saneopts.h:154
@@ -25,39 +25,39 @@ msgstr "Number of options"
#: include/sane/saneopts.h:156
#, no-c-format
msgid "Standard"
-msgstr ""
+msgstr "Standard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometry"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Enhancement"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -68,7 +68,7 @@ msgstr "Advanced"
#: include/sane/saneopts.h:160
#, no-c-format
msgid "Sensors"
-msgstr ""
+msgstr "Sensors"
#: include/sane/saneopts.h:162
#, no-c-format
@@ -85,7 +85,7 @@ msgstr "Force monochrome preview"
msgid "Bit depth"
msgstr "Bit depth"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -126,7 +126,7 @@ msgstr "Bottom-right x"
msgid "Bottom-right y"
msgstr "Bottom-right y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -145,12 +145,12 @@ msgstr "Y-resolution"
#: include/sane/saneopts.h:176
#, no-c-format
msgid "Page width"
-msgstr ""
+msgstr "Page width"
#: include/sane/saneopts.h:177
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Page height"
-msgstr "Highlight"
+msgstr "Page height"
#: include/sane/saneopts.h:178
#, no-c-format
@@ -282,7 +282,7 @@ msgstr "Filename"
msgid "Halftone pattern size"
msgstr "Halftone pattern size"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Halftone pattern"
@@ -294,8 +294,8 @@ msgstr "Bind X and Y resolution"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negative"
@@ -345,10 +345,11 @@ msgstr "Analogue gamma blue"
msgid "Bind analog gamma"
msgstr "Bind analogue gamma"
+# Warm->Warm up?
#: include/sane/saneopts.h:216
#, no-c-format
msgid "Warmup lamp"
-msgstr "Warmup lamp"
+msgstr "Warm up lamp"
#: include/sane/saneopts.h:217
#, no-c-format
@@ -425,29 +426,29 @@ msgstr ""
"supports."
#: include/sane/saneopts.h:248
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Source, mode and resolution options"
-msgstr "Short resolution list"
+msgstr "Source, mode and resolution options"
#: include/sane/saneopts.h:249
#, no-c-format
msgid "Scan area and media size options"
-msgstr ""
+msgstr "Scan area and media size options"
#: include/sane/saneopts.h:250
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Image modification options"
-msgstr "Number of options"
+msgstr "Image modification options"
#: include/sane/saneopts.h:251
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Hardware specific options"
-msgstr "Hardware resolution"
+msgstr "Hardware specific options"
#: include/sane/saneopts.h:252
#, no-c-format
msgid "Scanner sensors and buttons"
-msgstr ""
+msgstr "Scanner sensors and buttons"
#: include/sane/saneopts.h:255
#, no-c-format
@@ -535,11 +536,13 @@ msgid ""
"Specifies the width of the media. Required for automatic centering of "
"sheet-fed scans."
msgstr ""
+"Specifies the width of the media. Required for automatic centring of "
+"sheet-fed scans."
#: include/sane/saneopts.h:305
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Specifies the height of the media."
-msgstr "Sets the resolution of the scanned image."
+msgstr "Specifies the height of the media."
#: include/sane/saneopts.h:308
#, no-c-format
@@ -621,7 +624,7 @@ msgstr "Selects what green radiance level should be considered \"white\"."
#: include/sane/saneopts.h:351
#, no-c-format
msgid "Selects what blue radiance level should be considered \"white\"."
-msgstr " "
+msgstr "Selects what blue radiance level should be considered \"white\"."
#: include/sane/saneopts.h:356
#, no-c-format
@@ -725,27 +728,27 @@ msgstr "Select minimum-brightness to get a white point"
#: include/sane/saneopts.h:405
#, no-c-format
msgid "Analog gamma-correction"
-msgstr "Analog gamma-correction"
+msgstr "Analogue gamma-correction"
#: include/sane/saneopts.h:407
#, no-c-format
msgid "Analog gamma-correction for red"
-msgstr "Analog gamma-correction for red"
+msgstr "Analogue gamma-correction for red"
#: include/sane/saneopts.h:409
#, no-c-format
msgid "Analog gamma-correction for green"
-msgstr "Analog gamma-correction for green"
+msgstr "Analogue gamma-correction for green"
#: include/sane/saneopts.h:411
#, no-c-format
msgid "Analog gamma-correction for blue"
-msgstr "Analog gamma-correction for blue"
+msgstr "Analogue gamma-correction for blue"
#: include/sane/saneopts.h:415
#, no-c-format
msgid "Warmup lamp before scanning"
-msgstr "Warmup lamp before scanning"
+msgstr "Warm up lamp before scanning"
#: include/sane/saneopts.h:417
#, no-c-format
@@ -813,44 +816,44 @@ msgid "Turn off lamp when program exits"
msgstr "Turn off lamp when program exits"
#: include/sane/saneopts.h:444
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scan button"
-msgstr "Scan resolution"
+msgstr "Scan button"
#: include/sane/saneopts.h:445
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Email button"
-msgstr "Wait for button"
+msgstr "Email button"
#: include/sane/saneopts.h:446
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fax button"
-msgstr "Wait for button"
+msgstr "Fax button"
#: include/sane/saneopts.h:447
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Copy button"
-msgstr "Wait for button"
+msgstr "Copy button"
#: include/sane/saneopts.h:448
#, no-c-format
msgid "PDF button"
-msgstr ""
+msgstr "PDF button"
#: include/sane/saneopts.h:449
#, no-c-format
msgid "Cancel button"
-msgstr ""
+msgstr "Cancel button"
#: include/sane/saneopts.h:450
#, no-c-format
msgid "Page loaded"
-msgstr ""
+msgstr "Page loaded"
#: include/sane/saneopts.h:451
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cover open"
-msgstr "ADF cover open"
+msgstr "Cover open"
#: include/sane/saneopts.h:454
#, no-c-format
@@ -885,72 +888,72 @@ msgstr "Lineart"
#: backend/sane_strstatus.c:59
#, no-c-format
msgid "Success"
-msgstr ""
+msgstr "Success"
#: backend/sane_strstatus.c:62
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Operation not supported"
-msgstr "Halftoning Unsupported"
+msgstr "Operation not supported"
#: backend/sane_strstatus.c:65
#, no-c-format
msgid "Operation was cancelled"
-msgstr ""
+msgstr "Operation was cancelled"
#: backend/sane_strstatus.c:68
#, no-c-format
msgid "Device busy"
-msgstr ""
+msgstr "Device busy"
#: backend/sane_strstatus.c:71
#, no-c-format
msgid "Invalid argument"
-msgstr ""
+msgstr "Invalid argument"
#: backend/sane_strstatus.c:74
#, no-c-format
msgid "End of file reached"
-msgstr ""
+msgstr "End of file reached"
#: backend/sane_strstatus.c:77
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document feeder jammed"
-msgstr "Document feeder extras"
+msgstr "Document feeder jammed"
#: backend/sane_strstatus.c:80
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document feeder out of documents"
-msgstr "Document feeder extras"
+msgstr "Document feeder out of documents"
#: backend/sane_strstatus.c:83
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scanner cover is open"
-msgstr "ADF cover open"
+msgstr "Scanner cover is open"
#: backend/sane_strstatus.c:86
#, no-c-format
msgid "Error during device I/O"
-msgstr ""
+msgstr "Error during device I/O"
#: backend/sane_strstatus.c:89
#, no-c-format
msgid "Out of memory"
-msgstr ""
+msgstr "Out of memory"
#: backend/sane_strstatus.c:92
#, no-c-format
msgid "Access to resource has been denied"
-msgstr ""
+msgstr "Access to resource has been denied"
#: backend/sane_strstatus.c:96
#, no-c-format
msgid "Lamp not ready, please retry"
-msgstr ""
+msgstr "Lamp not ready, please retry"
#: backend/sane_strstatus.c:101
#, no-c-format
msgid "Scanner mechanism locked for transport"
-msgstr ""
+msgstr "Scanner mechanism locked for transport"
#: backend/artec_eplus48u.c:2874 backend/pnm.c:282
#, no-c-format
@@ -962,7 +965,7 @@ msgstr "Defaults"
msgid "Set default values for enhancement controls."
msgstr "Set default values for enhancement controls."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibration"
@@ -986,6 +989,7 @@ msgstr ""
msgid "Only perform shading-correction"
msgstr "Only perform shading-correction"
+# "build" should really be "built" in original text
#: backend/artec_eplus48u.c:2956
#, no-c-format
msgid ""
@@ -994,7 +998,7 @@ msgid ""
"or from the configuration file, are used."
msgstr ""
"If enabled, only the shading correction is performed during calibration. "
-"The default values for gain, offset and exposure time, either build-in "
+"The default values for gain, offset and exposure time, either built-in "
"or from the configuration file, are used."
#: backend/artec_eplus48u.c:2967
@@ -1017,12 +1021,13 @@ msgstr "Selects the number of the frame to scan"
msgid "Duplex scan"
msgstr "Duplex scan"
+# Original should be "Duplex scan provides..."
#: backend/avision.h:783
#, no-c-format
msgid ""
"Duplex scan provide a scan of the front and back side of the document"
msgstr ""
-"Duplex scan provide a scan of the front and back side of the document"
+"Duplex scan provides a scan of the front and back side of the document"
#: backend/canon630u.c:159
#, no-c-format
@@ -1101,7 +1106,7 @@ msgstr "Negatives"
msgid "Slides"
msgstr "Slides"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1122,488 +1127,488 @@ msgstr "1/2 normal speed"
msgid "1/3 normal speed"
msgstr "1/3 normal speed"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "rounded parameter"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "unknown"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "ADF jam"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "ADF cover open"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lamp failure"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "scan head positioning error"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "CPU check error"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "RAM check error"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "ROM check error"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "hardware check error"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "transparency unit lamp failure"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "transparency unit scan head positioning failure"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "parameter list length error"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "invalid command operation code"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "invalid field in CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "unsupported LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "invalid field in parameter list"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "command sequence error"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "too many windows specified"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "medium not present"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "invalid bit IDENTIFY message"
-#: backend/canon.c:465
+# Check this text. Does it make sense?
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "option not connect"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "power on reset / bus device reset"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parameter changed by another initiator"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "no additional sense information"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "reselect failure"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "SCSI parity error"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "initiator detected error message received"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "invalid message error"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "timeout error"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "transparency unit shading error"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lamp not stabilised"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "film scanner"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "flatbed scanner"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Film type"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, 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:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Negative film type"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Selects the negative film type"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Hardware resolution"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Use only hardware resolutions"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Focus"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Auto focus"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Enable/disable auto focus"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Auto focus only once"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Do auto focus only once between ejects"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Manual focus position"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, 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:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Scan margins"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Extra colour adjustments"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Mirror image"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Mirror the image horizontally"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Auto exposure"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Enable/disable the auto exposure feature"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Calibration now"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Execute calibration *now*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Self diagnosis"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Perform scanner self diagnosis"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reset scanner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Reset the scanner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Medium handling"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Eject film after each scan"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, 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:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Eject film before exit"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, 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:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Eject film now"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Eject the film *now*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Document feeder extras"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Flatbed only"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "Disable auto document feeder and use flatbed only"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Transparency unit"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, 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:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negative film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Positive or negative film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Density control"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Set density control mode"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Transparency ratio"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Select film type"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Select the film type"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flatbed"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF Front"
-msgstr "ADF cover open"
+msgstr "ADF Front"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF Back"
-msgstr "ADF jam"
+msgstr "ADF Back"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "ADF Duplex"
-#: backend/canon_dr.c:412
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:415
+#, no-c-format
msgid "Card Front"
-msgstr "Print"
+msgstr "Card Front"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
-msgstr ""
+msgstr "Card Back"
-#: backend/canon_dr.c:414
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:417
+#, no-c-format
msgid "Card Duplex"
-msgstr "Duplex"
+msgstr "Card Duplex"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Red"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Green"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blue"
-#: backend/canon_dr.c:424
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:427
+#, no-c-format
msgid "Enhance Red"
-msgstr "Enhancement"
+msgstr "Enhance Red"
-#: backend/canon_dr.c:425
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:428
+#, no-c-format
msgid "Enhance Green"
-msgstr "Enhancement"
+msgstr "Enhance Green"
-#: backend/canon_dr.c:426
-#, fuzzy, no-c-format
+#: backend/canon_dr.c:429
+#, no-c-format
msgid "Enhance Blue"
-msgstr "Enhancement"
+msgstr "Enhance Blue"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1611,21 +1616,21 @@ msgstr "Enhancement"
msgid "None"
msgstr "None"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
-msgstr ""
+msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr ""
+msgstr "Software blank skip percentage"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
-msgstr ""
+msgstr "Request driver to discard pages with low percentage of dark pixels"
#: backend/epson.c:491 backend/epson2.c:108 backend/magicolor.c:174
#, no-c-format
@@ -1639,13 +1644,13 @@ msgstr "Simplex"
msgid "Duplex"
msgstr "Duplex"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Transparency Unit"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1758,8 +1763,8 @@ msgstr "Ink-jet printers"
msgid "CRT monitors"
msgstr "CRT monitors"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Default"
@@ -1822,51 +1827,50 @@ msgstr "A4"
msgid "Max"
msgstr "Max"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Scan Mode"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Selects the halftone."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Dropout"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Selects the dropout."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Selects the brightness."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Sharpness"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Colour correction"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Sets the colour correction table for the selected output device."
@@ -1956,17 +1960,17 @@ msgstr "Adds to red based on blue level"
msgid "Controls blue level"
msgstr "Controls blue level"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Mirror the image."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Fast preview"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Auto area segmentation"
@@ -1996,47 +2000,47 @@ msgstr "Defines the zoom factor the scanner will use"
msgid "Quick format"
msgstr "Quick format"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Optional equipment"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Eject"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Eject the sheet in the ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Auto eject"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Eject document after scanning"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "ADF Mode"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Selects the ADF mode (simplex/duplex)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Bay"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Select bay to scan"
@@ -2076,15 +2080,15 @@ msgstr ""
"After sending the scan command, wait until the button on the scanner is "
"pressed to actually start the scan process."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
-msgstr ""
+msgstr "Infrared"
#: backend/epson2.c:117
#, no-c-format
msgid "TPU8x10"
-msgstr ""
+msgstr "TPU8x10"
#: backend/epson2.c:136
#, no-c-format
@@ -2099,565 +2103,578 @@ msgstr "Negative Slide"
#: backend/epson2.c:215
#, no-c-format
msgid "Built in CCT profile"
-msgstr ""
+msgstr "Built in CCT profile"
#: backend/epson2.c:216
-#, fuzzy, no-c-format
+#, no-c-format
msgid "User defined CCT profile"
-msgstr "User defined"
+msgstr "User defined CCT profile"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "On"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Off"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
-msgstr ""
+msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
-msgstr ""
+msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Dither"
-#: backend/fujitsu.c:690
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:693
+#, no-c-format
msgid "Diffusion"
-msgstr "Error Diffusion"
+msgstr "Diffusion"
-#: backend/fujitsu.c:695
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:698
+#, no-c-format
msgid "White"
-msgstr "White level"
+msgstr "White"
-#: backend/fujitsu.c:696
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:699
+#, no-c-format
msgid "Black"
-msgstr "Black level"
+msgstr "Black"
-#: backend/fujitsu.c:701
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:704
+#, no-c-format
msgid "Continue"
-msgstr "Conditional"
+msgstr "Continue"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
-msgstr ""
+msgstr "Stop"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
-msgstr ""
+msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
-msgstr ""
+msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
-msgstr ""
+msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:709
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:712
+#, no-c-format
msgid "Horizontal bold"
-msgstr "Horizontal"
+msgstr "Horizontal bold"
-#: backend/fujitsu.c:710
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:713
+#, no-c-format
msgid "Horizontal narrow"
-msgstr "Horizontal"
+msgstr "Horizontal narrow"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:715
+#, no-c-format
msgid "Vertical bold"
-msgstr "Vertical"
+msgstr "Vertical bold"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
-msgstr ""
+msgstr "Top to bottom"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
-msgstr ""
+msgstr "Bottom to top"
-#: backend/fujitsu.c:717
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:720
+#, no-c-format
msgid "Front"
-msgstr "Print"
+msgstr "Front"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
-msgstr ""
+msgstr "Back"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
-msgstr ""
+msgstr "Gamma function exponent"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
-msgstr ""
+msgstr "Changes intensity of midtones"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
-msgstr ""
+msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
-msgstr ""
+msgstr "Reverse image format"
-#: backend/fujitsu.c:3165
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3212
+#, no-c-format
msgid "Halftone type"
-msgstr "Halftone"
+msgstr "Halftone type"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
-msgstr ""
+msgstr "Control type of halftone filter"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr ""
+msgstr "Control pattern of halftone filter"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
-msgstr ""
+msgstr "Outline"
-#: backend/fujitsu.c:3210
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3257
+#, no-c-format
msgid "Perform outline extraction"
-msgstr "Performs calibration"
+msgstr "Perform outline extraction"
-#: backend/fujitsu.c:3221
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3268
+#, no-c-format
msgid "Emphasis"
-msgstr "Image emphasis"
+msgstr "Emphasis"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
-msgstr ""
+msgstr "Negative to smooth or positive to sharpen image"
-#: backend/fujitsu.c:3240
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3287
+#, no-c-format
msgid "Separation"
-msgstr "Saturation"
+msgstr "Separation"
-#: backend/fujitsu.c:3241
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3288
+#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr "Enable automatic determination of threshold for line-art scans."
+msgstr "Enable automatic separation of image and text"
-#: backend/fujitsu.c:3252
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3299
+#, no-c-format
msgid "Mirroring"
-msgstr "Mirror image"
+msgstr "Mirroring"
-#: backend/fujitsu.c:3253
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3300
+#, no-c-format
msgid "Reflect output image horizontally"
-msgstr "Mirror image horizontally."
+msgstr "Reflect output image horizontally"
-#: backend/fujitsu.c:3270
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3317
+#, no-c-format
msgid "White level follower"
-msgstr "White level for blue"
+msgstr "White level follower"
-#: backend/fujitsu.c:3271
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3318
+#, no-c-format
msgid "Control white level follower"
-msgstr "Controls red level"
+msgstr "Control white level follower"
-#: backend/fujitsu.c:3289
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3336
+#, no-c-format
msgid "BP filter"
-msgstr "Colour Filter"
+msgstr "BP filter"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr ""
+msgstr "Improves quality of high resolution ball-point pen text"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Smoothing"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr ""
+msgstr "Enable smoothing for improved OCR"
-#: backend/fujitsu.c:3323
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3370
+#, no-c-format
msgid "Gamma curve"
-msgstr "Gamma value"
+msgstr "Gamma curve"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
-msgstr ""
+msgstr "Gamma curve, from light to dark, but upper two may not work"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Threshold curve"
-msgstr "Threshold"
+msgstr "Threshold curve"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, 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:3369
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3416
+#, no-c-format
msgid "Threshold white"
-msgstr "Threshold"
+msgstr "Threshold white"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
-msgstr ""
+msgstr "Set pixels equal to threshold to white instead of black"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
+#, no-c-format
msgid "Noise removal"
-msgstr "Noise reduction"
+msgstr "Noise removal"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
-msgstr ""
+msgstr "Matrix 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr ""
+msgstr "Remove 5 pixel square noise"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
-msgstr ""
+msgstr "Matrix 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr ""
+msgstr "Remove 4 pixel square noise"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
-msgstr ""
+msgstr "Matrix 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr ""
+msgstr "Remove 3 pixel square noise"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
-msgstr ""
+msgstr "Matrix 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr ""
+msgstr "Remove 2 pixel square noise"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
-msgstr ""
+msgstr "Variance"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
-msgstr ""
+msgstr "Set SDTC variance rate (sensitivity), 0 equals 127"
-#: backend/fujitsu.c:3508
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3555
+#, no-c-format
msgid "Auto width detection"
-msgstr "No Correction"
+msgstr "Auto width detection"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
-msgstr ""
+msgstr "Scanner detects paper sides. May reduce scanning speed."
-#: backend/fujitsu.c:3526
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3573
+#, no-c-format
msgid "Auto length detection"
-msgstr "No Correction"
+msgstr "Auto length detection"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
-msgstr ""
+msgstr "Scanner detects paper lower edge. May confuse some frontends."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
-msgstr ""
+msgstr "Compression"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
-msgstr ""
+msgstr "Enable compressed data. May crash your front-end program"
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
-msgstr ""
+msgstr "Compression argument"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
+"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
+"is same as 4"
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
-msgstr ""
+msgstr "DF action"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
-msgstr ""
+msgstr "Action following double feed error"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
-msgstr ""
+msgstr "DF skew"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr ""
+msgstr "Enable double feed error due to skew"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
-msgstr ""
+msgstr "DF thickness"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr ""
+msgstr "Enable double feed error due to paper thickness"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
-msgstr ""
+msgstr "DF length"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr ""
+msgstr "Enable double feed error due to paper length"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
-msgstr ""
+msgstr "DF length difference"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr ""
+msgstr "Difference in page length to trigger double feed error"
-#: backend/fujitsu.c:3708
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3755
+#, no-c-format
msgid "DF recovery mode"
-msgstr "ADF cover open"
+msgstr "DF recovery mode"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr ""
+msgstr "Request scanner to reverse feed on paper jam"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
-msgstr ""
+msgstr "Paper protection"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr ""
+msgstr "Request scanner to predict jams in the ADF"
-#: backend/fujitsu.c:3748
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3795
+#, no-c-format
msgid "Advanced paper protection"
-msgstr "Advanced Options"
+msgstr "Advanced paper protection"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
-msgstr ""
+msgstr "Request scanner to predict jams in the ADF using improved sensors"
-#: backend/fujitsu.c:3768
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3815
+#, no-c-format
msgid "Staple detection"
-msgstr "No Correction"
+msgstr "Staple detection"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
-msgstr ""
+msgstr "Request scanner to detect jams in the ADF caused by staples"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
-msgstr ""
+msgstr "Background colour"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, 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:3809
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3856
+#, no-c-format
msgid "Dropout color"
-msgstr "Dropout"
+msgstr "Dropout colour"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
+"One-pass scanners use only one colour during grey or binary scanning, "
+"useful for coloured paper or ink"
-#: backend/fujitsu.c:3833
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3880
+#, no-c-format
msgid "Buffer mode"
-msgstr "Feeder mode"
+msgstr "Buffer mode"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, 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:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
-msgstr ""
+msgstr "Prepick"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr ""
+msgstr "Request scanner to grab next page from ADF"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
-msgstr ""
+msgstr "Overscan"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, 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"
msgstr ""
+"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"
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
-msgstr ""
+msgstr "Sleep timer"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, 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:3911
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3958
+#, no-c-format
msgid "Off timer"
-msgstr "Lamp off time"
+msgstr "Off timer"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
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:3930
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3977
+#, no-c-format
msgid "Duplex offset"
-msgstr "Blue offset"
+msgstr "Duplex offset"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
-msgstr ""
+msgstr "Adjust front/back offset"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Green offset"
-#: backend/fujitsu.c:3949
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3996
+#, no-c-format
msgid "Adjust green/red offset"
-msgstr "Green offset"
+msgstr "Adjust green/red offset"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Blue offset"
-#: backend/fujitsu.c:3967
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4014
+#, no-c-format
msgid "Adjust blue/red offset"
-msgstr "Sets blue channel offset"
+msgstr "Adjust blue/red offset"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
-msgstr ""
+msgstr "Low Memory"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2665,375 +2682,387 @@ msgid ""
"option 'side' can be used to determine correct image. This option should "
"only be used with custom front-end software."
msgstr ""
+"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."
-#: backend/fujitsu.c:3996
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4043
+#, no-c-format
msgid "Duplex side"
-msgstr "Duplex scan"
+msgstr "Duplex side"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
+"Tells which side (0=front, 1=back) of a duplex scan the next call to "
+"sane_read will return."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr ""
+msgstr "Hardware deskew and crop"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr ""
+msgstr "Request scanner to rotate and crop pages digitally."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr ""
+msgstr "Software deskew"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr ""
+msgstr "Request driver to rotate skewed pages digitally."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr ""
+msgstr "Software despeckle diameter"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
-msgstr ""
+msgstr "Maximum diameter of lone dots to remove from scan."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
-msgstr ""
+msgstr "Software crop"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr ""
+msgstr "Request driver to remove border from pages digitally."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
-msgstr ""
+msgstr "Halt on Cancel"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, 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:4095
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4142
+#, no-c-format
msgid "Endorser Options"
-msgstr "Advanced Options"
+msgstr "Endorser Options"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
-msgstr ""
+msgstr "Controls for endorser unit"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
-msgstr ""
+msgstr "Endorser"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
-msgstr ""
+msgstr "Enable endorser unit"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
-msgstr ""
+msgstr "Endorser bits"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr ""
+msgstr "Determines maximum endorser counter value."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
-msgstr ""
+msgstr "Endorser value"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
-msgstr ""
+msgstr "Initial endorser counter value."
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
-msgstr ""
+msgstr "Endorser step"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
-msgstr ""
+msgstr "Change endorser counter value by this much for each page."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
-msgstr ""
+msgstr "Endorser Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr ""
+msgstr "Endorser print offset from top of paper."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
-msgstr ""
+msgstr "Endorser font"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
-msgstr ""
+msgstr "Endorser printing font."
-#: backend/fujitsu.c:4253
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4300
+#, no-c-format
msgid "Endorser direction"
-msgstr "Noise reduction"
+msgstr "Endorser direction"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
-msgstr ""
+msgstr "Endorser printing direction."
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
-msgstr ""
+msgstr "Endorser side"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
-msgstr ""
+msgstr "Endorser printing side, requires hardware support to change"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
-msgstr ""
+msgstr "Endorser string"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
+"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
+"replaced by counter value."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
-msgstr ""
+msgstr "Top edge"
-#: backend/fujitsu.c:4333
+# Shouldn't we standardise on ADF? i.e. not adf
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
-msgstr ""
+msgstr "Paper is pulled partly into ADF"
-#: backend/fujitsu.c:4344
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4391
+#, no-c-format
msgid "A3 paper"
-msgstr "From paper"
+msgstr "A3 paper"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
-msgstr ""
+msgstr "A3 paper detected"
-#: backend/fujitsu.c:4356
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4403
+#, no-c-format
msgid "B4 paper"
-msgstr "From paper"
+msgstr "B4 paper"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
-msgstr ""
+msgstr "B4 paper detected"
-#: backend/fujitsu.c:4368
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4415
+#, no-c-format
msgid "A4 paper"
-msgstr "From paper"
+msgstr "A4 paper"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
-msgstr ""
+msgstr "A4 paper detected"
-#: backend/fujitsu.c:4380
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4427
+#, no-c-format
msgid "B5 paper"
-msgstr "From paper"
+msgstr "B5 paper"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
-msgstr ""
+msgstr "B5 paper detected"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
-msgstr ""
+msgstr "OMR or DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
-msgstr ""
+msgstr "OMR or double feed detected"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
-msgstr ""
+msgstr "Power saving"
-#: backend/fujitsu.c:4429
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4476
+#, no-c-format
msgid "Scanner in power saving mode"
-msgstr "ADF cover open"
+msgstr "Scanner in power saving mode"
-#: backend/fujitsu.c:4452
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4499
+#, no-c-format
msgid "Manual feed"
-msgstr " "
+msgstr "Manual feed"
-#: backend/fujitsu.c:4453
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4500
+#, no-c-format
msgid "Manual feed selected"
-msgstr " "
+msgstr "Manual feed selected"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
-msgstr ""
+msgstr "Function"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
-msgstr ""
+msgstr "Function character on screen"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
-msgstr ""
+msgstr "Ink low"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
-msgstr ""
+msgstr "Imprinter ink running low"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
-msgstr ""
+msgstr "Double feed"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
-msgstr ""
+msgstr "Double feed detected"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
-msgstr ""
+msgstr "Error code"
-#: backend/fujitsu.c:4513
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4560
+#, no-c-format
msgid "Hardware error code"
-msgstr "hardware check error"
+msgstr "Hardware error code"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
-msgstr ""
+msgstr "Skew angle"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
-msgstr ""
+msgstr "Requires black background for scanning"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
-msgstr ""
+msgstr "Ink remaining"
-#: backend/fujitsu.c:4537
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4584
+#, no-c-format
msgid "Imprinter ink level"
-msgstr "White level"
+msgstr "Imprinter ink level"
-#: backend/fujitsu.c:4548
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4595
+#, no-c-format
msgid "Density"
-msgstr "Density control"
+msgstr "Density"
-#: backend/fujitsu.c:4549
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4596
+#, no-c-format
msgid "Density dial"
-msgstr "Density control"
+msgstr "Density dial"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
+#, no-c-format
msgid "Duplex switch"
-msgstr "Duplex scan"
+msgstr "Duplex switch"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
-msgstr ""
+msgstr "Request backend to remove border from pages digitally"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
-msgstr ""
+msgstr "Request driver to discard pages with low numbers of dark pixels"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr ""
+msgstr "Software derotate"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
-msgstr ""
+msgstr "Request driver to detect and correct 90 degree image rotation"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
-msgstr ""
+msgstr "Dynamic threshold curve, from light to dark, normally 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
-msgstr ""
+msgstr "Disable dynamic lineart"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
+"Disable use of a software adaptive algorithm to generate lineart relying "
+"instead on hardware lineart."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Disable interpolation"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3042,44 +3071,46 @@ msgstr ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
-#: backend/genesys.c:5872
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5545
+#, no-c-format
msgid "Color filter"
-msgstr "Colour Filter"
+msgstr "Colour filter"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, 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.c:5901
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5574
+#, no-c-format
msgid "Calibration file"
-msgstr "Calibration"
+msgstr "Calibration file"
-#: backend/genesys.c:5902
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5575
+#, no-c-format
msgid "Specify the calibration file to use"
-msgstr "Define calibration mode"
+msgstr "Specify the calibration file to use"
-#: backend/genesys.c:5919
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5592
+#, no-c-format
msgid "Calibration cache expiration time"
-msgstr "Calibration data cache"
+msgstr "Calibration cache expiration time"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
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.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Lamp off time"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3088,72 +3119,83 @@ 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.c:5943
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5616
+#, no-c-format
msgid "Lamp off during scan"
-msgstr "Lamp off during dark calibration"
+msgstr "Lamp off during scan"
-#: backend/genesys.c:5944
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5617
+#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr "Minutes until lamp is turned off after scan"
+msgstr "The lamp will be turned off during scan. "
-#: backend/genesys.c:5972 backend/genesys.c:5973
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
+#, no-c-format
msgid "File button"
-msgstr "Wait for button"
+msgstr "File button"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
-msgstr ""
+msgstr "OCR button"
-#: backend/genesys.c:6039 backend/genesys.c:6040
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
+#, no-c-format
msgid "Power button"
-msgstr "Wait for button"
+msgstr "Power button"
-#: backend/genesys.c:6053 backend/genesys.c:6054
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
+#, no-c-format
msgid "Extra button"
-msgstr "Wait for button"
+msgstr "Extra button"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
-#, fuzzy, no-c-format
+# Need->Needs?
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
+#, no-c-format
msgid "Need calibration"
-msgstr "Coarse calibration"
+msgstr "Need calibration"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
+#, no-c-format
msgid "The scanner needs calibration for the current settings"
-msgstr "Force scanner calibration before scan"
+msgstr "The scanner needs calibration for the current settings"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Buttons"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Calibrate"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
+#, no-c-format
msgid "Start calibration using special sheet"
-msgstr "Start calibration process."
+msgstr "Start calibration using special sheet"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
+#, no-c-format
msgid "Clear calibration"
-msgstr "Coarse calibration"
+msgstr "Clear calibration"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
-#, fuzzy, no-c-format
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
+#, no-c-format
msgid "Clear calibration cache"
-msgstr "Calibration data cache"
+msgstr "Clear calibration cache"
+
+#: backend/genesys.cc:5769
+#, no-c-format
+msgid "Force calibration"
+msgstr "Force calibration"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr "Force calibration ignoring all and any calibration caches"
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
@@ -3161,28 +3203,28 @@ msgstr "Calibration data cache"
msgid "Transparency Adapter"
msgstr "Transparency Adapter"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Grey mode colour"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr "Selects which scan colour is used grey mode (default: green)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Debugging Options"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatic warmup"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3191,12 +3233,12 @@ msgstr ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"60 seconds warm-up time."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Full scan"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3205,12 +3247,12 @@ msgstr ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Coarse calibration"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3218,15 +3260,15 @@ msgid ""
"are provided. This option is enabled by default. For testing only."
msgstr ""
"Setup gain and offset for scanning automatically. If this option is "
-"disabled, options for setting the analog frontend parameters manually "
+"disabled, options for setting the analogue frontend parameters manually "
"are provided. This option is enabled by default. For testing only."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Coarse calibration for first scan only"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3237,12 +3279,12 @@ msgstr ""
"scanners and can save scanning time. If the image brightness is "
"different with each scan, disable this option. For testing only."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Backtrack lines"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3255,12 +3297,12 @@ msgstr ""
"the data. Low values cause faster scans but increase the risk of "
"omitting lines."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gamma value"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Sets the gamma value of all channels."
@@ -3276,7 +3318,7 @@ msgid "Scan Mode Group"
msgstr "Scan Mode Group"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Slide"
@@ -3286,11 +3328,13 @@ msgstr "Slide"
msgid "Scanner model"
msgstr "Scanner model"
+# US spelling of behaviour is incorrect
#: backend/hp3900_sane.c:1408
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Allows one to test device behaviour with other supported models"
-msgstr "Allows to test device behaviour with other supported models"
+msgstr "Allows one to test device behaviour with other supported models"
+# US spelling of colour is incorrect
#: backend/hp3900_sane.c:1422
#, no-c-format
msgid "Image colours will be inverted"
@@ -3355,7 +3399,7 @@ msgid ""
"circumstances."
msgstr ""
"If enabled, image will be scanned in colour mode and then converted to "
-"grayscele by software. This may improve image quality in some "
+"greyscale by software. This may improve image quality in some "
"circumstances."
#: backend/hp3900_sane.c:1516
@@ -3480,162 +3524,243 @@ msgstr "Switches the lamp on or off."
#: backend/hp5400_sane.c:393 backend/niash.c:727
#, no-c-format
msgid "Calibrates for black and white level."
-msgstr " "
+msgstr "Calibrates for black and white level."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA Slides"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA Negatives"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Colour (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Extend lamp timeout"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Extends lamp timeout (from 15 minutes to 1 hour)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Wait for button"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Waits for button before scanning"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Last button pressed"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Get ID of last button pressed (read only)"
+
+#: backend/hp5590.c:121
+#, no-c-format
+msgid "LCD counter"
+msgstr "LCD counter"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Get value of LCD counter (read only)"
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr "Colour LED indicator"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Get value of LED indicator (read only)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr "Document available in ADF"
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr "Get state of document-available indicator in ADF (read only)"
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Hide end-of-page pixel"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+"Hide end-of-page indicator pixels and overwrite with neighbour pixels"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr "Filling mode of trailing lines after scan data (ADF)"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 = raw scan data, last = repeat last scan line, raster = b/w raster, "
+"white = white colour, black = black colon, colour = RGB or grey colour "
+"value"
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr "RGB or grey colour value for filling mode 'colour'"
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+"Colour value for trailing lines filling mode 'colour'. RGB colour as "
+"r*65536+256*g+b or grey value (default=violet or grey)"
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Advanced Options"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Coarse"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fine"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Custom"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Auto"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Pass-through"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC Grey"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA Grey"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Slow"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Fast"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Extra Fast"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-pixel"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-pixel"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-pixel"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Print"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Film-strip"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Conditional"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experiment"
@@ -3663,12 +3788,12 @@ msgstr "Enable automatic determination of threshold for line-art scans."
#: backend/hp-option.h:74
#, no-c-format
msgid "Select smoothing filter."
-msgstr " "
+msgstr "Select smoothing filter."
#: backend/hp-option.h:79
#, no-c-format
msgid "Unload media after scan"
-msgstr " "
+msgstr "Unload media after scan"
#: backend/hp-option.h:80
#, no-c-format
@@ -3678,7 +3803,7 @@ msgstr "Unloads the media after a scan."
#: backend/hp-option.h:85
#, no-c-format
msgid "Change document"
-msgstr " "
+msgstr "Change document"
#: backend/hp-option.h:86
#, no-c-format
@@ -3733,10 +3858,11 @@ msgstr ""
msgid "Color Matrix"
msgstr "Colour Matrix"
+# Requires apostrophe
#: backend/hp-option.h:121
#, no-c-format
msgid "Set the scanners color matrix."
-msgstr "Set the scanners colour matrix."
+msgstr "Set the scanner's colour matrix."
#: backend/hp-option.h:127
#, no-c-format
@@ -3814,8 +3940,8 @@ msgstr "Shut off lamp"
msgid "Shut off scanner lamp."
msgstr "Shut off scanner lamp."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Paper size"
@@ -3826,54 +3952,49 @@ msgstr "Paper size"
msgid "Automatic separation"
msgstr "Automatic separation"
-#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307
-#: backend/kvs40xx_opt.c:531
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
+#, no-c-format
msgid "Landscape"
-msgstr "A5 landscape"
+msgstr "Landscape"
#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
#, no-c-format
msgid "Inverse Image"
-msgstr ""
+msgstr "Inverse Image"
#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
#, no-c-format
msgid "Long paper mode"
-msgstr ""
+msgstr "Long paper mode"
-#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230
-#: backend/kvs40xx_opt.c:393
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:393
+#, no-c-format
msgid "Length control mode"
-msgstr "Set density control mode"
+msgstr "Length control mode"
-#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242
-#: backend/kvs40xx_opt.c:416
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:416
+#, no-c-format
msgid "Manual feed mode"
-msgstr " "
+msgstr "Manual feed mode"
-#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254
-#: backend/kvs40xx_opt.c:428
-#, fuzzy, no-c-format
+#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
+#, no-c-format
msgid "Manual feed timeout"
-msgstr " "
+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:441
#, no-c-format
msgid "Double feed detection"
-msgstr ""
+msgstr "Double feed detection"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Physical size of the paper in the ADF"
@@ -3881,307 +4002,308 @@ msgstr "Physical size of the paper in the ADF"
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr ""
+msgstr "bw"
#: backend/kvs1025_opt.c:40
-#, fuzzy, no-c-format
+#, no-c-format
msgid "halftone"
-msgstr "Halftone"
+msgstr "halftone"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr ""
+msgstr "grey"
#: backend/kvs1025_opt.c:42
-#, fuzzy, no-c-format
+#, no-c-format
msgid "color"
-msgstr "Colour"
+msgstr "colour"
#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:108
#: backend/kvs40xx_opt.c:1047
#, no-c-format
msgid "adf"
-msgstr ""
+msgstr "adf"
#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
#: backend/kvs40xx_opt.c:109
#, no-c-format
msgid "fb"
-msgstr ""
+msgstr "fb"
#: backend/kvs1025_opt.c:72 backend/kvs20xx_opt.c:55
#: backend/kvs40xx_opt.c:101
#, no-c-format
msgid "single"
-msgstr ""
+msgstr "single"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
#: backend/kvs40xx.c:704 backend/kvs40xx.c:722 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
-#, fuzzy, no-c-format
+#, no-c-format
msgid "continuous"
-msgstr "Conditional"
+msgstr "continuous"
#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
#: backend/kvs40xx_opt.c:115
-#, fuzzy, no-c-format
+#, no-c-format
msgid "off"
-msgstr "Off"
+msgstr "off"
#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
#: backend/kvs40xx_opt.c:116
#, no-c-format
msgid "wait_doc"
-msgstr ""
+msgstr "wait_doc"
#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
#: backend/kvs40xx_opt.c:118
#, no-c-format
msgid "wait_key"
-msgstr ""
+msgstr "wait_key"
#: 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 "user_def"
#: 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 "business_card"
#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
#: backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Check"
-msgstr ""
+msgstr "Check"
#: 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
#, 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
#, 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
#, 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
#, no-c-format
msgid "Legal"
-msgstr ""
+msgstr "Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
+#, no-c-format
msgid "bayer_64"
-msgstr "Bayer"
+msgstr "bayer_64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
+#, no-c-format
msgid "bayer_16"
-msgstr "Bayer"
+msgstr "bayer_16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
+#, no-c-format
msgid "halftone_32"
-msgstr "Halftone"
+msgstr "halftone_32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
+#, no-c-format
msgid "halftone_64"
-msgstr "Halftone"
+msgstr "halftone_64"
-#: backend/kvs1025_opt.c:153
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:152
+#, no-c-format
msgid "diffusion"
-msgstr "Error Diffusion"
+msgstr "diffusion"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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 "Normal"
+msgstr "normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
+#, no-c-format
msgid "light"
-msgstr "Highlight"
+msgstr "light"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr ""
+msgstr "dark"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
+#, no-c-format
msgid "From scanner"
-msgstr "film scanner"
+msgstr "From scanner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "From paper"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
+#, no-c-format
msgid "default"
-msgstr "Default"
+msgstr "default"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: 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 "Smooth"
+msgstr "smooth"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
-msgstr ""
+msgstr "none"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: 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 "Slow"
+msgstr "low"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: 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 "Medium"
+msgstr "medium"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
-msgstr ""
+msgstr "high"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr ""
+msgstr "crt"
-#: backend/kvs1025_opt.c:230
+# Linear?
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
-msgstr ""
+msgstr "linear"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: 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 "Red"
+msgstr "red"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: 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 "Green"
+msgstr "green"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
-msgstr ""
+msgstr "blue"
-#: backend/kvs1025_opt.c:562
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:561
+#, no-c-format
msgid "Sets the scan source"
-msgstr "Scan source"
+msgstr "Sets the scan source"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Feeder mode"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Sets the feeding mode"
-#: backend/kvs1025_opt.c:584
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:583
+#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr "Enable/disable auto focus"
+msgstr "Enable/Disable long paper mode"
-#: backend/kvs1025_opt.c:593
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:592
+#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr "Set density control mode"
+msgstr "Enable/Disable length control mode"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: 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 "Sets the feeding mode"
+msgstr "Sets the manual feed mode"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: 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 "Sets the feeding mode"
+msgstr "Sets the manual feed timeout in seconds"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Enable/Disable double feed detection"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
-msgstr ""
+msgstr "fit-to-page"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
-msgstr ""
+msgstr "Fit to page"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner shrinks image to fit scanned page"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
+msgstr "Set paper position : true for landscape, false for portrait"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatic threshold"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4190,98 +4312,98 @@ msgstr ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Noise reduction"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reduce the isolated dot noise"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Image emphasis"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Sets the image emphasis"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: 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 "Lamp on"
+msgstr "Lamp colour"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: 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 "Switches the lamp on or off."
+msgstr "Sets the lamp colour (colour dropout)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr ""
+msgstr "Inverse image in B/W or halftone mode"
-#: backend/kvs1025_opt.c:840
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:839
+#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr "Mirror image vertically."
+msgstr "Mirror image (left/right flip)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr ""
+msgstr "jpeg compression"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
-msgstr ""
+msgstr "JPEG Image Compression with Q parameter, '0' - no compression"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr ""
+msgstr "Rotate image clockwise"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr ""
+msgstr "Request driver to rotate pages by a fixed amount"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr ""
+msgstr "Request driver to rotate skewed pages digitally"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
-msgstr ""
+msgstr "Maximum diameter of lone dots to remove from scan"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr ""
+msgstr "Software automatic cropping"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr ""
+msgstr "Request driver to remove border from pages digitally"
#: backend/kvs20xx_opt.c:233 backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4289,6 +4411,8 @@ msgid ""
"Length Control Mode is a mode that the scanner reads up to the shorter "
"length of actual paper or logical document length."
msgstr ""
+"Length Control Mode is a mode that the scanner reads up to the shorter "
+"length of 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
@@ -4300,179 +4424,189 @@ msgstr "Gamma correction"
#: 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 "Double letter 11x17 in"
#: backend/kvs40xx_opt.c:133
#, no-c-format
msgid "B4"
-msgstr ""
+msgstr "B4"
+# sensivity->sensitivity
#: backend/kvs40xx_opt.c:231
-#, fuzzy, no-c-format
+#, no-c-format
msgid "High sensivity"
-msgstr "High density printing"
+msgstr "High sensitivity"
+# sensivity->sensitivity
#: backend/kvs40xx_opt.c:232
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Low sensivity"
-msgstr "Low density printing"
+msgstr "Low sensitivity"
#: backend/kvs40xx_opt.c:243
-#, fuzzy, no-c-format
+#, no-c-format
msgid "err_diffusion"
-msgstr "Error Diffusion"
+msgstr "err_diffusion"
#: backend/kvs40xx_opt.c:249
-#, fuzzy, no-c-format
+#, no-c-format
msgid "No detection"
-msgstr "No Correction"
+msgstr "No detection"
#: backend/kvs40xx_opt.c:250
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Normal mode"
-msgstr "Normal"
+msgstr "Normal mode"
#: backend/kvs40xx_opt.c:251
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhanced mode"
-msgstr "Enhancement"
+msgstr "Enhanced mode"
+# The grammar is a bit suspect here.
#: 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."
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
#, no-c-format
msgid "Double feed detector sensitivity"
-msgstr ""
+msgstr "Double feed detector sensitivity"
#: backend/kvs40xx_opt.c:450
#, no-c-format
msgid "Set the double feed detector sensitivity"
-msgstr ""
+msgstr "Set the double feed detector sensitivity"
#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
#, no-c-format
msgid "Do not stop after double feed detection"
-msgstr ""
+msgstr "Do not stop after double feed detection"
#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
#, no-c-format
msgid "Ignore left double feed sensor"
-msgstr ""
+msgstr "Ignore left double feed sensor"
#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
#, no-c-format
msgid "Ignore center double feed sensor"
-msgstr ""
+msgstr "Ignore centre double feed sensor"
#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
#, no-c-format
msgid "Ignore right double feed sensor"
-msgstr ""
+msgstr "Ignore right double feed sensor"
#: backend/kvs40xx_opt.c:642
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Automatic threshold mode"
-msgstr "Automatic threshold"
+msgstr "Automatic threshold mode"
#: backend/kvs40xx_opt.c:643
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the automatic threshold mode"
-msgstr "Automatic threshold"
+msgstr "Sets the automatic threshold mode"
#: backend/kvs40xx_opt.c:694
#, no-c-format
msgid "Inverse image in B/W mode"
-msgstr ""
+msgstr "Inverse image in B/W mode"
#: backend/kvs40xx_opt.c:715
#, no-c-format
msgid "JPEG compression"
-msgstr ""
+msgstr "JPEG compression"
+# yours->your
#: backend/kvs40xx_opt.c:718
#, no-c-format
msgid "JPEG compression (yours application must be able to uncompress)"
-msgstr ""
+msgstr "JPEG compression (your application must be able to uncompress)"
#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
#, no-c-format
msgid "Detect stapled document"
-msgstr ""
+msgstr "Detect stapled document"
#: backend/kvs40xx_opt.c:776
#, no-c-format
msgid "chroma of red"
-msgstr ""
+msgstr "chroma of red"
#: backend/kvs40xx_opt.c:777
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of red"
-msgstr "Set the order of frames"
+msgstr "Set chroma of red"
#: backend/kvs40xx_opt.c:787
-#, fuzzy, no-c-format
+#, no-c-format
msgid "chroma of blue"
-msgstr "Shadow for blue"
+msgstr "chroma of blue"
#: backend/kvs40xx_opt.c:788
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of blue"
-msgstr "Shift red to blue"
+msgstr "Set chroma of blue"
#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
#, no-c-format
msgid "Skew adjustment"
-msgstr ""
+msgstr "Skew adjustment"
+# Grammar?
#: backend/kvs40xx_opt.c:808
#, no-c-format
msgid "Stop scanner when a paper have been skewed"
-msgstr ""
+msgstr "Stop scanner if a sheet is skewed"
+# stop->stopped
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will be stop when a paper have been skewed"
-msgstr ""
+msgstr "Scanner will be stopped if sheet is skewed"
#: backend/kvs40xx_opt.c:816
#, no-c-format
msgid "Crop actual image area"
-msgstr ""
+msgstr "Crop actual image area"
+# detect->detects; crop->crops
#: backend/kvs40xx_opt.c:817
#, no-c-format
msgid "Scanner automatically detect image area and crop it"
-msgstr ""
+msgstr "Scanner automatically detects image area and crops it"
+# Grammar?
#: backend/kvs40xx_opt.c:827
#, no-c-format
msgid "It is right and left reversing"
-msgstr ""
+msgstr "It is right and left reversing"
#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
#, no-c-format
msgid "Addition of space in top position"
-msgstr ""
+msgstr "Addition of space in top position"
#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
#, no-c-format
msgid "Addition of space in bottom position"
-msgstr ""
+msgstr "Addition of space in bottom position"
#: backend/leo.c:110
#, no-c-format
@@ -4502,7 +4636,7 @@ msgstr "8x8 Vertical Line"
#: backend/lexmark.c:273 backend/umax_pp.c:715
#, no-c-format
msgid "Gain"
-msgstr " "
+msgstr "Gain"
#: backend/lexmark.c:274 backend/umax_pp.c:716
#, no-c-format
@@ -4871,12 +5005,12 @@ msgstr "Blue balance"
#: backend/microtek2.h:705
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
-msgstr " "
+msgstr "Balance factor for blue. A value of 100% means no correction."
#: backend/microtek2.h:709
#, no-c-format
msgid "Firmware balance"
-msgstr " "
+msgstr "Firmware balance"
#: backend/microtek2.h:710
#, no-c-format
@@ -4916,7 +5050,7 @@ msgstr "8x8 normal"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 fine"
-msgstr " "
+msgstr "8x8 fine"
#: backend/mustek.c:178
#, no-c-format
@@ -4946,7 +5080,7 @@ msgstr "4x4 coarse"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 normal"
-msgstr " "
+msgstr "4x4 normal"
#: backend/mustek.c:180
#, no-c-format
@@ -4966,7 +5100,7 @@ msgstr "2x2 normal"
#: backend/mustek.c:181
#, no-c-format
msgid "8x8 custom"
-msgstr " "
+msgstr "8x8 custom"
#: backend/mustek.c:182
#, no-c-format
@@ -4986,24 +5120,24 @@ msgstr "4x4 custom"
#: backend/mustek.c:184
#, no-c-format
msgid "3x3 custom"
-msgstr " "
+msgstr "3x3 custom"
#: backend/mustek.c:185
#, no-c-format
msgid "2x2 custom"
msgstr "2x2 custom"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Fast grey mode"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Scan in fast grey mode (lower quality)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5012,83 +5146,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:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lamp off time (minutes)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, 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:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Turn lamp off"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Turns the lamp off immediately."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Red brightness"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, 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:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Green brightness"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, 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:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Blue brightness"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, 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:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contrast red channel"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, 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:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contrast green channel"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, 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:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contrast blue channel"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, 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."
@@ -5132,25 +5266,25 @@ msgstr ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"40 seconds warm-up time."
-#: backend/pixma.c:378
-#, fuzzy, no-c-format
+#: backend/pixma.c:397
+#, no-c-format
msgid "Negative color"
-msgstr "Negative film"
+msgstr "Negative colour"
-#: backend/pixma.c:383
-#, fuzzy, no-c-format
+#: backend/pixma.c:402
+#, no-c-format
msgid "Negative gray"
-msgstr "Negative"
+msgstr "Negative grey"
-#: backend/pixma.c:396
-#, fuzzy, no-c-format
+#: backend/pixma.c:415
+#, no-c-format
msgid "48 bits color"
-msgstr "Fine colour"
+msgstr "48 bits colour"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
-msgstr ""
+msgstr "16 bits grey"
#: backend/pixma_sane_options.c:84
#, no-c-format
@@ -5158,11 +5292,13 @@ msgid ""
"Selects the scan source (such as a document-feeder). Set source before "
"mode and resolution. Resets mode and resolution to auto values."
msgstr ""
+"Selects the scan source (such as a document-feeder). Set source before "
+"mode and resolution. Resets mode and resolution to auto values."
#: backend/pixma_sane_options.c:98
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Button-controlled scan"
-msgstr "Button-controlled scan (experimental)"
+msgstr "Button-controlled scan"
#: backend/pixma_sane_options.c:99
#, no-c-format
@@ -5193,24 +5329,27 @@ msgstr "Button 2"
#: backend/pixma_sane_options.c:272
#, no-c-format
msgid "Type of original to scan"
-msgstr ""
+msgstr "Type of original to scan"
#: backend/pixma_sane_options.c:286
#, no-c-format
msgid "Target operation type"
-msgstr ""
+msgstr "Target operation type"
#: backend/pixma_sane_options.c:348
#, no-c-format
msgid "ADF Waiting Time"
-msgstr ""
+msgstr "ADF Waiting Time"
+# Grammar could be improved.
#: backend/pixma_sane_options.c:349
#, no-c-format
msgid ""
"When set, the scanner searches the waiting time in seconds for a new "
"document inserted into the automatic document feeder."
msgstr ""
+"When set, the scanner waits the specified time in seconds for a new "
+"document to be inserted into the automatic document feeder."
#: backend/plustek.c:235 backend/plustek_pp.c:204 backend/u12.c:156
#, no-c-format
@@ -5568,9 +5707,9 @@ msgstr ""
"after sane_read() has been called."
#: backend/rts8891.c:2809
-#, fuzzy, no-c-format
+#, no-c-format
msgid "This option reflects the status of a scanner button."
-msgstr "This option reflects the status of the scanner buttons."
+msgstr "This option reflects the status of a scanner button."
#: backend/rts8891.c:2840 backend/umax.c:5795 backend/umax_pp.c:639
#, no-c-format
@@ -5660,17 +5799,17 @@ msgstr ""
#: backend/snapscan-options.c:111
#, no-c-format
msgid "Frame number of media holder that should be scanned."
-msgstr ""
+msgstr "Frame number of media holder that should be scanned."
#: backend/snapscan-options.c:114
#, no-c-format
msgid "Use manual or automatic selection of focus point."
-msgstr ""
+msgstr "Use manual or automatic selection of focus point."
#: backend/snapscan-options.c:117
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point for scanning."
-msgstr "Eject document after scanning"
+msgstr "Focus point for scanning."
#: backend/snapscan-options.c:482
#, no-c-format
@@ -5703,38 +5842,40 @@ msgstr ""
#: backend/snapscan-options.c:884
#, no-c-format
msgid "Frame"
-msgstr ""
+msgstr "Frame"
#: backend/snapscan-options.c:885
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Frame to be scanned"
-msgstr "flatbed scanner"
+msgstr "Frame to be scanned"
#: backend/snapscan-options.c:897
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus-mode"
-msgstr "Focus"
+msgstr "Focus-mode"
#: backend/snapscan-options.c:898
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto or manual focus"
-msgstr "Auto focus"
+msgstr "Auto or manual focus"
#: backend/snapscan-options.c:911
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus-point"
-msgstr "Focus Position"
+msgstr "Focus-point"
#: backend/snapscan-options.c:912
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point"
-msgstr "Focus Position"
+msgstr "Focus point"
+# Original should specify "color" not colour.
#: backend/snapscan-options.c:930
#, no-c-format
msgid "Colour lines per read"
msgstr "Colour lines per read"
+# Original should specify gray
#: backend/snapscan-options.c:942
#, no-c-format
msgid "Greyscale lines per read"
@@ -5873,7 +6014,7 @@ msgstr ""
"Select the kind of test picture. Available options:\n"
"Solid black: fills the whole scan with black.\n"
"Solid white: fills the whole scan with white.\n"
-"Color pattern: draws various colour test patterns depending on the "
+"Colour pattern: draws various colour test patterns depending on the "
"mode.\n"
"Grid: draws a black/white grid with a width and height of 10 mm per "
"square."
@@ -6344,7 +6485,7 @@ msgstr "Do not calibrate focus"
#: backend/umax.c:5745
#, no-c-format
msgid "Manual pre focus"
-msgstr " "
+msgstr "Manual pre focus"
#: backend/umax.c:5757
#, no-c-format
diff --git a/po/eo.gmo b/po/eo.gmo
deleted file mode 100644
index bf15262..0000000
--- a/po/eo.gmo
+++ /dev/null
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index d4ea7a1..b1d42e2 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -9,8 +9,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends.eo\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-08 13:28+0100\n"
"Last-Translator: A.C.Codazzi\n"
"Language-Team: <it@li.org>\n"
@@ -31,36 +31,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometrio"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Plibonigo"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +88,7 @@ msgstr "Perfortu monokromatan antaŭmontron"
msgid "Bit depth"
msgstr "Profundeco en bitoj"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +129,7 @@ msgstr "Sube-dekstre X"
msgid "Bottom-right y"
msgstr "Sube-dekstre Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +285,7 @@ msgstr "Dosiernomo"
msgid "Halftone pattern size"
msgstr "Grado de modelo por meznuancoj"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Modelo por meznuanco"
@@ -297,8 +297,8 @@ msgstr "Bindu distindon de X kaj Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativo"
@@ -980,7 +980,7 @@ msgstr "Defaŭltaj valoroj"
msgid "Set default values for enhancement controls."
msgstr "Uzu la defaŭltajn valorojn por la regilojn de plibonigo."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrigo"
@@ -1118,7 +1118,7 @@ msgstr "Negativoj"
msgid "Slides"
msgstr "Lumbildoj"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1139,489 +1139,488 @@ msgstr "Duono de la normala radipeco"
msgid "1/3 normal speed"
msgstr "Triono de la normala radipeco"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "rondigitaj parametroj"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "nekonata"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "ADF estas blokita"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "Kovrilo de ADF estas malfermita"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lampo malfunkcias"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "eraro de lokiĝo de skan-kapeto"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "Eraro de kontrolo de CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "Eraro de kontrolo de RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "Eraro de kontrolo de ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "Eraro de kontrolo de la aparataro"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "la lampo de diafanecoj malfunkcias"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "eraro de lokiĝo de la skan-kapeto por diafanecoj"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "eraro de longo de listo pri parametroj"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "nevalida kodo de komando"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "nevalida kampo en CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "nesubtenita LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "nevalida kampo en la listo pri parametroj"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "eraro en la vico de komandoj"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "la difinitaj fenestroj estas troaj"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "la aparato estas neĉeestanta"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "mesaĝo kun nevalida IDENTIFY-bito"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "opcio de ne-konektado"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "re-agordo de nutro / re-agordo de buso de aparatoj"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parametro estis ŝanĝita de alia pravaloranto"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "neniu alia aldona informo pri «senso»"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "re-elektado malsukcesis"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "eraro de pareco de SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "oni ricevis mesaĝon pri eraro rekonita de pravaloranto"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "eraro de nevalida mesaĝo"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "eraro de tempofino"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "eraro de vualo de diafaneco"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "nestabiligita lampo"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "skanilo por negativoj"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "plata skanilo"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmo"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Ĝi elektas specon de filmo: negativoj aŭ lumbildoj"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Speco de negativa filmo"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Ĝi elektas la specon de negativa filmo"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Hardvara difino"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Uzu nur hardvarajn difinojn"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Fokuso"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Mem-fokusigo"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Ĝi ebligas/malebligas aŭtomatan fokusigon"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Memfokusigo nur unu-foje"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Ĝi plenumas memfokusigon nur unu-foje por ĉiu enigo de filmo"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Lokado de mana fokusigo"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr "Ĝi mane agordas lokadon de optika fokusigo (defaŭto: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Marĝenoj por skanado"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Aliaj aranĝoj de koloro"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Spegula bildo"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Ĝi reflektas bildon horizontale"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Mem-ekspono"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Ĝi ebligas/malebligas aŭtomatan eksponon"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Tuja kalibrigo"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Ĝi plenumas kalibrigon tuj"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Mem-diagnozo"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Ĝi plenumas aŭtomatajn kontrolojn"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Re-agordu skanilon"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Ĝi ree agordas la skanilon"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Mastrumado de aparato"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Elpelu filmon post ĉiu skanado"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Ĝi aŭtomate elpelas filmon post ĉiu skanado"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Elpelu filmon antaŭ eliri"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr "Ĝi aŭtomate elpelas filmon antaŭ la eliro de la programo"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Elpelu filmon nun"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Ĝi elpelas filmon *nun*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Aliaj agordoj pri provizilo de dokumentoj"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Nur fiksa ebeno"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "Ĝi malebligas provizilon de dokumentoj kaj uzas nur fiksan ebeno"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Reguligilo de diafaneco"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
"Ĝi evligas/malebligas la reguligilon de diafaneco (FAU, «film adapter "
"unit»)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negativa filmo"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Pozitiva aŭ negativa filmo"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Regilo de denseco"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Ĝi ebligas moduson de la regado de denseco"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Rejŝo de diafaneco"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Elektu specon de filmo"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Ĝi elektas specon de filmo"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Fiksa ebeno"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, fuzzy, no-c-format
msgid "ADF Front"
msgstr "Kovrilo de ADF estas malfermita"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "ADF estas blokita"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Fronta-dorsa ADF"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Presu"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Fronta-dorsa"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Ruĝo"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Verdo"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Bluo"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Plibonigo"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Plibonigo"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Plibonigo"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1629,18 +1628,18 @@ msgstr "Plibonigo"
msgid "None"
msgstr "Nenio"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1657,13 +1656,13 @@ msgstr "Unuopa"
msgid "Duplex"
msgstr "Fronta-dorsa"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Reguligilo de Diafaneco"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1776,8 +1775,8 @@ msgstr "Inkoŝprucaj printiloj"
msgid "CRT monitors"
msgstr "CRT ekranoj"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Defaŭlto"
@@ -1840,51 +1839,50 @@ msgstr "A4"
msgid "Max"
msgstr "Maks"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Moduso de Skanado"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Elektu meznuancojn."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Eskludado"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Ĝi elektas la eskludadon."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Ĝi elektas la helecon."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Neteco"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Korektado de koloro"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1975,17 +1973,17 @@ msgstr "Aldonu ruĝon surbaze de nivelo de bluo"
msgid "Controls blue level"
msgstr "Mastrumu nivelon de bluo"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Spegulu bildon"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Tuja antaŭmontro"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Aŭtomata segmentado de areo"
@@ -2015,47 +2013,47 @@ msgstr "Ĝi agordas la faktoron de zomo kiun la skanilo uzos"
msgid "Quick format"
msgstr "Formato rapido"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Akcesora ekipaĵo"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Elpelo"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Ĝi elpelas la folion el aŭtomata provizilo"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Mem-elpelo"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Ĝi elpelas la dokumento post la skanado"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Moduso por ADF"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Ĝi elektas la ADF-moduso (unuopa/fronta-dorsa)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Kesto"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Ĝi elektas la keston por skani"
@@ -2095,7 +2093,7 @@ msgstr ""
"Post la sendo de la skan-komando, ĝi atendas la premon de la butono de "
"la skanilo por startigi la skanadon."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2125,492 +2123,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Agordita de la uzanto"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Kondukta"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Elkluda"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Punktismo"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Difuzo de Eraro"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Nivelo de blanko"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Nivelo de nigro"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Kondiĉa"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontala"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Horizontala"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontala"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertikala"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Vertikala"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Presu"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Meznuancoj"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Plenumu kalibrigon"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Emfazo de bildo"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturado"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Ĝi elbligas aŭtomatan elekton de sojlo por duuma skanado."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Spegula bildo"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Ĝi reflektas bildon horizontale."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Nivelo de blanko laŭ bluo"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Mastrumu nivelon de ruĝo"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtrilo de Koloro"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Glatigo"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valoro de Gama"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Sojlo"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Sojlo"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Redukto de bruo"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Neniu korektado"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Neniu korektado"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Kovrilo de ADF estas malfermita"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Avanaj Opcioj"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Neniu korektado"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Eskludado"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Moduso de provizilo"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2618,65 +2616,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Ripozo de lampo"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Deŝovo laŭ bluo"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Deŝovo laŭ verdo"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Deŝovo laŭ verdo"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Deŝovo laŭ bluo"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Ĝi agordas la deŝovon de la blua kanalo"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2685,374 +2683,374 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Fronta-dorsa skanado"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Avanaj Opcioj"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Redukto de bruo"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "El papero"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "El papero"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "El papero"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "El papero"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "Kovrilo de ADF estas malfermita"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Mana prepara fokusigo"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Mana prepara fokusigo"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Eraro de kontrolo de la aparataro"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Nivelo de blanko"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Regilo de denseco"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Regilo de denseco"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Fronta-dorsa skanado"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Ekstraĵoj"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Malebligu interpoladon"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3061,45 +3059,45 @@ msgstr ""
"Kiam oni uzas altajn distingojn kun la horizontala malpli alta ol la "
"verticala, la horizontala interpolado estas malebligata."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtrilo de Koloro"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"Kiam oni uzas grizan aŭ duuman kolorojn, tiu elektas uzatan koloron."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrigo"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Difinu moduson de kalibrigo"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kaŝmemoro por kalibrigo"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Ripozo de lampo"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3108,103 +3106,113 @@ msgstr ""
"La lampo estos elŝaltata post la fiksita tempo (en minutoj). La valoro "
"signifas ke la lampo neniam ripozos."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Elŝaltita lampo dum kalibrigo de nigro"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
"Nombro da minutoj pasantaj inter la skanado kaj la elŝalto de la lampo"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Atendu butonon"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Atendu butonon"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Atendu butonon"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Grajneca kalibrigo"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Ĝi devigas kalibrigon de skanilon antaŭ la skanado"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Butonoj"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrigu"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Startigu kalibrigadon."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Grajneca kalibrigo"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Kaŝmemoro por kalibrigo"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Grajneca kalibrigo"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "reguligilo de Diafaneco"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Koloro por grizgamo"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Ĝi elektas la skan-koloron uzendan por la grizgamo (defaŭlto: verdo)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opcioj de Sencimigo"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Aŭtomata varmigo"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3213,12 +3221,12 @@ msgstr ""
"Ĝi varmigas la lampon tiel ke ĝia heleco estas sensanĝa anstataŭ ĉiufoja "
"varmigo je 60 sekundoj."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Plena skanado"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3227,12 +3235,12 @@ msgstr ""
"Ĝi skanas la tutan areon, do ĝi skanas ankaŭ la strion de kalibrigo. "
"Atentu. Ne elektu plenan alton. Ĝi estas uzenda nur por testi."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grajneca kalibrigo"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3243,12 +3251,12 @@ msgstr ""
"malebligita, mane agordado de la parametroj estas ebligita. Tiu ĉi opcio "
"estas defaŭlta. Ĝi estas uzenda nur por testi."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grajneca kalibrigo nur por unua skanado"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3260,12 +3268,12 @@ msgstr ""
"opcio se la heleco estas malsama en ĉiu skanita bildo. Ĝi estas uzenda "
"nur por testi."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Linioj de malavanco"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3278,12 +3286,12 @@ msgstr ""
"Malaltaj valoroj ebligas pli rapidan skanadon sed pliigas la riskon pri "
"mankantaj linioj."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valoro de Gama"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Ĝi agordas valoron de gama por ĉiuj kanaloj."
@@ -3299,7 +3307,7 @@ msgid "Scan Mode Group"
msgstr "Grupo de Moduso de Skanado"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Lumbildo"
@@ -3497,162 +3505,237 @@ msgstr "Ŝaltu aŭ elŝaltu la lampon."
msgid "Calibrates for black and white level."
msgstr "Kalibrigu la nivelojn de nigro kaj blanko."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA-Lumbildoj"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA-Negativoj"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Koloro (48 bitoj)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Prokastu elŝalton de lampo"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Ĝi prokastas elŝalton de lampo (de 15 minutoj ĝis 1 horo)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Atendu butonon"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Ĝi atendas butonpremon antaŭ skanado"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Ĝisdatigu staton de butono"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Fonto de skanilo"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Duuma Koloro"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Avanaj Opcioj"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grajna"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fajna"
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Personigita"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Aŭtomata"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Trapasanta"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC-Grizo"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA-Grizo"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Malrapida"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normala"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rapida"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Tre Rapida"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-bilderoj"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-bilderoj"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-bilderoj"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Presu"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Filmo"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Kondiĉa"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Eksperimento"
@@ -3830,8 +3913,8 @@ msgstr "Elŝaltu lampon"
msgid "Shut off scanner lamp."
msgstr "Ĝi elŝaltas la lampon de la skanilo."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Grando de folio"
@@ -3842,8 +3925,7 @@ msgstr "Grando de folio"
msgid "Automatic separation"
msgstr "Mem-dividado"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 horizontala"
@@ -3858,38 +3940,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Ĝi ebligas moduson de la regado de denseco"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Mana prepara fokusigo"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Mana prepara fokusigo"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Ebligu frontan-dorsan skanado"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Grando de folio en provizilo"
@@ -4007,201 +4085,201 @@ msgstr ""
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Meznuancoj"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Meznuancoj"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Difuzo de Eraro"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normala"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Lumbrilo"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "skanilo por negativoj"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "El papero"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Defaŭlto"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Milda"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Malrapida"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Meza"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Ruĝo"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Verdo"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Fonto de skanilo"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Moduso de provizilo"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Agordu moduson de provizilo"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Ĝi ebligas/malebligas aŭtomatan fokusigon"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Ĝi ebligas moduson de la regado de denseco"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Agordu moduson de provizilo"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Agordu moduson de provizilo"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Aŭtomata sojlo"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4210,95 +4288,95 @@ msgstr ""
"Heleco, kontrasto, nivelo de blanko, gama, redukto de bruo kaj emfazo de "
"bildo estos aŭtomate agorditaj"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Redukto de bruo"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Ĝi reduktas bruon de izolitaj punktoj"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Emfazo de bildo"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Ĝiu ebligas emfazon de bildo"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gama"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Ŝaltu lampon"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Ŝaltu aŭ elŝaltu la lampon."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Ĝi reflektas bildon vertikale."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5019,17 +5097,17 @@ msgstr "3x3 personigita"
msgid "2x2 custom"
msgstr "2x2 personigita"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Rapida griza moduso"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Ĝi estas rapida skanado per grizgamo (malalta kvalito)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5038,82 +5116,82 @@ msgstr ""
"Ĝi mendas ke ĉiuj antaŭmontroj estu skanitaj per la plej rapida moduso "
"(malalta kvalito). Tiu ĉi povus esti sen koloroj aŭ kun malalta difino."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Ripozo de la lampo (en minutoj)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Ĝi agordas la tempon (en minutoj) post kiu lampo estas elŝaltata."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Elŝaltu lampon"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Ĝi elŝaltas la lampon tuj."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Heleco de ruĝo"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Ĝi mastrumas la helecon de la ruĝa kanalo de la akirita bildo."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Heleco de verdo"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Ĝi mastrumas la helecon de la verda kanalo de la akirita bildo."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Heleco de bluo"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Ĝi mastrumas la helecon de la blua kanalo de la akirita bildo."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrasto de ruĝa kanalo"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Ĝi mastrumas la kontraston de la ruĝa kanalo de la akirita bildo."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrasto de verda kanalo"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Ĝi mastrumas la kontraston de la verda kanalo de la akirita bildo."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrasto de blua kanalo"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Ĝi mastrumas la kontraston de la blua kanalo de la akirita bildo."
@@ -5157,22 +5235,22 @@ msgstr ""
"Ĝi varmigas la lampon tiel ke ĝia heleco estas sensanĝa anstataŭ ĉiufoja "
"varmigo je 40 sekundoj."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negativa filmo"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativo"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Fajna koloro"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/es.gmo b/po/es.gmo
deleted file mode 100644
index 7960492..0000000
--- a/po/es.gmo
+++ /dev/null
Binary files differ
diff --git a/po/es.po b/po/es.po
index 6ecc019..c458c18 100644
--- a/po/es.po
+++ b/po/es.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2009-06-25 10:22+0100\n"
"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
"Language-Team: GALPon MiniNo <minino@galpon.org>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2: plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Spanish\n"
"X-Poedit-Country: SPAIN\n"
@@ -30,36 +30,36 @@ msgid "Standard"
msgstr "Estándar"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometría"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Mejora"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -87,7 +87,7 @@ msgstr "Forzar vista previa monocroma"
msgid "Bit depth"
msgstr "Bit de profundidad"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -128,7 +128,7 @@ msgstr "Abajo-derecha X"
msgid "Bottom-right y"
msgstr "Abajo-derecha Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -284,7 +284,7 @@ msgstr "Nombre de archivo"
msgid "Halftone pattern size"
msgstr "Tamaño del patrón de medios tonos"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Patrón de medios tonos"
@@ -296,8 +296,8 @@ msgstr "Enlazar resoluciones X e Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativo"
@@ -982,7 +982,7 @@ msgstr "Predeterminados"
msgid "Set default values for enhancement controls."
msgstr "Ajustar valores predeterminados para los controles de mejora."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibración"
@@ -1124,7 +1124,7 @@ msgstr "Negativos"
msgid "Slides"
msgstr "Diapositivas"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1145,332 +1145,332 @@ msgstr "1/2 de la velocidad normal"
msgid "1/3 normal speed"
msgstr "1/3 de la velocidad normal"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "parámetro redondeado"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "desconocido/a"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "atasco en el alimentador"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "la tapa del alimentador está abierta"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "fallo de lámpara"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "error en el posicionamiento del cabezal de escaneo"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "Error de verificación de CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "Error de verificación de RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "Error de verificación de ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "error de verificación de hardware"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "fallo de la lámpara de unidad de transparencias"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
"fallo de posición del cabezal de escaneo de la unidad de transparencias"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "error en la longitud de la lista de parámetros"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "código de orden de operación incorrecto"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "campo incorrecto en CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "LUN no soportado"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "campo incorrecto en la lista de parámetros"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "error en la secuencia de ordenes"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "se especificaron demasiadas ventanas"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "no se encuentra el soporte"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "mensaje de bit de IDENTIFICACIÓN incorrecto"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "la opción no conecta"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "reiniciar el encendido / reiniciar el bus del dispositivo"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parámetro cambiado por otro iniciador"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "sin información adicional"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "fallo al volver a escoger"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "error de paridad SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "el iniciador detectó la recepción deun mensaje de error"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "mensaje de error incorrecto"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "error de límite de tiempo"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "error de sombreado en la unidad de transparencias"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lámpara no estabilizada"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "escáner de películas"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "escáner plano"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Tipo de película"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Seleccionar el tipo de película, p.e. negativo o diapositiva"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Tipo de película negativo"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Selecciona el tipo de negativo de película"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Resolución del hardware"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Usar sólo resoluciones de hardware"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Enfoque"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Enfoque automático"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Activar/desactivar enfoque automático"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Enfoque automático solo una vez"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Hacer enfoque automático solo una vez entre expulsiones"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Posición de foco manual"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Ajustar el sistema óptico de foco en la posición manual (predeterminado: "
"128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Márgenes de escaneo"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Ajustes de color extra"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Invertir imagen"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Invierte la imagen horizontalmente"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Exposición automática"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Activar/desactivar la característica de exposición automática"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Calibrar ahora"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Ejecutar calibración *ahora*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Autodiagnóstico"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Realizar autodiagnóstico del escáner"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reiniciar escáner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Reiniciar el escáner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Manejar el soporte"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Expulsar la película después de cada escaneo"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
"Expulsar automáticamente la película del dispositivo después de cada "
"escaneo"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Expulsar la película antes de salir"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
@@ -1478,164 +1478,163 @@ msgstr ""
"Expulsar automáticamente la película del dispositivo antes de salir del "
"programa"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Expulsar película ahora"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Expulsar la película *ahora*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Alimentador de documentos extras"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Sólo plano"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Desactivar el alimentador automático de documentos y usar sólo el plano"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Unidad de transparencias"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
"Activar/desactivar la unidad de transparencias (FAU, unidad adaptadora "
"de película)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Película en negativo"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Película en positivo o en negativo"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Control de densidad"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Ajustar el modo de control de densidad"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Tasa de transparencia"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Seleccionar tipo de película"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Seleccionar el tipo de película"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Plana"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, fuzzy, no-c-format
msgid "ADF Front"
msgstr "la tapa del alimentador está abierta"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "atasco en el alimentador"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Alimentador a dos caras"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Imprimir"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Dos caras"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rojo"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Verde"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Azul"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Mejora"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Mejora"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Mejora"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1643,18 +1642,18 @@ msgstr "Mejora"
msgid "None"
msgstr "Ninguno"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1671,13 +1670,13 @@ msgstr "Una cara"
msgid "Duplex"
msgstr "Dos caras"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Unidad de transparencias"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1790,8 +1789,8 @@ msgstr "Impresoras de inyección de tinta"
msgid "CRT monitors"
msgstr "Monitores CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Predeterminado"
@@ -1854,51 +1853,50 @@ msgstr "A4"
msgid "Max"
msgstr "Máx"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Modo de escaneo"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Selecciona medios tonos"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Exclusión"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Seleccionar lo que se va a excluir."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Selecciona el brillo."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Enfoque"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Corrección de color"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1990,17 +1988,17 @@ msgstr "Añade rojo basándose en el nivel de azul."
msgid "Controls blue level"
msgstr "Controla el nivel de azul"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Invertir la imagen."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Vista previa rápida"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Segmentación automática de área"
@@ -2030,47 +2028,47 @@ msgstr "Define el factor de zoom que usará el escáner"
msgid "Quick format"
msgstr "Formato rápido"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Equipamiento opcional"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Expulsar"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Expulsar la hoja del alimentador"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Expulsión automática"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Expulsar el documento después del escaneo"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Modo alimentador"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Seleccionar el modo del alimentador (una cara/dos caras)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Bahía"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Seleccione la bahía para escanear"
@@ -2112,7 +2110,7 @@ msgstr ""
"Después de enviar la orden de escanear, esperar hasta que se presione el "
"botón del escáner para empezar realmente el proceso de escaneo."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2142,494 +2140,494 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Definida por el usuario"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Activo"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Apagado"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Difuminado"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Difusión de error"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Nivel de blanco"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Nivel de negro"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Condicional"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Horizontal"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontal"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Vertical"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Imprimir"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Medios tonos"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Calibración de precisión"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Resalte de imagen"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturación"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Activar la determinación automática de umbral para escaneos como línea "
"de arte."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Invertir imagen"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Invertir la imagen horizontalmente."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Nivel de blanco para azul"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Controla el nivel de rojo"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtro de color"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Suavizado"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valor gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Umbral"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Umbral"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Reducción de ruido"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Sin corrección"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Sin corrección"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "la tapa del alimentador está abierta"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Opciones avanzadas"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Sin corrección"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Exclusión"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Modo de alimentación"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2637,65 +2635,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Tiempo de espera de la lámpara"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Desviación azul"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Desviación verde"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Desviación verde"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Desviación azul"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Ajusta el desplazamiento del canal de azul"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "No queda memoria"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2704,374 +2702,374 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Escaneo a dos caras"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Opciones avanzadas"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Reducción de ruido"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Del papel"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Del papel"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Del papel"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Del papel"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "La tapa del escáner está abierta"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Foco previo manual"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Foco previo manual"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "error de verificación de hardware"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Nivel de blanco"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Control de densidad"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Control de densidad"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Escaneo a dos caras"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Desactivar interpolación"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3080,45 +3078,45 @@ msgstr ""
"Cuando se usan altas resoluciones en las que la resolución horizontal es "
"más pequeña que la vertical, esto desactiva la interpolación horizontal."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtro de color"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"Cuando se usa gris o línea de arte esta opción selecciona el color usado."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Calibración"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Define el modo de calibración"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Caché de datos de calibración"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Tiempo de espera de la lámpara"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3127,103 +3125,113 @@ msgstr ""
"La lámpara será apagada después del tiempo dado (en minutos). Un valor "
"de 0 significa que la lámpara no será apagada"
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Apagar la lámpara durante la calibración de oscuridad"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Minutos que tardará la lámpara en apagarse tras el escaneo"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Botón de archivo"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Botón de OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Botón de energía"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Botón de correo-e"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Limpiar la calibración"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Fuerza la calibración del escáner antes de realizar el escaneo"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Botones"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Calibrar"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Iniciar calibración usando una hoja especial"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Limpiar la calibración"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Limpiar la caché de datos de calibración"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibración tosca"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Adaptador de transparencias"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Color en modo gris"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Selecciona qué color de escaneo se usará en modo gris (predefinido: "
"verde)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opciones de depuración"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Calentamiento automático"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3232,12 +3240,12 @@ msgstr ""
"Calentar hasta que el brillo de la lámpara sea constante en vez de "
"esperar por los 60 segundos de calentamiento."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Escaneo completo"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3246,12 +3254,12 @@ msgstr ""
"Escanear todo el área de escaneado incluyendo la franja de calibración. "
"Tenga cuidado. No seleccione la altura total. Sólo para pruebas."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Calibración tosca"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3263,12 +3271,12 @@ msgstr ""
"opciones de ajuste de los parámetros de forma manual en la interfaz "
"analógica. Esta opción está activada como predefinida. Solo para pruebas."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Calibración tosca sólo para el primer escaneo"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3280,12 +3288,12 @@ msgstr ""
"de la imagen es diferente con cada escaneo, desactive esta opción. Sólo "
"para pruebas."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Lineas de vuelta atrás"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3297,12 +3305,12 @@ msgstr ""
"lo que el equipo puede recibir datos. Valores bajos hacen que los "
"escaneos sean más rápidos, pero aumentan los riesgos de omitir líneas."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valor gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Ajusta el valor gamma para todos los canales."
@@ -3318,7 +3326,7 @@ msgid "Scan Mode Group"
msgstr "Grupo de modo de escaneo"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositiva"
@@ -3526,161 +3534,236 @@ msgstr "Enciende o apaga la lámpara"
msgid "Calibrates for black and white level."
msgstr "Calibrar el nivel de blanco y negro."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "Alimentador automático de documentos (ADF)"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "Adaptador (TMA) para diapositivas"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "Adaptador (TMA) para negativos"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Color (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Retardar el tiempo de apagado de la lámpara"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
"Retarda los tiempos de apagado de la lámpara (de 15 minutos a 1 hora)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Esperando por el botón"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Esperando por el botón antes de escanear"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Actualizar estado del botón"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Contador de escaneos"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Linea de arte a color"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Opciones avanzadas"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Gruesa"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fina"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Personalizado"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Auto"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "Adaptador de transparencias RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "A través"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC Gris"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Adaptador de transparencias gris"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lento"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rápido"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Muy rápido"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-píxeles"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-píxeles"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-píxeles"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Imprimir"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Tira de película"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "Adaptador de transparencias (XPA)"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Condicional"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experimento"
@@ -3862,8 +3945,8 @@ msgstr "Apagar lámpara"
msgid "Shut off scanner lamp."
msgstr "Apagar la lámpara del escáner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Tamaño del papel"
@@ -3874,8 +3957,7 @@ msgstr "Tamaño del papel"
msgid "Automatic separation"
msgstr "Separación automática"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 apaisado"
@@ -3890,38 +3972,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Ajustar el modo de control de densidad"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Foco previo manual"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Foco previo manual"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Activa el escaneo por las dos caras"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Tamaño físico del papel en el alimentador"
@@ -4037,199 +4115,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Medios tonos"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Medios tonos"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Difusión de error"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Resalte"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "escáner de películas"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Del papel"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Predeterminado"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Suave"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lento"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Soporte"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Rojo"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Verde"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Origen de escaneo"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Modo de alimentación"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Ajusta el modo de alimentación"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Activar/desactivar enfoque automático"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Ajustar el modo de control de densidad"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Ajusta el modo de alimentación"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Ajusta el modo de alimentación"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Umbral automático"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4238,95 +4316,95 @@ msgstr ""
"Ajusta automáticamente el brillo, contraste, niveles de blanco, gamma y "
"reducción de intensidad del ruido de la imagen"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Reducción de ruido"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reduce los puntos aislados de ruido"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Resalte de imagen"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Ajusta el resalte de la imagen"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Encender lámpara"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Enciende o apaga la lámpara"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Invertir la imagen verticalmente."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5051,17 +5129,17 @@ msgstr "3x3 personalizado"
msgid "2x2 custom"
msgstr "2x2 personalizado"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Modo gris rápido"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Escanear en modo gris rápido (menor calidad)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5070,82 +5148,82 @@ msgstr ""
"Precisa que todas las vistas previas se hagan del modo más rápido (baja "
"calidad). Este puede ser un modo sin color o un modo de baja resolución."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Tiempo de apagado de lámpara (minutos)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Ajustar el tiempo (en minutos) tras el que se apagará la lámpara."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Apagar la lámpara"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Apaga la lámpara inmediatamente."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Brillo de rojo"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Controla el brillo del canal de rojo de la imagen obtenida."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Brillo de verde"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Controla el brillo del canal de verde de la imagen obtenida."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Brillo de azul"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Controla el brillo del canal de azul de la imagen obtenida."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contraste de canal de rojo"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Controla el contraste del canal de rojo de la imagen obtenida."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contraste de canal de verde"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Controla el contraste del canal de verde de la imagen obtenida."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contraste de canal de azul"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Controla el contraste del canal de azul de la imagen obtenida."
@@ -5189,22 +5267,22 @@ msgstr ""
"Calentar hasta que el brillo de la lámpara sea constante en vez de "
"esperar por los 40 segundos de calentamiento."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Película en negativo"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativo"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Color fino"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/fi.gmo b/po/fi.gmo
deleted file mode 100644
index a3616bd..0000000
--- a/po/fi.gmo
+++ /dev/null
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 7aeae26..c314712 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.11\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 23:00+0100\n"
"Last-Translator: Harri Järvi <harri.jarvi@tut.fi>\n"
"Language-Team: Debian l10n Finnish <debian-l10n-finnish@lists.debian."
@@ -27,36 +27,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Parannus"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -84,7 +84,7 @@ msgstr "Pakota yksiväriset esikatselut"
msgid "Bit depth"
msgstr "Bittisyvyys"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -125,7 +125,7 @@ msgstr "Oikea alakulma x"
msgid "Bottom-right y"
msgstr "Oikea alakulma y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -281,7 +281,7 @@ msgstr "Tiedostonimi"
msgid "Halftone pattern size"
msgstr "Rasterikuvion koko"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Rasterikuvio"
@@ -293,8 +293,8 @@ msgstr "Sido X- ja Y-tarkkuus"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negatiivi"
@@ -960,7 +960,7 @@ msgstr "Oletukset"
msgid "Set default values for enhancement controls."
msgstr "Aseta oletusasetukset parantimille."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrointi"
@@ -1098,7 +1098,7 @@ msgstr "Negatiivi"
msgid "Slides"
msgstr "Dia"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1119,487 +1119,486 @@ msgstr "2x2 normaali"
msgid "1/3 normal speed"
msgstr "3x3 normaali"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, fuzzy, no-c-format
msgid "rounded parameter"
msgstr "Epämääräiset parametrit"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, fuzzy, no-c-format
msgid "ADF jam"
msgstr "ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Gamma"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Läpinäkyvyysyksikkö"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Läpinäkyvyysyksikkö"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "Tasokuvanlukija"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "Tasokuvanlukija"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmin tyyppi"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Negatiivifilmi"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Valitse koekuva"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Kuvanluvun tarkkuus"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Näyttää lyhyen tarkkuuslistan"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Automaattinen poisto"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, fuzzy, no-c-format
msgid "Enable/disable auto focus"
msgstr "Poista esitarkennus"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Korjaa tarkennuspiste"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Peilikuva"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Peilaa kuvan vaakasuunnassa"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Aseta valotusaika"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, fuzzy, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Valotusajan asettaminen"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Kalibrointi"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Määrää kalibraatiotavan"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "arkkisyöttöinen"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "arkkisyöttöinen"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Poista kohde kuvanluvun jälkeen"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Asiakirjan syöttäjä"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Taso"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Läpinäkyvyysyksikkö"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Negatiivifilmi"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Positiivifilmi"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Läpinäkyvyysyksikkö"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Filmin tyyppi"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, fuzzy, no-c-format
msgid "Select the film type"
msgstr "Valitsee rasterin"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Taso"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "ADF"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, fuzzy, no-c-format
msgid "ADF Duplex"
msgstr "Kaksipuolinen"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Tulosta"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Kaksipuolinen"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Punainen"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Vihreä"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Sininen"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Parannus"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Parannus"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Parannus"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1607,18 +1606,18 @@ msgstr "Parannus"
msgid "None"
msgstr "Ei mikään"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1635,13 +1634,13 @@ msgstr "Yksipuolinen"
msgid "Duplex"
msgstr "Kaksipuolinen"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Läpinäkyvyysyksikkö"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1754,8 +1753,8 @@ msgstr "Mustesuihkutulostimet"
msgid "CRT monitors"
msgstr "Loisteputkinäytöt"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Oletus"
@@ -1818,51 +1817,50 @@ msgstr "A4"
msgid "Max"
msgstr "Koko alue"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Lukutapa"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Valitsee rasterin"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr ""
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr ""
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Valitsee kirkkauden."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Terävyys"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Värikorjaus"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Valitsee värikorjaustaulukon valitulle tuloslaitteelle."
@@ -1952,17 +1950,17 @@ msgstr "Lisää punaista sinisen määrän perusteella"
msgid "Controls blue level"
msgstr "Määrää sinisen määrän"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Peilaa kuvan."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Nopea esikatselu"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automaattinen osittelu"
@@ -1992,47 +1990,47 @@ msgstr "Määrää kuvanlukijan käyttämän zoom-kertoimen"
msgid "Quick format"
msgstr "Nopea formaatti"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Lisävaruste"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Poista"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Poista kohde syöttölaitteesta"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automaattinen poisto"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Poista kohde kuvanluvun jälkeen"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Syötttapa"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Valitsee syöttötavan (yksi-/kaksipuolinen)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Taso"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Valitsee kuvanluvun tasolta"
@@ -2071,7 +2069,7 @@ msgstr ""
"Kuvanlukukomennon lähettämisen jälkeen, odota kunnes kuvanlukijan "
"painiketta todella painetaan, ennen kuvanluvun aloittamista."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2101,492 +2099,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Käyttäjän määrittelemä"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Päällä"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Poissa"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Rasteri"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr ""
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Valkotaso"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Mustataso"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Ehdollinen"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Vaaka"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Vaaka"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Vaaka"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Pysty"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Pysty"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Tulosta"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Rasteri"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Raakakalibrointi"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Kuvan korostus"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Kylläisyys"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Aseta automaattinen kynnysarvon päättely viivapiirrosta varten."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Peilikuva"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Peilaa kuvan vaakasuunnassa"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Sinisen valkotaso"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Määrää punaisen määrän"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Väriviivapiirros"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Pehmennys"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Kynnys"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Kynnys"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Kohinan poisto"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Ei korjausta"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Ei korjausta"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Syöttötapa"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Päivitä asetukset"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Ei korjausta"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Valo päälle"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Syöttötapa"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2594,65 +2592,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Valo pois"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Sinisen siirtymä"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Vihreän siirtymä"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Vihreän siirtymä"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Sinisen siirtymä"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Asettaa sinisen kanavan siirtymän"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2661,519 +2659,529 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Kaksipuolinen"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Päivitä asetukset"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Kohinan poisto"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Paperilta"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Paperilta"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Paperilta"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Paperilta"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Manuaalinen esitarkennus"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Manuaalinen esitarkennus"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Kuvanluvun tarkkuus"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Valkotaso"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Punaisen voimakkuus"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Kaksipuolinen"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, fuzzy, no-c-format
msgid "Extras"
msgstr "Hyvin nopea"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Poista peruutus."
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Väriviivapiirros"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrointi"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Määrää kalibraatiotavan"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kalibrointitila"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, fuzzy, no-c-format
msgid "Lamp off time"
msgstr "Valo pois"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Raakakalibrointi"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Odota painiketta"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Odota painiketta"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Odota painiketta"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Raakakalibrointi"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Pakottaa kalibroinnin ennen kuvanlukua."
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, fuzzy, no-c-format
msgid "Buttons"
msgstr "Painikkeen tila"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibroi"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Aloita kalibrointi."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Raakakalibrointi"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Kalibrointitila"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Raakakalibrointi"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Läpinäkyvyysyksikkö"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Debug-asetukset"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automaattinen lämmitys"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3182,12 +3190,12 @@ msgstr ""
"Lämmittää kunnes lampun kirkkaus tasaantuu. Muuten lämmitetään 60 "
"sekuntia."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Koko alue"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3196,12 +3204,12 @@ msgstr ""
"Lukee koko alueen, mukaan lukien kalibrointinauha. Ole varovainen. Älä "
"valitse täyttä korkeutta. Tämä asetus on vain testausta varten."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Raakakalibrointi"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3212,12 +3220,12 @@ msgstr ""
"poissa, voit asettaa analogia-asetukset manuaalisesti. Asetus on "
"oletuksena päällä. Tämä asetus on vain testausta varten."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Raakakalibrointi vain ensimmäisellä kuvanluvulla"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3229,12 +3237,12 @@ msgstr ""
"kirkkaus on eri joka kerralla, poista tämä asetus. Tämä asetus on "
"testausta varten."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, fuzzy, no-c-format
msgid "Backtrack lines"
msgstr "Käytä jäljitystä"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3243,12 +3251,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Asettaa gamma-arvon kaikille kanaville."
@@ -3264,7 +3272,7 @@ msgid "Scan Mode Group"
msgstr "Lukutapa"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Dia"
@@ -3462,160 +3470,235 @@ msgstr "Asettaa valon päälle/pois"
msgid "Calibrates for black and white level."
msgstr ""
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Dia"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negatiivi"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Väri 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Valo pois"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Odota painiketta"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Lämmitä lamppu ennen kuvanlukua"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Painikkeen tila"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Lähde"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Väriviivapiirros"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Päivitä asetukset"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Raaka"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Hieno"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Oma"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automaattinen"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC-RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA-RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr ""
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC-harmaa"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA-harmaa"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Hidas"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normaali"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Nopea"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Hyvin nopea"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2 pikseliä"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4 pikseliä"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8 pikseliä"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Tulosta"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Filmiliuska"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Ehdollinen"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, fuzzy, no-c-format
msgid "Experiment"
msgstr "Valotusaika"
@@ -3796,8 +3879,8 @@ msgstr "Sulje lamppu"
msgid "Shut off scanner lamp."
msgstr "Sulkee kuvanlukijan lampun."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Paperin koko"
@@ -3808,8 +3891,7 @@ msgstr "Paperin koko"
msgid "Automatic separation"
msgstr "Automaattinen osiointi"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 vaaka"
@@ -3824,38 +3906,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Manuaalinen esitarkennus"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Manuaalinen esitarkennus"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Kaksipuolinen kuvanluku"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Paperin koko syöttölaitteessa"
@@ -3971,199 +4049,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Rasteri"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Rasteri"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr ""
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normaali"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Korostus"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "Tasokuvanlukija"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Paperilta"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Oletus"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Pehmeä"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Hidas"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Keskitaso"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Punainen"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Vihreä"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Lähde"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Syöttötapa"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Asettaa syöttötavan"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Poista esitarkennus"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Poista esitarkennus"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Asettaa syöttötavan"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Asettaa syöttötavan"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automaattinen kynnys"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4172,95 +4250,95 @@ msgstr ""
"Asettaa automaattisesti kirkkauden, kontrastin, valkotasapainon, gamman, "
"kohinan poiston ja korostuksen"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Kohinan poisto"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Vähentää yksittäistä pistekohinaa"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Kuvan korostus"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Asettaa kuvan korostuksen"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Valo päälle"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Asettaa valon päälle/pois"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Peilaa kuvan pystysuunnassa."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4972,17 +5050,17 @@ msgstr "3x3 oma"
msgid "2x2 custom"
msgstr "2x2 oma"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Nopea harmaa"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Lue nopeassa harmaassa tilassa (huonompi laatu)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -4991,82 +5069,82 @@ msgstr ""
"Kaikki esikatselut luetaan nopeimmalla tavalla (huonoimmalla laadulla). "
"Tämä voi olla väritön matalatarkkuuksinen tila."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, fuzzy, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Valo pois lopetettaessa"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, fuzzy, no-c-format
msgid "Turn lamp off"
msgstr "Asettaa valon päälle/pois"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, fuzzy, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Asettaa kuvanlukijan valon päälle/pois"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Punaisen kirkkaus"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Asettaa punaisen kanavan kirkkauden."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Vihreän kirkkaus"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Asettaa vihreän kanavan kirkkauden."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Sinisen kirkkaus"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Asettaa sinisen kanavan kirkkauden."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Punaisen kontrasti"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Asettaa punaisen kanavan kontrastin."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Vihreän kontrasti"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Asettaa vihreän kanavan kontrastin."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Sinisen kontrasti"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Asettaa sinisen kanavan kontrastin."
@@ -5110,22 +5188,22 @@ msgstr ""
"Lämmittää kunnes lampun kirkkaus tasaantuu. Muuten lämmitetään 40 "
"sekuntia."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negatiivifilmi"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negatiivi"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/fr.gmo b/po/fr.gmo
deleted file mode 100644
index ea03247..0000000
--- a/po/fr.gmo
+++ /dev/null
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index c921e70..e700329 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -43,8 +43,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.19\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2008-01-17 22:25+0100\n"
"Last-Translator: Yann E. MORIN <yann dot morin dot 1998 at anciens dot "
"enib dot fr>\n"
@@ -66,36 +66,36 @@ msgid "Standard"
msgstr "Général"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Aire de numérisation"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Réglages fins"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -123,7 +123,7 @@ msgstr "Force l'aperçu en noir et blanc"
msgid "Bit depth"
msgstr "Profondeur"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -164,7 +164,7 @@ msgstr "X bas-droit"
msgid "Bottom-right y"
msgstr "Y bas-droit"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -320,7 +320,7 @@ msgstr "Nom de fichier"
msgid "Halftone pattern size"
msgstr "Taille du motif demi-teinte"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Motif demi-teinte"
@@ -332,8 +332,8 @@ msgstr "Lier les échantillonnage X et Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Négatif"
@@ -1029,7 +1029,7 @@ msgstr "Valeurs par défaut"
msgid "Set default values for enhancement controls."
msgstr "Valeurs par défaut pour les réglages fins."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibration"
@@ -1171,7 +1171,7 @@ msgstr "Négatifs"
msgid "Slides"
msgstr "Diapositives"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1192,490 +1192,489 @@ msgstr "Vitesse 1/2"
msgid "1/3 normal speed"
msgstr "Vitesse 1/3"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "Paramètres arrondis"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "inconnu(e)"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "Bourrage du chargeur automatique"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "Couvercle du chargeur automatique ouvert"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lampe défectueuse"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "erreur de positionnement du capteur"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "erreur de test du processeur (CPU)"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "erreur de test de la mémoire RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "erreur de test de la mémoire ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "erreur de test du matériel"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "lampe de l'adaptateur de transparent défectueuse"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "erreur de positionnement du capteur pour transparents"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "longueur de la liste de paramètres incorrecte"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "code commande invalide"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "champ du bloc de description de commande (CDB) invalide"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "Numéro d'unité logique (LUN) non supporté"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "champ invalide dans la liste des paramètres"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "erreur dans la séquence de commandes"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "trop de fenêtres spécifiées"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "document absent"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "message d'identification (IDENTIFY) invalide"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "option non connectée"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "Réinitialisation au démarrage / du bus"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "paramètre modifié par un autre maître"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "pas d'information supplémentaire"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "échec de re-sélection"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "erreur de parité SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "message d'erreur détecté "
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "message d'erreur invalide"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "erreur de dépassement de temps"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "erreur de l'adaptateur pour transparents"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lampe non stabilisée"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "numériseur de transparents"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "numériseur à plat"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Type de film"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Sélectionne le type de transparents (négatifs ou diapositives)"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Film négatif"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Sélectionne l'utilisation de film négatif"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Echantillonnage matériel"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Utilise seulement les valeurs d'échantillonnage matériel"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Mise au point"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Mise au point automatique"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Activer/désactiver la mise au point automatique"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Une seule mise au point automatique"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
"Effectuer la mise au point automatique une seule fois entre chaque "
"éjection"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Mise au point manuelle"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr "Effectuer manuellement la mise au point (128 par défaut)"
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Marges"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Plus de réglages de couleur"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Image miroir"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Image miroir horizontal"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Temps d'exposition automatique"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Activer/désactiver le temps d'exposition automatique"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Calibrer maintenant"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Effectue la calibration *maintenant*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Diagnostic automatique"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Effectue le diagnostic automatique du scanner"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Réinitialiser le scanner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Réinitialiser le scanner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Maniement des documents"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Ejecte le film après chaque numérisation"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Ejecte automatiquement le film après chaque numérisation"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Ejecte le film avant de quitter"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr "Ejecte automatiquement le film avant de quitter le programme"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Ejecte le film maintenant"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Ejecte le film *maintenant*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Chargeur automatique de document, options avancées"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "A plat seulement"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Ne pas utiliser le chargeur automatique, seulement le scanner à plat"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Adaptateur pour transparents"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Allumer/éteindre l'adaptateur pour transparents"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Film négatif"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Film positif ou négatif"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Contrôle de densité"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Positionne le mode de contrôle de la densité"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Rapport de transparence"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Type de film"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Sélectionne le type de film"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "A plat"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "Chargeur automatique de documents, recto"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "Chargeur automatique de documents, verso"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Chargeur automatique de documents, recto-verso"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Avant"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, fuzzy, no-c-format
msgid "Card Back"
msgstr "Arrière"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Recto-verso"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rouge"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Vert"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Bleu"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Augmente le rouge"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Augmente le vert"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Augmente le bleu"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1683,18 +1682,18 @@ msgstr "Augmente le bleu"
msgid "None"
msgstr "Aucun(e)"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1711,13 +1710,13 @@ msgstr "Recto"
msgid "Duplex"
msgstr "Recto-verso"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Adaptateur pour transparents"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1830,8 +1829,8 @@ msgstr "Imprimantes à jet d'encre"
msgid "CRT monitors"
msgstr "Moniteurs à tube cathodique"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Valeur par défaut"
@@ -1894,26 +1893,25 @@ msgstr "A4"
msgid "Max"
msgstr "Max"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Mode de numérisation"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Sélectionne la demi-teinte."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Exclusion"
@@ -1921,27 +1919,27 @@ msgstr "Exclusion"
# Dictionnary gives me 'marginal' for dropout. Sounds like
# a part of the scan area is 'droped out', I mean excluded.
# No, it is one of the colours that is excluded.
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Sélectionne le couleur exclu."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Sélectionne la brillance."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Netteté"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Correction de couleur"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -2033,17 +2031,17 @@ msgstr "Ajoute au rouge en fonction du niveau de bleu"
msgid "Controls blue level"
msgstr "Contrôle le niveau de bleu"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Effectue une symétrie verticale de l'image."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Aperçu rapide"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Séparation automatique"
@@ -2073,49 +2071,49 @@ msgstr "Définit le facteur de zoom utilisé par le scanner"
msgid "Quick format"
msgstr "Format rapide"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Equipement optionnel"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Ejecter"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Ejecter la feuille du chargeur automatique"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Ejection automatique"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Ejecte le document après la numérisation"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Mode du chargeur automatique de documents"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
"Sélectionne le mode du chargeur automatique de documents (recto/recto-"
"verso)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Baie"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Sélectionne la baie contenant le document à numériser"
@@ -2155,7 +2153,7 @@ msgstr ""
"Aprés avoir envoyé la commande de numérisation, attendre l'appui du "
"bouton avant de commencer la numérisation."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Infra-rouge"
@@ -2185,495 +2183,495 @@ msgstr "Profil de température de couleurs interne"
msgid "User defined CCT profile"
msgstr "Profil de température de couleurs utilsateur"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Activé"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Aucun"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "Seuil dynamique (DTC)"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "Seuil dynamique simplifié (SDTC)"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Tramage"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Diffusion d'erreur"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Blanc"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Noir"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Continuer"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Arréter"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr "Horizontal large"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontal étroit"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr "Vertical large"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "De haut en bas"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "De bas en haut"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Avant"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Arrière"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Demi-teinte"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Effectue la calibration"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Accentuation de l'image"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturation"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Active la détection automatique du seuil pour la numérisation en mode "
"trait."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Image miroir"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Renverse l'image horizontalement."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Niveau blanc des bleus"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Contrôle le niveau de rouge"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtre de couleur"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Lissage"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valeur de gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Courbe du seuil"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, fuzzy, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
"Courbe dynamique de seuil, de clair à foncé, normallement entre 50-65"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Seuil"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Réduction du bruit"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Pas de correction"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Pas de correction"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Couvercle du chargeur automatique ouvert"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Options avancées"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Pas de correction"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Exclusion"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Mode de chargement"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2681,65 +2679,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Temps avant extinction de la lampe"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Décalage des bleus"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Décalage des verts"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Décalage des verts"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Décalage des bleus"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Fixe le décalage pour le bleu"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "A court de mémoire"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2748,363 +2746,363 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Numérisation recto-verso"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Options avancées"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Réduction du bruit"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Avec du papier"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Avec du papier"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Avec du papier"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Avec du papier"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "Couvercle du scanner ouvert"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Mise au point manuelle"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Mise au point manuelle"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "erreur de test du matériel"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Niveau blanc"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Contrôle de densité"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Contrôle de densité"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Numérisation recto-verso"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
"Courbe dynamique de seuil, de clair à foncé, normallement entre 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr "Désactiver le mode Trait dynamique"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
@@ -3113,12 +3111,12 @@ msgstr ""
"Utilise le mode Trait du matériel, au lieu d'utiliser un algorithme "
"logiciel adaptatif."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Désactiver l'interpolation"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3128,45 +3126,45 @@ msgstr ""
"plus faible que la résolution verticale, ne pas faire d'interpolation "
"horizontale."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtre de couleur"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"En niveaux de gris ou en mode trait, sélectionne la couleur à utiliser."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Calibration"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Définit le mode de calibration"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Cache des données de calibration"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Temps avant extinction de la lampe"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3175,102 +3173,112 @@ msgstr ""
"La lampe sera éteinte après ce laps de temps (en minutes). Entrer 0 pour "
"ne pas éteindre la lampe automatiquement."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Eteindre la lampe durant la calibration des noirs"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Délai en minutes avant d'éteindre la lampe après une numérisation."
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Bouton 'fichier'"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Bouton 'reconnaissance de caractères (OCR)'"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Bouton 'marche'"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Bouton 'courrier électronique'"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
msgstr "Calibration requise"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Le scanner a besoin d'être calibré avec les paramètres actuels"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Boutons"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Calibration"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Démarrer la calibration avec la feuille spéciale"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Effacer la calibration"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Efface le cache des données de calibration"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibration grossière"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Adaptateur pour transparents"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Couleur du mode niveaux de gris"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Sélectionne la couleur à utiliser en niveaux de gris (défaut: vert)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Options de déboggage"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Préchauffage automatique"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3279,12 +3287,12 @@ msgstr ""
"Préchauffer jusqu'à ce que l'intensité de la lampe soit constante, au "
"lieu d'attendre 60 secondes."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Numérisation complète"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3294,12 +3302,12 @@ msgstr ""
"calibration. ATTENTION! Ne pas sélectionner la hauteur complète. "
"Seulement pour tester."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Calibration grossière"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3311,13 +3319,13 @@ msgstr ""
"manuellement les paramètres gain et décalage dans l'application. Activée "
"par défaut. Pour tester seulement."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr ""
"Utiliser la calibration grosière seulement à la première numérisation"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3329,12 +3337,12 @@ msgstr ""
"gagner du temps. Si l'intensité de chaque image est différente, "
"désactiver cette option. Seulement pour tester."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Nombre de lignes de retour arrière"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3347,12 +3355,12 @@ msgstr ""
"numérisation. Des valeurs petites permettent une numérisation plus "
"rapide, au risque de perdre quelques lignes."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valeur de gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Sélectionne la valeur de gamma pour tous les canaux."
@@ -3368,7 +3376,7 @@ msgid "Scan Mode Group"
msgstr "Mode de numérisation"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositive"
@@ -3577,162 +3585,237 @@ msgstr "Allume/éteint la lampe."
msgid "Calibrates for black and white level."
msgstr "Calibration des niveaux noir et blanc."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "Chargeur automatique de documents"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "Adaptateur pour transparents - diapositives"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "Adaptateur pour transparents - négatifs"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Couleur (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Délai allongé avant extinction de la lampe"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
"Allonge le délai avant l'extinction de la lampe (de 15 minutes à une "
"heure)."
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Attendre le bouton"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Attend l'appui sur le bouton avant la numérisation"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Rafraîchir l'état du bouton"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Compteur de numérisations"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Trait couleur"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Options avancées"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grossier"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Précis"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Personnalisé"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatique"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "RVB NTSC"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "RVB (pour transparents)"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Direct"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "Gris NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Gris (pour transparents)"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lent"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rapide"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Très rapide"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2 pixels"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4 pixels"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8 pixels"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Imprimer"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Film-strip"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "Adaptateur pour transparents"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Conditionnel"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Essais"
@@ -3913,8 +3996,8 @@ msgstr "Eteindre la lampe"
msgid "Shut off scanner lamp."
msgstr "Eteint la lampe du scanner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Taille du papier"
@@ -3925,8 +4008,7 @@ msgstr "Taille du papier"
msgid "Automatic separation"
msgstr "Séparation automatique"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 - paysage"
@@ -3941,38 +4023,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Positionne le mode de contrôle de la densité"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Mise au point manuelle"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Mise au point manuelle"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Active la numérisation recto-verso"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Taille physique du papier dans le chargeur"
@@ -4088,199 +4166,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Demi-teinte"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Demi-teinte"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Diffusion d'erreur"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Contraste"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "numériseur de transparents"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Avec du papier"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Valeur par défaut"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Lisse"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lent"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Moyen"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Rouge"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Vert"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Source de numérisation"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Mode de chargement"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Sélectionne le mode de chargement"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Activer/désactiver la mise au point automatique"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Positionne le mode de contrôle de la densité"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Sélectionne le mode de chargement"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Sélectionne le mode de chargement"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Seuil automatique"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4289,95 +4367,95 @@ msgstr ""
"Fixe automatiquement la luminosité, le contraste, le niveau du blanc, le "
"gamma, la réduction du bruit et l'accentuation de l'image"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Réduction du bruit"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Réduit le bruit isolé"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Accentuation de l'image"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Sélectionne l'accentuation de l'image"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Lampe allumée"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Allume/éteint la lampe."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Renverse l'image verticalement."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5098,17 +5176,17 @@ msgstr "3x3 - Personnalisé"
msgid "2x2 custom"
msgstr "2x2 - Personnalisé"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Mode gris rapide"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Numérise rapidement en mode gris (qualité réduite)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5118,82 +5196,82 @@ msgstr ""
"qualité). Ce peut etre en noir et blanc, et/ou dans une basse en "
"résolution."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Temps avant extinction de la lampe (en minutes)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Fixe le temps (en minutes) au-delà du quel la lampe est éteinte."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Eteint la lampe."
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Eteint la lampe du scanner maintenant"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Luminosité des rouges"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Contrôle la brillance rouge de l'image à numériser."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Luminosité des verts"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Contrôle la brillance verte de l'image à numériser."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Luminosité des bleus"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Contrôle la brillance bleue de l'image à numériser."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contraste - rouge"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Contrôle le contraste rouge de l'image à numériser."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contraste - vert"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Contrôle le contraste vert de l'image à numériser."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contraste - bleu"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Contrôle le contraste bleu de l'image à numériser."
@@ -5237,22 +5315,22 @@ msgstr ""
"Préchauffer jusqu'à ce que l'intensité de la lampe soit constante, au "
"lieu d'attendre 40 secondes."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Film négatif"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Négatif"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Couleurs précises"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/gl.gmo b/po/gl.gmo
deleted file mode 100644
index 8c21b80..0000000
--- a/po/gl.gmo
+++ /dev/null
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 8ed8e5d..9197284 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2009-06-25 10:22+0100\n"
"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2: plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Galician\n"
"X-Poedit-Country: SPAIN\n"
@@ -31,36 +31,36 @@ msgid "Standard"
msgstr "Estándar"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Xeometría"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Optimización"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +88,7 @@ msgstr "Forzar vista previa monocroma"
msgid "Bit depth"
msgstr "Bit de profundidade"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +129,7 @@ msgstr "Abaixo-dereita X"
msgid "Bottom-right y"
msgstr "Abaixo-dereita Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +285,7 @@ msgstr "Nome do ficheiro"
msgid "Halftone pattern size"
msgstr "Tamaño do patrón de medios tons"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Patrón de medios tons"
@@ -297,8 +297,8 @@ msgstr "Ligar resolucións X e Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativo"
@@ -989,7 +989,7 @@ msgstr "Predeterminados"
msgid "Set default values for enhancement controls."
msgstr "Axustar valores predeterminados para os controis de optimización."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibración"
@@ -1129,7 +1129,7 @@ msgstr "Negativos"
msgid "Slides"
msgstr "Diapositivas"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1150,495 +1150,494 @@ msgstr "1/2 da velocidade normal"
msgid "1/3 normal speed"
msgstr "1/3 da velocidade normal"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "parámetro redondeado"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "descoñecido"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "Atoamento no alimentador"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "A tapa do alimentador está aberta"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "fallo de lámpada"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "erro no posicionamento do cabezal de escaneo"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "erro de verificación de CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "erro de verificación de RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "erro de verificación de ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "erro de verificación de hardware"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "fallo da lámpada da unidade de transparencias"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
"fallo de posición do cabezal de escaneo da unidade de transparencias"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "erro na lonxitude da lista de parámetros"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "código de orde de operación incorrecto"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "campo incorrecto en CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "LUN non é compatíbel"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "campo incorrecto na lista de parámetros"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "erro na secuencia de ordes"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "especifícanse demasiadas xanelas"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "non se atopa o soporte"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "mensaxe de bit de IDENTIFICACIÓN incorrecta"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "a opción non conecta"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "reiniciar o acendido / reiniciar o bus do dispositivo"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parámetro cambiado por outro iniciador"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "información sen senso adicional"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "Fallou a volta a escoller"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "erro de paridade SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "o iniciador detectou a recepción dunha mensaxe de erro"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "mensaxe de erro incorrecta"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "erro de límite de tempo"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "erro de sombreado na unidade de transparencias"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lámpada non estabilizada"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "escáner de filmes"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "escáner plano"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Tipo de filme"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Escoller o tipo de filme, p.e. negativo ou diapositiva"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Tipo de filme negativo"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Selecciona o tipo de negativo de filme"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Resolución do hardware"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Usar só resolucións do hardware"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Enfoque"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Enfoque automático"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Activar/desactivar enfoque automático"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Enfoque automático só unha vez"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Facer enfoque automático só unha vez entre expulsións"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Posición de foco manual"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Axustar o sistema óptico de foco na posición manual (predeterminado: "
"128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Marxes de escaneo"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Axustes de cor extra"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Reflectir a imaxe horizontalmente"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Inverter a imaxe horizontalmente"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Exposición automática"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Activar/desactivar a característica de exposición automática"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Calibrar agora"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Executar a calibración *agora*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Diagnose automatica"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Facer unha diagnose automatica do escáner"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reiniciar o escáner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Reiniciar o escáner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Manexar o soporte"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Expulsar o filme despois de cada escaneo"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
"Expulsar automaticamente o filme do dispositivo despois de cada escaneo"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Expulsar o filme antes de saír"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
"Expulsar automaticamente o filme do dispositivo antes de saír do programa"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Expulsar o filme agora"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Expulsar o filme *agora*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Alimentador de documentos extras"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Só plano"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Desactivar o alimentador automático de documentos e usar só o plano"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Unidade de transparencias"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
"Activar/desactivar a unidade de transparencias (FAU, unidade adaptadora "
"de filme)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Filme en negativo"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Filme en positivo ou en negativo"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Control de densidade"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Axustar o modo de control de densidade"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Taxa de transparencia"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Escoller tipo de filme"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Escoller o tipo de filme"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Plano"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, fuzzy, no-c-format
msgid "ADF Front"
msgstr "A tapa do alimentador está aberta"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "Atoamento no alimentador"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Alimentador dúplex"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Imprimir"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Duas caras"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Vermello"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Verde"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Azul"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Optimización"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Optimización"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Optimización"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1646,18 +1645,18 @@ msgstr "Optimización"
msgid "None"
msgstr "Ningún"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1674,13 +1673,13 @@ msgstr "Unha cara"
msgid "Duplex"
msgstr "Duas caras"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Unidade de transparencias"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1793,8 +1792,8 @@ msgstr "Impresoras de inxección de tinta"
msgid "CRT monitors"
msgstr "Monitores CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Predeterminado"
@@ -1857,51 +1856,50 @@ msgstr "A4"
msgid "Max"
msgstr "Máx"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Modo de escaneo"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Escolle o medios tons"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Exclusión"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Escoller o que se vai a excluir"
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Escoller o brillo"
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Nitidez"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Corrección da cor"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1993,17 +1991,17 @@ msgstr "Engade vermello baseándose no nivel de azul"
msgid "Controls blue level"
msgstr "Controla o nivel de azul"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Reflectir a imaxe."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Vista previa rápida"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Segmentación automática da área"
@@ -2033,47 +2031,47 @@ msgstr "Define o factor de zoom que vai usar o escáner"
msgid "Quick format"
msgstr "Formato rápido"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Equipamento opcional"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Expulsar"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Expulsar a folla do alimentador"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Expulsión automática"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Expulsar o documento despois do escaneo"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Modo alimentador"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Escoller o modo do alimentador (unha cara/duas caras)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Badía"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Escolla a badía para escanear"
@@ -2115,7 +2113,7 @@ msgstr ""
"Despois de enviar a orde de escaneo, agardar até que se prema no botón "
"do escáner para comezar verdadeiramente o proceso de escaneo."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2145,494 +2143,494 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Definida polo usuario"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Activado"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Desactivado"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Esfumado"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Difusión de erro"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Nivel do branco"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Nivel do negro"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Condicional"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Horizontal"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontal"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Vertical"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Imprimir"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Medios tons"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Calibración de precisión"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Destaque da imaxe"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturación"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Activar a determinación automática do limiar para escaneos como liña de "
"arte."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Reflectir a imaxe horizontalmente"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Reflectir a imaxe en horizontal"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Nivel do branco para azul"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Controla o nivel de vermello"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtro de cor"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Suavizado"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valor gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Limiar"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Limiar"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Redución de ruído"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Sen corrección"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Sen corrección"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "A tapa do alimentador está aberta"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Opcions avanzadas"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Sen corrección"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Exclusión"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Modo de alimentación"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2640,65 +2638,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Tempo para apagado da lámpada"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Desviación azul"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Desviación verde"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Desviación verde"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Desviación azul"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Axusta o desprazamento da canle azul"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "Non queda memoria"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2707,374 +2705,374 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Escaneo dúplex"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Opcions avanzadas"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Redución de ruído"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "De papel"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "De papel"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "De papel"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "De papel"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "A tapa do escáner está aberta"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Foco previo manual"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Foco previo manual"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "erro de verificación de hardware"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Nivel do branco"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Control de densidade"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Control de densidade"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Escaneo dúplex"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Desactivar interpolación"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3083,45 +3081,45 @@ msgstr ""
"Cando se usan altas resolucións nas que a resolución horizontal é máis "
"pequena que a vertical, isto desactiva a interpolación horizontal."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtro de cor"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"Cando se usa gris ou liña de arte esta opción selecciona a cor a usar."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Calibración"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definir o modo de calibración"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Caché de datos de calibración"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Tempo para apagado da lámpada"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3130,103 +3128,113 @@ msgstr ""
"A lámpada vai ser apagada despois do tempo indicado (en minutos). Un "
"valor de 0 significa que a lámpada no vai ser apagada."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Apagar a lámpada durante a calibración de escuridade"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Minutos que tardará a lámpada en apagarse despois do escaneo"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Botón de ficheiro"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Botón de OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Botón de enerxía"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Botón de correo-e"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Limpar a calibración"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Forza a calibrar o escáner antes de facer o escaneo"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Botóns"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Calibrar"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Iniciar a calibración usando unha folla especial"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Limpar a calibración"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Limpar a caché de datos de calibración"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibración grosa"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Adaptador de transparencias"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Cor en modo gris"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Escolle que cor de escaneo vai ser usada en modo gris (predefinido: "
"verde)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opcións de depuración"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Quecemento automático"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3235,12 +3243,12 @@ msgstr ""
"Quecer até que o brillo da lámpada sexa constante no canto de agardar "
"polos 60 segundos de quecemento."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Escaneo completo"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3249,12 +3257,12 @@ msgstr ""
"Escanear toda a área de escaneo incluindo a franxa de calibración. Teña "
"cuidado. Non seleccione a altura total. Só para probas."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Calibración grosa"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3266,12 +3274,12 @@ msgstr ""
"parámetros de xeito manual na interface analóxica. Esta opción está "
"activada como predefinida. Só para probas."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Calibración grosa só para o primeiro escaneo"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3283,12 +3291,12 @@ msgstr ""
"imaxe é diferente con cada escaneo, desactive esta opción. Só para "
"probas."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Liñas de retroceso"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3303,12 +3311,12 @@ msgstr ""
"recibir datos. Valores baixos fan que os escaneos sexan más rápidos, "
"pero aumentan os riscos de omitir liñas."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valor gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Axusta o valor gamma para todas as canles."
@@ -3324,7 +3332,7 @@ msgid "Scan Mode Group"
msgstr "Grupo de modo de escaneo"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositiva"
@@ -3533,160 +3541,235 @@ msgstr "Acende ou apaga a lámpada"
msgid "Calibrates for black and white level."
msgstr "Calibrar o nivel de branco e negro."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "Alimentador automático de documentos (ADF)"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "Adaptador (TMA) para diapositivas"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "Adaptador (TMA) para negativos"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Cor (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Retardar o tempo de apagado da lámpada"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Retarda os tempos de apagado da lámpada (de 15 minutos a 1 hora)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Agardando polo botón"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Agardando polo botón antes de escanear"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Actualizar estado do botón"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Contador de escaneos"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Liña de arte coloreada"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Opcions avanzadas"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Groso"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fina"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Personalizado"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automático"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "Adaptador de transparencias RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "A través"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC Gris"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Adaptador de transparencias gris"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lento"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rápido"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Moi rápido"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-píxeles"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-píxeles"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-píxeles"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Imprimir"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Tira de filme"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "Adaptador de transparencias (XPA)"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Condicional"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experimento"
@@ -3868,8 +3951,8 @@ msgstr "Apagar lámpada"
msgid "Shut off scanner lamp."
msgstr "Apagar a lámpada do escáner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Tamaño do papel"
@@ -3880,8 +3963,7 @@ msgstr "Tamaño do papel"
msgid "Automatic separation"
msgstr "Separación automática"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 apaisado"
@@ -3896,38 +3978,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Axustar o modo de control de densidade"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Foco previo manual"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Foco previo manual"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Activa o escaneo polas dúas caras"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Tamaño físico do papel no alimentador"
@@ -4043,199 +4121,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Medios tons"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Medios tons"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Difusión de erro"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Resaltar"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "escáner de filmes"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "De papel"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Predeterminado"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Suave"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lento"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Soporte"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Vermello"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Verde"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Orixe de escaneo"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Modo de alimentación"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Axusta o modo de alimentación"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Activar/desactivar enfoque automático"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Axustar o modo de control de densidade"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Axusta o modo de alimentación"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Axusta o modo de alimentación"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Limiar automático"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4244,95 +4322,95 @@ msgstr ""
"Axusta automaticamente o brillo, contraste, niveis de branco, gamma e "
"redución da intensidade do ruído da imaxe"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Redución de ruído"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reduce os puntos illados de ruído"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Destaque da imaxe"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Axusta o destaque da imaxe"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Acender lámpada"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Acende ou apaga a lámpada"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Reflectir a imaxe en verticalv"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5053,17 +5131,17 @@ msgstr "3x3 personalizado"
msgid "2x2 custom"
msgstr "2x2 personalizado"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Modo gris rápido"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Escanear en modo gris rápido (menor calidade)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5072,82 +5150,82 @@ msgstr ""
"Precisa que todas as vistas previas se fagan do modo máis rápido (baixa "
"calidade). Este pode ser un modo sen cor ou un modo de baixa resolución."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Tempo de apagado de lámpada (minutos)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Axusta o tempo (en minutos) tras o que se apagará a lámpada."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Apagar a lámpada"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Apaga a lámpada inmediatamente."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Brillo de vermello"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Controla o brillo da canle de vermello da imaxe obtida."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Brillo de verde"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Controla o brillo da canle de verde da imaxe obtida."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Brillo de azul"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Controla o brillo da canle de azul da imaxe obtida."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contraste da canle vermella"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Controla o contraste da canle vermella da imaxe obtida."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contraste da canle verde"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Controla o contraste da canle verde da imaxe obtida."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contraste da canle azul"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Controla o contraste da canle azul da imaxe obtida."
@@ -5191,22 +5269,22 @@ msgstr ""
"Quecer até que o brillo da lámpada sexa constante no canto de agardar "
"polos 40 segundos de quecemento."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Filme en negativo"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativo"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Cor fina"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/sane-backends.pot b/po/he.po
index 85fa955..1671ffe 100644
--- a/po/sane-backends.pot
+++ b/po/he.po
@@ -1,453 +1,456 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR The SANE developers
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Hebrew translation of sane-backends.
+# Copyright (C) 2018 The SANE developers
+# This file is distributed under the same license as the sane-backends package.
+# Elishai Shkury <e1907@mm.st>, 2018
#
-#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: sane-backends 1.0.27\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Project-Id-Version: sane-backends 1.0.27git\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2018-09-16 22:30+0300\n"
+"Last-Translator: Elishai Shkury <e1907@mm.st>\n"
+"Language-Team: Hebrew\n"
+"Language: he\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.6\n"
#: include/sane/saneopts.h:154
#, no-c-format
msgid "Number of options"
-msgstr ""
+msgstr "מספר אפשרויות"
#: include/sane/saneopts.h:156
#, no-c-format
msgid "Standard"
-msgstr ""
+msgstr "סטנדרט"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305 backend/mustek_usb2.c:465
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
#: backend/pixma_sane_options.c:160 backend/plustek.c:808
#: backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1914
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
-msgstr ""
+msgstr "גיאומטריה"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353 backend/mustek_usb2.c:431
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
-#: backend/sceptre.c:750 backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
-msgstr ""
+msgstr "הגדלה"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
-#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597 backend/rts8891.c:2831
-#: backend/snapscan-options.c:923 backend/umax.c:5565
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
+#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
+#: backend/rts8891.c:2831 backend/snapscan-options.c:923
+#: backend/umax.c:5565
#, no-c-format
msgid "Advanced"
-msgstr ""
+msgstr "מתקדם"
#: include/sane/saneopts.h:160
#, no-c-format
msgid "Sensors"
-msgstr ""
+msgstr "חיישנים"
#: include/sane/saneopts.h:162
#, no-c-format
msgid "Preview"
-msgstr ""
+msgstr "תצוגה מקדימה"
#: include/sane/saneopts.h:163
#, no-c-format
msgid "Force monochrome preview"
-msgstr ""
+msgstr "אלץ תצוגה מקדימה מונוכרומטית"
#: include/sane/saneopts.h:164
#, no-c-format
msgid "Bit depth"
-msgstr ""
+msgstr "עומק ביט"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
-msgstr ""
+msgstr "מצב סריקה"
#: include/sane/saneopts.h:166
#, no-c-format
msgid "Scan speed"
-msgstr ""
+msgstr "מהירות סריקה"
#: include/sane/saneopts.h:167
#, no-c-format
msgid "Scan source"
-msgstr ""
+msgstr "מקור סריקה"
#: include/sane/saneopts.h:168
#, no-c-format
msgid "Force backtracking"
-msgstr ""
+msgstr "אלץ מעקב אחורי"
#: include/sane/saneopts.h:169
#, no-c-format
msgid "Top-left x"
-msgstr ""
+msgstr "Top-left x"
#: include/sane/saneopts.h:170
#, no-c-format
msgid "Top-left y"
-msgstr ""
+msgstr "Top-left y"
#: include/sane/saneopts.h:171
#, no-c-format
msgid "Bottom-right x"
-msgstr ""
+msgstr "Bottom-right x"
#: include/sane/saneopts.h:172
#, no-c-format
msgid "Bottom-right y"
-msgstr ""
+msgstr "Bottom-right y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
-msgstr ""
+msgstr "רזולוציית סריקה"
#: include/sane/saneopts.h:174
#, no-c-format
msgid "X-resolution"
-msgstr ""
+msgstr "רזולוציה-X"
#: include/sane/saneopts.h:175
#, no-c-format
msgid "Y-resolution"
-msgstr ""
+msgstr "רזולוציה-Y"
#: include/sane/saneopts.h:176
#, no-c-format
msgid "Page width"
-msgstr ""
+msgstr "רוחב עמוד"
#: include/sane/saneopts.h:177
#, no-c-format
msgid "Page height"
-msgstr ""
+msgstr "גובה עמוד"
#: include/sane/saneopts.h:178
#, no-c-format
msgid "Use custom gamma table"
-msgstr ""
+msgstr "השתמש בטבלת גמה מותאמת אישית"
#: include/sane/saneopts.h:179
#, no-c-format
msgid "Image intensity"
-msgstr ""
+msgstr "עומק תמונה"
#: include/sane/saneopts.h:180
#, no-c-format
msgid "Red intensity"
-msgstr ""
+msgstr "עומק אדום"
#: include/sane/saneopts.h:181
#, no-c-format
msgid "Green intensity"
-msgstr ""
+msgstr "עומק ירוק"
#: include/sane/saneopts.h:182
#, no-c-format
msgid "Blue intensity"
-msgstr ""
+msgstr "עומק כחול"
#: include/sane/saneopts.h:183
#, no-c-format
msgid "Brightness"
-msgstr ""
+msgstr "בהירות"
#: include/sane/saneopts.h:184
#, no-c-format
msgid "Contrast"
-msgstr ""
+msgstr "ניגודיות"
#: include/sane/saneopts.h:185
#, no-c-format
msgid "Grain size"
-msgstr ""
+msgstr "גודל גרגיר"
#: include/sane/saneopts.h:186
#, no-c-format
msgid "Halftoning"
-msgstr ""
+msgstr "הדפסת רשת"
#: include/sane/saneopts.h:187
#, no-c-format
msgid "Black level"
-msgstr ""
+msgstr "רמת שחור"
#: include/sane/saneopts.h:188
#, no-c-format
msgid "White level"
-msgstr ""
+msgstr "רמת לבן"
#: include/sane/saneopts.h:189
#, no-c-format
msgid "White level for red"
-msgstr ""
+msgstr "רמת לבן עבור אדום"
#: include/sane/saneopts.h:190
#, no-c-format
msgid "White level for green"
-msgstr ""
+msgstr "רמת לבן עבור ירוק"
#: include/sane/saneopts.h:191
#, no-c-format
msgid "White level for blue"
-msgstr ""
+msgstr "רמת לבן עבור כחול"
#: include/sane/saneopts.h:192
#, no-c-format
msgid "Shadow"
-msgstr ""
+msgstr "צל"
#: include/sane/saneopts.h:193
#, no-c-format
msgid "Shadow for red"
-msgstr ""
+msgstr "צל עבור אדום"
#: include/sane/saneopts.h:194
#, no-c-format
msgid "Shadow for green"
-msgstr ""
+msgstr "צל עבור ירוק"
#: include/sane/saneopts.h:195
#, no-c-format
msgid "Shadow for blue"
-msgstr ""
+msgstr "צל עבור כחול"
#: include/sane/saneopts.h:196
#, no-c-format
msgid "Highlight"
-msgstr ""
+msgstr "הדגשה"
#: include/sane/saneopts.h:197
#, no-c-format
msgid "Highlight for red"
-msgstr ""
+msgstr "הדגשה עבור אדום"
#: include/sane/saneopts.h:198
#, no-c-format
msgid "Highlight for green"
-msgstr ""
+msgstr "הדגשה עבור ירוק"
#: include/sane/saneopts.h:199
#, no-c-format
msgid "Highlight for blue"
-msgstr ""
+msgstr "הדגשה עבור כחול"
#: include/sane/saneopts.h:200
#, no-c-format
msgid "Hue"
-msgstr ""
+msgstr "גוון"
#: include/sane/saneopts.h:201
#, no-c-format
msgid "Saturation"
-msgstr ""
+msgstr "רוויה"
#: include/sane/saneopts.h:202
#, no-c-format
msgid "Filename"
-msgstr ""
+msgstr "שם קובץ"
#: include/sane/saneopts.h:203
#, no-c-format
msgid "Halftone pattern size"
-msgstr ""
+msgstr "גודל תבנית הדפסת רשת"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
-msgstr ""
+msgstr "תבנית הדפסת רשת"
#: include/sane/saneopts.h:205
#, no-c-format
msgid "Bind X and Y resolution"
-msgstr ""
+msgstr "קשור רזולוציה X ו-Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
-msgstr ""
+msgstr "תשליל"
#: include/sane/saneopts.h:207
#, no-c-format
msgid "Quality calibration"
-msgstr ""
+msgstr "כיול איכות"
#: include/sane/saneopts.h:208
#, no-c-format
msgid "Double Optical Resolution"
-msgstr ""
+msgstr "רזולוציה אופטית כפולה"
#: include/sane/saneopts.h:209
#, no-c-format
msgid "Bind RGB"
-msgstr ""
+msgstr "קשור RGB"
#: include/sane/saneopts.h:210 backend/sm3840.c:770
#, no-c-format
msgid "Threshold"
-msgstr ""
+msgstr "סף"
#: include/sane/saneopts.h:211
#, no-c-format
msgid "Analog gamma correction"
-msgstr ""
+msgstr "תיקון גמה אנלוגית"
#: include/sane/saneopts.h:212
#, no-c-format
msgid "Analog gamma red"
-msgstr ""
+msgstr "אדום גמה אנלוגית"
#: include/sane/saneopts.h:213
#, no-c-format
msgid "Analog gamma green"
-msgstr ""
+msgstr "ירוק גמה אנלוגית"
#: include/sane/saneopts.h:214
#, no-c-format
msgid "Analog gamma blue"
-msgstr ""
+msgstr "כחול גמה אנלוגית"
#: include/sane/saneopts.h:215
#, no-c-format
msgid "Bind analog gamma"
-msgstr ""
+msgstr "קשור גמה אנלוגית"
#: include/sane/saneopts.h:216
#, no-c-format
msgid "Warmup lamp"
-msgstr ""
+msgstr "מנורת חימום"
#: include/sane/saneopts.h:217
#, no-c-format
msgid "Cal. exposure-time"
-msgstr ""
+msgstr "חשיפת כיול-זמן"
#: include/sane/saneopts.h:218
#, no-c-format
msgid "Cal. exposure-time for red"
-msgstr ""
+msgstr "חשיפת כיול-זמן לאדום"
#: include/sane/saneopts.h:219
#, no-c-format
msgid "Cal. exposure-time for green"
-msgstr ""
+msgstr "חשיפת כיול-זמן לירוק"
#: include/sane/saneopts.h:221
#, no-c-format
msgid "Cal. exposure-time for blue"
-msgstr ""
+msgstr "חשיפת כיול-זמן לכחול"
#: include/sane/saneopts.h:222
#, no-c-format
msgid "Scan exposure-time"
-msgstr ""
+msgstr "חשיפת סריקה-זמן"
#: include/sane/saneopts.h:223
#, no-c-format
msgid "Scan exposure-time for red"
-msgstr ""
+msgstr "חשיפת סריקה-זמן לאדום"
#: include/sane/saneopts.h:224
#, no-c-format
msgid "Scan exposure-time for green"
-msgstr ""
+msgstr "חשיפת סריקה-זמן לירוק"
#: include/sane/saneopts.h:226
#, no-c-format
msgid "Scan exposure-time for blue"
-msgstr ""
+msgstr "חשיפת סריקה-זמן לכחול"
#: include/sane/saneopts.h:227
#, no-c-format
msgid "Set exposure-time"
-msgstr ""
+msgstr "חשיפת מערכת-זמן"
#: include/sane/saneopts.h:228
#, no-c-format
msgid "Cal. lamp density"
-msgstr ""
+msgstr "צפיפות מנורת כיול"
#: include/sane/saneopts.h:229
#, no-c-format
msgid "Scan lamp density"
-msgstr ""
+msgstr "צפיפות מנורת סריקה"
#: include/sane/saneopts.h:230
#, no-c-format
msgid "Set lamp density"
-msgstr ""
+msgstr "צפיפות מנורת מערכת"
#: include/sane/saneopts.h:231 backend/umax.c:5829
#, no-c-format
msgid "Lamp off at exit"
-msgstr ""
+msgstr "מנורה כבויה ביציאה"
#: include/sane/saneopts.h:245
#, no-c-format
msgid ""
-"Read-only option that specifies how many options a specific devices supports."
-msgstr ""
+"Read-only option that specifies how many options a specific devices "
+"supports."
+msgstr "אפשרות קריאה-בלבד המפרטת כמה אפשרויות נתמכות בהתקן מסוים."
#: include/sane/saneopts.h:248
#, no-c-format
msgid "Source, mode and resolution options"
-msgstr ""
+msgstr "אפשרויות מקור, מצב ורזולוציה"
#: include/sane/saneopts.h:249
#, no-c-format
msgid "Scan area and media size options"
-msgstr ""
+msgstr "אפשרויות שטח סריקה וגודל מדיה"
#: include/sane/saneopts.h:250
#, no-c-format
msgid "Image modification options"
-msgstr ""
+msgstr "אפשרויות שינוי תמונה"
#: include/sane/saneopts.h:251
#, no-c-format
msgid "Hardware specific options"
-msgstr ""
+msgstr "אפשרויות תלויות חומרה"
#: include/sane/saneopts.h:252
#, no-c-format
msgid "Scanner sensors and buttons"
-msgstr ""
+msgstr "חיישני וכפתורי סורק"
#: include/sane/saneopts.h:255
#, no-c-format
msgid "Request a preview-quality scan."
-msgstr ""
+msgstr "בקש סריקת איכות-מקדימה."
#: include/sane/saneopts.h:258
#, no-c-format
@@ -456,202 +459,217 @@ 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:264
#, 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 לסריקות "
+"מרובות ביטים."
#: include/sane/saneopts.h:268
#, no-c-format
msgid "Selects the scan mode (e.g., lineart, monochrome, or color)."
-msgstr ""
+msgstr "בוחר את מצב הסריקה (למשל, סגנון קווי, מונוכרום, או צבע)."
#: include/sane/saneopts.h:271
#, no-c-format
msgid "Determines the speed at which the scan proceeds."
-msgstr ""
+msgstr "קובע את המהירות בה הסריקה מתקדמת."
#: include/sane/saneopts.h:274
#, no-c-format
msgid "Selects the scan source (such as a document-feeder)."
-msgstr ""
+msgstr "בוחר את מקור הסריקה (כמו מזין מסמכים)."
#: include/sane/saneopts.h:277
#, no-c-format
msgid "Controls whether backtracking is forced."
-msgstr ""
+msgstr "קובע האם מעקב אחורי מאולץ."
#: include/sane/saneopts.h:280
#, no-c-format
msgid "Top-left x position of scan area."
-msgstr ""
+msgstr "מיקום x שמאלי-עליון של שטח הסריקה."
#: include/sane/saneopts.h:283
#, no-c-format
msgid "Top-left y position of scan area."
-msgstr ""
+msgstr "מיקום y שמאלי-עליון של שטח הסריקה."
#: include/sane/saneopts.h:286
#, no-c-format
msgid "Bottom-right x position of scan area."
-msgstr ""
+msgstr "מיקום x ימני-תחתון של שטח הסריקה."
#: include/sane/saneopts.h:289
#, no-c-format
msgid "Bottom-right y position of scan area."
-msgstr ""
+msgstr "מיקום y ימני-תחתון של שטח הסריקה."
#: include/sane/saneopts.h:292
#, no-c-format
msgid "Sets the resolution of the scanned image."
-msgstr ""
+msgstr "קובע את הרזולוציה של התמונה הנסרקת."
#: include/sane/saneopts.h:295
#, no-c-format
msgid "Sets the horizontal resolution of the scanned image."
-msgstr ""
+msgstr "קובע את הרזולוציה האופקית של התמונה הנסרקת."
#: include/sane/saneopts.h:298
#, no-c-format
msgid "Sets the vertical resolution of the scanned image."
-msgstr ""
+msgstr "קובע את הרזולוציה האנכית של התמונה הנסרקת."
#: include/sane/saneopts.h:301
#, 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:305
#, no-c-format
msgid "Specifies the height of the media."
-msgstr ""
+msgstr "מציין את הגובה של המדיה."
#: include/sane/saneopts.h:308
#, no-c-format
-msgid "Determines whether a builtin or a custom gamma-table should be used."
-msgstr ""
+msgid ""
+"Determines whether a builtin or a custom gamma-table should be used."
+msgstr "קובע האם טבלת גמה מובנית או מותאמת אישית תהיה בשימוש."
#: include/sane/saneopts.h:312
#, 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:317
#, no-c-format
msgid "Gamma-correction table for the red band."
-msgstr ""
+msgstr "טבלת תיקון גמה עבור הפס האדום."
#: include/sane/saneopts.h:320
#, no-c-format
msgid "Gamma-correction table for the green band."
-msgstr ""
+msgstr "טבלת תיקון גמה עבור הפס הירוק."
#: include/sane/saneopts.h:323
#, no-c-format
msgid "Gamma-correction table for the blue band."
-msgstr ""
+msgstr "טבלת תיקון גמה עבור הפס הכחול."
#: include/sane/saneopts.h:326
#, no-c-format
msgid "Controls the brightness of the acquired image."
-msgstr ""
+msgstr "קובע את הבהירות של התמונה הנסרקת."
#: include/sane/saneopts.h:329
#, no-c-format
msgid "Controls the contrast of the acquired image."
-msgstr ""
+msgstr "קובע את הניגודיות של התמונה הנסרקת."
#: include/sane/saneopts.h:332
#, 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:336
#, no-c-format
msgid "Selects whether the acquired image should be halftoned (dithered)."
-msgstr ""
+msgstr "בוחר האם התמונה הנסרקת תהיה בהדפסת רשת (dithered)."
#: include/sane/saneopts.h:339 include/sane/saneopts.h:354
#, no-c-format
msgid "Selects what radiance level should be considered \"black\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"שחור\"."
#: include/sane/saneopts.h:342 include/sane/saneopts.h:363
#, no-c-format
msgid "Selects what radiance level should be considered \"white\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"לבן\"."
#: include/sane/saneopts.h:345
#, no-c-format
msgid "Selects what red radiance level should be considered \"white\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה אדומה תיחשב \"לבן\"."
#: include/sane/saneopts.h:348
#, no-c-format
msgid "Selects what green radiance level should be considered \"white\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה ירוקה תיחשב \"לבן\"."
#: include/sane/saneopts.h:351
#, no-c-format
msgid "Selects what blue radiance level should be considered \"white\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה כחולה תיחשב \"לבן\"."
#: include/sane/saneopts.h:356
#, no-c-format
msgid "Selects what red radiance level should be considered \"black\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה אדומה תיחשב \"שחור\"."
#: include/sane/saneopts.h:358
#, no-c-format
msgid "Selects what green radiance level should be considered \"black\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה ירוקה תיחשב \"שחור\"."
#: include/sane/saneopts.h:360
#, no-c-format
msgid "Selects what blue radiance level should be considered \"black\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה כחולה תיחשב \"שחור\"."
#: include/sane/saneopts.h:365
#, no-c-format
msgid "Selects what red radiance level should be considered \"full red\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה אדומה תיחשב \"אדום מלא\"."
#: include/sane/saneopts.h:367
#, no-c-format
-msgid "Selects what green radiance level should be considered \"full green\"."
-msgstr ""
+msgid ""
+"Selects what green radiance level should be considered \"full green\"."
+msgstr "בוחר איזו רמת קרינה ירוקה תיחשב \"ירוק מלא\"."
#: include/sane/saneopts.h:370
#, 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:374
#, no-c-format
msgid "Controls the \"hue\" (blue-level) of the acquired image."
-msgstr ""
+msgstr "קובע את ה\"גוון\" (רמת כחול) של התמונה הנסרקת."
#: include/sane/saneopts.h:377
#, 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 ""
+"רמת הרוויה קובעת את מידת ה\"רעננות\" בעת צילום תמונה עם מצלמה. ערכים "
+"גבוהים יותר גורמים לרעננות גדולה יותר."
#: include/sane/saneopts.h:382
#, no-c-format
msgid "The filename of the image to be loaded."
-msgstr ""
+msgstr "שם הקובץ של התמונה שתיפתח."
#: include/sane/saneopts.h:385
#, no-c-format
@@ -659,1371 +677,1383 @@ msgid ""
"Sets the size of the halftoning (dithering) pattern used when scanning "
"halftoned images."
msgstr ""
+"קובע את גודל התבנית של הדפסת הרשת (dithering) בשימוש בסריקה של תמונות "
+"בהדפסת רשת."
#: include/sane/saneopts.h:389
#, no-c-format
msgid ""
"Defines the halftoning (dithering) pattern for scanning halftoned images."
-msgstr ""
+msgstr "מגדיר את תבנית הדפסת הרשת (dithering) לסריקת תמונות בהדפסת רשת."
#: include/sane/saneopts.h:393
#, no-c-format
msgid "Use same values for X and Y resolution"
-msgstr ""
+msgstr "השתמש בערכים זהים עבור רזולוציה X ו-Y"
#: include/sane/saneopts.h:395
#, no-c-format
msgid "Swap black and white"
-msgstr ""
+msgstr "החלף שחור ולבן"
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Do a quality white-calibration"
-msgstr ""
+msgstr "בצע כיול לבן איכותי"
#: include/sane/saneopts.h:399
#, no-c-format
msgid "Use lens that doubles optical resolution"
-msgstr ""
+msgstr "השתמש בעדשות שמכפילות את הרזולוציה האופטית"
#: include/sane/saneopts.h:401 include/sane/saneopts.h:413
#, no-c-format
msgid "In RGB-mode use same values for each color"
-msgstr ""
+msgstr "במצב RGB השתמש באותם ערכים לכל צבע"
#: include/sane/saneopts.h:403
#, no-c-format
msgid "Select minimum-brightness to get a white point"
-msgstr ""
+msgstr "בחר בהירות מינימלית לקבלת נקודה לבנה"
#: include/sane/saneopts.h:405
#, no-c-format
msgid "Analog gamma-correction"
-msgstr ""
+msgstr "תיקון גמה אנלוגית"
#: include/sane/saneopts.h:407
#, no-c-format
msgid "Analog gamma-correction for red"
-msgstr ""
+msgstr "תיקון גמה אנלוגית עבור אדום"
#: include/sane/saneopts.h:409
#, no-c-format
msgid "Analog gamma-correction for green"
-msgstr ""
+msgstr "תיקון גמה אנלוגית עבור ירוק"
#: include/sane/saneopts.h:411
#, no-c-format
msgid "Analog gamma-correction for blue"
-msgstr ""
+msgstr "תיקון גמה אנלוגית עבור כחול"
#: include/sane/saneopts.h:415
#, no-c-format
msgid "Warmup lamp before scanning"
-msgstr ""
+msgstr "חמם מנורה לפני סריקה"
#: include/sane/saneopts.h:417
#, no-c-format
msgid "Define exposure-time for calibration"
-msgstr ""
+msgstr "הגדר זמן חשיפה לכיול"
#: include/sane/saneopts.h:419
#, no-c-format
msgid "Define exposure-time for red calibration"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור כיול אדום"
#: include/sane/saneopts.h:421
#, no-c-format
msgid "Define exposure-time for green calibration"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור כיול ירוק"
#: include/sane/saneopts.h:423
#, no-c-format
msgid "Define exposure-time for blue calibration"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור כיול כחול"
#: include/sane/saneopts.h:425
#, no-c-format
msgid "Define exposure-time for scan"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור סריקה"
#: include/sane/saneopts.h:427
#, no-c-format
msgid "Define exposure-time for red scan"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור סריקה אדומה"
#: include/sane/saneopts.h:429
#, no-c-format
msgid "Define exposure-time for green scan"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור סריקה ירוקה"
#: include/sane/saneopts.h:431
#, no-c-format
msgid "Define exposure-time for blue scan"
-msgstr ""
+msgstr "הגדר זמן חשיפה עבור סריקה כחולה"
#: include/sane/saneopts.h:433
#, no-c-format
msgid "Enable selection of exposure-time"
-msgstr ""
+msgstr "הפעל בחירה של זמן חשיפה"
#: include/sane/saneopts.h:435
#, no-c-format
msgid "Define lamp density for calibration"
-msgstr ""
+msgstr "הגדר צפיפות מנורה עבור כיול"
#: include/sane/saneopts.h:437
#, no-c-format
msgid "Define lamp density for scan"
-msgstr ""
+msgstr "הגדר צפיפות מנורה עבור סריקה"
#: include/sane/saneopts.h:439
#, no-c-format
msgid "Enable selection of lamp density"
-msgstr ""
+msgstr "הפעל בחירה של צפיפות מנורה"
#: include/sane/saneopts.h:441 backend/umax.c:5830
#, no-c-format
msgid "Turn off lamp when program exits"
-msgstr ""
+msgstr "כבה מנורה כאשר יוצאים מהיישום"
#: include/sane/saneopts.h:444
#, no-c-format
msgid "Scan button"
-msgstr ""
+msgstr "כפתור סריקה"
#: include/sane/saneopts.h:445
#, no-c-format
msgid "Email button"
-msgstr ""
+msgstr "כפתור אימייל"
#: include/sane/saneopts.h:446
#, no-c-format
msgid "Fax button"
-msgstr ""
+msgstr "כפתור פקס"
#: include/sane/saneopts.h:447
#, no-c-format
msgid "Copy button"
-msgstr ""
+msgstr "כפתור העתקה"
#: include/sane/saneopts.h:448
#, no-c-format
msgid "PDF button"
-msgstr ""
+msgstr "כפתור PDF"
#: include/sane/saneopts.h:449
#, no-c-format
msgid "Cancel button"
-msgstr ""
+msgstr "כפתור ביטול"
#: include/sane/saneopts.h:450
#, no-c-format
msgid "Page loaded"
-msgstr ""
+msgstr "דף טעון"
#: include/sane/saneopts.h:451
#, no-c-format
msgid "Cover open"
-msgstr ""
+msgstr "מכסה פתוח"
#: include/sane/saneopts.h:454
#, no-c-format
msgid "Color"
-msgstr ""
+msgstr "צבע"
#: include/sane/saneopts.h:455
#, no-c-format
msgid "Color Lineart"
-msgstr ""
+msgstr "צבע סגנון קווי"
#: include/sane/saneopts.h:456
#, no-c-format
msgid "Color Halftone"
-msgstr ""
+msgstr "צבע הדפסת רשת"
#: include/sane/saneopts.h:457
#, no-c-format
msgid "Gray"
-msgstr ""
+msgstr "אפור"
#: include/sane/saneopts.h:458
#, no-c-format
msgid "Halftone"
-msgstr ""
+msgstr "הדפסת רשת"
#: include/sane/saneopts.h:459
#, no-c-format
msgid "Lineart"
-msgstr ""
+msgstr "סגנון קווי"
#: backend/sane_strstatus.c:59
#, no-c-format
msgid "Success"
-msgstr ""
+msgstr "הצלחה"
#: backend/sane_strstatus.c:62
#, no-c-format
msgid "Operation not supported"
-msgstr ""
+msgstr "הפעלה לא נתמכת"
#: backend/sane_strstatus.c:65
#, no-c-format
msgid "Operation was cancelled"
-msgstr ""
+msgstr "הפעלה בוטלה"
#: backend/sane_strstatus.c:68
#, no-c-format
msgid "Device busy"
-msgstr ""
+msgstr "התקן תפוס"
#: backend/sane_strstatus.c:71
#, no-c-format
msgid "Invalid argument"
-msgstr ""
+msgstr "ארגומנט לא חוקי"
#: backend/sane_strstatus.c:74
#, no-c-format
msgid "End of file reached"
-msgstr ""
+msgstr "סוף הקובץ הושג"
#: backend/sane_strstatus.c:77
#, no-c-format
msgid "Document feeder jammed"
-msgstr ""
+msgstr "מזין מסמכים תקוע"
#: backend/sane_strstatus.c:80
#, no-c-format
msgid "Document feeder out of documents"
-msgstr ""
+msgstr "מזין מסמכים ללא מסמכים"
#: backend/sane_strstatus.c:83
#, no-c-format
msgid "Scanner cover is open"
-msgstr ""
+msgstr "מכסה סורק פתוח"
#: backend/sane_strstatus.c:86
#, no-c-format
msgid "Error during device I/O"
-msgstr ""
+msgstr "תקלה במהלך קלט/פלט של ההתקן"
#: backend/sane_strstatus.c:89
#, no-c-format
msgid "Out of memory"
-msgstr ""
+msgstr "זיכרון נגמר"
#: backend/sane_strstatus.c:92
#, no-c-format
msgid "Access to resource has been denied"
-msgstr ""
+msgstr "גישה למשאב נדחתה"
#: backend/sane_strstatus.c:96
#, no-c-format
msgid "Lamp not ready, please retry"
-msgstr ""
+msgstr "מנורה לא מוכנה, נא לנסות שנית"
#: backend/sane_strstatus.c:101
#, no-c-format
msgid "Scanner mechanism locked for transport"
-msgstr ""
+msgstr "מנגנון סורק נעול להובלה"
#: backend/artec_eplus48u.c:2874 backend/pnm.c:282
#, no-c-format
msgid "Defaults"
-msgstr ""
+msgstr "ברירות מחדל"
#: backend/artec_eplus48u.c:2876
#, no-c-format
msgid "Set default values for enhancement controls."
-msgstr ""
+msgstr "קבע ערכי ברירת מחדל עבור בקרות שיפור."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
-msgstr ""
+msgstr "כיול"
#: backend/artec_eplus48u.c:2941
#, no-c-format
msgid "Calibrate before next scan"
-msgstr ""
+msgstr "כייל לפני הסריקה הבאה"
#: backend/artec_eplus48u.c:2943
#, 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:2954
#, no-c-format
msgid "Only perform shading-correction"
-msgstr ""
+msgstr "בצע רק תיקון הצללה"
#: backend/artec_eplus48u.c:2956
#, no-c-format
msgid ""
-"If enabled, only the shading correction is performed during calibration. The "
-"default values for gain, offset and exposure time, either build-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 build-in "
+"or from the configuration file, are used."
msgstr ""
+"אם מופעלת, רק תיקון הצללה מבוצע במהלך כיול. ערכי ברירת מחדל עבור הגבר, "
+"אופסט וזמן חשיפה, בין אם מובנים או מקובץ הגדרות הם בשימוש."
#: backend/artec_eplus48u.c:2967
#, no-c-format
msgid "Button state"
-msgstr ""
+msgstr "מצב כפתור"
#: backend/avision.h:778
#, no-c-format
msgid "Number of the frame to scan"
-msgstr ""
+msgstr "מספר של הפריים לסריקה"
#: backend/avision.h:779
#, no-c-format
msgid "Selects the number of the frame to scan"
-msgstr ""
+msgstr "בוחר את מספר הפריים לסריקה"
#: backend/avision.h:782
#, no-c-format
msgid "Duplex scan"
-msgstr ""
+msgstr "סריקה דו צדדית"
#: backend/avision.h:783
#, no-c-format
-msgid "Duplex scan provide a scan of the front and back side of the document"
-msgstr ""
+msgid ""
+"Duplex scan provide a scan of the front and back side of the document"
+msgstr "סריקה דו צדדית מאפשרת סריקה של העמוד הקדמי והאחורי של המסמך"
#: backend/canon630u.c:159
#, no-c-format
msgid "Calibrate Scanner"
-msgstr ""
+msgstr "כייל סורק"
#: backend/canon630u.c:160
#, no-c-format
msgid "Force scanner calibration before scan"
-msgstr ""
+msgstr "אלץ כיול סורק לפני סריקה"
#: backend/canon630u.c:259 backend/umax1220u.c:208
#, no-c-format
msgid "Grayscale scan"
-msgstr ""
+msgstr "סריקה בגווני אפור"
#: backend/canon630u.c:260 backend/umax1220u.c:209
#, no-c-format
msgid "Do a grayscale rather than color scan"
-msgstr ""
+msgstr "בצע סריקה בגווני אפור במקום סריקה בצבע"
#: backend/canon630u.c:306
#, no-c-format
msgid "Analog Gain"
-msgstr ""
+msgstr "הגבר אנלוגי"
#: backend/canon630u.c:307
#, no-c-format
msgid "Increase or decrease the analog gain of the CCD array"
-msgstr ""
+msgstr "הרם או הנמך את ההגבר האנלוגי של מערך ה-CCD"
#: backend/canon630u.c:347 backend/epson.h:68 backend/epson2.h:67
#, no-c-format
msgid "Gamma Correction"
-msgstr ""
+msgstr "תיקון גמה"
#: backend/canon630u.c:348
#, no-c-format
msgid "Selects the gamma corrected transfer curve"
-msgstr ""
+msgstr "בוחר את עקום ההעברה מתוקן הגמה"
#: backend/canon.c:149 backend/canon-sane.c:1318
#, no-c-format
msgid "Raw"
-msgstr ""
+msgstr "גולמי"
#: backend/canon.c:157 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
#, no-c-format
msgid "Fine color"
-msgstr ""
+msgstr "צבע בהיר"
#: backend/canon.c:169
#, no-c-format
msgid "No transparency correction"
-msgstr ""
+msgstr "ללא תיקון שקיפות"
#: backend/canon.c:170 backend/canon-sane.c:680
#, no-c-format
msgid "Correction according to film type"
-msgstr ""
+msgstr "תיקון לפי סוג סרט"
#: backend/canon.c:171 backend/canon-sane.c:674
#, no-c-format
msgid "Correction according to transparency ratio"
-msgstr ""
+msgstr "תיקון לפי יחס שקיפות"
#: backend/canon.c:176 backend/canon-sane.c:776
#, no-c-format
msgid "Negatives"
-msgstr ""
+msgstr "תשלילים"
#: backend/canon.c:176
#, no-c-format
msgid "Slides"
-msgstr ""
+msgstr "שקפים"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
-msgstr ""
+msgstr "אוטומטי"
#: backend/canon.c:186
#, no-c-format
msgid "Normal speed"
-msgstr ""
+msgstr "מהירות נורמלית"
#: backend/canon.c:187
#, no-c-format
msgid "1/2 normal speed"
-msgstr ""
+msgstr "1/2 מהירות נורמלית"
#: backend/canon.c:187
#, no-c-format
msgid "1/3 normal speed"
-msgstr ""
+msgstr "1/3 מהירות נורמלית"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
-msgstr ""
+msgstr "פרמטר מעוגל"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
-msgstr ""
+msgstr "לא ידוע"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
-msgstr ""
+msgstr "תקלת מזין מסמכים אוטומטי"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
-msgstr ""
+msgstr "מכסה מזין מסמכים אוטומטי פתוח"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
-msgstr ""
+msgstr "כשל מנורה"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
-msgstr ""
+msgstr "תקלת מיקום ראש סריקה"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
-msgstr ""
+msgstr "תקלת בדיקת מעבד"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
-msgstr ""
+msgstr "תקלת בדיקת זכרון גישה אקראית"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
-msgstr ""
+msgstr "תקלת בדיקת זכרון קריאה בלבד"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
-msgstr ""
+msgstr "תקלת בדיקת חומרה"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
-msgstr ""
+msgstr "כשל מנורה ביחידת השקיפות"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
-msgstr ""
+msgstr "כשל מיקום ראש סריקה ביחידת השקיפות"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
-msgstr ""
+msgstr "תקלה באורך רשימת פרמטרים"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
-msgstr ""
+msgstr "קוד פעולת פקודה לא חוקי"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
-msgstr ""
+msgstr "שדה לא חוקי ב-CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
-msgstr ""
+msgstr "אין תמיכה ב-LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
-msgstr ""
+msgstr "שדה לא חוקי ברשימת הפרמטרים"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
-msgstr ""
+msgstr "תקלה ברצף פקודות"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
-msgstr ""
+msgstr "יותר מדי חלונות פורטו"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
-msgstr ""
+msgstr "מדיום לא קיים"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
-msgstr ""
+msgstr "הודעת זיהוי ביט לא חוקי"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
-msgstr ""
+msgstr "אפשרות לא מחובר"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
-msgstr ""
+msgstr "אתחול מצב דולק / אתחול התקן bus"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
-msgstr ""
+msgstr "פרמטר עבר שינוי על ידי יוזם אחר"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
-msgstr ""
+msgstr "אין מידע חישה נוסף"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
-msgstr ""
+msgstr "כשל בחירה מחדש"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
-msgstr ""
+msgstr "תקלת SCSI parity"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
-msgstr ""
+msgstr "התקבלה הודעת שגיאה של גילוי יוזם"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
-msgstr ""
+msgstr "תקלת הודעה לא חוקית"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
-msgstr ""
+msgstr "תקלת זמן קצוב"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
-msgstr ""
+msgstr "תקלת הצללה של יחידת השקיפות"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
-msgstr ""
+msgstr "מנורה לא מיוצבת"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
-msgstr ""
+msgstr "סורק סרט"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
-msgstr ""
+msgstr "סורק שטוח"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
-msgstr ""
+msgstr "סוג סרט"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
-msgstr ""
+msgstr "בוחר את סוג הסרט, לדוגמה תשלילים או שקפים"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
-msgstr ""
+msgstr "סוג סרט תשליל"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
-msgstr ""
+msgstr "בוחר את סוג סרט תשליל"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
-msgstr ""
+msgstr "רזולוציית חומרה"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
-msgstr ""
+msgstr "השתמש רק ברזולוציות חומרה"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
-msgstr ""
+msgstr "פוקוס"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
-msgstr ""
+msgstr "פוקוס אוטומטי"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
-msgstr ""
+msgstr "הפעל/כבה פוקוס אוטומטי"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
-msgstr ""
+msgstr "פוקוס אוטומטי רק פעם אחת"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
-msgstr ""
+msgstr "בצע פוקוס אוטומטי רק פעם אחת בין הוצאות"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
-msgstr ""
+msgstr "מיקום פוקוס ידני"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
-msgstr ""
+msgstr "קבע את מיקום הפוקוס האופטי של המערכת באופן ידני (ברירת מחדל: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
-msgstr ""
+msgstr "סרוק שוליים"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
-msgstr ""
+msgstr "התאמות צבע נוספות"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
-msgstr ""
+msgstr "בצע תמונת ראי"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
-msgstr ""
+msgstr "בצע תמונת ראי אופקית"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
-msgstr ""
+msgstr "חשיפה אוטומטית"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
-msgstr ""
+msgstr "הפעל/כבה את אפשרות חשיפה אוטומטית"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
-msgstr ""
+msgstr "כיול עכשיו"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
-msgstr ""
+msgstr "בצע כיול *עכשיו*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
-msgstr ""
+msgstr "אבחון עצמי"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
-msgstr ""
+msgstr "בצע אבחון עצמי של הסורק"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
-msgstr ""
+msgstr "אתחל סורק"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
-msgstr ""
+msgstr "אתחל את הסורק"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
-msgstr ""
+msgstr "טיפול במדיום"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
-msgstr ""
+msgstr "הוצא את הסרט לאחר כל סריקה"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
-msgstr ""
+msgstr "הוצא את הסרט אוטומטית מההתקן לאחר כל סריקה"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
-msgstr ""
+msgstr "הוצא את הסרט לפני עזיבה"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, 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:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
-msgstr ""
+msgstr "הוצא סרט עכשיו"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
-msgstr ""
+msgstr "הוצא את הסרט *עכשיו*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
-msgstr ""
+msgstr "תוספות מזין מסמכים"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
-msgstr ""
+msgstr "סורק שטוח בלבד"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
-msgstr ""
+msgstr "כבה את מזין המסמכים האוטומטי והשתמש בסורק שטוח בלבד"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
-msgstr ""
+msgstr "יחידת שקיפות"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
-msgstr ""
+msgstr "הפעל/כבה את יחידת השקיפות (FAU, יחידת מתאם סרט)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
-msgstr ""
+msgstr "סרט תשליל"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
-msgstr ""
+msgstr "סרט מעשי או תשליל"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
-msgstr ""
+msgstr "בקרת צפיפות"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
-msgstr ""
+msgstr "קבע את מצב בקרת הצפיפות"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
-msgstr ""
+msgstr "יחס שקיפות"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
-msgstr ""
+msgstr "בחר סוג סרט"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
-msgstr ""
+msgstr "בחר את סוג הסרט"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901 backend/pixma_sane_options.c:92
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
-msgstr ""
+msgstr "סורק שטוח"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
-msgstr ""
+msgstr "חזית מזין מסמכים אוטומטי"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
-msgstr ""
+msgstr "אחורי מזין מסמכים אוטומטי"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
-msgstr ""
+msgstr "דו צדדי מזין מסמכים אוטומטי"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
-msgstr ""
+msgstr "חזית לוח"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
-msgstr ""
+msgstr "אחורי לוח"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
-msgstr ""
+msgstr "דו צדדי לוח"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
-msgstr ""
+msgstr "אדום"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
-msgstr ""
+msgstr "ירוק"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
-msgstr ""
+msgstr "כחול"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
-msgstr ""
+msgstr "שפר אדום"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
-msgstr ""
+msgstr "שפר ירוק"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
-msgstr ""
+msgstr "שפר כחול"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
#, no-c-format
msgid "None"
-msgstr ""
+msgstr "אף אחד"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
-msgstr ""
+msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr ""
+msgstr "אחוז דילוג מקום ריק של תוכנה"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
-msgstr ""
+msgstr "בקש מהדרייבר לזנוח עמודים עם אחוז נמוך של פיקסלים כהים"
#: backend/epson.c:491 backend/epson2.c:108 backend/magicolor.c:174
#, no-c-format
msgid "Simplex"
-msgstr ""
+msgstr "חד צדדי"
#: backend/epson.c:492 backend/epson2.c:109 backend/kvs1025.h:50
-#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353 backend/magicolor.c:175
-#: backend/matsushita.h:218
+#: backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
+#: backend/magicolor.c:175 backend/matsushita.h:218
#, no-c-format
msgid "Duplex"
-msgstr ""
+msgstr "דו צדדי"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
-msgstr ""
+msgstr "יחידת שקיפות"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
-msgstr ""
+msgstr "מזין מסמכים אוטומטי"
#: backend/epson.c:523 backend/epson2.c:134
#, no-c-format
msgid "Positive Film"
-msgstr ""
+msgstr "סרט ממשי"
#: backend/epson.c:524 backend/epson2.c:135
#, no-c-format
msgid "Negative Film"
-msgstr ""
+msgstr "סרט תשליל"
#: backend/epson.c:529 backend/epson2.c:142
#, no-c-format
msgid "Focus on glass"
-msgstr ""
+msgstr "פוקוס על זכוכית"
#: backend/epson.c:530 backend/epson2.c:143
#, no-c-format
msgid "Focus 2.5mm above glass"
-msgstr ""
+msgstr "פוקוס 2.5 מילימטר מעל זכוכית"
#: backend/epson.c:557 backend/epson.c:565 backend/epson.c:577
#: backend/epson2.c:166 backend/epson2.c:174 backend/epson2.c:186
#, no-c-format
msgid "Halftone A (Hard Tone)"
-msgstr ""
+msgstr "הדפסת רשת A (גוון חזק)"
#: backend/epson.c:558 backend/epson.c:566 backend/epson.c:578
#: backend/epson2.c:167 backend/epson2.c:175 backend/epson2.c:187
#, no-c-format
msgid "Halftone B (Soft Tone)"
-msgstr ""
+msgstr "הדפסת רשת B (גוון חלש)"
#: backend/epson.c:559 backend/epson.c:567 backend/epson.c:579
#: backend/epson2.c:168 backend/epson2.c:176 backend/epson2.c:188
#, no-c-format
msgid "Halftone C (Net Screen)"
-msgstr ""
+msgstr "הדפסת רשת C (מסך רשת)"
#: backend/epson.c:568 backend/epson.c:580 backend/epson2.c:177
#: backend/epson2.c:189
#, no-c-format
msgid "Dither A (4x4 Bayer)"
-msgstr ""
+msgstr "Dither A (4x4 Bayer)"
#: backend/epson.c:569 backend/epson.c:581 backend/epson2.c:178
#: backend/epson2.c:190
#, no-c-format
msgid "Dither B (4x4 Spiral)"
-msgstr ""
+msgstr "Dither B (4x4 Spiral)"
#: backend/epson.c:570 backend/epson.c:582 backend/epson2.c:179
#: backend/epson2.c:191
#, no-c-format
msgid "Dither C (4x4 Net Screen)"
-msgstr ""
+msgstr "Dither C (4x4 Net Screen)"
#: backend/epson.c:571 backend/epson.c:583 backend/epson2.c:180
#: backend/epson2.c:192
#, no-c-format
msgid "Dither D (8x4 Net Screen)"
-msgstr ""
+msgstr "Dither D (8x4 Net Screen)"
#: backend/epson.c:584 backend/epson2.c:193
#, no-c-format
msgid "Text Enhanced Technology"
-msgstr ""
+msgstr "טכנולוגיה מועשרת טקסט"
#: backend/epson.c:585 backend/epson2.c:194
#, no-c-format
msgid "Download pattern A"
-msgstr ""
+msgstr "הורד תבנית A"
#: backend/epson.c:586 backend/epson2.c:195
#, no-c-format
msgid "Download pattern B"
-msgstr ""
+msgstr "הורד תבנית B"
#: backend/epson.c:631
#, no-c-format
msgid "No Correction"
-msgstr ""
+msgstr "ללא תיקון"
#: backend/epson.c:632 backend/epson.c:657 backend/epson2.c:255
#, no-c-format
msgid "User defined"
-msgstr ""
+msgstr "מוגדר משתמש"
#: backend/epson.c:633
#, no-c-format
msgid "Impact-dot printers"
-msgstr ""
+msgstr "מדפסות Impact-dot"
#: backend/epson.c:634
#, no-c-format
msgid "Thermal printers"
-msgstr ""
+msgstr "מדפסות תרמיות"
#: backend/epson.c:635
#, no-c-format
msgid "Ink-jet printers"
-msgstr ""
+msgstr "מדפסות הזרקת דיו"
#: backend/epson.c:636
#, no-c-format
msgid "CRT monitors"
-msgstr ""
+msgstr "מסכי CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
-msgstr ""
+msgstr "ברירת מחדל"
#: backend/epson.c:658 backend/epson2.c:256
#, no-c-format
msgid "High density printing"
-msgstr ""
+msgstr "הדפסה בצפיפות גבוהה"
#: backend/epson.c:659 backend/epson2.c:257
#, no-c-format
msgid "Low density printing"
-msgstr ""
+msgstr "הדפסה בצפיפות נמוכה"
#: backend/epson.c:660 backend/epson2.c:258
#, no-c-format
msgid "High contrast printing"
-msgstr ""
+msgstr "הדפסה בניגודיות גבוהה"
#: backend/epson.c:678 backend/epson2.c:276
#, no-c-format
msgid "User defined (Gamma=1.0)"
-msgstr ""
+msgstr "מוגדר משתמש (גמה=1.0)"
#: backend/epson.c:679 backend/epson2.c:277
#, no-c-format
msgid "User defined (Gamma=1.8)"
-msgstr ""
+msgstr "מוגדר משתמש (גמה=1.8)"
#: backend/epson.c:757
#, no-c-format
msgid "CD"
-msgstr ""
+msgstr "CD"
#: backend/epson.c:758
#, no-c-format
msgid "A5 portrait"
-msgstr ""
+msgstr "דיוקן A5"
#: backend/epson.c:759
#, no-c-format
msgid "A5 landscape"
-msgstr ""
+msgstr "נוף A5"
#: backend/epson.c:760 backend/kvs1025_opt.c:103 backend/kvs20xx_opt.c:77
#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
#, no-c-format
msgid "Letter"
-msgstr ""
+msgstr "מכתב"
#: backend/epson.c:761 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
#, no-c-format
msgid "A4"
-msgstr ""
+msgstr "A4"
#: backend/epson.c:762
#, no-c-format
msgid "Max"
-msgstr ""
+msgstr "מירבי"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
-#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4203
-#: backend/mustek_usb.c:260 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
-#: backend/snapscan-options.c:354 backend/stv680.c:1030 backend/teco2.c:1886
-#: backend/test.c:306 backend/u12.c:473 backend/umax.c:5054
+#: backend/snapscan-options.c:354 backend/stv680.c:1030
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
+#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
-msgstr ""
+msgstr "מצב סריקה"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
-msgstr ""
+msgstr "בוחר את הדפסת הרשת."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
-msgstr ""
+msgstr "נושר"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
-msgstr ""
+msgstr "בוחר את הנושר."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
-msgstr ""
+msgstr "בוחר את הבהירות."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
-msgstr ""
+msgstr "חדות"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
-msgstr ""
+msgstr "תיקון צבע"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
-msgstr ""
+msgstr "קובע את טבלת תיקון הצבע להתקן הפלט הנבחר."
#: backend/epson.c:3075
#, no-c-format
msgid "Color correction coefficients"
-msgstr ""
+msgstr "מקדמים של תיקון צבע"
#: backend/epson.c:3076
#, no-c-format
msgid "Matrix multiplication of RGB"
-msgstr ""
+msgstr "כפל מטריצה של RGB"
#: backend/epson.c:3093
#, no-c-format
msgid "Shift green to red"
-msgstr ""
+msgstr "החלף ירוק לאדום"
#: backend/epson.c:3094
#, no-c-format
msgid "Shift green to blue"
-msgstr ""
+msgstr "החלף ירוק לכחול"
#: backend/epson.c:3095
#, no-c-format
msgid "Shift red to green"
-msgstr ""
+msgstr "החלף אדום לירוק"
#: backend/epson.c:3097
#, no-c-format
msgid "Shift red to blue"
-msgstr ""
+msgstr "החלף אדום לכחול"
#: backend/epson.c:3098
#, no-c-format
msgid "Shift blue to green"
-msgstr ""
+msgstr "החלף כחול לירוק"
#: backend/epson.c:3099
#, no-c-format
msgid "Shift blue to red"
-msgstr ""
+msgstr "החלף כחול לאדום"
#: backend/epson.c:3102
#, no-c-format
msgid "Controls green level"
-msgstr ""
+msgstr "שולט על רמת ירוק"
#: backend/epson.c:3103
#, no-c-format
msgid "Adds to red based on green level"
-msgstr ""
+msgstr "מוסיף לאדום בהסתמך על רמת ירוק"
#: backend/epson.c:3104
#, no-c-format
msgid "Adds to blue based on green level"
-msgstr ""
+msgstr "מוסיף לכחול בהסתמך על רמת ירוק"
#: backend/epson.c:3105
#, no-c-format
msgid "Adds to green based on red level"
-msgstr ""
+msgstr "מוסיף לירוק בהסתמך על רמת אדום"
#: backend/epson.c:3106
#, no-c-format
msgid "Controls red level"
-msgstr ""
+msgstr "שולט על רמת אדום"
#: backend/epson.c:3107
#, no-c-format
msgid "Adds to blue based on red level"
-msgstr ""
+msgstr "מוסיף לכחול בהסתמך על רמת אדום"
#: backend/epson.c:3108
#, no-c-format
msgid "Adds to green based on blue level"
-msgstr ""
+msgstr "מוסיף לירוק בהסתמך על רמת כחול"
#: backend/epson.c:3109
#, no-c-format
msgid "Adds to red based on blue level"
-msgstr ""
+msgstr "מוסיף לאדום בהסתמך על רמת כחול"
#: backend/epson.c:3110
#, no-c-format
msgid "Controls blue level"
-msgstr ""
+msgstr "שולט על רמת כחול"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
-msgstr ""
+msgstr "בצע תמונת ראי."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
-msgstr ""
+msgstr "תצוגה מקדימה מהירה"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
-msgstr ""
+msgstr "חילוק שטח אוטומטי"
#: backend/epson.c:3258
#, no-c-format
msgid "Short resolution list"
-msgstr ""
+msgstr "רשימת רזולוציה קצרה"
#: backend/epson.c:3260
#, no-c-format
msgid "Display short resolution list"
-msgstr ""
+msgstr "מציג רשימת רזולוציה קצרה"
#: backend/epson.c:3267
#, no-c-format
msgid "Zoom"
-msgstr ""
+msgstr "זום"
#: backend/epson.c:3269
#, no-c-format
msgid "Defines the zoom factor the scanner will use"
-msgstr ""
+msgstr "מגדיר את מקדם הזום בשימוש הסורק"
#: backend/epson.c:3349
#, no-c-format
msgid "Quick format"
-msgstr ""
+msgstr "פורמט מהיר"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
-msgstr ""
+msgstr "ציוד אופציונלי"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
-msgstr ""
+msgstr "הוצא"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
-msgstr ""
+msgstr "הוצא את הדף במזין המסמכים האוטומטי"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
-msgstr ""
+msgstr "הוצאה אוטומטית"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
-msgstr ""
+msgstr "הוצא מסמך לאחר סריקה"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
-msgstr ""
+msgstr "מצב מזין מסמכים אוטומטי"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
-msgstr ""
+msgstr "בוחר את מצב מזין המסמכים האוטומטי (חד צדדי/דו צדדי)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
-msgstr ""
+msgstr "תא"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
-msgstr ""
+msgstr "בחר תא לסריקה"
#: backend/epson.h:69 backend/epson2.h:68
#, 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:72 backend/epson2.h:71
#, no-c-format
msgid "Focus Position"
-msgstr ""
+msgstr "מיקום פוקוס"
#: backend/epson.h:73 backend/epson2.h:72
#, no-c-format
-msgid "Sets the focus position to either the glass or 2.5mm above the glass"
-msgstr ""
+msgid ""
+"Sets the focus position to either the glass or 2.5mm above the glass"
+msgstr "קובע את מיקום הפוקוס לזכוכית או 2.5 מילימטר מעל הזכוכית"
#: backend/epson.h:75 backend/epson2.h:74
#, no-c-format
msgid "Wait for Button"
-msgstr ""
+msgstr "חכה לכפתור"
#: backend/epson.h:76 backend/epson2.h:75
#, no-c-format
@@ -2031,2161 +2061,2311 @@ msgid ""
"After sending the scan command, wait until the button on the scanner is "
"pressed to actually start the scan process."
msgstr ""
+"לאחר שליחת פקודת הסריקה, חכה עד שהכפתור על הסורק יילחץ כדי להתחיל בפועל "
+"את תהליך הסריקה."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
-msgstr ""
+msgstr "אינפרה אדום"
#: backend/epson2.c:117
#, no-c-format
msgid "TPU8x10"
-msgstr ""
+msgstr "TPU8x10"
#: backend/epson2.c:136
#, no-c-format
msgid "Positive Slide"
-msgstr ""
+msgstr "שקף ממשי"
#: backend/epson2.c:137
#, no-c-format
msgid "Negative Slide"
-msgstr ""
+msgstr "שקף תשליל"
#: backend/epson2.c:215
#, no-c-format
msgid "Built in CCT profile"
-msgstr ""
+msgstr "פרופיל CCT מובנה"
#: backend/epson2.c:216
#, no-c-format
msgid "User defined CCT profile"
-msgstr ""
+msgstr "פרופיל CCT מוגדר משתמש"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
-msgstr ""
+msgstr "דולק"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
-msgstr ""
+msgstr "כבוי"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
-msgstr ""
+msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
-msgstr ""
+msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
-msgstr ""
+msgstr "Dither"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
-msgstr ""
+msgstr "דיפוזיה"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
-msgstr ""
+msgstr "לבן"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
-msgstr ""
+msgstr "שחור"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
-msgstr ""
+msgstr "המשך"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
-msgstr ""
+msgstr "עצור"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
-msgstr ""
+msgstr "10 מילימטר"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
-msgstr ""
+msgstr "15 מילימטר"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
-msgstr ""
+msgstr "20 מילימטר"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
-msgstr ""
+msgstr "אופקי"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
-msgstr ""
+msgstr "אופקי מודגש"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
-msgstr ""
+msgstr "אופקי צר"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
-msgstr ""
+msgstr "אנכי"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
-msgstr ""
+msgstr "אנכי מודגש"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
-msgstr ""
+msgstr "מלמעלה למטה"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
-msgstr ""
+msgstr "מלמטה למעלה"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
-msgstr ""
+msgstr "חזית"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
-msgstr ""
+msgstr "אחור"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
-msgstr ""
+msgstr "פונקציית גמה אקספוננט"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
-msgstr ""
+msgstr "משנה את העוצמה של גווני הביניים"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
-msgstr ""
+msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
-msgstr ""
+msgstr "הפוך את עיצוב התמונה"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
-msgstr ""
+msgstr "סוג הדפסת רשת"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
-msgstr ""
+msgstr "סוג בקרה של מסנן הדפסת רשת"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr ""
+msgstr "תבנית בקרה של מסנן הדפסת רשת"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
-msgstr ""
+msgstr "תרשים"
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, no-c-format
msgid "Perform outline extraction"
-msgstr ""
+msgstr "בצע חילוץ תרשים"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
-msgstr ""
+msgstr "הדגשה"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
-msgstr ""
+msgstr "שלילי כדי להחליק או חיובי כדי לחדד את התמונה"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, no-c-format
msgid "Separation"
-msgstr ""
+msgstr "הפרדה"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr ""
+msgstr "הפעל הפרדה אוטומטית של תמונה וטקסט"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
-msgstr ""
+msgstr "ביצוע תמונת ראי"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
-msgstr ""
+msgstr "בצע שיקוף אופקי של תמונת הפלט"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "White level follower"
-msgstr ""
+msgstr "עוקב רמת לבן"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, no-c-format
msgid "Control white level follower"
-msgstr ""
+msgstr "שלוט על עוקב רמת לבן"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, no-c-format
msgid "BP filter"
-msgstr ""
+msgstr "מסנן כדורי"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr ""
+msgstr "משפר איכות טקסט של עט כדורי ברזולוציה גבוהה"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
-msgstr ""
+msgstr "החלקה"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr ""
+msgstr "הפעל החלקה ל-OCR משופר"
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, no-c-format
msgid "Gamma curve"
-msgstr ""
+msgstr "עקום גמה"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
-msgstr ""
+msgstr "עקום גמה, מבהיר לכהה, אך יתכן ושניים עליונים לא יעבדו"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
-msgstr ""
+msgstr "עקום סף"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
-msgid "Threshold curve, from light to dark, but upper two may not be linear"
-msgstr ""
+msgid ""
+"Threshold curve, from light to dark, but upper two may not be linear"
+msgstr "עקום סף, מבהיר לכהה, אך יתכן ושניים עליונים לא יהיו לינאריים"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
-msgstr ""
+msgstr "לבן סף"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
-msgstr ""
+msgstr "קבע פיקסלים שווים לסף ללבן במקום לשחור"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
-msgstr ""
+msgstr "הסרת רעשים"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
-msgstr ""
+msgstr "מטריצה 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr ""
+msgstr "הסר רעשים ריבוע 5 פיקסל"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
-msgstr ""
+msgstr "מטריצה 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr ""
+msgstr "הסר רעשים ריבוע 4 פיקסל"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
-msgstr ""
+msgstr "מטריצה 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr ""
+msgstr "הסר רעשים ריבוע 3 פיקסל"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
-msgstr ""
+msgstr "מטריצה 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr ""
+msgstr "הסר רעשים ריבוע 2 פיקסל"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
-msgstr ""
+msgstr "שונות"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
-msgstr ""
+msgstr "קבע קצב שונות SDTC (רגישות), 0 שווה ל-127"
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, no-c-format
msgid "Auto width detection"
-msgstr ""
+msgstr "גילוי רוחב אוטומטי"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
-msgstr ""
+msgstr "סורק מגלה צידי נייר. עלול להאט מהירות סריקה."
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, no-c-format
msgid "Auto length detection"
-msgstr ""
+msgstr "גילוי אורך אוטומטי"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
-msgstr ""
+msgstr "סורק מגלה קצה נמוך של נייר. עלול להטעות כמה ממשקים."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
-msgstr ""
+msgstr "דחיסה"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
-msgstr ""
+msgstr "הפעל מידע דחוס. עלול לגרום לנפילה של יישום הממשק"
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
-msgstr ""
+msgstr "ארגומנט דחיסה"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, 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:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
-msgstr ""
+msgstr "פעולת DF"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
-msgstr ""
+msgstr "פעולה בעקבות תקלת הזנה כפולה"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
-msgstr ""
+msgstr "עיוות DF"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr ""
+msgstr "הפעל תקלת הזנה כפולה כתוצאה מעיוות"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
-msgstr ""
+msgstr "עובי DF"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr ""
+msgstr "הפעל תקלת הזנה כפולה כתוצאה מעובי נייר"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
-msgstr ""
+msgstr "אורך DF"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr ""
+msgstr "הפעל תקלת הזנה כפולה כתוצאה מאורך נייר"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
-msgstr ""
+msgstr "הבדל אורך DF"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr ""
+msgstr "הבדל באורך עמוד יגרור תקלת הזנה כפולה"
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
-msgstr ""
+msgstr "מצב שחזור DF"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr ""
+msgstr "בקש מהסורק להפוך הזנה בעת היתקעות נייר"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
-msgstr ""
+msgstr "הגנת נייר"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr ""
+msgstr "בקש מהסורק לנבא תקלות במזין המסמכים האוטומטי"
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, no-c-format
msgid "Advanced paper protection"
-msgstr ""
+msgstr "הגנת נייר מתקדמת"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
-msgstr ""
+msgstr "בקש מהסורק לנבא תקלות במזין המסמכים האוטומטי בעזרת חיישנים משופרים"
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, no-c-format
msgid "Staple detection"
-msgstr ""
+msgstr "גילוי סיכת הידוק"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
-msgstr ""
+msgstr "בקש מהסורק לגלות תקלות במזין המסמכים האוטומטי כתוצאה מסיכות הידוק"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
-msgstr ""
+msgstr "צבע רקע"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
-msgid "Set color of background for scans. May conflict with overscan option"
-msgstr ""
+msgid ""
+"Set color of background for scans. May conflict with overscan option"
+msgstr "קבע צבע רקע לסריקות. עלול להתנגש עם אפשרות סריקת יתר"
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
-msgstr ""
+msgstr "צבע נושר"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, 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:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
-msgstr ""
+msgstr "מצב חוצץ"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
+"בקש מהסורק לקרוא עמודים במהירות ממזין המסמכים האוטומטי לתוך זיכרון פנימי"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
-msgstr ""
+msgstr "איסוף מקדים"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr ""
+msgstr "בקש מהסורק לתפוס את העמוד הבא ממזין המסמכים האוטומטי"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
-msgstr ""
+msgstr "סריקת יתר"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, 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:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
-msgstr ""
+msgstr "טיימר שינה"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, 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:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
-msgstr ""
+msgstr "טיימר כיבוי"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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:3930
+#: backend/fujitsu.c:3977
#, no-c-format
msgid "Duplex offset"
-msgstr ""
+msgstr "אופסט דו צדדי"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
-msgstr ""
+msgstr "כוון אופסט חזיתי/אחורי"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
-msgstr ""
+msgstr "אופסט ירוק"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, no-c-format
msgid "Adjust green/red offset"
-msgstr ""
+msgstr "כוון אופסט ירוק/אדום"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
-msgstr ""
+msgstr "אופסט כחול"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
-msgstr ""
+msgstr "כוון אופסט כחול/אדום"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
-msgstr ""
+msgstr "זיכרון נמוך"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, 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. ערך של אפשרות \"צד\" ניתן "
+"לשימוש על מנת לקבוע את התמונה הנכונה. אפשרות זו אמורה להיות בשימוש רק עם "
+"תוכנות ממשק מותאמות אישית."
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Duplex side"
-msgstr ""
+msgstr "צד דו צדדי"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
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:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr ""
+msgstr "הטיה וקיצוץ של חומרה"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr ""
+msgstr "בקש מסורק לסובב ולקצץ עמודים באופן דיגיטלי."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr ""
+msgstr "קיצוץ של חומרה"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr ""
+msgstr "בקש מהדרייבר לסובב עמודים מוטים באופן דיגיטלי."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr ""
+msgstr "קוטר פגמים של תוכנה"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
-msgstr ""
+msgstr "קוטר מירבי של נקודות בודדות להסרה מהסריקה."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
-msgstr ""
+msgstr "קיצוץ של תוכנה"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr ""
+msgstr "בקש מהדרייבר להסיר את הגבול מהעמודים באופן דיגיטלי."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
-msgstr ""
+msgstr "הפסק כאשר ביטול"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
-msgid "Request driver to halt the paper feed instead of eject during a cancel."
-msgstr ""
+msgid ""
+"Request driver to halt the paper feed instead of eject during a cancel."
+msgstr "בקש מהדרייבר להפסיק את הזנת הנייר במקום להוציא במהלך ביטול."
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, no-c-format
msgid "Endorser Options"
-msgstr ""
+msgstr "אפשרויות תומך"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
-msgstr ""
+msgstr "שולט על יחידת התמיכה"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
-msgstr ""
+msgstr "תומך"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
-msgstr ""
+msgstr "הפעל יחידת תמיכה"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
-msgstr ""
+msgstr "ביטים של תומך"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr ""
+msgstr "קובע את ערך הספירה המירבי של התומך."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
-msgstr ""
+msgstr "ערך תומך"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
-msgstr ""
+msgstr "ערך ספירה התחלתי של התומך."
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
-msgstr ""
+msgstr "צעד תומך"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
-msgstr ""
+msgstr "שנה את ערך הספירה של התומך בכמות זו לכל עמוד."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
-msgstr ""
+msgstr "תומך Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr ""
+msgstr "אופסט הדפסה של התומך מהחלק העליון של הנייר."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
-msgstr ""
+msgstr "גופן תומך"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
-msgstr ""
+msgstr "גופן הדפסה תומך."
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser direction"
-msgstr ""
+msgstr "כיוון תומך"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
-msgstr ""
+msgstr "כיוון הדפסה תומך."
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
-msgstr ""
+msgstr "צד תומך"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
-msgstr ""
+msgstr "צד הדפסה תומך, דורש תמיכת חומרה לשינוי"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
-msgstr ""
+msgstr "מחרוזת תומך"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
+"פורמט הדפסה אלפא נומרי תומך. ערך מונה מחליף את %05ud או %08ud בסוף."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
-msgstr ""
+msgstr "קצה עליון"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
-msgstr ""
+msgstr "נייר משוך בחלקו לתוך מזין מסמכים אוטומטי"
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
-msgstr ""
+msgstr "נייר A3"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
-msgstr ""
+msgstr "התגלה נייר A3"
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
-msgstr ""
+msgstr "נייר B4"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
-msgstr ""
+msgstr "התגלה נייר B4"
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
-msgstr ""
+msgstr "נייר A4"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
-msgstr ""
+msgstr "התגלה נייר A4"
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
-msgstr ""
+msgstr "נייר B5"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
-msgstr ""
+msgstr "התגלה נייר B5"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
-msgstr ""
+msgstr "OMR or DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
-msgstr ""
+msgstr "התגלה OMR או הזנה כפולה"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
-msgstr ""
+msgstr "חיסכון בחשמל"
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
-msgstr ""
+msgstr "סורק במצב חיסכון בחשמל"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
-msgstr ""
+msgstr "הזנה ידנית"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
-msgstr ""
+msgstr "נבחרה הזנה ידנית"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
-msgstr ""
+msgstr "פונקציה"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
-msgstr ""
+msgstr "תו פונקציה על מסך"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
-msgstr ""
+msgstr "דיו נמוך"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
-msgstr ""
+msgstr "דיו רושם עומד להיגמר"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
-msgstr ""
+msgstr "הזנה כפולה"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
-msgstr ""
+msgstr "התגלתה הזנה כפולה"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
-msgstr ""
+msgstr "קוד תקלה"
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
-msgstr ""
+msgstr "קוד תקלה חומרה"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
-msgstr ""
+msgstr "זווית הטיה"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
-msgstr ""
+msgstr "דורש רקע שחור עבור סריקה"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
-msgstr ""
+msgstr "דיו נותר"
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, no-c-format
msgid "Imprinter ink level"
-msgstr ""
+msgstr "רמת דיו רושם"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, no-c-format
msgid "Density"
-msgstr ""
+msgstr "צפיפות"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
-msgstr ""
+msgstr "לוח צפיפות"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, no-c-format
msgid "Duplex switch"
-msgstr ""
+msgstr "החלפה דו צדדית"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
-msgstr ""
+msgstr "בקש מה-backend להסיר גבול מהעמודים באופן דיגיטלי"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
-msgstr ""
+msgstr "בקש מהדרייבר לזנוח עמודים עם מספר נמוך של פיקסלים כהים"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr ""
+msgstr "סיבוב תוכנה"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
-msgstr ""
+msgstr "בקש מהדרייבר לגלות ולתקן סיבוב תמונה של 90 מעלות"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
-msgstr ""
+msgstr "תוספות"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
-msgstr ""
+msgstr "עקום סף דינמי, מבהיר לכהה, בדרך כלל 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
-msgstr ""
+msgstr "כבה סגנון קווי דינמי"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
+"כבה שימוש של אלגוריתם מסתגל תוכנתי ליצור סגנון קווי ובמקום זאת הסתמך על "
+"סגנון קווי חומרתי."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
-msgstr ""
+msgstr "כבה אינטרפולציה"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
-"When using high resolutions where the horizontal resolution is smaller than "
-"the vertical resolution this disables horizontal interpolation."
+"When using high resolutions where the horizontal resolution is smaller "
+"than the vertical resolution this disables horizontal interpolation."
msgstr ""
+"כאשר רזולוציות גבוהות בשימוש היכן שהרזולוציה האופקית קטנה מהרזולוציה "
+"האנכית זה מכבה אינטרפולציה אופקית."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, no-c-format
msgid "Color filter"
-msgstr ""
+msgstr "מסנן צבע"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
-msgstr ""
+msgstr "כאשר משתמשים באפור או בסגנון קווי אפשרות זו בוחרת את הצבע בשימוש."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, no-c-format
msgid "Calibration file"
-msgstr ""
+msgstr "קובץ כיול"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, no-c-format
msgid "Specify the calibration file to use"
-msgstr ""
+msgstr "פרט את קובץ הכיול לשימוש"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, no-c-format
msgid "Calibration cache expiration time"
-msgstr ""
+msgstr "זמן תפוגה מטמון כיול"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
-msgstr ""
+msgstr "זמן כיבוי מנורה"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
-msgstr ""
+msgstr "מנורה כבויה במהלך סריקה"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr ""
+msgstr "המנורה תיכבה במהלך סריקה. "
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
-msgstr ""
+msgstr "כפתור קובץ"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
-msgstr ""
+msgstr "כפתור OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
-msgstr ""
+msgstr "כפתור הדלקה"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, no-c-format
msgid "Extra button"
-msgstr ""
+msgstr "כפתור אקסטרה"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
-msgstr ""
+msgstr "דרוש כיול"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
-msgstr ""
+msgstr "הסורק דורש כיול עבור ההגדרות הנוכחיות"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
-msgstr ""
+msgstr "כפתורים"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
-msgstr ""
+msgstr "כייל"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
-msgstr ""
+msgstr "התחל כיול בעזרת דף מיוחד"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
-msgstr ""
+msgstr "נקה כיול"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
+msgstr "נקה מטמון כיול"
+
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "כיול גס"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
msgstr ""
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
-msgstr ""
+msgstr "מתאם שקיפות"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
-msgstr ""
+msgstr "צבע מצב אפור"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
-msgstr ""
+msgstr "בוחר איזה צבע סריקה בשימוש מצב אפור (ברירת מחדל: ירוק)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392 backend/mustek_usb2.c:410
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
+#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
-msgstr ""
+msgstr "אפשרויות ניקוי באגים"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
-msgstr ""
+msgstr "חימום אוטומטי"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, 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 שניות."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
-msgstr ""
+msgstr "סריקה מלאה"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
+"סרוק את כל שטח הסריקה כולל רצועת הכיול. שים לב. אל תבחר את כל הגובה. "
+"לבדיקה בלבד."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
-msgstr ""
+msgstr "כיול גס"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, 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:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
-msgstr ""
+msgstr "כיול גס עבור סריקה ראשונה בלבד"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, 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:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
-msgstr ""
+msgstr "קווי חזרה"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, 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:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
-msgstr ""
+msgstr "ערך גמה"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
-msgstr ""
+msgstr "קובע את ערך גמה של כל הערוצים."
#: backend/hp3500.c:1020
#, no-c-format
msgid "Geometry Group"
-msgstr ""
+msgstr "קבוצת גיאומטריה"
#: backend/hp3500.c:1073 backend/hp3500.c:1074
#, no-c-format
msgid "Scan Mode Group"
-msgstr ""
+msgstr "קבוצת מצב סריקה"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
-msgstr ""
+msgstr "שקף"
#: backend/hp3900_sane.c:1405
#, no-c-format
msgid "Scanner model"
-msgstr ""
+msgstr "דגם סורק"
#: backend/hp3900_sane.c:1408
#, no-c-format
msgid "Allows one to test device behaviour with other supported models"
-msgstr ""
+msgstr "מאפשר לבדוק התנהגות ההתקן עם דגמים נתמכים אחרים"
#: backend/hp3900_sane.c:1422
#, no-c-format
msgid "Image colours will be inverted"
-msgstr ""
+msgstr "הצבעים של התמונה יתהפכו"
#: backend/hp3900_sane.c:1436
#, no-c-format
msgid "Disable gamma correction"
-msgstr ""
+msgstr "כבה תיקון גמה"
#: backend/hp3900_sane.c:1437
#, no-c-format
msgid "Gamma correction will be disabled"
-msgstr ""
+msgstr "תיקון גמה יהיה כבוי"
#: backend/hp3900_sane.c:1451
#, no-c-format
msgid "Disable white shading correction"
-msgstr ""
+msgstr "כבה תיקון הצללה לבנה"
#: backend/hp3900_sane.c:1453
#, no-c-format
msgid "White shading correction will be disabled"
-msgstr ""
+msgstr "תיקון הצללה לבנה יהיה כבוי"
#: backend/hp3900_sane.c:1467
#, no-c-format
msgid "Skip warmup process"
-msgstr ""
+msgstr "דלג על תהליך חימום"
#: backend/hp3900_sane.c:1468
#, no-c-format
msgid "Warmup process will be disabled"
-msgstr ""
+msgstr "תהליך חימום יהיה כבוי"
#: backend/hp3900_sane.c:1482
#, no-c-format
msgid "Force real depth"
-msgstr ""
+msgstr "אלץ עומק אמיתי"
#: backend/hp3900_sane.c:1485
#, 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:1499
#, no-c-format
msgid "Emulate Grayscale"
-msgstr ""
+msgstr "דמה גווני אפור"
#: backend/hp3900_sane.c:1502
#, 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:1516
#, no-c-format
msgid "Save debugging images"
-msgstr ""
+msgstr "שמור תמונות ניפוי באגים"
#: backend/hp3900_sane.c:1519
#, 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:1533
#, no-c-format
msgid "Reset chipset"
-msgstr ""
+msgstr "אתחל צ'יפסט"
#: backend/hp3900_sane.c:1534
#, no-c-format
msgid "Resets chipset data"
-msgstr ""
+msgstr "מאתחל מידע צ'יפסט"
#: backend/hp3900_sane.c:1547
#, no-c-format
msgid "Information"
-msgstr ""
+msgstr "מידע"
#: backend/hp3900_sane.c:1560
#, no-c-format
msgid "Chipset name"
-msgstr ""
+msgstr "שם צ'יפסט"
#: backend/hp3900_sane.c:1561
#, no-c-format
msgid "Shows chipset name used in device."
-msgstr ""
+msgstr "מראה שם צ'יפסט בשימוש ההתקן."
#: backend/hp3900_sane.c:1565
#, no-c-format
msgid "Unknown"
-msgstr ""
+msgstr "לא ידוע"
#: backend/hp3900_sane.c:1571
#, no-c-format
msgid "Chipset ID"
-msgstr ""
+msgstr "Chipset ID"
#: backend/hp3900_sane.c:1572
#, no-c-format
msgid "Shows the chipset ID"
-msgstr ""
+msgstr "מראה את ה-ID של הצ'יפסט"
#: backend/hp3900_sane.c:1582
#, no-c-format
msgid "Scan counter"
-msgstr ""
+msgstr "מונה סריקה"
#: backend/hp3900_sane.c:1584
#, no-c-format
msgid "Shows the number of scans made by scanner"
-msgstr ""
+msgstr "מציג את מספר הסריקות שבוצעו בעזרת הסורק"
#: backend/hp3900_sane.c:1594
#, no-c-format
msgid "Update information"
-msgstr ""
+msgstr "עדכן מידע"
#: backend/hp3900_sane.c:1595
#, no-c-format
msgid "Updates information about device"
-msgstr ""
+msgstr "מעדכן מידע אודות התקן"
#: backend/hp3900_sane.c:1635
#, no-c-format
msgid "This option reflects a front panel scanner button"
-msgstr ""
+msgstr "אפשרות זו משקפת כפתור סורק בלוח החזיתי"
#: backend/hp5400_sane.c:313 backend/niash.c:678
#, no-c-format
msgid "Image"
-msgstr ""
+msgstr "תמונה"
#: backend/hp5400_sane.c:352 backend/niash.c:709
#, no-c-format
msgid "Miscellaneous"
-msgstr ""
+msgstr "שונות"
#: backend/hp5400_sane.c:358
#, no-c-format
msgid "offset X"
-msgstr ""
+msgstr "אופסט X"
#: backend/hp5400_sane.c:359
#, no-c-format
msgid "Hardware internal X position of the scanning area."
-msgstr ""
+msgstr "מיקום X פנימי חומרה של שטח הסריקה."
#: backend/hp5400_sane.c:368
#, no-c-format
msgid "offset Y"
-msgstr ""
+msgstr "אופסט Y"
#: backend/hp5400_sane.c:369
#, no-c-format
msgid "Hardware internal Y position of the scanning area."
-msgstr ""
+msgstr "מיקום Y פנימי חומרה של שטח הסריקה."
#: backend/hp5400_sane.c:381 backend/niash.c:716
#, no-c-format
msgid "Lamp status"
-msgstr ""
+msgstr "סטטוס מנורה"
#: backend/hp5400_sane.c:382 backend/niash.c:717
#, no-c-format
msgid "Switches the lamp on or off."
-msgstr ""
+msgstr "מדליק או מכבה את המנורה."
#: backend/hp5400_sane.c:393 backend/niash.c:727
#, no-c-format
msgid "Calibrates for black and white level."
-msgstr ""
+msgstr "מכייל עבור רמת שחור ולבן."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
-msgstr ""
+msgstr "מזין מסמכים אוטומטי"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
-msgstr ""
+msgstr "שקפים TMA"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
-msgstr ""
+msgstr "תשלילים TMA"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
-msgstr ""
+msgstr "צבע (48 ביטים)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
-msgstr ""
+msgstr "הארך זמן תפוגה מנורה"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
-msgstr ""
+msgstr "מאריך זמן תפוגה מנורה (מ-15 דקות ל-1 שעה)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
-msgstr ""
+msgstr "חכה לכפתור"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
+msgstr "מחכה לכפתור לפני סריקה"
+
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "כפתור אחרון שנלחץ"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "קבל את ה-ID של הכפתור האחרון שנלחץ (קריאה בלבד)"
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "מונה סריקה"
+
+#: backend/hp5590.c:122
+#, fuzzy, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "קבל את ה-ID של הכפתור האחרון שנלחץ (קריאה בלבד)"
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "צבע סגנון קווי"
+
+#: backend/hp5590.c:125
+#, fuzzy, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "קבל את ה-ID של הכפתור האחרון שנלחץ (קריאה בלבד)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
msgstr ""
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:128
#, no-c-format
-msgid "Advanced Options"
+msgid "Get state of document-available indicator in ADF (read only)"
msgstr ""
-#: backend/hp-option.c:3041
+#: backend/hp5590.c:130
#, no-c-format
-msgid "Coarse"
+msgid "Hide end-of-page pixel"
+msgstr "הסתר את הפיקסל של סוף העמוד"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr "מסתיר את הפיקסלים המורים על סוף העמוד ומחליף עם הפיקסלים השכנים"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr "מצב מילוי של קווים משתרכים לאחר מידע סריקה (מזין מסמכים אוטומטי)"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+"גולמי = מידע סריקה גולמי ,אחרונה = חזור על שורת סריקה אחרונה, מפת סיביות "
+"= מפת סיביות שחור לבן, לבן = צבע לבן, שחור = צבע שחור, צבע = ערך צבע RGB "
+"או אפור"
-#: backend/hp-option.c:3042
+#: backend/hp5590.c:137
#, no-c-format
-msgid "Fine"
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr "ערך צבע RGB או אפור למצב מילוי \"צבע\""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+"ערך צבע עבור מצב מילוי קווים משתרכים \"צבע\". צבע RGB לפי r*65536+256*g"
+"+b או ערך אפור (ברירת מחדל=סגול או אפור)"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:2987
+#, no-c-format
+msgid "Advanced Options"
+msgstr "אפשרויות מתקדמות"
+
+#: backend/hp-option.c:3044
+#, no-c-format
+msgid "Coarse"
+msgstr "גס"
+
+#: backend/hp-option.c:3045
+#, no-c-format
+msgid "Fine"
+msgstr "עדין"
+
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
-msgstr ""
+msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
-msgstr ""
+msgstr "מותאם אישית"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143 backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
-msgstr ""
+msgstr "אוטומטי"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
-msgstr ""
+msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
-msgstr ""
+msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
-msgstr ""
+msgstr "חודר"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
-msgstr ""
+msgstr "אפור NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
-msgstr ""
+msgstr "אפור XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
-msgstr ""
+msgstr "לאט"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252 backend/kvs40xx_opt.c:230
-#: backend/matsushita.c:244 backend/mustek.c:149 backend/plustek.c:234
-#: backend/plustek_pp.c:203 backend/u12.c:155
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
+#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
+#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
-msgstr ""
+msgstr "רגיל"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
-msgstr ""
+msgstr "מהר"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
-msgstr ""
+msgstr "מהר מאוד"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
-msgstr ""
+msgstr "2-פיקסל"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
-msgstr ""
+msgstr "4-פיקסל"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
-msgstr ""
+msgstr "8-פיקסל"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
-msgstr ""
+msgstr "הדפסה"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
-msgstr ""
+msgstr "רצועת-סרט"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
-msgstr ""
+msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
-msgstr ""
+msgstr "על תנאי"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
-msgstr ""
+msgstr "ניסוי"
#: backend/hp-option.h:60
#, no-c-format
msgid "Sharpening"
-msgstr ""
+msgstr "חידוד"
#: backend/hp-option.h:61
#, no-c-format
msgid "Set sharpening value."
-msgstr ""
+msgstr "קבע ערך חידוד."
#: backend/hp-option.h:66
#, no-c-format
msgid "Auto Threshold"
-msgstr ""
+msgstr "סף אוטומטי"
#: backend/hp-option.h:68
#, no-c-format
msgid "Enable automatic determination of threshold for line-art scans."
-msgstr ""
+msgstr "הפעל קביעה אוטומטית של סף עבור סריקות סגנון קווי."
#: backend/hp-option.h:74
#, no-c-format
msgid "Select smoothing filter."
-msgstr ""
+msgstr "בחר מסנן החלקה."
#: backend/hp-option.h:79
#, no-c-format
msgid "Unload media after scan"
-msgstr ""
+msgstr "הוצא מדיה לאחר סריקה"
#: backend/hp-option.h:80
#, no-c-format
msgid "Unloads the media after a scan."
-msgstr ""
+msgstr "מוציא את המדיה לאחר סריקה."
#: backend/hp-option.h:85
#, no-c-format
msgid "Change document"
-msgstr ""
+msgstr "שנה מסמך"
#: backend/hp-option.h:86
#, no-c-format
msgid "Change Document."
-msgstr ""
+msgstr "שנה מסמך."
#: backend/hp-option.h:91
#, no-c-format
msgid "Unload"
-msgstr ""
+msgstr "הוצא"
#: backend/hp-option.h:92
#, no-c-format
msgid "Unload Document."
-msgstr ""
+msgstr "הוצא מסמך."
#: backend/hp-option.h:98
#, no-c-format
msgid "Start calibration process."
-msgstr ""
+msgstr "התחל תהליך כיול."
#: backend/hp-option.h:103
#, no-c-format
msgid "Media"
-msgstr ""
+msgstr "מדיה"
#: backend/hp-option.h:104
#, no-c-format
msgid "Set type of media."
-msgstr ""
+msgstr "קבע סוג מדיה."
#: backend/hp-option.h:109
#, no-c-format
msgid "Exposure time"
-msgstr ""
+msgstr "זמן חשיפה"
#: backend/hp-option.h:111
#, 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% לשקפים רגילים ו\"תשלילים\" עבור סרט תשלילים. עבור תמונות "
+"כהות (תת חשיפה) אתה יכול להגדיל את הערך הזה."
#: backend/hp-option.h:119 backend/hp-option.h:126
#, no-c-format
msgid "Color Matrix"
-msgstr ""
+msgstr "מטריצת צבע"
#: backend/hp-option.h:121
#, no-c-format
msgid "Set the scanners color matrix."
-msgstr ""
+msgstr "קבע את מטריצת הצבע של הסורק."
#: backend/hp-option.h:127
#, no-c-format
msgid "Custom color matrix."
-msgstr ""
+msgstr "מטריצת צבע מותאמת אישית."
#: backend/hp-option.h:132
#, no-c-format
msgid "Mono Color Matrix"
-msgstr ""
+msgstr "מטריצת צבע מונו"
#: backend/hp-option.h:133
#, no-c-format
msgid "Custom color matrix for grayscale scans."
-msgstr ""
+msgstr "מטריצת צבע מותאמת אישית עבור סריקות בגווני אפור."
#: backend/hp-option.h:138
#, no-c-format
msgid "Mirror horizontal"
-msgstr ""
+msgstr "בצע תמונת ראי אופקית"
#: backend/hp-option.h:139
#, no-c-format
msgid "Mirror image horizontally."
-msgstr ""
+msgstr "תמונת ראי אופקית."
#: backend/hp-option.h:144
#, no-c-format
msgid "Mirror vertical"
-msgstr ""
+msgstr "בצע תמונת ראי אנכית"
#: backend/hp-option.h:145
#, no-c-format
msgid "Mirror image vertically."
-msgstr ""
+msgstr "תמונת ראי אנכית."
#: backend/hp-option.h:150
#, no-c-format
msgid "Update options"
-msgstr ""
+msgstr "עדכן אפשרויות"
#: backend/hp-option.h:151
#, no-c-format
msgid "Update options."
-msgstr ""
+msgstr "עדכן אפשרויות."
#: backend/hp-option.h:156
#, no-c-format
msgid "8 bit output"
-msgstr ""
+msgstr "פלט 8 ביט"
#: backend/hp-option.h:158
#, no-c-format
msgid "Use bit depth greater eight internally, but output only eight bits."
-msgstr ""
+msgstr "השתמש בעומק ביט גדול משמונה פנימית, אבל בצע פלט רק של שמונה ביטים."
#: backend/hp-option.h:164
#, no-c-format
msgid "Front button wait"
-msgstr ""
+msgstr "המתנה כפתור חזיתי"
#: backend/hp-option.h:165
#, no-c-format
msgid "Wait to scan for front-panel button push."
-msgstr ""
+msgstr "המתן לסריקה עד ללחיצה על כפתור בלוח החזיתי."
#: backend/hp-option.h:172
#, no-c-format
msgid "Shut off lamp"
-msgstr ""
+msgstr "כיבוי מנורה"
#: backend/hp-option.h:173
#, no-c-format
msgid "Shut off scanner lamp."
-msgstr ""
+msgstr "כיבוי מנורת סורק."
#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
-msgstr ""
+msgstr "גודל נייר"
#: backend/kvs1025.h:52 backend/kvs1025.h:67 backend/matsushita.h:220
#: backend/matsushita.h:227
#, no-c-format
msgid "Automatic separation"
-msgstr ""
+msgstr "הפרדה אוטומטית"
#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
#, no-c-format
msgid "Landscape"
-msgstr ""
+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
#, no-c-format
msgid "Manual feed mode"
-msgstr ""
+msgstr "מצב הזנה ידנית"
#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
#, 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:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
-msgstr ""
+msgstr "הפעל סריקה דו צדדית (משני הצדדים)"
#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
-msgstr ""
+msgstr "גודל פיזי של הנייר במזין המסמכים האוטומטי"
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr ""
+msgstr "שחור לבן"
#: backend/kvs1025_opt.c:40
#, no-c-format
msgid "halftone"
-msgstr ""
+msgstr "הדפסת רשת"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr ""
+msgstr "אפור"
#: backend/kvs1025_opt.c:42
#, 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:704 backend/kvs40xx.c:722 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
#, no-c-format
msgid "continuous"
-msgstr ""
+msgstr "רציף"
-#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62 backend/kvs40xx_opt.c:115
+#: 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 "wait_doc"
-#: 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 "wait_key"
-#: 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 "user_def"
-#: 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 "business_card"
#: 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
#, 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
#, 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
#, 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
#, 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
#, no-c-format
msgid "Legal"
-msgstr ""
+msgstr "Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
-msgstr ""
+msgstr "bayer_64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
-msgstr ""
+msgstr "bayer_16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
-msgstr ""
+msgstr "halftone_32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
-msgstr ""
+msgstr "halftone_64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
-msgstr ""
+msgstr "דיפוזיה"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
-msgstr ""
+msgstr "רגיל"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
-msgstr ""
+msgstr "בהיר"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr ""
+msgstr "כהה"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
-msgstr ""
+msgstr "מסורק"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
-msgstr ""
+msgstr "מנייר"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
-msgstr ""
+msgstr "ברירת מחדל"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
-msgstr ""
+msgstr "חלק"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: 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:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
-msgstr ""
+msgstr "נמוך"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
-msgstr ""
+msgstr "בינוני"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: 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:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr ""
+msgstr "crt"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
-msgstr ""
+msgstr "linier"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
-msgstr ""
+msgstr "אדום"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
-msgstr ""
+msgstr "ירוק"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: 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:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
-msgstr ""
+msgstr "קובע את מקור הסריקה"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
-msgstr ""
+msgstr "מצב הזנה"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
-msgstr ""
+msgstr "קובע את מצב ההזנה"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr ""
+msgstr "הפעל/כבה מצב נייר ארוך"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr ""
+msgstr "הפעל/כבה מצב בקרת אורך"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
-msgstr ""
+msgstr "קובע את מצב הזנה ידנית"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
-msgstr ""
+msgstr "קובע זמן תפוגה בשניות של הזנה ידנית"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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:631 backend/kvs20xx_opt.c:276
+#: 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:632 backend/kvs20xx_opt.c:277
+#: 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:634 backend/kvs20xx_opt.c:278
+#: 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:661 backend/kvs20xx_opt.c:309
+#: 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 ""
+msgstr "קבע מיקום נייר: לתמונת נוף true, לתמונת דיוקן false"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
-msgstr ""
+msgstr "סף אוטומטי"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, 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:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
-msgstr ""
+msgstr "הפחתת רעשים"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
-msgstr ""
+msgstr "הפחת רעש נקודה מבודדת"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
-msgstr ""
+msgstr "הדגשת תמונה"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
-msgstr ""
+msgstr "קובע הדגשת תמונה"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
-msgstr ""
+msgstr "גמה"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
-msgstr ""
+msgstr "צבע מנורה"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
-msgstr ""
+msgstr "קובע את צבע המנורה (נפילת צבע)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr ""
+msgstr "הפוך תמונה במצב שחור לבן או הדפסת רשת"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr ""
+msgstr "בצע תמונת ראי (היפוך שמאל/ימין)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr ""
+msgstr "דחיסת jpeg"
-#: backend/kvs1025_opt.c:850
+#: 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:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr ""
+msgstr "סובב תמונה בכיוון השעון"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr ""
+msgstr "בקש מהדרייבר לסובב עמודים בכמות קבועה"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr ""
+msgstr "בקש מהדרייבר לסובב עמודים מוטים באופן דיגיטלי"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
-msgstr ""
+msgstr "קוטר מירבי של נקודות בודדות להסרה מסריקה"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr ""
+msgstr "קיצוץ אוטומטי תוכנה"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr ""
+msgstr "בקש מהדרייבר להסיר גבול מהעמודים באופן דיגיטלי"
#: backend/kvs20xx_opt.c:233 backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4193,868 +4373,881 @@ msgid ""
"Length Control Mode is a mode that the scanner reads up to the shorter "
"length of 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:640
+#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
+#: backend/microtek2.h:640
#, no-c-format
msgid "Gamma correction"
-msgstr ""
+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
#, no-c-format
msgid "High sensivity"
-msgstr ""
+msgstr "רגישות גבוהה"
#: backend/kvs40xx_opt.c:232
#, no-c-format
msgid "Low sensivity"
-msgstr ""
+msgstr "רגישות נמוכה"
#: backend/kvs40xx_opt.c:243
#, no-c-format
msgid "err_diffusion"
-msgstr ""
+msgstr "err_diffusion"
#: backend/kvs40xx_opt.c:249
#, no-c-format
msgid "No detection"
-msgstr ""
+msgstr "ללא גילוי"
#: backend/kvs40xx_opt.c:250
#, no-c-format
msgid "Normal mode"
-msgstr ""
+msgstr "מצב רגיל"
#: backend/kvs40xx_opt.c:251
#, no-c-format
msgid "Enhanced mode"
-msgstr ""
+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
#, no-c-format
msgid "Automatic threshold mode"
-msgstr ""
+msgstr "מצב סף אוטומטי"
#: backend/kvs40xx_opt.c:643
#, 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 (yours 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
#, no-c-format
msgid "Set chroma of red"
-msgstr ""
+msgstr "קבע כרומה של אדום"
#: backend/kvs40xx_opt.c:787
#, no-c-format
msgid "chroma of blue"
-msgstr ""
+msgstr "כרומה של כחול"
#: backend/kvs40xx_opt.c:788
#, 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 when a paper have been skewed"
-msgstr ""
+msgstr "עצור סורק כאשר נייר עבר הטיה"
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will be stop when a paper have been 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 automatically detect image area and crop it"
-msgstr ""
+msgstr "סורק מגלה שטח תמונה אוטומטית וקוצץ אותו"
#: backend/kvs40xx_opt.c:827
#, no-c-format
msgid "It is right and left reversing"
-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:110
#, no-c-format
msgid "Diamond"
-msgstr ""
+msgstr "יהלום"
#: backend/leo.c:111
#, no-c-format
msgid "8x8 Coarse Fatting"
-msgstr ""
+msgstr "8x8 Coarse Fatting"
#: backend/leo.c:112
#, no-c-format
msgid "8x8 Fine Fatting"
-msgstr ""
+msgstr "8x8 Fine Fatting"
#: backend/leo.c:113
#, no-c-format
msgid "8x8 Bayer"
-msgstr ""
+msgstr "8x8 Bayer"
#: backend/leo.c:114
#, no-c-format
msgid "8x8 Vertical Line"
-msgstr ""
+msgstr "קו אנכי 8x8"
#: backend/lexmark.c:273 backend/umax_pp.c:715
#, no-c-format
msgid "Gain"
-msgstr ""
+msgstr "הגבר"
#: backend/lexmark.c:274 backend/umax_pp.c:716
#, no-c-format
msgid "Color channels gain settings"
-msgstr ""
+msgstr "הגדרות הגבר ערוצי צבע"
#: backend/lexmark.c:283 backend/umax_pp.c:723
#, no-c-format
msgid "Gray gain"
-msgstr ""
+msgstr "הגבר אפור"
#: backend/lexmark.c:284 backend/umax_pp.c:724
#, no-c-format
msgid "Sets gray channel gain"
-msgstr ""
+msgstr "קובע את הגבר ערוץ אפור"
#: backend/lexmark.c:297 backend/plustek.c:1001 backend/umax_pp.c:735
#, no-c-format
msgid "Red gain"
-msgstr ""
+msgstr "הגבר אדום"
#: backend/lexmark.c:298 backend/umax_pp.c:736
#, no-c-format
msgid "Sets red channel gain"
-msgstr ""
+msgstr "קובע את הגבר ערוץ אדום"
#: backend/lexmark.c:311 backend/plustek.c:1017 backend/umax_pp.c:747
#, no-c-format
msgid "Green gain"
-msgstr ""
+msgstr "הגבר ירוק"
#: backend/lexmark.c:312 backend/umax_pp.c:748
#, no-c-format
msgid "Sets green channel gain"
-msgstr ""
+msgstr "קובע את הגבר ערוץ ירוק"
#: backend/lexmark.c:325 backend/plustek.c:1033 backend/umax_pp.c:759
#, no-c-format
msgid "Blue gain"
-msgstr ""
+msgstr "הגבר כחול"
#: backend/lexmark.c:326 backend/umax_pp.c:760
#, no-c-format
msgid "Sets blue channel gain"
-msgstr ""
+msgstr "קובע את הגבר ערוץ כחול"
#: backend/matsushita.c:139
#, no-c-format
msgid "Bayer Dither 16"
-msgstr ""
+msgstr "Bayer Dither 16"
#: backend/matsushita.c:140
#, no-c-format
msgid "Bayer Dither 64"
-msgstr ""
+msgstr "Bayer Dither 64"
#: backend/matsushita.c:141
#, no-c-format
msgid "Halftone Dot 32"
-msgstr ""
+msgstr "הדפסת רשת נקודה 32"
#: backend/matsushita.c:142
#, no-c-format
msgid "Halftone Dot 64"
-msgstr ""
+msgstr "הדפסת רשת נקודה 64"
#: backend/matsushita.c:143
#, no-c-format
msgid "Error Diffusion"
-msgstr ""
+msgstr "דיפוזיית תקלה"
#: backend/matsushita.c:160
#, no-c-format
msgid "Mode 1"
-msgstr ""
+msgstr "מצב 1"
#: backend/matsushita.c:161
#, no-c-format
msgid "Mode 2"
-msgstr ""
+msgstr "מצב 2"
#: backend/matsushita.c:162
#, no-c-format
msgid "Mode 3"
-msgstr ""
+msgstr "מצב 3"
#: backend/matsushita.c:176
#, no-c-format
msgid "From white stick"
-msgstr ""
+msgstr "מחתיכה לבנה"
#: backend/matsushita.c:212
#, no-c-format
msgid "Smooth"
-msgstr ""
+msgstr "חלק"
#: backend/matsushita.c:214 backend/matsushita.c:229
#, no-c-format
msgid "Low"
-msgstr ""
+msgstr "נמוך"
-#: backend/matsushita.c:215 backend/matsushita.c:230 backend/matsushita.c:1296
+#: backend/matsushita.c:215 backend/matsushita.c:230
+#: backend/matsushita.c:1296
#, no-c-format
msgid "Medium"
-msgstr ""
+msgstr "בינוני"
#: backend/matsushita.c:216 backend/matsushita.c:231
#, no-c-format
msgid "High"
-msgstr ""
+msgstr "גבוה"
#: backend/matsushita.c:245
#, no-c-format
msgid "CRT"
-msgstr ""
+msgstr "CRT"
#: backend/matsushita.c:257
#, no-c-format
msgid "One page"
-msgstr ""
+msgstr "עמוד אחד"
#: backend/matsushita.c:258
#, no-c-format
msgid "All pages"
-msgstr ""
+msgstr "כל הדפים"
#: backend/matsushita.c:1034 backend/plustek.c:1333
#, no-c-format
msgid "sheetfed scanner"
-msgstr ""
+msgstr "סורק מוזן דפים"
#: backend/matsushita.h:209
#, no-c-format
msgid "Grayscale 4 bits"
-msgstr ""
+msgstr "גווני אפור 4 ביטים"
#: backend/matsushita.h:210
#, no-c-format
msgid "Grayscale 8 bits"
-msgstr ""
+msgstr "גווני אפור 8 ביטים"
#: backend/microtek2.h:601
#, no-c-format
msgid "Shadow, midtone, highlight, exposure time"
-msgstr ""
+msgstr "הצללה, מיצוע טונים, הדגשה, זמן חשיפה"
#: backend/microtek2.h:603
#, no-c-format
msgid "Special options"
-msgstr ""
+msgstr "אפשרויות מיוחדות"
#: backend/microtek2.h:604
#, no-c-format
msgid "Color balance"
-msgstr ""
+msgstr "איזון צבע"
#: backend/microtek2.h:607
#, no-c-format
msgid "Disable backtracking"
-msgstr ""
+msgstr "כבה מעקב אחורי"
#: backend/microtek2.h:608
#, no-c-format
msgid "If checked the scanner does not perform backtracking"
-msgstr ""
+msgstr "אם מסומנת הסורק לא מבצע מעקב אחורי"
#: backend/microtek2.h:612
#, no-c-format
msgid "Toggle lamp of flatbed"
-msgstr ""
+msgstr "שנה מצב מנורה של משטח זכוכית"
#: backend/microtek2.h:613
#, no-c-format
msgid "Toggles the lamp of the flatbed"
-msgstr ""
+msgstr "משנה את מצב המנורה של משטח הזכוכית"
#: backend/microtek2.h:616
#, no-c-format
msgid "Calibration by backend"
-msgstr ""
+msgstr "כיול בעזרת backend"
#: backend/microtek2.h:617
#, no-c-format
-msgid "If checked the color calibration before a scan is done by the backend"
-msgstr ""
+msgid ""
+"If checked the color calibration before a scan is done by the backend"
+msgstr "אם מסומנת כיול הצבע לפני סריקה מבוצע בעזרת ה-backend"
#: backend/microtek2.h:621
#, no-c-format
msgid "Use the lightlid-35mm adapter"
-msgstr ""
+msgstr "השתמש במתאם lightlid-35mm"
#: backend/microtek2.h:622
#, no-c-format
msgid "This option turns off the lamp of the flatbed during a scan"
-msgstr ""
+msgstr "אפשרות זו מכבה את המנורה של משטח הזכוכית במהלך סריקה"
#: backend/microtek2.h:626 backend/snapscan-options.c:421
#, no-c-format
msgid "Quality scan"
-msgstr ""
+msgstr "סריקת איכות"
#: backend/microtek2.h:627 backend/snapscan-options.c:422
#, no-c-format
msgid "Highest quality but lower speed"
-msgstr ""
+msgstr "איכות מירבית אבל מהירות איטית"
#: backend/microtek2.h:630
#, no-c-format
msgid "Fast scan"
-msgstr ""
+msgstr "סריקה מהירה"
#: backend/microtek2.h:631
#, no-c-format
msgid "Highest speed but lower quality"
-msgstr ""
+msgstr "מהירות מירבית אבל איכות נמוכה"
#: backend/microtek2.h:634
#, no-c-format
msgid "Automatic adjustment of threshold"
-msgstr ""
+msgstr "כיוון אוטומטי של סף"
#: backend/microtek2.h:635
#, no-c-format
msgid ""
-"If checked the backend automatically tries to determine an optimal value for "
-"the threshold."
-msgstr ""
+"If checked the backend automatically tries to determine an optimal value "
+"for the threshold."
+msgstr "אם מסומנת ה-backend מנסה אוטומטית לקבוע ערך מיטבי לסף."
#: backend/microtek2.h:641
#, no-c-format
msgid "Selects the gamma correction mode."
-msgstr ""
+msgstr "בוחר את מצב תיקון הגמה."
#: backend/microtek2.h:644
#, no-c-format
msgid "Bind gamma"
-msgstr ""
+msgstr "מחייב גמה"
#: backend/microtek2.h:645
#, no-c-format
msgid "Use same gamma values for all colour channels."
-msgstr ""
+msgstr "השתמש באותם ערכי גמה לכל ערוצי הצבע."
#: backend/microtek2.h:649
#, no-c-format
msgid "Scalar gamma"
-msgstr ""
+msgstr "גמת סקלר"
#: backend/microtek2.h:650
#, no-c-format
msgid "Selects a value for scalar gamma correction."
-msgstr ""
+msgstr "בוחר ערך לתיקון גמת סקלר."
#: backend/microtek2.h:654
#, no-c-format
msgid "Scalar gamma red"
-msgstr ""
+msgstr "גמת סקלר אדום"
#: backend/microtek2.h:655
#, no-c-format
msgid "Selects a value for scalar gamma correction (red channel)"
-msgstr ""
+msgstr "בוחר ערך לתיקון גמת סקלר (ערוץ אדום)"
#: backend/microtek2.h:659
#, no-c-format
msgid "Scalar gamma green"
-msgstr ""
+msgstr "גמת סקלר ירוק"
#: backend/microtek2.h:660
#, no-c-format
msgid "Selects a value for scalar gamma correction (green channel)"
-msgstr ""
+msgstr "בוחר ערך לתיקון גמת סקלר (ערוץ ירוק)"
#: backend/microtek2.h:664
#, no-c-format
msgid "Scalar gamma blue"
-msgstr ""
+msgstr "גמת סקלר כחול"
#: backend/microtek2.h:665
#, no-c-format
msgid "Selects a value for scalar gamma correction (blue channel)"
-msgstr ""
+msgstr "בוחר ערך לתיקון גמת סקלר (ערוץ כחול)"
#: backend/microtek2.h:669
#, no-c-format
msgid "Channel"
-msgstr ""
+msgstr "ערוץ"
#: backend/microtek2.h:670
#, no-c-format
msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
-msgstr ""
+msgstr "בוחר את פס הצבע, \"מסטר\" אומר שכל הצבעים מושפעים."
#: backend/microtek2.h:674
#, no-c-format
msgid "Midtone"
-msgstr ""
+msgstr "טון אמצעי"
#: backend/microtek2.h:675
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % gray\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"50% אפור\"."
#: backend/microtek2.h:679
#, no-c-format
msgid "Midtone for red"
-msgstr ""
+msgstr "טון אמצעי עבור אדום"
#: backend/microtek2.h:680
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % red\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"50% אדום\"."
#: backend/microtek2.h:684
#, no-c-format
msgid "Midtone for green"
-msgstr ""
+msgstr "טון אמצעי עבור ירוק"
#: backend/microtek2.h:685
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % green\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"50% ירוק\"."
#: backend/microtek2.h:689
#, no-c-format
msgid "Midtone for blue"
-msgstr ""
+msgstr "טון אמצעי עבור כחול"
#: backend/microtek2.h:690
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % blue\"."
-msgstr ""
+msgstr "בוחר איזו רמת קרינה תיחשב \"50% כחול\"."
#: backend/microtek2.h:694
#, no-c-format
msgid "Red balance"
-msgstr ""
+msgstr "איזון אדום"
#: backend/microtek2.h:695
#, no-c-format
msgid "Balance factor for red. A value of 100% means no correction."
-msgstr ""
+msgstr "גורם איזון עבור אדום. ערך של 100% אומר ללא תיקון."
#: backend/microtek2.h:699
#, no-c-format
msgid "Green balance"
-msgstr ""
+msgstr "איזון ירוק"
#: backend/microtek2.h:700
#, no-c-format
msgid "Balance factor for green. A value of 100% means no correction."
-msgstr ""
+msgstr "גורם איזון עבור ירוק. ערך של 100% אומר ללא תיקון."
#: backend/microtek2.h:704
#, no-c-format
msgid "Blue balance"
-msgstr ""
+msgstr "איזון כחול"
#: backend/microtek2.h:705
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
-msgstr ""
+msgstr "גורם איזון עבור כחול. ערך של 100% אומר ללא תיקון."
#: backend/microtek2.h:709
#, no-c-format
msgid "Firmware balance"
-msgstr ""
+msgstr "איזון קושחה"
#: backend/microtek2.h:710
#, no-c-format
msgid "Sets the color balance values to the firmware provided values."
-msgstr ""
+msgstr "קובע את ערכי איזון הצבע לערכי הקושחה המסופקים."
#: backend/mustek.c:149
#, no-c-format
msgid "Slowest"
-msgstr ""
+msgstr "הכי איטי"
#: backend/mustek.c:149
#, no-c-format
msgid "Slower"
-msgstr ""
+msgstr "איטי יותר"
#: backend/mustek.c:150
#, no-c-format
msgid "Faster"
-msgstr ""
+msgstr "מהר יותר"
#: backend/mustek.c:150
#, no-c-format
msgid "Fastest"
-msgstr ""
+msgstr "הכי מהר"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 coarse"
-msgstr ""
+msgstr "גס 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 normal"
-msgstr ""
+msgstr "רגיל 8x8"
#: backend/mustek.c:177
#, no-c-format
msgid "8x8 fine"
-msgstr ""
+msgstr "עדין 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "8x8 very fine"
-msgstr ""
+msgstr "מאוד עדין 8x8"
#: backend/mustek.c:178
#, no-c-format
msgid "6x6 normal"
-msgstr ""
+msgstr "רגיל 6x6"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 coarse"
-msgstr ""
+msgstr "גס 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "5x5 fine"
-msgstr ""
+msgstr "עדין 5x5"
#: backend/mustek.c:179
#, no-c-format
msgid "4x4 coarse"
-msgstr ""
+msgstr "גס 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 normal"
-msgstr ""
+msgstr "רגיל 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "4x4 fine"
-msgstr ""
+msgstr "עדין 4x4"
#: backend/mustek.c:180
#, no-c-format
msgid "3x3 normal"
-msgstr ""
+msgstr "רגיל 3x3"
#: backend/mustek.c:181
#, no-c-format
msgid "2x2 normal"
-msgstr ""
+msgstr "רגיל 2x2"
#: backend/mustek.c:181
#, no-c-format
msgid "8x8 custom"
-msgstr ""
+msgstr "מותאם אישית 8x8"
#: backend/mustek.c:182
#, no-c-format
msgid "6x6 custom"
-msgstr ""
+msgstr "מותאם אישית 6x6"
#: backend/mustek.c:183
#, no-c-format
msgid "5x5 custom"
-msgstr ""
+msgstr "מותאם אישית 5x5"
#: backend/mustek.c:183
#, no-c-format
msgid "4x4 custom"
-msgstr ""
+msgstr "מותאם אישית 4x4"
#: backend/mustek.c:184
#, no-c-format
msgid "3x3 custom"
-msgstr ""
+msgstr "מותאם אישית 3x3"
#: backend/mustek.c:185
#, no-c-format
msgid "2x2 custom"
-msgstr ""
+msgstr "מותאם אישית 2x2"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
-msgstr ""
+msgstr "מצב אפור מהיר"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
-msgstr ""
+msgstr "סרוק במצב אפור מהיר (איכות נמוכה יותר)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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 ""
+"בקש שכל התצוגות המקדימות יבוצעו במצב המהיר ביותר (איכות נמוכה). זה יכול "
+"להיות מצב לא צבע או מצב רזולוציה נמוכה."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
-msgstr ""
+msgstr "זמן כיבוי מנורה (דקות)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
-msgstr ""
+msgstr "קובע את הזמן (בדקות) שלאחריו המנורה נכבית."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
-msgstr ""
+msgstr "כבה מנורה"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
-msgstr ""
+msgstr "מכבה את המנורה מיד."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
-msgstr ""
+msgstr "בהירות אדום"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
-msgstr ""
+msgstr "שולט על הבהירות של הערוץ האדום של התמונה הנסרקת."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
-msgstr ""
+msgstr "בהירות ירוק"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
-msgstr ""
+msgstr "שולט על הבהירות של הערוץ הירוק של התמונה הנסרקת."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
-msgstr ""
+msgstr "בהירות כחול"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
-msgstr ""
+msgstr "שולט על הבהירות של הערוץ הכחול של התמונה הנסרקת."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
-msgstr ""
+msgstr "ניגודיות ערוץ אדום"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
-msgstr ""
+msgstr "שולט על הניגודיות של הערוץ האדום של התמונה הנסרקת."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
-msgstr ""
+msgstr "ניגודיות ערוץ ירוק"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
-msgstr ""
+msgstr "שולט על הניגודיות של הערוץ הירוק של התמונה הנסרקת."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
-msgstr ""
+msgstr "ניגודיות ערוץ כחול"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
-msgstr ""
+msgstr "שולט על הניגודיות של הערוץ הכחול של התמונה הנסרקת."
#: backend/mustek_usb2.c:105
#, no-c-format
msgid "Color48"
-msgstr ""
+msgstr "צבע48"
#: backend/mustek_usb2.c:106 backend/mustek_usb2.c:114
#, no-c-format
msgid "Color24"
-msgstr ""
+msgstr "צבע24"
#: backend/mustek_usb2.c:107
#, no-c-format
msgid "Gray16"
-msgstr ""
+msgstr "אפור16"
#: backend/mustek_usb2.c:108
#, no-c-format
msgid "Gray8"
-msgstr ""
+msgstr "אפור8"
#: backend/mustek_usb2.c:119
#, no-c-format
msgid "Reflective"
-msgstr ""
+msgstr "מחזיר אור"
#: backend/mustek_usb2.c:120
#, no-c-format
msgid "Positive"
-msgstr ""
+msgstr "חיובי"
#: backend/mustek_usb2.c:421
#, 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/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
-msgstr ""
+msgstr "צבע תשליל"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
-msgstr ""
+msgstr "אפור תשליל"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
-msgstr ""
+msgstr "צבע 48 ביטים"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
-msgstr ""
+msgstr "צבע 16 ביטים"
#: backend/pixma_sane_options.c:84
#, 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_sane_options.c:98
#, no-c-format
msgid "Button-controlled scan"
-msgstr ""
+msgstr "סריקה מבוקרת כפתור"
#: backend/pixma_sane_options.c:99
#, no-c-format
@@ -5063,36 +5256,38 @@ msgid ""
"\"SCAN\" button (for MP150) or \"COLOR\" button (for other models). To "
"cancel, press \"GRAY\" button."
msgstr ""
+"כאשר מופעלת, תהליך הסריקה לא יתחיל מיד. להמשך, לחץ על כפתור \"סריקה\" או "
+"\"צבע\" (תלוי בדגם הסורק). לביטול, לחץ על כפתור \"אפור\"."
#: backend/pixma_sane_options.c:232
#, no-c-format
msgid "Update button state"
-msgstr ""
+msgstr "עדכן מצב כפתור"
#: backend/pixma_sane_options.c:244
#, no-c-format
msgid "Button 1"
-msgstr ""
+msgstr "כפתור 1"
#: backend/pixma_sane_options.c:258
#, no-c-format
msgid "Button 2"
-msgstr ""
+msgstr "כפתור 2"
#: backend/pixma_sane_options.c:272
#, no-c-format
msgid "Type of original to scan"
-msgstr ""
+msgstr "סוג מקור לסריקה"
#: backend/pixma_sane_options.c:286
#, no-c-format
msgid "Target operation type"
-msgstr ""
+msgstr "סוג פעולת מטרה"
#: backend/pixma_sane_options.c:348
#, no-c-format
msgid "ADF Waiting Time"
-msgstr ""
+msgstr "זמן המתנה מזין מסמכים אוטומטי"
#: backend/pixma_sane_options.c:349
#, no-c-format
@@ -5100,261 +5295,269 @@ msgid ""
"When set, the scanner searches the waiting time in seconds for a new "
"document inserted into the automatic document feeder."
msgstr ""
+"כאשר נקבע, הסורק מחפש את זמן ההמתנה בשניות למסמך חדש המוכנס למזין "
+"המסמכים האוטומטי."
#: backend/plustek.c:235 backend/plustek_pp.c:204 backend/u12.c:156
#, no-c-format
msgid "Transparency"
-msgstr ""
+msgstr "שקיפות"
#: backend/plustek.c:913
#, no-c-format
msgid "Device-Settings"
-msgstr ""
+msgstr "התקן-הגדרות"
#: backend/plustek.c:920
#, no-c-format
msgid "Lampswitch"
-msgstr ""
+msgstr "מתג מנורה"
#: backend/plustek.c:921
#, no-c-format
msgid "Manually switching the lamp(s)."
-msgstr ""
+msgstr "הדלקת המנורה(ות) ידנית."
#: backend/plustek.c:926
#, no-c-format
msgid "Lamp off during dark calibration"
-msgstr ""
+msgstr "מנורה כבויה במהלך כיול כהה"
#: backend/plustek.c:927
#, no-c-format
msgid "Always switches lamp off when doing dark calibration."
-msgstr ""
+msgstr "תמיד מכבה את המנורה כאשר מבצע כיול כהה."
#: backend/plustek.c:935
#, no-c-format
msgid "Calibration data cache"
-msgstr ""
+msgstr "מטמון מידע כיול"
#: backend/plustek.c:936
#, no-c-format
msgid "Enables or disables calibration data cache."
-msgstr ""
+msgstr "מפעיל או מכבה מטמון מידע כיול."
#: backend/plustek.c:942
#, no-c-format
msgid "Performs calibration"
-msgstr ""
+msgstr "מבצע כיול"
#: backend/plustek.c:959
#, no-c-format
msgid "Speedup sensor"
-msgstr ""
+msgstr "זרז חיישן"
#: backend/plustek.c:960
#, no-c-format
msgid "Enables or disables speeding up sensor movement."
-msgstr ""
+msgstr "מפעיל או מכבה זירוז של תנועת החיישן."
#: backend/plustek.c:974
#, no-c-format
msgid "Warmup-time"
-msgstr ""
+msgstr "זמן חימום"
#: backend/plustek.c:975
#, no-c-format
msgid "Warmup-time in seconds."
-msgstr ""
+msgstr "זמן חימום בשניות."
#: backend/plustek.c:987
#, no-c-format
msgid "Lampoff-time"
-msgstr ""
+msgstr "זמן כיבוי מנורה"
#: backend/plustek.c:988
#, no-c-format
msgid "Lampoff-time in seconds."
-msgstr ""
+msgstr "זמן כיבוי מנורה בשניות."
#: backend/plustek.c:995
#, no-c-format
msgid "Analog frontend"
-msgstr ""
+msgstr "ממשק אנלוגי"
#: backend/plustek.c:1002
#, no-c-format
msgid "Red gain value of the AFE"
-msgstr ""
+msgstr "ערך הגבר אדום של ה-AFE"
#: backend/plustek.c:1009 backend/umax_pp.c:792
#, no-c-format
msgid "Red offset"
-msgstr ""
+msgstr "אופסט אדום"
#: backend/plustek.c:1010
#, no-c-format
msgid "Red offset value of the AFE"
-msgstr ""
+msgstr "ערך אופסט אדום של ה-AFE"
#: backend/plustek.c:1018
#, no-c-format
msgid "Green gain value of the AFE"
-msgstr ""
+msgstr "ערך הגבר ירוק של ה-AFE"
#: backend/plustek.c:1026
#, no-c-format
msgid "Green offset value of the AFE"
-msgstr ""
+msgstr "ערך אופסט ירוק של ה-AFE"
#: backend/plustek.c:1034
#, no-c-format
msgid "Blue gain value of the AFE"
-msgstr ""
+msgstr "ערך הגבר כחול של ה-AFE"
#: backend/plustek.c:1042
#, no-c-format
msgid "Blue offset value of the AFE"
-msgstr ""
+msgstr "ערך אופסט כחול של ה-AFE"
#: backend/plustek.c:1049
#, no-c-format
msgid "Red lamp off"
-msgstr ""
+msgstr "מנורה אדומה כבויה"
#: backend/plustek.c:1050
#, no-c-format
msgid "Defines red lamp off parameter"
-msgstr ""
+msgstr "מגדיר פרמטר מנורה אדומה כבויה"
#: backend/plustek.c:1057
#, no-c-format
msgid "Green lamp off"
-msgstr ""
+msgstr "מנורה ירוקה כבויה"
#: backend/plustek.c:1058
#, no-c-format
msgid "Defines green lamp off parameter"
-msgstr ""
+msgstr "מגדיר פרמטר מנורה ירוקה כבויה"
#: backend/plustek.c:1065
#, no-c-format
msgid "Blue lamp off"
-msgstr ""
+msgstr "מנורה כחולה כבויה"
#: backend/plustek.c:1066
#, no-c-format
msgid "Defines blue lamp off parameter"
-msgstr ""
+msgstr "מגדיר פרמטר מנורה כחולה כבויה"
#: backend/plustek.c:1096
#, no-c-format
msgid "This option reflects the status of the scanner buttons."
-msgstr ""
+msgstr "אפשרות זו משקפת את מצב הכפתורים של הסורק."
#: backend/plustek_pp.c:197
#, no-c-format
msgid "Color36"
-msgstr ""
+msgstr "צבע36"
#: backend/plustek_pp.c:211
#, no-c-format
msgid "Dithermap 1"
-msgstr ""
+msgstr "Dithermap 1"
#: backend/plustek_pp.c:212
#, no-c-format
msgid "Dithermap 2"
-msgstr ""
+msgstr "Dithermap 2"
#: backend/plustek_pp.c:213
#, no-c-format
msgid "Randomize"
-msgstr ""
+msgstr "בצע באקראי"
#: backend/pnm.c:168
#, no-c-format
msgid "Source Selection"
-msgstr ""
+msgstr "בחירת מקור"
#: backend/pnm.c:205
#, no-c-format
msgid "Image Enhancement"
-msgstr ""
+msgstr "שיפור תמונה"
#: backend/pnm.c:241
#, no-c-format
msgid "Grayify"
-msgstr ""
+msgstr "בצע גיוון אפור"
#: backend/pnm.c:242
#, no-c-format
msgid "Load the image as grayscale."
-msgstr ""
+msgstr "פתח את התמונה בגווני אפור."
#: backend/pnm.c:253
#, no-c-format
msgid "Three-Pass Simulation"
-msgstr ""
+msgstr "סימולציה תלת-מעברית"
#: backend/pnm.c:255
#, 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 ""
+"בצע סימולציה של סורק תלת-מעברי בעזרת חזרה של 3 פריימים שונים. בשביל "
+"הכיף, מחזיר ירוק, אחר כך כחול, אחר כך אדום."
#: backend/pnm.c:267
#, no-c-format
msgid "Hand-Scanner Simulation"
-msgstr ""
+msgstr "סימולציה סורק ידני"
#: backend/pnm.c:268
#, 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. הפעלת אפשרות זו מאפשרת בדיקה האם "
+"ממשק יכול לטפל בכך בהצלחה."
#: backend/pnm.c:283
#, no-c-format
-msgid "Set default values for enhancement controls (brightness & contrast)."
-msgstr ""
+msgid ""
+"Set default values for enhancement controls (brightness & contrast)."
+msgstr "קבע ערכי ברירת מחדל עבור בקרות העשרה (בהירות וניגודיות)."
#: backend/pnm.c:295
#, no-c-format
msgid "Read only test-option"
-msgstr ""
+msgstr "אפשרות בדיקה קריאה בלבד"
#: backend/pnm.c:296
#, no-c-format
msgid "Let's see whether frontends can treat this right"
-msgstr ""
+msgstr "בא נראה האם ממשקים יכולים לטפל בזה נכון"
#: backend/pnm.c:307
#, no-c-format
msgid "Gamma Tables"
-msgstr ""
+msgstr "טבלאות גמה"
#: backend/pnm.c:379
#, no-c-format
msgid "Status Code Simulation"
-msgstr ""
+msgstr "סימולציה קוד סטטוס"
#: backend/pnm.c:391
#, no-c-format
msgid "Do not force status code"
-msgstr ""
+msgstr "אל תאלץ קוד סטטוס"
#: backend/pnm.c:392
#, no-c-format
msgid "Do not force the backend to return a status code."
-msgstr ""
+msgstr "אל תאלץ את ה-backend להחזיר קוד סטטוס."
#: backend/pnm.c:403
#, no-c-format
msgid "Return SANE_STATUS_EOF"
-msgstr ""
+msgstr "החזר SANE_STATUS_EOF"
#: backend/pnm.c:404
#, no-c-format
@@ -5362,11 +5565,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_EOF after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_EOF לאחר ש-sane_read() "
+"נקראה."
#: backend/pnm.c:416
#, no-c-format
msgid "Return SANE_STATUS_JAMMED"
-msgstr ""
+msgstr "החזר SANE_STATUS_JAMMED"
#: backend/pnm.c:418
#, no-c-format
@@ -5374,11 +5579,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_JAMMED after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_JAMMED לאחר ש-"
+"sane_read() נקראה."
#: backend/pnm.c:430
#, no-c-format
msgid "Return SANE_STATUS_NO_DOCS"
-msgstr ""
+msgstr "החזר SANE_STATUS_NO_DOCS"
#: backend/pnm.c:431
#, no-c-format
@@ -5386,11 +5593,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_NO_DOCS לאחר ש-"
+"sane_read() נקראה."
#: backend/pnm.c:443
#, no-c-format
msgid "Return SANE_STATUS_COVER_OPEN"
-msgstr ""
+msgstr "החזר SANE_STATUS_COVER_OPEN"
#: backend/pnm.c:444
#, no-c-format
@@ -5398,11 +5607,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_COVER_OPEN לאחר ש-"
+"sane_read() נקראה."
#: backend/pnm.c:456
#, no-c-format
msgid "Return SANE_STATUS_IO_ERROR"
-msgstr ""
+msgstr "החזר SANE_STATUS_IO_ERROR"
#: backend/pnm.c:457
#, no-c-format
@@ -5410,11 +5621,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_IO_ERROR לאחר ש-"
+"sane_read() נקראה."
#: backend/pnm.c:469
#, no-c-format
msgid "Return SANE_STATUS_NO_MEM"
-msgstr ""
+msgstr "החזר SANE_STATUS_NO_MEM"
#: backend/pnm.c:471
#, no-c-format
@@ -5422,123 +5635,131 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_MEM after "
"sane_read() has been called."
msgstr ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_NO_MEM לאחר ש-"
+"sane_read() נקראה."
#: backend/pnm.c:483
#, no-c-format
msgid "Return SANE_STATUS_ACCESS_DENIED"
-msgstr ""
+msgstr "החזר SANE_STATUS_ACCESS_DENIED"
#: backend/pnm.c:484
#, 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 ""
+"אלץ את ה-backend להחזיר את קוד הסטטוס SANE_STATUS_ACCESS_DENIED לאחר ש-"
+"sane_read() נקראה."
#: backend/rts8891.c:2809
#, no-c-format
msgid "This option reflects the status of a scanner button."
-msgstr ""
+msgstr "אפשרות זו משקפת את הסטטוס של כפתור בסורק."
#: backend/rts8891.c:2840 backend/umax.c:5795 backend/umax_pp.c:639
#, no-c-format
msgid "Lamp on"
-msgstr ""
+msgstr "מנורה דולקת"
#: backend/rts8891.c:2841 backend/umax.c:5796
#, no-c-format
msgid "Turn on scanner lamp"
-msgstr ""
+msgstr "הדלק מנורת סורק"
#: backend/rts8891.c:2851 backend/umax1220u.c:248 backend/umax.c:5812
#, no-c-format
msgid "Lamp off"
-msgstr ""
+msgstr "מנורה כבויה"
#: backend/rts8891.c:2852 backend/umax1220u.c:249 backend/umax.c:5813
#, no-c-format
msgid "Turn off scanner lamp"
-msgstr ""
+msgstr "כבה מנורת סורק"
#: backend/sm3840.c:760
#, no-c-format
msgid "Lamp timeout"
-msgstr ""
+msgstr "זמן תפוגה מנורה"
#: backend/sm3840.c:762
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
-msgstr ""
+msgstr "דקות עד שמנורה נכבית לאחר סריקה"
#: backend/sm3840.c:772
#, no-c-format
msgid "Threshold value for lineart mode"
-msgstr ""
+msgstr "ערך סף למצב סגנון קווי"
#: backend/snapscan-options.c:88
#, no-c-format
msgid "Document Feeder"
-msgstr ""
+msgstr "מזין מסמכים"
#: backend/snapscan-options.c:92
#, no-c-format
msgid "6x4 (inch)"
-msgstr ""
+msgstr "6x4 (inch)"
#: backend/snapscan-options.c:93
#, no-c-format
msgid "8x10 (inch)"
-msgstr ""
+msgstr "8x10 (inch)"
#: backend/snapscan-options.c:94
#, no-c-format
msgid "8.5x11 (inch)"
-msgstr ""
+msgstr "8.5x11 (inch)"
#: backend/snapscan-options.c:97
#, no-c-format
msgid "Halftoning Unsupported"
-msgstr ""
+msgstr "הדפסת רשת לא נתמכת"
#: backend/snapscan-options.c:98
#, no-c-format
msgid "DispersedDot8x8"
-msgstr ""
+msgstr "DispersedDot8x8"
#: backend/snapscan-options.c:99
#, no-c-format
msgid "DispersedDot16x16"
-msgstr ""
+msgstr "DispersedDot16x16"
#: backend/snapscan-options.c:103
#, 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 "
+"עלולים לא להגיב לאירועי X והמערכת שלך יכולה לקרוס."
#: 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
#, no-c-format
msgid "Focus point for scanning."
-msgstr ""
+msgstr "נקודת פוקוס לסריקה."
#: backend/snapscan-options.c:482
#, no-c-format
msgid "Preview mode"
-msgstr ""
+msgstr "מצב תצוגה מקדימה"
#: backend/snapscan-options.c:484
#, no-c-format
@@ -5546,166 +5767,173 @@ 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
msgid "Predefined settings"
-msgstr ""
+msgstr "הגדרות מוגדרות מראש"
#: backend/snapscan-options.c:603
#, no-c-format
msgid ""
-"Provides standard scanning areas for photographs, printed pages and the like."
-msgstr ""
+"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
#, 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
#, no-c-format
msgid "Auto or manual focus"
-msgstr ""
+msgstr "פוקוס אוטומטי או ידני"
#: backend/snapscan-options.c:911
#, no-c-format
msgid "Focus-point"
-msgstr ""
+msgstr "נקודת-פוקוס"
#: backend/snapscan-options.c:912
#, no-c-format
msgid "Focus point"
-msgstr ""
+msgstr "נקודת פוקוס"
#: backend/snapscan-options.c:930
#, no-c-format
msgid "Colour lines per read"
-msgstr ""
+msgstr "קווי צבע פר קריאה"
#: backend/snapscan-options.c:942
#, no-c-format
msgid "Greyscale lines per read"
-msgstr ""
+msgstr "קווים בגווני אפור פר קריאה"
#: backend/stv680.c:974
#, no-c-format
msgid "webcam"
-msgstr ""
+msgstr "מצלמת רשת"
#: backend/stv680.h:115
#, no-c-format
msgid "Color RAW"
-msgstr ""
+msgstr "צבע גולמי"
#: backend/stv680.h:116
#, no-c-format
msgid "Color RGB"
-msgstr ""
+msgstr "צבע RGB"
#: backend/stv680.h:117
#, no-c-format
msgid "Color RGB TEXT"
-msgstr ""
+msgstr "צבע RGB טקסט"
#: backend/test.c:137
#, no-c-format
msgid "Solid black"
-msgstr ""
+msgstr "שחור מלא"
#: backend/test.c:137
#, no-c-format
msgid "Solid white"
-msgstr ""
+msgstr "לבן מלא"
#: backend/test.c:138
#, no-c-format
msgid "Color pattern"
-msgstr ""
+msgstr "תבנית צבע"
#: backend/test.c:138
#, no-c-format
msgid "Grid"
-msgstr ""
+msgstr "רשת"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "First entry"
-msgstr ""
+msgstr "רשומה ראשונה"
#: backend/test.c:163 backend/test.c:171
#, no-c-format
msgid "Second entry"
-msgstr ""
+msgstr "רשומה שניה"
#: backend/test.c:165
#, no-c-format
msgid ""
"This is the very long third entry. Maybe the frontend has an idea how to "
"display it"
-msgstr ""
+msgstr "זוהי הרשומה השלישית הארוכה מאוד. אולי לממשק יש מושג איך להציג אותה"
#: backend/test.c:348
#, no-c-format
msgid "Hand-scanner simulation"
-msgstr ""
+msgstr "סימולציה סורק-ידני"
#: backend/test.c:349
#, 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. קביעת אפשרות זו מאפשרת לבדוק האם "
+"ממשק יכול לטפל בזה נכון. אפשרות זו גם מאפשרת רוחב קבוע של 11 סנטימטר."
#: backend/test.c:366
#, no-c-format
msgid "Three-pass simulation"
-msgstr ""
+msgstr "סימולציה תלת-מעברית"
#: backend/test.c:367
#, no-c-format
msgid ""
-"Simulate a three-pass scanner. In color mode, three frames are transmitted."
-msgstr ""
+"Simulate a three-pass scanner. In color mode, three frames are "
+"transmitted."
+msgstr "בצע סימולציה של סורק תלת מעברי. במצב צבע, שלושה פריימים מועברים."
#: backend/test.c:382
#, no-c-format
msgid "Set the order of frames"
-msgstr ""
+msgstr "קבע את הסדר של הפריימים"
#: backend/test.c:383
#, no-c-format
msgid "Set the order of frames in three-pass color mode."
-msgstr ""
+msgstr "קבע את הסדר של הפריימים במצב צבע תלת מעברי."
#: backend/test.c:416
#, no-c-format
msgid ""
-"If Automatic Document Feeder is selected, the feeder will be 'empty' after "
-"10 scans."
-msgstr ""
+"If Automatic Document Feeder is selected, the feeder will be 'empty' "
+"after 10 scans."
+msgstr "אם מזין מסמכים אוטומטי נבחר, המזין יהיה \"ריק\" לאחר 10 סריקות."
#: backend/test.c:431
#, no-c-format
msgid "Special Options"
-msgstr ""
+msgstr "אפשרויות מיוחדות"
#: backend/test.c:444
#, no-c-format
msgid "Select the test picture"
-msgstr ""
+msgstr "בחר את תמונת הבדיקה"
#: backend/test.c:446
#, no-c-format
@@ -5714,90 +5942,102 @@ 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"
+"רשת: מצייר רשת שחור/לבן עם רוחב וגובה של 10 מילימטר פר ריבוע."
#: backend/test.c:467
#, no-c-format
msgid "Invert endianness"
-msgstr ""
+msgstr "הפוך סדר בייטים"
#: backend/test.c:468
#, 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:484
#, no-c-format
msgid "Read limit"
-msgstr ""
+msgstr "גבול קריאה"
#: backend/test.c:485
#, no-c-format
msgid "Limit the amount of data transferred with each call to sane_read()."
-msgstr ""
+msgstr "הגבל את כמות המידע המועבר בכל קריאה ל-sane_read()."
#: backend/test.c:498
#, no-c-format
msgid "Size of read-limit"
-msgstr ""
+msgstr "גודל של גבול קריאה"
#: backend/test.c:499
#, no-c-format
-msgid "The (maximum) amount of data transferred with each call to sane_read()."
-msgstr ""
+msgid ""
+"The (maximum) amount of data transferred with each call to sane_read()."
+msgstr "הכמות (המירבית) של מידע המועבר בכל קריאה ל-sane_read()."
#: backend/test.c:514
#, no-c-format
msgid "Read delay"
-msgstr ""
+msgstr "השהיית קריאה"
#: backend/test.c:515
#, no-c-format
msgid "Delay the transfer of data to the pipe."
-msgstr ""
+msgstr "השהה את מעבר המידע לצינור."
#: backend/test.c:527
#, no-c-format
msgid "Duration of read-delay"
-msgstr ""
+msgstr "משך של השהיית קריאה"
#: backend/test.c:528
#, no-c-format
msgid ""
"How long to wait after transferring each buffer of data through the pipe."
-msgstr ""
+msgstr "כמה זמן לחכות לאחר כל העברת באפר של מידע דרך הצינור."
#: backend/test.c:543
#, no-c-format
msgid "Return-value of sane_read"
-msgstr ""
+msgstr "ערך מוחזר של sane_read"
#: backend/test.c:545
#, 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:562
#, no-c-format
msgid "Loss of pixels per line"
-msgstr ""
+msgstr "איבוד פיקסלים פר שורה"
#: backend/test.c:564
#, no-c-format
msgid "The number of pixels that are wasted at the end of each line."
-msgstr ""
+msgstr "מספר הפיקסלים שאובדים בסוף של כל שורה."
#: backend/test.c:577
#, no-c-format
msgid "Fuzzy parameters"
-msgstr ""
+msgstr "פרמטרים עמומים"
#: backend/test.c:578
#, no-c-format
@@ -5805,97 +6045,110 @@ msgid ""
"Return fuzzy lines and bytes per line when sane_parameters() is called "
"before sane_start()."
msgstr ""
+"החזר שורות עמומות ובייטים פר שורה כאשר sane_parameters() נקראת לפני "
+"sane_start()."
#: backend/test.c:591
#, no-c-format
msgid "Use non-blocking IO"
-msgstr ""
+msgstr "השתמש בקלט פלט לא חוסם"
#: backend/test.c:592
#, no-c-format
msgid "Use non-blocking IO for sane_read() if supported by the frontend."
-msgstr ""
+msgstr "השתמש בקלט פלט לא חוסם עבור sane_read() אם נתמך על ידי הממשק."
#: backend/test.c:605
#, no-c-format
msgid "Offer select file descriptor"
-msgstr ""
+msgstr "תציע תיאור בחר קובץ"
#: backend/test.c:606
#, no-c-format
msgid ""
-"Offer a select filedescriptor for detecting if sane_read() will return data."
-msgstr ""
+"Offer a select filedescriptor for detecting if sane_read() will return "
+"data."
+msgstr "תציע תיאור בחר קובץ לגילוי האם sane_read() תחזיר מידע."
#: backend/test.c:619
#, no-c-format
msgid "Enable test options"
-msgstr ""
+msgstr "הפעל אפשרויות בדיקה"
#: backend/test.c:620
#, 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 ""
+"הפעל אפשרויות בדיקה שונות. זה עבור בדיקה של יכולת הממשקים לצפות ולשנות "
+"את כל סוגי אפשרויות SANE השונות."
#: backend/test.c:634
#, no-c-format
msgid "Print options"
-msgstr ""
+msgstr "הדפס אפשרויות"
#: backend/test.c:635
#, no-c-format
msgid "Print a list of all options."
-msgstr ""
+msgstr "הדפס רשימה של כל האפשרויות."
#: backend/test.c:712
#, no-c-format
msgid "Bool test options"
-msgstr ""
+msgstr "אפשרויות בדיקה בוליאנית"
#: backend/test.c:725
#, no-c-format
msgid "(1/6) Bool soft select soft detect"
-msgstr ""
+msgstr "(1/6) בחירה רכה גילוי רך בוליאני"
#: backend/test.c:727
#, 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:743
#, no-c-format
msgid "(2/6) Bool hard select soft detect"
-msgstr ""
+msgstr "(2/6) בחירה קשה גילוי רך בוליאני"
#: backend/test.c:745
#, 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:762
#, no-c-format
msgid "(3/6) Bool hard select"
-msgstr ""
+msgstr "(3/6) בחירה קשה בוליאני"
#: backend/test.c:763
#, 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:781
#, no-c-format
msgid "(4/6) Bool soft detect"
-msgstr ""
+msgstr "(4/6) גילוי רך בוליאני"
#: backend/test.c:782
#, no-c-format
@@ -5903,83 +6156,93 @@ 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:798
#, no-c-format
msgid "(5/6) Bool soft select soft detect emulated"
-msgstr ""
+msgstr "(5/6) בחירה רכה גילוי רך מדומה בוליאני"
#: backend/test.c:799
#, 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:815
#, no-c-format
msgid "(6/6) Bool soft select soft detect auto"
-msgstr ""
+msgstr "(6/6) בחירה רכה גילוי רך אוטומטי בוליאני"
#: backend/test.c:816
#, 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."
#: backend/test.c:833
#, no-c-format
msgid "Int test options"
-msgstr ""
+msgstr "אפשרויות בדיקה שלם"
#: backend/test.c:846
#, no-c-format
msgid "(1/6) Int"
-msgstr ""
+msgstr "(1/6) שלם"
#: backend/test.c:847
#, no-c-format
msgid "(1/6) Int test option with no unit and no constraint set."
-msgstr ""
+msgstr "(1/6) אפשרות בדיקה שלם ללא יחידה וללא סט אילוצים."
#: backend/test.c:862
#, no-c-format
msgid "(2/6) Int constraint range"
-msgstr ""
+msgstr "(2/6) טווח אילוץ שלם"
#: backend/test.c:863
#, 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, ו-quant הוא 2."
#: backend/test.c:879
#, no-c-format
msgid "(3/6) Int constraint word list"
-msgstr ""
+msgstr "(3/6) רשימת מילות אילוץ שלם"
#: backend/test.c:880
#, no-c-format
msgid "(3/6) Int test option with unit bits and constraint word list set."
-msgstr ""
+msgstr "(3/6) אפשרות בדיקה שלם עם ביטים יחידה וסט רשימת מילות אילוץ."
#: backend/test.c:895
#, no-c-format
msgid "(4/6) Int array"
-msgstr ""
+msgstr "(4/6) מערך שלם"
#: backend/test.c:896
#, no-c-format
msgid ""
-"(4/6) 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 "
+"constraints."
+msgstr "(4/6) אפשרות בדיקה שלם עם מילימטר יחידה ושימוש במערך ללא אילוצים."
#: backend/test.c:911
#, no-c-format
msgid "(5/6) Int array constraint range"
-msgstr ""
+msgstr "(5/6) טווח אילוצים מערך שלם"
#: backend/test.c:912
#, no-c-format
@@ -5987,38 +6250,41 @@ 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) אפשרות בדיקה שלם עם dpi יחידה ושימוש במערך עם אילוץ טווח. מינימום "
+"זה 4, מקסימום 192, ו-quant זה 2."
#: backend/test.c:929
#, no-c-format
msgid "(6/6) Int array constraint word list"
-msgstr ""
+msgstr "(6/6) רשימת מילות אילוץ מערך שלם"
#: backend/test.c:930
#, 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:946
#, no-c-format
msgid "Fixed test options"
-msgstr ""
+msgstr "אפשרויות בדיקה קבועה"
#: backend/test.c:959
#, no-c-format
msgid "(1/3) Fixed"
-msgstr ""
+msgstr "(1/3) קבוע"
#: backend/test.c:960
#, no-c-format
msgid "(1/3) Fixed test option with no unit and no constraint set."
-msgstr ""
+msgstr "(1/3) אפשרות בדיקה קבועה ללא יחידה וללא סט אילוצים."
#: backend/test.c:975
#, no-c-format
msgid "(2/3) Fixed constraint range"
-msgstr ""
+msgstr "(2/3) טווח אילוץ קבוע"
#: backend/test.c:976
#, no-c-format
@@ -6026,46 +6292,48 @@ 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, ו-quant זה 2.0."
#: backend/test.c:992
#, no-c-format
msgid "(3/3) Fixed constraint word list"
-msgstr ""
+msgstr "(3/3) רשימת מילות אילוץ קבוע"
#: backend/test.c:993
#, no-c-format
msgid "(3/3) Fixed test option with no unit and constraint word list set."
-msgstr ""
+msgstr "(3/3) אפשרות בדיקה קבועה ללא יחידה וסט רשימת מילות אילוץ."
#: backend/test.c:1008
#, no-c-format
msgid "String test options"
-msgstr ""
+msgstr "אפשרויות בדיקה מחרוזת"
#: backend/test.c:1021
#, no-c-format
msgid "(1/3) String"
-msgstr ""
+msgstr "(1/3) מחרוזת"
#: backend/test.c:1022
#, no-c-format
msgid "(1/3) String test option without constraint."
-msgstr ""
+msgstr "(1/3) אפשרות בדיקה מחרוזת ללא אילוץ."
#: backend/test.c:1039
#, no-c-format
msgid "(2/3) String constraint string list"
-msgstr ""
+msgstr "(2/3) רשימת מחרוזות אילוץ מחרוזת"
#: backend/test.c:1040
#, no-c-format
msgid "(2/3) String test option with string list constraint."
-msgstr ""
+msgstr "(2/3) אפשרות בדיקה מחרוזת עם אילוץ רשימת מחרוזות."
#: backend/test.c:1059
#, no-c-format
msgid "(3/3) String constraint long string list"
-msgstr ""
+msgstr "(3/3) רשימת מחרוזות ארוכה אילוץ מחרוזת"
#: backend/test.c:1060
#, no-c-format
@@ -6073,153 +6341,155 @@ msgid ""
"(3/3) String test option with string list constraint. Contains some more "
"entries..."
msgstr ""
+"(3/3) אפשרות בדיקה מחרוזת עם אילוץ רשימת מחרוזות. מכילה כמה ערכים "
+"נוספים..."
#: backend/test.c:1080
#, no-c-format
msgid "Button test options"
-msgstr ""
+msgstr "אפשרויות בדיקה כפתור"
#: backend/test.c:1093
#, no-c-format
msgid "(1/1) Button"
-msgstr ""
+msgstr "(1/1) כפתור"
#: backend/test.c:1094
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
-msgstr ""
+msgstr "(1/1) אפשרות בדיקה כפתור. מדפיסה קצת טקסט..."
#: backend/u12.c:149
#, no-c-format
msgid "Color 36"
-msgstr ""
+msgstr "צבע 36"
#: backend/umax.c:235
#, no-c-format
msgid "Use Image Composition"
-msgstr ""
+msgstr "השתמש בהרכב תמונה"
#: backend/umax.c:236
#, no-c-format
msgid "Bi-level black and white (lineart mode)"
-msgstr ""
+msgstr "שחור ולבן דו-רמתי (מצב סגנון קווי)"
#: backend/umax.c:237
#, no-c-format
msgid "Dithered/halftone black & white (halftone mode)"
-msgstr ""
+msgstr "שחור ולבן Dithered/הדפסת רשת (מצב הדפסת רשת)"
#: backend/umax.c:238
#, no-c-format
msgid "Multi-level black & white (grayscale mode)"
-msgstr ""
+msgstr "שחור ולבן רב-רמתי (מצב גווני אפור)"
#: backend/umax.c:239
#, no-c-format
msgid "Multi-level RGB color (one pass color)"
-msgstr ""
+msgstr "צבע RGB רב-רמתי (צבע חד מעברי)"
#: backend/umax.c:240
#, no-c-format
msgid "Ignore calibration"
-msgstr ""
+msgstr "התעלם מכיול"
#: backend/umax.c:5733
#, no-c-format
msgid "Disable pre focus"
-msgstr ""
+msgstr "כבה פוקוס מקדים"
#: backend/umax.c:5734
#, no-c-format
msgid "Do not calibrate focus"
-msgstr ""
+msgstr "אל תכייל פוקוס"
#: backend/umax.c:5745
#, no-c-format
msgid "Manual pre focus"
-msgstr ""
+msgstr "פוקוס מקדים ידני"
#: backend/umax.c:5757
#, no-c-format
msgid "Fix focus position"
-msgstr ""
+msgstr "קבע מיקום פוקוס"
#: backend/umax.c:5769
#, no-c-format
msgid "Lens calibration in doc position"
-msgstr ""
+msgstr "כיול עדשות במיקום מסמך"
#: backend/umax.c:5770
#, no-c-format
msgid "Calibrate lens focus in document position"
-msgstr ""
+msgstr "כייל פוקוס עדשות במיקום מסמך"
#: backend/umax.c:5781
#, no-c-format
msgid "Holder focus position 0mm"
-msgstr ""
+msgstr "מיקום פוקוס מחזיק 0 מילימטר"
#: backend/umax.c:5782
#, no-c-format
msgid "Use 0mm holder focus position instead of 0.6mm"
-msgstr ""
+msgstr "השתמש במיקום פוקוס מחזיק 0 מילימטר במקום 0.6 מילימטר"
#: backend/umax.c:5885
#, no-c-format
msgid "Calibration mode"
-msgstr ""
+msgstr "מצב כיול"
#: backend/umax.c:5886
#, no-c-format
msgid "Define calibration mode"
-msgstr ""
+msgstr "הגדר מצב כיול"
#: backend/umax_pp.c:640
#, no-c-format
msgid "Sets lamp on/off"
-msgstr ""
+msgstr "מדליק/מכבה מנורה"
#: backend/umax_pp.c:649
#, no-c-format
msgid "UTA on"
-msgstr ""
+msgstr "הדלקת UTA"
#: backend/umax_pp.c:650
#, no-c-format
msgid "Sets UTA on/off"
-msgstr ""
+msgstr "קובע UTA דולק/מכובה"
#: backend/umax_pp.c:771
#, no-c-format
msgid "Offset"
-msgstr ""
+msgstr "אופסט"
#: backend/umax_pp.c:773
#, no-c-format
msgid "Color channels offset settings"
-msgstr ""
+msgstr "הגדרות אופסט ערוצי צבעים"
#: backend/umax_pp.c:780
#, no-c-format
msgid "Gray offset"
-msgstr ""
+msgstr "אופסט אפור"
#: backend/umax_pp.c:781
#, no-c-format
msgid "Sets gray channel offset"
-msgstr ""
+msgstr "קובע אופסט ערוץ אפור"
#: backend/umax_pp.c:793
#, no-c-format
msgid "Sets red channel offset"
-msgstr ""
+msgstr "קובע אופסט ערוץ אדום"
#: backend/umax_pp.c:805
#, no-c-format
msgid "Sets green channel offset"
-msgstr ""
+msgstr "קובע אופסט ערוץ ירוק"
#: backend/umax_pp.c:817
#, no-c-format
msgid "Sets blue channel offset"
-msgstr ""
+msgstr "קובע אופסט ערוץ כחול"
diff --git a/po/hu.gmo b/po/hu.gmo
deleted file mode 100644
index 7210ba6..0000000
--- a/po/hu.gmo
+++ /dev/null
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 5a67f0d..2faffef 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2011-04-06 19:50+0200\n"
"Last-Translator: Németh Tamás <ntomasz@uhuklub.hu>\n"
"Language-Team: Hungarian <NONE>\n"
@@ -27,36 +27,36 @@ msgid "Standard"
msgstr "Általános"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Haladó"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -84,7 +84,7 @@ msgstr "Monokróm előnézet"
msgid "Bit depth"
msgstr "Színmélység"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -125,7 +125,7 @@ msgstr "Jobb-alsó x"
msgid "Bottom-right y"
msgstr "Jobb-alsó y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -281,7 +281,7 @@ msgstr "Fájlnév"
msgid "Halftone pattern size"
msgstr ""
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr ""
@@ -293,8 +293,8 @@ msgstr ""
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negatív"
@@ -941,7 +941,7 @@ msgstr "Alapértelmezett"
msgid "Set default values for enhancement controls."
msgstr ""
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibráció"
@@ -1074,7 +1074,7 @@ msgstr "Negatív"
msgid "Slides"
msgstr "Lassabb"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1095,487 +1095,486 @@ msgstr ""
msgid "1/3 normal speed"
msgstr ""
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr ""
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "ismeretlen"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, fuzzy, no-c-format
msgid "ADF jam"
msgstr "ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Gamma érték"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr ""
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr ""
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "lapolvasó"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "síkágyas lapolvasó"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtípus"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Negatív film"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr ""
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Eszköz felbontása"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr ""
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr ""
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr ""
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr ""
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Kép tükrözése"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "A kép vízszintes tükrözése."
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr ""
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr ""
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Kalibráció"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Precíz beállítás"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "lapolvasó"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "lapolvasó"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr ""
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr ""
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Csak síkágyas"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Átlátszó"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Negatív film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Pozitív film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Átlátszó"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Filmtípus"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr ""
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Síkágyas"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr ""
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr ""
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Nyomtatás"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
msgstr ""
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Vörös"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Zöld"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Kék"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Haladó"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Haladó"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Haladó"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1583,18 +1582,18 @@ msgstr "Haladó"
msgid "None"
msgstr "Nincs"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1611,13 +1610,13 @@ msgstr ""
msgid "Duplex"
msgstr ""
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr ""
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1730,8 +1729,8 @@ msgstr "Tintasugaras nyomtató"
msgid "CRT monitors"
msgstr "CRT monitor"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Alapértelmezett"
@@ -1794,51 +1793,50 @@ msgstr "A4"
msgid "Max"
msgstr "Max"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr " Szkennelési üzemmód "
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr ""
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr ""
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr ""
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr ""
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr ""
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Színkorrekció"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1928,17 +1926,17 @@ msgstr ""
msgid "Controls blue level"
msgstr "A kék csatorna kontrasztja"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Kép tükrözése."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Gyors előnézet"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr ""
@@ -1968,47 +1966,47 @@ msgstr ""
msgid "Quick format"
msgstr ""
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr ""
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr ""
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr ""
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr ""
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr ""
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr ""
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr ""
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr ""
@@ -2043,7 +2041,7 @@ msgid ""
"pressed to actually start the scan process."
msgstr ""
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2073,492 +2071,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr ""
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Be"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Ki"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr ""
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr ""
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Fehérszint"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Feketeszint"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Folytatás"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Megállít"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Vízszintes"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Vízszintes"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Vízszintes"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Függőleges"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Függőleges"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Nyomtatás"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
msgstr ""
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Finom beállítás"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
msgstr ""
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Telítettség"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Kép tükrözése"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "A kép vízszintes tükrözése."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Fehérszint"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "A kék csatorna kontrasztja"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Színmátrix"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr ""
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Gamma érték"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr ""
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Küszöb"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Zajszűrés"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Nincs korrekció"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Nincs korrekció"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Előnézeti mód"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Haladó"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Nincs korrekció"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
msgstr ""
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
msgstr ""
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2566,65 +2564,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
msgstr ""
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Teljes szkennelés"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr ""
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "A zöld csatorna kontrasztja"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr ""
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "A kék csatorna kontrasztja"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "Nincs elég memória"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2633,543 +2631,553 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Teljes szkennelés"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Haladó"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Zajszűrés"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
msgstr ""
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
msgstr ""
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
msgstr ""
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
msgstr ""
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
msgstr ""
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
msgstr ""
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Eszköz felbontása"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Fehérszint"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Vörös intenzitás"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Teljes szkennelés"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, fuzzy, no-c-format
msgid "Extras"
msgstr "Extra gyors"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Tesztbeállítások engedélyezése"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Színmátrix"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibráció"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Precíz beállítás"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kalibráció"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr ""
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Finom beállítás"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Fájl gomb"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "OCR gomb"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr ""
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Email gomb"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Finom beállítás"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr ""
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Gombok"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrálás"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Kalibrálási folyamat indítása."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Finom beállítás"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Finom beállítás"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Finom beállítás"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr ""
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr " Nyomkövetési beállítások "
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr ""
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"60 seconds warm-up time."
msgstr ""
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Teljes szkennelés"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Finom beállítás"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3177,12 +3185,12 @@ msgid ""
"are provided. This option is enabled by default. For testing only."
msgstr ""
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Finom beállítás csak az első szkeneléskor"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3190,12 +3198,12 @@ msgid ""
"different with each scan, disable this option. For testing only."
msgstr ""
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr ""
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3204,12 +3212,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gamma érték"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr ""
@@ -3225,7 +3233,7 @@ msgid "Scan Mode Group"
msgstr " Szkennelési üzemmód "
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr ""
@@ -3423,160 +3431,235 @@ msgstr ""
msgid "Calibrates for black and white level."
msgstr ""
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr ""
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negatív"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Színes 42/48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr ""
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr ""
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr ""
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr ""
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr " Szkennelési üzemmód "
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr ""
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Haladó"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr ""
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr ""
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr ""
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Egyedi"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatikus"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr ""
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr ""
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr ""
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lassú"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normál"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Gyors"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Extra gyors"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-pixel"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-pixel"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-pixel"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Nyomtatás"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr ""
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr ""
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr ""
@@ -3750,8 +3833,8 @@ msgstr ""
msgid "Shut off scanner lamp."
msgstr ""
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Papír mérete"
@@ -3762,8 +3845,7 @@ msgstr "Papír mérete"
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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 fekvő"
@@ -3778,38 +3860,34 @@ msgstr ""
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:393
#, 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:416
#, 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:428
#, 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr ""
@@ -3925,294 +4003,294 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr ""
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr ""
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr ""
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr ""
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr ""
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normál"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Kiemelés"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "lapolvasó"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr ""
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Alapértelmezett"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr ""
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lassú"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Közepes"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Vörös"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Zöld"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "lapolvasó"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr ""
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr ""
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr ""
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr ""
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
msgstr ""
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr ""
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr ""
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Zajszűrés"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr ""
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
msgstr ""
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr ""
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "A kép függőleges tükrözése."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4923,99 +5001,99 @@ msgstr ""
msgid "2x2 custom"
msgstr ""
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr ""
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr ""
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr ""
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr ""
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr ""
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr ""
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Vörös fényerő"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Zöld fényerő"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Kék fényerő"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "A vörös csatorna kontrasztja"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "A zöld csatorna kontrasztja"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "A kék csatorna kontrasztja"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr ""
@@ -5057,22 +5135,22 @@ msgid ""
"40 seconds warm-up time."
msgstr ""
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negatív film"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negatív"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/insert-header.sin b/po/insert-header.sin
deleted file mode 100644
index b26de01..0000000
--- a/po/insert-header.sin
+++ /dev/null
@@ -1,23 +0,0 @@
-# Sed script that inserts the file called HEADER before the header entry.
-#
-# At each occurrence of a line starting with "msgid ", we execute the following
-# commands. At the first occurrence, insert the file. At the following
-# occurrences, do nothing. The distinction between the first and the following
-# occurrences is achieved by looking at the hold space.
-/^msgid /{
-x
-# Test if the hold space is empty.
-s/m/m/
-ta
-# Yes it was empty. First occurrence. Read the file.
-r HEADER
-# Output the file's contents by reading the next line. But don't lose the
-# current line while doing this.
-g
-N
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/it.gmo b/po/it.gmo
deleted file mode 100644
index 07d72d4..0000000
--- a/po/it.gmo
+++ /dev/null
Binary files differ
diff --git a/po/it.po b/po/it.po
index 6c083c7..375271d 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.18\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-08-28 23:11+0200\n"
"Last-Translator: Giuseppe Sacco <eppesuig@debian.org>\n"
"Language-Team: italian translation project <tp@lists.linux.it>\n"
@@ -26,36 +26,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Miglioramento"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -83,7 +83,7 @@ msgstr "Forza anteprima in bianco e nero"
msgid "Bit depth"
msgstr "Profondità in bit"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -124,7 +124,7 @@ msgstr "X in basso a destra"
msgid "Bottom-right y"
msgstr "Y in basso a destra"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -280,7 +280,7 @@ msgstr "Nome file"
msgid "Halftone pattern size"
msgstr "Dimensione del modello mezzi-toni"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Modello mezzi-toni"
@@ -292,8 +292,8 @@ msgstr "Lega la risoluzione X e Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativo"
@@ -987,7 +987,7 @@ msgstr "Predefiniti"
msgid "Set default values for enhancement controls."
msgstr "Imposta i valori predefiniti per i controlli del miglioramento"
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibrazione"
@@ -1127,7 +1127,7 @@ msgstr "Negativi"
msgid "Slides"
msgstr "Diapositive"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1148,493 +1148,492 @@ msgstr "Velocità normale dimezzata"
msgid "1/3 normal speed"
msgstr "1/3 della velocità normale"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "parametri arrotondati"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "sconosciuto"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "ADF inceppato"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "Coperchio ADF aperto"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lampada guasta"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "errore nel posizionamento della testa di scansione"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "Errore nel controllo della CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "Error nel controllo della RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "Errore nel controllo della ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "errore nei controlli hardware"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "guasto della lampada dell'adattatore per trasparenze"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
"errore durante il posizionamento della testa di scansione per "
"l'adatattore per trasparenze"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "errore nella lunghezza della lista di parametri"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "codice di comando non valido"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "campo non valido in CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "LUN non supportato"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "campo non valido nella lista di parametri"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "errore nella sequenza di comandi"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "sono state specificate troppe finestre"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "supporto non presente"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "messaggio con bit IDENTIFY non valido"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "opzione non connesso"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "reset dell'alimentazione elettrica / reset del bus dei dispositivi"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parametro cambiato da un altro iniziatore"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "nessun altra informazione aggiuntiva sul «sense»"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "errore durante la reselezione"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "errore di parità SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "ricevuto un messaggio di errore per rilevamento di iniziatore"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "errore di messaggio non valido"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "errore di timeout"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "errore nel mascheramento della unità per la trasparenza"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lampada non stabilizzata"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "scanner da negativi"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "scanner piano"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Pellicola"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Imposta il tipo di pellicola: negativi o diapositive"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Tipo di pellicola negativa"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Seleziona il tipo di pellicola negativa"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Risoluzione hardware"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Mostra solo le risoluzioni hardware"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Fuoco"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Autofocus"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Abilita/disabilita la messa a fuoco automatica"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Autofocus unico"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Effettua l'autofocus una sola volta per ogni pellicola inserita"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Posizione di messa a fuoco manuale"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Imposta manualmente la posizione del sistema di messa a fuoco "
"(normalmente alla posizione 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Margini di scansione"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Altre impostazioni del colore"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Immagine riflessa"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Riflette l'immagine orizzontalmente"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Esposizione automatica"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Abilita/disabilita l'esposizione automatica"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Calibrazione immediata"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Esegue adesso la calibrazione"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Auto diagnostica"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Effettua i controlli automatici"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reimposta scanner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Reimposta lo scanner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Gestione del supporto"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Espelle la pellicola dopo ogni scansione"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Espelle automaticamente la pellicola dopo ogni scansione"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Espelle la pellicola all'uscita"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr "Espelle automaticamente la pellicola alla chiusura del programma"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Espulsione della pellicola immediata"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Espelle la pellicola adesso"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Opzioni dell'alimentatore automatico"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Solo piano fisso"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "Disabilita l'alimentatore di fogli e usa solo il piano fisso"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Adattatore per trasparenze"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
"Abilita/disabilita l'adattatore per le trasparenze (FAU, «film adapter "
"unit»)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Pellicola negativa"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Pellicola positiva o negativa"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Controllo della densità"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Imposta la modalità di controllo della densità"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Rapporto per trasparenze"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Seleziona tipo pellicola"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Seleziona il tipo di pellicola"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Piano fisso"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, fuzzy, no-c-format
msgid "ADF Front"
msgstr "Coperchio ADF aperto"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "ADF inceppato"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "ADF Duplex"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Stampa"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Fronte e retro"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rosso"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Verde"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blu"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Miglioramento"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Miglioramento"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Miglioramento"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1642,18 +1641,18 @@ msgstr "Miglioramento"
msgid "None"
msgstr "Nessuno"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1670,13 +1669,13 @@ msgstr "Solo fronte"
msgid "Duplex"
msgstr "Fronte e retro"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Adattatore per trasparenze"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1789,8 +1788,8 @@ msgstr "Stampanti a getto d'inchiostro"
msgid "CRT monitors"
msgstr "Monitor CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Default"
@@ -1853,51 +1852,50 @@ msgstr "A4"
msgid "Max"
msgstr "Massimo"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Modalità di scansione"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Seleziona i mezzi toni"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Esclusione"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Seleziona l'esclusione."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Seleziona la brillantezza."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Nitidezza"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Correzione del colore"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1989,17 +1987,17 @@ msgstr "Modula il rosso sulla base del livello del blu"
msgid "Controls blue level"
msgstr "Controlla del livello del blu"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Effettua una riflessione dell'immagine lungo l'asse verticale"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Anteprima veloce"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Sezionamento automatico dell'area"
@@ -2029,47 +2027,47 @@ msgstr "Definisce il fattore di zoom usato dallo scanner"
msgid "Quick format"
msgstr "Formato rapido"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Dispositivi opzionali"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Espulsione"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Espelle il foglio dall'alimentatore automatico"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Espulsione automatica"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Espelle il documento dopo la sua scansione"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Modalità ADF"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Seleziona la modalità ADF (solo fronte/fronte-retro)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Cassetto"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Seleziona il cassetto per la scansione"
@@ -2111,7 +2109,7 @@ msgstr ""
"premuto il tasto dello scanner per fare partire il processo di "
"acquisizione."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2141,493 +2139,493 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Definito dall'utente"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Attivo"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Disattivo"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Sfumatura"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Diffusione d'errore"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Livello bianco"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Livello nero"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Condizionale"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Orizzontale"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Orizzontale"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Orizzontale"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Verticale"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Verticale"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Stampa"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Mezzi toni"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Effettua calibrazione"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Accentuazione dell'immagine"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturazione"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Abilita la valutazione automatica della soglia per la scansione binaria."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Immagine riflessa"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Riflette l'immagine orizzontalmente."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Livello di bianco sul blu"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Controlla il livello del rosso"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtro colore"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Ammorbidimento"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valore gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Soglia"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Soglia"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Riduzione del rumore"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Nessuna correzione"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Nessuna correzione"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Coperchio ADF aperto"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Opzioni avanzate"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Nessuna correzione"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Esclusione"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Modalità di caricamento"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2635,65 +2633,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Durata spegnimento lampada"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Scarto sul blu"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Scarto sul verde"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Scarto sul verde"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Scarto sul blu"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Imposta lo scarto sul blu"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2702,374 +2700,374 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Scansione Duplex"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Opzioni avanzate"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Riduzione del rumore"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Da carta"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Da carta"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Da carta"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Da carta"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "Coperchio ADF aperto"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Messa a fuoco preliminare manuale"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Messa a fuoco preliminare manuale"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "errore nei controlli hardware"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Livello bianco"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Controllo della densità"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Controllo della densità"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Scansione Duplex"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extra"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Disattiva interpolazione"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3078,46 +3076,46 @@ msgstr ""
"Quando si usano alte risoluzione con quella orizzontale minore della "
"verticale, l'interpolazione orizzontale viene disabilitata."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtro colore"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"Quando si usano i grigi o il binario questa opzione seleziona il colore "
"usato."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Calibrazione"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definire la modalità di calibrazione"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Cache per la calibrazione"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Durata spegnimento lampada"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3126,104 +3124,114 @@ msgstr ""
"La lampada verrà spenta allo scadere del tempo impostato (in minuti). Il "
"valore 0 indica che la lampada non deve mai essere spenta."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Calibrazione granulosa"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
"Numero di minuti prima che la lampada venga spenta dopo la scansione"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Attendi il tasto"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Attendi il tasto"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Attendi il tasto"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Calibrazione granulosa"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Forza la calibrazione dello scanner prima della scansione"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Pulsanti"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Calibrazione"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Inizia la calibrazione."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Calibrazione granulosa"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Cache per la calibrazione"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibrazione granulosa"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Adattatore per trasparenza"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Modalità a scala di grigi"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Seleziona il colore di scansione da usare per la scala di grigi "
"(predefinito: verde)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opzioni per il debugging"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Preriscaldamento automatico"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3232,12 +3240,12 @@ msgstr ""
"Preriscalda fino a che la luminisità della lampada sia costante invece "
"di attendere 60 secondi."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Scansione completa"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3247,12 +3255,12 @@ msgstr ""
"calibrazione. Fare attenzione a non selezionare l'altezza completa. Da "
"usare solo per effettuare test."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Calibrazione granulosa"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3264,12 +3272,12 @@ msgstr ""
"opzioni per la parametrizzazione manuale analogica. Questa opzione è "
"attiva in maniera predefinita. Da usare solo per effettuare test."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Calibrazione granulosa solo per la prima scansione"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3281,12 +3289,12 @@ msgstr ""
"parecchio tempo. Disabilitarla se la brillantezza è diversa per ciascuna "
"delle immagini da acquisire. Da usare solo per effettuare test."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Linee del backtrack"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3299,12 +3307,12 @@ msgstr ""
"computer durante la ricezione dei dati. Valori bassi permettono una "
"scansione più veloce, ma aumentano il rischio di linee mancanti."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valore gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Imposta il valore gamma per tutti i canali."
@@ -3320,7 +3328,7 @@ msgid "Scan Mode Group"
msgstr "Modalità di scansione"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositiva"
@@ -3518,162 +3526,237 @@ msgstr "Accendi o spegni la lampada"
msgid "Calibrates for black and white level."
msgstr "Calibrare i livelli del bianco e nero"
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Diapositive"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negativi"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Colore a 48 bit"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Timeout della lampada"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, fuzzy, no-c-format
msgid "Wait for button"
msgstr "Attendi il tasto"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Preriscaldamento della lampada prima della scansione"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Aggiorna lo stato del pulsante"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Sorgente scanner"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Colore binario"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Opzioni avanzate"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Granuloso"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "A grana fine"
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Personalizzato"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatico"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Passante"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "Grigio NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA Grigio"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lento"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normale"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Veloce"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Extra veloce"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-pixel"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-pixel"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-pixel"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Stampa"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Pellicola"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Condizionale"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Esperimento"
@@ -3854,8 +3937,8 @@ msgstr "Spegnimento della lampada"
msgid "Shut off scanner lamp."
msgstr "Spegne la lampada dello scanner."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Dimensione del foglio"
@@ -3866,8 +3949,7 @@ msgstr "Dimensione del foglio"
msgid "Automatic separation"
msgstr "Separazione automatica"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 orizzontale"
@@ -3882,38 +3964,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Imposta la modalità di controllo della densità"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Messa a fuoco preliminare manuale"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Messa a fuoco preliminare manuale"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Attiva la scansione fronte-retro"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Dimensione del foglio nel caricatore automatico"
@@ -4031,201 +4109,201 @@ msgstr ""
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayer"
# Bayer è il nome della persona che ha inventato questa matrice per il
# dithering.
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayer"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Mezzi toni"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Mezzi toni"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Diffusione d'errore"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normale"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Contrasto"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "scanner da negativi"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Da carta"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Default"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Morbido"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lento"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Medio"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Rosso"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Verde"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Sorgente scanner"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Modalità di caricamento"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Selezionare la modalità di caricamento"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Abilita/disabilita la messa a fuoco automatica"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Imposta la modalità di controllo della densità"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Selezionare la modalità di caricamento"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Selezionare la modalità di caricamento"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Soglia automatica"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4235,95 +4313,95 @@ msgstr ""
"del rumore e accentuazione dell'immagine vengono determinati "
"automaticamente"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Riduzione del rumore"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Riduce il rumore dei punti isolati"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Accentuazione dell'immagine"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Imposta l'accentuazione dell'immagine"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Lampada accesa"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Accendi o spegni la lampada"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Riflette l'immagine verticalmente."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5045,17 +5123,17 @@ msgstr "3x3 personalizzato"
msgid "2x2 custom"
msgstr "2x2 personalizzato"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Scala di grigi rapido"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Scansione rapida con scala di grigi (bassa qualità)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5065,82 +5143,82 @@ msgstr ""
"possibile (a bassa qualità). Questa potrebbe essere senza i colori o a "
"bassa risoluzione."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Durata in minuti dello spegnimento della lampada."
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Imposta il ritardo (in minuti) dopo il quale spegnere la lampada."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Spegne la lampada"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Spegne subito la lampada."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Luminosità del rosso"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Controlla la luminosità del canale rosso dell'immagine acquisita."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Luminosità del verde"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Controlla la luminosità del canale verde dell'immagine acquisita."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Luminosità del blu"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Controlla la luminosità del canale blu dell'immagine acquisita."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contrasto canale rosso"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Controlla il contrasto del canale rosso dell'immagine acquisita."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contrasto canale verde"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Controlla il contrasto del canale verde dell'immagine acquisita."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contrasto canale blu"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Controlla il contrasto del canale blu dell'immagine acquisita."
@@ -5184,22 +5262,22 @@ msgstr ""
"Preriscalda fino a che la luminisità della lampada sia costante invece "
"di attendere 40 secondi."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Pellicola negativa"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativo"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Colore ad alta qualità"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/ja.gmo b/po/ja.gmo
deleted file mode 100644
index 4cf6b91..0000000
--- a/po/ja.gmo
+++ /dev/null
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 5c589f6..ebf72ed 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.20\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2009-10-31 10:30+0900\n"
"Last-Translator: Hiroshi Miura <miurahr@linux.com>\n"
"Language-Team: Japanese <japanese@li.org>\n"
@@ -30,36 +30,36 @@ msgid "Standard"
msgstr "標準"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "配置"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "増強"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -87,7 +87,7 @@ msgstr "モノクロームプレビューを強制する"
msgid "Bit depth"
msgstr "ビット深度"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -128,7 +128,7 @@ msgstr "右下のx"
msgid "Bottom-right y"
msgstr "右下のy"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -284,7 +284,7 @@ msgstr "ファイル名"
msgid "Halftone pattern size"
msgstr "ハーフトーンパターンの大きさ"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "ハーフトーンのパターン"
@@ -296,8 +296,8 @@ msgstr "XとY解像度を拘束"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "ネガ"
@@ -946,7 +946,7 @@ msgstr "既定"
msgid "Set default values for enhancement controls."
msgstr "増強制御の既定値を設定する"
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "校正"
@@ -1084,7 +1084,7 @@ msgstr "ネガ画像"
msgid "Slides"
msgstr "スライド"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1105,488 +1105,487 @@ msgstr "半分の速度"
msgid "1/3 normal speed"
msgstr "3分の1の速度"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "丸められたパラメター値"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "不明"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "ADFが詰まりました"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "ADFのカバーが開いています"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "ランプ不良"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "走査ヘッドの位置エラー"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "CPUチェックエラー"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "RAMチェックエラー"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "ROMチェックエラー"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "ハードウエアチェックエラー"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "フィルムユニットのランプ不良"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "フィルムユニットのヘッド位置不良"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "パラメターリストの長さエラー"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "不正なコマンド操作コード"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "CDBに不正なフィールド"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "サポートされないLUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "パラメターリストに不正なフィールド"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "コマンドの順序エラー"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "指定されたウインドウが多すぎます"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "媒体が存在しません"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "IDENTIFYメッセージに不正なビット"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "オプションが正しくありません"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "電源ONリセット/バスデバイスリセット"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "ほかの初期化プログラムによってパラメターが変更されました"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "追加センサー情報はありません。"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "再選択失敗"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "SCSIパリティエラー"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "初期化ルーチンがエラーメッセージを受信しました。"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "不正なメッセージエラー"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "タイムアウトエラー"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "透過ユニットのシェーディングエラー"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "ランプが安定しません"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "フィルムスキャナー"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "フラットベッド(平台型)スキャナ"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "フィルムの種類"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "フィルムの種類を選択(例、ネガ、スライド)"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "ネガフィルム"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "ネガフィルムを選択"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "ハードウエア解像度"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "ハードウエア解像度だけを使用"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "焦点"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "自動焦点"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "自動焦点を有効/無効"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "自動焦点を一回だけ行う"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "排出している間に、一度だけ自動焦点補正を行います。"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "手動焦点位置"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr "光学系の焦点位置を手動で設定します(既定値:128)"
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "走査の余白"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "追加色調整"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "鏡像画像"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "水平に画像の鏡像にする"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "自動露出"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "自動露光機能を有効/無効にする"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "校正中"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "較正を「すぐに」実行します"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "自己診断"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "スキャナーの自己診断を実行"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "スキャナーのリセット"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "スキャナーをリセットする"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "媒体の扱い"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "各走査の後フィルムを排出する"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "自動的に、各走査の後、フィルムを装置から排出する。"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "終了前にフィルムを排出する"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr "自動的に、プログラム終了前に装置からフィルムを排出する"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "フィルムを今排出"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "フィルムを今すぐ、排出する。"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "文書供給装置拡張"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "フラットベッドのみ"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "自動書類送りを無効にし、平台だけを使います"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "透過ユニット"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
"透過ユニットのオフ・オンを切り替えます。(FAU,フィルムアダプター装置)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "ネガフィルム"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "ポジあるいはネガフィルム"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "濃度制御"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "濃度制御モードを設定"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "透過率"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "フィルムの種類を選択"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "フィルムの種類を選ぶ"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "フラットベッド"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "ADF表面"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "ADF裏面"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "ADF両面"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "ADF表面"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, fuzzy, no-c-format
msgid "Card Back"
msgstr "ADF裏面"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "両面"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "赤"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "緑"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "青"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "増強"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "増強"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "増強"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1594,18 +1593,18 @@ msgstr "増強"
msgid "None"
msgstr " なし"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1622,13 +1621,13 @@ msgstr "片面"
msgid "Duplex"
msgstr "両面"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "透過ユニット"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1741,8 +1740,8 @@ msgstr "インクジェットプリンタ"
msgid "CRT monitors"
msgstr "CRTモニター"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "既定"
@@ -1805,51 +1804,50 @@ msgstr "A4"
msgid "Max"
msgstr "最大"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "走査モード"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "ハーフトーンを選択する。"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "取り出し口"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "取り出し口の選択"
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "輝度の選択"
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "鮮鋭度"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "カラー補正"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "選択した出力デバイスのための色補正テーブルを設定する。"
@@ -1939,17 +1937,17 @@ msgstr "青レベルを基準として赤を増加"
msgid "Controls blue level"
msgstr "青レベルの制御"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "鏡像をとる。"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "高速プレビュー"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "自動領域分割"
@@ -1979,47 +1977,47 @@ msgstr "スキャナーが使うべきズーム値を定義"
msgid "Quick format"
msgstr "簡易フォーマット"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "光学装置"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "排出"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "ADFの書類を排出する"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "自動排出"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "走査後、書類を排出"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "ADFモード"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "ADFモードの選択(片面、両面)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr ""
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr ""
@@ -2056,7 +2054,7 @@ msgstr ""
"スキャンコマンドを送信後、実際に走査処理が始まる、スキャナーのボタンが押"
"されるのをまつ。"
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2086,492 +2084,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "ユーザ定義"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "オン"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "オフ"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "ディザー"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "エラー拡散"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "ホワイトレベル"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "黒レベル"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "条件付き"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "水平の"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "水平の"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "水平の"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "垂直の"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "垂直の"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "ADF表面"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, fuzzy, no-c-format
msgid "Back"
msgstr "ADF裏面"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "網版"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "較正の実行"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "画像強調"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "彩度"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "線画の走査で閾値の自動判定を有効にする"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "鏡像画像"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "水平に鏡像をとる。"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "ホワイトレベルの青値"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "赤レベルの制御"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "カラーフィルタ"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "スムージング"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "ガンマ値"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "閾値"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "閾値"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "ノイズ除去"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "補正をしない"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "補正をしない"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "ADFのカバーが開いています"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "上級オプション"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "補正をしない"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "取り出し口"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "フィーダーモード"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2579,65 +2577,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "ランプをオフにする時間"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "赤オフセット"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "緑オフセット"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "緑オフセット"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr ""
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
msgstr ""
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "メモリ不足"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2646,374 +2644,374 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "両面スキャン"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "上級オプション"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "ノイズ除去"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "紙から"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "紙から"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "紙から"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "紙から"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "スキャナーのカバーが開いています"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "手動焦点位置"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "手動焦点位置"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "ハードウエアチェックエラー"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "ホワイトレベル"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "濃度制御"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "濃度制御"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "両面スキャン"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "追加"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr ""
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3022,44 +3020,44 @@ msgstr ""
"水平解像度が垂直解像度より低いような高解像度を使うときは、水平"
"interpolationを無効にします。"
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "カラーフィルタ"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "校正"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "較正を「すぐに」実行します"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "較正データのキャッシュ"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "ランプをオフにする時間"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3068,101 +3066,111 @@ msgstr ""
"ランプは指定された時間(分)が経過したらオフにされます。値が0のときは、"
"この機能は働きません。"
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "ダーク補正時にランプをオフにする"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "走査した後、ランプがオフになるまでの時間(分)"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "ファイルボタン"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "OCRボタン"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "電源ボタン"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "電子メールボタン"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "較正のクリア"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "走査前にスキャナの校正を強制する"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "ボタン"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "較正"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "特殊シートを用いた補正を開始"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "較正のクリア"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "校正キャッシュを消去する"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "粗校正"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "透過アダプター"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "グレーモード色"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr "どの色を用いてグレーモードを実現するかを選択(既定:緑)"
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "デバッグオプション"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "自動暖機"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3170,12 +3178,12 @@ msgid ""
msgstr ""
"60秒の暖機時間を使う代わりに、ランプの輝度が一定になるまで暖機します。"
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "全走査"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3184,12 +3192,12 @@ msgstr ""
"補正領域を含めて、全領域を走査します。注意:全高を選択しないこと。これは"
"テスト用です。"
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "粗校正"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3201,12 +3209,12 @@ msgstr ""
"が必要です。このオプションは既定で有効にされています。テスト用途で存在す"
"るオプションです。"
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "粗調整を最初の走査だけ行う"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3214,12 +3222,12 @@ msgid ""
"different with each scan, disable this option. For testing only."
msgstr ""
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr ""
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3228,12 +3236,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "ガンマ値"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "すべてのチャネルのガンマ値を設定"
@@ -3249,7 +3257,7 @@ msgid "Scan Mode Group"
msgstr "スキャンモードグループ"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "スライド"
@@ -3454,160 +3462,235 @@ msgstr "ランプのオフ/オンを切り替え"
msgid "Calibrates for black and white level."
msgstr "白黒レベルを較正"
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMAスライド"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMAネガ"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "カラー(48ビット)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "ランプタイムアウトの拡大"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "ボタン待ち"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr ""
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "ボタン状態の更新"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "走査カウンター"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr ""
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "上級オプション"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "粗"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "密"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "バイエル"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "カスタム"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "自動"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC方式RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA方式RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "パススルー"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSCのグレー"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPAのグレー"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "遅い"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "普通"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "速い"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "超高速"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2ピクセル"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4ピクセル"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8ピクセル"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "印刷"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "フィルムの一片"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "条件付き"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "実験的"
@@ -3781,8 +3864,8 @@ msgstr "ランプの停止"
msgid "Shut off scanner lamp."
msgstr "スキャナーのランプを停止する。"
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "紙サイズ"
@@ -3793,8 +3876,7 @@ 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5横"
@@ -3809,38 +3891,34 @@ msgstr ""
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:393
#, fuzzy, 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:416
#, 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:428
#, fuzzy, 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "ADFにある紙の物理サイズ"
@@ -3956,199 +4034,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "バイエル"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "バイエル"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "網版"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "網版"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "エラー拡散"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "普通"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "ハイライト"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "フィルムスキャナー"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "紙から"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "既定"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "スムース"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "遅い"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "中"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "赤"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "緑"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "走査源"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "フィーダーモード"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "シート送りモードの設定"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "自動焦点を有効/無効"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "濃度制御モードを設定"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "シート送りモードの設定"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "シート送りモードの設定"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "自動閾値"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4157,95 +4235,95 @@ msgstr ""
"自動的に輝度、コントラスト、ホワイトレベル、ガンマ値、ノイズ低減とイメー"
"ジ強調を設定する。"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "ノイズ除去"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr ""
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "画像強調"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "イメージ強調を設定"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "ガンマ"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "ランプをオン"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "ランプのオフ/オンを切り替え"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "垂直に鏡像をとる。"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4957,99 +5035,99 @@ msgstr "3x3 カスタム"
msgid "2x2 custom"
msgstr "2x2 カスタム"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "高速グレーモード"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "高速グレーモードで走査(低品質)"
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr "すべてのプレビューを最高速モード(低品質)で行うようにする。"
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "ランプオフ時間(分)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "ランプが停止するまでの時間(分)を設定する"
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "ランプをオフに"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "すぐにランプをオフにする。"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "赤の輝度"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "取得された画像の赤チャネルの輝度を制御します。"
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "緑の輝度"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "取得された画像の緑チャネルの輝度を制御します。"
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "青の輝度"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "取得された画像の青チャネルの輝度を制御します。"
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr ""
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr ""
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr ""
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr ""
@@ -5091,22 +5169,22 @@ msgid ""
"40 seconds warm-up time."
msgstr ""
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "ネガフィルム"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "ネガ"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "高精彩"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/nb.gmo b/po/nb.gmo
deleted file mode 100644
index 5ec66f2..0000000
--- a/po/nb.gmo
+++ /dev/null
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 84fb1ce..183c1f0 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.12\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 23:01+0100\n"
"Last-Translator: Sigurd Stordal <polarbear42@phreaker.net>\n"
"Language-Team: \n"
@@ -25,36 +25,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometri"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Forbedring"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -82,7 +82,7 @@ msgstr "Fremtving enfarge forvisning"
msgid "Bit depth"
msgstr "Bit dybde"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -123,7 +123,7 @@ msgstr "Bunn-høyre x"
msgid "Bottom-right y"
msgstr "Bunn-høyre y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -279,7 +279,7 @@ msgstr "Filnavn"
msgid "Halftone pattern size"
msgstr ""
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr ""
@@ -291,8 +291,8 @@ msgstr ""
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativ"
@@ -939,7 +939,7 @@ msgstr "Standard"
msgid "Set default values for enhancement controls."
msgstr "Velg standard verdier for kontroll av forbedring"
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrering"
@@ -1072,7 +1072,7 @@ msgstr "Negativ"
msgid "Slides"
msgstr "Treigest"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1093,487 +1093,486 @@ msgstr ""
msgid "1/3 normal speed"
msgstr ""
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr ""
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr ""
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Gammaverdi"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr ""
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr ""
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr ""
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr ""
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtype"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Negativ Film"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Velger rammenummer å skanne"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Skanoppløsning"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Vis kort liste over oppløsninger"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Automatisk utløsning"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr ""
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Fokuseringposisjon"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Speilbilde"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Speilbilde"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Automatisk utløsning"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr ""
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Kalibrering"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Kvalitets kalibrering"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "Raskt skan"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr ""
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Løs ut dokoment etter skanning"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Dokumentmater"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr ""
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr ""
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Negativ Film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Lysbilde Film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr ""
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Filmtype"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr ""
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr ""
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr ""
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr ""
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
msgstr ""
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
msgstr ""
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rød"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Grønn"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blå"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Forbedring"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Forbedring"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Forbedring"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1581,18 +1580,18 @@ msgstr "Forbedring"
msgid "None"
msgstr "Ingen"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1609,13 +1608,13 @@ msgstr ""
msgid "Duplex"
msgstr ""
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr ""
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1728,8 +1727,8 @@ msgstr "Blekkskrivere"
msgid "CRT monitors"
msgstr ""
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standard"
@@ -1792,51 +1791,50 @@ msgstr ""
msgid "Max"
msgstr "Maks"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr ""
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr ""
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr ""
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr ""
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr ""
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Skarphet"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Farge korreksjon"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1926,17 +1924,17 @@ msgstr "Legger til rødt basert på blå-nivå"
msgid "Controls blue level"
msgstr "Kontrollerer blå-nivå"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Speil bildet"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Rask forvisning"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatisk oppdeling av areal i delareal"
@@ -1966,47 +1964,47 @@ msgstr ""
msgid "Quick format"
msgstr ""
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Tilleggsutstyr"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Utløs"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Utløs arket i ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automatisk utløsning"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Løs ut dokoment etter skanning"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr ""
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr ""
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr ""
@@ -2043,7 +2041,7 @@ msgstr ""
"Etter at kommandoen for skan er sendt, vent til skannerens knapp "
"ertrykket før skanings prossesen startes."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2073,492 +2071,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Brukerdefinert"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr ""
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr ""
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr ""
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr ""
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Hvitnivå"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Svartnivå"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr ""
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr ""
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr ""
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr ""
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr ""
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr ""
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr ""
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
msgstr ""
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Grov kalibrering"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
msgstr ""
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Kalibrering"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Speilbilde"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Speilbilde"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Hvitnivå for blå"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Kontrollerer rød-nivå"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Fargestrektegning"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr ""
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Gammaverdi"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr ""
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
msgstr ""
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Støyreduksjon"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Ingen korrigering"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Ingen korrigering"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
msgstr ""
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Spesielle valg"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Ingen korrigering"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Lampe på"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
msgstr ""
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2566,65 +2564,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Lampe av"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Lampe av"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, fuzzy, no-c-format
msgid "Green offset"
msgstr "Lampe av"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Lampe av"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, fuzzy, no-c-format
msgid "Blue offset"
msgstr "Lampe av"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Kontrast blåkanal"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2633,543 +2631,553 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Full skan"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Spesielle valg"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Støyreduksjon"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Fra papir"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Manuell førfokus"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Manuell førfokus"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Skanoppløsning"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Hvitnivå"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "lav densitets utskrift"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Full skan"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr ""
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr ""
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Fargestrektegning"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrering"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Kvalitets kalibrering"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kalibrering"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, fuzzy, no-c-format
msgid "Lamp off time"
msgstr "Lampe av"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Grov kalibrering"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Vent på knappen"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Vent på knappen"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Vent på knappen"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Grov kalibrering"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Grov kalibrering kun for første skan"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, fuzzy, no-c-format
msgid "Buttons"
msgstr "Knappstatus"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, fuzzy, no-c-format
msgid "Calibrate"
msgstr "Kalibrering"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Grov kalibrering"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Grov kalibrering"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Kalibrering"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Grov kalibrering"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr ""
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr ""
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatisk oppvarming"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
"60 seconds warm-up time."
msgstr ""
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Full skan"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
"Don't select the full height. For testing only."
msgstr ""
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grov kalibrering"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3177,12 +3185,12 @@ msgid ""
"are provided. This option is enabled by default. For testing only."
msgstr ""
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grov kalibrering kun for første skan"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3190,12 +3198,12 @@ msgid ""
"different with each scan, disable this option. For testing only."
msgstr ""
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr ""
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3204,12 +3212,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gammaverdi"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr ""
@@ -3225,7 +3233,7 @@ msgid "Scan Mode Group"
msgstr ""
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr ""
@@ -3423,160 +3431,235 @@ msgstr ""
msgid "Calibrates for black and white level."
msgstr ""
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr ""
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Treigest"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negativ"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Farge 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Lampe av"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Vent på knappen"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Varm opp lampen før skanning"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Knappstatus"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Skankilde"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Fargestrektegning"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Spesielle valg"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grov"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fin"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr ""
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Valgfri"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatisk"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr ""
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr ""
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr ""
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC-grå"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA-grå"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Treig"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr ""
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rask"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr ""
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr ""
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr ""
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr ""
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr ""
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, fuzzy, no-c-format
msgid "Film-strip"
msgstr "Filmtype"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr ""
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr ""
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr ""
@@ -3750,8 +3833,8 @@ msgstr ""
msgid "Shut off scanner lamp."
msgstr "Slå av skanner lampen."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Papirstørrelse"
@@ -3762,8 +3845,7 @@ msgstr "Papirstørrelse"
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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 landskap"
@@ -3778,38 +3860,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Manuell førfokus"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Manuell førfokus"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Fysisk størrelse av papir i ADF"
@@ -3925,294 +4003,294 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr ""
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr ""
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr ""
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr ""
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr ""
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr ""
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
msgstr ""
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "Fra papir"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Fra papir"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Standard"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr ""
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Treig"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Middels"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Rød"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Grønn"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Skankilde"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr ""
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr ""
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr ""
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr ""
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Velger måten å foreta gamma korreksjon på"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr ""
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr ""
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Støyreduksjon"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr ""
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr ""
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Lampe på"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr ""
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Speilbilde"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -4926,99 +5004,99 @@ msgstr "3x3 valgfri"
msgid "2x2 custom"
msgstr "2x2 valgfri"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr ""
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr ""
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr ""
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, fuzzy, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Varmopp lampe"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, fuzzy, no-c-format
msgid "Turn lamp off"
msgstr "Lampe av"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr ""
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr ""
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, fuzzy, no-c-format
msgid "Green brightness"
msgstr "Grønnbalanse"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr ""
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast rødkanal"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast grønnkanal"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast blåkanal"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr ""
@@ -5060,22 +5138,22 @@ msgid ""
"40 seconds warm-up time."
msgstr ""
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negativ Film"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativ"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/nl.gmo b/po/nl.gmo
deleted file mode 100644
index 78ec2e1..0000000
--- a/po/nl.gmo
+++ /dev/null
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 98c8aef..c4b0811 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,16 +8,15 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends.nl\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2017-05-19 17:02+0100\n"
-"Last-Translator: Martin Kho <mkho@posteo.net>\n"
-"Language-Team: English <kde-i18n-doc@kde.org>\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2019-07-26 13:38+0900\n"
+"Last-Translator: Olaf Meeuwissen <paddy-hack@member.fsf.org>\n"
+"Language-Team:\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: include/sane/saneopts.h:154
@@ -31,36 +30,36 @@ msgid "Standard"
msgstr "Standaard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometrie"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Kleurverbetering"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +87,7 @@ msgstr "Dwing monochroom voorbeeldscan"
msgid "Bit depth"
msgstr "Bitdiepte"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +128,7 @@ msgstr "Rechtsonder x"
msgid "Bottom-right y"
msgstr "Rechtsonder y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +284,7 @@ msgstr "Bestandsnaam"
msgid "Halftone pattern size"
msgstr "Grootte van het halftoonpatroon"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Halftoonpatroon"
@@ -297,8 +296,8 @@ msgstr "Combineer X- en Y-resolutie"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negatief"
@@ -984,7 +983,7 @@ msgstr "Standaardinstellingen"
msgid "Set default values for enhancement controls."
msgstr "Stel standaardwaarden in om verbeteropties te krijgen."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibreren"
@@ -1124,7 +1123,7 @@ msgstr "Negatieven"
msgid "Slides"
msgstr "Dia's"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1145,490 +1144,489 @@ msgstr "1/2 van de standaard snelheid"
msgid "1/3 normal speed"
msgstr "1/3 van de standaard snelheid"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "Afgeronde parameter"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "onbekend"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "Opstopping in automatische documentinvoer"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "Deksel van automatische documentinvoer open"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lampfalen"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "fout in positionering van scannerkop"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "fout bij controle van processor"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "fout bij controle van het RAM geheugen"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "fout bij controle van het ROM geheugen"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "fout bij controle van de hardware"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "lampfalen van de transparanten eenheid"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
"fout in de positionering van de scannerkop in de transparanten eenheid"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "fout in de lengte van de parameterlijst"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "ongeldige opdrachtcode"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "ongeldig veld in CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "niet-ondersteunde LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "ongeldig veld in de parameterlijst"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "fout in volgorde van de opdrachten"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "te veel vensters gespecificeerd"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "medium niet aanwezig"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "ongeldig onderdeel in IDENTIFY boodschap"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "optie onjuist"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "scanner aan reset / scannerinterface reset"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parameter gewijzigd door een andere initiator"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "geen zinvolle, aanvullende informatie"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "opnieuw kiezen mislukt"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "fout in SCSI pariteit"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "Door initiator gesignaleerde foutboodschap ontvangen"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "ongeldige boodschap fout"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "timeout"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "fout in de afscherming van de transparantie-eenheid "
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lamp niet gestabiliseerd"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "Filmscanner"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "Flatbedscanner"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtype"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Selecteert het filmtype, bijvoorbeeld negatieven of dia's"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Negatief filmtype"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Selecteert het negatief filmtype"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Hardware resolutie"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Gebruik alleen hardware resoluties"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Focus"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Autofocus"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Aan/uit schakelen van autofocus"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Eén keer autofocus"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Voer alleen een autofocus uit tussen uitworpen"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Handmatige focuspositie"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Stel de optische focus van de scanner handmatig in (standaard: 128)"
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Scanmarges"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Extra kleuraanpassingen"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Spiegel het beeld"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Spiegel het beeld horizontaal"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Automatische belichting"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Schakel de automatische belichtingsoptie aan/uit"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Kalibreer nu"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Voer kalibratie *NU* uit"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Zelftest"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Voer de zelftest van de scanner uit"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reset scanner"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Reset de scanner"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Gemiddeld gebruik"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Werp de film uit na elke scan"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Werp de film automatisch uit de scanner na elke scan"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Werp de film uit voor het programma wordt verlaten"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
"Werp de film automatisch uit de scanner voor het programma wordt verlaten"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Werp de film nu uit"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Werp de film *NU* uit"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Extra's van de documentendoorvoer"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Alleen flatbed"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "Schakel automatische documentinvoer uit en gebruik alleen flatbed"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Transparanteneenheid"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Schakel de transparanteneenheid aan/uit (FAU, film adaptereenheid)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negatief filmtype"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Dia of negatief filmtype"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Dichtheidscontrole"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Kies de dichtheidscontrolemodus"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Transparantieverhouding"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Selecteert filmtype"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Selecteert het filmtype"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flatbed"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "Automatische documentinvoer voorzijde"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "Automatische documentinvoer achterzijde"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Automatische documentinvoer dubbelzijdig"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
msgstr "Kaart voorzijde"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr "Kaart achterzijde"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
msgstr "Kaart dubbelzijdig"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Rood"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Groen"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blauw"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Verbeter rood"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Verbeter groen"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Verbeter blauw"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1636,18 +1634,18 @@ msgstr "Verbeter blauw"
msgid "None"
msgstr "Geen"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Softwarematig over te slaan percentage lege pagina's"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr "Verzoek het stuurprogramma pagina's met weinig dekking te negeren"
@@ -1664,13 +1662,13 @@ msgstr "enkelzijdig"
msgid "Duplex"
msgstr "Dubbelzijdig"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Filmeenheid"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1783,8 +1781,8 @@ msgstr "Inkjetprinters"
msgid "CRT monitors"
msgstr "CRT-monitoren"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standaardinstelling"
@@ -1847,51 +1845,50 @@ msgstr "A4"
msgid "Max"
msgstr "Maximaal"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Scanmodus"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Kiest halftoon."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Kleuronderdrukken"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Kiest kleuronderdrukken."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Kiest helderheid."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Scherpte"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Kleurcorrectie"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Stelt de kleurcorrectietabel in voor het gekozen uitvoerapparaat."
@@ -1981,17 +1978,17 @@ msgstr "Verhoogt rood op basis van de blauwwaarde"
msgid "Controls blue level"
msgstr "Regelt de blauwwaarde"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Spiegel het beeld."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Snelle voorbeeldscan"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatische verdeling van het scanoppervlak"
@@ -2021,49 +2018,49 @@ msgstr "Definieert de vergrotingsfactor die de scanner zal gebruiken"
msgid "Quick format"
msgstr "Snelle opmaak"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Optioneel hulpstuk"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Uitwerpen"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Werp het document in de automatische documentinvoer uit"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Automatische uitworp"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Werp het document uit na het scannen"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Automatische documentinvoer Modus"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
"Selecteert de Automatische documentinvoer modus (enkelzijdig/"
"dubbelzijdig)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Bak"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Kies de bak om te scannen"
@@ -2103,7 +2100,7 @@ msgstr ""
"Begin pas met scannen als eerst het scancommando naar de scanner is "
"gestuurd en daarna de knop van de scanner is ingedrukt."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Infrarood"
@@ -2133,243 +2130,243 @@ msgstr "Ingebouwd CCT profiel"
msgid "User defined CCT profile"
msgstr "Door gebruiker gedefinieerd CCT profiel"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Aan"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Uit"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Dither"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Verspreiding"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Wit"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Zwart"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Voortzetten"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Stoppen"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Horizontaal"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr "Horizontaal vet"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontaal smal"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Verticaal"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr "Verticaal vet"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "Van boven naar beneden"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "Van beneden naar boven"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Voorzijde"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Achterzijde"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr "Gammafunctie exponent"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Verandert de intensiteit van de middentonen"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr "GBF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr "Gespiegeld beeld formaat"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
msgstr "Halftoon type"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr "Regeltype van het halftoon filter"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr "Regelpatroon van het halftoon filter"
-#: backend/fujitsu.c:3209
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3256
+#, no-c-format
msgid "Outline"
-msgstr "Omtrek"
+msgstr "Contour"
-#: backend/fujitsu.c:3210
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3257
+#, no-c-format
msgid "Perform outline extraction"
-msgstr "Voer omtrek extractie uit"
+msgstr "Extract contouren"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
msgstr "Nadruk"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr "Negatief naar geleidelijk of positief naar scherp beeld"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, no-c-format
msgid "Separation"
msgstr "Scheiding"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Schakel automatische scheiding tussen beeld en tekst in"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
msgstr "Spiegelen"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
msgstr "Spiegel het resulterende beeld horizontaal"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "White level follower"
msgstr "Witwaarde volger"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, no-c-format
msgid "Control white level follower"
msgstr "Regel de witwaarde volger"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, no-c-format
msgid "BP filter"
msgstr "BP filter"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr "Verbeterd de kwaliteit van hoog resolutie bal-punt pen tekst"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Verzachten"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr "Schakelt verzachting in om OCR te verbeteren"
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, no-c-format
msgid "Gamma curve"
msgstr "Gammakromme"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
"Gammakromme, van licht naar donker, maar bovenste twee werken misschien "
"niet"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Drempel curve"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
@@ -2377,111 +2374,111 @@ msgstr ""
"Drempel curve, van licht naar donker, maar bovenste twee zijn misschien "
"niet liniair"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
msgstr "Drempel wit"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr "Stelt schermpunten in overeenkomstig de drempel voor wit ipv zwart"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
msgstr "Ruisverwijdering"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr "Matrix 5x5"
-#: backend/fujitsu.c:3404
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3451
+#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr "Verwijder 5 beeldpunten in een vierkant ruis"
+msgstr "Verwijder ruis met een 5 pixel vierkant"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr "Matrix 4x4"
-#: backend/fujitsu.c:3421
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3468
+#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr "Verwijder 4 beeldpunten in een vierkant ruis"
+msgstr "Verwijder ruis met een 4 pixel vierkant"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr "Matrix 3x3"
-#: backend/fujitsu.c:3438
-#, fuzzy, no-c-format
+#: backend/fujitsu.c:3485
+#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr "Verwijder 3 beeldpunten in een vierkant ruis"
+msgstr "Verwijder ruis met een 3 pixel vierkant"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr "Matrix 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr "Verwijder 2 beeldpunten in een vierkant ruis"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr "Variantie"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr "Stelt SDTC variantie rato in (gevoeligheid), 0 is gelijk aan 127"
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, no-c-format
msgid "Auto width detection"
msgstr "Automatische breedte herkenning"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr "Scanner herkent paper zijden. Kan de scansnelheid verminderen."
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, no-c-format
msgid "Auto length detection"
msgstr "Automatische lengte herkenning"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
"Scanner herkent onderzijde van het papier. Kan sommige frontends in de "
"war brengen."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr "Compressie"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
"Schakelt gecomprimeerde gegevens in. Kan je front-end programma laten "
"crashen."
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr "Compressie argument"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
@@ -2490,106 +2487,106 @@ msgstr ""
"Niveau van JPEG compressie. 1 is klein bestand, 7 is groot bestand. 0 "
"(standaard) is hetzelfde als 4"
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr "DF actie"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr "Actie die volgt op dubbele doorvoer fout"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr "DF scheefheid"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Schakel dubbele doorvoer fout in als gevolg van scheefheid"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr "DF dikte"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Stelt dubbele doorvoer fout in als gevolg van papierdikte"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr "DF lengte"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Stelt dubbele doorvoer fout in als gevolg van papierlengte"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr "DF lengte verschil"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr "Verschil in papier lengte om dubbele doorvoer fout te veroorzaken"
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
msgstr "DF herstel modus"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Vraag de scanner de doorvoer om te keren bij papier opstopping"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr "Papier protectie"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr "Vraag de scanner opstoppingen in de ADF te voorspellen "
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, no-c-format
msgid "Advanced paper protection"
msgstr "Geavanceerde papier protectie"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
"Vraag de scanner opstoppingen in de ADF te voorspellen met behulp van "
"verbeterde sensoren"
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, no-c-format
msgid "Staple detection"
msgstr "Nietjes detectie"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
"Vraag de scanner opstoppingen in de ADF te detecteren die worden "
"veroorzaakt door nietjes"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr "Achtergrond kleur"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
@@ -2597,12 +2594,12 @@ msgstr ""
"Stel de achtergrond kleur van scans in. Kan conflicteren met de "
"'overscan' optie"
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
msgstr "Uitvalkleur"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
@@ -2611,34 +2608,34 @@ msgstr ""
"One-pass scanners gebruiken slechts een kleur bij grijstrap of binair "
"scannen, bruikbaar voor gekleurd papier of inkt."
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
msgstr "Buffermodus"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
"Vraag de scanner pagina's vanuit de ADF zo snel mogelijk in te lezen in "
"het interne geheugen"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr "Voorkeuze"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr "Vraag de scanner de volgende pagina uit de ADF op te halen"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr "Overscan"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2650,24 +2647,24 @@ msgstr ""
"oppervlak t.o.v. het papierformaat, om de inzameling van de overige "
"kanten toe te staan. Kan conflicteren met 'bgcolor' optie"
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr "Tijdschakelaar - slaapstand"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
"Tijd in minuten voordat de interne voeding overschakelt naar slaap modus"
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
msgstr "Tijdschakelaar - uitstand"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches the scanner "
@@ -2676,42 +2673,42 @@ msgstr ""
"Tijd in minuten voordat de interne voeding de scanner uitschakelt. In "
"stappen van 15 minuten. Nul betekent nooit uitschakelen"
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, no-c-format
msgid "Duplex offset"
msgstr "Dubbelzijdige compensatie"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr "Pas voor-/achtercompensatie aan"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Groen compensatie"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, no-c-format
msgid "Adjust green/red offset"
msgstr "Pas groen-/roodcompensatie aan"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Blauw compensatie"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
msgstr "Pas blauw-/roodcompensatie aan"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr "Te weinig geheugen beschikbaar"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2725,12 +2722,12 @@ msgstr ""
"gebruikt om het juiste beeld vast te stellen. Deze optie dient "
"uitsluitend te worden gebruikt door aangepaste front-end software."
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Duplex side"
msgstr "Duplex zijde"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
@@ -2739,56 +2736,56 @@ msgstr ""
"Vertelt welke zijde (0=voorkant, 1=achterkant) van een duplex scan bij "
"de volgende aanroep van sane_read wordt geretourneerd."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr "Hardware rechtzetten en afknippen"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr "Vraag de scanner pagina's digitaal te roteren en af te knippen."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Softwarematige scheefheid correctie"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
"Vraag het stuurprogramma scheef getrokken pagina's digitaal te roteren."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Softwarematige ontspikkel omvang"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
"Maximale diameter van verspreid liggende spikkels, die van het gescande "
"beeld moeten worden verwijderd."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr "Softwarematig uitsnijden"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
"Vraag het stuurprogramma randen van pagina's digitaal te verwijderen."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr "Stoppen bij annuleren"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
@@ -2796,105 +2793,105 @@ msgstr ""
"Vraag het stuurprogramma de papierdoorvoer te stoppen i.p.v. uit te "
"werpen tijdens een annulering"
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, no-c-format
msgid "Endorser Options"
msgstr "Endorser-opties"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr "Stuurt de Endorser eenheid aan"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr "Endorser"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr "Schakel Endorser eenheid in"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr "Endorser delen"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr "Bepaald maximale Endorser teller waarde"
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr "Endorser waarde"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr "Initiële Endorser teller waarde"
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr "Endorser stap"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
"Wijzig Endorser teller waarde met deze hoeveelheid voor elke pagina"
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr "Endorser Y"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr "Endorser afdruk compensatie vanaf de bovenkant van het papier"
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr "Endorser lettertype"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr "Endorser afdruk lettertype"
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser direction"
msgstr "Endorser richting"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr "Endorser afdruk richting"
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr "Endorser zijde"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
"Endorser afdrukzijde, vereist hardware ondersteuning om te worden "
"gewijzigd"
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr "Endorser tekst"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
@@ -2903,200 +2900,200 @@ msgstr ""
"Endorser alfanumerieke afdrukformaat. %05ud of %08ud zal aan het eind "
"worden vervangen door de teller waarde."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr "Bovenrand"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr "Papier is gedeeltelijk in de ADF getrokken"
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
msgstr "A3 papier"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr "A3 papier gedetecteerd"
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
msgstr "B4 papier"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr "B4 papier gedetecteerd"
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
msgstr "A4 papier"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr "A4 papier gedetecteerd"
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
msgstr "B5 papier"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr "B5 papier gedetecteerd"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr "OMR of DF"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr "OMR of dubbele doorvoer gedetecteerd"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr "Energiebesparende"
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr "Scanner in energiebesparende modus"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
msgstr "Handmatige doorvoer"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
msgstr "Handmatige doorvoer geselecteerd"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr "Functie"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr "Functie karakter op het scherm"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr "Inkt bijna op"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr "Imprinter inkt is bijna op"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr "Dubbele doorvoer"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr "Dubbele doorvoer gedetecteerd"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr "Foutcode"
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
msgstr "Hardware foutcode"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr "Scheefheidshoek"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr "Vereist zwarte achtergrond voor het scannen"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr "Resterende hoeveelheid inkt"
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, no-c-format
msgid "Imprinter ink level"
msgstr "Imprinter inkt niveau"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, no-c-format
msgid "Density"
msgstr "Dichtheid"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr "Dichtheid schaal"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, no-c-format
msgid "Duplex switch"
msgstr "Duplex schakelaar"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr "Vraag backend randen van pagina's digitaal te verwijderen"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
"Vraag het stuurprogramma pagina's met weinig dekking te verwijderen"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr "Softwarematige rotatie tegen de klok in"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
"Vraag stuurprogramma een 90 graden gedraaid beeld te herkennen en "
"corrigeren"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Extra's"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr "Dynamische drempel curve, van licht naar donker, normaal 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr "Dynamische lijntekening uitschakelen"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
@@ -3105,12 +3102,12 @@ msgstr ""
"Schakel, om een lijntekening te genereren het gebruik van een software "
"aanpassend algoritme uit en vertrouw in plaats daarvan op de hardware."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Schakel interpolatie uit"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3120,34 +3117,34 @@ msgstr ""
"resolutie kleiner is dan de verticale resolutie, wordt de horizontale "
"interpolatie uitgeschakeld."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, no-c-format
msgid "Color filter"
msgstr "Kleurenfilter"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"Wanneer grijs of lijntekening wordt gebruikt, selecteert deze optie de "
"huidige actieve kleur."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, no-c-format
msgid "Calibration file"
msgstr "Kalibratiebestand"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, no-c-format
msgid "Specify the calibration file to use"
msgstr "Specificeer het te gebruiken kalibratiebestand"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, no-c-format
msgid "Calibration cache expiration time"
msgstr "Vervaltijd van de kalibratie cache"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, no-c-format
msgid ""
"Time (in minutes) before a cached calibration expires. A value of 0 "
@@ -3157,12 +3154,12 @@ msgstr ""
"van 0 betekent dat geen cache wordt gebruikt. Een negatieve waarde "
"betekent dat de cache nooit verloopt."
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Lamp-uit tijd"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3171,103 +3168,113 @@ msgstr ""
"De lamp wordt uitgeschakeld na de opgegeven tijd (in minuten). Een "
"waarde van 0 betekent, dat de lamp niet wordt uitgeschakeld."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
msgstr "Lamp uit tijdens het scannen"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "De lamp wordt uitgeschakeld tijdens het scannen"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Bestand-knop"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "OCR-knop"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Aan/Uit-knop"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, no-c-format
msgid "Extra button"
msgstr "Extra-knop"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
msgstr "Kalibratie nodig"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "De scanner moet worden gekalibreerd voor de huidige instellingen"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Knoppen"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibreren"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Begin kalibreerproces met een speciale transparant"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Reset kalibratie"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Reset kalibratiecache"
+#: backend/genesys.cc:5769
+#, no-c-format
+msgid "Force calibration"
+msgstr "Dwing kalibratie"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr "Dwing kalibratie en negeer alle kalibratie caches"
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Transparantenhulpstuk"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Kleur in grijsmodus"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Selecteert de scankleur die in de grijsmodus wordt gebruikt (Standaard: "
"groen)"
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Foutzoekopties"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatisch opwarmen"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3276,12 +3283,12 @@ msgstr ""
"Warm op totdat de helderheid van de lamp constant is in plaats van de "
"'verplichte' 60 seconde opwarmtijd aan te houden."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Volledige scan"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3290,12 +3297,12 @@ msgstr ""
"Scan het volledige scanbereik inclusief de kalibereerstrook. Pas op! "
"Kies niet een te grote hoogte. Alleen voor testdoeleinden."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grove kalibratie"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3307,12 +3314,12 @@ msgstr ""
"worden ingesteld. Deze optie staat standaard aan. Alleen voor "
"testdoeleinden."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grove kalibratie alleen voor de eerste scan"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3324,12 +3331,12 @@ msgstr ""
"van het beeld per scan verschilt, schakel deze optie dan uit. Alleen "
"voor testdoeleinden."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "\"Backtrack\" lijnen"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3342,12 +3349,12 @@ msgstr ""
"data kan verwerken. Lage waarden zorgen voor snellere scans, maar "
"vergroten het risico van gemiste scanlijnen."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gammawaarde"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Stelt de gammawaarde voor alle kanalen in."
@@ -3363,7 +3370,7 @@ msgid "Scan Mode Group"
msgstr "Scanmodus groep"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Dia"
@@ -3572,160 +3579,235 @@ msgstr "Schakelt de lamp aan of uit."
msgid "Calibrates for black and white level."
msgstr "Kalibreert voor de zwart-/witwaarde"
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "Automatische documentinvoer"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA dia's"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA Negatieven"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Kleur (48 bits)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Verleng lamp timeout"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Verlengt de lamp timeout (van 15 minuten tot 1 uur)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Wacht op een druk op de knop"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Wacht op een druk op de knop alvorens te scannen"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Laatst gedrukte knop"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Lees ID van de laatst gedrukte knop"
+
+#: backend/hp5590.c:121
+#, no-c-format
+msgid "LCD counter"
+msgstr "LCD teller"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Lees waarde van de LCD teller"
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr "Kleur LED indicator"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Lees waarde van de LED indicator"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr "Document beschikbaar in de ADF"
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr "Lees status van de indicator voor beschikbare documenten in de ADF"
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Verberg einde-van-pagina pixel"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr "Verberg einde-van-pagina pixels door vervanging met buurpixels"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Geavanceerde opties"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grof"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fijn"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Door de gebruiker gedefinieerd"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatisch"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Doorgang"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC Grijs"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA Grijs"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Langzaam"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normaal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Snel"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Extra snel"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-beeldpunt"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-beeldpunt"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-beeldpunt"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Afdruk"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Filmstrook"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Voorwaardelijk"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experiment"
@@ -3905,8 +3987,8 @@ msgstr "Schakel de lamp uit"
msgid "Shut off scanner lamp."
msgstr "Schakel de scannerlamp uit."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Papierformaat"
@@ -3917,8 +3999,7 @@ msgstr "Papierformaat"
msgid "Automatic separation"
msgstr "Automatische kleurscheiding"
-#: 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:531
#, no-c-format
msgid "Landscape"
msgstr "Liggend"
@@ -3933,38 +4014,34 @@ msgstr "Geïnverteerd beeld"
msgid "Long paper mode"
msgstr "Groot formaat papier modus"
-#: 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:393
#, no-c-format
msgid "Length control mode"
msgstr "Lengte-controlemodus"
-#: 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:416
#, no-c-format
msgid "Manual feed mode"
msgstr "Handmatige doorvoermodus"
-#: 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:428
#, no-c-format
msgid "Manual feed timeout"
msgstr "Handmatige doorvoer 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:441
#, no-c-format
msgid "Double feed detection"
msgstr "Dubbele doorvoer herkenning"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Schakel dubbelzijdig (duplex) scannen in"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr ""
@@ -4081,199 +4158,199 @@ msgstr "B6"
msgid "Legal"
msgstr "Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr "bayer 64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr "bayer 16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr "halftoon 32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr "halftoon 64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr "verspreiding"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr "normaal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
msgstr "licht"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr "donker"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
msgstr "Vanuit de scanner"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Vanaf papier"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
msgstr "standaardinstelling"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr "gelijkmatig"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr "geen"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
msgstr "laag"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
msgstr "gemiddeld"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr "hoog"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr "crt"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr "lineair"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
msgstr "rood"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
msgstr "groen"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr "blauw"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
msgstr "Stelt de scanbron in"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Doorvoermodus"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Stelt de doorvoermodus in"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Groot formaat papier modus in/uit schakelen"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Formaat gestuurde modus in/uit schakelen"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Stelt de handmatige doorvoermodus in"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Stelt de handmatige doorvoer timeout in seconden in"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Dubbele doorvoer herkenning in/uit schakelen"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr "aangepast aan de pagina"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr "Aangepast aan de pagina"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner verkleint het beeld zodat deze op de gescande pagina past"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 "Stelt de papier positie in: waar voor liggend, onwaar voor staand"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatische drempelwaarde"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4282,99 +4359,99 @@ msgstr ""
"Stelt automatisch helderheid, contrast, witwaarde, gamma, "
"ruisonderdrukking en beeldverbetering in"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Ruisonderdrukking"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Verminder de ruis van afzonderlijke punten"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Beeldverbetering"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Stelt beeldverbetering in"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
msgstr "Lamp kleur"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Schakelt de lamp kleur in (kleur uitval)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr "Geïnverteerd beeld in Z/W of halftoon modus"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Spiegel beeld (links/rechts verwisselen)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr "jpeg compressie"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr "JPEG beeld compressie met Q parameter, '0' - geen compressie"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr "Roteer beeld met de klok mee"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
"Vraag het stuurprogramma pagina's met een vaste hoeveelheid te roteren"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
"Vraag het stuurprogramma scheef getrokken pagina's digitaal te roteren"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
"Maximale omvang van verspreid liggende spikkels, die van het gescande "
"beeld moeten worden verwijderd"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr "Softwarematig automatisch uitsnijden"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5107,17 +5184,17 @@ msgstr "3x3 door de gebruiker gedefinieerd"
msgid "2x2 custom"
msgstr "2x2 door de gebruiker gedefinieerd"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Snelle grijsmodus"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Scan in snelle grijsmodus (lage beeldkwaliteit)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5126,85 +5203,85 @@ msgstr ""
"Vraag de snelste (lage kwaliteit) modus te gebruiken voor alle "
"voorbeeldscans. Dit kan een niet-kleur of lage resolutie modus zijn."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lamp uit tijd (minuten)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Stel de tijd (in minuten) in waarna de lamp wordt uitgeschakeld."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Schakel de lamp uit"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Schakelt de lamp direct uit"
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Helderheid van het rode kanaal"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Bepaalt de helderheid van het rode kanaal van het verkregen beeld."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Helderheid van het groene kanaal"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr ""
"Bepaalt de helderheid van het groene kanaal van het verkregen beeld."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Helderheid van het blauwe kanaal"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr ""
"Bepaalt de helderheid van het blauwe kanaal van het verkregen beeld."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contrast van het rode kanaal"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Bepaalt het contrast van het rode kanaal van het verkregen beeld."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contrast van het groene kanaal"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
"Bepaalt het contrast van het groene kanaal van het verkregen beeld."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contrast van het blauwe kanaal"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr ""
@@ -5249,22 +5326,22 @@ msgstr ""
"Warm op totdat de helderheid van de lamp constant is in plaats van de "
"'verplichte' 40 seconde opwarmtijd aan te houden."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
msgstr "Kleurennegatief"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
msgstr "Grijsnegatief"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr "48 bits kleur"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr "16 bits grijs"
@@ -6570,22 +6647,3 @@ msgstr "Stelt de compensatie in van het groene kanaal"
#, no-c-format
msgid "Sets blue channel offset"
msgstr "Stelt de compensatie in van het blauwe kanaal"
-
-#, fuzzy
-#~ msgid "IPC mode"
-#~ msgstr "Voorbeeldmodus"
-
-#~ msgid "problem not analyzed (unknown SCSI class)"
-#~ msgstr "probleem niet geanalyseerd (onbekende SCSI klasse)"
-
-#~ msgid "Grayscale"
-#~ msgstr "Grijstrap"
-
-#~ msgid "Binary"
-#~ msgstr "Binair (zwart/wit)"
-
-#~ msgid "Display a shortened resolution list"
-#~ msgstr "Toon een verkorte lijst met oplossende vermogens"
-
-#~ msgid "Black & White"
-#~ msgstr "Zwart/wit"
diff --git a/po/pl.gmo b/po/pl.gmo
deleted file mode 100644
index 6abea3d..0000000
--- a/po/pl.gmo
+++ /dev/null
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 872e709..3bd5e8b 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.21\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2010-11-06 19:33+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -26,36 +26,36 @@ msgid "Standard"
msgstr "Standardowe"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Krawędzie obszaru skanowania"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Ulepszanie"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -83,7 +83,7 @@ msgstr "Wymuszaj podgląd czarnobiały"
msgid "Bit depth"
msgstr "Głębokość bitowa"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -124,7 +124,7 @@ msgstr "Prawa"
msgid "Bottom-right y"
msgstr "Dolna"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -280,7 +280,7 @@ msgstr "Nazwa pliku"
msgid "Halftone pattern size"
msgstr "Rozmiar wzoru półcienia"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Wzór półcienia"
@@ -292,8 +292,8 @@ msgstr "Zrównaj rozdzielczość w osi X i Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negatyw"
@@ -978,7 +978,7 @@ msgstr "Wartości domyślne"
msgid "Set default values for enhancement controls."
msgstr "Ustaw domyślne wartości ustawień ulepszania"
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibracja"
@@ -1119,7 +1119,7 @@ msgstr "Negatywy"
msgid "Slides"
msgstr "Slajdy"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1140,489 +1140,488 @@ msgstr "1/2 zwykłej prędkości"
msgid "1/3 normal speed"
msgstr "1/3 zwykłej prędkości"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "parametr zaokrąglony"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "nieznany"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "zakleszczenie ADF"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "pokrywa ADF otwarta"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "awaria lampy"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "błąd pozycjonowania głowicy skanera"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "błąd kontroli CPU"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "błąd kontroli RAM"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "błąd kontroli ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "błąd kontroli sprzętu"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "awaria lampy do skanowania przezroczy"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "błąd pozycjonowania głowicy do skanowania przezroczy"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "błąd długości listy parametrów"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "błędny kod operacji"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "błędne pole w CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "nieobsługiwany LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "błędne pole w liście parametrów"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "błąd sekwencji poleceń"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "podano zbyt dużo okien"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "brak nośnika"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "błędny komunikat bitowy IDENTIFY"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "opcja nie podłączona"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "reset po włączeniu zasilania / reset szyny"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parametr zmieniony przez inny inicjator"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "brak dodatkowej informacji o stanie"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "niepowodzenie ponownego wyboru"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "błąd parzystości SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "otrzymano komunikat błędu wykryty przez inicjator"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "błędny komunikat"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "błąd przekroczenia czasu"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "błąd cieniowania modułu do skanowania przezroczy"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lampa nie ustabilizowana"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "skaner filmów"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "skaner płaski"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Rodzaj filmu"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Wybór rodzaju filmu, np. negatywów lub slajdów"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Rodzaj negatywu"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Wybór rodzaju negatywu"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Rozdzielczość sprzętowa"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Użycie tylko rozdzielczości sprzętowych"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Ostrość"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Ostrość automatyczna"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Włączenie/wyłączenie automatycznego ustawiania ostrości"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Jednokrotny autofocus"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Automatyczne ustawianie ostrości tylko po wymianie nośnika"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Ręczne ustawianie ostrości"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr "Ręczne ustawianie pozycji ostrości optyki (domyślnie: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Marginesy skanowania"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Dodatkowe ustawienia kolorów"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Odbicie lustrzane obrazka"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Poziome odbicie lustrzane obrazu"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Ekspozycja automatyczna"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Włączenie/wyłączenie automatycznego wyboru ekspozycji"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Kalibruj teraz"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Uruchomienie kalibracji *teraz*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Autodiagnostyka"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Wykonanie autodiagnostyki skanera"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Reset skanera"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Zresetowanie skanera"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Obsługa medium"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Wysuń film po zeskanowaniu"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Automatyczne wysuwanie filmu z urządzenia po każdym skanowaniu"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Wysuń film przed zakończeniem"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
"Automatyczne wysuwanie filmu z urządzenia przed zakończeniem programu"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Wysuń film teraz"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Wysunięcie filmu *teraz*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Dodatkowy podajnik dokumentów"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Tylko płyta"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Wyłączenie automatycznego podajnika dokumentów, używanie tylko płyty"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Moduł do skanowania przezroczy"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Włączenie/wyłączenie modułu do skanowania przezroczy (FAU)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negatyw"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Pozytyw lub negatyw"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Kontrola gęstości"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Ustawienie trybu kontroli gęstości"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Współczynnik przezroczystości"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Rodzaj filmu"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Wybór rodzaju filmu"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Płyta"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "ADF przód"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "ADF tył"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "ADF dwustronny"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Przód"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, fuzzy, no-c-format
msgid "Card Back"
msgstr "Tył"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Dwustronny"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Czerwony"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Zielony"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Niebieski"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Rozszerzenie czerwieni"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Rozszerzenie zieleni"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Rozszerzenie błękitu"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1630,18 +1629,18 @@ msgstr "Rozszerzenie błękitu"
msgid "None"
msgstr "Brak"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1658,13 +1657,13 @@ msgstr "Jednostronny"
msgid "Duplex"
msgstr "Dwustronny"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Moduł do skanowania przezroczy"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1777,8 +1776,8 @@ msgstr "Drukarki atramentowe"
msgid "CRT monitors"
msgstr "Monitory CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Domyślny"
@@ -1841,51 +1840,50 @@ msgstr "A4"
msgid "Max"
msgstr "Maksimum"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Tryb skanowania"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Wybór półcieni"
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Dropout"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Wybiera dropout"
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Wybiera jasność"
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Ostrość"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Korekcja koloru"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1976,17 +1974,17 @@ msgstr "Dodaje do czerwieni bazując na poziomie błękitu"
msgid "Controls blue level"
msgstr "Nadzoruje poziom błękitu"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Utwórz odbicie lustrzane obrazka"
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Szybki podgląd"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatyczny podział obszaru"
@@ -2016,47 +2014,47 @@ msgstr "Definiuje współczynnik powiększenia dla skanera"
msgid "Quick format"
msgstr "Szybkie formatowanie"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Wyposażenie opcjonalne"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Wysuń"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Wysuń arkusz z ADF"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Wysuwanie automatyczne"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Wysuń dokument po zeskanowaniu"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Tryb ADF"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Wybiera tryb ADF (jedno/dwustronny)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Wnęka"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Wybierz wnękę do skanowania"
@@ -2095,7 +2093,7 @@ msgstr ""
"Po wysłaniu komendy skanowania, czekaj aż przycisk na skanerze jest "
"naciśnięty, aby naprawdę rozpocząć skanowanie"
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Podczerwień"
@@ -2125,492 +2123,492 @@ msgstr "Wbudowany profil CCT"
msgid "User defined CCT profile"
msgstr "Profil CCT zdefiniowany przez użytkownika"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Włączony"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Wyłącz"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Ditheruj"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Dyfuzja"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Biel"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Czerń"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Kontynuacja"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Stop"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Poziomy"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr "Poziomy pogrubiony"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr "Poziomy cienki"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Pionowy"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr "Pionowy pogrubiony"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "Od góry do dołu"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "Od dołu do góry"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Przód"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Tył"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Półtony"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Wykonuje kalibrację"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Emfaza obrazka"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Nasycenie"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Włącz automatyczne rozpoznawanie progu dla skanów w trybie kreski."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Odbicie lustrzane obrazka"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Poziome, lustrzane odbicie obrazka."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Poziom bieli dla niebieskiego"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Nadzoruje poziom czerwieni"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Filtr kolorów"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Wygładzanie"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Wartość gamma"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Krzywa progowa"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, fuzzy, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr "Dynamiczna krzywa progowa, od ciemnego do jasnego, zwykle 50-65"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Próg"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Redukcja szumów"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Brak korekcji"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Brak korekcji"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "pokrywa ADF otwarta"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Opcje zaawansowane"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Brak korekcji"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Dropout"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "tryb podajnika"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2618,65 +2616,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Czas wyłączania lampy"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Offset błękitu"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Offset zieleni"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Offset zieleni"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Offset błękitu"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Ustawienie offsetu kanału błękitu"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "Brak pamięci"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2685,362 +2683,362 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Skanowanie dwustronne"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Opcje zaawansowane"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Redukcja szumów"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Od papieru"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Od papieru"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Od papieru"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Od papieru"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "Pokrywa skanera jest otwarta"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Ręczne wstępne ustawianie ostrości"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Ręczne wstępne ustawianie ostrości"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "błąd kontroli sprzętu"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Poziom bieli"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Kontrola gęstości"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Kontrola gęstości"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Skanowanie dwustronne"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Dodatki"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr "Dynamiczna krzywa progowa, od ciemnego do jasnego, zwykle 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr "Wyłączenie dynamicznego trybu kreski"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, fuzzy, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
@@ -3049,12 +3047,12 @@ msgstr ""
"Wyłączenie użycia algorytmu adaptacyjnego do generowania linii zamiast "
"polegania na trybie sprzętowym"
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Wyłącz interpolację"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3064,44 +3062,44 @@ msgstr ""
"mniejsza niż rozdzielczość pionowa, ta opcja wyłącza interpolację "
"poziomą."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Filtr kolorów"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr "W trybie szarości lub kreski ta opcja wybiera używany kolor."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibracja"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Zdefiniuj tryb kalibracji"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Pamięć podręczna danych kalibracji"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Czas wyłączania lampy"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3110,103 +3108,113 @@ msgstr ""
"Lampa zostanie wyłączona po podanym czasie (w minutach). Wartość 0 "
"oznacza, że lampa nie będzie wyłączana."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Wyłącz lampę podczas kalibracji ciemności"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, fuzzy, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Liczba minut do wyłączenia lampy po skanowaniu"
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Przycisk pliku"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Przycisk OCR"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Przycisk zasilania"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Przycisk E-maila"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
msgstr "Wymaga kalibracji"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Skaner wymaga kalibracji dla obecnych ustawień"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Przyciski"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibracja"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Rozpocznij kalibrację przy użyciu specjalnej kartki"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Wyczyść kalibrację"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Wyczyść pamięć podręczną kalibracji"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Kalibracja ziarnistości"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Moduł do skanowania negatywów"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Kolor trybu odcieni szarości"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Wybiera który kolor skanowania jest używany w trybie odcieni szarości "
"(domyślnie: zielony)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opcje odpluskwiania"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatyczne rozgrzewanie"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3215,12 +3223,12 @@ msgstr ""
"Rozgrzewaj dopóki jasność lampy będzie stała, zamiast przyjmować stały "
"czas 60 sekund."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Pełny ekran"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3229,12 +3237,12 @@ msgstr ""
"Skanuj cały dostępny obszar, łącznie z paskiem kalibracyjnym. Bądź "
"ostrożny. Nie wybieraj pełnej wysokości. Opcja tylko do celów testowych"
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Kalibracja ziarnistości"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3246,12 +3254,12 @@ msgstr ""
"parametrów analogowych. Ta opcja jest odblokowana domyślnie. Opcja tylko "
"do testów."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Kalibracja ziarnistości tylko dla pierwszego skanu"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3263,12 +3271,12 @@ msgstr ""
"jasność obrazka jest różna za każdym skanem, wyłącz tę opcję. Opcja "
"tylko dla testów."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Wymuszaj nawracanie"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3281,12 +3289,12 @@ msgstr ""
"Niskie wartości mogą powodować szybsze skanowanie lecz zwiększają ryzyko "
"pominięcia niektórych linii."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Wartość gamma"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Ustawia wartość gamma dla wszystkich kanałów"
@@ -3302,7 +3310,7 @@ msgid "Scan Mode Group"
msgstr "Grupa trybu skanowania"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Slajd"
@@ -3510,160 +3518,235 @@ msgstr "Włącza lub wyłącza lampę."
msgid "Calibrates for black and white level."
msgstr "Kalibruje poziom dla czerni i bieli."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "ADF"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA - slajdy"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA - negatywy"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Kolor (48 bitów)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Powiększ czas wyłączenia lampy"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Powiększa czas wyłączenia lampy (z 15 minut do 1 godziny)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Czekaj na przycisk"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Oczekiwanie na naciśnięcie przycisku przed skanowaniem"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Uaktualnij stan przycisku"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Licznik skanowań"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Kolorowy tryb kreski"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Opcje zaawansowane"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Ziarnistość"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Dokładny"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayera"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Użytkownika"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatyczny"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Środkowoprzepustowy"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "Skala szarości NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Skala szarości XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Powolny"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Zwykły"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Szybki"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Bardzo szybki"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2-pikselowy"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4-pikselowy"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8-pikselowy"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Drukuj"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Pasek filmu"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Warunkowy"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Eksperyment"
@@ -3843,8 +3926,8 @@ msgstr "Wyłącz lampę"
msgid "Shut off scanner lamp."
msgstr "Wyłącz lampę skanera."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Rozmiar papieru"
@@ -3855,8 +3938,7 @@ msgstr "Rozmiar papieru"
msgid "Automatic separation"
msgstr "Automatyczna separacja"
-#: 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 krajobraz"
@@ -3871,38 +3953,34 @@ msgstr ""
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:393
#, fuzzy, no-c-format
msgid "Length control mode"
msgstr "Ustawienie trybu kontroli gęstości"
-#: 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:416
#, fuzzy, no-c-format
msgid "Manual feed mode"
msgstr "Ręczne wstępne ustawianie ostrości"
-#: 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:428
#, fuzzy, no-c-format
msgid "Manual feed timeout"
msgstr "Ręczne wstępne ustawianie ostrości"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Włącz skanowanie dwustronne"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Fizyczny rozmiar papieru w ADF"
@@ -4018,199 +4096,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, fuzzy, no-c-format
msgid "bayer_64"
msgstr "Bayera"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, fuzzy, no-c-format
msgid "bayer_16"
msgstr "Bayera"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Półtony"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Półtony"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Dyfuzja"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Zwykły"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Światło"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "skaner filmów"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Od papieru"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Domyślny"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Wygładzanie"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Powolny"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Średni"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Czerwony"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Zielony"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Źródło skanowania"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "tryb podajnika"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Ustawia tryb podajnika"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Włączenie/wyłączenie automatycznego ustawiania ostrości"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Ustawienie trybu kontroli gęstości"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Ustawia tryb podajnika"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Ustawia tryb podajnika"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatyczne progowanie"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4219,95 +4297,95 @@ msgstr ""
"Automatycznie ustawia jasność, kontrast, poziom bieli, gammę, redukcję "
"szumów i emfazę obrazka"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Redukcja szumów"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Zmniejsz szum izolowanych punktów"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Emfaza obrazka"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Ustawia emfazę obrazka"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Włącz lampę"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Włącza lub wyłącza lampę."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Pionowe, lustrzane odbicie obrazka."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5033,17 +5111,17 @@ msgstr "3x3 ustawiany"
msgid "2x2 custom"
msgstr "2x2 ustawiany"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Szybki tryb szarości"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Skanuj w szybkim trybie odcieni szarości (niższa jakość)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5053,82 +5131,82 @@ msgstr ""
"(niskiej jakości). To może być tryb niekolorowy lub niskiej "
"rozdzielczości."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Czas wyłączenia lampy (w minutach)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Czas (w minutach), po którym lampa jest wyłączana."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Wyłącz lampę"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Wyłącza lampę natychmiast."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Jasność czerwieni"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Steruje jasnością kanału czerwieni."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Jasność zieleni"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Steruje jasnością kanału zieleni."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Jasność błękitu"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Steruje jasnością kanału błękitu."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast kanału czerwieni"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Steruje kontrastem kanału czerwieni."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast kanału zieleni"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Steruje kontrastem kanału zieleni."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast kanału "
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Steruje kontrastem kanału błękitu."
@@ -5172,22 +5250,22 @@ msgstr ""
"Rozgrzewaj dopóki jasność lampy będzie stała, zamiast przyjmować stały "
"czas 40 sekund."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Negatyw"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negatyw"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, fuzzy, no-c-format
msgid "48 bits color"
msgstr "Dobry kolor"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/pt.gmo b/po/pt.gmo
deleted file mode 100644
index 0a0b9fe..0000000
--- a/po/pt.gmo
+++ /dev/null
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index b4cf46d..f521b2a 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.10\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-05-08 13:31+0200\n"
"Last-Translator: Pedro Morais <morais@inocam.com>\n"
"Language-Team: pt <morais@inocam.com>\n"
@@ -25,36 +25,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometria"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Melhorias"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -82,7 +82,7 @@ msgstr ""
msgid "Bit depth"
msgstr ""
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -123,7 +123,7 @@ msgstr "Inferior-direita x"
msgid "Bottom-right y"
msgstr "Inferior-direita y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -279,7 +279,7 @@ msgstr "Nome do ficheiro"
msgid "Halftone pattern size"
msgstr "Tamanho padrão ponto - simulação cinza"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Simulação cinza padrão"
@@ -291,8 +291,8 @@ msgstr "Vincular resoluções X e Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativo"
@@ -942,7 +942,7 @@ msgstr "Predefinições"
msgid "Set default values for enhancement controls."
msgstr ""
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Calibração"
@@ -1075,7 +1075,7 @@ msgstr "Negativo"
msgid "Slides"
msgstr "Mais lento"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1096,487 +1096,486 @@ msgstr ""
msgid "1/3 normal speed"
msgstr ""
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr ""
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr ""
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Valor de 'gamma'"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Unidade de Transparências"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Unidade de Transparências"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr ""
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr ""
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr ""
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Filme Negativo"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr ""
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr ""
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr ""
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr ""
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr ""
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr ""
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr ""
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr ""
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr ""
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr ""
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Calibração"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Definine o modo de calibração"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "Digitalização rápida"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr ""
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr ""
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr ""
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Flachbett"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Unidade de Transparências"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Filme Negativo"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Filme Positivo"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Unidade de Transparências"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr ""
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr ""
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flachbett"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr ""
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr ""
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
msgstr ""
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
msgstr ""
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Vermelho"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Verde"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Azul"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Melhorias"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Melhorias"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Melhorias"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1584,18 +1583,18 @@ msgstr "Melhorias"
msgid "None"
msgstr ""
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Desconsiderar porcentagem branco"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, fuzzy, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1614,13 +1613,13 @@ msgstr ""
msgid "Duplex"
msgstr ""
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Unidade de Transparências"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1733,8 +1732,8 @@ msgstr "Impressoras de jacto de tinta"
msgid "CRT monitors"
msgstr "Monitores CRT"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Predefinição"
@@ -1797,51 +1796,50 @@ msgstr "A4"
msgid "Max"
msgstr "Máximo"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Modo de Digitalização"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr ""
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr ""
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr ""
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr ""
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr ""
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr ""
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1931,17 +1929,17 @@ msgstr ""
msgid "Controls blue level"
msgstr "Contraste do canal azul"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr ""
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr ""
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr ""
@@ -1971,47 +1969,47 @@ msgstr ""
msgid "Quick format"
msgstr ""
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr ""
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr ""
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr ""
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr ""
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr ""
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr ""
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr ""
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr ""
@@ -2046,7 +2044,7 @@ msgid ""
"pressed to actually start the scan process."
msgstr ""
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2076,492 +2074,492 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Definido pelo utilizador"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr ""
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr ""
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr ""
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr ""
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Nível de branco"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Nível de preto"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr ""
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr ""
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr ""
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr ""
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr ""
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr ""
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr ""
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, fuzzy, no-c-format
msgid "Reverse image format"
msgstr "Inverte imagem"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Simulação cinza padrão"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Calibração rudimentar"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
msgstr ""
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Saturação"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
msgstr ""
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
msgstr ""
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Nível de branco para azul"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Contraste do canal azul"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Linhas em cor"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr ""
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Valor de 'gamma'"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Limiar de aquecimento"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Valor do pixel-Threshold"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
msgstr ""
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Sem Correcção"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Sem Correcção"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, fuzzy, no-c-format
msgid "Compression"
msgstr "Compressão JPEG"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, fuzzy, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Liga / Desliga Modo de detecção de alimentação"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, fuzzy, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Liga / Desliga Modo de detecção de alimentação"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, fuzzy, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Liga / Desliga Modo de detecção de alimentação"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
msgstr ""
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, fuzzy, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Solicita ao driver para remover digitalmente bordas das páginas"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Imprimir opções"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Sem Correcção"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Cor da lâmpada"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
msgstr ""
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2569,65 +2567,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Lâmpada acesa"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Deslocamento do azul"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Deslocamento do verde"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Deslocamento do verde"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Deslocamento do azul"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Deslocamento do canal azul"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2636,522 +2634,532 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Digitalização completa"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, fuzzy, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr "Solicita ao driver para rotacionar digitalmente páginas inclinadas"
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Alinhamento - Deskew"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, fuzzy, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr "Solicita ao driver para rotacionar digitalmente páginas inclinadas"
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Diâmetro despeckle"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, fuzzy, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
"Diâmetro máximo de pontos isolados a serem removidos da digitalização"
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, fuzzy, no-c-format
msgid "Software crop"
msgstr "Crop automático"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, fuzzy, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr "Solicita ao driver para remover digitalmente bordas das páginas"
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Imprimir opções"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Calibração rudimentar"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
msgstr ""
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
msgstr ""
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
msgstr ""
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
msgstr ""
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, fuzzy, no-c-format
msgid "OMR or double feed detected"
msgstr "Detecção de dupla alimentação"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Modo de Alimentação manual"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Modo de Alimentação manual"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, fuzzy, no-c-format
msgid "Double feed"
msgstr "Detecção de dupla alimentação"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, fuzzy, no-c-format
msgid "Double feed detected"
msgstr "Detecção de dupla alimentação"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
msgstr ""
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Nível de branco"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Intensidade do vermelho"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Digitalização completa"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, fuzzy, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr "Solicita ao driver para remover digitalmente bordas das páginas"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
"Solicita ao driver para eliminar páginas com baixo número de pixels "
"escuros"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, fuzzy, no-c-format
msgid "Software derotate"
msgstr "Alinhamento - Deskew"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, fuzzy, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr "Solicita ao driver para remover digitalmente bordas das páginas"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr ""
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr ""
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Linhas em cor"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Calibração"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definine o modo de calibração"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Modo de calibração"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, fuzzy, no-c-format
msgid "Lamp off time"
msgstr "Lâmpada acesa"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, 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."
msgstr ""
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Calibração rudimentar"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr ""
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr ""
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Origem da digitalização"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Calibração rudimentar"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Calibração rudimentar apenas na primeira digitalização"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, fuzzy, no-c-format
msgid "Buttons"
msgstr "Estado do botão"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, fuzzy, no-c-format
msgid "Calibrate"
msgstr "Calibração"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Calibração rudimentar"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Calibração rudimentar"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Modo de calibração"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Calibração rudimentar"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Adaptador de Transparências"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr ""
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Opções de Depuração"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Aquecimento automático"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3160,12 +3168,12 @@ msgstr ""
"Aquecer até o brilho da lâmpada ser constante em ver de insistir em 60 "
"segundos de tempo de aquecimento."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Digitalização completa"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3174,12 +3182,12 @@ msgstr ""
"Digitalizar toda a área de digitalização, incluindo a faixa de "
"calibração. Cuidado: não seleccione toda a altura. Apenas para testes."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Calibração rudimentar"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3190,12 +3198,12 @@ msgstr ""
"estiver desactivada são fornecidas opções para configurar manualmente "
"este parâmetro. Apenas para testes."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Calibração rudimentar apenas na primeira digitalização"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3207,12 +3215,12 @@ msgstr ""
"briho da imagem é diferente em cada digitalização, desactive esta opção. "
"Apenas para testes."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr ""
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3221,12 +3229,12 @@ msgid ""
"omitting lines."
msgstr ""
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Valor de 'gamma'"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Define o valor de 'gamma' em todos os canais."
@@ -3242,7 +3250,7 @@ msgid "Scan Mode Group"
msgstr "Modo de Digitalização"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr ""
@@ -3440,160 +3448,235 @@ msgstr ""
msgid "Calibrates for black and white level."
msgstr ""
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr ""
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Mais lento"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Negativo"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Cor 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Lâmpada acesa"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr ""
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr ""
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Estado do botão"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Origem da digitalização"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Linhas em cor"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, fuzzy, no-c-format
msgid "Advanced Options"
msgstr "Imprimir opções"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr ""
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, fuzzy, no-c-format
msgid "Fine"
msgstr "Nome do ficheiro"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr ""
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr ""
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automático"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr ""
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr ""
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr ""
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC cinzento"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA cinzento"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Lento"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Rápido"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr ""
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr ""
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr ""
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr ""
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr ""
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr ""
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr ""
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr ""
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr ""
@@ -3767,8 +3850,8 @@ msgstr ""
msgid "Shut off scanner lamp."
msgstr ""
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr ""
@@ -3779,8 +3862,7 @@ msgstr ""
msgid "Automatic separation"
msgstr "Separação automática"
-#: 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:531
#, no-c-format
msgid "Landscape"
msgstr "Paisagem"
@@ -3795,38 +3877,34 @@ msgstr "Inverte imagem"
msgid "Long paper mode"
msgstr "Modo de Papel Longo"
-#: 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:393
#, no-c-format
msgid "Length control mode"
msgstr "Modo de Controle do Comprimento"
-#: 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:416
#, no-c-format
msgid "Manual feed mode"
msgstr "Modo de Alimentação manual"
-#: 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:428
#, no-c-format
msgid "Manual feed timeout"
msgstr "Tempo de desligamento da alimentação manual"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr "Detecção de dupla alimentação"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr ""
@@ -3942,296 +4020,296 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr ""
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr ""
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr ""
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr ""
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr ""
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
msgstr "claro"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr "escuro"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "Digitalização rápida"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr ""
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "Predefinição"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr "Suave"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr "Nenhuma"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Lento"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
msgstr "Média"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr "Alta"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, fuzzy, no-c-format
msgid "linier"
msgstr "Linhas"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Vermelho"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Verde"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, fuzzy, no-c-format
msgid "blue"
msgstr "Azul"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Origem da digitalização"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr ""
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr ""
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Liga / Desliga Modo Papel Longo"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Liga / Desliga Modo Controle do Comprimento"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Define modo de alimentação manual"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Define desligamento de alimentação manual em segundos"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Liga / Desliga Modo de detecção de alimentação"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr "Adequar à página"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr "Adequar à página"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Scanner diminui imagem para adequar à pagina digitalizada"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
"Define posição do papel: Verdadeiro para Paisagem, Falso para Retrato"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Limiar de aquecimento"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr ""
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr ""
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr ""
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr ""
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Cor da lâmpada"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Define cor da lâmpada (Color dropout)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr "Inverte imagem nos modos P/B ou simulação de cinza"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Imagem espelhada"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr "Compressão JPEG"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr "Compressão da imagem JPEG com parâmetro Q, '0' - sem compressão"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, fuzzy, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr "Solicita ao driver para rotacionar digitalmente páginas inclinadas"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr "Solicita ao driver para rotacionar digitalmente páginas inclinadas"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
"Diâmetro máximo de pontos isolados a serem removidos da digitalização"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr "Crop automático"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr "Solicita ao driver para remover digitalmente bordas das páginas"
@@ -4942,99 +5020,99 @@ msgstr ""
msgid "2x2 custom"
msgstr ""
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr ""
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr ""
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, 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."
msgstr ""
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr ""
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr ""
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr ""
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr ""
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Brilho do vermelho"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, fuzzy, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Deslocamento (brilho) do canal vermelho."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Brilho do verde"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, fuzzy, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Deslocamento (brilho) do canal vermelho."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Brilho do azul"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, fuzzy, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Deslocamento (brilho) do canal azul."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Contraste do canal vermelho"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, fuzzy, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Ganho (contraste) do canal vermelho."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Contraste do canal verde"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr ""
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contraste do canal azul"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, fuzzy, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Ganho (contraste) do canal azul."
@@ -5078,22 +5156,22 @@ msgstr ""
"Aquecer até o brilho da lâmpada ser constante em ver de insistir em 40 "
"segundos de tempo de aquecimento."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Filme Negativo"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Negativo"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/quot.sed b/po/quot.sed
deleted file mode 100644
index 0122c46..0000000
--- a/po/quot.sed
+++ /dev/null
@@ -1,6 +0,0 @@
-s/"\([^"]*\)"/“\1”/g
-s/`\([^`']*\)'/‘\1’/g
-s/ '\([^`']*\)' / ‘\1’ /g
-s/ '\([^`']*\)'$/ ‘\1’/g
-s/^'\([^`']*\)' /‘\1’ /g
-s/“”/""/g
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
deleted file mode 100644
index 2436c49..0000000
--- a/po/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
diff --git a/po/ru.gmo b/po/ru.gmo
deleted file mode 100644
index 3b34813..0000000
--- a/po/ru.gmo
+++ /dev/null
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 2b8335a..da65670 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -7,8 +7,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2007-12-17 23:05+0100\n"
"Last-Translator: \n"
"Language-Team: <ru@li.org>\n"
@@ -31,36 +31,36 @@ msgid "Standard"
msgstr ""
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Расположение"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Повышение"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +88,7 @@ msgstr "Принудительный одноцветный предварите
msgid "Bit depth"
msgstr "Бит на цвет"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +129,7 @@ msgstr "Правая нижняя координата X"
msgid "Bottom-right y"
msgstr "Правая нижняя координата Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +285,7 @@ msgstr "Название файла"
msgid "Halftone pattern size"
msgstr "Размер чёрно-белого шаблона"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Чёрно-белый шаблон"
@@ -297,8 +297,8 @@ msgstr "Согласовывать разрешение по X и по Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Негатив"
@@ -994,7 +994,7 @@ msgstr "По умолчанию"
msgid "Set default values for enhancement controls."
msgstr "Устанавливает значения по умолчанию для управления повышением."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Калибровка"
@@ -1135,7 +1135,7 @@ msgstr "Негатив"
msgid "Slides"
msgstr "Слайд"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1156,487 +1156,486 @@ msgstr "2x2 нормальное"
msgid "1/3 normal speed"
msgstr "3x3 нормальное"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, fuzzy, no-c-format
msgid "rounded parameter"
msgstr "Нечёткие параметры"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr ""
-#: backend/canon.c:378
+#: backend/canon.c:373
#, fuzzy, no-c-format
msgid "ADF jam"
msgstr "АПД"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr ""
-#: backend/canon.c:394
+#: backend/canon.c:389
#, fuzzy, no-c-format
msgid "lamp failure"
msgstr "Значение гаммы"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr ""
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr ""
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr ""
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr ""
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr ""
-#: backend/canon.c:412
+#: backend/canon.c:407
#, fuzzy, no-c-format
msgid "transparency unit lamp failure"
msgstr "Модуль для слайдов"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr ""
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr ""
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr ""
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr ""
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr ""
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr ""
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr ""
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr ""
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr ""
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr ""
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr ""
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr ""
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr ""
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr ""
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr ""
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr ""
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr ""
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr ""
-#: backend/canon.c:522
+#: backend/canon.c:517
#, fuzzy, no-c-format
msgid "transparency unit shading error"
msgstr "Модуль для слайдов"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr ""
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, fuzzy, no-c-format
msgid "film scanner"
msgstr "планшетный сканер"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "планшетный сканер"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Тип плёнки"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr ""
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, fuzzy, no-c-format
msgid "Negative film type"
msgstr "Негатив"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, fuzzy, no-c-format
msgid "Selects the negative film type"
msgstr "Выберите тестовое изображение"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, fuzzy, no-c-format
msgid "Hardware resolution"
msgstr "Разрешение сканирования"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, fuzzy, no-c-format
msgid "Use only hardware resolutions"
msgstr "Показывать короткий список разрешений"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr ""
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, fuzzy, no-c-format
msgid "Auto focus"
msgstr "Автоизвлечение"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, fuzzy, no-c-format
msgid "Enable/disable auto focus"
msgstr "Выключить предварительный фокус"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr ""
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr ""
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, fuzzy, no-c-format
msgid "Manual focus position"
msgstr "Зафиксировать позицию фокуса"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr ""
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr ""
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Зеркальное изображение"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, fuzzy, no-c-format
msgid "Mirror the image horizontally"
msgstr "Отображает изображение по горизонтали."
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, fuzzy, no-c-format
msgid "Auto exposure"
msgstr "Установить время выдержки"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, fuzzy, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Включить выбор времени выдержки"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, fuzzy, no-c-format
msgid "Calibration now"
msgstr "Калибровка"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, fuzzy, no-c-format
msgid "Execute calibration *now*"
msgstr "Задать режим калибровки"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr ""
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr ""
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, fuzzy, no-c-format
msgid "Reset scanner"
msgstr "листовой сканер"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, fuzzy, no-c-format
msgid "Reset the scanner"
msgstr "листовой сканер"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr ""
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, fuzzy, no-c-format
msgid "Eject film after each scan"
msgstr "Извлечь документ после сканирования"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr ""
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr ""
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr ""
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, fuzzy, no-c-format
msgid "Document feeder extras"
msgstr "Податчик листов"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, fuzzy, no-c-format
msgid "Flatbed only"
msgstr "Планшетный"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, fuzzy, no-c-format
msgid "Transparency unit"
msgstr "Модуль для слайдов"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr ""
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, fuzzy, no-c-format
msgid "Negative film"
msgstr "Негатив"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, fuzzy, no-c-format
msgid "Positive or negative film"
msgstr "Позитив"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr ""
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr ""
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, fuzzy, no-c-format
msgid "Transparency ratio"
msgstr "Модуль для слайдов"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, fuzzy, no-c-format
msgid "Select film type"
msgstr "Тип плёнки"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, fuzzy, no-c-format
msgid "Select the film type"
msgstr "Выбирает полутона."
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Планшетный"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr ""
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, fuzzy, no-c-format
msgid "ADF Back"
msgstr "АПД"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, fuzzy, no-c-format
msgid "ADF Duplex"
msgstr "Двухсторонний"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Распечатка"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr ""
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Двухсторонний"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Красный"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Зелёный"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Синий"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, fuzzy, no-c-format
msgid "Enhance Red"
msgstr "Повышение"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, fuzzy, no-c-format
msgid "Enhance Green"
msgstr "Повышение"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, fuzzy, no-c-format
msgid "Enhance Blue"
msgstr "Повышение"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1644,18 +1643,18 @@ msgstr "Повышение"
msgid "None"
msgstr "Ничего"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr ""
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr ""
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1672,13 +1671,13 @@ msgstr "Односторонний"
msgid "Duplex"
msgstr "Двухсторонний"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Модуль для слайдов"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1791,8 +1790,8 @@ msgstr "Струйные принтеры"
msgid "CRT monitors"
msgstr "Мониторы с ЭЛТ"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "По умолчанию"
@@ -1855,51 +1854,50 @@ msgstr "A4"
msgid "Max"
msgstr "Макс"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Режим сканирования"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Выбирает полутона."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr ""
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr ""
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Выбирает яркость."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Резкость"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Коррекция цветов"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1991,17 +1989,17 @@ msgstr "Добавляет к красному, основанному на ур
msgid "Controls blue level"
msgstr "Управляет уровнем синего"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Сделать изображение зеркальным."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Быстрый предварительный просмотр"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Автоматически разделять на области"
@@ -2033,47 +2031,47 @@ msgstr ""
msgid "Quick format"
msgstr "Быстрый формат"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Дополнительное оборудование"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Извлечь"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Вставить бумагу в устройство подачи документов"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Автоизвлечение"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Извлечь документ после сканирования"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Режим автоподачи"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Выбирает режим автоподачи (односторонний/двухсторонний)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Отсек"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Выбрать отсек, который сканировать"
@@ -2114,7 +2112,7 @@ msgstr ""
"После подачи команды \"сканировать\", будет ожидать пока не будет нажата "
"кнопка на сканере, чтобы действительно начать процесс сканирования."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr ""
@@ -2144,494 +2142,494 @@ msgstr ""
msgid "User defined CCT profile"
msgstr "Определяемое пользователем"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Вкл"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Выкл"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr ""
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr ""
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Размытие"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, fuzzy, no-c-format
msgid "Diffusion"
msgstr "Диффузия ошибок"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, fuzzy, no-c-format
msgid "White"
msgstr "Уровень белого"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, fuzzy, no-c-format
msgid "Black"
msgstr "Уровень чёрного"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, fuzzy, no-c-format
msgid "Continue"
msgstr "Условно"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr ""
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr ""
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr ""
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr ""
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Горизонтально"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, fuzzy, no-c-format
msgid "Horizontal bold"
msgstr "Горизонтально"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, fuzzy, no-c-format
msgid "Horizontal narrow"
msgstr "Горизонтально"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Вертикальное"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, fuzzy, no-c-format
msgid "Vertical bold"
msgstr "Вертикальное"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr ""
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr ""
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, fuzzy, no-c-format
msgid "Front"
msgstr "Распечатка"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr ""
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr ""
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr ""
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr ""
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Полутоновый (растр)"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Грубая калибровка"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Выразительность изображения"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Насыщенность"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Включает автоматическое определение порога при сканировании штриховых "
"изображений."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Зеркальное изображение"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Отображает изображение по горизонтали."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Уровень белого для синего"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Управляет уровнем красного"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Цветное штриховое"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Сглаживание"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Значение гаммы"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, fuzzy, no-c-format
msgid "Threshold curve"
msgstr "Порог"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Порог"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Уменьшение шумов"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Без коррекции"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Без коррекции"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr ""
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr ""
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr ""
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr ""
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr ""
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "Режим подачи"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr ""
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Дополнительные параметры"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Без коррекции"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Включить лампу"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Режим подачи"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2639,65 +2637,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Время выключения лампы"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Смещение синего"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Смещение зелёного"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Смещение зелёного"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Смещение синего"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Устанавливает смещение канала синего"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr ""
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2706,418 +2704,418 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Двухстороннее сканирование"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr ""
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr ""
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr ""
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Дополнительные параметры"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Уменьшение шумов"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "От бумаги"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "От бумаги"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "От бумаги"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "От бумаги"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr ""
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr ""
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Ручная предварительная фокусировка"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Ручная предварительная фокусировка"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr ""
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr ""
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "Разрешение сканирования"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Уровень белого"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Интенсивность красного"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr ""
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Двухстороннее сканирование"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr ""
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Дополнительно"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr ""
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
"instead on hardware lineart."
msgstr ""
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, fuzzy, no-c-format
msgid "Disable interpolation"
msgstr "Выключить отслеживание"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
"than the vertical resolution this disables horizontal interpolation."
msgstr ""
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Цветное штриховое"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Калибровка"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Задать режим калибровки"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Кэширование калибровочных данных"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Время выключения лампы"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3126,103 +3124,113 @@ msgstr ""
"Лампа будет выключена через указанное время (в минутах). Значение 0 "
"означает, что лампа выключаться не будет."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, fuzzy, no-c-format
msgid "Lamp off during scan"
msgstr "Грубая калибровка"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr ""
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, fuzzy, no-c-format
msgid "File button"
msgstr "Ожидать нажатия кнопки"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr ""
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, fuzzy, no-c-format
msgid "Power button"
msgstr "Ожидать нажатия кнопки"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "Ожидать нажатия кнопки"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, fuzzy, no-c-format
msgid "Need calibration"
msgstr "Грубая калибровка"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, fuzzy, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Выполнять калибровку сканера перед сканированием"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Кнопки"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Калибровка"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, fuzzy, no-c-format
msgid "Start calibration using special sheet"
msgstr "Начать процесс калибровки."
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, fuzzy, no-c-format
msgid "Clear calibration"
msgstr "Грубая калибровка"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, fuzzy, no-c-format
msgid "Clear calibration cache"
msgstr "Кэширование калибровочных данных"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Грубая калибровка"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Слайд-модуль"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Цвет полутонового режима"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Выбирает, какой цвет будет использоваться при сканировании в полутоновом "
"режиме (по умолчанию - зелёный)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Параметры отладки"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Автоматический прогрев"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3231,12 +3239,12 @@ msgstr ""
"Разогревать пока яркость лампы не станет постоянной, вместо простого 60-"
"тисекундного ожидания разогрева."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Полное сканирование"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3246,12 +3254,12 @@ msgstr ""
"полосу. Будьте осторожны. Не выбирайте полную высоту. Только для "
"тестирования."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Грубая калибровка"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3263,12 +3271,12 @@ msgstr ""
"аналоговой настройки. Параметр включен по умолчанию. Только для "
"тестирования."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Грубая калибровка только для первого сканирования"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3280,12 +3288,12 @@ msgstr ""
"Если яркость изображения отличается при каждом сканировании, выключите "
"этот параметр. Только для тестирования."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Линии отката"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3298,12 +3306,12 @@ msgstr ""
"быстрее, чем компьютер может принимать данные. Низкое значение приводит "
"к более быстрому сканированию, но увеличивает вероятность пропуска линий."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Значение гаммы"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Устанавливает значение гаммы всех каналов."
@@ -3319,7 +3327,7 @@ msgid "Scan Mode Group"
msgstr "Режим сканирования"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Слайд"
@@ -3517,160 +3525,235 @@ msgstr "Включить/выключить лампу."
msgid "Calibrates for black and white level."
msgstr "Калибрует для чёрного и белого уровня."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "АПД"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, fuzzy, no-c-format
msgid "TMA Slides"
msgstr "Слайд"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, fuzzy, no-c-format
msgid "TMA Negatives"
msgstr "Негатив"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, fuzzy, no-c-format
msgid "Color (48 bits)"
msgstr "Цветной 48"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, fuzzy, no-c-format
msgid "Extend lamp timeout"
msgstr "Время выключения лампы"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr ""
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Ожидать нажатия кнопки"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, fuzzy, no-c-format
msgid "Waits for button before scanning"
msgstr "Прогревать лампу перед сканированием"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Состояние кнопки"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Источник сканирования"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Цветное штриховое"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Дополнительные параметры"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Грубое"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Точное"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr ""
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Пользовательское"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Автоматически"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Пропускать сквозь"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "Чёрно-белое NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Чёрно-белое XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Медленно"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Нормально"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Быстро"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Очень быстро"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "Двухточечное"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "Четырёхточечное"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "Восьмиточечное"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Распечатка"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Плёнка"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr ""
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Условно"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Эксперимент"
@@ -3851,8 +3934,8 @@ msgstr "Выключить лампу"
msgid "Shut off scanner lamp."
msgstr "Выключает лампу сканера."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Размер бумаги"
@@ -3863,8 +3946,7 @@ 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:531
#, fuzzy, no-c-format
msgid "Landscape"
msgstr "A5 ландшафт"
@@ -3879,38 +3961,34 @@ msgstr ""
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:393
#, 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:416
#, fuzzy, 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:428
#, fuzzy, 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:441
#, no-c-format
msgid "Double feed detection"
msgstr ""
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Физический размер бумаги в устройстве автоподачи"
@@ -4026,199 +4104,199 @@ msgstr ""
msgid "Legal"
msgstr ""
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr ""
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr ""
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, fuzzy, no-c-format
msgid "halftone_32"
msgstr "Полутоновый (растр)"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, fuzzy, no-c-format
msgid "halftone_64"
msgstr "Полутоновый (растр)"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, fuzzy, no-c-format
msgid "diffusion"
msgstr "Диффузия ошибок"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
msgid "normal"
msgstr "Нормально"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, fuzzy, no-c-format
msgid "light"
msgstr "Подсветка"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr ""
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, fuzzy, no-c-format
msgid "From scanner"
msgstr "планшетный сканер"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "От бумаги"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, fuzzy, no-c-format
msgid "default"
msgstr "По умолчанию"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, fuzzy, no-c-format
msgid "smooth"
msgstr "Сглаживать"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr ""
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, fuzzy, no-c-format
msgid "low"
msgstr "Медленно"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, fuzzy, no-c-format
msgid "medium"
msgstr "Нормальный"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr ""
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr ""
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr ""
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, fuzzy, no-c-format
msgid "red"
msgstr "Красный"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, fuzzy, no-c-format
msgid "green"
msgstr "Зелёный"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr ""
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, fuzzy, no-c-format
msgid "Sets the scan source"
msgstr "Источник сканирования"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Режим подачи"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Устанавливает режим подачи"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, fuzzy, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Выключить предварительный фокус"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, fuzzy, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Выключить предварительный фокус"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, fuzzy, no-c-format
msgid "Sets the manual feed mode"
msgstr "Устанавливает режим подачи"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, fuzzy, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Устанавливает режим подачи"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 ""
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr ""
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr ""
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 ""
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 ""
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Автоматический порог"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4227,95 +4305,95 @@ msgstr ""
"Автоматически устанавливает яркость, контрастность, уровень белого, "
"гамму, уменьшение шума и выразительность изображения"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Уменьшение шумов"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Уменьшает количество отдельных случайных точек"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Выразительность изображения"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Устанавливает выразительность изображения"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Гамма"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, fuzzy, no-c-format
msgid "Lamp color"
msgstr "Включить лампу"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, fuzzy, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Включить/выключить лампу."
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr ""
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, fuzzy, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Отображает изображение по вертикали."
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr ""
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr ""
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr ""
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr ""
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5048,17 +5126,17 @@ msgstr "3x3 выборочно"
msgid "2x2 custom"
msgstr "2x2 выборочно"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Быстрый чёрно-белый режим"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Сканировать в быстром чёрно-белом режиме (наихудшее качество)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5068,82 +5146,82 @@ msgstr ""
"(низкокачественном) режиме. Это может быть чёрно-белый режим или режим с "
"низким разрешением."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Время выключения лампы (в минутах)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Указывает время (в минутах), после которого лампа будет выключена."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Выключить лампу сканера"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Выключает лампу незамедлительно."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Яркость красного"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Управляет яркостью красного канала полученного изображения."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Яркость зелёного"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Управляет яркостью зелёного канала полученного изображения."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Яркость синего"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Управляет яркостью синего канала полученного изображения."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Контрастность красного канала"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Управляет контрастностью красного канала полученного изображения."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Контрастность зелёного канала"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Управляет контрастностью зелёного канала полученного изображения."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Контрастность синего канала"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Управляет контрастностью синего канала полученного изображения."
@@ -5187,22 +5265,22 @@ msgstr ""
"Разогревать пока яркость лампы не станет постоянной, вместо простого 40-"
"тисекундного ожидания разогрева."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, fuzzy, no-c-format
msgid "Negative color"
msgstr "Негатив"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, fuzzy, no-c-format
msgid "Negative gray"
msgstr "Негатив"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr ""
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr ""
diff --git a/po/stamp-po b/po/stamp-po
deleted file mode 100644
index 9788f70..0000000
--- a/po/stamp-po
+++ /dev/null
@@ -1 +0,0 @@
-timestamp
diff --git a/po/sv.gmo b/po/sv.gmo
deleted file mode 100644
index 5ed20b8..0000000
--- a/po/sv.gmo
+++ /dev/null
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index a83524c..9ba7d45 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -10,8 +10,8 @@
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.18\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
"PO-Revision-Date: 2012-10-22 11:17+0200\n"
"Last-Translator: Mattias Ellert <mattias.ellert@fysast.uu.se>\n"
"Language-Team: Swedish <sv@li.org>\n"
@@ -31,36 +31,36 @@ msgid "Standard"
msgstr "Standard"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Geometri"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Förbättring"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -88,7 +88,7 @@ msgstr "Använd monokrom förhandsgranskning"
msgid "Bit depth"
msgstr "Bitdjup"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -129,7 +129,7 @@ msgstr "Höger"
msgid "Bottom-right y"
msgstr "Nedre"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -285,7 +285,7 @@ msgstr "Filnamn"
msgid "Halftone pattern size"
msgstr "Rastermönstersstorlek"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Rastermönster"
@@ -297,8 +297,8 @@ msgstr "Koppla X- och Y-upplösning"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Negativ"
@@ -968,7 +968,7 @@ msgstr "Standardvärden"
msgid "Set default values for enhancement controls."
msgstr "Använd standardvärden för förbättringsinställningar."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Kalibrering"
@@ -1106,7 +1106,7 @@ msgstr "Negativ"
msgid "Slides"
msgstr "Diapositiv"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1127,489 +1127,488 @@ msgstr "1/2 av normal hastighet"
msgid "1/3 normal speed"
msgstr "1/3 av normal hastighet"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "avrundad parameter"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "okänd"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "stopp i den automatiska dokumentmataren"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "automatiska dokumentmatarens lock är öppet"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "lampfel"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "inläsningshuvudspositioneringsfel"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "CPU-kontrollfel"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "RAM-kontrollfel"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "ROM-kontrollfel"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "hårdvarukontrollfel"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "genomlysningsenhetslampfel"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "genomlysningsenhetsinläsningshuvudspositioneringsfel"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "parameterlistlängdsfel"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "ogiltig kommandooperationskod"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "ogiltigt fält i CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "ostött LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "ogiltigt fält i parameterlista"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "kommandosekvensfel"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "för många fönster specificerade"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "media icke närvarande"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "ogiltigt bit-IDENTIFY-meddelande"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "inställning inte anslut"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "påslagningsåterställning / bussenhetsåterställning"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "parameter ändrad av en annan initiator"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "ingen ytterligare sense-information"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "återvalsfel"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "SCSI-paritetsfel"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr "intitator upptäckte mottaget felmeddelande"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "ogiltigt meddelande-fel"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "timeoutfel"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "genomlysningsenhetsskuggningsfel"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "lampa ej stabiliserad"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "filmbildläsare"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "flatbäddsbildläsare"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Filmtyp"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Väljer filmtyp, t.ex. negativ eller diapositiv"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Negativfilmtyp"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Väljer negativfilmtyp"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Hårdvaruupplösning"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Använd endast hårdvaruupplösningar"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Fokus"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Autofokus"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Aktivera/avaktivera autofokus"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Autofokusera endast en gång"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Autofokusera endast en gång mellan utmatningar"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Manuell fokuseringspunkt"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Ställ in det optiska systemets fokuseringspunkt för hand (förval: 128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Inläsningsmarginaler"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Extra färgjusteringar"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Spegla bild"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Spegla bilden vågrätt"
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Automatisk exponeringstid"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Aktivera/avaktivera automatisk exponeringstid"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Kalibrera nu"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Genomför kalibrering *nu*"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Självdiagnos"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Genomför bildläsarsjälvdiagnos"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Återställ bildläsare"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Återställ bildläsaren"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Mediahantering"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Mata ut film efter varje inläsning"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Mata ut filmen från enheten efter varje inläsning automatiskt"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Mata ut filmen före avslut"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr "Mata ut filmen från enheten automatiskt före programmet avslutas"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Mata ut filmen nu"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Mata ut filmen *nu*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Dokumentmatarinställningar"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Endast flatbädd"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Stäng av den automatiska dokumentmataren och använd endast flatbädden"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Genomlysningsenhet"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Slå på/av genomlysningsenheten (filmadapterenheten)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Negativ film"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Positiv eller negativ film"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Densitetsinställning"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Ställer in densitetsinställningsläge"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Genomlysningskvot"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Välj filmtyp"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Välj filmtyp"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Flatbädd"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "Automatisk dokumentmatare framsida"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "Automatisk dokumentmatare baksida"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Automatisk dokumentmatare dubbelsidigt"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, fuzzy, no-c-format
msgid "Card Front"
msgstr "Framsida"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, fuzzy, no-c-format
msgid "Card Back"
msgstr "Baksida"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, fuzzy, no-c-format
msgid "Card Duplex"
msgstr "Dubbelsidigt"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Röd"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Grön"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Blå"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Framhäv rött"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Framhäv grönt"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Framhäv blått"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1617,18 +1616,18 @@ msgstr "Framhäv blått"
msgid "None"
msgstr "Inget"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Procentsats för hoppa över blanka sidor"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, fuzzy, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr "Begär att drivrutinen hoppar över sidor med få mörka pixlar"
@@ -1645,13 +1644,13 @@ msgstr "Enkelsidigt"
msgid "Duplex"
msgstr "Dubbelsidigt"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Genomlysningsenhet"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1764,8 +1763,8 @@ msgstr "Bläckstråleskrivare"
msgid "CRT monitors"
msgstr "Bildskärmar (CRT)"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Standard"
@@ -1828,51 +1827,50 @@ msgstr "A4"
msgid "Max"
msgstr "Max"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Bildläsarläge"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Väljer raster."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Blindfärg"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Väljer blindfärg."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Väljer ljusstyrka."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Skärpa"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Färgkorrigering"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr "Ställer in färgkorrigeringstabellen för den valda utdataenheten."
@@ -1962,17 +1960,17 @@ msgstr "Lägger till till rött beroende på blånivån"
msgid "Controls blue level"
msgstr "Bestämmer blånivån"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Spegla bilden."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Snabb förhandsgranskning"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Automatisk ytuppdelning"
@@ -2002,49 +2000,49 @@ msgstr "Anger zoom-faktorn som bildläsaren kommer att använda"
msgid "Quick format"
msgstr "Snabbformatera"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Tillvalsutrustning"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Mata ut"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Mata ut bladet i dokumentmataren"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Mata ut automatiskt"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Mata ut dokument efter inläsning"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Dokumentmatarläge"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr ""
"Väljer läge för den automatiska dokumentmataren (enkelsidigt/"
"dubbelsidigt)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Fack"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Välj fack att läsa in från"
@@ -2085,7 +2083,7 @@ msgstr ""
"Efter att ha skickat inläsningskommandot, vänta tills knappen på läsaren "
"trycks in för att starta inläsningen."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Infraröd"
@@ -2115,494 +2113,494 @@ msgstr "Inbyggd CCT-profil"
msgid "User defined CCT profile"
msgstr "Användardefinierad CCT-profil"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "På"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Av"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Gitter"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Diffusion"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Vit"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Svart"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Fortsätt"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Avsluta"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10 mm"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15 mm"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20 mm"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "Vågrätt"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr "Vågrätt fetstil"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr "Vågrätt smal"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "Lodrätt"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr "Lodrätt fetstil"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "Uppifrån och ner"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "Nerifrån och upp"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Framsida"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Baksida"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr "Gammafunktionsexponent"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Ändrar intensitet hos mellantoner"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr ""
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, fuzzy, no-c-format
msgid "Reverse image format"
msgstr "Inverterad bild"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, fuzzy, no-c-format
msgid "Halftone type"
msgstr "Raster"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr ""
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr ""
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, fuzzy, no-c-format
msgid "Perform outline extraction"
msgstr "Utför kalibrering"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, fuzzy, no-c-format
msgid "Emphasis"
msgstr "Bildton"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, fuzzy, no-c-format
msgid "Separation"
msgstr "Mättnad"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, fuzzy, no-c-format
msgid "Enable automatic separation of image and text"
msgstr ""
"Möjliggör automatisk bestämning av tröskelvärde för "
"streckteckningsinläsningar."
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, fuzzy, no-c-format
msgid "Mirroring"
msgstr "Spegla bild"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, fuzzy, no-c-format
msgid "Reflect output image horizontally"
msgstr "Spegla bilden vågrätt."
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, fuzzy, no-c-format
msgid "White level follower"
msgstr "Vitnivå för blått"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, fuzzy, no-c-format
msgid "Control white level follower"
msgstr "Bestämmer rödnivån"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, fuzzy, no-c-format
msgid "BP filter"
msgstr "Färgfilter"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr ""
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Utjämning"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr ""
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, fuzzy, no-c-format
msgid "Gamma curve"
msgstr "Gammavärde"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Tröskelkurva"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, fuzzy, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr "Dynamisk tröskelkurva, från ljust till mörkt, vanligen 50-65"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, fuzzy, no-c-format
msgid "Threshold white"
msgstr "Tröskelvärde"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr ""
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, fuzzy, no-c-format
msgid "Noise removal"
msgstr "Brusreducering"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr ""
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr ""
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr ""
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr ""
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr ""
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr ""
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, fuzzy, no-c-format
msgid "Auto width detection"
msgstr "Ingen detektering"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, fuzzy, no-c-format
msgid "Auto length detection"
msgstr "Ingen detektering"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, fuzzy, no-c-format
msgid "Compression"
msgstr "jpeg-komprimmering"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr ""
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
msgstr ""
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr ""
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, fuzzy, no-c-format
msgid "Action following double feed error"
msgstr "Ignorera högra dubbelmatningssensorn"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr ""
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, fuzzy, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Aktivera/avaktivera dubbelmatningsdetekteing"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr ""
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, fuzzy, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Aktivera/avaktivera dubbelmatningsdetekteing"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr ""
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, fuzzy, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Aktivera/avaktivera dubbelmatningsdetekteing"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr ""
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, fuzzy, no-c-format
msgid "DF recovery mode"
msgstr "automatiska dokumentmatarens lock är öppet"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, fuzzy, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Begär att drivrutinen tar bort ramar från sidor auomatiskt"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr ""
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr ""
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, fuzzy, no-c-format
msgid "Advanced paper protection"
msgstr "Avancerade inställningar"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, fuzzy, no-c-format
msgid "Staple detection"
msgstr "Ingen detektering"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr ""
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, fuzzy, no-c-format
msgid "Dropout color"
msgstr "Blindfärg"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
"useful for colored paper or ink"
msgstr ""
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, fuzzy, no-c-format
msgid "Buffer mode"
msgstr "Dokumentmatarläge"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr ""
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr ""
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr ""
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2610,65 +2608,65 @@ msgid ""
"collection on remaining sides. May conflict with bgcolor option"
msgstr ""
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr ""
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, fuzzy, no-c-format
msgid "Off timer"
msgstr "Lampavstängningstid"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, 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."
msgstr ""
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, fuzzy, no-c-format
msgid "Duplex offset"
msgstr "Blå offset"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr ""
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Grön offset"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, fuzzy, no-c-format
msgid "Adjust green/red offset"
msgstr "Grön offset"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Blå offset"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, fuzzy, no-c-format
msgid "Adjust blue/red offset"
msgstr "Ställer in den blå kanalens offset"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, fuzzy, no-c-format
msgid "Low Memory"
msgstr "Slut på minne"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2677,364 +2675,364 @@ msgid ""
"only be used with custom front-end software."
msgstr ""
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, fuzzy, no-c-format
msgid "Duplex side"
msgstr "Dubbelsidig inläsning"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr ""
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, fuzzy, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr "Begär att drivrutinen linjerar upp sneda sidor digitalt"
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Mjukvaruupplinjering"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, fuzzy, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr "Begär att drivrutinen linjerar upp sneda sidor digitalt"
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Mjukvarufläckborttagningsdiameter"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, fuzzy, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
"Maximal diameter för ensamma prickar som tas bort från den inlästa bilden"
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr "Mjukvarubeskärning"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, fuzzy, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr "Begär att drivrutinen tar bort ramar från sidor auomatiskt"
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr ""
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, fuzzy, no-c-format
msgid "Endorser Options"
msgstr "Avancerade inställningar"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr ""
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr ""
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr ""
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr ""
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr ""
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr ""
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr ""
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr ""
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr ""
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr ""
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr ""
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, fuzzy, no-c-format
msgid "Endorser direction"
msgstr "Brusreducering"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr ""
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr ""
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr ""
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr ""
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr ""
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, fuzzy, no-c-format
msgid "A3 paper"
msgstr "Från papper"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr ""
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, fuzzy, no-c-format
msgid "B4 paper"
msgstr "Från papper"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, fuzzy, no-c-format
msgid "A4 paper"
msgstr "Från papper"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr ""
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, fuzzy, no-c-format
msgid "B5 paper"
msgstr "Från papper"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr ""
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr ""
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, fuzzy, no-c-format
msgid "OMR or double feed detected"
msgstr "Dubbelmatningsdetektering"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr ""
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, fuzzy, no-c-format
msgid "Scanner in power saving mode"
msgstr "Bildläsarens lock är öppet"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, fuzzy, no-c-format
msgid "Manual feed"
msgstr "Manuell matning"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, fuzzy, no-c-format
msgid "Manual feed selected"
msgstr "Manuell matning"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr ""
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr ""
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr ""
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr ""
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, fuzzy, no-c-format
msgid "Double feed"
msgstr "Dubbelmatningsdetektering"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, fuzzy, no-c-format
msgid "Double feed detected"
msgstr "Dubbelmatningsdetektering"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr ""
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, fuzzy, no-c-format
msgid "Hardware error code"
msgstr "hårdvarukontrollfel"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr ""
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr ""
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr ""
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, fuzzy, no-c-format
msgid "Imprinter ink level"
msgstr "Vitnivå"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, fuzzy, no-c-format
msgid "Density"
msgstr "Densitetsinställning"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, fuzzy, no-c-format
msgid "Density dial"
msgstr "Densitetsinställning"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, fuzzy, no-c-format
msgid "Duplex switch"
msgstr "Dubbelsidig inläsning"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr "Begär att drivrutinen tar bort ram från sidor automatiskt"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr "Begär att drivrutinen hoppar över sidor med få mörka pixlar"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr "Mjukvaruavrotera"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
"Begär att drivrutinen detekterar och korrigerar 90 graders bildrotation"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Övrigt"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr "Dynamisk tröskelkurva, från ljust till mörkt, vanligen 50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr "Avaktivera dynamisk streckteckning"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
@@ -3044,12 +3042,12 @@ msgstr ""
"streckteckningsinläsningar för att i stället använda hårdvarans "
"streckteckningsinläsningsläge."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Stäng av interpolering"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3059,46 +3057,46 @@ msgstr ""
"mindre än den vertikala upplösningen stänger detta av den horisontella "
"interpoleringen."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, fuzzy, no-c-format
msgid "Color filter"
msgstr "Färgfilter"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"När gråskala eller streckteckning används väljer denna inställning den "
"använda färgen."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, fuzzy, no-c-format
msgid "Calibration file"
msgstr "Kalibrering"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, fuzzy, no-c-format
msgid "Specify the calibration file to use"
msgstr "Definiera kalibreringsläge"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, fuzzy, no-c-format
msgid "Calibration cache expiration time"
msgstr "Kalibreringsdatacache"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, 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."
msgstr ""
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Lampavstängningstid"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3107,102 +3105,112 @@ msgstr ""
"Lampan kommer att stängas av efter den angivna tiden (i minuter). Värdet "
"0 betyder att lampan inte kommer att stängas av."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
msgstr "Stäng av lampan under inläsning"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Lampan kommer att stängas av under inläsningen."
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Filknapp"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Optisk teckenigenkännings-knapp"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Påslagningsknapp"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, fuzzy, no-c-format
msgid "Extra button"
msgstr "E-postknapp"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
msgstr "Behöver kalibrering"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Bildläsaren behöver kalibrering för nuvarande inställningar"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Knappar"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Kalibrera"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Påbörja kalibrering med specialark"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Rensa kalibrering"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Rensa kalibreringsdatacache"
+#: backend/genesys.cc:5769
+#, fuzzy, no-c-format
+msgid "Force calibration"
+msgstr "Grovkalibrering"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Genomlysningsadapter"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Grålägesfärg"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Väljer vilken inläsningsfärg som används i gråläge (förval: grönt)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Debuggningsinställningar"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Automatisk uppvärmning"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3211,12 +3219,12 @@ msgstr ""
"Värm upp tills lampans ljusstyrka är konstant i stället för att "
"insistera på 60 sekunders uppvärmningstid."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Fullständig inläsning"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3225,12 +3233,12 @@ msgstr ""
"Läs in hela inläsningsytan inklusive kalibreringsraden. Var försiktig. "
"Välj inte för stor höjd. Endast för test."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Grovkalibrering"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3241,12 +3249,12 @@ msgstr ""
"inställning inte är vald kan de analoga parametrarna ställas in för "
"hand. Denna inställning är förvald som standard. Endast för test."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Grovkalibrering endast för första inläsningen"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3257,12 +3265,12 @@ msgstr ""
"flesta bildläsare och kan spara tid. Välj inte denna inställning om "
"bildens ljusstyrka är olika för varje inläsning. Endast för test."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Bakspårningslinjer"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3275,12 +3283,12 @@ msgstr ""
"data. Låga värden ger snabbare inläsningar men ökar risken för att "
"utelämna linjer."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Gammavärde"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Ställer in gammavärdet för alla kanaler."
@@ -3296,7 +3304,7 @@ msgid "Scan Mode Group"
msgstr "Bildläsarlägesgrupp"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Diapositiv"
@@ -3502,160 +3510,235 @@ msgstr "Sätter på eller av lampan."
msgid "Calibrates for black and white level."
msgstr "Kalibrerar för svart- och vitnivå."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "Automatisk dokumentmatare"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "TMA-positiv"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "TMA-negativ"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Färg (48 bitar)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Utöka lampavstängningstid"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Utökar lampavstängningstiden (från 15 minuter till 1 timme)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Vänta på knapp"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Vänta på knapp innan inläsning"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, fuzzy, no-c-format
+msgid "Last button pressed"
+msgstr "Uppdatera knappläge"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr ""
+
+#: backend/hp5590.c:121
+#, fuzzy, no-c-format
+msgid "LCD counter"
+msgstr "Inläsningsräknare"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr ""
+
+#: backend/hp5590.c:124
+#, fuzzy, no-c-format
+msgid "Color LED indicator"
+msgstr "Färgstreckteckning"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr ""
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr ""
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr ""
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr ""
+
+#: backend/hp5590.c:134
+#, no-c-format
+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 ""
+
+#: backend/hp5590.c:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+
+#: backend/hp5590.c:138
+#, no-c-format
+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 ""
+
+#: backend/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Avancerade inställningar"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Grovt"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Fint"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Bayer"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Användardefinierat"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Automatiskt"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC-RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA-RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Oförändrat"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "NTSC-grå"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "XPA-grå"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Långsam"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Normal"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Snabb"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Extra snabb"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "2 pixlar"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "4 pixlar"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "8 pixlar"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Fotografi"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Filmremsa"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Villkorlig"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Experiment"
@@ -3837,8 +3920,8 @@ msgstr "Slå av lampan"
msgid "Shut off scanner lamp."
msgstr "Slå av bildläsarlampan."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Pappersstorlek"
@@ -3849,8 +3932,7 @@ msgstr "Pappersstorlek"
msgid "Automatic separation"
msgstr "Automatisk separering"
-#: 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:531
#, no-c-format
msgid "Landscape"
msgstr "Liggande"
@@ -3865,38 +3947,34 @@ msgstr "Inverterad bild"
msgid "Long paper mode"
msgstr "Läge för långa papper"
-#: 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:393
#, no-c-format
msgid "Length control mode"
msgstr "Längdkontrollsläge"
-#: 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:416
#, no-c-format
msgid "Manual feed mode"
msgstr "Manuell matning"
-#: 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:428
#, no-c-format
msgid "Manual feed timeout"
msgstr "Timeout för manuell matning"
-#: 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:441
#, no-c-format
msgid "Double feed detection"
msgstr "Dubbelmatningsdetektering"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Sätt på dubbelsidig inläsning"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296
-#: backend/kvs40xx_opt.c:517 backend/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Verklig storlek på papperet i den automatiska dokumentmataren"
@@ -4012,199 +4090,199 @@ msgstr "B6"
msgid "Legal"
msgstr "US-Legal"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr "Bayer 64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr "Bayer 16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr "Raster 32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr "Raster 64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr "diffusion"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr "normal"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
msgstr "ljus"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr "mörk"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
msgstr "Från bildläsare"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Från papper"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
msgstr "standard"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr "jämn"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr "ingen"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
msgstr "låg"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
msgstr "medel"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr "hög"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr "bildskärm"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr "linjär"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
msgstr "röd"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
msgstr "grön"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr "blå"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
msgstr "Väljer bildläsarkälla"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Dokumentmatarläge"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Ställer in dokumentmatarläge"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Aktivera/avaktivera läge för långt papper"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Aktivera/avaktivera läge för längdkontroll"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Ställer in manuellt matningsläge"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Ställer in timeout för manuell matning i sekunder"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Aktivera/avaktivera dubbelmatningsdetekteing"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr "anpassa till sida"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr "Anpassa till sida"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Bildläsaren krymper sidan för att rymmas på den inlästa sidan"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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 "Ställ in pappersläge: sant för liggande, falskt för stående"
-#: backend/kvs1025_opt.c:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Automatiskt tröskelvärde"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4213,96 +4291,96 @@ msgstr ""
"Ställer in ljusstyrka, kontrast, vitnivå, gamma, brusreduktion och "
"bildton automatiskt"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Brusreducering"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Minska bruset från isolerade punkter"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Bildton"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Ställer in bildton"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Gamma"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
msgstr "Lampfärg"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Ställer in lampfärg (blindfärg)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr "Invertera bild i svart-vitt eller rasterläge"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Spegla bilden (vänster/höger)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr "jpeg-komprimmering"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr "JPEG-bildkomprimmering med Q-parameter, '0' - ingen komprimmering"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr "Rotera bilden medurs"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr "Begär att drivrutinen roterar sidor med ett fixt värde"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr "Begär att drivrutinen linjerar upp sneda sidor digitalt"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
"Maximal diameter för ensamma prickar som tas bort från den inlästa bilden"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr "Automatisk beskärning i mjukvara"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr "Begär att drivrutinen tar bort ramar från sidor auomatiskt"
@@ -5027,17 +5105,17 @@ msgstr "3x3 användardefinierat"
msgid "2x2 custom"
msgstr "2x2 användardefinierat"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Snabbt gråskaleläge"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Läs in i snabbt gråskaleläge (lägre kvalitet)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5047,82 +5125,82 @@ msgstr ""
"(lågkvalitets-)läget. Detta kan vara en icke-färginläsning eller en "
"lågupplösningsinläsning."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lampavstängningstid (minuter)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Ställer in tiden (i minuter) efter vilken lampan stängs av."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Stäng av lampan"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Stänger av lampan omedelbart."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Röd ljusstyrka"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Bestämmer ljusstyrkan för den röda kanalen i den inlästa bilden."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Grön ljusstyrka"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Bestämmer ljusstyrkan för den gröna kanalen i den inlästa bilden."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Blå ljusstyrka"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Bestämmer ljusstyrkan för den blå kanalen i den inlästa bilden."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Kontrast röd kanal"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Bestämmer kontrasten för den röda kanalen i den inlästa bilden."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Kontrast grön kanal"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Bestämmer kontrasten för den gröna kanalen i den inlästa bilden."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Kontrast blå kanal"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Bestämmer kontrasten för den blå kanalen i den inlästa bilden."
@@ -5166,22 +5244,22 @@ msgstr ""
"Värm upp tills lampans ljusstyrka är konstant i stället för att "
"insistera på 40 sekunders uppvärmningstid."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
msgstr "Negativ färg"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
msgstr "Negativ gråskala"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr "48 bitars färg"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr "16 bitars gråskala"
diff --git a/po/uk.gmo b/po/uk.gmo
deleted file mode 100644
index b2d237b..0000000
--- a/po/uk.gmo
+++ /dev/null
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 6b4fe24..a083ddd 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,20 +1,20 @@
# Copyright (C) 2009
# This file is distributed under the same license as the sane-backends package.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2009, 2010, 2011, 2012, 2013, 2015, 2017.
+# Yuri Chornoivan <yurchor@ukr.net>, 2009, 2010, 2011, 2012, 2013, 2015, 2017, 2018, 2019.
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
-"Report-Msgid-Bugs-To: sane-devel@lists.alioth.debian.org\n"
-"POT-Creation-Date: 2017-05-22 11:18-0400\n"
-"PO-Revision-Date: 2017-04-28 19:32+0300\n"
+"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
+"POT-Creation-Date: 2019-07-23 12:14+0000\n"
+"PO-Revision-Date: 2019-06-26 18:14+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation@linux.org.ua>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 19.07.70\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"
@@ -29,36 +29,36 @@ msgid "Standard"
msgstr "Типово"
#: include/sane/saneopts.h:157 backend/artec_eplus48u.c:2884
-#: backend/epson.c:3298 backend/epson2.c:1291 backend/genesys.c:5618
-#: backend/gt68xx.c:703 backend/hp3500.c:1019 backend/hp-option.c:3297
-#: backend/kvs1025_opt.c:640 backend/kvs20xx_opt.c:285
+#: backend/epson.c:3298 backend/epson2.c:1290 backend/genesys.cc:5294
+#: backend/gt68xx.c:696 backend/hp3500.c:1019 backend/hp-option.c:3300
+#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
#: backend/kvs40xx_opt.c:506 backend/leo.c:823 backend/lexmark.c:199
#: backend/ma1509.c:551 backend/matsushita.c:1135 backend/microtek2.h:599
-#: backend/mustek.c:4361 backend/mustek_usb.c:305
-#: backend/mustek_usb2.c:465 backend/pixma_sane_options.c:160
-#: backend/plustek.c:808 backend/plustek_pp.c:747 backend/sceptre.c:702
-#: backend/snapscan-options.c:550 backend/teco1.c:1095
-#: backend/teco2.c:1914 backend/teco3.c:920 backend/test.c:647
-#: backend/u12.c:546 backend/umax.c:5176 backend/umax_pp.c:580
+#: backend/mustek.c:4373 backend/mustek_usb.c:301 backend/mustek_usb2.c:465
+#: backend/pixma_sane_options.c:160 backend/plustek.c:808
+#: backend/plustek_pp.c:747 backend/sceptre.c:702
+#: backend/snapscan-options.c:550 backend/teco1.c:1095 backend/teco2.c:1910
+#: backend/teco3.c:920 backend/test.c:647 backend/u12.c:546
+#: backend/umax.c:5176 backend/umax_pp.c:580
#, no-c-format
msgid "Geometry"
msgstr "Позиція і розміри"
#: include/sane/saneopts.h:158 backend/artec_eplus48u.c:2805
-#: backend/canon.c:1498 backend/genesys.c:5678 backend/gt68xx.c:672
-#: backend/hp-option.c:2953 backend/kvs1025_opt.c:704 backend/leo.c:871
+#: backend/canon.c:1493 backend/genesys.cc:5354 backend/gt68xx.c:665
+#: backend/hp-option.c:2956 backend/kvs1025_opt.c:703 backend/leo.c:871
#: backend/ma1509.c:599 backend/matsushita.c:1189 backend/microtek2.h:600
-#: backend/mustek.c:4409 backend/mustek_usb.c:353
-#: backend/mustek_usb2.c:431 backend/niash.c:754 backend/plustek.c:854
-#: backend/plustek_pp.c:793 backend/sceptre.c:750
-#: backend/snapscan-options.c:617 backend/stv680.c:1067
-#: backend/teco1.c:1143 backend/teco2.c:1962 backend/teco3.c:968
-#: backend/u12.c:592 backend/umax.c:5226 backend/umax_pp.c:629
+#: backend/mustek.c:4421 backend/mustek_usb.c:349 backend/mustek_usb2.c:431
+#: backend/niash.c:754 backend/plustek.c:854 backend/plustek_pp.c:793
+#: backend/sceptre.c:750 backend/snapscan-options.c:617
+#: backend/stv680.c:1067 backend/teco1.c:1143 backend/teco2.c:1958
+#: backend/teco3.c:968 backend/u12.c:592 backend/umax.c:5226
+#: backend/umax_pp.c:629
#, no-c-format
msgid "Enhancement"
msgstr "Покращення"
-#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1216
+#: include/sane/saneopts.h:159 backend/epson.c:3197 backend/epson2.c:1215
#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5565
@@ -86,7 +86,7 @@ msgstr "Примусовий чорно-білий перегляд"
msgid "Bit depth"
msgstr "Кількість бітів на колір"
-#: include/sane/saneopts.h:165 backend/canon.c:1145 backend/leo.c:781
+#: include/sane/saneopts.h:165 backend/canon.c:1140 backend/leo.c:781
#: backend/pixma_sane_options.c:47
#, no-c-format
msgid "Scan mode"
@@ -127,7 +127,7 @@ msgstr "Нижня права координата за X"
msgid "Bottom-right y"
msgstr "Нижня права координата за Y"
-#: include/sane/saneopts.h:173 backend/canon.c:1221
+#: include/sane/saneopts.h:173 backend/canon.c:1216
#: backend/pixma_sane_options.c:300
#, no-c-format
msgid "Scan resolution"
@@ -283,7 +283,7 @@ msgstr "Назва файла"
msgid "Halftone pattern size"
msgstr "Розмір шаблону напівтонів"
-#: include/sane/saneopts.h:204 backend/fujitsu.c:3186
+#: include/sane/saneopts.h:204 backend/fujitsu.c:3233
#, no-c-format
msgid "Halftone pattern"
msgstr "Шаблон напівтонів"
@@ -295,8 +295,8 @@ msgstr "Пов’язати роздільні здатності за X і Y"
#: include/sane/saneopts.h:206 backend/hp3900_sane.c:428
#: backend/hp3900_sane.c:1021 backend/hp3900_sane.c:1421
-#: backend/hp-option.c:3235 backend/mustek_usb2.c:121
-#: backend/plustek.c:236 backend/plustek_pp.c:205 backend/u12.c:157
+#: backend/hp-option.c:3238 backend/mustek_usb2.c:121 backend/plustek.c:236
+#: backend/plustek_pp.c:205 backend/u12.c:157
#, no-c-format
msgid "Negative"
msgstr "Негатив"
@@ -973,7 +973,7 @@ msgstr "Типові"
msgid "Set default values for enhancement controls."
msgstr "Встановити типові значення для регуляторів покращення."
-#: backend/artec_eplus48u.c:2932 backend/canon.c:1616
+#: backend/artec_eplus48u.c:2932 backend/canon.c:1611
#, no-c-format
msgid "Calibration"
msgstr "Калібрування"
@@ -1115,7 +1115,7 @@ msgstr "Негативи"
msgid "Slides"
msgstr "Слайди"
-#: backend/canon.c:186 backend/kvs1025_opt.c:181 backend/kvs40xx_opt.c:273
+#: backend/canon.c:186 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:178
#, no-c-format
msgid "Automatic"
@@ -1136,331 +1136,331 @@ msgstr "1/2 звичайної швидкості"
msgid "1/3 normal speed"
msgstr "1/3 звичайної швидкості"
-#: backend/canon.c:365
+#: backend/canon.c:360
#, no-c-format
msgid "rounded parameter"
msgstr "округлений параметр"
-#: backend/canon.c:368 backend/canon.c:384 backend/canon.c:419
-#: backend/canon.c:469 backend/canon.c:487 backend/canon.c:530
+#: backend/canon.c:363 backend/canon.c:379 backend/canon.c:414
+#: backend/canon.c:464 backend/canon.c:482 backend/canon.c:525
#, no-c-format
msgid "unknown"
msgstr "невідома"
-#: backend/canon.c:378
+#: backend/canon.c:373
#, no-c-format
msgid "ADF jam"
msgstr "Заїдання у протяжному механізмі"
-#: backend/canon.c:381
+#: backend/canon.c:376
#, no-c-format
msgid "ADF cover open"
msgstr "Відкрито кришку протяжного механізму"
-#: backend/canon.c:394
+#: backend/canon.c:389
#, no-c-format
msgid "lamp failure"
msgstr "Лампа не працює"
-#: backend/canon.c:397
+#: backend/canon.c:392
#, no-c-format
msgid "scan head positioning error"
msgstr "помилка позиціонування голівки сканування"
-#: backend/canon.c:400
+#: backend/canon.c:395
#, no-c-format
msgid "CPU check error"
msgstr "Помилка під час перевірки процесора"
-#: backend/canon.c:403
+#: backend/canon.c:398
#, no-c-format
msgid "RAM check error"
msgstr "Помилка під час перевірки пам’яті"
-#: backend/canon.c:406
+#: backend/canon.c:401
#, no-c-format
msgid "ROM check error"
msgstr "Помилка під час перевірки ROM"
-#: backend/canon.c:409
+#: backend/canon.c:404
#, no-c-format
msgid "hardware check error"
msgstr "Помилка під час перевірки обладнання"
-#: backend/canon.c:412
+#: backend/canon.c:407
#, no-c-format
msgid "transparency unit lamp failure"
msgstr "Не працює лампа модуля слайдів"
-#: backend/canon.c:415
+#: backend/canon.c:410
#, no-c-format
msgid "transparency unit scan head positioning failure"
msgstr "Помилка позиціонування голівки сканування модуля плівок"
-#: backend/canon.c:429
+#: backend/canon.c:424
#, no-c-format
msgid "parameter list length error"
msgstr "Помилка, пов’язана з довжиною списку параметрів"
-#: backend/canon.c:433
+#: backend/canon.c:428
#, no-c-format
msgid "invalid command operation code"
msgstr "Некоректний код команди дії"
-#: backend/canon.c:437
+#: backend/canon.c:432
#, no-c-format
msgid "invalid field in CDB"
msgstr "Некоректне поле у CDB"
-#: backend/canon.c:441
+#: backend/canon.c:436
#, no-c-format
msgid "unsupported LUN"
msgstr "Непідтримуване значення LUN"
-#: backend/canon.c:445
+#: backend/canon.c:440
#, no-c-format
msgid "invalid field in parameter list"
msgstr "Некоректне поле у списку параметрів"
-#: backend/canon.c:449
+#: backend/canon.c:444
#, no-c-format
msgid "command sequence error"
msgstr "Помилка під час виконання послідовності команд"
-#: backend/canon.c:453
+#: backend/canon.c:448
#, no-c-format
msgid "too many windows specified"
msgstr "Вказано забагато вікон"
-#: backend/canon.c:457
+#: backend/canon.c:452
#, no-c-format
msgid "medium not present"
msgstr "Відсутній носій"
-#: backend/canon.c:461
+#: backend/canon.c:456
#, no-c-format
msgid "invalid bit IDENTIFY message"
msgstr "Повідомлення про некоректний біт IDENTIFY"
-#: backend/canon.c:465
+#: backend/canon.c:460
#, no-c-format
msgid "option not connect"
msgstr "Додаткову функціональність не з’єднано"
-#: backend/canon.c:479
+#: backend/canon.c:474
#, no-c-format
msgid "power on reset / bus device reset"
msgstr "скидання під час вмикання / з’єднання пристрою"
-#: backend/canon.c:483
+#: backend/canon.c:478
#, no-c-format
msgid "parameter changed by another initiator"
msgstr "Параметр змінено іншим інструментом ініціалізації"
-#: backend/canon.c:497
+#: backend/canon.c:492
#, no-c-format
msgid "no additional sense information"
msgstr "відсутні додаткові дані"
-#: backend/canon.c:501
+#: backend/canon.c:496
#, no-c-format
msgid "reselect failure"
msgstr "Помилка повторного вибору"
-#: backend/canon.c:505
+#: backend/canon.c:500
#, no-c-format
msgid "SCSI parity error"
msgstr "Помилка парності SCSI"
-#: backend/canon.c:509
+#: backend/canon.c:504
#, no-c-format
msgid "initiator detected error message received"
msgstr ""
"Отримано повідомлення про помилку виявлення інструменту ініціалізації"
-#: backend/canon.c:514
+#: backend/canon.c:509
#, no-c-format
msgid "invalid message error"
msgstr "Некоректне повідомлення"
-#: backend/canon.c:518
+#: backend/canon.c:513
#, no-c-format
msgid "timeout error"
msgstr "Перевищення часу очікування"
-#: backend/canon.c:522
+#: backend/canon.c:517
#, no-c-format
msgid "transparency unit shading error"
msgstr "Помилка під час градації у модулі слайдів"
-#: backend/canon.c:526
+#: backend/canon.c:521
#, no-c-format
msgid "lamp not stabilized"
msgstr "Лампу не стабілізовано"
-#: backend/canon.c:852 backend/canon.c:867
+#: backend/canon.c:847 backend/canon.c:862
#, no-c-format
msgid "film scanner"
msgstr "плівковий сканер"
-#: backend/canon.c:882 backend/canon.c:897 backend/canon.c:912
-#: backend/canon.c:927 backend/hp3900_sane.c:1683 backend/plustek.c:1335
-#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1836
+#: backend/canon.c:877 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1683 backend/plustek.c:1335
+#: backend/plustek_pp.c:1014 backend/sceptre.c:593 backend/teco2.c:1832
#: backend/u12.c:851
#, no-c-format
msgid "flatbed scanner"
msgstr "планшетний сканер"
-#: backend/canon.c:1183 backend/epson.c:3386 backend/epson2.c:1365
+#: backend/canon.c:1178 backend/epson.c:3386 backend/epson2.c:1364
#, no-c-format
msgid "Film type"
msgstr "Тип плівки"
-#: backend/canon.c:1184
+#: backend/canon.c:1179
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Визначає тип плівки, тобто негатив чи слайд"
-#: backend/canon.c:1196
+#: backend/canon.c:1191
#, no-c-format
msgid "Negative film type"
msgstr "Тип плівки негатива"
-#: backend/canon.c:1197
+#: backend/canon.c:1192
#, no-c-format
msgid "Selects the negative film type"
msgstr "Оберіть тестове зображення"
-#: backend/canon.c:1236
+#: backend/canon.c:1231
#, no-c-format
msgid "Hardware resolution"
msgstr "Апаратна роздільна здатність"
-#: backend/canon.c:1237
+#: backend/canon.c:1232
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Використовувати лише апаратні значення"
-#: backend/canon.c:1318
+#: backend/canon.c:1313
#, no-c-format
msgid "Focus"
msgstr "Фокусування"
-#: backend/canon.c:1328
+#: backend/canon.c:1323
#, no-c-format
msgid "Auto focus"
msgstr "Автоматичне фокусування"
-#: backend/canon.c:1329
+#: backend/canon.c:1324
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Увімкнути/Вимкнути автоматичне фокусування"
-#: backend/canon.c:1336
+#: backend/canon.c:1331
#, no-c-format
msgid "Auto focus only once"
msgstr "Одноразове автофокусування"
-#: backend/canon.c:1337
+#: backend/canon.c:1332
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Виконувати автоматичне фокусування лише раз між виштовхуваннями"
-#: backend/canon.c:1345
+#: backend/canon.c:1340
#, no-c-format
msgid "Manual focus position"
msgstr "Визначення позиції фокуса вручну"
-#: backend/canon.c:1346
+#: backend/canon.c:1341
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Встановити позицію фокусування оптичної системи вручну (типове значення: "
"128)."
-#: backend/canon.c:1356
+#: backend/canon.c:1351
#, no-c-format
msgid "Scan margins"
msgstr "Поля області сканування"
-#: backend/canon.c:1403
+#: backend/canon.c:1398
#, no-c-format
msgid "Extra color adjustments"
msgstr "Додаткова корекція кольорів"
-#: backend/canon.c:1538 backend/epson.c:3205 backend/epson2.c:1255
+#: backend/canon.c:1533 backend/epson.c:3205 backend/epson2.c:1254
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
msgstr "Віддзеркалити зображення"
-#: backend/canon.c:1539
+#: backend/canon.c:1534
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Віддзеркалити зображення горизонтально."
-#: backend/canon.c:1608
+#: backend/canon.c:1603
#, no-c-format
msgid "Auto exposure"
msgstr "Автоекспозиція"
-#: backend/canon.c:1609
+#: backend/canon.c:1604
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Увімкнути/Вимкнути можливість автоекспонування"
-#: backend/canon.c:1625
+#: backend/canon.c:1620
#, no-c-format
msgid "Calibration now"
msgstr "Калібрування"
-#: backend/canon.c:1626
+#: backend/canon.c:1621
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Виконати калібрування негайно"
-#: backend/canon.c:1636
+#: backend/canon.c:1631
#, no-c-format
msgid "Self diagnosis"
msgstr "Самодіагностика"
-#: backend/canon.c:1637
+#: backend/canon.c:1632
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Виконати самодіагностику сканера"
-#: backend/canon.c:1648
+#: backend/canon.c:1643
#, no-c-format
msgid "Reset scanner"
msgstr "Скинути параметри сканера"
-#: backend/canon.c:1649
+#: backend/canon.c:1644
#, no-c-format
msgid "Reset the scanner"
msgstr "Скинути параметри сканера"
-#: backend/canon.c:1659
+#: backend/canon.c:1654
#, no-c-format
msgid "Medium handling"
msgstr "Обробка носіїв"
-#: backend/canon.c:1668
+#: backend/canon.c:1663
#, no-c-format
msgid "Eject film after each scan"
msgstr "Виштовхувати плівку після кожного сканування"
-#: backend/canon.c:1669
+#: backend/canon.c:1664
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
"Автоматично виштовхувати плівку з пристрою після кожного сканування"
-#: backend/canon.c:1680
+#: backend/canon.c:1675
#, no-c-format
msgid "Eject film before exit"
msgstr "Виштовхувати плівку перед завершенням роботи"
-#: backend/canon.c:1681
+#: backend/canon.c:1676
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
@@ -1468,162 +1468,161 @@ msgstr ""
"Автоматично виштовхувати плівку з пристрою перед завершенням роботи "
"програми"
-#: backend/canon.c:1690
+#: backend/canon.c:1685
#, no-c-format
msgid "Eject film now"
msgstr "Виштовхнути плівку"
-#: backend/canon.c:1691
+#: backend/canon.c:1686
#, no-c-format
msgid "Eject the film *now*"
msgstr "Виштовхнути плівку *негайно*"
-#: backend/canon.c:1700
+#: backend/canon.c:1695
#, no-c-format
msgid "Document feeder extras"
msgstr "Додаткові інструменти подачі"
-#: backend/canon.c:1707
+#: backend/canon.c:1702
#, no-c-format
msgid "Flatbed only"
msgstr "Лише планшетний"
-#: backend/canon.c:1708
+#: backend/canon.c:1703
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
"Вимкнути автоматичну подачу, використовувати лише планшетний механізм"
-#: backend/canon.c:1718 backend/canon.c:1728
+#: backend/canon.c:1713 backend/canon.c:1723
#, no-c-format
msgid "Transparency unit"
msgstr "Модуль для слайдів"
-#: backend/canon.c:1729
+#: backend/canon.c:1724
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Увімкнути/Вимкнути модуль для слайдів (FAU, film adapter unit)"
-#: backend/canon.c:1739
+#: backend/canon.c:1734
#, no-c-format
msgid "Negative film"
msgstr "Негатив"
-#: backend/canon.c:1740
+#: backend/canon.c:1735
#, no-c-format
msgid "Positive or negative film"
msgstr "Позитивною чи негативною є плівка"
-#: backend/canon.c:1749
+#: backend/canon.c:1744
#, no-c-format
msgid "Density control"
msgstr "Керування щільністю"
-#: backend/canon.c:1750
+#: backend/canon.c:1745
#, no-c-format
msgid "Set density control mode"
msgstr "Встановити режим керування щільністю"
-#: backend/canon.c:1761
+#: backend/canon.c:1756
#, no-c-format
msgid "Transparency ratio"
msgstr "Співвідношення прозорості"
-#: backend/canon.c:1775
+#: backend/canon.c:1770
#, no-c-format
msgid "Select film type"
msgstr "Оберіть тип плівки"
-#: backend/canon.c:1776
+#: backend/canon.c:1771
#, no-c-format
msgid "Select the film type"
msgstr "Визначає тип плівки"
-#: backend/canon_dr.c:408 backend/epjitsu.c:233 backend/epson.c:501
-#: backend/epson2.c:115 backend/fujitsu.c:672 backend/gt68xx.c:148
+#: backend/canon_dr.c:411 backend/epjitsu.c:233 backend/epson.c:501
+#: backend/epson2.c:115 backend/fujitsu.c:675 backend/gt68xx.c:148
#: backend/hp3900_sane.c:418 backend/hp3900_sane.c:427
-#: backend/hp3900_sane.c:1017 backend/hp5590.c:85 backend/ma1509.c:108
+#: backend/hp3900_sane.c:1017 backend/hp5590.c:92 backend/ma1509.c:108
#: backend/magicolor.c:181 backend/mustek.c:156 backend/mustek.c:160
-#: backend/mustek.c:164 backend/pixma.c:901
-#: backend/pixma_sane_options.c:92 backend/snapscan-options.c:86
-#: backend/test.c:192 backend/umax.c:181
+#: backend/mustek.c:164 backend/pixma.c:920 backend/pixma_sane_options.c:92
+#: backend/snapscan-options.c:86 backend/test.c:192 backend/umax.c:181
#, no-c-format
msgid "Flatbed"
msgstr "Планшет"
-#: backend/canon_dr.c:409 backend/epjitsu.c:234 backend/fujitsu.c:673
+#: backend/canon_dr.c:412 backend/epjitsu.c:234 backend/fujitsu.c:676
#: backend/kodak.c:140
#, no-c-format
msgid "ADF Front"
msgstr "Перед протяжного механізму"
-#: backend/canon_dr.c:410 backend/epjitsu.c:235 backend/fujitsu.c:674
+#: backend/canon_dr.c:413 backend/epjitsu.c:235 backend/fujitsu.c:677
#: backend/kodak.c:141
#, no-c-format
msgid "ADF Back"
msgstr "Зворот протяжного механізму"
-#: backend/canon_dr.c:411 backend/epjitsu.c:236 backend/fujitsu.c:675
-#: backend/hp5590.c:87 backend/kodak.c:142 backend/pixma.c:912
+#: backend/canon_dr.c:414 backend/epjitsu.c:236 backend/fujitsu.c:678
+#: backend/hp5590.c:94 backend/kodak.c:142 backend/pixma.c:931
#, no-c-format
msgid "ADF Duplex"
msgstr "Двобічна АПД"
-#: backend/canon_dr.c:412
+#: backend/canon_dr.c:415
#, no-c-format
msgid "Card Front"
msgstr "Картка (профіль)"
-#: backend/canon_dr.c:413
+#: backend/canon_dr.c:416
#, no-c-format
msgid "Card Back"
msgstr "Картка (зворот)"
-#: backend/canon_dr.c:414
+#: backend/canon_dr.c:417
#, no-c-format
msgid "Card Duplex"
msgstr "Картка (обидва боки)"
-#: backend/canon_dr.c:421 backend/epson.c:599 backend/epson.c:3096
-#: backend/epson2.c:201 backend/fujitsu.c:692 backend/genesys.c:89
-#: backend/genesys.c:96 backend/gt68xx_low.h:133 backend/hp-option.c:3093
+#: backend/canon_dr.c:424 backend/epson.c:599 backend/epson.c:3096
+#: backend/epson2.c:201 backend/fujitsu.c:695 backend/genesys.cc:89
+#: backend/genesys.cc:96 backend/gt68xx_low.h:136 backend/hp-option.c:3096
#, no-c-format
msgid "Red"
msgstr "Червоний"
-#: backend/canon_dr.c:422 backend/epson.c:600 backend/epson.c:3092
-#: backend/epson2.c:202 backend/fujitsu.c:693 backend/genesys.c:90
-#: backend/genesys.c:97 backend/gt68xx_low.h:134 backend/hp-option.c:3094
+#: backend/canon_dr.c:425 backend/epson.c:600 backend/epson.c:3092
+#: backend/epson2.c:202 backend/fujitsu.c:696 backend/genesys.cc:90
+#: backend/genesys.cc:97 backend/gt68xx_low.h:137 backend/hp-option.c:3097
#, no-c-format
msgid "Green"
msgstr "Зелений"
-#: backend/canon_dr.c:423 backend/epson.c:601 backend/epson.c:3100
-#: backend/epson2.c:203 backend/fujitsu.c:694 backend/genesys.c:91
-#: backend/genesys.c:98 backend/gt68xx_low.h:135 backend/hp-option.c:3095
+#: backend/canon_dr.c:426 backend/epson.c:601 backend/epson.c:3100
+#: backend/epson2.c:203 backend/fujitsu.c:697 backend/genesys.cc:91
+#: backend/genesys.cc:98 backend/gt68xx_low.h:138 backend/hp-option.c:3098
#, no-c-format
msgid "Blue"
msgstr "Синій"
-#: backend/canon_dr.c:424
+#: backend/canon_dr.c:427
#, no-c-format
msgid "Enhance Red"
msgstr "Покращити червоний"
-#: backend/canon_dr.c:425
+#: backend/canon_dr.c:428
#, no-c-format
msgid "Enhance Green"
msgstr "Покращити зелений"
-#: backend/canon_dr.c:426
+#: backend/canon_dr.c:429
#, no-c-format
msgid "Enhance Blue"
msgstr "Покращити синій"
-#: backend/canon_dr.c:428 backend/epson.c:556 backend/epson.c:564
+#: backend/canon_dr.c:431 backend/epson.c:556 backend/epson.c:564
#: backend/epson.c:576 backend/epson.c:598 backend/epson2.c:165
#: backend/epson2.c:173 backend/epson2.c:185 backend/epson2.c:200
-#: backend/epson2.c:214 backend/fujitsu.c:698 backend/genesys.c:99
+#: backend/epson2.c:214 backend/fujitsu.c:701 backend/genesys.cc:99
#: backend/leo.c:109 backend/matsushita.c:138 backend/matsushita.c:159
#: backend/matsushita.c:191 backend/matsushita.c:213
#: backend/snapscan-options.c:91
@@ -1631,18 +1630,18 @@ msgstr "Покращити синій"
msgid "None"
msgstr "Немає"
-#: backend/canon_dr.c:429 backend/fujitsu.c:699
+#: backend/canon_dr.c:432 backend/fujitsu.c:702
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2449 backend/fujitsu.c:4066 backend/genesys.c:5769
-#: backend/kvs1025_opt.c:911
+#: backend/canon_dr.c:2477 backend/fujitsu.c:4113 backend/genesys.cc:5445
+#: backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Порогове значення порожніх сторінок для програмного відкидання"
-#: backend/canon_dr.c:2450 backend/fujitsu.c:4067
+#: backend/canon_dr.c:2478 backend/fujitsu.c:4114
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
@@ -1661,13 +1660,13 @@ msgstr "Однобічна"
msgid "Duplex"
msgstr "Двобічна"
-#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:918
+#: backend/epson.c:502 backend/epson2.c:116 backend/pixma.c:937
#, no-c-format
msgid "Transparency Unit"
msgstr "Модуль для слайдів"
#: backend/epson.c:503 backend/epson2.c:118 backend/magicolor.c:182
-#: backend/mustek.c:160 backend/pixma.c:906 backend/test.c:192
+#: backend/mustek.c:160 backend/pixma.c:925 backend/test.c:192
#: backend/umax.c:183
#, no-c-format
msgid "Automatic Document Feeder"
@@ -1780,8 +1779,8 @@ msgstr "Струминні принтери"
msgid "CRT monitors"
msgstr "Монітори з ЕПТ"
-#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:682
-#: backend/hp-option.c:3226 backend/test.c:143
+#: backend/epson.c:656 backend/epson2.c:254 backend/fujitsu.c:685
+#: backend/hp-option.c:3229 backend/test.c:143
#, no-c-format
msgid "Default"
msgstr "Типовий"
@@ -1844,51 +1843,50 @@ msgstr "A4"
msgid "Max"
msgstr "Макс"
-#: backend/epson.c:2813 backend/epson2.c:977 backend/genesys.c:5535
-#: backend/gt68xx.c:458 backend/hp-option.c:2914 backend/kvs1025_opt.c:522
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320
-#: backend/ma1509.c:501 backend/matsushita.c:1084 backend/microtek2.h:598
-#: backend/mustek.c:4203 backend/mustek_usb.c:260
-#: backend/mustek_usb2.c:344 backend/niash.c:734 backend/plustek.c:721
-#: backend/plustek_pp.c:658 backend/sceptre.c:673
+#: backend/epson.c:2813 backend/epson2.c:976 backend/genesys.cc:5207
+#: backend/gt68xx.c:451 backend/hp-option.c:2917 backend/kvs1025_opt.c:521
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:501
+#: backend/matsushita.c:1084 backend/microtek2.h:598 backend/mustek.c:4215
+#: backend/mustek_usb.c:256 backend/mustek_usb2.c:344 backend/niash.c:734
+#: backend/plustek.c:721 backend/plustek_pp.c:658 backend/sceptre.c:673
#: backend/snapscan-options.c:354 backend/stv680.c:1030
-#: backend/teco2.c:1886 backend/test.c:306 backend/u12.c:473
+#: backend/teco2.c:1882 backend/test.c:306 backend/u12.c:473
#: backend/umax.c:5054
#, no-c-format
msgid "Scan Mode"
msgstr "Режим сканування"
-#: backend/epson.c:2845 backend/epson2.c:1012
+#: backend/epson.c:2845 backend/epson2.c:1011
#, no-c-format
msgid "Selects the halftone."
msgstr "Визначає півтон."
-#: backend/epson.c:2867 backend/epson2.c:1033
+#: backend/epson.c:2867 backend/epson2.c:1032
#, no-c-format
msgid "Dropout"
msgstr "Маска"
-#: backend/epson.c:2868 backend/epson2.c:1034
+#: backend/epson.c:2868 backend/epson2.c:1033
#, no-c-format
msgid "Selects the dropout."
msgstr "Визначає маску."
-#: backend/epson.c:2880 backend/epson2.c:1046
+#: backend/epson.c:2880 backend/epson2.c:1045
#, no-c-format
msgid "Selects the brightness."
msgstr "Визначає яскравість."
-#: backend/epson.c:2895 backend/epson2.c:1059
+#: backend/epson.c:2895 backend/epson2.c:1058
#, no-c-format
msgid "Sharpness"
msgstr "Різкість"
-#: backend/epson.c:3031 backend/epson2.c:1175 backend/epson2.c:1222
+#: backend/epson.c:3031 backend/epson2.c:1174 backend/epson2.c:1221
#, no-c-format
msgid "Color correction"
msgstr "Кольорова компенсація"
-#: backend/epson.c:3034 backend/epson2.c:1177
+#: backend/epson.c:3034 backend/epson2.c:1176
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
@@ -1980,17 +1978,17 @@ msgstr "Додаток до червоного на основі рівня си
msgid "Controls blue level"
msgstr "Визначає рівень синього"
-#: backend/epson.c:3206 backend/epson2.c:1256
+#: backend/epson.c:3206 backend/epson2.c:1255
#, no-c-format
msgid "Mirror the image."
msgstr "Віддзеркалити зображення."
-#: backend/epson.c:3232 backend/mustek.c:4332
+#: backend/epson.c:3232 backend/mustek.c:4344
#, no-c-format
msgid "Fast preview"
msgstr "Швидкий перегляд"
-#: backend/epson.c:3245 backend/epson2.c:1266
+#: backend/epson.c:3245 backend/epson2.c:1265
#, no-c-format
msgid "Auto area segmentation"
msgstr "Автоматичний поділ на області"
@@ -2020,47 +2018,47 @@ msgstr "Визначає масштаб, який буде використан
msgid "Quick format"
msgstr "Швидке форматування"
-#: backend/epson.c:3360 backend/epson2.c:1341
+#: backend/epson.c:3360 backend/epson2.c:1340
#, no-c-format
msgid "Optional equipment"
msgstr "Додаткове устаткування"
-#: backend/epson.c:3431 backend/epson2.c:1394
+#: backend/epson.c:3431 backend/epson2.c:1393
#, no-c-format
msgid "Eject"
msgstr "Виштовхнути"
-#: backend/epson.c:3432 backend/epson2.c:1395
+#: backend/epson.c:3432 backend/epson2.c:1394
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Виштовхнути аркуш з протяжного пристрою"
-#: backend/epson.c:3444 backend/epson2.c:1405
+#: backend/epson.c:3444 backend/epson2.c:1404
#, no-c-format
msgid "Auto eject"
msgstr "Автовиштовхування"
-#: backend/epson.c:3445 backend/epson2.c:1407
+#: backend/epson.c:3445 backend/epson2.c:1406
#, no-c-format
msgid "Eject document after scanning"
msgstr "Виштовхнути документ після сканування"
-#: backend/epson.c:3457 backend/epson2.c:1417 backend/magicolor.c:2419
+#: backend/epson.c:3457 backend/epson2.c:1416 backend/magicolor.c:2420
#, no-c-format
msgid "ADF Mode"
msgstr "Режим протяжного пристрою"
-#: backend/epson.c:3459 backend/epson2.c:1419 backend/magicolor.c:2421
+#: backend/epson.c:3459 backend/epson2.c:1418 backend/magicolor.c:2422
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
msgstr "Визначає режим протяжного пристрою (однобічний/двобічний)"
-#: backend/epson.c:3473 backend/epson2.c:1431
+#: backend/epson.c:3473 backend/epson2.c:1430
#, no-c-format
msgid "Bay"
msgstr "Секція"
-#: backend/epson.c:3474 backend/epson2.c:1432
+#: backend/epson.c:3474 backend/epson2.c:1431
#, no-c-format
msgid "Select bay to scan"
msgstr "Визначає секцію, яку буде скановано"
@@ -2102,7 +2100,7 @@ msgstr ""
"Після надсилання команди сканування не розпочинати сканування до "
"натискання кнопки на сканері."
-#: backend/epson2.c:102 backend/pixma.c:390
+#: backend/epson2.c:102 backend/pixma.c:409
#, no-c-format
msgid "Infrared"
msgstr "Інфрачервоне"
@@ -2132,243 +2130,243 @@ msgstr "Вбудований профіль CCT"
msgid "User defined CCT profile"
msgstr "Визначений користувачем профіль CCT"
-#: backend/fujitsu.c:683 backend/hp-option.c:3327 backend/hp-option.c:3340
+#: backend/fujitsu.c:686 backend/hp-option.c:3330 backend/hp-option.c:3343
#, no-c-format
msgid "On"
msgstr "Увімкнути"
-#: backend/fujitsu.c:684 backend/hp-option.c:3159 backend/hp-option.c:3326
-#: backend/hp-option.c:3339
+#: backend/fujitsu.c:687 backend/hp-option.c:3162 backend/hp-option.c:3329
+#: backend/hp-option.c:3342
#, no-c-format
msgid "Off"
msgstr "Вимкнути"
-#: backend/fujitsu.c:686
+#: backend/fujitsu.c:689
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:687
+#: backend/fujitsu.c:690
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:689 backend/teco1.c:1152 backend/teco1.c:1153
-#: backend/teco2.c:1971 backend/teco2.c:1972 backend/teco3.c:977
+#: backend/fujitsu.c:692 backend/teco1.c:1152 backend/teco1.c:1153
+#: backend/teco2.c:1967 backend/teco2.c:1968 backend/teco3.c:977
#: backend/teco3.c:978
#, no-c-format
msgid "Dither"
msgstr "Дизеринг"
-#: backend/fujitsu.c:690
+#: backend/fujitsu.c:693
#, no-c-format
msgid "Diffusion"
msgstr "Дифузія"
-#: backend/fujitsu.c:695
+#: backend/fujitsu.c:698
#, no-c-format
msgid "White"
msgstr "Білий"
-#: backend/fujitsu.c:696
+#: backend/fujitsu.c:699
#, no-c-format
msgid "Black"
msgstr "Чорний"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:704
#, no-c-format
msgid "Continue"
msgstr "Продовжити"
-#: backend/fujitsu.c:702
+#: backend/fujitsu.c:705
#, no-c-format
msgid "Stop"
msgstr "Зупинити"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:707
#, no-c-format
msgid "10mm"
msgstr "10мм"
-#: backend/fujitsu.c:705
+#: backend/fujitsu.c:708
#, no-c-format
msgid "15mm"
msgstr "15мм"
-#: backend/fujitsu.c:706
+#: backend/fujitsu.c:709
#, no-c-format
msgid "20mm"
msgstr "20мм"
-#: backend/fujitsu.c:708 backend/hp-option.c:3045
+#: backend/fujitsu.c:711 backend/hp-option.c:3048
#, no-c-format
msgid "Horizontal"
msgstr "По горизонталі"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:712
#, no-c-format
msgid "Horizontal bold"
msgstr "Жирний по горизонталі"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:713
#, no-c-format
msgid "Horizontal narrow"
msgstr "Вузький по горизонталі"
-#: backend/fujitsu.c:711 backend/hp-option.c:3044
+#: backend/fujitsu.c:714 backend/hp-option.c:3047
#, no-c-format
msgid "Vertical"
msgstr "По вертикалі"
-#: backend/fujitsu.c:712
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Vertical bold"
msgstr "Жирний по вертикалі"
-#: backend/fujitsu.c:714
+#: backend/fujitsu.c:717
#, no-c-format
msgid "Top to bottom"
msgstr "Згори вниз"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:718
#, no-c-format
msgid "Bottom to top"
msgstr "Знизу догори"
-#: backend/fujitsu.c:717
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Front"
msgstr "Перед"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Back"
msgstr "Зворот"
-#: backend/fujitsu.c:3097 backend/pixma_sane_options.c:145
+#: backend/fujitsu.c:3144 backend/pixma_sane_options.c:145
#, no-c-format
msgid "Gamma function exponent"
msgstr "Показник функції гами"
-#: backend/fujitsu.c:3098 backend/pixma_sane_options.c:146
+#: backend/fujitsu.c:3145 backend/pixma_sane_options.c:146
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Змінює інтенсивність напівтонів"
-#: backend/fujitsu.c:3147
+#: backend/fujitsu.c:3194
#, no-c-format
msgid "RIF"
msgstr "RIF"
-#: backend/fujitsu.c:3148
+#: backend/fujitsu.c:3195
#, no-c-format
msgid "Reverse image format"
msgstr "Інверсивний формат зображення"
-#: backend/fujitsu.c:3165
+#: backend/fujitsu.c:3212
#, no-c-format
msgid "Halftone type"
msgstr "Тип півтонів"
-#: backend/fujitsu.c:3166
+#: backend/fujitsu.c:3213
#, no-c-format
msgid "Control type of halftone filter"
msgstr "Керування типом фільтра півтонів"
-#: backend/fujitsu.c:3187
+#: backend/fujitsu.c:3234
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr "Керування взірцем фільтра півтонів"
-#: backend/fujitsu.c:3209
+#: backend/fujitsu.c:3256
#, no-c-format
msgid "Outline"
msgstr "Контур"
-#: backend/fujitsu.c:3210
+#: backend/fujitsu.c:3257
#, no-c-format
msgid "Perform outline extraction"
msgstr "Виконати видобування контуру"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3268
#, no-c-format
msgid "Emphasis"
msgstr "Виокремлення"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3269
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
"Негатив для згладжування або позитив для збільшення різкості зображення"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3287
#, no-c-format
msgid "Separation"
msgstr "Розділення"
-#: backend/fujitsu.c:3241
+#: backend/fujitsu.c:3288
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Увімкнути автоматичне відокремлення зображень і тексту"
-#: backend/fujitsu.c:3252
+#: backend/fujitsu.c:3299
#, no-c-format
msgid "Mirroring"
msgstr "Віддзеркалення"
-#: backend/fujitsu.c:3253
+#: backend/fujitsu.c:3300
#, no-c-format
msgid "Reflect output image horizontally"
msgstr "Віддзеркалити отримане зображення по горизонталі"
-#: backend/fujitsu.c:3270
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "White level follower"
msgstr "Відповідник рівня білого"
-#: backend/fujitsu.c:3271
+#: backend/fujitsu.c:3318
#, no-c-format
msgid "Control white level follower"
msgstr "Керує відповідником рівня білого"
-#: backend/fujitsu.c:3289
+#: backend/fujitsu.c:3336
#, no-c-format
msgid "BP filter"
msgstr "Фільтр СП"
-#: backend/fujitsu.c:3290
+#: backend/fujitsu.c:3337
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr "Поліпшує якість тексту, написаного кульковою ручкою"
-#: backend/fujitsu.c:3306 backend/hp-option.h:73
+#: backend/fujitsu.c:3353 backend/hp-option.h:73
#, no-c-format
msgid "Smoothing"
msgstr "Згладжування"
-#: backend/fujitsu.c:3307
+#: backend/fujitsu.c:3354
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr "Увімкнути згладжування для поліпшення ОРТ"
-#: backend/fujitsu.c:3323
+#: backend/fujitsu.c:3370
#, no-c-format
msgid "Gamma curve"
msgstr "Крива гами"
-#: backend/fujitsu.c:3324
+#: backend/fujitsu.c:3371
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
"Крива гами, від світлого до темного, але верхні дві можуть не працювати"
-#: backend/fujitsu.c:3346 backend/genesys.c:5832
+#: backend/fujitsu.c:3393 backend/genesys.cc:5505
#: backend/pixma_sane_options.c:335
#, no-c-format
msgid "Threshold curve"
msgstr "Порогова крива"
-#: backend/fujitsu.c:3347
+#: backend/fujitsu.c:3394
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
@@ -2376,111 +2374,111 @@ msgstr ""
"Порогова крива, від світлого до темного, але верхні дві не можуть бути "
"лінійними"
-#: backend/fujitsu.c:3369
+#: backend/fujitsu.c:3416
#, no-c-format
msgid "Threshold white"
msgstr "Білий поріг"
-#: backend/fujitsu.c:3370
+#: backend/fujitsu.c:3417
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr "Встановити для порогових пікселів білий колір, а не чорний"
-#: backend/fujitsu.c:3386 backend/fujitsu.c:3387
+#: backend/fujitsu.c:3433 backend/fujitsu.c:3434
#, no-c-format
msgid "Noise removal"
msgstr "Вилучення шуму"
-#: backend/fujitsu.c:3403
+#: backend/fujitsu.c:3450
#, no-c-format
msgid "Matrix 5x5"
msgstr "Матриця 5x5"
-#: backend/fujitsu.c:3404
+#: backend/fujitsu.c:3451
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 5 пікселів"
-#: backend/fujitsu.c:3420
+#: backend/fujitsu.c:3467
#, no-c-format
msgid "Matrix 4x4"
msgstr "Матриця 4x4"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3468
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 4 пікселів"
-#: backend/fujitsu.c:3437
+#: backend/fujitsu.c:3484
#, no-c-format
msgid "Matrix 3x3"
msgstr "Матриця 3x3"
-#: backend/fujitsu.c:3438
+#: backend/fujitsu.c:3485
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 3 пікселів"
-#: backend/fujitsu.c:3454
+#: backend/fujitsu.c:3501
#, no-c-format
msgid "Matrix 2x2"
msgstr "Матриця 2x2"
-#: backend/fujitsu.c:3455
+#: backend/fujitsu.c:3502
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 2 пікселів"
-#: backend/fujitsu.c:3474
+#: backend/fujitsu.c:3521
#, no-c-format
msgid "Variance"
msgstr "Дисперсія"
-#: backend/fujitsu.c:3475
+#: backend/fujitsu.c:3522
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr "Встановити величину дисперсії SDTC (чутливість), 0 відповідає 127"
-#: backend/fujitsu.c:3508
+#: backend/fujitsu.c:3555
#, no-c-format
msgid "Auto width detection"
msgstr "Автовиявлення ширини"
-#: backend/fujitsu.c:3509
+#: backend/fujitsu.c:3556
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr "Сканер визначає краї паперу. Може уповільнити сканування."
-#: backend/fujitsu.c:3526
+#: backend/fujitsu.c:3573
#, no-c-format
msgid "Auto length detection"
msgstr "Автовиявлення довжини"
-#: backend/fujitsu.c:3527
+#: backend/fujitsu.c:3574
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
"Сканер виявляє нижній край паперу. Може призвести до помилкової роботи "
"деяких програмних оболонок."
-#: backend/fujitsu.c:3553
+#: backend/fujitsu.c:3600
#, no-c-format
msgid "Compression"
msgstr "Стиснення"
-#: backend/fujitsu.c:3554
+#: backend/fujitsu.c:3601
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
"Увімкнути стискання даних. Може призвести до аварійного завершення "
"роботи програмних оболонок."
-#: backend/fujitsu.c:3574
+#: backend/fujitsu.c:3621
#, no-c-format
msgid "Compression argument"
msgstr "Аргумент стискання"
-#: backend/fujitsu.c:3575
+#: backend/fujitsu.c:3622
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
@@ -2489,107 +2487,107 @@ msgstr ""
"Рівень стискання JPEG. 1 — малий файл, 7 — великий файл. 0 (типовий) — "
"те саме, що і 4."
-#: backend/fujitsu.c:3605
+#: backend/fujitsu.c:3652
#, no-c-format
msgid "DF action"
msgstr "Дія ПП"
-#: backend/fujitsu.c:3606
+#: backend/fujitsu.c:3653
#, no-c-format
msgid "Action following double feed error"
msgstr "Дія, яку буде виконано у відповідь на помилку подвійного подавання"
-#: backend/fujitsu.c:3622
+#: backend/fujitsu.c:3669
#, no-c-format
msgid "DF skew"
msgstr "ПП для перекошування"
-#: backend/fujitsu.c:3623
+#: backend/fujitsu.c:3670
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Увімкнути помилку подвійного подавання через перекошування"
-#: backend/fujitsu.c:3641
+#: backend/fujitsu.c:3688
#, no-c-format
msgid "DF thickness"
msgstr "ПП для товщини"
-#: backend/fujitsu.c:3642
+#: backend/fujitsu.c:3689
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Увімкнути помилку подвійного подавання через товщину паперу"
-#: backend/fujitsu.c:3660
+#: backend/fujitsu.c:3707
#, no-c-format
msgid "DF length"
msgstr "ПП для довжини"
-#: backend/fujitsu.c:3661
+#: backend/fujitsu.c:3708
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Увімкнути помилку подвійного подавання через довжину паперу"
-#: backend/fujitsu.c:3684
+#: backend/fujitsu.c:3731
#, no-c-format
msgid "DF length difference"
msgstr "Різниця довжини для ПП"
-#: backend/fujitsu.c:3685
+#: backend/fujitsu.c:3732
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
"Різниця у довжинах аркушів паперу, яка призводитиме до помилки "
"подвійного подавання"
-#: backend/fujitsu.c:3708
+#: backend/fujitsu.c:3755
#, no-c-format
msgid "DF recovery mode"
msgstr "Режим відновлення для ПП"
-#: backend/fujitsu.c:3709
+#: backend/fujitsu.c:3756
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Вимагати від сканера зворотного подавання, якщо папір зам’ято"
-#: backend/fujitsu.c:3728
+#: backend/fujitsu.c:3775
#, no-c-format
msgid "Paper protection"
msgstr "Захист паперу"
-#: backend/fujitsu.c:3729
+#: backend/fujitsu.c:3776
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr "Вимагати від сканера передбачати зам’яття у протяжному пристрої"
-#: backend/fujitsu.c:3748
+#: backend/fujitsu.c:3795
#, no-c-format
msgid "Advanced paper protection"
msgstr "Додатковий захист паперу"
-#: backend/fujitsu.c:3749
+#: backend/fujitsu.c:3796
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
"Вимагати від сканера передбачати зам’яття у протяжному пристрої за "
"допомогою поліпшених датчиків"
-#: backend/fujitsu.c:3768
+#: backend/fujitsu.c:3815
#, no-c-format
msgid "Staple detection"
msgstr "Виявлення скоб"
-#: backend/fujitsu.c:3769
+#: backend/fujitsu.c:3816
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
"Вимагати від сканера виявляти зам’яття у протяжному пристрої через скоби"
-#: backend/fujitsu.c:3788
+#: backend/fujitsu.c:3835
#, no-c-format
msgid "Background color"
msgstr "Колір тла"
-#: backend/fujitsu.c:3789
+#: backend/fujitsu.c:3836
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
@@ -2597,12 +2595,12 @@ msgstr ""
"Встановити колір для тла сканованих зображень. Може конфліктувати із "
"параметром полів."
-#: backend/fujitsu.c:3809
+#: backend/fujitsu.c:3856
#, no-c-format
msgid "Dropout color"
msgstr "Колір для викидання"
-#: backend/fujitsu.c:3810
+#: backend/fujitsu.c:3857
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
@@ -2612,34 +2610,34 @@ msgstr ""
"відтінках сірого або чорно-білого сканування, корисно для кольорового "
"паперу або чорнильних записів"
-#: backend/fujitsu.c:3833
+#: backend/fujitsu.c:3880
#, no-c-format
msgid "Buffer mode"
msgstr "Режим буферизації"
-#: backend/fujitsu.c:3834
+#: backend/fujitsu.c:3881
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
"Наказати сканеру швидко читати сторінки з протяжного пристрою до "
"внутрішньої пам’яті"
-#: backend/fujitsu.c:3853
+#: backend/fujitsu.c:3900
#, no-c-format
msgid "Prepick"
msgstr "Попереднє захоплення"
-#: backend/fujitsu.c:3854
+#: backend/fujitsu.c:3901
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr "Наказати сканеру захопити наступну сторінку із протяжного пристрою"
-#: backend/fujitsu.c:3873
+#: backend/fujitsu.c:3920
#, no-c-format
msgid "Overscan"
msgstr "Поля"
-#: backend/fujitsu.c:3874
+#: backend/fujitsu.c:3921
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2652,12 +2650,12 @@ msgstr ""
"також дозволити збирання решти даних з бічних полів. Може конфліктувати "
"з параметром кольору тла."
-#: backend/fujitsu.c:3892
+#: backend/fujitsu.c:3939
#, no-c-format
msgid "Sleep timer"
msgstr "Таймер присипляння"
-#: backend/fujitsu.c:3893
+#: backend/fujitsu.c:3940
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
@@ -2665,12 +2663,12 @@ msgstr ""
"Час у хвилинах, по завершенню якого внутрішнє живлення буде переведено у "
"режим сну"
-#: backend/fujitsu.c:3911
+#: backend/fujitsu.c:3958
#, no-c-format
msgid "Off timer"
msgstr "Таймер вимикання"
-#: backend/fujitsu.c:3912
+#: backend/fujitsu.c:3959
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches the scanner "
@@ -2680,42 +2678,42 @@ msgstr ""
"Буде округлено до найближчого кратного до 15 хвилин. Нульове значення "
"означає, що живлення не вимикатиметься."
-#: backend/fujitsu.c:3930
+#: backend/fujitsu.c:3977
#, no-c-format
msgid "Duplex offset"
msgstr "Зміщення двобічного"
-#: backend/fujitsu.c:3931
+#: backend/fujitsu.c:3978
#, no-c-format
msgid "Adjust front/back offset"
msgstr "Коригування зміщення між переднім і зворотним боком"
-#: backend/fujitsu.c:3948 backend/plustek.c:1025 backend/umax_pp.c:804
+#: backend/fujitsu.c:3995 backend/plustek.c:1025 backend/umax_pp.c:804
#, no-c-format
msgid "Green offset"
msgstr "Зміщення зеленого"
-#: backend/fujitsu.c:3949
+#: backend/fujitsu.c:3996
#, no-c-format
msgid "Adjust green/red offset"
msgstr "Коригування зміщення між зеленим і червоним каналами"
-#: backend/fujitsu.c:3966 backend/plustek.c:1041 backend/umax_pp.c:816
+#: backend/fujitsu.c:4013 backend/plustek.c:1041 backend/umax_pp.c:816
#, no-c-format
msgid "Blue offset"
msgstr "Зміщення синього"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:4014
#, no-c-format
msgid "Adjust blue/red offset"
msgstr "Коригування зміщення між синім і червоним каналами"
-#: backend/fujitsu.c:3980
+#: backend/fujitsu.c:4027
#, no-c-format
msgid "Low Memory"
msgstr "Обмеження пам’яті"
-#: backend/fujitsu.c:3981
+#: backend/fujitsu.c:4028
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2729,12 +2727,12 @@ msgstr ""
"«side». Цим параметром слід користуватися лише для нетипового "
"зовнішнього інтерфейсу програмного забезпечення."
-#: backend/fujitsu.c:3996
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Duplex side"
msgstr "Бік для двобічного"
-#: backend/fujitsu.c:3997
+#: backend/fujitsu.c:4044
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
@@ -2743,58 +2741,58 @@ msgstr ""
"Визначає, який бік (0=передній, 1=зворотний) двобічного сканованого "
"зображення буде повернуто під час наступного виклику sane_read."
-#: backend/fujitsu.c:4008
+#: backend/fujitsu.c:4055
#, no-c-format
msgid "Hardware deskew and crop"
msgstr "Апаратне виправлення нахилу і обрізання"
-#: backend/fujitsu.c:4009
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
"Вимагати від сканера обертання та обрізання сторінок у цифровому режимі."
-#: backend/fujitsu.c:4020 backend/kvs1025_opt.c:872
+#: backend/fujitsu.c:4067 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Програмне усування обертання"
-#: backend/fujitsu.c:4021
+#: backend/fujitsu.c:4068
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
"Вимагати від драйвера усування обертання сторінок у автоматичному режимі."
-#: backend/fujitsu.c:4033 backend/kvs1025_opt.c:881
+#: backend/fujitsu.c:4080 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Діаметр плям для програмного усування"
-#: backend/fujitsu.c:4034
+#: backend/fujitsu.c:4081
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
"Мінімальний діаметр окремих плям, які слід усунути зі сканованого "
"зображення."
-#: backend/fujitsu.c:4053 backend/genesys.c:5760
+#: backend/fujitsu.c:4100 backend/genesys.cc:5436
#, no-c-format
msgid "Software crop"
msgstr "Програмне обрізання"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4101
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
"Вимагати від драйвера вилучення границі зі сторінок у автоматичному "
"режимі."
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Halt on Cancel"
msgstr "Перервати при скасуванні"
-#: backend/fujitsu.c:4084
+#: backend/fujitsu.c:4131
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
@@ -2802,106 +2800,106 @@ msgstr ""
"Наказати драйверу перервати подавання паперу, замість його "
"виштовхування, якщо сканування скасовано."
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4142
#, no-c-format
msgid "Endorser Options"
msgstr "Параметри наддруку"
-#: backend/fujitsu.c:4096
+#: backend/fujitsu.c:4143
#, no-c-format
msgid "Controls for endorser unit"
msgstr "Керування модулем наддруку"
-#: backend/fujitsu.c:4107
+#: backend/fujitsu.c:4154
#, no-c-format
msgid "Endorser"
msgstr "Наддрук"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4155
#, no-c-format
msgid "Enable endorser unit"
msgstr "Увімкнути модуль наддруку"
-#: backend/fujitsu.c:4123
+#: backend/fujitsu.c:4170
#, no-c-format
msgid "Endorser bits"
msgstr "Біти наддруку"
-#: backend/fujitsu.c:4124
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr "Визначає максимальне значення лічильника наддруку."
-#: backend/fujitsu.c:4149
+#: backend/fujitsu.c:4196
#, no-c-format
msgid "Endorser value"
msgstr "Значення наддруку"
-#: backend/fujitsu.c:4150
+#: backend/fujitsu.c:4197
#, no-c-format
msgid "Initial endorser counter value."
msgstr "Початкове значення лічильника наддруку."
-#: backend/fujitsu.c:4173
+#: backend/fujitsu.c:4220
#, no-c-format
msgid "Endorser step"
msgstr "Крок наддруку"
-#: backend/fujitsu.c:4174
+#: backend/fujitsu.c:4221
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
"Змінювати значення лічильника наддруку на вказане число для кожної "
"наступної сторінки."
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4244
#, no-c-format
msgid "Endorser Y"
msgstr "Y наддруку"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4245
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr "Зсув мітки наддруку від верхнього краю паперу."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4270
#, no-c-format
msgid "Endorser font"
msgstr "Шрифт наддруку"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser printing font."
msgstr "Шрифт наддруку."
-#: backend/fujitsu.c:4253
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser direction"
msgstr "Напрямок наддруку"
-#: backend/fujitsu.c:4254
+#: backend/fujitsu.c:4301
#, no-c-format
msgid "Endorser printing direction."
msgstr "Напрямок друку."
-#: backend/fujitsu.c:4278
+#: backend/fujitsu.c:4325
#, no-c-format
msgid "Endorser side"
msgstr "Бік наддруку"
-#: backend/fujitsu.c:4279
+#: backend/fujitsu.c:4326
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
"Бік, з якого буде друкуватися мітка. Потребує апаратної підтримки для "
"зміни."
-#: backend/fujitsu.c:4304
+#: backend/fujitsu.c:4351
#, no-c-format
msgid "Endorser string"
msgstr "Рядок наддруку"
-#: backend/fujitsu.c:4305
+#: backend/fujitsu.c:4352
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
@@ -2910,205 +2908,205 @@ msgstr ""
"Буквенно-цифровий формат наддруку. %05ud або %08ud наприкінці буде "
"замінено на значення лічильника."
-#: backend/fujitsu.c:4332
+#: backend/fujitsu.c:4379
#, no-c-format
msgid "Top edge"
msgstr "Верхній край"
-#: backend/fujitsu.c:4333
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Paper is pulled partly into adf"
msgstr "Папір частково втягнуто до протяжного пристрою"
-#: backend/fujitsu.c:4344
+#: backend/fujitsu.c:4391
#, no-c-format
msgid "A3 paper"
msgstr "Папір A3"
-#: backend/fujitsu.c:4345
+#: backend/fujitsu.c:4392
#, no-c-format
msgid "A3 paper detected"
msgstr "Виявлено папір A3"
-#: backend/fujitsu.c:4356
+#: backend/fujitsu.c:4403
#, no-c-format
msgid "B4 paper"
msgstr "Папір B4"
-#: backend/fujitsu.c:4357
+#: backend/fujitsu.c:4404
#, no-c-format
msgid "B4 paper detected"
msgstr "Виявлено папір B4"
-#: backend/fujitsu.c:4368
+#: backend/fujitsu.c:4415
#, no-c-format
msgid "A4 paper"
msgstr "Папір A4"
-#: backend/fujitsu.c:4369
+#: backend/fujitsu.c:4416
#, no-c-format
msgid "A4 paper detected"
msgstr "Виявлено папір A4"
-#: backend/fujitsu.c:4380
+#: backend/fujitsu.c:4427
#, no-c-format
msgid "B5 paper"
msgstr "Папір B5"
-#: backend/fujitsu.c:4381
+#: backend/fujitsu.c:4428
#, no-c-format
msgid "B5 paper detected"
msgstr "Виявлено папір B5"
-#: backend/fujitsu.c:4404
+#: backend/fujitsu.c:4451
#, no-c-format
msgid "OMR or DF"
msgstr "OMR або ПП"
-#: backend/fujitsu.c:4405
+#: backend/fujitsu.c:4452
#, no-c-format
msgid "OMR or double feed detected"
msgstr "Виявлено OMR або подвійне подавання"
-#: backend/fujitsu.c:4428
+#: backend/fujitsu.c:4475
#, no-c-format
msgid "Power saving"
msgstr "Заощадження енергії"
-#: backend/fujitsu.c:4429
+#: backend/fujitsu.c:4476
#, no-c-format
msgid "Scanner in power saving mode"
msgstr "Сканер перебуває у режимі заощадження енергії"
-#: backend/fujitsu.c:4452
+#: backend/fujitsu.c:4499
#, no-c-format
msgid "Manual feed"
msgstr "Подавання вручну"
-#: backend/fujitsu.c:4453
+#: backend/fujitsu.c:4500
#, no-c-format
msgid "Manual feed selected"
msgstr "Вибрано режим подавання вручну"
-#: backend/fujitsu.c:4476
+#: backend/fujitsu.c:4523
#, no-c-format
msgid "Function"
msgstr "Функція"
-#: backend/fujitsu.c:4477
+#: backend/fujitsu.c:4524
#, no-c-format
msgid "Function character on screen"
msgstr "Функціональний символ на екрані"
-#: backend/fujitsu.c:4488
+#: backend/fujitsu.c:4535
#, no-c-format
msgid "Ink low"
msgstr "Закінчуються чорнила"
-#: backend/fujitsu.c:4489
+#: backend/fujitsu.c:4536
#, no-c-format
msgid "Imprinter ink running low"
msgstr "Лишилося мало чорнила для наддруку"
-#: backend/fujitsu.c:4500
+#: backend/fujitsu.c:4547
#, no-c-format
msgid "Double feed"
msgstr "Подвійне подавання"
-#: backend/fujitsu.c:4501
+#: backend/fujitsu.c:4548
#, no-c-format
msgid "Double feed detected"
msgstr "Виявлено подвійне подавання"
-#: backend/fujitsu.c:4512
+#: backend/fujitsu.c:4559
#, no-c-format
msgid "Error code"
msgstr "Код помилки"
-#: backend/fujitsu.c:4513
+#: backend/fujitsu.c:4560
#, no-c-format
msgid "Hardware error code"
msgstr "Код апаратної помилки"
-#: backend/fujitsu.c:4524
+#: backend/fujitsu.c:4571
#, no-c-format
msgid "Skew angle"
msgstr "Кут перекошування"
-#: backend/fujitsu.c:4525
+#: backend/fujitsu.c:4572
#, no-c-format
msgid "Requires black background for scanning"
msgstr "Потребує чорного тла для сканування"
-#: backend/fujitsu.c:4536
+#: backend/fujitsu.c:4583
#, no-c-format
msgid "Ink remaining"
msgstr "Лишилося чорнила"
-#: backend/fujitsu.c:4537
+#: backend/fujitsu.c:4584
#, no-c-format
msgid "Imprinter ink level"
msgstr "Рівень чорнила для наддруку"
-#: backend/fujitsu.c:4548
+#: backend/fujitsu.c:4595
#, no-c-format
msgid "Density"
msgstr "Щільність"
-#: backend/fujitsu.c:4549
+#: backend/fujitsu.c:4596
#, no-c-format
msgid "Density dial"
msgstr "Набирач щільності"
-#: backend/fujitsu.c:4560 backend/fujitsu.c:4561
+#: backend/fujitsu.c:4607 backend/fujitsu.c:4608
#, no-c-format
msgid "Duplex switch"
msgstr "Перемикач двобічного"
-#: backend/genesys.c:5761
+#: backend/genesys.cc:5437
#, no-c-format
msgid "Request backend to remove border from pages digitally"
msgstr ""
"Вимагати від програмного модуля вилучення границі зі сторінок у "
"автоматичному режимі"
-#: backend/genesys.c:5770 backend/kvs1025_opt.c:913
+#: backend/genesys.cc:5446 backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
"Вимагати від драйвера відкидання сторінок з надто низькою кількістю "
"темних пікселів"
-#: backend/genesys.c:5781 backend/kvs1025_opt.c:893
+#: backend/genesys.cc:5456 backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
msgstr "Програмне усування обертання"
-#: backend/genesys.c:5782 backend/kvs1025_opt.c:895
+#: backend/genesys.cc:5457 backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
"Вимагати від драйвера виявлення і виправлення обертання зображення на 90 "
"градусів"
-#: backend/genesys.c:5813 backend/pixma_sane_options.c:314
+#: backend/genesys.cc:5486 backend/pixma_sane_options.c:314
#, no-c-format
msgid "Extras"
msgstr "Додаткові"
-#: backend/genesys.c:5833 backend/pixma_sane_options.c:336
+#: backend/genesys.cc:5506 backend/pixma_sane_options.c:336
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
"Крива динамічного порогового значення, від світлого до темного, типово "
"50-65"
-#: backend/genesys.c:5842
+#: backend/genesys.cc:5515
#, no-c-format
msgid "Disable dynamic lineart"
msgstr "Вимкнути динамічне штрихування"
-#: backend/genesys.c:5844
+#: backend/genesys.cc:5517
#, no-c-format
msgid ""
"Disable use of a software adaptive algorithm to generate lineart relying "
@@ -3117,12 +3115,12 @@ msgstr ""
"Вимкнути використання адаптивного програмного алгоритму для створення "
"штрихування замість апаратного алгоритму штрихування."
-#: backend/genesys.c:5860
+#: backend/genesys.cc:5533
#, no-c-format
msgid "Disable interpolation"
msgstr "Вимкнути інтерполяцію"
-#: backend/genesys.c:5863
+#: backend/genesys.cc:5536
#, no-c-format
msgid ""
"When using high resolutions where the horizontal resolution is smaller "
@@ -3132,34 +3130,34 @@ msgstr ""
"роздільна здатність менша за вертикальну, вимикає горизонтальну "
"інтерполяцію."
-#: backend/genesys.c:5872
+#: backend/genesys.cc:5545
#, no-c-format
msgid "Color filter"
msgstr "Фільтр кольору"
-#: backend/genesys.c:5875
+#: backend/genesys.cc:5548
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"За використання друку у півтонах або штрихового друку за допомогою цього "
"пункту можна обрати колір друку."
-#: backend/genesys.c:5901
+#: backend/genesys.cc:5574
#, no-c-format
msgid "Calibration file"
msgstr "Файл калібрування"
-#: backend/genesys.c:5902
+#: backend/genesys.cc:5575
#, no-c-format
msgid "Specify the calibration file to use"
msgstr "Вкажіть файл даних калібрування, які буде використано"
-#: backend/genesys.c:5919
+#: backend/genesys.cc:5592
#, no-c-format
msgid "Calibration cache expiration time"
msgstr "Строк дії кешу калібрування"
-#: backend/genesys.c:5920
+#: backend/genesys.cc:5593
#, no-c-format
msgid ""
"Time (in minutes) before a cached calibration expires. A value of 0 "
@@ -3170,12 +3168,12 @@ msgstr ""
"Від’ємні значення означають, що обмежень на строк дії кешу не "
"накладатиметься."
-#: backend/genesys.c:5930
+#: backend/genesys.cc:5603
#, no-c-format
msgid "Lamp off time"
msgstr "Час вимикання лампи"
-#: backend/genesys.c:5933
+#: backend/genesys.cc:5606
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3184,103 +3182,114 @@ msgstr ""
"Лампу буде вимкнено, коли спливе вказаний час (у хвилинах). Значення "
"рівне 0 означатиме, що лампа не вимикатиметься."
-#: backend/genesys.c:5943
+#: backend/genesys.cc:5616
#, no-c-format
msgid "Lamp off during scan"
msgstr "Вимикання лампи під час сканування"
-#: backend/genesys.c:5944
+#: backend/genesys.cc:5617
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Лампу буде вимкнено під час сканування. "
-#: backend/genesys.c:5972 backend/genesys.c:5973
+#: backend/genesys.cc:5643 backend/genesys.cc:5644
#, no-c-format
msgid "File button"
msgstr "Кнопка «File»"
-#: backend/genesys.c:6025 backend/genesys.c:6026
+#: backend/genesys.cc:5688 backend/genesys.cc:5689
#, no-c-format
msgid "OCR button"
msgstr "Кнопка «OCR»"
-#: backend/genesys.c:6039 backend/genesys.c:6040
+#: backend/genesys.cc:5700 backend/genesys.cc:5701
#, no-c-format
msgid "Power button"
msgstr "Кнопка «Power»"
-#: backend/genesys.c:6053 backend/genesys.c:6054
+#: backend/genesys.cc:5712 backend/genesys.cc:5713
#, no-c-format
msgid "Extra button"
msgstr "Додаткова кнопка"
-#: backend/genesys.c:6067 backend/gt68xx.c:762
+#: backend/genesys.cc:5724 backend/gt68xx.c:755
#, no-c-format
msgid "Need calibration"
msgstr "Потребує калібрування"
-#: backend/genesys.c:6068 backend/gt68xx.c:763
+#: backend/genesys.cc:5725 backend/gt68xx.c:756
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Для застосування поточних параметрів потрібне калібрування"
-#: backend/genesys.c:6080 backend/gt68xx.c:787 backend/gt68xx.c:788
+#: backend/genesys.cc:5735 backend/gt68xx.c:780 backend/gt68xx.c:781
#: backend/pixma_sane_options.c:226 backend/plustek.c:1080
#, no-c-format
msgid "Buttons"
msgstr "Кнопки"
-#: backend/genesys.c:6089 backend/gt68xx.c:794 backend/hp5400_sane.c:392
+#: backend/genesys.cc:5744 backend/gt68xx.c:787 backend/hp5400_sane.c:392
#: backend/hp-option.h:97 backend/niash.c:726 backend/plustek.c:941
#, no-c-format
msgid "Calibrate"
msgstr "Відкалібрувати"
-#: backend/genesys.c:6091 backend/gt68xx.c:796
+#: backend/genesys.cc:5746 backend/gt68xx.c:789
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Почати калібрування за допомогою спеціального аркуша"
-#: backend/genesys.c:6105 backend/gt68xx.c:809
+#: backend/genesys.cc:5758 backend/gt68xx.c:802
#, no-c-format
msgid "Clear calibration"
msgstr "Спорожнити дані калібрування"
-#: backend/genesys.c:6106 backend/gt68xx.c:810
+#: backend/genesys.cc:5759 backend/gt68xx.c:803
#, no-c-format
msgid "Clear calibration cache"
msgstr "Спорожнити кеш калібрування"
+#: backend/genesys.cc:5769
+#, no-c-format
+msgid "Force calibration"
+msgstr "Примусове калібрування"
+
+#: backend/genesys.cc:5770
+#, no-c-format
+msgid "Force calibration ignoring all and any calibration caches"
+msgstr ""
+"Примусове калібрування з ігноруванням усіх кешованих даних калібрування"
+
#: backend/gt68xx.c:149 backend/ma1509.c:108 backend/mustek.c:164
#: backend/snapscan-options.c:87 backend/umax.c:182
#, no-c-format
msgid "Transparency Adapter"
msgstr "Адаптер плівок"
-#: backend/gt68xx.c:477
+#: backend/gt68xx.c:470
#, no-c-format
msgid "Gray mode color"
msgstr "Режим відтінків сірого"
-#: backend/gt68xx.c:479
+#: backend/gt68xx.c:472
#, no-c-format
msgid "Selects which scan color is used gray mode (default: green)."
msgstr ""
"Визначає, який колір сканування буде використано у режимі напівтонів "
"сірого (типово — зелений)."
-#: backend/gt68xx.c:560 backend/hp3900_sane.c:1392
+#: backend/gt68xx.c:553 backend/hp3900_sane.c:1392
#: backend/mustek_usb2.c:410
#, no-c-format
msgid "Debugging Options"
msgstr "Параметри зневаджування"
-#: backend/gt68xx.c:571 backend/mustek_usb2.c:419
+#: backend/gt68xx.c:564 backend/mustek_usb2.c:419
#, no-c-format
msgid "Automatic warmup"
msgstr "Автоматичний розігрів"
-#: backend/gt68xx.c:573
+#: backend/gt68xx.c:566
#, no-c-format
msgid ""
"Warm-up until the lamp's brightness is constant instead of insisting on "
@@ -3289,12 +3298,12 @@ msgstr ""
"Розігрівати, до сталої яскравості лампи, не наполягати на 60-ти "
"секундному розігріві."
-#: backend/gt68xx.c:585
+#: backend/gt68xx.c:578
#, no-c-format
msgid "Full scan"
msgstr "Повне сканування"
-#: backend/gt68xx.c:587
+#: backend/gt68xx.c:580
#, no-c-format
msgid ""
"Scan the complete scanning area including calibration strip. Be careful. "
@@ -3303,12 +3312,12 @@ msgstr ""
"Сканувати всю область сканування, зокрема смугу калібрування. Будьте "
"обережні. Не вказуйте повну висоту. Лише для перевірки."
-#: backend/gt68xx.c:598
+#: backend/gt68xx.c:591
#, no-c-format
msgid "Coarse calibration"
msgstr "Грубе калібрування"
-#: backend/gt68xx.c:600
+#: backend/gt68xx.c:593
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
@@ -3319,12 +3328,12 @@ msgstr ""
"пункт не буде позначено, ви зможете вказати параметри аналогової "
"оболонки вручну. Типово цей пункт позначено. Лише для перевірки."
-#: backend/gt68xx.c:619
+#: backend/gt68xx.c:612
#, no-c-format
msgid "Coarse calibration for first scan only"
msgstr "Грубе калібрування лише для початкового сканування"
-#: backend/gt68xx.c:621
+#: backend/gt68xx.c:614
#, no-c-format
msgid ""
"Coarse calibration is only done for the first scan. Works with most "
@@ -3336,12 +3345,12 @@ msgstr ""
"яскравість сканованих зображень значно змінюється, зніміть позначку з "
"цього пункту. Лише для перевірки."
-#: backend/gt68xx.c:654
+#: backend/gt68xx.c:647
#, no-c-format
msgid "Backtrack lines"
msgstr "Ліній повернення"
-#: backend/gt68xx.c:656
+#: backend/gt68xx.c:649
#, no-c-format
msgid ""
"Number of lines the scan slider moves back when backtracking occurs. "
@@ -3355,12 +3364,12 @@ msgstr ""
"значення пришвидшать сканування, але збільшать ймовірність пропуску "
"ліній."
-#: backend/gt68xx.c:681 backend/mustek_usb2.c:452
+#: backend/gt68xx.c:674 backend/mustek_usb2.c:452
#, no-c-format
msgid "Gamma value"
msgstr "Значення коефіцієнта контрастності"
-#: backend/gt68xx.c:683 backend/mustek_usb2.c:454
+#: backend/gt68xx.c:676 backend/mustek_usb2.c:454
#, no-c-format
msgid "Sets the gamma value of all channels."
msgstr "Визначає значення коефіцієнта контрастності для всіх каналів."
@@ -3376,7 +3385,7 @@ msgid "Scan Mode Group"
msgstr "Група режимів сканування"
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1019
-#: backend/hp-option.c:3174
+#: backend/hp-option.c:3177
#, no-c-format
msgid "Slide"
msgstr "Слайд"
@@ -3585,160 +3594,245 @@ msgstr "Вмикає або вимикає лампу."
msgid "Calibrates for black and white level."
msgstr "Калібрує для визначення рівня чорного и білого."
-#: backend/hp5590.c:86 backend/hp-option.c:3253
+#: backend/hp5590.c:93 backend/hp-option.c:3256
#, no-c-format
msgid "ADF"
msgstr "АПД"
-#: backend/hp5590.c:88
+#: backend/hp5590.c:95
#, no-c-format
msgid "TMA Slides"
msgstr "Слайди TMA"
-#: backend/hp5590.c:89
+#: backend/hp5590.c:96
#, no-c-format
msgid "TMA Negatives"
msgstr "Негативи TMA"
-#: backend/hp5590.c:92
+#: backend/hp5590.c:108
#, no-c-format
msgid "Color (48 bits)"
msgstr "Кольоровий (48-бітовий)"
-#: backend/hp5590.c:95
+#: backend/hp5590.c:112
#, no-c-format
msgid "Extend lamp timeout"
msgstr "Збільшений час очікування лампи"
-#: backend/hp5590.c:96
+#: backend/hp5590.c:113
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
msgstr "Збільшує час очікування лампи (з 15 хвилин до 1 години)"
-#: backend/hp5590.c:98
+#: backend/hp5590.c:115
#, no-c-format
msgid "Wait for button"
msgstr "Очікувати натискання кнопки"
-#: backend/hp5590.c:99
+#: backend/hp5590.c:116
#, no-c-format
msgid "Waits for button before scanning"
msgstr "Очікувати на натискання кнопки, перш ніж почати сканування"
-#: backend/hp-option.c:2984
+#: backend/hp5590.c:118
+#, no-c-format
+msgid "Last button pressed"
+msgstr "Остання натиснута кнопка"
+
+#: backend/hp5590.c:119
+#, no-c-format
+msgid "Get ID of last button pressed (read only)"
+msgstr "Отримати ідентифікатор останньої натиснутої кнопки (лише читання)"
+
+#: backend/hp5590.c:121
+#, no-c-format
+msgid "LCD counter"
+msgstr "Лічильник LCD"
+
+#: backend/hp5590.c:122
+#, no-c-format
+msgid "Get value of LCD counter (read only)"
+msgstr "Отримати значення лічильника LCD (лише читання)"
+
+#: backend/hp5590.c:124
+#, no-c-format
+msgid "Color LED indicator"
+msgstr "Кольоровий індикатор LED"
+
+#: backend/hp5590.c:125
+#, no-c-format
+msgid "Get value of LED indicator (read only)"
+msgstr "Отримати значення індикатора LED (лише читання)"
+
+#: backend/hp5590.c:127
+#, no-c-format
+msgid "Document available in ADF"
+msgstr "Документ доступний у АПД"
+
+#: backend/hp5590.c:128
+#, no-c-format
+msgid "Get state of document-available indicator in ADF (read only)"
+msgstr ""
+"Отримати стан індикатора доступності документа у АПД (лише читання)"
+
+#: backend/hp5590.c:130
+#, no-c-format
+msgid "Hide end-of-page pixel"
+msgstr "Приховувати кінцевий піксель сторінки"
+
+#: backend/hp5590.c:131
+#, no-c-format
+msgid ""
+"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgstr ""
+"Приховувати пікселі-індикатори кінця сторінки і перезаписувати їх "
+"сусідніми пікселями"
+
+#: backend/hp5590.c:133
+#, no-c-format
+msgid "Filling mode of trailing lines after scan data (ADF)"
+msgstr "Режим заповнення кінцевих ліній після даних сканування (АПД)"
+
+#: backend/hp5590.c:134
+#, no-c-format
+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:137
+#, no-c-format
+msgid "RGB or gray color value for filling mode 'color'"
+msgstr ""
+"Значення кольору у RGB або тонах сірого для режиму заповнення «color»"
+
+#: backend/hp5590.c:138
+#, no-c-format
+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/hp-option.c:2987
#, no-c-format
msgid "Advanced Options"
msgstr "Додаткові параметри"
-#: backend/hp-option.c:3041
+#: backend/hp-option.c:3044
#, no-c-format
msgid "Coarse"
msgstr "Грубе"
-#: backend/hp-option.c:3042
+#: backend/hp-option.c:3045
#, no-c-format
msgid "Fine"
msgstr "Високої якості"
-#: backend/hp-option.c:3043
+#: backend/hp-option.c:3046
#, no-c-format
msgid "Bayer"
msgstr "Секція"
-#: backend/hp-option.c:3046 backend/hp-option.c:3097
+#: backend/hp-option.c:3049 backend/hp-option.c:3100
#, no-c-format
msgid "Custom"
msgstr "Нетипова"
-#: backend/hp-option.c:3087 backend/hp-option.c:3143
-#: backend/hp-option.c:3158
+#: backend/hp-option.c:3090 backend/hp-option.c:3146
+#: backend/hp-option.c:3161
#, no-c-format
msgid "Auto"
msgstr "Авто"
-#: backend/hp-option.c:3088
+#: backend/hp-option.c:3091
#, no-c-format
msgid "NTSC RGB"
msgstr "NTSC RGB"
-#: backend/hp-option.c:3089
+#: backend/hp-option.c:3092
#, no-c-format
msgid "XPA RGB"
msgstr "XPA RGB"
-#: backend/hp-option.c:3090
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Pass-through"
msgstr "Пропускати"
-#: backend/hp-option.c:3091
+#: backend/hp-option.c:3094
#, no-c-format
msgid "NTSC Gray"
msgstr "Чорно-біле NTSC"
-#: backend/hp-option.c:3092
+#: backend/hp-option.c:3095
#, no-c-format
msgid "XPA Gray"
msgstr "Чорно-біле XPA"
-#: backend/hp-option.c:3144
+#: backend/hp-option.c:3147
#, no-c-format
msgid "Slow"
msgstr "Повільно"
-#: backend/hp-option.c:3145 backend/hp-option.c:3252
+#: backend/hp-option.c:3148 backend/hp-option.c:3255
#: backend/kvs40xx_opt.c:230 backend/matsushita.c:244 backend/mustek.c:149
#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Normal"
msgstr "Звичайна"
-#: backend/hp-option.c:3146
+#: backend/hp-option.c:3149
#, no-c-format
msgid "Fast"
msgstr "Швидко"
-#: backend/hp-option.c:3147
+#: backend/hp-option.c:3150
#, no-c-format
msgid "Extra Fast"
msgstr "Дуже швидко"
-#: backend/hp-option.c:3160
+#: backend/hp-option.c:3163
#, no-c-format
msgid "2-pixel"
msgstr "Двоточкове"
-#: backend/hp-option.c:3161
+#: backend/hp-option.c:3164
#, no-c-format
msgid "4-pixel"
msgstr "Чотириточкове"
-#: backend/hp-option.c:3162
+#: backend/hp-option.c:3165
#, no-c-format
msgid "8-pixel"
msgstr "Восьмиточкове"
-#: backend/hp-option.c:3173
+#: backend/hp-option.c:3176
#, no-c-format
msgid "Print"
msgstr "Друк"
-#: backend/hp-option.c:3175
+#: backend/hp-option.c:3178
#, no-c-format
msgid "Film-strip"
msgstr "Плівка"
-#: backend/hp-option.c:3254
+#: backend/hp-option.c:3257
#, no-c-format
msgid "XPA"
msgstr "XPA"
-#: backend/hp-option.c:3328 backend/hp-option.c:3341
+#: backend/hp-option.c:3331 backend/hp-option.c:3344
#, no-c-format
msgid "Conditional"
msgstr "Умовно"
-#: backend/hp-option.c:3414
+#: backend/hp-option.c:3417
#, no-c-format
msgid "Experiment"
msgstr "Експеримент"
@@ -3921,8 +4015,8 @@ msgstr "Вимкнути лампу"
msgid "Shut off scanner lamp."
msgstr "Вимкнути лампу сканера."
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295
-#: backend/kvs40xx_opt.c:516 backend/matsushita.h:219
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/matsushita.h:219
#, no-c-format
msgid "Paper size"
msgstr "Розмір паперу"
@@ -3933,8 +4027,7 @@ 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:531
#, no-c-format
msgid "Landscape"
msgstr "Альбомна"
@@ -3949,38 +4042,34 @@ msgstr "Інверсивне зображення"
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:393
#, 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:416
#, 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:428
#, 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:441
#, no-c-format
msgid "Double feed detection"
msgstr "Виявлення двобічного подавання"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205
-#: backend/kvs40xx_opt.c:354 backend/matsushita.h:223
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/matsushita.h:223
#, 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/matsushita.h:225
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/matsushita.h:225
#, no-c-format
msgid "Physical size of the paper in the ADF"
msgstr "Фізичний розмір паперу у пристрої автоматичної подачі"
@@ -4096,199 +4185,199 @@ msgstr "B6"
msgid "Legal"
msgstr "Легал"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
msgstr "баєр_64"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
msgstr "баєр_16"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
#, no-c-format
msgid "halftone_32"
msgstr "напівтони_32"
-#: backend/kvs1025_opt.c:152 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
#, no-c-format
msgid "halftone_64"
msgstr "напівтони_64"
-#: backend/kvs1025_opt.c:153
+#: backend/kvs1025_opt.c:152
#, no-c-format
msgid "diffusion"
msgstr "розсіяне"
-#: backend/kvs1025_opt.c:166 backend/kvs1025_opt.c:228
-#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:129
+#: 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
#, no-c-format
msgid "normal"
msgstr "звичайне"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
#, no-c-format
msgid "light"
msgstr "світле"
-#: backend/kvs1025_opt.c:168 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
msgstr "темне"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
#, no-c-format
msgid "From scanner"
msgstr "Зі сканера"
-#: backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
#: backend/matsushita.c:177
#, no-c-format
msgid "From paper"
msgstr "Від паперу"
-#: backend/kvs1025_opt.c:192 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
#, no-c-format
msgid "default"
msgstr "типове"
-#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:123
+#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
#, no-c-format
msgid "smooth"
msgstr "гладке"
-#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:119
+#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
msgstr "немає"
-#: backend/kvs1025_opt.c:213 backend/kvs20xx_opt.c:120
+#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
#, no-c-format
msgid "low"
msgstr "низьке"
-#: backend/kvs1025_opt.c:214 backend/kvs1025_opt.c:804
+#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
#, no-c-format
msgid "medium"
msgstr "середнє"
-#: backend/kvs1025_opt.c:215 backend/kvs20xx_opt.c:122
+#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
msgstr "високе"
-#: backend/kvs1025_opt.c:229 backend/kvs20xx_opt.c:130
+#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
msgstr "ЕПТ"
-#: backend/kvs1025_opt.c:230
+#: backend/kvs1025_opt.c:229
#, no-c-format
msgid "linier"
msgstr "лінійна"
-#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:138
+#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
#, no-c-format
msgid "red"
msgstr "червоний"
-#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:139
+#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
#, no-c-format
msgid "green"
msgstr "зелений"
-#: backend/kvs1025_opt.c:244 backend/kvs20xx_opt.c:140
+#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
msgstr "синій"
-#: backend/kvs1025_opt.c:562
+#: backend/kvs1025_opt.c:561
#, no-c-format
msgid "Sets the scan source"
msgstr "Встановлює джерело сканування"
-#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:218
+#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1126
#, no-c-format
msgid "Feeder mode"
msgstr "Режим подачі"
-#: backend/kvs1025_opt.c:574 backend/kvs20xx_opt.c:219
+#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1127
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Визначити режим подачі"
-#: backend/kvs1025_opt.c:584
+#: backend/kvs1025_opt.c:583
#, no-c-format
msgid "Enable/Disable long paper mode"
msgstr "Увімкнути/Вимкнути режим довгого паперу"
-#: backend/kvs1025_opt.c:593
+#: backend/kvs1025_opt.c:592
#, no-c-format
msgid "Enable/Disable length control mode"
msgstr "Увімкнути/Вимкнути режим керування довжиною"
-#: backend/kvs1025_opt.c:601 backend/kvs20xx_opt.c:243
+#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Встановлює режим подавання вручну"
-#: backend/kvs1025_opt.c:612 backend/kvs20xx_opt.c:255
+#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Встановлює час очікування на подавання вручну"
-#: backend/kvs1025_opt.c:625 backend/kvs20xx_opt.c:268
+#: 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 "Увімкнути або вимкнути виявлення подвійного подавання"
-#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:276
+#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
msgstr "за аркушем"
-#: backend/kvs1025_opt.c:632 backend/kvs20xx_opt.c:277
+#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
msgstr "За аркушем"
-#: backend/kvs1025_opt.c:634 backend/kvs20xx_opt.c:278
+#: 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 "Сканер стискає зображення відповідно до розмірів аркуша"
-#: backend/kvs1025_opt.c:661 backend/kvs20xx_opt.c:309
+#: 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:735 backend/matsushita.c:1224
+#: backend/kvs1025_opt.c:734 backend/matsushita.c:1224
#, no-c-format
msgid "Automatic threshold"
msgstr "Автоматичне визначення"
-#: backend/kvs1025_opt.c:738 backend/matsushita.c:1227
+#: backend/kvs1025_opt.c:737 backend/matsushita.c:1227
#, no-c-format
msgid ""
"Automatically sets brightness, contrast, white level, gamma, noise "
@@ -4297,99 +4386,99 @@ msgstr ""
"Встановлювати яскравість, контрастність, рівень білого, гаму, зменшення "
"шумності і виразність зображення автоматично"
-#: backend/kvs1025_opt.c:783 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1275
#, no-c-format
msgid "Noise reduction"
msgstr "Зменшення шумності"
-#: backend/kvs1025_opt.c:785 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
#: backend/matsushita.c:1277
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Зменшити шум від ізольованих точок"
-#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:412
+#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1288
#, no-c-format
msgid "Image emphasis"
msgstr "Виразність зображення"
-#: backend/kvs1025_opt.c:797 backend/kvs20xx_opt.c:413
+#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1289
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Визначає виразність зображення"
-#: backend/kvs1025_opt.c:808 backend/kvs1025_opt.c:809
+#: backend/kvs1025_opt.c:807 backend/kvs1025_opt.c:808
#: backend/matsushita.c:1300 backend/matsushita.c:1301
#: backend/pixma_sane_options.c:112
#, no-c-format
msgid "Gamma"
msgstr "Гама"
-#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:436
+#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
#, no-c-format
msgid "Lamp color"
msgstr "Колір лампи"
-#: backend/kvs1025_opt.c:819 backend/kvs20xx_opt.c:437
+#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Встановлює колір лампи (відкидання кольорів)"
-#: backend/kvs1025_opt.c:832
+#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
msgstr "Інверсивне зображення у чорно-білому або півтоновому режимі"
-#: backend/kvs1025_opt.c:840
+#: backend/kvs1025_opt.c:839
#, no-c-format
msgid "Mirror image (left/right flip)"
msgstr "Віддзеркалити зображення (перевертання через лівий/правий край)"
-#: backend/kvs1025_opt.c:847
+#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
msgstr "стискання jpeg"
-#: backend/kvs1025_opt.c:850
+#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
msgstr "Стискання зображень JPEG з параметром Q, «0» — не стискати"
-#: backend/kvs1025_opt.c:860
+#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
msgstr "Обернути зображення за год. стрілкою"
-#: backend/kvs1025_opt.c:862
+#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
msgstr ""
"Вимагати від драйвера обертання сторінок на фіксований вказаний кут"
-#: backend/kvs1025_opt.c:874
+#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
msgstr ""
"Вимагати від драйвера усування обертання сторінок у автоматичному режимі"
-#: backend/kvs1025_opt.c:883
+#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
"Мінімальний діаметр окремих плям, які слід усунути зі сканованого "
"зображення"
-#: backend/kvs1025_opt.c:902
+#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
msgstr "Програмне автоматичне обрізання"
-#: backend/kvs1025_opt.c:904
+#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
msgstr ""
@@ -5122,17 +5211,17 @@ msgstr "3x3 нетипове"
msgid "2x2 custom"
msgstr "2x2 нетипове"
-#: backend/mustek.c:4235
+#: backend/mustek.c:4247
#, no-c-format
msgid "Fast gray mode"
msgstr "Швидкий чорно-білий режим"
-#: backend/mustek.c:4236
+#: backend/mustek.c:4248
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Сканувати у швидкому чорно-білому режимі (погана якість)."
-#: backend/mustek.c:4333
+#: backend/mustek.c:4345
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5142,82 +5231,82 @@ msgstr ""
"(низькоякісному) режимі. Цим режимом може бути чорно-білий режим або "
"режим з низькою роздільною здатністю."
-#: backend/mustek.c:4341
+#: backend/mustek.c:4353
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Час вимикання лампи (у хвилинах)"
-#: backend/mustek.c:4342
+#: backend/mustek.c:4354
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Визначає час (у хвилинах), через який лампу буде вимкнено."
-#: backend/mustek.c:4353
+#: backend/mustek.c:4365
#, no-c-format
msgid "Turn lamp off"
msgstr "Вимкнути лампу"
-#: backend/mustek.c:4354
+#: backend/mustek.c:4366
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Негайно вимикає лампу."
-#: backend/mustek.c:4431
+#: backend/mustek.c:4443
#, no-c-format
msgid "Red brightness"
msgstr "Яскравість червоного"
-#: backend/mustek.c:4432
+#: backend/mustek.c:4444
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Керує яскравістю каналу червоного у отриманому зображенні."
-#: backend/mustek.c:4444
+#: backend/mustek.c:4456
#, no-c-format
msgid "Green brightness"
msgstr "Яскравість зеленого"
-#: backend/mustek.c:4445
+#: backend/mustek.c:4457
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Керує яскравістю каналу зеленого у отриманому зображенні."
-#: backend/mustek.c:4457
+#: backend/mustek.c:4469
#, no-c-format
msgid "Blue brightness"
msgstr "Яскравість синього"
-#: backend/mustek.c:4458
+#: backend/mustek.c:4470
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Керує яскравістю каналу синього у отриманому зображенні."
-#: backend/mustek.c:4483
+#: backend/mustek.c:4495
#, no-c-format
msgid "Contrast red channel"
msgstr "Контрастність червоного каналу"
-#: backend/mustek.c:4484
+#: backend/mustek.c:4496
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Керує контрастністю каналу червоного у отриманому зображенні."
-#: backend/mustek.c:4496
+#: backend/mustek.c:4508
#, no-c-format
msgid "Contrast green channel"
msgstr "Контрастність зеленого каналу"
-#: backend/mustek.c:4497
+#: backend/mustek.c:4509
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Керує контрастністю каналу зеленого у отриманому зображенні."
-#: backend/mustek.c:4509
+#: backend/mustek.c:4521
#, no-c-format
msgid "Contrast blue channel"
msgstr "Контрастність синього каналу"
-#: backend/mustek.c:4510
+#: backend/mustek.c:4522
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Керує контрастністю каналу синього у отриманому зображенні."
@@ -5261,22 +5350,22 @@ msgstr ""
"Розігрівати, до сталої яскравості лампи, не наполягати на 40-ти "
"секундному розігріві."
-#: backend/pixma.c:378
+#: backend/pixma.c:397
#, no-c-format
msgid "Negative color"
msgstr "Кольоровий негатив"
-#: backend/pixma.c:383
+#: backend/pixma.c:402
#, no-c-format
msgid "Negative gray"
msgstr "Чорно-білий негатив"
-#: backend/pixma.c:396
+#: backend/pixma.c:415
#, no-c-format
msgid "48 bits color"
msgstr "48-бітовий колір"
-#: backend/pixma.c:401
+#: backend/pixma.c:420
#, no-c-format
msgid "16 bits gray"
msgstr "16-бітовий сірий"
@@ -5881,7 +5970,7 @@ msgstr "Чорно-білих ліній на сеанс читання"
#: backend/stv680.c:974
#, no-c-format
msgid "webcam"
-msgstr "Веб-камера"
+msgstr "вебкамера"
#: backend/stv680.h:115
#, no-c-format
@@ -6586,10 +6675,3 @@ msgstr "Визначає зсув каналу зеленого"
#, no-c-format
msgid "Sets blue channel offset"
msgstr "Визначає зсув каналу синього"
-
-#, fuzzy
-#~ msgid "IPC mode"
-#~ msgstr "Режим попереднього перегляду"
-
-#~ msgid "problem not analyzed (unknown SCSI class)"
-#~ msgstr "Проблема не піддається аналізу (невідомий клас SCSI)"
diff --git a/sane-backends.lsm b/sane-backends.lsm
deleted file mode 100644
index 5f8f721..0000000
--- a/sane-backends.lsm
+++ /dev/null
@@ -1,27 +0,0 @@
-Begin4
-Title: sane-backends
-Version: _VERSION_
-Entered-date: _DATE_
-Description: SANE (Scanner Access Now Easy) is a universal scanner
- interface. SANE-BACKENDS comes complete with documentation,
- many backends, scanimage command line frontend, and
- networking support. For other/graphical frontends take a look
- at sane-frontends and XSane.
-Keywords: scanner, camera, flatbed, automatic document feeder (ADF),
- slides, diapositive, negative, film, transparency, CIS, CCD,
- network server & client, Java API & client
-Author: The SANE development team (sane-devel@lists.alioth.debian.org)
- (see AUTHORS for complete list)
-Maintained-by: kitno455@gmail.com (m. allan noah)
-Primary-site: ftp.sane-project.org /pub/sane/sane-backends-_VERSION_
- _T_S_ kB sane-backends-_VERSION_.tar.gz
- _L_S_ kB sane-backends-_VERSION_.lsm
-Alternate-site: sunsite.unc.edu /pub/Linux/apps/graphics/capture
-Platforms: AIX, Digital Unix, HP Apollo Domain/OS, FreeBSD, HP-UX, IRIX,
- Linux (Alpha, m68k, SPARC, x86), NetBSD, OpenBSD,
- OpenStep (x86), SCO OpenServer 5.x (x86), OS/2,
- Solaris (SPARC, x86), SunOS.
- GNU make is needed.
-Copying-policy: GPL (programs), relaxed GPL (libraries), and public domain
- (SANE standard)
-End
diff --git a/sanei/Makefile.in b/sanei/Makefile.in
deleted file mode 100644
index c6fa654..0000000
--- a/sanei/Makefile.in
+++ /dev/null
@@ -1,704 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-@HAVE_JPEG_TRUE@am__append_1 = sanei_jpeg.c
-subdir = sanei
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libsanei_la_LIBADD =
-am__libsanei_la_SOURCES_DIST = 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 sanei_pv8630.c \
- sanei_pp.c sanei_lm983x.c sanei_access.c sanei_tcp.c \
- sanei_udp.c sanei_magic.c sanei_ir.c sanei_jpeg.c
-@HAVE_JPEG_TRUE@am__objects_1 = sanei_jpeg.lo
-am_libsanei_la_OBJECTS = sanei_ab306.lo sanei_constrain_value.lo \
- sanei_init_debug.lo sanei_net.lo sanei_wire.lo \
- sanei_codec_ascii.lo sanei_codec_bin.lo sanei_scsi.lo \
- sanei_config.lo sanei_config2.lo sanei_pio.lo sanei_pa4s2.lo \
- sanei_auth.lo sanei_usb.lo sanei_thread.lo sanei_pv8630.lo \
- sanei_pp.lo sanei_lm983x.lo sanei_access.lo sanei_tcp.lo \
- sanei_udp.lo sanei_magic.lo sanei_ir.lo $(am__objects_1)
-libsanei_la_OBJECTS = $(am_libsanei_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libsanei_la_SOURCES)
-DIST_SOURCES = $(am__libsanei_la_SOURCES_DIST)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include $(USB_CFLAGS)
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-noinst_LTLIBRARIES = libsanei.la
-libsanei_la_SOURCES = 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 sanei_pv8630.c \
- sanei_pp.c sanei_lm983x.c sanei_access.c sanei_tcp.c \
- sanei_udp.c sanei_magic.c sanei_ir.c $(am__append_1)
-EXTRA_DIST = linux_sg3_err.h os2_srb.h sanei_DomainOS.c sanei_DomainOS.h
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sanei/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu sanei/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
-libsanei.la: $(libsanei_la_OBJECTS) $(libsanei_la_DEPENDENCIES) $(EXTRA_libsanei_la_DEPENDENCIES)
- $(AM_V_CCLD)$(LINK) $(libsanei_la_OBJECTS) $(libsanei_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_ab306.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_access.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_auth.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_codec_ascii.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_codec_bin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_config.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_config2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_constrain_value.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_init_debug.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_ir.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_jpeg.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_lm983x.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_magic.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_pa4s2.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_pio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_pp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_pv8630.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_scsi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_tcp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_udp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_usb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_wire.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
- ctags-am distclean distclean-compile distclean-generic \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/sanei/sanei_DomainOS.c b/sanei/sanei_DomainOS.c
index 5473151..7b851a8 100644
--- a/sanei/sanei_DomainOS.c
+++ b/sanei/sanei_DomainOS.c
@@ -326,7 +326,7 @@ static void DomainSCSIWait(void)
static status_$t sense_status;
static pinteger sense_return_count;
static int temp;
-
+
/* Issue the sense command (wire, issue, wait, unwire */
sense_cdb_size = sizeof(scanner_sense_cdb);
memcpy(&sense_cdb, scanner_sense_cdb, sense_cdb_size);
diff --git a/sanei/sanei_DomainOS.h b/sanei/sanei_DomainOS.h
index ff93503..8f88e5f 100644
--- a/sanei/sanei_DomainOS.h
+++ b/sanei/sanei_DomainOS.h
@@ -73,4 +73,3 @@ struct DomainServerCommon
};
#endif /*DomainSenseSize*/
-
diff --git a/sanei/sanei_ab306.c b/sanei/sanei_ab306.c
index 898acf6..4483fec 100644
--- a/sanei/sanei_ab306.c
+++ b/sanei/sanei_ab306.c
@@ -294,7 +294,7 @@ sanei_ab306_open (const char *dev, int *fdp)
status = sanei_ab306_get_io_privilege (i);
if (status != SANE_STATUS_GOOD)
return status;
-
+
DBG(1, "sanei_ab306_ioport: using inb/outb access\n");
for (j = 0; j < NELEMS(wakeup); ++j)
{
@@ -477,7 +477,7 @@ sanei_ab306_rdata (int fd, int planes, SANE_Byte * buf, int lines, int bpl)
do
nstat = ab306_inb (p, p->base + 1);
while (((p->lstat ^ nstat) & 0x10) == 0);
-
+
if (p->port_fd >= 0)
{
/* the pixel-loop: */
diff --git a/sanei/sanei_access.c b/sanei/sanei_access.c
index b77cdd9..cb19c5c 100644
--- a/sanei/sanei_access.c
+++ b/sanei/sanei_access.c
@@ -80,10 +80,10 @@
#ifdef ENABLE_LOCKING
/** get the status/owner of a lock file
*
- * The function tries to open an existing lockfile. On success, it reads out
+ * The function tries to open an existing lockfile. On success, it reads out
* the pid which is stored inside and tries to find out more about the status
* of the process with the corresponding PID.
- *
+ *
* @param fn - the complete filename of the lockfile to check
* @return
* - PROCESS_SELF - the calling process is owner of the lockfile
@@ -96,10 +96,10 @@ get_lock_status( char *fn )
char pid_buf[PID_BUFSIZE];
int fd, status;
pid_t pid;
-
+
fd = open( fn, O_RDONLY );
if( fd < 0 ) {
- DBG( 2, "does_process_exist: open >%s< failed: %s\n",
+ DBG( 2, "does_process_exist: open >%s< failed: %s\n",
fn, strerror(errno));
return PROCESS_OTHER;
}
@@ -155,7 +155,7 @@ sanei_access_init( const char *backend )
DBG( 2, "sanei_access_init: >%s<\n", backend);
}
-SANE_Status
+SANE_Status
sanei_access_lock( const char *devicename, SANE_Word timeout )
{
#ifdef ENABLE_LOCKING
@@ -164,7 +164,7 @@ sanei_access_lock( const char *devicename, SANE_Word timeout )
int fd, to, i;
#endif
- DBG( 2, "sanei_access_lock: devname >%s<, timeout: %u\n",
+ DBG( 2, "sanei_access_lock: devname >%s<, timeout: %u\n",
devicename, timeout );
#ifndef ENABLE_LOCKING
return SANE_STATUS_GOOD;
@@ -179,7 +179,7 @@ sanei_access_lock( const char *devicename, SANE_Word timeout )
fd = open( fn, O_CREAT | O_EXCL | O_WRONLY, 0644 );
if (fd < 0) {
-
+
if (errno == EEXIST) {
switch( get_lock_status( fn )) {
case PROCESS_DEAD:
@@ -198,7 +198,7 @@ sanei_access_lock( const char *devicename, SANE_Word timeout )
DBG( 2, "sanei_access_lock: lock exists, waiting...\n" );
sleep(1);
} else {
- DBG( 1, "sanei_access_lock: open >%s< failed: %s\n",
+ DBG( 1, "sanei_access_lock: open >%s< failed: %s\n",
fn, strerror(errno));
return SANE_STATUS_ACCESS_DENIED;
}
@@ -215,7 +215,7 @@ sanei_access_lock( const char *devicename, SANE_Word timeout )
#endif
}
-SANE_Status
+SANE_Status
sanei_access_unlock( const char *devicename )
{
#ifdef ENABLE_LOCKING
diff --git a/sanei/sanei_auth.c b/sanei/sanei_auth.c
index cbba06c..9039187 100644
--- a/sanei/sanei_auth.c
+++ b/sanei/sanei_auth.c
@@ -36,7 +36,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
This file implements an interface for user authorization using MD5 digest */
diff --git a/sanei/sanei_config.c b/sanei/sanei_config.c
index c158766..0eaee9a 100644
--- a/sanei/sanei_config.c
+++ b/sanei/sanei_config.c
@@ -227,7 +227,7 @@ sanei_config_read (char *str, int n, FILE *stream)
while( isspace( *start))
start++;
- if (start != str)
+ if (start != str)
do {
*str++ = *start++;
} while( *str);
@@ -266,7 +266,7 @@ sanei_configure_attach (const char *config_file, SANEI_Config * config,
}
/* loop reading the configuration file, all line beginning by "option " are
- * parsed for value to store in configuration structure, other line are
+ * parsed for value to store in configuration structure, other line are
* used are device to try to attach
*/
while (sanei_config_read (line, PATH_MAX, fp) && status == SANE_STATUS_GOOD)
@@ -292,7 +292,7 @@ sanei_configure_attach (const char *config_file, SANEI_Config * config,
/* to ensure maximum compatibility, we accept line like:
* option "option_name" "option_value"
- * "option_name" "option_value"
+ * "option_name" "option_value"
* So we parse the line 2 time to find an option */
/* check if it is an option */
lp = sanei_config_get_string (lp, &token);
@@ -405,7 +405,7 @@ sanei_configure_attach (const char *config_file, SANEI_Config * config,
config->descriptors[i]->type,
config->descriptors[i]->name);
}
-
+
/* check decoded value */
status = sanei_check_value (config->descriptors[i], value);
@@ -438,7 +438,7 @@ sanei_configure_attach (const char *config_file, SANEI_Config * config,
/* to avoid every backend to depend on scsi and usb functions
* we call back the backend for attach. In turn it will call
* sanei_usb_attach_matching_devices, sanei_config_attach_matching_devices
- * or other. This means 2 callback functions per backend using this
+ * or other. This means 2 callback functions per backend using this
* function. */
DBG (3, "sanei_configure_attach: trying to attach with '%s'\n",
lp2);
diff --git a/sanei/sanei_config2.c b/sanei/sanei_config2.c
index 44c6b93..cd9484d 100644
--- a/sanei/sanei_config2.c
+++ b/sanei/sanei_config2.c
@@ -149,6 +149,6 @@ sanei_config_attach_matching_devices (const char *name,
if (type)
free (type);
}
- else
+ else
(*attach) (name);
}
diff --git a/sanei/sanei_init_debug.c b/sanei/sanei_init_debug.c
index 0abb891..946aee9 100644
--- a/sanei/sanei_init_debug.c
+++ b/sanei/sanei_init_debug.c
@@ -107,16 +107,31 @@ sanei_init_debug (const char * backend, int * var)
DBG (0, "Setting debug level of %s to %d.\n", backend, *var);
}
+static int
+is_socket (int fd)
+{
+ struct stat sbuf;
+
+ if (fstat(fd, &sbuf) == -1) return 0;
+
+#if defined(S_ISSOCK)
+ return S_ISSOCK(sbuf.st_mode);
+#elif defined (S_IFMT) && defined(S_IFMT)
+ return (sbuf.st_mode & S_IFMT) == S_IFSOCK;
+#else
+ return 0;
+#endif
+}
+
void
sanei_debug_msg
(int level, int max_level, const char *be, const char *fmt, va_list ap)
{
char *msg;
-
+
if (max_level >= level)
{
-#ifdef S_IFSOCK
- if ( 1 == isfdtype(fileno(stderr), S_IFSOCK) )
+ if (is_socket(fileno(stderr)))
{
msg = (char *)malloc (sizeof(char) * (strlen(be) + strlen(fmt) + 4));
if (msg == NULL)
@@ -132,12 +147,11 @@ sanei_debug_msg
}
}
else
-#endif
{
fprintf (stderr, "[%s] ", be);
vfprintf (stderr, fmt, ap);
}
-
+
}
}
diff --git a/sanei/sanei_lm983x.c b/sanei/sanei_lm983x.c
index 5b41985..62dfad9 100644
--- a/sanei/sanei_lm983x.c
+++ b/sanei/sanei_lm983x.c
@@ -4,7 +4,7 @@
Copyright (C) 2002-2004 Gerhard Jaeger <gerhard@gjaeger.de>
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -96,20 +96,20 @@ sanei_lm983x_write( SANE_Int fd, SANE_Byte reg,
DBG( 15, "sanei_lm983x_write: fd=%d, reg=%d, len=%d, increment=%d\n", fd,
reg, len, increment);
-
+
if( reg > _LM9831_MAX_REG ) {
DBG( 1, "sanei_lm983x_write: register out of range (%u>%u)\n",
reg, _LM9831_MAX_REG );
return SANE_STATUS_INVAL;
}
-
+
for( bytes = 0; len > 0; ) {
max_len = _MIN( len, _MAX_TRANSFER_SIZE );
command_buffer[0] = 0; /* write */
command_buffer[1] = reg; /* LM983x register */
-
+
if( increment == SANE_TRUE ) {
command_buffer[0] += 0x02; /* increase reg? */
command_buffer[1] += bytes;
@@ -122,7 +122,7 @@ sanei_lm983x_write( SANE_Int fd, SANE_Byte reg,
size = (max_len + _CMD_BYTE_CNT);
result = sanei_usb_write_bulk( fd, command_buffer, &size );
-
+
if( SANE_STATUS_GOOD != result )
return result;
@@ -183,7 +183,7 @@ sanei_lm983x_read( SANE_Int fd, SANE_Byte reg,
if( SANE_STATUS_GOOD != result )
return result;
-
+
if( size != _CMD_BYTE_CNT) {
DBG( 1, "sanei_lm983x_read: short write while writing command "
"(%d/_CMD_BYTE_CNT)\n", result);
@@ -228,7 +228,7 @@ SANE_Bool sanei_lm983x_reset( SANE_Int fd )
DBG( 15, "sanei_lm983x_reset()\n" );
for( i = 0; i < _MAX_RETRY; i++ ) {
-
+
/* Read the command register and check that the reset bit is not set
* If it is set, clear it and return false to indicate that
* the bit has only now been cleared
diff --git a/sanei/sanei_magic.c b/sanei/sanei_magic.c
index bfd56cc..3e71946 100644
--- a/sanei/sanei_magic.c
+++ b/sanei/sanei_magic.c
@@ -123,17 +123,17 @@ sanei_magic_despeck (SANE_Parameters * params, SANE_Byte * buffer,
/* convert darkest pixel into a brighter threshold */
thresh = (thresh + 255*3 + 255*3)/3;
-
+
/*loop over rows and columns around window */
for(k=-1; k<diam+1; k++){
for(l=-1; l<diam+1; l++){
int tmp[3];
-
+
/* dont count pixels in the window */
if(k != -1 && k != diam && l != -1 && l != diam)
continue;
-
+
for(n=0; n<3; n++){
tmp[n] = buffer[i + j*3 + k*bw + l*3 + n];
outer[n] += tmp[n];
@@ -182,7 +182,7 @@ sanei_magic_despeck (SANE_Parameters * params, SANE_Byte * buffer,
/* convert darkest pixel into a brighter threshold */
thresh = (thresh + 255 + 255)/3;
-
+
/*loop over rows and columns around window */
for(k=-1; k<diam+1; k++){
for(l=-1; l<diam+1; l++){
@@ -192,7 +192,7 @@ sanei_magic_despeck (SANE_Parameters * params, SANE_Byte * buffer,
/* dont count pixels in the window */
if(k != -1 && k != diam && l != -1 && l != diam)
continue;
-
+
tmp = buffer[i + j + k*bw + l];
if(tmp < thresh){
@@ -222,7 +222,7 @@ sanei_magic_despeck (SANE_Parameters * params, SANE_Byte * buffer,
else if(params->format == SANE_FRAME_GRAY && params->depth == 1){
for(i=bw; i<bt-bw-(bw*diam); i+=bw){
for(j=1; j<pw-1-diam; j++){
-
+
int curr = 0;
int hits = 0;
@@ -242,7 +242,7 @@ sanei_magic_despeck (SANE_Parameters * params, SANE_Byte * buffer,
/* dont count pixels in the window */
if(k != -1 && k != diam && l != -1 && l != diam)
continue;
-
+
hits += buffer[i + k*bw + (j+l)/8] >> (7-(j+l)%8) & 1;
if(hits)
@@ -631,7 +631,7 @@ sanei_magic_rotate (SANE_Parameters * params, SANE_Byte * buffer,
goto cleanup;
}
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -642,19 +642,19 @@ sanei_magic_rotate (SANE_Parameters * params, SANE_Byte * buffer,
for (i=0; i<height; i++) {
int shiftY = centerY - i;
-
+
for (j=0; j<pwidth; j++) {
int shiftX = centerX - j;
int sourceX, sourceY;
-
+
sourceX = centerX - (int)(shiftX * slopeCos + shiftY * slopeSin);
if (sourceX < 0 || sourceX >= pwidth)
continue;
-
+
sourceY = centerY + (int)(-shiftY * slopeCos + shiftX * slopeSin);
if (sourceY < 0 || sourceY >= height)
continue;
-
+
for (k=0; k<depth; k++) {
outbuf[i*bwidth+j*depth+k]
= buffer[sourceY*bwidth+sourceX*depth+k];
@@ -672,15 +672,15 @@ sanei_magic_rotate (SANE_Parameters * params, SANE_Byte * buffer,
for (i=0; i<height; i++) {
int shiftY = centerY - i;
-
+
for (j=0; j<pwidth; j++) {
int shiftX = centerX - j;
int sourceX, sourceY;
-
+
sourceX = centerX - (int)(shiftX * slopeCos + shiftY * slopeSin);
if (sourceX < 0 || sourceX >= pwidth)
continue;
-
+
sourceY = centerY + (int)(-shiftY * slopeCos + shiftX * slopeSin);
if (sourceY < 0 || sourceY >= height)
continue;
@@ -689,7 +689,7 @@ sanei_magic_rotate (SANE_Parameters * params, SANE_Byte * buffer,
outbuf[i*bwidth + j/8] &= ~(1 << (7-(j%8)));
/* fill in new bit */
- outbuf[i*bwidth + j/8] |=
+ outbuf[i*bwidth + j/8] |=
((buffer[sourceY*bwidth + sourceX/8]
>> (7-(sourceX%8))) & 1) << (7-(j%8));
}
@@ -726,7 +726,7 @@ sanei_magic_isBlank (SANE_Parameters * params, SANE_Byte * buffer,
/*convert thresh from percent (0-100) to 0-1 range*/
thresh /= 100;
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -783,7 +783,7 @@ sanei_magic_isBlank (SANE_Parameters * params, SANE_Byte * buffer,
/* Divide the image into 1/2 inch squares, skipping a 1/4 inch
* margin on all sides. If all squares are under the user's density,
- * signal our caller to skip the image entirely, by returning
+ * signal our caller to skip the image entirely, by returning
* SANE_STATUS_NO_DOCS */
SANE_Status
sanei_magic_isBlank2 (SANE_Parameters * params, SANE_Byte * buffer,
@@ -813,12 +813,12 @@ sanei_magic_isBlank2 (SANE_Parameters * params, SANE_Byte * buffer,
for(yb=0; yb<yblocks; yb++){
for(xb=0; xb<xblocks; xb++){
-
+
/*count dark pix in this block*/
double blocksum = 0;
-
+
for(y=0; y<yhalf; y++){
-
+
/* skip the top and left 1/4 inch */
int offset = (yquarter + yb*yhalf + y) * params->bytes_per_line
+ (xquarter + xb*xhalf) * Bpp;
@@ -826,7 +826,7 @@ sanei_magic_isBlank2 (SANE_Parameters * params, SANE_Byte * buffer,
/*count darkness of pix in this row*/
int rowsum = 0;
-
+
for(x=0; x<xhalf*Bpp; x++){
rowsum += 255 - ptr[x];
}
@@ -847,12 +847,12 @@ sanei_magic_isBlank2 (SANE_Parameters * params, SANE_Byte * buffer,
for(yb=0; yb<yblocks; yb++){
for(xb=0; xb<xblocks; xb++){
-
+
/*count dark pix in this block*/
double blocksum = 0;
-
+
for(y=0; y<yhalf; y++){
-
+
/* skip the top and left 1/4 inch */
int offset = (yquarter + yb*yhalf + y) * params->bytes_per_line
+ (xquarter + xb*xhalf) / 8;
@@ -860,7 +860,7 @@ sanei_magic_isBlank2 (SANE_Parameters * params, SANE_Byte * buffer,
/*count darkness of pix in this row*/
int rowsum = 0;
-
+
for(x=0; x<xhalf; x++){
rowsum += ptr[x/8] >> (7-(x%8)) & 1;
}
@@ -898,7 +898,7 @@ sanei_magic_findTurn(SANE_Parameters * params, SANE_Byte * buffer,
DBG(10,"sanei_magic_findTurn: start\n");
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -1125,7 +1125,7 @@ sanei_magic_turn(SANE_Parameters * params, SANE_Byte * buffer,
}
/*turn color & gray image*/
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -1282,7 +1282,7 @@ getTopEdge(int width, int height, int resolution,
double topSlope = 0;
int topOffset = 0;
int topDensity = 0;
-
+
int i,j;
int pass = 0;
@@ -1436,7 +1436,7 @@ getLine (int height, int width, int * buff,
/* find central value of this 'bucket' */
slopeCenter[j] = (
- (double)j*(maxSlope-minSlope)/slopes+minSlope
+ (double)j*(maxSlope-minSlope)/slopes+minSlope
+ (double)(j+1)*(maxSlope-minSlope)/slopes+minSlope
)/2;
@@ -1525,7 +1525,7 @@ getLine (int height, int width, int * buff,
maxDensity = lines[i][j];
}
}
-
+
DBG(15,"getLine: maxDensity %d\n",maxDensity);
*finSlope = 0;
@@ -1544,20 +1544,20 @@ getLine (int height, int width, int * buff,
}
}
}
-
+
if(0){
fprintf(stderr,"offsetCenter: ");
for(j=0;j<offsets;j++){
fprintf(stderr," %+04.0f",offsetCenter[j]);
}
fprintf(stderr,"\n");
-
+
fprintf(stderr,"offsetScale: ");
for(j=0;j<offsets;j++){
fprintf(stderr," %04d",offsetScale[j]);
}
fprintf(stderr,"\n");
-
+
for(i=0;i<slopes;i++){
fprintf(stderr,"slope: %02d %+02.2f %03d:",i,slopeCenter[i],slopeScale[i]);
for(j=0;j<offsets;j++){
@@ -1589,12 +1589,12 @@ getLine (int height, int width, int * buff,
return ret;
}
-/* find the left side of paper by moving a line
+/* find the left side of paper by moving a line
* perpendicular to top slope across the image
* the 'left-most' point on the paper is the
* one with the smallest X intercept
* return x and y intercepts */
-static SANE_Status
+static SANE_Status
getLeftEdge (int width, int height, int * top, int * bot,
double slope, int * finXInter, int * finYInter)
{
@@ -1611,7 +1611,7 @@ getLeftEdge (int width, int height, int * top, int * bot,
leftCount = 0;
for(i=0;i<width;i++){
-
+
if(top[i] < height){
int tyi = top[i] - (slope * i);
int txi = tyi/-slope;
@@ -1638,7 +1638,7 @@ getLeftEdge (int width, int height, int * top, int * bot,
leftCount = 0;
for(i=0;i<width;i++){
-
+
if(bot[i] > -1){
int byi = bot[i] - (slope * i);
@@ -1677,7 +1677,7 @@ getLeftEdge (int width, int height, int * top, int * bot,
/* Loop thru the image and look for first color change in each column.
* Return a malloc'd array. Caller is responsible for freeing. */
-int *
+int *
sanei_magic_getTransY (
SANE_Parameters * params, int dpi, SANE_Byte * buffer, int top)
{
@@ -1715,7 +1715,7 @@ sanei_magic_getTransY (
/* load the buff array with y value for first color change from edge
* gray/color uses a different algo from binary/halftone */
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -1734,10 +1734,10 @@ sanei_magic_getTransY (
}
near *= winLen;
far = near;
-
+
/* move windows, check delta */
for(j=firstLine+direction; j!=lastLine; j+=direction){
-
+
int farLine = j-winLen*2*direction;
int nearLine = j-winLen*direction;
@@ -1770,10 +1770,10 @@ sanei_magic_getTransY (
int near = 0;
for(i=0; i<width; i++){
-
+
/* load the near window with first pixel */
near = buffer[(firstLine*width+i)/8] >> (7-(i%8)) & 1;
-
+
/* move */
for(j=firstLine+direction; j!=lastLine; j+=direction){
if((buffer[(j*width+i)/8] >> (7-(i%8)) & 1) != near){
@@ -1809,7 +1809,7 @@ sanei_magic_getTransY (
/* Loop thru the image height and look for first color change in each row.
* Return a malloc'd array. Caller is responsible for freeing. */
-int *
+int *
sanei_magic_getTransX (
SANE_Parameters * params, int dpi, SANE_Byte * buffer, int left)
{
@@ -1848,7 +1848,7 @@ sanei_magic_getTransX (
/* load the buff array with x value for first color change from edge
* gray/color uses a different algo from binary/halftone */
- if(params->format == SANE_FRAME_RGB ||
+ if(params->format == SANE_FRAME_RGB ||
(params->format == SANE_FRAME_GRAY && params->depth == 8)
){
@@ -1867,10 +1867,10 @@ sanei_magic_getTransX (
}
near *= winLen;
far = near;
-
+
/* move windows, check delta */
for(j=firstCol+direction; j!=lastCol; j+=direction){
-
+
int farCol = j-winLen*2*direction;
int nearCol = j-winLen*direction;
@@ -1888,7 +1888,7 @@ sanei_magic_getTransX (
near -= buffer[i*bwidth + nearCol*depth + k];
near += buffer[i*bwidth + j*depth + k];
}
-
+
if(abs(near - far) > 50*winLen*depth - near*40/255){
buff[i] = j;
break;
@@ -1902,10 +1902,10 @@ sanei_magic_getTransX (
int near = 0;
for(i=0; i<height; i++){
-
+
/* load the near window with first pixel */
near = buffer[i*bwidth + firstCol/8] >> (7-(firstCol%8)) & 1;
-
+
/* move */
for(j=firstCol+direction; j!=lastCol; j+=direction){
if((buffer[i*bwidth + j/8] >> (7-(j%8)) & 1) != near){
@@ -1938,4 +1938,3 @@ sanei_magic_getTransX (
return buff;
}
-
diff --git a/sanei/sanei_pa4s2.c b/sanei/sanei_pa4s2.c
index d1be0c0..282e6fd 100644
--- a/sanei/sanei_pa4s2.c
+++ b/sanei/sanei_pa4s2.c
@@ -37,7 +37,7 @@
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
- If you do not wish that, delete this exception notice.
+ If you do not wish that, delete this exception notice.
This file implements an interface for the Mustek PP chipset A4S2 */
@@ -48,7 +48,7 @@
3 - things nice to know
4 - code flow
5 - detailed flow
- 6 - everything
+ 6 - everything
These debug levels can be set using the environment variable
SANE_DEBUG_SANEI_PA4S2 */
@@ -333,7 +333,7 @@ pa4s2_init (SANE_Status *status)
}
DBG (3, "pa4s2_init: %d ports reported by IEEE 1284 library\n", pplist.portc);
-
+
for (n=0; n<pplist.portc; n++)
DBG (6, "pa4s2_init: port %d is `%s`\n", n, pplist.portv[n]->name);
@@ -388,7 +388,7 @@ pa4s2_open (const char *dev, SANE_Status * status)
#if !defined (HAVE_LIBIEEE1284)
u_long base;
#endif
-
+
DBG (4, "pa4s2_open: trying to attach dev `%s`\n", dev);
if ((result = pa4s2_init(status)) != 0)
@@ -397,7 +397,7 @@ pa4s2_open (const char *dev, SANE_Status * status)
DBG (1, "pa4s2_open: failed to initialize\n");
return result;
}
-
+
#if !defined (HAVE_LIBIEEE1284)
{
@@ -526,7 +526,7 @@ pa4s2_open (const char *dev, SANE_Status * status)
if (ioperm (port[n].base, 5, 1))
{
- DBG (1, "pa4s2_open: cannot get io privilege for port 0x%03lx\n",
+ DBG (1, "pa4s2_open: cannot get io privilege for port 0x%03lx\n",
port[n].base);
@@ -715,7 +715,7 @@ pa4s2_readbyte_nib (int fd)
{
u_char val;
-
+
outbyte2 (fd, 0x05);
val = inbyte1(fd);
val >>= 4;
@@ -891,7 +891,7 @@ pa4s2_close (int fd, SANE_Status * status)
{
#if defined(HAVE_LIBIEEE1284)
- DBG (1, "pa4s2_close: can't free port '%s' (%s)\n",
+ DBG (1, "pa4s2_close: can't free port '%s' (%s)\n",
pplist.portv[fd]->name, pa4s2_libieee1284_errorstr(result));
#else
DBG (1, "pa4s2_close: can't free port 0x%03lx\n", port[fd].base);
@@ -1034,7 +1034,7 @@ sanei_pa4s2_scsi_pp_get_status(int fd, u_char *status)
/*
* SCSI-over-parallel scanners need this done when a register is
* selected
- */
+ */
SANE_Status
sanei_pa4s2_scsi_pp_reg_select (int fd, int reg)
{
@@ -1430,7 +1430,7 @@ sanei_pa4s2_enable (int fd, int enable)
/* io-permissions are not inherited after fork (at least not on
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))
{
DBG (1, "sanei_pa4s2_enable: cannot get io privilege for port"
@@ -1457,7 +1457,7 @@ sanei_pa4s2_enable (int fd, int enable)
{
#if defined(HAVE_LIBIEEE1284)
- DBG (4, "sanei_pa4s2_enable: disable port '%s'\n",
+ DBG (4, "sanei_pa4s2_enable: disable port '%s'\n",
pplist.portv[fd]->name);
#else
DBG (4, "sanei_pa4s2_enable: disable port 0x%03lx\n", port[fd].base);
diff --git a/sanei/sanei_pio.c b/sanei/sanei_pio.c
index 00e40ee..3290704 100644
--- a/sanei/sanei_pio.c
+++ b/sanei/sanei_pio.c
@@ -112,7 +112,7 @@ inb (u_long port)
#define PORT_DEV "/dev/port"
/* base 278 (lpt2)
-
+
ioport stat ctrl
offs 0 1 2
len 1 1 1 */
@@ -174,7 +174,7 @@ static int pio_write (const Port port, const u_char * buf, int n);
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
+static inline int
pio_outb (const Port port, u_char val, u_long addr)
{
@@ -190,7 +190,7 @@ pio_outb (const Port port, u_char val, u_long addr)
return 0;
}
-static inline int
+static inline int
pio_inb (const Port port, u_char * val, u_long addr)
{
@@ -206,7 +206,7 @@ pio_inb (const Port port, u_char * val, u_long addr)
return 0;
}
-static inline int
+static inline int
pio_wait (const Port port, u_char val, u_char mask)
{
int stat = 0;
@@ -268,7 +268,7 @@ pio_ctrl (const Port port, u_char val)
return;
}
-static inline void
+static inline void
pio_delay (const Port port)
{
inb (port->base + PIO_STAT); /* delay */
@@ -276,14 +276,14 @@ pio_delay (const Port port)
return;
}
-static inline void
+static inline void
pio_init (const Port port)
{
pio_ctrl (port, PIO_CTRL_IE);
return;
}
-static void
+static void
pio_reset (const Port port)
{
int n;
@@ -302,7 +302,7 @@ pio_reset (const Port port)
return;
}
-static int
+static int
pio_write (const Port port, const u_char * buf, int n)
{
int k;
@@ -356,7 +356,7 @@ pio_write (const Port port, const u_char * buf, int n)
return k;
}
-static int
+static int
pio_read (const Port port, u_char * buf, int n)
{
int k;
@@ -401,10 +401,10 @@ pio_read (const Port port, u_char * buf, int n)
}
/*
- Open the device, <dev> must contain a valid port number (as string).
+ Open the device, <dev> must contain a valid port number (as string).
*/
-static int
+static int
pio_open (const char *dev, SANE_Status * status)
{
static int first_time = 1;
@@ -481,7 +481,7 @@ pio_open (const char *dev, SANE_Status * status)
return n;
}
-SANE_Status
+SANE_Status
sanei_pio_open (const char *dev, int *fdp)
{
SANE_Status status;
@@ -490,7 +490,7 @@ sanei_pio_open (const char *dev, int *fdp)
return status;
}
-void
+void
sanei_pio_close (int fd)
{
Port p = port + fd;
@@ -512,7 +512,7 @@ sanei_pio_close (int fd)
return;
}
-int
+int
sanei_pio_read (int fd, u_char * buf, int n)
{
if ((0 > fd) && (NELEMS (port) <= fd))
@@ -524,7 +524,7 @@ sanei_pio_read (int fd, u_char * buf, int n)
return pio_read (&port[fd], buf, n);
}
-int
+int
sanei_pio_write (int fd, const u_char * buf, int n)
{
if ((0 > fd) && (NELEMS (port) <= fd))
@@ -546,30 +546,30 @@ 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
+void
sanei_pio_close (int fd)
{
close(fd);
return;
}
-int
+int
sanei_pio_read (int fd, u_char * buf, int n)
{
return(read(fd,buf,n));
}
-int
+int
sanei_pio_write (int fd, const u_char * buf, int n)
{
return(write(fd,buf,n));
@@ -585,19 +585,19 @@ sanei_pio_open (const char *dev, int *fdp)
}
-void
+void
sanei_pio_close (int fd)
{
return;
}
-int
+int
sanei_pio_read (int fd, u_char * buf, int n)
{
return -1;
}
-int
+int
sanei_pio_write (int fd, const u_char * buf, int n)
{
return -1;
diff --git a/sanei/sanei_pp.c b/sanei/sanei_pp.c
index dec84ee..89f3232 100644
--- a/sanei/sanei_pp.c
+++ b/sanei/sanei_pp.c
@@ -38,7 +38,7 @@
*
* If you write modifications of your own for SANE, it is your choice
* whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.
+ * If you do not wish that, delete this exception notice.
*
* This file implements an interface for accessing the parallelport
*/
@@ -50,7 +50,7 @@
* 3 - things nice to know
* 4 - code flow
* 5 - detailed flow
- * 6 - everything
+ * 6 - everything
*
* These debug levels can be set using the environment variable
* SANE_DEBUG_SANEI_PP
@@ -156,7 +156,7 @@ static unsigned long pp_thresh = 0;
#if (defined (HAVE_IOPERM) || defined (HAVE_LIBIEEE1284)) && !defined (IO_SUPPORT_MISSING)
typedef struct {
-
+
#ifndef HAVE_LIBIEEE1284
const char name[6];
u_long base; /**< i/o base address */
@@ -166,7 +166,7 @@ typedef struct {
u_int in_use; /**< port in use? */
u_int claimed; /**< port claimed? */
-
+
int caps; /**< port capabilities */
} PortRec, *Port;
@@ -181,8 +181,8 @@ static PortRec port[_MAX_PORTS];
/** redefine the CAPability flags */
enum ieee1284_capabilities
{
- CAP1284_RAW = (1<<0),
- CAP1284_NIBBLE = (1<<1), /* SPP mode */
+ CAP1284_RAW = (1<<0),
+ CAP1284_NIBBLE = (1<<1), /* SPP mode */
CAP1284_BYTE = (1<<2), /* PS/2 bidirectional */
CAP1284_COMPAT = (1<<3),
CAP1284_BECP = (1<<4),
@@ -315,12 +315,12 @@ pp_showcaps( int caps )
char ct[1024];
ct[0] = '\0';
-
+
if( caps & CAP1284_NIBBLE ) {
strcat( ct, "SPP " );
mode |= SANEI_PP_MODE_SPP;
}
-
+
if( caps & CAP1284_BYTE ) {
strcat( ct, "PS/2 " );
mode |= SANEI_PP_MODE_BIDI;
@@ -330,7 +330,7 @@ pp_showcaps( int caps )
strcat( ct, "EPP " );
mode |= SANEI_PP_MODE_EPP;
}
-
+
if( caps & CAP1284_EPPSWE ) {
strcat( ct, "EPPSWE " );
mode |= SANEI_PP_MODE_EPP;
@@ -357,13 +357,13 @@ pp_showcaps( int caps )
static int
pp_probe( int fd )
{
-#ifdef HAVE_IOPL
+#ifdef HAVE_IOPL
SANE_Byte c;
int i, j;
#endif
SANE_Byte a, b;
int retv = 0;
-
+
DBG( 4, "pp_probe: port 0x%04lx\n", port[fd].base );
/* SPP check */
@@ -383,7 +383,7 @@ pp_probe( int fd )
#ifdef HAVE_IOPL
/* clear at most 1k of data from FIFO */
- for( i = 1024; i > 0; i-- ) {
+ for( i = 1024; i > 0; i-- ) {
a = inbyte402( fd );
if ((a & 0x03) == 0x03)
goto no_ecp;
@@ -428,7 +428,7 @@ pp_probe( int fd )
DBG( 4, "pp_probe: ECP with a %i byte FIFO present\n", i );
retv += CAP1284_ECP;
}
-
+
no_ecp:
#endif
/* check for PS/2 compatible port */
@@ -522,7 +522,7 @@ static int pp_set_scpmode( int fd )
{
SANE_Byte tmp;
DBG( 4, "pp_set_scpmode\n" );
-
+
#ifdef HAVE_IOPL
tmp = inbyte402( fd );
tmp &= 0x1f;
@@ -531,7 +531,7 @@ static int pp_set_scpmode( int fd )
tmp = inb_ctrl( fd );
tmp &= 0x0f;
outb_ctrl ( fd, tmp );
-
+
return SANE_STATUS_GOOD;
}
@@ -547,7 +547,7 @@ static int pp_set_bidimode( int fd )
tmp = inb_ctrl( fd );
tmp = (tmp & 0x0f) | 0x20;
outb_ctrl ( fd, tmp );
-
+
return SANE_STATUS_GOOD;
}
@@ -563,7 +563,7 @@ static int pp_set_eppmode( int fd )
tmp = inb_ctrl( fd );
tmp = (tmp & 0xf0) | 0x40;
outb_ctrl ( fd, tmp );
-
+
return SANE_STATUS_GOOD;
}
@@ -572,7 +572,7 @@ static int pp_set_ecpmode( int fd )
#ifdef HAVE_IOPL
SANE_Byte tmp;
#endif
-
+
DBG( 4, "pp_set_ecpmode\n" );
#ifdef HAVE_IOPL
tmp = inbyte402( fd );
@@ -594,7 +594,7 @@ pp_setmode( int fd, int mode )
DBG( 2, "pp_setmode: mode not supported %d\n", mode );
return SANE_STATUS_UNSUPPORTED;
}
-
+
switch( mode ) {
case SANEI_PP_MODE_SPP: ret = pp_set_scpmode( fd ); break;
case SANEI_PP_MODE_BIDI: ret = pp_set_bidimode( fd ); break;
@@ -715,13 +715,13 @@ pp_init( void )
}
DBG( 3, "pp_init: %d ports reported by IEEE 1284 library\n", pplist.portc);
-
+
for( i = 0; i < pplist.portc; i++ )
DBG( 6, "pp_init: port %d is `%s`\n", i, pplist.portv[i]->name);
/* we support only up to _MAX_PORTS... */
if( pplist.portc > _MAX_PORTS ) {
- DBG (1, "pp_init: Lib IEEE 1284 reports too much ports: %d\n",
+ DBG (1, "pp_init: Lib IEEE 1284 reports too much ports: %d\n",
pplist.portc );
ieee1284_free_ports( &pplist );
@@ -759,7 +759,7 @@ pp_open( const char *dev, SANE_Status * status )
#else
int result;
#endif
-
+
DBG( 4, "pp_open: trying to attach dev `%s`\n", dev );
#if !defined (HAVE_LIBIEEE1284)
@@ -853,7 +853,7 @@ pp_open( const char *dev, SANE_Status * status )
/* TODO: insert FreeBSD compatible code here */
if( ioperm( port[i].base, 5, 1 )) {
- DBG( 1, "pp_open: cannot get io privilege for port 0x%03lx\n",
+ DBG( 1, "pp_open: cannot get io privilege for port 0x%03lx\n",
port[i].base);
port[i].in_use = SANE_FALSE;
@@ -867,7 +867,7 @@ pp_open( const char *dev, SANE_Status * status )
port[i].ecp_ctrl = inbyte402(i);
port[i].ctrl = inb_ctrl(i);
#endif
-
+
/* check the capabilities of this port */
port[i].caps = pp_probe( i );
#endif
@@ -908,7 +908,7 @@ pp_close( int fd, SANE_Status *status )
if( ioperm( port[fd].base, 5, 0 )) {
#endif
#if defined(HAVE_LIBIEEE1284)
- DBG( 1, "pp_close: can't free port '%s' (%s)\n",
+ DBG( 1, "pp_close: can't free port '%s' (%s)\n",
pplist.portv[fd]->name, pp_libieee1284_errorstr(result));
#else
DBG( 1, "pp_close: can't free port 0x%03lx\n", port[fd].base );
@@ -930,7 +930,7 @@ SANE_Status
sanei_pp_init( void )
{
SANE_Status result;
-
+
DBG_INIT();
result = pp_init();
@@ -1008,7 +1008,7 @@ sanei_pp_claim( int fd )
DBG( 2, "sanei_pp_claim: fd %d is invalid\n", fd );
return SANE_STATUS_INVAL;
}
-
+
result = ieee1284_claim (pplist.portv[fd]);
if (result) {
DBG (1, "sanei_pp_claim: failed (%s)\n",
@@ -1018,7 +1018,7 @@ sanei_pp_claim( int fd )
#endif
port[fd].claimed = SANE_TRUE;
-
+
return SANE_STATUS_GOOD;
}
@@ -1032,11 +1032,11 @@ sanei_pp_release( int fd )
DBG( 2, "sanei_pp_release: fd %d is invalid\n", fd );
return SANE_STATUS_INVAL;
}
-
+
ieee1284_release( pplist.portv[fd] );
#endif
port[fd].claimed = SANE_FALSE;
-
+
return SANE_STATUS_GOOD;
}
@@ -1121,7 +1121,7 @@ sanei_pp_inb_data( int fd )
{
#ifdef _PARANOIA
DBG( 4, "sanei_pp_inb_data: called for fd %d\n", fd );
-
+
#if defined(HAVE_LIBIEEE1284)
if ((fd < 0) || (fd >= pplist.portc)) {
#else
@@ -1139,7 +1139,7 @@ sanei_pp_inb_stat( int fd )
{
#ifdef _PARANOIA
DBG( 4, "sanei_pp_inb_stat: called for fd %d\n", fd );
-
+
#if defined(HAVE_LIBIEEE1284)
if ((fd < 0) || (fd >= pplist.portc)) {
#else
@@ -1174,7 +1174,7 @@ sanei_pp_inb_epp( int fd )
{
#ifdef _PARANOIA
DBG( 4, "sanei_pp_inb_epp: called for fd %d\n", fd );
-
+
#if defined(HAVE_LIBIEEE1284)
if ((fd < 0) || (fd >= pplist.portc)) {
#else
@@ -1224,7 +1224,7 @@ sanei_pp_setmode( int fd, int mode )
DBG( 2, "sanei_pp_setmode: invalid mode %d\n", mode );
return SANE_STATUS_INVAL;
}
-
+
#if defined(HAVE_LIBIEEE1284)
switch( mode ) {
case SANEI_PP_MODE_SPP: mode = M1284_NIBBLE; break;
@@ -1267,7 +1267,7 @@ sanei_pp_udelay( unsigned long usec )
if( usec < pp_thresh )
return;
-
+
do {
gettimeofday( &now, NULL );
} while ((now.tv_sec < deadline.tv_sec) ||
diff --git a/sanei/sanei_pv8630.c b/sanei/sanei_pv8630.c
index 848558e..c9bafce 100644
--- a/sanei/sanei_pv8630.c
+++ b/sanei/sanei_pv8630.c
@@ -5,7 +5,7 @@
Copyright (C) 2001 Marcio Teixeira
This file is part of the SANE package.
-
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
diff --git a/sanei/sanei_scsi.c b/sanei/sanei_scsi.c
index 2413d8f..ca3dbb0 100644
--- a/sanei/sanei_scsi.c
+++ b/sanei/sanei_scsi.c
@@ -252,11 +252,11 @@ static int unit_ready (int fd);
#endif
#if USE == SYSVR4_INTERFACE
-# define MAX_DATA 56*1024 /* don't increase or kernel will dump
- * tested with adsl, adsa and umax backend
- * it depends on the lowend scsi
- * drivers . But the most restriction
- * is in the UNIXWARE KERNEL witch do
+# define MAX_DATA 56*1024 /* don't increase or kernel will dump
+ * tested with adsl, adsa and umax backend
+ * it depends on the lowend scsi
+ * drivers . But the most restriction
+ * is in the UNIXWARE KERNEL witch do
* not allow more then 64kB DMA transfers */
static char lastrcmd[16]; /* hold command block of last read command */
#endif
@@ -875,7 +875,7 @@ sanei_scsi_open (const char *dev, int *fdp,
int fd, i;
#if USE == LINUX_INTERFACE
static int first_time = 1;
-#elif USE == MACOSX_INTERFACE
+#elif USE == MACOSX_INTERFACE
UInt8 *guid;
int len;
u_int d;
@@ -909,7 +909,7 @@ sanei_scsi_open (const char *dev, int *fdp,
With newer versions of the SG driver, check the available buffer
size by opening all SG device files belonging to a scanner,
issue the ioctl calls for setting and reading the reserved
- buffer size, and take the smallest value.
+ buffer size, and take the smallest value.
For older version of the SG driver, which don't support variable
buffer size, try to read /proc/sys/kernel/sg-big-biff ; if
@@ -958,7 +958,7 @@ sanei_scsi_open (const char *dev, int *fdp,
if (sscanf (dev, "b%dt%dl%d", &bus, &target, &lun) != 3)
{
- DBG (1, "sanei_scsi_open: device name `%s is not valid: %s\n",
+ DBG (1, "sanei_scsi_open: device name `%s´ is not valid: %s\n",
dev, strerror (errno));
return SANE_STATUS_INVAL;
}
@@ -1149,7 +1149,7 @@ sanei_scsi_open (const char *dev, int *fdp,
}
else
{
- DBG (1, "sanei_scsi_open: can't open device `%s: %s\n", dev,
+ DBG (1, "sanei_scsi_open: can't open device `%s´: %s\n", dev,
strerror (errno));
return SANE_STATUS_INVAL;
}
@@ -1163,7 +1163,7 @@ sanei_scsi_open (const char *dev, int *fdp,
if (4 !=
sscanf (dev, "/dev/passthru0:%d,%d,%d,%d", &bus, &cnt, &id, &lun))
{
- DBG (1, "sanei_scsi_open: device name `%s is not valid: %s\n",
+ DBG (1, "sanei_scsi_open: device name `%s´ is not valid: %s\n",
dev, strerror (errno));
return SANE_STATUS_INVAL;
}
@@ -1222,21 +1222,21 @@ sanei_scsi_open (const char *dev, int *fdp,
{
char scsi_hca_name[20];
u_int hca = 0;
-
+
if (sscanf (dev, "h%ub%ut%ul%u", &hca, &bus, &target, &lun) != 4)
{
DBG (1, "sanei_scsi_open: device name %s is not valid\n", dev);
return SANE_STATUS_INVAL;
}
-
+
snprintf(scsi_hca_name, 19, "\\\\.\\Scsi%d:", hca);
scsi_hca_name[19] = 0;
-
+
fd = CreateFile(scsi_hca_name, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS, NULL );
-
+
if (fd == INVALID_HANDLE_VALUE) fd = -1;
}
#else
@@ -1420,7 +1420,7 @@ sanei_scsi_open (const char *dev, int *fdp,
else
{
/* we have a really old SG driver version, or we're not opening
- an SG device file
+ an SG device file
*/
if (ioctl (fd, SG_GET_TIMEOUT, &ioctl_val) < 0)
{
@@ -2436,8 +2436,8 @@ issue (struct req *req)
}
#if 0
- /* Sometimes the Linux SCSI system reports bogus resid values.
- Observed with lk 2.4.5, 2.4.13, aic7xxx and sym53c8xx drivers,
+ /* Sometimes the Linux SCSI system reports bogus resid values.
+ Observed with lk 2.4.5, 2.4.13, aic7xxx and sym53c8xx drivers,
if command queueing is used. So we better issue only a warning
*/
if (status == SANE_STATUS_GOOD)
@@ -2601,7 +2601,7 @@ issue (struct req *req)
}
static int /* Returns 1 if match with 'name' set, else 0 */
-
+
lx_scan_sg (int exclude_devnum, char *name, size_t name_len,
int host, int channel, int id, int lun)
{
@@ -2636,7 +2636,7 @@ issue (struct req *req)
}
static int /* Returns 1 if match, else 0 */
-
+
lx_chk_devicename (int guess_devnum, char *name, size_t name_len,
int host, int channel, int id, int lun)
{
@@ -2945,8 +2945,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
char *me = "sanei_scsi_find_devices";
char path[PATH_MAX];
char dev_name[128];
- struct dirent buf;
- struct dirent *de;
+ struct dirent *buf;
DIR *scsidevs;
FILE *fp;
char *ptr;
@@ -2987,8 +2986,9 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
number = -1;
for (;;)
{
- ret = readdir_r(scsidevs, &buf, &de);
- if (ret != 0)
+ errno = 0;
+ buf = readdir (scsidevs);
+ if (errno != 0)
{
DBG (1, "%s: could not read directory %s: %s\n",
me, SYSFS_SCSI_DEVICES, strerror(errno));
@@ -2996,14 +2996,14 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
break;
}
- if (de == NULL)
+ if (buf == NULL)
break;
- if (buf.d_name[0] == '.')
+ if (buf->d_name[0] == '.')
continue;
/* Extract bus, channel, id, lun from directory name b:c:i:l */
- ptr = buf.d_name;
+ ptr = buf->d_name;
for (i = 0; i < 4; i++)
{
errno = 0;
@@ -3028,7 +3028,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
if (*end && (*end != ':'))
{
- DBG (1, "%s: parse error on string %s (%d)\n", me, buf.d_name, i);
+ DBG (1, "%s: parse error on string %s (%d)\n", me, buf->d_name, i);
i = 12; /* Skip */
break;
@@ -3036,7 +3036,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
if (val > INT_MAX)
{
- DBG (1, "%s: integer value too large (%s)\n", me, buf.d_name);
+ DBG (1, "%s: integer value too large (%s)\n", me, buf->d_name);
i = 12; /* Skip */
break;
@@ -3059,11 +3059,11 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
for (i = 0; i < 3; i++)
{
ret = snprintf (path, PATH_MAX, "%s/%s/%s",
- SYSFS_SCSI_DEVICES, buf.d_name, vmtfiles[i]);
+ SYSFS_SCSI_DEVICES, buf->d_name, vmtfiles[i]);
if ((ret < 0) || (ret >= PATH_MAX))
{
DBG (1, "%s: skipping %s/%s, PATH_MAX exceeded on %s\n",
- me, SYSFS_SCSI_DEVICES, buf.d_name, vmtfiles[i]);
+ me, SYSFS_SCSI_DEVICES, buf->d_name, vmtfiles[i]);
i = 12; /* Skip */
break;
@@ -3179,7 +3179,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
scsireq_t hdr;
int result;
-/* xxx obsolete:
+/* xxx obsolete:
cdb_size = CDB_SIZE (*(u_char *) src);
*/
@@ -3201,7 +3201,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
/* The old variant:
hdr.databuf = (char *) src + cdb_size;
hdr.datalen = src_size;
- xxxxxx huh? Shouldnt the above line have been src_size - cdb_size)
+ xxxxxx huh? Shouldn´t the above line have been src_size - cdb_size)
*/
hdr.databuf = (char *) src;
hdr.datalen = src_size;
@@ -5013,7 +5013,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
#if USE == WIN32_INTERFACE
SANE_Status
-sanei_scsi_cmd2 (int fd,
+sanei_scsi_cmd2 (int fd,
const void *cmd, size_t cmd_size,
const void *src, size_t src_size,
void *dst, size_t * dst_size)
@@ -5049,8 +5049,8 @@ sanei_scsi_cmd2 (int fd,
pkt.sptd.DataBuffer = src;
}
else {
- pkt.sptd.DataIn = SCSI_IOCTL_DATA_UNSPECIFIED;
- }
+ pkt.sptd.DataIn = SCSI_IOCTL_DATA_UNSPECIFIED;
+ }
pkt.sptd.TimeOutValue = sane_scsicmd_timeout;
@@ -5081,7 +5081,7 @@ sanei_scsi_cmd2 (int fd,
else {
return SANE_STATUS_IO_ERROR;
}
- }
+ }
else if (pkt.sptd.ScsiStatus != 0) {
DBG (1, "sanei_scsi_cmd2: ScsiStatus is %d\n",
pkt.sptd.ScsiStatus);
@@ -5152,14 +5152,14 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
adapter = (PSCSI_ADAPTER_BUS_INFO)buffer;
- for(i = 0; i < adapter->NumberOfBuses; i++) {
+ for(i = 0; i < adapter->NumberOfBuses; i++) {
if (adapter->BusData[i].InquiryDataOffset == 0) {
/* No device here */
continue;
}
- inquiry = (PSCSI_INQUIRY_DATA) (buffer +
+ inquiry = (PSCSI_INQUIRY_DATA) (buffer +
adapter->BusData[i].InquiryDataOffset);
while(1) {
diff --git a/sanei/sanei_thread.c b/sanei/sanei_thread.c
index fcf52c1..f701423 100644
--- a/sanei/sanei_thread.c
+++ b/sanei/sanei_thread.c
@@ -115,20 +115,22 @@ sanei_thread_is_forked( void )
/* Use this to mark a SANE_Pid as invaild instead of marking with -1.
*/
+#ifdef USE_PTHREAD
static void
sanei_thread_set_invalid( SANE_Pid *pid )
{
#ifdef WIN32
#ifdef WINPTHREAD_API
- *pid = 0;
+ *pid = (pthread_t) 0;
#else
pid->p = 0;
#endif
#else
- *pid = -1;
+ *pid = (pthread_t) -1;
#endif
}
+#endif
/* Return if PID is a valid PID or not. */
SANE_Bool
@@ -162,12 +164,12 @@ sanei_thread_pid_to_long( SANE_Pid pid )
#ifdef WIN32
#ifdef WINPTHREAD_API
- rc = pid;
+ rc = (long) pid;
#else
rc = pid.p;
#endif
#else
- rc = pid;
+ rc = (long) pid;
#endif
return rc;
@@ -225,7 +227,7 @@ sanei_thread_begin( int (*func)(void *args), void* args )
DBG( 1, "_beginthread() failed\n" );
return -1;
}
-
+
DBG( 2, "_beginthread() created thread %d\n", pid );
return pid;
}
@@ -282,7 +284,7 @@ sanei_thread_begin( int (*func)(void *args), void* args )
DBG( 1, "resume_thread() failed\n" );
return -1;
}
-
+
DBG( 2, "spawn_thread() created thread %d\n", pid );
return pid;
}
@@ -374,7 +376,7 @@ restore_sigpipe( void )
sigemptyset( &act.sa_mask );
act.sa_flags = 0;
act.sa_handler = SIG_DFL;
-
+
DBG( 2, "restoring SIGPIPE to SIG_DFL\n" );
sigaction( SIGPIPE, &act, NULL );
}
@@ -443,7 +445,7 @@ sanei_thread_begin( int (func)(void *args), void* args )
}
else
DBG( 2, "pthread_create() created thread %ld\n",
- (SANE_Pid)thread );
+ sanei_thread_pid_to_long(thread) );
return (SANE_Pid)thread;
#else
@@ -458,7 +460,7 @@ sanei_thread_begin( int (func)(void *args), void* args )
/* run in child context... */
int status = func( args );
-
+
/* don't use exit() since that would run the atexit() handlers */
_exit( status );
}
@@ -511,10 +513,11 @@ sanei_thread_waitpid( SANE_Pid pid, int *status )
}
if ( EDEADLK == rc ) {
if ( (pthread_t)pid != pthread_self() ) {
- /* call detach in any case to make sure that the thread resources
+ /* call detach in any case to make sure that the thread resources
* will be freed, when the thread has terminated
*/
- DBG(2, "* detaching thread(%ld)\n", pid );
+ DBG(2, "* detaching thread(%ld)\n",
+ sanei_thread_pid_to_long(pid) );
pthread_detach((pthread_t)pid);
}
}
diff --git a/sanei/sanei_udp.c b/sanei/sanei_udp.c
index ab316ea..b5bb8cc 100644
--- a/sanei/sanei_udp.c
+++ b/sanei/sanei_udp.c
@@ -229,4 +229,3 @@ sanei_udp_recvfrom(int fd, u_char * buf, int count, char **fromp)
return l;
}
-
diff --git a/sanei/sanei_usb.c b/sanei/sanei_usb.c
index e4b23dc..6fd6040 100644
--- a/sanei/sanei_usb.c
+++ b/sanei/sanei_usb.c
@@ -1262,6 +1262,77 @@ sanei_usb_set_endpoint (SANE_Int dn, SANE_Int ep_type, SANE_Int ep)
}
}
+#if HAVE_LIBUSB_LEGACY || HAVE_LIBUSB || HAVE_USBCALLS
+static const char* sanei_usb_transfer_type_desc(SANE_Int transfer_type)
+{
+ switch (transfer_type)
+ {
+ case USB_ENDPOINT_TYPE_INTERRUPT: return "interrupt";
+ case USB_ENDPOINT_TYPE_BULK: return "bulk";
+ case USB_ENDPOINT_TYPE_ISOCHRONOUS: return "isochronous";
+ case USB_ENDPOINT_TYPE_CONTROL: return "control";
+ }
+ return NULL;
+}
+
+// Similar sanei_usb_set_endpoint, but ignors duplicate endpoints
+static void sanei_usb_add_endpoint(device_list_type* device,
+ SANE_Int transfer_type,
+ SANE_Int ep_address,
+ SANE_Int ep_direction)
+{
+ DBG(5, "%s: direction: %d, address: %d, transfer_type: %d\n",
+ __func__, ep_direction, ep_address, transfer_type);
+
+ SANE_Int* ep_in = NULL;
+ SANE_Int* ep_out = NULL;
+ const char* transfer_type_msg = sanei_usb_transfer_type_desc(transfer_type);
+
+ switch (transfer_type)
+ {
+ case USB_ENDPOINT_TYPE_INTERRUPT:
+ ep_in = &device->int_in_ep;
+ ep_out = &device->int_out_ep;
+ break;
+ case USB_ENDPOINT_TYPE_BULK:
+ ep_in = &device->bulk_in_ep;
+ ep_out = &device->bulk_out_ep;
+ break;
+ case USB_ENDPOINT_TYPE_ISOCHRONOUS:
+ ep_in = &device->iso_in_ep;
+ ep_out = &device->iso_out_ep;
+ break;
+ case USB_ENDPOINT_TYPE_CONTROL:
+ ep_in = &device->control_in_ep;
+ ep_out = &device->control_out_ep;
+ break;
+ }
+
+ DBG(5, "%s: found %s-%s endpoint (address 0x%02x)\n",
+ __func__, transfer_type_msg, ep_direction ? "in" : "out",
+ ep_address);
+
+ if (ep_direction) // in
+ {
+ if (*ep_in)
+ DBG(3, "%s: we already have a %s-in endpoint "
+ "(address: 0x%02x), ignoring the new one\n",
+ __func__, transfer_type_msg, *ep_in);
+ else
+ *ep_in = ep_address;
+ }
+ else
+ {
+ if (*ep_out)
+ DBG(3, "%s: we already have a %s-out endpoint "
+ "(address: 0x%02x), ignoring the new one\n",
+ __func__, transfer_type_msg, *ep_out);
+ else
+ *ep_out = ep_address;
+ }
+}
+#endif // HAVE_LIBUSB_LEGACY || HAVE_LIBUSB || HAVE_USBCALLS
+
SANE_Int
sanei_usb_get_endpoint (SANE_Int dn, SANE_Int ep_type)
{
@@ -1460,132 +1531,12 @@ sanei_usb_open (SANE_String_Const devname, SANE_Int * dn)
DBG (5, "sanei_usb_open: endpoint nr: %d\n", num);
transfer_type =
endpoint->bmAttributes & USB_ENDPOINT_TYPE_MASK;
- address =
- endpoint->
- bEndpointAddress & USB_ENDPOINT_ADDRESS_MASK;
direction =
endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK;
- DBG (5, "sanei_usb_open: direction: %d\n", direction);
-
- DBG (5,
- "sanei_usb_open: address: %d transfertype: %d\n",
- address, transfer_type);
-
-
- /* save the endpoints we need later */
- if (transfer_type == USB_ENDPOINT_TYPE_INTERRUPT)
- {
- DBG (5,
- "sanei_usb_open: found interrupt-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].int_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a int-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].int_in_ep);
- else
- devices[devcount].int_in_ep =
- endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].int_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a int-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].int_out_ep);
- else
- devices[devcount].int_out_ep =
- endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == USB_ENDPOINT_TYPE_BULK)
- {
- DBG (5,
- "sanei_usb_open: found bulk-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].bulk_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a bulk-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].bulk_in_ep);
- else
- devices[devcount].bulk_in_ep =
- endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].bulk_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a bulk-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].bulk_out_ep);
- else
- devices[devcount].bulk_out_ep =
- endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == USB_ENDPOINT_TYPE_ISOCHRONOUS)
- {
- DBG (5,
- "sanei_usb_open: found isochronous-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].iso_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a isochronous-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].iso_in_ep);
- else
- devices[devcount].iso_in_ep =
- endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].iso_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a isochronous-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].iso_out_ep);
- else
- devices[devcount].iso_out_ep =
- endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == USB_ENDPOINT_TYPE_CONTROL)
- {
- DBG (5,
- "sanei_usb_open: found control-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].control_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a control-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].control_in_ep);
- else
- devices[devcount].control_in_ep =
- endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].control_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a control-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].control_out_ep);
- else
- devices[devcount].control_out_ep =
- endpoint->bEndpointAddress;
- }
- }
+ sanei_usb_add_endpoint(&devices[devcount], transfer_type,
+ endpoint->bEndpointAddress,
+ direction);
}
}
}
@@ -1769,124 +1720,39 @@ sanei_usb_open (SANE_String_Const devname, SANE_Int * dn)
for (num = 0; num < interface->bNumEndpoints; num++)
{
const struct libusb_endpoint_descriptor *endpoint;
- int address, direction, transfer_type;
+ int direction, transfer_type, transfer_type_libusb;
endpoint = &interface->endpoint[num];
DBG (5, "sanei_usb_open: endpoint nr: %d\n", num);
- transfer_type = endpoint->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK;
- address = endpoint->bEndpointAddress & LIBUSB_ENDPOINT_ADDRESS_MASK;
+ transfer_type_libusb =
+ endpoint->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK;
direction = endpoint->bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK;
- DBG (5, "sanei_usb_open: direction: %d\n", direction);
- DBG (5, "sanei_usb_open: address: %d transfertype: %d\n",
- address, transfer_type);
-
- /* save the endpoints we need later */
- if (transfer_type == LIBUSB_TRANSFER_TYPE_INTERRUPT)
- {
- DBG (5,
- "sanei_usb_open: found interrupt-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].int_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a int-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].int_in_ep);
- else
- devices[devcount].int_in_ep = endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].int_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a int-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].int_out_ep);
- else
- devices[devcount].int_out_ep = endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == LIBUSB_TRANSFER_TYPE_BULK)
- {
- DBG (5,
- "sanei_usb_open: found bulk-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].bulk_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a bulk-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].bulk_in_ep);
- else
- devices[devcount].bulk_in_ep = endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].bulk_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a bulk-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].bulk_out_ep);
- else
- devices[devcount].bulk_out_ep = endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == LIBUSB_TRANSFER_TYPE_ISOCHRONOUS)
- {
- DBG (5,
- "sanei_usb_open: found isochronous-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].iso_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a isochronous-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].iso_in_ep);
- else
- devices[devcount].iso_in_ep = endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].iso_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a isochronous-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].iso_out_ep);
- else
- devices[devcount].iso_out_ep = endpoint->bEndpointAddress;
- }
- }
- else if (transfer_type == LIBUSB_TRANSFER_TYPE_CONTROL)
- {
- DBG (5,
- "sanei_usb_open: found control-%s endpoint (address 0x%02x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].control_in_ep)
- DBG (3,
- "sanei_usb_open: we already have a control-in endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].control_in_ep);
- else
- devices[devcount].control_in_ep = endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].control_out_ep)
- DBG (3,
- "sanei_usb_open: we already have a control-out endpoint "
- "(address: 0x%02x), ignoring the new one\n",
- devices[devcount].control_out_ep);
- else
- devices[devcount].control_out_ep = endpoint->bEndpointAddress;
- }
- }
+ // don't rely on LIBUSB_TRANSFER_TYPE_* mapping to
+ // USB_ENDPOINT_TYPE_* even though they'll most likely be
+ // the same
+ switch (transfer_type_libusb)
+ {
+ case LIBUSB_TRANSFER_TYPE_INTERRUPT:
+ transfer_type = USB_ENDPOINT_TYPE_INTERRUPT;
+ break;
+ case LIBUSB_TRANSFER_TYPE_BULK:
+ transfer_type = USB_ENDPOINT_TYPE_BULK;
+ break;
+ case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS:
+ transfer_type = LIBUSB_TRANSFER_TYPE_ISOCHRONOUS;
+ break;
+ case LIBUSB_TRANSFER_TYPE_CONTROL:
+ transfer_type = USB_ENDPOINT_TYPE_CONTROL;
+ break;
+
+ }
+
+ sanei_usb_add_endpoint(&devices[devcount],
+ transfer_type,
+ endpoint->bEndpointAddress,
+ direction);
}
}
}
@@ -2016,62 +1882,21 @@ sanei_usb_open (SANE_String_Const devname, SANE_Int * dn)
break;
case USB_DT_ENDPOINT:
endpoint = (struct usb_endpoint_descriptor*)pDescHead;
- address = endpoint->bEndpointAddress;
direction = endpoint->bEndpointAddress & USB_ENDPOINT_DIR_MASK;
transfer_type = endpoint->bmAttributes & USB_ENDPOINT_TYPE_MASK;
- /* save the endpoints we need later */
- if (transfer_type == USB_ENDPOINT_TYPE_INTERRUPT)
- {
- DBG (5, "sanei_usb_open: found interupt-%s endpoint (address %2x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].int_in_ep)
- DBG (3, "sanei_usb_open: we already have a int-in endpoint "
- "(address: %d), ignoring the new one\n",
- devices[devcount].int_in_ep);
- else
- devices[devcount].int_in_ep = endpoint->bEndpointAddress;
- }
- else
- if (devices[devcount].int_out_ep)
- DBG (3, "sanei_usb_open: we already have a int-out endpoint "
- "(address: %d), ignoring the new one\n",
- devices[devcount].int_out_ep);
- else
- devices[devcount].int_out_ep = endpoint->bEndpointAddress;
- }
- else if (transfer_type == USB_ENDPOINT_TYPE_BULK)
- {
- DBG (5, "sanei_usb_open: found bulk-%s endpoint (address %2x)\n",
- direction ? "in" : "out", address);
- if (direction) /* in */
- {
- if (devices[devcount].bulk_in_ep)
- DBG (3, "sanei_usb_open: we already have a bulk-in endpoint "
- "(address: %d), ignoring the new one\n",
- devices[devcount].bulk_in_ep);
- else
- devices[devcount].bulk_in_ep = endpoint->bEndpointAddress;
- }
- else
- {
- if (devices[devcount].bulk_out_ep)
- DBG (3, "sanei_usb_open: we already have a bulk-out endpoint "
- "(address: %d), ignoring the new one\n",
- devices[devcount].bulk_out_ep);
- else
- devices[devcount].bulk_out_ep = endpoint->bEndpointAddress;
- }
- }
+
+ if (transfer_type == USB_ENDPOINT_TYPE_INTERRUPT ||
+ transfer_type == USB_ENDPOINT_TYPE_BULK)
+ {
+ sanei_usb_add_endpoint(&devices[devcount], transfer_type,
+ endpoint->bEndpointAddress, direction);
+ }
/* ignore currently unsupported endpoints */
else {
DBG (5, "sanei_usb_open: ignoring %s-%s endpoint "
"(address: %d)\n",
- transfer_type == USB_ENDPOINT_TYPE_CONTROL ? "control" :
- transfer_type == USB_ENDPOINT_TYPE_ISOCHRONOUS
- ? "isochronous" : "interrupt",
- direction ? "in" : "out", address);
+ sanei_usb_transfer_type_desc(transfer_type),
+ direction ? "in" : "out", address);
continue;
}
break;
@@ -2344,8 +2169,8 @@ sanei_usb_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
if (ret < 0)
{
- DBG (1, "sanei_usb_read_bulk: read failed: %s\n",
- sanei_libusb_strerror (ret));
+ DBG (1, "sanei_usb_read_bulk: read failed (still got %d bytes): %s\n",
+ rsize, sanei_libusb_strerror (ret));
read_size = -1;
}
@@ -2372,9 +2197,10 @@ sanei_usb_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
#ifdef HAVE_USBCALLS
int rc;
char* buffer_ptr = (char*) buffer;
- while (*size)
+ size_t requested_size = *size;
+ while (requested_size)
{
- ULONG ulToRead = (*size>MAX_RW)?MAX_RW:*size;
+ ULONG ulToRead = (requested_size>MAX_RW)?MAX_RW:requested_size;
ULONG ulNum = ulToRead;
DBG (5, "Entered usbcalls UsbBulkRead with dn = %d\n",dn);
DBG (5, "Entered usbcalls UsbBulkRead with dh = %p\n",dh);
@@ -2392,7 +2218,7 @@ sanei_usb_read_bulk (SANE_Int dn, SANE_Byte * buffer, size_t * size)
return SANE_STATUS_INVAL;
}
if (rc || (ulNum!=ulToRead)) return SANE_STATUS_INVAL;
- *size -=ulToRead;
+ requested_size -=ulToRead;
buffer_ptr += ulToRead;
read_size += ulToRead;
}
@@ -2529,11 +2355,12 @@ sanei_usb_write_bulk (SANE_Int dn, const SANE_Byte * buffer, size_t * size)
DBG (5, "Entered usbcalls UsbBulkWrite with bulk_out_ep = 0x%02x\n",devices[dn].bulk_out_ep);
DBG (5, "Entered usbcalls UsbBulkWrite with interface_nr = %d\n",devices[dn].interface_nr);
DBG (5, "Entered usbcalls UsbBulkWrite with usbcalls_timeout = %d\n",usbcalls_timeout);
- while (*size)
+ size_t requested_size = *size;
+ while (requested_size)
{
- ULONG ulToWrite = (*size>MAX_RW)?MAX_RW:*size;
+ ULONG ulToWrite = (requested_size>MAX_RW)?MAX_RW:requested_size;
- DBG (5, "size requested to write = %lu, ulToWrite = %lu\n",(unsigned long) *size,ulToWrite);
+ DBG (5, "size requested to write = %lu, ulToWrite = %lu\n",(unsigned long) requested_size,ulToWrite);
if (devices[dn].bulk_out_ep){
rc = UsbBulkWrite (dh, devices[dn].bulk_out_ep, devices[dn].interface_nr,
ulToWrite, (char*) buffer, usbcalls_timeout);
@@ -2545,10 +2372,10 @@ sanei_usb_write_bulk (SANE_Int dn, const SANE_Byte * buffer, size_t * size)
return SANE_STATUS_INVAL;
}
if (rc) return SANE_STATUS_INVAL;
- *size -=ulToWrite;
+ requested_size -=ulToWrite;
buffer += ulToWrite;
write_size += ulToWrite;
- DBG (5, "size = %d, write_size = %d\n",*size, write_size);
+ DBG (5, "size = %d, write_size = %d\n", requested_size, write_size);
}
#else /* not HAVE_USBCALLS */
{
@@ -2619,7 +2446,6 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
}
if ((rtype & 0x80) && debug_level > 10)
print_buffer (data, len);
- return SANE_STATUS_GOOD;
#elif defined(__BEOS__)
struct usb_scanner_ioctl_ctrlmsg c;
@@ -2638,8 +2464,6 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
}
if ((rtype & 0x80) && debug_level > 10)
print_buffer (data, len);
-
- return SANE_STATUS_GOOD;
#else /* not __linux__ */
DBG (5, "sanei_usb_control_msg: not supported on this OS\n");
return SANE_STATUS_UNSUPPORTED;
@@ -2661,7 +2485,6 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
}
if ((rtype & 0x80) && debug_level > 10)
print_buffer (data, len);
- return SANE_STATUS_GOOD;
}
#elif defined(HAVE_LIBUSB)
{
@@ -2678,7 +2501,6 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
}
if ((rtype & 0x80) && debug_level > 10)
print_buffer (data, len);
- return SANE_STATUS_GOOD;
}
#else /* not HAVE_LIBUSB_LEGACY && not HAVE_LIBUSB*/
{
@@ -2702,7 +2524,6 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
}
if ((rtype & 0x80) && debug_level > 10)
print_buffer (data, len);
- return SANE_STATUS_GOOD;
#else /* not HAVE_USBCALLS */
{
DBG (1, "sanei_usb_control_msg: usbcalls support missing\n");
@@ -2716,6 +2537,7 @@ sanei_usb_control_msg (SANE_Int dn, SANE_Int rtype, SANE_Int req,
devices[dn].method);
return SANE_STATUS_UNSUPPORTED;
}
+ return SANE_STATUS_GOOD;
}
SANE_Status
@@ -3160,7 +2982,6 @@ sanei_usb_get_descriptor( SANE_Int dn,
desc->dev_sub_class = usb_descr->bDeviceSubClass;
desc->dev_protocol = usb_descr->bDeviceProtocol;
desc->max_packet_size = usb_descr->bMaxPacketSize0;
- return SANE_STATUS_GOOD;
}
#elif defined(HAVE_LIBUSB)
{
@@ -3185,7 +3006,6 @@ sanei_usb_get_descriptor( SANE_Int dn,
desc->dev_sub_class = lu_desc.bDeviceSubClass;
desc->dev_protocol = lu_desc.bDeviceProtocol;
desc->max_packet_size = lu_desc.bMaxPacketSize0;
- return SANE_STATUS_GOOD;
}
#else /* not HAVE_LIBUSB_LEGACY && not HAVE_LIBUSB */
{
@@ -3193,4 +3013,5 @@ sanei_usb_get_descriptor( SANE_Int dn,
return SANE_STATUS_UNSUPPORTED;
}
#endif /* not HAVE_LIBUSB_LEGACY && not HAVE_LIBUSB */
+ return SANE_STATUS_GOOD;
}
diff --git a/sanei/sanei_wire.c b/sanei/sanei_wire.c
index a43cc2e..32cd1a0 100644
--- a/sanei/sanei_wire.c
+++ b/sanei/sanei_wire.c
@@ -67,7 +67,7 @@ sanei_w_space (Wire * w, size_t howmuch)
if (w->status != 0)
{
- DBG (1, "sanei_w_space: wire is in invalid state %d\n",
+ DBG (1, "sanei_w_space: wire is in invalid state %d\n",
w->status);
return;
}
@@ -81,7 +81,7 @@ sanei_w_space (Wire * w, size_t howmuch)
case WIRE_ENCODE:
nbytes = w->buffer.curr - w->buffer.start;
w->buffer.curr = w->buffer.start;
- DBG (4, "sanei_w_space: ENCODE: sending %lu bytes\n",
+ DBG (4, "sanei_w_space: ENCODE: sending %lu bytes\n",
(u_long) nbytes);
while (nbytes > 0)
{
@@ -184,7 +184,7 @@ sanei_w_array (Wire * w, SANE_Word * len_ptr, void **v,
else
DBG (1, "sanei_w_array: FREE: tried to free array but *len_ptr or *v "
"was NULL\n");
-
+
DBG (4, "sanei_w_array: FREE: done\n");
return;
}
@@ -200,14 +200,14 @@ sanei_w_array (Wire * w, SANE_Word * len_ptr, void **v,
return;
}
DBG (4, "sanei_w_array: array has %d elements\n", len);
-
+
if (w->direction == WIRE_DECODE)
{
*len_ptr = len;
if (len)
{
- if (((unsigned int) len) > MAX_MEM
- || ((unsigned int) len * element_size) > MAX_MEM
+ if (((unsigned int) len) > MAX_MEM
+ || ((unsigned int) len * element_size) > MAX_MEM
|| (w->allocated_memory + len * element_size) > MAX_MEM)
{
DBG (0, "sanei_w_array: DECODE: maximum amount of allocated memory "
@@ -291,7 +291,7 @@ sanei_w_ptr (Wire * w, void **v, WireCodecFunc w_value, size_t value_size)
{
DBG (0, "sanei_w_ptr: DECODE: maximum amount of allocated memory "
"exceeded (limit: %u, new allocation: %lu, total: %lu bytes)\n",
- MAX_MEM, (unsigned long)value_size,
+ MAX_MEM, (unsigned long)value_size,
(unsigned long)(w->allocated_memory + value_size));
w->status = ENOMEM;
return;
@@ -581,8 +581,8 @@ flush (Wire * w)
void
sanei_w_set_dir (Wire * w, WireDirection dir)
{
- DBG (3, "sanei_w_set_dir: wire %d, old direction WIRE_%s\n", w->io.fd,
- w->direction == WIRE_ENCODE ? "ENCODE" :
+ DBG (3, "sanei_w_set_dir: wire %d, old direction WIRE_%s\n", w->io.fd,
+ w->direction == WIRE_ENCODE ? "ENCODE" :
(w->direction == WIRE_DECODE ? "DECODE" : "FREE"));
if (w->direction == WIRE_DECODE && w->buffer.curr != w->buffer.end)
DBG (1, "sanei_w_set_dir: WARNING: will delete %lu bytes from buffer\n",
@@ -591,8 +591,8 @@ sanei_w_set_dir (Wire * w, WireDirection dir)
w->direction = dir;
DBG (4, "sanei_w_set_dir: direction changed\n");
flush (w);
- DBG (3, "sanei_w_set_dir: wire %d, new direction WIRE_%s\n", w->io.fd,
- dir == WIRE_ENCODE ? "ENCODE" :
+ DBG (3, "sanei_w_set_dir: wire %d, new direction WIRE_%s\n", w->io.fd,
+ dir == WIRE_ENCODE ? "ENCODE" :
(dir == WIRE_DECODE ? "DECODE" : "FREE"));
}
@@ -656,13 +656,13 @@ void
sanei_w_init (Wire * w, void (*codec_init_func) (Wire *))
{
DBG_INIT ();
-
+
DBG (3, "sanei_w_init: initializing\n");
w->status = 0;
w->direction = WIRE_ENCODE;
w->buffer.size = 8192;
w->buffer.start = malloc (w->buffer.size);
-
+
if (w->buffer.start == 0)
{
/* Malloc failed, so return an error. */
diff --git a/test-driver b/test-driver
deleted file mode 100755
index d306056..0000000
--- a/test-driver
+++ /dev/null
@@ -1,139 +0,0 @@
-#! /bin/sh
-# test-driver - basic testsuite driver script.
-
-scriptversion=2013-07-13.22; # UTC
-
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU 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 <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-# Make unconditional expansion of undefined variables an error. This
-# helps a lot in preventing typo-related bugs.
-set -u
-
-usage_error ()
-{
- echo "$0: $*" >&2
- print_usage >&2
- exit 2
-}
-
-print_usage ()
-{
- cat <<END
-Usage:
- test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
- [--expect-failure={yes|no}] [--color-tests={yes|no}]
- [--enable-hard-errors={yes|no}] [--]
- TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
-The '--test-name', '--log-file' and '--trs-file' options are mandatory.
-END
-}
-
-test_name= # Used for reporting.
-log_file= # Where to save the output of the test script.
-trs_file= # Where to save the metadata of the test run.
-expect_failure=no
-color_tests=no
-enable_hard_errors=yes
-while test $# -gt 0; do
- case $1 in
- --help) print_usage; exit $?;;
- --version) echo "test-driver $scriptversion"; exit $?;;
- --test-name) test_name=$2; shift;;
- --log-file) log_file=$2; shift;;
- --trs-file) trs_file=$2; shift;;
- --color-tests) color_tests=$2; shift;;
- --expect-failure) expect_failure=$2; shift;;
- --enable-hard-errors) enable_hard_errors=$2; shift;;
- --) shift; break;;
- -*) usage_error "invalid option: '$1'";;
- *) break;;
- esac
- shift
-done
-
-missing_opts=
-test x"$test_name" = x && missing_opts="$missing_opts --test-name"
-test x"$log_file" = x && missing_opts="$missing_opts --log-file"
-test x"$trs_file" = x && missing_opts="$missing_opts --trs-file"
-if test x"$missing_opts" != x; then
- usage_error "the following mandatory options are missing:$missing_opts"
-fi
-
-if test $# -eq 0; then
- usage_error "missing argument"
-fi
-
-if test $color_tests = yes; then
- # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
- red='' # Red.
- grn='' # Green.
- lgn='' # Light green.
- blu='' # Blue.
- mgn='' # Magenta.
- std='' # No color.
-else
- red= grn= lgn= blu= mgn= std=
-fi
-
-do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
-trap "st=129; $do_exit" 1
-trap "st=130; $do_exit" 2
-trap "st=141; $do_exit" 13
-trap "st=143; $do_exit" 15
-
-# Test script is run here.
-"$@" >$log_file 2>&1
-estatus=$?
-if test $enable_hard_errors = no && test $estatus -eq 99; then
- estatus=1
-fi
-
-case $estatus:$expect_failure in
- 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
- 0:*) col=$grn res=PASS recheck=no gcopy=no;;
- 77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
- 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;;
- *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;;
- *:*) col=$red res=FAIL recheck=yes gcopy=yes;;
-esac
-
-# Report outcome to console.
-echo "${col}${res}${std}: $test_name"
-
-# Register the test result, and other relevant metadata.
-echo ":test-result: $res" > $trs_file
-echo ":global-test-result: $res" >> $trs_file
-echo ":recheck: $recheck" >> $trs_file
-echo ":copy-in-global-log: $gcopy" >> $trs_file
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "; # UTC"
-# End:
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 9e9eac7..01282d4 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -4,7 +4,7 @@
## This file is part of the "Sane" build infra-structure. See
## included LICENSE file for license information.
-SUBDIRS = sanei tools
+SUBDIRS = backend sanei tools
SCANIMAGE = ../frontend/scanimage$(EXEEXT)
TESTFILE = $(srcdir)/testfile.pnm
@@ -22,21 +22,21 @@ help:
test: test.local
-test.local:
+test.local:
@echo "**** Testing $(SCANIMAGE) with device $(DEVICE)"
@if echo "---> Trying flatbed scanner" && \
$(SCANIMAGE) -d $(DEVICE) -T && \
- echo "<--- Flatbed scanner succeded" && \
+ echo "<--- Flatbed scanner succeeded" && \
echo "---> Trying three pass flatbed scanner" && \
$(SCANIMAGE) -d $(DEVICE) --mode Color --three-pass=yes -T && \
- echo "<--- Three pass scanner succeded" && \
+ echo "<--- Three pass scanner succeeded" && \
echo "---> Trying hand scanner" && \
$(SCANIMAGE) -d $(DEVICE) --hand-scanner=yes -T && \
- echo "<--- Hand scanner succeded" && \
+ echo "<--- Hand scanner succeeded" && \
echo "---> Checking 16 bit color mode" && \
$(SCANIMAGE) -d $(DEVICE) $(OPTIONS) && \
cmp -s $(TESTFILE) $(OUTFILE) && \
- echo "<--- 16 bit color mode succeded" && \
+ echo "<--- 16 bit color mode succeeded" && \
rm $(OUTFILE) ; \
then echo ; echo ; echo "**** All tests passed" ; \
else echo ; echo; \
diff --git a/testsuite/Makefile.in b/testsuite/Makefile.in
deleted file mode 100644
index c3c4f3c..0000000
--- a/testsuite/Makefile.in
+++ /dev/null
@@ -1,725 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = testsuite
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
- ctags-recursive dvi-recursive html-recursive info-recursive \
- install-data-recursive install-dvi-recursive \
- install-exec-recursive install-html-recursive \
- install-info-recursive install-pdf-recursive \
- install-ps-recursive install-recursive installcheck-recursive \
- installdirs-recursive pdf-recursive ps-recursive \
- tags-recursive uninstall-recursive
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
- distclean-recursive maintainer-clean-recursive
-am__recursive_targets = \
- $(RECURSIVE_TARGETS) \
- $(RECURSIVE_CLEAN_TARGETS) \
- $(am__extra_recursive_targets)
-AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- distdir
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-am__relativize = \
- dir0=`pwd`; \
- sed_first='s,^\([^/]*\)/.*$$,\1,'; \
- sed_rest='s,^[^/]*/*,,'; \
- sed_last='s,^.*/\([^/]*\)$$,\1,'; \
- sed_butlast='s,/*[^/]*$$,,'; \
- while test -n "$$dir1"; do \
- first=`echo "$$dir1" | sed -e "$$sed_first"`; \
- if test "$$first" != "."; then \
- if test "$$first" = ".."; then \
- dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
- dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
- else \
- first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
- if test "$$first2" = "$$first"; then \
- dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
- else \
- dir2="../$$dir2"; \
- fi; \
- dir0="$$dir0"/"$$first"; \
- fi; \
- fi; \
- dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
- done; \
- reldir="$$dir2"
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SUBDIRS = sanei tools
-SCANIMAGE = ../frontend/scanimage$(EXEEXT)
-TESTFILE = $(srcdir)/testfile.pnm
-OUTFILE = outfile.pnm
-DEVICE = test
-OPTIONS = --mode Color --depth 16 --test-picture "Color pattern" --resolution 50 -y 20 -x 20 > $(OUTFILE)
-EXTRA_DIST = README testfile.pnm
-CLEANFILES = $(OUTFILE)
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu testsuite/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-# This directory's subdirectories are mostly independent; you can cd
-# into them and run 'make' without going through this Makefile.
-# To change the values of 'make' variables: instead of editing Makefiles,
-# (1) if the variable is set in 'config.status', edit 'config.status'
-# (which will cause the Makefiles to be regenerated when you run 'make');
-# (2) otherwise, pass the desired values on the 'make' command line.
-$(am__recursive_targets):
- @fail=; \
- if $(am__make_keepgoing); then \
- failcom='fail=yes'; \
- else \
- failcom='exit 1'; \
- fi; \
- dot_seen=no; \
- target=`echo $@ | sed s/-recursive//`; \
- case "$@" in \
- distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
- *) list='$(SUBDIRS)' ;; \
- esac; \
- for subdir in $$list; do \
- echo "Making $$target in $$subdir"; \
- if test "$$subdir" = "."; then \
- dot_seen=yes; \
- local_target="$$target-am"; \
- else \
- local_target="$$target"; \
- fi; \
- ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || eval $$failcom; \
- done; \
- if test "$$dot_seen" = "no"; then \
- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
- fi; test -z "$$fail"
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-recursive
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
- include_option=--etags-include; \
- empty_fix=.; \
- else \
- include_option=--include; \
- empty_fix=; \
- fi; \
- list='$(SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- test ! -f $$subdir/TAGS || \
- set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
- fi; \
- done; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-recursive
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-recursive
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
- @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
- if test "$$subdir" = .; then :; else \
- $(am__make_dryrun) \
- || test -d "$(distdir)/$$subdir" \
- || $(MKDIR_P) "$(distdir)/$$subdir" \
- || exit 1; \
- dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
- $(am__relativize); \
- new_distdir=$$reldir; \
- dir1=$$subdir; dir2="$(top_distdir)"; \
- $(am__relativize); \
- new_top_distdir=$$reldir; \
- echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
- echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
- ($(am__cd) $$subdir && \
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$$new_top_distdir" \
- distdir="$$new_distdir" \
- am__remove_distdir=: \
- am__skip_length_check=: \
- am__skip_mode_fix=: \
- distdir) \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
-install-data: install-data-recursive
-uninstall: uninstall-recursive
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-recursive
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
- -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-html-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-recursive
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-recursive
-
-install-html-am:
-
-install-info: install-info-recursive
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-recursive
-
-install-pdf-am:
-
-install-ps: install-ps-recursive
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: $(am__recursive_targets) install-am install-strip
-
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
- check-am clean clean-generic clean-libtool cscopelist-am ctags \
- ctags-am distclean distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- installdirs-am maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am tags tags-am uninstall uninstall-am
-
-
-all: help
-
-help:
- @echo "Use 'make test' to run the tests."
-
-test: test.local
-
-test.local:
- @echo "**** Testing $(SCANIMAGE) with device $(DEVICE)"
- @if echo "---> Trying flatbed scanner" && \
- $(SCANIMAGE) -d $(DEVICE) -T && \
- echo "<--- Flatbed scanner succeded" && \
- echo "---> Trying three pass flatbed scanner" && \
- $(SCANIMAGE) -d $(DEVICE) --mode Color --three-pass=yes -T && \
- echo "<--- Three pass scanner succeded" && \
- echo "---> Trying hand scanner" && \
- $(SCANIMAGE) -d $(DEVICE) --hand-scanner=yes -T && \
- echo "<--- Hand scanner succeded" && \
- echo "---> Checking 16 bit color mode" && \
- $(SCANIMAGE) -d $(DEVICE) $(OPTIONS) && \
- cmp -s $(TESTFILE) $(OUTFILE) && \
- echo "<--- 16 bit color mode succeded" && \
- rm $(OUTFILE) ; \
- then echo ; echo ; echo "**** All tests passed" ; \
- else echo ; echo; \
- echo "**** Something failed (maybe test backend not enabled by configure?)";\
- exit 1; \
- fi
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/testsuite/README b/testsuite/README
index dbd32ed..37dd8db 100644
--- a/testsuite/README
+++ b/testsuite/README
@@ -11,5 +11,3 @@ fix the bug. :-)
The current tests use the test backend to scan in flatbed, hand scanner and
three pass mode. Also a 16 bit color image is created and compared to the
"right" one. This test should detect any little/big endian issues in scanimage.
-
-
diff --git a/testsuite/backend/Makefile.am b/testsuite/backend/Makefile.am
new file mode 100644
index 0000000..1f7d30e
--- /dev/null
+++ b/testsuite/backend/Makefile.am
@@ -0,0 +1,7 @@
+## Makefile.am -- an automake template for Makefile.in file
+## Copyright (C) 2019 Sane Developers.
+##
+## This file is part of the "Sane" build infra-structure. See
+## included LICENSE file for license information.
+
+SUBDIRS = genesys
diff --git a/testsuite/backend/genesys/Makefile.am b/testsuite/backend/genesys/Makefile.am
new file mode 100644
index 0000000..1332cf8
--- /dev/null
+++ b/testsuite/backend/genesys/Makefile.am
@@ -0,0 +1,23 @@
+## Makefile.am -- an automake template for Makefile.in file
+## Copyright (C) 2019 Sane Developers.
+##
+## This file is part of the "Sane" build infra-structure. See
+## included LICENSE file for license information.
+
+TEST_LDADD = \
+ ../../../sanei/libsanei.la \
+ ../../../lib/liblib.la \
+ ../../../backend/libgenesys.la \
+ ../../../backend/sane_strstatus.lo \
+ $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS)
+
+check_PROGRAMS = genesys_tests
+TESTS = $(check_PROGRAMS)
+
+AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include -I$(top_srcdir)/include $(USB_CFLAGS) \
+ -DBACKEND_NAME=genesys
+
+genesys_tests_SOURCES = tests.cc tests.h minigtest.cc minigtest.h \
+ tests_calibration.cc
+
+genesys_tests_LDADD = $(TEST_LDADD)
diff --git a/testsuite/backend/genesys/minigtest.cc b/testsuite/backend/genesys/minigtest.cc
new file mode 100644
index 0000000..5ca73c2
--- /dev/null
+++ b/testsuite/backend/genesys/minigtest.cc
@@ -0,0 +1,35 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+*/
+
+#include "minigtest.h"
+
+size_t s_num_successes = 0;
+size_t s_num_failures = 0;
+
+int finish_tests()
+{
+ std::cerr << "Finished tests. Sucessses: " << s_num_successes
+ << " failures: " << s_num_failures << "\n";
+ if (s_num_failures > 0)
+ return 1;
+ return 0;
+}
diff --git a/testsuite/backend/genesys/minigtest.h b/testsuite/backend/genesys/minigtest.h
new file mode 100644
index 0000000..752efe1
--- /dev/null
+++ b/testsuite/backend/genesys/minigtest.h
@@ -0,0 +1,77 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+*/
+
+#ifndef SANE_TESTSUITE_BACKEND_GENESYS_MINIGTEST_H
+#define SANE_TESTSUITE_BACKEND_GENESYS_MINIGTEST_H
+
+#include <cstdlib>
+#include <iostream>
+
+extern size_t s_num_successes;
+extern size_t s_num_failures;
+
+inline void print_location(std::ostream& out, const char* function, const char* path,
+ unsigned line)
+{
+ out << path << ":" << line << " in " << function;
+}
+
+template<class T, class U>
+void check_equal(const T& t, const U& u, const char* function, const char* path, unsigned line)
+{
+ if (t != u) {
+ s_num_failures++;
+ std::cerr << "FAILURE at ";
+ print_location(std::cerr, function, path, line);
+ std::cerr << " :\n" << t << " != " << u << "\n\n";
+ } else {
+ s_num_successes++;
+ std::cerr << "SUCCESS at ";
+ print_location(std::cerr, function, path, line);
+ std::cerr << "\n";
+ }
+}
+
+inline void check_true(bool x, const char* function, const char* path, unsigned line)
+{
+ if (x) {
+ s_num_successes++;
+ std::cerr << "SUCCESS at ";
+ } else {
+ s_num_failures++;
+ std::cerr << "FAILURE at ";
+ }
+ print_location(std::cerr, function, path, line);
+ std::cerr << "\n";
+}
+
+
+#define ASSERT_EQ(x, y) do { check_equal((x), (y), __func__, __FILE__, __LINE__); } \
+ while (false)
+#define ASSERT_TRUE(x) do { check_true(bool(x), __func__, __FILE__, __LINE__); } \
+ while (false)
+#define ASSERT_FALSE(x) do { !check_true(bool(x), __func__, __FILE__, __LINE__); } \
+ while (false)
+
+int finish_tests();
+
+#endif
diff --git a/testsuite/backend/genesys/tests.cc b/testsuite/backend/genesys/tests.cc
new file mode 100644
index 0000000..40b1b3e
--- /dev/null
+++ b/testsuite/backend/genesys/tests.cc
@@ -0,0 +1,30 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+*/
+
+#include "tests.h"
+#include "minigtest.h"
+
+int main()
+{
+ test_calibration_parsing();
+ return finish_tests();
+}
diff --git a/testsuite/backend/genesys/tests.h b/testsuite/backend/genesys/tests.h
new file mode 100644
index 0000000..f4e4d2e
--- /dev/null
+++ b/testsuite/backend/genesys/tests.h
@@ -0,0 +1,28 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+*/
+
+#ifndef SANE_TESTSUITE_BACKEND_GENESYS_GENESYS_UNIT_TEST_H
+#define SANE_TESTSUITE_BACKEND_GENESYS_GENESYS_UNIT_TEST_H
+
+void test_calibration_parsing();
+
+#endif
diff --git a/testsuite/backend/genesys/tests_calibration.cc b/testsuite/backend/genesys/tests_calibration.cc
new file mode 100644
index 0000000..959037a
--- /dev/null
+++ b/testsuite/backend/genesys/tests_calibration.cc
@@ -0,0 +1,130 @@
+/* sane - Scanner Access Now Easy.
+
+ Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
+
+ This file is part of the SANE package.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA.
+*/
+
+#include "tests.h"
+#include "minigtest.h"
+
+#include "../../../backend/genesys_low.h"
+
+#include <sstream>
+
+#define DEBUG_DECLARE_ONLY
+
+Genesys_Calibration_Cache create_fake_calibration_entry()
+{
+ Genesys_Calibration_Cache calib;
+ calib.used_setup.pixels = 10020;
+ calib.used_setup.lines = 150;
+ calib.used_setup.xres = 100.5;
+
+ GenesysFrontendLayout wolfson_layout;
+ wolfson_layout.offset_addr = { 0x20, 0x21, 0x22 };
+ wolfson_layout.gain_addr = { 0x28, 0x29, 0x2a };
+
+ Genesys_Frontend fe;
+ fe.fe_id = DAC_WOLFSON_UMAX;
+ fe.layout = wolfson_layout;
+ fe.regs = {
+ { 0x00, 0x00 },
+ { 0x01, 0x03 },
+ { 0x02, 0x05 },
+ { 0x03, 0x11 },
+ { ' ', 0x80 }, // check whether space-like integer values are correctly serialized
+ { ',', 0x80 },
+ { '\r', '\n' },
+ { '\n', 0x00 },
+ { 0x25, 0x00 },
+ { 0x26, 0x00 },
+ { 0x28, 0x02 },
+ { 0x29, 0x02 },
+ { 0x2a, 0x02 },
+ };
+ fe.reg2 = {0x00, 0x00, 0x00};
+ calib.frontend = fe;
+
+ Genesys_Sensor sensor;
+ sensor.sensor_id = CCD_UMAX;
+ sensor.optical_res = 1200;
+ sensor.black_pixels = 48;
+ sensor.dummy_pixel = 64;
+ sensor.CCD_start_xoffset = 0;
+ sensor.sensor_pixels = 10800;
+ sensor.fau_gain_white_ref = 210;
+ sensor.gain_white_ref = 230;
+ sensor.exposure = { 0x0000, 0x0000, 0x0000 };
+ sensor.custom_regs = {
+ { 0x08, 0x01 },
+ { 0x09, 0x03 },
+ { 0x0a, 0x05 },
+ { 0x0b, 0x07 },
+ { 0x16, 0x33 },
+ { 0x17, 0x05 },
+ { 0x18, 0x31 },
+ { 0x19, 0x2a },
+ { 0x1a, 0x00 },
+ { 0x1b, 0x00 },
+ { 0x1c, 0x00 },
+ { 0x1d, 0x02 },
+ { 0x52, 0x13 },
+ { 0x53, 0x17 },
+ { 0x54, 0x03 },
+ { 0x55, 0x07 },
+ { 0x56, 0x0b },
+ { 0x57, 0x0f },
+ { 0x58, 0x23 },
+ { 0x59, 0x00 },
+ { 0x5a, 0xc1 },
+ { 0x5b, 0x00 },
+ { 0x5c, 0x00 },
+ { 0x5d, 0x00 },
+ { 0x5e, 0x00 },
+ };
+ sensor.gamma = {1.0, 1.0, 1.0};
+ calib.sensor = sensor;
+
+ calib.calib_pixels = 12345;
+ calib.calib_channels = 3;
+ calib.average_size = 7;
+ calib.white_average_data = { 8, 7, 6, 5, 4, 3, 2 };
+ calib.dark_average_data = { 6, 5, 4, 3, 2, 18, 12 };
+ return calib;
+}
+
+void test_calibration_roundtrip()
+{
+ Genesys_Device::Calibration calibration = { create_fake_calibration_entry() };
+ Genesys_Device::Calibration deserialized;
+
+ std::stringstream str;
+ serialize(static_cast<std::ostream&>(str), calibration);
+ serialize(static_cast<std::istream&>(str), deserialized);
+ ASSERT_TRUE(calibration == deserialized);
+
+ int x;
+ str >> x;
+ ASSERT_TRUE(str.eof());
+}
+
+void test_calibration_parsing()
+{
+ test_calibration_roundtrip();
+}
diff --git a/testsuite/sanei/Makefile.am b/testsuite/sanei/Makefile.am
index 0116987..24fc01e 100644
--- a/testsuite/sanei/Makefile.am
+++ b/testsuite/sanei/Makefile.am
@@ -1,5 +1,5 @@
## Makefile.am -- an automake template for Makefile.in file
-## Copyright (C) 2013 Stphane Voltz and Sane Developers.
+## Copyright (C) 2013 Stéphane Voltz and Sane Developers.
##
## This file is part of the "Sane" build infra-structure. See
## included LICENSE file for license information.
diff --git a/testsuite/sanei/Makefile.in b/testsuite/sanei/Makefile.in
deleted file mode 100644
index aa531db..0000000
--- a/testsuite/sanei/Makefile.in
+++ /dev/null
@@ -1,1138 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-check_PROGRAMS = sanei_usb_test$(EXEEXT) test_wire$(EXEEXT) \
- sanei_check_test$(EXEEXT) sanei_config_test$(EXEEXT) \
- sanei_constrain_test$(EXEEXT)
-subdir = testsuite/sanei
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \
- $(top_srcdir)/test-driver README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am_sanei_check_test_OBJECTS = sanei_check_test.$(OBJEXT)
-sanei_check_test_OBJECTS = $(am_sanei_check_test_OBJECTS)
-am__DEPENDENCIES_1 =
-am__DEPENDENCIES_2 = ../../sanei/libsanei.la ../../lib/liblib.la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-sanei_check_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-am_sanei_config_test_OBJECTS = \
- sanei_config_test-sanei_config_test.$(OBJEXT)
-sanei_config_test_OBJECTS = $(am_sanei_config_test_OBJECTS)
-sanei_config_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_sanei_constrain_test_OBJECTS = sanei_constrain_test.$(OBJEXT)
-sanei_constrain_test_OBJECTS = $(am_sanei_constrain_test_OBJECTS)
-sanei_constrain_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_sanei_usb_test_OBJECTS = sanei_usb_test.$(OBJEXT)
-sanei_usb_test_OBJECTS = $(am_sanei_usb_test_OBJECTS)
-sanei_usb_test_DEPENDENCIES = $(am__DEPENDENCIES_2)
-am_test_wire_OBJECTS = test_wire.$(OBJEXT)
-test_wire_OBJECTS = $(am_test_wire_OBJECTS)
-test_wire_DEPENDENCIES = $(am__DEPENDENCIES_2)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(sanei_check_test_SOURCES) $(sanei_config_test_SOURCES) \
- $(sanei_constrain_test_SOURCES) $(sanei_usb_test_SOURCES) \
- $(test_wire_SOURCES)
-DIST_SOURCES = $(sanei_check_test_SOURCES) \
- $(sanei_config_test_SOURCES) $(sanei_constrain_test_SOURCES) \
- $(sanei_usb_test_SOURCES) $(test_wire_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__tty_colors_dummy = \
- mgn= red= grn= lgn= blu= brg= std=; \
- am__color_tests=no
-am__tty_colors = { \
- $(am__tty_colors_dummy); \
- if test "X$(AM_COLOR_TESTS)" = Xno; then \
- am__color_tests=no; \
- elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
- am__color_tests=yes; \
- elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
- am__color_tests=yes; \
- fi; \
- if test $$am__color_tests = yes; then \
- red=''; \
- grn=''; \
- lgn=''; \
- blu=''; \
- mgn=''; \
- brg=''; \
- std=''; \
- fi; \
-}
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__recheck_rx = ^[ ]*:recheck:[ ]*
-am__global_test_result_rx = ^[ ]*:global-test-result:[ ]*
-am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]*
-# A command that, given a newline-separated list of test names on the
-# standard input, print the name of the tests that are to be re-run
-# upon "make recheck".
-am__list_recheck_tests = $(AWK) '{ \
- recheck = 1; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- { \
- if ((getline line2 < ($$0 ".log")) < 0) \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
- { \
- recheck = 0; \
- break; \
- } \
- else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
- { \
- break; \
- } \
- }; \
- if (recheck) \
- print $$0; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# A command that, given a newline-separated list of test names on the
-# standard input, create the global log from their .trs and .log files.
-am__create_global_log = $(AWK) ' \
-function fatal(msg) \
-{ \
- print "fatal: making $@: " msg | "cat >&2"; \
- exit 1; \
-} \
-function rst_section(header) \
-{ \
- print header; \
- len = length(header); \
- for (i = 1; i <= len; i = i + 1) \
- printf "="; \
- printf "\n\n"; \
-} \
-{ \
- copy_in_global_log = 1; \
- global_test_result = "RUN"; \
- while ((rc = (getline line < ($$0 ".trs"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".trs"); \
- if (line ~ /$(am__global_test_result_rx)/) \
- { \
- sub("$(am__global_test_result_rx)", "", line); \
- sub("[ ]*$$", "", line); \
- global_test_result = line; \
- } \
- else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
- copy_in_global_log = 0; \
- }; \
- if (copy_in_global_log) \
- { \
- rst_section(global_test_result ": " $$0); \
- while ((rc = (getline line < ($$0 ".log"))) != 0) \
- { \
- if (rc < 0) \
- fatal("failed to read from " $$0 ".log"); \
- print line; \
- }; \
- printf "\n"; \
- }; \
- close ($$0 ".trs"); \
- close ($$0 ".log"); \
-}'
-# Restructured Text title.
-am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
-# Solaris 10 'make', and several other traditional 'make' implementations,
-# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it
-# by disabling -e (using the XSI extension "set +e") if it's set.
-am__sh_e_setup = case $$- in *e*) set +e;; esac
-# Default flags passed to test drivers.
-am__common_driver_flags = \
- --color-tests "$$am__color_tests" \
- --enable-hard-errors "$$am__enable_hard_errors" \
- --expect-failure "$$am__expect_failure"
-# To be inserted before the command running the test. Creates the
-# directory for the log if needed. Stores in $dir the directory
-# containing $f, in $tst the test, in $log the log. Executes the
-# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
-# passes TESTS_ENVIRONMENT. Set up options for the wrapper that
-# will run the test scripts (or their associated LOG_COMPILER, if
-# thy have one).
-am__check_pre = \
-$(am__sh_e_setup); \
-$(am__vpath_adj_setup) $(am__vpath_adj) \
-$(am__tty_colors); \
-srcdir=$(srcdir); export srcdir; \
-case "$@" in \
- */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \
- *) am__odir=.;; \
-esac; \
-test "x$$am__odir" = x"." || test -d "$$am__odir" \
- || $(MKDIR_P) "$$am__odir" || exit $$?; \
-if test -f "./$$f"; then dir=./; \
-elif test -f "$$f"; then dir=; \
-else dir="$(srcdir)/"; fi; \
-tst=$$dir$$f; log='$@'; \
-if test -n '$(DISABLE_HARD_ERRORS)'; then \
- am__enable_hard_errors=no; \
-else \
- am__enable_hard_errors=yes; \
-fi; \
-case " $(XFAIL_TESTS) " in \
- *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \
- am__expect_failure=yes;; \
- *) \
- am__expect_failure=no;; \
-esac; \
-$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
-# A shell command to get the names of the tests scripts with any registered
-# extension removed (i.e., equivalently, the names of the test logs, with
-# the '.log' extension removed). The result is saved in the shell variable
-# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly,
-# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
-# since that might cause problem with VPATH rewrites for suffix-less tests.
-# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
-am__set_TESTS_bases = \
- bases='$(TEST_LOGS)'; \
- bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
- bases=`echo $$bases`
-RECHECK_LOGS = $(TEST_LOGS)
-AM_RECURSIVE_TARGETS = check recheck
-TEST_SUITE_LOG = test-suite.log
-TEST_EXTENSIONS = @EXEEXT@ .test
-LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
-am__set_b = \
- case '$@' in \
- */*) \
- case '$*' in \
- */*) b='$*';; \
- *) b=`echo '$@' | sed 's/\.log$$//'`; \
- esac;; \
- *) \
- b='$*';; \
- esac
-am__test_logs1 = $(TESTS:=.log)
-am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
-TEST_LOGS = $(am__test_logs2:.test.log=.log)
-TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver
-TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
- $(TEST_LOG_FLAGS)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include $(USB_CFLAGS)
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-EXTRA_DIST = data/boolean.conf data/empty.conf data/fixed.conf data/int.conf \
- data/snapscan.conf data/string.conf data/string-list.conf \
- data/umax_pp.conf data/word-array.conf data/wrong-boolean.conf \
- data/wrong-fixed.conf data/wrong-range.conf \
- data/wrong-string-list.conf
-
-TEST_LDADD = ../../sanei/libsanei.la ../../lib/liblib.la $(MATH_LIB) $(USB_LIBS) $(PTHREAD_LIBS)
-TESTS = $(check_PROGRAMS)
-sanei_constrain_test_SOURCES = sanei_constrain_test.c
-sanei_constrain_test_LDADD = $(TEST_LDADD)
-sanei_config_test_SOURCES = sanei_config_test.c
-sanei_config_test_CPPFLAGS = $(AM_CPPFLAGS) -DTESTSUITE_SANEI_SRCDIR=$(srcdir)
-sanei_config_test_LDADD = $(TEST_LDADD)
-sanei_check_test_SOURCES = sanei_check_test.c
-sanei_check_test_LDADD = $(TEST_LDADD)
-sanei_usb_test_SOURCES = sanei_usb_test.c
-sanei_usb_test_LDADD = $(TEST_LDADD)
-test_wire_SOURCES = test_wire.c
-test_wire_LDADD = $(TEST_LDADD)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/sanei/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu testsuite/sanei/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-checkPROGRAMS:
- @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-sanei_check_test$(EXEEXT): $(sanei_check_test_OBJECTS) $(sanei_check_test_DEPENDENCIES) $(EXTRA_sanei_check_test_DEPENDENCIES)
- @rm -f sanei_check_test$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sanei_check_test_OBJECTS) $(sanei_check_test_LDADD) $(LIBS)
-
-sanei_config_test$(EXEEXT): $(sanei_config_test_OBJECTS) $(sanei_config_test_DEPENDENCIES) $(EXTRA_sanei_config_test_DEPENDENCIES)
- @rm -f sanei_config_test$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sanei_config_test_OBJECTS) $(sanei_config_test_LDADD) $(LIBS)
-
-sanei_constrain_test$(EXEEXT): $(sanei_constrain_test_OBJECTS) $(sanei_constrain_test_DEPENDENCIES) $(EXTRA_sanei_constrain_test_DEPENDENCIES)
- @rm -f sanei_constrain_test$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sanei_constrain_test_OBJECTS) $(sanei_constrain_test_LDADD) $(LIBS)
-
-sanei_usb_test$(EXEEXT): $(sanei_usb_test_OBJECTS) $(sanei_usb_test_DEPENDENCIES) $(EXTRA_sanei_usb_test_DEPENDENCIES)
- @rm -f sanei_usb_test$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sanei_usb_test_OBJECTS) $(sanei_usb_test_LDADD) $(LIBS)
-
-test_wire$(EXEEXT): $(test_wire_OBJECTS) $(test_wire_DEPENDENCIES) $(EXTRA_test_wire_DEPENDENCIES)
- @rm -f test_wire$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(test_wire_OBJECTS) $(test_wire_LDADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_check_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_config_test-sanei_config_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_constrain_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sanei_usb_test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_wire.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-sanei_config_test-sanei_config_test.o: sanei_config_test.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sanei_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sanei_config_test-sanei_config_test.o -MD -MP -MF $(DEPDIR)/sanei_config_test-sanei_config_test.Tpo -c -o sanei_config_test-sanei_config_test.o `test -f 'sanei_config_test.c' || echo '$(srcdir)/'`sanei_config_test.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/sanei_config_test-sanei_config_test.Tpo $(DEPDIR)/sanei_config_test-sanei_config_test.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sanei_config_test.c' object='sanei_config_test-sanei_config_test.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sanei_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sanei_config_test-sanei_config_test.o `test -f 'sanei_config_test.c' || echo '$(srcdir)/'`sanei_config_test.c
-
-sanei_config_test-sanei_config_test.obj: sanei_config_test.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sanei_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sanei_config_test-sanei_config_test.obj -MD -MP -MF $(DEPDIR)/sanei_config_test-sanei_config_test.Tpo -c -o sanei_config_test-sanei_config_test.obj `if test -f 'sanei_config_test.c'; then $(CYGPATH_W) 'sanei_config_test.c'; else $(CYGPATH_W) '$(srcdir)/sanei_config_test.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/sanei_config_test-sanei_config_test.Tpo $(DEPDIR)/sanei_config_test-sanei_config_test.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sanei_config_test.c' object='sanei_config_test-sanei_config_test.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sanei_config_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sanei_config_test-sanei_config_test.obj `if test -f 'sanei_config_test.c'; then $(CYGPATH_W) 'sanei_config_test.c'; else $(CYGPATH_W) '$(srcdir)/sanei_config_test.c'; fi`
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-# Recover from deleted '.trs' file; this should ensure that
-# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
-# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells
-# to avoid problems with "make -n".
-.log.trs:
- rm -f $< $@
- $(MAKE) $(AM_MAKEFLAGS) $<
-
-# Leading 'am--fnord' is there to ensure the list of targets does not
-# expand to empty, as could happen e.g. with make check TESTS=''.
-am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
-am--force-recheck:
- @:
-
-$(TEST_SUITE_LOG): $(TEST_LOGS)
- @$(am__set_TESTS_bases); \
- am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
- redo_bases=`for i in $$bases; do \
- am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
- done`; \
- if test -n "$$redo_bases"; then \
- redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
- redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
- if $(am__make_dryrun); then :; else \
- rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
- fi; \
- fi; \
- if test -n "$$am__remaking_logs"; then \
- echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
- "recursion detected" >&2; \
- else \
- am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
- fi; \
- if $(am__make_dryrun); then :; else \
- st=0; \
- errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
- for i in $$redo_bases; do \
- test -f $$i.trs && test -r $$i.trs \
- || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
- test -f $$i.log && test -r $$i.log \
- || { echo "$$errmsg $$i.log" >&2; st=1; }; \
- done; \
- test $$st -eq 0 || exit 1; \
- fi
- @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
- ws='[ ]'; \
- results=`for b in $$bases; do echo $$b.trs; done`; \
- test -n "$$results" || results=/dev/null; \
- all=` grep "^$$ws*:test-result:" $$results | wc -l`; \
- pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \
- fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \
- skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \
- xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
- xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
- error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
- if test `expr $$fail + $$xpass + $$error` -eq 0; then \
- success=true; \
- else \
- success=false; \
- fi; \
- br='==================='; br=$$br$$br$$br$$br; \
- result_count () \
- { \
- if test x"$$1" = x"--maybe-color"; then \
- maybe_colorize=yes; \
- elif test x"$$1" = x"--no-color"; then \
- maybe_colorize=no; \
- else \
- echo "$@: invalid 'result_count' usage" >&2; exit 4; \
- fi; \
- shift; \
- desc=$$1 count=$$2; \
- if test $$maybe_colorize = yes && test $$count -gt 0; then \
- color_start=$$3 color_end=$$std; \
- else \
- color_start= color_end=; \
- fi; \
- echo "$${color_start}# $$desc $$count$${color_end}"; \
- }; \
- create_testsuite_report () \
- { \
- result_count $$1 "TOTAL:" $$all "$$brg"; \
- result_count $$1 "PASS: " $$pass "$$grn"; \
- result_count $$1 "SKIP: " $$skip "$$blu"; \
- result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
- result_count $$1 "FAIL: " $$fail "$$red"; \
- result_count $$1 "XPASS:" $$xpass "$$red"; \
- result_count $$1 "ERROR:" $$error "$$mgn"; \
- }; \
- { \
- echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \
- $(am__rst_title); \
- create_testsuite_report --no-color; \
- echo; \
- echo ".. contents:: :depth: 2"; \
- echo; \
- for b in $$bases; do echo $$b; done \
- | $(am__create_global_log); \
- } >$(TEST_SUITE_LOG).tmp || exit 1; \
- mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \
- if $$success; then \
- col="$$grn"; \
- else \
- col="$$red"; \
- test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \
- fi; \
- echo "$${col}$$br$${std}"; \
- echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \
- echo "$${col}$$br$${std}"; \
- create_testsuite_report --maybe-color; \
- echo "$$col$$br$$std"; \
- if $$success; then :; else \
- echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \
- if test -n "$(PACKAGE_BUGREPORT)"; then \
- echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
- fi; \
- echo "$$col$$br$$std"; \
- fi; \
- $$success || exit 1
-
-check-TESTS:
- @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list
- @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- trs_list=`for i in $$bases; do echo $$i.trs; done`; \
- log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
- exit $$?;
-recheck: all $(check_PROGRAMS)
- @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
- @set +e; $(am__set_TESTS_bases); \
- bases=`for i in $$bases; do echo $$i; done \
- | $(am__list_recheck_tests)` || exit 1; \
- log_list=`for i in $$bases; do echo $$i.log; done`; \
- log_list=`echo $$log_list`; \
- $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
- am__force_recheck=am--force-recheck \
- TEST_LOGS="$$log_list"; \
- exit $$?
-sanei_usb_test.log: sanei_usb_test$(EXEEXT)
- @p='sanei_usb_test$(EXEEXT)'; \
- b='sanei_usb_test'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-test_wire.log: test_wire$(EXEEXT)
- @p='test_wire$(EXEEXT)'; \
- b='test_wire'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-sanei_check_test.log: sanei_check_test$(EXEEXT)
- @p='sanei_check_test$(EXEEXT)'; \
- b='sanei_check_test'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-sanei_config_test.log: sanei_config_test$(EXEEXT)
- @p='sanei_config_test$(EXEEXT)'; \
- b='sanei_config_test'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-sanei_constrain_test.log: sanei_constrain_test$(EXEEXT)
- @p='sanei_constrain_test$(EXEEXT)'; \
- b='sanei_constrain_test'; \
- $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-.test.log:
- @p='$<'; \
- $(am__set_b); \
- $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
- --log-file $$b.log --trs-file $$b.trs \
- $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
- "$$tst" $(AM_TESTS_FD_REDIRECT)
-@am__EXEEXT_TRUE@.test$(EXEEXT).log:
-@am__EXEEXT_TRUE@ @p='$<'; \
-@am__EXEEXT_TRUE@ $(am__set_b); \
-@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
-@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \
-@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
-@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT)
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
- $(MAKE) $(AM_MAKEFLAGS) check-TESTS
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
- -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
- -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
- -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
- clean-checkPROGRAMS clean-generic clean-libtool clean-local \
- cscopelist-am ctags ctags-am distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- recheck tags tags-am uninstall uninstall-am
-
-
-clean-local:
- rm -f test_wire.out
-
-all:
- @echo "run 'make check' to run tests"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/testsuite/sanei/README b/testsuite/sanei/README
index 247d191..25b11cd 100644
--- a/testsuite/sanei/README
+++ b/testsuite/sanei/README
@@ -7,7 +7,7 @@ and run by 'make check'.
sanei_usb_test
---------------
Tests sanei_usb_* functions. No USB scanner needs to be plugged,
-but in this case less code is covered (open/close and claim/release
+but in this case less code is covered (open/close and claim/release
of real devices).
Function currently tested are:
- sanei_usb_init()
diff --git a/testsuite/sanei/data/umax_pp.conf b/testsuite/sanei/data/umax_pp.conf
index 69cc47d..eb84f74 100644
--- a/testsuite/sanei/data/umax_pp.conf
+++ b/testsuite/sanei/data/umax_pp.conf
@@ -8,12 +8,12 @@ option buffer 1048576
# DEVICES #
-# specify the port your scanner is connected to.
+# specify the port your scanner is connected to.
#
# the value 'auto' will make the backend find the correct value
# by itself, it will scan ppdev, ppi device, then hardware address
# 'safe-auto' will do the same but won't do direct hardware access
-# on linux systems, you may provide the device name of the ppdev character
+# on linux systems, you may provide the device name of the ppdev character
# device : /dev/parport0, /dev/parport1, ......
#
# on *BSD, you may provide the device name of the ppi device: /dev/ppi0,
@@ -58,7 +58,7 @@ option blue-offset 6
# valid values are 610, 1220, 1600 and 2000
#
# by default, no model, we rely on autodetection
-# in case you have black or 'inverted' scans,
+# in case you have black or 'inverted' scans,
# you may override detection by providing the
# model number
option astra 1600
diff --git a/testsuite/sanei/sanei_check_test.c b/testsuite/sanei/sanei_check_test.c
index a149b7e..db4f2e4 100644
--- a/testsuite/sanei/sanei_check_test.c
+++ b/testsuite/sanei/sanei_check_test.c
@@ -427,7 +427,7 @@ wrong_bool_array (void)
/**
- * run the test suite for sanei_check_value related tests
+ * run the test suite for sanei_check_value related tests
*/
static void
sanei_check_suite (void)
diff --git a/testsuite/sanei/sanei_config_test.c b/testsuite/sanei/sanei_config_test.c
index 3d1f5af..ea00433 100644
--- a/testsuite/sanei/sanei_config_test.c
+++ b/testsuite/sanei/sanei_config_test.c
@@ -863,7 +863,7 @@ snapscan (void)
/**
- * create the test suite for sanei config related tests
+ * create the test suite for sanei config related tests
*/
static void
sanei_config_suite (void)
@@ -890,7 +890,7 @@ sanei_config_suite (void)
}
/**
- * main function to run the test suites
+ * main function to run the test suites
*/
int
main (void)
diff --git a/testsuite/sanei/sanei_constrain_test.c b/testsuite/sanei/sanei_constrain_test.c
index 0f66bbb..9ddb61a 100644
--- a/testsuite/sanei/sanei_constrain_test.c
+++ b/testsuite/sanei/sanei_constrain_test.c
@@ -271,7 +271,7 @@ max_fixed_value (void)
/* check results */
assert (status == SANE_STATUS_GOOD);
assert (info == 0);
- assert (value == fixed_range.max);
+ assert (value == fixed_range.max);
}
static void
@@ -721,7 +721,7 @@ string_array_ok (void)
}
/**
- * run the test suite for sanei constrain related tests
+ * run the test suite for sanei constrain related tests
*/
static void
sanei_constrain_suite (void)
@@ -781,7 +781,7 @@ sanei_constrain_suite (void)
}
/**
- * main function to run the test suites
+ * main function to run the test suites
*/
int
main (void)
diff --git a/testsuite/tools/Makefile.am b/testsuite/tools/Makefile.am
index 71188d2..532e904 100644
--- a/testsuite/tools/Makefile.am
+++ b/testsuite/tools/Makefile.am
@@ -1,5 +1,5 @@
## Makefile.am -- an automake template for Makefile.in file
-## Copyright (C) 2013 Stphane Voltz and Sane Developers.
+## Copyright (C) 2013 Stéphane Voltz and Sane Developers.
##
## This file is part of the "Sane" build infra-structure. See
## included LICENSE file for license information.
@@ -26,13 +26,13 @@ help:
check: check.local
-check.local:
+check.local:
@echo "**** Testing $(SANEDESC) with $(TESTFILE)"
@for mode in ascii html-backends-split html-mfgs xml statistics usermap db udev udev+acl udev+hwdb hwdb plist hal hal-new; \
do \
$(SANEDESC) -m $$mode -s $(srcdir)/data >$$mode.res ;\
if diff -I "[ 012][0-9]:[0-5][0-9]:[0-6][0-9] 20[0-9][0-9]" \
- -I "sane-backends 1\.0\.[0-9]\+\(git\)\?$$" \
+ -I "sane-backends 1\.0\.[0-9]\+\([-0-9a-fgdirty]\+\)\?$$" \
$(srcdir)/data/$$mode.ref $$mode.res ; \
then \
echo "PASS: sane-desc -m $$mode -s $(srcdir)/data"; \
diff --git a/testsuite/tools/Makefile.in b/testsuite/tools/Makefile.in
deleted file mode 100644
index 0850607..0000000
--- a/testsuite/tools/Makefile.in
+++ /dev/null
@@ -1,548 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = testsuite/tools
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-SANEDESC = ../../tools/sane-desc$(EXEEXT)
-TESTFILE = $(srcdir)/data/testfile.desc
-OUTFILES = *.res
-DEVICE = test
-EXTRA_DIST = data/testfile.desc data/ascii.ref data/db.ref data/hal-new.ref \
- data/hal.ref data/html-backends-split.ref data/html-mfgs.ref \
- data/hwdb.ref data/plist.ref data/statistics.ref \
- data/udev+acl.ref data/udev+hwdb.ref data/udev.ref \
- data/usermap.ref data/xml.ref
-
-CLEANFILES = $(OUTFILES)
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu testsuite/tools/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu testsuite/tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- cscopelist-am ctags-am distclean distclean-generic \
- distclean-libtool distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags-am uninstall uninstall-am
-
-
-all:
- @echo "run 'make check' to run tests"
-
-all: help
-
-help:
- @echo "Use 'make check' to run the tests."
-
-check: check.local
-
-check.local:
- @echo "**** Testing $(SANEDESC) with $(TESTFILE)"
- @for mode in ascii html-backends-split html-mfgs xml statistics usermap db udev udev+acl udev+hwdb hwdb plist hal hal-new; \
- do \
- $(SANEDESC) -m $$mode -s $(srcdir)/data >$$mode.res ;\
- if diff -I "[ 012][0-9]:[0-5][0-9]:[0-6][0-9] 20[0-9][0-9]" \
- -I "sane-backends 1\.0\.[0-9]\+\(git\)\?$$" \
- $(srcdir)/data/$$mode.ref $$mode.res ; \
- then \
- echo "PASS: sane-desc -m $$mode -s $(srcdir)/data"; \
- else \
- echo "FAIL: sane-desc -m $$mode -s $(srcdir)/data"; \
- exit 1 ;\
- fi; \
- done ;\
- echo "================" ;\
- echo "All tests passed" ;\
- echo "================"
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/testsuite/tools/README b/testsuite/tools/README
index ac32db9..dcd6261 100644
--- a/testsuite/tools/README
+++ b/testsuite/tools/README
@@ -5,6 +5,6 @@ This directory contains test for tools programs. They are run by 'make check'.
sane-desc
---------
- sane-desc is ran for all known modes, using a test 'desc' file.
+ sane-desc is ran for all known modes, using a test 'desc' file.
The output is compared to a reference file for the same mode. Test fails
if they are different.
diff --git a/testsuite/tools/data/ascii.ref b/testsuite/tools/data/ascii.ref
index 4713f08..4d66732 100644
--- a/testsuite/tools/data/ascii.ref
+++ b/testsuite/tools/data/ascii.ref
@@ -2021,14 +2021,14 @@ backend `coolscan2'
usb-vendor-id `0x04b0'
usb-product-id `0x4001'
status minimal
- url `/unsupported/nikon-ls50-ed.html'
+ url `unsupported/nikon-ls50-ed.html'
comment *none*
model `Super Coolscan LS-5000 ED'
interface `USB'
usb-vendor-id `0x04b0'
usb-product-id `0x4002'
status untested
- url `/unsupported/nikon-ls5000-ed.html'
+ url `unsupported/nikon-ls5000-ed.html'
comment `May work, similar to LS 50 ED, but untested. Please tell us if it works.'
model `LS 8000 ED'
interface `IEEE-1394'
@@ -2079,14 +2079,14 @@ backend `coolscan3'
usb-vendor-id `0x04b0'
usb-product-id `0x4001'
status minimal
- url `/unsupported/nikon-ls50-ed.html'
+ url `unsupported/nikon-ls50-ed.html'
comment *none*
model `Coolscan V ED'
interface `USB'
usb-vendor-id `0x04b0'
usb-product-id `0x4001'
status minimal
- url `/unsupported/nikon-ls50-ed.html'
+ url `unsupported/nikon-ls50-ed.html'
comment `Rebadged LS 50?'
model `LS 2000'
interface `SCSI'
@@ -2107,7 +2107,7 @@ backend `coolscan3'
usb-vendor-id `0x04b0'
usb-product-id `0x4002'
status untested
- url `/unsupported/nikon-ls5000-ed.html'
+ url `unsupported/nikon-ls5000-ed.html'
comment `May work, similar to LS 50 ED, but untested. Please tell us if it works.'
model `LS 8000 ED'
interface `IEEE-1394'
@@ -8104,7 +8104,7 @@ backend `microtek2'
usb-vendor-id *none*
usb-product-id *none*
status minimal
- url `/unsupported/microtek-scanmaker-9800.html'
+ url `unsupported/microtek-scanmaker-9800.html'
comment `IEEE-1394 seems to work. See link. More reports welcome.'
model `Phantom 330CX'
interface `Parport'
@@ -12249,7 +12249,7 @@ backend `umax_pp'
backend `unsupported'
version `2010-06-09'
manpage *none*
- url `/contrib.html'
+ url `contrib.html'
comment `The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs.'
type scanner
mfg `Agfa'
@@ -12260,14 +12260,14 @@ backend `unsupported'
usb-vendor-id `0x06bd'
usb-product-id `0x02bf'
status unsupported
- url `/unsupported/agfa-duoscan-f40.html'
+ url `unsupported/agfa-duoscan-f40.html'
comment `Unsupported. See link for details.'
model `DuoScan T2000XL'
interface `SCSI'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/agfa-duoscan-t2000xl.html'
+ url `unsupported/agfa-duoscan-t2000xl.html'
comment `Unsupported. Same as Microtek ArtixScan 2020?'
model `DuoScan T2500'
interface `SCSI IEEE-1384'
@@ -12281,28 +12281,28 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `SnapScan EZ'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `SnapScan 1200P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `SnapScan 1212P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
mfg `Artec/Ultima'
url `http://www.artecusa.com/'
@@ -12312,7 +12312,7 @@ backend `unsupported'
usb-vendor-id `0x05d8'
usb-product-id `0x4001'
status unsupported
- url `/unsupported/artec_1236usb.html'
+ url `unsupported/artec_1236usb.html'
comment `Unsupported. See link for details.'
model `AM12e+'
interface `Parport'
@@ -12326,7 +12326,7 @@ backend `unsupported'
usb-vendor-id `0x05d8'
usb-product-id `0x4001'
status unsupported
- url `/unsupported/artec-ultima-2000-2.html'
+ url `unsupported/artec-ultima-2000-2.html'
comment `Same name, but different ids: This scanner is not supported. The scanner with product id 0x4002 is supported by the gt68xx backend, however.'
mfg `Avigramm'
url *none*
@@ -12336,7 +12336,7 @@ backend `unsupported'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Not supported. See link for details.'
mfg `Avision'
url `http://www.avision.com/'
@@ -12360,14 +12360,14 @@ backend `unsupported'
usb-vendor-id `0x0638'
usb-product-id `0x0a10'
status unsupported
- url `/unsupported/umax-astra-4500.html'
+ url `unsupported/umax-astra-4500.html'
comment `GL646 based, to be added to genesys backend. Same as UMAX Astra 4500.'
model `iVina FB1800'
interface `USB'
usb-vendor-id `0x0638'
usb-product-id `0x0a20'
status unsupported
- url `/unsupported/umax-astra-4700.html'
+ url `unsupported/umax-astra-4700.html'
comment `GL646/GL660 based. Same as UMAX Astra 4700.'
mfg `Benq (Acer)'
url `http://www.benq.com'
@@ -12377,56 +12377,56 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `320P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `340P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `610P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `610PT'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `620P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `620PT'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `640P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/acer-parport.html'
+ url `unsupported/acer-parport.html'
comment `Unsupported, see link for details.'
model `5450'
interface `USB'
@@ -12440,21 +12440,21 @@ backend `unsupported'
usb-vendor-id `0x04a5'
usb-product-id `0x2211'
status unsupported
- url `/unsupported/benq-5550.html'
+ url `unsupported/benq-5550.html'
comment `Unsupported, see link for details.'
model `5560'
interface `USB'
usb-vendor-id `0x04a5'
usb-product-id `0x2311'
status unsupported
- url `http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html'
+ url `http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html'
comment *none*
model `7400UT'
interface `USB'
usb-vendor-id `0x04a5'
usb-product-id `0x2202'
status unsupported
- url `/unsupported/benq-7400ut.html'
+ url `unsupported/benq-7400ut.html'
comment *none*
mfg `Boeder'
url *none*
@@ -12464,7 +12464,7 @@ backend `unsupported'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Unsupported. See link for details.'
mfg `Brother'
url `http://www.brother.com/'
@@ -12474,7 +12474,7 @@ backend `unsupported'
usb-vendor-id `0x04f9'
usb-product-id `0x000a'
status unsupported
- url `/unsupported/brother-mfc-2500.html'
+ url `unsupported/brother-mfc-2500.html'
comment `Not supported. See link for details.'
model `MFC 4600'
interface `Parport'
@@ -12488,14 +12488,14 @@ backend `unsupported'
usb-vendor-id `0x04f9'
usb-product-id `0x0106'
status unsupported
- url `/unsupported/brother-mfc-7300.html'
+ url `unsupported/brother-mfc-7300.html'
comment *none*
model `MFC 9600'
interface `USB'
usb-vendor-id `0x04f9'
usb-product-id `0x0101'
status unsupported
- url `/unsupported/brother-mfc-9600.html'
+ url `unsupported/brother-mfc-9600.html'
comment *none*
mfg `C-Channel'
url `http://www.c-channel.ch/'
@@ -12505,7 +12505,7 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/c-channel-mypen-pro.html'
+ url `unsupported/c-channel-mypen-pro.html'
comment `Probably unsupported. See link for details.'
model `MyPen Light'
interface `USB'
@@ -12529,119 +12529,119 @@ backend `unsupported'
usb-vendor-id `0x04a9'
usb-product-id `0x2215'
status unsupported
- url `/unsupported/canon-3000.html'
+ url `unsupported/canon-3000.html'
comment `GL660+GL646 based.'
model `CanoScan 3000ex'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2215'
status unsupported
- url `/unsupported/canon-3000.html'
+ url `unsupported/canon-3000.html'
comment `GL660+GL646 based.'
model `CanoScan 3000F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2215'
status unsupported
- url `/unsupported/canon-3000.html'
+ url `unsupported/canon-3000.html'
comment `GL660+GL646 based, to be added to genesys backend'
model `CanoScan 4200F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x221b'
status unsupported
- url `/unsupported/canon-4200f.html'
+ url `unsupported/canon-4200f.html'
comment `Probably unsupported. See link.'
model `CanoScan 4400F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2228'
status unsupported
- url `/unsupported/canon-4400.html'
+ url `unsupported/canon-4400.html'
comment `GL843 based, to be added to genesys backend'
model `CanoScan 5000F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2212'
status unsupported
- url `/unsupported/canon-5000f.html'
+ url `unsupported/canon-5000f.html'
comment `Unsupported. See link for details.'
model `CanoScan 5200F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2217'
status unsupported
- url `/unsupported/canon-5200f.html'
+ url `unsupported/canon-5200f.html'
comment `Probably unsupported. See link for details.'
model `CanoScan 8000F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x220f'
status unsupported
- url `/unsupported/canon-8000f.html'
+ url `unsupported/canon-8000f.html'
comment `Not supported. See link for more information. With transparency adapter.'
model `CanoScan 8400F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x221e'
status unsupported
- url `/unsupported/canon-8400f.html'
+ url `unsupported/canon-8400f.html'
comment `GL841 based, to be added to genesys backend'
model `CanoScan 8600F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2229'
status unsupported
- url `/unsupported/canon-8600.html'
+ url `unsupported/canon-8600.html'
comment `GL841 based, to be added to genesys backend'
model `CanoScan 9900F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2210'
status unsupported
- url `/unsupported/canon-9900f.html'
+ url `unsupported/canon-9900f.html'
comment `Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter.'
model `CanoScan 9950F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2219'
status unsupported
- url `/unsupported/canon-9950f.html'
+ url `unsupported/canon-9950f.html'
comment `Probably unsupported.'
model `CanoScan D646U'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x220b'
status unsupported
- url `/unsupported/canon-d646u.html'
+ url `unsupported/canon-d646u.html'
comment `Probably not supported. See link for more information and test program.'
model `CanoScan D646U ex'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x220b'
status unsupported
- url `/unsupported/canon-d646u.html'
+ url `unsupported/canon-d646u.html'
comment `Probably not supported. See D646.'
model `CanoScan D1230U'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x2209'
status unsupported
- url `/unsupported/canon-d1230u.html'
+ url `unsupported/canon-d1230u.html'
comment `Probably not supported. '
model `CanoScan D1250U2'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x220c'
status unsupported
- url `/unsupported/canon-d1250u2.html'
+ url `unsupported/canon-d1250u2.html'
comment `Not supported. However, someone started working on this scanner and some information is available (see link).'
model `CanoScan D2400UF'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x220a'
status unsupported
- url `/unsupported/canon-d2400uf.html'
+ url `unsupported/canon-d2400uf.html'
comment `Not supported. See link.'
model `CanoScan FB320U'
interface `USB'
@@ -12655,7 +12655,7 @@ backend `unsupported'
usb-vendor-id `0x04a9'
usb-product-id `0x2202'
status unsupported
- url `/unsupported/canon-fb620u.html'
+ url `unsupported/canon-fb620u.html'
comment `Probably not supported. Some information is available.'
model `CanoScan FB1210U'
interface `USB'
@@ -12676,21 +12676,21 @@ backend `unsupported'
usb-vendor-id `0x04a9'
usb-product-id `0x2214'
status unsupported
- url `/unsupported/canon-lide-80.html'
+ url `unsupported/canon-lide-80.html'
comment `GL841 based, to be added to genesys backend'
model `CanoScan LiDE 90'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x1900'
status unsupported
- url `/unsupported/canon-lide-90.html'
+ url `unsupported/canon-lide-90.html'
comment `Unsupported. See link for details.'
model `CanoScan LiDE 500F'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x221f'
status unsupported
- url `/unsupported/canon-canoscan-lide-500f.html'
+ url `unsupported/canon-canoscan-lide-500f.html'
comment `GL841 based, to be added to genesys backend'
model `CanoScan LiDE 600'
interface `USB'
@@ -12711,70 +12711,70 @@ backend `unsupported'
usb-vendor-id `0x04a9'
usb-product-id `0x3042'
status unsupported
- url `/unsupported/canon-fs4000.html'
+ url `unsupported/canon-fs4000.html'
comment `Not supported. See link for more details.'
model `IS 12'
interface `USB'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/canon-is-12.html'
+ url `unsupported/canon-is-12.html'
comment `Probably not supported. Scanner cardridge for Canon inkjet printers.'
model `IS 22'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/canon-is-22.html'
+ url `unsupported/canon-is-22.html'
comment `Probably not supported. Scanner cardridge for Canon inkjet printers.'
model `IS 32'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x105d'
status unsupported
- url `/unsupported/canon-is-32.html'
+ url `unsupported/canon-is-32.html'
comment `Probably not supported. Scanner cardridge for Canon inkjet printers.'
model `IS 52'
interface `USB'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/canon-is-52.html'
+ url `unsupported/canon-is-52.html'
comment `Probably not supported. Scanner cardridge for Canon inkjet printers.'
model `ImageRunner iR1018'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x269d'
status unsupported
- url `/unsupported/canon-imagerunner.html'
+ url `unsupported/canon-imagerunner.html'
comment `Probably not supported. See link for details.'
model `ImageRunner iR1022'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x269d'
status unsupported
- url `/unsupported/canon-imagerunner.html'
+ url `unsupported/canon-imagerunner.html'
comment `Probably not supported. See link for details.'
model `ImageRunner iR1023'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x269d'
status unsupported
- url `/unsupported/canon-imagerunner.html'
+ url `unsupported/canon-imagerunner.html'
comment `Probably not supported. See link for details.'
model `PIXMA MP110'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x1700'
status unsupported
- url `/unsupported/canon-pixma-mp110.html'
+ url `unsupported/canon-pixma-mp110.html'
comment `Probably not supported. See link for details.'
model `PIXMA MP130'
interface `USB'
usb-vendor-id `0x04a9'
usb-product-id `0x1701'
status unsupported
- url `/unsupported/canon-pixma-mp130.html'
+ url `unsupported/canon-pixma-mp130.html'
comment `Probably not supported. See link for details.'
model `DR-2020U'
interface `USB'
@@ -12791,7 +12791,7 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/chinon-ds3000.html'
+ url `unsupported/chinon-ds3000.html'
comment `Unsupported at the moment, but a backend is in preparation. See link.'
mfg `Compaq'
url `http://www.compaq.com/'
@@ -12811,7 +12811,7 @@ backend `unsupported'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Unsupported. See link for details.'
mfg `Corex'
url `http://www.cardscan.com/'
@@ -12821,14 +12821,14 @@ backend `unsupported'
usb-vendor-id `0x08f0'
usb-product-id `0x0001'
status unsupported
- url `/unsupported/corex-cardscan-500.html'
+ url `unsupported/corex-cardscan-500.html'
comment `Probably not supported. Businesscard reader.'
model `Cardscan 700 C'
interface `USB'
usb-vendor-id `0x08f0'
usb-product-id `0x0004'
status unsupported
- url `/unsupported/corex-cardscan-700.html'
+ url `unsupported/corex-cardscan-700.html'
comment `Probably not supported.'
mfg `Dell'
url `http://www.dell.com/'
@@ -12845,14 +12845,14 @@ backend `unsupported'
usb-vendor-id `0x413c'
usb-product-id `0x5107'
status unsupported
- url `/unsupported/dell-a960.html'
+ url `unsupported/dell-a960.html'
comment `Probably not supported. See link for details.'
model `922'
interface `USB'
usb-vendor-id `0x413c'
usb-product-id `0x5109'
status unsupported
- url `/unsupported/dell-922.html'
+ url `unsupported/dell-922.html'
comment `Probably not supported. See link for details.'
mfg `Epson'
url `http://www.epson.com/'
@@ -12876,7 +12876,7 @@ backend `unsupported'
usb-vendor-id `0x04b8'
usb-product-id `0x083f'
status unsupported
- url `/unsupported/epson-stylus-dx4450.html'
+ url `unsupported/epson-stylus-dx4450.html'
comment `Probably unsupported. See link for details.'
model `Stylus CX-5800'
interface `USB'
@@ -12893,7 +12893,7 @@ backend `unsupported'
usb-vendor-id `0x0a53'
usb-product-id `0x5001'
status unsupported
- url `/unsupported/edt-900c.html'
+ url `unsupported/edt-900c.html'
comment `Probably unsupported. See link for details.'
mfg `E-Lux'
url *none*
@@ -12931,42 +12931,42 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/genius-colorpage-cs.html'
+ url `unsupported/genius-colorpage-cs.html'
comment `Probably unsupported, see link for details.'
model `ColorPage-Slim 1200 USB2'
interface `USB'
usb-vendor-id `0x0458'
usb-product-id `0x2020'
status unsupported
- url `/unsupported/genius-colorpage-slim-1200-usb2.html'
+ url `unsupported/genius-colorpage-slim-1200-usb2.html'
comment `GL841 based, to be added to genesys backend.'
model `ColorPage HR6X Slim'
interface `USB'
usb-vendor-id `0x0458'
usb-product-id `0x2019'
status unsupported
- url `/unsupported/genius-colorpage-hr6x.html'
+ url `unsupported/genius-colorpage-hr6x.html'
comment `GL646 based, to be added to genesys backend'
model `ColorPage HR7X'
interface `USB'
usb-vendor-id `0x0458'
usb-product-id `0x2018'
status unsupported
- url `/unsupported/genius-colorpage-hr7x.html'
+ url `unsupported/genius-colorpage-hr7x.html'
comment `GL646 based, to be added to genesys backend'
model `ColorPage HR7XE'
interface `USB'
usb-vendor-id `0x06dc'
usb-product-id `0x0012'
status unsupported
- url `/unsupported/genius-colorpage-hr7xe.html'
+ url `unsupported/genius-colorpage-hr7xe.html'
comment `Unsuported. See link for details.'
model `ColorPage HR8'
interface `USB'
usb-vendor-id `0x0458'
usb-product-id `0x201c'
status unsupported
- url `/unsupported/genius-colorpage-hr8.html'
+ url `unsupported/genius-colorpage-hr8.html'
comment `GL841 based, to be added to genesys backend'
mfg `Guillemot'
url *none*
@@ -12976,7 +12976,7 @@ backend `unsupported'
usb-vendor-id `0x080d'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/teco-vm6509.html'
+ url `unsupported/teco-vm6509.html'
comment `Probably unsupported. See link for details.'
model `Maxi Scan A4 Parallel 36 bit'
interface `Parport'
@@ -12993,7 +12993,7 @@ backend `unsupported'
usb-vendor-id `0x080d'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/teco-vm6509.html'
+ url `unsupported/teco-vm6509.html'
comment `Probably unsupported. See link for details.'
mfg `Hewlett-Packard'
url `http://www.hp.com/'
@@ -13003,7 +13003,7 @@ backend `unsupported'
usb-vendor-id `0x03f0'
usb-product-id `0x1001'
status unsupported
- url `/unsupported/hp-photo-1000.html'
+ url `unsupported/hp-photo-1000.html'
comment `Not supported by SANE. However, it's detected as mass storage device so just mounting it is reported to work. See link for device data.'
model `Photosmart 1200 Photo'
interface `USB'
@@ -13017,35 +13017,35 @@ backend `unsupported'
usb-vendor-id `0x03f0'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/hp-photosmart-s20xi.html'
+ url `unsupported/hp-photosmart-s20xi.html'
comment `Not supported yet by SANE. See link for details.'
model `Photosmart S20xi (C7150A)'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/hp-photosmart-s20xi.html'
+ url `unsupported/hp-photosmart-s20xi.html'
comment `Not supported yet by SANE. See link for details.'
model `Photosmart C5100 series'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x5811'
status unsupported
- url `/unsupported/hp-photosmart-5100.html'
+ url `unsupported/hp-photosmart-5100.html'
comment `Not supported yet by SANE. See link for details.'
model `ScanJet 2400c'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x0a01'
status unsupported
- url `/unsupported/hp-scanjet-2400c.html'
+ url `unsupported/hp-scanjet-2400c.html'
comment `GL646 based, to be added to genesys backend'
model `Photosmart C3180'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x5611'
status unsupported
- url `/unsupported/hp-photosmart-3180.html'
+ url `unsupported/hp-photosmart-3180.html'
comment `Not supported yet by SANE. See link for details.'
model `ScanJet 3770'
interface `USB'
@@ -13059,7 +13059,7 @@ backend `unsupported'
usb-vendor-id `0x03f0'
usb-product-id `0x3005'
status unsupported
- url `/unsupported/hp-scanjet-4600.html'
+ url `unsupported/hp-scanjet-4600.html'
comment `Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code'
model `ScanJet 4670'
interface `USB'
@@ -13073,35 +13073,35 @@ backend `unsupported'
usb-vendor-id `0x03f0'
usb-product-id `0x1b05'
status unsupported
- url `/unsupported/hp-scanjet-4850.html'
+ url `unsupported/hp-scanjet-4850.html'
comment `GL841, maybe can be added to genesys backend '
model `ScanJet 4890C'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x1b05'
status unsupported
- url `/unsupported/hp-scanjet-4850.html'
+ url `unsupported/hp-scanjet-4850.html'
comment `GL843, maybe can be added to genesys backend '
model `ScanJet 5530C Photosmart'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x1605'
status unsupported
- url `/unsupported/hp-scanjet-5530.html'
+ url `unsupported/hp-scanjet-5530.html'
comment `Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend'
model `ScanJet 8390'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x3805'
status unsupported
- url `/unsupported/hp-scanjet-8390.html'
+ url `unsupported/hp-scanjet-8390.html'
comment `Probably not supported. See link for details.'
model `ScanJet G4000'
interface `USB'
usb-vendor-id `0x03f0'
usb-product-id `0x4505'
status unsupported
- url `/unsupported/hp-g4000.html'
+ url `unsupported/hp-g4000.html'
comment `Probably not supported. See link for details.'
mfg `IBM'
url `http://www.ibm.com'
@@ -13121,7 +13121,7 @@ backend `unsupported'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Unsupported. See link for details.'
mfg `Iris'
url `http://irislink.com/'
@@ -13131,21 +13131,21 @@ backend `unsupported'
usb-vendor-id `0x0a53'
usb-product-id `0x1000'
status unsupported
- url `/unsupported/iris-iriscan.html'
+ url `unsupported/iris-iriscan.html'
comment `Unsupported. LM9832/3. See link for details.'
model `IRISPen Translator Executive'
interface `USB'
usb-vendor-id `0x0f43'
usb-product-id `0x015a'
status unsupported
- url `/unsupported/iris-irispen-translator.html'
+ url `unsupported/iris-irispen-translator.html'
comment `Unsupported. See link for details.'
model `IRISCard Pro (IBCR II)'
interface `USB'
usb-vendor-id `0x0a38'
usb-product-id `0x0301'
status unsupported
- url `/unsupported/iris-business.html'
+ url `unsupported/iris-business.html'
comment `Unsupported. See link for details.'
mfg `Kodak'
url `http://www.kodak.com'
@@ -13165,84 +13165,84 @@ backend `unsupported'
usb-vendor-id `0x043d'
usb-product-id `0x0097'
status unsupported
- url `/unsupported/lexmark-p6250.html'
+ url `unsupported/lexmark-p6250.html'
comment `Unsupported. See link for details.'
model `Photo 3150'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x007d'
status unsupported
- url `/unsupported/lexmark-3150.html'
+ url `unsupported/lexmark-3150.html'
comment `Unsupported. See link for details.'
model `X74'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0060'
status unsupported
- url `/unsupported/lexmark-x75.html'
+ url `unsupported/lexmark-x75.html'
comment `Unsupported. See link for details.'
model `X75'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0060'
status unsupported
- url `/unsupported/lexmark-x75.html'
+ url `unsupported/lexmark-x75.html'
comment `Unsupported. See link for details.'
model `X75 PrinTrio'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0060'
status unsupported
- url `/unsupported/lexmark-x75.html'
+ url `unsupported/lexmark-x75.html'
comment `Unsupported. See link for details.'
model `X83'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x003d'
status unsupported
- url `/unsupported/lexmark-x83.html'
+ url `unsupported/lexmark-x83.html'
comment `Unsupported. GL640.'
model `X2330'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x00bb'
status unsupported
- url `/unsupported/lexmark-x2330.html'
+ url `unsupported/lexmark-x2330.html'
comment `Unsupported. See link for details.'
model `X3450'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x00f6'
status unsupported
- url `/unsupported/lexmark-x3450.html'
+ url `unsupported/lexmark-x3450.html'
comment `Unsupported. See link for details.'
model `X5130'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0065'
status unsupported
- url `/unsupported/lexmark-x5130.html'
+ url `unsupported/lexmark-x5130.html'
comment `Unsupported.'
model `X5150'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0065'
status unsupported
- url `/unsupported/lexmark-x5130.html'
+ url `unsupported/lexmark-x5130.html'
comment `Probably unsupported. See link for details.'
model `X5250'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0093'
status unsupported
- url `/unsupported/lexmark-x5250.html'
+ url `unsupported/lexmark-x5250.html'
comment `Unsupported.'
model `X6170'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x0072'
status unsupported
- url `/unsupported/lexmark-x6170.html'
+ url `unsupported/lexmark-x6170.html'
comment `Unsupported. See link for details.'
model `X7170'
interface `USB'
@@ -13256,14 +13256,14 @@ backend `unsupported'
usb-vendor-id `0x043d'
usb-product-id `0x00b8'
status unsupported
- url `/unsupported/lexmark-x7350.html'
+ url `unsupported/lexmark-x7350.html'
comment `Unsupported. See link for details.'
model `X8350'
interface `USB'
usb-vendor-id `0x043d'
usb-product-id `0x00b9'
status unsupported
- url `/unsupported/lexmark-x8350.html'
+ url `unsupported/lexmark-x8350.html'
comment `Unsupported. See link for details.'
mfg `Logitech'
url *none*
@@ -13280,7 +13280,7 @@ backend `unsupported'
usb-vendor-id `0x046d'
usb-product-id `0x040f'
status unsupported
- url `/unsupported/logitech-pagescan-usb.html'
+ url `unsupported/logitech-pagescan-usb.html'
comment `Probably unsupported. See link for details.'
mfg `Medion/Lifetec/Tevion/Cytron'
url `http://www.medion.com/'
@@ -13291,42 +13291,42 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0392'
status unsupported
- url `/unsupported/medion-md6190.html'
+ url `unsupported/medion-md6190.html'
comment `Probably unsupported. There seem to exist two different scanners with that name. See link for details.'
model `MD 6190'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x037b'
status unsupported
- url `/unsupported/medion-md6190.html'
+ url `unsupported/medion-md6190.html'
comment `Probably unsupported. There seem to exist two different scanners with that name. See link for details.'
model `MD 40420'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3008'
status unsupported
- url `/unsupported/tevion-md40420.html'
+ url `unsupported/tevion-md40420.html'
comment `Probably unsupported. See link for details.'
model `MD 41260'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x037b'
status unsupported
- url `/unsupported/medion-md6190.html'
+ url `unsupported/medion-md6190.html'
comment `Probably unsupported. See link for details.'
model `MD 41985'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x037b'
status unsupported
- url `/unsupported/medion-md6190.html'
+ url `unsupported/medion-md6190.html'
comment `Probably unsupported. See link for details.'
model `MD 42666'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3008'
status unsupported
- url `/unsupported/tevion-md40420.html'
+ url `unsupported/tevion-md40420.html'
comment `Probably unsupported. See link for details.'
model `MD 85264'
interface `USB'
@@ -13340,21 +13340,21 @@ backend `unsupported'
usb-vendor-id `0x05da'
usb-product-id `0x30e5'
status unsupported
- url `/unsupported/tevion-md90009.html'
+ url `unsupported/tevion-md90009.html'
comment `Probably unsupported. See link for details.'
model `MD 90070'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3022'
status unsupported
- url `/unsupported/tevion-md90070.html'
+ url `unsupported/tevion-md90070.html'
comment `Unsupported. See link for details.'
model `MD 90090'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3022'
status unsupported
- url `/unsupported/tevion-md90070.html'
+ url `unsupported/tevion-md90070.html'
comment `Unsupported. See link for details.'
mfg `Memorex'
url `http://www.memorex.com/'
@@ -13364,28 +13364,28 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0346'
status unsupported
- url `/unsupported/memorex-maxx-6136u.html'
+ url `unsupported/memorex-maxx-6136u.html'
comment `Probably unsupported.'
model `6142u'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x0347'
status unsupported
- url `/unsupported/visioneer-onetouch4400.html'
+ url `unsupported/visioneer-onetouch4400.html'
comment `Probably unsupported. Same as Visioneer Onetouch 4400. See link for details.'
model `MaxxScan 6122'
interface `USB Parport'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Unsupported. See link for details.'
model `SCF 9612P'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/memorex-scf-9612p.html'
+ url `unsupported/memorex-scf-9612p.html'
comment `Probably unsupported. See link for details.'
mfg `Microtek'
url `http://www.microtek.com/'
@@ -13402,7 +13402,7 @@ backend `unsupported'
usb-vendor-id `0x05da'
usb-product-id `0x202e'
status unsupported
- url `/unsupported/microtek-artixscan-2020.html'
+ url `unsupported/microtek-artixscan-2020.html'
comment `Unsupported. See link for details.'
model `Artixscan 2500f'
interface `SCSI IEEE-1384'
@@ -13423,7 +13423,7 @@ backend `unsupported'
usb-vendor-id `0x05e3'
usb-product-id `0x0120'
status unsupported
- url `/unsupported/microtek-filmscan-35.html'
+ url `unsupported/microtek-filmscan-35.html'
comment `Probably unsupported. See link for details.'
model `ScanMaker 336 CX'
interface `SCSI'
@@ -13437,91 +13437,91 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/microtek-scanmaker-1850s.html'
+ url `unsupported/microtek-scanmaker-1850s.html'
comment `Unsupported. See link for details.'
model `ScanMaker 3630'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x0347'
status unsupported
- url `/unsupported/microtek-scanmaker-3630.html'
+ url `unsupported/microtek-scanmaker-3630.html'
comment `Unsupported. Doesn't seem to be compatible to 3600 series, see link.'
model `ScanMaker 3800'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30ce'
status unsupported
- url `/unsupported/microtek-scanmaker-3800.html'
+ url `unsupported/microtek-scanmaker-3800.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 3830'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30ce'
status unsupported
- url `/unsupported/microtek-scanmaker-3830.html'
+ url `unsupported/microtek-scanmaker-3830.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 3860'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3023'
status unsupported
- url `/unsupported/microtek-scanmaker-3880.html'
+ url `unsupported/microtek-scanmaker-3880.html'
comment `Unsupported. See link for more details. Appears to be similar to ScanMaker 3880.'
model `ScanMaker 3880'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3021'
status unsupported
- url `/unsupported/microtek-scanmaker-3880.html'
+ url `unsupported/microtek-scanmaker-3880.html'
comment `Unsupported. SQ113 chip. See link for more details.'
model `ScanMaker 4600'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x40c7'
status unsupported
- url `/unsupported/microtek-scanmaker-4600.html'
+ url `unsupported/microtek-scanmaker-4600.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 4700'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x20b4'
status unsupported
- url `/unsupported/microtek-scanmaker-4700.html'
+ url `unsupported/microtek-scanmaker-4700.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 4850'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30d9'
status unsupported
- url `/unsupported/microtek-scanmaker-4900.html'
+ url `unsupported/microtek-scanmaker-4900.html'
comment `Probably unsupported. See link for details.'
model `ScanMaker 4850 II'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x3008'
status unsupported
- url `/unsupported/microtek-scanmaker-4850-2.html'
+ url `unsupported/microtek-scanmaker-4850-2.html'
comment `Probably unsupported. See link for details.'
model `ScanMaker 4900'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30b9'
status unsupported
- url `/unsupported/microtek-scanmaker-4900.html'
+ url `unsupported/microtek-scanmaker-4900.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 5'
interface `SCSI'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/microtek-scanmaker-5600.html'
+ url `unsupported/microtek-scanmaker-5600.html'
comment `Probably unsupported. See link for more details.'
model `ScanMaker 5600'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x20a7'
status unsupported
- url `/unsupported/microtek-scanmaker-5600.html'
+ url `unsupported/microtek-scanmaker-5600.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 5700'
interface `USB'
@@ -13535,56 +13535,56 @@ backend `unsupported'
usb-vendor-id `0x05da'
usb-product-id `0x3008'
status unsupported
- url `/unsupported/microtek-scanmaker-5800.html'
+ url `unsupported/microtek-scanmaker-5800.html'
comment `Unsupported. See link for details.'
model `ScanMaker 5800'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30d8'
status unsupported
- url `/unsupported/microtek-scanmaker-5800.html'
+ url `unsupported/microtek-scanmaker-5800.html'
comment `Unsupported. See link for details.'
model `ScanMaker 5900'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30d8'
status unsupported
- url `/unsupported/microtek-scanmaker-5900.html'
+ url `unsupported/microtek-scanmaker-5900.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 5950'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30d8'
status unsupported
- url `/unsupported/microtek-scanmaker-5950.html'
+ url `unsupported/microtek-scanmaker-5950.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 6000'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30e5'
status unsupported
- url `/unsupported/microtek-scanmaker-6000.html'
+ url `unsupported/microtek-scanmaker-6000.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 6100'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30e5'
status unsupported
- url `/unsupported/microtek-scanmaker-6100.html'
+ url `unsupported/microtek-scanmaker-6100.html'
comment `Unsupported. See link for more details.'
model `ScanMaker 6700'
interface `USB IEEE-1394'
usb-vendor-id `0x05da'
usb-product-id `0x20c9'
status unsupported
- url `/unsupported/microtek-scanmaker-6700.html'
+ url `unsupported/microtek-scanmaker-6700.html'
comment `Unsupported. See link.'
model `ScanMaker 8700'
interface `USB IEEE-1394'
usb-vendor-id `0x05da'
usb-product-id `0x20b1'
status unsupported
- url `/unsupported/microtek-scanmaker-8700.html'
+ url `unsupported/microtek-scanmaker-8700.html'
comment `Unsupported. See link for details. USB vendor and product ids to be checked.'
model `ScanMaker 9600XL'
interface `USB IEEE-1394'
@@ -13598,35 +13598,35 @@ backend `unsupported'
usb-vendor-id `0x05da'
usb-product-id `0x20de'
status unsupported
- url `/unsupported/microtek-scanmaker-9800.html'
+ url `unsupported/microtek-scanmaker-9800.html'
comment `Partly unsupported. IEEE-1394 works with microtek2 backend. See link.'
model `ScanMaker i320'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x30e6'
status unsupported
- url `/unsupported/microtek-scanmaker-i320.html'
+ url `unsupported/microtek-scanmaker-i320.html'
comment `Unsupported. See link.'
model `ScanMaker s400'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x201c'
status unsupported
- url `/unsupported/microtek-scanmaker-s400.html'
+ url `unsupported/microtek-scanmaker-s400.html'
comment `Unsupported. See link.'
model `ScanMaker S400'
interface `USB'
usb-vendor-id `0x05da'
usb-product-id `0x300b'
status unsupported
- url `/unsupported/microtek-scanmaker-s400.html'
+ url `unsupported/microtek-scanmaker-s400.html'
comment `Unsupported. See link.'
model `ScanPort 3000'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0224'
status unsupported
- url `/unsupported/microtek-scanport-3000.html'
+ url `unsupported/microtek-scanport-3000.html'
comment `Unsupported. Vendor/Product ids: 0x04a7/0x0224. Realtek RTS8801B?. See link for details.'
mfg `Konica Minolta'
url `http://www.konicaminolta.com/'
@@ -13636,35 +13636,35 @@ backend `unsupported'
usb-vendor-id `0x0686'
usb-product-id `0x400d'
status unsupported
- url `/unsupported/minolta-dual-scan-III.html'
+ url `unsupported/minolta-dual-scan-III.html'
comment `Unsupported. May work with vuescan. See link for details.'
model `Dual Scan IV'
interface `USB'
usb-vendor-id `0x132b'
usb-product-id `0x000a'
status unsupported
- url `/unsupported/minolta-dual-scan-IV.html'
+ url `unsupported/minolta-dual-scan-IV.html'
comment `Unsupported. Works with vuescan. See link for details.'
model `DiMAGE Scan Elite 5400'
interface `USB IEEE-1394'
usb-vendor-id `0x0686'
usb-product-id `0x400e'
status unsupported
- url `/unsupported/minolta-dse-5400.html'
+ url `unsupported/minolta-dse-5400.html'
comment `Probably unsupported. May work with vuescan. See link for details.'
model `DiMAGE Scan Elite 5400 2'
interface `USB'
usb-vendor-id `0x132b'
usb-product-id `0x0012'
status unsupported
- url `/unsupported/minolta-dse-5400-2.html'
+ url `unsupported/minolta-dse-5400-2.html'
comment `Probably unsupported. See link for details.'
model `DiMAGE Scan Multi Pro'
interface `IEEE-1394'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/minolta-dimage-scan-multi-pro.html'
+ url `unsupported/minolta-dimage-scan-multi-pro.html'
comment `Probably unsupported. See link for details.'
model `magicolor 2480MF'
interface `USB Network'
@@ -13704,21 +13704,21 @@ backend `unsupported'
usb-vendor-id `0x055f'
usb-product-id `0x0408'
status unsupported
- url `/unsupported/mustek-bearpaw-2448-cu-pro.html'
+ url `unsupported/mustek-bearpaw-2448-cu-pro.html'
comment `Not supported. May be supported by mustek_usb2 backend later. See link for some information.'
model `BearPaw 4800 TA Pro'
interface `USB'
usb-vendor-id `0x055f'
usb-product-id `0x1000'
status unsupported
- url `/unsupported/mustek-bearpaw-4800ta-pro.html'
+ url `unsupported/mustek-bearpaw-4800ta-pro.html'
comment `Not supported. See link for some information.'
model `BearPaw 4800 TA Pro II'
interface `USB'
usb-vendor-id `0x055f'
usb-product-id `0x040a'
status unsupported
- url `/unsupported/mustek-bearpaw-4800ta-pro-ii.html'
+ url `unsupported/mustek-bearpaw-4800ta-pro-ii.html'
comment `Not supported. May be supported by mustek_usb2 backend later. See link for some information.'
model `BearPaw 6400 TA Pro'
interface `USB'
@@ -13781,7 +13781,7 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html'
+ url `http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html'
comment `Probably not supported. Same as Mustek 12000 P?. ASIC 1505.'
mfg `NEC'
url `http://www.nevt.co.jp/'
@@ -13791,7 +13791,7 @@ backend `unsupported'
usb-vendor-id `0x0475'
usb-product-id `0x0100'
status unsupported
- url `/unsupported/nec-petiscan.html'
+ url `unsupported/nec-petiscan.html'
comment `Most probably unsupported. See link for details. Vendor ID is Relisys/Teco. Not known if it is similar to other Relisys/Teco USB scanners.'
mfg `Nikon'
url `http://www.nikon.com/'
@@ -13801,7 +13801,7 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/nikon-ls9000-ed.html'
+ url `unsupported/nikon-ls9000-ed.html'
comment `Probably not supported. See link for details. Possibly similar to LS-8000 ED.'
mfg `Olivetti'
url `http://www.olivetti.com'
@@ -13811,7 +13811,7 @@ backend `unsupported'
usb-vendor-id `0x0b3c'
usb-product-id `0xa880'
status unsupported
- url `/unsupported/olivetti-job-jet-m400.html'
+ url `unsupported/olivetti-job-jet-m400.html'
comment `Probably not supported. See link for details.'
mfg `Olympus'
url `http://www.olympus.com'
@@ -13821,14 +13821,14 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html'
+ url `http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html'
comment *none*
model `ES-10S'
interface `SCSI'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/olympus-es10s.html'
+ url `unsupported/olympus-es10s.html'
comment `Probably not supported. See link for details.'
mfg `Optoelectronics'
url *none*
@@ -13987,7 +13987,7 @@ backend `unsupported'
usb-vendor-id `0x0a82'
usb-product-id `0x2000'
status unsupported
- url `/unsupported/syscan-travelscan-pro.html'
+ url `unsupported/syscan-travelscan-pro.html'
comment `Probably not supported. Some information is available.'
mfg `PIE'
url `http://www.scanace.com/'
@@ -13997,14 +13997,14 @@ backend `unsupported'
usb-vendor-id `0x05e3'
usb-product-id `0x0120'
status unsupported
- url `/unsupported/pie-1800u.html'
+ url `unsupported/pie-1800u.html'
comment `Not supported. See link for details.'
model `Primefilm 2700'
interface `USB'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html'
+ url `http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html'
comment *none*
model `Primefilm 3600PRO'
interface `USB IEEE-1394'
@@ -14018,14 +14018,14 @@ backend `unsupported'
usb-vendor-id `0x05e3'
usb-product-id `0x0142'
status unsupported
- url `/unsupported/reflecta-digitdia-3600.html'
+ url `unsupported/reflecta-digitdia-3600.html'
comment `Probably unsupported. Film scanner that can scan directly from the magazine.'
model `PF3650 Pro3 Film Scanner'
interface `USB IEEE-1394'
usb-vendor-id `0x05e3'
usb-product-id `0x0143'
status unsupported
- url `/unsupported/pie-pf3650.html'
+ url `unsupported/pie-pf3650.html'
comment `Not supported. See link for details.'
mfg `Plustek'
url `http://www.plustek.de/'
@@ -14036,7 +14036,7 @@ backend `unsupported'
usb-vendor-id `0x07b3'
usb-product-id `0x0807'
status unsupported
- url `/unsupported/plustek-opticfilm-7200.html'
+ url `unsupported/plustek-opticfilm-7200.html'
comment `GL842 based, maybe to be added to genesys backend'
model `OpticFilm 7200i'
interface `USB'
@@ -14064,21 +14064,21 @@ backend `unsupported'
usb-vendor-id `0x07b3'
usb-product-id `0x0600'
status unsupported
- url `/unsupported/plustek-opticpro-st12.html'
+ url `unsupported/plustek-opticpro-st12.html'
comment `Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.'
model `OpticPro ST12'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0600'
status unsupported
- url `/unsupported/plustek-opticpro-st12.html'
+ url `unsupported/plustek-opticpro-st12.html'
comment `Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.'
model `OpticPro ST16'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0600'
status unsupported
- url `/unsupported/plustek-opticpro-st16.html'
+ url `unsupported/plustek-opticpro-st16.html'
comment `GL646 based, to be added to genesys backend'
model `OpticPro UA18'
interface `USB'
@@ -14092,98 +14092,98 @@ backend `unsupported'
usb-vendor-id `0x07b3'
usb-product-id `0x0601'
status unsupported
- url `/unsupported/plustek-opticpro-st24.html'
+ url `unsupported/plustek-opticpro-st24.html'
comment `Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend.'
model `OpticPro ST24'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0601'
status unsupported
- url `/unsupported/plustek-opticpro-st24.html'
+ url `unsupported/plustek-opticpro-st24.html'
comment `GL646 based, to be added to genesys backend'
model `OpticPro S28'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0801'
status unsupported
- url `/unsupported/plustek-opticpro-s28.html'
+ url `unsupported/plustek-opticpro-s28.html'
comment `GL841 based, to be added to genesys backend'
model `OpticPro ST28'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0801'
status unsupported
- url `/unsupported/plustek-opticpro-s28.html'
+ url `unsupported/plustek-opticpro-s28.html'
comment `GL841 based, to be added to genesys backend'
model `OpticPro ST28'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0802'
status unsupported
- url `/unsupported/plustek-opticpro-st28.html'
+ url `unsupported/plustek-opticpro-st28.html'
comment `GL841 based, to be added to genesys backend'
model `Umax AstraScan 4750'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0802'
status unsupported
- url `/unsupported/umax-astrscan-4750.html'
+ url `unsupported/umax-astrscan-4750.html'
comment `GL841 based, to be added to genesys backend, rebadged Plustek ST28'
model `OpticPro ST48'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0800'
status unsupported
- url `/unsupported/plustek-opticpro-st48.html'
+ url `unsupported/plustek-opticpro-st48.html'
comment `GL841 based, to be added to genesys backend'
model `OpticPro ST64'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0c00'
status unsupported
- url `/unsupported/plustek-opticpro-st64.html'
+ url `unsupported/plustek-opticpro-st64.html'
comment `GL843 based, maybe to be added to genesys backend'
model `OpticPro ST64+'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0c03'
status unsupported
- url `/unsupported/plustek-opticpro-st64plus.html'
+ url `unsupported/plustek-opticpro-st64plus.html'
comment `GL843 based. See link for more details.'
model `PL 806'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0c0c'
status unsupported
- url `/unsupported/plustek-pl806.html'
+ url `unsupported/plustek-pl806.html'
comment `Unsupported. See link for more details.'
model `SmartOffice PL 812'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0c0d'
status unsupported
- url `/unsupported/plustek-pl812.html'
+ url `unsupported/plustek-pl812.html'
comment `Unsupported. See link for more details.'
model `OpticSlim 500'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0458'
status unsupported
- url `/unsupported/plustek-opticslim-500.html'
+ url `unsupported/plustek-opticslim-500.html'
comment `Unsupported. See link for more details.'
model `OpticSlim 2420'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0806'
status unsupported
- url `/unsupported/plustek-opticslim-2420.html'
+ url `unsupported/plustek-opticslim-2420.html'
comment `GL841 based, to be added to genesys backend'
model `OpticSlim 2420+'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0914'
status unsupported
- url `/unsupported/plustek-opticslim-2420plus.html'
+ url `unsupported/plustek-opticslim-2420plus.html'
comment `GL841 based, to be added to genesys backend'
model `OpticWorks 2000'
interface `Parport'
@@ -14204,7 +14204,7 @@ backend `unsupported'
usb-vendor-id `0x07b3'
usb-product-id `0x081c'
status unsupported
- url `/unsupported/plustek-scancopy-115.html'
+ url `unsupported/plustek-scancopy-115.html'
comment `GL841 based, to be added to genesys backend'
model `Spectra ADF'
interface `Proprietary'
@@ -14270,7 +14270,7 @@ backend `unsupported'
usb-vendor-id `0x10c4'
usb-product-id `0xea60'
status unsupported
- url `/unsupported/planon-docupen-r700.html'
+ url `unsupported/planon-docupen-r700.html'
comment `Probably not supported. See link for details.'
model `DocuPen (DPEN-BW)'
interface `USB'
@@ -14287,7 +14287,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0341'
status unsupported
- url `/unsupported/primax-colorado-600u.html'
+ url `unsupported/primax-colorado-600u.html'
comment `Not supported. Some information is available.'
model `Colorado 1200p'
interface `Parport'
@@ -14308,7 +14308,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0347'
status unsupported
- url `/unsupported/visioneer-onetouch4400.html'
+ url `unsupported/visioneer-onetouch4400.html'
comment `Unsupported. Same as Visioneer Onetouch 4400. See link for details.'
model `Colorado Direct 600'
interface `Parport'
@@ -14329,7 +14329,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0340'
status unsupported
- url `/unsupported/primax-colorado-usb-9600.html'
+ url `unsupported/primax-colorado-usb-9600.html'
comment `Not supported. See link for details.'
model `G2-300'
interface `USB'
@@ -14406,7 +14406,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0371'
status unsupported
- url `/unsupported/visioneer-onetouch8920.html'
+ url `unsupported/visioneer-onetouch8920.html'
comment `Not supported. Look similar to Visioneer Onetouch 8920 (same USB product id).'
mfg `Prolink'
url `http://www.fida.com/'
@@ -14416,7 +14416,7 @@ backend `unsupported'
usb-vendor-id `0x06dc'
usb-product-id `0x0014'
status unsupported
- url `/unsupported/prolink-2448u.html'
+ url `unsupported/prolink-2448u.html'
comment `Not supported. Some information is available. RealTek RTS8801.'
model `Winscan Pro 2000'
interface `USB Parport'
@@ -14450,21 +14450,21 @@ backend `unsupported'
usb-vendor-id `0x05e3'
usb-product-id `0x0142'
status unsupported
- url `/unsupported/reflecta-digitdia-3600.html'
+ url `unsupported/reflecta-digitdia-3600.html'
comment `Film scanner that can scan directly from the magazine.'
model `iScan 1800'
interface `USB'
usb-vendor-id `0x05e3'
usb-product-id `0x0120'
status unsupported
- url `/unsupported/reflecta-iscan-1800.html'
+ url `unsupported/reflecta-iscan-1800.html'
comment `Probably unsupported. See link for details.'
model `ProScan 4000'
interface `USB IEEE-1394'
usb-vendor-id `0x05e3'
usb-product-id `0x0143'
status unsupported
- url `/unsupported/reflecta-proscan-4000.html'
+ url `unsupported/reflecta-proscan-4000.html'
comment `Probably unsupported. See link for details.'
mfg `Relisys'
url *none*
@@ -14474,21 +14474,21 @@ backend `unsupported'
usb-vendor-id `0x0475'
usb-product-id `0x0103'
status unsupported
- url `/unsupported/relisys-eclipse-1200u.html'
+ url `unsupported/relisys-eclipse-1200u.html'
comment `Probably unsupported. See link for details.'
model `Scorpio Ultra 3'
interface `USB'
usb-vendor-id `0x0475'
usb-product-id `0x0210'
status unsupported
- url `/unsupported/relisys-scorpio-ultra3.html'
+ url `unsupported/relisys-scorpio-ultra3.html'
comment `Probably unsupported. See link for details.'
model `Episode'
interface `USB'
usb-vendor-id `0x0475'
usb-product-id `0x0103'
status unsupported
- url `/unsupported/relisys-episode.html'
+ url `unsupported/relisys-episode.html'
comment `Probably unsupported. See link for details.'
model `AVEC II E3'
interface `Parport'
@@ -14505,7 +14505,7 @@ backend `unsupported'
usb-vendor-id `0x04e8'
usb-product-id `0x341f'
status unsupported
- url `/unsupported/samsung-scx-4725.html'
+ url `unsupported/samsung-scx-4725.html'
comment `Not supported. See link for details.'
mfg `Scanshell'
url *none*
@@ -14515,7 +14515,7 @@ backend `unsupported'
usb-vendor-id `0x0a82'
usb-product-id `0x6605'
status unsupported
- url `/unsupported/scanshell-800n.html'
+ url `unsupported/scanshell-800n.html'
comment `Not supported. See link for details.'
mfg `Sicos'
url *none*
@@ -14586,14 +14586,14 @@ backend `unsupported'
usb-vendor-id `0x0a82'
usb-product-id `0x0530'
status unsupported
- url `/unsupported/syscan-travelscan-fs531.html'
+ url `unsupported/syscan-travelscan-fs531.html'
comment `Not supported. May work with the Plustek backend in future. See link for details.'
model `TravelScan Pro'
interface `USB'
usb-vendor-id `0x0a82'
usb-product-id `0x2000'
status unsupported
- url `/unsupported/syscan-travelscan-pro.html'
+ url `unsupported/syscan-travelscan-pro.html'
comment `Probably not supported. Some information is available.'
mfg `Tamarack'
url *none*
@@ -14617,7 +14617,7 @@ backend `unsupported'
usb-vendor-id `0x05e3'
usb-product-id `0x0100'
status unsupported
- url `/unsupported/tamarack-artiscan-2400.html'
+ url `unsupported/tamarack-artiscan-2400.html'
comment `Unsupported. See link for more information.'
mfg `TCE'
url `http://www.tce.com.br/'
@@ -14627,7 +14627,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0346'
status unsupported
- url `/unsupported/memorex-maxx-6136u.html'
+ url `unsupported/memorex-maxx-6136u.html'
comment `Not supported. Some information is available.'
model `S450'
interface `Parport'
@@ -14644,7 +14644,7 @@ backend `unsupported'
usb-vendor-id `0x080d'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/teco-vm6509.html'
+ url `unsupported/teco-vm6509.html'
comment `Probably unsupported. See link for details.'
mfg `Tiny'
url *none*
@@ -14654,7 +14654,7 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0347'
status unsupported
- url `/unsupported/visioneer-onetouch4400.html'
+ url `unsupported/visioneer-onetouch4400.html'
comment `Unsupported. See link for details.'
mfg `Trust'
url `http://www.trust-site.com'
@@ -14664,21 +14664,21 @@ backend `unsupported'
usb-vendor-id `0x05cb'
usb-product-id `0x1483'
status unsupported
- url `/unsupported/trust-combiscan-19200.html'
+ url `unsupported/trust-combiscan-19200.html'
comment `Unsupported. See link for details.'
model `EasyScan 19200'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html'
+ url `http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html'
comment *none*
model `SCSI Scan 19200 -Excellence Series-'
interface `SCSI'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/trust-scsi-scan-19200.html'
+ url `unsupported/trust-scsi-scan-19200.html'
comment `Unsupported. See link for details.'
mfg `UMAX'
url `http://www.umax.com/'
@@ -14688,49 +14688,49 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x0374'
status unsupported
- url `/unsupported/umax-astra-2500.html'
+ url `unsupported/umax-astra-2500.html'
comment `Probably not supported. See link for details.'
model `Astra 2850'
interface `USB'
usb-vendor-id `0x07b3'
usb-product-id `0x0601'
status unsupported
- url `/unsupported/plustek-opticpro-st24.html'
+ url `unsupported/plustek-opticpro-st24.html'
comment `Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details.'
model `Astra 3000'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x038a'
status unsupported
- url `/unsupported/umax-astra-3000.html'
+ url `unsupported/umax-astra-3000.html'
comment `Probably not supported. See link for details.'
model `Astra 3600'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x038a'
status unsupported
- url `/unsupported/umax-astra-3600.html'
+ url `unsupported/umax-astra-3600.html'
comment `Probably not supported. See link for details.'
model `Astra 4000'
interface `USB'
usb-vendor-id `0x1606'
usb-product-id `0x1030'
status unsupported
- url `/unsupported/umax-astra-4000.html'
+ url `unsupported/umax-astra-4000.html'
comment `Not supported. See link for details.'
model `Astra 4100'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x038c'
status unsupported
- url `/unsupported/umax-astra-4100.html'
+ url `unsupported/umax-astra-4100.html'
comment `Not supported, to be added to genesys backend.'
model `Astra 4500'
interface `USB'
usb-vendor-id `0x0638'
usb-product-id `0x0a10'
status unsupported
- url `/unsupported/umax-astra-4500.html'
+ url `unsupported/umax-astra-4500.html'
comment `GL646 based, to be added to genesys backend. Avision iVina FB1600 clone'
model `Astra 4600'
interface `USB'
@@ -14744,7 +14744,7 @@ backend `unsupported'
usb-vendor-id `0x0638'
usb-product-id `0x0a20'
status unsupported
- url `/unsupported/umax-astra-4700.html'
+ url `unsupported/umax-astra-4700.html'
comment `GL646/GL660 based. Avision iVina FB1800 clone.'
model `Astra 6700'
interface `USB'
@@ -14758,21 +14758,21 @@ backend `unsupported'
usb-vendor-id `0x080d'
usb-product-id `0x0104'
status unsupported
- url `/unsupported/umax-astraslim.html'
+ url `unsupported/umax-astraslim.html'
comment `Probably not supported currently. See link for more details.'
model `AstraSlim 1200'
interface `USB'
usb-vendor-id `0x080d'
usb-product-id `0x0110'
status unsupported
- url `/unsupported/umax-astraslim-1200.html'
+ url `unsupported/umax-astraslim-1200.html'
comment `See link for more details.'
model `AstraSlim 6000'
interface `USB'
usb-vendor-id `0x080d'
usb-product-id `0x0104'
status unsupported
- url `/unsupported/umax-astraslim-6000.html'
+ url `unsupported/umax-astraslim-6000.html'
comment `Probably not supported currently. See link for more details.'
model `Nete3470''
interface `Parport'
@@ -14786,7 +14786,7 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/umax-powerlook-180.html'
+ url `unsupported/umax-powerlook-180.html'
comment `Probably not supported. See link for details.'
model `Powerlook 1000 USB'
interface `USB'
@@ -14803,7 +14803,7 @@ backend `unsupported'
usb-vendor-id `0x04a7'
usb-product-id `0x0224'
status unsupported
- url `/unsupported/visioneer-onetouch4800.html'
+ url `unsupported/visioneer-onetouch4800.html'
comment `Not supported. See link for more details.'
mfg `Visioneer'
url `http://www.visioneer.com/'
@@ -14827,35 +14827,35 @@ backend `unsupported'
usb-vendor-id `0x0461'
usb-product-id `0x03a8'
status unsupported
- url `/unsupported/visioneer-9420.html'
+ url `unsupported/visioneer-9420.html'
comment `Unsupported. See link for details.'
model `9450 USB'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0421'
status unsupported
- url `/unsupported/visioneer-9450-usb.html'
+ url `unsupported/visioneer-9450-usb.html'
comment `Unsupported. See link for details.'
model `Onetouch 4400'
interface `USB'
usb-vendor-id `0x0461'
usb-product-id `0x0347'
status unsupported
- url `/unsupported/visioneer-onetouch4400.html'
+ url `unsupported/visioneer-onetouch4400.html'
comment `Not supported. E5 chipset? See link for more details.'
model `OneTouch 4800 USB'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0224'
status unsupported
- url `/unsupported/visioneer-onetouch4800.html'
+ url `unsupported/visioneer-onetouch4800.html'
comment `Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details.'
model `OneTouch 5300 USB'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0226'
status unsupported
- url `/unsupported/visioneer-onetouch5300.html'
+ url `unsupported/visioneer-onetouch5300.html'
comment `Not supported. Chipset is RTS8801B(?). See link for output of /proc/bus/usb/devices.'
model `OneTouch 5300'
interface `USB'
@@ -14869,98 +14869,98 @@ backend `unsupported'
usb-vendor-id `0x04a7'
usb-product-id `0x0226'
status unsupported
- url `/unsupported/visioneer-onetouch5800.html'
+ url `unsupported/visioneer-onetouch5800.html'
comment `Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C.'
model `OneTouch 6600'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x022a'
status unsupported
- url `/unsupported/visioneer-onetouch6600.html'
+ url `unsupported/visioneer-onetouch6600.html'
comment `Unsupported. See link for details.'
model `Onetouch 7100'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0229'
status unsupported
- url `/unsupported/visioneer-onetouch7100.html'
+ url `unsupported/visioneer-onetouch7100.html'
comment `GL646 based, to be added to genesys backend'
model `Onetouch 7700'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0380'
status unsupported
- url `/unsupported/visioneer-onetouch7700.html'
+ url `unsupported/visioneer-onetouch7700.html'
comment `LM9832/3 based, to be added to plustek backend'
model `OneTouch 8100'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0321'
status unsupported
- url `/unsupported/visioneer-onetouch8100.html'
+ url `unsupported/visioneer-onetouch8100.html'
comment `Unsupported. See link for details.'
model `Onetouch 8700'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0371'
status unsupported
- url `/unsupported/visioneer-onetouch8920.html'
+ url `unsupported/visioneer-onetouch8920.html'
comment `Not supported. See link for details.'
model `Onetouch 8900'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0371'
status unsupported
- url `/unsupported/visioneer-onetouch8920.html'
+ url `unsupported/visioneer-onetouch8920.html'
comment `Not supported. Same as 8920 but without TA?'
model `Onetouch 8920'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0371'
status unsupported
- url `/unsupported/visioneer-onetouch8920.html'
+ url `unsupported/visioneer-onetouch8920.html'
comment `Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices.'
model `Onetouch 9000'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x022c'
status unsupported
- url `/unsupported/visioneer-onetouch9020.html'
+ url `unsupported/visioneer-onetouch9020.html'
comment `Not supported. See link for details.'
model `Onetouch 9020'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x022c'
status unsupported
- url `/unsupported/visioneer-onetouch9020.html'
+ url `unsupported/visioneer-onetouch9020.html'
comment `Not supported. See link for details.'
model `Onetouch 9320'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0362'
status unsupported
- url `/unsupported/visioneer-onetouch9320.html'
+ url `unsupported/visioneer-onetouch9320.html'
comment `Probably not supported. See link for details.'
model `Onetouch Pro 8800'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0410'
status unsupported
- url `/unsupported/visioneer-onetouch8820.html'
+ url `unsupported/visioneer-onetouch8820.html'
comment `Probably not supported. See link for details.'
model `Onetouch Pro 8820'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0410'
status unsupported
- url `/unsupported/visioneer-onetouch8820.html'
+ url `unsupported/visioneer-onetouch8820.html'
comment `Probably not supported. See link for details.'
model `PaperPort 3100b'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/visioneer-paperport-3100b.html'
+ url `unsupported/visioneer-paperport-3100b.html'
comment `Most probably not supported. See link for details.'
model `PaperPort 6100'
interface `Parport'
@@ -14974,98 +14974,98 @@ backend `unsupported'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/visioneer-paperport-onetouch.html'
+ url `unsupported/visioneer-paperport-onetouch.html'
comment `Most probably not supported. See link for details.'
model `Strobe Pro USB'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0102'
status unsupported
- url `/unsupported/visioneer-strobe-pro-usb.html'
+ url `unsupported/visioneer-strobe-pro-usb.html'
comment `Not supported. See link for details.'
model `4800 One Touch'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x03a0'
status unsupported
- url `/unsupported/xerox-4800-onetouch.html'
+ url `unsupported/xerox-4800-onetouch.html'
comment `Unsupported. See link for details. Different id compared to One Touch 4800?'
model `DocuImage 620S'
interface `SCSI'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/xerox-docuimage-620s.html'
+ url `unsupported/xerox-docuimage-620s.html'
comment `Not supported. See link for more details.'
model `DocuMate 510'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0446'
status unsupported
- url `/unsupported/xerox-documate-510.html'
+ url `unsupported/xerox-documate-510.html'
comment `Not supported. See link for more details.'
model `DocuMate 510'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x047c'
status unsupported
- url `/unsupported/xerox-documate-510.html'
+ url `unsupported/xerox-documate-510.html'
comment `Not supported. See link for more details. Yet another USB id.'
model `One Touch 4800'
interface `USB'
usb-vendor-id `0x04a7'
usb-product-id `0x0224'
status unsupported
- url `/unsupported/visioneer-onetouch4800.html'
+ url `unsupported/visioneer-onetouch4800.html'
comment `Unsupported. See link for details. Different id compared to 4800 One Touch?'
model `WorkCentre 470cx'
interface `Parport'
usb-vendor-id *none*
usb-product-id *none*
status unsupported
- url `/unsupported/xerox-workcentre-470cx.html'
+ url `unsupported/xerox-workcentre-470cx.html'
comment `Not supported. See link for more details.'
model `WorkCentre M15i'
interface `USB'
usb-vendor-id `0x0924'
usb-product-id `0xffef'
status unsupported
- url `/unsupported/xerox-workcentre-m15i.html'
+ url `unsupported/xerox-workcentre-m15i.html'
comment `Not supported. See link for more details.'
model `WorkCentre XK35c'
interface `USB Parport'
usb-vendor-id `0x043d'
usb-product-id `0x0020'
status unsupported
- url `/unsupported/xerox-workcentre-xk35c.html'
+ url `unsupported/xerox-workcentre-xk35c.html'
comment `Not supported. See link for more details.'
model `WorkCentre XK50cx'
interface `USB'
usb-vendor-id `0x04e8'
usb-product-id `0x3903'
status unsupported
- url `/unsupported/xerox-workcentre-xk50cx.html'
+ url `unsupported/xerox-workcentre-xk50cx.html'
comment `Not supported. See link for more details.'
model `WorkCentre Pro 412'
interface `USB Parport'
usb-vendor-id `0x043d'
usb-product-id `0x4303'
status unsupported
- url `/unsupported/xerox-workcentre-pro412.html'
+ url `unsupported/xerox-workcentre-pro412.html'
comment `Not supported. See link for more details.'
model `WorkCentre PE16'
interface `USB Parport'
usb-vendor-id `0x0924'
usb-product-id `0x4220'
status unsupported
- url `/unsupported/xerox-workcentre-pe16.html'
+ url `unsupported/xerox-workcentre-pe16.html'
comment `Not supported. See link for more details.'
model `WorkCentre PE120i'
interface `USB'
usb-vendor-id `0x0924'
usb-product-id `0x4237'
status unsupported
- url `/unsupported/xerox-workcentre-pe120i.html'
+ url `unsupported/xerox-workcentre-pe120i.html'
comment `Not supported. See link for more details.'
type vidcam
mfg `Biolux'
@@ -15076,7 +15076,7 @@ backend `unsupported'
usb-vendor-id `0x0923'
usb-product-id `0x010f'
status unsupported
- url `/unsupported/biolux-654.html'
+ url `unsupported/biolux-654.html'
comment `Not supported yet. See link for more details.'
mfg `Grandtek Scopecam'
url *none*
@@ -15086,7 +15086,7 @@ backend `unsupported'
usb-vendor-id `0x0797'
usb-product-id `0x801c'
status unsupported
- url `/unsupported/grandtech-scopecam.html'
+ url `unsupported/grandtech-scopecam.html'
comment `Not Supported yet. See link for more details.'
backend `v4l'
version `1.0-3'
diff --git a/testsuite/tools/data/db.ref b/testsuite/tools/data/db.ref
index f293b5b..d51729a 100644
--- a/testsuite/tools/data/db.ref
+++ b/testsuite/tools/data/db.ref
@@ -22,1341 +22,1341 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
# Hewlett-Packard ScanJet 4100C
-0x03f0 0x0101 root:scanner 0664
+0x03f0 0x0101 root:scanner 0664
# Hewlett-Packard ScanJet 4200C | Hewlett-Packard ScanJet 4200Cxi | Hewlett-Packard ScanJet 4200Cse
-0x03f0 0x0105 root:scanner 0664
+0x03f0 0x0105 root:scanner 0664
# Hewlett-Packard ScanJet 6200C | Hewlett-Packard ScanJet 6250C
-0x03f0 0x0201 root:scanner 0664
+0x03f0 0x0201 root:scanner 0664
# Hewlett-Packard ScanJet 3300c
-0x03f0 0x0205 root:scanner 0664
+0x03f0 0x0205 root:scanner 0664
# Hewlett-Packard ScanJet 4300c
-0x03f0 0x0305 root:scanner 0664
+0x03f0 0x0305 root:scanner 0664
# Hewlett-Packard ScanJet 5200C
-0x03f0 0x0401 root:scanner 0664
+0x03f0 0x0401 root:scanner 0664
# Hewlett-Packard ScanJet 3400c
-0x03f0 0x0405 root:scanner 0664
+0x03f0 0x0405 root:scanner 0664
# Hewlett-Packard ScanJet 2100C
-0x03f0 0x0505 root:scanner 0664
+0x03f0 0x0505 root:scanner 0664
# Hewlett-Packard ScanJet 6300C | Hewlett-Packard ScanJet 6350C | Hewlett-Packard ScanJet 6390C
-0x03f0 0x0601 root:scanner 0664
+0x03f0 0x0601 root:scanner 0664
# Hewlett-Packard ScanJet 2200C
-0x03f0 0x0605 root:scanner 0664
+0x03f0 0x0605 root:scanner 0664
# Hewlett-Packard ScanJet 5300C | Hewlett-Packard ScanJet 5370C
-0x03f0 0x0701 root:scanner 0664
+0x03f0 0x0701 root:scanner 0664
# Hewlett-Packard scanjet 4400c
-0x03f0 0x0705 root:scanner 0664
+0x03f0 0x0705 root:scanner 0664
# Hewlett-Packard ScanJet 7400c | Hewlett-Packard ScanJet 7450c | Hewlett-Packard ScanJet 7490c
-0x03f0 0x0801 root:scanner 0664
+0x03f0 0x0801 root:scanner 0664
# Hewlett-Packard scanjet 4470c
-0x03f0 0x0805 root:scanner 0664
+0x03f0 0x0805 root:scanner 0664
# Hewlett-Packard ScanJet 2300C
-0x03f0 0x0901 root:scanner 0664
+0x03f0 0x0901 root:scanner 0664
# Hewlett-Packard ScanJet 2400C | Hewlett-Packard ScanJet G2410
-0x03f0 0x0a01 root:scanner 0664
+0x03f0 0x0a01 root:scanner 0664
# Hewlett-Packard ScanJet 8200 | Hewlett-Packard ScanJet 8250 | Hewlett-Packard ScanJet 8290
-0x03f0 0x0b01 root:scanner 0664
+0x03f0 0x0b01 root:scanner 0664
# Hewlett-Packard ScanJet 5400c
-0x03f0 0x1005 root:scanner 0664
+0x03f0 0x1005 root:scanner 0664
# Hewlett-Packard ScanJet 5470c
-0x03f0 0x1105 root:scanner 0664
+0x03f0 0x1105 root:scanner 0664
# Hewlett-Packard ScanJet 4500C | Hewlett-Packard ScanJet 5550C
-0x03f0 0x1205 root:scanner 0664
+0x03f0 0x1205 root:scanner 0664
# Hewlett-Packard ScanJet 4570C | Hewlett-Packard ScanJet 5500C
-0x03f0 0x1305 root:scanner 0664
+0x03f0 0x1305 root:scanner 0664
# Hewlett-Packard ScanJet 3670C | Hewlett-Packard ScanJet 3690C
-0x03f0 0x1405 root:scanner 0664
+0x03f0 0x1405 root:scanner 0664
# Hewlett-Packard ScanJet 5590
-0x03f0 0x1705 root:scanner 0664
+0x03f0 0x1705 root:scanner 0664
# Hewlett-Packard ScanJet 7650
-0x03f0 0x1805 root:scanner 0664
+0x03f0 0x1805 root:scanner 0664
# Hewlett-Packard ScanJet 4850C
-0x03f0 0x1b05 root:scanner 0664
+0x03f0 0x1b05 root:scanner 0664
# Hewlett-Packard ScanJet 3530C | Hewlett-Packard ScanJet 3570C
-0x03f0 0x2005 root:scanner 0664
+0x03f0 0x2005 root:scanner 0664
# Hewlett-Packard ScanJet 3500C
-0x03f0 0x2205 root:scanner 0664
+0x03f0 0x2205 root:scanner 0664
# Hewlett-Packard ScanJet 3970c
-0x03f0 0x2305 root:scanner 0664
+0x03f0 0x2305 root:scanner 0664
# Hewlett-Packard ScanJet 4070 Photosmart
-0x03f0 0x2405 root:scanner 0664
+0x03f0 0x2405 root:scanner 0664
# Hewlett-Packard ScanJet 3800
-0x03f0 0x2605 root:scanner 0664
+0x03f0 0x2605 root:scanner 0664
# Hewlett-Packard ScanJet G2710
-0x03f0 0x2805 root:scanner 0664
+0x03f0 0x2805 root:scanner 0664
# Hewlett-Packard ScanJet 8300 | Hewlett-Packard ScanJet 8350 | Hewlett-Packard ScanJet 8390
-0x03f0 0x3805 root:scanner 0664
+0x03f0 0x3805 root:scanner 0664
# Hewlett-Packard ScanJet 8270
-0x03f0 0x3905 root:scanner 0664
+0x03f0 0x3905 root:scanner 0664
# Hewlett-Packard LaserJet M1005 MFP
-0x03f0 0x3b17 root:scanner 0664
+0x03f0 0x3b17 root:scanner 0664
# Hewlett-Packard ScanJet 4370
-0x03f0 0x4105 root:scanner 0664
+0x03f0 0x4105 root:scanner 0664
# Hewlett-Packard ScanJet G3010
-0x03f0 0x4205 root:scanner 0664
+0x03f0 0x4205 root:scanner 0664
# Hewlett-Packard ScanJet G3110
-0x03f0 0x4305 root:scanner 0664
+0x03f0 0x4305 root:scanner 0664
# Hewlett-Packard ScanJet G4010
-0x03f0 0x4505 root:scanner 0664
+0x03f0 0x4505 root:scanner 0664
# Hewlett-Packard ScanJet G4050
-0x03f0 0x4605 root:scanner 0664
+0x03f0 0x4605 root:scanner 0664
# Hewlett-Packard ScanJet N6310
-0x03f0 0x4705 root:scanner 0664
+0x03f0 0x4705 root:scanner 0664
# Hewlett-Packard LaserJet M1120 MFP
-0x03f0 0x5617 root:scanner 0664
+0x03f0 0x5617 root:scanner 0664
# Hewlett-Packard LaserJet M1120n MFP
-0x03f0 0x5717 root:scanner 0664
+0x03f0 0x5717 root:scanner 0664
# Mustek BearPaw 1200
-0x0400 0x1000 root:scanner 0664
+0x0400 0x1000 root:scanner 0664
# Mustek BearPaw 1200 | Mustek BearPaw 2400
-0x0400 0x1001 root:scanner 0664
+0x0400 0x1001 root:scanner 0664
# Kodak ESP 5100
-0x040a 0x4025 root:scanner 0664
+0x040a 0x4025 root:scanner 0664
# Kodak ESP 5300
-0x040a 0x4026 root:scanner 0664
+0x040a 0x4026 root:scanner 0664
# Kodak ESP 5500
-0x040a 0x4027 root:scanner 0664
+0x040a 0x4027 root:scanner 0664
# Kodak ESP 5000
-0x040a 0x4028 root:scanner 0664
+0x040a 0x4028 root:scanner 0664
# Kodak ESP 3300
-0x040a 0x4031 root:scanner 0664
+0x040a 0x4031 root:scanner 0664
# Kodak ESP 5
-0x040a 0x4032 root:scanner 0664
+0x040a 0x4032 root:scanner 0664
# Kodak ESP 7
-0x040a 0x403e root:scanner 0664
+0x040a 0x403e root:scanner 0664
# Kodak ESP 9
-0x040a 0x403f root:scanner 0664
+0x040a 0x403f root:scanner 0664
# Kodak ESP 5200
-0x040a 0x4041 root:scanner 0664
+0x040a 0x4041 root:scanner 0664
# Kodak ESP 3200
-0x040a 0x4043 root:scanner 0664
+0x040a 0x4043 root:scanner 0664
# Kodak ESP 4100
-0x040a 0x4053 root:scanner 0664
+0x040a 0x4053 root:scanner 0664
# Kodak ESP 6100
-0x040a 0x4054 root:scanner 0664
+0x040a 0x4054 root:scanner 0664
# Kodak ESP 7200
-0x040a 0x4056 root:scanner 0664
+0x040a 0x4056 root:scanner 0664
# Kodak ESP C110
-0x040a 0x4057 root:scanner 0664
+0x040a 0x4057 root:scanner 0664
# Kodak ESP C115
-0x040a 0x4058 root:scanner 0664
+0x040a 0x4058 root:scanner 0664
# Kodak ESP 2150
-0x040a 0x4059 root:scanner 0664
+0x040a 0x4059 root:scanner 0664
# Kodak ESP C310
-0x040a 0x405d root:scanner 0664
+0x040a 0x405d root:scanner 0664
# Kodak ESP C315
-0x040a 0x405e root:scanner 0664
+0x040a 0x405e root:scanner 0664
# Advent AW10
-0x040a 0x4060 root:scanner 0664
+0x040a 0x4060 root:scanner 0664
# Kodak Hero Office 6.1
-0x040a 0x4062 root:scanner 0664
+0x040a 0x4062 root:scanner 0664
# Kodak Hero 7.1
-0x040a 0x4063 root:scanner 0664
+0x040a 0x4063 root:scanner 0664
# Kodak Hero 5.1
-0x040a 0x4064 root:scanner 0664
+0x040a 0x4064 root:scanner 0664
# Kodak ESP 9200
-0x040a 0x4065 root:scanner 0664
+0x040a 0x4065 root:scanner 0664
# Kodak ESP 2170
-0x040a 0x4066 root:scanner 0664
+0x040a 0x4066 root:scanner 0664
# Kodak Hero 9.1
-0x040a 0x4067 root:scanner 0664
+0x040a 0x4067 root:scanner 0664
# Kodak Hero 3.1
-0x040a 0x406d root:scanner 0664
+0x040a 0x406d root:scanner 0664
# Kodak i30
-0x040a 0x6001 root:scanner 0664
+0x040a 0x6001 root:scanner 0664
# Kodak i40
-0x040a 0x6002 root:scanner 0664
+0x040a 0x6002 root:scanner 0664
# Kodak i50 | Kodak i55
-0x040a 0x6003 root:scanner 0664
+0x040a 0x6003 root:scanner 0664
# Kodak i60 | Kodak i65
-0x040a 0x6004 root:scanner 0664
+0x040a 0x6004 root:scanner 0664
# Kodak i80
-0x040a 0x6005 root:scanner 0664
+0x040a 0x6005 root:scanner 0664
# Creative WebCam Go Mini
-0x041e 0x4007 root:scanner 0664
+0x041e 0x4007 root:scanner 0664
# Lexmark X70 | Lexmark X73
-0x043d 0x002d root:scanner 0664
+0x043d 0x002d root:scanner 0664
# Lexmark X74
-0x043d 0x0060 root:scanner 0664
+0x043d 0x0060 root:scanner 0664
# Lexmark X1110 | Lexmark X1130 | Lexmark X1140 | Lexmark X1150 | Lexmark X1170 | Lexmark X1180 | Lexmark X1185 | Lexmark X1195
-0x043d 0x007c root:scanner 0664
+0x043d 0x007c root:scanner 0664
# Lexmark X12xx
-0x043d 0x007d root:scanner 0664
+0x043d 0x007d root:scanner 0664
# Genius ColorPage HR6 V1
-0x0458 0x2004 root:scanner 0664
+0x0458 0x2004 root:scanner 0664
# Genius Colorpage HR6 V2
-0x0458 0x2007 root:scanner 0664
+0x0458 0x2007 root:scanner 0664
# Genius Colorpage HR6 V2
-0x0458 0x2008 root:scanner 0664
+0x0458 0x2008 root:scanner 0664
# Genius Colorpage HR6A
-0x0458 0x2009 root:scanner 0664
+0x0458 0x2009 root:scanner 0664
# Genius Colorpage Vivid3x | Genius Colorpage Vivid3 V2
-0x0458 0x2011 root:scanner 0664
+0x0458 0x2011 root:scanner 0664
# Genius Colorpage HR7
-0x0458 0x2013 root:scanner 0664
+0x0458 0x2013 root:scanner 0664
# Genius Colorpage Vivid4
-0x0458 0x2014 root:scanner 0664
+0x0458 0x2014 root:scanner 0664
# Genius Colorpage HR7LE
-0x0458 0x2015 root:scanner 0664
+0x0458 0x2015 root:scanner 0664
# Genius Colorpage HR6X
-0x0458 0x2016 root:scanner 0664
+0x0458 0x2016 root:scanner 0664
# Genius Colorpage Vivid3xe
-0x0458 0x2017 root:scanner 0664
+0x0458 0x2017 root:scanner 0664
# Genius Colorpage Vivid4xe
-0x0458 0x201a root:scanner 0664
+0x0458 0x201a root:scanner 0664
# Genius Colorpage Vivid4x
-0x0458 0x201b root:scanner 0664
+0x0458 0x201b root:scanner 0664
# Genius Colorpage Vivid 1200 X
-0x0458 0x201d root:scanner 0664
+0x0458 0x201d root:scanner 0664
# Genius ColorPage Slim 1200
-0x0458 0x201e root:scanner 0664
+0x0458 0x201e root:scanner 0664
# Genius Colorpage Vivid 1200 XE
-0x0458 0x201f root:scanner 0664
+0x0458 0x201f root:scanner 0664
# Genius Colorpage SF600
-0x0458 0x2021 root:scanner 0664
+0x0458 0x2021 root:scanner 0664
# Medion/Lifetec/Tevion/Cytron MD5345 | Medion/Lifetec/Tevion/Cytron MD6228 | Medion/Lifetec/Tevion/Cytron MD6471
-0x0461 0x0377 root:scanner 0664
+0x0461 0x0377 root:scanner 0664
# Xerox 2400 Onetouch
-0x0461 0x038b root:scanner 0664
+0x0461 0x038b root:scanner 0664
# Trust Office Scan USB 19200
-0x047b 0x1000 root:scanner 0664
+0x047b 0x1000 root:scanner 0664
# Hewlett-Packard ScanJet 4300c/Silitek
-0x047b 0x1002 root:scanner 0664
+0x047b 0x1002 root:scanner 0664
# Kyocera FS-1016MFP
-0x0482 0x0335 root:scanner 0664
+0x0482 0x0335 root:scanner 0664
# Compaq S4-100
-0x049f 0x001a root:scanner 0664
+0x049f 0x001a root:scanner 0664
# Benq (Acer) 310U
-0x04a5 0x1a20 root:scanner 0664
+0x04a5 0x1a20 root:scanner 0664
# Benq (Acer) 620U
-0x04a5 0x1a2a root:scanner 0664
+0x04a5 0x1a2a root:scanner 0664
# Benq (Acer) 320U | Benq (Acer) 340U | Mitsubishi Diamondview 648UT
-0x04a5 0x2022 root:scanner 0664
+0x04a5 0x2022 root:scanner 0664
# Benq (Acer) 620UT
-0x04a5 0x2040 root:scanner 0664
+0x04a5 0x2040 root:scanner 0664
# Benq (Acer) 640U | Guillemot / Hercules Maxi Scan A4 USB 640U | Guillemot / Hercules Maxi A4 36 bit
-0x04a5 0x2060 root:scanner 0664
+0x04a5 0x2060 root:scanner 0664
# Benq (Acer) 640bu
-0x04a5 0x207e root:scanner 0664
+0x04a5 0x207e root:scanner 0664
# Benq (Acer) 3300 | Benq (Acer) 4300 | Mitsubishi Diamondview 650U
-0x04a5 0x20b0 root:scanner 0664
+0x04a5 0x20b0 root:scanner 0664
# Benq (Acer) 640BT
-0x04a5 0x20be root:scanner 0664
+0x04a5 0x20be root:scanner 0664
# Benq (Acer) 1240
-0x04a5 0x20c0 root:scanner 0664
+0x04a5 0x20c0 root:scanner 0664
# Benq (Acer) 3300 | Benq (Acer) 4300 | Guillemot / Hercules Scan@home Touch 1248 (USB)
-0x04a5 0x20de root:scanner 0664
+0x04a5 0x20de root:scanner 0664
# Benq (Acer) 5000
-0x04a5 0x20f8 root:scanner 0664
+0x04a5 0x20f8 root:scanner 0664
# Benq (Acer) 5000E | Benq (Acer) 5000U
-0x04a5 0x20fc root:scanner 0664
+0x04a5 0x20fc root:scanner 0664
# Benq (Acer) 5300
-0x04a5 0x20fe root:scanner 0664
+0x04a5 0x20fe root:scanner 0664
# Benq (Acer) 5150 | Benq (Acer) 5250
-0x04a5 0x2137 root:scanner 0664
+0x04a5 0x2137 root:scanner 0664
# BenQ 5550
-0x04a5 0x2211 root:scanner 0664
+0x04a5 0x2211 root:scanner 0664
# Visioneer Visioneer OneTouch 7100
-0x04a7 0x0229 root:scanner 0664
+0x04a7 0x0229 root:scanner 0664
# Visioneer 9650
-0x04a7 0x0390 root:scanner 0664
+0x04a7 0x0390 root:scanner 0664
# Visioneer 9320
-0x04a7 0x0420 root:scanner 0664
+0x04a7 0x0420 root:scanner 0664
# Visioneer 9450
-0x04a7 0x0421 root:scanner 0664
+0x04a7 0x0421 root:scanner 0664
# Visioneer 9550
-0x04a7 0x0422 root:scanner 0664
+0x04a7 0x0422 root:scanner 0664
# Visioneer 9750
-0x04a7 0x0423 root:scanner 0664
+0x04a7 0x0423 root:scanner 0664
# Visioneer Strobe XP 450
-0x04a7 0x0424 root:scanner 0664
+0x04a7 0x0424 root:scanner 0664
# Visioneer Strobe XP 200
-0x04a7 0x0426 root:scanner 0664
+0x04a7 0x0426 root:scanner 0664
# Visioneer Strobe XP 100
-0x04a7 0x0427 root:scanner 0664
+0x04a7 0x0427 root:scanner 0664
# Visioneer OneTouch 7300
-0x04a7 0x0444 root:scanner 0664
+0x04a7 0x0444 root:scanner 0664
# Xerox DocuMate510
-0x04a7 0x0446 root:scanner 0664
+0x04a7 0x0446 root:scanner 0664
# Xerox DocuMate520
-0x04a7 0x0447 root:scanner 0664
+0x04a7 0x0447 root:scanner 0664
# Xerox DocuMate250
-0x04a7 0x0448 root:scanner 0664
+0x04a7 0x0448 root:scanner 0664
# Xerox DocuMate252
-0x04a7 0x0449 root:scanner 0664
+0x04a7 0x0449 root:scanner 0664
# Xerox DocuMate262
-0x04a7 0x044c root:scanner 0664
+0x04a7 0x044c root:scanner 0664
# Visioneer Strobe XP 300
-0x04a7 0x0474 root:scanner 0664
+0x04a7 0x0474 root:scanner 0664
# Xerox DocuMate272
-0x04a7 0x0475 root:scanner 0664
+0x04a7 0x0475 root:scanner 0664
# Xerox DocuMate232
-0x04a7 0x0476 root:scanner 0664
+0x04a7 0x0476 root:scanner 0664
# Xerox DocuMate152
-0x04a7 0x0477 root:scanner 0664
+0x04a7 0x0477 root:scanner 0664
# Xerox DocuMate752
-0x04a7 0x0478 root:scanner 0664
+0x04a7 0x0478 root:scanner 0664
# Visioneer Strobe XP 470
-0x04a7 0x0479 root:scanner 0664
+0x04a7 0x0479 root:scanner 0664
# Visioneer 9450-G
-0x04a7 0x047a root:scanner 0664
+0x04a7 0x047a root:scanner 0664
# Visioneer 9650-G
-0x04a7 0x047b root:scanner 0664
+0x04a7 0x047b root:scanner 0664
# Xerox DocuMate510-G
-0x04a7 0x047c root:scanner 0664
+0x04a7 0x047c root:scanner 0664
# Xerox DocuMate252-G
-0x04a7 0x048c root:scanner 0664
+0x04a7 0x048c root:scanner 0664
# Xerox DocuMate262-G
-0x04a7 0x048d root:scanner 0664
+0x04a7 0x048d root:scanner 0664
# Xerox DocuMate272-G
-0x04a7 0x048e root:scanner 0664
+0x04a7 0x048e root:scanner 0664
# Visioneer Strobe XP 470-G | Visioneer Patriot 470
-0x04a7 0x048f root:scanner 0664
+0x04a7 0x048f root:scanner 0664
# Xerox DocuMate250-G
-0x04a7 0x0490 root:scanner 0664
+0x04a7 0x0490 root:scanner 0664
# Visioneer Strobe XP 450-G
-0x04a7 0x0491 root:scanner 0664
+0x04a7 0x0491 root:scanner 0664
# Xerox DocuMate520-G
-0x04a7 0x0492 root:scanner 0664
+0x04a7 0x0492 root:scanner 0664
# Visioneer 9750-G
-0x04a7 0x0493 root:scanner 0664
+0x04a7 0x0493 root:scanner 0664
# Visioneer Roadwarrior
-0x04a7 0x0494 root:scanner 0664
+0x04a7 0x0494 root:scanner 0664
# Xerox DocuMate512
-0x04a7 0x0495 root:scanner 0664
+0x04a7 0x0495 root:scanner 0664
# Visioneer Patriot 430
-0x04a7 0x0497 root:scanner 0664
+0x04a7 0x0497 root:scanner 0664
# Visioneer Patriot 680 | Xerox DocuMate632
-0x04a7 0x0498 root:scanner 0664
+0x04a7 0x0498 root:scanner 0664
# Visioneer Patriot 780
-0x04a7 0x0499 root:scanner 0664
+0x04a7 0x0499 root:scanner 0664
# Xerox DocuMate752
-0x04a7 0x049a root:scanner 0664
+0x04a7 0x049a root:scanner 0664
# Visioneer Strobe XP 100,r3
-0x04a7 0x049b root:scanner 0664
+0x04a7 0x049b root:scanner 0664
# Xerox DocuMate150
-0x04a7 0x049c root:scanner 0664
+0x04a7 0x049c root:scanner 0664
# Xerox DocuMate162
-0x04a7 0x049d root:scanner 0664
+0x04a7 0x049d root:scanner 0664
# Xerox DocuMate262i
-0x04a7 0x04a7 root:scanner 0664
+0x04a7 0x04a7 root:scanner 0664
# Xerox Travel Scanner 100
-0x04a7 0x04ac root:scanner 0664
+0x04a7 0x04ac root:scanner 0664
# Canon DR-2080C
-0x04a9 0x1601 root:scanner 0664
+0x04a9 0x1601 root:scanner 0664
# Canon CR-180 | Canon CR-180II
-0x04a9 0x1602 root:scanner 0664
+0x04a9 0x1602 root:scanner 0664
# Canon DR-9080C
-0x04a9 0x1603 root:scanner 0664
+0x04a9 0x1603 root:scanner 0664
# Canon DR-7080C
-0x04a9 0x1604 root:scanner 0664
+0x04a9 0x1604 root:scanner 0664
# Canon DR-5010C
-0x04a9 0x1606 root:scanner 0664
+0x04a9 0x1606 root:scanner 0664
# Canon DR-6080
-0x04a9 0x1607 root:scanner 0664
+0x04a9 0x1607 root:scanner 0664
# Canon DR-2580C
-0x04a9 0x1608 root:scanner 0664
+0x04a9 0x1608 root:scanner 0664
# Canon DR-3080CII
-0x04a9 0x1609 root:scanner 0664
+0x04a9 0x1609 root:scanner 0664
# Canon DR-2050C | Canon DR-2050SP
-0x04a9 0x160a root:scanner 0664
+0x04a9 0x160a root:scanner 0664
# Canon DR-7580
-0x04a9 0x160b root:scanner 0664
+0x04a9 0x160b root:scanner 0664
# Canon PIXMA MP750
-0x04a9 0x1706 root:scanner 0664
+0x04a9 0x1706 root:scanner 0664
# Canon PIXMA MP780 | Canon PIXMA MP790
-0x04a9 0x1707 root:scanner 0664
+0x04a9 0x1707 root:scanner 0664
# Canon PIXMA MP760 | Canon PIXMA MP770
-0x04a9 0x1708 root:scanner 0664
+0x04a9 0x1708 root:scanner 0664
# Canon PIXMA MP150
-0x04a9 0x1709 root:scanner 0664
+0x04a9 0x1709 root:scanner 0664
# Canon PIXMA MP170
-0x04a9 0x170a root:scanner 0664
+0x04a9 0x170a root:scanner 0664
# Canon PIXMA MP450
-0x04a9 0x170b root:scanner 0664
+0x04a9 0x170b root:scanner 0664
# Canon PIXMA MP500
-0x04a9 0x170c root:scanner 0664
+0x04a9 0x170c root:scanner 0664
# Canon PIXMA MP800
-0x04a9 0x170d root:scanner 0664
+0x04a9 0x170d root:scanner 0664
# Canon PIXMA MP800R
-0x04a9 0x170e root:scanner 0664
+0x04a9 0x170e root:scanner 0664
# Canon PIXMA MP530
-0x04a9 0x1712 root:scanner 0664
+0x04a9 0x1712 root:scanner 0664
# Canon PIXMA MP830
-0x04a9 0x1713 root:scanner 0664
+0x04a9 0x1713 root:scanner 0664
# Canon PIXMA MP160
-0x04a9 0x1714 root:scanner 0664
+0x04a9 0x1714 root:scanner 0664
# Canon PIXMA MP180
-0x04a9 0x1715 root:scanner 0664
+0x04a9 0x1715 root:scanner 0664
# Canon PIXMA MP460
-0x04a9 0x1716 root:scanner 0664
+0x04a9 0x1716 root:scanner 0664
# Canon PIXMA MP510
-0x04a9 0x1717 root:scanner 0664
+0x04a9 0x1717 root:scanner 0664
# Canon PIXMA MP600
-0x04a9 0x1718 root:scanner 0664
+0x04a9 0x1718 root:scanner 0664
# Canon PIXMA MP600R
-0x04a9 0x1719 root:scanner 0664
+0x04a9 0x1719 root:scanner 0664
# Canon PIXMA MP810
-0x04a9 0x171a root:scanner 0664
+0x04a9 0x171a root:scanner 0664
# Canon PIXMA MP960
-0x04a9 0x171b root:scanner 0664
+0x04a9 0x171b root:scanner 0664
# Canon PIXMA MX7600
-0x04a9 0x171c root:scanner 0664
+0x04a9 0x171c root:scanner 0664
# Canon PIXMA MP210
-0x04a9 0x1721 root:scanner 0664
+0x04a9 0x1721 root:scanner 0664
# Canon PIXMA MP220
-0x04a9 0x1722 root:scanner 0664
+0x04a9 0x1722 root:scanner 0664
# Canon PIXMA MP470
-0x04a9 0x1723 root:scanner 0664
+0x04a9 0x1723 root:scanner 0664
# Canon PIXMA MP520
-0x04a9 0x1724 root:scanner 0664
+0x04a9 0x1724 root:scanner 0664
# Canon PIXMA MP610
-0x04a9 0x1725 root:scanner 0664
+0x04a9 0x1725 root:scanner 0664
# Canon PIXMA MP970
-0x04a9 0x1726 root:scanner 0664
+0x04a9 0x1726 root:scanner 0664
# Canon PIXMA MX300
-0x04a9 0x1727 root:scanner 0664
+0x04a9 0x1727 root:scanner 0664
# Canon PIXMA MX310
-0x04a9 0x1728 root:scanner 0664
+0x04a9 0x1728 root:scanner 0664
# Canon PIXMA MX700
-0x04a9 0x1729 root:scanner 0664
+0x04a9 0x1729 root:scanner 0664
# Canon PIXMA MP140
-0x04a9 0x172b root:scanner 0664
+0x04a9 0x172b root:scanner 0664
# Canon PIXMA MX850
-0x04a9 0x172c root:scanner 0664
+0x04a9 0x172c root:scanner 0664
# Canon PIXMA MP980
-0x04a9 0x172d root:scanner 0664
+0x04a9 0x172d root:scanner 0664
# Canon PIXMA MP630
-0x04a9 0x172e root:scanner 0664
+0x04a9 0x172e root:scanner 0664
# Canon PIXMA MP620
-0x04a9 0x172f root:scanner 0664
+0x04a9 0x172f root:scanner 0664
# Canon PIXMA MP540
-0x04a9 0x1730 root:scanner 0664
+0x04a9 0x1730 root:scanner 0664
# Canon PIXMA MP480
-0x04a9 0x1731 root:scanner 0664
+0x04a9 0x1731 root:scanner 0664
# Canon PIXMA MP240
-0x04a9 0x1732 root:scanner 0664
+0x04a9 0x1732 root:scanner 0664
# Canon PIXMA MP260
-0x04a9 0x1733 root:scanner 0664
+0x04a9 0x1733 root:scanner 0664
# Canon PIXMA MP190
-0x04a9 0x1734 root:scanner 0664
+0x04a9 0x1734 root:scanner 0664
# Canon PIXMA MX860
-0x04a9 0x1735 root:scanner 0664
+0x04a9 0x1735 root:scanner 0664
# Canon PIXMA MX320
-0x04a9 0x1736 root:scanner 0664
+0x04a9 0x1736 root:scanner 0664
# Canon PIXMA MX330
-0x04a9 0x1737 root:scanner 0664
+0x04a9 0x1737 root:scanner 0664
# Canon PIXMA MP250
-0x04a9 0x173a root:scanner 0664
+0x04a9 0x173a root:scanner 0664
# Canon PIXMA MP270
-0x04a9 0x173b root:scanner 0664
+0x04a9 0x173b root:scanner 0664
# Canon PIXMA MP490
-0x04a9 0x173c root:scanner 0664
+0x04a9 0x173c root:scanner 0664
# Canon PIXMA MP550
-0x04a9 0x173d root:scanner 0664
+0x04a9 0x173d root:scanner 0664
# Canon PIXMA MP560
-0x04a9 0x173e root:scanner 0664
+0x04a9 0x173e root:scanner 0664
# Canon PIXMA MP640
-0x04a9 0x173f root:scanner 0664
+0x04a9 0x173f root:scanner 0664
# Canon PIXMA MP990
-0x04a9 0x1740 root:scanner 0664
+0x04a9 0x1740 root:scanner 0664
# Canon PIXMA MX340
-0x04a9 0x1741 root:scanner 0664
+0x04a9 0x1741 root:scanner 0664
# Canon PIXMA MX350
-0x04a9 0x1742 root:scanner 0664
+0x04a9 0x1742 root:scanner 0664
# Canon PIXMA MX870
-0x04a9 0x1743 root:scanner 0664
+0x04a9 0x1743 root:scanner 0664
# Canon PIXMA MP280
-0x04a9 0x1746 root:scanner 0664
+0x04a9 0x1746 root:scanner 0664
# Canon PIXMA MP495
-0x04a9 0x1747 root:scanner 0664
+0x04a9 0x1747 root:scanner 0664
# Canon PIXMA MG5100 Series
-0x04a9 0x1748 root:scanner 0664
+0x04a9 0x1748 root:scanner 0664
# Canon PIXMA MG5200 Series
-0x04a9 0x1749 root:scanner 0664
+0x04a9 0x1749 root:scanner 0664
# Canon PIXMA MG6100 Series
-0x04a9 0x174a root:scanner 0664
+0x04a9 0x174a root:scanner 0664
# Canon PIXMA MG8100 Series
-0x04a9 0x174b root:scanner 0664
+0x04a9 0x174b root:scanner 0664
# Canon PIXMA MX360
-0x04a9 0x174d root:scanner 0664
+0x04a9 0x174d root:scanner 0664
# Canon PIXMA MX410
-0x04a9 0x174e root:scanner 0664
+0x04a9 0x174e root:scanner 0664
# Canon PIXMA MX420
-0x04a9 0x174f root:scanner 0664
+0x04a9 0x174f root:scanner 0664
# Canon PIXMA MX880 Series | Canon PIXMA MX882 | Canon PIXMA MX885
-0x04a9 0x1750 root:scanner 0664
+0x04a9 0x1750 root:scanner 0664
# Canon PIXMA MG2100 Series
-0x04a9 0x1751 root:scanner 0664
+0x04a9 0x1751 root:scanner 0664
# Canon PIXMA MG3100 Series
-0x04a9 0x1752 root:scanner 0664
+0x04a9 0x1752 root:scanner 0664
# Canon PIXMA MG4100 Series
-0x04a9 0x1753 root:scanner 0664
+0x04a9 0x1753 root:scanner 0664
# Canon PIXMA MG5300 Series
-0x04a9 0x1754 root:scanner 0664
+0x04a9 0x1754 root:scanner 0664
# Canon PIXMA MG6200 Series
-0x04a9 0x1755 root:scanner 0664
+0x04a9 0x1755 root:scanner 0664
# Canon PIXMA MG8200 Series
-0x04a9 0x1756 root:scanner 0664
+0x04a9 0x1756 root:scanner 0664
# Canon PIXMA MP493
-0x04a9 0x1757 root:scanner 0664
+0x04a9 0x1757 root:scanner 0664
# Canon PIXMA E500
-0x04a9 0x1758 root:scanner 0664
+0x04a9 0x1758 root:scanner 0664
# Canon PIXMA MX370 Series
-0x04a9 0x1759 root:scanner 0664
+0x04a9 0x1759 root:scanner 0664
# Canon PIXMA E600
-0x04a9 0x175a root:scanner 0664
+0x04a9 0x175a root:scanner 0664
# Canon PIXMA MX430 Series
-0x04a9 0x175b root:scanner 0664
+0x04a9 0x175b root:scanner 0664
# Canon PIXMA MX510 Series
-0x04a9 0x175c root:scanner 0664
+0x04a9 0x175c root:scanner 0664
# Canon PIXMA MX710 Series
-0x04a9 0x175d root:scanner 0664
+0x04a9 0x175d root:scanner 0664
# Canon PIXMA MX890 Series
-0x04a9 0x175e root:scanner 0664
+0x04a9 0x175e root:scanner 0664
# Canon PIXMA MP230
-0x04a9 0x175f root:scanner 0664
+0x04a9 0x175f root:scanner 0664
# Canon PIXMA MG2200 Series
-0x04a9 0x1760 root:scanner 0664
+0x04a9 0x1760 root:scanner 0664
# Canon PIXMA E510
-0x04a9 0x1761 root:scanner 0664
+0x04a9 0x1761 root:scanner 0664
# Canon PIXMA MG3200 Series
-0x04a9 0x1762 root:scanner 0664
+0x04a9 0x1762 root:scanner 0664
# Canon PIXMA MG4200 Series
-0x04a9 0x1763 root:scanner 0664
+0x04a9 0x1763 root:scanner 0664
# Canon PIXMA MG5400 Series
-0x04a9 0x1764 root:scanner 0664
+0x04a9 0x1764 root:scanner 0664
# Canon PIXMA MG6300 Series
-0x04a9 0x1765 root:scanner 0664
+0x04a9 0x1765 root:scanner 0664
# Canon PIXMA MX390 Series
-0x04a9 0x1766 root:scanner 0664
+0x04a9 0x1766 root:scanner 0664
# Canon PIXMA E610
-0x04a9 0x1767 root:scanner 0664
+0x04a9 0x1767 root:scanner 0664
# Canon PIXMA MX450 Series
-0x04a9 0x1768 root:scanner 0664
+0x04a9 0x1768 root:scanner 0664
# Canon PIXMA MX520 Series
-0x04a9 0x1769 root:scanner 0664
+0x04a9 0x1769 root:scanner 0664
# Canon PIXMA MX720 Series
-0x04a9 0x176a root:scanner 0664
+0x04a9 0x176a root:scanner 0664
# Canon PIXMA MX920 Series
-0x04a9 0x176b root:scanner 0664
+0x04a9 0x176b root:scanner 0664
# Canon CanoScan 8800F
-0x04a9 0x1901 root:scanner 0664
+0x04a9 0x1901 root:scanner 0664
# Canon CanoScan LiDE 100
-0x04a9 0x1904 root:scanner 0664
+0x04a9 0x1904 root:scanner 0664
# Canon CanoScan LiDE 200
-0x04a9 0x1905 root:scanner 0664
+0x04a9 0x1905 root:scanner 0664
# Canon CanoScan 700F
-0x04a9 0x1907 root:scanner 0664
+0x04a9 0x1907 root:scanner 0664
# Canon CanoScan 9000F
-0x04a9 0x1908 root:scanner 0664
+0x04a9 0x1908 root:scanner 0664
# Canon CanoScan LiDE 110
-0x04a9 0x1909 root:scanner 0664
+0x04a9 0x1909 root:scanner 0664
# Canon CanoScan LiDE 210
-0x04a9 0x190a root:scanner 0664
+0x04a9 0x190a root:scanner 0664
# Canon CanoScan 9000F Mark II
-0x04a9 0x190d root:scanner 0664
+0x04a9 0x190d root:scanner 0664
# Canon CanoScan fb630u | Canon CanoScan fb636u
-0x04a9 0x2204 root:scanner 0664
+0x04a9 0x2204 root:scanner 0664
# Canon CanoScan N650U/N656U
-0x04a9 0x2206 root:scanner 0664
+0x04a9 0x2206 root:scanner 0664
# Canon CanoScan N1220U
-0x04a9 0x2207 root:scanner 0664
+0x04a9 0x2207 root:scanner 0664
# Canon CanoScan D660U
-0x04a9 0x2208 root:scanner 0664
+0x04a9 0x2208 root:scanner 0664
# Canon CanoScan N670U/N676U/LiDE20
-0x04a9 0x220d root:scanner 0664
+0x04a9 0x220d root:scanner 0664
# Canon CanoScan N1240U/LiDE30
-0x04a9 0x220e root:scanner 0664
+0x04a9 0x220e root:scanner 0664
# Canon CanoScan LiDE 35 | Canon CanoScan LiDE 40 | Canon CanoScan LiDE 50
-0x04a9 0x2213 root:scanner 0664
+0x04a9 0x2213 root:scanner 0664
# Canon CanoScan LiDE 60
-0x04a9 0x221c root:scanner 0664
+0x04a9 0x221c root:scanner 0664
# Canon CanoScan LiDE25
-0x04a9 0x2220 root:scanner 0664
+0x04a9 0x2220 root:scanner 0664
# Canon DR-1210C
-0x04a9 0x2222 root:scanner 0664
+0x04a9 0x2222 root:scanner 0664
# Canon PIXMA MP730
-0x04a9 0x262f root:scanner 0664
+0x04a9 0x262f root:scanner 0664
# Canon PIXMA MP700
-0x04a9 0x2630 root:scanner 0664
+0x04a9 0x2630 root:scanner 0664
# Canon PIXMA MP360
-0x04a9 0x263c root:scanner 0664
+0x04a9 0x263c root:scanner 0664
# Canon PIXMA MP370
-0x04a9 0x263d root:scanner 0664
+0x04a9 0x263d root:scanner 0664
# Canon PIXMA MP390
-0x04a9 0x263e root:scanner 0664
+0x04a9 0x263e root:scanner 0664
# Canon PIXMA MP375R
-0x04a9 0x263f root:scanner 0664
+0x04a9 0x263f root:scanner 0664
# Canon PIXMA MP740
-0x04a9 0x264c root:scanner 0664
+0x04a9 0x264c root:scanner 0664
# Canon PIXMA MP710
-0x04a9 0x264d root:scanner 0664
+0x04a9 0x264d root:scanner 0664
# Canon imageCLASS MF5630
-0x04a9 0x264e root:scanner 0664
+0x04a9 0x264e root:scanner 0664
# Canon laserBase MF5650
-0x04a9 0x264f root:scanner 0664
+0x04a9 0x264f root:scanner 0664
# Canon imageCLASS MF8170c
-0x04a9 0x2659 root:scanner 0664
+0x04a9 0x2659 root:scanner 0664
# Canon imageCLASS MF5730
-0x04a9 0x265d root:scanner 0664
+0x04a9 0x265d root:scanner 0664
# Canon imageCLASS MF5750
-0x04a9 0x265e root:scanner 0664
+0x04a9 0x265e root:scanner 0664
# Canon imageCLASS MF5770
-0x04a9 0x265f root:scanner 0664
+0x04a9 0x265f root:scanner 0664
# Canon imageCLASS MF3110
-0x04a9 0x2660 root:scanner 0664
+0x04a9 0x2660 root:scanner 0664
# Canon imageCLASS MF3240
-0x04a9 0x2684 root:scanner 0664
+0x04a9 0x2684 root:scanner 0664
# Canon imageCLASS MF6500 series | Canon imageCLASS MF6550
-0x04a9 0x2686 root:scanner 0664
+0x04a9 0x2686 root:scanner 0664
# Canon imageCLASS MF4120 | Canon imageCLASS MF4122 | Canon imageCLASS MF4140 | Canon imageCLASS MF4150
-0x04a9 0x26a3 root:scanner 0664
+0x04a9 0x26a3 root:scanner 0664
# Canon imageCLASS MF4660 | Canon imageCLASS MF4690
-0x04a9 0x26b0 root:scanner 0664
+0x04a9 0x26b0 root:scanner 0664
# Canon imageCLASS MF4010 | Canon imageCLASS MF4018
-0x04a9 0x26b4 root:scanner 0664
+0x04a9 0x26b4 root:scanner 0664
# Canon imageCLASS MF4270
-0x04a9 0x26b5 root:scanner 0664
+0x04a9 0x26b5 root:scanner 0664
# Canon imageRUNNER 1020/1024/1025
-0x04a9 0x26e6 root:scanner 0664
+0x04a9 0x26e6 root:scanner 0664
# Canon imageCLASS MF4370dn | Canon imageCLASS MF4380dn
-0x04a9 0x26ec root:scanner 0664
+0x04a9 0x26ec root:scanner 0664
# Canon imageCLASS D480
-0x04a9 0x26ed root:scanner 0664
+0x04a9 0x26ed root:scanner 0664
# Canon I-SENSYS MF4320d | Canon I-SENSYS MF4330d | Canon imageCLASS MF4350d
-0x04a9 0x26ee root:scanner 0664
+0x04a9 0x26ee root:scanner 0664
# Canon imageCLASS D420
-0x04a9 0x26ef root:scanner 0664
+0x04a9 0x26ef root:scanner 0664
# Canon i-SENSYS MF5880dn
-0x04a9 0x26f9 root:scanner 0664
+0x04a9 0x26f9 root:scanner 0664
# Canon i-SENSYS MF6680dn
-0x04a9 0x26fa root:scanner 0664
+0x04a9 0x26fa root:scanner 0664
# Canon imageCLASS MF8030
-0x04a9 0x2707 root:scanner 0664
+0x04a9 0x2707 root:scanner 0664
# Canon i-SENSYS MF4550d
-0x04a9 0x2736 root:scanner 0664
+0x04a9 0x2736 root:scanner 0664
# Canon imageCLASS MF4410 | Canon imageCLASS MF4430
-0x04a9 0x2737 root:scanner 0664
+0x04a9 0x2737 root:scanner 0664
# Canon i-SENSYS MF3010
-0x04a9 0x2759 root:scanner 0664
+0x04a9 0x2759 root:scanner 0664
# Nikon LS 40 ED | Nikon LS 40 ED | Nikon Coolspan IV
-0x04b0 0x4000 root:scanner 0664
+0x04b0 0x4000 root:scanner 0664
# Nikon LS 50 ED | Nikon Coolscan V ED | Nikon LS 50 ED | Nikon Coolscan V ED
-0x04b0 0x4001 root:scanner 0664
+0x04b0 0x4001 root:scanner 0664
# Nikon Super Coolscan LS-5000 ED | Nikon Super Coolscan LS-5000 ED
-0x04b0 0x4002 root:scanner 0664
+0x04b0 0x4002 root:scanner 0664
# Epson Perfection 636U | Epson GT-7000U | Epson Perfection 636U
-0x04b8 0x0101 root:scanner 0664
+0x04b8 0x0101 root:scanner 0664
# Epson Perfection 610 | Epson GT-6600U | Epson Perfection 610
-0x04b8 0x0103 root:scanner 0664
+0x04b8 0x0103 root:scanner 0664
# Epson Perfection 1200U | Epson Perfection 1200Photo | Epson GT-7600U | Epson GT-7600UF | Epson Perfection 1200U | Epson Perfection 1200U PHOTO
-0x04b8 0x0104 root:scanner 0664
+0x04b8 0x0104 root:scanner 0664
# Epson Stylus Scan 2000
-0x04b8 0x0105 root:scanner 0664
+0x04b8 0x0105 root:scanner 0664
# Epson Stylus Scan 2500
-0x04b8 0x0106 root:scanner 0664
+0x04b8 0x0106 root:scanner 0664
# Epson Expression 1600 | Epson ES-2000 | Epson Expression 1600
-0x04b8 0x0107 root:scanner 0664
+0x04b8 0x0107 root:scanner 0664
# Epson ES-8500 | Epson Expression 1640XL
-0x04b8 0x0109 root:scanner 0664
+0x04b8 0x0109 root:scanner 0664
# Epson Perfection 1640 | Epson GT-8700 | Epson GT-8700F | Epson Perfection 1640SU | Epson Perfection 1640SU PHOTO
-0x04b8 0x010a root:scanner 0664
+0x04b8 0x010a root:scanner 0664
# Epson Perfection 1240 | Epson GT-7700U | Epson Perfection 1240U
-0x04b8 0x010b root:scanner 0664
+0x04b8 0x010b root:scanner 0664
# Epson Perfection 640 | Epson GT-6700U | Epson Perfection 640U
-0x04b8 0x010c root:scanner 0664
+0x04b8 0x010c root:scanner 0664
# Epson Expression 1680 | Epson ES-2200 | Epson Expression 1680
-0x04b8 0x010e root:scanner 0664
+0x04b8 0x010e root:scanner 0664
# Epson Perfection 1250 | Epson Perfection 1250Photo
-0x04b8 0x010f root:scanner 0664
+0x04b8 0x010f root:scanner 0664
# Epson Perfection 1650 | Epson GT-8200U | Epson GT-8200UF | Epson Perfection 1650 | Epson Perfection 1650 PHOTO
-0x04b8 0x0110 root:scanner 0664
+0x04b8 0x0110 root:scanner 0664
# Epson Perfection 2450 | Epson GT-9700F | Epson Perfection 2450 PHOTO
-0x04b8 0x0112 root:scanner 0664
+0x04b8 0x0112 root:scanner 0664
# Epson Perfection 660
-0x04b8 0x0114 root:scanner 0664
+0x04b8 0x0114 root:scanner 0664
# Epson Perfection 2400 | Epson GT-9300UF | Epson Perfection 2400 PHOTO
-0x04b8 0x011b root:scanner 0664
+0x04b8 0x011b root:scanner 0664
# Epson Perfection 3200 | Epson GT-9800F | Epson Perfection 3200 PHOTO
-0x04b8 0x011c root:scanner 0664
+0x04b8 0x011c root:scanner 0664
# Epson Perfection 1260 | Epson Perfection 1260Photo
-0x04b8 0x011d root:scanner 0664
+0x04b8 0x011d root:scanner 0664
# Epson Perfection 1660 | Epson GT-8300UF | Epson Perfection 1660 PHOTO
-0x04b8 0x011e root:scanner 0664
+0x04b8 0x011e root:scanner 0664
# Epson Perfection 1670
-0x04b8 0x011f root:scanner 0664
+0x04b8 0x011f root:scanner 0664
# Epson Perfection 1270
-0x04b8 0x0120 root:scanner 0664
+0x04b8 0x0120 root:scanner 0664
# Epson Perfection 2480 | Epson Perfection 2580
-0x04b8 0x0121 root:scanner 0664
+0x04b8 0x0121 root:scanner 0664
# Epson Perfection 3490 | Epson Perfection 3590
-0x04b8 0x0122 root:scanner 0664
+0x04b8 0x0122 root:scanner 0664
# Epson ES-7000H | Epson GT-15000
-0x04b8 0x0126 root:scanner 0664
+0x04b8 0x0126 root:scanner 0664
# Epson Perfection 4870 | Epson GT-X700 | Epson Perfection 4870 PHOTO
-0x04b8 0x0128 root:scanner 0664
+0x04b8 0x0128 root:scanner 0664
# Epson ES-10000G | Epson Expression 10000XL
-0x04b8 0x0129 root:scanner 0664
+0x04b8 0x0129 root:scanner 0664
# Epson Perfection 4990 | Epson GT-X800 | Epson Perfection 4990 PHOTO
-0x04b8 0x012a root:scanner 0664
+0x04b8 0x012a root:scanner 0664
# Epson ES-H300 | Epson GT-2500
-0x04b8 0x012b root:scanner 0664
+0x04b8 0x012b root:scanner 0664
# Epson V700 | Epson V750 | Epson GT-X900 | Epson Perfection V700 Photo | Epson Perfection V750 Photo
-0x04b8 0x012c root:scanner 0664
+0x04b8 0x012c root:scanner 0664
# Epson GT-X970
-0x04b8 0x0135 root:scanner 0664
+0x04b8 0x0135 root:scanner 0664
# Epson CX-5200 | Epson CX-5400 | Epson CC-600PX | Epson Stylus CX5100 | Epson Stylus CX5200
-0x04b8 0x0801 root:scanner 0664
+0x04b8 0x0801 root:scanner 0664
# Epson CX-3200 | Epson CC-570L | Epson Stylus CX3100 | Epson Stylus CX3200
-0x04b8 0x0802 root:scanner 0664
+0x04b8 0x0802 root:scanner 0664
# Epson CX-6300 | Epson CX-6400 | Epson Stylus CX6300 | Epson Stylus CX6400
-0x04b8 0x0805 root:scanner 0664
+0x04b8 0x0805 root:scanner 0664
# Epson RX-600 | Epson PM-A850 | Epson Stylus Photo RX600
-0x04b8 0x0806 root:scanner 0664
+0x04b8 0x0806 root:scanner 0664
# Epson RX-500 | Epson Stylus Photo RX500 | Epson Stylus Photo RX510
-0x04b8 0x0807 root:scanner 0664
+0x04b8 0x0807 root:scanner 0664
# Epson CX-5400 | Epson Stylus CX5300 | Epson Stylus CX5400
-0x04b8 0x0808 root:scanner 0664
+0x04b8 0x0808 root:scanner 0664
# Epson Stylus CX-1500
-0x04b8 0x080c root:scanner 0664
+0x04b8 0x080c root:scanner 0664
# Epson CX-4600 | Epson Stylus CX4500 | Epson Stylus CX4600
-0x04b8 0x080d root:scanner 0664
+0x04b8 0x080d root:scanner 0664
# Epson CX-3600 | Epson CX-3650 | Epson PX-A550 | Epson Stylus CX3500 | Epson Stylus CX3600 | Epson Stylus CX3650
-0x04b8 0x080e root:scanner 0664
+0x04b8 0x080e root:scanner 0664
# Epson RX-425 | Epson Stylus Photo RX420 | Epson Stylus Photo RX425 | Epson Stylus Photo RX430
-0x04b8 0x080f root:scanner 0664
+0x04b8 0x080f root:scanner 0664
# Epson RX-700 | Epson PM-A900 | Epson Stylus Photo RX700
-0x04b8 0x0810 root:scanner 0664
+0x04b8 0x0810 root:scanner 0664
# Epson RX-620 | Epson PM-A870 | Epson Stylus Photo RX620 | Epson Stylus Photo RX630
-0x04b8 0x0811 root:scanner 0664
+0x04b8 0x0811 root:scanner 0664
# Epson CX-6500 | Epson CX-6600 | Epson Stylus CX6500 | Epson Stylus CX6600
-0x04b8 0x0813 root:scanner 0664
+0x04b8 0x0813 root:scanner 0664
# Epson PM-A700
-0x04b8 0x0814 root:scanner 0664
+0x04b8 0x0814 root:scanner 0664
# Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson LP-A500
-0x04b8 0x0815 root:scanner 0664
+0x04b8 0x0815 root:scanner 0664
# Epson LP-M5500 | Epson LP-M5500F
-0x04b8 0x0817 root:scanner 0664
+0x04b8 0x0817 root:scanner 0664
# Epson DX-3850 | Epson CX-3700 | Epson CX-3800 | Epson DX-3800 | Epson Stylus CX3700 | Epson Stylus CX3800 | Epson Stylus DX3800
-0x04b8 0x0818 root:scanner 0664
+0x04b8 0x0818 root:scanner 0664
# Epson CX-4800 | Epson PX-A650 | Epson Stylus CX4700 | Epson Stylus CX4800 | Epson Stylus DX4800 | Epson Stylus DX4850
-0x04b8 0x0819 root:scanner 0664
+0x04b8 0x0819 root:scanner 0664
# Epson PM-A750 | Epson Stylus Photo RX520 | Epson Stylus Photo RX530
-0x04b8 0x081a root:scanner 0664
+0x04b8 0x081a root:scanner 0664
# Epson PM-A890 | Epson Stylus Photo RX640 | Epson Stylus Photo RX650
-0x04b8 0x081c root:scanner 0664
+0x04b8 0x081c root:scanner 0664
# Epson PM-A950
-0x04b8 0x081d root:scanner 0664
+0x04b8 0x081d root:scanner 0664
# Epson Stylus CX7700 | Epson Stylus CX7800
-0x04b8 0x081f root:scanner 0664
+0x04b8 0x081f root:scanner 0664
# Epson CX-4200 | Epson Stylus CX4100 | Epson Stylus CX4200 | Epson Stylus DX4200
-0x04b8 0x0820 root:scanner 0664
+0x04b8 0x0820 root:scanner 0664
# Epson PM-A820 | Epson Stylus Photo RX560 | Epson Stylus Photo RX580 | Epson Stylus Photo RX590
-0x04b8 0x0827 root:scanner 0664
+0x04b8 0x0827 root:scanner 0664
# Epson PM-A970
-0x04b8 0x0828 root:scanner 0664
+0x04b8 0x0828 root:scanner 0664
# Epson PM-T990
-0x04b8 0x0829 root:scanner 0664
+0x04b8 0x0829 root:scanner 0664
# Epson PM-A920
-0x04b8 0x082a root:scanner 0664
+0x04b8 0x082a root:scanner 0664
# Epson CX-5000 | Epson DX-5000 | Epson DX-5050 | Epson Stylus CX4900 | Epson Stylus CX5000 | Epson Stylus DX5000
-0x04b8 0x082b root:scanner 0664
+0x04b8 0x082b root:scanner 0664
# Epson DX-6000 | Epson PX-A720 | Epson Stylus CX5900 | Epson Stylus CX6000 | Epson Stylus DX6000
-0x04b8 0x082e root:scanner 0664
+0x04b8 0x082e root:scanner 0664
# Epson DX-4050 | Epson PX-A620 | Epson Stylus CX3900 | Epson Stylus DX4000
-0x04b8 0x082f root:scanner 0664
+0x04b8 0x082f root:scanner 0664
# Epson ME 200 | Epson Stylus CX2800 | Epson Stylus CX2900
-0x04b8 0x0830 root:scanner 0664
+0x04b8 0x0830 root:scanner 0664
# Epson LP-M5600
-0x04b8 0x0833 root:scanner 0664
+0x04b8 0x0833 root:scanner 0664
# Epson LP-M6000
-0x04b8 0x0834 root:scanner 0664
+0x04b8 0x0834 root:scanner 0664
# Epson AcuLaser CX21
-0x04b8 0x0835 root:scanner 0664
+0x04b8 0x0835 root:scanner 0664
# Epson PM-T960
-0x04b8 0x0836 root:scanner 0664
+0x04b8 0x0836 root:scanner 0664
# Epson PM-A940 | Epson Stylus Photo RX680 | Epson Stylus Photo RX685 | Epson Stylus Photo RX690
-0x04b8 0x0837 root:scanner 0664
+0x04b8 0x0837 root:scanner 0664
# Epson DX-7400 | Epson PX-A640 | Epson Stylus CX7300 | Epson Stylus CX7400 | Epson Stylus DX7400
-0x04b8 0x0838 root:scanner 0664
+0x04b8 0x0838 root:scanner 0664
# Epson PX-A740 | Epson Stylus CX8300 | Epson Stylus CX8400 | Epson Stylus DX8400
-0x04b8 0x0839 root:scanner 0664
+0x04b8 0x0839 root:scanner 0664
# Epson PX-FA700 | Epson Stylus CX9300F | Epson Stylus CX9400Fax | Epson Stylus DX9400F
-0x04b8 0x083a root:scanner 0664
+0x04b8 0x083a root:scanner 0664
# Epson PM-A840 | Epson PM-A840S | Epson Stylus Photo RX585 | Epson Stylus Photo RX595 | Epson Stylus Photo RX610
-0x04b8 0x083c root:scanner 0664
+0x04b8 0x083c root:scanner 0664
# Epson ME 300 | Epson PX-401A | Epson Stylus NX100 | Epson Stylus SX100 | Epson Stylus TX100
-0x04b8 0x0841 root:scanner 0664
+0x04b8 0x0841 root:scanner 0664
# Epson LP-M5000
-0x04b8 0x0843 root:scanner 0664
+0x04b8 0x0843 root:scanner 0664
# Epson Artisan 800 | Epson EP-901A | Epson EP-901F | Epson Stylus Photo PX800FW | Epson Stylus Photo TX800FW
-0x04b8 0x0844 root:scanner 0664
+0x04b8 0x0844 root:scanner 0664
# Epson Artisan 700 | Epson EP-801A | Epson Stylus Photo PX700W | Epson Stylus Photo TX700W
-0x04b8 0x0846 root:scanner 0664
+0x04b8 0x0846 root:scanner 0664
# Epson ME Office 700FW | Epson PX-601F | Epson Stylus Office BX600FW | Epson Stylus Office TX600FW | Epson Stylus SX600FW | Epson WorkForce 600
-0x04b8 0x0847 root:scanner 0664
+0x04b8 0x0847 root:scanner 0664
# Epson ME Office 600F | Epson Stylus Office BX300F | Epson Stylus Office TX300F | Epson Stylus NX300
-0x04b8 0x0848 root:scanner 0664
+0x04b8 0x0848 root:scanner 0664
# Epson Stylus NX200 | Epson Stylus SX200 | Epson Stylus SX205 | Epson Stylus TX200 | Epson Stylus TX203 | Epson Stylus TX209
-0x04b8 0x0849 root:scanner 0664
+0x04b8 0x0849 root:scanner 0664
# Epson PX-501A | Epson Stylus NX400 | Epson Stylus SX400 | Epson Stylus SX405 | Epson Stylus TX400
-0x04b8 0x084a root:scanner 0664
+0x04b8 0x084a root:scanner 0664
# Epson WorkForce 500
-0x04b8 0x084c root:scanner 0664
+0x04b8 0x084c root:scanner 0664
# Epson PX-402A | Epson Stylus NX110 Series | Epson Stylus SX110 Series | Epson Stylus TX110 Series
-0x04b8 0x084d root:scanner 0664
+0x04b8 0x084d root:scanner 0664
# Epson ME OFFICE 510 | Epson Stylus NX210 Series | Epson Stylus SX210 Series | Epson Stylus TX210 Series
-0x04b8 0x084f root:scanner 0664
+0x04b8 0x084f root:scanner 0664
# Epson Stylus NX410 Series | Epson Stylus SX410 Series | Epson Stylus TX410 Series
-0x04b8 0x0851 root:scanner 0664
+0x04b8 0x0851 root:scanner 0664
# Epson ME OFFICE 650FN Series | Epson Stylus Office BX310FN Series | Epson Stylus Office TX510FN Series | Epson WorkForce 310 Series
-0x04b8 0x0854 root:scanner 0664
+0x04b8 0x0854 root:scanner 0664
# Epson PX-502A | Epson Stylus NX510 Series | Epson Stylus SX510W Series | Epson Stylus TX550W Series
-0x04b8 0x0856 root:scanner 0664
+0x04b8 0x0856 root:scanner 0664
# Epson Stylus SX125
-0x04b8 0x085c root:scanner 0664
+0x04b8 0x085c root:scanner 0664
# Fujitsu fi-4010CU
-0x04c5 0x1029 root:scanner 0664
+0x04c5 0x1029 root:scanner 0664
# Fujitsu fi-4120C
-0x04c5 0x1041 root:scanner 0664
+0x04c5 0x1041 root:scanner 0664
# Fujitsu fi-4220C
-0x04c5 0x1042 root:scanner 0664
+0x04c5 0x1042 root:scanner 0664
# Fujitsu fi-4530C
-0x04c5 0x1078 root:scanner 0664
+0x04c5 0x1078 root:scanner 0664
# Fujitsu fi-5750C
-0x04c5 0x1095 root:scanner 0664
+0x04c5 0x1095 root:scanner 0664
# Fujitsu fi-5110EOX/2
-0x04c5 0x1096 root:scanner 0664
+0x04c5 0x1096 root:scanner 0664
# Fujitsu fi-5110C
-0x04c5 0x1097 root:scanner 0664
+0x04c5 0x1097 root:scanner 0664
# Fujitsu fi-5650C
-0x04c5 0x10ad root:scanner 0664
+0x04c5 0x10ad root:scanner 0664
# Fujitsu fi-4120C2
-0x04c5 0x10ae root:scanner 0664
+0x04c5 0x10ae root:scanner 0664
# Fujitsu fi-4220C2
-0x04c5 0x10af root:scanner 0664
+0x04c5 0x10af root:scanner 0664
# Fujitsu fi-60F
-0x04c5 0x10c7 root:scanner 0664
+0x04c5 0x10c7 root:scanner 0664
# Fujitsu fi-4340C
-0x04c5 0x10cf root:scanner 0664
+0x04c5 0x10cf root:scanner 0664
# Fujitsu fi-5120C
-0x04c5 0x10e0 root:scanner 0664
+0x04c5 0x10e0 root:scanner 0664
# Fujitsu fi-5220C
-0x04c5 0x10e1 root:scanner 0664
+0x04c5 0x10e1 root:scanner 0664
# Fujitsu fi-5530C
-0x04c5 0x10e2 root:scanner 0664
+0x04c5 0x10e2 root:scanner 0664
# Fujitsu fi-5110EOX3
-0x04c5 0x10e6 root:scanner 0664
+0x04c5 0x10e6 root:scanner 0664
# Fujitsu fi-5900C
-0x04c5 0x10e7 root:scanner 0664
+0x04c5 0x10e7 root:scanner 0664
# Fujitsu fi-5015C
-0x04c5 0x10ef root:scanner 0664
+0x04c5 0x10ef root:scanner 0664
# Fujitsu fi-5110EOXM
-0x04c5 0x10f2 root:scanner 0664
+0x04c5 0x10f2 root:scanner 0664
# Fujitsu ScanSnap S500
-0x04c5 0x10fe root:scanner 0664
+0x04c5 0x10fe root:scanner 0664
# Fujitsu ScanSnap S500M
-0x04c5 0x1135 root:scanner 0664
+0x04c5 0x1135 root:scanner 0664
# Fujitsu fi-5530C2
-0x04c5 0x114a root:scanner 0664
+0x04c5 0x114a root:scanner 0664
# Fujitsu fi-6140
-0x04c5 0x114d root:scanner 0664
+0x04c5 0x114d root:scanner 0664
# Fujitsu fi-6240
-0x04c5 0x114e root:scanner 0664
+0x04c5 0x114e root:scanner 0664
# Fujitsu fi-6130
-0x04c5 0x114f root:scanner 0664
+0x04c5 0x114f root:scanner 0664
# Fujitsu fi-6230
-0x04c5 0x1150 root:scanner 0664
+0x04c5 0x1150 root:scanner 0664
# Fujitsu ScanSnap S510
-0x04c5 0x1155 root:scanner 0664
+0x04c5 0x1155 root:scanner 0664
# Fujitsu ScanSnap S300
-0x04c5 0x1156 root:scanner 0664
+0x04c5 0x1156 root:scanner 0664
# Fujitsu ScanSnap S510M
-0x04c5 0x116f root:scanner 0664
+0x04c5 0x116f root:scanner 0664
# Fujitsu fi-6770
-0x04c5 0x1174 root:scanner 0664
+0x04c5 0x1174 root:scanner 0664
# Fujitsu fi-6770A
-0x04c5 0x1175 root:scanner 0664
+0x04c5 0x1175 root:scanner 0664
# Fujitsu fi-6670
-0x04c5 0x1176 root:scanner 0664
+0x04c5 0x1176 root:scanner 0664
# Fujitsu fi-6670A
-0x04c5 0x1177 root:scanner 0664
+0x04c5 0x1177 root:scanner 0664
# Fujitsu fi-6750S
-0x04c5 0x1178 root:scanner 0664
+0x04c5 0x1178 root:scanner 0664
# Fujitsu ScanSnap S300M
-0x04c5 0x117f root:scanner 0664
+0x04c5 0x117f root:scanner 0664
# Fujitsu fi-6800
-0x04c5 0x119d root:scanner 0664
+0x04c5 0x119d root:scanner 0664
# Fujitsu fi-6800-CGA
-0x04c5 0x119e root:scanner 0664
+0x04c5 0x119e root:scanner 0664
# Fujitsu ScanSnap S1500 | Fujitsu ScanSnap S1500M
-0x04c5 0x11a2 root:scanner 0664
+0x04c5 0x11a2 root:scanner 0664
# Fujitsu ScanSnap S1300
-0x04c5 0x11ed root:scanner 0664
+0x04c5 0x11ed root:scanner 0664
# Fujitsu fi-6140Z
-0x04c5 0x11f1 root:scanner 0664
+0x04c5 0x11f1 root:scanner 0664
# Fujitsu fi-6240Z
-0x04c5 0x11f2 root:scanner 0664
+0x04c5 0x11f2 root:scanner 0664
# Fujitsu fi-6130Z
-0x04c5 0x11f3 root:scanner 0664
+0x04c5 0x11f3 root:scanner 0664
# Fujitsu fi-6230Z
-0x04c5 0x11f4 root:scanner 0664
+0x04c5 0x11f4 root:scanner 0664
# Fujitsu fi-6110
-0x04c5 0x11fc root:scanner 0664
+0x04c5 0x11fc root:scanner 0664
# Fujitsu fi-5950
-0x04c5 0x1213 root:scanner 0664
+0x04c5 0x1213 root:scanner 0664
# Fujitsu ScanSnap iX500
-0x04c5 0x132b root:scanner 0664
+0x04c5 0x132b root:scanner 0664
# Konica e-mini
-0x04c8 0x0722 root:scanner 0664
+0x04c8 0x0722 root:scanner 0664
# Panasonic KV-S2026C
-0x04da 0x1000 root:scanner 0664
+0x04da 0x1000 root:scanner 0664
# Panasonic KV-S2046C
-0x04da 0x1001 root:scanner 0664
+0x04da 0x1001 root:scanner 0664
# Panasonic KV-S1025C
-0x04da 0x1006 root:scanner 0664
+0x04da 0x1006 root:scanner 0664
# Panasonic KV-S1020C
-0x04da 0x1007 root:scanner 0664
+0x04da 0x1007 root:scanner 0664
# Panasonic KV-S2048C
-0x04da 0x1009 root:scanner 0664
+0x04da 0x1009 root:scanner 0664
# Panasonic KV-S2028C
-0x04da 0x100a root:scanner 0664
+0x04da 0x100a root:scanner 0664
# Panasonic KV-S4085C
-0x04da 0x100c root:scanner 0664
+0x04da 0x100c root:scanner 0664
# Panasonic KV-S4065C
-0x04da 0x100d root:scanner 0664
+0x04da 0x100d root:scanner 0664
# Panasonic KV-S7075C
-0x04da 0x100e root:scanner 0664
+0x04da 0x100e root:scanner 0664
# Panasonic KV-SS080
-0x04da 0x100f root:scanner 0664
+0x04da 0x100f root:scanner 0664
# Panasonic KV-S1045C
-0x04da 0x1010 root:scanner 0664
+0x04da 0x1010 root:scanner 0664
# Samsung SCX-4x16
-0x04e8 0x3409 root:scanner 0664
+0x04e8 0x3409 root:scanner 0664
# Samsung SCX-6x20
-0x04e8 0x340d root:scanner 0664
+0x04e8 0x340d root:scanner 0664
# Samsung MFP-560
-0x04e8 0x340e root:scanner 0664
+0x04e8 0x340e root:scanner 0664
# Samsung MFP-750
-0x04e8 0x340f root:scanner 0664
+0x04e8 0x340f root:scanner 0664
# Samsung SCX-4x20
-0x04e8 0x3412 root:scanner 0664
+0x04e8 0x3412 root:scanner 0664
# Samsung SCX-4100
-0x04e8 0x3413 root:scanner 0664
+0x04e8 0x3413 root:scanner 0664
# Samsung SCX-4x21
-0x04e8 0x3419 root:scanner 0664
+0x04e8 0x3419 root:scanner 0664
# Samsung SCX-5x30
-0x04e8 0x341a root:scanner 0664
+0x04e8 0x341a root:scanner 0664
# Samsung SCX-4200
-0x04e8 0x341b root:scanner 0664
+0x04e8 0x341b root:scanner 0664
# Samsung CLX-3160
-0x04e8 0x341c root:scanner 0664
+0x04e8 0x341c root:scanner 0664
# Samsung SCX-6x22
-0x04e8 0x341d root:scanner 0664
+0x04e8 0x341d root:scanner 0664
# Samsung SCX4725 | Samsung SCX4725-FN
-0x04e8 0x341f root:scanner 0664
+0x04e8 0x341f root:scanner 0664
# Samsung SCX-6x45
-0x04e8 0x3420 root:scanner 0664
+0x04e8 0x3420 root:scanner 0664
# Samsung CLX-8380
-0x04e8 0x3421 root:scanner 0664
+0x04e8 0x3421 root:scanner 0664
# Samsung CLX-2160
-0x04e8 0x3425 root:scanner 0664
+0x04e8 0x3425 root:scanner 0664
# Samsung SCX-4500
-0x04e8 0x3426 root:scanner 0664
+0x04e8 0x3426 root:scanner 0664
# Samsung CLX-6200
-0x04e8 0x3427 root:scanner 0664
+0x04e8 0x3427 root:scanner 0664
# Samsung CLX-6240
-0x04e8 0x3428 root:scanner 0664
+0x04e8 0x3428 root:scanner 0664
# Samsung SCX-6x55
-0x04e8 0x3429 root:scanner 0664
+0x04e8 0x3429 root:scanner 0664
# Samsung CLX-3170fn (CLX-3170 Series) | Samsung CLX-3175FW
-0x04e8 0x342a root:scanner 0664
+0x04e8 0x342a root:scanner 0664
# Samsung SCX-4500W
-0x04e8 0x342b root:scanner 0664
+0x04e8 0x342b root:scanner 0664
# Samsung SCX-4824 (SCX-4x24 Series)
-0x04e8 0x342c root:scanner 0664
+0x04e8 0x342c root:scanner 0664
# Samsung SCX-4828FN (SCX-4x28 Series)
-0x04e8 0x342d root:scanner 0664
+0x04e8 0x342d root:scanner 0664
# Samsung SCX-4300
-0x04e8 0x342e root:scanner 0664
+0x04e8 0x342e root:scanner 0664
# Samsung SCX-5835_5935
-0x04e8 0x342f root:scanner 0664
+0x04e8 0x342f root:scanner 0664
# Samsung SCX-5635
-0x04e8 0x3430 root:scanner 0664
+0x04e8 0x3430 root:scanner 0664
# Samsung SCX-4x26
-0x04e8 0x3432 root:scanner 0664
+0x04e8 0x3432 root:scanner 0664
# Samsung SCX-4600
-0x04e8 0x3433 root:scanner 0664
+0x04e8 0x3433 root:scanner 0664
# Samsung SCX-4623
-0x04e8 0x3434 root:scanner 0664
+0x04e8 0x3434 root:scanner 0664
# Samsung MFP-65x
-0x04e8 0x3435 root:scanner 0664
+0x04e8 0x3435 root:scanner 0664
# Samsung SCX-6545
-0x04e8 0x3437 root:scanner 0664
+0x04e8 0x3437 root:scanner 0664
# Samsung CLX-8385
-0x04e8 0x3439 root:scanner 0664
+0x04e8 0x3439 root:scanner 0664
# Samsung CLX-6220
-0x04e8 0x343a root:scanner 0664
+0x04e8 0x343a root:scanner 0664
# Samsung CLX-6250
-0x04e8 0x343b root:scanner 0664
+0x04e8 0x343b root:scanner 0664
# Samsung SCX-4825FN (SCX-4x25 Series)
-0x04e8 0x343c root:scanner 0664
+0x04e8 0x343c root:scanner 0664
# Samsung CLX-3185
-0x04e8 0x343d root:scanner 0664
+0x04e8 0x343d root:scanner 0664
# Samsung CLX-8540
-0x04e8 0x343f root:scanner 0664
+0x04e8 0x343f root:scanner 0664
# Samsung SCX-4623FW
-0x04e8 0x3440 root:scanner 0664
+0x04e8 0x3440 root:scanner 0664
# Samsung SCX-3205W (SCX-3200 Series)
-0x04e8 0x3441 root:scanner 0664
+0x04e8 0x3441 root:scanner 0664
# Samsung SCX-6545X
-0x04e8 0x3442 root:scanner 0664
+0x04e8 0x3442 root:scanner 0664
# Samsung SCX-6x55X
-0x04e8 0x3443 root:scanner 0664
+0x04e8 0x3443 root:scanner 0664
# Samsung CLX-8385X
-0x04e8 0x3444 root:scanner 0664
+0x04e8 0x3444 root:scanner 0664
# Samsung SCX-5835_5935X
-0x04e8 0x3446 root:scanner 0664
+0x04e8 0x3446 root:scanner 0664
# Samsung SCX-4833FD | Samsung SCX-4835FD
-0x04e8 0x344b root:scanner 0664
+0x04e8 0x344b root:scanner 0664
# Samsung SCX-3400
-0x04e8 0x344f root:scanner 0664
+0x04e8 0x344f root:scanner 0664
# Samsung SF-760
-0x04e8 0x3450 root:scanner 0664
+0x04e8 0x3450 root:scanner 0664
# Samsung SCX-4729FD
-0x04e8 0x3453 root:scanner 0664
+0x04e8 0x3453 root:scanner 0664
# Samsung CLX-6260
-0x04e8 0x3455 root:scanner 0664
+0x04e8 0x3455 root:scanner 0664
# Samsung CLX-3300 Series
-0x04e8 0x3456 root:scanner 0664
+0x04e8 0x3456 root:scanner 0664
# Samsung SCX-470x
-0x04e8 0x3457 root:scanner 0664
+0x04e8 0x3457 root:scanner 0664
# Samsung CLX-4190
-0x04e8 0x345a root:scanner 0664
+0x04e8 0x345a root:scanner 0664
# Samsung SCX-4650 4x21S Series
-0x04e8 0x345b root:scanner 0664
+0x04e8 0x345b root:scanner 0664
# Samsung M337x 387x 407x Series
-0x04e8 0x3460 root:scanner 0664
+0x04e8 0x3460 root:scanner 0664
# Samsung M267x 287x Series
-0x04e8 0x3461 root:scanner 0664
+0x04e8 0x3461 root:scanner 0664
# Samsung SCX-681x
-0x04e8 0x3466 root:scanner 0664
+0x04e8 0x3466 root:scanner 0664
# Samsung C460
-0x04e8 0x3468 root:scanner 0664
+0x04e8 0x3468 root:scanner 0664
# Pentax DSmobile 600
-0x04f9 0x2038 root:scanner 0664
+0x04f9 0x2038 root:scanner 0664
# Aiptek Aiptek Pencam
-0x0553 0x0202 root:scanner 0664
+0x0553 0x0202 root:scanner 0664
# Mustek ScanExpress 1200 CU
-0x055f 0x0001 root:scanner 0664
+0x055f 0x0001 root:scanner 0664
# Mustek ScanExpress 600 CU
-0x055f 0x0002 root:scanner 0664
+0x055f 0x0002 root:scanner 0664
# Mustek ScanExpress 1200 UB | Trust Compact Scan USB 19200
-0x055f 0x0006 root:scanner 0664
+0x055f 0x0006 root:scanner 0664
# Mustek ScanExpress 1200 CU Plus
-0x055f 0x0008 root:scanner 0664
+0x055f 0x0008 root:scanner 0664
# Mustek BearPaw 1200 F
-0x055f 0x0010 root:scanner 0664
+0x055f 0x0010 root:scanner 0664
# Mustek ScanExpress A3 USB
-0x055f 0x0210 root:scanner 0664
+0x055f 0x0210 root:scanner 0664
# Mustek BearPaw 2400 CS | Mustek BearPaw 2400 TA | Trust 240TH Easy Webscan Gold
-0x055f 0x0218 root:scanner 0664
+0x055f 0x0218 root:scanner 0664
# Mustek BearPaw 2400 CS Plus | Mustek BearPaw 2400 TA Plus | Mustek Plug-n-Scan 2400 MT | Mustek Plug-n-Scan 2400 M | Packard Bell Diamond 2450
-0x055f 0x0219 root:scanner 0664
+0x055f 0x0219 root:scanner 0664
# Mustek BearPaw 2448 CS Plus | Mustek BearPaw 2448 TA Plus
-0x055f 0x021a root:scanner 0664
+0x055f 0x021a root:scanner 0664
# Mustek BearPaw 1200 CU Plus | Packard Bell Diamond 1200 Plus
-0x055f 0x021b root:scanner 0664
+0x055f 0x021b root:scanner 0664
# Mustek BearPaw 1200 CU Plus | Mustek BearPaw 1248 CU | Packard Bell Diamond 1200 Plus | Trust Direct WebScan 19200
-0x055f 0x021c root:scanner 0664
+0x055f 0x021c root:scanner 0664
# Mustek BearPaw 2400 CU Plus
-0x055f 0x021d root:scanner 0664
+0x055f 0x021d root:scanner 0664
# Mustek BearPaw 1200 CS | Mustek BearPaw 1200 TA
-0x055f 0x021e root:scanner 0664
+0x055f 0x021e root:scanner 0664
# Mustek ScanExpress 1248 UB
-0x055f 0x021f root:scanner 0664
+0x055f 0x021f root:scanner 0664
# Mustek BearPaw 2448TA Pro
-0x055f 0x0409 root:scanner 0664
+0x055f 0x0409 root:scanner 0664
# Artec/Ultima Ultima 2000 | Artec/Ultima Ultima 2000 e+ | Boeder Sm@rtScan Slim Edition | Fujitsu 1200CUS | Googlegear 2000 | Medion/Lifetec/Tevion/Cytron MD 4394 | Medion/Lifetec/Tevion/Cytron MD/LT 9375 | Medion/Lifetec/Tevion/Cytron MD/LT 9385 | Medion/Lifetec/Tevion/Cytron LT 9452 | Medion/Lifetec/Tevion/Cytron MD 9458 | Mustek BearPaw 1200 CU | Mustek BearPaw 2400 CU | Mustek ScanExpress 1200 UB Plus | Mustek ScanExpress 2400 USB | Mustek ScanMagic 1200 UB Plus | Packard Bell Diamond 1200 | Trust Compact Scan USB 19200 | Trust Flat Scan USB 19200
-0x05d8 0x4002 root:scanner 0664
+0x05d8 0x4002 root:scanner 0664
# Artec/Ultima E+ 48U | Medion/Lifetec/Tevion/Cytron MD9693 | Medion/Lifetec/Tevion/Cytron MD9705 | Medion/Lifetec/Tevion/Cytron MD4394 | Microstar MR 9791
-0x05d8 0x4003 root:scanner 0664
+0x05d8 0x4003 root:scanner 0664
# Artec/Ultima E+ Pro
-0x05d8 0x4004 root:scanner 0664
+0x05d8 0x4004 root:scanner 0664
# Memorex MEM 48U
-0x05d8 0x4005 root:scanner 0664
+0x05d8 0x4005 root:scanner 0664
# Trust Easy Webscan 19200
-0x05d8 0x4006 root:scanner 0664
+0x05d8 0x4006 root:scanner 0664
# Trust 240H Easy Webscan Gold
-0x05d8 0x4007 root:scanner 0664
+0x05d8 0x4007 root:scanner 0664
# UMAX AstraSlim SE
-0x05d8 0x4009 root:scanner 0664
+0x05d8 0x4009 root:scanner 0664
# UMAX AstraSlim 1200 SE
-0x05d8 0x4010 root:scanner 0664
+0x05d8 0x4010 root:scanner 0664
# Yakumo Scan50
-0x05d8 0x4011 root:scanner 0664
+0x05d8 0x4011 root:scanner 0664
# Microtek ScanMaker X6USB
-0x05da 0x0099 root:scanner 0664
+0x05da 0x0099 root:scanner 0664
# Microtek SlimScan C6
-0x05da 0x009a root:scanner 0664
+0x05da 0x009a root:scanner 0664
# Microtek ScanMaker V6USL
-0x05da 0x00a3 root:scanner 0664
+0x05da 0x00a3 root:scanner 0664
# Microtek ScanMaker V6UPL
-0x05da 0x00b6 root:scanner 0664
+0x05da 0x00b6 root:scanner 0664
# Microtek ScanMaker 4800
-0x05da 0x30cf root:scanner 0664
+0x05da 0x30cf root:scanner 0664
# Microtek ScanMaker 3840
-0x05da 0x30d4 root:scanner 0664
+0x05da 0x30d4 root:scanner 0664
# Microtek ScanMaker 3600
-0x05da 0x40b3 root:scanner 0664
+0x05da 0x40b3 root:scanner 0664
# Microtek ScanMaker 3700
-0x05da 0x40b8 root:scanner 0664
+0x05da 0x40b8 root:scanner 0664
# Microtek ScanMaker 3600
-0x05da 0x40ca root:scanner 0664
+0x05da 0x40ca root:scanner 0664
# Microtek ScanMaker 3700
-0x05da 0x40cb root:scanner 0664
+0x05da 0x40cb root:scanner 0664
# Microtek ScanMaker 3750
-0x05da 0x40dd root:scanner 0664
+0x05da 0x40dd root:scanner 0664
# Microtek ScanMaker 3600
-0x05da 0x40ff root:scanner 0664
+0x05da 0x40ff root:scanner 0664
# Microtek ScanMaker V6USL
-0x05da 0x80a3 root:scanner 0664
+0x05da 0x80a3 root:scanner 0664
# iVina 1200U
-0x0638 0x0268 root:scanner 0664
+0x0638 0x0268 root:scanner 0664
# Minolta Dimage Scan Dual II
-0x0638 0x026a root:scanner 0664
+0x0638 0x026a root:scanner 0664
# Avision AV600U
-0x0638 0x0a13 root:scanner 0664
+0x0638 0x0a13 root:scanner 0664
# Minolta-QMS SC-110
-0x0638 0x0a15 root:scanner 0664
+0x0638 0x0a15 root:scanner 0664
# Avision DS610CU Scancopier | Minolta-QMS SC-215 | OKI S700 Scancopier
-0x0638 0x0a16 root:scanner 0664
+0x0638 0x0a16 root:scanner 0664
# Avision AV610 | Avision AV600U Plus
-0x0638 0x0a18 root:scanner 0664
+0x0638 0x0a18 root:scanner 0664
# Avision AV220
-0x0638 0x0a23 root:scanner 0664
+0x0638 0x0a23 root:scanner 0664
# Avision AV210
-0x0638 0x0a24 root:scanner 0664
+0x0638 0x0a24 root:scanner 0664
# Avision AV210
-0x0638 0x0a25 root:scanner 0664
+0x0638 0x0a25 root:scanner 0664
# Avision AV120
-0x0638 0x0a27 root:scanner 0664
+0x0638 0x0a27 root:scanner 0664
# Avision AV220C2
-0x0638 0x0a2a root:scanner 0664
+0x0638 0x0a2a root:scanner 0664
# Avision AV220D2
-0x0638 0x0a2b root:scanner 0664
+0x0638 0x0a2b root:scanner 0664
# Avision AV220+
-0x0638 0x0a2c root:scanner 0664
+0x0638 0x0a2c root:scanner 0664
# Avision AV220C2-G
-0x0638 0x0a2d root:scanner 0664
+0x0638 0x0a2d root:scanner 0664
# Avision AV220C2-B
-0x0638 0x0a2e root:scanner 0664
+0x0638 0x0a2e root:scanner 0664
# Avision AV210C2-G
-0x0638 0x0a2f root:scanner 0664
+0x0638 0x0a2f root:scanner 0664
# Avision AV122
-0x0638 0x0a33 root:scanner 0664
+0x0638 0x0a33 root:scanner 0664
# Avision AV210C2
-0x0638 0x0a3a root:scanner 0664
+0x0638 0x0a3a root:scanner 0664
# Avision AV121
-0x0638 0x0a3c root:scanner 0664
+0x0638 0x0a3c root:scanner 0664
# Avision AV8300
-0x0638 0x0a40 root:scanner 0664
+0x0638 0x0a40 root:scanner 0664
# Avision AM3000 Series
-0x0638 0x0a41 root:scanner 0664
+0x0638 0x0a41 root:scanner 0664
# Avision @V5100
-0x0638 0x0a45 root:scanner 0664
+0x0638 0x0a45 root:scanner 0664
# Avision AV8050U
-0x0638 0x0a4d root:scanner 0664
+0x0638 0x0a4d root:scanner 0664
# Avision AV3200SU
-0x0638 0x0a4e root:scanner 0664
+0x0638 0x0a4e root:scanner 0664
# Avision AV3730SU
-0x0638 0x0a4f root:scanner 0664
+0x0638 0x0a4f root:scanner 0664
# Avision AV610C2
-0x0638 0x0a5e root:scanner 0664
+0x0638 0x0a5e root:scanner 0664
# Avision IT8300
-0x0638 0x0a61 root:scanner 0664
+0x0638 0x0a61 root:scanner 0664
# Avision AV3750SU
-0x0638 0x0a65 root:scanner 0664
+0x0638 0x0a65 root:scanner 0664
# Avision AV3850SU
-0x0638 0x0a66 root:scanner 0664
+0x0638 0x0a66 root:scanner 0664
# Avision AV8350
-0x0638 0x0a68 root:scanner 0664
+0x0638 0x0a68 root:scanner 0664
# Avision FB6080E
-0x0638 0x0a82 root:scanner 0664
+0x0638 0x0a82 root:scanner 0664
# Avision FB2080E
-0x0638 0x0a84 root:scanner 0664
+0x0638 0x0a84 root:scanner 0664
# Avision AV122 C2
-0x0638 0x0a93 root:scanner 0664
+0x0638 0x0a93 root:scanner 0664
# Avision AV220-G
-0x0638 0x0a94 root:scanner 0664
+0x0638 0x0a94 root:scanner 0664
# Avision @V2500
-0x0638 0x0aa1 root:scanner 0664
+0x0638 0x0aa1 root:scanner 0664
# Avision AV210D2+
-0x0638 0x1a35 root:scanner 0664
+0x0638 0x1a35 root:scanner 0664
# Minolta Elite II
-0x0686 0x4004 root:scanner 0664
+0x0686 0x4004 root:scanner 0664
# Minolta Dimage Scan Dual III
-0x0686 0x400d root:scanner 0664
+0x0686 0x400d root:scanner 0664
# Minolta Dimage Scan Elite 5400
-0x0686 0x400e root:scanner 0664
+0x0686 0x400e root:scanner 0664
# AGFA SnapScan 1212U
-0x06bd 0x0001 root:scanner 0664
+0x06bd 0x0001 root:scanner 0664
# AGFA SnapScan 1236u
-0x06bd 0x0002 root:scanner 0664
+0x06bd 0x0002 root:scanner 0664
# Agfa Snapscan Touch
-0x06bd 0x0100 root:scanner 0664
+0x06bd 0x0100 root:scanner 0664
# AGFA SnapScan 1212U_2
-0x06bd 0x2061 root:scanner 0664
+0x06bd 0x2061 root:scanner 0664
# AGFA SnapScan e40
-0x06bd 0x208d root:scanner 0664
+0x06bd 0x208d root:scanner 0664
# AGFA SnapScan e50
-0x06bd 0x208f root:scanner 0664
+0x06bd 0x208f root:scanner 0664
# AGFA SnapScan e20
-0x06bd 0x2091 root:scanner 0664
+0x06bd 0x2091 root:scanner 0664
# AGFA SnapScan e10
-0x06bd 0x2093 root:scanner 0664
+0x06bd 0x2093 root:scanner 0664
# AGFA SnapScan e25
-0x06bd 0x2095 root:scanner 0664
+0x06bd 0x2095 root:scanner 0664
# AGFA SnapScan e26
-0x06bd 0x2097 root:scanner 0664
+0x06bd 0x2097 root:scanner 0664
# AGFA SnapScan e52
-0x06bd 0x20fd root:scanner 0664
+0x06bd 0x20fd root:scanner 0664
# AGFA SnapScan e42
-0x06bd 0x20ff root:scanner 0664
+0x06bd 0x20ff root:scanner 0664
# UMAX Astra 4900
-0x06dc 0x0020 root:scanner 0664
+0x06dc 0x0020 root:scanner 0664
# Plustek OpticPro U12 | Plustek OpticPro UT12 | Plustek OpticPro 1212U | RevScan RevScan Orange R48Ti | Genius ColorPage Vivid III USB
-0x07b3 0x0001 root:scanner 0664
+0x07b3 0x0001 root:scanner 0664
# Plustek OpticPro U12
-0x07b3 0x0010 root:scanner 0664
+0x07b3 0x0010 root:scanner 0664
# Plustek OpticPro U24
-0x07b3 0x0011 root:scanner 0664
+0x07b3 0x0011 root:scanner 0664
# Plustek OpticPro UT12
-0x07b3 0x0013 root:scanner 0664
+0x07b3 0x0013 root:scanner 0664
# Plustek OpticPro U24
-0x07b3 0x0015 root:scanner 0664
+0x07b3 0x0015 root:scanner 0664
# Plustek OpticPro UT12 | Plustek OpticPro UT16 | Plustek OpticPro UT24
-0x07b3 0x0017 root:scanner 0664
+0x07b3 0x0017 root:scanner 0664
# Plustek OpticPro 1248U | RevScan 19200i
-0x07b3 0x0400 root:scanner 0664
+0x07b3 0x0400 root:scanner 0664
# Plustek OpticPro 1248U
-0x07b3 0x0401 root:scanner 0664
+0x07b3 0x0401 root:scanner 0664
# Plustek OpticPro U16B
-0x07b3 0x0402 root:scanner 0664
+0x07b3 0x0402 root:scanner 0664
# Plustek OpticPro U16B+ | Plustek OpticPro UT16B
-0x07b3 0x0403 root:scanner 0664
+0x07b3 0x0403 root:scanner 0664
# Nortek MyScan 1200 | Plustek OpticPro S12 | Plustek OpticPro ST12
-0x07b3 0x040b root:scanner 0664
+0x07b3 0x040b root:scanner 0664
# Plustek OpticPro S24
-0x07b3 0x040e root:scanner 0664
+0x07b3 0x040e root:scanner 0664
# NeatReceipts Scanalizer Professional 2.5 | Plustek OpticSlim M12
-0x07b3 0x0412 root:scanner 0664
+0x07b3 0x0412 root:scanner 0664
# Plustek OpticSlim 1200
-0x07b3 0x0413 root:scanner 0664
+0x07b3 0x0413 root:scanner 0664
# Plustek OpticSlim 2400
-0x07b3 0x0422 root:scanner 0664
+0x07b3 0x0422 root:scanner 0664
# Plustek OpticSlim 2400 plus
-0x07b3 0x0454 root:scanner 0664
+0x07b3 0x0454 root:scanner 0664
# Plustek Iriscan Express 2
-0x07b3 0x045f root:scanner 0664
+0x07b3 0x045f root:scanner 0664
# NeatReceipts Mobile Scanner
-0x07b3 0x0462 root:scanner 0664
+0x07b3 0x0462 root:scanner 0664
# Plustek OpticBook 3600
-0x07b3 0x0900 root:scanner 0664
+0x07b3 0x0900 root:scanner 0664
# Corex 600c
-0x08f0 0x0002 root:scanner 0664
+0x08f0 0x0002 root:scanner 0664
# Corex 800c
-0x08f0 0x0005 root:scanner 0664
+0x08f0 0x0005 root:scanner 0664
# Xerox Phaser 6110MFP
-0x0924 0x3d5d root:scanner 0664
+0x0924 0x3d5d root:scanner 0664
# Xerox Phaser 3200MFP
-0x0924 0x3da4 root:scanner 0664
+0x0924 0x3da4 root:scanner 0664
# Xerox WorkCentre 4118 Series
-0x0924 0x420c root:scanner 0664
+0x0924 0x420c root:scanner 0664
# Xerox WorkCentre 3119 Series
-0x0924 0x4265 root:scanner 0664
+0x0924 0x4265 root:scanner 0664
# Xerox WorkCentre 3210
-0x0924 0x4293 root:scanner 0664
+0x0924 0x4293 root:scanner 0664
# Xerox WorkCentre 3220
-0x0924 0x4294 root:scanner 0664
+0x0924 0x4294 root:scanner 0664
# Pentax DSmobile 600
-0x0a17 0x3210 root:scanner 0664
+0x0a17 0x3210 root:scanner 0664
# Portable Peripheral Co., Ltd. Q-Scan USB001 (A4 portable scanner)
-0x0a53 0x1000 root:scanner 0664
+0x0a53 0x1000 root:scanner 0664
# Portable Peripheral Co., Ltd. Q-Scan USB201 (A6 portable scanner)
-0x0a53 0x2000 root:scanner 0664
+0x0a53 0x2000 root:scanner 0664
# Syscan TravelScan 460/464 | Ambir Visigo A4
-0x0a82 0x4600 root:scanner 0664
+0x0a82 0x4600 root:scanner 0664
# Syscan DocketPort 465
-0x0a82 0x4802 root:scanner 0664
+0x0a82 0x4802 root:scanner 0664
# Syscan DocketPort 665
-0x0a82 0x4803 root:scanner 0664
+0x0a82 0x4803 root:scanner 0664
# Syscan DocketPort 685/ Ambir DS685
-0x0a82 0x480c root:scanner 0664
+0x0a82 0x480c root:scanner 0664
# Syscan DocketPort 485
-0x0a82 0x4810 root:scanner 0664
+0x0a82 0x4810 root:scanner 0664
# Syscan TravelScan 662
-0x0a82 0x6620 root:scanner 0664
+0x0a82 0x6620 root:scanner 0664
# Canon CR-55
-0x1083 0x160c root:scanner 0664
+0x1083 0x160c root:scanner 0664
# Canon DR-1210C
-0x1083 0x160f root:scanner 0664
+0x1083 0x160f root:scanner 0664
# Canon DR-4010C
-0x1083 0x1614 root:scanner 0664
+0x1083 0x1614 root:scanner 0664
# Canon DR-2510C
-0x1083 0x1617 root:scanner 0664
+0x1083 0x1617 root:scanner 0664
# Canon DR-X10C
-0x1083 0x1618 root:scanner 0664
+0x1083 0x1618 root:scanner 0664
# Canon CR-25
-0x1083 0x161a root:scanner 0664
+0x1083 0x161a root:scanner 0664
# Canon DR-2010C
-0x1083 0x161b root:scanner 0664
+0x1083 0x161b root:scanner 0664
# Canon DR-3010C
-0x1083 0x161d root:scanner 0664
+0x1083 0x161d root:scanner 0664
# Canon DR-7090C
-0x1083 0x1620 root:scanner 0664
+0x1083 0x1620 root:scanner 0664
# Canon DR-9050C
-0x1083 0x1622 root:scanner 0664
+0x1083 0x1622 root:scanner 0664
# Canon DR-7550C
-0x1083 0x1623 root:scanner 0664
+0x1083 0x1623 root:scanner 0664
# Canon DR-6050C
-0x1083 0x1624 root:scanner 0664
+0x1083 0x1624 root:scanner 0664
# Canon DR-6010C
-0x1083 0x1626 root:scanner 0664
+0x1083 0x1626 root:scanner 0664
# Canon CR-190i
-0x1083 0x162b root:scanner 0664
+0x1083 0x162b root:scanner 0664
# Canon DR-6030C
-0x1083 0x1638 root:scanner 0664
+0x1083 0x1638 root:scanner 0664
# Canon CR-135i
-0x1083 0x1639 root:scanner 0664
+0x1083 0x1639 root:scanner 0664
# Digital Dream l' espion XS
-0x1183 0x0001 root:scanner 0664
+0x1183 0x0001 root:scanner 0664
# KONICA MINOLTA magicolor 1690MF
-0x132b 0x2089 root:scanner 0664
+0x132b 0x2089 root:scanner 0664
# UMAX Astra 1220U
-0x1606 0x0010 root:scanner 0664
+0x1606 0x0010 root:scanner 0664
# UMAX Astra 1600U | UMAX Astra 2000U
-0x1606 0x0030 root:scanner 0664
+0x1606 0x0030 root:scanner 0664
# Umax UMAX 3400
-0x1606 0x0050 root:scanner 0664
+0x1606 0x0050 root:scanner 0664
# Umax UMAX 3400 | Umax UMAX Astranet ia101 | Umax UMAX 3450
-0x1606 0x0060 root:scanner 0664
+0x1606 0x0060 root:scanner 0664
# UMAX Astra 4400 | UMAX Astra 4450
-0x1606 0x0070 root:scanner 0664
+0x1606 0x0070 root:scanner 0664
# UMAX Astra 2100U
-0x1606 0x0130 root:scanner 0664
+0x1606 0x0130 root:scanner 0664
# Umax UMAX 5400
-0x1606 0x0160 root:scanner 0664
+0x1606 0x0160 root:scanner 0664
# UMAX Astra 2200 (SU)
-0x1606 0x0230 root:scanner 0664
+0x1606 0x0230 root:scanner 0664
# DCT DocketPort 487
-0x1dcc 0x4810 root:scanner 0664
+0x1dcc 0x4810 root:scanner 0664
# Dell A920
-0x413c 0x5105 root:scanner 0664
+0x413c 0x5105 root:scanner 0664
# Dell Dell MFP Laser Printer 1815dn
-0x413c 0x5124 root:scanner 0664
+0x413c 0x5124 root:scanner 0664
# Dell 1600n
-0x413c 0x5250 root:scanner 0664
+0x413c 0x5250 root:scanner 0664
diff --git a/testsuite/tools/data/html-backends-split.ref b/testsuite/tools/data/html-backends-split.ref
index 72fd949..3455e20 100644
--- a/testsuite/tools/data/html-backends-split.ref
+++ b/testsuite/tools/data/html-backends-split.ref
@@ -5,7 +5,7 @@
</head>
<body bgcolor=FFFFFF>
<div align=center>
-<img src="http://www.sane-project.org/images/sane.png" alt="SANE">
+<img src="images/sane.png" alt="SANE">
<h1>SANE: Backends (Drivers)</h1>
</div>
<hr>
@@ -15,8 +15,8 @@ Please consult the manpages and the author-supplied webpages
for more detailed (and usually important) information
concerning each backend.</p>
<p>If you have new information or corrections, please file a
-<a href="http://www.sane-project.org/bugs.html">bug report</a>
-with as many details as possible. Also please tell us if your scanner
+<a href="bugs.html">bug report</a>
+with as many details as possible. Also please tell us if your scanner
isn't mentioned in this list at all.</p>
<p>For an explanation of the tables, see the
<a href="#legend">legend</a>.
@@ -84,88 +84,88 @@ isn't mentioned in this list at all.</p>
</tr>
</table>
<h2><a name="SCANNERS">Scanners</a></h2>
-<p><b>Backends</b>:
-<a href="#S-ABATON">abaton</a>,
-<a href="#S-AGFAFOCUS">agfafocus</a>,
-<a href="#S-APPLE">apple</a>,
-<a href="#S-ARTEC">artec</a>,
-<a href="#S-ARTEC-EPLUS48U">artec_eplus48u</a>,
-<a href="#S-AS6E">as6e</a>,
-<a href="#S-AVISION">avision</a>,
-<a href="#S-BH">bh</a>,
-<a href="#S-CANON">canon</a>,
-<a href="#S-CANON630U">canon630u</a>,
-<a href="#S-CANON-DR">canon_dr</a>,
-<a href="#S-CANON-PP">canon_pp</a>,
-<a href="#S-CARDSCAN">cardscan</a>,
-<a href="#S-COOLSCAN">coolscan</a>,
-<a href="#S-COOLSCAN2">coolscan2</a>,
-<a href="#S-COOLSCAN3">coolscan3</a>,
-<a href="#S-DELL1600N-NET">dell1600n_net</a>,
-<a href="#S-EPJITSU">epjitsu</a>,
-<a href="#S-EPSON">epson</a>,
-<a href="#S-EPSON2">epson2</a>,
-<a href="#S-FUJITSU">fujitsu</a>,
-<a href="#S-GENESYS">genesys</a>,
-<a href="#S-GT68XX">gt68xx</a>,
-<a href="#S-HP">hp</a>,
-<a href="#S-HP3500">hp3500</a>,
-<a href="#S-HP3900">hp3900</a>,
-<a href="#S-HP4200">hp4200</a>,
-<a href="#S-HP5400">hp5400</a>,
-<a href="#S-HP5590">hp5590</a>,
-<a href="#S-HPLJM1005">hpljm1005</a>,
-<a href="#S-HPSJ5S">hpsj5s</a>,
-<a href="#S-HS2P">hs2p</a>,
-<a href="#S-IBM">ibm</a>,
-<a href="#S-KODAK">kodak</a>,
-<a href="#S-KODAKAIO">kodakaio</a>,
-<a href="#S-KVS20XX">kvs20xx</a>,
-<a href="#S-KVS40XX">kvs40xx</a>,
-<a href="#S-KVS1025">kvs1025</a>,
-<a href="#S-LEO">leo</a>,
-<a href="#S-LEXMARK">lexmark</a>,
-<a href="#S-MA1509">ma1509</a>,
-<a href="#S-MAGICOLOR">magicolor</a>,
-<a href="#S-MATSUSHITA">matsushita</a>,
-<a href="#S-MICROTEK">microtek</a>,
-<a href="#S-MICROTEK2">microtek2</a>,
-<a href="#S-MUSTEK">mustek</a>,
-<a href="#S-MUSTEK-PP">mustek_pp</a>,
-<a href="#S-MUSTEK-USB">mustek_usb</a>,
-<a href="#S-MUSTEK-USB2">mustek_usb2</a>,
-<a href="#S-NEC">nec</a>,
-<a href="#S-NIASH">niash</a>,
-<a href="#S-P5">p5</a>,
-<a href="#S-PIE">pie</a>,
-<a href="#S-PIXMA">pixma</a>,
-<a href="#S-PLUSTEK">plustek</a>,
-<a href="#S-PLUSTEK-PP">plustek_pp</a>,
-<a href="#S-RICOH">ricoh</a>,
-<a href="#S-RTS8891">rts8891</a>,
-<a href="#S-S9036">s9036</a>,
-<a href="#S-SCEPTRE">sceptre</a>,
-<a href="#S-SHARP">sharp</a>,
-<a href="#S-SM3600">sm3600</a>,
-<a href="#S-SM3840">sm3840</a>,
-<a href="#S-SNAPSCAN">SnapScan</a>,
-<a href="#S-SP15C">sp15c</a>,
-<a href="#S-ST400">st400</a>,
-<a href="#S-TAMARACK">tamarack</a>,
-<a href="#S-TECO1">teco1</a>,
-<a href="#S-TECO2">teco2</a>,
-<a href="#S-TECO3">teco3</a>,
-<a href="#S-U12">u12</a>,
-<a href="#S-UMAX">umax</a>,
-<a href="#S-UMAX1220U">umax1220u</a>,
-<a href="#S-UMAX-PP">umax_pp</a>,
-<a href="#S-UNSUPPORTED">unsupported</a>,
+<p><b>Backends</b>:
+<a href="#S-ABATON">abaton</a>,
+<a href="#S-AGFAFOCUS">agfafocus</a>,
+<a href="#S-APPLE">apple</a>,
+<a href="#S-ARTEC">artec</a>,
+<a href="#S-ARTEC-EPLUS48U">artec_eplus48u</a>,
+<a href="#S-AS6E">as6e</a>,
+<a href="#S-AVISION">avision</a>,
+<a href="#S-BH">bh</a>,
+<a href="#S-CANON">canon</a>,
+<a href="#S-CANON630U">canon630u</a>,
+<a href="#S-CANON-DR">canon_dr</a>,
+<a href="#S-CANON-PP">canon_pp</a>,
+<a href="#S-CARDSCAN">cardscan</a>,
+<a href="#S-COOLSCAN">coolscan</a>,
+<a href="#S-COOLSCAN2">coolscan2</a>,
+<a href="#S-COOLSCAN3">coolscan3</a>,
+<a href="#S-DELL1600N-NET">dell1600n_net</a>,
+<a href="#S-EPJITSU">epjitsu</a>,
+<a href="#S-EPSON">epson</a>,
+<a href="#S-EPSON2">epson2</a>,
+<a href="#S-FUJITSU">fujitsu</a>,
+<a href="#S-GENESYS">genesys</a>,
+<a href="#S-GT68XX">gt68xx</a>,
+<a href="#S-HP">hp</a>,
+<a href="#S-HP3500">hp3500</a>,
+<a href="#S-HP3900">hp3900</a>,
+<a href="#S-HP4200">hp4200</a>,
+<a href="#S-HP5400">hp5400</a>,
+<a href="#S-HP5590">hp5590</a>,
+<a href="#S-HPLJM1005">hpljm1005</a>,
+<a href="#S-HPSJ5S">hpsj5s</a>,
+<a href="#S-HS2P">hs2p</a>,
+<a href="#S-IBM">ibm</a>,
+<a href="#S-KODAK">kodak</a>,
+<a href="#S-KODAKAIO">kodakaio</a>,
+<a href="#S-KVS20XX">kvs20xx</a>,
+<a href="#S-KVS40XX">kvs40xx</a>,
+<a href="#S-KVS1025">kvs1025</a>,
+<a href="#S-LEO">leo</a>,
+<a href="#S-LEXMARK">lexmark</a>,
+<a href="#S-MA1509">ma1509</a>,
+<a href="#S-MAGICOLOR">magicolor</a>,
+<a href="#S-MATSUSHITA">matsushita</a>,
+<a href="#S-MICROTEK">microtek</a>,
+<a href="#S-MICROTEK2">microtek2</a>,
+<a href="#S-MUSTEK">mustek</a>,
+<a href="#S-MUSTEK-PP">mustek_pp</a>,
+<a href="#S-MUSTEK-USB">mustek_usb</a>,
+<a href="#S-MUSTEK-USB2">mustek_usb2</a>,
+<a href="#S-NEC">nec</a>,
+<a href="#S-NIASH">niash</a>,
+<a href="#S-P5">p5</a>,
+<a href="#S-PIE">pie</a>,
+<a href="#S-PIXMA">pixma</a>,
+<a href="#S-PLUSTEK">plustek</a>,
+<a href="#S-PLUSTEK-PP">plustek_pp</a>,
+<a href="#S-RICOH">ricoh</a>,
+<a href="#S-RTS8891">rts8891</a>,
+<a href="#S-S9036">s9036</a>,
+<a href="#S-SCEPTRE">sceptre</a>,
+<a href="#S-SHARP">sharp</a>,
+<a href="#S-SM3600">sm3600</a>,
+<a href="#S-SM3840">sm3840</a>,
+<a href="#S-SNAPSCAN">SnapScan</a>,
+<a href="#S-SP15C">sp15c</a>,
+<a href="#S-ST400">st400</a>,
+<a href="#S-TAMARACK">tamarack</a>,
+<a href="#S-TECO1">teco1</a>,
+<a href="#S-TECO2">teco2</a>,
+<a href="#S-TECO3">teco3</a>,
+<a href="#S-U12">u12</a>,
+<a href="#S-UMAX">umax</a>,
+<a href="#S-UMAX1220U">umax1220u</a>,
+<a href="#S-UMAX-PP">umax_pp</a>,
+<a href="#S-UNSUPPORTED">unsupported</a>,
<a href="#S-XEROX-MFP">xerox_mfp</a></p>
<h3><a name="S-ABATON">Backend: abaton
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-abaton.5.html">sane-abaton</a><br>
+<b>Manual page:</b> <a href="man/sane-abaton.5.html">sane-abaton</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -197,7 +197,7 @@ Abaton
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a><br>
+<b>Manual page:</b> <a href="man/sane-agfafocus.5.html">sane-agfafocus</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -259,7 +259,7 @@ Siemens
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-apple.5.html">sane-apple</a><br>
+<b>Manual page:</b> <a href="man/sane-apple.5.html">sane-apple</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -298,9 +298,9 @@ Siemens
(unmaintained)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a><br>
+<b>Manual page:</b> <a href="man/sane-artec.5.html">sane-artec</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -378,7 +378,7 @@ Siemens
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a><br>
+<b>Manual page:</b> <a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -492,9 +492,9 @@ Siemens
(0.5)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://as6edriver.sourceforge.net/">http://as6edriver.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-as6e.5.html">sane-as6e</a><br>
+<b>Manual page:</b> <a href="man/sane-as6e.5.html">sane-as6e</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -537,9 +537,9 @@ Siemens
(Build: 296)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">http://skull.piratehaven.org/~mike/sane/avision.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a><br>
+<b>Manual page:</b> <a href="man/sane-avision.5.html">sane-avision</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -1617,9 +1617,9 @@ Kyocera
(1.0-4)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.martoneconsulting.com/sane-bh.html">http://www.martoneconsulting.com/sane-bh.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a><br>
+<b>Manual page:</b> <a href="man/sane-bh.5.html">sane-bh</a><br>
<b>Comment:</b> Supports Copiscan II scanners with Remote SCSI Controller (RSC) interface<br>
</p>
<table border=1>
@@ -1680,9 +1680,9 @@ Kyocera
(1.12)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.rzg.mpg.de/~mpd/sane/">http://www.rzg.mpg.de/~mpd/sane/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a><br>
+<b>Manual page:</b> <a href="man/sane-canon.5.html">sane-canon</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -1758,9 +1758,9 @@ Kyocera
(0.1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://canon-fb630u.sourceforge.net/">http://canon-fb630u.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-canon630u.5.html">sane-canon630u</a><br>
+<b>Manual page:</b> <a href="man/sane-canon630u.5.html">sane-canon630u</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -1792,9 +1792,9 @@ Kyocera
(38)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.thebility.com/canon/">http://www.thebility.com/canon/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a><br>
+<b>Manual page:</b> <a href="man/sane-canon_dr.5.html">sane-canon_dr</a><br>
<b>Comment:</b> Backend updated for SANE release 1.0.23, see sane-canon_dr manpage<br>
</p>
<table border=1>
@@ -2093,9 +2093,9 @@ Kyocera
(0.33)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://canon-fb330p.sourceforge.net">http://canon-fb330p.sourceforge.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a><br>
+<b>Manual page:</b> <a href="man/sane-canon_pp.5.html">sane-canon_pp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -2176,9 +2176,9 @@ Kyocera
(2)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.thebility.com/cardscan/">http://www.thebility.com/cardscan/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-cardscan.5.html">sane-cardscan</a><br>
+<b>Manual page:</b> <a href="man/sane-cardscan.5.html">sane-cardscan</a><br>
<b>Comment:</b> Backend updated for SANE release 1.0.21, see sane-cardscan manpage<br>
</p>
<table border=1>
@@ -2211,9 +2211,9 @@ Kyocera
(0.4.3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://andreas.rick.free.fr/sane/">http://andreas.rick.free.fr/sane/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-coolscan.5.html">sane-coolscan</a><br>
+<b>Manual page:</b> <a href="man/sane-coolscan.5.html">sane-coolscan</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -2259,9 +2259,9 @@ Kyocera
(0.1.8)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://coolscan2.sourceforge.net/">http://coolscan2.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a><br>
+<b>Manual page:</b> <a href="man/sane-coolscan2.5.html">sane-coolscan2</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -2310,14 +2310,14 @@ Kyocera
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
+<td align=center><a href="unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
+<td align=center><a href="unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4002</td>
<td align=center><font color="#0000B0">Untested</font></td>
@@ -2335,7 +2335,7 @@ Kyocera
(1.0.0)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a><br>
+<b>Manual page:</b> <a href="man/sane-coolscan3.5.html">sane-coolscan3</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -2377,14 +2377,14 @@ Kyocera
<td>Rebadged LS 40?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/nikon-ls50-ed.html">LS 50 ED</a></td>
+<td align=center><a href="unsupported/nikon-ls50-ed.html">LS 50 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
+<td align=center><a href="unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -2405,7 +2405,7 @@ Kyocera
<td>needs linux kernel 2.4.19 or later</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
+<td align=center><a href="unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4002</td>
<td align=center><font color="#0000B0">Untested</font></td>
@@ -2446,9 +2446,9 @@ Kyocera
(20)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.thebility.com/epjitsu/">http://www.thebility.com/epjitsu/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a><br>
+<b>Manual page:</b> <a href="man/sane-epjitsu.5.html">sane-epjitsu</a><br>
<b>Comment:</b> Backend updated for SANE release 1.0.21, see sane-epjitsu manpage<br>
</p>
<table border=1>
@@ -2502,9 +2502,9 @@ Kyocera
(unmaintained)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.khk.net/sane">http://www.khk.net/sane</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a><br>
+<b>Manual page:</b> <a href="man/sane-epson.5.html">sane-epson</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -2984,7 +2984,7 @@ Kyocera
(1.0.124)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a><br>
+<b>Manual page:</b> <a href="man/sane-epson2.5.html">sane-epson2</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -5396,9 +5396,9 @@ Kyocera
(117)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.thebility.com/fujitsu/">http://www.thebility.com/fujitsu/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a><br>
+<b>Manual page:</b> <a href="man/sane-fujitsu.5.html">sane-fujitsu</a><br>
<b>Comment:</b> Backend updated for SANE release 1.0.23, see sane-fujitsu manpage<br>
</p>
<table border=1>
@@ -5921,9 +5921,9 @@ Kyocera
(1.0-63)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">http://www.meier-geinitz.de/sane/genesys-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a><br>
+<b>Manual page:</b> <a href="man/sane-genesys.5.html">sane-genesys</a><br>
<b>Comment:</b> Only the USB scanners mentioned below are currently supported.<br>
</p>
<table border=1>
@@ -6240,9 +6240,9 @@ Panasonic
(1.0-84)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">http://www.meier-geinitz.de/sane/gt68xx-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a><br>
+<b>Manual page:</b> <a href="man/sane-gt68xx.5.html">sane-gt68xx</a><br>
<b>Comment:</b> Only the USB scanners mentioned below are supported. For other Mustek BearPaws, look at the Plustek and the MA-1509 backend.<br>
</p>
<table border=1>
@@ -6772,9 +6772,9 @@ RevScan
(1.06)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.kirchgessner.net/">http://www.kirchgessner.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a><br>
+<b>Manual page:</b> <a href="man/sane-hp.5.html">sane-hp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -6925,9 +6925,9 @@ RevScan
(1.1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://projects.troy.rollo.name/rt-scanners/">http://projects.troy.rollo.name/rt-scanners/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp3500.5.html">sane-hp3500</a><br>
+<b>Manual page:</b> <a href="man/sane-hp3500.5.html">sane-hp3500</a><br>
<b>Comment:</b> HP3500 series scanners.<br>
</p>
<table border=1>
@@ -6967,9 +6967,9 @@ RevScan
(0.12)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sourceforge.net/projects/hp3900-series/">http://sourceforge.net/projects/hp3900-series/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a><br>
+<b>Manual page:</b> <a href="man/sane-hp3900.5.html">sane-hp3900</a><br>
<b>Comment:</b> Still Beta<br>
</p>
<table border=1>
@@ -7055,9 +7055,9 @@ RevScan
(1.0-2)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://hp4200-backend.sourceforge.net">http://hp4200-backend.sourceforge.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp4200.5.html">sane-hp4200</a><br>
+<b>Manual page:</b> <a href="man/sane-hp4200.5.html">sane-hp4200</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -7096,9 +7096,9 @@ RevScan
(1.0-2)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sourceforge.net/projects/hp5400backend">http://sourceforge.net/projects/hp5400backend</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp5400.5.html">sane-hp5400</a><br>
+<b>Manual page:</b> <a href="man/sane-hp5400.5.html">sane-hp5400</a><br>
<b>Comment:</b> HP5400 and HP5470 scanners. Prototype backend available<br>
</p>
<table border=1>
@@ -7138,7 +7138,7 @@ RevScan
(1.0.5)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a><br>
+<b>Manual page:</b> <a href="man/sane-hp5590.5.html">sane-hp5590</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -7198,7 +7198,7 @@ RevScan
(0)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hpljm1005.5.html">sane-hpljm1005</a><br>
+<b>Manual page:</b> <a href="man/sane-hpljm1005.5.html">sane-hpljm1005</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -7237,9 +7237,9 @@ RevScan
(0.03)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://hpsj5s.sourceforge.net/">http://hpsj5s.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hpsj5s.5.html">sane-hpsj5s</a><br>
+<b>Manual page:</b> <a href="man/sane-hpsj5s.5.html">sane-hpsj5s</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -7264,9 +7264,9 @@ RevScan
(1.00)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.acjlaw.net:8080/~jeremy/Ricoh/">http://www.acjlaw.net:8080/~jeremy/Ricoh/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-hs2p.5.html">sane-hs2p</a><br>
+<b>Manual page:</b> <a href="man/sane-hs2p.5.html">sane-hs2p</a><br>
<b>Comment:</b> This backend has been tested with the IS450DE (Duplex/Endorser). All major functions necessary for scanning are supported. This backend should work with all Ricoh scanners in the IS450 family as well as the IS420 series, but the IS420 has not yet been tested. Features provided by the optional Image Processing Unit (IPU) are not yet integrated into the backend, as my scanner lacks the IPU.<br>
</p>
<table border=1>
@@ -7313,9 +7313,9 @@ RevScan
(1.0-4)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/ibm-backend/">http://www.meier-geinitz.de/sane/ibm-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-ibm.5.html">sane-ibm</a><br>
+<b>Manual page:</b> <a href="man/sane-ibm.5.html">sane-ibm</a><br>
<b>Comment:</b> This backend has had only limited testing. It needs more work especially for the Ricoh scanners. Patches are welcome.<br>
</p>
<table border=1>
@@ -7364,9 +7364,9 @@ Ricoh
(7)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.thebility.com/kodak/">http://www.thebility.com/kodak/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a><br>
+<b>Manual page:</b> <a href="man/sane-kodak.5.html">sane-kodak</a><br>
<b>Comment:</b> New backend for SANE release 1.0.21, see sane-kodak manpage<br>
</p>
<table border=1>
@@ -7616,9 +7616,9 @@ Ricoh
(2.4.6)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sourceforge.net/projects/cupsdriverkodak/">http://sourceforge.net/projects/cupsdriverkodak/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a><br>
+<b>Manual page:</b> <a href="man/sane-kodakaio.5.html">sane-kodakaio</a><br>
<b>Comment:</b> Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10<br>
</p>
<table border=1>
@@ -7821,7 +7821,7 @@ Ricoh
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-kvs20xx.5.html">sane-kvs20xx</a><br>
+<b>Manual page:</b> <a href="man/sane-kvs20xx.5.html">sane-kvs20xx</a><br>
<b>Comment:</b> New backend for SANE release 1.0.22, see sane-kvs20xx manpage<br>
</p>
<table border=1>
@@ -7882,7 +7882,7 @@ Ricoh
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-kvs40xx.5.html">sane-kvs40xx</a><br>
+<b>Manual page:</b> <a href="man/sane-kvs40xx.5.html">sane-kvs40xx</a><br>
<b>Comment:</b> New backend for SANE release 1.0.23, see sane-kvs40xx manpage<br>
</p>
<table border=1>
@@ -7922,7 +7922,7 @@ Ricoh
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-kvs1025.5.html">sane-kvs1025</a><br>
+<b>Manual page:</b> <a href="man/sane-kvs1025.5.html">sane-kvs1025</a><br>
<b>Comment:</b> New backend for SANE release 1.0.21, see sane-kvs1025 manpage<br>
</p>
<table border=1>
@@ -7962,9 +7962,9 @@ Ricoh
(1.0-10)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.zago.net/sane/#leo">http://www.zago.net/sane/#leo</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-leo.5.html">sane-leo</a><br>
+<b>Manual page:</b> <a href="man/sane-leo.5.html">sane-leo</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8007,9 +8007,9 @@ Genius
(1.0-0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://stef.dev.free.fr/sane/lexmark">http://stef.dev.free.fr/sane/lexmark</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a><br>
+<b>Manual page:</b> <a href="man/sane-lexmark.5.html">sane-lexmark</a><br>
<b>Comment:</b> This backend supports lexmark x1100 series scanners.<br>
</p>
<table border=1>
@@ -8107,9 +8107,9 @@ Dell
(1.0-3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/ma1509-backend/">http://www.meier-geinitz.de/sane/ma1509-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-ma1509.5.html">sane-ma1509</a><br>
+<b>Manual page:</b> <a href="man/sane-ma1509.5.html">sane-ma1509</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8143,9 +8143,9 @@ Dell
(1.0.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://wiki.kainhofer.com/hardware/magicolor_scan">http://wiki.kainhofer.com/hardware/magicolor_scan</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-magicolor.5.html">sane-magicolor</a><br>
+<b>Manual page:</b> <a href="man/sane-magicolor.5.html">sane-magicolor</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8184,9 +8184,9 @@ Dell
(1.0-7)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.zago.net/sane">http://www.zago.net/sane</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a><br>
+<b>Manual page:</b> <a href="man/sane-matsushita.5.html">sane-matsushita</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8281,9 +8281,9 @@ Dell
(0.13.1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.mir.com/mtek/">http://www.mir.com/mtek/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a><br>
+<b>Manual page:</b> <a href="man/sane-microtek.5.html">sane-microtek</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8461,9 +8461,9 @@ Dell
(unmaintained)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://karstenfestag.gmxhome.de/linux.html">http://karstenfestag.gmxhome.de/linux.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a><br>
+<b>Manual page:</b> <a href="man/sane-microtek2.5.html">sane-microtek2</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -8589,7 +8589,7 @@ Dell
<td>only flatbed mode ?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -8711,9 +8711,9 @@ Dell
(1.0-138)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">http://www.meier-geinitz.de/sane/mustek-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a><br>
+<b>Manual page:</b> <a href="man/sane-mustek.5.html">sane-mustek</a><br>
<b>Comment:</b> Most Mustek SCSI scanners are supported by this backend. For USB scanners, look at the mustek_usb backend.<br>
</p>
<table border=1>
@@ -8960,9 +8960,9 @@ Dell
(13)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://penguin-breeder.org/sane/mustek_pp/">http://penguin-breeder.org/sane/mustek_pp/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a><br>
+<b>Manual page:</b> <a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a><br>
<b>Comment:</b> Supports CIS and CCD type parallel port scanners from Mustek.<br>
</p>
<table border=1>
@@ -9158,9 +9158,9 @@ Micromaxx
(1.0-18)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">http://www.meier-geinitz.de/sane/mustek_usb-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a><br>
+<b>Manual page:</b> <a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a><br>
<b>Comment:</b> Only the USB scanners mentioned below are supported. For BearPaws, look at the Plustek, MA-1509, and gt68xx backends.<br>
</p>
<table border=1>
@@ -9216,9 +9216,9 @@ Micromaxx
(1.0-10)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/mustek_usb2-backend/">http://www.meier-geinitz.de/sane/mustek_usb2-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-mustek_usb2.5.html">sane-mustek_usb2</a><br>
+<b>Manual page:</b> <a href="man/sane-mustek_usb2.5.html">sane-mustek_usb2</a><br>
<b>Comment:</b> Only BearPaw 2448TA Pro is supported at the moment<br>
</p>
<table border=1>
@@ -9244,9 +9244,9 @@ Micromaxx
(0.12)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www5a.biglobe.ne.jp/~saetaka/">http://www5a.biglobe.ne.jp/~saetaka/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-nec.5.html">sane-nec</a><br>
+<b>Manual page:</b> <a href="man/sane-nec.5.html">sane-nec</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -9271,9 +9271,9 @@ Micromaxx
(0.3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sourceforge.net/projects/hp3300backend">http://sourceforge.net/projects/hp3300backend</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a><br>
+<b>Manual page:</b> <a href="man/sane-niash.5.html">sane-niash</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -9337,9 +9337,9 @@ Micromaxx
(1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.sane-project.org/">http://www.sane-project.org/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-p5.5.html">sane-p5</a><br>
+<b>Manual page:</b> <a href="man/sane-p5.5.html">sane-p5</a><br>
<b>Comment:</b> New backend for SANE release 1.0.21, see sane-p5 manpage<br>
</p>
<table border=1>
@@ -9365,9 +9365,9 @@ Micromaxx
(1.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.munton.demon.co.uk/sane">http://www.munton.demon.co.uk/sane</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a><br>
+<b>Manual page:</b> <a href="man/sane-pie.5.html">sane-pie</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -9508,9 +9508,9 @@ Adlib
(0.17.3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://home.arcor.de/wittawat/pixma/">http://home.arcor.de/wittawat/pixma/</a>, <a href="http://mp610.blogspot.com/">http://mp610.blogspot.com/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a><br>
+<b>Manual page:</b> <a href="man/sane-pixma.5.html">sane-pixma</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -10494,9 +10494,9 @@ Adlib
(0.52)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.gjaeger.de/scanner/plustek/">http://www.gjaeger.de/scanner/plustek/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a><br>
+<b>Manual page:</b> <a href="man/sane-plustek.5.html">sane-plustek</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -10816,9 +10816,9 @@ Ambir
(0.43)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.gjaeger.de/scanner/plustek_pp/">http://www.gjaeger.de/scanner/plustek_pp/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a><br>
+<b>Manual page:</b> <a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11026,7 +11026,7 @@ BrightScan
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-ricoh.5.html">sane-ricoh</a><br>
+<b>Manual page:</b> <a href="man/sane-ricoh.5.html">sane-ricoh</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11058,9 +11058,9 @@ BrightScan
(1.0-0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://stef.dev.free.fr/sane/rts8891/index.html">http://stef.dev.free.fr/sane/rts8891/index.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-rts8891.5.html">sane-rts8891</a><br>
+<b>Manual page:</b> <a href="man/sane-rts8891.5.html">sane-rts8891</a><br>
<b>Comment:</b> This backend supports Realtek RTS8891 ASIC bases scanners.<br>
</p>
<table border=1>
@@ -11109,7 +11109,7 @@ BrightScan
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-s9036.5.html">sane-s9036</a><br>
+<b>Manual page:</b> <a href="man/sane-s9036.5.html">sane-s9036</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11134,9 +11134,9 @@ BrightScan
(1.0-10)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.zago.net/sane/">http://www.zago.net/sane/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-sceptre.5.html">sane-sceptre</a><br>
+<b>Manual page:</b> <a href="man/sane-sceptre.5.html">sane-sceptre</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11170,9 +11170,9 @@ BrightScan
(0.32)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a><br>
+<b>Manual page:</b> <a href="man/sane-sharp.5.html">sane-sharp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11232,9 +11232,9 @@ BrightScan
(0.1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sm3600.sourceforge.net/">http://sm3600.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a><br>
+<b>Manual page:</b> <a href="man/sane-sm3600.5.html">sane-sm3600</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11294,9 +11294,9 @@ BrightScan
(1.1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.ziplabel.com/sm3840/">http://www.ziplabel.com/sm3840/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-sm3840.5.html">sane-sm3840</a><br>
+<b>Manual page:</b> <a href="man/sane-sm3840.5.html">sane-sm3840</a><br>
<b>Comment:</b> This reverse-engineered backend supports the USB ScanMaker 3840 model<br>
</p>
<table border=1>
@@ -11329,9 +11329,9 @@ BrightScan
(1.4)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://snapscan.sourceforge.net/">http://snapscan.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a><br>
+<b>Manual page:</b> <a href="man/sane-snapscan.5.html">sane-snapscan</a><br>
<b>Comment:</b> Supported bit depths: 24 bit (color), 48 bit (color, Epson) 8 bit (gray)<br>
</p>
<table border=1>
@@ -11757,7 +11757,7 @@ BrightScan
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-sp15c.5.html">sane-sp15c</a><br>
+<b>Manual page:</b> <a href="man/sane-sp15c.5.html">sane-sp15c</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11789,9 +11789,9 @@ BrightScan
(1.6)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.informatik.uni-oldenburg.de/~ingo/sane/">http://www.informatik.uni-oldenburg.de/~ingo/sane/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-st400.5.html">sane-st400</a><br>
+<b>Manual page:</b> <a href="man/sane-st400.5.html">sane-st400</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11823,7 +11823,7 @@ BrightScan
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-tamarack.5.html">sane-tamarack</a><br>
+<b>Manual page:</b> <a href="man/sane-tamarack.5.html">sane-tamarack</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -11862,9 +11862,9 @@ Tamarack
(1.0-10)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.zago.net/sane/#teco">http://www.zago.net/sane/#teco</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a><br>
+<b>Manual page:</b> <a href="man/sane-teco1.5.html">sane-teco1</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12019,9 +12019,9 @@ Dextra
(1.0-9)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://gkall.hobby.nl/teco2.html">http://gkall.hobby.nl/teco2.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a><br>
+<b>Manual page:</b> <a href="man/sane-teco2.5.html">sane-teco2</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12120,9 +12120,9 @@ Dextra
(1.0-1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.zago.net/sane/#teco3">http://www.zago.net/sane/#teco3</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a><br>
+<b>Manual page:</b> <a href="man/sane-teco3.5.html">sane-teco3</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12188,9 +12188,9 @@ Trust
(0.02)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.gjaeger.de/scanner/u12/">http://www.gjaeger.de/scanner/u12/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a><br>
+<b>Manual page:</b> <a href="man/sane-u12.5.html">sane-u12</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12254,9 +12254,9 @@ RevScan
(1.0-41)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.rauch-domain.de/sane-umax/index.html">http://www.rauch-domain.de/sane-umax/index.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a><br>
+<b>Manual page:</b> <a href="man/sane-umax.5.html">sane-umax</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12747,9 +12747,9 @@ Genius
(unmaintained)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sourceforge.net/projects/umax1220u-sane">http://sourceforge.net/projects/umax1220u-sane</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-umax1220u.5.html">sane-umax1220u</a><br>
+<b>Manual page:</b> <a href="man/sane-umax1220u.5.html">sane-umax1220u</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12795,9 +12795,9 @@ Genius
(1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://umax1220p.sourceforge.net/">http://umax1220p.sourceforge.net/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a><br>
+<b>Manual page:</b> <a href="man/sane-umax_pp.5.html">sane-umax_pp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -12868,8 +12868,8 @@ Genius
(2010-06-09)
</a></h3>
<p>
-<b>Link(s):</b>
-<a href="/contrib.html">/contrib.html</a><br>
+<b>Link(s):</b>
+<a href="contrib.html">contrib.html</a><br>
<b>Comment:</b> The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs.<br>
</p>
<table border=1>
@@ -12884,14 +12884,14 @@ Genius
<tr>
<td align=center rowspan=7>
Agfa
-<td align=center><a href="/unsupported/agfa-duoscan-f40.html">DuoScan f40</a></td>
+<td align=center><a href="unsupported/agfa-duoscan-f40.html">DuoScan f40</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x06bd/0x02bf</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/agfa-duoscan-t2000xl.html">DuoScan T2000XL</a></td>
+<td align=center><a href="unsupported/agfa-duoscan-t2000xl.html">DuoScan T2000XL</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12905,28 +12905,28 @@ Agfa
<td>Unsupported. Same as Microtek Artixscan 2500f</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">SnapScan 310P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">SnapScan 310P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">SnapScan EZ</a></td>
+<td align=center><a href="unsupported/acer-parport.html">SnapScan EZ</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">SnapScan 1200P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">SnapScan 1200P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">SnapScan 1212P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">SnapScan 1212P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12935,7 +12935,7 @@ Agfa
<tr>
<td align=center rowspan=3>
<a href="http://www.artecusa.com/">Artec/Ultima</a>
-<td align=center><a href="/unsupported/artec_1236usb.html">1236 USB</a></td>
+<td align=center><a href="unsupported/artec_1236usb.html">1236 USB</a></td>
<td align=center>USB</td>
<td align=center>0x05d8/0x4001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12949,7 +12949,7 @@ Agfa
<td>Unsupported. Chips found inside: AT015, AD9816JS. Maybe similar to SCSI version or as6e?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/artec-ultima-2000-2.html">Ultima 2000 (0x4001)</a></td>
+<td align=center><a href="unsupported/artec-ultima-2000-2.html">Ultima 2000 (0x4001)</a></td>
<td align=center>USB</td>
<td align=center>0x05d8/0x4001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12958,7 +12958,7 @@ Agfa
<tr>
<td align=center rowspan=1>
Avigramm
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">Minidoc</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">Minidoc</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12981,14 +12981,14 @@ Avigramm
<td>Not supported. No chipset information available. Same as UMAX Astra 6700.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4500.html">iVina 1600</a></td>
+<td align=center><a href="unsupported/umax-astra-4500.html">iVina 1600</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a10</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend. Same as UMAX Astra 4500.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4700.html">iVina FB1800</a></td>
+<td align=center><a href="unsupported/umax-astra-4700.html">iVina FB1800</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a20</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -12997,56 +12997,56 @@ Avigramm
<tr>
<td align=center rowspan=12>
<a href="http://www.benq.com">Benq (Acer)</a>
-<td align=center><a href="/unsupported/acer-parport.html">310P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">310P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">320P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">320P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">340P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">340P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">610P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">610P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">610PT</a></td>
+<td align=center><a href="unsupported/acer-parport.html">610PT</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">620P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">620P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">620PT</a></td>
+<td align=center><a href="unsupported/acer-parport.html">620PT</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/acer-parport.html">640P</a></td>
+<td align=center><a href="unsupported/acer-parport.html">640P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13060,21 +13060,21 @@ Avigramm
<td>Unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/benq-5550.html">5550</a></td>
+<td align=center><a href="unsupported/benq-5550.html">5550</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2211</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html">5560</a></td>
+<td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html">5560</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2311</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/benq-7400ut.html">7400UT</a></td>
+<td align=center><a href="unsupported/benq-7400ut.html">7400UT</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2202</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13083,7 +13083,7 @@ Avigramm
<tr>
<td align=center rowspan=1>
Boeder
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">Sm@rtScan Office</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">Sm@rtScan Office</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13092,7 +13092,7 @@ Boeder
<tr>
<td align=center rowspan=4>
<a href="http://www.brother.com/">Brother</a>
-<td align=center><a href="/unsupported/brother-mfc-2500.html">MFC 2500</a></td>
+<td align=center><a href="unsupported/brother-mfc-2500.html">MFC 2500</a></td>
<td align=center>USB</td>
<td align=center>0x04f9/0x000a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13106,14 +13106,14 @@ Boeder
<td>The parport 200x400dpi grayscale version of this scanner is unsupported. Dmitri Katchalov did some investigations on this scanner. If you want to write a backend, contact him (see link).</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/brother-mfc-7300.html">MFC 7300c</a></td>
+<td align=center><a href="unsupported/brother-mfc-7300.html">MFC 7300c</a></td>
<td align=center>Parport USB</td>
<td align=center>0x04f9/0x0106</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/brother-mfc-9600.html">MFC 9600</a></td>
+<td align=center><a href="unsupported/brother-mfc-9600.html">MFC 9600</a></td>
<td align=center>USB</td>
<td align=center>0x04f9/0x0101</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13122,7 +13122,7 @@ Boeder
<tr>
<td align=center rowspan=3>
<a href="http://www.c-channel.ch/">C-Channel</a>
-<td align=center><a href="/unsupported/c-channel-mypen-pro.html">MyPen Pro</a></td>
+<td align=center><a href="unsupported/c-channel-mypen-pro.html">MyPen Pro</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13145,119 +13145,119 @@ Boeder
<tr>
<td align=center rowspan=37>
<a href="http://www.canon.com/">Canon</a>
-<td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000</a></td>
+<td align=center><a href="unsupported/canon-3000.html">CanoScan 3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000ex</a></td>
+<td align=center><a href="unsupported/canon-3000.html">CanoScan 3000ex</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000F</a></td>
+<td align=center><a href="unsupported/canon-3000.html">CanoScan 3000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-4200f.html">CanoScan 4200F</a></td>
+<td align=center><a href="unsupported/canon-4200f.html">CanoScan 4200F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-4400.html">CanoScan 4400F</a></td>
+<td align=center><a href="unsupported/canon-4400.html">CanoScan 4400F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2228</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-5000f.html">CanoScan 5000F</a></td>
+<td align=center><a href="unsupported/canon-5000f.html">CanoScan 5000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2212</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-5200f.html">CanoScan 5200F</a></td>
+<td align=center><a href="unsupported/canon-5200f.html">CanoScan 5200F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2217</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-8000f.html">CanoScan 8000F</a></td>
+<td align=center><a href="unsupported/canon-8000f.html">CanoScan 8000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more information. With transparency adapter.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-8400f.html">CanoScan 8400F</a></td>
+<td align=center><a href="unsupported/canon-8400f.html">CanoScan 8400F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-8600.html">CanoScan 8600F</a></td>
+<td align=center><a href="unsupported/canon-8600.html">CanoScan 8600F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2229</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-9900f.html">CanoScan 9900F</a></td>
+<td align=center><a href="unsupported/canon-9900f.html">CanoScan 9900F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2210</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-9950f.html">CanoScan 9950F</a></td>
+<td align=center><a href="unsupported/canon-9950f.html">CanoScan 9950F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2219</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-d646u.html">CanoScan D646U</a></td>
+<td align=center><a href="unsupported/canon-d646u.html">CanoScan D646U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for more information and test program.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-d646u.html">CanoScan D646U ex</a></td>
+<td align=center><a href="unsupported/canon-d646u.html">CanoScan D646U ex</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See D646.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-d1230u.html">CanoScan D1230U</a></td>
+<td align=center><a href="unsupported/canon-d1230u.html">CanoScan D1230U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2209</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. </td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-d1250u2.html">CanoScan D1250U2</a></td>
+<td align=center><a href="unsupported/canon-d1250u2.html">CanoScan D1250U2</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. However, someone started working on this scanner and some information is available (see link).</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-d2400uf.html">CanoScan D2400UF</a></td>
+<td align=center><a href="unsupported/canon-d2400uf.html">CanoScan D2400UF</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13271,7 +13271,7 @@ Boeder
<td>Probably not supported. No details known.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-fb620u.html">CanoScan FB620U</a></td>
+<td align=center><a href="unsupported/canon-fb620u.html">CanoScan FB620U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2202</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13292,21 +13292,21 @@ Boeder
<td>Philips chip. Backend started, see link</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-lide-80.html">CanoScan LiDE 80</a></td>
+<td align=center><a href="unsupported/canon-lide-80.html">CanoScan LiDE 80</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2214</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-lide-90.html">CanoScan LiDE 90</a></td>
+<td align=center><a href="unsupported/canon-lide-90.html">CanoScan LiDE 90</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1900</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-canoscan-lide-500f.html">CanoScan LiDE 500F</a></td>
+<td align=center><a href="unsupported/canon-canoscan-lide-500f.html">CanoScan LiDE 500F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13327,70 +13327,70 @@ Boeder
<td>Philips chip. Backend started, see link</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-fs4000.html">FS4000</a></td>
+<td align=center><a href="unsupported/canon-fs4000.html">FS4000</a></td>
<td align=center>USB SCSI</td>
<td align=center>0x04a9/0x3042</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-is-12.html">IS 12</a></td>
+<td align=center><a href="unsupported/canon-is-12.html">IS 12</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-is-22.html">IS 22</a></td>
+<td align=center><a href="unsupported/canon-is-22.html">IS 22</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-is-32.html">IS 32</a></td>
+<td align=center><a href="unsupported/canon-is-32.html">IS 32</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x105d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-is-52.html">IS 52</a></td>
+<td align=center><a href="unsupported/canon-is-52.html">IS 52</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1018</a></td>
+<td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1018</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1022</a></td>
+<td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1022</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1023</a></td>
+<td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1023</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-pixma-mp110.html">PIXMA MP110</a></td>
+<td align=center><a href="unsupported/canon-pixma-mp110.html">PIXMA MP110</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1700</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/canon-pixma-mp130.html">PIXMA MP130</a></td>
+<td align=center><a href="unsupported/canon-pixma-mp130.html">PIXMA MP130</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1701</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13406,7 +13406,7 @@ Boeder
<tr>
<td align=center rowspan=1>
Chinon
-<td align=center><a href="/unsupported/chinon-ds3000.html">DS-3000</a></td>
+<td align=center><a href="unsupported/chinon-ds3000.html">DS-3000</a></td>
<td align=center>Parport Serial Port</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13424,7 +13424,7 @@ Chinon
<tr>
<td align=center rowspan=1>
Compeye
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">Simplex 1236C</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">Simplex 1236C</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13433,14 +13433,14 @@ Compeye
<tr>
<td align=center rowspan=2>
<a href="http://www.cardscan.com/">Corex</a>
-<td align=center><a href="/unsupported/corex-cardscan-500.html">Cardscan 500</a></td>
+<td align=center><a href="unsupported/corex-cardscan-500.html">Cardscan 500</a></td>
<td align=center>USB</td>
<td align=center>0x08f0/0x0001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Businesscard reader.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/corex-cardscan-700.html">Cardscan 700 C</a></td>
+<td align=center><a href="unsupported/corex-cardscan-700.html">Cardscan 700 C</a></td>
<td align=center>USB</td>
<td align=center>0x08f0/0x0004</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13456,14 +13456,14 @@ Compeye
<td>Probably rebadged Lexmark X5150. May work with sane-lexmark? See bug #312130</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/dell-a960.html">A960</a></td>
+<td align=center><a href="unsupported/dell-a960.html">A960</a></td>
<td align=center>USB</td>
<td align=center>0x413c/0x5107</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/dell-922.html">922</a></td>
+<td align=center><a href="unsupported/dell-922.html">922</a></td>
<td align=center>USB</td>
<td align=center>0x413c/0x5109</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13486,7 +13486,7 @@ Compeye
<td>Probably unsupported. No details known.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/epson-stylus-dx4450.html">Stylus DX4450</a></td>
+<td align=center><a href="unsupported/epson-stylus-dx4450.html">Stylus DX4450</a></td>
<td align=center>USB</td>
<td align=center>0x04b8/0x083f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13502,7 +13502,7 @@ Compeye
<tr>
<td align=center rowspan=1>
<a href="http://www.bizcardreader.com/">EDT (Electronic Document Technology)</a>
-<td align=center><a href="/unsupported/edt-900c.html">BizCardReader 900C</a></td>
+<td align=center><a href="unsupported/edt-900c.html">BizCardReader 900C</a></td>
<td align=center>USB</td>
<td align=center>0x0a53/0x5001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13536,42 +13536,42 @@ Enhans
<tr>
<td align=center rowspan=6>
<a href="http://www.geniusnet.com.tw/">Genius</a>
-<td align=center><a href="/unsupported/genius-colorpage-cs.html">ColorPage CS</a></td>
+<td align=center><a href="unsupported/genius-colorpage-cs.html">ColorPage CS</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported, see link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/genius-colorpage-slim-1200-usb2.html">ColorPage-Slim 1200 USB2</a></td>
+<td align=center><a href="unsupported/genius-colorpage-slim-1200-usb2.html">ColorPage-Slim 1200 USB2</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2020</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/genius-colorpage-hr6x.html">ColorPage HR6X Slim</a></td>
+<td align=center><a href="unsupported/genius-colorpage-hr6x.html">ColorPage HR6X Slim</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2019</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/genius-colorpage-hr7x.html">ColorPage HR7X</a></td>
+<td align=center><a href="unsupported/genius-colorpage-hr7x.html">ColorPage HR7X</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2018</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/genius-colorpage-hr7xe.html">ColorPage HR7XE</a></td>
+<td align=center><a href="unsupported/genius-colorpage-hr7xe.html">ColorPage HR7XE</a></td>
<td align=center>USB</td>
<td align=center>0x06dc/0x0012</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsuported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/genius-colorpage-hr8.html">ColorPage HR8</a></td>
+<td align=center><a href="unsupported/genius-colorpage-hr8.html">ColorPage HR8</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x201c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13580,7 +13580,7 @@ Enhans
<tr>
<td align=center rowspan=2>
Guillemot
-<td align=center><a href="/unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
+<td align=center><a href="unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13596,7 +13596,7 @@ Guillemot
<tr>
<td align=center rowspan=1>
Hercules
-<td align=center><a href="/unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
+<td align=center><a href="unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13605,7 +13605,7 @@ Hercules
<tr>
<td align=center rowspan=15>
<a href="http://www.hp.com/">Hewlett-Packard</a>
-<td align=center><a href="/unsupported/hp-photo-1000.html">Photo Scanner 1000</a></td>
+<td align=center><a href="unsupported/hp-photo-1000.html">Photo Scanner 1000</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13619,35 +13619,35 @@ Hercules
<td>Probably not supported by SANE. No details known. 10x15 cm. Maybe similar to Photo Scanner 1000?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-photosmart-s20xi.html">Photosmart S20 (C5101A)</a></td>
+<td align=center><a href="unsupported/hp-photosmart-s20xi.html">Photosmart S20 (C5101A)</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-photosmart-s20xi.html">Photosmart S20xi (C7150A)</a></td>
+<td align=center><a href="unsupported/hp-photosmart-s20xi.html">Photosmart S20xi (C7150A)</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-photosmart-5100.html">Photosmart C5100 series</a></td>
+<td align=center><a href="unsupported/hp-photosmart-5100.html">Photosmart C5100 series</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x5811</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-2400c.html">ScanJet 2400c</a></td>
+<td align=center><a href="unsupported/hp-scanjet-2400c.html">ScanJet 2400c</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x0a01</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-photosmart-3180.html">Photosmart C3180</a></td>
+<td align=center><a href="unsupported/hp-photosmart-3180.html">Photosmart C3180</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x5611</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13661,7 +13661,7 @@ Hercules
<td>While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-4600.html">ScanJet 4600</a></td>
+<td align=center><a href="unsupported/hp-scanjet-4600.html">ScanJet 4600</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x3005</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13675,35 +13675,35 @@ Hercules
<td>Not supported. See ScanJet 4600 entry.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-4850.html">ScanJet 4850C</a></td>
+<td align=center><a href="unsupported/hp-scanjet-4850.html">ScanJet 4850C</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1b05</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841, maybe can be added to genesys backend </td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-4850.html">ScanJet 4890C</a></td>
+<td align=center><a href="unsupported/hp-scanjet-4850.html">ScanJet 4890C</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1b05</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843, maybe can be added to genesys backend </td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-5530.html">ScanJet 5530C Photosmart</a></td>
+<td align=center><a href="unsupported/hp-scanjet-5530.html">ScanJet 5530C Photosmart</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1605</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-scanjet-8390.html">ScanJet 8390</a></td>
+<td align=center><a href="unsupported/hp-scanjet-8390.html">ScanJet 8390</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x3805</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/hp-g4000.html">ScanJet G4000</a></td>
+<td align=center><a href="unsupported/hp-g4000.html">ScanJet G4000</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x4505</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13721,7 +13721,7 @@ Hercules
<tr>
<td align=center rowspan=1>
<a href="http://www.iomagic.com/">IOMagic</a>
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">MobileScan USB</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">MobileScan USB</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13730,21 +13730,21 @@ Hercules
<tr>
<td align=center rowspan=3>
<a href="http://irislink.com/">Iris</a>
-<td align=center><a href="/unsupported/iris-iriscan.html">IriScan</a></td>
+<td align=center><a href="unsupported/iris-iriscan.html">IriScan</a></td>
<td align=center>USB</td>
<td align=center>0x0a53/0x1000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. LM9832/3. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/iris-irispen-translator.html">IRISPen Translator Executive</a></td>
+<td align=center><a href="unsupported/iris-irispen-translator.html">IRISPen Translator Executive</a></td>
<td align=center>USB</td>
<td align=center>0x0f43/0x015a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/iris-business.html">IRISCard Pro (IBCR II)</a></td>
+<td align=center><a href="unsupported/iris-business.html">IRISCard Pro (IBCR II)</a></td>
<td align=center>USB</td>
<td align=center>0x0a38/0x0301</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13762,84 +13762,84 @@ Hercules
<tr>
<td align=center rowspan=15>
<a href="http://www.lexmark.com/">Lexmark</a>
-<td align=center><a href="/unsupported/lexmark-p6250.html">P6250</a></td>
+<td align=center><a href="unsupported/lexmark-p6250.html">P6250</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0097</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-3150.html">Photo 3150</a></td>
+<td align=center><a href="unsupported/lexmark-3150.html">Photo 3150</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x007d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x75.html">X74</a></td>
+<td align=center><a href="unsupported/lexmark-x75.html">X74</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0060</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x75.html">X75</a></td>
+<td align=center><a href="unsupported/lexmark-x75.html">X75</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0060</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x75.html">X75 PrinTrio</a></td>
+<td align=center><a href="unsupported/lexmark-x75.html">X75 PrinTrio</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0060</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x83.html">X83</a></td>
+<td align=center><a href="unsupported/lexmark-x83.html">X83</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x003d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. GL640.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x2330.html">X2330</a></td>
+<td align=center><a href="unsupported/lexmark-x2330.html">X2330</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00bb</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x3450.html">X3450</a></td>
+<td align=center><a href="unsupported/lexmark-x3450.html">X3450</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00f6</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x5130.html">X5130</a></td>
+<td align=center><a href="unsupported/lexmark-x5130.html">X5130</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0065</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x5130.html">X5150</a></td>
+<td align=center><a href="unsupported/lexmark-x5130.html">X5150</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0065</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x5250.html">X5250</a></td>
+<td align=center><a href="unsupported/lexmark-x5250.html">X5250</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0093</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x6170.html">X6170</a></td>
+<td align=center><a href="unsupported/lexmark-x6170.html">X6170</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0072</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13853,14 +13853,14 @@ Hercules
<td>Unsupported. See bug #310889 for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x7350.html">X7350</a></td>
+<td align=center><a href="unsupported/lexmark-x7350.html">X7350</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00b8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/lexmark-x8350.html">X8350</a></td>
+<td align=center><a href="unsupported/lexmark-x8350.html">X8350</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00b9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13876,7 +13876,7 @@ Logitech
<td>Most probably unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/logitech-pagescan-usb.html">PageScan USB</a></td>
+<td align=center><a href="unsupported/logitech-pagescan-usb.html">PageScan USB</a></td>
<td align=center>USB</td>
<td align=center>0x046d/0x040f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13885,42 +13885,42 @@ Logitech
<tr>
<td align=center rowspan=10>
<a href="http://www.medion.com/">Medion/Lifetec/Tevion/Cytron</a>
-<td align=center><a href="/unsupported/medion-md6190.html">MD 6190</a></td>
+<td align=center><a href="unsupported/medion-md6190.html">MD 6190</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0392</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/medion-md6190.html">MD 6190</a></td>
+<td align=center><a href="unsupported/medion-md6190.html">MD 6190</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tevion-md40420.html">MD 40420</a></td>
+<td align=center><a href="unsupported/tevion-md40420.html">MD 40420</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/medion-md6190.html">MD 41260</a></td>
+<td align=center><a href="unsupported/medion-md6190.html">MD 41260</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/medion-md6190.html">MD 41985</a></td>
+<td align=center><a href="unsupported/medion-md6190.html">MD 41985</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tevion-md40420.html">MD 42666</a></td>
+<td align=center><a href="unsupported/tevion-md40420.html">MD 42666</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13934,21 +13934,21 @@ Logitech
<td>Fingerprint sensor. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tevion-md90009.html">MD 90009</a></td>
+<td align=center><a href="unsupported/tevion-md90009.html">MD 90009</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tevion-md90070.html">MD 90070</a></td>
+<td align=center><a href="unsupported/tevion-md90070.html">MD 90070</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3022</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tevion-md90070.html">MD 90090</a></td>
+<td align=center><a href="unsupported/tevion-md90070.html">MD 90090</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3022</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13957,28 +13957,28 @@ Logitech
<tr>
<td align=center rowspan=4>
<a href="http://www.memorex.com/">Memorex</a>
-<td align=center><a href="/unsupported/memorex-maxx-6136u.html">6136u</a></td>
+<td align=center><a href="unsupported/memorex-maxx-6136u.html">6136u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0346</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch4400.html">6142u</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4400.html">6142u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Same as Visioneer Onetouch 4400. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">MaxxScan 6122</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">MaxxScan 6122</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/memorex-scf-9612p.html">SCF 9612P</a></td>
+<td align=center><a href="unsupported/memorex-scf-9612p.html">SCF 9612P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -13994,7 +13994,7 @@ Logitech
<td>Unsupported. Same as Agfa DuoScan T2000XL?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-artixscan-2020.html">ArtixScanDI 2020</a></td>
+<td align=center><a href="unsupported/microtek-artixscan-2020.html">ArtixScanDI 2020</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x202e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14015,7 +14015,7 @@ Logitech
<td>Unsupported. Uses ALI M5611B.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-filmscan-35.html">FilmScan 35</a></td>
+<td align=center><a href="unsupported/microtek-filmscan-35.html">FilmScan 35</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14029,91 +14029,91 @@ Logitech
<td>Probably unsupported. Seems to be similar to the Microtek 330 CX and is detected by the microtek2 backend. Scanning doesn't seem to work however.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-1850s.html">Scanmaker 1850S</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-1850s.html">Scanmaker 1850S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-3630.html">ScanMaker 3630</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-3630.html">ScanMaker 3630</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Doesn't seem to be compatible to 3600 series, see link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-3800.html">ScanMaker 3800</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-3800.html">ScanMaker 3800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30ce</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-3830.html">ScanMaker 3830</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-3830.html">ScanMaker 3830</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30ce</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-3880.html">ScanMaker 3860</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-3880.html">ScanMaker 3860</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3023</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details. Appears to be similar to ScanMaker 3880.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-3880.html">ScanMaker 3880</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-3880.html">ScanMaker 3880</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3021</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. SQ113 chip. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-4600.html">ScanMaker 4600</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-4600.html">ScanMaker 4600</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x40c7</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-4700.html">ScanMaker 4700</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-4700.html">ScanMaker 4700</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x20b4</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-4900.html">ScanMaker 4850</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-4900.html">ScanMaker 4850</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-4850-2.html">ScanMaker 4850 II</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-4850-2.html">ScanMaker 4850 II</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-4900.html">ScanMaker 4900</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-4900.html">ScanMaker 4900</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30b9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5600.html">ScanMaker 5</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5600.html">ScanMaker 5</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5600.html">ScanMaker 5600</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5600.html">ScanMaker 5600</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x20a7</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14127,56 +14127,56 @@ Logitech
<td>Unsupported. Uses ALI M5615 like the ScanMaker 4700.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5900.html">ScanMaker 5900</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5900.html">ScanMaker 5900</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-5950.html">ScanMaker 5950</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-5950.html">ScanMaker 5950</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-6000.html">ScanMaker 6000</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-6000.html">ScanMaker 6000</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-6100.html">ScanMaker 6100</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-6100.html">ScanMaker 6100</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-6700.html">ScanMaker 6700</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-6700.html">ScanMaker 6700</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05da/0x20c9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-8700.html">ScanMaker 8700</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-8700.html">ScanMaker 8700</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05da/0x20b1</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14190,35 +14190,35 @@ Logitech
<td>Probably unsupported. SCSI seems to work with microtek2 backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
<td align=center>USB SCSI</td>
<td align=center>0x05da/0x20de</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Partly unsupported. IEEE-1394 works with microtek2 backend. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-i320.html">ScanMaker i320</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-i320.html">ScanMaker i320</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e6</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-s400.html">ScanMaker s400</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-s400.html">ScanMaker s400</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x201c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanmaker-s400.html">ScanMaker S400</a></td>
+<td align=center><a href="unsupported/microtek-scanmaker-s400.html">ScanMaker S400</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x300b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/microtek-scanport-3000.html">ScanPort 3000</a></td>
+<td align=center><a href="unsupported/microtek-scanport-3000.html">ScanPort 3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14227,35 +14227,35 @@ Logitech
<tr>
<td align=center rowspan=6>
<a href="http://www.konicaminolta.com/">Konica Minolta</a>
-<td align=center><a href="/unsupported/minolta-dual-scan-III.html">Dual Scan III</a></td>
+<td align=center><a href="unsupported/minolta-dual-scan-III.html">Dual Scan III</a></td>
<td align=center>USB</td>
<td align=center>0x0686/0x400d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. May work with vuescan. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/minolta-dual-scan-IV.html">Dual Scan IV</a></td>
+<td align=center><a href="unsupported/minolta-dual-scan-IV.html">Dual Scan IV</a></td>
<td align=center>USB</td>
<td align=center>0x132b/0x000a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Works with vuescan. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/minolta-dse-5400.html">DiMAGE Scan Elite 5400</a></td>
+<td align=center><a href="unsupported/minolta-dse-5400.html">DiMAGE Scan Elite 5400</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x0686/0x400e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. May work with vuescan. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/minolta-dse-5400-2.html">DiMAGE Scan Elite 5400 2</a></td>
+<td align=center><a href="unsupported/minolta-dse-5400-2.html">DiMAGE Scan Elite 5400 2</a></td>
<td align=center>USB</td>
<td align=center>0x132b/0x0012</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/minolta-dimage-scan-multi-pro.html">DiMAGE Scan Multi Pro</a></td>
+<td align=center><a href="unsupported/minolta-dimage-scan-multi-pro.html">DiMAGE Scan Multi Pro</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14292,21 +14292,21 @@ Logitech
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/mustek-bearpaw-2448-cu-pro.html">BearPaw 2448 CU Pro</a></td>
+<td align=center><a href="unsupported/mustek-bearpaw-2448-cu-pro.html">BearPaw 2448 CU Pro</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x0408</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/mustek-bearpaw-4800ta-pro.html">BearPaw 4800 TA Pro</a></td>
+<td align=center><a href="unsupported/mustek-bearpaw-4800ta-pro.html">BearPaw 4800 TA Pro</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x1000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for some information.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/mustek-bearpaw-4800ta-pro-ii.html">BearPaw 4800 TA Pro II</a></td>
+<td align=center><a href="unsupported/mustek-bearpaw-4800ta-pro-ii.html">BearPaw 4800 TA Pro II</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x040a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14369,7 +14369,7 @@ Logitech
<td>Probably unsupported. USB business card scanner. Maybe works as USB storage device?</td>
</tr>
<tr>
-<td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html">ScanMagic 9636P</a></td>
+<td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html">ScanMagic 9636P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14378,7 +14378,7 @@ Logitech
<tr>
<td align=center rowspan=1>
<a href="http://www.nevt.co.jp/">NEC</a>
-<td align=center><a href="/unsupported/nec-petiscan.html">Petiscan</a></td>
+<td align=center><a href="unsupported/nec-petiscan.html">Petiscan</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0100</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14387,7 +14387,7 @@ Logitech
<tr>
<td align=center rowspan=1>
<a href="http://www.nikon.com/">Nikon</a>
-<td align=center><a href="/unsupported/nikon-ls9000-ed.html">LS-9000 ED</a></td>
+<td align=center><a href="unsupported/nikon-ls9000-ed.html">LS-9000 ED</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14396,7 +14396,7 @@ Logitech
<tr>
<td align=center rowspan=1>
<a href="http://www.olivetti.com">Olivetti</a>
-<td align=center><a href="/unsupported/olivetti-job-jet-m400.html">Job-Jet M400</a></td>
+<td align=center><a href="unsupported/olivetti-job-jet-m400.html">Job-Jet M400</a></td>
<td align=center>USB</td>
<td align=center>0x0b3c/0xa880</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14405,14 +14405,14 @@ Logitech
<tr>
<td align=center rowspan=2>
<a href="http://www.olympus.com">Olympus</a>
-<td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html">ES-10P</a></td>
+<td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html">ES-10P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/olympus-es10s.html">ES-10S</a></td>
+<td align=center><a href="unsupported/olympus-es10s.html">ES-10S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14567,7 +14567,7 @@ Panasonic
<tr>
<td align=center rowspan=1>
Pentax
-<td align=center><a href="/unsupported/syscan-travelscan-pro.html">DSmobile USB</a></td>
+<td align=center><a href="unsupported/syscan-travelscan-pro.html">DSmobile USB</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x2000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14576,14 +14576,14 @@ Pentax
<tr>
<td align=center rowspan=5>
<a href="http://www.scanace.com/">PIE</a>
-<td align=center><a href="/unsupported/pie-1800u.html">Primefilm 1800u</a></td>
+<td align=center><a href="unsupported/pie-1800u.html">Primefilm 1800u</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html">Primefilm 2700</a></td>
+<td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html">Primefilm 2700</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14597,14 +14597,14 @@ Pentax
<td>Probably not supported. </td>
</tr>
<tr>
-<td align=center><a href="/unsupported/reflecta-digitdia-3600.html">Powerslide 3600</a></td>
+<td align=center><a href="unsupported/reflecta-digitdia-3600.html">Powerslide 3600</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0142</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Film scanner that can scan directly from the magazine.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/pie-pf3650.html">PF3650 Pro3 Film Scanner</a></td>
+<td align=center><a href="unsupported/pie-pf3650.html">PF3650 Pro3 Film Scanner</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0143</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14613,7 +14613,7 @@ Pentax
<tr>
<td align=center rowspan=32>
<a href="http://www.plustek.de/">Plustek</a>
-<td align=center><a href="/unsupported/plustek-opticfilm-7200.html">OpticFilm 7200</a></td>
+<td align=center><a href="unsupported/plustek-opticfilm-7200.html">OpticFilm 7200</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0807</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14641,21 +14641,21 @@ Pentax
<td>Uses RealTek chipset (RTL8801D)</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st12.html">OpticPro S12</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st12.html">OpticPro S12</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st12.html">OpticPro ST12</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st12.html">OpticPro ST12</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st16.html">OpticPro ST16</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st16.html">OpticPro ST16</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14669,98 +14669,98 @@ Pentax
<td>Probably LM983x based.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st24.html">OpticPro S24</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st24.html">OpticPro S24</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st24.html">OpticPro ST24</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st24.html">OpticPro ST24</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-s28.html">OpticPro S28</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-s28.html">OpticPro S28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0801</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-s28.html">OpticPro ST28</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-s28.html">OpticPro ST28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0801</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st28.html">OpticPro ST28</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st28.html">OpticPro ST28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0802</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astrscan-4750.html">Umax AstraScan 4750</a></td>
+<td align=center><a href="unsupported/umax-astrscan-4750.html">Umax AstraScan 4750</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0802</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend, rebadged Plustek ST28</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st48.html">OpticPro ST48</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st48.html">OpticPro ST48</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0800</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st64.html">OpticPro ST64</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st64.html">OpticPro ST64</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c00</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based, maybe to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st64plus.html">OpticPro ST64+</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st64plus.html">OpticPro ST64+</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c03</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-pl806.html">PL 806</a></td>
+<td align=center><a href="unsupported/plustek-pl806.html">PL 806</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c0c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-pl812.html">SmartOffice PL 812</a></td>
+<td align=center><a href="unsupported/plustek-pl812.html">SmartOffice PL 812</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c0d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticslim-500.html">OpticSlim 500</a></td>
+<td align=center><a href="unsupported/plustek-opticslim-500.html">OpticSlim 500</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0458</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticslim-2420.html">OpticSlim 2420</a></td>
+<td align=center><a href="unsupported/plustek-opticslim-2420.html">OpticSlim 2420</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0806</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticslim-2420plus.html">OpticSlim 2420+</a></td>
+<td align=center><a href="unsupported/plustek-opticslim-2420plus.html">OpticSlim 2420+</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0914</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14781,7 +14781,7 @@ Pentax
<td>Business card reader. No further information available.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-scancopy-115.html">ScanCopy 115</a></td>
+<td align=center><a href="unsupported/plustek-scancopy-115.html">ScanCopy 115</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x081c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14846,7 +14846,7 @@ Pentax
<td>Probably not supported. No details known.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/planon-docupen-r700.html">DocuPen R700</a></td>
+<td align=center><a href="unsupported/planon-docupen-r700.html">DocuPen R700</a></td>
<td align=center>USB</td>
<td align=center>0x10c4/0xea60</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14862,7 +14862,7 @@ Pentax
<tr>
<td align=center rowspan=18>
<a href="http://www.primax.nl/">Primax</a>
-<td align=center><a href="/unsupported/primax-colorado-600u.html">Colorado 600U</a></td>
+<td align=center><a href="unsupported/primax-colorado-600u.html">Colorado 600U</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0341</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14883,7 +14883,7 @@ Pentax
<td>Probably unsupported. No details known.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch4400.html">Primascan Colorado 2600u</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4400.html">Primascan Colorado 2600u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14904,7 +14904,7 @@ Pentax
<td>Not supported. However, a stand-alone program is available.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/primax-colorado-usb-9600.html">Colorado USB 9600</a></td>
+<td align=center><a href="unsupported/primax-colorado-usb-9600.html">Colorado USB 9600</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0340</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14981,7 +14981,7 @@ Pentax
<td>Maybe GL646. Maybe similar to Medion MD 6228?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -14990,7 +14990,7 @@ Pentax
<tr>
<td align=center rowspan=2>
<a href="http://www.fida.com/">Prolink</a>
-<td align=center><a href="/unsupported/prolink-2448u.html">Winscan Pro 2448U</a></td>
+<td align=center><a href="unsupported/prolink-2448u.html">Winscan Pro 2448U</a></td>
<td align=center>USB</td>
<td align=center>0x06dc/0x0014</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15022,21 +15022,21 @@ Pentax
<tr>
<td align=center rowspan=3>
Reflecta
-<td align=center><a href="/unsupported/reflecta-digitdia-3600.html">DigitDia 3600</a></td>
+<td align=center><a href="unsupported/reflecta-digitdia-3600.html">DigitDia 3600</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0142</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Film scanner that can scan directly from the magazine.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/reflecta-iscan-1800.html">iScan 1800</a></td>
+<td align=center><a href="unsupported/reflecta-iscan-1800.html">iScan 1800</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/reflecta-proscan-4000.html">ProScan 4000</a></td>
+<td align=center><a href="unsupported/reflecta-proscan-4000.html">ProScan 4000</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0143</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15045,21 +15045,21 @@ Reflecta
<tr>
<td align=center rowspan=4>
Relisys
-<td align=center><a href="/unsupported/relisys-eclipse-1200u.html">Eclipse 1200U</a></td>
+<td align=center><a href="unsupported/relisys-eclipse-1200u.html">Eclipse 1200U</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0103</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/relisys-scorpio-ultra3.html">Scorpio Ultra 3</a></td>
+<td align=center><a href="unsupported/relisys-scorpio-ultra3.html">Scorpio Ultra 3</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0210</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/relisys-episode.html">Episode</a></td>
+<td align=center><a href="unsupported/relisys-episode.html">Episode</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0103</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15075,7 +15075,7 @@ Relisys
<tr>
<td align=center rowspan=1>
Samsung
-<td align=center><a href="/unsupported/samsung-scx-4725.html">SCX-4725FN</a></td>
+<td align=center><a href="unsupported/samsung-scx-4725.html">SCX-4725FN</a></td>
<td align=center>USB</td>
<td align=center>0x04e8/0x341f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15084,7 +15084,7 @@ Samsung
<tr>
<td align=center rowspan=1>
Scanshell
-<td align=center><a href="/unsupported/scanshell-800n.html">800N</a></td>
+<td align=center><a href="unsupported/scanshell-800n.html">800N</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x6605</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15150,14 +15150,14 @@ Spot Technology
<tr>
<td align=center rowspan=2>
Syscan
-<td align=center><a href="/unsupported/syscan-travelscan-fs531.html">TravelScan FS-531</a></td>
+<td align=center><a href="unsupported/syscan-travelscan-fs531.html">TravelScan FS-531</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x0530</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May work with the Plustek backend in future. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/syscan-travelscan-pro.html">TravelScan Pro</a></td>
+<td align=center><a href="unsupported/syscan-travelscan-pro.html">TravelScan Pro</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x2000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15180,7 +15180,7 @@ Tamarack
<td>Unsupported at the moment. See link for a project for that scanner.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/tamarack-artiscan-2400.html">Artiscan 2400FS</a></td>
+<td align=center><a href="unsupported/tamarack-artiscan-2400.html">Artiscan 2400FS</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0100</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15189,7 +15189,7 @@ Tamarack
<tr>
<td align=center rowspan=2>
<a href="http://www.tce.com.br/">TCE</a>
-<td align=center><a href="/unsupported/memorex-maxx-6136u.html">MK600U</a></td>
+<td align=center><a href="unsupported/memorex-maxx-6136u.html">MK600U</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0346</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15205,7 +15205,7 @@ Tamarack
<tr>
<td align=center rowspan=1>
<a href="http://www.tecoimage.com.tw/">Teco</a>
-<td align=center><a href="/unsupported/teco-vm6509.html">VM6509F</a></td>
+<td align=center><a href="unsupported/teco-vm6509.html">VM6509F</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15214,7 +15214,7 @@ Tamarack
<tr>
<td align=center rowspan=1>
Tiny
-<td align=center><a href="/unsupported/visioneer-onetouch4400.html">FU661E</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4400.html">FU661E</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15223,21 +15223,21 @@ Tiny
<tr>
<td align=center rowspan=3>
<a href="http://www.trust-site.com">Trust</a>
-<td align=center><a href="/unsupported/trust-combiscan-19200.html">CombiScan 19200</a></td>
+<td align=center><a href="unsupported/trust-combiscan-19200.html">CombiScan 19200</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html">EasyScan 19200</a></td>
+<td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html">EasyScan 19200</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/trust-scsi-scan-19200.html">SCSI Scan 19200 -Excellence Series-</a></td>
+<td align=center><a href="unsupported/trust-scsi-scan-19200.html">SCSI Scan 19200 -Excellence Series-</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15246,49 +15246,49 @@ Tiny
<tr>
<td align=center rowspan=16>
<a href="http://www.umax.com/">UMAX</a>
-<td align=center><a href="/unsupported/umax-astra-2500.html">Astra 2500</a></td>
+<td align=center><a href="unsupported/umax-astra-2500.html">Astra 2500</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0374</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/plustek-opticpro-st24.html">Astra 2850</a></td>
+<td align=center><a href="unsupported/plustek-opticpro-st24.html">Astra 2850</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-3000.html">Astra 3000</a></td>
+<td align=center><a href="unsupported/umax-astra-3000.html">Astra 3000</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-3600.html">Astra 3600</a></td>
+<td align=center><a href="unsupported/umax-astra-3600.html">Astra 3600</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4000.html">Astra 4000</a></td>
+<td align=center><a href="unsupported/umax-astra-4000.html">Astra 4000</a></td>
<td align=center>USB</td>
<td align=center>0x1606/0x1030</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4100.html">Astra 4100</a></td>
+<td align=center><a href="unsupported/umax-astra-4100.html">Astra 4100</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported, to be added to genesys backend.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4500.html">Astra 4500</a></td>
+<td align=center><a href="unsupported/umax-astra-4500.html">Astra 4500</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a10</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15302,7 +15302,7 @@ Tiny
<td>Probably not supported, no details known.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astra-4700.html">Astra 4700</a></td>
+<td align=center><a href="unsupported/umax-astra-4700.html">Astra 4700</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a20</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15316,21 +15316,21 @@ Tiny
<td>Not supported. No chipset information available. Same as Avision iVina FB2400.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astraslim.html">AstraSlim</a></td>
+<td align=center><a href="unsupported/umax-astraslim.html">AstraSlim</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0104</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported currently. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astraslim-1200.html">AstraSlim 1200</a></td>
+<td align=center><a href="unsupported/umax-astraslim-1200.html">AstraSlim 1200</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0110</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-astraslim-6000.html">AstraSlim 6000</a></td>
+<td align=center><a href="unsupported/umax-astraslim-6000.html">AstraSlim 6000</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0104</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15344,7 +15344,7 @@ Tiny
<td>Probably not supported. No details known..</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/umax-powerlook-180.html">Powerlook 180</a></td>
+<td align=center><a href="unsupported/umax-powerlook-180.html">Powerlook 180</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15360,7 +15360,7 @@ Tiny
<tr>
<td align=center rowspan=1>
Vantas
-<td align=center><a href="/unsupported/visioneer-onetouch4800.html">3000</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4800.html">3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15383,35 +15383,35 @@ Vantas
<td>Not supported. Id is from Primax? Yet another scanner with the same name?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-9420.html">9420</a></td>
+<td align=center><a href="unsupported/visioneer-9420.html">9420</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x03a8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-9450-usb.html">9450 USB</a></td>
+<td align=center><a href="unsupported/visioneer-9450-usb.html">9450 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0421</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch4400.html">Onetouch 4400</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4400.html">Onetouch 4400</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. E5 chipset? See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch4800.html">OneTouch 4800 USB</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4800.html">OneTouch 4800 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch5300.html">OneTouch 5300 USB</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch5300.html">OneTouch 5300 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0226</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15425,98 +15425,98 @@ Vantas
<td>Not supported. Yet another scanner with this name?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch5800.html">OneTouch 5800 USB</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch5800.html">OneTouch 5800 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0226</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch6600.html">OneTouch 6600</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch6600.html">OneTouch 6600</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch7100.html">Onetouch 7100</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch7100.html">Onetouch 7100</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0229</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch7700.html">Onetouch 7700</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch7700.html">Onetouch 7700</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0380</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>LM9832/3 based, to be added to plustek backend</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8100.html">OneTouch 8100</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8100.html">OneTouch 8100</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0321</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8700</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8700</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8900</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8900</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Same as 8920 but without TA?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch9020.html">Onetouch 9000</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch9020.html">Onetouch 9000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch9020.html">Onetouch 9020</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch9020.html">Onetouch 9020</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch9320.html">Onetouch 9320</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch9320.html">Onetouch 9320</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0362</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8820.html">Onetouch Pro 8800</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8820.html">Onetouch Pro 8800</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0410</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch8820.html">Onetouch Pro 8820</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch8820.html">Onetouch Pro 8820</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0410</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-paperport-3100b.html">PaperPort 3100b</a></td>
+<td align=center><a href="unsupported/visioneer-paperport-3100b.html">PaperPort 3100b</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15530,98 +15530,98 @@ Vantas
<td>Most probably not supported. More details would be appreciated.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-paperport-onetouch.html">PaperPort OneTouch</a></td>
+<td align=center><a href="unsupported/visioneer-paperport-onetouch.html">PaperPort OneTouch</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-strobe-pro-usb.html">Strobe Pro USB</a></td>
+<td align=center><a href="unsupported/visioneer-strobe-pro-usb.html">Strobe Pro USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-4800-onetouch.html">4800 One Touch</a></td>
+<td align=center><a href="unsupported/xerox-4800-onetouch.html">4800 One Touch</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x03a0</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details. Different id compared to One Touch 4800?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-docuimage-620s.html">DocuImage 620S</a></td>
+<td align=center><a href="unsupported/xerox-docuimage-620s.html">DocuImage 620S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-documate-510.html">DocuMate 510</a></td>
+<td align=center><a href="unsupported/xerox-documate-510.html">DocuMate 510</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0446</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-documate-510.html">DocuMate 510</a></td>
+<td align=center><a href="unsupported/xerox-documate-510.html">DocuMate 510</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x047c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details. Yet another USB id.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/visioneer-onetouch4800.html">One Touch 4800</a></td>
+<td align=center><a href="unsupported/visioneer-onetouch4800.html">One Touch 4800</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details. Different id compared to 4800 One Touch?</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-470cx.html">WorkCentre 470cx</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-470cx.html">WorkCentre 470cx</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-m15i.html">WorkCentre M15i</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-m15i.html">WorkCentre M15i</a></td>
<td align=center>USB</td>
<td align=center>0x0924/0xffef</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-xk35c.html">WorkCentre XK35c</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-xk35c.html">WorkCentre XK35c</a></td>
<td align=center>USB Parport</td>
<td align=center>0x043d/0x0020</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-xk50cx.html">WorkCentre XK50cx</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-xk50cx.html">WorkCentre XK50cx</a></td>
<td align=center>USB</td>
<td align=center>0x04e8/0x3903</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-pro412.html">WorkCentre Pro 412</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-pro412.html">WorkCentre Pro 412</a></td>
<td align=center>USB Parport</td>
<td align=center>0x043d/0x4303</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-pe16.html">WorkCentre PE16</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-pe16.html">WorkCentre PE16</a></td>
<td align=center>USB Parport</td>
<td align=center>0x0924/0x4220</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
</tr>
<tr>
-<td align=center><a href="/unsupported/xerox-workcentre-pe120i.html">WorkCentre PE120i</a></td>
+<td align=center><a href="unsupported/xerox-workcentre-pe120i.html">WorkCentre PE120i</a></td>
<td align=center>USB</td>
<td align=center>0x0924/0x4237</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -15632,7 +15632,7 @@ Vantas
(1.0-13)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a><br>
+<b>Manual page:</b> <a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16120,18 +16120,18 @@ Vantas
</tr>
</table>
<h2><a name="STILL">Still Cameras</a></h2>
-<p><b>Backends</b>:
-<a href="#C-DC25">dc25</a>,
-<a href="#C-DC210">dc210</a>,
-<a href="#C-DC240">dc240</a>,
+<p><b>Backends</b>:
+<a href="#C-DC25">dc25</a>,
+<a href="#C-DC210">dc210</a>,
+<a href="#C-DC240">dc240</a>,
<a href="#C-DMC">dmc</a></p>
<h3><a name="C-DC25">Backend: dc25
(1.2)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:peter@fales-lorenz.net">mailto:peter@fales-lorenz.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dc25.5.html">sane-dc25</a><br>
+<b>Manual page:</b> <a href="man/sane-dc25.5.html">sane-dc25</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16163,9 +16163,9 @@ Vantas
(0.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:peter@fales-lorenz.net">mailto:peter@fales-lorenz.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dc210.5.html">sane-dc210</a><br>
+<b>Manual page:</b> <a href="man/sane-dc210.5.html">sane-dc210</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16190,9 +16190,9 @@ Vantas
(0.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:peter@fales-lorenz.net">mailto:peter@fales-lorenz.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dc240.5.html">sane-dc240</a><br>
+<b>Manual page:</b> <a href="man/sane-dc240.5.html">sane-dc240</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16217,7 +16217,7 @@ Vantas
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dmc.5.html">sane-dmc</a><br>
+<b>Manual page:</b> <a href="man/sane-dmc.5.html">sane-dmc</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16239,15 +16239,15 @@ Vantas
</tr>
</table>
<h2><a name="VIDEO">Video Cameras</a></h2>
-<p><b>Backends</b>:
-<a href="#V-QCAM">qcam</a>,
-<a href="#V-STV680">stv680</a>,
+<p><b>Backends</b>:
+<a href="#V-QCAM">qcam</a>,
+<a href="#V-STV680">stv680</a>,
<a href="#V-UNSUPPORTED">unsupported</a></p>
<h3><a name="V-QCAM">Backend: qcam
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-qcam.5.html">sane-qcam</a><br>
+<b>Manual page:</b> <a href="man/sane-qcam.5.html">sane-qcam</a><br>
</p>
<table border=1>
<tr bgcolor=E0E0FF>
@@ -16279,9 +16279,9 @@ Connectix
(1.0-1)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://gkall.hobby.nl/stv680-aiptek.html">http://gkall.hobby.nl/stv680-aiptek.html</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-stv680.5.html">sane-stv680</a><br>
+<b>Manual page:</b> <a href="man/sane-stv680.5.html">sane-stv680</a><br>
<b>Comment:</b> This vidcam backend is for the stv0680 chipset, See the website for more info.<br>
</p>
<table border=1>
@@ -16334,8 +16334,8 @@ Connectix
(2010-06-09)
</a></h3>
<p>
-<b>Link(s):</b>
-<a href="/contrib.html">/contrib.html</a><br>
+<b>Link(s):</b>
+<a href="contrib.html">contrib.html</a><br>
<b>Comment:</b> The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs.<br>
</p>
<table border=1>
@@ -16350,7 +16350,7 @@ Connectix
<tr>
<td align=center rowspan=1>
Biolux
-<td align=center><a href="/unsupported/biolux-654.html">654 (micrOcular)</a></td>
+<td align=center><a href="unsupported/biolux-654.html">654 (micrOcular)</a></td>
<td align=center>USB</td>
<td align=center>0x0923/0x010f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -16359,7 +16359,7 @@ Biolux
<tr>
<td align=center rowspan=1>
Grandtek Scopecam
-<td align=center><a href="/unsupported/grandtech-scopecam.html">8x30 Binocular & Digital Camera</a></td>
+<td align=center><a href="unsupported/grandtech-scopecam.html">8x30 Binocular & Digital Camera</a></td>
<td align=center>USB</td>
<td align=center>0x0797/0x801c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
@@ -16367,19 +16367,19 @@ Grandtek Scopecam
</tr>
</table>
<h2><a name="API">APIs</a></h2>
-<p><b>Backends</b>:
-<a href="#A-GPHOTO2">gphoto2</a>,
-<a href="#A-PINT">pint</a>,
-<a href="#A-PNM">pnm</a>,
-<a href="#A-TEST">test</a>,
+<p><b>Backends</b>:
+<a href="#A-GPHOTO2">gphoto2</a>,
+<a href="#A-PINT">pint</a>,
+<a href="#A-PNM">pnm</a>,
+<a href="#A-TEST">test</a>,
<a href="#A-V4L">v4l</a></p>
<h3><a name="A-GPHOTO2">Backend: gphoto2
(0.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:peter@fales-lorenz.net">mailto:peter@fales-lorenz.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-gphoto2.5.html">sane-gphoto2</a><br>
+<b>Manual page:</b> <a href="man/sane-gphoto2.5.html">sane-gphoto2</a><br>
<b>Description:</b> <a href="http://www.gphoto.org">Multiple cameras supported by the gphoto2 libraries</a><br>
<b>Comment:</b> The long-term plan is to support all the cameras supported by the gphoto2 libraries (currently over 140 models). However, at this stage, only a handful of cameras are definitely known to work with SANE. Other cameras will probably work if the native file format is EXIF or JPEG. Testers welcome!<br>
</p>
@@ -16387,7 +16387,7 @@ Grandtek Scopecam
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pint.5.html">sane-pint</a><br>
+<b>Manual page:</b> <a href="man/sane-pint.5.html">sane-pint</a><br>
<b>Description:</b> Scanners with the machine-independent PINT interface<br>
<b>Comment:</b> Haven't been tested for a long time. Handle with care.<br>
</p>
@@ -16395,9 +16395,9 @@ Grandtek Scopecam
(1.0.8)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pnm.5.html">sane-pnm</a><br>
+<b>Manual page:</b> <a href="man/sane-pnm.5.html">sane-pnm</a><br>
<b>Description:</b> Reads PNM files<br>
<b>Comment:</b> Used for debugging frontends. Obsolete, use test backend instead.<br>
</p>
@@ -16405,9 +16405,9 @@ Grandtek Scopecam
(1.0-28)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/test-backend/">http://www.meier-geinitz.de/sane/test-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-test.5.html">sane-test</a><br>
+<b>Manual page:</b> <a href="man/sane-test.5.html">sane-test</a><br>
<b>Description:</b> Frontend-tester<br>
<b>Comment:</b> Backend for testing frontends. Also serves as example for SANE backend options.<br>
</p>
@@ -16415,32 +16415,32 @@ Grandtek Scopecam
(1.0-3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-v4l.5.html">sane-v4l</a><br>
+<b>Manual page:</b> <a href="man/sane-v4l.5.html">sane-v4l</a><br>
<b>Description:</b> Interface to Video For Linux API<br>
<b>Comment:</b> Supports video cameras and other devices accessed by the v4l kernel API, e.g. bttv devices. Quite a lot of known bugs.<br>
</p>
<h2><a name="META">Meta Backends</a></h2>
-<p><b>Backends</b>:
-<a href="#M-DLL">dll</a>,
+<p><b>Backends</b>:
+<a href="#M-DLL">dll</a>,
<a href="#M-NET">net</a></p>
<h3><a name="M-DLL">Backend: dll
(1.0.13)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dll.5.html">sane-dll</a><br>
+<b>Manual page:</b> <a href="man/sane-dll.5.html">sane-dll</a><br>
<b>Description:</b> Dynamic loading of shared-library backends.<br>
</p>
<h3><a name="M-NET">Backend: net
(1.0.14)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.penguin-breeder.org/?page=sane-net">http://www.penguin-breeder.org/?page=sane-net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-net.5.html">sane-net</a><br>
+<b>Manual page:</b> <a href="man/sane-net.5.html">sane-net</a><br>
<b>Description:</b> Network access to saned servers<br>
<b>Comment:</b> Can be used to access any scanner supported by SANE over the net. Supports IPv4 and IPv6.<br>
</p>
@@ -16451,8 +16451,8 @@ Grandtek Scopecam
Version of backend/driver; newer versions may be
available from their home sites.<br> <font color="#F00000">NEW!</font> means brand-new to the
current release of SANE.<br>
- UNMAINTAINED means that nobody maintains that backend. Expect no
- new features or newly supported devices. You are welcome to take over
+ UNMAINTAINED means that nobody maintains that backend. Expect no
+ new features or newly supported devices. You are welcome to take over
maintainership.
</dd>
<dt><b>Link(s):</b></dt>
@@ -16472,27 +16472,27 @@ Grandtek Scopecam
<dt><b>USB id:</b></dt>
<dd>The USB vendor and product ids as printed by sane-find-scanner -q (only applicable for USB devices).</dd>
<dt><b>Status</b>:</dt>
- <dd>Indicates how many of the features the device provides
+ <dd>Indicates how many of the features the device provides
are supported by SANE.
<ul><li><font color="#F00000">unsupported</font> means the device is not supported at least by this backend. It may be supported by other backends, however.
<li><font color="#0000B0">untested</font> means the device may be supported but couldn't be tested. Be very careful and report success/failure.
<li><font color="#B00000">minimal</font> means that the
- device is detected and scans at least in one mode. But the quality
+ device is detected and scans at least in one mode. But the quality
is bad or important features won't work.
- <li><font color="#FF9000">basic</font> means it works at
+ <li><font color="#FF9000">basic</font> means it works at
least in the most important modes but quality is not perfect.
- <li><font color="#90B000">good</font> means the device is usable
+ <li><font color="#90B000">good</font> means the device is usable
for day-to-day work. Some rather exotic features may be missing.
- <li><font color="#007000">complete</font> means the backends
+ <li><font color="#007000">complete</font> means the backends
supports everything the device can do.
</ul></dd>
<dt><b>Description</b>:</dt>
<dd>The scope of application of the backend.
</dl></blockquote>
<hr>
-<a href="http://www.sane-project.org/">SANE homepage</a>
+<a href="./">SANE homepage</a>
<address>
-<a href="http://www.sane-project.org/imprint.html"
+<a href="imprint.html"
>Contact</a>
</address>
<font size=-1>
diff --git a/testsuite/tools/data/html-mfgs.ref b/testsuite/tools/data/html-mfgs.ref
index 5e53ee3..f82b30c 100644
--- a/testsuite/tools/data/html-mfgs.ref
+++ b/testsuite/tools/data/html-mfgs.ref
@@ -5,7 +5,7 @@
</head>
<body bgcolor=FFFFFF>
<div align=center>
-<img src="http://www.sane-project.org/images/sane.png" alt="SANE">
+<img src="images/sane.png" alt="SANE">
<h1>SANE: Supported Devices</h1>
</div>
<hr>
@@ -15,8 +15,8 @@ Please consult the manpages and the author-supplied webpages
for more detailed (and usually important) information
concerning each backend.</p>
<p>If you have new information or corrections, please file a
-<a href="http://www.sane-project.org/bugs.html">bug report</a>
-with as many details as possible. Also please tell us if your scanner
+<a href="bugs.html">bug report</a>
+with as many details as possible. Also please tell us if your scanner
isn't mentioned in this list at all.</p>
<p>For an explanation of the tables, see the
<a href="#legend">legend</a>.
@@ -84,125 +84,125 @@ isn't mentioned in this list at all.</p>
</tr>
</table>
<h2><a name="SCANNERS">Scanners</a></h2>
-<p><b>Manufacturers</b>:
-<a href="#Z-ABATON">Abaton</a>,
-<a href="#Z-ACER-PERIPHERALS">Acer Peripherals</a>,
-<a href="#Z-ACROSS-TECHNOLOGIES">Across Technologies</a>,
-<a href="#Z-ACTOWN">Actown</a>,
-<a href="#Z-ADLIB">Adlib</a>,
-<a href="#Z-ADVENT">Advent</a>,
-<a href="#Z-AGFA">AGFA</a>,
-<a href="#Z-AMBIR">Ambir</a>,
-<a href="#Z-APPLE">Apple</a>,
-<a href="#Z-ARIES">Aries</a>,
-<a href="#Z-ARTEC-ULTIMA">Artec/Ultima</a>,
-<a href="#Z-AVIGRAMM">Avigramm</a>,
-<a href="#Z-AVISION">Avision</a>,
-<a href="#Z-BELL-AND-HOWELL">Bell and Howell</a>,
-<a href="#Z-BELL-HOWELL">Bell+Howell</a>,
-<a href="#Z-BENQ">BenQ</a>,
-<a href="#Z-BENQ--ACER-">Benq (Acer)</a>,
-<a href="#Z-BLACKWIDOW">BlackWidow</a>,
-<a href="#Z-BOEDER">Boeder</a>,
-<a href="#Z-BRIGHTSCAN">BrightScan</a>,
-<a href="#Z-BROTHER">Brother</a>,
-<a href="#Z-C-CHANNEL">C-Channel</a>,
-<a href="#Z-CANON">Canon</a>,
-<a href="#Z-CHINON">Chinon</a>,
-<a href="#Z-COMPAQ">Compaq</a>,
-<a href="#Z-COMPEYE">Compeye</a>,
-<a href="#Z-COREX">Corex</a>,
-<a href="#Z-CYBERCOM">Cybercom</a>,
-<a href="#Z-DCT">DCT</a>,
-<a href="#Z-DELL">Dell</a>,
-<a href="#Z-DEVCOM">Devcom</a>,
-<a href="#Z-DEXTRA">Dextra</a>,
-<a href="#Z-DEXXA">Dexxa</a>,
-<a href="#Z-E-LUX">E-Lux</a>,
-<a href="#Z-EDGE">EDGE</a>,
-<a href="#Z-EDT--ELECTRONIC-DOCUMENT-TECHNOLOGY-">EDT (Electronic Document Technology)</a>,
-<a href="#Z-ENHANS">Enhans</a>,
-<a href="#Z-EPSON">Epson</a>,
-<a href="#Z-ESCOM">Escom</a>,
-<a href="#Z-ESCORT">Escort</a>,
-<a href="#Z-FUJITSU">Fujitsu</a>,
-<a href="#Z-GALLERY">Gallery</a>,
-<a href="#Z-GENIUS">Genius</a>,
-<a href="#Z-GOOGLEGEAR">Googlegear</a>,
-<a href="#Z-GUILLEMOT">Guillemot</a>,
-<a href="#Z-GUILLEMOT---HERCULES">Guillemot / Hercules</a>,
-<a href="#Z-HERCULES">Hercules</a>,
-<a href="#Z-HEWLETT-PACKARD">Hewlett-Packard</a>,
-<a href="#Z-IBM">IBM</a>,
-<a href="#Z-IOMAGIC">IOMagic</a>,
-<a href="#Z-IRIS">Iris</a>,
-<a href="#Z-IVINA">iVina</a>,
-<a href="#Z-KODAK">Kodak</a>,
-<a href="#Z-KOMODO">Komodo</a>,
-<a href="#Z-KONICA-MINOLTA">KONICA MINOLTA</a>,
-<a href="#Z-KYOCERA">Kyocera</a>,
-<a href="#Z-LEO">LEO</a>,
-<a href="#Z-LEXMARK">Lexmark</a>,
-<a href="#Z-LINOTYPE-HELL">Linotype Hell</a>,
-<a href="#Z-LOGITECH">Logitech</a>,
-<a href="#Z-MEDION-LIFETEC-TEVION-CYTRON">Medion/Lifetec/Tevion/Cytron</a>,
-<a href="#Z-MEMOREX">Memorex</a>,
-<a href="#Z-MICROMAXX">Micromaxx</a>,
-<a href="#Z-MICROSTAR">Microstar</a>,
-<a href="#Z-MICROTEK">Microtek</a>,
-<a href="#Z-MINOLTA">Minolta</a>,
-<a href="#Z-MINOLTA-QMS">Minolta-QMS</a>,
-<a href="#Z-MITSUBISHI">Mitsubishi</a>,
-<a href="#Z-MUSTEK">Mustek</a>,
-<a href="#Z-NEATRECEIPTS">NeatReceipts</a>,
-<a href="#Z-NEC">NEC</a>,
-<a href="#Z-NETWORK">Network</a>,
-<a href="#Z-NIKON">Nikon</a>,
-<a href="#Z-NORTEK">Nortek</a>,
-<a href="#Z-OKI">OKI</a>,
-<a href="#Z-OLIVETTI">Olivetti</a>,
-<a href="#Z-OLYMPUS">Olympus</a>,
-<a href="#Z-OPTOELECTRONICS">Optoelectronics</a>,
-<a href="#Z-OPTROX">Optrox</a>,
-<a href="#Z-PACKARD-BELL">Packard Bell</a>,
-<a href="#Z-PANASONIC">Panasonic</a>,
-<a href="#Z-PENTAX">Pentax</a>,
-<a href="#Z-PIE">PIE</a>,
-<a href="#Z-PIOTECH">PIOTECH</a>,
-<a href="#Z-PLANON">PLANon</a>,
-<a href="#Z-PLUSTEK">Plustek</a>,
-<a href="#Z-PORTABLE-PERIPHERAL-CO---LTD-">Portable Peripheral Co., Ltd.</a>,
-<a href="#Z-PRIMAX">Primax</a>,
-<a href="#Z-PROLINK">Prolink</a>,
-<a href="#Z-QUATO">Quato</a>,
-<a href="#Z-REFLECTA">Reflecta</a>,
-<a href="#Z-RELISYS">Relisys</a>,
-<a href="#Z-REVSCAN">RevScan</a>,
-<a href="#Z-RICOH">Ricoh</a>,
-<a href="#Z-SAMSUNG">Samsung</a>,
-<a href="#Z-SCANPORT">Scanport</a>,
-<a href="#Z-SCANSHELL">Scanshell</a>,
-<a href="#Z-SCEPTRE">Sceptre</a>,
-<a href="#Z-SHARP">Sharp</a>,
-<a href="#Z-SICOS">Sicos</a>,
-<a href="#Z-SIEMENS">Siemens</a>,
-<a href="#Z-SMARTDISK">SmartDisk</a>,
-<a href="#Z-SPOT-TECHNOLOGY">Spot Technology</a>,
-<a href="#Z-SYSCAN">Syscan</a>,
-<a href="#Z-TAMARACK">Tamarack</a>,
-<a href="#Z-TARGA">Targa</a>,
-<a href="#Z-TCE">TCE</a>,
-<a href="#Z-TECO">Teco</a>,
-<a href="#Z-TINY">Tiny</a>,
-<a href="#Z-TRIGEM">TriGem</a>,
-<a href="#Z-TRUST">Trust</a>,
-<a href="#Z-UMAX">UMAX</a>,
-<a href="#Z-VANTAS">Vantas</a>,
-<a href="#Z-VISIONEER">Visioneer</a>,
-<a href="#Z-VIVISCAN">Viviscan</a>,
-<a href="#Z-VOBIS">Vobis</a>,
-<a href="#Z-VUEGO">Vuego</a>,
-<a href="#Z-XEROX">Xerox</a>,
+<p><b>Manufacturers</b>:
+<a href="#Z-ABATON">Abaton</a>,
+<a href="#Z-ACER-PERIPHERALS">Acer Peripherals</a>,
+<a href="#Z-ACROSS-TECHNOLOGIES">Across Technologies</a>,
+<a href="#Z-ACTOWN">Actown</a>,
+<a href="#Z-ADLIB">Adlib</a>,
+<a href="#Z-ADVENT">Advent</a>,
+<a href="#Z-AGFA">AGFA</a>,
+<a href="#Z-AMBIR">Ambir</a>,
+<a href="#Z-APPLE">Apple</a>,
+<a href="#Z-ARIES">Aries</a>,
+<a href="#Z-ARTEC-ULTIMA">Artec/Ultima</a>,
+<a href="#Z-AVIGRAMM">Avigramm</a>,
+<a href="#Z-AVISION">Avision</a>,
+<a href="#Z-BELL-AND-HOWELL">Bell and Howell</a>,
+<a href="#Z-BELL-HOWELL">Bell+Howell</a>,
+<a href="#Z-BENQ">BenQ</a>,
+<a href="#Z-BENQ--ACER-">Benq (Acer)</a>,
+<a href="#Z-BLACKWIDOW">BlackWidow</a>,
+<a href="#Z-BOEDER">Boeder</a>,
+<a href="#Z-BRIGHTSCAN">BrightScan</a>,
+<a href="#Z-BROTHER">Brother</a>,
+<a href="#Z-C-CHANNEL">C-Channel</a>,
+<a href="#Z-CANON">Canon</a>,
+<a href="#Z-CHINON">Chinon</a>,
+<a href="#Z-COMPAQ">Compaq</a>,
+<a href="#Z-COMPEYE">Compeye</a>,
+<a href="#Z-COREX">Corex</a>,
+<a href="#Z-CYBERCOM">Cybercom</a>,
+<a href="#Z-DCT">DCT</a>,
+<a href="#Z-DELL">Dell</a>,
+<a href="#Z-DEVCOM">Devcom</a>,
+<a href="#Z-DEXTRA">Dextra</a>,
+<a href="#Z-DEXXA">Dexxa</a>,
+<a href="#Z-E-LUX">E-Lux</a>,
+<a href="#Z-EDGE">EDGE</a>,
+<a href="#Z-EDT--ELECTRONIC-DOCUMENT-TECHNOLOGY-">EDT (Electronic Document Technology)</a>,
+<a href="#Z-ENHANS">Enhans</a>,
+<a href="#Z-EPSON">Epson</a>,
+<a href="#Z-ESCOM">Escom</a>,
+<a href="#Z-ESCORT">Escort</a>,
+<a href="#Z-FUJITSU">Fujitsu</a>,
+<a href="#Z-GALLERY">Gallery</a>,
+<a href="#Z-GENIUS">Genius</a>,
+<a href="#Z-GOOGLEGEAR">Googlegear</a>,
+<a href="#Z-GUILLEMOT">Guillemot</a>,
+<a href="#Z-GUILLEMOT---HERCULES">Guillemot / Hercules</a>,
+<a href="#Z-HERCULES">Hercules</a>,
+<a href="#Z-HEWLETT-PACKARD">Hewlett-Packard</a>,
+<a href="#Z-IBM">IBM</a>,
+<a href="#Z-IOMAGIC">IOMagic</a>,
+<a href="#Z-IRIS">Iris</a>,
+<a href="#Z-IVINA">iVina</a>,
+<a href="#Z-KODAK">Kodak</a>,
+<a href="#Z-KOMODO">Komodo</a>,
+<a href="#Z-KONICA-MINOLTA">KONICA MINOLTA</a>,
+<a href="#Z-KYOCERA">Kyocera</a>,
+<a href="#Z-LEO">LEO</a>,
+<a href="#Z-LEXMARK">Lexmark</a>,
+<a href="#Z-LINOTYPE-HELL">Linotype Hell</a>,
+<a href="#Z-LOGITECH">Logitech</a>,
+<a href="#Z-MEDION-LIFETEC-TEVION-CYTRON">Medion/Lifetec/Tevion/Cytron</a>,
+<a href="#Z-MEMOREX">Memorex</a>,
+<a href="#Z-MICROMAXX">Micromaxx</a>,
+<a href="#Z-MICROSTAR">Microstar</a>,
+<a href="#Z-MICROTEK">Microtek</a>,
+<a href="#Z-MINOLTA">Minolta</a>,
+<a href="#Z-MINOLTA-QMS">Minolta-QMS</a>,
+<a href="#Z-MITSUBISHI">Mitsubishi</a>,
+<a href="#Z-MUSTEK">Mustek</a>,
+<a href="#Z-NEATRECEIPTS">NeatReceipts</a>,
+<a href="#Z-NEC">NEC</a>,
+<a href="#Z-NETWORK">Network</a>,
+<a href="#Z-NIKON">Nikon</a>,
+<a href="#Z-NORTEK">Nortek</a>,
+<a href="#Z-OKI">OKI</a>,
+<a href="#Z-OLIVETTI">Olivetti</a>,
+<a href="#Z-OLYMPUS">Olympus</a>,
+<a href="#Z-OPTOELECTRONICS">Optoelectronics</a>,
+<a href="#Z-OPTROX">Optrox</a>,
+<a href="#Z-PACKARD-BELL">Packard Bell</a>,
+<a href="#Z-PANASONIC">Panasonic</a>,
+<a href="#Z-PENTAX">Pentax</a>,
+<a href="#Z-PIE">PIE</a>,
+<a href="#Z-PIOTECH">PIOTECH</a>,
+<a href="#Z-PLANON">PLANon</a>,
+<a href="#Z-PLUSTEK">Plustek</a>,
+<a href="#Z-PORTABLE-PERIPHERAL-CO---LTD-">Portable Peripheral Co., Ltd.</a>,
+<a href="#Z-PRIMAX">Primax</a>,
+<a href="#Z-PROLINK">Prolink</a>,
+<a href="#Z-QUATO">Quato</a>,
+<a href="#Z-REFLECTA">Reflecta</a>,
+<a href="#Z-RELISYS">Relisys</a>,
+<a href="#Z-REVSCAN">RevScan</a>,
+<a href="#Z-RICOH">Ricoh</a>,
+<a href="#Z-SAMSUNG">Samsung</a>,
+<a href="#Z-SCANPORT">Scanport</a>,
+<a href="#Z-SCANSHELL">Scanshell</a>,
+<a href="#Z-SCEPTRE">Sceptre</a>,
+<a href="#Z-SHARP">Sharp</a>,
+<a href="#Z-SICOS">Sicos</a>,
+<a href="#Z-SIEMENS">Siemens</a>,
+<a href="#Z-SMARTDISK">SmartDisk</a>,
+<a href="#Z-SPOT-TECHNOLOGY">Spot Technology</a>,
+<a href="#Z-SYSCAN">Syscan</a>,
+<a href="#Z-TAMARACK">Tamarack</a>,
+<a href="#Z-TARGA">Targa</a>,
+<a href="#Z-TCE">TCE</a>,
+<a href="#Z-TECO">Teco</a>,
+<a href="#Z-TINY">Tiny</a>,
+<a href="#Z-TRIGEM">TriGem</a>,
+<a href="#Z-TRUST">Trust</a>,
+<a href="#Z-UMAX">UMAX</a>,
+<a href="#Z-VANTAS">Vantas</a>,
+<a href="#Z-VISIONEER">Visioneer</a>,
+<a href="#Z-VIVISCAN">Viviscan</a>,
+<a href="#Z-VOBIS">Vobis</a>,
+<a href="#Z-VUEGO">Vuego</a>,
+<a href="#Z-XEROX">Xerox</a>,
<a href="#Z-YAKUMO">Yakumo</a></p>
<h3><a name="Z-ABATON">Manufacturer: Abaton</a></h3>
<p>
@@ -225,7 +225,7 @@ isn't mentioned in this list at all.</p>
<td align=center>
abaton<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-abaton.5.html">sane-abaton</a></td>
+<td align=center><a href="man/sane-abaton.5.html">sane-abaton</a></td>
</tr>
<tr><td align=center>Scan 300/S</td>
<td align=center>SCSI</td>
@@ -235,7 +235,7 @@ abaton<br>(unmaintained)
<td align=center>
abaton<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-abaton.5.html">sane-abaton</a></td>
+<td align=center><a href="man/sane-abaton.5.html">sane-abaton</a></td>
</tr>
</table>
<h3><a name="Z-ACER-PERIPHERALS">Manufacturer: Acer Peripherals</a></h3>
@@ -264,7 +264,7 @@ abaton<br>(unmaintained)
<a href="http://www.zago.net/sane/#leo">leo</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-leo.5.html">sane-leo</a></td>
+<td align=center><a href="man/sane-leo.5.html">sane-leo</a></td>
</tr>
</table>
<h3><a name="Z-ACTOWN">Manufacturer: Actown</a></h3>
@@ -289,7 +289,7 @@ abaton<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
</table>
<h3><a name="Z-ADLIB">Manufacturer: Adlib</a></h3>
@@ -314,7 +314,7 @@ abaton<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>JetScan636PRO</td>
<td align=center>SCSI</td>
@@ -325,12 +325,12 @@ abaton<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
</table>
<h3><a name="Z-ADVENT">Manufacturer: Advent</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.adventcomputers.co.uk">http://www.adventcomputers.co.uk</a><br>
</p>
<table border=1>
@@ -352,12 +352,12 @@ abaton<br>(unmaintained)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
</table>
<h3><a name="Z-AGFA">Manufacturer: AGFA</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.agfa.com/">http://www.agfa.com/</a>, <a href="http://www.agfa.com">http://www.agfa.com</a><br>
</p>
<table border=1>
@@ -379,7 +379,7 @@ abaton<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Arcus II</td>
<td align=center>SCSI</td>
@@ -390,7 +390,7 @@ abaton<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>DuoScan</td>
<td align=center>SCSI</td>
@@ -401,26 +401,26 @@ abaton<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/agfa-duoscan-f40.html">DuoScan f40</a></td>
+<tr><td align=center><a href="unsupported/agfa-duoscan-f40.html">DuoScan f40</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x06bd/0x02bf</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/agfa-duoscan-t2000xl.html">DuoScan T2000XL</a></td>
+<tr><td align=center><a href="unsupported/agfa-duoscan-t2000xl.html">DuoScan T2000XL</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Same as Microtek ArtixScan 2020?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -431,7 +431,7 @@ abaton<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Same as Microtek Artixscan 2500f</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -444,7 +444,7 @@ abaton<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>Focus Color Plus</td>
<td align=center>SCSI</td>
@@ -454,7 +454,7 @@ agfafocus<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>Focus GS Scanner</td>
<td align=center>SCSI</td>
@@ -464,7 +464,7 @@ agfafocus<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>Focus II</td>
<td align=center>SCSI</td>
@@ -474,7 +474,7 @@ agfafocus<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>Focus Lineart Scanner</td>
<td align=center>SCSI</td>
@@ -484,7 +484,7 @@ agfafocus<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>SnapScan</td>
<td align=center>SCSI</td>
@@ -495,7 +495,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan 300</td>
<td align=center>SCSI</td>
@@ -506,7 +506,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan 310</td>
<td align=center>SCSI</td>
@@ -517,15 +517,15 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">SnapScan 310P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">SnapScan 310P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -539,26 +539,26 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">SnapScan 1200P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">SnapScan 1200P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">SnapScan 1212P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">SnapScan 1212P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -572,7 +572,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan 1212U_2</td>
<td align=center>USB</td>
@@ -583,7 +583,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan 1236s</td>
<td align=center>SCSI</td>
@@ -594,7 +594,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan 1236u</td>
<td align=center>USB</td>
@@ -605,7 +605,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e10</td>
<td align=center>USB</td>
@@ -616,7 +616,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e20</td>
<td align=center>USB</td>
@@ -627,7 +627,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e25</td>
<td align=center>USB</td>
@@ -638,7 +638,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e26</td>
<td align=center>USB</td>
@@ -649,7 +649,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e40</td>
<td align=center>USB</td>
@@ -660,7 +660,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e42</td>
<td align=center>USB</td>
@@ -671,7 +671,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e50</td>
<td align=center>USB</td>
@@ -682,7 +682,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e52</td>
<td align=center>USB</td>
@@ -693,7 +693,7 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>SnapScan e60</td>
<td align=center>USB</td>
@@ -704,15 +704,15 @@ agfafocus<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">SnapScan EZ</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">SnapScan EZ</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -726,7 +726,7 @@ agfafocus<br>(unmaintained)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>StudioScan</td>
<td align=center>SCSI</td>
@@ -737,7 +737,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>StudioScan II</td>
<td align=center>SCSI</td>
@@ -748,7 +748,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>StudioScan IIsi</td>
<td align=center>SCSI</td>
@@ -759,7 +759,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Studiostar</td>
<td align=center>SCSI</td>
@@ -770,7 +770,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
</table>
<h3><a name="Z-AMBIR">Manufacturer: Ambir</a></h3>
@@ -795,12 +795,12 @@ agfafocus<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
</table>
<h3><a name="Z-APPLE">Manufacturer: Apple</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://developer.apple.com/">http://developer.apple.com/</a>, <a href="http://www.apple.com/">http://www.apple.com/</a><br>
</p>
<table border=1>
@@ -821,7 +821,7 @@ agfafocus<br>(unmaintained)
<td align=center>
apple<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-apple.5.html">sane-apple</a></td>
+<td align=center><a href="man/sane-apple.5.html">sane-apple</a></td>
</tr>
<tr><td align=center>Color OneScanner</td>
<td align=center>SCSI</td>
@@ -831,7 +831,7 @@ apple<br>(unmaintained)
<td align=center>
apple<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-apple.5.html">sane-apple</a></td>
+<td align=center><a href="man/sane-apple.5.html">sane-apple</a></td>
</tr>
<tr><td align=center>Color OneScanner 600/27</td>
<td align=center>SCSI</td>
@@ -842,7 +842,7 @@ apple<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>OneScanner</td>
<td align=center>SCSI</td>
@@ -852,7 +852,7 @@ apple<br>(unmaintained)
<td align=center>
apple<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-apple.5.html">sane-apple</a></td>
+<td align=center><a href="man/sane-apple.5.html">sane-apple</a></td>
</tr>
</table>
<h3><a name="Z-ARIES">Manufacturer: Aries</a></h3>
@@ -877,12 +877,12 @@ apple<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-ARTEC-ULTIMA">Manufacturer: Artec/Ultima</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.artecusa.com/">http://www.artecusa.com/</a><br>
</p>
<table border=1>
@@ -895,13 +895,13 @@ apple<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/artec_1236usb.html">1236 USB</a></td>
+<tr><td align=center><a href="unsupported/artec_1236usb.html">1236 USB</a></td>
<td align=center>USB</td>
<td align=center>0x05d8/0x4001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -915,7 +915,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>A6000C PLUS</td>
<td align=center>SCSI</td>
@@ -926,7 +926,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>AM12e+</td>
<td align=center>Parport</td>
@@ -934,7 +934,7 @@ apple<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Chips found inside: AT015, AD9816JS. Maybe similar to SCSI version or as6e?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -948,7 +948,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>AS6E</td>
<td align=center>Parport</td>
@@ -959,7 +959,7 @@ apple<br>(unmaintained)
<a href="http://as6edriver.sourceforge.net/">as6e</a>
<br>(0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-as6e.5.html">sane-as6e</a></td>
+<td align=center><a href="man/sane-as6e.5.html">sane-as6e</a></td>
</tr>
<tr><td align=center>AT3</td>
<td align=center>SCSI</td>
@@ -970,7 +970,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>AT6</td>
<td align=center>SCSI</td>
@@ -981,7 +981,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>AT12</td>
<td align=center>SCSI</td>
@@ -992,7 +992,7 @@ apple<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>E+ 48U</td>
<td align=center>USB</td>
@@ -1002,7 +1002,7 @@ apple<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>E+ Pro</td>
<td align=center>USB</td>
@@ -1012,7 +1012,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>Ultima 2000</td>
<td align=center>USB</td>
@@ -1023,15 +1023,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/artec-ultima-2000-2.html">Ultima 2000 (0x4001)</a></td>
+<tr><td align=center><a href="unsupported/artec-ultima-2000-2.html">Ultima 2000 (0x4001)</a></td>
<td align=center>USB</td>
<td align=center>0x05d8/0x4001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Same name, but different ids: This scanner is not supported. The scanner with product id 0x4002 is supported by the gt68xx backend, however.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -1045,7 +1045,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-AVIGRAMM">Manufacturer: Avigramm</a></h3>
@@ -1061,13 +1061,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">Minidoc</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">Minidoc</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -1075,7 +1075,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-AVISION">Manufacturer: Avision</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.avision.com">http://www.avision.com</a>, <a href="http://www.avision.com/">http://www.avision.com/</a><br>
</p>
<table border=1>
@@ -1097,7 +1097,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>@V5100</td>
<td align=center>USB</td>
@@ -1108,7 +1108,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AM3000 Series</td>
<td align=center>USB</td>
@@ -1119,7 +1119,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV100CS</td>
<td align=center>SCSI</td>
@@ -1130,7 +1130,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV100IIICS</td>
<td align=center>SCSI</td>
@@ -1141,7 +1141,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV100S</td>
<td align=center>SCSI</td>
@@ -1152,7 +1152,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV120</td>
<td align=center>USB</td>
@@ -1163,7 +1163,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV121</td>
<td align=center>USB</td>
@@ -1174,7 +1174,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV122</td>
<td align=center>USB</td>
@@ -1185,7 +1185,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV122 C2</td>
<td align=center>USB</td>
@@ -1196,7 +1196,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV210</td>
<td align=center>USB</td>
@@ -1207,7 +1207,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV210</td>
<td align=center>USB</td>
@@ -1218,7 +1218,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV210C2</td>
<td align=center>USB</td>
@@ -1229,7 +1229,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV210C2-G</td>
<td align=center>USB</td>
@@ -1240,7 +1240,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV210D2+</td>
<td align=center>USB</td>
@@ -1251,7 +1251,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220</td>
<td align=center>USB</td>
@@ -1262,7 +1262,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220+</td>
<td align=center>USB</td>
@@ -1273,7 +1273,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220-G</td>
<td align=center>USB</td>
@@ -1284,7 +1284,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220C2</td>
<td align=center>USB</td>
@@ -1295,7 +1295,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220C2-B</td>
<td align=center>USB</td>
@@ -1306,7 +1306,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220C2-G</td>
<td align=center>USB</td>
@@ -1317,7 +1317,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV220D2</td>
<td align=center>USB</td>
@@ -1328,7 +1328,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV240SC</td>
<td align=center>SCSI</td>
@@ -1339,7 +1339,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV260CS</td>
<td align=center>SCSI</td>
@@ -1350,7 +1350,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV360CS</td>
<td align=center>SCSI</td>
@@ -1361,7 +1361,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV363CS</td>
<td align=center>SCSI</td>
@@ -1372,7 +1372,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV420CS</td>
<td align=center>SCSI</td>
@@ -1383,7 +1383,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV600U</td>
<td align=center>USB</td>
@@ -1394,7 +1394,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV600U Plus</td>
<td align=center>USB</td>
@@ -1405,7 +1405,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV610</td>
<td align=center>USB</td>
@@ -1416,7 +1416,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV610C2</td>
<td align=center>USB</td>
@@ -1427,7 +1427,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV620CS</td>
<td align=center>SCSI</td>
@@ -1438,7 +1438,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV620CS Plus</td>
<td align=center>SCSI</td>
@@ -1449,7 +1449,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV630CS</td>
<td align=center>SCSI</td>
@@ -1460,7 +1460,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV630CSL</td>
<td align=center>SCSI</td>
@@ -1471,7 +1471,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV660S</td>
<td align=center>SCSI</td>
@@ -1482,7 +1482,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV680S</td>
<td align=center>SCSI</td>
@@ -1493,7 +1493,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV690U</td>
<td align=center>SCSI</td>
@@ -1504,7 +1504,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV800S</td>
<td align=center>SCSI</td>
@@ -1515,7 +1515,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV810C</td>
<td align=center>SCSI</td>
@@ -1526,7 +1526,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV820</td>
<td align=center>SCSI</td>
@@ -1537,7 +1537,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV820C</td>
<td align=center>SCSI</td>
@@ -1548,7 +1548,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV820C Plus</td>
<td align=center>SCSI</td>
@@ -1559,7 +1559,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV830C</td>
<td align=center>SCSI</td>
@@ -1570,7 +1570,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV830C Plus</td>
<td align=center>SCSI</td>
@@ -1581,7 +1581,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV880</td>
<td align=center>SCSI</td>
@@ -1592,7 +1592,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV880C</td>
<td align=center>SCSI</td>
@@ -1603,7 +1603,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3200C</td>
<td align=center>SCSI</td>
@@ -1614,7 +1614,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3200SU</td>
<td align=center>USB</td>
@@ -1625,7 +1625,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3730SU</td>
<td align=center>USB</td>
@@ -1636,7 +1636,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3750SU</td>
<td align=center>USB</td>
@@ -1647,7 +1647,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3800C</td>
<td align=center>SCSI</td>
@@ -1658,7 +1658,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV3850SU</td>
<td align=center>USB</td>
@@ -1669,7 +1669,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV6120</td>
<td align=center>SCSI</td>
@@ -1680,7 +1680,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV6240</td>
<td align=center>SCSI</td>
@@ -1691,7 +1691,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV8000S</td>
<td align=center>SCSI</td>
@@ -1702,7 +1702,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV8050U</td>
<td align=center>USB</td>
@@ -1713,7 +1713,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV8300</td>
<td align=center>USB</td>
@@ -1724,7 +1724,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AV8350</td>
<td align=center>USB</td>
@@ -1735,7 +1735,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>AVA3</td>
<td align=center>SCSI</td>
@@ -1746,7 +1746,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DS310F</td>
<td align=center>Parport</td>
@@ -1754,7 +1754,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner/printer/copier combination.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -1768,7 +1768,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>FB2080E</td>
<td align=center>USB</td>
@@ -1779,7 +1779,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>FB6000E</td>
<td align=center>SCSI</td>
@@ -1790,7 +1790,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>FB6080E</td>
<td align=center>USB</td>
@@ -1801,7 +1801,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>IT8300</td>
<td align=center>USB</td>
@@ -1812,26 +1812,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4500.html">iVina 1600</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4500.html">iVina 1600</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a10</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend. Same as UMAX Astra 4500.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4700.html">iVina FB1800</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4700.html">iVina FB1800</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a20</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646/GL660 based. Same as UMAX Astra 4700.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -1842,7 +1842,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. No chipset information available. Same as UMAX Astra 6700.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -1850,7 +1850,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-BELL-AND-HOWELL">Manufacturer: Bell and Howell</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.bhscanners.com/">http://www.bhscanners.com/</a><br>
</p>
<table border=1>
@@ -1872,7 +1872,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
<tr><td align=center>COPISCAN II 2137(A)</td>
<td align=center>SCSI</td>
@@ -1883,7 +1883,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
<tr><td align=center>COPISCAN II 2138A</td>
<td align=center>SCSI</td>
@@ -1894,7 +1894,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
<tr><td align=center>COPISCAN II 3238</td>
<td align=center>SCSI</td>
@@ -1905,7 +1905,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
<tr><td align=center>COPISCAN II 3338(A)</td>
<td align=center>SCSI</td>
@@ -1916,7 +1916,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
<tr><td align=center>COPISCAN II 6338</td>
<td align=center>SCSI</td>
@@ -1927,7 +1927,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.martoneconsulting.com/sane-bh.html">bh</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-bh.5.html">sane-bh</a></td>
+<td align=center><a href="man/sane-bh.5.html">sane-bh</a></td>
</tr>
</table>
<h3><a name="Z-BELL-HOWELL">Manufacturer: Bell+Howell</a></h3>
@@ -1952,12 +1952,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-BENQ">Manufacturer: BenQ</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.benq.com/">http://www.benq.com/</a><br>
</p>
<table border=1>
@@ -1979,12 +1979,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
</table>
<h3><a name="Z-BENQ--ACER-">Manufacturer: Benq (Acer)</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.benq.com">http://www.benq.com</a><br>
<b>Comment:</b> Formerly Acer Peripherals<br>
</p>
@@ -2007,15 +2007,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">310P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">310P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2029,7 +2029,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>310U</td>
<td align=center>USB</td>
@@ -2040,15 +2040,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">320P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">320P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2062,15 +2062,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">340P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">340P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2084,15 +2084,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">610P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">610P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2106,15 +2106,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">610PT</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">610PT</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2128,26 +2128,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">620P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">620P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">620PT</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">620PT</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2161,7 +2161,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>620U</td>
<td align=center>USB</td>
@@ -2172,7 +2172,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>620UT</td>
<td align=center>USB</td>
@@ -2183,7 +2183,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>640BT</td>
<td align=center>USB</td>
@@ -2194,7 +2194,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>640bu</td>
<td align=center>USB</td>
@@ -2205,15 +2205,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/acer-parport.html">640P</a></td>
+<tr><td align=center><a href="unsupported/acer-parport.html">640P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2227,7 +2227,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>1240</td>
<td align=center>USB</td>
@@ -2238,7 +2238,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>3300</td>
<td align=center>USB</td>
@@ -2249,7 +2249,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>3300</td>
<td align=center>USB</td>
@@ -2260,7 +2260,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>4300</td>
<td align=center>USB</td>
@@ -2271,7 +2271,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>4300</td>
<td align=center>USB</td>
@@ -2282,7 +2282,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5000</td>
<td align=center>USB</td>
@@ -2293,7 +2293,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5000E</td>
<td align=center>USB</td>
@@ -2304,7 +2304,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5000U</td>
<td align=center>USB</td>
@@ -2315,7 +2315,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5150</td>
<td align=center>USB</td>
@@ -2326,7 +2326,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5250</td>
<td align=center>USB</td>
@@ -2337,7 +2337,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5300</td>
<td align=center>USB</td>
@@ -2348,7 +2348,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>5450</td>
<td align=center>USB</td>
@@ -2356,40 +2356,40 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/benq-5550.html">5550</a></td>
+<tr><td align=center><a href="unsupported/benq-5550.html">5550</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2211</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html">5560</a></td>
+<tr><td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html">5560</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2311</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/benq-7400ut.html">7400UT</a></td>
+<tr><td align=center><a href="unsupported/benq-7400ut.html">7400UT</a></td>
<td align=center>USB</td>
<td align=center>0x04a5/0x2202</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2403,12 +2403,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
</table>
<h3><a name="Z-BLACKWIDOW">Manufacturer: BlackWidow</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.blackwidow.co.uk/">http://www.blackwidow.co.uk/</a><br>
</p>
<table border=1>
@@ -2430,7 +2430,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
</table>
<h3><a name="Z-BOEDER">Manufacturer: Boeder</a></h3>
@@ -2446,13 +2446,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">Sm@rtScan Office</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">Sm@rtScan Office</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2466,7 +2466,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-BRIGHTSCAN">Manufacturer: BrightScan</a></h3>
@@ -2491,12 +2491,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-BROTHER">Manufacturer: Brother</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.brother.com/">http://www.brother.com/</a><br>
</p>
<table border=1>
@@ -2509,13 +2509,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/brother-mfc-2500.html">MFC 2500</a></td>
+<tr><td align=center><a href="unsupported/brother-mfc-2500.html">MFC 2500</a></td>
<td align=center>USB</td>
<td align=center>0x04f9/0x000a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2526,29 +2526,29 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>The parport 200x400dpi grayscale version of this scanner is unsupported. Dmitri Katchalov did some investigations on this scanner. If you want to write a backend, contact him (see link).</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/brother-mfc-7300.html">MFC 7300c</a></td>
+<tr><td align=center><a href="unsupported/brother-mfc-7300.html">MFC 7300c</a></td>
<td align=center>Parport USB</td>
<td align=center>0x04f9/0x0106</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/brother-mfc-9600.html">MFC 9600</a></td>
+<tr><td align=center><a href="unsupported/brother-mfc-9600.html">MFC 9600</a></td>
<td align=center>USB</td>
<td align=center>0x04f9/0x0101</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2556,7 +2556,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-C-CHANNEL">Manufacturer: C-Channel</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.c-channel.ch/">http://www.c-channel.ch/</a><br>
</p>
<table border=1>
@@ -2575,7 +2575,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2586,18 +2586,18 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>See bug #306792 for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/c-channel-mypen-pro.html">MyPen Pro</a></td>
+<tr><td align=center><a href="unsupported/c-channel-mypen-pro.html">MyPen Pro</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2605,7 +2605,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-CANON">Manufacturer: Canon</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.canon.com/">http://www.canon.com/</a><br>
</p>
<table border=1>
@@ -2627,7 +2627,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan 300</td>
<td align=center>SCSI</td>
@@ -2638,7 +2638,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>CanoScan 600</td>
<td align=center>SCSI</td>
@@ -2649,7 +2649,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>CanoScan 620S</td>
<td align=center>SCSI</td>
@@ -2660,7 +2660,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>CanoScan 700F</td>
<td align=center>USB</td>
@@ -2671,7 +2671,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan 1200S</td>
<td align=center>SCSI</td>
@@ -2682,7 +2682,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>CanoScan 2700F</td>
<td align=center>SCSI</td>
@@ -2693,7 +2693,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>CanoScan 2710S</td>
<td align=center>SCSI</td>
@@ -2704,59 +2704,59 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000</a></td>
+<tr><td align=center><a href="unsupported/canon-3000.html">CanoScan 3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000ex</a></td>
+<tr><td align=center><a href="unsupported/canon-3000.html">CanoScan 3000ex</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-3000.html">CanoScan 3000F</a></td>
+<tr><td align=center><a href="unsupported/canon-3000.html">CanoScan 3000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2215</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL660+GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-4200f.html">CanoScan 4200F</a></td>
+<tr><td align=center><a href="unsupported/canon-4200f.html">CanoScan 4200F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-4400.html">CanoScan 4400F</a></td>
+<tr><td align=center><a href="unsupported/canon-4400.html">CanoScan 4400F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2228</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2770,26 +2770,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-5000f.html">CanoScan 5000F</a></td>
+<tr><td align=center><a href="unsupported/canon-5000f.html">CanoScan 5000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2212</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-5200f.html">CanoScan 5200F</a></td>
+<tr><td align=center><a href="unsupported/canon-5200f.html">CanoScan 5200F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2217</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2803,37 +2803,37 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-8000f.html">CanoScan 8000F</a></td>
+<tr><td align=center><a href="unsupported/canon-8000f.html">CanoScan 8000F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more information. With transparency adapter.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-8400f.html">CanoScan 8400F</a></td>
+<tr><td align=center><a href="unsupported/canon-8400f.html">CanoScan 8400F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-8600.html">CanoScan 8600F</a></td>
+<tr><td align=center><a href="unsupported/canon-8600.html">CanoScan 8600F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2229</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2847,7 +2847,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>CanoScan 9000F</td>
<td align=center>USB</td>
@@ -2858,7 +2858,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>CanoScan 9000F Mark II</td>
<td align=center>USB</td>
@@ -2869,48 +2869,48 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-9900f.html">CanoScan 9900F</a></td>
+<tr><td align=center><a href="unsupported/canon-9900f.html">CanoScan 9900F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2210</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-9950f.html">CanoScan 9950F</a></td>
+<tr><td align=center><a href="unsupported/canon-9950f.html">CanoScan 9950F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2219</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-d646u.html">CanoScan D646U</a></td>
+<tr><td align=center><a href="unsupported/canon-d646u.html">CanoScan D646U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for more information and test program.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-d646u.html">CanoScan D646U ex</a></td>
+<tr><td align=center><a href="unsupported/canon-d646u.html">CanoScan D646U ex</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See D646.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2924,37 +2924,37 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-d1230u.html">CanoScan D1230U</a></td>
+<tr><td align=center><a href="unsupported/canon-d1230u.html">CanoScan D1230U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2209</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. </td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-d1250u2.html">CanoScan D1250U2</a></td>
+<tr><td align=center><a href="unsupported/canon-d1250u2.html">CanoScan D1250U2</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. However, someone started working on this scanner and some information is available (see link).</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-d2400uf.html">CanoScan D2400UF</a></td>
+<tr><td align=center><a href="unsupported/canon-d2400uf.html">CanoScan D2400UF</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x220a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -2968,7 +2968,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan FB320P</td>
<td align=center>Parport (ECP)</td>
@@ -2979,7 +2979,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan FB320U</td>
<td align=center>USB</td>
@@ -2987,7 +2987,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3001,7 +3001,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan FB610P</td>
<td align=center>Parport (ECP)</td>
@@ -3012,7 +3012,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan FB620P</td>
<td align=center>Parport (ECP)</td>
@@ -3023,15 +3023,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-fb620u.html">CanoScan FB620U</a></td>
+<tr><td align=center><a href="unsupported/canon-fb620u.html">CanoScan FB620U</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2202</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Some information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3045,7 +3045,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan fb630u</td>
<td align=center>USB</td>
@@ -3056,7 +3056,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb630u.sourceforge.net/">canon630u</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon630u.5.html">sane-canon630u</a></td>
+<td align=center><a href="man/sane-canon630u.5.html">sane-canon630u</a></td>
</tr>
<tr><td align=center>CanoScan fb636u</td>
<td align=center>USB</td>
@@ -3067,7 +3067,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb630u.sourceforge.net/">canon630u</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon630u.5.html">sane-canon630u</a></td>
+<td align=center><a href="man/sane-canon630u.5.html">sane-canon630u</a></td>
</tr>
<tr><td align=center><a href="http://sourceforge.net/projects/canonscanner/">CanoScan FB1210U</a></td>
<td align=center>USB</td>
@@ -3075,7 +3075,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. However, a stand-alone program for FreeBSD is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3089,7 +3089,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 40</td>
<td align=center>USB</td>
@@ -3100,7 +3100,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 50</td>
<td align=center>USB</td>
@@ -3111,7 +3111,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 60</td>
<td align=center>USB</td>
@@ -3122,7 +3122,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center><a href="http://www.juergen-ernst.de/info_sane.html">CanoScan LiDE 70</a></td>
<td align=center>USB</td>
@@ -3130,29 +3130,29 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Philips chip. Backend started, see link</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-lide-80.html">CanoScan LiDE 80</a></td>
+<tr><td align=center><a href="unsupported/canon-lide-80.html">CanoScan LiDE 80</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x2214</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-lide-90.html">CanoScan LiDE 90</a></td>
+<tr><td align=center><a href="unsupported/canon-lide-90.html">CanoScan LiDE 90</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1900</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3166,7 +3166,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 110</td>
<td align=center>USB</td>
@@ -3177,7 +3177,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 200</td>
<td align=center>USB</td>
@@ -3188,7 +3188,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>CanoScan LiDE 210</td>
<td align=center>USB</td>
@@ -3199,15 +3199,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-canoscan-lide-500f.html">CanoScan LiDE 500F</a></td>
+<tr><td align=center><a href="unsupported/canon-canoscan-lide-500f.html">CanoScan LiDE 500F</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x221f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3218,7 +3218,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Philips chip. Backend started, see link</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3229,7 +3229,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Philips chip. Backend started, see link</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3243,7 +3243,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>CanoScan N340P</td>
<td align=center>Parport (ECP)</td>
@@ -3254,7 +3254,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan N640P</td>
<td align=center>Parport (ECP)</td>
@@ -3265,7 +3265,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan N640P ex</td>
<td align=center>Parport (ECP)</td>
@@ -3276,7 +3276,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://canon-fb330p.sourceforge.net">canon_pp</a>
<br>(0.33)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_pp.5.html">sane-canon_pp</a></td>
+<td align=center><a href="man/sane-canon_pp.5.html">sane-canon_pp</a></td>
</tr>
<tr><td align=center>CanoScan N650U/N656U</td>
<td align=center>USB</td>
@@ -3287,7 +3287,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>CanoScan N670U/N676U/LiDE20</td>
<td align=center>USB</td>
@@ -3298,7 +3298,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>CanoScan N1220U</td>
<td align=center>USB</td>
@@ -3309,7 +3309,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>CanoScan N1240U/LiDE30</td>
<td align=center>USB</td>
@@ -3320,7 +3320,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>CR-25</td>
<td align=center>USB</td>
@@ -3331,7 +3331,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>CR-55</td>
<td align=center>USB</td>
@@ -3342,7 +3342,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>CR-135i</td>
<td align=center>USB SCSI</td>
@@ -3353,7 +3353,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>CR-180</td>
<td align=center>USB SCSI</td>
@@ -3364,7 +3364,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>CR-180II</td>
<td align=center>USB SCSI</td>
@@ -3375,7 +3375,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>CR-190i</td>
<td align=center>USB SCSI</td>
@@ -3386,7 +3386,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-1210C</td>
<td align=center>USB</td>
@@ -3397,7 +3397,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-1210C</td>
<td align=center>USB</td>
@@ -3408,7 +3408,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2010C</td>
<td align=center>USB</td>
@@ -3419,7 +3419,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2010M</td>
<td align=center>USB</td>
@@ -3430,7 +3430,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2020U</td>
<td align=center>USB</td>
@@ -3438,7 +3438,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL84x?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3452,7 +3452,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2050SP</td>
<td align=center>USB</td>
@@ -3463,7 +3463,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2080C</td>
<td align=center>USB SCSI</td>
@@ -3474,7 +3474,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2510C</td>
<td align=center>USB</td>
@@ -3485,7 +3485,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2510M</td>
<td align=center>USB</td>
@@ -3496,7 +3496,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-2580C</td>
<td align=center>USB SCSI</td>
@@ -3507,7 +3507,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-3010C</td>
<td align=center>USB</td>
@@ -3518,7 +3518,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-3020C</td>
<td align=center>SCSI</td>
@@ -3529,7 +3529,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-3060</td>
<td align=center>SCSI</td>
@@ -3540,7 +3540,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-3080C</td>
<td align=center>SCSI</td>
@@ -3551,7 +3551,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-3080CII</td>
<td align=center>USB SCSI</td>
@@ -3562,7 +3562,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-4010C</td>
<td align=center>USB</td>
@@ -3573,7 +3573,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-4580U</td>
<td align=center>USB</td>
@@ -3584,7 +3584,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-5010C</td>
<td align=center>USB</td>
@@ -3595,7 +3595,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-5020</td>
<td align=center>SCSI</td>
@@ -3606,7 +3606,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-5060F</td>
<td align=center>SCSI</td>
@@ -3617,7 +3617,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-5080C</td>
<td align=center>SCSI</td>
@@ -3628,7 +3628,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-6010C</td>
<td align=center>USB SCSI</td>
@@ -3639,7 +3639,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-6030C</td>
<td align=center>USB SCSI</td>
@@ -3650,7 +3650,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-6050C</td>
<td align=center>USB SCSI</td>
@@ -3661,7 +3661,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-6080</td>
<td align=center>USB SCSI</td>
@@ -3672,7 +3672,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-7080C</td>
<td align=center>USB SCSI</td>
@@ -3683,7 +3683,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-7090C</td>
<td align=center>USB SCSI</td>
@@ -3694,7 +3694,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-7550C</td>
<td align=center>USB SCSI</td>
@@ -3705,7 +3705,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-7580</td>
<td align=center>USB SCSI</td>
@@ -3716,7 +3716,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-9050C</td>
<td align=center>USB SCSI</td>
@@ -3727,7 +3727,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-9080C</td>
<td align=center>USB SCSI</td>
@@ -3738,7 +3738,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR-X10C</td>
<td align=center>USB SCSI</td>
@@ -3749,7 +3749,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR3020</td>
<td align=center>SCSI</td>
@@ -3760,7 +3760,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
<tr><td align=center>DR4080U</td>
<td align=center>USB</td>
@@ -3771,15 +3771,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/canon/">canon_dr</a>
<br>(38)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon_dr.5.html">sane-canon_dr</a></td>
+<td align=center><a href="man/sane-canon_dr.5.html">sane-canon_dr</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-fs4000.html">FS4000</a></td>
+<tr><td align=center><a href="unsupported/canon-fs4000.html">FS4000</a></td>
<td align=center>USB SCSI</td>
<td align=center>0x04a9/0x3042</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -3793,7 +3793,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>I-SENSYS MF4320d</td>
<td align=center>USB</td>
@@ -3804,7 +3804,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>I-SENSYS MF4330d</td>
<td align=center>USB</td>
@@ -3815,7 +3815,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>i-SENSYS MF4550d</td>
<td align=center>USB</td>
@@ -3826,7 +3826,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>i-SENSYS MF5880dn</td>
<td align=center>USB</td>
@@ -3837,7 +3837,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>i-SENSYS MF6680dn</td>
<td align=center>USB</td>
@@ -3848,7 +3848,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS D420</td>
<td align=center>USB</td>
@@ -3859,7 +3859,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS D480</td>
<td align=center>USB</td>
@@ -3870,7 +3870,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF3110</td>
<td align=center>USB</td>
@@ -3881,7 +3881,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF3240</td>
<td align=center>USB</td>
@@ -3892,7 +3892,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4010</td>
<td align=center>USB</td>
@@ -3903,7 +3903,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4018</td>
<td align=center>USB</td>
@@ -3914,7 +3914,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4120</td>
<td align=center>USB</td>
@@ -3925,7 +3925,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4122</td>
<td align=center>USB</td>
@@ -3936,7 +3936,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4140</td>
<td align=center>USB</td>
@@ -3947,7 +3947,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4150</td>
<td align=center>USB</td>
@@ -3958,7 +3958,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4270</td>
<td align=center>USB</td>
@@ -3969,7 +3969,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4350d</td>
<td align=center>USB</td>
@@ -3980,7 +3980,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4370dn</td>
<td align=center>USB</td>
@@ -3991,7 +3991,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4380dn</td>
<td align=center>USB</td>
@@ -4002,7 +4002,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4410</td>
<td align=center>USB</td>
@@ -4013,7 +4013,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4430</td>
<td align=center>USB</td>
@@ -4024,7 +4024,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4660</td>
<td align=center>USB</td>
@@ -4035,7 +4035,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF4690</td>
<td align=center>USB</td>
@@ -4046,7 +4046,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF5630</td>
<td align=center>USB</td>
@@ -4057,7 +4057,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF5730</td>
<td align=center>USB</td>
@@ -4068,7 +4068,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF5750</td>
<td align=center>USB</td>
@@ -4079,7 +4079,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF5770</td>
<td align=center>USB</td>
@@ -4090,7 +4090,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF6500 series</td>
<td align=center>USB</td>
@@ -4101,7 +4101,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF6550</td>
<td align=center>USB</td>
@@ -4112,7 +4112,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF8030</td>
<td align=center>USB</td>
@@ -4123,7 +4123,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageCLASS MF8170c</td>
<td align=center>USB</td>
@@ -4134,7 +4134,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>imageRUNNER 1020/1024/1025</td>
<td align=center>USB</td>
@@ -4145,81 +4145,81 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1018</a></td>
+<tr><td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1018</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1022</a></td>
+<tr><td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1022</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-imagerunner.html">ImageRunner iR1023</a></td>
+<tr><td align=center><a href="unsupported/canon-imagerunner.html">ImageRunner iR1023</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x269d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-is-12.html">IS 12</a></td>
+<tr><td align=center><a href="unsupported/canon-is-12.html">IS 12</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-is-22.html">IS 22</a></td>
+<tr><td align=center><a href="unsupported/canon-is-22.html">IS 22</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-is-32.html">IS 32</a></td>
+<tr><td align=center><a href="unsupported/canon-is-32.html">IS 32</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x105d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-is-52.html">IS 52</a></td>
+<tr><td align=center><a href="unsupported/canon-is-52.html">IS 52</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Scanner cardridge for Canon inkjet printers.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -4233,7 +4233,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rzg.mpg.de/~mpd/sane/">canon</a>
<br>(1.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-canon.5.html">sane-canon</a></td>
+<td align=center><a href="man/sane-canon.5.html">sane-canon</a></td>
</tr>
<tr><td align=center>laserBase MF5650</td>
<td align=center>USB</td>
@@ -4244,7 +4244,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA E500</td>
<td align=center>USB</td>
@@ -4255,7 +4255,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA E510</td>
<td align=center>USB</td>
@@ -4266,7 +4266,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA E600</td>
<td align=center>USB</td>
@@ -4277,7 +4277,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA E610</td>
<td align=center>USB</td>
@@ -4288,7 +4288,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG2100 Series</td>
<td align=center>USB</td>
@@ -4299,7 +4299,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG2200 Series</td>
<td align=center>USB</td>
@@ -4310,7 +4310,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG3100 Series</td>
<td align=center>USB WLAN</td>
@@ -4321,7 +4321,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG3200 Series</td>
<td align=center>USB</td>
@@ -4332,7 +4332,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG4100 Series</td>
<td align=center>USB</td>
@@ -4343,7 +4343,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG4200 Series</td>
<td align=center>USB</td>
@@ -4354,7 +4354,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG5100 Series</td>
<td align=center>USB</td>
@@ -4365,7 +4365,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG5200 Series</td>
<td align=center>USB</td>
@@ -4376,7 +4376,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG5300 Series</td>
<td align=center>USB</td>
@@ -4387,7 +4387,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG5400 Series</td>
<td align=center>USB</td>
@@ -4398,7 +4398,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG6100 Series</td>
<td align=center>USB</td>
@@ -4409,7 +4409,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG6200 Series</td>
<td align=center>USB</td>
@@ -4420,7 +4420,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG6300 Series</td>
<td align=center>USB Ethernet</td>
@@ -4431,7 +4431,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG8100 Series</td>
<td align=center>USB</td>
@@ -4442,7 +4442,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MG8200 Series</td>
<td align=center>USB Ethernet</td>
@@ -4453,26 +4453,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-pixma-mp110.html">PIXMA MP110</a></td>
+<tr><td align=center><a href="unsupported/canon-pixma-mp110.html">PIXMA MP110</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1700</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/canon-pixma-mp130.html">PIXMA MP130</a></td>
+<tr><td align=center><a href="unsupported/canon-pixma-mp130.html">PIXMA MP130</a></td>
<td align=center>USB</td>
<td align=center>0x04a9/0x1701</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -4486,7 +4486,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP150</td>
<td align=center>USB</td>
@@ -4497,7 +4497,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP160</td>
<td align=center>USB</td>
@@ -4508,7 +4508,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP170</td>
<td align=center>USB</td>
@@ -4519,7 +4519,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP180</td>
<td align=center>USB</td>
@@ -4530,7 +4530,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP190</td>
<td align=center>USB</td>
@@ -4541,7 +4541,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP210</td>
<td align=center>USB</td>
@@ -4552,7 +4552,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP220</td>
<td align=center>USB</td>
@@ -4563,7 +4563,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP230</td>
<td align=center>USB</td>
@@ -4574,7 +4574,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP240</td>
<td align=center>USB</td>
@@ -4585,7 +4585,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP250</td>
<td align=center>USB</td>
@@ -4596,7 +4596,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP260</td>
<td align=center>USB</td>
@@ -4607,7 +4607,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP270</td>
<td align=center>USB</td>
@@ -4618,7 +4618,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP280</td>
<td align=center>USB</td>
@@ -4629,7 +4629,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP360</td>
<td align=center>USB</td>
@@ -4640,7 +4640,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP370</td>
<td align=center>USB</td>
@@ -4651,7 +4651,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP375R</td>
<td align=center>USB</td>
@@ -4662,7 +4662,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP390</td>
<td align=center>USB</td>
@@ -4673,7 +4673,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP450</td>
<td align=center>USB</td>
@@ -4684,7 +4684,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP460</td>
<td align=center>USB</td>
@@ -4695,7 +4695,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP470</td>
<td align=center>USB</td>
@@ -4706,7 +4706,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP480</td>
<td align=center>USB</td>
@@ -4717,7 +4717,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP490</td>
<td align=center>USB</td>
@@ -4728,7 +4728,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP493</td>
<td align=center>USB</td>
@@ -4739,7 +4739,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP495</td>
<td align=center>USB</td>
@@ -4750,7 +4750,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP500</td>
<td align=center>USB</td>
@@ -4761,7 +4761,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP510</td>
<td align=center>USB</td>
@@ -4772,7 +4772,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP520</td>
<td align=center>USB</td>
@@ -4783,7 +4783,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP530</td>
<td align=center>USB</td>
@@ -4794,7 +4794,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP540</td>
<td align=center>USB</td>
@@ -4805,7 +4805,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP550</td>
<td align=center>USB</td>
@@ -4816,7 +4816,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP560</td>
<td align=center>USB</td>
@@ -4827,7 +4827,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP600</td>
<td align=center>USB</td>
@@ -4838,7 +4838,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP600R</td>
<td align=center>USB Ethernet</td>
@@ -4849,7 +4849,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP610</td>
<td align=center>USB</td>
@@ -4860,7 +4860,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP620</td>
<td align=center>USB Ethernet</td>
@@ -4871,7 +4871,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP630</td>
<td align=center>USB</td>
@@ -4882,7 +4882,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP640</td>
<td align=center>USB Ethernet</td>
@@ -4893,7 +4893,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP700</td>
<td align=center>USB</td>
@@ -4904,7 +4904,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP710</td>
<td align=center>USB</td>
@@ -4915,7 +4915,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP730</td>
<td align=center>USB</td>
@@ -4926,7 +4926,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP740</td>
<td align=center>USB</td>
@@ -4937,7 +4937,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP750</td>
<td align=center>USB</td>
@@ -4948,7 +4948,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP760</td>
<td align=center>USB</td>
@@ -4959,7 +4959,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP770</td>
<td align=center>USB</td>
@@ -4970,7 +4970,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP780</td>
<td align=center>USB</td>
@@ -4981,7 +4981,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP790</td>
<td align=center>USB</td>
@@ -4992,7 +4992,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP800</td>
<td align=center>USB</td>
@@ -5003,7 +5003,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP800R</td>
<td align=center>USB</td>
@@ -5014,7 +5014,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP810</td>
<td align=center>USB</td>
@@ -5025,7 +5025,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP830</td>
<td align=center>USB</td>
@@ -5036,7 +5036,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP960</td>
<td align=center>USB</td>
@@ -5047,7 +5047,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP970</td>
<td align=center>USB Ethernet</td>
@@ -5058,7 +5058,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP980</td>
<td align=center>USB Ethernet</td>
@@ -5069,7 +5069,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MP990</td>
<td align=center>USB Ethernet</td>
@@ -5080,7 +5080,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX300</td>
<td align=center>USB</td>
@@ -5091,7 +5091,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX310</td>
<td align=center>USB</td>
@@ -5102,7 +5102,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX320</td>
<td align=center>USB</td>
@@ -5113,7 +5113,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX330</td>
<td align=center>USB</td>
@@ -5124,7 +5124,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX340</td>
<td align=center>USB</td>
@@ -5135,7 +5135,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX350</td>
<td align=center>USB Ethernet</td>
@@ -5146,7 +5146,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX360</td>
<td align=center>USB</td>
@@ -5157,7 +5157,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX370 Series</td>
<td align=center>USB</td>
@@ -5168,7 +5168,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX390 Series</td>
<td align=center>USB</td>
@@ -5179,7 +5179,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX410</td>
<td align=center>USB Ethernet</td>
@@ -5190,7 +5190,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX420</td>
<td align=center>USB Ethernet</td>
@@ -5201,7 +5201,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX430 Series</td>
<td align=center>USB Ethernet</td>
@@ -5212,7 +5212,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX450 Series</td>
<td align=center>USB</td>
@@ -5223,7 +5223,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX510 Series</td>
<td align=center>USB Ethernet</td>
@@ -5234,7 +5234,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX520 Series</td>
<td align=center>USB</td>
@@ -5245,7 +5245,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX700</td>
<td align=center>USB Ethernet</td>
@@ -5256,7 +5256,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX710 Series</td>
<td align=center>USB Ethernet</td>
@@ -5267,7 +5267,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX720 Series</td>
<td align=center>USB</td>
@@ -5278,7 +5278,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX850</td>
<td align=center>USB Ethernet</td>
@@ -5289,7 +5289,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX860</td>
<td align=center>USB Ethernet</td>
@@ -5300,7 +5300,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX870</td>
<td align=center>USB Ethernet</td>
@@ -5311,7 +5311,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX880 Series</td>
<td align=center>USB Ethernet</td>
@@ -5322,7 +5322,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX882</td>
<td align=center>USB Ethernet</td>
@@ -5333,7 +5333,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX885</td>
<td align=center>USB Ethernet</td>
@@ -5344,7 +5344,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX890 Series</td>
<td align=center>USB Ethernet</td>
@@ -5355,7 +5355,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX920 Series</td>
<td align=center>USB</td>
@@ -5366,7 +5366,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
<tr><td align=center>PIXMA MX7600</td>
<td align=center>USB Ethernet</td>
@@ -5377,7 +5377,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://home.arcor.de/wittawat/pixma/">pixma</a>
<br>(0.17.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pixma.5.html">sane-pixma</a></td>
+<td align=center><a href="man/sane-pixma.5.html">sane-pixma</a></td>
</tr>
</table>
<h3><a name="Z-CHINON">Manufacturer: Chinon</a></h3>
@@ -5393,13 +5393,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/chinon-ds3000.html">DS-3000</a></td>
+<tr><td align=center><a href="unsupported/chinon-ds3000.html">DS-3000</a></td>
<td align=center>Parport Serial Port</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported at the moment, but a backend is in preparation. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5407,7 +5407,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-COMPAQ">Manufacturer: Compaq</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.compaq.com/">http://www.compaq.com/</a><br>
</p>
<table border=1>
@@ -5429,7 +5429,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>S200</td>
<td align=center>USB</td>
@@ -5437,7 +5437,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. 2400x1200 dpi. One bulk-in, one bulk-out and one interrupt endpoint. Type-number: U0001-HB21, another type nr on the inside: 75100512-00</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5456,13 +5456,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">Simplex 1236C</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">Simplex 1236C</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5470,7 +5470,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-COREX">Manufacturer: Corex</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.cardscan.com/">http://www.cardscan.com/</a><br>
</p>
<table border=1>
@@ -5492,7 +5492,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/cardscan/">cardscan</a>
<br>(2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-cardscan.5.html">sane-cardscan</a></td>
+<td align=center><a href="man/sane-cardscan.5.html">sane-cardscan</a></td>
</tr>
<tr><td align=center>800c</td>
<td align=center>USB</td>
@@ -5503,26 +5503,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.thebility.com/cardscan/">cardscan</a>
<br>(2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-cardscan.5.html">sane-cardscan</a></td>
+<td align=center><a href="man/sane-cardscan.5.html">sane-cardscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/corex-cardscan-500.html">Cardscan 500</a></td>
+<tr><td align=center><a href="unsupported/corex-cardscan-500.html">Cardscan 500</a></td>
<td align=center>USB</td>
<td align=center>0x08f0/0x0001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Businesscard reader.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/corex-cardscan-700.html">Cardscan 700 C</a></td>
+<tr><td align=center><a href="unsupported/corex-cardscan-700.html">Cardscan 700 C</a></td>
<td align=center>USB</td>
<td align=center>0x08f0/0x0004</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5550,12 +5550,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-DCT">Manufacturer: DCT</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.docucap.com/">http://www.docucap.com/</a><br>
<b>Comment:</b> Successor of Syscan in the USA<br>
</p>
@@ -5578,12 +5578,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
</table>
<h3><a name="Z-DELL">Manufacturer: Dell</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.dell.com/">http://www.dell.com/</a><br>
</p>
<table border=1>
@@ -5596,13 +5596,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/dell-922.html">922</a></td>
+<tr><td align=center><a href="unsupported/dell-922.html">922</a></td>
<td align=center>USB</td>
<td align=center>0x413c/0x5109</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5625,7 +5625,7 @@ dell1600n_net</td>
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>A940</td>
<td align=center>USB</td>
@@ -5633,18 +5633,18 @@ dell1600n_net</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably rebadged Lexmark X5150. May work with sane-lexmark? See bug #312130</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/dell-a960.html">A960</a></td>
+<tr><td align=center><a href="unsupported/dell-a960.html">A960</a></td>
<td align=center>USB</td>
<td align=center>0x413c/0x5107</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5657,12 +5657,12 @@ dell1600n_net</td>
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
</table>
<h3><a name="Z-DEVCOM">Manufacturer: Devcom</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.blackwidow.co.uk/">http://www.blackwidow.co.uk/</a><br>
</p>
<table border=1>
@@ -5684,7 +5684,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>9636PRO</td>
<td align=center>SCSI</td>
@@ -5695,7 +5695,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>9636S</td>
<td align=center>SCSI</td>
@@ -5706,7 +5706,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
</table>
<h3><a name="Z-DEXTRA">Manufacturer: Dextra</a></h3>
@@ -5731,7 +5731,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>DF-1200T+</td>
<td align=center>SCSI</td>
@@ -5742,7 +5742,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>DF-4830T</td>
<td align=center>SCSI</td>
@@ -5753,7 +5753,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>DF-9624</td>
<td align=center>SCSI</td>
@@ -5764,12 +5764,12 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
</table>
<h3><a name="Z-DEXXA">Manufacturer: Dexxa</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.dexxa.com">http://www.dexxa.com</a><br>
</p>
<table border=1>
@@ -5791,7 +5791,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://as6edriver.sourceforge.net/">as6e</a>
<br>(0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-as6e.5.html">sane-as6e</a></td>
+<td align=center><a href="man/sane-as6e.5.html">sane-as6e</a></td>
</tr>
</table>
<h3><a name="Z-E-LUX">Manufacturer: E-Lux</a></h3>
@@ -5814,7 +5814,7 @@ xerox_mfp<br>(1.0-13)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Sold 1998. Same as E-Lux j-6121.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5842,12 +5842,12 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-EDT--ELECTRONIC-DOCUMENT-TECHNOLOGY-">Manufacturer: EDT (Electronic Document Technology)</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.bizcardreader.com/">http://www.bizcardreader.com/</a><br>
</p>
<table border=1>
@@ -5860,13 +5860,13 @@ xerox_mfp<br>(1.0-13)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/edt-900c.html">BizCardReader 900C</a></td>
+<tr><td align=center><a href="unsupported/edt-900c.html">BizCardReader 900C</a></td>
<td align=center>USB</td>
<td align=center>0x0a53/0x5001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5892,7 +5892,7 @@ xerox_mfp<br>(1.0-13)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Sold 1998. Same as E-Lux j-6121.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5903,7 +5903,7 @@ xerox_mfp<br>(1.0-13)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. </td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -5911,7 +5911,7 @@ xerox_mfp<br>(1.0-13)
</table>
<h3><a name="Z-EPSON">Manufacturer: Epson</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.epson.com/">http://www.epson.com/</a>, <a href="http://www.epson.com">http://www.epson.com</a><br>
</p>
<table border=1>
@@ -5932,7 +5932,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Actionscanner II</td>
<td align=center>SCSI Parport</td>
@@ -5943,7 +5943,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>AcuLaser CX11</td>
<td align=center>USB</td>
@@ -5953,7 +5953,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>AcuLaser CX11</td>
<td align=center>USB</td>
@@ -5964,7 +5964,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>AcuLaser CX11NF</td>
<td align=center>USB Network</td>
@@ -5974,7 +5974,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>AcuLaser CX11NF</td>
<td align=center>USB</td>
@@ -5985,7 +5985,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>AcuLaser CX21</td>
<td align=center>USB</td>
@@ -5995,7 +5995,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Artisan 700</td>
<td align=center>USB Network</td>
@@ -6005,7 +6005,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Artisan 710 Series</td>
<td align=center>USB</td>
@@ -6015,7 +6015,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Artisan 800</td>
<td align=center>USB</td>
@@ -6025,7 +6025,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Artisan 810 Series</td>
<td align=center>USB</td>
@@ -6035,7 +6035,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CC-500L</td>
<td align=center>USB</td>
@@ -6045,7 +6045,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CC-550L</td>
<td align=center>USB</td>
@@ -6055,7 +6055,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CC-570L</td>
<td align=center>USB</td>
@@ -6065,7 +6065,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CC-600PX</td>
<td align=center>USB</td>
@@ -6075,7 +6075,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CC-700</td>
<td align=center>USB</td>
@@ -6085,7 +6085,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>CX-3200</td>
<td align=center>USB</td>
@@ -6096,7 +6096,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-3600</td>
<td align=center>USB</td>
@@ -6107,7 +6107,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-3650</td>
<td align=center>USB</td>
@@ -6118,7 +6118,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-3700</td>
<td align=center>USB</td>
@@ -6129,7 +6129,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-3800</td>
<td align=center>USB</td>
@@ -6140,7 +6140,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-4200</td>
<td align=center>USB</td>
@@ -6151,7 +6151,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-4600</td>
<td align=center>USB</td>
@@ -6162,7 +6162,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-4800</td>
<td align=center>USB</td>
@@ -6173,7 +6173,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-5000</td>
<td align=center>USB</td>
@@ -6184,7 +6184,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-5200</td>
<td align=center>USB</td>
@@ -6195,7 +6195,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-5400</td>
<td align=center>USB</td>
@@ -6206,7 +6206,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-5400</td>
<td align=center>USB</td>
@@ -6217,7 +6217,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-6300</td>
<td align=center>USB</td>
@@ -6228,7 +6228,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-6400</td>
<td align=center>USB</td>
@@ -6239,7 +6239,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-6500</td>
<td align=center>USB</td>
@@ -6250,7 +6250,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>CX-6600</td>
<td align=center>USB</td>
@@ -6261,7 +6261,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-3800</td>
<td align=center>USB</td>
@@ -6272,7 +6272,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-3850</td>
<td align=center>USB</td>
@@ -6283,7 +6283,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-4050</td>
<td align=center>USB</td>
@@ -6294,7 +6294,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-5000</td>
<td align=center>USB</td>
@@ -6305,7 +6305,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-5050</td>
<td align=center>USB</td>
@@ -6316,7 +6316,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-6000</td>
<td align=center>USB</td>
@@ -6327,7 +6327,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>DX-7400</td>
<td align=center>USB</td>
@@ -6338,7 +6338,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>EP-702A</td>
<td align=center>USB</td>
@@ -6348,7 +6348,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>EP-801A</td>
<td align=center>USB Network</td>
@@ -6358,7 +6358,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>EP-802A</td>
<td align=center>USB</td>
@@ -6368,7 +6368,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>EP-901A</td>
<td align=center>USB</td>
@@ -6378,7 +6378,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>EP-901F</td>
<td align=center>USB</td>
@@ -6388,7 +6388,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>EP-902A</td>
<td align=center>USB</td>
@@ -6398,7 +6398,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-300C</td>
<td align=center>SCSI parallel</td>
@@ -6408,7 +6408,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-300C</td>
<td align=center>SCSI Parport</td>
@@ -6419,7 +6419,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>ES-300GS</td>
<td align=center>SCSI</td>
@@ -6429,7 +6429,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-300GS</td>
<td align=center>SCSI</td>
@@ -6440,7 +6440,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>ES-600C</td>
<td align=center>parallel</td>
@@ -6450,7 +6450,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-600C</td>
<td align=center>Parport</td>
@@ -6461,7 +6461,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>ES-800C</td>
<td align=center>SCSI</td>
@@ -6471,7 +6471,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-1000C</td>
<td align=center>?</td>
@@ -6481,7 +6481,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-1200C</td>
<td align=center>parallel</td>
@@ -6491,7 +6491,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-1200C</td>
<td align=center>Parport</td>
@@ -6502,7 +6502,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>ES-2000</td>
<td align=center>SCSI USB</td>
@@ -6512,7 +6512,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-2200</td>
<td align=center>SCSI USB</td>
@@ -6522,7 +6522,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-6000</td>
<td align=center>SCSI</td>
@@ -6532,7 +6532,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-6000H</td>
<td align=center>SCSI</td>
@@ -6542,7 +6542,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-6000HS</td>
<td align=center>SCSI</td>
@@ -6552,7 +6552,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-7000H</td>
<td align=center>SCSI USB</td>
@@ -6562,7 +6562,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-8000</td>
<td align=center>SCSI</td>
@@ -6572,7 +6572,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-8500</td>
<td align=center>SCSI USB</td>
@@ -6582,7 +6582,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-8500</td>
<td align=center>SCSI</td>
@@ -6593,7 +6593,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>ES-9000H</td>
<td align=center>SCSI</td>
@@ -6603,7 +6603,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-10000G</td>
<td align=center>USB</td>
@@ -6613,7 +6613,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">ES-D400</a></td>
<td align=center>USB</td>
@@ -6623,7 +6623,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-H300</td>
<td align=center>USB</td>
@@ -6633,7 +6633,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ES-H7200</td>
<td align=center>USB Ethernet</td>
@@ -6643,7 +6643,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 636</td>
<td align=center>SCSI</td>
@@ -6653,7 +6653,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 636</td>
<td align=center>SCSI</td>
@@ -6664,7 +6664,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Expression 800</td>
<td align=center>SCSI</td>
@@ -6674,7 +6674,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 800</td>
<td align=center>SCSI</td>
@@ -6685,7 +6685,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Expression 836XL</td>
<td align=center>SCSI</td>
@@ -6695,7 +6695,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 1600</td>
<td align=center>SCSI USB</td>
@@ -6705,7 +6705,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 1600</td>
<td align=center>SCSI USB IEEE-1394</td>
@@ -6716,7 +6716,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Expression 1640XL</td>
<td align=center>SCSI USB</td>
@@ -6726,7 +6726,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 1680</td>
<td align=center>SCSI USB</td>
@@ -6736,7 +6736,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 1680</td>
<td align=center>SCSI USB IEEE-1394</td>
@@ -6747,7 +6747,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Expression 1680 Pro</td>
<td align=center>SCSI USB</td>
@@ -6757,7 +6757,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 1680XL Pro</td>
<td align=center>SCSI USB</td>
@@ -6767,7 +6767,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 10000XL</td>
<td align=center>USB</td>
@@ -6777,7 +6777,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 10000XL Graphic Arts</td>
<td align=center>USB IEEE1394</td>
@@ -6787,7 +6787,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Expression 10000XL Photo</td>
<td align=center>USB IEEE1394</td>
@@ -6797,7 +6797,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>F-3200</td>
<td align=center>USB IEEE1394</td>
@@ -6807,7 +6807,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>F-3200 Photo</td>
<td align=center>USB IEEE1394</td>
@@ -6817,7 +6817,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>FilmScan 200</td>
<td align=center>SCSI</td>
@@ -6827,7 +6827,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-1500</a></td>
<td align=center>USB</td>
@@ -6837,7 +6837,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-2200</td>
<td align=center>USB</td>
@@ -6845,7 +6845,7 @@ epson2<br>(1.0.124)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -6858,7 +6858,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-2500</td>
<td align=center>USB</td>
@@ -6868,7 +6868,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-4000</td>
<td align=center>?</td>
@@ -6878,7 +6878,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-5000</td>
<td align=center>parallel SCSI</td>
@@ -6888,7 +6888,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-5000</td>
<td align=center>SCSI Parport</td>
@@ -6899,7 +6899,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-5400</td>
<td align=center>parallel</td>
@@ -6909,7 +6909,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-5500</td>
<td align=center>SCSI</td>
@@ -6919,7 +6919,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-5500</td>
<td align=center>SCSI</td>
@@ -6930,7 +6930,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-6000</td>
<td align=center>SCSI Parport</td>
@@ -6940,7 +6940,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-6000</td>
<td align=center>SCSI Parport</td>
@@ -6951,7 +6951,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-6500</td>
<td align=center>parallel</td>
@@ -6961,7 +6961,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-6500</td>
<td align=center>Parport</td>
@@ -6972,7 +6972,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-6600U</td>
<td align=center>USB</td>
@@ -6982,7 +6982,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-6700U</td>
<td align=center>USB</td>
@@ -6992,7 +6992,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7000</td>
<td align=center>SCSI</td>
@@ -7003,7 +7003,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-7000S</td>
<td align=center>SCSI</td>
@@ -7013,7 +7013,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7000U</td>
<td align=center>USB</td>
@@ -7023,7 +7023,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-7200U</a></td>
<td align=center>USB</td>
@@ -7033,7 +7033,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-7300U</a></td>
<td align=center>USB</td>
@@ -7043,7 +7043,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7400U</td>
<td align=center>USB</td>
@@ -7053,7 +7053,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7600S</td>
<td align=center>SCSI</td>
@@ -7063,7 +7063,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7600U</td>
<td align=center>USB</td>
@@ -7073,7 +7073,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7600UF</td>
<td align=center>USB</td>
@@ -7083,7 +7083,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-7700U</td>
<td align=center>USB</td>
@@ -7093,7 +7093,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8000</td>
<td align=center>SCSI</td>
@@ -7103,7 +7103,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8000</td>
<td align=center>SCSI</td>
@@ -7114,7 +7114,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>GT-8200U</td>
<td align=center>USB</td>
@@ -7124,7 +7124,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8200UF</td>
<td align=center>USB</td>
@@ -7134,7 +7134,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8300UF</td>
<td align=center>USB</td>
@@ -7144,7 +7144,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8400UF</td>
<td align=center>USB</td>
@@ -7154,7 +7154,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8500</td>
<td align=center>?</td>
@@ -7164,7 +7164,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8700</td>
<td align=center>SCSI USB</td>
@@ -7174,7 +7174,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-8700F</td>
<td align=center>SCSI USB</td>
@@ -7184,7 +7184,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9000</td>
<td align=center>parallel</td>
@@ -7194,7 +7194,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9300UF</td>
<td align=center>USB</td>
@@ -7204,7 +7204,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-9400UF</a></td>
<td align=center>USB</td>
@@ -7214,7 +7214,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9500</td>
<td align=center>SCSI</td>
@@ -7224,7 +7224,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9600</td>
<td align=center>SCSI</td>
@@ -7234,7 +7234,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9700F</td>
<td align=center>USB</td>
@@ -7244,7 +7244,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-9800F</td>
<td align=center>USB</td>
@@ -7254,7 +7254,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-10000</td>
<td align=center>SCSI</td>
@@ -7264,7 +7264,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-10000+</td>
<td align=center>SCSI</td>
@@ -7274,7 +7274,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-12000</td>
<td align=center>SCSI</td>
@@ -7284,7 +7284,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-15000</td>
<td align=center>SCSI USB</td>
@@ -7294,7 +7294,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-20000</td>
<td align=center>USB Ethernet</td>
@@ -7304,7 +7304,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-30000</td>
<td align=center>SCSI</td>
@@ -7314,7 +7314,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-D1000</a></td>
<td align=center>USB</td>
@@ -7324,7 +7324,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F500</a></td>
<td align=center>USB</td>
@@ -7334,7 +7334,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F520</a></td>
<td align=center>USB</td>
@@ -7344,7 +7344,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F550</a></td>
<td align=center>USB</td>
@@ -7354,7 +7354,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F570</a></td>
<td align=center>USB</td>
@@ -7364,7 +7364,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F600</a></td>
<td align=center>USB</td>
@@ -7374,7 +7374,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F650</a></td>
<td align=center>USB</td>
@@ -7384,7 +7384,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F670</a></td>
<td align=center>USB</td>
@@ -7394,7 +7394,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F700</a></td>
<td align=center>USB</td>
@@ -7404,7 +7404,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-F720</a></td>
<td align=center>USB</td>
@@ -7414,7 +7414,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">GT-S50</a></td>
<td align=center>USB</td>
@@ -7424,7 +7424,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">GT-S80</a></td>
<td align=center>USB</td>
@@ -7434,7 +7434,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-S600</a></td>
<td align=center>USB</td>
@@ -7444,7 +7444,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-S620</a></td>
<td align=center>USB</td>
@@ -7454,7 +7454,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-X700</td>
<td align=center>USB</td>
@@ -7464,7 +7464,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-X750</a></td>
<td align=center>USB</td>
@@ -7474,7 +7474,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-X770</a></td>
<td align=center>USB</td>
@@ -7484,7 +7484,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-X800</td>
<td align=center>USB</td>
@@ -7494,7 +7494,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux/scan/DL1.do">GT-X820</a></td>
<td align=center>USB</td>
@@ -7504,7 +7504,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-X900</td>
<td align=center>USB</td>
@@ -7514,7 +7514,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>GT-X970</td>
<td align=center>USB</td>
@@ -7524,7 +7524,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-7900CS</td>
<td align=center>?</td>
@@ -7534,7 +7534,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9000CCH</td>
<td align=center>?</td>
@@ -7544,7 +7544,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9000CCS</td>
<td align=center>?</td>
@@ -7554,7 +7554,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9000CFH</td>
<td align=center>?</td>
@@ -7564,7 +7564,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9500CCS</td>
<td align=center>?</td>
@@ -7574,7 +7574,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9500CFH</td>
<td align=center>?</td>
@@ -7584,7 +7584,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9500CH2</td>
<td align=center>?</td>
@@ -7594,7 +7594,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9800CCH</td>
<td align=center>?</td>
@@ -7604,7 +7604,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9800CCS</td>
<td align=center>?</td>
@@ -7614,7 +7614,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-9800CFH</td>
<td align=center>?</td>
@@ -7624,7 +7624,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-A500</td>
<td align=center>USB Network</td>
@@ -7634,7 +7634,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-M5000</td>
<td align=center>USB</td>
@@ -7644,7 +7644,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-M5500</td>
<td align=center>USB</td>
@@ -7654,7 +7654,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-M5500F</td>
<td align=center>USB</td>
@@ -7664,7 +7664,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-M5600</td>
<td align=center>USB</td>
@@ -7674,7 +7674,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>LP-M6000</td>
<td align=center>USB</td>
@@ -7684,7 +7684,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME 200</td>
<td align=center>USB</td>
@@ -7694,7 +7694,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME 300</td>
<td align=center>USB</td>
@@ -7704,7 +7704,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME OFFICE 510</td>
<td align=center>USB</td>
@@ -7714,7 +7714,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME Office 600F</td>
<td align=center>USB</td>
@@ -7724,7 +7724,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME OFFICE 650FN Series</td>
<td align=center>USB</td>
@@ -7734,7 +7734,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>ME Office 700FW</td>
<td align=center>USB</td>
@@ -7744,7 +7744,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 600</td>
<td align=center>SCSI</td>
@@ -7755,7 +7755,7 @@ epson2<br>(1.0.124)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Perfection 610</td>
<td align=center>USB</td>
@@ -7765,7 +7765,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 610</td>
<td align=center>USB</td>
@@ -7776,7 +7776,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 636</td>
<td align=center>SCSI</td>
@@ -7787,7 +7787,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 636S</td>
<td align=center>SCSI</td>
@@ -7797,7 +7797,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 636S</td>
<td align=center>SCSI</td>
@@ -7808,7 +7808,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 636U</td>
<td align=center>USB</td>
@@ -7818,7 +7818,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 636U</td>
<td align=center>USB</td>
@@ -7829,7 +7829,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 640</td>
<td align=center>USB</td>
@@ -7840,7 +7840,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 640U</td>
<td align=center>USB</td>
@@ -7850,7 +7850,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 660</td>
<td align=center>USB</td>
@@ -7861,7 +7861,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Perfection 1200Photo</td>
<td align=center>USB</td>
@@ -7872,7 +7872,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1200S</td>
<td align=center>SCSI</td>
@@ -7882,7 +7882,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1200S</td>
<td align=center>SCSI</td>
@@ -7893,7 +7893,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1200U</td>
<td align=center>USB</td>
@@ -7903,7 +7903,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1200U</td>
<td align=center>USB</td>
@@ -7914,7 +7914,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1200U PHOTO</td>
<td align=center>USB</td>
@@ -7924,7 +7924,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1240</td>
<td align=center>SCSI USB</td>
@@ -7935,7 +7935,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1240U</td>
<td align=center>USB</td>
@@ -7945,7 +7945,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1250</td>
<td align=center>USB</td>
@@ -7956,7 +7956,7 @@ epson2<br>(1.0.124)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 1250 PHOTO</a></td>
<td align=center>USB</td>
@@ -7966,7 +7966,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1250Photo</td>
<td align=center>USB</td>
@@ -7977,7 +7977,7 @@ epson2<br>(1.0.124)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Perfection 1260</td>
<td align=center>USB</td>
@@ -7988,7 +7988,7 @@ epson2<br>(1.0.124)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 1260 PHOTO</a></td>
<td align=center>USB</td>
@@ -7998,7 +7998,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1260Photo</td>
<td align=center>USB</td>
@@ -8009,7 +8009,7 @@ epson2<br>(1.0.124)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Perfection 1270</td>
<td align=center>USB</td>
@@ -8020,7 +8020,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Perfection 1600</td>
<td align=center>SCSI</td>
@@ -8030,7 +8030,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1640</td>
<td align=center>SCSI USB</td>
@@ -8041,7 +8041,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1640SU</td>
<td align=center>SCSI USB</td>
@@ -8051,7 +8051,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1640SU PHOTO</td>
<td align=center>SCSI USB</td>
@@ -8061,7 +8061,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1650</td>
<td align=center>USB</td>
@@ -8071,7 +8071,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1650</td>
<td align=center>USB</td>
@@ -8082,7 +8082,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1650 PHOTO</td>
<td align=center>USB</td>
@@ -8092,7 +8092,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1660</td>
<td align=center>USB</td>
@@ -8103,7 +8103,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 1660 PHOTO</td>
<td align=center>USB</td>
@@ -8113,7 +8113,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 1670</td>
<td align=center>USB</td>
@@ -8124,7 +8124,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Perfection 1670 PHOTO</td>
<td align=center>USB</td>
@@ -8134,7 +8134,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 2400</td>
<td align=center>USB</td>
@@ -8145,7 +8145,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 2400 PHOTO</td>
<td align=center>USB</td>
@@ -8155,7 +8155,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 2450</td>
<td align=center>USB IEEE-1394</td>
@@ -8166,7 +8166,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 2450 PHOTO</td>
<td align=center>USB IEEE-1394</td>
@@ -8176,7 +8176,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 2480</td>
<td align=center>USB</td>
@@ -8187,7 +8187,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 2480 PHOTO</a></td>
<td align=center>USB</td>
@@ -8197,7 +8197,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 2580</td>
<td align=center>USB</td>
@@ -8208,7 +8208,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 2580 PHOTO</a></td>
<td align=center>USB</td>
@@ -8218,7 +8218,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 3170 PHOTO</a></td>
<td align=center>USB</td>
@@ -8228,7 +8228,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 3200</td>
<td align=center>USB IEEE-1394</td>
@@ -8239,7 +8239,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 3200 PHOTO</td>
<td align=center>USB IEEE-1394</td>
@@ -8249,7 +8249,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 3490</td>
<td align=center>USB</td>
@@ -8260,7 +8260,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 3490 PHOTO</a></td>
<td align=center>USB</td>
@@ -8270,7 +8270,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 3590</td>
<td align=center>USB</td>
@@ -8281,7 +8281,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 3590 PHOTO</a></td>
<td align=center>USB</td>
@@ -8291,7 +8291,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 4180 PHOTO</a></td>
<td align=center>USB</td>
@@ -8301,7 +8301,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection 4490 PHOTO</a></td>
<td align=center>USB</td>
@@ -8311,7 +8311,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 4870</td>
<td align=center>USB</td>
@@ -8322,7 +8322,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 4870 PHOTO</td>
<td align=center>USB</td>
@@ -8332,7 +8332,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 4990</td>
<td align=center>USB</td>
@@ -8343,7 +8343,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Perfection 4990 PHOTO</td>
<td align=center>USB</td>
@@ -8353,7 +8353,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection 4990 Pro</td>
<td align=center>USB IEEE1394</td>
@@ -8363,7 +8363,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V10</a></td>
<td align=center>USB</td>
@@ -8373,7 +8373,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V30</a></td>
<td align=center>USB</td>
@@ -8383,7 +8383,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V100 Photo</a></td>
<td align=center>USB</td>
@@ -8393,7 +8393,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V200 Photo</a></td>
<td align=center>USB</td>
@@ -8403,7 +8403,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V300 Photo</a></td>
<td align=center>USB</td>
@@ -8413,7 +8413,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V350 Photo</a></td>
<td align=center>USB</td>
@@ -8423,7 +8423,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V500 Photo</a></td>
<td align=center>USB</td>
@@ -8433,7 +8433,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/scan/DL1.do">Perfection V600 Photo</a></td>
<td align=center>USB</td>
@@ -8443,7 +8443,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection V700 Photo</td>
<td align=center>USB</td>
@@ -8453,7 +8453,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Perfection V750 Photo</td>
<td align=center>USB</td>
@@ -8463,7 +8463,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A700</td>
<td align=center>USB</td>
@@ -8473,7 +8473,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A750</td>
<td align=center>USB</td>
@@ -8483,7 +8483,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A820</td>
<td align=center>USB</td>
@@ -8493,7 +8493,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A840</td>
<td align=center>USB</td>
@@ -8503,7 +8503,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A840S</td>
<td align=center>USB</td>
@@ -8513,7 +8513,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A850</td>
<td align=center>USB</td>
@@ -8523,7 +8523,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A870</td>
<td align=center>USB</td>
@@ -8533,7 +8533,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A890</td>
<td align=center>USB</td>
@@ -8543,7 +8543,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A900</td>
<td align=center>USB</td>
@@ -8553,7 +8553,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A920</td>
<td align=center>USB</td>
@@ -8563,7 +8563,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A940</td>
<td align=center>USB</td>
@@ -8573,7 +8573,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A950</td>
<td align=center>USB</td>
@@ -8583,7 +8583,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-A970</td>
<td align=center>USB</td>
@@ -8593,7 +8593,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-T960</td>
<td align=center>USB</td>
@@ -8603,7 +8603,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PM-T990</td>
<td align=center>USB</td>
@@ -8613,7 +8613,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-401A</td>
<td align=center>USB</td>
@@ -8623,7 +8623,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-402A</td>
<td align=center>USB</td>
@@ -8633,7 +8633,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-501A</td>
<td align=center>USB</td>
@@ -8643,7 +8643,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-502A</td>
<td align=center>USB</td>
@@ -8653,7 +8653,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-601F</td>
<td align=center>USB</td>
@@ -8663,7 +8663,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A550</td>
<td align=center>USB</td>
@@ -8673,7 +8673,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A620</td>
<td align=center>USB</td>
@@ -8683,7 +8683,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A640</td>
<td align=center>USB</td>
@@ -8693,7 +8693,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A650</td>
<td align=center>USB</td>
@@ -8703,7 +8703,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A720</td>
<td align=center>USB</td>
@@ -8713,7 +8713,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-A740</td>
<td align=center>USB</td>
@@ -8723,7 +8723,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>PX-FA700</td>
<td align=center>USB</td>
@@ -8733,7 +8733,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>RX-425</td>
<td align=center>USB</td>
@@ -8744,7 +8744,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>RX-500</td>
<td align=center>USB</td>
@@ -8755,7 +8755,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>RX-600</td>
<td align=center>USB</td>
@@ -8766,7 +8766,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>RX-620</td>
<td align=center>USB</td>
@@ -8777,7 +8777,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>RX-700</td>
<td align=center>USB</td>
@@ -8788,7 +8788,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>Stylus CX-1500</td>
<td align=center>USB</td>
@@ -8799,7 +8799,7 @@ epson2<br>(1.0.124)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Stylus CX-5800</td>
<td align=center>USB</td>
@@ -8807,7 +8807,7 @@ epson2<br>(1.0.124)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported at the moment. Not compatible to snapscan backend. It's not known if it may work with epson or epkowa backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -8820,7 +8820,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX2800</td>
<td align=center>USB</td>
@@ -8830,7 +8830,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX2900</td>
<td align=center>USB</td>
@@ -8840,7 +8840,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3100</td>
<td align=center>USB</td>
@@ -8850,7 +8850,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3200</td>
<td align=center>USB</td>
@@ -8860,7 +8860,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3500</td>
<td align=center>USB</td>
@@ -8870,7 +8870,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3600</td>
<td align=center>USB</td>
@@ -8880,7 +8880,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3650</td>
<td align=center>USB</td>
@@ -8890,7 +8890,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3700</td>
<td align=center>USB</td>
@@ -8900,7 +8900,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3800</td>
<td align=center>USB</td>
@@ -8910,7 +8910,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3810</td>
<td align=center>USB</td>
@@ -8920,7 +8920,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX3900</td>
<td align=center>USB</td>
@@ -8930,7 +8930,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4100</td>
<td align=center>USB</td>
@@ -8940,7 +8940,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4200</td>
<td align=center>USB</td>
@@ -8950,7 +8950,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do">Stylus CX4300</a></td>
<td align=center>USB</td>
@@ -8960,7 +8960,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do">Stylus CX4400</a></td>
<td align=center>USB</td>
@@ -8970,7 +8970,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4500</td>
<td align=center>USB</td>
@@ -8980,7 +8980,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4600</td>
<td align=center>USB</td>
@@ -8990,7 +8990,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4700</td>
<td align=center>USB</td>
@@ -9000,7 +9000,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4800</td>
<td align=center>USB</td>
@@ -9010,7 +9010,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX4900</td>
<td align=center>USB</td>
@@ -9020,7 +9020,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5000</td>
<td align=center>USB</td>
@@ -9030,7 +9030,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5100</td>
<td align=center>USB</td>
@@ -9040,7 +9040,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5200</td>
<td align=center>USB</td>
@@ -9050,7 +9050,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5300</td>
<td align=center>USB</td>
@@ -9060,7 +9060,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5400</td>
<td align=center>USB</td>
@@ -9070,7 +9070,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do">Stylus CX5500</a></td>
<td align=center>USB</td>
@@ -9080,7 +9080,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do">Stylus CX5600</a></td>
<td align=center>USB</td>
@@ -9090,7 +9090,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5700F</td>
<td align=center>USB</td>
@@ -9100,7 +9100,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5800F</td>
<td align=center>USB</td>
@@ -9110,7 +9110,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX5900</td>
<td align=center>USB</td>
@@ -9120,7 +9120,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6000</td>
<td align=center>USB</td>
@@ -9130,7 +9130,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6300</td>
<td align=center>USB</td>
@@ -9140,7 +9140,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6400</td>
<td align=center>USB</td>
@@ -9150,7 +9150,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6500</td>
<td align=center>USB</td>
@@ -9160,7 +9160,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6600</td>
<td align=center>USB</td>
@@ -9170,7 +9170,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX6900F</td>
<td align=center>USB</td>
@@ -9180,7 +9180,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX7000F</td>
<td align=center>USB</td>
@@ -9190,7 +9190,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX7300</td>
<td align=center>USB</td>
@@ -9200,7 +9200,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX7400</td>
<td align=center>USB</td>
@@ -9210,7 +9210,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX7700</td>
<td align=center>USB</td>
@@ -9220,7 +9220,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX7800</td>
<td align=center>USB</td>
@@ -9230,7 +9230,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX8300</td>
<td align=center>USB</td>
@@ -9240,7 +9240,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX8400</td>
<td align=center>USB</td>
@@ -9250,7 +9250,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX9300F</td>
<td align=center>USB</td>
@@ -9260,7 +9260,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus CX9400Fax</td>
<td align=center>USB</td>
@@ -9270,7 +9270,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX3800</td>
<td align=center>USB</td>
@@ -9280,7 +9280,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX3850</td>
<td align=center>USB</td>
@@ -9290,7 +9290,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX4000</td>
<td align=center>USB</td>
@@ -9300,7 +9300,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX4200</td>
<td align=center>USB</td>
@@ -9310,7 +9310,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center><a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do">Stylus DX4400</a></td>
<td align=center>USB</td>
@@ -9320,15 +9320,15 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/epson-stylus-dx4450.html">Stylus DX4450</a></td>
+<tr><td align=center><a href="unsupported/epson-stylus-dx4450.html">Stylus DX4450</a></td>
<td align=center>USB</td>
<td align=center>0x04b8/0x083f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -9341,7 +9341,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX4850</td>
<td align=center>USB</td>
@@ -9351,7 +9351,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX5000</td>
<td align=center>USB</td>
@@ -9361,7 +9361,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX6000</td>
<td align=center>USB</td>
@@ -9371,7 +9371,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX7000F</td>
<td align=center>USB</td>
@@ -9381,7 +9381,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX7400</td>
<td align=center>USB</td>
@@ -9391,7 +9391,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX8400</td>
<td align=center>USB</td>
@@ -9401,7 +9401,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus DX9400F</td>
<td align=center>USB</td>
@@ -9411,7 +9411,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX100</td>
<td align=center>USB</td>
@@ -9421,7 +9421,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX110 Series</td>
<td align=center>USB</td>
@@ -9431,7 +9431,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX200</td>
<td align=center>USB</td>
@@ -9441,7 +9441,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX210 Series</td>
<td align=center>USB</td>
@@ -9451,7 +9451,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX300</td>
<td align=center>USB</td>
@@ -9461,7 +9461,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX400</td>
<td align=center>USB</td>
@@ -9471,7 +9471,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX410 Series</td>
<td align=center>USB</td>
@@ -9481,7 +9481,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus NX510 Series</td>
<td align=center>USB</td>
@@ -9491,7 +9491,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office BX300F</td>
<td align=center>USB</td>
@@ -9501,7 +9501,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office BX310FN Series</td>
<td align=center>USB</td>
@@ -9511,7 +9511,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office BX600FW</td>
<td align=center>USB</td>
@@ -9521,7 +9521,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office BX610FW Series</td>
<td align=center>USB</td>
@@ -9531,7 +9531,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office TX300F</td>
<td align=center>USB</td>
@@ -9541,7 +9541,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office TX510FN Series</td>
<td align=center>USB</td>
@@ -9551,7 +9551,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office TX600FW</td>
<td align=center>USB</td>
@@ -9561,7 +9561,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Office TX610FW Series</td>
<td align=center>USB</td>
@@ -9571,7 +9571,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo PX650 Series</td>
<td align=center>USB</td>
@@ -9581,7 +9581,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo PX700W</td>
<td align=center>USB Network</td>
@@ -9591,7 +9591,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo PX710W Series</td>
<td align=center>USB</td>
@@ -9601,7 +9601,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo PX800FW</td>
<td align=center>USB</td>
@@ -9611,7 +9611,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo PX810FW Series</td>
<td align=center>USB</td>
@@ -9621,7 +9621,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX420</td>
<td align=center>USB</td>
@@ -9631,7 +9631,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX425</td>
<td align=center>USB</td>
@@ -9641,7 +9641,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX430</td>
<td align=center>USB</td>
@@ -9651,7 +9651,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX500</td>
<td align=center>USB</td>
@@ -9661,7 +9661,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX510</td>
<td align=center>USB</td>
@@ -9671,7 +9671,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX520</td>
<td align=center>USB</td>
@@ -9681,7 +9681,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX530</td>
<td align=center>USB</td>
@@ -9691,7 +9691,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX560</td>
<td align=center>USB</td>
@@ -9701,7 +9701,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX580</td>
<td align=center>USB</td>
@@ -9711,7 +9711,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX585</td>
<td align=center>USB</td>
@@ -9721,7 +9721,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX590</td>
<td align=center>USB</td>
@@ -9731,7 +9731,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX595</td>
<td align=center>USB</td>
@@ -9741,7 +9741,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX600</td>
<td align=center>USB</td>
@@ -9751,7 +9751,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX610</td>
<td align=center>USB</td>
@@ -9761,7 +9761,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX620</td>
<td align=center>USB</td>
@@ -9771,7 +9771,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX630</td>
<td align=center>USB</td>
@@ -9781,7 +9781,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX640</td>
<td align=center>USB</td>
@@ -9791,7 +9791,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX650</td>
<td align=center>USB</td>
@@ -9801,7 +9801,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX680</td>
<td align=center>USB</td>
@@ -9811,7 +9811,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX685</td>
<td align=center>USB</td>
@@ -9821,7 +9821,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX690</td>
<td align=center>USB</td>
@@ -9831,7 +9831,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo RX700</td>
<td align=center>USB</td>
@@ -9841,7 +9841,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo TX650 Series</td>
<td align=center>USB</td>
@@ -9851,7 +9851,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo TX700W</td>
<td align=center>USB</td>
@@ -9861,7 +9861,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo TX710W Series</td>
<td align=center>USB</td>
@@ -9871,7 +9871,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Photo TX800FW</td>
<td align=center>USB</td>
@@ -9881,7 +9881,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Scan 2000</td>
<td align=center>USB</td>
@@ -9891,7 +9891,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus Scan 2500</td>
<td align=center>USB</td>
@@ -9901,7 +9901,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX100</td>
<td align=center>USB</td>
@@ -9911,7 +9911,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX110 Series</td>
<td align=center>USB</td>
@@ -9921,7 +9921,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX125</td>
<td align=center>USB</td>
@@ -9931,7 +9931,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX200</td>
<td align=center>USB</td>
@@ -9941,7 +9941,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX205</td>
<td align=center>USB</td>
@@ -9951,7 +9951,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX210 Series</td>
<td align=center>USB</td>
@@ -9961,7 +9961,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX400</td>
<td align=center>USB</td>
@@ -9971,7 +9971,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX405</td>
<td align=center>USB</td>
@@ -9981,7 +9981,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX410 Series</td>
<td align=center>USB</td>
@@ -9991,7 +9991,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX510W Series</td>
<td align=center>USB</td>
@@ -10001,7 +10001,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX600FW</td>
<td align=center>USB</td>
@@ -10011,7 +10011,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus SX610FW Series</td>
<td align=center>USB</td>
@@ -10021,7 +10021,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX100</td>
<td align=center>USB</td>
@@ -10031,7 +10031,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX110 Series</td>
<td align=center>USB</td>
@@ -10041,7 +10041,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX200</td>
<td align=center>USB</td>
@@ -10051,7 +10051,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX203</td>
<td align=center>USB</td>
@@ -10061,7 +10061,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX209</td>
<td align=center>USB</td>
@@ -10071,7 +10071,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX210 Series</td>
<td align=center>USB</td>
@@ -10081,7 +10081,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX400</td>
<td align=center>USB</td>
@@ -10091,7 +10091,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX410 Series</td>
<td align=center>USB</td>
@@ -10101,7 +10101,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>Stylus TX550W Series</td>
<td align=center>USB</td>
@@ -10111,7 +10111,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>StylusScan 2000</td>
<td align=center>USB</td>
@@ -10119,7 +10119,7 @@ epson2<br>(1.0.124)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -10133,7 +10133,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>V750</td>
<td align=center>USB IEEE-1394</td>
@@ -10144,7 +10144,7 @@ epson2<br>(1.0.124)
<a href="http://www.khk.net/sane">epson</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson.5.html">sane-epson</a></td>
+<td align=center><a href="man/sane-epson.5.html">sane-epson</a></td>
</tr>
<tr><td align=center>WorkForce 310 Series</td>
<td align=center>USB</td>
@@ -10154,7 +10154,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>WorkForce 500</td>
<td align=center>USB</td>
@@ -10164,7 +10164,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>WorkForce 600</td>
<td align=center>USB</td>
@@ -10174,7 +10174,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
<tr><td align=center>WorkForce 610 Series</td>
<td align=center>USB</td>
@@ -10184,7 +10184,7 @@ epson2<br>(1.0.124)
<td align=center>
epson2<br>(1.0.124)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epson2.5.html">sane-epson2</a></td>
+<td align=center><a href="man/sane-epson2.5.html">sane-epson2</a></td>
</tr>
</table>
<h3><a name="Z-ESCOM">Manufacturer: Escom</a></h3>
@@ -10209,7 +10209,7 @@ epson2<br>(1.0.124)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-ESCORT">Manufacturer: Escort</a></h3>
@@ -10234,12 +10234,12 @@ epson2<br>(1.0.124)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-FUJITSU">Manufacturer: Fujitsu</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.fujitsu.com">http://www.fujitsu.com</a>, <a href="http://www.fujitsu.com/">http://www.fujitsu.com/</a>, <a href="http://www.fcpa.fujitsu.com/products/scanners/">http://www.fcpa.fujitsu.com/products/scanners/</a><br>
</p>
<table border=1>
@@ -10261,7 +10261,7 @@ epson2<br>(1.0.124)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>fi-60F</td>
<td align=center>USB</td>
@@ -10272,7 +10272,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/epjitsu/">epjitsu</a>
<br>(20)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a></td>
+<td align=center><a href="man/sane-epjitsu.5.html">sane-epjitsu</a></td>
</tr>
<tr><td align=center>fi-4010CU</td>
<td align=center>USB</td>
@@ -10283,7 +10283,7 @@ epson2<br>(1.0.124)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>fi-4110EOX/2/3</td>
<td align=center>USB</td>
@@ -10294,7 +10294,7 @@ epson2<br>(1.0.124)
<a href="http://www.meier-geinitz.de/sane/ma1509-backend/">ma1509</a>
<br>(1.0-3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ma1509.5.html">sane-ma1509</a></td>
+<td align=center><a href="man/sane-ma1509.5.html">sane-ma1509</a></td>
</tr>
<tr><td align=center>fi-4120C</td>
<td align=center>SCSI USB</td>
@@ -10305,7 +10305,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4120C2</td>
<td align=center>SCSI USB</td>
@@ -10316,7 +10316,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4220C</td>
<td align=center>SCSI USB</td>
@@ -10327,7 +10327,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4220C2</td>
<td align=center>SCSI USB</td>
@@ -10338,7 +10338,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4340C</td>
<td align=center>SCSI USB</td>
@@ -10349,7 +10349,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4530C</td>
<td align=center>SCSI USB</td>
@@ -10360,7 +10360,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4640S</td>
<td align=center>SCSI</td>
@@ -10371,7 +10371,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4750C</td>
<td align=center>SCSI</td>
@@ -10382,7 +10382,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4750L</td>
<td align=center>SCSI</td>
@@ -10393,7 +10393,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4860C</td>
<td align=center>SCSI</td>
@@ -10404,7 +10404,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4860C2</td>
<td align=center>SCSI</td>
@@ -10415,7 +10415,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-4990C</td>
<td align=center>SCSI</td>
@@ -10426,7 +10426,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5000N</td>
<td align=center>Ethernet</td>
@@ -10437,7 +10437,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5015C</td>
<td align=center>USB</td>
@@ -10448,7 +10448,7 @@ epson2<br>(1.0.124)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>fi-5110C</td>
<td align=center>USB</td>
@@ -10459,7 +10459,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5110EOX/2</td>
<td align=center>USB</td>
@@ -10470,7 +10470,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5110EOX3</td>
<td align=center>USB</td>
@@ -10481,7 +10481,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5110EOXM</td>
<td align=center>USB</td>
@@ -10492,7 +10492,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5120C</td>
<td align=center>SCSI USB</td>
@@ -10503,7 +10503,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5220C</td>
<td align=center>SCSI USB</td>
@@ -10514,7 +10514,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5530C</td>
<td align=center>SCSI USB</td>
@@ -10525,7 +10525,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5530C2</td>
<td align=center>SCSI USB</td>
@@ -10536,7 +10536,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5650C</td>
<td align=center>SCSI USB</td>
@@ -10547,7 +10547,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5750C</td>
<td align=center>SCSI USB</td>
@@ -10558,7 +10558,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5900C</td>
<td align=center>SCSI USB</td>
@@ -10569,7 +10569,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-5950</td>
<td align=center>SCSI USB</td>
@@ -10580,7 +10580,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6000NS</td>
<td align=center>Ethernet</td>
@@ -10591,7 +10591,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6110</td>
<td align=center>USB</td>
@@ -10602,7 +10602,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6130</td>
<td align=center>USB</td>
@@ -10613,7 +10613,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6130Z</td>
<td align=center>USB</td>
@@ -10624,7 +10624,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6140</td>
<td align=center>SCSI USB</td>
@@ -10635,7 +10635,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6140Z</td>
<td align=center>SCSI USB</td>
@@ -10646,7 +10646,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6230</td>
<td align=center>USB</td>
@@ -10657,7 +10657,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6230Z</td>
<td align=center>USB</td>
@@ -10668,7 +10668,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6240</td>
<td align=center>SCSI USB</td>
@@ -10679,7 +10679,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6240Z</td>
<td align=center>SCSI USB</td>
@@ -10690,7 +10690,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6670</td>
<td align=center>SCSI USB</td>
@@ -10701,7 +10701,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6670A</td>
<td align=center>SCSI USB</td>
@@ -10712,7 +10712,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6750S</td>
<td align=center>USB</td>
@@ -10723,7 +10723,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6770</td>
<td align=center>SCSI USB</td>
@@ -10734,7 +10734,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6770A</td>
<td align=center>SCSI USB</td>
@@ -10745,7 +10745,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6800</td>
<td align=center>SCSI USB</td>
@@ -10756,7 +10756,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>fi-6800-CGA</td>
<td align=center>SCSI USB</td>
@@ -10767,7 +10767,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center><a href="http://www.remote.org/frederik/projects/software/sane/">M3091DC</a></td>
<td align=center>SCSI</td>
@@ -10778,7 +10778,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3092DC</td>
<td align=center>SCSI</td>
@@ -10789,7 +10789,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3093DE</td>
<td align=center>RS232C/Video</td>
@@ -10800,7 +10800,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3093DG</td>
<td align=center>SCSI</td>
@@ -10811,7 +10811,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3093E</td>
<td align=center>RS232C/Video</td>
@@ -10822,7 +10822,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3093EX</td>
<td align=center>RS232C/Video</td>
@@ -10833,7 +10833,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3093GX</td>
<td align=center>SCSI</td>
@@ -10844,7 +10844,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3096EX</td>
<td align=center>RS232C/Video</td>
@@ -10855,7 +10855,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3096GX</td>
<td align=center>SCSI</td>
@@ -10866,7 +10866,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3097DE</td>
<td align=center>RS232C/Video</td>
@@ -10877,7 +10877,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3097DG</td>
<td align=center>SCSI</td>
@@ -10888,7 +10888,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3097E+</td>
<td align=center>RS232C/Video</td>
@@ -10899,7 +10899,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3097G+</td>
<td align=center>SCSI</td>
@@ -10910,7 +10910,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099A</td>
<td align=center>RS232C/Video</td>
@@ -10921,7 +10921,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099EH</td>
<td align=center>RS232C/Video</td>
@@ -10932,7 +10932,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099EX</td>
<td align=center>RS232C/Video</td>
@@ -10943,7 +10943,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099G</td>
<td align=center>SCSI</td>
@@ -10954,7 +10954,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099GH</td>
<td align=center>SCSI</td>
@@ -10965,7 +10965,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M3099GX</td>
<td align=center>SCSI</td>
@@ -10976,7 +10976,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M4097D</td>
<td align=center>SCSI</td>
@@ -10987,7 +10987,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>M4099D</td>
<td align=center>SCSI</td>
@@ -10998,7 +10998,7 @@ epson2<br>(1.0.124)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanPartner</td>
<td align=center>SCSI</td>
@@ -11009,7 +11009,7 @@ epson2<br>(1.0.124)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanPartner 10</td>
<td align=center>SCSI</td>
@@ -11020,7 +11020,7 @@ epson2<br>(1.0.124)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanPartner 10C</td>
<td align=center>SCSI</td>
@@ -11031,7 +11031,7 @@ epson2<br>(1.0.124)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanPartner 15C</td>
<td align=center>SCSI</td>
@@ -11041,7 +11041,7 @@ epson2<br>(1.0.124)
<td align=center>
sp15c<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sp15c.5.html">sane-sp15c</a></td>
+<td align=center><a href="man/sane-sp15c.5.html">sane-sp15c</a></td>
</tr>
<tr><td align=center>ScanPartner 300C</td>
<td align=center>SCSI</td>
@@ -11052,7 +11052,7 @@ sp15c<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanPartner 600C</td>
<td align=center>SCSI</td>
@@ -11062,7 +11062,7 @@ sp15c<br>(unmaintained)
<td align=center>
sp15c<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sp15c.5.html">sane-sp15c</a></td>
+<td align=center><a href="man/sane-sp15c.5.html">sane-sp15c</a></td>
</tr>
<tr><td align=center>ScanPartner 620C</td>
<td align=center>SCSI</td>
@@ -11073,7 +11073,7 @@ sp15c<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanPartner Jr</td>
<td align=center>SCSI</td>
@@ -11084,7 +11084,7 @@ sp15c<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanSnap fi-6010N</td>
<td align=center>Ethernet</td>
@@ -11095,7 +11095,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap iX500</td>
<td align=center>USB WiFi</td>
@@ -11106,7 +11106,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap N1800</td>
<td align=center>Ethernet</td>
@@ -11117,7 +11117,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S300</td>
<td align=center>USB</td>
@@ -11128,7 +11128,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/epjitsu/">epjitsu</a>
<br>(20)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a></td>
+<td align=center><a href="man/sane-epjitsu.5.html">sane-epjitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S300M</td>
<td align=center>USB</td>
@@ -11139,7 +11139,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/epjitsu/">epjitsu</a>
<br>(20)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a></td>
+<td align=center><a href="man/sane-epjitsu.5.html">sane-epjitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S500</td>
<td align=center>USB</td>
@@ -11150,7 +11150,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S500M</td>
<td align=center>USB</td>
@@ -11161,7 +11161,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S510</td>
<td align=center>USB</td>
@@ -11172,7 +11172,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S510M</td>
<td align=center>USB</td>
@@ -11183,7 +11183,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S1100</td>
<td align=center>USB</td>
@@ -11194,7 +11194,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/epjitsu/">epjitsu</a>
<br>(20)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a></td>
+<td align=center><a href="man/sane-epjitsu.5.html">sane-epjitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S1300</td>
<td align=center>USB</td>
@@ -11205,7 +11205,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/epjitsu/">epjitsu</a>
<br>(20)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-epjitsu.5.html">sane-epjitsu</a></td>
+<td align=center><a href="man/sane-epjitsu.5.html">sane-epjitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S1500</td>
<td align=center>USB</td>
@@ -11216,7 +11216,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanSnap S1500M</td>
<td align=center>USB</td>
@@ -11227,7 +11227,7 @@ sp15c<br>(unmaintained)
<a href="http://www.thebility.com/fujitsu/">fujitsu</a>
<br>(117)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-fujitsu.5.html">sane-fujitsu</a></td>
+<td align=center><a href="man/sane-fujitsu.5.html">sane-fujitsu</a></td>
</tr>
<tr><td align=center>ScanStation</td>
<td align=center>SCSI</td>
@@ -11238,7 +11238,7 @@ sp15c<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-GALLERY">Manufacturer: Gallery</a></h3>
@@ -11263,12 +11263,12 @@ sp15c<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-GENIUS">Manufacturer: Genius</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.genius-kye.com/">http://www.genius-kye.com/</a>, <a href="http://www.geniusmouse.co.uk/">http://www.geniusmouse.co.uk/</a>, <a href="http://www.geniusnet.com.tw/">http://www.geniusnet.com.tw/</a><br>
</p>
<table border=1>
@@ -11281,13 +11281,13 @@ sp15c<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-cs.html">ColorPage CS</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-cs.html">ColorPage CS</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported, see link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11301,7 +11301,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
<tr><td align=center>Colorpage HR6 V2</td>
<td align=center>USB</td>
@@ -11312,7 +11312,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Colorpage HR6 V2</td>
<td align=center>USB</td>
@@ -11323,7 +11323,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Colorpage HR6A</td>
<td align=center>USB</td>
@@ -11334,7 +11334,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Colorpage HR6X</td>
<td align=center>USB</td>
@@ -11345,7 +11345,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Colorpage HR6X EPP</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -11356,15 +11356,15 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-hr6x.html">ColorPage HR6X Slim</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-hr6x.html">ColorPage HR6X Slim</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2019</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11378,7 +11378,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Colorpage HR7LE</td>
<td align=center>USB</td>
@@ -11389,37 +11389,37 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-hr7x.html">ColorPage HR7X</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-hr7x.html">ColorPage HR7X</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2018</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-hr7xe.html">ColorPage HR7XE</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-hr7xe.html">ColorPage HR7XE</a></td>
<td align=center>USB</td>
<td align=center>0x06dc/0x0012</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsuported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-hr8.html">ColorPage HR8</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-hr8.html">ColorPage HR8</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x201c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11433,7 +11433,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ColorPage Slim 1200</td>
<td align=center>USB</td>
@@ -11444,7 +11444,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid 1200 X</td>
<td align=center>USB</td>
@@ -11455,7 +11455,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid 1200 XE</td>
<td align=center>USB</td>
@@ -11466,7 +11466,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ColorPage Vivid III USB</td>
<td align=center>USB</td>
@@ -11477,7 +11477,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
<tr><td align=center>Colorpage Vivid III V2</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -11488,7 +11488,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>Colorpage Vivid Pro II Film</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -11499,7 +11499,7 @@ sp15c<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>Colorpage Vivid3 V2</td>
<td align=center>USB</td>
@@ -11510,7 +11510,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid3x</td>
<td align=center>USB</td>
@@ -11521,7 +11521,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid3xe</td>
<td align=center>USB</td>
@@ -11532,7 +11532,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid4</td>
<td align=center>USB</td>
@@ -11543,7 +11543,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid4x</td>
<td align=center>USB</td>
@@ -11554,7 +11554,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Colorpage Vivid4xe</td>
<td align=center>USB</td>
@@ -11565,7 +11565,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ColorPage-EP</td>
<td align=center>Parport</td>
@@ -11576,7 +11576,7 @@ sp15c<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ColorPage-HR5 (Pro)</td>
<td align=center>SCSI</td>
@@ -11587,7 +11587,7 @@ sp15c<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>ColorPage-Life Pro</td>
<td align=center>Parport (EPP/ECP)</td>
@@ -11598,15 +11598,15 @@ sp15c<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/genius-colorpage-slim-1200-usb2.html">ColorPage-Slim 1200 USB2</a></td>
+<tr><td align=center><a href="unsupported/genius-colorpage-slim-1200-usb2.html">ColorPage-Slim 1200 USB2</a></td>
<td align=center>USB</td>
<td align=center>0x0458/0x2020</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11620,7 +11620,7 @@ sp15c<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>FS-1130 Colorpage Scanner</td>
<td align=center>SCSI</td>
@@ -11631,7 +11631,7 @@ sp15c<br>(unmaintained)
<a href="http://www.zago.net/sane/#leo">leo</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-leo.5.html">sane-leo</a></td>
+<td align=center><a href="man/sane-leo.5.html">sane-leo</a></td>
</tr>
</table>
<h3><a name="Z-GOOGLEGEAR">Manufacturer: Googlegear</a></h3>
@@ -11656,7 +11656,7 @@ sp15c<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-GUILLEMOT">Manufacturer: Guillemot</a></h3>
@@ -11678,18 +11678,18 @@ sp15c<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Identical to the Benq Prisa 620P.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
+<tr><td align=center><a href="unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11697,7 +11697,7 @@ sp15c<br>(unmaintained)
</table>
<h3><a name="Z-GUILLEMOT---HERCULES">Manufacturer: Guillemot / Hercules</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.guillemot.com">http://www.guillemot.com</a><br>
</p>
<table border=1>
@@ -11719,7 +11719,7 @@ sp15c<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Maxi Scan A4 Deluxe (SCSI)</td>
<td align=center>SCSI</td>
@@ -11730,7 +11730,7 @@ sp15c<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Maxi Scan A4 USB 640U</td>
<td align=center>USB</td>
@@ -11741,7 +11741,7 @@ sp15c<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Scan@home Touch 1248 (USB)</td>
<td align=center>USB</td>
@@ -11752,7 +11752,7 @@ sp15c<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
</table>
<h3><a name="Z-HERCULES">Manufacturer: Hercules</a></h3>
@@ -11768,13 +11768,13 @@ sp15c<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
+<tr><td align=center><a href="unsupported/teco-vm6509.html">SCAN@HOME 48 USB</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11782,7 +11782,7 @@ sp15c<br>(unmaintained)
</table>
<h3><a name="Z-HEWLETT-PACKARD">Manufacturer: Hewlett-Packard</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.hp.com">http://www.hp.com</a>, <a href="http://www.hp.com/">http://www.hp.com/</a><br>
</p>
<table border=1>
@@ -11803,7 +11803,7 @@ sp15c<br>(unmaintained)
<td align=center>
hpljm1005<br>(0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
+<td align=center><a href="man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
</tr>
<tr><td align=center>LaserJet M1120 MFP</td>
<td align=center>USB</td>
@@ -11813,7 +11813,7 @@ hpljm1005<br>(0)
<td align=center>
hpljm1005<br>(0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
+<td align=center><a href="man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
</tr>
<tr><td align=center>LaserJet M1120n MFP</td>
<td align=center>USB</td>
@@ -11823,15 +11823,15 @@ hpljm1005<br>(0)
<td align=center>
hpljm1005<br>(0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
+<td align=center><a href="man/sane-hpljm1005.5.html">sane-hpljm1005</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-photo-1000.html">Photo Scanner 1000</a></td>
+<tr><td align=center><a href="unsupported/hp-photo-1000.html">Photo Scanner 1000</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1001</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported by SANE. However, it's detected as mass storage device so just mounting it is reported to work. See link for device data.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11842,29 +11842,29 @@ hpljm1005<br>(0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported by SANE. No details known. 10x15 cm. Maybe similar to Photo Scanner 1000?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-photosmart-3180.html">Photosmart C3180</a></td>
+<tr><td align=center><a href="unsupported/hp-photosmart-3180.html">Photosmart C3180</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x5611</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-photosmart-5100.html">Photosmart C5100 series</a></td>
+<tr><td align=center><a href="unsupported/hp-photosmart-5100.html">Photosmart C5100 series</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x5811</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11878,26 +11878,26 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-photosmart-s20xi.html">Photosmart S20 (C5101A)</a></td>
+<tr><td align=center><a href="unsupported/hp-photosmart-s20xi.html">Photosmart S20 (C5101A)</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-photosmart-s20xi.html">Photosmart S20xi (C7150A)</a></td>
+<tr><td align=center><a href="unsupported/hp-photosmart-s20xi.html">Photosmart S20xi (C7150A)</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet by SANE. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -11911,7 +11911,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 3p</td>
<td align=center>SCSI</td>
@@ -11922,7 +11922,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 4c</td>
<td align=center>SCSI</td>
@@ -11933,7 +11933,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 4p</td>
<td align=center>SCSI</td>
@@ -11944,7 +11944,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 5p</td>
<td align=center>SCSI</td>
@@ -11955,7 +11955,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 5s</td>
<td align=center>Parport (EPP)</td>
@@ -11966,7 +11966,7 @@ hpljm1005<br>(0)
<a href="http://hpsj5s.sourceforge.net/">hpsj5s</a>
<br>(0.03)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hpsj5s.5.html">sane-hpsj5s</a></td>
+<td align=center><a href="man/sane-hpsj5s.5.html">sane-hpsj5s</a></td>
</tr>
<tr><td align=center>ScanJet 2100C</td>
<td align=center>USB</td>
@@ -11977,7 +11977,7 @@ hpljm1005<br>(0)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>ScanJet 2200C</td>
<td align=center>USB</td>
@@ -11988,7 +11988,7 @@ hpljm1005<br>(0)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>ScanJet 2300C</td>
<td align=center>USB</td>
@@ -11999,7 +11999,7 @@ hpljm1005<br>(0)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet 2400C</td>
<td align=center>USB</td>
@@ -12010,7 +12010,7 @@ hpljm1005<br>(0)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>Scanjet 3200C</td>
<td align=center>Parport (EPP/ECP)</td>
@@ -12021,7 +12021,7 @@ hpljm1005<br>(0)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>ScanJet 3300c</td>
<td align=center>USB</td>
@@ -12032,7 +12032,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>ScanJet 3400c</td>
<td align=center>USB</td>
@@ -12043,7 +12043,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>ScanJet 3500C</td>
<td align=center>USB</td>
@@ -12054,7 +12054,7 @@ hpljm1005<br>(0)
<a href="http://projects.troy.rollo.name/rt-scanners/">hp3500</a>
<br>(1.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3500.5.html">sane-hp3500</a></td>
+<td align=center><a href="man/sane-hp3500.5.html">sane-hp3500</a></td>
</tr>
<tr><td align=center>ScanJet 3530C</td>
<td align=center>USB</td>
@@ -12065,7 +12065,7 @@ hpljm1005<br>(0)
<a href="http://projects.troy.rollo.name/rt-scanners/">hp3500</a>
<br>(1.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3500.5.html">sane-hp3500</a></td>
+<td align=center><a href="man/sane-hp3500.5.html">sane-hp3500</a></td>
</tr>
<tr><td align=center>ScanJet 3570C</td>
<td align=center>USB</td>
@@ -12076,7 +12076,7 @@ hpljm1005<br>(0)
<a href="http://projects.troy.rollo.name/rt-scanners/">hp3500</a>
<br>(1.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3500.5.html">sane-hp3500</a></td>
+<td align=center><a href="man/sane-hp3500.5.html">sane-hp3500</a></td>
</tr>
<tr><td align=center>ScanJet 3670C</td>
<td align=center>USB</td>
@@ -12087,7 +12087,7 @@ hpljm1005<br>(0)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet 3690C</td>
<td align=center>USB</td>
@@ -12098,7 +12098,7 @@ hpljm1005<br>(0)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet 3770</td>
<td align=center>USB</td>
@@ -12106,7 +12106,7 @@ hpljm1005<br>(0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12120,7 +12120,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>ScanJet 3970c</td>
<td align=center>USB</td>
@@ -12131,7 +12131,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>ScanJet 4070 Photosmart</td>
<td align=center>USB</td>
@@ -12142,7 +12142,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>ScanJet 4100C</td>
<td align=center>USB</td>
@@ -12153,7 +12153,7 @@ hpljm1005<br>(0)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 4200C</td>
<td align=center>USB</td>
@@ -12164,7 +12164,7 @@ hpljm1005<br>(0)
<a href="http://hp4200-backend.sourceforge.net">hp4200</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp4200.5.html">sane-hp4200</a></td>
+<td align=center><a href="man/sane-hp4200.5.html">sane-hp4200</a></td>
</tr>
<tr><td align=center>ScanJet 4200Cse</td>
<td align=center>USB</td>
@@ -12175,7 +12175,7 @@ hpljm1005<br>(0)
<a href="http://hp4200-backend.sourceforge.net">hp4200</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp4200.5.html">sane-hp4200</a></td>
+<td align=center><a href="man/sane-hp4200.5.html">sane-hp4200</a></td>
</tr>
<tr><td align=center>ScanJet 4200Cxi</td>
<td align=center>USB</td>
@@ -12186,7 +12186,7 @@ hpljm1005<br>(0)
<a href="http://hp4200-backend.sourceforge.net">hp4200</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp4200.5.html">sane-hp4200</a></td>
+<td align=center><a href="man/sane-hp4200.5.html">sane-hp4200</a></td>
</tr>
<tr><td align=center>ScanJet 4300c</td>
<td align=center>USB</td>
@@ -12197,7 +12197,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>ScanJet 4300c/Silitek</td>
<td align=center>USB</td>
@@ -12208,7 +12208,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>ScanJet 4370</td>
<td align=center>USB</td>
@@ -12219,7 +12219,7 @@ hpljm1005<br>(0)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>scanjet 4400c</td>
<td align=center>USB</td>
@@ -12230,7 +12230,7 @@ hpljm1005<br>(0)
<a href="http://stef.dev.free.fr/sane/rts8891/index.html">rts8891</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-rts8891.5.html">sane-rts8891</a></td>
+<td align=center><a href="man/sane-rts8891.5.html">sane-rts8891</a></td>
</tr>
<tr><td align=center>scanjet 4470c</td>
<td align=center>USB</td>
@@ -12241,7 +12241,7 @@ hpljm1005<br>(0)
<a href="http://stef.dev.free.fr/sane/rts8891/index.html">rts8891</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-rts8891.5.html">sane-rts8891</a></td>
+<td align=center><a href="man/sane-rts8891.5.html">sane-rts8891</a></td>
</tr>
<tr><td align=center>ScanJet 4500C</td>
<td align=center>USB</td>
@@ -12251,7 +12251,7 @@ hpljm1005<br>(0)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
<tr><td align=center>ScanJet 4570C</td>
<td align=center>USB</td>
@@ -12261,15 +12261,15 @@ hp5590<br>(1.0.5)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-scanjet-4600.html">ScanJet 4600</a></td>
+<tr><td align=center><a href="unsupported/hp-scanjet-4600.html">ScanJet 4600</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x3005</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12280,7 +12280,7 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See ScanJet 4600 entry.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12294,15 +12294,15 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-scanjet-4850.html">ScanJet 4890C</a></td>
+<tr><td align=center><a href="unsupported/hp-scanjet-4850.html">ScanJet 4890C</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1b05</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843, maybe can be added to genesys backend </td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12316,7 +12316,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 5200C</td>
<td align=center>Parport USB</td>
@@ -12327,7 +12327,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 5300C</td>
<td align=center>USB</td>
@@ -12338,7 +12338,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 5370C</td>
<td align=center>USB</td>
@@ -12349,7 +12349,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 5400c</td>
<td align=center>USB</td>
@@ -12360,7 +12360,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp5400backend">hp5400</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5400.5.html">sane-hp5400</a></td>
+<td align=center><a href="man/sane-hp5400.5.html">sane-hp5400</a></td>
</tr>
<tr><td align=center>ScanJet 5470c</td>
<td align=center>USB</td>
@@ -12371,7 +12371,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp5400backend">hp5400</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5400.5.html">sane-hp5400</a></td>
+<td align=center><a href="man/sane-hp5400.5.html">sane-hp5400</a></td>
</tr>
<tr><td align=center>ScanJet 5490c</td>
<td align=center>USB</td>
@@ -12382,7 +12382,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp5400backend">hp5400</a>
<br>(1.0-2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5400.5.html">sane-hp5400</a></td>
+<td align=center><a href="man/sane-hp5400.5.html">sane-hp5400</a></td>
</tr>
<tr><td align=center>ScanJet 5500C</td>
<td align=center>USB</td>
@@ -12392,15 +12392,15 @@ hp5590<br>(1.0.5)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-scanjet-5530.html">ScanJet 5530C Photosmart</a></td>
+<tr><td align=center><a href="unsupported/hp-scanjet-5530.html">ScanJet 5530C Photosmart</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x1605</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12413,7 +12413,7 @@ hp5590<br>(1.0.5)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
<tr><td align=center>ScanJet 5590</td>
<td align=center>USB</td>
@@ -12423,7 +12423,7 @@ hp5590<br>(1.0.5)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
<tr><td align=center>ScanJet 6100C</td>
<td align=center>SCSI</td>
@@ -12434,7 +12434,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 6200C</td>
<td align=center>SCSI USB</td>
@@ -12445,7 +12445,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 6250C</td>
<td align=center>SCSI USB</td>
@@ -12456,7 +12456,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 6300C</td>
<td align=center>SCSI USB</td>
@@ -12467,7 +12467,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 6350C</td>
<td align=center>SCSI USB</td>
@@ -12478,7 +12478,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 6390C</td>
<td align=center>SCSI USB</td>
@@ -12489,7 +12489,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet 7400c</td>
<td align=center>USB</td>
@@ -12500,7 +12500,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 7450c</td>
<td align=center>USB</td>
@@ -12511,7 +12511,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 7490c</td>
<td align=center>USB</td>
@@ -12522,7 +12522,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 7650</td>
<td align=center>USB</td>
@@ -12532,7 +12532,7 @@ hp5590<br>(1.0.5)
<td align=center>
hp5590<br>(1.0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp5590.5.html">sane-hp5590</a></td>
+<td align=center><a href="man/sane-hp5590.5.html">sane-hp5590</a></td>
</tr>
<tr><td align=center>ScanJet 8200</td>
<td align=center>USB</td>
@@ -12543,7 +12543,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8250</td>
<td align=center>USB</td>
@@ -12554,7 +12554,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8270</td>
<td align=center>USB</td>
@@ -12565,7 +12565,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8290</td>
<td align=center>USB</td>
@@ -12576,7 +12576,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8300</td>
<td align=center>USB</td>
@@ -12587,7 +12587,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8350</td>
<td align=center>USB</td>
@@ -12598,7 +12598,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet 8390</td>
<td align=center>USB</td>
@@ -12609,7 +12609,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>ScanJet G2410</td>
<td align=center>USB</td>
@@ -12620,7 +12620,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet G2710</td>
<td align=center>USB</td>
@@ -12631,7 +12631,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>ScanJet G3010</td>
<td align=center>USB</td>
@@ -12642,7 +12642,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>ScanJet G3110</td>
<td align=center>USB</td>
@@ -12653,15 +12653,15 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/hp-g4000.html">ScanJet G4000</a></td>
+<tr><td align=center><a href="unsupported/hp-g4000.html">ScanJet G4000</a></td>
<td align=center>USB</td>
<td align=center>0x03f0/0x4505</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12675,7 +12675,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet G4050</td>
<td align=center>USB</td>
@@ -12686,7 +12686,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet IIc</td>
<td align=center>SCSI</td>
@@ -12697,7 +12697,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet IIcx</td>
<td align=center>SCSI</td>
@@ -12708,7 +12708,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet IIp</td>
<td align=center>SCSI</td>
@@ -12719,7 +12719,7 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
<tr><td align=center>ScanJet N6310</td>
<td align=center>USB</td>
@@ -12730,7 +12730,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>ScanJet Plus</td>
<td align=center>Propietary</td>
@@ -12741,12 +12741,12 @@ hp5590<br>(1.0.5)
<a href="http://www.kirchgessner.net/">hp</a>
<br>(1.06)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp.5.html">sane-hp</a></td>
+<td align=center><a href="man/sane-hp.5.html">sane-hp</a></td>
</tr>
</table>
<h3><a name="Z-IBM">Manufacturer: IBM</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.ibm.com/">http://www.ibm.com/</a>, <a href="http://www.ibm.com">http://www.ibm.com</a><br>
</p>
<table border=1>
@@ -12768,7 +12768,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/ibm-backend/">ibm</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ibm.5.html">sane-ibm</a></td>
+<td align=center><a href="man/sane-ibm.5.html">sane-ibm</a></td>
</tr>
<tr><td align=center>ADF Color Scanner</td>
<td align=center>Proprietary</td>
@@ -12776,7 +12776,7 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Uses proprietary ISA card. Maybe the same as the Plustek Spectra ADF?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12784,7 +12784,7 @@ hp5590<br>(1.0.5)
</table>
<h3><a name="Z-IOMAGIC">Manufacturer: IOMagic</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.iomagic.com/">http://www.iomagic.com/</a><br>
</p>
<table border=1>
@@ -12797,13 +12797,13 @@ hp5590<br>(1.0.5)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">MobileScan USB</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">MobileScan USB</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12811,7 +12811,7 @@ hp5590<br>(1.0.5)
</table>
<h3><a name="Z-IRIS">Manufacturer: Iris</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://irislink.com/">http://irislink.com/</a><br>
</p>
<table border=1>
@@ -12824,35 +12824,35 @@ hp5590<br>(1.0.5)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/iris-iriscan.html">IriScan</a></td>
+<tr><td align=center><a href="unsupported/iris-iriscan.html">IriScan</a></td>
<td align=center>USB</td>
<td align=center>0x0a53/0x1000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. LM9832/3. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/iris-business.html">IRISCard Pro (IBCR II)</a></td>
+<tr><td align=center><a href="unsupported/iris-business.html">IRISCard Pro (IBCR II)</a></td>
<td align=center>USB</td>
<td align=center>0x0a38/0x0301</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/iris-irispen-translator.html">IRISPen Translator Executive</a></td>
+<tr><td align=center><a href="unsupported/iris-irispen-translator.html">IRISPen Translator Executive</a></td>
<td align=center>USB</td>
<td align=center>0x0f43/0x015a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -12880,12 +12880,12 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-KODAK">Manufacturer: Kodak</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.kodak.com">http://www.kodak.com</a>, <a href="http://www.kodak.com/">http://www.kodak.com/</a><br>
</p>
<table border=1>
@@ -12907,7 +12907,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Color Scanner 4500</td>
<td align=center>SCSI</td>
@@ -12918,7 +12918,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>ESP 5</td>
<td align=center>USB</td>
@@ -12929,7 +12929,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 7</td>
<td align=center>USB</td>
@@ -12940,7 +12940,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 9</td>
<td align=center>USB</td>
@@ -12951,7 +12951,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 2150</td>
<td align=center>USB</td>
@@ -12962,7 +12962,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 2170</td>
<td align=center>USB</td>
@@ -12973,7 +12973,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 3200</td>
<td align=center>USB</td>
@@ -12984,7 +12984,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 3300</td>
<td align=center>USB</td>
@@ -12995,7 +12995,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 4100</td>
<td align=center>USB</td>
@@ -13006,7 +13006,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 5000</td>
<td align=center>USB</td>
@@ -13017,7 +13017,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 5100</td>
<td align=center>USB</td>
@@ -13028,7 +13028,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 5200</td>
<td align=center>USB Ethernet</td>
@@ -13039,7 +13039,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 5300</td>
<td align=center>USB</td>
@@ -13050,7 +13050,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 5500</td>
<td align=center>USB</td>
@@ -13061,7 +13061,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 6100</td>
<td align=center>USB</td>
@@ -13072,7 +13072,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 7200</td>
<td align=center>USB</td>
@@ -13083,7 +13083,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP 9200</td>
<td align=center>USB</td>
@@ -13094,7 +13094,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP C110</td>
<td align=center>USB</td>
@@ -13105,7 +13105,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP C115</td>
<td align=center>USB</td>
@@ -13116,7 +13116,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP C310</td>
<td align=center>USB</td>
@@ -13127,7 +13127,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>ESP C315</td>
<td align=center>USB</td>
@@ -13138,7 +13138,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>Hero 3.1</td>
<td align=center>USB</td>
@@ -13149,7 +13149,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>Hero 5.1</td>
<td align=center>USB</td>
@@ -13160,7 +13160,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>Hero 7.1</td>
<td align=center>USB</td>
@@ -13171,7 +13171,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>Hero 9.1</td>
<td align=center>USB Ethernet</td>
@@ -13182,7 +13182,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>Hero Office 6.1</td>
<td align=center>USB</td>
@@ -13193,7 +13193,7 @@ hp5590<br>(1.0.5)
<a href="http://sourceforge.net/projects/cupsdriverkodak/">kodakaio</a>
<br>(2.4.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodakaio.5.html">sane-kodakaio</a></td>
+<td align=center><a href="man/sane-kodakaio.5.html">sane-kodakaio</a></td>
</tr>
<tr><td align=center>i30</td>
<td align=center>USB</td>
@@ -13204,7 +13204,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i40</td>
<td align=center>USB</td>
@@ -13215,7 +13215,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i50</td>
<td align=center>USB</td>
@@ -13226,7 +13226,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i55</td>
<td align=center>USB</td>
@@ -13237,7 +13237,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i60</td>
<td align=center>USB</td>
@@ -13248,7 +13248,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i65</td>
<td align=center>USB</td>
@@ -13259,7 +13259,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i80</td>
<td align=center>USB</td>
@@ -13270,7 +13270,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>i150 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13281,7 +13281,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i160 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13292,7 +13292,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i250 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13303,7 +13303,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i260 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13314,7 +13314,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i280 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13325,7 +13325,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i610 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13336,7 +13336,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i620 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13347,7 +13347,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i640 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13358,7 +13358,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i660 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13369,7 +13369,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i730 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13380,7 +13380,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i750 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13391,7 +13391,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i780 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13402,7 +13402,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i810 Scanner</td>
<td align=center>SCSI</td>
@@ -13413,7 +13413,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i820 Scanner</td>
<td align=center>SCSI</td>
@@ -13424,7 +13424,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i830 Scanner</td>
<td align=center>SCSI</td>
@@ -13435,7 +13435,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i840 Scanner</td>
<td align=center>SCSI</td>
@@ -13446,7 +13446,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i1840 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13457,7 +13457,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>i1860 Scanner</td>
<td align=center>IEEE-1394</td>
@@ -13468,7 +13468,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>s1740</td>
<td align=center>SCSI</td>
@@ -13479,7 +13479,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 900</td>
<td align=center>SCSI</td>
@@ -13490,7 +13490,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 923</td>
<td align=center>SCSI</td>
@@ -13501,7 +13501,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 1500</td>
<td align=center>SCSI</td>
@@ -13512,7 +13512,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 2500</td>
<td align=center>SCSI</td>
@@ -13523,7 +13523,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 3500</td>
<td align=center>SCSI</td>
@@ -13534,7 +13534,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 3510</td>
<td align=center>SCSI</td>
@@ -13545,7 +13545,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 3520</td>
<td align=center>SCSI</td>
@@ -13556,7 +13556,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 5500</td>
<td align=center>SCSI</td>
@@ -13567,7 +13567,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 7500</td>
<td align=center>SCSI</td>
@@ -13578,7 +13578,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 7520</td>
<td align=center>SCSI</td>
@@ -13589,7 +13589,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 9500</td>
<td align=center>SCSI</td>
@@ -13600,7 +13600,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Scanner 9520</td>
<td align=center>SCSI</td>
@@ -13611,7 +13611,7 @@ hp5590<br>(1.0.5)
<a href="http://www.thebility.com/kodak/">kodak</a>
<br>(7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kodak.5.html">sane-kodak</a></td>
+<td align=center><a href="man/sane-kodak.5.html">sane-kodak</a></td>
</tr>
<tr><td align=center>Snapshot Photo Scanner 1</td>
<td align=center>Parport</td>
@@ -13619,7 +13619,7 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. FCC ID HWF96PHS</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -13627,7 +13627,7 @@ hp5590<br>(1.0.5)
</table>
<h3><a name="Z-KOMODO">Manufacturer: Komodo</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.komodo.com/">http://www.komodo.com/</a><br>
</p>
<table border=1>
@@ -13649,12 +13649,12 @@ hp5590<br>(1.0.5)
<a href="http://www.zago.net/sane/">sceptre</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sceptre.5.html">sane-sceptre</a></td>
+<td align=center><a href="man/sane-sceptre.5.html">sane-sceptre</a></td>
</tr>
</table>
<h3><a name="Z-KONICA-MINOLTA">Manufacturer: KONICA MINOLTA</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.konicaminolta.com/">http://www.konicaminolta.com/</a><br>
</p>
<table border=1>
@@ -13676,7 +13676,7 @@ hp5590<br>(1.0.5)
<a href="http://wiki.kainhofer.com/hardware/magicolor_scan">magicolor</a>
<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-magicolor.5.html">sane-magicolor</a></td>
+<td align=center><a href="man/sane-magicolor.5.html">sane-magicolor</a></td>
</tr>
<tr><td align=center>DiMage 1611</td>
<td align=center>USB Network</td>
@@ -13687,59 +13687,59 @@ hp5590<br>(1.0.5)
<a href="http://wiki.kainhofer.com/hardware/magicolor_scan">magicolor</a>
<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-magicolor.5.html">sane-magicolor</a></td>
+<td align=center><a href="man/sane-magicolor.5.html">sane-magicolor</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/minolta-dse-5400.html">DiMAGE Scan Elite 5400</a></td>
+<tr><td align=center><a href="unsupported/minolta-dse-5400.html">DiMAGE Scan Elite 5400</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x0686/0x400e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. May work with vuescan. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/minolta-dse-5400-2.html">DiMAGE Scan Elite 5400 2</a></td>
+<tr><td align=center><a href="unsupported/minolta-dse-5400-2.html">DiMAGE Scan Elite 5400 2</a></td>
<td align=center>USB</td>
<td align=center>0x132b/0x0012</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/minolta-dimage-scan-multi-pro.html">DiMAGE Scan Multi Pro</a></td>
+<tr><td align=center><a href="unsupported/minolta-dimage-scan-multi-pro.html">DiMAGE Scan Multi Pro</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/minolta-dual-scan-III.html">Dual Scan III</a></td>
+<tr><td align=center><a href="unsupported/minolta-dual-scan-III.html">Dual Scan III</a></td>
<td align=center>USB</td>
<td align=center>0x0686/0x400d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. May work with vuescan. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/minolta-dual-scan-IV.html">Dual Scan IV</a></td>
+<tr><td align=center><a href="unsupported/minolta-dual-scan-IV.html">Dual Scan IV</a></td>
<td align=center>USB</td>
<td align=center>0x132b/0x000a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Works with vuescan. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -13753,7 +13753,7 @@ hp5590<br>(1.0.5)
<a href="http://wiki.kainhofer.com/hardware/magicolor_scan">magicolor</a>
<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-magicolor.5.html">sane-magicolor</a></td>
+<td align=center><a href="man/sane-magicolor.5.html">sane-magicolor</a></td>
</tr>
<tr><td align=center>magicolor 2480MF</td>
<td align=center>USB Network</td>
@@ -13761,7 +13761,7 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Uses a different scanning protocol than the magicolor 1690MF</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -13789,7 +13789,7 @@ hp5590<br>(1.0.5)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-LEO">Manufacturer: LEO</a></h3>
@@ -13814,12 +13814,12 @@ hp5590<br>(1.0.5)
<a href="http://www.zago.net/sane/#leo">leo</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-leo.5.html">sane-leo</a></td>
+<td align=center><a href="man/sane-leo.5.html">sane-leo</a></td>
</tr>
</table>
<h3><a name="Z-LEXMARK">Manufacturer: Lexmark</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.lexmark.com/">http://www.lexmark.com/</a><br>
</p>
<table border=1>
@@ -13832,24 +13832,24 @@ hp5590<br>(1.0.5)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-p6250.html">P6250</a></td>
+<tr><td align=center><a href="unsupported/lexmark-p6250.html">P6250</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0097</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-3150.html">Photo 3150</a></td>
+<tr><td align=center><a href="unsupported/lexmark-3150.html">Photo 3150</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x007d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -13863,7 +13863,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X70</td>
<td align=center>USB</td>
@@ -13874,7 +13874,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>X73</td>
<td align=center>USB</td>
@@ -13885,7 +13885,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>X74</td>
<td align=center>USB</td>
@@ -13896,37 +13896,37 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x75.html">X75</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x75.html">X75</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0060</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x75.html">X75 PrinTrio</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x75.html">X75 PrinTrio</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0060</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x83.html">X83</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x83.html">X83</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x003d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. GL640.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -13940,7 +13940,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1130</td>
<td align=center>USB</td>
@@ -13951,7 +13951,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1140</td>
<td align=center>USB</td>
@@ -13962,7 +13962,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1150</td>
<td align=center>USB</td>
@@ -13973,7 +13973,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1170</td>
<td align=center>USB</td>
@@ -13984,7 +13984,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1180</td>
<td align=center>USB</td>
@@ -13995,7 +13995,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1185</td>
<td align=center>USB</td>
@@ -14006,7 +14006,7 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
<tr><td align=center>X1195</td>
<td align=center>USB</td>
@@ -14017,70 +14017,70 @@ hp5590<br>(1.0.5)
<a href="http://stef.dev.free.fr/sane/lexmark">lexmark</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-lexmark.5.html">sane-lexmark</a></td>
+<td align=center><a href="man/sane-lexmark.5.html">sane-lexmark</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x2330.html">X2330</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x2330.html">X2330</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00bb</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x3450.html">X3450</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x3450.html">X3450</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00f6</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x5130.html">X5130</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x5130.html">X5130</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0065</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x5130.html">X5150</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x5130.html">X5150</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0065</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x5250.html">X5250</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x5250.html">X5250</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0093</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x6170.html">X6170</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x6170.html">X6170</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x0072</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14091,29 +14091,29 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See bug #310889 for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x7350.html">X7350</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x7350.html">X7350</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00b8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/lexmark-x8350.html">X8350</a></td>
+<tr><td align=center><a href="unsupported/lexmark-x8350.html">X8350</a></td>
<td align=center>USB</td>
<td align=center>0x043d/0x00b9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14121,7 +14121,7 @@ hp5590<br>(1.0.5)
</table>
<h3><a name="Z-LINOTYPE-HELL">Manufacturer: Linotype Hell</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.heidelberg.com/">http://www.heidelberg.com/</a><br>
</p>
<table border=1>
@@ -14143,7 +14143,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Jade</td>
<td align=center>SCSI</td>
@@ -14154,7 +14154,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Jade2</td>
<td align=center>SCSI</td>
@@ -14165,7 +14165,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Linoscan 1400</td>
<td align=center>SCSI</td>
@@ -14176,7 +14176,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Opal</td>
<td align=center>SCSI</td>
@@ -14187,7 +14187,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Opal Ultra</td>
<td align=center>SCSI</td>
@@ -14198,7 +14198,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Opal2</td>
<td align=center>SCSI</td>
@@ -14209,7 +14209,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir</td>
<td align=center>SCSI</td>
@@ -14220,7 +14220,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir HiRes</td>
<td align=center>SCSI</td>
@@ -14231,7 +14231,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir Ultra</td>
<td align=center>SCSI</td>
@@ -14242,7 +14242,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir Ultra II</td>
<td align=center>SCSI</td>
@@ -14253,7 +14253,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir2</td>
<td align=center>SCSI</td>
@@ -14264,7 +14264,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Saphir3</td>
<td align=center>SCSI</td>
@@ -14275,7 +14275,7 @@ hp5590<br>(1.0.5)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-LOGITECH">Manufacturer: Logitech</a></h3>
@@ -14297,18 +14297,18 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/logitech-pagescan-usb.html">PageScan USB</a></td>
+<tr><td align=center><a href="unsupported/logitech-pagescan-usb.html">PageScan USB</a></td>
<td align=center>USB</td>
<td align=center>0x046d/0x040f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14316,7 +14316,7 @@ hp5590<br>(1.0.5)
</table>
<h3><a name="Z-MEDION-LIFETEC-TEVION-CYTRON">Manufacturer: Medion/Lifetec/Tevion/Cytron</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.medion.com">http://www.medion.com</a>, <a href="http://www.medion.com/">http://www.medion.com/</a>, <a href="http://www.medion.de/">http://www.medion.de/</a><br>
<b>Comment:</b> Sold by Aldi and Tchibo.<br>
</p>
@@ -14339,7 +14339,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>MD 4394</td>
<td align=center>USB</td>
@@ -14350,26 +14350,26 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/medion-md6190.html">MD 6190</a></td>
+<tr><td align=center><a href="unsupported/medion-md6190.html">MD 6190</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/medion-md6190.html">MD 6190</a></td>
+<tr><td align=center><a href="unsupported/medion-md6190.html">MD 6190</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0392</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14383,7 +14383,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>MD 9806</td>
<td align=center>Parport (EPP)</td>
@@ -14394,7 +14394,7 @@ hp5590<br>(1.0.5)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>MD 9848</td>
<td align=center>Parport (EPP)</td>
@@ -14405,48 +14405,48 @@ hp5590<br>(1.0.5)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/tevion-md40420.html">MD 40420</a></td>
+<tr><td align=center><a href="unsupported/tevion-md40420.html">MD 40420</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/medion-md6190.html">MD 41260</a></td>
+<tr><td align=center><a href="unsupported/medion-md6190.html">MD 41260</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/medion-md6190.html">MD 41985</a></td>
+<tr><td align=center><a href="unsupported/medion-md6190.html">MD 41985</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x037b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/tevion-md40420.html">MD 42666</a></td>
+<tr><td align=center><a href="unsupported/tevion-md40420.html">MD 42666</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14457,40 +14457,40 @@ hp5590<br>(1.0.5)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Fingerprint sensor. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/tevion-md90009.html">MD 90009</a></td>
+<tr><td align=center><a href="unsupported/tevion-md90009.html">MD 90009</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/tevion-md90070.html">MD 90070</a></td>
+<tr><td align=center><a href="unsupported/tevion-md90070.html">MD 90070</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3022</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/tevion-md90070.html">MD 90090</a></td>
+<tr><td align=center><a href="unsupported/tevion-md90070.html">MD 90090</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3022</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14504,7 +14504,7 @@ hp5590<br>(1.0.5)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>MD/LT 985x</td>
<td align=center>Parport (EPP)</td>
@@ -14515,7 +14515,7 @@ hp5590<br>(1.0.5)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>MD/LT 9375</td>
<td align=center>USB</td>
@@ -14526,7 +14526,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>MD/LT 9385</td>
<td align=center>USB</td>
@@ -14537,7 +14537,7 @@ hp5590<br>(1.0.5)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>MD/LT 9890</td>
<td align=center>Parport (EPP)</td>
@@ -14548,7 +14548,7 @@ hp5590<br>(1.0.5)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>MD4394</td>
<td align=center>USB</td>
@@ -14558,7 +14558,7 @@ hp5590<br>(1.0.5)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>MD5345</td>
<td align=center>USB</td>
@@ -14569,7 +14569,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>MD6228</td>
<td align=center>USB</td>
@@ -14580,7 +14580,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>MD6471</td>
<td align=center>USB</td>
@@ -14591,7 +14591,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>MD9693</td>
<td align=center>USB</td>
@@ -14601,7 +14601,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>MD9705</td>
<td align=center>USB</td>
@@ -14611,12 +14611,12 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
</table>
<h3><a name="Z-MEMOREX">Manufacturer: Memorex</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.artecusa.com/">http://www.artecusa.com/</a>, <a href="http://www.memorex.com/">http://www.memorex.com/</a><br>
</p>
<table border=1>
@@ -14629,35 +14629,35 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/memorex-maxx-6136u.html">6136u</a></td>
+<tr><td align=center><a href="unsupported/memorex-maxx-6136u.html">6136u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0346</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4400.html">6142u</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4400.html">6142u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Same as Visioneer Onetouch 4400. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">MaxxScan 6122</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">MaxxScan 6122</a></td>
<td align=center>USB Parport</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14670,15 +14670,15 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/memorex-scf-9612p.html">SCF 9612P</a></td>
+<tr><td align=center><a href="unsupported/memorex-scf-9612p.html">SCF 9612P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14706,12 +14706,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-MICROSTAR">Manufacturer: Microstar</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.microstar.de/">http://www.microstar.de/</a><br>
</p>
<table border=1>
@@ -14732,12 +14732,12 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
</table>
<h3><a name="Z-MICROTEK">Manufacturer: Microtek</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.microtek.com/">http://www.microtek.com/</a><br>
<b>Comment:</b> Microtek makes a wide variety of devices.<br>
</p>
@@ -14757,7 +14757,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Same as Agfa DuoScan T2000XL?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14768,7 +14768,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Same as Agfa DuoScan T2500?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14779,18 +14779,18 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Uses ALI M5611B.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-artixscan-2020.html">ArtixScanDI 2020</a></td>
+<tr><td align=center><a href="unsupported/microtek-artixscan-2020.html">ArtixScanDI 2020</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x202e</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14804,15 +14804,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-filmscan-35.html">FilmScan 35</a></td>
+<tr><td align=center><a href="unsupported/microtek-filmscan-35.html">FilmScan 35</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14826,7 +14826,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>Phantom 636</td>
<td align=center>SCSI</td>
@@ -14837,7 +14837,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>Phantom 636CX</td>
<td align=center>Parport</td>
@@ -14848,15 +14848,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5600.html">ScanMaker 5</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5600.html">ScanMaker 5</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14870,7 +14870,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker 35t+</td>
<td align=center>SCSI</td>
@@ -14881,7 +14881,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker 45t</td>
<td align=center>SCSI</td>
@@ -14892,7 +14892,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>ScanMaker 330</td>
<td align=center>SCSI</td>
@@ -14903,7 +14903,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker 336 CX</td>
<td align=center>SCSI</td>
@@ -14911,7 +14911,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Seems to be similar to the Microtek 330 CX and is detected by the microtek2 backend. Scanning doesn't seem to work however.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14925,7 +14925,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker 600Z(S)</td>
<td align=center>SCSI</td>
@@ -14936,7 +14936,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>ScanMaker 630</td>
<td align=center>SCSI</td>
@@ -14947,7 +14947,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker 636</td>
<td align=center>SCSI</td>
@@ -14958,15 +14958,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-1850s.html">Scanmaker 1850S</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-1850s.html">Scanmaker 1850S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -14980,7 +14980,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
<tr><td align=center>ScanMaker 3600</td>
<td align=center>USB</td>
@@ -14991,7 +14991,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
<tr><td align=center>ScanMaker 3600</td>
<td align=center>USB</td>
@@ -15002,15 +15002,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-3630.html">ScanMaker 3630</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-3630.html">ScanMaker 3630</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Doesn't seem to be compatible to 3600 series, see link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15024,7 +15024,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
<tr><td align=center>ScanMaker 3700</td>
<td align=center>USB</td>
@@ -15035,7 +15035,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
<tr><td align=center>ScanMaker 3750</td>
<td align=center>USB</td>
@@ -15046,26 +15046,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sm3600.sourceforge.net/">sm3600</a>
<br>(0.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3600.5.html">sane-sm3600</a></td>
+<td align=center><a href="man/sane-sm3600.5.html">sane-sm3600</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-3800.html">ScanMaker 3800</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-3800.html">ScanMaker 3800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30ce</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-3830.html">ScanMaker 3830</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-3830.html">ScanMaker 3830</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30ce</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15079,48 +15079,48 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.ziplabel.com/sm3840/">sm3840</a>
<br>(1.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3840.5.html">sane-sm3840</a></td>
+<td align=center><a href="man/sane-sm3840.5.html">sane-sm3840</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-3880.html">ScanMaker 3860</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-3880.html">ScanMaker 3860</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3023</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details. Appears to be similar to ScanMaker 3880.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-3880.html">ScanMaker 3880</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-3880.html">ScanMaker 3880</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3021</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. SQ113 chip. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-4600.html">ScanMaker 4600</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-4600.html">ScanMaker 4600</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x40c7</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-4700.html">ScanMaker 4700</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-4700.html">ScanMaker 4700</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x20b4</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15134,48 +15134,48 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.ziplabel.com/sm3840/">sm3840</a>
<br>(1.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sm3840.5.html">sane-sm3840</a></td>
+<td align=center><a href="man/sane-sm3840.5.html">sane-sm3840</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-4900.html">ScanMaker 4850</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-4900.html">ScanMaker 4850</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-4850-2.html">ScanMaker 4850 II</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-4850-2.html">ScanMaker 4850 II</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-4900.html">ScanMaker 4900</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-4900.html">ScanMaker 4900</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30b9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5600.html">ScanMaker 5600</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5600.html">ScanMaker 5600</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x20a7</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15186,73 +15186,73 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Uses ALI M5615 like the ScanMaker 4700.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5800.html">ScanMaker 5800</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x3008</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5900.html">ScanMaker 5900</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5900.html">ScanMaker 5900</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-5950.html">ScanMaker 5950</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-5950.html">ScanMaker 5950</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30d8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-6000.html">ScanMaker 6000</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-6000.html">ScanMaker 6000</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-6100.html">ScanMaker 6100</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-6100.html">ScanMaker 6100</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e5</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15266,26 +15266,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-6700.html">ScanMaker 6700</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-6700.html">ScanMaker 6700</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05da/0x20c9</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-8700.html">ScanMaker 8700</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-8700.html">ScanMaker 8700</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05da/0x20b1</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details. USB vendor and product ids to be checked.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15296,7 +15296,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. SCSI seems to work with microtek2 backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15310,20 +15310,20 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
<td align=center>USB SCSI</td>
<td align=center>0x05da/0x20de</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Partly unsupported. IEEE-1394 works with microtek2 backend. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-9800.html">ScanMaker 9800XL</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -15332,7 +15332,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>Scanmaker E2</td>
<td align=center>SCSI</td>
@@ -15343,7 +15343,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker E3</td>
<td align=center>SCSI</td>
@@ -15354,7 +15354,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>ScanMaker E3plus</td>
<td align=center>SCSI</td>
@@ -15365,7 +15365,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker E3plus</td>
<td align=center>Parport</td>
@@ -15376,7 +15376,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>Scanmaker E6</td>
<td align=center>SCSI</td>
@@ -15387,15 +15387,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-i320.html">ScanMaker i320</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-i320.html">ScanMaker i320</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x30e6</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15409,7 +15409,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker IIG</td>
<td align=center>SCSI</td>
@@ -15420,7 +15420,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker IIHR</td>
<td align=center>SCSI</td>
@@ -15431,7 +15431,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker III</td>
<td align=center>SCSI</td>
@@ -15442,7 +15442,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Scanmaker IISP</td>
<td align=center>SCSI</td>
@@ -15453,26 +15453,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-s400.html">ScanMaker S400</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-s400.html">ScanMaker S400</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x300b</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanmaker-s400.html">ScanMaker s400</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanmaker-s400.html">ScanMaker s400</a></td>
<td align=center>USB</td>
<td align=center>0x05da/0x201c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15486,7 +15486,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V6USL</td>
<td align=center>USB</td>
@@ -15497,7 +15497,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V6USL</td>
<td align=center>USB</td>
@@ -15508,7 +15508,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V6USL</td>
<td align=center>SCSI</td>
@@ -15519,7 +15519,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V300</td>
<td align=center>Parport</td>
@@ -15530,7 +15530,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V300</td>
<td align=center>SCSI</td>
@@ -15541,7 +15541,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V310</td>
<td align=center>Parport</td>
@@ -15552,7 +15552,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V310</td>
<td align=center>SCSI</td>
@@ -15563,7 +15563,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V600</td>
<td align=center>Parport</td>
@@ -15574,7 +15574,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker V600</td>
<td align=center>SCSI</td>
@@ -15585,7 +15585,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker X6</td>
<td align=center>SCSI</td>
@@ -15596,7 +15596,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker X6EL</td>
<td align=center>SCSI</td>
@@ -15607,7 +15607,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker X6USB</td>
<td align=center>USB</td>
@@ -15618,7 +15618,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>ScanMaker X12USL</td>
<td align=center>SCSI</td>
@@ -15629,15 +15629,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/microtek-scanport-3000.html">ScanPort 3000</a></td>
+<tr><td align=center><a href="unsupported/microtek-scanport-3000.html">ScanPort 3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Vendor/Product ids: 0x04a7/0x0224. Realtek RTS8801B?. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15651,7 +15651,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>SlimScan C6</td>
<td align=center>USB</td>
@@ -15662,12 +15662,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
</table>
<h3><a name="Z-MINOLTA">Manufacturer: Minolta</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.minolta.com">http://www.minolta.com</a><br>
</p>
<table border=1>
@@ -15689,7 +15689,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Dimage Scan Dual II</td>
<td align=center>USB</td>
@@ -15700,7 +15700,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Dimage Scan Dual III</td>
<td align=center>USB</td>
@@ -15711,7 +15711,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Dimage Scan Elite 5400</td>
<td align=center>USB</td>
@@ -15722,7 +15722,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Elite II</td>
<td align=center>USB</td>
@@ -15733,7 +15733,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Scan Multi Pro</td>
<td align=center>SCSI</td>
@@ -15744,7 +15744,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-MINOLTA-QMS">Manufacturer: Minolta-QMS</a></h3>
@@ -15769,7 +15769,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>SC-215</td>
<td align=center>USB</td>
@@ -15780,12 +15780,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-MITSUBISHI">Manufacturer: Mitsubishi</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.mitsubishi.com">http://www.mitsubishi.com</a><br>
</p>
<table border=1>
@@ -15807,7 +15807,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>Diamondview 650U</td>
<td align=center>USB</td>
@@ -15818,7 +15818,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://snapscan.sourceforge.net/">SnapScan</a>
<br>(1.4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-snapscan.5.html">sane-snapscan</a></td>
+<td align=center><a href="man/sane-snapscan.5.html">sane-snapscan</a></td>
</tr>
<tr><td align=center>MCA-ADFC</td>
<td align=center>SCSI</td>
@@ -15829,7 +15829,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>S600C</td>
<td align=center>SCSI</td>
@@ -15840,7 +15840,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>S1200C</td>
<td align=center>SCSI</td>
@@ -15851,7 +15851,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>SS600</td>
<td align=center>SCSI</td>
@@ -15862,12 +15862,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-MUSTEK">Manufacturer: Mustek</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.mustek.com/">http://www.mustek.com/</a>, <a href="http://www.mustek.com.tw/">http://www.mustek.com.tw/</a>, <a href="http://www.mustek.de/">http://www.mustek.de/</a><br>
</p>
<table border=1>
@@ -15889,7 +15889,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>600 III EP Plus</td>
<td align=center>Parport (EPP)</td>
@@ -15900,7 +15900,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>1200 III EP</td>
<td align=center>Parport</td>
@@ -15908,7 +15908,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. quarlewm at jmu dot edu offers to temporarily loan such a scanner to anyone who is interested in writing a driver.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15919,7 +15919,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -15933,7 +15933,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>BearPaw 1200</td>
<td align=center>USB</td>
@@ -15944,7 +15944,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>BearPaw 1200 CS</td>
<td align=center>USB</td>
@@ -15955,7 +15955,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 1200 CU</td>
<td align=center>USB</td>
@@ -15966,7 +15966,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 1200 CU Plus</td>
<td align=center>USB</td>
@@ -15977,7 +15977,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 1200 CU Plus</td>
<td align=center>USB</td>
@@ -15988,7 +15988,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 1200 F</td>
<td align=center>USB</td>
@@ -15999,7 +15999,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/ma1509-backend/">ma1509</a>
<br>(1.0-3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ma1509.5.html">sane-ma1509</a></td>
+<td align=center><a href="man/sane-ma1509.5.html">sane-ma1509</a></td>
</tr>
<tr><td align=center>BearPaw 1200 TA</td>
<td align=center>USB</td>
@@ -16010,7 +16010,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 1248 CU</td>
<td align=center>USB</td>
@@ -16021,7 +16021,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400</td>
<td align=center>USB</td>
@@ -16032,7 +16032,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>BearPaw 2400 CS</td>
<td align=center>USB</td>
@@ -16043,7 +16043,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400 CS Plus</td>
<td align=center>USB</td>
@@ -16054,7 +16054,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400 CU</td>
<td align=center>USB</td>
@@ -16065,7 +16065,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400 CU Plus</td>
<td align=center>USB</td>
@@ -16076,7 +16076,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400 TA</td>
<td align=center>USB</td>
@@ -16087,7 +16087,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2400 TA Plus</td>
<td align=center>USB</td>
@@ -16098,7 +16098,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center><a href="http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED">BearPaw 2400 TA Pro</a></td>
<td align=center>USB</td>
@@ -16106,7 +16106,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16120,15 +16120,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/mustek-bearpaw-2448-cu-pro.html">BearPaw 2448 CU Pro</a></td>
+<tr><td align=center><a href="unsupported/mustek-bearpaw-2448-cu-pro.html">BearPaw 2448 CU Pro</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x0408</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16142,7 +16142,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>BearPaw 2448TA Pro</td>
<td align=center>USB</td>
@@ -16153,26 +16153,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb2-backend/">mustek_usb2</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb2.5.html">sane-mustek_usb2</a></td>
+<td align=center><a href="man/sane-mustek_usb2.5.html">sane-mustek_usb2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/mustek-bearpaw-4800ta-pro.html">BearPaw 4800 TA Pro</a></td>
+<tr><td align=center><a href="unsupported/mustek-bearpaw-4800ta-pro.html">BearPaw 4800 TA Pro</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x1000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for some information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/mustek-bearpaw-4800ta-pro-ii.html">BearPaw 4800 TA Pro II</a></td>
+<tr><td align=center><a href="unsupported/mustek-bearpaw-4800ta-pro-ii.html">BearPaw 4800 TA Pro II</a></td>
<td align=center>USB</td>
<td align=center>0x055f/0x040a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16183,7 +16183,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16197,7 +16197,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 600 II ED</td>
<td align=center>Parport</td>
@@ -16208,7 +16208,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 600 II EP</td>
<td align=center>Parport</td>
@@ -16219,7 +16219,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 600 II N</td>
<td align=center>Proprietary</td>
@@ -16230,7 +16230,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 800 II EP</td>
<td align=center>Parport</td>
@@ -16238,7 +16238,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Maybe similar to 600 II EP (SCSI_over-parport)? In this case it could be supported by the mustek SCSI backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16252,7 +16252,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 1200 A3 Pro</td>
<td align=center>SCSI</td>
@@ -16263,7 +16263,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 1200 III SP</td>
<td align=center>SCSI</td>
@@ -16274,7 +16274,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 1200 LS</td>
<td align=center>SCSI</td>
@@ -16285,7 +16285,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon 1200 SP Pro</td>
<td align=center>SCSI</td>
@@ -16296,7 +16296,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFC-600S</td>
<td align=center>SCSI</td>
@@ -16307,7 +16307,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFC-800S</td>
<td align=center>SCSI</td>
@@ -16318,7 +16318,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-1200SP</td>
<td align=center>SCSI</td>
@@ -16329,7 +16329,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-6000CX</td>
<td align=center>SCSI</td>
@@ -16340,7 +16340,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-6000SP</td>
<td align=center>SCSI</td>
@@ -16351,7 +16351,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-8000SP</td>
<td align=center>SCSI</td>
@@ -16362,7 +16362,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-12000CX</td>
<td align=center>SCSI</td>
@@ -16373,7 +16373,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Paragon MFS-12000SP</td>
<td align=center>SCSI</td>
@@ -16384,7 +16384,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Plug-n-Scan 2400 M</td>
<td align=center>USB</td>
@@ -16395,7 +16395,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Plug-n-Scan 2400 MT</td>
<td align=center>USB</td>
@@ -16406,7 +16406,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ScanExpress 600 CP</td>
<td align=center>Parport (EPP)</td>
@@ -16417,7 +16417,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanExpress 600 CU</td>
<td align=center>USB</td>
@@ -16428,7 +16428,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">mustek_usb</a>
<br>(1.0-18)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
+<td align=center><a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
</tr>
<tr><td align=center>ScanExpress 600 SEP</td>
<td align=center>Parport (EPP)</td>
@@ -16439,7 +16439,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center><a href="http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED">ScanExpress 600 USB</a></td>
<td align=center>USB</td>
@@ -16447,7 +16447,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Programming information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16461,7 +16461,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 CP+</td>
<td align=center>Parport (EPP)</td>
@@ -16472,7 +16472,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 CU</td>
<td align=center>USB</td>
@@ -16483,7 +16483,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">mustek_usb</a>
<br>(1.0-18)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
+<td align=center><a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 CU Plus</td>
<td align=center>USB</td>
@@ -16494,7 +16494,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">mustek_usb</a>
<br>(1.0-18)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
+<td align=center><a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 FS</td>
<td align=center>SCSI</td>
@@ -16505,7 +16505,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 UB</td>
<td align=center>USB</td>
@@ -16516,7 +16516,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">mustek_usb</a>
<br>(1.0-18)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
+<td align=center><a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
</tr>
<tr><td align=center>ScanExpress 1200 UB Plus</td>
<td align=center>USB</td>
@@ -16527,7 +16527,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center><a href="http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED">ScanExpress 1200 USB</a></td>
<td align=center>USB</td>
@@ -16535,7 +16535,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Programming information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16546,7 +16546,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16560,7 +16560,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ScanExpress 2400 USB</td>
<td align=center>USB</td>
@@ -16571,7 +16571,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ScanExpress 6000 P</td>
<td align=center>Parport (EPP)</td>
@@ -16582,7 +16582,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanExpress 6000SP</td>
<td align=center>SCSI</td>
@@ -16593,7 +16593,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center><a href="http://penguin-breeder.org/?page=mustek_pp">ScanExpress 12000 P</a></td>
<td align=center>Parport</td>
@@ -16601,7 +16601,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Asic 1505/05.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16615,7 +16615,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanExpress 12000SP Plus</td>
<td align=center>SCSI</td>
@@ -16626,7 +16626,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanExpress A3 EP</td>
<td align=center>Parport</td>
@@ -16634,7 +16634,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Maybe it will be supported by the mustek_pp backend in future.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16648,7 +16648,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanExpress A3 USB</td>
<td align=center>USB</td>
@@ -16659,7 +16659,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center><a href="http://www.meier-geinitz.de/sane/misc/mustek-scanners.html#UNSUPPORTED">ScanExpress CardSmart</a></td>
<td align=center>USB</td>
@@ -16667,7 +16667,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. USB business card scanner. Maybe works as USB storage device?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16681,7 +16681,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanMagic 600 II SP</td>
<td align=center>SCSI</td>
@@ -16692,7 +16692,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanMagic 1200 UB Plus</td>
<td align=center>USB</td>
@@ -16703,7 +16703,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>ScanMagic 4800 P</td>
<td align=center>Parport (EPP)</td>
@@ -16714,7 +16714,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>ScanMagic 4830S</td>
<td align=center>SCSI</td>
@@ -16725,15 +16725,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
-<tr><td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html">ScanMagic 9636P</a></td>
+<tr><td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html">ScanMagic 9636P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Same as Mustek 12000 P?. ASIC 1505.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16747,7 +16747,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>ScanMagic 9636S Plus</td>
<td align=center>SCSI</td>
@@ -16758,7 +16758,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>TwainScan II SP</td>
<td align=center>SCSI</td>
@@ -16769,7 +16769,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
</table>
<h3><a name="Z-NEATRECEIPTS">Manufacturer: NeatReceipts</a></h3>
@@ -16794,7 +16794,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Scanalizer Professional 2.5</td>
<td align=center>USB</td>
@@ -16805,12 +16805,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-NEC">Manufacturer: NEC</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.nevt.co.jp/">http://www.nevt.co.jp/</a><br>
</p>
<table border=1>
@@ -16832,15 +16832,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www5a.biglobe.ne.jp/~saetaka/">nec</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-nec.5.html">sane-nec</a></td>
+<td align=center><a href="man/sane-nec.5.html">sane-nec</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nec-petiscan.html">Petiscan</a></td>
+<tr><td align=center><a href="unsupported/nec-petiscan.html">Petiscan</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0100</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably unsupported. See link for details. Vendor ID is Relisys/Teco. Not known if it is similar to other Relisys/Teco USB scanners.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -16868,12 +16868,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-NIKON">Manufacturer: Nikon</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.nikon.com/">http://www.nikon.com/</a><br>
</p>
<table border=1>
@@ -16895,7 +16895,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>AX-210</td>
<td align=center>SCSI</td>
@@ -16906,7 +16906,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Coolscan III</td>
<td align=center>SCSI</td>
@@ -16916,9 +16916,9 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -16926,9 +16926,9 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls50-ed.html">Coolscan V ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -16937,7 +16937,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>Coolspan IV</td>
<td align=center>USB</td>
@@ -16947,7 +16947,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 30</td>
<td align=center>SCSI</td>
@@ -16957,7 +16957,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 30</td>
<td align=center>SCSI</td>
@@ -16968,7 +16968,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>LS 40 ED</td>
<td align=center>USB</td>
@@ -16978,7 +16978,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 40 ED</td>
<td align=center>USB</td>
@@ -16989,9 +16989,9 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls50-ed.html">LS 50 ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls50-ed.html">LS 50 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4001</td>
<td align=center><font color="#B00000">Minimal</font></td>
@@ -16999,7 +16999,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 50 ED</td>
<td align=center>USB</td>
@@ -17010,7 +17010,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>LS 2000</td>
<td align=center>SCSI</td>
@@ -17020,7 +17020,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 2000</td>
<td align=center>SCSI</td>
@@ -17031,7 +17031,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>LS 4000 ED</td>
<td align=center>IEEE-1394</td>
@@ -17041,7 +17041,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 4000 ED</td>
<td align=center>IEEE-1394</td>
@@ -17052,7 +17052,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>LS 8000 ED</td>
<td align=center>IEEE-1394</td>
@@ -17062,7 +17062,7 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
<tr><td align=center>LS 8000 ED</td>
<td align=center>IEEE-1394</td>
@@ -17073,7 +17073,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
<tr><td align=center>LS-20</td>
<td align=center>SCSI</td>
@@ -17084,7 +17084,7 @@ coolscan3<br>(1.0.0)
<a href="http://andreas.rick.free.fr/sane/">coolscan</a>
<br>(0.4.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan.5.html">sane-coolscan</a></td>
+<td align=center><a href="man/sane-coolscan.5.html">sane-coolscan</a></td>
</tr>
<tr><td align=center>LS-30</td>
<td align=center>SCSI</td>
@@ -17095,7 +17095,7 @@ coolscan3<br>(1.0.0)
<a href="http://andreas.rick.free.fr/sane/">coolscan</a>
<br>(0.4.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan.5.html">sane-coolscan</a></td>
+<td align=center><a href="man/sane-coolscan.5.html">sane-coolscan</a></td>
</tr>
<tr><td align=center>LS-1000</td>
<td align=center>SCSI</td>
@@ -17106,7 +17106,7 @@ coolscan3<br>(1.0.0)
<a href="http://andreas.rick.free.fr/sane/">coolscan</a>
<br>(0.4.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan.5.html">sane-coolscan</a></td>
+<td align=center><a href="man/sane-coolscan.5.html">sane-coolscan</a></td>
</tr>
<tr><td align=center>LS-2000</td>
<td align=center>SCSI</td>
@@ -17117,20 +17117,20 @@ coolscan3<br>(1.0.0)
<a href="http://andreas.rick.free.fr/sane/">coolscan</a>
<br>(0.4.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan.5.html">sane-coolscan</a></td>
+<td align=center><a href="man/sane-coolscan.5.html">sane-coolscan</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls9000-ed.html">LS-9000 ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls9000-ed.html">LS-9000 ED</a></td>
<td align=center>IEEE-1394</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details. Possibly similar to LS-8000 ED.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4002</td>
<td align=center><font color="#0000B0">Untested</font></td>
@@ -17138,9 +17138,9 @@ coolscan3<br>(1.0.0)
<td align=center>
coolscan3<br>(1.0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan3.5.html">sane-coolscan3</a></td>
+<td align=center><a href="man/sane-coolscan3.5.html">sane-coolscan3</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
+<tr><td align=center><a href="unsupported/nikon-ls5000-ed.html">Super Coolscan LS-5000 ED</a></td>
<td align=center>USB</td>
<td align=center>0x04b0/0x4002</td>
<td align=center><font color="#0000B0">Untested</font></td>
@@ -17149,7 +17149,7 @@ coolscan3<br>(1.0.0)
<a href="http://coolscan2.sourceforge.net/">coolscan2</a>
<br>(0.1.8)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-coolscan2.5.html">sane-coolscan2</a></td>
+<td align=center><a href="man/sane-coolscan2.5.html">sane-coolscan2</a></td>
</tr>
</table>
<h3><a name="Z-NORTEK">Manufacturer: Nortek</a></h3>
@@ -17174,7 +17174,7 @@ coolscan3<br>(1.0.0)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-OKI">Manufacturer: OKI</a></h3>
@@ -17199,12 +17199,12 @@ coolscan3<br>(1.0.0)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
</table>
<h3><a name="Z-OLIVETTI">Manufacturer: Olivetti</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.olivetti.com">http://www.olivetti.com</a><br>
</p>
<table border=1>
@@ -17217,13 +17217,13 @@ coolscan3<br>(1.0.0)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/olivetti-job-jet-m400.html">Job-Jet M400</a></td>
+<tr><td align=center><a href="unsupported/olivetti-job-jet-m400.html">Job-Jet M400</a></td>
<td align=center>USB</td>
<td align=center>0x0b3c/0xa880</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17231,7 +17231,7 @@ coolscan3<br>(1.0.0)
</table>
<h3><a name="Z-OLYMPUS">Manufacturer: Olympus</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.olympus.com">http://www.olympus.com</a><br>
</p>
<table border=1>
@@ -17244,24 +17244,24 @@ coolscan3<br>(1.0.0)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html">ES-10P</a></td>
+<tr><td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html">ES-10P</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/olympus-es10s.html">ES-10S</a></td>
+<tr><td align=center><a href="unsupported/olympus-es10s.html">ES-10S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17286,7 +17286,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17311,7 +17311,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17322,7 +17322,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17333,7 +17333,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Special ISA card</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17344,7 +17344,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17355,7 +17355,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17366,7 +17366,7 @@ coolscan3<br>(1.0.0)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Special ISA card</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17394,7 +17394,7 @@ coolscan3<br>(1.0.0)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Diamond 1200 Plus</td>
<td align=center>USB</td>
@@ -17405,7 +17405,7 @@ coolscan3<br>(1.0.0)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Diamond 1200 Plus</td>
<td align=center>USB</td>
@@ -17416,7 +17416,7 @@ coolscan3<br>(1.0.0)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Diamond 2450</td>
<td align=center>USB</td>
@@ -17427,12 +17427,12 @@ coolscan3<br>(1.0.0)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
</table>
<h3><a name="Z-PANASONIC">Manufacturer: Panasonic</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.panasonic.com/">http://www.panasonic.com/</a><br>
</p>
<table border=1>
@@ -17453,7 +17453,7 @@ coolscan3<br>(1.0.0)
<td align=center>
kvs1025<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs1025.5.html">sane-kvs1025</a></td>
+<td align=center><a href="man/sane-kvs1025.5.html">sane-kvs1025</a></td>
</tr>
<tr><td align=center>KV-S1025C</td>
<td align=center>USB</td>
@@ -17463,7 +17463,7 @@ kvs1025<br>(unmaintained)
<td align=center>
kvs1025<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs1025.5.html">sane-kvs1025</a></td>
+<td align=center><a href="man/sane-kvs1025.5.html">sane-kvs1025</a></td>
</tr>
<tr><td align=center>KV-S1045C</td>
<td align=center>USB</td>
@@ -17473,7 +17473,7 @@ kvs1025<br>(unmaintained)
<td align=center>
kvs1025<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs1025.5.html">sane-kvs1025</a></td>
+<td align=center><a href="man/sane-kvs1025.5.html">sane-kvs1025</a></td>
</tr>
<tr><td align=center>KV-S2025C</td>
<td align=center>SCSI</td>
@@ -17484,7 +17484,7 @@ kvs1025<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-S2026C</td>
<td align=center>USB SCSI</td>
@@ -17494,7 +17494,7 @@ kvs1025<br>(unmaintained)
<td align=center>
kvs20xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
+<td align=center><a href="man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
</tr>
<tr><td align=center>KV-S2028C</td>
<td align=center>USB</td>
@@ -17504,7 +17504,7 @@ kvs20xx<br>(unmaintained)
<td align=center>
kvs20xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
+<td align=center><a href="man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
</tr>
<tr><td align=center>KV-S2045C</td>
<td align=center>SCSI</td>
@@ -17515,7 +17515,7 @@ kvs20xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-S2046C</td>
<td align=center>USB SCSI</td>
@@ -17525,7 +17525,7 @@ kvs20xx<br>(unmaintained)
<td align=center>
kvs20xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
+<td align=center><a href="man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
</tr>
<tr><td align=center>KV-S2048C</td>
<td align=center>USB</td>
@@ -17535,7 +17535,7 @@ kvs20xx<br>(unmaintained)
<td align=center>
kvs20xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
+<td align=center><a href="man/sane-kvs20xx.5.html">sane-kvs20xx</a></td>
</tr>
<tr><td align=center>KV-S2055L</td>
<td align=center>SCSI</td>
@@ -17543,7 +17543,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17554,7 +17554,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17568,7 +17568,7 @@ kvs20xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-S2065W</td>
<td align=center>SCSI</td>
@@ -17576,7 +17576,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17587,7 +17587,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17598,7 +17598,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17609,7 +17609,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17620,7 +17620,7 @@ kvs20xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend. See http://code.google.com/p/kvss905c/ for a standalone scanning tool.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17633,7 +17633,7 @@ kvs20xx<br>(unmaintained)
<td align=center>
kvs40xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
+<td align=center><a href="man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
</tr>
<tr><td align=center>KV-S4085C</td>
<td align=center>USB</td>
@@ -17643,7 +17643,7 @@ kvs40xx<br>(unmaintained)
<td align=center>
kvs40xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
+<td align=center><a href="man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
</tr>
<tr><td align=center>KV-S6040W</td>
<td align=center>SCSI</td>
@@ -17651,7 +17651,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17662,7 +17662,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17673,7 +17673,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17684,7 +17684,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17695,7 +17695,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17708,7 +17708,7 @@ kvs40xx<br>(unmaintained)
<td align=center>
kvs40xx<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
+<td align=center><a href="man/sane-kvs40xx.5.html">sane-kvs40xx</a></td>
</tr>
<tr><td align=center>KV-SS25</td>
<td align=center>SCSI</td>
@@ -17719,7 +17719,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS25D</td>
<td align=center>SCSI</td>
@@ -17730,7 +17730,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS50</td>
<td align=center>SCSI</td>
@@ -17741,7 +17741,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS50EX</td>
<td align=center>SCSI</td>
@@ -17752,7 +17752,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS55</td>
<td align=center>SCSI</td>
@@ -17763,7 +17763,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS55EX</td>
<td align=center>SCSI</td>
@@ -17774,7 +17774,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS080</td>
<td align=center>USB</td>
@@ -17785,7 +17785,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>KV-SS850</td>
<td align=center>SCSI</td>
@@ -17796,7 +17796,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS855</td>
<td align=center>SCSI</td>
@@ -17807,7 +17807,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane">matsushita</a>
<br>(1.0-7)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-matsushita.5.html">sane-matsushita</a></td>
+<td align=center><a href="man/sane-matsushita.5.html">sane-matsushita</a></td>
</tr>
<tr><td align=center>KV-SS905C</td>
<td align=center>SCSI</td>
@@ -17815,7 +17815,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>might be supported by matsushita backend. See http://code.google.com/p/kvss905c/ for a standalone scanning tool.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17823,7 +17823,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-PENTAX">Manufacturer: Pentax</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.pentaxtech.com/">http://www.pentaxtech.com/</a>, <a href="http://mobilesolutions.brother-usa.com/">http://mobilesolutions.brother-usa.com/</a><br>
</p>
<table border=1>
@@ -17845,7 +17845,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>DSmobile 600</td>
<td align=center>USB</td>
@@ -17856,15 +17856,15 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/syscan-travelscan-pro.html">DSmobile USB</a></td>
+<tr><td align=center><a href="unsupported/syscan-travelscan-pro.html">DSmobile USB</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x2000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Some information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17872,7 +17872,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-PIE">Manufacturer: PIE</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.scanace.com/">http://www.scanace.com/</a><br>
<b>Comment:</b> Pacific Image Electronics<br>
</p>
@@ -17886,46 +17886,46 @@ kvs40xx<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/pie-pf3650.html">PF3650 Pro3 Film Scanner</a></td>
+<tr><td align=center><a href="unsupported/pie-pf3650.html">PF3650 Pro3 Film Scanner</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0143</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/reflecta-digitdia-3600.html">Powerslide 3600</a></td>
+<tr><td align=center><a href="unsupported/reflecta-digitdia-3600.html">Powerslide 3600</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0142</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Film scanner that can scan directly from the magazine.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/pie-1800u.html">Primefilm 1800u</a></td>
+<tr><td align=center><a href="unsupported/pie-1800u.html">Primefilm 1800u</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html">Primefilm 2700</a></td>
+<tr><td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html">Primefilm 2700</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17936,7 +17936,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. </td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -17950,7 +17950,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce 636S</td>
<td align=center>SCSI</td>
@@ -17961,7 +17961,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce 1230S</td>
<td align=center>SCSI</td>
@@ -17972,7 +17972,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce 1236S</td>
<td align=center>SCSI</td>
@@ -17983,7 +17983,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce II</td>
<td align=center>SCSI</td>
@@ -17994,7 +17994,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce II Plus</td>
<td align=center>SCSI</td>
@@ -18005,7 +18005,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce III</td>
<td align=center>SCSI</td>
@@ -18016,7 +18016,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce III Plus</td>
<td align=center>SCSI</td>
@@ -18027,7 +18027,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce Plus</td>
<td align=center>SCSI</td>
@@ -18038,7 +18038,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce ScanMedia</td>
<td align=center>SCSI</td>
@@ -18049,7 +18049,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce ScanMedia II</td>
<td align=center>SCSI</td>
@@ -18060,7 +18060,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
<tr><td align=center>ScanAce V</td>
<td align=center>SCSI</td>
@@ -18071,12 +18071,12 @@ kvs40xx<br>(unmaintained)
<a href="http://www.munton.demon.co.uk/sane">pie</a>
<br>(1.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-pie.5.html">sane-pie</a></td>
+<td align=center><a href="man/sane-pie.5.html">sane-pie</a></td>
</tr>
</table>
<h3><a name="Z-PIOTECH">Manufacturer: PIOTECH</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.image-land.com/">http://www.image-land.com/</a><br>
</p>
<table border=1>
@@ -18098,12 +18098,12 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
</table>
<h3><a name="Z-PLANON">Manufacturer: PLANon</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.planon.com/">http://www.planon.com/</a><br>
</p>
<table border=1>
@@ -18122,18 +18122,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/planon-docupen-r700.html">DocuPen R700</a></td>
+<tr><td align=center><a href="unsupported/planon-docupen-r700.html">DocuPen R700</a></td>
<td align=center>USB</td>
<td align=center>0x10c4/0xea60</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18144,7 +18144,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18152,7 +18152,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-PLUSTEK">Manufacturer: Plustek</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.plustek.com/">http://www.plustek.com/</a>, <a href="http://www.plustek.de/">http://www.plustek.de/</a><br>
</p>
<table border=1>
@@ -18174,7 +18174,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OptiCard 600+</td>
<td align=center>USB</td>
@@ -18182,7 +18182,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Business card reader. No further information available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18196,15 +18196,15 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticfilm-7200.html">OpticFilm 7200</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticfilm-7200.html">OpticFilm 7200</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0807</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL842 based, maybe to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18215,7 +18215,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based, maybe to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18229,7 +18229,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 1212U</td>
<td align=center>USB</td>
@@ -18240,7 +18240,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
<tr><td align=center>OpticPro 1236P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18251,7 +18251,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 1248U</td>
<td align=center>USB</td>
@@ -18262,7 +18262,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticPro 1248U</td>
<td align=center>USB</td>
@@ -18273,7 +18273,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticPro 2400SP</td>
<td align=center>SCSI</td>
@@ -18284,7 +18284,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
<tr><td align=center>OpticPro 4800P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18295,7 +18295,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 4830P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18306,7 +18306,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 4831P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18317,7 +18317,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9600P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18328,7 +18328,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9630P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18339,7 +18339,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9630PL</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18350,7 +18350,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9636P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18361,7 +18361,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9636P+/Turbo</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18372,7 +18372,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 9636T</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18383,7 +18383,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 12000P/96000P</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18394,7 +18394,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 12000T</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18405,7 +18405,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro 19200S</td>
<td align=center>SCSI</td>
@@ -18416,7 +18416,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html">artec</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec.5.html">sane-artec</a></td>
+<td align=center><a href="man/sane-artec.5.html">sane-artec</a></td>
</tr>
<tr><td align=center>OpticPro A3U</td>
<td align=center>USB</td>
@@ -18424,7 +18424,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Uses Plustek ASIC P99002</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18438,7 +18438,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro P8</td>
<td align=center>Parport</td>
@@ -18449,7 +18449,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro P12</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18460,7 +18460,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro PT12</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -18471,7 +18471,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>OpticPro S6</td>
<td align=center>USB</td>
@@ -18479,18 +18479,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Uses RealTek chipset (RTL8801D)</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st12.html">OpticPro S12</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st12.html">OpticPro S12</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18504,15 +18504,15 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st24.html">OpticPro S24</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st24.html">OpticPro S24</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18526,26 +18526,26 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-s28.html">OpticPro S28</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-s28.html">OpticPro S28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0801</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st12.html">OpticPro ST12</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st12.html">OpticPro ST12</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18559,81 +18559,81 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st16.html">OpticPro ST16</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st16.html">OpticPro ST16</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0600</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st24.html">OpticPro ST24</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st24.html">OpticPro ST24</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st28.html">OpticPro ST28</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st28.html">OpticPro ST28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0802</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-s28.html">OpticPro ST28</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-s28.html">OpticPro ST28</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0801</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st48.html">OpticPro ST48</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st48.html">OpticPro ST48</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0800</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st64.html">OpticPro ST64</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st64.html">OpticPro ST64</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c00</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based, maybe to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st64plus.html">OpticPro ST64+</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st64plus.html">OpticPro ST64+</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c03</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL843 based. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18647,7 +18647,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
<tr><td align=center>OpticPro U12</td>
<td align=center>USB</td>
@@ -18658,7 +18658,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro U16B</td>
<td align=center>USB</td>
@@ -18669,7 +18669,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticPro U16B+</td>
<td align=center>USB</td>
@@ -18680,7 +18680,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticPro U24</td>
<td align=center>USB</td>
@@ -18691,7 +18691,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro U24</td>
<td align=center>USB</td>
@@ -18702,7 +18702,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro UA18</td>
<td align=center>USB</td>
@@ -18710,7 +18710,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably LM983x based.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18724,7 +18724,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
<tr><td align=center>OpticPro UT12</td>
<td align=center>USB</td>
@@ -18735,7 +18735,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro UT12</td>
<td align=center>USB</td>
@@ -18746,7 +18746,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro UT16</td>
<td align=center>USB</td>
@@ -18757,7 +18757,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>OpticPro UT16B</td>
<td align=center>USB</td>
@@ -18768,7 +18768,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticPro UT24</td>
<td align=center>USB</td>
@@ -18779,15 +18779,15 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticslim-500.html">OpticSlim 500</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticslim-500.html">OpticSlim 500</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0458</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18801,7 +18801,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticSlim 2400</td>
<td align=center>USB</td>
@@ -18812,7 +18812,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticSlim 2400 plus</td>
<td align=center>USB</td>
@@ -18823,26 +18823,26 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticslim-2420.html">OpticSlim 2420</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticslim-2420.html">OpticSlim 2420</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0806</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticslim-2420plus.html">OpticSlim 2420+</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticslim-2420plus.html">OpticSlim 2420+</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0914</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18856,7 +18856,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>OpticWorks 2000</td>
<td align=center>Parport</td>
@@ -18864,40 +18864,40 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Multifunction device. No further information available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-pl806.html">PL 806</a></td>
+<tr><td align=center><a href="unsupported/plustek-pl806.html">PL 806</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c0c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-scancopy-115.html">ScanCopy 115</a></td>
+<tr><td align=center><a href="unsupported/plustek-scancopy-115.html">ScanCopy 115</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x081c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-pl812.html">SmartOffice PL 812</a></td>
+<tr><td align=center><a href="unsupported/plustek-pl812.html">SmartOffice PL 812</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0c0d</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18908,18 +18908,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Uses proprietary ISA card that also provides power and is labelled GPS-1 PAGE-A from Taiwan. Other labels on the scanner include ADF Color Scanner and SF600AS. Maybe the same as the IBM ADF Color Scanner?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astrscan-4750.html">Umax AstraScan 4750</a></td>
+<tr><td align=center><a href="unsupported/umax-astrscan-4750.html">Umax AstraScan 4750</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0802</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL841 based, to be added to genesys backend, rebadged Plustek ST28</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18930,7 +18930,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18941,7 +18941,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18952,7 +18952,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18963,7 +18963,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18974,7 +18974,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18985,7 +18985,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. Scanner name not known yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -18993,7 +18993,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-PORTABLE-PERIPHERAL-CO---LTD-">Manufacturer: Portable Peripheral Co., Ltd.</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.pandp.com.tw/">http://www.pandp.com.tw/</a><br>
</p>
<table border=1>
@@ -19015,7 +19015,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Q-Scan USB201 (A6 portable scanner)</td>
<td align=center>USB</td>
@@ -19026,12 +19026,12 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
</table>
<h3><a name="Z-PRIMAX">Manufacturer: Primax</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.primax.nl/">http://www.primax.nl/</a>, <a href="http://www.primax.com.tw">http://www.primax.com.tw</a><br>
</p>
<table border=1>
@@ -19044,13 +19044,13 @@ kvs40xx<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/primax-colorado-600u.html">Colorado 600U</a></td>
+<tr><td align=center><a href="unsupported/primax-colorado-600u.html">Colorado 600U</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0341</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Some information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19061,7 +19061,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported by SANE. But is reported to partly work with pxscan. See link.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19072,7 +19072,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19086,7 +19086,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center><a href="http://home2.swipnet.se/~w-25069/pxscan.html">Colorado Direct 600</a></td>
<td align=center>Parport</td>
@@ -19094,7 +19094,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. However, a stand-alone program is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19105,18 +19105,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. However, a stand-alone program is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/primax-colorado-usb-9600.html">Colorado USB 9600</a></td>
+<tr><td align=center><a href="unsupported/primax-colorado-usb-9600.html">Colorado USB 9600</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0340</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19130,7 +19130,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>Compact 4800 Direct-30</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -19141,7 +19141,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>Compact 4800 SCSI</td>
<td align=center>SCSI</td>
@@ -19152,7 +19152,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Compact 9600 Direct-30</td>
<td align=center>Parport (SPP, EPP)</td>
@@ -19163,7 +19163,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek_pp/">plustek_pp</a>
<br>(0.43)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
+<td align=center><a href="man/sane-plustek_pp.5.html">sane-plustek_pp</a></td>
</tr>
<tr><td align=center>G2-300</td>
<td align=center>USB</td>
@@ -19171,7 +19171,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19182,7 +19182,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19193,7 +19193,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19204,7 +19204,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19215,7 +19215,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19226,7 +19226,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19237,7 +19237,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19251,7 +19251,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>OneTouch 5300</td>
<td align=center>Parport</td>
@@ -19259,18 +19259,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Look similar to Visioneer Onetouch 8920 (same USB product id).</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19284,15 +19284,15 @@ kvs40xx<br>(unmaintained)
<a href="http://www.sane-project.org/">p5</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-p5.5.html">sane-p5</a></td>
+<td align=center><a href="man/sane-p5.5.html">sane-p5</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4400.html">Primascan Colorado 2600u</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4400.html">Primascan Colorado 2600u</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Same as Visioneer Onetouch 4400. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19306,7 +19306,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>Profi 19200</td>
<td align=center>SCSI</td>
@@ -19317,7 +19317,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>ReadyScan 636i</td>
<td align=center>USB</td>
@@ -19325,7 +19325,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. No details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19336,7 +19336,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Maybe GL646. Maybe similar to Medion MD 6228?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19344,7 +19344,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-PROLINK">Manufacturer: Prolink</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.fida.com/">http://www.fida.com/</a><br>
</p>
<table border=1>
@@ -19363,18 +19363,18 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. No further information available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/prolink-2448u.html">Winscan Pro 2448U</a></td>
+<tr><td align=center><a href="unsupported/prolink-2448u.html">Winscan Pro 2448U</a></td>
<td align=center>USB</td>
<td align=center>0x06dc/0x0014</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Some information is available. RealTek RTS8801.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19382,7 +19382,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-QUATO">Manufacturer: Quato</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.quato.de/">http://www.quato.de/</a><br>
</p>
<table border=1>
@@ -19401,7 +19401,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details yet. Originally manufactured by PFU?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19412,7 +19412,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details yet.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19431,35 +19431,35 @@ kvs40xx<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/reflecta-digitdia-3600.html">DigitDia 3600</a></td>
+<tr><td align=center><a href="unsupported/reflecta-digitdia-3600.html">DigitDia 3600</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0142</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Film scanner that can scan directly from the magazine.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/reflecta-iscan-1800.html">iScan 1800</a></td>
+<tr><td align=center><a href="unsupported/reflecta-iscan-1800.html">iScan 1800</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0120</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/reflecta-proscan-4000.html">ProScan 4000</a></td>
+<tr><td align=center><a href="unsupported/reflecta-proscan-4000.html">ProScan 4000</a></td>
<td align=center>USB IEEE-1394</td>
<td align=center>0x05e3/0x0143</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19467,7 +19467,7 @@ kvs40xx<br>(unmaintained)
</table>
<h3><a name="Z-RELISYS">Manufacturer: Relisys</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.relisys.com/">http://www.relisys.com/</a>, <a href="http://www.tecoimage.com.tw/">http://www.tecoimage.com.tw/</a><br>
</p>
<table border=1>
@@ -19489,7 +19489,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>APOLLO Express 6</td>
<td align=center>SCSI</td>
@@ -19500,7 +19500,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>AVEC 2400</td>
<td align=center>SCSI</td>
@@ -19511,7 +19511,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>AVEC 2412</td>
<td align=center>SCSI</td>
@@ -19522,7 +19522,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>AVEC 4800</td>
<td align=center>SCSI</td>
@@ -19533,7 +19533,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>AVEC 4816</td>
<td align=center>SCSI</td>
@@ -19544,7 +19544,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>AVEC II E3</td>
<td align=center>Parport</td>
@@ -19552,7 +19552,7 @@ kvs40xx<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Parport version of AVEC II S3?. See bug #304992 for details</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19566,7 +19566,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>AVEC Super 3</td>
<td align=center>SCSI</td>
@@ -19577,26 +19577,26 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/relisys-eclipse-1200u.html">Eclipse 1200U</a></td>
+<tr><td align=center><a href="unsupported/relisys-eclipse-1200u.html">Eclipse 1200U</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0103</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/relisys-episode.html">Episode</a></td>
+<tr><td align=center><a href="unsupported/relisys-episode.html">Episode</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0103</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19610,7 +19610,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
<tr><td align=center>RELI 2400</td>
<td align=center>SCSI</td>
@@ -19621,7 +19621,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 2412</td>
<td align=center>SCSI</td>
@@ -19632,7 +19632,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 4816</td>
<td align=center>SCSI</td>
@@ -19643,7 +19643,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 4830</td>
<td align=center>SCSI</td>
@@ -19654,7 +19654,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 9600</td>
<td align=center>SCSI</td>
@@ -19665,7 +19665,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 9612</td>
<td align=center>SCSI</td>
@@ -19676,7 +19676,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 9624</td>
<td align=center>SCSI</td>
@@ -19687,7 +19687,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI 9630</td>
<td align=center>SCSI</td>
@@ -19698,7 +19698,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI DS6</td>
<td align=center>SCSI</td>
@@ -19709,7 +19709,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>RELI DS15</td>
<td align=center>SCSI</td>
@@ -19720,7 +19720,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco">teco1</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco1.5.html">sane-teco1</a></td>
+<td align=center><a href="man/sane-teco1.5.html">sane-teco1</a></td>
</tr>
<tr><td align=center>SCORPIO Pro</td>
<td align=center>SCSI</td>
@@ -19731,7 +19731,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>SCORPIO Pro-S</td>
<td align=center>SCSI</td>
@@ -19742,7 +19742,7 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
<tr><td align=center>SCORPIO Super 3</td>
<td align=center>SCSI</td>
@@ -19753,15 +19753,15 @@ kvs40xx<br>(unmaintained)
<a href="http://gkall.hobby.nl/teco2.html">teco2</a>
<br>(1.0-9)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco2.5.html">sane-teco2</a></td>
+<td align=center><a href="man/sane-teco2.5.html">sane-teco2</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/relisys-scorpio-ultra3.html">Scorpio Ultra 3</a></td>
+<tr><td align=center><a href="unsupported/relisys-scorpio-ultra3.html">Scorpio Ultra 3</a></td>
<td align=center>USB</td>
<td align=center>0x0475/0x0210</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -19789,7 +19789,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>RevScan Orange R48Ti</td>
<td align=center>USB</td>
@@ -19800,12 +19800,12 @@ kvs40xx<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/u12/">u12</a>
<br>(0.02)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-u12.5.html">sane-u12</a></td>
+<td align=center><a href="man/sane-u12.5.html">sane-u12</a></td>
</tr>
</table>
<h3><a name="Z-RICOH">Manufacturer: Ricoh</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.ricoh.com/">http://www.ricoh.com/</a><br>
</p>
<table border=1>
@@ -19827,7 +19827,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/ibm-backend/">ibm</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ibm.5.html">sane-ibm</a></td>
+<td align=center><a href="man/sane-ibm.5.html">sane-ibm</a></td>
</tr>
<tr><td align=center>IS-410</td>
<td align=center>SCSI</td>
@@ -19838,7 +19838,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.acjlaw.net:8080/~jeremy/Ricoh/">hs2p</a>
<br>(1.00)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hs2p.5.html">sane-hs2p</a></td>
+<td align=center><a href="man/sane-hs2p.5.html">sane-hs2p</a></td>
</tr>
<tr><td align=center>IS-420</td>
<td align=center>SCSI</td>
@@ -19849,7 +19849,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/ibm-backend/">ibm</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ibm.5.html">sane-ibm</a></td>
+<td align=center><a href="man/sane-ibm.5.html">sane-ibm</a></td>
</tr>
<tr><td align=center>IS-430</td>
<td align=center>SCSI</td>
@@ -19860,7 +19860,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/ibm-backend/">ibm</a>
<br>(1.0-4)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ibm.5.html">sane-ibm</a></td>
+<td align=center><a href="man/sane-ibm.5.html">sane-ibm</a></td>
</tr>
<tr><td align=center>IS-430</td>
<td align=center>SCSI</td>
@@ -19871,7 +19871,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.acjlaw.net:8080/~jeremy/Ricoh/">hs2p</a>
<br>(1.00)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hs2p.5.html">sane-hs2p</a></td>
+<td align=center><a href="man/sane-hs2p.5.html">sane-hs2p</a></td>
</tr>
<tr><td align=center>IS450</td>
<td align=center>SCSI</td>
@@ -19882,7 +19882,7 @@ kvs40xx<br>(unmaintained)
<a href="http://www.acjlaw.net:8080/~jeremy/Ricoh/">hs2p</a>
<br>(1.00)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hs2p.5.html">sane-hs2p</a></td>
+<td align=center><a href="man/sane-hs2p.5.html">sane-hs2p</a></td>
</tr>
<tr><td align=center>Ricoh IS50</td>
<td align=center>SCSI</td>
@@ -19892,7 +19892,7 @@ kvs40xx<br>(unmaintained)
<td align=center>
ricoh<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ricoh.5.html">sane-ricoh</a></td>
+<td align=center><a href="man/sane-ricoh.5.html">sane-ricoh</a></td>
</tr>
<tr><td align=center>Ricoh IS60</td>
<td align=center>SCSI</td>
@@ -19902,12 +19902,12 @@ ricoh<br>(unmaintained)
<td align=center>
ricoh<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-ricoh.5.html">sane-ricoh</a></td>
+<td align=center><a href="man/sane-ricoh.5.html">sane-ricoh</a></td>
</tr>
</table>
<h3><a name="Z-SAMSUNG">Manufacturer: Samsung</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.samsung.com">http://www.samsung.com</a><br>
</p>
<table border=1>
@@ -19928,7 +19928,7 @@ ricoh<br>(unmaintained)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-2160</td>
<td align=center>USB</td>
@@ -19938,7 +19938,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-3160</td>
<td align=center>USB</td>
@@ -19948,7 +19948,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-3170fn (CLX-3170 Series)</td>
<td align=center>USB</td>
@@ -19958,7 +19958,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-3175FW</td>
<td align=center>USB</td>
@@ -19968,7 +19968,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-3185</td>
<td align=center>USB</td>
@@ -19978,7 +19978,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-3300 Series</td>
<td align=center>USB</td>
@@ -19988,7 +19988,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-4190</td>
<td align=center>USB</td>
@@ -19998,7 +19998,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-6200</td>
<td align=center>USB</td>
@@ -20008,7 +20008,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-6220</td>
<td align=center>USB</td>
@@ -20018,7 +20018,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-6240</td>
<td align=center>USB</td>
@@ -20028,7 +20028,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-6250</td>
<td align=center>USB</td>
@@ -20038,7 +20038,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-6260</td>
<td align=center>USB</td>
@@ -20048,7 +20048,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-8380</td>
<td align=center>USB</td>
@@ -20058,7 +20058,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-8385</td>
<td align=center>USB</td>
@@ -20068,7 +20068,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-8385X</td>
<td align=center>USB</td>
@@ -20078,7 +20078,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>CLX-8540</td>
<td align=center>USB</td>
@@ -20088,7 +20088,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>M267x 287x Series</td>
<td align=center>USB</td>
@@ -20098,7 +20098,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>M337x 387x 407x Series</td>
<td align=center>USB</td>
@@ -20108,7 +20108,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>MFP-65x</td>
<td align=center>USB</td>
@@ -20118,7 +20118,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>MFP-560</td>
<td align=center>USB</td>
@@ -20128,7 +20128,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>MFP-750</td>
<td align=center>USB</td>
@@ -20138,7 +20138,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4x16</td>
<td align=center>USB</td>
@@ -20148,7 +20148,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4x20</td>
<td align=center>USB</td>
@@ -20158,7 +20158,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4x21</td>
<td align=center>USB</td>
@@ -20168,7 +20168,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4x26</td>
<td align=center>USB</td>
@@ -20178,7 +20178,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-5x30</td>
<td align=center>USB</td>
@@ -20188,7 +20188,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6x20</td>
<td align=center>USB</td>
@@ -20198,7 +20198,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6x22</td>
<td align=center>USB</td>
@@ -20208,7 +20208,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6x45</td>
<td align=center>USB</td>
@@ -20218,7 +20218,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6x55</td>
<td align=center>USB</td>
@@ -20228,7 +20228,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6x55X</td>
<td align=center>USB</td>
@@ -20238,7 +20238,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-470x</td>
<td align=center>USB</td>
@@ -20248,7 +20248,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-681x</td>
<td align=center>USB</td>
@@ -20258,7 +20258,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-3205W (SCX-3200 Series)</td>
<td align=center>USB Ethernet</td>
@@ -20268,7 +20268,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-3400</td>
<td align=center>USB</td>
@@ -20278,7 +20278,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-3405W</td>
<td align=center>Ethernet</td>
@@ -20288,7 +20288,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4100</td>
<td align=center>USB</td>
@@ -20298,7 +20298,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4200</td>
<td align=center>USB</td>
@@ -20308,7 +20308,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4300</td>
<td align=center>USB</td>
@@ -20318,7 +20318,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4500</td>
<td align=center>USB</td>
@@ -20328,7 +20328,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4500W</td>
<td align=center>USB Ethernet</td>
@@ -20338,7 +20338,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4600</td>
<td align=center>USB</td>
@@ -20348,7 +20348,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4623</td>
<td align=center>USB</td>
@@ -20358,7 +20358,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4623FW</td>
<td align=center>USB</td>
@@ -20368,7 +20368,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4650 4x21S Series</td>
<td align=center>USB</td>
@@ -20378,15 +20378,15 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/samsung-scx-4725.html">SCX-4725FN</a></td>
+<tr><td align=center><a href="unsupported/samsung-scx-4725.html">SCX-4725FN</a></td>
<td align=center>USB</td>
<td align=center>0x04e8/0x341f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20399,7 +20399,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4824 (SCX-4x24 Series)</td>
<td align=center>USB</td>
@@ -20409,7 +20409,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4825FN (SCX-4x25 Series)</td>
<td align=center>USB</td>
@@ -20419,7 +20419,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4828FN (SCX-4x28 Series)</td>
<td align=center>USB</td>
@@ -20429,7 +20429,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4833FD</td>
<td align=center>USB</td>
@@ -20439,7 +20439,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-4835FD</td>
<td align=center>Ethernet</td>
@@ -20449,7 +20449,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-5635</td>
<td align=center>USB</td>
@@ -20459,7 +20459,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-5835_5935</td>
<td align=center>USB</td>
@@ -20469,7 +20469,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-5835_5935X</td>
<td align=center>USB</td>
@@ -20479,7 +20479,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6545</td>
<td align=center>USB</td>
@@ -20489,7 +20489,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX-6545X</td>
<td align=center>USB</td>
@@ -20499,7 +20499,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX4725</td>
<td align=center>USB</td>
@@ -20509,7 +20509,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SCX4725-FN</td>
<td align=center>USB</td>
@@ -20519,7 +20519,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>SF-760</td>
<td align=center>USB</td>
@@ -20529,12 +20529,12 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
</table>
<h3><a name="Z-SCANPORT">Manufacturer: Scanport</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.scanport.com/">http://www.scanport.com/</a><br>
</p>
<table border=1>
@@ -20556,7 +20556,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>SQ2030</td>
<td align=center>Parport</td>
@@ -20567,7 +20567,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>SQ4836</td>
<td align=center>SCSI</td>
@@ -20578,7 +20578,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
</table>
<h3><a name="Z-SCANSHELL">Manufacturer: Scanshell</a></h3>
@@ -20594,13 +20594,13 @@ xerox_mfp<br>(1.0-13)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/scanshell-800n.html">800N</a></td>
+<tr><td align=center><a href="unsupported/scanshell-800n.html">800N</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x6605</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20608,7 +20608,7 @@ xerox_mfp<br>(1.0-13)
</table>
<h3><a name="Z-SCEPTRE">Manufacturer: Sceptre</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.sceptre.com/">http://www.sceptre.com/</a><br>
</p>
<table border=1>
@@ -20630,12 +20630,12 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.zago.net/sane/">sceptre</a>
<br>(1.0-10)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sceptre.5.html">sane-sceptre</a></td>
+<td align=center><a href="man/sane-sceptre.5.html">sane-sceptre</a></td>
</tr>
</table>
<h3><a name="Z-SHARP">Manufacturer: Sharp</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://sharp-world.com/">http://sharp-world.com/</a><br>
</p>
<table border=1>
@@ -20657,7 +20657,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
<tr><td align=center>JX-320</td>
<td align=center>SCSI</td>
@@ -20668,7 +20668,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
<tr><td align=center>JX-325</td>
<td align=center>SCSI</td>
@@ -20679,7 +20679,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
<tr><td align=center>JX-330</td>
<td align=center>SCSI</td>
@@ -20690,7 +20690,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
<tr><td align=center>JX-350</td>
<td align=center>SCSI</td>
@@ -20701,7 +20701,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
<tr><td align=center>JX-610</td>
<td align=center>SCSI</td>
@@ -20712,7 +20712,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html">sharp</a>
<br>(0.32)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-sharp.5.html">sane-sharp</a></td>
+<td align=center><a href="man/sane-sharp.5.html">sane-sharp</a></td>
</tr>
</table>
<h3><a name="Z-SICOS">Manufacturer: Sicos</a></h3>
@@ -20734,7 +20734,7 @@ xerox_mfp<br>(1.0-13)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported until now. Work on a backend has started, contact the author for details (see link)</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20742,7 +20742,7 @@ xerox_mfp<br>(1.0-13)
</table>
<h3><a name="Z-SIEMENS">Manufacturer: Siemens</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.siemens.com/">http://www.siemens.com/</a>, <a href="http://www.siemens.de/">http://www.siemens.de/</a><br>
</p>
<table border=1>
@@ -20763,7 +20763,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
s9036<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-s9036.5.html">sane-s9036</a></td>
+<td align=center><a href="man/sane-s9036.5.html">sane-s9036</a></td>
</tr>
<tr><td align=center>Cherry FingerTIP ID Board - Sensor</td>
<td align=center>USB</td>
@@ -20771,7 +20771,7 @@ s9036<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20782,7 +20782,7 @@ s9036<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20795,7 +20795,7 @@ s9036<br>(unmaintained)
<td align=center>
agfafocus<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-agfafocus.5.html">sane-agfafocus</a></td>
+<td align=center><a href="man/sane-agfafocus.5.html">sane-agfafocus</a></td>
</tr>
<tr><td align=center>ST400</td>
<td align=center>SCSI</td>
@@ -20806,7 +20806,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.informatik.uni-oldenburg.de/~ingo/sane/">st400</a>
<br>(1.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-st400.5.html">sane-st400</a></td>
+<td align=center><a href="man/sane-st400.5.html">sane-st400</a></td>
</tr>
<tr><td align=center>ST800</td>
<td align=center>SCSI</td>
@@ -20817,7 +20817,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.informatik.uni-oldenburg.de/~ingo/sane/">st400</a>
<br>(1.6)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-st400.5.html">sane-st400</a></td>
+<td align=center><a href="man/sane-st400.5.html">sane-st400</a></td>
</tr>
</table>
<h3><a name="Z-SMARTDISK">Manufacturer: SmartDisk</a></h3>
@@ -20839,7 +20839,7 @@ agfafocus<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Same as PIE Primefilm 2600 PRO.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20865,7 +20865,7 @@ agfafocus<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported until now. Work on a backend has started, see link for more information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20876,7 +20876,7 @@ agfafocus<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Work on a backend has started, see link for more information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20887,7 +20887,7 @@ agfafocus<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Work on a backend has started, see link for more information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -20895,7 +20895,7 @@ agfafocus<br>(unmaintained)
</table>
<h3><a name="Z-SYSCAN">Manufacturer: Syscan</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.syscaninc.com/">http://www.syscaninc.com/</a><br>
</p>
<table border=1>
@@ -20917,7 +20917,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>DocketPort 485</td>
<td align=center>USB</td>
@@ -20928,7 +20928,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>DocketPort 665</td>
<td align=center>USB</td>
@@ -20939,7 +20939,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>DocketPort 685/ Ambir DS685</td>
<td align=center>USB</td>
@@ -20950,7 +20950,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>TravelScan 460/464</td>
<td align=center>USB</td>
@@ -20961,7 +20961,7 @@ agfafocus<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>TravelScan 662</td>
<td align=center>USB</td>
@@ -20972,26 +20972,26 @@ agfafocus<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/syscan-travelscan-fs531.html">TravelScan FS-531</a></td>
+<tr><td align=center><a href="unsupported/syscan-travelscan-fs531.html">TravelScan FS-531</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x0530</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. May work with the Plustek backend in future. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/syscan-travelscan-pro.html">TravelScan Pro</a></td>
+<tr><td align=center><a href="unsupported/syscan-travelscan-pro.html">TravelScan Pro</a></td>
<td align=center>USB</td>
<td align=center>0x0a82/0x2000</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Some information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21010,13 +21010,13 @@ agfafocus<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/tamarack-artiscan-2400.html">Artiscan 2400FS</a></td>
+<tr><td align=center><a href="unsupported/tamarack-artiscan-2400.html">Artiscan 2400FS</a></td>
<td align=center>USB</td>
<td align=center>0x05e3/0x0100</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for more information.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21029,7 +21029,7 @@ agfafocus<br>(unmaintained)
<td align=center>
tamarack<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-tamarack.5.html">sane-tamarack</a></td>
+<td align=center><a href="man/sane-tamarack.5.html">sane-tamarack</a></td>
</tr>
<tr><td align=center>Artiscan 8000C</td>
<td align=center>SCSI</td>
@@ -21039,7 +21039,7 @@ tamarack<br>(unmaintained)
<td align=center>
tamarack<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-tamarack.5.html">sane-tamarack</a></td>
+<td align=center><a href="man/sane-tamarack.5.html">sane-tamarack</a></td>
</tr>
<tr><td align=center><a href="http://www.autistici.org/tamarhack/">Artiscan 9600</a></td>
<td align=center>Parport</td>
@@ -21047,7 +21047,7 @@ tamarack<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported at the moment. See link for a project for that scanner taht may support it in future.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21058,7 +21058,7 @@ tamarack<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported at the moment. See link for a project for that scanner.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21071,7 +21071,7 @@ tamarack<br>(unmaintained)
<td align=center>
tamarack<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-tamarack.5.html">sane-tamarack</a></td>
+<td align=center><a href="man/sane-tamarack.5.html">sane-tamarack</a></td>
</tr>
</table>
<h3><a name="Z-TARGA">Manufacturer: Targa</a></h3>
@@ -21096,7 +21096,7 @@ tamarack<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>Funline TS12 EP</td>
<td align=center>Parport (EPP)</td>
@@ -21107,12 +21107,12 @@ tamarack<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-TCE">Manufacturer: TCE</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.tce.com.br/">http://www.tce.com.br/</a><br>
<b>Comment:</b> Brasilian vendor.<br>
</p>
@@ -21126,13 +21126,13 @@ tamarack<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/memorex-maxx-6136u.html">MK600U</a></td>
+<tr><td align=center><a href="unsupported/memorex-maxx-6136u.html">MK600U</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0346</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Some information is available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21143,7 +21143,7 @@ tamarack<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported by SANE but is reported to work with pxscan (see link).</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21151,7 +21151,7 @@ tamarack<br>(unmaintained)
</table>
<h3><a name="Z-TECO">Manufacturer: Teco</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.tecoimage.com.tw/">http://www.tecoimage.com.tw/</a><br>
</p>
<table border=1>
@@ -21164,13 +21164,13 @@ tamarack<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/teco-vm6509.html">VM6509F</a></td>
+<tr><td align=center><a href="unsupported/teco-vm6509.html">VM6509F</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21189,13 +21189,13 @@ tamarack<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4400.html">FU661E</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4400.html">FU661E</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21203,7 +21203,7 @@ tamarack<br>(unmaintained)
</table>
<h3><a name="Z-TRIGEM">Manufacturer: TriGem</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.nikon.com/">http://www.nikon.com/</a><br>
</p>
<table border=1>
@@ -21225,12 +21225,12 @@ tamarack<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-TRUST">Manufacturer: Trust</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.trust-site.com">http://www.trust-site.com</a>, <a href="http://www.trust-site.com/home/">http://www.trust-site.com/home/</a>, <a href="http://www.trust.com">http://www.trust.com</a><br>
<b>Comment:</b> Carefully check the model names. Trust uses similar names for completely different hardware.<br>
</p>
@@ -21252,7 +21252,7 @@ tamarack<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>240TH Easy Webscan Gold</td>
<td align=center>USB</td>
@@ -21263,15 +21263,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/trust-combiscan-19200.html">CombiScan 19200</a></td>
+<tr><td align=center><a href="unsupported/trust-combiscan-19200.html">CombiScan 19200</a></td>
<td align=center>Parport USB</td>
<td align=center>0x05cb/0x1483</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21285,7 +21285,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek_usb-backend/">mustek_usb</a>
<br>(1.0-18)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
+<td align=center><a href="man/sane-mustek_usb.5.html">sane-mustek_usb</a></td>
</tr>
<tr><td align=center>Compact Scan USB 19200</td>
<td align=center>USB</td>
@@ -21296,7 +21296,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Direct WebScan 19200</td>
<td align=center>USB</td>
@@ -21307,7 +21307,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Easy Connect 9600+</td>
<td align=center>Parport (EPP)</td>
@@ -21318,7 +21318,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>Easy Connect 19200+</td>
<td align=center>Parport (EPP)</td>
@@ -21329,7 +21329,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
<tr><td align=center>Easy Scan 9600 Plus</td>
<td align=center>Parport</td>
@@ -21340,7 +21340,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://as6edriver.sourceforge.net/">as6e</a>
<br>(0.5)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-as6e.5.html">sane-as6e</a></td>
+<td align=center><a href="man/sane-as6e.5.html">sane-as6e</a></td>
</tr>
<tr><td align=center>Easy Webscan 19200</td>
<td align=center>USB</td>
@@ -21350,15 +21350,15 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
-<tr><td align=center><a href="http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html">EasyScan 19200</a></td>
+<tr><td align=center><a href="http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html">EasyScan 19200</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>&nbsp;</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21372,7 +21372,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
<tr><td align=center>Imagery 1200</td>
<td align=center>SCSI</td>
@@ -21383,7 +21383,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Imagery 1200 SP</td>
<td align=center>SCSI</td>
@@ -21394,7 +21394,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Imagery 2400 SP</td>
<td align=center>SCSI</td>
@@ -21405,7 +21405,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
<tr><td align=center>Imagery 4800 SP</td>
<td align=center>SCSI</td>
@@ -21416,7 +21416,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>Imagery 4800 SP+</td>
<td align=center>SCSI</td>
@@ -21427,7 +21427,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
<tr><td align=center>Imagery 9600 SP</td>
<td align=center>SCSI</td>
@@ -21438,7 +21438,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.zago.net/sane/#teco3">teco3</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-teco3.5.html">sane-teco3</a></td>
+<td align=center><a href="man/sane-teco3.5.html">sane-teco3</a></td>
</tr>
<tr><td align=center>Office Scan USB 19200</td>
<td align=center>USB</td>
@@ -21449,7 +21449,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/hp3300backend">niash</a>
<br>(0.3)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-niash.5.html">sane-niash</a></td>
+<td align=center><a href="man/sane-niash.5.html">sane-niash</a></td>
</tr>
<tr><td align=center>SCSI Connect 19200</td>
<td align=center>SCSI</td>
@@ -21460,7 +21460,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
<tr><td align=center>SCSI excellence series 19200</td>
<td align=center>SCSI</td>
@@ -21471,15 +21471,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/mustek-backend/">mustek</a>
<br>(1.0-138)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek.5.html">sane-mustek</a></td>
+<td align=center><a href="man/sane-mustek.5.html">sane-mustek</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/trust-scsi-scan-19200.html">SCSI Scan 19200 -Excellence Series-</a></td>
+<tr><td align=center><a href="unsupported/trust-scsi-scan-19200.html">SCSI Scan 19200 -Excellence Series-</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21487,7 +21487,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-UMAX">Manufacturer: UMAX</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.umax.com/">http://www.umax.com/</a>, <a href="http://www.umax.com.tw/">http://www.umax.com.tw/</a>, <a href="http://www.umax.de/en">http://www.umax.de/en</a>, <a href="http://www.umax-europe.com">http://www.umax-europe.com</a>, <a href="http://www.umaxjapan.co.jp">http://www.umaxjapan.co.jp</a>, <a href="http://www.umax.com.cn">http://www.umax.com.cn</a>, <a href="http://www.umax.com">http://www.umax.com</a><br>
</p>
<table border=1>
@@ -21509,7 +21509,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>Astra 600S</td>
<td align=center>SCSI</td>
@@ -21520,7 +21520,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 610P</td>
<td align=center>Parport (SPP/ECP)</td>
@@ -21531,7 +21531,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>Astra 610S</td>
<td align=center>SCSI</td>
@@ -21542,7 +21542,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 1200S</td>
<td align=center>SCSI</td>
@@ -21553,7 +21553,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 1220P</td>
<td align=center>Parport (EPP/ECP)</td>
@@ -21564,7 +21564,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>Astra 1220S</td>
<td align=center>SCSI</td>
@@ -21575,7 +21575,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 1220U</td>
<td align=center>USB</td>
@@ -21586,7 +21586,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/umax1220u-sane">umax1220u</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax1220u.5.html">sane-umax1220u</a></td>
+<td align=center><a href="man/sane-umax1220u.5.html">sane-umax1220u</a></td>
</tr>
<tr><td align=center>Astra 1600P</td>
<td align=center>Parport (EPP/ECP)</td>
@@ -21597,7 +21597,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>Astra 1600U</td>
<td align=center>USB</td>
@@ -21608,7 +21608,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/umax1220u-sane">umax1220u</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax1220u.5.html">sane-umax1220u</a></td>
+<td align=center><a href="man/sane-umax1220u.5.html">sane-umax1220u</a></td>
</tr>
<tr><td align=center>Astra 2000P</td>
<td align=center>Parport (EPP/ECP)</td>
@@ -21619,7 +21619,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://umax1220p.sourceforge.net/">umax_pp</a>
<br>(1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax_pp.5.html">sane-umax_pp</a></td>
+<td align=center><a href="man/sane-umax_pp.5.html">sane-umax_pp</a></td>
</tr>
<tr><td align=center>Astra 2000U</td>
<td align=center>USB</td>
@@ -21630,7 +21630,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/umax1220u-sane">umax1220u</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax1220u.5.html">sane-umax1220u</a></td>
+<td align=center><a href="man/sane-umax1220u.5.html">sane-umax1220u</a></td>
</tr>
<tr><td align=center>Astra 2100S</td>
<td align=center>SCSI</td>
@@ -21641,7 +21641,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 2100U</td>
<td align=center>USB</td>
@@ -21652,7 +21652,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/umax1220u-sane">umax1220u</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax1220u.5.html">sane-umax1220u</a></td>
+<td align=center><a href="man/sane-umax1220u.5.html">sane-umax1220u</a></td>
</tr>
<tr><td align=center>Astra 2200 (SU)</td>
<td align=center>USB</td>
@@ -21663,7 +21663,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 2200 (SU)</td>
<td align=center>SCSI</td>
@@ -21674,7 +21674,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 2400S</td>
<td align=center>SCSI</td>
@@ -21685,70 +21685,70 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-2500.html">Astra 2500</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-2500.html">Astra 2500</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0374</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/plustek-opticpro-st24.html">Astra 2850</a></td>
+<tr><td align=center><a href="unsupported/plustek-opticpro-st24.html">Astra 2850</a></td>
<td align=center>USB</td>
<td align=center>0x07b3/0x0601</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-3000.html">Astra 3000</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-3000.html">Astra 3000</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-3600.html">Astra 3600</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-3600.html">Astra 3600</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4000.html">Astra 4000</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4000.html">Astra 4000</a></td>
<td align=center>USB</td>
<td align=center>0x1606/0x1030</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4100.html">Astra 4100</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4100.html">Astra 4100</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x038c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported, to be added to genesys backend.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21762,7 +21762,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://stef.dev.free.fr/sane/rts8891/index.html">rts8891</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-rts8891.5.html">sane-rts8891</a></td>
+<td align=center><a href="man/sane-rts8891.5.html">sane-rts8891</a></td>
</tr>
<tr><td align=center>Astra 4450</td>
<td align=center>USB</td>
@@ -21773,15 +21773,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://stef.dev.free.fr/sane/rts8891/index.html">rts8891</a>
<br>(1.0-0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-rts8891.5.html">sane-rts8891</a></td>
+<td align=center><a href="man/sane-rts8891.5.html">sane-rts8891</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4500.html">Astra 4500</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4500.html">Astra 4500</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a10</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend. Avision iVina FB1600 clone</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21792,18 +21792,18 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported, no details known.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astra-4700.html">Astra 4700</a></td>
+<tr><td align=center><a href="unsupported/umax-astra-4700.html">Astra 4700</a></td>
<td align=center>USB</td>
<td align=center>0x0638/0x0a20</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646/GL660 based. Avision iVina FB1800 clone.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21817,7 +21817,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://sourceforge.net/projects/hp3900-series/">hp3900</a>
<br>(0.12)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-hp3900.5.html">sane-hp3900</a></td>
+<td align=center><a href="man/sane-hp3900.5.html">sane-hp3900</a></td>
</tr>
<tr><td align=center>Astra 6400</td>
<td align=center>IEEE-1394</td>
@@ -21828,7 +21828,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 6450</td>
<td align=center>IEEE-1394</td>
@@ -21839,7 +21839,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra 6700</td>
<td align=center>USB</td>
@@ -21847,7 +21847,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. No chipset information available. Same as Avision iVina FB2400.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21861,7 +21861,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Astra MX3</td>
<td align=center>SCSI</td>
@@ -21872,26 +21872,26 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astraslim.html">AstraSlim</a></td>
+<tr><td align=center><a href="unsupported/umax-astraslim.html">AstraSlim</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0104</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported currently. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astraslim-1200.html">AstraSlim 1200</a></td>
+<tr><td align=center><a href="unsupported/umax-astraslim-1200.html">AstraSlim 1200</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0110</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21904,15 +21904,15 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-astraslim-6000.html">AstraSlim 6000</a></td>
+<tr><td align=center><a href="unsupported/umax-astraslim-6000.html">AstraSlim 6000</a></td>
<td align=center>USB</td>
<td align=center>0x080d/0x0104</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported currently. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21925,7 +21925,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
<tr><td align=center>Gemini D-16</td>
<td align=center>SCSI</td>
@@ -21936,7 +21936,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Mirage D-16L</td>
<td align=center>SCSI</td>
@@ -21947,7 +21947,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Mirage II</td>
<td align=center>SCSI</td>
@@ -21958,7 +21958,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Mirage IIse</td>
<td align=center>SCSI</td>
@@ -21969,7 +21969,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Nete3470'</td>
<td align=center>Parport</td>
@@ -21977,7 +21977,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No details known..</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -21991,7 +21991,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook</td>
<td align=center>SCSI</td>
@@ -22002,15 +22002,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/umax-powerlook-180.html">Powerlook 180</a></td>
+<tr><td align=center><a href="unsupported/umax-powerlook-180.html">Powerlook 180</a></td>
<td align=center>USB</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22024,7 +22024,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook 270plus</td>
<td align=center>SCSI</td>
@@ -22035,7 +22035,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Powerlook 1000 USB</td>
<td align=center>USB</td>
@@ -22043,7 +22043,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. No further information available.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22057,7 +22057,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook 2000</td>
<td align=center>SCSI</td>
@@ -22068,7 +22068,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook 2100XL</td>
<td align=center>SCSI</td>
@@ -22079,7 +22079,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook 3000</td>
<td align=center>SCSI</td>
@@ -22090,7 +22090,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PowerLook III</td>
<td align=center>SCSI</td>
@@ -22101,7 +22101,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>PSD</td>
<td align=center>SCSI</td>
@@ -22112,7 +22112,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Supervista S-12</td>
<td align=center>SCSI</td>
@@ -22123,7 +22123,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UC 630</td>
<td align=center>SCSI</td>
@@ -22134,7 +22134,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UC 840</td>
<td align=center>SCSI</td>
@@ -22145,7 +22145,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UC 1200S</td>
<td align=center>SCSI</td>
@@ -22156,7 +22156,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UC 1200SE</td>
<td align=center>SCSI</td>
@@ -22167,7 +22167,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UC 1260</td>
<td align=center>SCSI</td>
@@ -22178,7 +22178,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UG 80</td>
<td align=center>SCSI</td>
@@ -22189,7 +22189,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UG 630</td>
<td align=center>SCSI</td>
@@ -22200,7 +22200,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UMAX 3400</td>
<td align=center>USB</td>
@@ -22211,7 +22211,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>UMAX 3400</td>
<td align=center>USB</td>
@@ -22222,7 +22222,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>UMAX 3450</td>
<td align=center>USB</td>
@@ -22233,7 +22233,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>UMAX 5400</td>
<td align=center>USB</td>
@@ -22244,7 +22244,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>UMAX Astranet ia101</td>
<td align=center>USB</td>
@@ -22255,7 +22255,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>UMAX S-6E</td>
<td align=center>SCSI</td>
@@ -22266,7 +22266,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UMAX S-6EG</td>
<td align=center>SCSI</td>
@@ -22277,7 +22277,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UMAX S-12</td>
<td align=center>SCSI</td>
@@ -22288,7 +22288,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UMAX S-12G</td>
<td align=center>SCSI</td>
@@ -22299,7 +22299,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>UMAX VT600</td>
<td align=center>SCSI</td>
@@ -22310,7 +22310,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Vista S6</td>
<td align=center>SCSI</td>
@@ -22321,7 +22321,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Vista S6E</td>
<td align=center>SCSI</td>
@@ -22332,7 +22332,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Vista-S8</td>
<td align=center>SCSI</td>
@@ -22343,7 +22343,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
<tr><td align=center>Vista-T630</td>
<td align=center>SCSI</td>
@@ -22354,7 +22354,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-VANTAS">Manufacturer: Vantas</a></h3>
@@ -22370,13 +22370,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4800.html">3000</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4800.html">3000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22384,7 +22384,7 @@ artec_eplus48u<br>(unmaintained)
</table>
<h3><a name="Z-VISIONEER">Manufacturer: Visioneer</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.visioneer.com/">http://www.visioneer.com/</a><br>
</p>
<table border=1>
@@ -22397,13 +22397,13 @@ artec_eplus48u<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-4800-onetouch.html">4800 One Touch</a></td>
+<tr><td align=center><a href="unsupported/xerox-4800-onetouch.html">4800 One Touch</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x03a0</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details. Different id compared to One Touch 4800?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22414,7 +22414,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Is reported to use the E5 chipset. Uses a Primax ID. Looks similar to Primascan Colorado 2600u.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22425,7 +22425,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Id is from Primax? Yet another scanner with the same name?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22439,15 +22439,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-9420.html">9420</a></td>
+<tr><td align=center><a href="unsupported/visioneer-9420.html">9420</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x03a8</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22461,15 +22461,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-9450-usb.html">9450 USB</a></td>
+<tr><td align=center><a href="unsupported/visioneer-9450-usb.html">9450 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0421</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22483,7 +22483,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>9550</td>
<td align=center>USB</td>
@@ -22494,7 +22494,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>9650</td>
<td align=center>USB</td>
@@ -22505,7 +22505,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>9650-G</td>
<td align=center>USB</td>
@@ -22516,7 +22516,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>9750</td>
<td align=center>USB</td>
@@ -22527,7 +22527,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>9750-G</td>
<td align=center>USB</td>
@@ -22538,70 +22538,70 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-docuimage-620s.html">DocuImage 620S</a></td>
+<tr><td align=center><a href="unsupported/xerox-docuimage-620s.html">DocuImage 620S</a></td>
<td align=center>SCSI</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-documate-510.html">DocuMate 510</a></td>
+<tr><td align=center><a href="unsupported/xerox-documate-510.html">DocuMate 510</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x047c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details. Yet another USB id.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-documate-510.html">DocuMate 510</a></td>
+<tr><td align=center><a href="unsupported/xerox-documate-510.html">DocuMate 510</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0446</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4800.html">One Touch 4800</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4800.html">One Touch 4800</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details. Different id compared to 4800 One Touch?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4400.html">Onetouch 4400</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4400.html">Onetouch 4400</a></td>
<td align=center>USB</td>
<td align=center>0x0461/0x0347</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. E5 chipset? See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch4800.html">OneTouch 4800 USB</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch4800.html">OneTouch 4800 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0224</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22612,51 +22612,51 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Yet another scanner with this name?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch5300.html">OneTouch 5300 USB</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch5300.html">OneTouch 5300 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0226</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Chipset is RTS8801B(?). See link for output of /proc/bus/usb/devices.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch5800.html">OneTouch 5800 USB</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch5800.html">OneTouch 5800 USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0226</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch6600.html">OneTouch 6600</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch6600.html">OneTouch 6600</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022a</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch7100.html">Onetouch 7100</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch7100.html">Onetouch 7100</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0229</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>GL646 based, to be added to genesys backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22670,125 +22670,125 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/gt68xx-backend/">gt68xx</a>
<br>(1.0-84)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-gt68xx.5.html">sane-gt68xx</a></td>
+<td align=center><a href="man/sane-gt68xx.5.html">sane-gt68xx</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch7700.html">Onetouch 7700</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch7700.html">Onetouch 7700</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0380</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>LM9832/3 based, to be added to plustek backend</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8100.html">OneTouch 8100</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8100.html">OneTouch 8100</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0321</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Unsupported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8700</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8700</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8900</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8900</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Same as 8920 but without TA?</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8920.html">Onetouch 8920</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0371</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch9020.html">Onetouch 9000</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch9020.html">Onetouch 9000</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch9020.html">Onetouch 9020</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch9020.html">Onetouch 9020</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x022c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch9320.html">Onetouch 9320</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch9320.html">Onetouch 9320</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0362</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8820.html">Onetouch Pro 8800</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8820.html">Onetouch Pro 8800</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0410</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-onetouch8820.html">Onetouch Pro 8820</a></td>
+<tr><td align=center><a href="unsupported/visioneer-onetouch8820.html">Onetouch Pro 8820</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0410</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-paperport-3100b.html">PaperPort 3100b</a></td>
+<tr><td align=center><a href="unsupported/visioneer-paperport-3100b.html">PaperPort 3100b</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22799,18 +22799,18 @@ artec_eplus48u<br>(unmaintained)
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably not supported. More details would be appreciated.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-paperport-onetouch.html">PaperPort OneTouch</a></td>
+<tr><td align=center><a href="unsupported/visioneer-paperport-onetouch.html">PaperPort OneTouch</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Most probably not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22824,7 +22824,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Patriot 470</td>
<td align=center>USB</td>
@@ -22835,7 +22835,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Patriot 680</td>
<td align=center>USB</td>
@@ -22846,7 +22846,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Patriot 780</td>
<td align=center>USB</td>
@@ -22857,7 +22857,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Roadwarrior</td>
<td align=center>USB</td>
@@ -22868,15 +22868,15 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/visioneer-strobe-pro-usb.html">Strobe Pro USB</a></td>
+<tr><td align=center><a href="unsupported/visioneer-strobe-pro-usb.html">Strobe Pro USB</a></td>
<td align=center>USB</td>
<td align=center>0x04a7/0x0102</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -22890,7 +22890,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.gjaeger.de/scanner/plustek/">plustek</a>
<br>(0.52)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-plustek.5.html">sane-plustek</a></td>
+<td align=center><a href="man/sane-plustek.5.html">sane-plustek</a></td>
</tr>
<tr><td align=center>Strobe XP 100,r3</td>
<td align=center>USB</td>
@@ -22901,7 +22901,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>Strobe XP 200</td>
<td align=center>USB</td>
@@ -22912,7 +22912,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>Strobe XP 300</td>
<td align=center>USB</td>
@@ -22923,7 +22923,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>Strobe XP 450</td>
<td align=center>USB</td>
@@ -22934,7 +22934,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Strobe XP 450-G</td>
<td align=center>USB</td>
@@ -22945,7 +22945,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Strobe XP 470</td>
<td align=center>USB</td>
@@ -22956,7 +22956,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Strobe XP 470-G</td>
<td align=center>USB</td>
@@ -22967,7 +22967,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>Visioneer OneTouch 7100</td>
<td align=center>USB</td>
@@ -22978,81 +22978,81 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-470cx.html">WorkCentre 470cx</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-470cx.html">WorkCentre 470cx</a></td>
<td align=center>Parport</td>
<td align=center>&nbsp;</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-m15i.html">WorkCentre M15i</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-m15i.html">WorkCentre M15i</a></td>
<td align=center>USB</td>
<td align=center>0x0924/0xffef</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-pe16.html">WorkCentre PE16</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-pe16.html">WorkCentre PE16</a></td>
<td align=center>USB Parport</td>
<td align=center>0x0924/0x4220</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-pe120i.html">WorkCentre PE120i</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-pe120i.html">WorkCentre PE120i</a></td>
<td align=center>USB</td>
<td align=center>0x0924/0x4237</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-pro412.html">WorkCentre Pro 412</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-pro412.html">WorkCentre Pro 412</a></td>
<td align=center>USB Parport</td>
<td align=center>0x043d/0x4303</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-xk35c.html">WorkCentre XK35c</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-xk35c.html">WorkCentre XK35c</a></td>
<td align=center>USB Parport</td>
<td align=center>0x043d/0x0020</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
</tr>
-<tr><td align=center><a href="/unsupported/xerox-workcentre-xk50cx.html">WorkCentre XK50cx</a></td>
+<tr><td align=center><a href="unsupported/xerox-workcentre-xk50cx.html">WorkCentre XK50cx</a></td>
<td align=center>USB</td>
<td align=center>0x04e8/0x3903</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -23080,12 +23080,12 @@ artec_eplus48u<br>(unmaintained)
<a href="http://penguin-breeder.org/sane/mustek_pp/">mustek_pp</a>
<br>(13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
+<td align=center><a href="man/sane-mustek_pp.5.html">sane-mustek_pp</a></td>
</tr>
</table>
<h3><a name="Z-VOBIS">Manufacturer: Vobis</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.vobis.de/">http://www.vobis.de/</a><br>
</p>
<table border=1>
@@ -23107,7 +23107,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://karstenfestag.gmxhome.de/linux.html">microtek2</a>
<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek2.5.html">sane-microtek2</a></td>
+<td align=center><a href="man/sane-microtek2.5.html">sane-microtek2</a></td>
</tr>
<tr><td align=center>Highscreen Realscan</td>
<td align=center>SCSI</td>
@@ -23118,7 +23118,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.mir.com/mtek/">microtek</a>
<br>(0.13.1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-microtek.5.html">sane-microtek</a></td>
+<td align=center><a href="man/sane-microtek.5.html">sane-microtek</a></td>
</tr>
<tr><td align=center>Highscreen Scanboostar Premium</td>
<td align=center>SCSI</td>
@@ -23129,7 +23129,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.rauch-domain.de/sane-umax/index.html">umax</a>
<br>(1.0-41)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-umax.5.html">sane-umax</a></td>
+<td align=center><a href="man/sane-umax.5.html">sane-umax</a></td>
</tr>
</table>
<h3><a name="Z-VUEGO">Manufacturer: Vuego</a></h3>
@@ -23138,7 +23138,7 @@ artec_eplus48u<br>(unmaintained)
</p>
<h3><a name="Z-XEROX">Manufacturer: Xerox</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.xerox.com/">http://www.xerox.com/</a>, <a href="http://www.office.xerox.com/">http://www.office.xerox.com/</a><br>
</p>
<table border=1>
@@ -23160,7 +23160,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>DocuMate150</td>
<td align=center>USB</td>
@@ -23171,7 +23171,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate152</td>
<td align=center>USB</td>
@@ -23182,7 +23182,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate162</td>
<td align=center>USB</td>
@@ -23193,7 +23193,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate232</td>
<td align=center>USB</td>
@@ -23204,7 +23204,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate250</td>
<td align=center>USB</td>
@@ -23215,7 +23215,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate250-G</td>
<td align=center>USB</td>
@@ -23226,7 +23226,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate252</td>
<td align=center>USB</td>
@@ -23237,7 +23237,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate252-G</td>
<td align=center>USB</td>
@@ -23248,7 +23248,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate262</td>
<td align=center>USB</td>
@@ -23259,7 +23259,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate262-G</td>
<td align=center>USB</td>
@@ -23270,7 +23270,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate262i</td>
<td align=center>USB</td>
@@ -23281,7 +23281,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate272</td>
<td align=center>USB</td>
@@ -23292,7 +23292,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate272-G</td>
<td align=center>USB</td>
@@ -23303,7 +23303,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate510</td>
<td align=center>USB</td>
@@ -23314,7 +23314,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate510-G</td>
<td align=center>USB</td>
@@ -23325,7 +23325,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate512</td>
<td align=center>USB</td>
@@ -23336,7 +23336,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate520</td>
<td align=center>USB</td>
@@ -23347,7 +23347,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate520-G</td>
<td align=center>USB</td>
@@ -23358,7 +23358,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate632</td>
<td align=center>USB</td>
@@ -23369,7 +23369,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate752</td>
<td align=center>USB</td>
@@ -23380,7 +23380,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center>DocuMate752</td>
<td align=center>USB</td>
@@ -23391,7 +23391,7 @@ artec_eplus48u<br>(unmaintained)
<a href="http://skull.piratehaven.org/~mike/sane/avision.html">avision</a>
<br>(Build: 296)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-avision.5.html">sane-avision</a></td>
+<td align=center><a href="man/sane-avision.5.html">sane-avision</a></td>
</tr>
<tr><td align=center><a href="http://www.office.xerox.com/multifunction-printer/multifunction-under-30ppm/phaser-3200mfp/spec-enus.html">Phaser 3200MFP</a></td>
<td align=center>USB</td>
@@ -23401,7 +23401,7 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>Phaser 6110MFP</td>
<td align=center>USB</td>
@@ -23411,7 +23411,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>Travel Scanner 100</td>
<td align=center>USB</td>
@@ -23422,7 +23422,7 @@ xerox_mfp<br>(1.0-13)
<a href="http://www.meier-geinitz.de/sane/genesys-backend/">genesys</a>
<br>(1.0-63)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-genesys.5.html">sane-genesys</a></td>
+<td align=center><a href="man/sane-genesys.5.html">sane-genesys</a></td>
</tr>
<tr><td align=center>WorkCentre 3119 Series</td>
<td align=center>USB</td>
@@ -23432,7 +23432,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>WorkCentre 3210</td>
<td align=center>USB</td>
@@ -23442,7 +23442,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>WorkCentre 3220</td>
<td align=center>USB</td>
@@ -23452,7 +23452,7 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
<tr><td align=center>WorkCentre 4118 Series</td>
<td align=center>USB</td>
@@ -23462,12 +23462,12 @@ xerox_mfp<br>(1.0-13)
<td align=center>
xerox_mfp<br>(1.0-13)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
+<td align=center><a href="man/sane-xerox_mfp.5.html">sane-xerox_mfp</a></td>
</tr>
</table>
<h3><a name="Z-YAKUMO">Manufacturer: Yakumo</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.yakumo.com/">http://www.yakumo.com/</a><br>
</p>
<table border=1>
@@ -23488,16 +23488,16 @@ xerox_mfp<br>(1.0-13)
<td align=center>
artec_eplus48u<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
+<td align=center><a href="man/sane-artec_eplus48u.5.html">sane-artec_eplus48u</a></td>
</tr>
</table>
<h2><a name="STILL">Still Cameras</a></h2>
-<p><b>Manufacturers</b>:
-<a href="#Z-KODAK">Kodak</a>,
+<p><b>Manufacturers</b>:
+<a href="#Z-KODAK">Kodak</a>,
<a href="#Z-POLAROID">Polaroid</a></p>
<h3><a name="Z-KODAK">Manufacturer: Kodak</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.kodak.com/global/en/service/digCam/dc25/dc25.shtml">http://www.kodak.com/global/en/service/digCam/dc25/dc25.shtml</a>, <a href="http://www.kodak.com/global/en/service/digCam/dc210/dc210.shtml">http://www.kodak.com/global/en/service/digCam/dc210/dc210.shtml</a>, <a href="http://www.kodak.com/global/en/service/products/ekn006568.jhtml">http://www.kodak.com/global/en/service/products/ekn006568.jhtml</a><br>
</p>
<table border=1>
@@ -23519,7 +23519,7 @@ artec_eplus48u<br>(unmaintained)
<a href="mailto:peter@fales-lorenz.net">dc25</a>
<br>(1.2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-dc25.5.html">sane-dc25</a></td>
+<td align=center><a href="man/sane-dc25.5.html">sane-dc25</a></td>
</tr>
<tr><td align=center>DC25</td>
<td align=center>Serial port</td>
@@ -23530,7 +23530,7 @@ artec_eplus48u<br>(unmaintained)
<a href="mailto:peter@fales-lorenz.net">dc25</a>
<br>(1.2)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-dc25.5.html">sane-dc25</a></td>
+<td align=center><a href="man/sane-dc25.5.html">sane-dc25</a></td>
</tr>
<tr><td align=center>DC210</td>
<td align=center>Serial port</td>
@@ -23541,7 +23541,7 @@ artec_eplus48u<br>(unmaintained)
<a href="mailto:peter@fales-lorenz.net">dc210</a>
<br>(0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-dc210.5.html">sane-dc210</a></td>
+<td align=center><a href="man/sane-dc210.5.html">sane-dc210</a></td>
</tr>
<tr><td align=center>DC240</td>
<td align=center>Serial port</td>
@@ -23552,12 +23552,12 @@ artec_eplus48u<br>(unmaintained)
<a href="mailto:peter@fales-lorenz.net">dc240</a>
<br>(0.0)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-dc240.5.html">sane-dc240</a></td>
+<td align=center><a href="man/sane-dc240.5.html">sane-dc240</a></td>
</tr>
</table>
<h3><a name="Z-POLAROID">Manufacturer: Polaroid</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.polaroid.com/">http://www.polaroid.com/</a><br>
</p>
<table border=1>
@@ -23578,21 +23578,21 @@ artec_eplus48u<br>(unmaintained)
<td align=center>
dmc<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-dmc.5.html">sane-dmc</a></td>
+<td align=center><a href="man/sane-dmc.5.html">sane-dmc</a></td>
</tr>
</table>
<h2><a name="VIDEO">Video Cameras</a></h2>
-<p><b>Manufacturers</b>:
-<a href="#Z-AIPTEK">Aiptek</a>,
-<a href="#Z-BIOLUX">Biolux</a>,
-<a href="#Z-CONNECTIX">Connectix</a>,
-<a href="#Z-CREATIVE">Creative</a>,
-<a href="#Z-DIGITAL-DREAM">Digital Dream</a>,
-<a href="#Z-GRANDTEK-SCOPECAM">Grandtek Scopecam</a>,
+<p><b>Manufacturers</b>:
+<a href="#Z-AIPTEK">Aiptek</a>,
+<a href="#Z-BIOLUX">Biolux</a>,
+<a href="#Z-CONNECTIX">Connectix</a>,
+<a href="#Z-CREATIVE">Creative</a>,
+<a href="#Z-DIGITAL-DREAM">Digital Dream</a>,
+<a href="#Z-GRANDTEK-SCOPECAM">Grandtek Scopecam</a>,
<a href="#Z-KONICA">Konica</a></p>
<h3><a name="Z-AIPTEK">Manufacturer: Aiptek</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.aiptek.com.tw">http://www.aiptek.com.tw</a><br>
</p>
<table border=1>
@@ -23614,7 +23614,7 @@ dmc<br>(unmaintained)
<a href="http://gkall.hobby.nl/stv680-aiptek.html">stv680</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-stv680.5.html">sane-stv680</a></td>
+<td align=center><a href="man/sane-stv680.5.html">sane-stv680</a></td>
</tr>
</table>
<h3><a name="Z-BIOLUX">Manufacturer: Biolux</a></h3>
@@ -23630,13 +23630,13 @@ dmc<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/biolux-654.html">654 (micrOcular)</a></td>
+<tr><td align=center><a href="unsupported/biolux-654.html">654 (micrOcular)</a></td>
<td align=center>USB</td>
<td align=center>0x0923/0x010f</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not supported yet. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -23663,7 +23663,7 @@ dmc<br>(unmaintained)
<td align=center>
qcam<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-qcam.5.html">sane-qcam</a></td>
+<td align=center><a href="man/sane-qcam.5.html">sane-qcam</a></td>
</tr>
<tr><td align=center>Greyscale QuickCam</td>
<td align=center>Parport</td>
@@ -23673,12 +23673,12 @@ qcam<br>(unmaintained)
<td align=center>
qcam<br>(unmaintained)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-qcam.5.html">sane-qcam</a></td>
+<td align=center><a href="man/sane-qcam.5.html">sane-qcam</a></td>
</tr>
</table>
<h3><a name="Z-CREATIVE">Manufacturer: Creative</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.creative.com/">http://www.creative.com/</a><br>
</p>
<table border=1>
@@ -23700,12 +23700,12 @@ qcam<br>(unmaintained)
<a href="http://gkall.hobby.nl/stv680-aiptek.html">stv680</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-stv680.5.html">sane-stv680</a></td>
+<td align=center><a href="man/sane-stv680.5.html">sane-stv680</a></td>
</tr>
</table>
<h3><a name="Z-DIGITAL-DREAM">Manufacturer: Digital Dream</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.digitaldreamco.com/en/index.shtml">http://www.digitaldreamco.com/en/index.shtml</a><br>
</p>
<table border=1>
@@ -23727,7 +23727,7 @@ qcam<br>(unmaintained)
<a href="http://gkall.hobby.nl/stv680-aiptek.html">stv680</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-stv680.5.html">sane-stv680</a></td>
+<td align=center><a href="man/sane-stv680.5.html">sane-stv680</a></td>
</tr>
</table>
<h3><a name="Z-GRANDTEK-SCOPECAM">Manufacturer: Grandtek Scopecam</a></h3>
@@ -23743,13 +23743,13 @@ qcam<br>(unmaintained)
<th align=center>Backend</th>
<th align=center>Manpage</th>
</tr>
-<tr><td align=center><a href="/unsupported/grandtech-scopecam.html">8x30 Binocular & Digital Camera</a></td>
+<tr><td align=center><a href="unsupported/grandtech-scopecam.html">8x30 Binocular & Digital Camera</a></td>
<td align=center>USB</td>
<td align=center>0x0797/0x801c</td>
<td align=center><font color="#F00000">Unsupported</font></td>
<td>Not Supported yet. See link for more details.</td>
<td align=center>
-<a href="/contrib.html">unsupported</a>
+<a href="contrib.html">unsupported</a>
<br>(2010-06-09)
</td>
<td align=center>?</td>
@@ -23757,7 +23757,7 @@ qcam<br>(unmaintained)
</table>
<h3><a name="Z-KONICA">Manufacturer: Konica</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.konicaminolta.com">http://www.konicaminolta.com</a><br>
</p>
<table border=1>
@@ -23779,23 +23779,23 @@ qcam<br>(unmaintained)
<a href="http://gkall.hobby.nl/stv680-aiptek.html">stv680</a>
<br>(1.0-1)
</td>
-<td align=center><a href="http://www.sane-project.org/man/sane-stv680.5.html">sane-stv680</a></td>
+<td align=center><a href="man/sane-stv680.5.html">sane-stv680</a></td>
</tr>
</table>
<h2><a name="API">APIs</a></h2>
-<p><b>Backends</b>:
-<a href="#A-GPHOTO2">gphoto2</a>,
-<a href="#A-PINT">pint</a>,
-<a href="#A-PNM">pnm</a>,
-<a href="#A-TEST">test</a>,
+<p><b>Backends</b>:
+<a href="#A-GPHOTO2">gphoto2</a>,
+<a href="#A-PINT">pint</a>,
+<a href="#A-PNM">pnm</a>,
+<a href="#A-TEST">test</a>,
<a href="#A-V4L">v4l</a></p>
<h3><a name="A-GPHOTO2">Backend: gphoto2
(0.0)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:peter@fales-lorenz.net">mailto:peter@fales-lorenz.net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-gphoto2.5.html">sane-gphoto2</a><br>
+<b>Manual page:</b> <a href="man/sane-gphoto2.5.html">sane-gphoto2</a><br>
<b>Description:</b> <a href="http://www.gphoto.org">Multiple cameras supported by the gphoto2 libraries</a><br>
<b>Comment:</b> The long-term plan is to support all the cameras supported by the gphoto2 libraries (currently over 140 models). However, at this stage, only a handful of cameras are definitely known to work with SANE. Other cameras will probably work if the native file format is EXIF or JPEG. Testers welcome!<br>
</p>
@@ -23803,7 +23803,7 @@ qcam<br>(unmaintained)
(unmaintained)
</a></h3>
<p>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pint.5.html">sane-pint</a><br>
+<b>Manual page:</b> <a href="man/sane-pint.5.html">sane-pint</a><br>
<b>Description:</b> Scanners with the machine-independent PINT interface<br>
<b>Comment:</b> Haven't been tested for a long time. Handle with care.<br>
</p>
@@ -23811,9 +23811,9 @@ qcam<br>(unmaintained)
(1.0.8)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-pnm.5.html">sane-pnm</a><br>
+<b>Manual page:</b> <a href="man/sane-pnm.5.html">sane-pnm</a><br>
<b>Description:</b> Reads PNM files<br>
<b>Comment:</b> Used for debugging frontends. Obsolete, use test backend instead.<br>
</p>
@@ -23821,9 +23821,9 @@ qcam<br>(unmaintained)
(1.0-28)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.meier-geinitz.de/sane/test-backend/">http://www.meier-geinitz.de/sane/test-backend/</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-test.5.html">sane-test</a><br>
+<b>Manual page:</b> <a href="man/sane-test.5.html">sane-test</a><br>
<b>Description:</b> Frontend-tester<br>
<b>Comment:</b> Backend for testing frontends. Also serves as example for SANE backend options.<br>
</p>
@@ -23831,32 +23831,32 @@ qcam<br>(unmaintained)
(1.0-3)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-v4l.5.html">sane-v4l</a><br>
+<b>Manual page:</b> <a href="man/sane-v4l.5.html">sane-v4l</a><br>
<b>Description:</b> Interface to Video For Linux API<br>
<b>Comment:</b> Supports video cameras and other devices accessed by the v4l kernel API, e.g. bttv devices. Quite a lot of known bugs.<br>
</p>
<h2><a name="META">Meta Backends</a></h2>
-<p><b>Backends</b>:
-<a href="#M-DLL">dll</a>,
+<p><b>Backends</b>:
+<a href="#M-DLL">dll</a>,
<a href="#M-NET">net</a></p>
<h3><a name="M-DLL">Backend: dll
(1.0.13)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="mailto:henning@meier-geinitz.de">mailto:henning@meier-geinitz.de</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-dll.5.html">sane-dll</a><br>
+<b>Manual page:</b> <a href="man/sane-dll.5.html">sane-dll</a><br>
<b>Description:</b> Dynamic loading of shared-library backends.<br>
</p>
<h3><a name="M-NET">Backend: net
(1.0.14)
</a></h3>
<p>
-<b>Link(s):</b>
+<b>Link(s):</b>
<a href="http://www.penguin-breeder.org/?page=sane-net">http://www.penguin-breeder.org/?page=sane-net</a><br>
-<b>Manual page:</b> <a href="http://www.sane-project.org/man/sane-net.5.html">sane-net</a><br>
+<b>Manual page:</b> <a href="man/sane-net.5.html">sane-net</a><br>
<b>Description:</b> Network access to saned servers<br>
<b>Comment:</b> Can be used to access any scanner supported by SANE over the net. Supports IPv4 and IPv6.<br>
</p>
@@ -23870,18 +23870,18 @@ qcam<br>(unmaintained)
<dt><b>USB id:</b></dt>
<dd>The USB vendor and product ids as printed by sane-find-scanner -q (only applicable for USB devices).</dd>
<dt><b>Status</b>:</dt>
- <dd>Indicates how many of the features the device provides
+ <dd>Indicates how many of the features the device provides
are supported by SANE.
<ul><li><font color="#F00000">unsupported</font> means the device is not supported at least by this backend. It may be supported by other backends, however.
<li><font color="#0000B0">untested</font> means the device may be supported but couldn't be tested. Be very careful and report success/failure.
<li><font color="#B00000">minimal</font> means that the
- device is detected and scans at least in one mode. But the quality
+ device is detected and scans at least in one mode. But the quality
is bad or important features won't work.
- <li><font color="#FF9000">basic</font> means it works at
+ <li><font color="#FF9000">basic</font> means it works at
least in the most important modes but quality is not perfect.
- <li><font color="#90B000">good</font> means the device is usable
+ <li><font color="#90B000">good</font> means the device is usable
for day-to-day work. Some rather exotic features may be missing.
- <li><font color="#007000">complete</font> means the backends
+ <li><font color="#007000">complete</font> means the backends
supports everything the device can do.
</ul></dd>
<dt><b>Comment:</b></dt>
@@ -23891,8 +23891,8 @@ qcam<br>(unmaintained)
Version of backend/driver; newer versions may be
available from their home sites.<br> <font color="#F00000">NEW!</font> means brand-new to the
current release of SANE.<br>
- UNMAINTAINED means that nobody maintains that backend. Expect no
- new features or newly supported devices. You are welcome to take over
+ UNMAINTAINED means that nobody maintains that backend. Expect no
+ new features or newly supported devices. You are welcome to take over
maintainership.
</dd>
<dt><b>Manual Page:</b></dt>
@@ -23904,9 +23904,9 @@ qcam<br>(unmaintained)
</dl>
</blockquote>
<hr>
-<a href="http://www.sane-project.org/">SANE homepage</a>
+<a href="./">SANE homepage</a>
<address>
-<a href="http://www.sane-project.org/imprint.html"
+<a href="imprint.html"
>Contact</a>
</address>
<font size=-1>
diff --git a/testsuite/tools/data/hwdb.ref b/testsuite/tools/data/hwdb.ref
index 909ac46..7d029e0 100644
--- a/testsuite/tools/data/hwdb.ref
+++ b/testsuite/tools/data/hwdb.ref
@@ -11,7 +11,7 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
# Hewlett-Packard ScanJet 4100C
usb:v03F0p0101*
@@ -2733,4 +2733,3 @@ usb:v413Cp5124*
# Dell 1600n
usb:v413Cp5250*
libsane_matched=yes
-
diff --git a/testsuite/tools/data/testfile.desc b/testsuite/tools/data/testfile.desc
index 06359b6..e59aed3 100644
--- a/testsuite/tools/data/testfile.desc
+++ b/testsuite/tools/data/testfile.desc
@@ -20,7 +20,7 @@
:comment "Untested, use with caution"
:backend "agfafocus"
:version "unmaintained"
-:manpage "sane-agfafocus"
+:manpage "sane-agfafocus"
:devicetype :scanner
@@ -66,9 +66,9 @@
;:url "http://no.www.page.yet/" ; backend's web page
:devicetype :scanner ; start of a list of devices....
-
+
:mfg "Apple"
-:url "http://developer.apple.com/"
+:url "http://developer.apple.com/"
:model "Apple Scanner"
:interface "SCSI"
:status :good ; :alpha, :beta, :stable, :new
@@ -1327,7 +1327,7 @@
;
:backend "canon_dr" ; name of backend
-:url "http://www.thebility.com/canon/"
+:url "http://www.thebility.com/canon/"
:version "38" ; version of backend
:manpage "sane-canon_dr" ; name of manpage (if it exists)
:comment "Backend updated for SANE release 1.0.23, see sane-canon_dr manpage"
@@ -1644,7 +1644,7 @@
;
:backend "cardscan" ; name of backend
-:url "http://www.thebility.com/cardscan/"
+:url "http://www.thebility.com/cardscan/"
:version "2" ; version of backend
:manpage "sane-cardscan" ; name of manpage (if it exists)
:comment "Backend updated for SANE release 1.0.21, see sane-cardscan manpage"
@@ -1707,19 +1707,19 @@
:comment "needs linux kernel 2.4.19 or later"
:model "LS 50 ED"
-;:url "/unsupported/nikon-ls50-ed.html"
+;:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Coolscan V ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Super Coolscan LS-5000 ED"
-:url "/unsupported/nikon-ls5000-ed.html"
+:url "unsupported/nikon-ls5000-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4002"
:status :untested
@@ -1772,13 +1772,13 @@
:comment "Rebadged LS 40?"
:model "LS 50 ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
:model "Coolscan V ED"
-:url "/unsupported/nikon-ls50-ed.html"
+:url "unsupported/nikon-ls50-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4001"
:status :minimal
@@ -1794,7 +1794,7 @@
:comment "needs linux kernel 2.4.19 or later"
:model "Super Coolscan LS-5000 ED"
-:url "/unsupported/nikon-ls5000-ed.html"
+:url "unsupported/nikon-ls5000-ed.html"
:interface "USB"
:usbid "0x04b0" "0x4002"
:status :untested
@@ -1835,7 +1835,7 @@
:model "LS-30" ; name models for above-specified mfg.
:interface "SCSI"
-:comment "alpha: only 24/30 bit RGB + 32/40 bit RGBI"
+:comment "alpha: only 24/30 bit RGB + 32/40 bit RGBI"
:status :basic
:model "LS-2000" ; name models for above-specified mfg.
@@ -1845,7 +1845,7 @@
:model "LS-1000"
:interface "SCSI"
-:comment "Doesn't support gamma correction"
+:comment "Doesn't support gamma correction"
:status :basic
; :comment and :url specifiers are optional after :mfg, :model, :desc,
@@ -1858,7 +1858,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :stillcam ; start of a list of devices....
-
+
:mfg "Kodak"
:url "http://www.kodak.com/global/en/service/digCam/dc210/dc210.shtml"
:model "DC210"
@@ -1872,7 +1872,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :stillcam ; start of a list of devices....
-
+
:mfg "Kodak"
:url "http://www.kodak.com/global/en/service/products/ekn006568.jhtml"
:model "DC240"
@@ -1960,7 +1960,7 @@
;
:backend "epjitsu" ; name of backend
-:url "http://www.thebility.com/epjitsu/"
+:url "http://www.thebility.com/epjitsu/"
:version "20" ; version of backend
:manpage "sane-epjitsu" ; name of manpage (if it exists)
:comment "Backend updated for SANE release 1.0.21, see sane-epjitsu manpage"
@@ -4349,10 +4349,10 @@
:usbid "0x04b8" "0x082b"
:status :good
-:model "DX-6000"
-:interface "USB"
-:usbid "0x04b8" "0x082e"
-:status :good
+:model "DX-6000"
+:interface "USB"
+:usbid "0x04b8" "0x082e"
+:status :good
:model "DX-7400"
:interface "USB"
@@ -4397,7 +4397,7 @@
:backend "fujitsu" ; name of backend
-:url "http://www.thebility.com/fujitsu/"
+:url "http://www.thebility.com/fujitsu/"
:version "117" ; version of backend
:manpage "sane-fujitsu" ; name of manpage (if it exists)
:comment "Backend updated for SANE release 1.0.23, see sane-fujitsu manpage"
@@ -4412,7 +4412,7 @@
; DISCONTINUED OLDER MODELS, SMALL
:model "M3091DC"
:interface "SCSI"
-:url "http://www.remote.org/frederik/projects/software/sane/"
+:url "http://www.remote.org/frederik/projects/software/sane/"
:status :complete
:comment "small, old, discontinued"
@@ -5131,7 +5131,7 @@
:url "mailto:peter@fales-lorenz.net" ; backend's web page
:devicetype :api ; start of a list of devices....
-
+
:desc "Multiple cameras supported by the gphoto2 libraries"
:url "http://www.gphoto.org"
;:interface "USB, serial port"
@@ -5186,7 +5186,7 @@
:url "http://www.genius-kye.com/"
:model "ColorPage Slim 1200"
-;:url "/unsupported/genius-colorpage-slim-1200.html"
+;:url "unsupported/genius-colorpage-slim-1200.html"
:interface "USB"
:usbid "0x0458" "0x201e"
:status :untested
@@ -5268,7 +5268,7 @@
:mfg "Medion/Lifetec/Tevion/Cytron"
:url "http://www.medion.com"
:comment "Sold by Aldi and Tchibo."
-
+
:model "MD 4394"
:interface "USB"
:usbid "0x05d8" "0x4002"
@@ -5779,7 +5779,7 @@
:comment "8bpp color, 75/150/300/600 dpi only"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
-; and at the top-level.
+; and at the top-level.
; Copied from hp3300 testtools - Martijn van Oosterhout 22/02/2003
; SANE Backend specification file
;
@@ -6154,7 +6154,7 @@
:status :untested
:comment "Untested, please report!"
:backend "kodakaio"
-:url "http://sourceforge.net/projects/cupsdriverkodak/"
+:url "http://sourceforge.net/projects/cupsdriverkodak/"
:version "2.4.6"
:manpage "sane-kodakaio"
:comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
@@ -6334,7 +6334,7 @@
:backend "kodak"
-:url "http://www.thebility.com/kodak/"
+:url "http://www.thebility.com/kodak/"
:version "7"
:manpage "sane-kodak"
:comment "New backend for SANE release 1.0.21, see sane-kodak manpage"
@@ -6660,7 +6660,7 @@
:devicetype :scanner ; start of a list of devices....
:mfg "LEO"
-:model "LEOScan S3"
+:model "LEOScan S3"
:interface "SCSI"
:comment "FCC ID LUZFS1130"
:status :good
@@ -6694,7 +6694,7 @@
:url "http://stef.dev.free.fr/sane/lexmark"
; backend's web page
-:comment "This backend supports lexmark x1100 series scanners."
+:comment "This backend supports lexmark x1100 series scanners."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -6794,7 +6794,7 @@
:interface "USB"
:usbid "0x055f" "0x0010"
:status :good
-:comment "Works upto 600 dpi. No support for TA and ADF yet."
+:comment "Works upto 600 dpi. No support for TA and ADF yet."
:mfg "Fujitsu" ; name a manufacturer
:url "http://www.fujitsu.com/"
@@ -7002,7 +7002,7 @@
:status :good
:model "ScanMaker 9800XL"
-:url "/unsupported/microtek-scanmaker-9800.html"
+:url "unsupported/microtek-scanmaker-9800.html"
:interface "IEEE-1394"
:status :minimal
:comment "IEEE-1394 seems to work. See link. More reports welcome."
@@ -7083,7 +7083,7 @@
:backend "microtek"
:version "0.13.1"
-:manpage "sane-microtek"
+:manpage "sane-microtek"
:url "http://www.mir.com/mtek/"
:devicetype :scanner
@@ -7682,7 +7682,7 @@
:model "PagePartner"
:interface "Parport (EPP/ECP)"
-:status :basic
+:status :basic
:comment "Sheetfed scanner, work in gray and color, but uncalibrated scans"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
@@ -9153,10 +9153,10 @@
:backend "rts8891" ; name of backend
:version "1.0-0" ; version of backend (or "unmaintained")
:manpage "sane-rts8891" ; name of manpage (if it exists)
-:url "http://stef.dev.free.fr/sane/rts8891/index.html"
+:url "http://stef.dev.free.fr/sane/rts8891/index.html"
; backend's web page
-:comment "This backend supports Realtek RTS8891 ASIC bases scanners."
+:comment "This backend supports Realtek RTS8891 ASIC bases scanners."
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -9225,20 +9225,20 @@
:mfg "Sceptre"
:url "http://www.sceptre.com/"
-:model "Vividscan S1200"
+:model "Vividscan S1200"
:interface "SCSI"
:status :basic
:mfg "Komodo"
:url "http://www.komodo.com/"
-:model "S1200"
+:model "S1200"
:interface "SCSI"
:status :untested
:comment "rebadged Sceptre S1200"
:backend "sharp" ; name of backend
:version "0.32" ; version of backend
;:status :beta ; :alpha, :beta, :stable, :new
-:url "http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html"
+:url "http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html"
; backend's homepage
:manpage "sane-sharp"
:devicetype :scanner
@@ -9344,7 +9344,7 @@
:version "1.1" ; version of backend (or "unmaintained")
:manpage "sane-sm3840" ; name of manpage (if it exists)
:url "http://www.ziplabel.com/sm3840/" ; backend's web page
-:comment "This reverse-engineered backend supports the USB ScanMaker 3840 model"
+:comment "This reverse-engineered backend supports the USB ScanMaker 3840 model"
; comment about the backend
:devicetype :scanner ; start of a list of devices....
@@ -10695,41 +10695,41 @@
:mfg "UMAX" ; name a manufacturer
:url "http://www.umax.com.tw/"
-; These scanners are known to have the same ASIC family.
+; These scanners are known to have the same ASIC family.
:model "Astra 1220P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 2000P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 1600P"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:model "Astra 600P"
:interface "Parport (SPP/ECP)"
-:status :unsupported
+:status :unsupported
:comment "untested, but should be close to 610P"
:model "Astra 610P"
:interface "Parport (SPP/ECP)"
-:status :good
+:status :good
:mfg "Hewlett-Packard"
:model "Scanjet 3200C"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:comment "works (relabelled 1220P and 2000P)"
:mfg "Genius"
:model "ColorPage-Life Pro"
:interface "Parport (EPP/ECP)"
-:status :good
+:status :good
:comment "works (relabelled 1220P and 2000P)"
; :comment and :url specifiers are optional after :mfg, :model, :desc,
@@ -10746,7 +10746,7 @@
:backend "unsupported" ; name of backend
:version "2010-06-09" ; version of backend
-:url "/contrib.html"
+:url "contrib.html"
;:manpage "sane-mustek" ; name of manpage (if it exists)
:comment "The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs."
@@ -10757,14 +10757,14 @@
:mfg "Agfa"
:model "DuoScan f40"
-:url "/unsupported/agfa-duoscan-f40.html"
+:url "unsupported/agfa-duoscan-f40.html"
:interface "USB IEEE-1394"
:usbid "0x06bd" "0x02bf"
:status :unsupported
:comment "Unsupported. See link for details."
:model "DuoScan T2000XL"
-:url "/unsupported/agfa-duoscan-t2000xl.html"
+:url "unsupported/agfa-duoscan-t2000xl.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. Same as Microtek ArtixScan 2020?"
@@ -10775,25 +10775,25 @@
:comment "Unsupported. Same as Microtek Artixscan 2500f"
:model "SnapScan 310P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan EZ"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan 1200P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
:model "SnapScan 1212P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:interface "Parport"
:status :unsupported
:comment "Unsupported, see link for details."
@@ -10804,7 +10804,7 @@
:url "http://www.artecusa.com/"
:model "1236 USB"
-:url "/unsupported/artec_1236usb.html"
+:url "unsupported/artec_1236usb.html"
:interface "USB"
:usbid "0x05d8" "0x4001"
:status :unsupported
@@ -10816,7 +10816,7 @@
:comment "Unsupported. Chips found inside: AT015, AD9816JS. Maybe similar to SCSI version or as6e?"
:model "Ultima 2000 (0x4001)"
-:url "/unsupported/artec-ultima-2000-2.html"
+:url "unsupported/artec-ultima-2000-2.html"
:interface "USB"
:usbid "0x05d8" "0x4001"
:status :unsupported
@@ -10827,7 +10827,7 @@
:mfg "Avigramm"
:model "Minidoc"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -10849,14 +10849,14 @@
:comment "Not supported. No chipset information available. Same as UMAX Astra 6700."
:model "iVina 1600"
-:url "/unsupported/umax-astra-4500.html"
+:url "unsupported/umax-astra-4500.html"
:interface "USB"
:usbid "0x0638" "0x0a10"
:status :unsupported
:comment "GL646 based, to be added to genesys backend. Same as UMAX Astra 4500."
:model "iVina FB1800"
-:url "/unsupported/umax-astra-4700.html"
+:url "unsupported/umax-astra-4700.html"
:interface "USB"
:usbid "0x0638" "0x0a20"
:status :unsupported
@@ -10870,49 +10870,49 @@
:comment "Formerly Acer Peripherals"
:model "310P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "320P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "340P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "610P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "610PT"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "620P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "620PT"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
:model "640P"
-:url "/unsupported/acer-parport.html"
+:url "unsupported/acer-parport.html"
:status :unsupported
:interface "Parport"
:comment "Unsupported, see link for details."
@@ -10924,7 +10924,7 @@
:comment "Unsupported."
:model "5550"
-:url "/unsupported/benq-5550.html"
+:url "unsupported/benq-5550.html"
:interface "USB"
:usbid "0x04a5" "0x2211"
:status :unsupported
@@ -10934,10 +10934,10 @@
:interface "USB"
:usbid "0x04a5" "0x2311"
:status :unsupported
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html"
:model "7400UT"
-:url "/unsupported/benq-7400ut.html"
+:url "unsupported/benq-7400ut.html"
:interface "USB"
:usbid "0x04a5" "0x2202"
:status :unsupported
@@ -10947,7 +10947,7 @@
:mfg "Boeder"
:model "Sm@rtScan Office"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -10959,7 +10959,7 @@
:url "http://www.brother.com/"
:model "MFC 2500"
-:url "/unsupported/brother-mfc-2500.html"
+:url "unsupported/brother-mfc-2500.html"
:interface "USB"
:usbid "0x04f9" "0x000a"
:status :unsupported
@@ -10972,13 +10972,13 @@
:comment "The parport 200x400dpi grayscale version of this scanner is unsupported. Dmitri Katchalov did some investigations on this scanner. If you want to write a backend, contact him (see link)."
:model "MFC 7300c"
-:url "/unsupported/brother-mfc-7300.html"
+:url "unsupported/brother-mfc-7300.html"
:interface "Parport USB"
:usbid "0x04f9" "0x0106"
:status :unsupported
:model "MFC 9600"
-:url "/unsupported/brother-mfc-9600.html"
+:url "unsupported/brother-mfc-9600.html"
:interface "USB"
:usbid "0x04f9" "0x0101"
:status :unsupported
@@ -10989,7 +10989,7 @@
:url "http://www.c-channel.ch/"
:model "MyPen Pro"
-:url "/unsupported/c-channel-mypen-pro.html"
+:url "unsupported/c-channel-mypen-pro.html"
:interface "USB"
;:usbid "" ""
:status :unsupported
@@ -11002,7 +11002,7 @@
:comment "See bug #306792 for details."
:model "MoneyPen II"
-;:url "/unsupported/c-channel-mypen-pro.html"
+;:url "unsupported/c-channel-mypen-pro.html"
:interface "USB"
;:usbid "" ""
:status :unsupported
@@ -11014,70 +11014,70 @@
:url "http://www.canon.com/"
:model "CanoScan 3000"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based."
:model "CanoScan 3000ex"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based."
:model "CanoScan 3000F"
-:url "/unsupported/canon-3000.html"
+:url "unsupported/canon-3000.html"
:interface "USB"
:usbid "0x04a9" "0x2215"
:status :unsupported
:comment "GL660+GL646 based, to be added to genesys backend"
:model "CanoScan 4200F"
-:url "/unsupported/canon-4200f.html"
+:url "unsupported/canon-4200f.html"
:interface "USB"
:usbid "0x04a9" "0x221b"
:status :unsupported
:comment "Probably unsupported. See link."
:model "CanoScan 4400F"
-:url "/unsupported/canon-4400.html"
+:url "unsupported/canon-4400.html"
:interface "USB"
:usbid "0x04a9" "0x2228"
:status :unsupported
:comment "GL843 based, to be added to genesys backend"
:model "CanoScan 5000F"
-:url "/unsupported/canon-5000f.html"
+:url "unsupported/canon-5000f.html"
:interface "USB"
:usbid "0x04a9" "0x2212"
:status :unsupported
:comment "Unsupported. See link for details."
:model "CanoScan 5200F"
-:url "/unsupported/canon-5200f.html"
+:url "unsupported/canon-5200f.html"
:interface "USB"
:usbid "0x04a9" "0x2217"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "CanoScan 8000F"
-:url "/unsupported/canon-8000f.html"
+:url "unsupported/canon-8000f.html"
:interface "USB"
:usbid "0x04a9" "0x220f"
:status :unsupported
:comment "Not supported. See link for more information. With transparency adapter."
:model "CanoScan 8400F"
-:url "/unsupported/canon-8400f.html"
+:url "unsupported/canon-8400f.html"
:interface "USB"
:usbid "0x04a9" "0x221e"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "CanoScan 8600F"
-:url "/unsupported/canon-8600.html"
+:url "unsupported/canon-8600.html"
:interface "USB"
:usbid "0x04a9" "0x2229"
:status :unsupported
@@ -11085,49 +11085,49 @@
:model "CanoScan 9900F"
-:url "/unsupported/canon-9900f.html"
+:url "unsupported/canon-9900f.html"
:interface "USB"
:usbid "0x04a9" "0x2210"
:status :unsupported
:comment "Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter."
:model "CanoScan 9950F"
-:url "/unsupported/canon-9950f.html"
+:url "unsupported/canon-9950f.html"
:interface "USB"
:usbid "0x04a9" "0x2219"
:status :unsupported
:comment "Probably unsupported."
:model "CanoScan D646U"
-:url "/unsupported/canon-d646u.html"
+:url "unsupported/canon-d646u.html"
:interface "USB"
:usbid "0x04a9" "0x220b"
:status :unsupported
:comment "Probably not supported. See link for more information and test program."
:model "CanoScan D646U ex"
-:url "/unsupported/canon-d646u.html"
+:url "unsupported/canon-d646u.html"
:interface "USB"
:usbid "0x04a9" "0x220b"
:status :unsupported
:comment "Probably not supported. See D646."
:model "CanoScan D1230U"
-:url "/unsupported/canon-d1230u.html"
+:url "unsupported/canon-d1230u.html"
:interface "USB"
:usbid "0x04a9" "0x2209"
:status :unsupported
:comment "Probably not supported. "
:model "CanoScan D1250U2"
-:url "/unsupported/canon-d1250u2.html"
+:url "unsupported/canon-d1250u2.html"
:interface "USB"
:usbid "0x04a9" "0x220c"
:status :unsupported
:comment "Not supported. However, someone started working on this scanner and some information is available (see link)."
:model "CanoScan D2400UF"
-:url "/unsupported/canon-d2400uf.html"
+:url "unsupported/canon-d2400uf.html"
:interface "USB"
:usbid "0x04a9" "0x220a"
:status :unsupported
@@ -11140,7 +11140,7 @@
:comment "Probably not supported. No details known."
:model "CanoScan FB620U"
-:url "/unsupported/canon-fb620u.html"
+:url "unsupported/canon-fb620u.html"
:interface "USB"
:usbid "0x04a9" "0x2202"
:status :unsupported
@@ -11161,21 +11161,21 @@
:comment "Philips chip. Backend started, see link"
:model "CanoScan LiDE 80"
-:url "/unsupported/canon-lide-80.html"
+:url "unsupported/canon-lide-80.html"
:interface "USB"
:usbid "0x04a9" "0x2214"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "CanoScan LiDE 90"
-:url "/unsupported/canon-lide-90.html"
+:url "unsupported/canon-lide-90.html"
:interface "USB"
:usbid "0x04a9" "0x1900"
:status :unsupported
:comment "Unsupported. See link for details."
:model "CanoScan LiDE 500F"
-:url "/unsupported/canon-canoscan-lide-500f.html"
+:url "unsupported/canon-canoscan-lide-500f.html"
:interface "USB"
:usbid "0x04a9" "0x221f"
:status :unsupported
@@ -11196,67 +11196,67 @@
:comment "Philips chip. Backend started, see link"
:model "FS4000"
-:url "/unsupported/canon-fs4000.html"
+:url "unsupported/canon-fs4000.html"
:interface "USB SCSI"
:usbid "0x04a9" "0x3042"
:status :unsupported
:comment "Not supported. See link for more details."
:model "IS 12"
-:url "/unsupported/canon-is-12.html"
+:url "unsupported/canon-is-12.html"
:interface "USB"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 22"
-:url "/unsupported/canon-is-22.html"
+:url "unsupported/canon-is-22.html"
:interface "Parport"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 32"
-:url "/unsupported/canon-is-32.html"
+:url "unsupported/canon-is-32.html"
:interface "USB"
:usbid "0x04a9" "0x105d"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "IS 52"
-:url "/unsupported/canon-is-52.html"
+:url "unsupported/canon-is-52.html"
:interface "USB"
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
:model "ImageRunner iR1018"
-:url "/unsupported/canon-imagerunner.html"
+: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"
+: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"
+: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"
+:url "unsupported/canon-pixma-mp110.html"
:interface "USB"
:usbid "0x04a9" "0x1700"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "PIXMA MP130"
-:url "/unsupported/canon-pixma-mp130.html"
+:url "unsupported/canon-pixma-mp130.html"
:interface "USB"
:usbid "0x04a9" "0x1701"
:status :unsupported
@@ -11271,7 +11271,7 @@
:mfg "Chinon"
:model "DS-3000"
-:url "/unsupported/chinon-ds3000.html"
+:url "unsupported/chinon-ds3000.html"
:interface "Parport Serial Port"
:status :unsupported
:comment "Unsupported at the moment, but a backend is in preparation. See link."
@@ -11292,7 +11292,7 @@
:mfg "Compeye"
:model "Simplex 1236C"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -11304,14 +11304,14 @@
:url "http://www.cardscan.com/"
:model "Cardscan 500"
-:url "/unsupported/corex-cardscan-500.html"
+:url "unsupported/corex-cardscan-500.html"
:interface "USB"
:usbid "0x08f0" "0x0001"
:status :unsupported
:comment "Probably not supported. Businesscard reader."
:model "Cardscan 700 C"
-:url "/unsupported/corex-cardscan-700.html"
+:url "unsupported/corex-cardscan-700.html"
:interface "USB"
:usbid "0x08f0" "0x0004"
:status :unsupported
@@ -11329,14 +11329,14 @@
:comment "Probably rebadged Lexmark X5150. May work with sane-lexmark? See bug #312130"
:model "A960"
-:url "/unsupported/dell-a960.html"
+:url "unsupported/dell-a960.html"
:interface "USB"
:usbid "0x413c" "0x5107"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "922"
-:url "/unsupported/dell-922.html"
+:url "unsupported/dell-922.html"
:interface "USB"
:usbid "0x413c" "0x5109"
:status :unsupported
@@ -11360,7 +11360,7 @@
:comment "Probably unsupported. No details known."
:model "Stylus DX4450"
-:url "/unsupported/epson-stylus-dx4450.html"
+:url "unsupported/epson-stylus-dx4450.html"
:interface "USB"
:usbid "0x04b8" "0x083f"
:status :unsupported
@@ -11377,7 +11377,7 @@
:url "http://www.bizcardreader.com/"
:model "BizCardReader 900C"
-:url "/unsupported/edt-900c.html"
+:url "unsupported/edt-900c.html"
:interface "USB"
:usbid "0x0a53" "0x5001"
:status :unsupported
@@ -11417,41 +11417,41 @@
:url "http://www.genius-kye.com/"
:model "ColorPage CS"
-:url "/unsupported/genius-colorpage-cs.html"
+:url "unsupported/genius-colorpage-cs.html"
:interface "SCSI"
:status :unsupported
:comment "Probably unsupported, see link for details."
:model "ColorPage-Slim 1200 USB2"
-:url "/unsupported/genius-colorpage-slim-1200-usb2.html"
+:url "unsupported/genius-colorpage-slim-1200-usb2.html"
:interface "USB"
:usbid "0x0458" "0x2020"
:status :unsupported
:comment "GL841 based, to be added to genesys backend."
:model "ColorPage HR6X Slim"
-:url "/unsupported/genius-colorpage-hr6x.html"
+:url "unsupported/genius-colorpage-hr6x.html"
:interface "USB"
:usbid "0x0458" "0x2019"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "ColorPage HR7X"
-:url "/unsupported/genius-colorpage-hr7x.html"
+:url "unsupported/genius-colorpage-hr7x.html"
:interface "USB"
:usbid "0x0458" "0x2018"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "ColorPage HR7XE"
-:url "/unsupported/genius-colorpage-hr7xe.html"
+:url "unsupported/genius-colorpage-hr7xe.html"
:interface "USB"
:usbid "0x06dc" "0x0012"
:status :unsupported
:comment "Unsuported. See link for details."
:model "ColorPage HR8"
-:url "/unsupported/genius-colorpage-hr8.html"
+:url "unsupported/genius-colorpage-hr8.html"
:interface "USB"
:usbid "0x0458" "0x201c"
:status :unsupported
@@ -11462,7 +11462,7 @@
:mfg "Guillemot" ; name a manufacturer
:model "SCAN@HOME 48 USB"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -11479,7 +11479,7 @@
:mfg "Hercules" ; name a manufacturer
:model "SCAN@HOME 48 USB"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -11492,7 +11492,7 @@
:url "http://www.hp.com/"
:model "Photo Scanner 1000"
-:url "/unsupported/hp-photo-1000.html"
+:url "unsupported/hp-photo-1000.html"
:interface "USB"
:usbid "0x03f0" "0x1001"
:status :unsupported
@@ -11504,35 +11504,35 @@
:comment "Probably not supported by SANE. No details known. 10x15 cm. Maybe similar to Photo Scanner 1000?"
:model "Photosmart S20 (C5101A)"
-:url "/unsupported/hp-photosmart-s20xi.html"
+:url "unsupported/hp-photosmart-s20xi.html"
:interface "USB"
:usbid "0x03f0" "0x0102"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "Photosmart S20xi (C7150A)"
-:url "/unsupported/hp-photosmart-s20xi.html"
+:url "unsupported/hp-photosmart-s20xi.html"
:interface "USB"
:usbid "0x03f0" "0x0102"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "Photosmart C5100 series"
-:url "/unsupported/hp-photosmart-5100.html"
+:url "unsupported/hp-photosmart-5100.html"
:interface "USB"
:usbid "0x03f0" "0x5811"
:status :unsupported
:comment "Not supported yet by SANE. See link for details."
:model "ScanJet 2400c"
-:url "/unsupported/hp-scanjet-2400c.html"
+:url "unsupported/hp-scanjet-2400c.html"
:interface "USB"
:usbid "0x03f0" "0x0a01"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "Photosmart C3180"
-:url "/unsupported/hp-photosmart-3180.html"
+:url "unsupported/hp-photosmart-3180.html"
:interface "USB"
:usbid "0x03f0" "0x5611"
:status :unsupported
@@ -11545,7 +11545,7 @@
:comment "While an external binary-only backend exists, it works only on Linux i386. Therefore the scanner is unsupported on other platforms."
:model "ScanJet 4600"
-:url "/unsupported/hp-scanjet-4600.html"
+:url "unsupported/hp-scanjet-4600.html"
:interface "USB"
:usbid "0x03f0" "0x3005"
:comment "Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code"
@@ -11558,35 +11558,35 @@
:status :unsupported
:model "ScanJet 4850C"
-:url "/unsupported/hp-scanjet-4850.html"
+:url "unsupported/hp-scanjet-4850.html"
:interface "USB"
:usbid "0x03f0" "0x1b05"
:comment "GL841, maybe can be added to genesys backend "
:status :unsupported
:model "ScanJet 4890C"
-:url "/unsupported/hp-scanjet-4850.html"
+:url "unsupported/hp-scanjet-4850.html"
:interface "USB"
:usbid "0x03f0" "0x1b05"
:comment "GL843, maybe can be added to genesys backend "
:status :unsupported
:model "ScanJet 5530C Photosmart"
-:url "/unsupported/hp-scanjet-5530.html"
+:url "unsupported/hp-scanjet-5530.html"
:interface "USB"
:usbid "0x03f0" "0x1605"
:comment "Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend"
:status :unsupported
:model "ScanJet 8390"
-:url "/unsupported/hp-scanjet-8390.html"
+:url "unsupported/hp-scanjet-8390.html"
:interface "USB"
:usbid "0x03f0" "0x3805"
:comment "Probably not supported. See link for details."
:status :unsupported
:model "ScanJet G4000"
-:url "/unsupported/hp-g4000.html"
+:url "unsupported/hp-g4000.html"
:interface "USB"
:usbid "0x03f0" "0x4505"
:comment "Probably not supported. See link for details."
@@ -11608,7 +11608,7 @@
:url "http://www.iomagic.com/"
:model "MobileScan USB"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
@@ -11620,21 +11620,21 @@
:url "http://irislink.com/"
:model "IriScan"
-:url "/unsupported/iris-iriscan.html"
+:url "unsupported/iris-iriscan.html"
:interface "USB"
:usbid "0x0a53" "0x1000"
:status :unsupported
:comment "Unsupported. LM9832/3. See link for details."
:model "IRISPen Translator Executive"
-:url "/unsupported/iris-irispen-translator.html"
+:url "unsupported/iris-irispen-translator.html"
:interface "USB"
:usbid "0x0f43" "0x015a"
:status :unsupported
:comment "Unsupported. See link for details."
:model "IRISCard Pro (IBCR II)"
-:url "/unsupported/iris-business.html"
+:url "unsupported/iris-business.html"
:interface "USB"
:usbid "0x0a38" "0x0301"
:status :unsupported
@@ -11656,84 +11656,84 @@
:url "http://www.lexmark.com/"
:model "P6250"
-:url "/unsupported/lexmark-p6250.html"
+:url "unsupported/lexmark-p6250.html"
:interface "USB"
:usbid "0x043d" "0x0097"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Photo 3150"
-:url "/unsupported/lexmark-3150.html"
+:url "unsupported/lexmark-3150.html"
:interface "USB"
:usbid "0x043d" "0x007d"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X74"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X75"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X75 PrinTrio"
-:url "/unsupported/lexmark-x75.html"
+:url "unsupported/lexmark-x75.html"
:interface "USB"
:usbid "0x043d" "0x0060"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X83"
-:url "/unsupported/lexmark-x83.html"
+:url "unsupported/lexmark-x83.html"
:interface "USB"
:usbid "0x043d" "0x003d"
:status :unsupported
:comment "Unsupported. GL640."
:model "X2330"
-:url "/unsupported/lexmark-x2330.html"
+:url "unsupported/lexmark-x2330.html"
:interface "USB"
:usbid "0x043d" "0x00bb"
:status :unsupported
:comment "Unsupported. See link for details."
-
+
:model "X3450"
-:url "/unsupported/lexmark-x3450.html"
+:url "unsupported/lexmark-x3450.html"
:interface "USB"
:usbid "0x043d" "0x00f6"
:status :unsupported
:comment "Unsupported. See link for details."
-
+
:model "X5130"
-:url "/unsupported/lexmark-x5130.html"
+:url "unsupported/lexmark-x5130.html"
:interface "USB"
:usbid "0x043d" "0x0065"
:status :unsupported
:comment "Unsupported."
:model "X5150"
-:url "/unsupported/lexmark-x5130.html"
+:url "unsupported/lexmark-x5130.html"
:interface "USB"
:usbid "0x043d" "0x0065"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "X5250"
-:url "/unsupported/lexmark-x5250.html"
+:url "unsupported/lexmark-x5250.html"
:interface "USB"
:usbid "0x043d" "0x0093"
:status :unsupported
:comment "Unsupported."
:model "X6170"
-:url "/unsupported/lexmark-x6170.html"
+:url "unsupported/lexmark-x6170.html"
:interface "USB"
:usbid "0x043d" "0x0072"
:status :unsupported
@@ -11746,14 +11746,14 @@
:comment "Unsupported. See bug #310889 for details."
:model "X7350"
-:url "/unsupported/lexmark-x7350.html"
+:url "unsupported/lexmark-x7350.html"
:interface "USB"
:usbid "0x043d" "0x00b8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "X8350"
-:url "/unsupported/lexmark-x8350.html"
+:url "unsupported/lexmark-x8350.html"
:interface "USB"
:usbid "0x043d" "0x00b9"
:status :unsupported
@@ -11770,7 +11770,7 @@
:comment "Most probably unsupported."
:model "PageScan USB"
-:url "/unsupported/logitech-pagescan-usb.html"
+:url "unsupported/logitech-pagescan-usb.html"
:interface "USB"
:usbid "0x046d" "0x040f"
:status :unsupported
@@ -11783,42 +11783,42 @@
:url "http://www.medion.de/"
:model "MD 6190"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x0392"
:status :unsupported
:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
:model "MD 6190"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. There seem to exist two different scanners with that name. See link for details."
:model "MD 40420"
-:url "/unsupported/tevion-md40420.html"
+:url "unsupported/tevion-md40420.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 41260"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 41985"
-:url "/unsupported/medion-md6190.html"
+:url "unsupported/medion-md6190.html"
:interface "USB"
:usbid "0x0461" "0x037b"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 42666"
-:url "/unsupported/tevion-md40420.html"
+:url "unsupported/tevion-md40420.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
@@ -11832,21 +11832,21 @@
:comment "Fingerprint sensor. See link for details."
:model "MD 90009"
-:url "/unsupported/tevion-md90009.html"
+:url "unsupported/tevion-md90009.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "MD 90070"
-:url "/unsupported/tevion-md90070.html"
+:url "unsupported/tevion-md90070.html"
:interface "USB"
:usbid "0x05da" "0x3022"
:status :unsupported
:comment "Unsupported. See link for details."
:model "MD 90090"
-:url "/unsupported/tevion-md90070.html"
+:url "unsupported/tevion-md90070.html"
:interface "USB"
:usbid "0x05da" "0x3022"
:status :unsupported
@@ -11858,28 +11858,28 @@
:url "http://www.memorex.com/"
:model "6136u"
-:url "/unsupported/memorex-maxx-6136u.html"
+:url "unsupported/memorex-maxx-6136u.html"
:interface "USB"
:usbid "0x0461" "0x0346"
:status :unsupported
:comment "Probably unsupported."
:model "6142u"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Probably unsupported. Same as Visioneer Onetouch 4400. See link for details."
:model "MaxxScan 6122"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "USB Parport"
:usbid "0x05cb" "0x1483"
:status :unsupported
:comment "Unsupported. See link for details."
:model "SCF 9612P"
-:url "/unsupported/memorex-scf-9612p.html"
+:url "unsupported/memorex-scf-9612p.html"
:interface "Parport"
:status :unsupported
:comment "Probably unsupported. See link for details."
@@ -11894,7 +11894,7 @@
:comment "Unsupported. Same as Agfa DuoScan T2000XL?"
:model "ArtixScanDI 2020"
-:url "/unsupported/microtek-artixscan-2020.html"
+:url "unsupported/microtek-artixscan-2020.html"
:interface "USB"
:usbid "0x05da" "0x202e"
:status :unsupported
@@ -11911,7 +11911,7 @@
:comment "Unsupported. Uses ALI M5611B."
:model "FilmScan 35"
-:url "/unsupported/microtek-filmscan-35.html"
+:url "unsupported/microtek-filmscan-35.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
@@ -11923,89 +11923,89 @@
:comment "Probably unsupported. Seems to be similar to the Microtek 330 CX and is detected by the microtek2 backend. Scanning doesn't seem to work however."
:model "Scanmaker 1850S"
-:url "/unsupported/microtek-scanmaker-1850s.html"
+:url "unsupported/microtek-scanmaker-1850s.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 3630"
-:url "/unsupported/microtek-scanmaker-3630.html"
+:url "unsupported/microtek-scanmaker-3630.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Unsupported. Doesn't seem to be compatible to 3600 series, see link."
:model "ScanMaker 3800"
-:url "/unsupported/microtek-scanmaker-3800.html"
+:url "unsupported/microtek-scanmaker-3800.html"
:interface "USB"
:usbid "0x05da" "0x30ce"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 3830"
-:url "/unsupported/microtek-scanmaker-3830.html"
+:url "unsupported/microtek-scanmaker-3830.html"
:interface "USB"
:usbid "0x05da" "0x30ce"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 3860"
-:url "/unsupported/microtek-scanmaker-3880.html"
+:url "unsupported/microtek-scanmaker-3880.html"
:interface "USB"
:usbid "0x05da" "0x3023"
:status :unsupported
:comment "Unsupported. See link for more details. Appears to be similar to ScanMaker 3880."
:model "ScanMaker 3880"
-:url "/unsupported/microtek-scanmaker-3880.html"
+:url "unsupported/microtek-scanmaker-3880.html"
:interface "USB"
:usbid "0x05da" "0x3021"
:status :unsupported
:comment "Unsupported. SQ113 chip. See link for more details."
:model "ScanMaker 4600"
-:url "/unsupported/microtek-scanmaker-4600.html"
+:url "unsupported/microtek-scanmaker-4600.html"
:interface "USB"
:usbid "0x05da" "0x40c7"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 4700"
-:url "/unsupported/microtek-scanmaker-4700.html"
+:url "unsupported/microtek-scanmaker-4700.html"
:interface "USB"
:usbid "0x05da" "0x20b4"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 4850"
-:url "/unsupported/microtek-scanmaker-4900.html"
+:url "unsupported/microtek-scanmaker-4900.html"
:interface "USB"
:usbid "0x05da" "0x30d9"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ScanMaker 4850 II"
-:url "/unsupported/microtek-scanmaker-4850-2.html"
+:url "unsupported/microtek-scanmaker-4850-2.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ScanMaker 4900"
-:url "/unsupported/microtek-scanmaker-4900.html"
+:url "unsupported/microtek-scanmaker-4900.html"
:interface "USB"
:usbid "0x05da" "0x30b9"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 5"
-:url "/unsupported/microtek-scanmaker-5600.html"
+:url "unsupported/microtek-scanmaker-5600.html"
:interface "SCSI"
:status :unsupported
:comment "Probably unsupported. See link for more details."
:model "ScanMaker 5600"
-:url "/unsupported/microtek-scanmaker-5600.html"
+:url "unsupported/microtek-scanmaker-5600.html"
:interface "USB"
:usbid "0x05da" "0x20a7"
:status :unsupported
@@ -12018,49 +12018,49 @@
:comment "Unsupported. Uses ALI M5615 like the ScanMaker 4700."
:model "ScanMaker 5800"
-:url "/unsupported/microtek-scanmaker-5800.html"
+:url "unsupported/microtek-scanmaker-5800.html"
:interface "USB"
:usbid "0x05da" "0x3008"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 5800"
-:url "/unsupported/microtek-scanmaker-5800.html"
+:url "unsupported/microtek-scanmaker-5800.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "ScanMaker 5900"
-:url "/unsupported/microtek-scanmaker-5900.html"
+:url "unsupported/microtek-scanmaker-5900.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 5950"
-:url "/unsupported/microtek-scanmaker-5950.html"
+:url "unsupported/microtek-scanmaker-5950.html"
:interface "USB"
:usbid "0x05da" "0x30d8"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6000"
-:url "/unsupported/microtek-scanmaker-6000.html"
+:url "unsupported/microtek-scanmaker-6000.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6100"
-:url "/unsupported/microtek-scanmaker-6100.html"
+:url "unsupported/microtek-scanmaker-6100.html"
:interface "USB"
:usbid "0x05da" "0x30e5"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "ScanMaker 6700"
-:url "/unsupported/microtek-scanmaker-6700.html"
+:url "unsupported/microtek-scanmaker-6700.html"
:interface "USB IEEE-1394"
:usbid "0x05da" "0x20c9"
:status :unsupported
@@ -12068,7 +12068,7 @@
:model "ScanMaker 8700"
:status :unsupported
-:url "/unsupported/microtek-scanmaker-8700.html"
+:url "unsupported/microtek-scanmaker-8700.html"
:interface "USB IEEE-1394"
:usbid "0x05da" "0x20b1"
:comment "Unsupported. See link for details. USB vendor and product ids to be checked."
@@ -12080,35 +12080,35 @@
:comment "Probably unsupported. SCSI seems to work with microtek2 backend."
:model "ScanMaker 9800XL"
-:url "/unsupported/microtek-scanmaker-9800.html"
+:url "unsupported/microtek-scanmaker-9800.html"
:interface "USB SCSI"
:usbid "0x05da" "0x20de"
:status :unsupported
:comment "Partly unsupported. IEEE-1394 works with microtek2 backend. See link."
:model "ScanMaker i320"
-:url "/unsupported/microtek-scanmaker-i320.html"
+:url "unsupported/microtek-scanmaker-i320.html"
:interface "USB"
:usbid "0x05da" "0x30e6"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanMaker s400"
-:url "/unsupported/microtek-scanmaker-s400.html"
+:url "unsupported/microtek-scanmaker-s400.html"
:interface "USB"
:usbid "0x05da" "0x201c"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanMaker S400"
-:url "/unsupported/microtek-scanmaker-s400.html"
+:url "unsupported/microtek-scanmaker-s400.html"
:interface "USB"
:usbid "0x05da" "0x300b"
:status :unsupported
:comment "Unsupported. See link."
:model "ScanPort 3000"
-:url "/unsupported/microtek-scanport-3000.html"
+:url "unsupported/microtek-scanport-3000.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
@@ -12121,35 +12121,35 @@
:url "http://www.konicaminolta.com/"
:model "Dual Scan III"
-:url "/unsupported/minolta-dual-scan-III.html"
+:url "unsupported/minolta-dual-scan-III.html"
:interface "USB"
:usbid "0x0686" "0x400d"
:status :unsupported
:comment "Unsupported. May work with vuescan. See link for details."
:model "Dual Scan IV"
-:url "/unsupported/minolta-dual-scan-IV.html"
+:url "unsupported/minolta-dual-scan-IV.html"
:interface "USB"
:usbid "0x132b" "0x000a"
:status :unsupported
:comment "Unsupported. Works with vuescan. See link for details."
:model "DiMAGE Scan Elite 5400"
-:url "/unsupported/minolta-dse-5400.html"
+:url "unsupported/minolta-dse-5400.html"
:interface "USB IEEE-1394"
:usbid "0x0686" "0x400e"
:status :unsupported
:comment "Probably unsupported. May work with vuescan. See link for details."
:model "DiMAGE Scan Elite 5400 2"
-:url "/unsupported/minolta-dse-5400-2.html"
+:url "unsupported/minolta-dse-5400-2.html"
:interface "USB"
:usbid "0x132b" "0x0012"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "DiMAGE Scan Multi Pro"
-:url "/unsupported/minolta-dimage-scan-multi-pro.html"
+:url "unsupported/minolta-dimage-scan-multi-pro.html"
:interface "IEEE-1394"
:status :unsupported
:comment "Probably unsupported. See link for details."
@@ -12185,21 +12185,21 @@
:status :unsupported
:model "BearPaw 2448 CU Pro"
-:url "/unsupported/mustek-bearpaw-2448-cu-pro.html"
+:url "unsupported/mustek-bearpaw-2448-cu-pro.html"
:usbid "0x055f" "0x0408"
:interface "USB"
:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
:status :unsupported
:model "BearPaw 4800 TA Pro"
-:url "/unsupported/mustek-bearpaw-4800ta-pro.html"
+:url "unsupported/mustek-bearpaw-4800ta-pro.html"
:interface "USB"
:usbid "0x055f" "0x1000"
:comment "Not supported. See link for some information."
:status :unsupported
:model "BearPaw 4800 TA Pro II"
-:url "/unsupported/mustek-bearpaw-4800ta-pro-ii.html"
+:url "unsupported/mustek-bearpaw-4800ta-pro-ii.html"
:interface "USB"
:usbid "0x055f" "0x040a"
:comment "Not supported. May be supported by mustek_usb2 backend later. See link for some information."
@@ -12256,7 +12256,7 @@
:comment "Probably unsupported. USB business card scanner. Maybe works as USB storage device?"
:model "ScanMagic 9636P"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html"
:interface "Parport"
:status :unsupported
:comment "Probably not supported. Same as Mustek 12000 P?. ASIC 1505."
@@ -12267,7 +12267,7 @@
:url "http://www.nevt.co.jp/"
:model "Petiscan"
-:url "/unsupported/nec-petiscan.html"
+:url "unsupported/nec-petiscan.html"
:interface "USB"
:usbid "0x0475" "0x0100"
:status :unsupported
@@ -12279,7 +12279,7 @@
:url "http://www.nikon.com/"
:model "LS-9000 ED"
-:url "/unsupported/nikon-ls9000-ed.html"
+:url "unsupported/nikon-ls9000-ed.html"
:interface "IEEE-1394"
:status :unsupported
:comment "Probably not supported. See link for details. Possibly similar to LS-8000 ED."
@@ -12290,7 +12290,7 @@
:url "http://www.olivetti.com"
:model "Job-Jet M400"
-:url "/unsupported/olivetti-job-jet-m400.html"
+:url "unsupported/olivetti-job-jet-m400.html"
:interface "USB"
:usbid "0x0b3c" "0xa880"
:status :unsupported
@@ -12301,12 +12301,12 @@
:url "http://www.olympus.com"
:model "ES-10P"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html"
:interface "Parport"
:status :unsupported
:model "ES-10S"
-:url "/unsupported/olympus-es10s.html"
+:url "unsupported/olympus-es10s.html"
:interface "SCSI"
:status :unsupported
:comment "Probably not supported. See link for details."
@@ -12431,7 +12431,7 @@
:mfg "Pentax"
:model "DSmobile USB"
-:url "/unsupported/syscan-travelscan-pro.html"
+:url "unsupported/syscan-travelscan-pro.html"
:interface "USB"
:usbid "0x0a82" "0x2000"
:status :unsupported
@@ -12444,7 +12444,7 @@
:comment "Pacific Image Electronics"
:model "Primefilm 1800u"
-:url "/unsupported/pie-1800u.html"
+:url "unsupported/pie-1800u.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
@@ -12453,7 +12453,7 @@
:model "Primefilm 2700"
:interface "USB"
:status :unsupported
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html"
:model "Primefilm 3600PRO"
:interface "USB IEEE-1394"
@@ -12461,14 +12461,14 @@
:comment "Probably not supported. "
:model "Powerslide 3600"
-:url "/unsupported/reflecta-digitdia-3600.html"
+:url "unsupported/reflecta-digitdia-3600.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0142"
:status :unsupported
:comment "Probably unsupported. Film scanner that can scan directly from the magazine."
:model "PF3650 Pro3 Film Scanner"
-:url "/unsupported/pie-pf3650.html"
+:url "unsupported/pie-pf3650.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0143"
:status :unsupported
@@ -12485,7 +12485,7 @@
:url "http://www.plustek.com/"
:model "OpticFilm 7200"
-:url "/unsupported/plustek-opticfilm-7200.html"
+:url "unsupported/plustek-opticfilm-7200.html"
:interface "USB"
:usbid "0x07b3" "0x0807"
:status :unsupported
@@ -12508,21 +12508,21 @@
:comment "Uses RealTek chipset (RTL8801D)"
:model "OpticPro S12"
-:url "/unsupported/plustek-opticpro-st12.html"
+:url "unsupported/plustek-opticpro-st12.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
:model "OpticPro ST12"
-:url "/unsupported/plustek-opticpro-st12.html"
+:url "unsupported/plustek-opticpro-st12.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
:comment "Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend."
:model "OpticPro ST16"
-:url "/unsupported/plustek-opticpro-st16.html"
+:url "unsupported/plustek-opticpro-st16.html"
:interface "USB"
:usbid "0x07b3" "0x0600"
:status :unsupported
@@ -12534,14 +12534,14 @@
:comment "Probably LM983x based."
:model "OpticPro S24"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
:comment "Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend."
:model "OpticPro ST24"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
@@ -12549,83 +12549,83 @@
:model "OpticPro S28"
:interface "USB"
-:url "/unsupported/plustek-opticpro-s28.html"
+:url "unsupported/plustek-opticpro-s28.html"
:usbid "0x07b3" "0x0801"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST28"
-:url "/unsupported/plustek-opticpro-s28.html"
+:url "unsupported/plustek-opticpro-s28.html"
:interface "USB"
:usbid "0x07b3" "0x0801"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST28"
-:url "/unsupported/plustek-opticpro-st28.html"
+:url "unsupported/plustek-opticpro-st28.html"
:interface "USB"
:usbid "0x07b3" "0x0802"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "Umax AstraScan 4750"
-:url "/unsupported/umax-astrscan-4750.html"
+:url "unsupported/umax-astrscan-4750.html"
:interface "USB"
:usbid "0x07b3" "0x0802"
:status :unsupported
:comment "GL841 based, to be added to genesys backend, rebadged Plustek ST28"
:model "OpticPro ST48"
-:url "/unsupported/plustek-opticpro-st48.html"
+:url "unsupported/plustek-opticpro-st48.html"
:interface "USB"
:usbid "0x07b3" "0x0800"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticPro ST64"
-:url "/unsupported/plustek-opticpro-st64.html"
+:url "unsupported/plustek-opticpro-st64.html"
:interface "USB"
:usbid "0x07b3" "0x0c00"
:status :unsupported
:comment "GL843 based, maybe to be added to genesys backend"
:model "OpticPro ST64+"
-:url "/unsupported/plustek-opticpro-st64plus.html"
+:url "unsupported/plustek-opticpro-st64plus.html"
:interface "USB"
:usbid "0x07b3" "0x0c03"
:status :unsupported
:comment "GL843 based. See link for more details."
:model "PL 806"
-:url "/unsupported/plustek-pl806.html"
+:url "unsupported/plustek-pl806.html"
:interface "USB"
:usbid "0x07b3" "0x0c0c"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "SmartOffice PL 812"
-:url "/unsupported/plustek-pl812.html"
+:url "unsupported/plustek-pl812.html"
:interface "USB"
:usbid "0x07b3" "0x0c0d"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "OpticSlim 500"
-:url "/unsupported/plustek-opticslim-500.html"
+:url "unsupported/plustek-opticslim-500.html"
:interface "USB"
:usbid "0x07b3" "0x0458"
:status :unsupported
:comment "Unsupported. See link for more details."
:model "OpticSlim 2420"
-:url "/unsupported/plustek-opticslim-2420.html"
+:url "unsupported/plustek-opticslim-2420.html"
:interface "USB"
:usbid "0x07b3" "0x0806"
:status :unsupported
:comment "GL841 based, to be added to genesys backend"
:model "OpticSlim 2420+"
-:url "/unsupported/plustek-opticslim-2420plus.html"
+:url "unsupported/plustek-opticslim-2420plus.html"
:interface "USB"
:usbid "0x07b3" "0x0914"
:status :unsupported
@@ -12642,7 +12642,7 @@
:comment "Business card reader. No further information available."
:model "ScanCopy 115"
-:url "/unsupported/plustek-scancopy-115.html"
+:url "unsupported/plustek-scancopy-115.html"
:interface "USB"
:usbid "0x07b3" "0x081c"
:status :unsupported
@@ -12700,7 +12700,7 @@
:comment "Probably not supported. No details known."
:model "DocuPen R700"
-:url "/unsupported/planon-docupen-r700.html"
+:url "unsupported/planon-docupen-r700.html"
:interface "USB"
:usbid "0x10c4" "0xea60"
:status :unsupported
@@ -12717,7 +12717,7 @@
:url "http://www.primax.nl/"
:model "Colorado 600U"
-:url "/unsupported/primax-colorado-600u.html"
+:url "unsupported/primax-colorado-600u.html"
:interface "USB"
:usbid "0x0461" "0x0341"
:status :unsupported
@@ -12736,7 +12736,7 @@
:comment "Probably unsupported. No details known."
:model "Primascan Colorado 2600u"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
@@ -12755,7 +12755,7 @@
:comment "Not supported. However, a stand-alone program is available."
:model "Colorado USB 9600"
-:url "/unsupported/primax-colorado-usb-9600.html"
+:url "unsupported/primax-colorado-usb-9600.html"
:interface "USB"
:usbid "0x0461" "0x0340"
:status :unsupported
@@ -12820,7 +12820,7 @@
:comment "Maybe GL646. Maybe similar to Medion MD 6228?"
:model "Onetouch 8920"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x0461" "0x0371"
:status :unsupported
@@ -12832,7 +12832,7 @@
:url "http://www.fida.com/"
:model "Winscan Pro 2448U"
-:url "/unsupported/prolink-2448u.html"
+:url "unsupported/prolink-2448u.html"
:interface "USB"
:usbid "0x06dc" "0x0014"
:status :unsupported
@@ -12863,21 +12863,21 @@
:mfg "Reflecta"
:model "DigitDia 3600"
-:url "/unsupported/reflecta-digitdia-3600.html"
+:url "unsupported/reflecta-digitdia-3600.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0142"
:status :unsupported
:comment "Film scanner that can scan directly from the magazine."
:model "iScan 1800"
-:url "/unsupported/reflecta-iscan-1800.html"
+:url "unsupported/reflecta-iscan-1800.html"
:interface "USB"
:usbid "0x05e3" "0x0120"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "ProScan 4000"
-:url "/unsupported/reflecta-proscan-4000.html"
+:url "unsupported/reflecta-proscan-4000.html"
:interface "USB IEEE-1394"
:usbid "0x05e3" "0x0143"
:status :unsupported
@@ -12888,21 +12888,21 @@
:mfg "Relisys"
:model "Eclipse 1200U"
-:url "/unsupported/relisys-eclipse-1200u.html"
+:url "unsupported/relisys-eclipse-1200u.html"
:interface "USB"
:usbid "0x0475" "0x0103"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "Scorpio Ultra 3"
-:url "/unsupported/relisys-scorpio-ultra3.html"
+:url "unsupported/relisys-scorpio-ultra3.html"
:interface "USB"
:usbid "0x0475" "0x0210"
:status :unsupported
:comment "Probably unsupported. See link for details."
:model "Episode"
-:url "/unsupported/relisys-episode.html"
+:url "unsupported/relisys-episode.html"
:interface "USB"
:usbid "0x0475" "0x0103"
:status :unsupported
@@ -12918,7 +12918,7 @@
:mfg "Samsung"
:model "SCX-4725FN"
-:url "/unsupported/samsung-scx-4725.html"
+:url "unsupported/samsung-scx-4725.html"
:interface "USB"
:usbid "0x04e8" "0x341f"
:status :unsupported
@@ -12929,7 +12929,7 @@
:mfg "Scanshell"
:model "800N"
-:url "/unsupported/scanshell-800n.html"
+:url "unsupported/scanshell-800n.html"
:interface "USB"
:usbid "0x0a82" "0x6605"
:status :unsupported
@@ -12999,14 +12999,14 @@
:mfg "Syscan"
:model "TravelScan FS-531"
-:url "/unsupported/syscan-travelscan-fs531.html"
+:url "unsupported/syscan-travelscan-fs531.html"
:interface "USB"
:usbid "0x0a82" "0x0530"
:status :unsupported
:comment "Not supported. May work with the Plustek backend in future. See link for details."
:model "TravelScan Pro"
-:url "/unsupported/syscan-travelscan-pro.html"
+:url "unsupported/syscan-travelscan-pro.html"
:interface "USB"
:usbid "0x0a82" "0x2000"
:status :unsupported
@@ -13029,7 +13029,7 @@
:comment "Unsupported at the moment. See link for a project for that scanner."
:model "Artiscan 2400FS"
-:url "/unsupported/tamarack-artiscan-2400.html"
+:url "unsupported/tamarack-artiscan-2400.html"
:interface "USB"
:usbid "0x05e3" "0x0100"
:status :unsupported
@@ -13042,7 +13042,7 @@
:url "http://www.tce.com.br/"
:model "MK600U"
-:url "/unsupported/memorex-maxx-6136u.html"
+:url "unsupported/memorex-maxx-6136u.html"
:interface "USB"
:usbid "0x0461" "0x0346"
:status :unsupported
@@ -13060,7 +13060,7 @@
:url "http://www.tecoimage.com.tw/"
:model "VM6509F"
-:url "/unsupported/teco-vm6509.html"
+:url "unsupported/teco-vm6509.html"
:interface "USB"
:usbid "0x080d" "0x0102"
:status :unsupported
@@ -13071,7 +13071,7 @@
:mfg "Tiny"
:model "FU661E"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
@@ -13083,19 +13083,19 @@
:url "http://www.trust-site.com"
:model "CombiScan 19200"
-:url "/unsupported/trust-combiscan-19200.html"
+:url "unsupported/trust-combiscan-19200.html"
:interface "Parport USB"
:usbid "0x05cb" "0x1483"
:status :unsupported
:comment "Unsupported. See link for details."
:model "EasyScan 19200"
-:url "http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html"
+:url "http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html"
:interface "Parport"
:status :unsupported
:model "SCSI Scan 19200 -Excellence Series-"
-:url "/unsupported/trust-scsi-scan-19200.html"
+:url "unsupported/trust-scsi-scan-19200.html"
:interface "SCSI"
:status :unsupported
:comment "Unsupported. See link for details."
@@ -13106,49 +13106,49 @@
:url "http://www.umax.com/"
:model "Astra 2500"
-:url "/unsupported/umax-astra-2500.html"
+:url "unsupported/umax-astra-2500.html"
:interface "USB"
:usbid "0x0461" "0x0374"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 2850"
-:url "/unsupported/plustek-opticpro-st24.html"
+:url "unsupported/plustek-opticpro-st24.html"
:interface "USB"
:usbid "0x07b3" "0x0601"
:status :unsupported
:comment "Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details."
:model "Astra 3000"
-:url "/unsupported/umax-astra-3000.html"
+:url "unsupported/umax-astra-3000.html"
:interface "USB"
:usbid "0x0461" "0x038a"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 3600"
-:url "/unsupported/umax-astra-3600.html"
+:url "unsupported/umax-astra-3600.html"
:interface "USB"
:usbid "0x0461" "0x038a"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Astra 4000"
-:url "/unsupported/umax-astra-4000.html"
+:url "unsupported/umax-astra-4000.html"
:interface "USB"
:usbid "0x1606" "0x1030"
:status :unsupported
:comment "Not supported. See link for details."
:model "Astra 4100"
-:url "/unsupported/umax-astra-4100.html"
+:url "unsupported/umax-astra-4100.html"
:interface "USB"
:usbid "0x0461" "0x038c"
:status :unsupported
:comment "Not supported, to be added to genesys backend."
:model "Astra 4500"
-:url "/unsupported/umax-astra-4500.html"
+:url "unsupported/umax-astra-4500.html"
:interface "USB"
:usbid "0x0638" "0x0a10"
:status :unsupported
@@ -13160,7 +13160,7 @@
:comment "Probably not supported, no details known."
:model "Astra 4700"
-:url "/unsupported/umax-astra-4700.html"
+:url "unsupported/umax-astra-4700.html"
:interface "USB"
:usbid "0x0638" "0x0a20"
:status :unsupported
@@ -13172,21 +13172,21 @@
:comment "Not supported. No chipset information available. Same as Avision iVina FB2400."
:model "AstraSlim"
-:url "/unsupported/umax-astraslim.html"
+:url "unsupported/umax-astraslim.html"
:usbid "0x080d" "0x0104"
:interface "USB"
:status :unsupported
:comment "Probably not supported currently. See link for more details."
:model "AstraSlim 1200"
-:url "/unsupported/umax-astraslim-1200.html"
+:url "unsupported/umax-astraslim-1200.html"
:interface "USB"
:usbid "0x080d" "0x0110"
:status :unsupported
:comment "See link for more details."
:model "AstraSlim 6000"
-:url "/unsupported/umax-astraslim-6000.html"
+:url "unsupported/umax-astraslim-6000.html"
:interface "USB"
:usbid "0x080d" "0x0104"
:status :unsupported
@@ -13198,7 +13198,7 @@
:comment "Probably not supported. No details known.."
:model "Powerlook 180"
-:url "/unsupported/umax-powerlook-180.html"
+:url "unsupported/umax-powerlook-180.html"
:interface "USB"
;:usbid "0x3902" "0xc470" #correct?
:status :unsupported
@@ -13214,7 +13214,7 @@
:mfg "Vantas"
:model "3000"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
@@ -13238,35 +13238,35 @@
:comment "Not supported. Id is from Primax? Yet another scanner with the same name?"
:model "9420"
-:url "/unsupported/visioneer-9420.html"
+:url "unsupported/visioneer-9420.html"
:interface "USB"
:usbid "0x0461" "0x03a8"
:status :unsupported
:comment "Unsupported. See link for details."
:model "9450 USB"
-:url "/unsupported/visioneer-9450-usb.html"
+:url "unsupported/visioneer-9450-usb.html"
:interface "USB"
:usbid "0x04a7" "0x0421"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 4400"
-:url "/unsupported/visioneer-onetouch4400.html"
+:url "unsupported/visioneer-onetouch4400.html"
:interface "USB"
:usbid "0x0461" "0x0347"
:status :unsupported
:comment "Not supported. E5 chipset? See link for more details."
:model "OneTouch 4800 USB"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
:comment "Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details."
:model "OneTouch 5300 USB"
-:url "/unsupported/visioneer-onetouch5300.html"
+:url "unsupported/visioneer-onetouch5300.html"
:interface "USB"
:usbid "0x04a7" "0x0226"
:status :unsupported
@@ -13279,98 +13279,98 @@
:comment "Not supported. Yet another scanner with this name?"
:model "OneTouch 5800 USB"
-:url "/unsupported/visioneer-onetouch5800.html"
+:url "unsupported/visioneer-onetouch5800.html"
:interface "USB"
:usbid "0x04a7" "0x0226"
:status :unsupported
:comment "Unsupported. 48 bit scanner, doesn't work with viceo backend. RTS8801C."
:model "OneTouch 6600"
-:url "/unsupported/visioneer-onetouch6600.html"
+:url "unsupported/visioneer-onetouch6600.html"
:interface "USB"
:usbid "0x04a7" "0x022a"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 7100"
-:url "/unsupported/visioneer-onetouch7100.html"
+:url "unsupported/visioneer-onetouch7100.html"
:interface "USB"
:usbid "0x04a7" "0x0229"
:status :unsupported
:comment "GL646 based, to be added to genesys backend"
:model "Onetouch 7700"
-:url "/unsupported/visioneer-onetouch7700.html"
+:url "unsupported/visioneer-onetouch7700.html"
:interface "USB"
:usbid "0x04a7" "0x0380"
:status :unsupported
:comment "LM9832/3 based, to be added to plustek backend"
:model "OneTouch 8100"
-:url "/unsupported/visioneer-onetouch8100.html"
+:url "unsupported/visioneer-onetouch8100.html"
:interface "USB"
:usbid "0x04a7" "0x0321"
:status :unsupported
:comment "Unsupported. See link for details."
:model "Onetouch 8700"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 8900"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. Same as 8920 but without TA?"
:model "Onetouch 8920"
-:url "/unsupported/visioneer-onetouch8920.html"
+:url "unsupported/visioneer-onetouch8920.html"
:interface "USB"
:usbid "0x04a7" "0x0371"
:status :unsupported
:comment "Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices."
:model "Onetouch 9000"
-:url "/unsupported/visioneer-onetouch9020.html"
+:url "unsupported/visioneer-onetouch9020.html"
:interface "USB"
:usbid "0x04a7" "0x022c"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 9020"
-:url "/unsupported/visioneer-onetouch9020.html"
+:url "unsupported/visioneer-onetouch9020.html"
:interface "USB"
:usbid "0x04a7" "0x022c"
:status :unsupported
:comment "Not supported. See link for details."
:model "Onetouch 9320"
-:url "/unsupported/visioneer-onetouch9320.html"
+:url "unsupported/visioneer-onetouch9320.html"
:interface "USB"
:usbid "0x04a7" "0x0362"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Onetouch Pro 8800"
-:url "/unsupported/visioneer-onetouch8820.html"
+:url "unsupported/visioneer-onetouch8820.html"
:interface "USB"
:usbid "0x04a7" "0x0410"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "Onetouch Pro 8820"
-:url "/unsupported/visioneer-onetouch8820.html"
+:url "unsupported/visioneer-onetouch8820.html"
:interface "USB"
:usbid "0x04a7" "0x0410"
:status :unsupported
:comment "Probably not supported. See link for details."
:model "PaperPort 3100b"
-:url "/unsupported/visioneer-paperport-3100b.html"
+:url "unsupported/visioneer-paperport-3100b.html"
:interface "Parport"
:status :unsupported
:comment "Most probably not supported. See link for details."
@@ -13381,13 +13381,13 @@
:comment "Most probably not supported. More details would be appreciated."
:model "PaperPort OneTouch"
-:url "/unsupported/visioneer-paperport-onetouch.html"
+:url "unsupported/visioneer-paperport-onetouch.html"
:interface "Parport"
:status :unsupported
:comment "Most probably not supported. See link for details."
:model "Strobe Pro USB"
-:url "/unsupported/visioneer-strobe-pro-usb.html"
+:url "unsupported/visioneer-strobe-pro-usb.html"
:interface "USB"
:usbid "0x04a7" "0x0102"
:status :unsupported
@@ -13396,82 +13396,82 @@
;********************************************************************************************
:model "4800 One Touch"
-:url "/unsupported/xerox-4800-onetouch.html"
+:url "unsupported/xerox-4800-onetouch.html"
:interface "USB"
:usbid "0x04a7" "0x03a0"
:status :unsupported
:comment "Unsupported. See link for details. Different id compared to One Touch 4800?"
:model "DocuImage 620S"
-:url "/unsupported/xerox-docuimage-620s.html"
+:url "unsupported/xerox-docuimage-620s.html"
:interface "SCSI"
:status :unsupported
:comment "Not supported. See link for more details."
:model "DocuMate 510"
-:url "/unsupported/xerox-documate-510.html"
+:url "unsupported/xerox-documate-510.html"
:interface "USB"
:status :unsupported
:usbid "0x04a7" "0x0446"
:comment "Not supported. See link for more details."
:model "DocuMate 510"
-:url "/unsupported/xerox-documate-510.html"
+:url "unsupported/xerox-documate-510.html"
:interface "USB"
:status :unsupported
:usbid "0x04a7" "0x047c"
:comment "Not supported. See link for more details. Yet another USB id."
:model "One Touch 4800"
-:url "/unsupported/visioneer-onetouch4800.html"
+:url "unsupported/visioneer-onetouch4800.html"
:interface "USB"
:usbid "0x04a7" "0x0224"
:status :unsupported
:comment "Unsupported. See link for details. Different id compared to 4800 One Touch?"
:model "WorkCentre 470cx"
-:url "/unsupported/xerox-workcentre-470cx.html"
+:url "unsupported/xerox-workcentre-470cx.html"
:interface "Parport"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre M15i"
-:url "/unsupported/xerox-workcentre-m15i.html"
+:url "unsupported/xerox-workcentre-m15i.html"
:interface "USB"
:usbid "0x0924" "0xffef"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre XK35c"
-:url "/unsupported/xerox-workcentre-xk35c.html"
+:url "unsupported/xerox-workcentre-xk35c.html"
:interface "USB Parport"
:usbid "0x043d" "0x0020"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre XK50cx"
-:url "/unsupported/xerox-workcentre-xk50cx.html"
+:url "unsupported/xerox-workcentre-xk50cx.html"
:interface "USB"
:usbid "0x04e8" "0x3903"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre Pro 412"
-:url "/unsupported/xerox-workcentre-pro412.html"
+:url "unsupported/xerox-workcentre-pro412.html"
:interface "USB Parport"
:usbid "0x043d" "0x4303"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre PE16"
-:url "/unsupported/xerox-workcentre-pe16.html"
+:url "unsupported/xerox-workcentre-pe16.html"
:interface "USB Parport"
:usbid "0x0924" "0x4220"
:status :unsupported
:comment "Not supported. See link for more details."
:model "WorkCentre PE120i"
-:url "/unsupported/xerox-workcentre-pe120i.html"
+:url "unsupported/xerox-workcentre-pe120i.html"
:interface "USB"
:usbid "0x0924" "0x4237"
:status :unsupported
@@ -13487,7 +13487,7 @@
:mfg "Biolux"
:model "654 (micrOcular)"
-:url "/unsupported/biolux-654.html"
+:url "unsupported/biolux-654.html"
:interface "USB"
:usbid "0x0923" "0x010f"
:status :unsupported
@@ -13499,7 +13499,7 @@
:mfg "Grandtek Scopecam"
:model "8x30 Binocular & Digital Camera"
-:url "/unsupported/grandtech-scopecam.html"
+:url "unsupported/grandtech-scopecam.html"
:interface "USB"
:usbid "0x0797" "0x801c"
:status :unsupported
@@ -13511,7 +13511,7 @@
; :comment and :url specifiers are optional after :mfg, :model, :desc,
; and at the top-level.
-
+
;
; SANE Backend specification file
;
@@ -13885,4 +13885,3 @@
:interface "USB"
:usbid "0x04e8" "0x3468"
:status :untested
-
diff --git a/testsuite/tools/data/udev+acl.ref b/testsuite/tools/data/udev+acl.ref
index 167cf56..4721034 100644
--- a/testsuite/tools/data/udev+acl.ref
+++ b/testsuite/tools/data/udev+acl.ref
@@ -21,7 +21,7 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
ACTION!="add", GOTO="libsane_rules_end"
ENV{DEVTYPE}=="usb_device", GOTO="libsane_create_usb_dev"
diff --git a/testsuite/tools/data/udev+hwdb.ref b/testsuite/tools/data/udev+hwdb.ref
index aec3129..ead2939 100644
--- a/testsuite/tools/data/udev+hwdb.ref
+++ b/testsuite/tools/data/udev+hwdb.ref
@@ -18,7 +18,7 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
ACTION!="add", GOTO="libsane_rules_end"
diff --git a/testsuite/tools/data/udev.ref b/testsuite/tools/data/udev.ref
index 12db0e4..9a221fc 100644
--- a/testsuite/tools/data/udev.ref
+++ b/testsuite/tools/data/udev.ref
@@ -21,7 +21,7 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
ACTION!="add", GOTO="libsane_rules_end"
ENV{DEVTYPE}=="usb_device", GOTO="libsane_create_usb_dev"
diff --git a/testsuite/tools/data/usermap.ref b/testsuite/tools/data/usermap.ref
index a4e7884..e02d73a 100644
--- a/testsuite/tools/data/usermap.ref
+++ b/testsuite/tools/data/usermap.ref
@@ -20,7 +20,7 @@
# device detection support for your OS
#
# If the scanner is supported by sane-backends, please mail the entry to
-# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).
#
# Hewlett-Packard ScanJet 4100C
libusbscanner 0x0003 0x03f0 0x0101 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
diff --git a/testsuite/tools/data/xml.ref b/testsuite/tools/data/xml.ref
index 822fd64..0618093 100644
--- a/testsuite/tools/data/xml.ref
+++ b/testsuite/tools/data/xml.ref
@@ -1,6 +1,6 @@
<backends>
<backend name="abaton">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-abaton</manpage>
<url>*none*</url>
@@ -29,7 +29,7 @@
</type>
</backend>
<backend name="agfafocus">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-agfafocus</manpage>
<url>*none*</url>
@@ -94,7 +94,7 @@
</type>
</backend>
<backend name="apple">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-apple</manpage>
<url>*none*</url>
@@ -131,7 +131,7 @@
</type>
</backend>
<backend name="artec">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-artec</manpage>
<url>http://www4.infi.net/~cpinkham/sane/sane-artec-doc.html</url>
@@ -216,7 +216,7 @@
</type>
</backend>
<backend name="artec_eplus48u">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-artec_eplus48u</manpage>
<url>*none*</url>
@@ -354,7 +354,7 @@
</type>
</backend>
<backend name="as6e">
-<version>0.5</version>
+<version>0.5</version>
<new state="no"/>
<manpage>sane-as6e</manpage>
<url>http://as6edriver.sourceforge.net/</url>
@@ -399,7 +399,7 @@
</type>
</backend>
<backend name="avision">
-<version>Build: 296</version>
+<version>Build: 296</version>
<new state="no"/>
<manpage>sane-avision</manpage>
<url>http://skull.piratehaven.org/~mike/sane/avision.html</url>
@@ -1644,7 +1644,7 @@
</type>
</backend>
<backend name="bh">
-<version>1.0-4</version>
+<version>1.0-4</version>
<new state="no"/>
<manpage>sane-bh</manpage>
<url>http://www.martoneconsulting.com/sane-bh.html</url>
@@ -1705,7 +1705,7 @@
</type>
</backend>
<backend name="canon">
-<version>1.12</version>
+<version>1.12</version>
<new state="no"/>
<manpage>sane-canon</manpage>
<url>http://www.rzg.mpg.de/~mpd/sane/</url>
@@ -1786,7 +1786,7 @@
</type>
</backend>
<backend name="canon630u">
-<version>0.1</version>
+<version>0.1</version>
<new state="no"/>
<manpage>sane-canon630u</manpage>
<url>http://canon-fb630u.sourceforge.net/</url>
@@ -1815,7 +1815,7 @@
</type>
</backend>
<backend name="canon_dr">
-<version>38</version>
+<version>38</version>
<new state="no"/>
<manpage>sane-canon_dr</manpage>
<url>http://www.thebility.com/canon/</url>
@@ -2148,7 +2148,7 @@
</type>
</backend>
<backend name="canon_pp">
-<version>0.33</version>
+<version>0.33</version>
<new state="no"/>
<manpage>sane-canon_pp</manpage>
<url>http://canon-fb330p.sourceforge.net</url>
@@ -2233,7 +2233,7 @@
</type>
</backend>
<backend name="cardscan">
-<version>2</version>
+<version>2</version>
<new state="no"/>
<manpage>sane-cardscan</manpage>
<url>http://www.thebility.com/cardscan/</url>
@@ -2262,7 +2262,7 @@
</type>
</backend>
<backend name="coolscan">
-<version>0.4.3</version>
+<version>0.4.3</version>
<new state="no"/>
<manpage>sane-coolscan</manpage>
<url>http://andreas.rick.free.fr/sane/</url>
@@ -2307,7 +2307,7 @@
</type>
</backend>
<backend name="coolscan2">
-<version>0.1.8</version>
+<version>0.1.8</version>
<new state="no"/>
<manpage>sane-coolscan2</manpage>
<url>http://coolscan2.sourceforge.net/</url>
@@ -2361,7 +2361,7 @@
<usbvendorid>0x04b0</usbvendorid>
<usbproductid>0x4001</usbproductid>
<status>minimal</status>
- <url>/unsupported/nikon-ls50-ed.html</url>
+ <url>unsupported/nikon-ls50-ed.html</url>
<comment>*none*</comment>
</model>
<model name="Super Coolscan LS-5000 ED">
@@ -2369,7 +2369,7 @@
<usbvendorid>0x04b0</usbvendorid>
<usbproductid>0x4002</usbproductid>
<status>untested</status>
- <url>/unsupported/nikon-ls5000-ed.html</url>
+ <url>unsupported/nikon-ls5000-ed.html</url>
<comment>May work, similar to LS 50 ED, but untested. Please tell us if it works.</comment>
</model>
<model name="LS 8000 ED">
@@ -2384,7 +2384,7 @@
</type>
</backend>
<backend name="coolscan3">
-<version>1.0.0</version>
+<version>1.0.0</version>
<new state="no"/>
<manpage>sane-coolscan3</manpage>
<url>*none*</url>
@@ -2430,7 +2430,7 @@
<usbvendorid>0x04b0</usbvendorid>
<usbproductid>0x4001</usbproductid>
<status>minimal</status>
- <url>/unsupported/nikon-ls50-ed.html</url>
+ <url>unsupported/nikon-ls50-ed.html</url>
<comment>*none*</comment>
</model>
<model name="Coolscan V ED">
@@ -2438,7 +2438,7 @@
<usbvendorid>0x04b0</usbvendorid>
<usbproductid>0x4001</usbproductid>
<status>minimal</status>
- <url>/unsupported/nikon-ls50-ed.html</url>
+ <url>unsupported/nikon-ls50-ed.html</url>
<comment>Rebadged LS 50?</comment>
</model>
<model name="LS 2000">
@@ -2462,7 +2462,7 @@
<usbvendorid>0x04b0</usbvendorid>
<usbproductid>0x4002</usbproductid>
<status>untested</status>
- <url>/unsupported/nikon-ls5000-ed.html</url>
+ <url>unsupported/nikon-ls5000-ed.html</url>
<comment>May work, similar to LS 50 ED, but untested. Please tell us if it works.</comment>
</model>
<model name="LS 8000 ED">
@@ -2477,7 +2477,7 @@
</type>
</backend>
<backend name="dc25">
-<version>1.2</version>
+<version>1.2</version>
<new state="no"/>
<manpage>sane-dc25</manpage>
<url>mailto:peter@fales-lorenz.net</url>
@@ -2506,7 +2506,7 @@
</type>
</backend>
<backend name="dc210">
-<version>0.0</version>
+<version>0.0</version>
<new state="no"/>
<manpage>sane-dc210</manpage>
<url>mailto:peter@fales-lorenz.net</url>
@@ -2527,7 +2527,7 @@
</type>
</backend>
<backend name="dc240">
-<version>0.0</version>
+<version>0.0</version>
<new state="no"/>
<manpage>sane-dc240</manpage>
<url>mailto:peter@fales-lorenz.net</url>
@@ -2569,7 +2569,7 @@
</type>
</backend>
<backend name="dll">
-<version>1.0.13</version>
+<version>1.0.13</version>
<new state="no"/>
<manpage>sane-dll</manpage>
<url>mailto:henning@meier-geinitz.de</url>
@@ -2581,7 +2581,7 @@
</type>
</backend>
<backend name="dmc">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-dmc</manpage>
<url>*none*</url>
@@ -2602,7 +2602,7 @@
</type>
</backend>
<backend name="epjitsu">
-<version>20</version>
+<version>20</version>
<new state="no"/>
<manpage>sane-epjitsu</manpage>
<url>http://www.thebility.com/epjitsu/</url>
@@ -2655,7 +2655,7 @@
</type>
</backend>
<backend name="epson">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-epson</manpage>
<url>http://www.khk.net/sane</url>
@@ -3196,7 +3196,7 @@
</type>
</backend>
<backend name="epson2">
-<version>1.0.124</version>
+<version>1.0.124</version>
<new state="no"/>
<manpage>sane-epson2</manpage>
<url>*none*</url>
@@ -5945,7 +5945,7 @@
</type>
</backend>
<backend name="fujitsu">
-<version>117</version>
+<version>117</version>
<new state="no"/>
<manpage>sane-fujitsu</manpage>
<url>http://www.thebility.com/fujitsu/</url>
@@ -6534,7 +6534,7 @@
</type>
</backend>
<backend name="genesys">
-<version>1.0-63</version>
+<version>1.0-63</version>
<new state="no"/>
<manpage>sane-genesys</manpage>
<url>http://www.meier-geinitz.de/sane/genesys-backend/</url>
@@ -6906,7 +6906,7 @@
</type>
</backend>
<backend name="gphoto2">
-<version>0.0</version>
+<version>0.0</version>
<new state="no"/>
<manpage>sane-gphoto2</manpage>
<url>mailto:peter@fales-lorenz.net</url>
@@ -6918,7 +6918,7 @@
</type>
</backend>
<backend name="gt68xx">
-<version>1.0-84</version>
+<version>1.0-84</version>
<new state="no"/>
<manpage>sane-gt68xx</manpage>
<url>http://www.meier-geinitz.de/sane/gt68xx-backend/</url>
@@ -7542,7 +7542,7 @@
</type>
</backend>
<backend name="hp">
-<version>1.06</version>
+<version>1.06</version>
<new state="no"/>
<manpage>sane-hp</manpage>
<url>http://www.kirchgessner.net/</url>
@@ -7707,7 +7707,7 @@
</type>
</backend>
<backend name="hp3500">
-<version>1.1</version>
+<version>1.1</version>
<new state="no"/>
<manpage>sane-hp3500</manpage>
<url>http://projects.troy.rollo.name/rt-scanners/</url>
@@ -7744,7 +7744,7 @@
</type>
</backend>
<backend name="hp3900">
-<version>0.12</version>
+<version>0.12</version>
<new state="no"/>
<manpage>sane-hp3900</manpage>
<url>http://sourceforge.net/projects/hp3900-series/</url>
@@ -7837,7 +7837,7 @@
</type>
</backend>
<backend name="hp4200">
-<version>1.0-2</version>
+<version>1.0-2</version>
<new state="no"/>
<manpage>sane-hp4200</manpage>
<url>http://hp4200-backend.sourceforge.net</url>
@@ -7874,7 +7874,7 @@
</type>
</backend>
<backend name="hp5400">
-<version>1.0-2</version>
+<version>1.0-2</version>
<new state="no"/>
<manpage>sane-hp5400</manpage>
<url>http://sourceforge.net/projects/hp5400backend</url>
@@ -7911,7 +7911,7 @@
</type>
</backend>
<backend name="hp5590">
-<version>1.0.5</version>
+<version>1.0.5</version>
<new state="no"/>
<manpage>sane-hp5590</manpage>
<url>*none*</url>
@@ -7972,7 +7972,7 @@
</type>
</backend>
<backend name="hpljm1005">
-<version>0</version>
+<version>0</version>
<new state="no"/>
<manpage>sane-hpljm1005</manpage>
<url>*none*</url>
@@ -8009,7 +8009,7 @@
</type>
</backend>
<backend name="hpsj5s">
-<version>0.03</version>
+<version>0.03</version>
<new state="no"/>
<manpage>sane-hpsj5s</manpage>
<url>http://hpsj5s.sourceforge.net/</url>
@@ -8030,7 +8030,7 @@
</type>
</backend>
<backend name="hs2p">
-<version>1.00</version>
+<version>1.00</version>
<new state="no"/>
<manpage>sane-hs2p</manpage>
<url>http://www.acjlaw.net:8080/~jeremy/Ricoh/</url>
@@ -8075,7 +8075,7 @@
</type>
</backend>
<backend name="ibm">
-<version>1.0-4</version>
+<version>1.0-4</version>
<new state="no"/>
<manpage>sane-ibm</manpage>
<url>http://www.meier-geinitz.de/sane/ibm-backend/</url>
@@ -8124,7 +8124,7 @@
</type>
</backend>
<backend name="kodak">
-<version>7</version>
+<version>7</version>
<new state="no"/>
<manpage>sane-kodak</manpage>
<url>http://www.thebility.com/kodak/</url>
@@ -8401,7 +8401,7 @@
</type>
</backend>
<backend name="kodakaio">
-<version>2.4.6</version>
+<version>2.4.6</version>
<new state="no"/>
<manpage>sane-kodakaio</manpage>
<url>http://sourceforge.net/projects/cupsdriverkodak/</url>
@@ -8626,7 +8626,7 @@
</type>
</backend>
<backend name="kvs20xx">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-kvs20xx</manpage>
<url>*none*</url>
@@ -8687,7 +8687,7 @@
</type>
</backend>
<backend name="kvs40xx">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-kvs40xx</manpage>
<url>*none*</url>
@@ -8724,7 +8724,7 @@
</type>
</backend>
<backend name="kvs1025">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-kvs1025</manpage>
<url>*none*</url>
@@ -8761,7 +8761,7 @@
</type>
</backend>
<backend name="leo">
-<version>1.0-10</version>
+<version>1.0-10</version>
<new state="no"/>
<manpage>sane-leo</manpage>
<url>http://www.zago.net/sane/#leo</url>
@@ -8806,7 +8806,7 @@
</type>
</backend>
<backend name="lexmark">
-<version>1.0-0</version>
+<version>1.0-0</version>
<new state="no"/>
<manpage>sane-lexmark</manpage>
<url>http://stef.dev.free.fr/sane/lexmark</url>
@@ -8911,7 +8911,7 @@
</type>
</backend>
<backend name="ma1509">
-<version>1.0-3</version>
+<version>1.0-3</version>
<new state="no"/>
<manpage>sane-ma1509</manpage>
<url>http://www.meier-geinitz.de/sane/ma1509-backend/</url>
@@ -8946,7 +8946,7 @@
</type>
</backend>
<backend name="magicolor">
-<version>1.0.0</version>
+<version>1.0.0</version>
<new state="no"/>
<manpage>sane-magicolor</manpage>
<url>http://wiki.kainhofer.com/hardware/magicolor_scan</url>
@@ -8983,7 +8983,7 @@
</type>
</backend>
<backend name="matsushita">
-<version>1.0-7</version>
+<version>1.0-7</version>
<new state="no"/>
<manpage>sane-matsushita</manpage>
<url>http://www.zago.net/sane</url>
@@ -9084,7 +9084,7 @@
</type>
</backend>
<backend name="microtek">
-<version>0.13.1</version>
+<version>0.13.1</version>
<new state="no"/>
<manpage>sane-microtek</manpage>
<url>http://www.mir.com/mtek/</url>
@@ -9285,7 +9285,7 @@
</type>
</backend>
<backend name="microtek2">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-microtek2</manpage>
<url>http://karstenfestag.gmxhome.de/linux.html</url>
@@ -9427,7 +9427,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>minimal</status>
- <url>/unsupported/microtek-scanmaker-9800.html</url>
+ <url>unsupported/microtek-scanmaker-9800.html</url>
<comment>IEEE-1394 seems to work. See link. More reports welcome.</comment>
</model>
<model name="Phantom 330CX">
@@ -9566,7 +9566,7 @@
</type>
</backend>
<backend name="mustek">
-<version>1.0-138</version>
+<version>1.0-138</version>
<new state="no"/>
<manpage>sane-mustek</manpage>
<url>http://www.meier-geinitz.de/sane/mustek-backend/</url>
@@ -9845,7 +9845,7 @@
</type>
</backend>
<backend name="mustek_pp">
-<version>13</version>
+<version>13</version>
<new state="no"/>
<manpage>sane-mustek_pp</manpage>
<url>http://penguin-breeder.org/sane/mustek_pp/</url>
@@ -10076,7 +10076,7 @@
</type>
</backend>
<backend name="mustek_usb">
-<version>1.0-18</version>
+<version>1.0-18</version>
<new state="no"/>
<manpage>sane-mustek_usb</manpage>
<url>http://www.meier-geinitz.de/sane/mustek_usb-backend/</url>
@@ -10135,7 +10135,7 @@
</type>
</backend>
<backend name="mustek_usb2">
-<version>1.0-10</version>
+<version>1.0-10</version>
<new state="no"/>
<manpage>sane-mustek_usb2</manpage>
<url>http://www.meier-geinitz.de/sane/mustek_usb2-backend/</url>
@@ -10158,7 +10158,7 @@
</type>
</backend>
<backend name="nec">
-<version>0.12</version>
+<version>0.12</version>
<new state="no"/>
<manpage>sane-nec</manpage>
<url>http://www5a.biglobe.ne.jp/~saetaka/</url>
@@ -10179,7 +10179,7 @@
</type>
</backend>
<backend name="net">
-<version>1.0.14</version>
+<version>1.0.14</version>
<new state="no"/>
<manpage>sane-net</manpage>
<url>http://www.penguin-breeder.org/?page=sane-net</url>
@@ -10191,7 +10191,7 @@
</type>
</backend>
<backend name="niash">
-<version>0.3</version>
+<version>0.3</version>
<new state="no"/>
<manpage>sane-niash</manpage>
<url>http://sourceforge.net/projects/hp3300backend</url>
@@ -10260,7 +10260,7 @@
</type>
</backend>
<backend name="p5">
-<version>1</version>
+<version>1</version>
<new state="no"/>
<manpage>sane-p5</manpage>
<url>http://www.sane-project.org/</url>
@@ -10281,7 +10281,7 @@
</type>
</backend>
<backend name="pie">
-<version>1.0</version>
+<version>1.0</version>
<new state="no"/>
<manpage>sane-pie</manpage>
<url>http://www.munton.demon.co.uk/sane</url>
@@ -10438,7 +10438,7 @@
</type>
</backend>
<backend name="pint">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-pint</manpage>
<url>*none*</url>
@@ -10450,7 +10450,7 @@
</type>
</backend>
<backend name="pixma">
-<version>0.17.3</version>
+<version>0.17.3</version>
<new state="no"/>
<manpage>sane-pixma</manpage>
<url>http://home.arcor.de/wittawat/pixma/</url>
@@ -11568,7 +11568,7 @@
</type>
</backend>
<backend name="plustek">
-<version>0.52</version>
+<version>0.52</version>
<new state="no"/>
<manpage>sane-plustek</manpage>
<url>http://www.gjaeger.de/scanner/plustek/</url>
@@ -11946,7 +11946,7 @@
</type>
</backend>
<backend name="plustek_pp">
-<version>0.43</version>
+<version>0.43</version>
<new state="no"/>
<manpage>sane-plustek_pp</manpage>
<url>http://www.gjaeger.de/scanner/plustek_pp/</url>
@@ -12184,7 +12184,7 @@
</type>
</backend>
<backend name="pnm">
-<version>1.0.8</version>
+<version>1.0.8</version>
<new state="no"/>
<manpage>sane-pnm</manpage>
<url>mailto:henning@meier-geinitz.de</url>
@@ -12196,7 +12196,7 @@
</type>
</backend>
<backend name="qcam">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-qcam</manpage>
<url>*none*</url>
@@ -12225,7 +12225,7 @@
</type>
</backend>
<backend name="ricoh">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-ricoh</manpage>
<url>*none*</url>
@@ -12254,7 +12254,7 @@
</type>
</backend>
<backend name="rts8891">
-<version>1.0-0</version>
+<version>1.0-0</version>
<new state="no"/>
<manpage>sane-rts8891</manpage>
<url>http://stef.dev.free.fr/sane/rts8891/index.html</url>
@@ -12303,7 +12303,7 @@
</type>
</backend>
<backend name="s9036">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-s9036</manpage>
<url>*none*</url>
@@ -12324,7 +12324,7 @@
</type>
</backend>
<backend name="sceptre">
-<version>1.0-10</version>
+<version>1.0-10</version>
<new state="no"/>
<manpage>sane-sceptre</manpage>
<url>http://www.zago.net/sane/</url>
@@ -12357,7 +12357,7 @@
</type>
</backend>
<backend name="sharp">
-<version>0.32</version>
+<version>0.32</version>
<new state="no"/>
<manpage>sane-sharp</manpage>
<url>http://www.satzbau-gmbh.de/staff/abel/sane-sharp.html</url>
@@ -12418,7 +12418,7 @@
</type>
</backend>
<backend name="sm3600">
-<version>0.1</version>
+<version>0.1</version>
<new state="no"/>
<manpage>sane-sm3600</manpage>
<url>http://sm3600.sourceforge.net/</url>
@@ -12479,7 +12479,7 @@
</type>
</backend>
<backend name="sm3840">
-<version>1.1</version>
+<version>1.1</version>
<new state="no"/>
<manpage>sane-sm3840</manpage>
<url>http://www.ziplabel.com/sm3840/</url>
@@ -12508,7 +12508,7 @@
</type>
</backend>
<backend name="SnapScan">
-<version>1.4</version>
+<version>1.4</version>
<new state="no"/>
<manpage>sane-snapscan</manpage>
<url>http://snapscan.sourceforge.net/</url>
@@ -13003,7 +13003,7 @@
</type>
</backend>
<backend name="sp15c">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-sp15c</manpage>
<url>*none*</url>
@@ -13033,7 +13033,7 @@
</type>
</backend>
<backend name="st400">
-<version>1.6</version>
+<version>1.6</version>
<new state="no"/>
<manpage>sane-st400</manpage>
<url>http://www.informatik.uni-oldenburg.de/~ingo/sane/</url>
@@ -13062,7 +13062,7 @@
</type>
</backend>
<backend name="stv680">
-<version>1.0-1</version>
+<version>1.0-1</version>
<new state="no"/>
<manpage>sane-stv680</manpage>
<url>http://gkall.hobby.nl/stv680-aiptek.html</url>
@@ -13119,7 +13119,7 @@
</type>
</backend>
<backend name="tamarack">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-tamarack</manpage>
<url>*none*</url>
@@ -13156,7 +13156,7 @@
</type>
</backend>
<backend name="teco1">
-<version>1.0-10</version>
+<version>1.0-10</version>
<new state="no"/>
<manpage>sane-teco1</manpage>
<url>http://www.zago.net/sane/#teco</url>
@@ -13330,7 +13330,7 @@
</type>
</backend>
<backend name="teco2">
-<version>1.0-9</version>
+<version>1.0-9</version>
<new state="no"/>
<manpage>sane-teco2</manpage>
<url>http://gkall.hobby.nl/teco2.html</url>
@@ -13439,7 +13439,7 @@
</type>
</backend>
<backend name="teco3">
-<version>1.0-1</version>
+<version>1.0-1</version>
<new state="no"/>
<manpage>sane-teco3</manpage>
<url>http://www.zago.net/sane/#teco3</url>
@@ -13512,7 +13512,7 @@
</type>
</backend>
<backend name="test">
-<version>1.0-28</version>
+<version>1.0-28</version>
<new state="no"/>
<manpage>sane-test</manpage>
<url>http://www.meier-geinitz.de/sane/test-backend/</url>
@@ -13524,7 +13524,7 @@
</type>
</backend>
<backend name="u12">
-<version>0.02</version>
+<version>0.02</version>
<new state="no"/>
<manpage>sane-u12</manpage>
<url>http://www.gjaeger.de/scanner/u12/</url>
@@ -13594,7 +13594,7 @@
</type>
</backend>
<backend name="umax">
-<version>1.0-41</version>
+<version>1.0-41</version>
<new state="no"/>
<manpage>sane-umax</manpage>
<url>http://www.rauch-domain.de/sane-umax/index.html</url>
@@ -14168,7 +14168,7 @@
</type>
</backend>
<backend name="umax1220u">
-<version>unmaintained</version>
+<version>unmaintained</version>
<new state="no"/>
<manpage>sane-umax1220u</manpage>
<url>http://sourceforge.net/projects/umax1220u-sane</url>
@@ -14213,7 +14213,7 @@
</type>
</backend>
<backend name="umax_pp">
-<version>1</version>
+<version>1</version>
<new state="no"/>
<manpage>sane-umax_pp</manpage>
<url>http://umax1220p.sourceforge.net/</url>
@@ -14290,10 +14290,10 @@
</type>
</backend>
<backend name="unsupported">
-<version>2010-06-09</version>
+<version>2010-06-09</version>
<new state="no"/>
<manpage>*none*</manpage>
- <url>/contrib.html</url>
+ <url>contrib.html</url>
<comment>The devices mentioned here are not supported by any SANE backend. However, there may be links to information about them or stand-alone programs.</comment>
<type def="scanner">
<mfg name="Agfa">
@@ -14304,7 +14304,7 @@
<usbvendorid>0x06bd</usbvendorid>
<usbproductid>0x02bf</usbproductid>
<status>unsupported</status>
- <url>/unsupported/agfa-duoscan-f40.html</url>
+ <url>unsupported/agfa-duoscan-f40.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="DuoScan T2000XL">
@@ -14312,7 +14312,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/agfa-duoscan-t2000xl.html</url>
+ <url>unsupported/agfa-duoscan-t2000xl.html</url>
<comment>Unsupported. Same as Microtek ArtixScan 2020?</comment>
</model>
<model name="DuoScan T2500">
@@ -14328,7 +14328,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="SnapScan EZ">
@@ -14336,7 +14336,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="SnapScan 1200P">
@@ -14344,7 +14344,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="SnapScan 1212P">
@@ -14352,7 +14352,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
</mfg>
@@ -14364,7 +14364,7 @@
<usbvendorid>0x05d8</usbvendorid>
<usbproductid>0x4001</usbproductid>
<status>unsupported</status>
- <url>/unsupported/artec_1236usb.html</url>
+ <url>unsupported/artec_1236usb.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="AM12e+">
@@ -14380,7 +14380,7 @@
<usbvendorid>0x05d8</usbvendorid>
<usbproductid>0x4001</usbproductid>
<status>unsupported</status>
- <url>/unsupported/artec-ultima-2000-2.html</url>
+ <url>unsupported/artec-ultima-2000-2.html</url>
<comment>Same name, but different ids: This scanner is not supported. The scanner with product id 0x4002 is supported by the gt68xx backend, however.</comment>
</model>
</mfg>
@@ -14392,7 +14392,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Not supported. See link for details.</comment>
</model>
</mfg>
@@ -14420,7 +14420,7 @@
<usbvendorid>0x0638</usbvendorid>
<usbproductid>0x0a10</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4500.html</url>
+ <url>unsupported/umax-astra-4500.html</url>
<comment>GL646 based, to be added to genesys backend. Same as UMAX Astra 4500.</comment>
</model>
<model name="iVina FB1800">
@@ -14428,7 +14428,7 @@
<usbvendorid>0x0638</usbvendorid>
<usbproductid>0x0a20</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4700.html</url>
+ <url>unsupported/umax-astra-4700.html</url>
<comment>GL646/GL660 based. Same as UMAX Astra 4700.</comment>
</model>
</mfg>
@@ -14440,7 +14440,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="320P">
@@ -14448,7 +14448,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="340P">
@@ -14456,7 +14456,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="610P">
@@ -14464,7 +14464,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="610PT">
@@ -14472,7 +14472,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="620P">
@@ -14480,7 +14480,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="620PT">
@@ -14488,7 +14488,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="640P">
@@ -14496,7 +14496,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/acer-parport.html</url>
+ <url>unsupported/acer-parport.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="5450">
@@ -14512,7 +14512,7 @@
<usbvendorid>0x04a5</usbvendorid>
<usbproductid>0x2211</usbproductid>
<status>unsupported</status>
- <url>/unsupported/benq-5550.html</url>
+ <url>unsupported/benq-5550.html</url>
<comment>Unsupported, see link for details.</comment>
</model>
<model name="5560">
@@ -14520,7 +14520,7 @@
<usbvendorid>0x04a5</usbvendorid>
<usbproductid>0x2311</usbproductid>
<status>unsupported</status>
- <url>http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023447.html</url>
+ <url>http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023447.html</url>
<comment>*none*</comment>
</model>
<model name="7400UT">
@@ -14528,7 +14528,7 @@
<usbvendorid>0x04a5</usbvendorid>
<usbproductid>0x2202</usbproductid>
<status>unsupported</status>
- <url>/unsupported/benq-7400ut.html</url>
+ <url>unsupported/benq-7400ut.html</url>
<comment>*none*</comment>
</model>
</mfg>
@@ -14540,7 +14540,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -14552,7 +14552,7 @@
<usbvendorid>0x04f9</usbvendorid>
<usbproductid>0x000a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/brother-mfc-2500.html</url>
+ <url>unsupported/brother-mfc-2500.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="MFC 4600">
@@ -14568,7 +14568,7 @@
<usbvendorid>0x04f9</usbvendorid>
<usbproductid>0x0106</usbproductid>
<status>unsupported</status>
- <url>/unsupported/brother-mfc-7300.html</url>
+ <url>unsupported/brother-mfc-7300.html</url>
<comment>*none*</comment>
</model>
<model name="MFC 9600">
@@ -14576,7 +14576,7 @@
<usbvendorid>0x04f9</usbvendorid>
<usbproductid>0x0101</usbproductid>
<status>unsupported</status>
- <url>/unsupported/brother-mfc-9600.html</url>
+ <url>unsupported/brother-mfc-9600.html</url>
<comment>*none*</comment>
</model>
</mfg>
@@ -14588,7 +14588,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/c-channel-mypen-pro.html</url>
+ <url>unsupported/c-channel-mypen-pro.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MyPen Light">
@@ -14616,7 +14616,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2215</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-3000.html</url>
+ <url>unsupported/canon-3000.html</url>
<comment>GL660+GL646 based.</comment>
</model>
<model name="CanoScan 3000ex">
@@ -14624,7 +14624,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2215</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-3000.html</url>
+ <url>unsupported/canon-3000.html</url>
<comment>GL660+GL646 based.</comment>
</model>
<model name="CanoScan 3000F">
@@ -14632,7 +14632,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2215</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-3000.html</url>
+ <url>unsupported/canon-3000.html</url>
<comment>GL660+GL646 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan 4200F">
@@ -14640,7 +14640,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x221b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-4200f.html</url>
+ <url>unsupported/canon-4200f.html</url>
<comment>Probably unsupported. See link.</comment>
</model>
<model name="CanoScan 4400F">
@@ -14648,7 +14648,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2228</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-4400.html</url>
+ <url>unsupported/canon-4400.html</url>
<comment>GL843 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan 5000F">
@@ -14656,7 +14656,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2212</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-5000f.html</url>
+ <url>unsupported/canon-5000f.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="CanoScan 5200F">
@@ -14664,7 +14664,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2217</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-5200f.html</url>
+ <url>unsupported/canon-5200f.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="CanoScan 8000F">
@@ -14672,7 +14672,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x220f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-8000f.html</url>
+ <url>unsupported/canon-8000f.html</url>
<comment>Not supported. See link for more information. With transparency adapter.</comment>
</model>
<model name="CanoScan 8400F">
@@ -14680,7 +14680,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x221e</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-8400f.html</url>
+ <url>unsupported/canon-8400f.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan 8600F">
@@ -14688,7 +14688,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2229</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-8600.html</url>
+ <url>unsupported/canon-8600.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan 9900F">
@@ -14696,7 +14696,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2210</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-9900f.html</url>
+ <url>unsupported/canon-9900f.html</url>
<comment>Probably unsupported, similar to 8000F. 3200x6400 dpi USB2. With transparency adapter.</comment>
</model>
<model name="CanoScan 9950F">
@@ -14704,7 +14704,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2219</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-9950f.html</url>
+ <url>unsupported/canon-9950f.html</url>
<comment>Probably unsupported.</comment>
</model>
<model name="CanoScan D646U">
@@ -14712,7 +14712,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x220b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-d646u.html</url>
+ <url>unsupported/canon-d646u.html</url>
<comment>Probably not supported. See link for more information and test program.</comment>
</model>
<model name="CanoScan D646U ex">
@@ -14720,7 +14720,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x220b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-d646u.html</url>
+ <url>unsupported/canon-d646u.html</url>
<comment>Probably not supported. See D646.</comment>
</model>
<model name="CanoScan D1230U">
@@ -14728,7 +14728,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2209</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-d1230u.html</url>
+ <url>unsupported/canon-d1230u.html</url>
<comment>Probably not supported. </comment>
</model>
<model name="CanoScan D1250U2">
@@ -14736,7 +14736,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x220c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-d1250u2.html</url>
+ <url>unsupported/canon-d1250u2.html</url>
<comment>Not supported. However, someone started working on this scanner and some information is available (see link).</comment>
</model>
<model name="CanoScan D2400UF">
@@ -14744,7 +14744,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x220a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-d2400uf.html</url>
+ <url>unsupported/canon-d2400uf.html</url>
<comment>Not supported. See link.</comment>
</model>
<model name="CanoScan FB320U">
@@ -14760,7 +14760,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2202</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-fb620u.html</url>
+ <url>unsupported/canon-fb620u.html</url>
<comment>Probably not supported. Some information is available.</comment>
</model>
<model name="CanoScan FB1210U">
@@ -14784,7 +14784,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x2214</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-lide-80.html</url>
+ <url>unsupported/canon-lide-80.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan LiDE 90">
@@ -14792,7 +14792,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x1900</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-lide-90.html</url>
+ <url>unsupported/canon-lide-90.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="CanoScan LiDE 500F">
@@ -14800,7 +14800,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x221f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-canoscan-lide-500f.html</url>
+ <url>unsupported/canon-canoscan-lide-500f.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="CanoScan LiDE 600">
@@ -14824,7 +14824,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x3042</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-fs4000.html</url>
+ <url>unsupported/canon-fs4000.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="IS 12">
@@ -14832,7 +14832,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-is-12.html</url>
+ <url>unsupported/canon-is-12.html</url>
<comment>Probably not supported. Scanner cardridge for Canon inkjet printers.</comment>
</model>
<model name="IS 22">
@@ -14840,7 +14840,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-is-22.html</url>
+ <url>unsupported/canon-is-22.html</url>
<comment>Probably not supported. Scanner cardridge for Canon inkjet printers.</comment>
</model>
<model name="IS 32">
@@ -14848,7 +14848,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x105d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-is-32.html</url>
+ <url>unsupported/canon-is-32.html</url>
<comment>Probably not supported. Scanner cardridge for Canon inkjet printers.</comment>
</model>
<model name="IS 52">
@@ -14856,7 +14856,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-is-52.html</url>
+ <url>unsupported/canon-is-52.html</url>
<comment>Probably not supported. Scanner cardridge for Canon inkjet printers.</comment>
</model>
<model name="ImageRunner iR1018">
@@ -14864,7 +14864,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x269d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-imagerunner.html</url>
+ <url>unsupported/canon-imagerunner.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="ImageRunner iR1022">
@@ -14872,7 +14872,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x269d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-imagerunner.html</url>
+ <url>unsupported/canon-imagerunner.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="ImageRunner iR1023">
@@ -14880,7 +14880,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x269d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-imagerunner.html</url>
+ <url>unsupported/canon-imagerunner.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="PIXMA MP110">
@@ -14888,7 +14888,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x1700</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-pixma-mp110.html</url>
+ <url>unsupported/canon-pixma-mp110.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="PIXMA MP130">
@@ -14896,7 +14896,7 @@
<usbvendorid>0x04a9</usbvendorid>
<usbproductid>0x1701</usbproductid>
<status>unsupported</status>
- <url>/unsupported/canon-pixma-mp130.html</url>
+ <url>unsupported/canon-pixma-mp130.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="DR-2020U">
@@ -14916,7 +14916,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/chinon-ds3000.html</url>
+ <url>unsupported/chinon-ds3000.html</url>
<comment>Unsupported at the moment, but a backend is in preparation. See link.</comment>
</model>
</mfg>
@@ -14940,7 +14940,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -14952,7 +14952,7 @@
<usbvendorid>0x08f0</usbvendorid>
<usbproductid>0x0001</usbproductid>
<status>unsupported</status>
- <url>/unsupported/corex-cardscan-500.html</url>
+ <url>unsupported/corex-cardscan-500.html</url>
<comment>Probably not supported. Businesscard reader.</comment>
</model>
<model name="Cardscan 700 C">
@@ -14960,7 +14960,7 @@
<usbvendorid>0x08f0</usbvendorid>
<usbproductid>0x0004</usbproductid>
<status>unsupported</status>
- <url>/unsupported/corex-cardscan-700.html</url>
+ <url>unsupported/corex-cardscan-700.html</url>
<comment>Probably not supported.</comment>
</model>
</mfg>
@@ -14980,7 +14980,7 @@
<usbvendorid>0x413c</usbvendorid>
<usbproductid>0x5107</usbproductid>
<status>unsupported</status>
- <url>/unsupported/dell-a960.html</url>
+ <url>unsupported/dell-a960.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="922">
@@ -14988,7 +14988,7 @@
<usbvendorid>0x413c</usbvendorid>
<usbproductid>0x5109</usbproductid>
<status>unsupported</status>
- <url>/unsupported/dell-922.html</url>
+ <url>unsupported/dell-922.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
</mfg>
@@ -15016,7 +15016,7 @@
<usbvendorid>0x04b8</usbvendorid>
<usbproductid>0x083f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/epson-stylus-dx4450.html</url>
+ <url>unsupported/epson-stylus-dx4450.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="Stylus CX-5800">
@@ -15036,7 +15036,7 @@
<usbvendorid>0x0a53</usbvendorid>
<usbproductid>0x5001</usbproductid>
<status>unsupported</status>
- <url>/unsupported/edt-900c.html</url>
+ <url>unsupported/edt-900c.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15081,7 +15081,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-cs.html</url>
+ <url>unsupported/genius-colorpage-cs.html</url>
<comment>Probably unsupported, see link for details.</comment>
</model>
<model name="ColorPage-Slim 1200 USB2">
@@ -15089,7 +15089,7 @@
<usbvendorid>0x0458</usbvendorid>
<usbproductid>0x2020</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-slim-1200-usb2.html</url>
+ <url>unsupported/genius-colorpage-slim-1200-usb2.html</url>
<comment>GL841 based, to be added to genesys backend.</comment>
</model>
<model name="ColorPage HR6X Slim">
@@ -15097,7 +15097,7 @@
<usbvendorid>0x0458</usbvendorid>
<usbproductid>0x2019</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-hr6x.html</url>
+ <url>unsupported/genius-colorpage-hr6x.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="ColorPage HR7X">
@@ -15105,7 +15105,7 @@
<usbvendorid>0x0458</usbvendorid>
<usbproductid>0x2018</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-hr7x.html</url>
+ <url>unsupported/genius-colorpage-hr7x.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="ColorPage HR7XE">
@@ -15113,7 +15113,7 @@
<usbvendorid>0x06dc</usbvendorid>
<usbproductid>0x0012</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-hr7xe.html</url>
+ <url>unsupported/genius-colorpage-hr7xe.html</url>
<comment>Unsuported. See link for details.</comment>
</model>
<model name="ColorPage HR8">
@@ -15121,7 +15121,7 @@
<usbvendorid>0x0458</usbvendorid>
<usbproductid>0x201c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/genius-colorpage-hr8.html</url>
+ <url>unsupported/genius-colorpage-hr8.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
</mfg>
@@ -15133,7 +15133,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/teco-vm6509.html</url>
+ <url>unsupported/teco-vm6509.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="Maxi Scan A4 Parallel 36 bit">
@@ -15153,7 +15153,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/teco-vm6509.html</url>
+ <url>unsupported/teco-vm6509.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15165,7 +15165,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x1001</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-photo-1000.html</url>
+ <url>unsupported/hp-photo-1000.html</url>
<comment>Not supported by SANE. However, it&apos;s detected as mass storage device so just mounting it is reported to work. See link for device data.</comment>
</model>
<model name="Photosmart 1200 Photo">
@@ -15181,7 +15181,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-photosmart-s20xi.html</url>
+ <url>unsupported/hp-photosmart-s20xi.html</url>
<comment>Not supported yet by SANE. See link for details.</comment>
</model>
<model name="Photosmart S20xi (C7150A)">
@@ -15189,7 +15189,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-photosmart-s20xi.html</url>
+ <url>unsupported/hp-photosmart-s20xi.html</url>
<comment>Not supported yet by SANE. See link for details.</comment>
</model>
<model name="Photosmart C5100 series">
@@ -15197,7 +15197,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x5811</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-photosmart-5100.html</url>
+ <url>unsupported/hp-photosmart-5100.html</url>
<comment>Not supported yet by SANE. See link for details.</comment>
</model>
<model name="ScanJet 2400c">
@@ -15205,7 +15205,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x0a01</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-2400c.html</url>
+ <url>unsupported/hp-scanjet-2400c.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="Photosmart C3180">
@@ -15213,7 +15213,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x5611</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-photosmart-3180.html</url>
+ <url>unsupported/hp-photosmart-3180.html</url>
<comment>Not supported yet by SANE. See link for details.</comment>
</model>
<model name="ScanJet 3770">
@@ -15229,7 +15229,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x3005</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-4600.html</url>
+ <url>unsupported/hp-scanjet-4600.html</url>
<comment>Not supported. See link for details, or http://www.chmil.org/hp4600linux/ for code</comment>
</model>
<model name="ScanJet 4670">
@@ -15245,7 +15245,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x1b05</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-4850.html</url>
+ <url>unsupported/hp-scanjet-4850.html</url>
<comment>GL841, maybe can be added to genesys backend </comment>
</model>
<model name="ScanJet 4890C">
@@ -15253,7 +15253,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x1b05</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-4850.html</url>
+ <url>unsupported/hp-scanjet-4850.html</url>
<comment>GL843, maybe can be added to genesys backend </comment>
</model>
<model name="ScanJet 5530C Photosmart">
@@ -15261,7 +15261,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x1605</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-5530.html</url>
+ <url>unsupported/hp-scanjet-5530.html</url>
<comment>Maybe GL841_HP, but not confirmed, maybe can be added to genesys backend</comment>
</model>
<model name="ScanJet 8390">
@@ -15269,7 +15269,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x3805</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-scanjet-8390.html</url>
+ <url>unsupported/hp-scanjet-8390.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="ScanJet G4000">
@@ -15277,7 +15277,7 @@
<usbvendorid>0x03f0</usbvendorid>
<usbproductid>0x4505</usbproductid>
<status>unsupported</status>
- <url>/unsupported/hp-g4000.html</url>
+ <url>unsupported/hp-g4000.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
</mfg>
@@ -15301,7 +15301,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15313,7 +15313,7 @@
<usbvendorid>0x0a53</usbvendorid>
<usbproductid>0x1000</usbproductid>
<status>unsupported</status>
- <url>/unsupported/iris-iriscan.html</url>
+ <url>unsupported/iris-iriscan.html</url>
<comment>Unsupported. LM9832/3. See link for details.</comment>
</model>
<model name="IRISPen Translator Executive">
@@ -15321,7 +15321,7 @@
<usbvendorid>0x0f43</usbvendorid>
<usbproductid>0x015a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/iris-irispen-translator.html</url>
+ <url>unsupported/iris-irispen-translator.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="IRISCard Pro (IBCR II)">
@@ -15329,7 +15329,7 @@
<usbvendorid>0x0a38</usbvendorid>
<usbproductid>0x0301</usbproductid>
<status>unsupported</status>
- <url>/unsupported/iris-business.html</url>
+ <url>unsupported/iris-business.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15353,7 +15353,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0097</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-p6250.html</url>
+ <url>unsupported/lexmark-p6250.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="Photo 3150">
@@ -15361,7 +15361,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x007d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-3150.html</url>
+ <url>unsupported/lexmark-3150.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X74">
@@ -15369,7 +15369,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0060</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x75.html</url>
+ <url>unsupported/lexmark-x75.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X75">
@@ -15377,7 +15377,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0060</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x75.html</url>
+ <url>unsupported/lexmark-x75.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X75 PrinTrio">
@@ -15385,7 +15385,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0060</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x75.html</url>
+ <url>unsupported/lexmark-x75.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X83">
@@ -15393,7 +15393,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x003d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x83.html</url>
+ <url>unsupported/lexmark-x83.html</url>
<comment>Unsupported. GL640.</comment>
</model>
<model name="X2330">
@@ -15401,7 +15401,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x00bb</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x2330.html</url>
+ <url>unsupported/lexmark-x2330.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X3450">
@@ -15409,7 +15409,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x00f6</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x3450.html</url>
+ <url>unsupported/lexmark-x3450.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X5130">
@@ -15417,7 +15417,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0065</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x5130.html</url>
+ <url>unsupported/lexmark-x5130.html</url>
<comment>Unsupported.</comment>
</model>
<model name="X5150">
@@ -15425,7 +15425,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0065</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x5130.html</url>
+ <url>unsupported/lexmark-x5130.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="X5250">
@@ -15433,7 +15433,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0093</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x5250.html</url>
+ <url>unsupported/lexmark-x5250.html</url>
<comment>Unsupported.</comment>
</model>
<model name="X6170">
@@ -15441,7 +15441,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0072</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x6170.html</url>
+ <url>unsupported/lexmark-x6170.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X7170">
@@ -15457,7 +15457,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x00b8</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x7350.html</url>
+ <url>unsupported/lexmark-x7350.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="X8350">
@@ -15465,7 +15465,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x00b9</usbproductid>
<status>unsupported</status>
- <url>/unsupported/lexmark-x8350.html</url>
+ <url>unsupported/lexmark-x8350.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15485,7 +15485,7 @@
<usbvendorid>0x046d</usbvendorid>
<usbproductid>0x040f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/logitech-pagescan-usb.html</url>
+ <url>unsupported/logitech-pagescan-usb.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15498,7 +15498,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0392</usbproductid>
<status>unsupported</status>
- <url>/unsupported/medion-md6190.html</url>
+ <url>unsupported/medion-md6190.html</url>
<comment>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</comment>
</model>
<model name="MD 6190">
@@ -15506,7 +15506,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x037b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/medion-md6190.html</url>
+ <url>unsupported/medion-md6190.html</url>
<comment>Probably unsupported. There seem to exist two different scanners with that name. See link for details.</comment>
</model>
<model name="MD 40420">
@@ -15514,7 +15514,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3008</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tevion-md40420.html</url>
+ <url>unsupported/tevion-md40420.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MD 41260">
@@ -15522,7 +15522,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x037b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/medion-md6190.html</url>
+ <url>unsupported/medion-md6190.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MD 41985">
@@ -15530,7 +15530,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x037b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/medion-md6190.html</url>
+ <url>unsupported/medion-md6190.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MD 42666">
@@ -15538,7 +15538,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3008</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tevion-md40420.html</url>
+ <url>unsupported/tevion-md40420.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MD 85264">
@@ -15554,7 +15554,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30e5</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tevion-md90009.html</url>
+ <url>unsupported/tevion-md90009.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="MD 90070">
@@ -15562,7 +15562,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3022</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tevion-md90070.html</url>
+ <url>unsupported/tevion-md90070.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="MD 90090">
@@ -15570,7 +15570,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3022</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tevion-md90070.html</url>
+ <url>unsupported/tevion-md90070.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15582,7 +15582,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0346</usbproductid>
<status>unsupported</status>
- <url>/unsupported/memorex-maxx-6136u.html</url>
+ <url>unsupported/memorex-maxx-6136u.html</url>
<comment>Probably unsupported.</comment>
</model>
<model name="6142u">
@@ -15590,7 +15590,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0347</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4400.html</url>
+ <url>unsupported/visioneer-onetouch4400.html</url>
<comment>Probably unsupported. Same as Visioneer Onetouch 4400. See link for details.</comment>
</model>
<model name="MaxxScan 6122">
@@ -15598,7 +15598,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="SCF 9612P">
@@ -15606,7 +15606,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/memorex-scf-9612p.html</url>
+ <url>unsupported/memorex-scf-9612p.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -15626,7 +15626,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x202e</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-artixscan-2020.html</url>
+ <url>unsupported/microtek-artixscan-2020.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="Artixscan 2500f">
@@ -15650,7 +15650,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0120</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-filmscan-35.html</url>
+ <url>unsupported/microtek-filmscan-35.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 336 CX">
@@ -15666,7 +15666,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-1850s.html</url>
+ <url>unsupported/microtek-scanmaker-1850s.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 3630">
@@ -15674,7 +15674,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0347</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-3630.html</url>
+ <url>unsupported/microtek-scanmaker-3630.html</url>
<comment>Unsupported. Doesn&apos;t seem to be compatible to 3600 series, see link.</comment>
</model>
<model name="ScanMaker 3800">
@@ -15682,7 +15682,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30ce</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-3800.html</url>
+ <url>unsupported/microtek-scanmaker-3800.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 3830">
@@ -15690,7 +15690,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30ce</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-3830.html</url>
+ <url>unsupported/microtek-scanmaker-3830.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 3860">
@@ -15698,7 +15698,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3023</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-3880.html</url>
+ <url>unsupported/microtek-scanmaker-3880.html</url>
<comment>Unsupported. See link for more details. Appears to be similar to ScanMaker 3880.</comment>
</model>
<model name="ScanMaker 3880">
@@ -15706,7 +15706,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3021</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-3880.html</url>
+ <url>unsupported/microtek-scanmaker-3880.html</url>
<comment>Unsupported. SQ113 chip. See link for more details.</comment>
</model>
<model name="ScanMaker 4600">
@@ -15714,7 +15714,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x40c7</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-4600.html</url>
+ <url>unsupported/microtek-scanmaker-4600.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 4700">
@@ -15722,7 +15722,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x20b4</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-4700.html</url>
+ <url>unsupported/microtek-scanmaker-4700.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 4850">
@@ -15730,7 +15730,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30d9</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-4900.html</url>
+ <url>unsupported/microtek-scanmaker-4900.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 4850 II">
@@ -15738,7 +15738,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3008</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-4850-2.html</url>
+ <url>unsupported/microtek-scanmaker-4850-2.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 4900">
@@ -15746,7 +15746,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30b9</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-4900.html</url>
+ <url>unsupported/microtek-scanmaker-4900.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 5">
@@ -15754,7 +15754,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5600.html</url>
+ <url>unsupported/microtek-scanmaker-5600.html</url>
<comment>Probably unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 5600">
@@ -15762,7 +15762,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x20a7</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5600.html</url>
+ <url>unsupported/microtek-scanmaker-5600.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 5700">
@@ -15778,7 +15778,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x3008</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5800.html</url>
+ <url>unsupported/microtek-scanmaker-5800.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 5800">
@@ -15786,7 +15786,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30d8</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5800.html</url>
+ <url>unsupported/microtek-scanmaker-5800.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="ScanMaker 5900">
@@ -15794,7 +15794,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30d8</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5900.html</url>
+ <url>unsupported/microtek-scanmaker-5900.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 5950">
@@ -15802,7 +15802,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30d8</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-5950.html</url>
+ <url>unsupported/microtek-scanmaker-5950.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 6000">
@@ -15810,7 +15810,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30e5</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-6000.html</url>
+ <url>unsupported/microtek-scanmaker-6000.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 6100">
@@ -15818,7 +15818,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30e5</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-6100.html</url>
+ <url>unsupported/microtek-scanmaker-6100.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="ScanMaker 6700">
@@ -15826,7 +15826,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x20c9</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-6700.html</url>
+ <url>unsupported/microtek-scanmaker-6700.html</url>
<comment>Unsupported. See link.</comment>
</model>
<model name="ScanMaker 8700">
@@ -15834,7 +15834,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x20b1</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-8700.html</url>
+ <url>unsupported/microtek-scanmaker-8700.html</url>
<comment>Unsupported. See link for details. USB vendor and product ids to be checked.</comment>
</model>
<model name="ScanMaker 9600XL">
@@ -15850,7 +15850,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x20de</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-9800.html</url>
+ <url>unsupported/microtek-scanmaker-9800.html</url>
<comment>Partly unsupported. IEEE-1394 works with microtek2 backend. See link.</comment>
</model>
<model name="ScanMaker i320">
@@ -15858,7 +15858,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x30e6</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-i320.html</url>
+ <url>unsupported/microtek-scanmaker-i320.html</url>
<comment>Unsupported. See link.</comment>
</model>
<model name="ScanMaker s400">
@@ -15866,7 +15866,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x201c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-s400.html</url>
+ <url>unsupported/microtek-scanmaker-s400.html</url>
<comment>Unsupported. See link.</comment>
</model>
<model name="ScanMaker S400">
@@ -15874,7 +15874,7 @@
<usbvendorid>0x05da</usbvendorid>
<usbproductid>0x300b</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanmaker-s400.html</url>
+ <url>unsupported/microtek-scanmaker-s400.html</url>
<comment>Unsupported. See link.</comment>
</model>
<model name="ScanPort 3000">
@@ -15882,7 +15882,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0224</usbproductid>
<status>unsupported</status>
- <url>/unsupported/microtek-scanport-3000.html</url>
+ <url>unsupported/microtek-scanport-3000.html</url>
<comment>Unsupported. Vendor/Product ids: 0x04a7/0x0224. Realtek RTS8801B?. See link for details.</comment>
</model>
</mfg>
@@ -15894,7 +15894,7 @@
<usbvendorid>0x0686</usbvendorid>
<usbproductid>0x400d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/minolta-dual-scan-III.html</url>
+ <url>unsupported/minolta-dual-scan-III.html</url>
<comment>Unsupported. May work with vuescan. See link for details.</comment>
</model>
<model name="Dual Scan IV">
@@ -15902,7 +15902,7 @@
<usbvendorid>0x132b</usbvendorid>
<usbproductid>0x000a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/minolta-dual-scan-IV.html</url>
+ <url>unsupported/minolta-dual-scan-IV.html</url>
<comment>Unsupported. Works with vuescan. See link for details.</comment>
</model>
<model name="DiMAGE Scan Elite 5400">
@@ -15910,7 +15910,7 @@
<usbvendorid>0x0686</usbvendorid>
<usbproductid>0x400e</usbproductid>
<status>unsupported</status>
- <url>/unsupported/minolta-dse-5400.html</url>
+ <url>unsupported/minolta-dse-5400.html</url>
<comment>Probably unsupported. May work with vuescan. See link for details.</comment>
</model>
<model name="DiMAGE Scan Elite 5400 2">
@@ -15918,7 +15918,7 @@
<usbvendorid>0x132b</usbvendorid>
<usbproductid>0x0012</usbproductid>
<status>unsupported</status>
- <url>/unsupported/minolta-dse-5400-2.html</url>
+ <url>unsupported/minolta-dse-5400-2.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="DiMAGE Scan Multi Pro">
@@ -15926,7 +15926,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/minolta-dimage-scan-multi-pro.html</url>
+ <url>unsupported/minolta-dimage-scan-multi-pro.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="magicolor 2480MF">
@@ -15972,7 +15972,7 @@
<usbvendorid>0x055f</usbvendorid>
<usbproductid>0x0408</usbproductid>
<status>unsupported</status>
- <url>/unsupported/mustek-bearpaw-2448-cu-pro.html</url>
+ <url>unsupported/mustek-bearpaw-2448-cu-pro.html</url>
<comment>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</comment>
</model>
<model name="BearPaw 4800 TA Pro">
@@ -15980,7 +15980,7 @@
<usbvendorid>0x055f</usbvendorid>
<usbproductid>0x1000</usbproductid>
<status>unsupported</status>
- <url>/unsupported/mustek-bearpaw-4800ta-pro.html</url>
+ <url>unsupported/mustek-bearpaw-4800ta-pro.html</url>
<comment>Not supported. See link for some information.</comment>
</model>
<model name="BearPaw 4800 TA Pro II">
@@ -15988,7 +15988,7 @@
<usbvendorid>0x055f</usbvendorid>
<usbproductid>0x040a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/mustek-bearpaw-4800ta-pro-ii.html</url>
+ <url>unsupported/mustek-bearpaw-4800ta-pro-ii.html</url>
<comment>Not supported. May be supported by mustek_usb2 backend later. See link for some information.</comment>
</model>
<model name="BearPaw 6400 TA Pro">
@@ -16060,7 +16060,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>http://lists.alioth.debian.org/pipermail/sane-devel/2003-May/007682.html</url>
+ <url>http://alioth-lists.debian.net/pipermail/sane-devel/2003-May/007682.html</url>
<comment>Probably not supported. Same as Mustek 12000 P?. ASIC 1505.</comment>
</model>
</mfg>
@@ -16072,7 +16072,7 @@
<usbvendorid>0x0475</usbvendorid>
<usbproductid>0x0100</usbproductid>
<status>unsupported</status>
- <url>/unsupported/nec-petiscan.html</url>
+ <url>unsupported/nec-petiscan.html</url>
<comment>Most probably unsupported. See link for details. Vendor ID is Relisys/Teco. Not known if it is similar to other Relisys/Teco USB scanners.</comment>
</model>
</mfg>
@@ -16084,7 +16084,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/nikon-ls9000-ed.html</url>
+ <url>unsupported/nikon-ls9000-ed.html</url>
<comment>Probably not supported. See link for details. Possibly similar to LS-8000 ED.</comment>
</model>
</mfg>
@@ -16096,7 +16096,7 @@
<usbvendorid>0x0b3c</usbvendorid>
<usbproductid>0xa880</usbproductid>
<status>unsupported</status>
- <url>/unsupported/olivetti-job-jet-m400.html</url>
+ <url>unsupported/olivetti-job-jet-m400.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
</mfg>
@@ -16108,7 +16108,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>http://lists.alioth.debian.org/pipermail/sane-devel/2008-December/023326.html</url>
+ <url>http://alioth-lists.debian.net/pipermail/sane-devel/2008-December/023326.html</url>
<comment>*none*</comment>
</model>
<model name="ES-10S">
@@ -16116,7 +16116,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/olympus-es10s.html</url>
+ <url>unsupported/olympus-es10s.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
</mfg>
@@ -16300,7 +16300,7 @@
<usbvendorid>0x0a82</usbvendorid>
<usbproductid>0x2000</usbproductid>
<status>unsupported</status>
- <url>/unsupported/syscan-travelscan-pro.html</url>
+ <url>unsupported/syscan-travelscan-pro.html</url>
<comment>Probably not supported. Some information is available.</comment>
</model>
</mfg>
@@ -16312,7 +16312,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0120</usbproductid>
<status>unsupported</status>
- <url>/unsupported/pie-1800u.html</url>
+ <url>unsupported/pie-1800u.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="Primefilm 2700">
@@ -16320,7 +16320,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>http://lists.alioth.debian.org/pipermail/sane-devel/2009-January/023442.html</url>
+ <url>http://alioth-lists.debian.net/pipermail/sane-devel/2009-January/023442.html</url>
<comment>*none*</comment>
</model>
<model name="Primefilm 3600PRO">
@@ -16336,7 +16336,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0142</usbproductid>
<status>unsupported</status>
- <url>/unsupported/reflecta-digitdia-3600.html</url>
+ <url>unsupported/reflecta-digitdia-3600.html</url>
<comment>Probably unsupported. Film scanner that can scan directly from the magazine.</comment>
</model>
<model name="PF3650 Pro3 Film Scanner">
@@ -16344,7 +16344,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0143</usbproductid>
<status>unsupported</status>
- <url>/unsupported/pie-pf3650.html</url>
+ <url>unsupported/pie-pf3650.html</url>
<comment>Not supported. See link for details.</comment>
</model>
</mfg>
@@ -16357,7 +16357,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0807</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticfilm-7200.html</url>
+ <url>unsupported/plustek-opticfilm-7200.html</url>
<comment>GL842 based, maybe to be added to genesys backend</comment>
</model>
<model name="OpticFilm 7200i">
@@ -16389,7 +16389,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0600</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st12.html</url>
+ <url>unsupported/plustek-opticpro-st12.html</url>
<comment>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</comment>
</model>
<model name="OpticPro ST12">
@@ -16397,7 +16397,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0600</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st12.html</url>
+ <url>unsupported/plustek-opticpro-st12.html</url>
<comment>Product id 0x0600 is unsupported but may be supported by the genesys backend in future. Product id 0x040b is supported by the gt68xx backend.</comment>
</model>
<model name="OpticPro ST16">
@@ -16405,7 +16405,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0600</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st16.html</url>
+ <url>unsupported/plustek-opticpro-st16.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="OpticPro UA18">
@@ -16421,7 +16421,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0601</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st24.html</url>
+ <url>unsupported/plustek-opticpro-st24.html</url>
<comment>Product id 0x0601 is unsupported but may be supported by the genesys backend in future /GL646). Product id 0x040e is supported by the gt68xx backend.</comment>
</model>
<model name="OpticPro ST24">
@@ -16429,7 +16429,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0601</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st24.html</url>
+ <url>unsupported/plustek-opticpro-st24.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="OpticPro S28">
@@ -16437,7 +16437,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0801</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-s28.html</url>
+ <url>unsupported/plustek-opticpro-s28.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="OpticPro ST28">
@@ -16445,7 +16445,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0801</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-s28.html</url>
+ <url>unsupported/plustek-opticpro-s28.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="OpticPro ST28">
@@ -16453,7 +16453,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0802</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st28.html</url>
+ <url>unsupported/plustek-opticpro-st28.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="Umax AstraScan 4750">
@@ -16461,7 +16461,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0802</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astrscan-4750.html</url>
+ <url>unsupported/umax-astrscan-4750.html</url>
<comment>GL841 based, to be added to genesys backend, rebadged Plustek ST28</comment>
</model>
<model name="OpticPro ST48">
@@ -16469,7 +16469,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0800</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st48.html</url>
+ <url>unsupported/plustek-opticpro-st48.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="OpticPro ST64">
@@ -16477,7 +16477,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0c00</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st64.html</url>
+ <url>unsupported/plustek-opticpro-st64.html</url>
<comment>GL843 based, maybe to be added to genesys backend</comment>
</model>
<model name="OpticPro ST64+">
@@ -16485,7 +16485,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0c03</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st64plus.html</url>
+ <url>unsupported/plustek-opticpro-st64plus.html</url>
<comment>GL843 based. See link for more details.</comment>
</model>
<model name="PL 806">
@@ -16493,7 +16493,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0c0c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-pl806.html</url>
+ <url>unsupported/plustek-pl806.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="SmartOffice PL 812">
@@ -16501,7 +16501,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0c0d</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-pl812.html</url>
+ <url>unsupported/plustek-pl812.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="OpticSlim 500">
@@ -16509,7 +16509,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0458</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticslim-500.html</url>
+ <url>unsupported/plustek-opticslim-500.html</url>
<comment>Unsupported. See link for more details.</comment>
</model>
<model name="OpticSlim 2420">
@@ -16517,7 +16517,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0806</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticslim-2420.html</url>
+ <url>unsupported/plustek-opticslim-2420.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="OpticSlim 2420+">
@@ -16525,7 +16525,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0914</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticslim-2420plus.html</url>
+ <url>unsupported/plustek-opticslim-2420plus.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="OpticWorks 2000">
@@ -16549,7 +16549,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x081c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-scancopy-115.html</url>
+ <url>unsupported/plustek-scancopy-115.html</url>
<comment>GL841 based, to be added to genesys backend</comment>
</model>
<model name="Spectra ADF">
@@ -16625,7 +16625,7 @@
<usbvendorid>0x10c4</usbvendorid>
<usbproductid>0xea60</usbproductid>
<status>unsupported</status>
- <url>/unsupported/planon-docupen-r700.html</url>
+ <url>unsupported/planon-docupen-r700.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="DocuPen (DPEN-BW)">
@@ -16645,7 +16645,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0341</usbproductid>
<status>unsupported</status>
- <url>/unsupported/primax-colorado-600u.html</url>
+ <url>unsupported/primax-colorado-600u.html</url>
<comment>Not supported. Some information is available.</comment>
</model>
<model name="Colorado 1200p">
@@ -16669,7 +16669,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0347</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4400.html</url>
+ <url>unsupported/visioneer-onetouch4400.html</url>
<comment>Unsupported. Same as Visioneer Onetouch 4400. See link for details.</comment>
</model>
<model name="Colorado Direct 600">
@@ -16693,7 +16693,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0340</usbproductid>
<status>unsupported</status>
- <url>/unsupported/primax-colorado-usb-9600.html</url>
+ <url>unsupported/primax-colorado-usb-9600.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="G2-300">
@@ -16781,7 +16781,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0371</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8920.html</url>
+ <url>unsupported/visioneer-onetouch8920.html</url>
<comment>Not supported. Look similar to Visioneer Onetouch 8920 (same USB product id).</comment>
</model>
</mfg>
@@ -16793,7 +16793,7 @@
<usbvendorid>0x06dc</usbvendorid>
<usbproductid>0x0014</usbproductid>
<status>unsupported</status>
- <url>/unsupported/prolink-2448u.html</url>
+ <url>unsupported/prolink-2448u.html</url>
<comment>Not supported. Some information is available. RealTek RTS8801.</comment>
</model>
<model name="Winscan Pro 2000">
@@ -16833,7 +16833,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0142</usbproductid>
<status>unsupported</status>
- <url>/unsupported/reflecta-digitdia-3600.html</url>
+ <url>unsupported/reflecta-digitdia-3600.html</url>
<comment>Film scanner that can scan directly from the magazine.</comment>
</model>
<model name="iScan 1800">
@@ -16841,7 +16841,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0120</usbproductid>
<status>unsupported</status>
- <url>/unsupported/reflecta-iscan-1800.html</url>
+ <url>unsupported/reflecta-iscan-1800.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="ProScan 4000">
@@ -16849,7 +16849,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0143</usbproductid>
<status>unsupported</status>
- <url>/unsupported/reflecta-proscan-4000.html</url>
+ <url>unsupported/reflecta-proscan-4000.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -16861,7 +16861,7 @@
<usbvendorid>0x0475</usbvendorid>
<usbproductid>0x0103</usbproductid>
<status>unsupported</status>
- <url>/unsupported/relisys-eclipse-1200u.html</url>
+ <url>unsupported/relisys-eclipse-1200u.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="Scorpio Ultra 3">
@@ -16869,7 +16869,7 @@
<usbvendorid>0x0475</usbvendorid>
<usbproductid>0x0210</usbproductid>
<status>unsupported</status>
- <url>/unsupported/relisys-scorpio-ultra3.html</url>
+ <url>unsupported/relisys-scorpio-ultra3.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="Episode">
@@ -16877,7 +16877,7 @@
<usbvendorid>0x0475</usbvendorid>
<usbproductid>0x0103</usbproductid>
<status>unsupported</status>
- <url>/unsupported/relisys-episode.html</url>
+ <url>unsupported/relisys-episode.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
<model name="AVEC II E3">
@@ -16897,7 +16897,7 @@
<usbvendorid>0x04e8</usbvendorid>
<usbproductid>0x341f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/samsung-scx-4725.html</url>
+ <url>unsupported/samsung-scx-4725.html</url>
<comment>Not supported. See link for details.</comment>
</model>
</mfg>
@@ -16909,7 +16909,7 @@
<usbvendorid>0x0a82</usbvendorid>
<usbproductid>0x6605</usbproductid>
<status>unsupported</status>
- <url>/unsupported/scanshell-800n.html</url>
+ <url>unsupported/scanshell-800n.html</url>
<comment>Not supported. See link for details.</comment>
</model>
</mfg>
@@ -16993,7 +16993,7 @@
<usbvendorid>0x0a82</usbvendorid>
<usbproductid>0x0530</usbproductid>
<status>unsupported</status>
- <url>/unsupported/syscan-travelscan-fs531.html</url>
+ <url>unsupported/syscan-travelscan-fs531.html</url>
<comment>Not supported. May work with the Plustek backend in future. See link for details.</comment>
</model>
<model name="TravelScan Pro">
@@ -17001,7 +17001,7 @@
<usbvendorid>0x0a82</usbvendorid>
<usbproductid>0x2000</usbproductid>
<status>unsupported</status>
- <url>/unsupported/syscan-travelscan-pro.html</url>
+ <url>unsupported/syscan-travelscan-pro.html</url>
<comment>Probably not supported. Some information is available.</comment>
</model>
</mfg>
@@ -17029,7 +17029,7 @@
<usbvendorid>0x05e3</usbvendorid>
<usbproductid>0x0100</usbproductid>
<status>unsupported</status>
- <url>/unsupported/tamarack-artiscan-2400.html</url>
+ <url>unsupported/tamarack-artiscan-2400.html</url>
<comment>Unsupported. See link for more information.</comment>
</model>
</mfg>
@@ -17041,7 +17041,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0346</usbproductid>
<status>unsupported</status>
- <url>/unsupported/memorex-maxx-6136u.html</url>
+ <url>unsupported/memorex-maxx-6136u.html</url>
<comment>Not supported. Some information is available.</comment>
</model>
<model name="S450">
@@ -17061,7 +17061,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/teco-vm6509.html</url>
+ <url>unsupported/teco-vm6509.html</url>
<comment>Probably unsupported. See link for details.</comment>
</model>
</mfg>
@@ -17073,7 +17073,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0347</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4400.html</url>
+ <url>unsupported/visioneer-onetouch4400.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -17085,7 +17085,7 @@
<usbvendorid>0x05cb</usbvendorid>
<usbproductid>0x1483</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-combiscan-19200.html</url>
+ <url>unsupported/trust-combiscan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="EasyScan 19200">
@@ -17093,7 +17093,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>http://lists.alioth.debian.org/pipermail/sane-devel/2008-October/022955.html</url>
+ <url>http://alioth-lists.debian.net/pipermail/sane-devel/2008-October/022955.html</url>
<comment>*none*</comment>
</model>
<model name="SCSI Scan 19200 -Excellence Series-">
@@ -17101,7 +17101,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/trust-scsi-scan-19200.html</url>
+ <url>unsupported/trust-scsi-scan-19200.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
</mfg>
@@ -17113,7 +17113,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0374</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-2500.html</url>
+ <url>unsupported/umax-astra-2500.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Astra 2850">
@@ -17121,7 +17121,7 @@
<usbvendorid>0x07b3</usbvendorid>
<usbproductid>0x0601</usbproductid>
<status>unsupported</status>
- <url>/unsupported/plustek-opticpro-st24.html</url>
+ <url>unsupported/plustek-opticpro-st24.html</url>
<comment>Probably not supported. Same IDs as Plustek OpticPro ST24. See link for details.</comment>
</model>
<model name="Astra 3000">
@@ -17129,7 +17129,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x038a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-3000.html</url>
+ <url>unsupported/umax-astra-3000.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Astra 3600">
@@ -17137,7 +17137,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x038a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-3600.html</url>
+ <url>unsupported/umax-astra-3600.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Astra 4000">
@@ -17145,7 +17145,7 @@
<usbvendorid>0x1606</usbvendorid>
<usbproductid>0x1030</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4000.html</url>
+ <url>unsupported/umax-astra-4000.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="Astra 4100">
@@ -17153,7 +17153,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x038c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4100.html</url>
+ <url>unsupported/umax-astra-4100.html</url>
<comment>Not supported, to be added to genesys backend.</comment>
</model>
<model name="Astra 4500">
@@ -17161,7 +17161,7 @@
<usbvendorid>0x0638</usbvendorid>
<usbproductid>0x0a10</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4500.html</url>
+ <url>unsupported/umax-astra-4500.html</url>
<comment>GL646 based, to be added to genesys backend. Avision iVina FB1600 clone</comment>
</model>
<model name="Astra 4600">
@@ -17177,7 +17177,7 @@
<usbvendorid>0x0638</usbvendorid>
<usbproductid>0x0a20</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astra-4700.html</url>
+ <url>unsupported/umax-astra-4700.html</url>
<comment>GL646/GL660 based. Avision iVina FB1800 clone.</comment>
</model>
<model name="Astra 6700">
@@ -17193,7 +17193,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0104</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astraslim.html</url>
+ <url>unsupported/umax-astraslim.html</url>
<comment>Probably not supported currently. See link for more details.</comment>
</model>
<model name="AstraSlim 1200">
@@ -17201,7 +17201,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0110</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astraslim-1200.html</url>
+ <url>unsupported/umax-astraslim-1200.html</url>
<comment>See link for more details.</comment>
</model>
<model name="AstraSlim 6000">
@@ -17209,7 +17209,7 @@
<usbvendorid>0x080d</usbvendorid>
<usbproductid>0x0104</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-astraslim-6000.html</url>
+ <url>unsupported/umax-astraslim-6000.html</url>
<comment>Probably not supported currently. See link for more details.</comment>
</model>
<model name="Nete3470&apos;">
@@ -17225,7 +17225,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/umax-powerlook-180.html</url>
+ <url>unsupported/umax-powerlook-180.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Powerlook 1000 USB">
@@ -17245,7 +17245,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0224</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4800.html</url>
+ <url>unsupported/visioneer-onetouch4800.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
</mfg>
@@ -17273,7 +17273,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x03a8</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-9420.html</url>
+ <url>unsupported/visioneer-9420.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="9450 USB">
@@ -17281,7 +17281,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0421</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-9450-usb.html</url>
+ <url>unsupported/visioneer-9450-usb.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="Onetouch 4400">
@@ -17289,7 +17289,7 @@
<usbvendorid>0x0461</usbvendorid>
<usbproductid>0x0347</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4400.html</url>
+ <url>unsupported/visioneer-onetouch4400.html</url>
<comment>Not supported. E5 chipset? See link for more details.</comment>
</model>
<model name="OneTouch 4800 USB">
@@ -17297,7 +17297,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0224</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4800.html</url>
+ <url>unsupported/visioneer-onetouch4800.html</url>
<comment>Unsupported. Seems to use Realtek RTS8801B. Same as Microtek Scanport 3000. See link for details.</comment>
</model>
<model name="OneTouch 5300 USB">
@@ -17305,7 +17305,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0226</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch5300.html</url>
+ <url>unsupported/visioneer-onetouch5300.html</url>
<comment>Not supported. Chipset is RTS8801B(?). See link for output of /proc/bus/usb/devices.</comment>
</model>
<model name="OneTouch 5300">
@@ -17321,7 +17321,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0226</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch5800.html</url>
+ <url>unsupported/visioneer-onetouch5800.html</url>
<comment>Unsupported. 48 bit scanner, doesn&apos;t work with viceo backend. RTS8801C.</comment>
</model>
<model name="OneTouch 6600">
@@ -17329,7 +17329,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x022a</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch6600.html</url>
+ <url>unsupported/visioneer-onetouch6600.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="Onetouch 7100">
@@ -17337,7 +17337,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0229</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch7100.html</url>
+ <url>unsupported/visioneer-onetouch7100.html</url>
<comment>GL646 based, to be added to genesys backend</comment>
</model>
<model name="Onetouch 7700">
@@ -17345,7 +17345,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0380</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch7700.html</url>
+ <url>unsupported/visioneer-onetouch7700.html</url>
<comment>LM9832/3 based, to be added to plustek backend</comment>
</model>
<model name="OneTouch 8100">
@@ -17353,7 +17353,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0321</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8100.html</url>
+ <url>unsupported/visioneer-onetouch8100.html</url>
<comment>Unsupported. See link for details.</comment>
</model>
<model name="Onetouch 8700">
@@ -17361,7 +17361,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0371</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8920.html</url>
+ <url>unsupported/visioneer-onetouch8920.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="Onetouch 8900">
@@ -17369,7 +17369,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0371</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8920.html</url>
+ <url>unsupported/visioneer-onetouch8920.html</url>
<comment>Not supported. Same as 8920 but without TA?</comment>
</model>
<model name="Onetouch 8920">
@@ -17377,7 +17377,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0371</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8920.html</url>
+ <url>unsupported/visioneer-onetouch8920.html</url>
<comment>Not supported. Same as 8700 and 8900 but includes a TA. Uses a Primax ID. Chipset is RTS8801C. See link for output of /proc/bus/usb/devices.</comment>
</model>
<model name="Onetouch 9000">
@@ -17385,7 +17385,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x022c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch9020.html</url>
+ <url>unsupported/visioneer-onetouch9020.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="Onetouch 9020">
@@ -17393,7 +17393,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x022c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch9020.html</url>
+ <url>unsupported/visioneer-onetouch9020.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="Onetouch 9320">
@@ -17401,7 +17401,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0362</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch9320.html</url>
+ <url>unsupported/visioneer-onetouch9320.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Onetouch Pro 8800">
@@ -17409,7 +17409,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0410</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8820.html</url>
+ <url>unsupported/visioneer-onetouch8820.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="Onetouch Pro 8820">
@@ -17417,7 +17417,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0410</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch8820.html</url>
+ <url>unsupported/visioneer-onetouch8820.html</url>
<comment>Probably not supported. See link for details.</comment>
</model>
<model name="PaperPort 3100b">
@@ -17425,7 +17425,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-paperport-3100b.html</url>
+ <url>unsupported/visioneer-paperport-3100b.html</url>
<comment>Most probably not supported. See link for details.</comment>
</model>
<model name="PaperPort 6100">
@@ -17441,7 +17441,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-paperport-onetouch.html</url>
+ <url>unsupported/visioneer-paperport-onetouch.html</url>
<comment>Most probably not supported. See link for details.</comment>
</model>
<model name="Strobe Pro USB">
@@ -17449,7 +17449,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0102</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-strobe-pro-usb.html</url>
+ <url>unsupported/visioneer-strobe-pro-usb.html</url>
<comment>Not supported. See link for details.</comment>
</model>
<model name="4800 One Touch">
@@ -17457,7 +17457,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x03a0</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-4800-onetouch.html</url>
+ <url>unsupported/xerox-4800-onetouch.html</url>
<comment>Unsupported. See link for details. Different id compared to One Touch 4800?</comment>
</model>
<model name="DocuImage 620S">
@@ -17465,7 +17465,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-docuimage-620s.html</url>
+ <url>unsupported/xerox-docuimage-620s.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="DocuMate 510">
@@ -17473,7 +17473,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0446</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-documate-510.html</url>
+ <url>unsupported/xerox-documate-510.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="DocuMate 510">
@@ -17481,7 +17481,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x047c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-documate-510.html</url>
+ <url>unsupported/xerox-documate-510.html</url>
<comment>Not supported. See link for more details. Yet another USB id.</comment>
</model>
<model name="One Touch 4800">
@@ -17489,7 +17489,7 @@
<usbvendorid>0x04a7</usbvendorid>
<usbproductid>0x0224</usbproductid>
<status>unsupported</status>
- <url>/unsupported/visioneer-onetouch4800.html</url>
+ <url>unsupported/visioneer-onetouch4800.html</url>
<comment>Unsupported. See link for details. Different id compared to 4800 One Touch?</comment>
</model>
<model name="WorkCentre 470cx">
@@ -17497,7 +17497,7 @@
<usbvendorid>*none*</usbvendorid>
<usbproductid>*none*</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-470cx.html</url>
+ <url>unsupported/xerox-workcentre-470cx.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre M15i">
@@ -17505,7 +17505,7 @@
<usbvendorid>0x0924</usbvendorid>
<usbproductid>0xffef</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-m15i.html</url>
+ <url>unsupported/xerox-workcentre-m15i.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre XK35c">
@@ -17513,7 +17513,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x0020</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-xk35c.html</url>
+ <url>unsupported/xerox-workcentre-xk35c.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre XK50cx">
@@ -17521,7 +17521,7 @@
<usbvendorid>0x04e8</usbvendorid>
<usbproductid>0x3903</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-xk50cx.html</url>
+ <url>unsupported/xerox-workcentre-xk50cx.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre Pro 412">
@@ -17529,7 +17529,7 @@
<usbvendorid>0x043d</usbvendorid>
<usbproductid>0x4303</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-pro412.html</url>
+ <url>unsupported/xerox-workcentre-pro412.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre PE16">
@@ -17537,7 +17537,7 @@
<usbvendorid>0x0924</usbvendorid>
<usbproductid>0x4220</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-pe16.html</url>
+ <url>unsupported/xerox-workcentre-pe16.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
<model name="WorkCentre PE120i">
@@ -17545,7 +17545,7 @@
<usbvendorid>0x0924</usbvendorid>
<usbproductid>0x4237</usbproductid>
<status>unsupported</status>
- <url>/unsupported/xerox-workcentre-pe120i.html</url>
+ <url>unsupported/xerox-workcentre-pe120i.html</url>
<comment>Not supported. See link for more details.</comment>
</model>
</mfg>
@@ -17559,7 +17559,7 @@
<usbvendorid>0x0923</usbvendorid>
<usbproductid>0x010f</usbproductid>
<status>unsupported</status>
- <url>/unsupported/biolux-654.html</url>
+ <url>unsupported/biolux-654.html</url>
<comment>Not supported yet. See link for more details.</comment>
</model>
</mfg>
@@ -17571,14 +17571,14 @@
<usbvendorid>0x0797</usbvendorid>
<usbproductid>0x801c</usbproductid>
<status>unsupported</status>
- <url>/unsupported/grandtech-scopecam.html</url>
+ <url>unsupported/grandtech-scopecam.html</url>
<comment>Not Supported yet. See link for more details.</comment>
</model>
</mfg>
</type>
</backend>
<backend name="v4l">
-<version>1.0-3</version>
+<version>1.0-3</version>
<new state="no"/>
<manpage>sane-v4l</manpage>
<url>mailto:henning@meier-geinitz.de</url>
@@ -17590,7 +17590,7 @@
</type>
</backend>
<backend name="xerox_mfp">
-<version>1.0-13</version>
+<version>1.0-13</version>
<new state="no"/>
<manpage>sane-xerox_mfp</manpage>
<url>*none*</url>
diff --git a/tools/.gitignore b/tools/.gitignore
new file mode 100644
index 0000000..445cc64
--- /dev/null
+++ b/tools/.gitignore
@@ -0,0 +1,8 @@
+gamma4scanimage
+hal
+sane-backends.pc
+sane-config
+sane-desc
+sane-find-scanner
+udev
+umax_pp
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 70c87ee..684815a 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -33,6 +33,9 @@ CLEANFILES = $(bin_SCRIPTS) $(dist_noinst_SCRIPTS)
EXTRA_DIST = check-po.awk libtool-get-dll-ext mustek600iin-off.c \
RenSaneDlls.cmd README xerox
+EXTRA_DIST += style-check.sh
+EXTRA_DIST += create-changelog.sh
+EXTRA_DIST += update-upstreams.sh
sane_find_scanner_SOURCES = sane-find-scanner.c
if have_usblib
diff --git a/tools/Makefile.in b/tools/Makefile.in
deleted file mode 100644
index 77e9d72..0000000
--- a/tools/Makefile.in
+++ /dev/null
@@ -1,913 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-bin_PROGRAMS = sane-find-scanner$(EXEEXT) gamma4scanimage$(EXEEXT) \
- $(am__EXEEXT_1)
-noinst_PROGRAMS = sane-desc$(EXEEXT) $(am__EXEEXT_2)
-@INSTALL_UMAX_PP_TOOLS_TRUE@am__append_1 = umax_pp
-@INSTALL_UMAX_PP_TOOLS_FALSE@am__append_2 = umax_pp
-@have_usblib_TRUE@am__append_3 = check-usb-chip.c
-subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(top_srcdir)/mkinstalldirs $(srcdir)/sane-config.in \
- $(srcdir)/sane-backends.pc.in $(top_srcdir)/depcomp README
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
- $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
- $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
- $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/ltoptions.m4 \
- $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
- $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
- $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/byteorder.m4 $(top_srcdir)/m4/stdint.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/include/sane/config.h
-CONFIG_CLEAN_FILES = sane-config sane-backends.pc
-CONFIG_CLEAN_VPATH_FILES =
-@INSTALL_UMAX_PP_TOOLS_TRUE@am__EXEEXT_1 = umax_pp$(EXEEXT)
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
- "$(DESTDIR)$(pkgconfigdir)"
-@INSTALL_UMAX_PP_TOOLS_FALSE@am__EXEEXT_2 = umax_pp$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
-am_gamma4scanimage_OBJECTS = gamma4scanimage.$(OBJEXT)
-gamma4scanimage_OBJECTS = $(am_gamma4scanimage_OBJECTS)
-am__DEPENDENCIES_1 =
-gamma4scanimage_DEPENDENCIES = $(am__DEPENDENCIES_1)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-am_sane_desc_OBJECTS = sane-desc.$(OBJEXT)
-sane_desc_OBJECTS = $(am_sane_desc_OBJECTS)
-sane_desc_DEPENDENCIES = ../sanei/libsanei.la ../lib/liblib.la
-am__sane_find_scanner_SOURCES_DIST = sane-find-scanner.c \
- check-usb-chip.c
-@have_usblib_TRUE@am__objects_1 = check-usb-chip.$(OBJEXT)
-am_sane_find_scanner_OBJECTS = sane-find-scanner.$(OBJEXT) \
- $(am__objects_1)
-sane_find_scanner_OBJECTS = $(am_sane_find_scanner_OBJECTS)
-sane_find_scanner_DEPENDENCIES = ../sanei/libsanei.la ../lib/liblib.la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) ../backend/sane_strstatus.lo
-am_umax_pp_OBJECTS = umax_pp.$(OBJEXT)
-umax_pp_OBJECTS = $(am_umax_pp_OBJECTS)
-umax_pp_DEPENDENCIES = ../sanei/libsanei.la ../lib/liblib.la \
- $(am__DEPENDENCIES_1) ../backend/umax_pp_low.lo
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-SCRIPTS = $(bin_SCRIPTS) $(noinst_SCRIPTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include/sane
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(gamma4scanimage_SOURCES) $(sane_desc_SOURCES) \
- $(sane_find_scanner_SOURCES) $(umax_pp_SOURCES)
-DIST_SOURCES = $(gamma4scanimage_SOURCES) $(sane_desc_SOURCES) \
- $(am__sane_find_scanner_SOURCES_DIST) $(umax_pp_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-DATA = $(pkgconfig_DATA)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_CFLAGS = @AM_CFLAGS@
-AM_CPPFLAGS = @AM_CPPFLAGS@ -I. -I$(srcdir) -I$(top_builddir)/include \
- -I$(top_srcdir)/include $(USB_CFLAGS)
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AVAHI_CFLAGS = @AVAHI_CFLAGS@
-AVAHI_LIBS = @AVAHI_LIBS@
-AWK = @AWK@
-BACKENDS = @BACKENDS@
-BACKEND_CONFS_ENABLED = @BACKEND_CONFS_ENABLED@
-BACKEND_LIBS_ENABLED = @BACKEND_LIBS_ENABLED@
-BACKEND_MANS_ENABLED = @BACKEND_MANS_ENABLED@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLH = @DLH@
-DLLTOOL = @DLLTOOL@
-DL_LIBS = @DL_LIBS@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-DVIPS = @DVIPS@
-DYNAMIC_FLAG = @DYNAMIC_FLAG@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-FIG2DEV = @FIG2DEV@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GPHOTO2_CPPFLAGS = @GPHOTO2_CPPFLAGS@
-GPHOTO2_LDFLAGS = @GPHOTO2_LDFLAGS@
-GPHOTO2_LIBS = @GPHOTO2_LIBS@
-GREP = @GREP@
-GS = @GS@
-HAVE_GPHOTO2 = @HAVE_GPHOTO2@
-IEEE1284_LIBS = @IEEE1284_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_LOCKPATH = @INSTALL_LOCKPATH@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-JPEG_LIBS = @JPEG_LIBS@
-LATEX = @LATEX@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBV4L_CFLAGS = @LIBV4L_CFLAGS@
-LIBV4L_LIBS = @LIBV4L_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCKPATH_GROUP = @LOCKPATH_GROUP@
-LTALLOCA = @LTALLOCA@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINDEX = @MAKEINDEX@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MATH_LIB = @MATH_LIB@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PDFLATEX = @PDFLATEX@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-PNG_LIBS = @PNG_LIBS@
-POSUB = @POSUB@
-PPMTOGIF = @PPMTOGIF@
-PRELOADABLE_BACKENDS = @PRELOADABLE_BACKENDS@
-PRELOADABLE_BACKENDS_ENABLED = @PRELOADABLE_BACKENDS_ENABLED@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-RESMGR_LIBS = @RESMGR_LIBS@
-SANEI_SANEI_JPEG_LO = @SANEI_SANEI_JPEG_LO@
-SANE_CONFIG_PATH = @SANE_CONFIG_PATH@
-SCSI_LIBS = @SCSI_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SNMP_CFLAGS = @SNMP_CFLAGS@
-SNMP_CONFIG_PATH = @SNMP_CONFIG_PATH@
-SNMP_LIBS = @SNMP_LIBS@
-SOCKET_LIBS = @SOCKET_LIBS@
-STRICT_LDFLAGS = @STRICT_LDFLAGS@
-STRIP = @STRIP@
-SYSLOG_LIBS = @SYSLOG_LIBS@
-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
-SYSTEMD_LIBS = @SYSTEMD_LIBS@
-TIFF_LIBS = @TIFF_LIBS@
-USB_CFLAGS = @USB_CFLAGS@
-USB_LIBS = @USB_LIBS@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-V_MAJOR = @V_MAJOR@
-V_MINOR = @V_MINOR@
-V_REV = @V_REV@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-configdir = @configdir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-effective_target = @effective_target@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-locksanedir = @locksanedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-@CROSS_COMPILING_FALSE@HOTPLUG = hal/libsane.fdi hotplug/libsane.usermap hotplug-ng/libsane.db \
-@CROSS_COMPILING_FALSE@ udev/libsane.rules
-
-@CROSS_COMPILING_TRUE@HOTPLUG =
-@CROSS_COMPILING_FALSE@HOTPLUG_DIRS = hal hotplug hotplug-ng udev
-@CROSS_COMPILING_TRUE@HOTPLUG_DIRS =
-@CROSS_COMPILING_FALSE@HOTPLUG_DIR = dirs
-@CROSS_COMPILING_TRUE@HOTPLUG_DIR =
-bin_SCRIPTS = sane-config
-noinst_SCRIPTS = $(HOTPLUG)
-BUILT_SOURCES = $(HOTPLUG_DIR)
-CLEANFILES = $(bin_SCRIPTS) $(dist_noinst_SCRIPTS)
-EXTRA_DIST = check-po.awk libtool-get-dll-ext mustek600iin-off.c \
- RenSaneDlls.cmd README xerox hotplug/README \
- hotplug/libusbscanner hotplug-ng/README \
- hotplug-ng/libsane.hotplug openbsd/attach openbsd/detach
-sane_find_scanner_SOURCES = sane-find-scanner.c $(am__append_3)
-sane_find_scanner_LDADD = ../sanei/libsanei.la ../lib/liblib.la \
- $(USB_LIBS) $(IEEE1284_LIBS) $(SCSI_LIBS) \
- ../backend/sane_strstatus.lo
-
-gamma4scanimage_SOURCES = gamma4scanimage.c
-gamma4scanimage_LDADD = $(MATH_LIB)
-umax_pp_SOURCES = umax_pp.c
-umax_pp_LDADD = ../sanei/libsanei.la ../lib/liblib.la $(MATH_LIB) \
- ../backend/umax_pp_low.lo
-
-sane_desc_SOURCES = sane-desc.c
-sane_desc_LDADD = ../sanei/libsanei.la ../lib/liblib.la
-pkgconfigdir = @libdir@/pkgconfig
-pkgconfig_DATA = sane-backends.pc
-descriptions = ${top_srcdir}/doc/descriptions/*.desc ${top_srcdir}/doc/descriptions-external/*.desc
-all: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tools/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-sane-config: $(top_builddir)/config.status $(srcdir)/sane-config.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-sane-backends.pc: $(top_builddir)/config.status $(srcdir)/sane-backends.pc.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
- fi; \
- for p in $$list; do echo "$$p $$p"; done | \
- sed 's/$(EXEEXT)$$//' | \
- while read p p1; do if test -f $$p \
- || test -f $$p1 \
- ; then echo "$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n;h' \
- -e 's|.*|.|' \
- -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
- sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) files[d] = files[d] " " $$1; \
- else { print "f", $$3 "/" $$4, $$1; } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binPROGRAMS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
- -e 's/$$/$(EXEEXT)/' \
- `; \
- test -n "$$list" || exit 0; \
- echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
- cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
- @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
-
-gamma4scanimage$(EXEEXT): $(gamma4scanimage_OBJECTS) $(gamma4scanimage_DEPENDENCIES) $(EXTRA_gamma4scanimage_DEPENDENCIES)
- @rm -f gamma4scanimage$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(gamma4scanimage_OBJECTS) $(gamma4scanimage_LDADD) $(LIBS)
-
-sane-desc$(EXEEXT): $(sane_desc_OBJECTS) $(sane_desc_DEPENDENCIES) $(EXTRA_sane_desc_DEPENDENCIES)
- @rm -f sane-desc$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sane_desc_OBJECTS) $(sane_desc_LDADD) $(LIBS)
-
-sane-find-scanner$(EXEEXT): $(sane_find_scanner_OBJECTS) $(sane_find_scanner_DEPENDENCIES) $(EXTRA_sane_find_scanner_DEPENDENCIES)
- @rm -f sane-find-scanner$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(sane_find_scanner_OBJECTS) $(sane_find_scanner_LDADD) $(LIBS)
-
-umax_pp$(EXEEXT): $(umax_pp_OBJECTS) $(umax_pp_DEPENDENCIES) $(EXTRA_umax_pp_DEPENDENCIES)
- @rm -f umax_pp$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(umax_pp_OBJECTS) $(umax_pp_LDADD) $(LIBS)
-install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
- @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
- done | \
- sed -e 'p;s,.*/,,;n' \
- -e 'h;s|.*|.|' \
- -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
- $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
- { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
- if ($$2 == $$4) { files[d] = files[d] " " $$1; \
- if (++n[d] == $(am__install_max)) { \
- print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
- else { print "f", d "/" $$4, $$1 } } \
- END { for (d in files) print "f", d, files[d] }' | \
- while read type dir files; do \
- if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
- test -z "$$files" || { \
- echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
- $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
- } \
- ; done
-
-uninstall-binSCRIPTS:
- @$(NORMAL_UNINSTALL)
- @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
- files=`for p in $$list; do echo "$$p"; done | \
- sed -e 's,.*/,,;$(transform)'`; \
- dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check-usb-chip.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamma4scanimage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sane-desc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sane-find-scanner.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/umax_pp.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
- done
-
-uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA)
-installdirs:
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: $(BUILT_SOURCES)
- $(MAKE) $(AM_MAKEFLAGS) install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-clean: clean-am
-
-clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \
- clean-noinstPROGRAMS mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pkgconfigDATA
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-binPROGRAMS install-binSCRIPTS
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
- uninstall-pkgconfigDATA
-
-.MAKE: all check install install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
- clean-binPROGRAMS clean-generic clean-libtool clean-local \
- clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-binPROGRAMS install-binSCRIPTS \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-pkgconfigDATA install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
- uninstall-binPROGRAMS uninstall-binSCRIPTS \
- uninstall-pkgconfigDATA
-
-
-# When build directory is not same as source directory then any
-# subdirectories that targets use must be manually created (under
-# the build directory that is).
-dirs:
- for subdir in $(HOTPLUG_DIRS); do \
- $(MKDIR_P) $$subdir || exit 1; \
- done
-
-hotplug/libsane.usermap: sane-desc $(descriptions)
- @./sane-desc -m usermap -s ${top_srcdir}/doc/descriptions:${top_srcdir}/doc/descriptions-external \
- -d 1 > $@
-
-hotplug-ng/libsane.db: sane-desc $(descriptions)
- @./sane-desc -m db -s ${top_srcdir}/doc/descriptions:${top_srcdir}/doc/descriptions-external \
- -d 0 > $@
-
-udev/libsane.rules: sane-desc $(descriptions)
- @./sane-desc -m udev -s ${top_srcdir}/doc/descriptions:${top_srcdir}/doc/descriptions-external \
- -d 0 > $@
-
-hal/libsane.fdi: sane-desc $(descriptions)
- @./sane-desc -m hal -s ${top_srcdir}/doc/descriptions:${top_srcdir}/doc/descriptions-external \
- -d 0 > $@
-
-clean-local:
- rm -f $(HOTPLUG)
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/tools/README b/tools/README
index 10d0d95..ca15ad4 100644
--- a/tools/README
+++ b/tools/README
@@ -48,7 +48,7 @@ This directory contains various tools that may be useful:
scanner protocol can be tested directly.
gamma4scanimage: Creates a gamma table in the format expected by scanimage.
- You can define a gamma value, shadow and highlight.
+ You can define a gamma value, shadow and highlight.
Take a look at manual page gamma4scanimage for further information.
RenSaneDlls.cmd: Convert backend-DLL-filenames according to 8.3 naming
@@ -57,13 +57,13 @@ This directory contains various tools that may be useful:
Maybe useful for SANE developers:
sane-config:
- Show SANE version, linker flags etc. Might be useful for
+ Show SANE version, linker flags etc. Might be useful for
frontend developers.
sane-desc:
Generate SANE webpages (and ASCII lists) from backend .desc files.
Run "sane-desc --help" for details. The default lists are generated
- in doc/Makefile.
+ in doc/Makefile.
check-po.awk:
Print untranslated and fuzzy messages and their line numbers in the
@@ -73,4 +73,3 @@ Maybe useful for SANE developers:
script. Alternatively, run it via gawk's -f option, like so:
gawk -f tools/check-po.awk po/de.po
More documentation is in the script itself.
-
diff --git a/tools/RenSaneDlls.cmd b/tools/RenSaneDlls.cmd
index 2973f85..97c6f71 100644
--- a/tools/RenSaneDlls.cmd
+++ b/tools/RenSaneDlls.cmd
@@ -3,7 +3,7 @@
/* necessary for DLLs on OS/2 (C) Franz Bakan 2004,2005 */
/* */
/* This file is part of the SANE package. */
-/* */
+/* */
/* This program is free software; you can redistribute it and/or */
/* modify it under the terms of the GNU General Public License as */
/* published by the Free Software Foundation; either version 2 of the */
diff --git a/tools/check-po.awk b/tools/check-po.awk
index 09e4d15..412b451 100755
--- a/tools/check-po.awk
+++ b/tools/check-po.awk
@@ -18,11 +18,11 @@
# This script will (hopefully!) check the completeness of a .po
# translation file. It will report untranslated strings, as well
-# as fuzzy ones. It will print a summarry at the end of the check
+# as fuzzy ones. It will print a summary at the end of the check
# that says how many strings there are, how many are translated
# (and the percentage it represents), how many are fuzzy (and the
# percentage it represents amongst translated strings), and how
-# many aree un-translated (and the percentage it represents).
+# many are untranslated (and the percentage it represents).
# It will _not_ tell you wether your file is syntactically correct
# (eg. check for terminating double quotes!). And of course it
# will _not_ tell you wether the translations are correct! ;-]
@@ -30,7 +30,7 @@
# It was originaly been written for SANE backends translations, but
# shall be able to check any .po file.
#
-# Originally writen by Yann E. MORIN
+# Originally writen by Yann E. MORIN
# <yann dot morin dot 1998 at anciens dot enib dot fr>
#
# Output will look like :
diff --git a/tools/check-usb-chip.c b/tools/check-usb-chip.c
index 50b3e88..ac71cb4 100644
--- a/tools/check-usb-chip.c
+++ b/tools/check-usb-chip.c
@@ -1,6 +1,6 @@
/*
check-usb-chip.c -- Find out what USB scanner chipset is used
-
+
Copyright (C) 2003-2005 Henning Meier-Geinitz <henning@meier-geinitz.de>
Copyright (C) 2003 Gerhard Jaeger <gerhard@gjaeger.de>
for LM983x tests
@@ -706,7 +706,7 @@ check_ma1017 (struct usb_device *dev)
finish_interface (handle);
return 0;
}
- /* Read one byte again to work around a bug in the MA-1017 chipset that
+ /* Read one byte again to work around a bug in the MA-1017 chipset that
appears when an odd number of bytes is read or written. */
result = usb_bulk_write (handle, 0x01, req, 2, 1000);
result = usb_bulk_read (handle, 0x82, &res, 1, 1000);
@@ -1727,14 +1727,14 @@ check_gl660_gl646 (struct usb_device *dev)
/********** the gl841 section **********/
-/* the various incarnations could be distinguished by the
+/* the various incarnations could be distinguished by the
* bcdDevice entry:
* 0x701 --> GL124
* 0x700 --> ?
* 0x605 --> GL845
* 0x603 --> GL847
- * 0x601 --> GL846
- * 0x500 --> GL843
+ * 0x601 --> GL846
+ * 0x500 --> GL843
* 0x300 --> GL842 (perhaps only >= 0x303 ?)
* 0x200 --> GL841
*/
@@ -2239,7 +2239,7 @@ check_pv8630_lm9830 (struct usb_device *dev)
if (!result)
return "PV8630/LM9830?";
- result =
+ result =
usb_control_msg (handle, 0x40, 0x01, 0x38, 0x01, NULL, 0, TIMEOUT);
if (result < 0)
{
@@ -2261,7 +2261,7 @@ check_pv8630_lm9830 (struct usb_device *dev)
return 0;
}
- result =
+ result =
usb_control_msg (handle, 0x40, 0x01, 0x38, 0x01, NULL, 0, TIMEOUT);
if (result < 0)
{
@@ -2375,7 +2375,7 @@ check_m011 (struct usb_device *dev)
data = 0x63;
- result =
+ result =
usb_control_msg (handle, 0x40, 0x08, 0x34, 0x00, &data, 1, TIMEOUT);
if (result < 0)
{
@@ -2876,13 +2876,13 @@ check_sq113 (struct usb_device *dev)
result = prepare_interface (dev, &handle);
if (!result)
return "SQ113?";
-
+
buffer [0] = 0x5f;
buffer [1] = 0x00;
buffer [2] = 0x5f;
buffer [3] = 0x00;
- result =
+ result =
usb_control_msg (handle, 0x40, 0x01, 0xb0, 0, (char *) buffer, 4, TIMEOUT);
if (result < 0)
{
@@ -2900,7 +2900,7 @@ check_sq113 (struct usb_device *dev)
buffer [2] = 0x8b;
buffer [3] = data;
- result =
+ result =
usb_control_msg (handle, 0x40, 0x01, 0xb0, 0, (char *) buffer, 4, TIMEOUT);
if (result < 0)
{
@@ -2915,7 +2915,7 @@ check_sq113 (struct usb_device *dev)
buffer [1] = 0x8b;
buffer [2] = 0x8b;
buffer [3] = 0x8b;
- result =
+ result =
usb_control_msg (handle, 0x40, 0x01, 0x04, 0x8b, (char *) buffer, 4, TIMEOUT);
if (result < 0)
{
@@ -2926,7 +2926,7 @@ check_sq113 (struct usb_device *dev)
return 0;
}
- result =
+ result =
usb_control_msg (handle, 0xc0, 0x01, 0x07, 0, (char *) buffer, 4, TIMEOUT);
if (result < 0)
{
@@ -3240,7 +3240,7 @@ check_hp5590 (struct usb_device *dev)
}
/* Get confirmation for USB-in-USB command */
- result = usb_control_msg (handle, USB_ENDPOINT_IN | USB_TYPE_VENDOR,
+ result = usb_control_msg (handle, USB_ENDPOINT_IN | USB_TYPE_VENDOR,
0x0c, 0x8e, 0x20,
(char *) &status, sizeof(status), TIMEOUT);
if (result < 0)
@@ -3874,14 +3874,14 @@ check_gt6816 (libusb_device_handle * handle,
/** @brief check for known genesys chip
*
* Try to check if the scanner use a known genesys ASIC.
- * The various incarnations could be distinguished by the
+ * The various incarnations could be distinguished by the
* bcdDevice entry:
* 0x701 --> GL124
* 0x700 --> ?
* 0x605 --> GL845
* 0x603 --> GL847
- * 0x601 --> GL846
- * 0x500 --> GL843
+ * 0x601 --> GL846
+ * 0x500 --> GL843
* 0x300 --> GL842 (perhaps only >= 0x303 ?)
* 0x200 --> GL841
*
diff --git a/tools/create-changelog.sh b/tools/create-changelog.sh
new file mode 100755
index 0000000..a0b8d91
--- /dev/null
+++ b/tools/create-changelog.sh
@@ -0,0 +1,16 @@
+#!/bin/sh -u
+# tools/create-changelog.sh -- for inclusion in source tarballs
+# Copyright (C) 2019 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+git log --date=iso8601 --decorate=short 1.0.27..HEAD \
+ | sed 's/^[ \t]*$//' \
+ > ChangeLog
+
+cat << EOF >> ChangeLog
+
+----------------------------------------------------------------------
+Older ChangeLog entries can be found in the ChangeLogs/ directory on a
+file per release basis. Please note that 1.0.26 was never released.
+EOF
diff --git a/tools/create-release.sh b/tools/create-release.sh
new file mode 100755
index 0000000..40904d7
--- /dev/null
+++ b/tools/create-release.sh
@@ -0,0 +1,61 @@
+#!/bin/sh -eux
+# tools/create-release.sh -- via GitLab CI and API
+# Copyright (C) 2019 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+GROUP=sane-project
+PROJECT=backends
+PROJECT_ID=$GROUP%2F$PROJECT
+
+API_ENDPOINT=https://gitlab.com/api/v4
+
+# Uploads a file and returns a project relative URL to it.
+upload () {
+ curl --silent --fail \
+ --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \
+ --form "file=@$1" \
+ --request POST \
+ $API_ENDPOINT/projects/$PROJECT_ID/uploads \
+ | jq --raw-output .url \
+ | sed "s|^|https://gitlab.com/$GROUP/$PROJECT|"
+}
+
+cat << EOF > release.json
+{
+ "name": "SANE Backends $CI_COMMIT_TAG",
+ "tag_name": "$CI_COMMIT_TAG",
+ "description": "$(sed '1,3d; / /{s/.*//; q}' NEWS \
+ | git stripspace \
+ | sed 's/"/\\"/g; s/$/\\n/g' \
+ | tr -d '\n')",
+ "assets": {
+ "links": [
+EOF
+
+for check in sha256 sha512; do
+ ${check}sum sane-backends-$CI_COMMIT_TAG.tar.gz \
+ > sane-backends-$CI_COMMIT_TAG.$check.txt
+ cat << EOF >> release.json
+ {
+ "name": "sane-backends-$CI_COMMIT_TAG.$check.txt",
+ "url": "$(upload sane-backends-$CI_COMMIT_TAG.$check.txt)"
+ },
+EOF
+done
+
+cat << EOF >> release.json
+ {
+ "name": "sane-backends-$CI_COMMIT_TAG.tar.gz",
+ "url": "$(upload sane-backends-$CI_COMMIT_TAG.tar.gz)"
+ }
+ ]
+ }
+}
+EOF
+
+curl --silent --fail --write-out "%{http_code}\n"\
+ --header "PRIVATE-TOKEN: $PRIVATE_TOKEN" \
+ --header "Content-Type: application/json" \
+ --data @release.json \
+ --request POST $API_ENDPOINT/projects/$PROJECT_ID/releases
diff --git a/tools/epson2usb.pl b/tools/epson2usb.pl
new file mode 100755
index 0000000..6d542d7
--- /dev/null
+++ b/tools/epson2usb.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl -w
+
+# Creates an USB device list from the description file
+#
+# epson2usb.pl doc/descriptions/epson2.desc
+#
+# Copyright (C) 2010 Tower Technologies
+# Author: Alessandro Zummo <a.zummo@towertech.it>
+#
+# This file is part of the SANE package.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, version 2.
+
+use strict;
+use warnings;
+
+ my %ids;
+ my @models;
+ my $i = 0;
+
+ while (<>) {
+
+ my $flip = /^:model/ ... /^$/;
+
+ $models[$i]{$1} = $2
+ if /^:(\w+)\s+(.+)/;
+
+ $i++
+ if $flip =~ /E0$/;
+ }
+
+ foreach my $m (@models) {
+
+ next unless defined $m->{'usbid'};
+ next if $m->{'status'} eq ':unsupported';
+
+# print $m->{'model'} , "\n";
+# print "-", $m->{'usbid'} , "-\n";
+
+ next unless $m->{'usbid'} =~ /"0x04b8"\s+"(0x[[:xdigit:]]+)"/;
+
+ my $id = $1;
+
+# print $id, "\n";
+
+ $id =~ s/0x0/0x/;
+
+ $m->{'model'} =~ s/;.+$//;
+ $m->{'model'} =~ s/\"//g;
+ $m->{'model'} =~ s/\s+$//;
+
+ push(@{$ids{$id}}, $m->{'model'});
+ }
+
+ foreach (sort keys %ids) {
+ print ' ', $_, ', /* ';
+ print join(', ', @{$ids{$_}});
+ print " */\n";
+ }
diff --git a/tools/hotplug-ng/.gitignore b/tools/hotplug-ng/.gitignore
new file mode 100644
index 0000000..c63faf4
--- /dev/null
+++ b/tools/hotplug-ng/.gitignore
@@ -0,0 +1 @@
+libsane.db
diff --git a/tools/hotplug/.gitignore b/tools/hotplug/.gitignore
new file mode 100644
index 0000000..e194d28
--- /dev/null
+++ b/tools/hotplug/.gitignore
@@ -0,0 +1 @@
+libsane.usermap
diff --git a/tools/hotplug/libusbscanner b/tools/hotplug/libusbscanner
index bf613a5..55646d4 100755
--- a/tools/hotplug/libusbscanner
+++ b/tools/hotplug/libusbscanner
@@ -32,4 +32,3 @@ fi
# if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
# chmod 0666 "$DEVICE"
# fi
-
diff --git a/tools/sane-config.in b/tools/sane-config.in
index 6b7cd30..5ef9ba4 100644
--- a/tools/sane-config.in
+++ b/tools/sane-config.in
@@ -2,7 +2,7 @@
#
# This script is part of SANE, <URL:http://www.sane-project.org/>
#
-# Send bugreports and other requests to sane-devel@lists.alioth.debian.org
+# Send bugreports and other requests to sane-devel@alioth-lists.debian.net
PACKAGE="@PACKAGE@"
scriptname="sane-config"
@@ -88,4 +88,3 @@ if test $# -gt 0; then
;;
esac
fi
-
diff --git a/tools/sane-desc.c b/tools/sane-desc.c
index badc8ce..890e754 100644
--- a/tools/sane-desc.c
+++ b/tools/sane-desc.c
@@ -47,7 +47,7 @@
#define SANE_DESC_VERSION "3.5"
-#define MAN_PAGE_LINK "http://www.sane-project.org/man/%s.5.html"
+#define MAN_PAGE_LINK "man/%s.5.html"
#define COLOR_MINIMAL "\"#B00000\""
#define COLOR_BASIC "\"#FF9000\""
#define COLOR_GOOD "\"#90B000\""
@@ -315,7 +315,7 @@ print_usage (char *program_name)
printf ("Usage: %s [-s dir] [-m mode] [-d level] [-h] [-V]\n",
program_name);
printf (" -s|--search-dir dir "
- "Specify the directory that contains .desc files \n"
+ "Specify the directory that contains .desc files\n"
" "
"(multiple directories can be concatenated by \":\")\n");
printf (" -m|--mode mode "
@@ -2075,7 +2075,7 @@ xml_print_backends (void)
printf ("<backend name=\"*none\">\n");
if (be->version)
- printf ("<version>%s</version> \n", clean_string (be->version));
+ printf ("<version>%s</version>\n", clean_string (be->version));
else
printf ("<version>*none*</version>\n");
@@ -2448,7 +2448,7 @@ html_backends_split_table (device_type dev_type)
backend_entry *be = first_backend;
SANE_Bool first = SANE_TRUE;
- printf ("<p><b>Backends</b>: \n");
+ printf ("<p><b>Backends</b>:\n");
while (be) /* print link list */
{
type_entry *type = be->type;
@@ -2463,7 +2463,7 @@ html_backends_split_table (device_type dev_type)
if (found)
{
if (!first)
- printf (", \n");
+ printf (",\n");
first = SANE_FALSE;
printf ("<a href=\"#%s\">%s</a>",
html_generate_anchor_name (dev_type, be->name), be->name);
@@ -2512,7 +2512,7 @@ html_backends_split_table (device_type dev_type)
if (be->url && be->url->name)
{
url_entry *url = be->url;
- printf ("<b>Link(s):</b> \n");
+ printf ("<b>Link(s):</b>\n");
while (url)
{
if (url != be->url)
@@ -2650,11 +2650,11 @@ html_mfgs_table (device_type dev_type)
first_mfg_record = create_mfg_list (dev_type);
mfg_record = first_mfg_record;
- printf ("<p><b>Manufacturers</b>: \n");
+ printf ("<p><b>Manufacturers</b>:\n");
while (mfg_record)
{
if (mfg_record != first_mfg_record)
- printf (", \n");
+ printf (",\n");
printf ("<a href=\"#%s\">%s</a>",
html_generate_anchor_name (type_unknown, mfg_record->name),
mfg_record->name);
@@ -2675,7 +2675,7 @@ html_mfgs_table (device_type dev_type)
if (mfg_record->url && mfg_record->url->name)
{
url_entry *url = mfg_record->url;
- printf ("<b>Link(s):</b> \n");
+ printf ("<b>Link(s):</b>\n");
while (url)
{
if (url != mfg_record->url)
@@ -2786,7 +2786,7 @@ html_print_header (void)
("</head>\n"
"<body bgcolor=FFFFFF>\n"
"<div align=center>\n"
- "<img src=\"http://www.sane-project.org/images/sane.png\" alt=\"SANE\">\n");
+ "<img src=\"images/sane.png\" alt=\"SANE\">\n");
printf ("<h1>%s</h1>\n", title);
printf ("</div>\n" "<hr>\n");
printf ("%s\n", intro);
@@ -2797,8 +2797,8 @@ html_print_header (void)
"concerning each backend.</p>\n");
printf
("<p>If you have new information or corrections, please file a\n"
- "<a href=\"http://www.sane-project.org/bugs.html\">bug report</a>\n"
- "with as many details as possible. Also please tell us if your scanner \n"
+ "<a href=\"bugs.html\">bug report</a>\n"
+ "with as many details as possible. Also please tell us if your scanner\n"
"isn't mentioned in this list at all.</p>\n"
"<p>For an explanation of the tables, see the\n"
"<a href=\"#legend\">legend</a>.\n");
@@ -2812,9 +2812,9 @@ html_print_footer (void)
printf
("<hr>\n"
- "<a href=\"http://www.sane-project.org/\">SANE homepage</a>\n"
+ "<a href=\"./\">SANE homepage</a>\n"
"<address>\n"
- "<a href=\"http://www.sane-project.org/imprint.html\"\n"
+ "<a href=\"imprint.html\"\n"
">Contact</a>\n" "</address>\n" "<font size=-1>\n");
printf ("This page was last updated on %s by sane-desc %s from %s\n",
asctime (localtime (&current_time)), SANE_DESC_VERSION, PACKAGE_STRING);
@@ -2834,8 +2834,8 @@ html_print_legend_backend (void)
" available from their home sites.<br>"
" <font color=" COLOR_NEW ">NEW!</font> means brand-new to the\n"
" current release of SANE.<br>\n"
- " UNMAINTAINED means that nobody maintains that backend. Expect no \n"
- " new features or newly supported devices. You are welcome to take over \n"
+ " UNMAINTAINED means that nobody maintains that backend. Expect no\n"
+ " new features or newly supported devices. You are welcome to take over\n"
" maintainership.\n" " </dd>\n");
}
@@ -2902,7 +2902,7 @@ html_print_legend_status (void)
{
printf
(" <dt><b>Status</b>:</dt>\n"
- " <dd>Indicates how many of the features the device provides \n"
+ " <dd>Indicates how many of the features the device provides\n"
" are supported by SANE.\n"
" <ul><li><font color=" COLOR_UNSUPPORTED ">unsupported</font>"
" means the device is not supported at least by this backend. "
@@ -2912,16 +2912,16 @@ html_print_legend_status (void)
" device may be supported but couldn't be tested. Be very "
" careful and report success/failure.\n"
" <li><font color=" COLOR_MINIMAL ">minimal</font> means that the\n"
- " device is detected and scans at least in one mode. But the quality \n"
+ " device is detected and scans at least in one mode. But the quality\n"
" is bad or important features won't work.\n");
printf
- (" <li><font color=" COLOR_BASIC ">basic</font> means it works at \n"
+ (" <li><font color=" COLOR_BASIC ">basic</font> means it works at\n"
" least in the most important modes but quality is not perfect.\n"
" <li><font color=" COLOR_GOOD
- ">good</font> means the device is usable \n"
+ ">good</font> means the device is usable\n"
" for day-to-day work. Some rather exotic features may be missing.\n"
" <li><font color=" COLOR_COMPLETE
- ">complete</font> means the backends \n"
+ ">complete</font> means the backends\n"
" supports everything the device can do.\n" " </ul></dd>\n");
}
@@ -3360,7 +3360,7 @@ print_usermap_header (void)
"# device detection support for your OS\n"
"#\n"
"# If the scanner is supported by sane-backends, please mail the entry to\n"
- "# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
+ "# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).\n"
"#\n"
);
@@ -3427,7 +3427,7 @@ print_db_header (void)
"# device detection support for your OS\n"
"#\n"
"# If the scanner is supported by sane-backends, please mail the entry to\n"
- "# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
+ "# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).\n"
"#\n"
);
}
@@ -3451,7 +3451,7 @@ print_db (void)
name = name->next;
}
printf ("\n");
- printf ("%s\t%s\t%s:%s\t%s\t\n", usbid->usb_vendor_id,
+ printf ("%s\t%s\t%s:%s\t%s\n", usbid->usb_vendor_id,
usbid->usb_product_id, DEVOWNER, DEVGROUP, DEVMODE);
usbid = usbid->next;
}
@@ -3491,7 +3491,7 @@ print_udev_header (void)
"# device detection support for your OS\n"
"#\n"
"# If the scanner is supported by sane-backends, please mail the entry to\n"
- "# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
+ "# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).\n"
"#\n"
);
}
@@ -3679,7 +3679,7 @@ print_udevhwdb_header (void)
"# device detection support for your OS\n"
"#\n"
"# If the scanner is supported by sane-backends, please mail the entry to\n"
- "# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
+ "# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).\n"
"#\n"
);
}
@@ -3782,8 +3782,8 @@ print_hwdb_header (void)
"# device detection support for your OS\n"
"#\n"
"# If the scanner is supported by sane-backends, please mail the entry to\n"
- "# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).\n"
- "#\n"
+ "# the sane-devel mailing list (sane-devel@alioth-lists.debian.net).\n"
+ "#"
);
}
@@ -3802,7 +3802,7 @@ print_hwdb (void)
manufacturer_model_type * name = usbid->name;
i = 0;
- printf ("# ");
+ printf ("\n# ");
while (name)
{
if ((name != usbid->name) && (i > 0))
@@ -3833,7 +3833,7 @@ print_hwdb (void)
product_id[j] = toupper(product_id[j]);
}
- printf ("usb:v%sp%s*\n libsane_matched=yes\n\n",
+ printf ("usb:v%sp%s*\n libsane_matched=yes\n",
vendor_id, product_id);
free(vendor_id);
diff --git a/tools/sane-find-scanner.c b/tools/sane-find-scanner.c
index 04f19d9..a62ceac 100644
--- a/tools/sane-find-scanner.c
+++ b/tools/sane-find-scanner.c
@@ -225,7 +225,7 @@ scanner_do_scsi_inquiry (unsigned char *buffer, int sfd)
memset (buffer, '\0', 256); /* clear buffer */
- size = 5; /* first get only 5 bytes to get size of
+ size = 5; /* first get only 5 bytes to get size of
inquiry_return_block */
set_inquiry_return_size (inquiry.cmd, size);
status = sanei_scsi_cmd (sfd, inquiry.cmd, inquiry.size, buffer, &size);
@@ -433,13 +433,13 @@ get_libusb_string_descriptor (struct usb_device *dev, int index)
return 0;
}
- if (sd->bLength < 2
+ if (sd->bLength < 2
|| sd->bDescriptorType != USB_DT_STRING)
{
usb_close (handle);
return 0;
}
-
+
size = sd->bLength;
buffer = calloc (1, size + 1);
@@ -659,7 +659,7 @@ check_libusb_device (struct usb_device *dev, SANE_Bool from_file)
++is_scanner;
break;
case USB_CLASS_PER_INTERFACE:
- if (dev->config[0].interface[interface_nr].num_altsetting == 0 ||
+ if (dev->config[0].interface[interface_nr].num_altsetting == 0 ||
!dev->config[0].interface[interface_nr].altsetting)
break;
switch (dev->config[0].interface[interface_nr].altsetting[0].bInterfaceClass)
@@ -782,7 +782,7 @@ get_libusb_string_descriptor (libusb_device_handle *hdl, int index)
if ((short_buffer[0] < 2) /* descriptor length */
|| (short_buffer[1] != LIBUSB_DT_STRING)) /* descriptor type */
return NULL;
-
+
size = short_buffer[0];
buffer = calloc (1, size + 1);
@@ -934,7 +934,7 @@ check_libusb_device (libusb_device *dev, SANE_Bool from_file)
printf (" iConfiguration %d (%s)\n", c->iConfiguration,
(buf) ? buf : "");
free (buf);
-
+
printf (" bmAttributes %d (%s%s)\n", c->bmAttributes,
c->bmAttributes & 64 ? "Self-powered" : "",
c->bmAttributes & 32 ? "Remote Wakeup" : "");
@@ -1064,7 +1064,7 @@ check_libusb_device (libusb_device *dev, SANE_Bool from_file)
if (is_scanner > 0)
{
char *chipset = NULL;
-
+
if(!from_file)
chipset = check_usb_chip (verbose, desc, hdl, config0);
@@ -1084,7 +1084,7 @@ check_libusb_device (libusb_device *dev, SANE_Bool from_file)
libusb_device_found = SANE_TRUE;
device_found = SANE_TRUE;
}
-
+
libusb_free_config_descriptor (config0);
out_free:
@@ -1212,14 +1212,14 @@ static char **build_scsi_dev_list(void)
adapter = (PSCSI_ADAPTER_BUS_INFO)buffer;
- for(i = 0; i < adapter->NumberOfBuses; i++) {
+ for(i = 0; i < adapter->NumberOfBuses; i++) {
if (adapter->BusData[i].InquiryDataOffset == 0) {
/* No device here */
continue;
}
- inquiry = (PSCSI_INQUIRY_DATA) (buffer +
+ inquiry = (PSCSI_INQUIRY_DATA) (buffer +
adapter->BusData[i].InquiryDataOffset);
while(1) {
/* Check if it is a scanner or a processor
@@ -1233,7 +1233,7 @@ static char **build_scsi_dev_list(void)
dev_list[dev_list_index] = strdup(device_name);
dev_list_index++;
}
-
+
if (inquiry->NextInquiryDataOffset == 0) {
/* No device here */
break;
@@ -1300,7 +1300,7 @@ check_mustek_pp_device (void)
printf ("checking %s...", devices[ctr]);
result = sanei_pa4s2_open (devices[ctr], &fd);
-
+
if (verbose > 1)
{
if (result != 0)
@@ -1315,13 +1315,13 @@ check_mustek_pp_device (void)
found++;
sanei_pa4s2_close(fd);
}
-
+
/* trying scsi over pp devices */
if (verbose > 1)
printf ("checking %s (SCSI emulation)...", devices[ctr]);
result = sanei_pa4s2_scsi_pp_open (devices[ctr], &fd);
-
+
if (verbose > 1)
{
if (result != 0)
@@ -1365,7 +1365,7 @@ parse_num (char* search, const char* line, int base, long int * number)
if (start_number == NULL)
return SANE_FALSE;
start_number += strlen (search);
-
+
*number = strtol (start_number, NULL, base);
if (verbose > 2)
printf ("Found %s%ld\n", search, *number);
@@ -1384,11 +1384,11 @@ parse_bcd (char* search, const char* line, long int * number)
if (start_number == NULL)
return SANE_FALSE;
start_number += strlen (search);
-
+
first_part = strtol (start_number, &end_number, 10);
start_number = end_number + 1; /* skip colon */
second_part = strtol (start_number, NULL, 10);
- *number = ((first_part / 10) << 12) + ((first_part % 10) << 8)
+ *number = ((first_part / 10) << 12) + ((first_part % 10) << 8)
+ ((second_part / 10) << 4) + (second_part % 10);
if (verbose > 2)
printf ("Found %s%ld\n", search, *number);
@@ -1478,7 +1478,7 @@ parse_file (char *filename)
}
if (parse_num ("Ifs=", line, 10, &number))
dev->config[current_config].bNumInterfaces = number;
- dev->config[current_config].interface
+ dev->config[current_config].interface
= calloc (number, sizeof (struct usb_interface));
if (parse_num ("Atr=", line, 16, &number))
dev->config[current_config].bmAttributes = number;
@@ -1504,24 +1504,24 @@ parse_file (char *filename)
if (parse_num ("Alt=", line, 10, &number))
{
current_as = number;
- dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceNumber
+ dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceNumber
= current_if;
- dev->config[current_config].interface[current_if].altsetting[current_as].bAlternateSetting
+ dev->config[current_config].interface[current_if].altsetting[current_as].bAlternateSetting
= current_as;
}
if (parse_num ("#EPs=", line, 10, &number))
- dev->config[current_config].interface[current_if].altsetting[current_as].bNumEndpoints
+ dev->config[current_config].interface[current_if].altsetting[current_as].bNumEndpoints
= number;
- dev->config[current_config].interface[current_if].altsetting[current_as].endpoint
+ dev->config[current_config].interface[current_if].altsetting[current_as].endpoint
= calloc (number, sizeof (struct usb_endpoint_descriptor));
if (parse_num ("Cls=", line, 16, &number))
- dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceClass
+ dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceClass
= number;
if (parse_num ("Sub=", line, 16, &number))
- dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceSubClass
+ dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceSubClass
= number;
if (parse_num ("Prot=", line, 16, &number))
- dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceProtocol
+ dev->config[current_config].interface[current_if].altsetting[current_as].bInterfaceProtocol
= number;
break;
case 'E':
@@ -1605,6 +1605,13 @@ main (int argc, char **argv)
#endif
exit (0);
+ case '-':
+ if (!strcmp((*ap), "--help"))
+ {
+ usage (0);
+ exit (0);
+ }
+
default:
printf ("unknown option: -%c, try -h for help\n", (*ap)[1]);
exit (0);
@@ -2069,7 +2076,7 @@ main (int argc, char **argv)
"more details.\n");
#endif
}
- if (enable_pp_checks == SANE_TRUE)
+ if (enable_pp_checks == SANE_TRUE)
{
if (!check_mustek_pp_device() && verbose > 0)
printf ("\n # No Mustek parallel port scanners found. If you expected"
diff --git a/tools/style-check.sh b/tools/style-check.sh
new file mode 100755
index 0000000..479f7bb
--- /dev/null
+++ b/tools/style-check.sh
@@ -0,0 +1,99 @@
+#!/bin/sh -u
+# tools/style-check.sh -- for conformance or --fix to conform
+# Copyright (C) 2017 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+check_final_newline() {
+ test x = "x$(tail -c 1 $1)"
+}
+
+insert_final_newline() {
+ check_final_newline $1 || echo >> $1
+}
+
+check_trailing_whitespace() {
+ test -z "$(sed -n '/[ \t]$/{p;q}' $1)"
+}
+
+trim_trailing_whitespace() {
+ sed -i 's/[ \t]*$//' $1
+}
+
+check_trailing_blank_lines() {
+ test -z "$(sed -n '${/^$/s/^/blank/p}' $1)"
+}
+
+trim_trailing_blank_lines() {
+ sed -i -e :a -e '/^\n*$/{$d;N;};/\n$/ba' $1
+}
+
+check_leading_blank_lines() {
+ test -z "$(sed -n '1{/^$/s/^/blank/p;q}' $1)"
+}
+
+trim_leading_blank_lines() {
+ sed -i '/./,$!d' $1
+}
+
+check_utf_8_charset() {
+ err=$(iconv -f utf-8 -t utf-8 < $1 2>&1 > /dev/null)
+ if test x != "x$err"; then
+ echo "charset not UTF-8: $1" >&2
+ echo "$err" >&2
+ return 1
+ fi
+}
+
+fix=false
+case $1 in
+ --fix) fix=true; shift;;
+esac
+
+status=0
+for file in "$@"; do
+ test -d $file && continue # skip directories, just in case
+ file=$(echo $file | sed 's,^\.\/,,')
+ case $file in
+ COPYING) ;; # hands off of the GPL
+ *.gif) ;; # don't touch image files
+ *.jpg) ;;
+ *.png) ;;
+ *.pnm) ;;
+ *.patch) ;; # patch output may have trailing lines or whitespace
+ Makefile.in) ;; # skip automake outputs
+ */Makefile.in) ;;
+ aclocal.m4) ;; # skip autoconf outputs
+ include/sane/config.h.in) ;;
+ m4/libtool.m4) ;; # courtesy of libtool
+ m4/lt~obsolete.m4) ;;
+ ABOUT-NLS) ;; # courtesy of gettext
+ doc/doxygen-*.conf.in) ;; # don't fix doxygen -g comments
+
+ *)
+ if `$fix`; then
+ trim_trailing_whitespace $file
+ insert_final_newline $file
+ trim_trailing_blank_lines $file
+ else
+ if ! check_trailing_whitespace $file; then
+ status=1
+ echo "trailing whitespace: $file" >&2
+ fi
+ if ! check_final_newline $file; then
+ status=1
+ echo "final newline missing: $file" >&2
+ fi
+ if ! check_trailing_blank_lines $file; then
+ status=1
+ echo "trailing blank lines: $file" >&2
+ fi
+ if ! check_utf_8_charset $file; then
+ status=1
+ fi
+ fi
+ ;;
+ esac
+done
+
+exit $status
diff --git a/tools/umax_pp.c b/tools/umax_pp.c
index 134320b..7b127e3 100644
--- a/tools/umax_pp.c
+++ b/tools/umax_pp.c
@@ -35,12 +35,16 @@ main (int argc, char **argv)
char *name = NULL;
int scan = 0;
int lamp = -1;
- int i, fd;
+ int i;
int found;
int recover = 0;
int trace = 0;
int maxw, maxh;
+#ifdef HAVE_LINUX_PPDEV_H
+ int fd;
+#endif
+
/* scanning parameters : defaults to preview (75 dpi color, full scan area) */
int gain = 0x0;
int offset = 0x646;
diff --git a/tools/update-upstreams.sh b/tools/update-upstreams.sh
new file mode 100755
index 0000000..3fde735
--- /dev/null
+++ b/tools/update-upstreams.sh
@@ -0,0 +1,21 @@
+#!/bin/sh -u
+# tools/update-upstreams.sh -- files to their latest version
+# Copyright (C) 2017, 2019 Olaf Meeuwissen
+#
+# License: GPL-3.0+
+
+fetch () {
+ if type curl 2>/dev/null >/dev/null ; then
+ curl --silent --location --remote-name $1
+ return
+ fi
+ if type wget 2>/dev/null >/dev/null ; then
+ wget --quiet --output-document $(echo $1 | sed 's,.*/,,') $1
+ fi
+}
+
+CONFIG_BASE_URL=https://git.savannah.gnu.org/cgit/config.git/plain
+
+for file in config.guess config.sub; do
+ fetch $CONFIG_BASE_URL/$file
+done
diff --git a/tools/xerox b/tools/xerox
index 0b2a7c3..0d04a0c 100755
--- a/tools/xerox
+++ b/tools/xerox
@@ -35,11 +35,11 @@ else
WIDTH=8.27; HEIGHT=11.69
fi
-SCANWIDTH=`bc <<_EOF_
+SCANWIDTH=`bc <<_EOF_
scale=3
$WIDTH-$LMARGIN-$RMARGIN
_EOF_`
-SCANHEIGHT=`bc <<_EOF_
+SCANHEIGHT=`bc <<_EOF_
scale=3
$HEIGHT-$TMARGIN-$BMARGIN
_EOF_`